Алгоритмы шифрования серийных номеров
Надежность ключей системы лицензирования основывается на
применении асимметричных алгоритмов шифрования. В текущей версии
реализован алгоритм RSA с длиной ключа от 1024 до 16384 бит. В
будущих версиях планируется добавление других алгоритмов,
основанных на ECC, а также схем, совмещающих симметричные и
асимметричные шифры.
Используемый алгоритм уникален для каждого продукта. Ключи,
созданные с одним алгоритмом, не подойдут к другому, поэтому
смена алгоритмов после создания хоть одной лицензии не
допускается. Модуль защиты, располагающийся в защищаемой
программе, "знает" каким алгоритмом должен быть зашифрован
серийный номер и не примет ключ, созданный другим алгоритмом или
тем же алгоритмом, но с другими параметрами (скажем, с другой
длиной ключа).
Алгоритм RSA
Шифрование серийного номера алгоритмом RSA происходит по
следующей схеме:
- Добавление случайных данных в начало
номера - метод основывается на RFC2313, однако
реализация немного отличается от описаной там. В начало
серийного номера добавляютя байты: 00 02 NN...NN 00, где NN..NN
- от 8 до 16 случайных ненулевых байт. Количество байт
выбирается случайным, однако принимается во внимание длина
серийного номера и максимальная вместительность ключа.
- Добавление случайных данных в конец номера
- окончательное количество байт в серийном номере должно
равняться количеству бит в ключах алгоритма, деленному на 8.
Серийный номер дополняется до этого числа байт случайными
данными. В результате получается следующий формат серийного
номера: 00 02 NN..NN 00 DD..DD MM..MM, где NN - набор случайных
ненулевых байтов, DD - исходный серийный номер, MM -набор
случайных байтов (в т.ч. и нулевых). Суммарная длина
последовательности должна равняться количеству бит,
применяемому в алгоритме, деленному на 8.
- Шифрование - производится по стандатной
схеме, реализованной во многих библиотеках, работающих с
большими числами. Генератор на PHP содержит всю необходимую
информацию в открытом виде.
- Упаковка - полученный после шифрования
набор байт кодируется в base-64 - это и есть серийный номер,
который отправляется покупателю.
© 2006-2015 Copyright VMProtect Software