Сеансовые ключи в электронных ключах

Об особенностях использования криптографических алгоритмов в электронных ключах.

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

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

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

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

По сути существует всего 2 наиболее распространенных алгоритма выработки сеансовых ключей для шифрования трафика: протокол обмена ключами Диффи-Хеллмана и MQV.

Первый без аутентификации, второй с взаимной аутентификацией. Казалось бы, нет проблем: бери и используй! Но что выясняется при детальном анализе: алгоритм Диффи-Хэлмана вообще не защищает от атаки типа «man-in-the-middle» или, проще говоря, от создания табличного эмулятора (с чем собственно и боремся). А алгоритм MQV защищает до тех пор, пока кто-то из хакеров не отыщет одну из его констант в защищенном приложении (а точнее в API электронного ключа). И тогда также запросто можно создавать табличные эмуляторы.

Интересно, что есть электронные ключи, которые используют подобные алгоритмы (например, ECKAS-DH1 — модификация DH для эллиптических кривых) и позиционируют себя как более защищенные! А в реальности они только пускают пыль в глаза и ничего кроме насмешки у профессионального взломщика вызвать не могут.

По этой причине при создании электронных ключей Guardant Sign, Guardant Time и Guardant Code нам пришлось использовать иные алгоритмы выработки сеансовых ключей, адаптированные применительно к задаче защиты программного обеспечения, с учетом тех современных видов атак, которые может реализовать хакер.

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

Вернуться в ленту


Комментарии к статье

05-12-2008 22:38:20 # Комментировал backdoorman Как вы считаете на сколько может улучшить ситуацию использование вероятностного шифрования (гомоморфные алгоритмы)?
Действительно в классической схеме Д-Х, есть уязвимость для атаки «человек по середине», но вы как то умолчали о различных модификациях этого протокола, которые не подвержены этой атаке, что вы об этом думаете ?
12-12-2008 14:41:55 Ответил Константин Черников Уважаемый backdoorman,
Вы правы, выработка сеансовых ключей можно делать для наших целей разными способами. Могут использоваться разные протоколы, которые удовлетворяют определенным правилам. Мы не изучали абсолютно ВСЕ традиционные (нам достаточен только один (-: ), но большинство из них не годятся.

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

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

Задача строго научно определить теорию не было - данный блог не совсем подходящее место для этого :-). Но немного уточнить сказанное могу. Строго говоря алгоритм выработки сеансового ключа по Диффи-Хеллману, защищает от атаки типа «man-in-the-middle», но не защищает от атаки типа «computer-in-the-middle» или точнее «программа по середине». Т.е. для успешной атаки надо налету успеть сделать какие-то вычисления, что доступно только компьютеру или, в нашем случае, программе.

Модификация этого алгоритма по имени MQV (ее еще называют Диффи-Хелман с взаимной аутентификацией) считается, что защищает от атаки «компьютер по середине», но в случае с электронными ключами это не так, поскольку узнав одну из констант внутри защищенной программы можно все равно реализовать эту атаку успешно. Правда придется очень многое перешифровывать на лету, причем 2 раза, но это уже детали реализации.
08-12-2008 11:37:10 # Комментировал backdoorman Константа может быть не явно задана, к примеру размазана по коду и это сильно затруднит ее получение, а еще лучше, когда их будет несколько. А если появляется возможность узнать константу, то мне не совсем понятно, зачем тогда ее использовать, можно пропатчить нужные места и все.

Мне кажется в вашей статье все же не хватает фактов для обоснования вашей гипотезы. То что, можно построить таблицу-соответствий в случае если поток трафика от ключа к приложению детерминирован, это и так всем понятно.
08-12-2008 18:23:15 Ответил Константин Черников Верно, за константы в случае с электронными ключами и применением ассиметрии в них, вообще надо бороться :-) Сильно, по разному и неявно. Но есть алгоритмы, когда и найти константы мало - надо еще многое что сделать чтобы извлечь из них пользу, переменные искать и т.д. Мы именно такой алгоритм и постарались сделать.

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

Обещал уточнить про гомоморфные шифры. У меня есть общий взгляд на системы защиты, который как раз и был озвучен в докладе на Софтуле 2008. Статья на эту тему будет опубликована позже. Из нее можно будет получить ответ на вопрос про гомоморфные шифры, как мне думается. Хотя тема, согласен, интересная и малоизученная в контексте электронных ключей. Я бы не стал утверждать что мы УЖЕ все знаем на этот счет :-) Если есть интересный взгляд, готов его обсудить.
08-12-2008 12:56:41 # Комментировал backdoorman Вы правильный тогда подход выбрали в своем ключе, но тут многое зависит от реализации :).

Спасибо конечно, но пока воздержусь от публикации своих идей ;).

Ждемс статьи, буду рад прокомментировать.
Необходима авторизация!

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

Адрес офиса: город Москва, Брошевский переулок, дом 6, строение 1
Многоканальный телефон:
+7 (495) 925-77-90

1994-2016 © Компания «Актив».

Авторизация в системе

Логин:
Пароль:

больше не спрашивать
 
Зарегистрироваться · Вспомнить пароль