Новые технологии Guardant: Guardant Stealth III и новое ядро программной защиты
В первом квартале 2006 года в продажу поступят электронные ключи нового поколения Guardant Stealth III. Одновременно выйдет Комплект Разработчика, содержащий программное обеспечение Guardant версии 5.0 с новым, полностью переработанным, ядром программной части защиты.
Усовершенствованный инструментарий, входящий в состав в новой версии ПО Guardant, позволит не только раскрыть широкие функциональные возможности новых электронных ключей, но и предоставит возможность построения более эффективных защитных механизмов на базе электронных ключей предыдущего поколения.
Электронные ключи Guardant Stealth III
| Тип и объем памяти |
|
|---|---|
| Технология «Защищенные ячейки» |
|
| Аппаратные алгоритмы GSII64 |
|
| Дистанционное программирование |
|
Программное обеспечение Guardant версии 5.0
| Поддержка электронных ключей |
|
|---|---|
| Полностью новое ядро программной части защиты |
|
| Новая система программирования ключей |
|
Подробная информация
Псевдокод
Псевдокод — это технология защиты исполняемых файлов от изучения логики их работы. Суть ее состоит в том, что определенные фрагменты исполняемых файлов дизассемблируются, анализируются и преобразуются в защищенный код виртуальной машины, которая генерируется тут же.
Анализировать логику работы защищенного подобным образом кода на порядок сложнее, чем инструкции Intel-совместимых процессоров, поскольку для псевдокода не существует никакого стандартного инструментария (отладчиков, дизассемблеров). Взломщику придется все делать вручную или создавать свои собственные инструменты. В каждой копии виртуальной машины реализуется уникальным образом:
- набор внутренних команд псевдокода;
- множественный взаимный контроль целостности (для затруднения внесения изменений и установки точек останова);
- обфускация кода виртуальной машины (замусоривание реального кода вторичным);
- шифрование кода самой виртуальной машины;
- шифрование самого псевдокода;
- параметры многих команд рассчитываются только во время выполнения (защита от статического дизассемблирования);
- отсутствие постоянных сигнатур в защищенном коде (чтобы затруднить поиск псевдокода в защищенном приложении).
Новый интерфейс прикладного программирования Guardant 5.0
Handle-ориентированный API
Большинство функций теперь работает с так называемым защищенным контейнером, который служит для хранения контекста работы с данной копией Guardant API. Это позволяет:
- Упростить обмен с API:
- минимизация числа вызовов функций;
- минимизация числа параметров функций.
- Сократить время работы функций.
Поддержка многопоточности
Это дает возможность:
- Существенно повысить защищенность. Отлаживать многопоточные приложения гораздо сложнее;
- Легче интегрировать API в сложные многопоточные приложения;
- Работать с несколькими USB-ключами одновременно.
Унифицированный API
Вместо двух наборов функций «nsk» и «nnk» есть один набор функций «Grd», который сам умеет работать как с локальными, так и с сетевыми ключами
- Упрощается программирование работы с сетевым и локальным ключом одновременно;
- Можно написать защиту на основе Guardant API так, чтобы дальнейший переход на сетевые ключи максимально упростился. По сути надо будет поменять один флаг в функции GrdSetFindMode();
Кроме того, в API Guardant внесены следующие изменения и обновления:
Полностью изменен протокол обмена между драйверами и API
- Все старые эмуляторы, логгеры и мониторы перестанут с ним работать;
- Новые механизмы защищены псевдокодом;
Контроль целостности драйвера из Win32 приложения
- Драйвер Guardant подписан при помощи ассиметричной криптографии;
- Защищенное приложение проверяет подпись драйвера (проверка происходит автоматически при вызове функций Guardant API 5.0);
- Взломщик не сможет создать драйвер-эмулятор электронного ключа так, чтобы у него сходилась подпись, поскольку закрытый ключ ему не известен;
- Хакеру придется ломать персонально каждое защищенное приложение.
Два новых режима поиска ключей через GrdLogin() и GrdFind()
- Модель. Можно явно задавать параметры ключей Guardant, с которыми будет работать программа;
- Интерфейс. Можно явно задавать интерфейс ключей, с которыми будет работать программа. Если, к примеру, приложение не будет поставляться с LPT ключами, то можно выключить их поиск — это ускорит работу.
Драйвер Guardant 5.0
- Защищен псевдокодом;
- Полностью изменен протокол обмена между драйвером и API;
- Множественный контроль целостности:
- Win32 приложение проверяет целостность (подпись) драйвера;
- Внутри кода драйвера виртуальная машина осуществляет множественный контроль целостности.
Новые технологии программирования ключей
Утилита Программирования Ключей (NskUtil) существенно расширила свою функциональность. Поддерживаются все новые технологии, которые появились в электронных ключах Stealth III. Появилась возможность вести базу данных обо всех запрограммированных электронных ключах. Это позволяет:
- Уникально программировать пароли на удаленное обновление алгоритмов и ячеек. Таким образом, каждый пароль используется только один раз и не может быть скомпрометирован;
- Уникально задавать ключи шифрования для Trusted Remote Update;
- Вести статистику по всем запрограммированным ключам (кому и когда был прошит ключ, какой ID, какие данные и пароли записаны).
Электронные ключи Guardant Stealth III
Технология «Защищенные ячейки»
Теперь наряду с аппаратными алгоритмами в памяти электронного ключа можно создавать так называемые защищенные ячейки. Защищенная ячейка — это некоторый контейнер с данными, обращение к которому осуществляется по его номеру:
- Более простая адресация памяти ключа. Не надо пересчитывать адрес данных внутри ячейки от версии к версии маски. Работа почти как с файлами — надо указывать только номер ячейки и смещение в нейv
- Возможность ставить запреты на чтение/запись ячеек памяти. Организация Read-Only и Read-Write ячеек;
- Уникальные пароли на чтение и обновление ячеек. Дополнительная степень безопасности;
- Активации/деактивации ячеек по уникальным паролям.
2048 байт энергонезависимой памяти
- Больше аппаратных алгоритмов;
- Больше ячеек;
- Больше данных/
Аппаратные алгоритмы GSII64
- Аппаратно реализованное стойкое шифрование (блоками по 64 бита и поточное);
- Длина ключа (определитель алгоритма) 128 или 256 бит;
- Поддержка«Актив»ации/деактивации алгоритмов по уникальным паролям (надежный механизм для создания защищенных демо-версий, продажи программного обеспечения по частям).
Trusted Remote Update
Trusted Remote Update — уникальная технология безопасного удаленного обновления памяти электронного ключа:
- Вся информация для дистанционного обновления расшифровывается и обрабатывается внутри ключа;
- Нет возможности «подсмотреть» и/или фальсифицировать данные, записываемые в ключ.
Trusted Remote Update
В работе механизма Trusted Remote Update используется алгоритм шифрования GSII64. При прошивке электронного ключа разработчиком или продавцом ПО задается уникальный ключ шифрования, который записывается в память Guardant Stealth III и не может быть извлечен наружу. Ключ шифрования может быть уникальным для каждого конкретного клиента и/или программного продукта.
При удаленном обновлении памяти электронного ключа все ходящие в обоих направлениях данные шифруются и подписываются на этом секретном ключе шифрования. Все операции, связанные с расшифровкой и проверкой целостности данных, осуществляются только внутри аппаратного устройства. Это полностью исключает возможность компрометации или подмены данных, которые записываются в электронный ключ при удаленном программировании. Аппаратная реализация обмена на сеансовых ключах гарантирует, что однажды записанные в электронный ключ данные не могут быть в него записаны повторно. Это защищает от таких атак, как повторное сбрасывание счетчиков в исходное состояние и т. д.
Аппаратная проверка ID гарантирует, что сгенерированные для одного электронного ключа данные не подойдут для другого.
