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