Статья: Некоторые особенности реализации алгоритма защиты программного обеспечения от нелегального использования
Dim rsaProvider2 As New RSACryptoServiceProvider()
rsaProvider2.FromXmlString(DK)
Dim DecodingText As String = UTF8Encoding.UTF8.GetString _ (rsaProvider2.Decrypt(Convert.FromBase64String(EncodingText), True))
'V. Получаем хеш-функцию расшифровывающего ключа.
Dim md5Provider As New MD5CryptoServiceProvider
Dim MD5Hash As String = Convert.ToBase64String _
(md5Provider.ComputeHash(UTF8Encoding.UTF8.GetBytes(DK)))
End Class.
Используя асимметричный алгоритм RSA и алгоритм вычисления хеш-функции MD5, автор статьи разработал принципиальную схему алгоритма защиты программного обеспечения от нелегального использования. Данная схема была успешно применена при разработке программного комплекса “Генератор тестов 2.0”.
Каждый легальный дистрибутив программы “Генератор тестов 2.0” снабжается ключевым файлом. Ключевой файл подтверждает легальность установленного программного продукта и может служить для идентификации пользователя, ограничения времени работы программного продукта и т.д.
Ключевой файл состоит из трех блоков данных: информации о пользователе в открытом виде, информации о пользователе в зашифрованном виде и расшифровывающего ключа ассиметричного алгоритма шифрования RSA.
Принципиальная схема работы алгоритма защиты показана на рисунке.
Принципиальная схема работы алгоритма защиты.
Порядок работы алгоритма:
В процессе создания программного обеспечения:
Информация о пользователе в открытом виде записывается в ключевой файл (она служит для быстрого получения сведений о пользователе).
Информация о пользователе передается асимметричному алгоритму шифрования.
Зашифровывающий ключ передается алгоритму шифрования.
Зашифрованная с помощью зашифровывающего ключа информация о пользователе добавляется в ключевой файл.
Расшифровывающий ключ асимметричного алгоритма шифрования добавляется в ключевой файл.
Расшифровывающий ключ асимметричного алгоритма шифрования передается в алгоритм хеширования.
Хеш-функция расшифровывающего ключа помещается перед компиляцией в защищаемый бинарный файл (*.exe, *.dll и т.д.).
В процессе эксплуатации программного обеспечения:
Расшифровывающий ключ асимметричного алгоритма шифрования, записанный в ключевой файл, передается в алгоритм хеширования.
Значение хеш-функции расшифровывающего ключа из ключевого файла сравнивается со значением хеш-функции расшифровывающего ключа помещенной в защищаемый файл. В случае равенства значений двух хеш-функций зашифрованные данные пользователя, записанные в ключевом файле считаются достоверными. В случае несовпадения, данные из ключевого файла считаются недостоверными, сам ключевой файл блокируется, а защищаемый файл отказывается работать с ключевым файлом.
Выводы
Разработана принципиальная схема алгоритма защиты программного обеспечения от нелегального использования.
Реализован алгоритм защиты на языке высокого уровня Microsoft Visual Basic 2005. Данный алгоритм вошел в программный продукт “Генератор тестов 2.0”, разработанный в 2007 г. для Министерства образования и науки Республики Северная Осетия-Алания.
Список литературы