Защита аппаратного ключа. Часть 1
20 апреля 2004 годаНа сегодняшний день аппаратные ключи защиты являются одним из самых надежных средств защиты информации. Между тем сами ключи тоже нуждаются в серьезной защите, поскольку именно они выступают объектом атаки злоумышленника.
На сегодняшний день аппаратные ключи являются одним из самых надежных средств защиты информации, содержащейся в компьютере. Они применяются в самых различных областях: для безопасного хранения паролей, идентификации пользователей, защиты программного обеспечения от пиратов и т. д. Между тем сами ключи тоже нуждаются в серьезной защите.
Дело в том, что злоумышленники очень часто пытаются получить доступ к программе или секретной информации с помощью взлома именно устройства, обеспечивающего безопасность. Давайте же рассмотрим, как разработчики электронных ключей защищают свои продукты от хакеров. А для примера возьмем технологию Stealth. Ее создала компания «Актив» для своих ключей Guardant, предназначенных для защиты ПО от пиратов.
Коды доступа к электронному ключу
Одним из средств защиты ключа согласно технологии Stealth являются коды доступа. Они представляют собой последовательности из 32 бит, которые «вшиваются» в устройство и недоступны для чтения и модификации. Существует два типа кодов — общий и личные. Первый из них не является секретным, он служит только для идентификации ключей конкретного пользователя защиты.
Технология Stealth предусматривает существование трех разных личных кодов. Private Read code позволяет проверить наличие ключа, подключенного к компьютеру, считать содержимое его памяти и получить ответ аппаратных алгоритмов. Без знания Private Write code невозможно осуществить запись данных в устройство. Ну а Private Master code открывает полный доступ ко всем операциям с ключом. Каждый из этих кодов нужно держать в тайне, поскольку, получив их, злоумышленник сможет воспользоваться устройством в своих целях.
«Ну а для чего нужно было придумывать три кода вместо одного?» — наверняка спросят многие читатели. Ответ на этот вопрос очень прост: именно таким образом существенно повышается безопасность. Ведь для работы с ключом необходимо, чтобы приложение «знало» код доступа к нему. То есть получается, что эта конфиденциальная информация все-таки где-то сохраняется.
И теоретически возможно, что хакер, получив доступ к компьютеру, сможет ее найти. Хотя в реальной жизни это осуществить не так просто. Так вот, большинству приложений для работы хватает разрешения только на чтение данных из ключа, а также использования его аппаратных алгоритмов. Таким образом, если хакер сможет взломать защищенное приложение, то он получит только Private Read code. Перезаписать же память ключа он не сможет.
Аппаратные запреты
Ключи, выполненные с использованием технологии Stealth, как и многие другие устройства защиты, имеют собственную энергонезависимую память. Ее содержимое очень важно. Ведь если хакер получит данные, находящиеся в памяти ключа, он сможет воспользоваться ими для получения несанкционированного доступа к данным, взлома защищенного приложения, создания эмулятора устройства и т. п. Согласитесь, все это очень неприятно.
Технология Stealth позволяет полностью решить рассмотренную проблему. Для этого в памяти ключа создается специальная защищенная область с аппаратными запретами на чтение и запись ее содержимого. Таким образом, считать информацию, находящуюся в такой зоне, невозможно с помощью любых программных средств: устройство просто-напросто не ответит ни на один подобный запрос. Причем хакеры могут даже не стараться и не создавать новые инструменты для обхода наложенных ограничений. Все-таки аппаратный уровень расположен «ниже» программного, так что обойти запреты с помощью каких-либо утилит невозможно.
Первоначально аппаратные запреты вводятся только на область энергонезависимой памяти, в которой находятся дескрипторы программных алгоритмов. Это очень важно. Дескрипторы являются основой для преобразования данных, поэтому невозможность их чтения является гарантией того, что аппаратные алгоритмы ключа не будут продублированы в эмуляторе. Кроме того, пользователь с помощью специальных программных средств, входящих в комплект поставки, может сам создавать защищенные области в доступной ему памяти электронного ключа. В будущем у них можно изменять размеры (уменьшать или увеличивать доступный объем). Кроме того, пользователь может и удалять области памяти с аппаратными запретами на чтение и запись информации.
«Но постойте! — воскликнут сейчас некоторые читатели. — Раз пользователь может снять запреты на работу с памятью, то почему бы этого не сделать и хакеру?» И действительно. Раз владелец ключа с помощью специальной утилиты может легко удалить защищенные области, то, значит, и хакер сможет воспользоваться тем же программным обеспечением. Вот только тогда возникает другой вопрос: «А зачем это делать?»
Оказывается, когда кто-либо снимает аппаратные запреты с защищенной области памяти, вся информация, которая в ней располагалась, уничтожается. Причем уничтожается навсегда и не поддается восстановлению. Владелец ключа знает, что именно находилось в удаленной области, поэтому после снятия аппаратного запрета он легко сможет восстановить данные. Ну а хакер получит абсолютно чистую память, в которую он сможет записывать все что угодно.
Вот только пользы от этого для злоумышленника никакой нет — ему-то была нужна информация, а она оказывается уничтоженной. Таким образом, аппаратные запреты на чтение и запись определенных областей памяти надежно защищают секретные данные, необходимые для построения защиты. И даже если злоумышленник завладел вашим ключом, он все равно не сможет получить всю информацию, которая в нем содержится.
Итак, уважаемые читатели, давайте подводить итоги. Аппаратные ключи, выполненные с использованием технологии Stealth, достаточно надежно защищены от злоумышленника. По крайней мере, он не сможет получить доступ к важной информации, используя специальное программное обеспечение. Правда, нужна еще защита и от аппаратных устройств, которыми могут пользоваться хакеры для доступа к памяти ключа. Но это уже, как говорится, совсем другая история.