Аппаратное вычисление ЭЦП
Наиболее распространенным сегодня видом атаки на системы защиты программного обеспечения является разновидность атаки «человек посередине» (Man-In-The-Middle, MITM). Она заключается во внедрении программного модуля между защищенным приложением и электронным ключом. Чаще всего роль такого модуля играет драйвер.
Одной из разновидностей такого типа атак является построение табличного эмулятора электронного ключа. Табличными такие эмуляторы обычно называют потому, что для имитации присутствия ключа они используют заранее заготовленные таблицы данных, отправляемых в ключ, и данных, получаемых приложением в ответ.
Для успешного проведения такой атаки требуется собрать информацию об обмене данными между приложением и ключом.
Основной принцип противодействия этой атаке состоит в том, чтобы между ключом и приложением курсировало как можно больше разных данных.
Если приложение использует для обмена с ключом ограниченное количество данных, задача состоит в том, чтобы запас данных «расходовался» как можно дольше. Соответственно, чем более разнообразны эти данные, тем больше времени потребуется для того, чтобы создать табличный эмулятор для ключа.
Аппаратное вычисление электронной цифровой подписи предоставляет более продвинутый способ противодействия созданию табличных эмуляторов.
Применение ЭЦП позволяет разработчику защиты потенциально увеличить разнообразие потока курсирующих данных до бесконечности, так как в отличие от аппаратных алгоритмов симметричного шифрования здесь не нужно заранее подготавливать таблицы вопросов и ответов для последующего их использования в приложении.
Электронный ключ способен вычислить цифровую подпись для произвольного массива данных. Разработчику приложения необходимо проверять корректность подписи программно-реализованными алгоритмами и постоянно генерировать новые данные для проверки.
Проверка подписи представляет собой довольно сложный математический алгоритм, который поставляется в комплекте разработчика Guardant, в том числе в исходных кодах на С и Delphi.
Таким образом, его можно внедрить в приложение, сделав неотличимым от остального кода: в защищенном приложении исчезают точки входа в функцию проверки ЭЦП и «отламывание» защиты превращается в попытку эмуляции алгоритма ЭЦП с неизвестным закрытым ключом. |