Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Аппаратный токен или usb-ключ – компактное устройство для предоставления одноразовых паролей. аутентификация на основе токенов – надёжная защита данных

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Защита данных – одна из важнейших задач в современном обществе. Защита представляет из себя комплекс мер по обеспечению безопасности секретных, персональных и коммерческих данных компании.

Многим знакомы основные средства для обеспечения безопасности и защиты данных от внешнего проникновения, такие как: межсетевые экраны(CheckpointCisco ASA),антивирусное ПО (KasperskyESET NOD32, DrWeb), DLP системы (SymantecWebsenseMcAfee).

Но перечисленные средства безопасности не защищают на все сто, даже в крупных компаниях люди совершают ошибки и посторонние лица получают доступ к личным данным.

Как же еще защитить данные?

Ответ: ключ для универсального доступа к данным пользователя – аппаратный токен, он же криптографический ключ или USB-ключ.

Это средство для дополнительной аутентификации пользователя к определённому программному или аппаратному комплексу: рабочему ПК, банк-клиенту, 1с.

Токены могут быть реализованы для защиты данных в компании вместо обычных паролей для доступа к пользовательскому компьютеру.

Особенно важно использовать дополнительную авторизацию для пользователей, компьютеры которых могутлокально хранить закрытую информацию или для доступа к компьютерам, к которым могут подойти посторонние люди, не работающие в вашей компании.

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Наверняка вы сталкивались с проблемой простых паролей у пользователей, очень часто можно наблюдать картину, записан пароль на яркой жёлтой бумажке и приклеен к монитору, чтобы не забыть.

Как раз, чтобы избежать проблем с доступом к компьютеру и не заставлять пользователей менять пароли каждые 40 дней, можно использовать токены.

Для авторизации необходимо будет лишь ввести пароль с экрана или вставить ключ в USB-разъем. Это упростит авторизацию для пользователей, и обеспечит дополнительную информационную безопасность в компании.

Кроме того, есть сценарии использования токенов, защищающие доступ в сеть, с применением дополнительной авторизации. Токенами можно ограничить круг людей, способных пользоваться определенными ресурсами и приложениями.

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данныхТокен представляет из себя компактное устройство в виде USB-ключа «флешки», (хотя он и не предназначен для хранения информации), или в виде устройства с экраном для предоставления одноразовых паролей, или в виде смарт карты размером с пластиковую карту с чипом. 

Далее мы опишем два основных вида токенов: с подключением и без подключения.

Токен без подключения представляет из себя небольшое устройство с экраном, на котором генерируется одноразовый пароль для доступа. Он синхронизируется двумя способами: либо по времени с сервером, при генерации пароля нужно ввести его в течении непродолжительного промежутка времени; либо на основе сложного математического алгоритма, который определяет верность пароля.

Токены с подключением хранят в себе ключ шифрования, доступ к которому осуществляется через USB-порт. Особенность токена заключается в том, что ключ хранится в зашифрованном виде и подобрать PIN-код к нему можно только ограниченное количество раз, что позволяет обеспечить более высокий уровень безопасности.

Токены могут быть соединены в одно устройство, которое имеет, и возможность использования одноразовых паролей, и подключается к компьютеру, это двухтактная аутентификация по одноразовому паролю и ключу шифрования.

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Подводя итог всему сказанному, токен – отличное средство для повышения безопасности компании. Чем больше ваша сеть, тем выше ваша потребность в защите данных на основе токенов.

Пароль становится все менее надёжным средством в борьбе с несанкционированными взломами и утерей данных, а токены с каждым днем становятся всё более актуальными, что связано также и с широким распространением удалённого доступа. Надеюсь, что после прочтения данной статьи у вас остались вопросы, ведь рассказали мы крайне мало.

Наш онлайн-консультант будет рад ответить на вопросы про защиту сети с помощью токенов.


Для получения дополнительной информации направляйте запросы на zakaz@vhod-v-lichnyj-kabinet.ru или обращайтесь по телефону  7 (812) 703-30-60 в департамент продаж компании ОЛЛИ ИТ.

Payload или полезные данные

Вторым блоком идет eyJ1c2VyX2lkIjoxLCJleHAiOjE1ODEzNTcwMzl9

Это есть полезные данные, так же закодированные в Base64. После раскодирования получим:

Аутентификация по jwt

В системах аутентификации, основанных на JWT, после прохождения аутентификации пользователь получает два токена:

Access token –  для авторизации и идентификации пользователя.

Refresh token – для обновления access token.

Access token ограничен по времени жизни (например, 10 минут). Refresh token действителен дольше, например, месяц или неделю. Refresh token необходим для обновления access token. При истечении срока refresh token пользователь заново проходит процедуру аутентификации.

После получения токенов при последующих обращениях access токен передается приложению в заголовке запроса от пользователя

Получив токен от пользователя, приложение проверит его подпись и актуальность. Убедившись в действительности и не истекшем сроке жизни токена, приложение авторизует его используя данные из токена. Если на одном из этапов произошла ошибка, приложение вернет ошибку с кодом «401».

При получении ошибки «401» пользователю необходимо обновить access с помощью refresh токена, отправив запрос по api. Например, api/refresh. В ответ  получаем новую пару access и refresh токена. После повторно отправляем изначальный запрос.

Где хранить токены

Представим ситуацию: пользователь авторизовался и получил 2 токена:

access – живет 3 мин;

refresh – 5 мин.

refresh мы сохраняем в cookie пользователя.

Похожее:  Не умничайте с формами для входа / Хабр

access держим в памяти, и при каждом обновлении страницы, выполняем запрос refresh для получения новой пары такенов. Либо есть вариант когда мы записываем access в cookie.

Не стоит хранить access или refresh токен в localstore, это не безопасно.

Устанавливаем заголовки для set-cookie:

sameSite: true, SameSite=strict (для предотвращения CSRF-атак)

Главная проблема localstorage

Не храните jwt в локальном хранилище, js скрипты на нашем сайте легко могут получить данные из LocalStorage нашего приложения, у локального хранилища нет никаких способов защиты, то есть если мы храним секретные данные в локальном хранилище, информация доступна всем.

Пример инъекции в js

Допустим, у нас на сайте есть скрипт

Двух факторная аутентификация

Доброго всем времени суток. Продолжаем наше погружение в мир приватности данных. Поговорим теперь о такой штуке как двух факторная аутентификация. Что же это за страшный зверь такой? Наверняка многим из вас эти слова не знакомы. Ничего страшного!) Сейчас разберемся.

Итак, процесс вашего входа в любую систему состоит из трёх основных этапов — идентификация, аутентификация и авторизация:

Вопрос авторизации нас сейчас не интересует, так как выполняется уже после входа в систему. 

Нас интересует процесс Аутентификации (теперь вам должно быть уже понятней о чем мы ведем речь) и что же такое «двух факторная аутентификация». Как говорилось выше- аутентификация это предъявление некоторого фактора, известного только вам и системе для того чтобы подтвердить вашу личность.

Поэтому логичным выглядит подключение дополнительных факторов аутентификации, то есть превращение ее в многофакторную.

Наиболее распространенный и удобный вариант — двух факторная аутентификация. Это, как любят говорить математики, «необходимо и достаточно» для обеспечения должного уровня защищенности. Благо в настоящий момент любая мало-мальски серьезная платформа поддерживает подключение второго фактора аутентификации.

Стоит сделать небольшое отступление и чуть подробней остановиться на этих самых вторых факторах. Принято (и это является логичным решением), чтобы второй фактор кардинально отличался от первого по своей природе. То есть не стоит делать просто два пароля. Это всего лишь усилит вашу защиту в 2 раза. Наша же цель — усиление на порядок.

В случае, когда мы говорим про персональный компьютер, хорошими вариантами дополнительных средств аутентификации являются биометрические данные (отпечатки пальцев, скан сетчатки глаза, снимок формы лица и тп). В сети такие варианты к сожалению не очень полезны и удобны, поэтому там применяются другие решения — подтверждение входа по коду из SMS, использование аппаратного электронного ключа, криптографического сертификата или программного обеспечения, генерирующего одноразовые пин коды.

В силу простоты использования и при этом высокого уровня надежности, полярностью пользуются первый и последний варианты- смс и специальные приложения с пин кодами. В случае с смс все понятно — вы ввели пароль, у вас попросили еще дополнительно ввести код из смс.

Ну и вы ждете смс-ку с этим кодом на свой телефон. В чем преимущество с точки зрения защиты вашей учетной записи? Ну во первых коды одноразовые. Во вторых они приходят к вам через  сеть сотовой связи, а контролировать сразу две сети на предмет перехвата данных злоумышленнику крайне тяжело. Это под силу только спец службам.

Но у этого варианта есть один большой недостаток, который проистекает из его природы — вам требуется мобильная сеть. 

В случае если ее нет (вы в глухом помещении где телефон не ловит, или еще что то такое) или например все же вы по каким-то причинам не можете доверять этой самой мобильной сети, такой вариант вам не подойдет. Зато отлично подойдет вариант с приложением генерирующим такие ключи.

На рынке представлено достаточно много решений, однако самым популярным, широко распространенным и удобным в использовании является платформа Google Authenticator. Вы ставите на телефон их приложение и в несколько нажатий пальчиком привязываете нужный сервис к нему.

Таким образом можно добавить достаточно большое число приложений в него, для каждого будут генерироваться случайные временные коды, чье время жизни составляет примерно 1 минуту. Приложение не требует доступа к интернет и может настраиваться на каждый новый сервис при помощи считывания QR кода с экрана вашего компьютера на страничке сайта.

Двухфакторная аутентификация в домене с использованием токенов и ms ca – my blog

Пароль является не очень надежным средством защиты. Очень часто используются простые, легко подбираемые пароли или же пользователи не особо следят за сохранностью своих паролей (раздают коллегам, пишут на бумажках и т.д.). В Microsoft уже давно реализована технология, позволяющая для входа в систему использовать SmartCard, т.е. аутентифицироваться в системе по сертификату. Но не обязательно использовать непосредственно смарт-карты, ведь для них нужны еще и считыватели, поэтому проще их заменить на usb токены. Они позволят реализовать двухфакторную аутентификацию: первый фактор — это пароль от токена, второй фактор — это сертификат на токене. Далее на примере usb токена JaCarta и домена Windows я расскажу как внедрить этот механизм аутентификации.

Первым делом в AD создадим группу «g_EtokenAdmin» и уч. запись «Enrollment Agent», входящую в эту группу. Эта группа и пользователь будут рулить центром сертификации.

etoken_auth_01

Далее добавим серверу роль AD CA (центр сертификации).

etoken_auth_02

Дополнительно установим Web службу для запроса сертификатов.

etoken_auth_03

Далее выбираем вариант для предприятия. Выбираем Корневой ЦС (если у нас это первый центр сертификации в домене)
Создаем новый закрытый ключ. Длину ключа можно оставить туже, а вот алгоритм хеширования лучше выбрать SHA2 (SHA256).

etoken_auth_04
Введем имя CA и выберем срок действия основного сертификата.
Остальные параметры оставляем по умолчанию и запускаем процесс установки.

etoken_auth_05
После установки зайдем в оснастку центра сертификации и настроим права на шаблоны.
etoken_auth_06

Нас будут интересовать два шаблона: Агент регистрации (Enrollment Agent) и Вход со смарт-картой (Smartcard logon).
Зайдем в свойства этих шаблонов и на вкладке безопасность добавим группу «g_EtokenAdmin» с правами чтение и заявка.

etoken_auth_07

Далее включим эти шаблоны.

etoken_auth_08

И они появятся у нас в общем списке.

etoken_auth_09

Следующим шагом настроим групповые политики:
Первым делом расскажем всем компьютерам домена о корневом центре сертификации, для этого изменим Default Domain Policy.
Конфигурация компьютера -> Политики -> Конфигурация Windows -> Параметры безопасности -> Политики открытого ключа -> Доверенные корневые центры сертификации -> Импорт

etoken_auth_10
Выберем наш корневой сертификат, расположенный по пути: C:WindowsSystem32certsrvCertEnroll. Закрываем Default Domain Policy.
На следующем шаге создадим политику для контейнера, в котором будут находится компьютеры с аутентификацией по токену (Смарт-карте).

etoken_auth_11

По пути Конфигурация компьютера -> Политики -> Конфигурация Windows -> Параметры безопасности -> Локальные политики -> Параметры безопасности. Настроим два параметра «Интерактивный вход в систему: требовать смарт-карту» и  «Интерактивный вход в систему: поведение при извлечении смарт-карты».

etoken_auth_12

На этом с настройками все, теперь можно генерировать клиентский сертификат и проверять аутентификацию по токену.
Залогинемся на компьютере под учетной записью «Enrollment Agent» и откроем браузер, перейдя по ссылке http://Имя_сервера_MS_CA/certsrv

etoken_auth_13

Выбираем пункт Запрос сертификата -> Расширенный запрос сертификата -> Создать и выдать запрос к этому ЦС
Если возникнет ошибка вида «Чтобы завершить подачу заявки на сертификат, следует настроить веб-узел для ЦС на использование проверки подлинности по протоколу HTTPS», то нужно на сервере IIS, на котором установлен MS CA, сделать привязку сайта к протоколу https.

etoken_auth_14
Продолжим получение сертификата, для этого на открывшейся странице выберем шаблон: «Агент регистрации» и нажмем кнопку выдать и установить сертификат.

etoken_auth_15
Теперь пользователь Enrollment Agent может выписывать сертификаты для других пользователей. К примеру запросим сертификат для пользователя test. Для этого откроем консоль управления сертификатами certmgr.msc, т.к. через web интерфейс не получится записать сертификат на usb токен.
В этой консоли на папке личное сделаем запрос от имени другого пользователя

etoken_auth_16
В качестве подписи выбираем единственный сертификат «Enrollment Agent» и переходим к следующему шагу, на котором выбираем пункт «Вход со смарт-картой» и нажимаем подробности для выбора криптопровайдера.
В моем случае я использую токены JaCarta, поэтому вместе с драйверами был установлен криптопровайдер «Athena…»:

etoken_auth_17
На следующем шаге выбираем доменного пользователя, для которого выписываем сертификат и нажимаем на кнопку «Заявка».

etoken_auth_18

Вставляем токен, вводим пин код и начинается процесс генерации. В итоге мы должны увидеть диалоговое окно с надписью «Успешно».
Если процесс окончился неудачно, возможно дело в шаблоне получения сертификата, в моем случае его надо было немного подправить.

Приступим к тестированию, проверим работу токена на компьютере, находящемся в OU с групповой политикой входа по смарт-карте.
При попытке войти под учетной записью с паролем мы должны получить отказ. При попытке войти со смарт-картой (токеном) мы получим предложение ввести пин и должны успешно зайти в систему.

Похожее:  Локальное хранилище или куки? Безопасное хранение JWT на клиенте / Хабр

etoken_auth_19

P.s.
1) Если не работает автоматическая блокировка компьютера или выход из системы, после вытаскивания токена, смотрите запущена ли служба «Политика удаления смарт-карт»
2) На токен можно записать (сгенерировать сертификат) только локально, через RDP не получится.
3) Если не получается запустить процесс генерации сертификата по стандартному шаблону «Вход с смарт-картой», создайте его копию с такими параметрами.

etoken_auth_20

На этом все, если будут вопросы, задавайте, постараюсь помочь.

Заголовок

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 – это первая часть токена – есть заголовок. Она закодирована в Base64 и если её раскодировать, получим строку:

Зачем 2 токена?

Представим ситуацию, когда у нас каким-то образом украли Access токен. Да, это уже плохо и где-то у нас брешь в безопасности. Злоумышленник в этом случае сможет им воспользоваться не более чем на 15-30 минут. После чего токен “протухнет” и перестанет быть актуальным. Ведь нужен второй токен для продления.

Если украли Refresh токен, то без Access токена (который недоступен в JS) продлить ничего нельзя и он оказывается просто бесполезным.

Зачем нужен vpn?

VPN-подключение обеспечивает более безопасное соединение с корпоративной сетью и Интернетом.

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Сферы применения VPN:

Сетевая инфраструктура вашей компании может быть подготовлена к использованию VPN с помощью программного или аппаратного обеспечения.

Существует большое количество платных и бесплатных сервисов VPN.

Такие сервисы в основном работают на 4 протоколах:

  1. IPSec, функционирующий в транспортном и туннельном режимах. Шифрование сообщений в пакете данных с помощью транспортного режима называется полезной нагрузкой, а зашифровка всего пакета — туннелированием.
  2. PPTP — это туннельный протокол «точка-точка», использующий туннельный метод, в котором данные сохраняются в виде PPP-пакетов. Они, в свою очередь, помещаются в IP-пакеты и передаются до места назначения.
  3. L2TP — протокол туннелирования второго уровня, работающий на двух основных узлах: концентраторе доступа L2TP (LAC), сетевом сервере L2TP (LNS). LAC представляет собой устройство, которое завершает вызов, в то время, как LNS аутентифицирует PPP-пакеты.
  4. TLS и SSL — криптографические протоколы, использующие сочетание аутентификации и шифрования для обмена данными между сервером и клиентом.

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Также существуют сервисы VPN для корпоративного использования. Один из самых известных — это OpenVPN. Он является безопасным и недорогим сервисом.

Его плюсами являются:

  1. Безопасность. Использование нескольких криптографических протоколов (HMAC, 3DES, AES, RSA) и 2048-битного ключа позволяют осуществить надежное шифрование всех данных.
  2. Гибкие возможности OpenVPN позволяют запускать соединение через Proxy/Socks, по различным протоколам и при принудительной блокировке DHCP-протокола, а также сквозь файрволы.
  3. Поддерживается большинством устройств, в том числе на платформах Apple iOS и Google Android.

Как защитить удаленный доступ?

Для организации работы удаленных сотрудников можно использовать следующие механизмы защиты:

Мы расскажем об одном из механизмов защиты — это VPN.

Конфигурация vpn-сервера

Откроем Диспетчер серверов и щелкнем по ссылке Добавить роли и компоненты.

Выберем роль Удаленный доступ.

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Выберем службу ролей DirectAccess и VPN (RAS).

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Нажмем на кнопку [Установить]. В результате запустится процесс установки роли удаленного доступа.

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

В окне мастера начальной настройки удаленного доступа выберем Развернуть только VPN.

После этого добавим сервер. В окне Маршрутизация и удаленный доступ выберем пункт меню Действие и подпункт Добавить сервер. Далее подтвердим добавление.

Щелкнем по названию добавленного сервера правой кнопкой мыши и выберем Настроить и включить маршрутизацию и удаленный доступ.

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Выберем пункт Особая конфигурация.

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

В качестве настраиваемой конфигурации укажем Доступ к виртуальной частной сети (VPN).

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Запустим службу, для этого нажмем на кнопку [Запустить службу].

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Сервер почти готов.

Для примера мы используем самый простой и очевидный способ — зададим статистический пул адресов для 5 пользователей.

Откроем свойства добавленного сервера.

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Выберем пункт Статистический пул адресов и нажмем на кнопку [Добавить].

В окне Новый диапазон IPv4-адресов укажем начальный и конечный IP-адрес.

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Нажмем на кнопку [Применить]

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Роль удаленного доступа сконфигурирована, теперь откроем порты в брандмауэре.

Можно ли организовать vpn подключения без использования сторонних программ?

Иногда нет смысла использовать сторонние сервисы, если аналогичные возможности встроены в операционную систему.

Мы хотим продемонстрировать, как настроить безопасное VPN-подключение по протоколу SSTP, используя стандартные возможности Windows.

Защита VPN-соединения в таком случае выполняется посредством механизмов шифрования трафика с помощью цифрового сертификата (SSL), предоставляемого со стороны VPN-сервера. Программное обеспечение клиентской операционной системы в процессе установки VPN-соединения выполняет проверку сертификата VPN-сервера, в частности, проверяет не отозван ли сертификат сервера, а также проверяется стоит ли доверять корневому сертификату Центра сертификации, выдавшего сертификат для VPN-сервера.

Настройка vpn-сервера

Настройку VPN-подключения мы начнем с развертывания простого VPN-сервера на базе Windows Server 2022 R2.

Такой сервер, установленный на стандартном оборудовании, вполне можно использовать для небольшой офисной сети с потребностью организации удаленного подключения для нескольких десятков сотрудников (30-50 человек).

Настройка доступа для конкретного пользователя

Откройте Диспетчер серверов, выберите пункт Средства и подпункт Пользователи и компьютеры Active Directory.

Найдите имя необходимого пользователя, зайдите в его Свойства, на вкладке Входящие звонки выберите настройку Разрешить доступ. Нажмите на кнопку [Применить].

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

И напоследок проверим разрешен ли удаленный доступ в свойствах системы.

Для этого откроем свойства системы, выберем пункт Настройка удаленного доступа и установим переключатель Разрешить удаленные подключения к этому компьютеру.

Похожее:  Личный кабинет авиакомпании Победа: вход, регистрация, телефон горячей линии, отзывы | Официальный сайт pobeda aero

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Вот и все, настройка сервера на этом завершена. Теперь настроим VPN-соединение на компьютере, который будет использоваться для удаленного доступа.

Настройка локальной политики безопасности

Откроем список локальных политик безопасности и выберем пункт Назначение прав пользователя.

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Выберите политику Разрешить вход в систему через службу удаленных рабочих столов.

Нажмите на кнопку [Добавить пользователя или группу].

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Найдите имя подразделения Пользователи домена и добавьте его.

Ну и предпоследним шагом будет настройка доступа для конкретных пользователей.

Открытие портов брандмауэра

Для протокола TCP откроем порты 1723 и 443.

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

Для протокола UDP откроем порты 1701, 500 и 50.

Аппаратный токен или USB-ключ – компактное устройство для предоставления одноразовых паролей. Аутентификация на основе токенов – надёжная защита данных

На следующем этапе настроим локальную политику безопасности.

Подбор ключа

При использовании шифрования алгоритмом HS256 мы используем секретный ключ. Злоумышленник может узнать наш ключ с помощью подбора.  

Рекомендации для защиты от атаки подбора ключей:

  1. SECRET_KEY – рекомендуется хранить в env переменных;

  1. Использовать ключ большой длины: большие и малые буквы, цифры и спецсимволы;

  1. Периодическая смена ключа. При такой процедуре пользователю придется заново проходить процедуру аутентификации, но это поможет сделать систему более безопасной.

Постскриптум

В своей реализации Refresh токена использовал общую длину 24 знака. Первые 6 знаков – это дата его “протухания”, следующие 12 знаков – случайно сгенерированные данные. И в конце 6 знаков – это часть Access токена последней части сигнатуры.

Дату протухания внедрил прям в токен с той целью, чтобы не хранить эту информацию где-то в другом месте, например, в базе данных.

Дата содержит год, месяц, день, час и минуты. Хранится в ASCII

Кодирование даты на Golang:

// приводим к целочисленному числу uint32. Итого 32 бита.
// расчет простой: год 12 бит, месяц 4 бита, день 5 бит и т.д. Таким образом в аккурат умещаемся в 32 бита или 4 байта.
date := uint32(year<<20) | uint32(month<<16) | uint32(day<<11) | uint32(hour<<6) | uint32(minute)

// в цикле кодируем байты в ASCII. 1 знак это шесть бит. Итого и получаем шесть знаков даты по таблице ASCII – печатные знаки.
for n := 0; n < 6; n {
b6Bit = byte(date>>i) & 0x3F
sBuilder.WriteByte(byte8bitToASCII(b6Bit))

}

Всю реализацию на Go можно изучить на Github-е

Проверка jwt  токена на подлинность

получаем токен { header.payload.signature }

Создаем сигнатуру из header и payload 

newSignature = HMACSHA256( header   "."   payload, SECRET_KEY)

сравниваем получившиеся сигнатуру с сигнатурой из токена:

if(newSignature  === signature) { токен валидный и не был подделан }

Проверка токена

Для проверка токена необходимо проделать ту же операцию.

Берем склейку заголовок данные, кодируем с помощью алгоритма HMAC-SHA256 и нашего приватного ключа. А далее берем сигнатуру с токена и сверяем с результатом кодирования. Если результаты совпадают – значит данные подтверждены и можно быть уверенным, что они не были подменены.

Резюмируем

Когда VPN-соединение установлено, весь трафик начинает проходить через VPN-сервер.

Надежность защиты VPN-трафика заключается в том, что даже если злоумышленники каким-либо образом перехватят передаваемые данные, то им все равно не удастся ими воспользоваться, так как данные зашифрованы.

А если установить ещё и специальные приложения для контроля за трафиком и настроить их, то можно будет успешно фильтровать трафик. Например, автоматически проверять его на наличие вирусов.

Надеюсь нам удалось убедить вас, что VPN это просто, доступно, а главное безопасно!

Сигнатура

Последняя часть токена – наиболее важная. У нас это E4FNMef6tkjIsf7paNrWZnB88c3WyIfjONzAeEd4wF0

Как вы уже могли заметить – первые данные передаются практически в открытом виде и раскодировать их может любой. Но шифровать их нет необходимости. Цель токена – подтвердить, что эти данные не были изменены. Вот для этих целей и выступает сигнатура. И чтобы её сгенерировать нужен приватный ключ.

Она получается примерно следующим образом:

Факторы угроз

Удаленное рабочее место пользователя порождает, в сравнении с локальным офисным рабочим местом, три дополнительных фактора угроз:

  1. Удаленный пользователь находится вне зоны физического контроля организации. Требуется доказательство того, что к корпоративному ресурсу подключается именно сотрудник компании, а не злоумышленник.
  2. Данные удаленного пользователя распространяются по каналам, которые находятся вне зоны контроля организации. Эти данные подвержены перехвату, несанкционированному изменению и «подмешиванию» постороннего трафика.
  3. Для удаленного рабочего места сама компания не может обеспечить физическую безопасность. Также используемый компьютер может не соответствовать требованиям по конфигурации

Поэтому при организации удаленного доступа должны соблюдаться три основных принципа информационной безопасности:

Шифрование

Выделяют 2 типа шифрования: симметричное и асимметричное.

Симметричное шифрование – способ шифрования, в котором для шифрования и дешифрования применяется один и тот же криптографический ключ. Проблемой данного способа является передача ключа. Необходимо исключить возможность кражи при передаче.

Асимметричное шифрование – процесс, при котором для шифрования данных используется публичный ключ, а для дешифровки – приватный. 

Вспомним «Вариант 2» задачи в начале статьи. 

Когда передаем замок без ключа из пункта А в пункт Б, в пункте Б мы получаем замок (публичный ключ) которым можно только зашифровать, то есть закрыть сундук.

При помощи его в пункте Б шифруем свой ключ (положим один из дубликатов ключей в сундук и закроем замком, который получили из пункта А) отправляем обратно в пункт А. 

В пункте А откроем сундук ключом (расшифруем данные приватным ключом).

Теперь в пунктах А и Б есть одинаковые ключи, и можно проводить симметричное шифрование, использовать 1 замок и дубликаты ключей с каждой стороны.

Заключение

SSL – стандарт нашего времени. Браузеры запрещают посещение ресурсов без этого протокола.

JSON Web Tokens — популярная технология. При правильном использовании JWT избавляет от ошибки недостаточной авторизации, позволяет быстро распределять информационные потоки между сервисами, с едиными учетными данными и повысить их производительность.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector