Методическое пособие по изучению методов защиты программного обеспечения с использованием аппаратных ключей HASP4 по курсу "Программно-аппаратные средства защиты информации". Бабенко Л.К - 24 стр.

UptoLike

24
Поскольку ключ шифрования каждого ключа HASP является
уникальным, процесс дешифровки также будет уникальным. Подобный процесс
является серьезным препятствием для копирования содержимого памяти одного
ключа HASP на другой ключ, поскольку ID-номер HASP не может быть
скопирован. Память «поддельного» ключа HASP дешифруется с
использованием неверного ключа, что приводит к неверным результатам
дешифровки.
4.6. Проверка контрольной суммы
программного кода
Проверка контрольной суммы программного кода позволяет
определить, вносились ли изменения в защищаемое приложение или нет.
Для осуществления простейшей проверки контрольной суммы
необходимо:
1. Вычислить контрольную сумму.
2. Сравнить ее с верным значением.
3. Если суммы не сходятся, то предусмотреть появление сообщения об
ошибке. В противном случае программа должна продолжать работать
нормально.
К сожалению, данная техника защиты подвержена нескольким типам
попыток взлома:
1. Программный код может быть изменен, а процедура проверки
контрольной суммы устранена.
2. Возможно программирование выдачи корректного результата
проверки.
Для этого взломщики обычно определяют алгоритм расчета
контрольной суммы и используют различные техники изменения программного
кода для компенсации изменений количества байтов.
Методом защиты от этой атаки является отсутствие операции
сравнения результата проверки контрольной суммы с рассчитанным заранее
значением. Вместо этого можно использовать результаты проверки
контрольной суммы для выполнения действия, которое приводит к
возникновению ошибки, если был получен неверный результат расчета.
Например, можно сохранить результат контрольной суммы в виде переменной и
использовать ее
в последствии в качестве ключа для дешифровки определенных
данных. Такой подход предпочтительнее тем, что эталонная контрольная сумма
не хранится в явном виде в самом защищаемом приложении.