В ЧЕМ ПРОБЛЕМА

Куки используются в HTTP для аутентификации сессий, чтобы распознать конкретного юзера в общей массе. Однако куки не гарантируют совершенно никакой безопасности, потому что создавались не для этого и передаются по Сети в открытом виде. Кто угодно может взять чужие куки и залогиниться под чужим аккаунтом, даже не зная пароля. Существует масса простых утилит для перехвата чужих куки в открытых сетях, например в бесплатном Wi-Fi-хотспоте (взять хотя бы Firesheep и DroidSheep).

Веб-разработчики знают о проблеме, но ничего не могут поделать. Они привыкли полагаться на общую защиту всего трафика через HTTPS, но это не спасает жертву. Есть куча мест, где куки все равно лежат в открытом виде: на сайтах почти всегда найдутся дыры из-за ошибок в конфигурации, куки можно извлечь из браузера с помощью XSS, XST и других трюков, да и сам HTTPS не такой уж непробиваемый.

В общем, по своей природе куки исключительно слабо защищены, тут уж ничего не поделаешь. У одного панамского хакера по имени Итало Дакоста возникла идея: а что если использовать вместо куки одноразовые токены? Так и родился проект One Time Cookies, OTC. В отличие от куки, OTC изначально придумывались с прицелом на безопасность.

 

КАК ЭТО РАБОТАЕТ

Идея в том, что клиент сам генерирует уникальный токен с каждым HTTPS-запросом, генерируя хеши HMAC (Hash-based Message Authentication Code) на основании ключа сессии, полученного от сервера, см. схему протокола OTC. Таким образом, перехват токена (от клиента к серверу) в открытой сети ничего не дает злоумышленнику, потому что токен одноразовый и действует ровно один запрос.

Схема протокола OTC
Схема протокола OTC

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

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

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

 

КАК ИСПОЛЬЗОВАТЬ

Чтобы включить протокол OTC, его нужно установить и на сервере, и у клиента. Для серверной части есть плагин к WordPress, а для клиента — расширение к браузеру Firefox.

Ставим и то, и другое — и все сразу начинает работать, в чем можно убедиться, если посмотреть на пакеты в сниффере Wireshark или расширении Live HTTP Headers для Firefox.

 

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии