mirror of
https://github.com/Obfuscator-Collections/VMProtect.git
synced 2024-12-27 08:49:27 +03:00
80 lines
4.6 KiB
HTML
80 lines
4.6 KiB
HTML
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|||
|
|
|||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|||
|
<head>
|
|||
|
<link rel="Stylesheet" type="text/css" href=
|
|||
|
"../../default.css" />
|
|||
|
<meta http-equiv="Content-Type" content=
|
|||
|
"text/html; charset=utf-8" />
|
|||
|
|
|||
|
<title>Алгоритмы шифрования серийных номеров</title>
|
|||
|
<style type="text/css">
|
|||
|
</style>
|
|||
|
</head>
|
|||
|
|
|||
|
<body>
|
|||
|
<h1>Алгоритмы шифрования серийных номеров</h1>
|
|||
|
|
|||
|
<p>Надежность ключей системы лицензирования основывается на
|
|||
|
применении асимметричных алгоритмов шифрования. В текущей версии
|
|||
|
реализован алгоритм RSA с длиной ключа от 1024 до 16384 бит. В
|
|||
|
будущих версиях планируется добавление других алгоритмов,
|
|||
|
основанных на ECC, а также схем, совмещающих симметричные и
|
|||
|
асимметричные шифры.</p>
|
|||
|
|
|||
|
<p>Используемый алгоритм уникален для каждого продукта. Ключи,
|
|||
|
созданные с одним алгоритмом, не подойдут к другому, поэтому
|
|||
|
смена алгоритмов после создания хоть одной лицензии не
|
|||
|
допускается. Модуль защиты, располагающийся в защищаемой
|
|||
|
программе, "знает" каким алгоритмом должен быть зашифрован
|
|||
|
серийный номер и не примет ключ, созданный другим алгоритмом или
|
|||
|
тем же алгоритмом, но с другими параметрами (скажем, с другой
|
|||
|
длиной ключа).</p>
|
|||
|
|
|||
|
<h3>Алгоритм RSA</h3>
|
|||
|
|
|||
|
<p>Шифрование серийного номера алгоритмом RSA происходит по
|
|||
|
следующей схеме:</p>
|
|||
|
|
|||
|
<ul>
|
|||
|
<li><strong>Добавление случайных данных в начало
|
|||
|
номера</strong> - метод основывается на RFC2313, однако
|
|||
|
реализация немного отличается от описаной там. В начало
|
|||
|
серийного номера добавляютя байты: 00 02 NN...NN 00, где NN..NN
|
|||
|
- от 8 до 16 случайных ненулевых байт. Количество байт
|
|||
|
выбирается случайным, однако принимается во внимание длина
|
|||
|
серийного номера и максимальная вместительность ключа.</li>
|
|||
|
|
|||
|
<li><strong>Добавление случайных данных в конец номера</strong>
|
|||
|
- окончательное количество байт в серийном номере должно
|
|||
|
равняться количеству бит в ключах алгоритма, деленному на 8.
|
|||
|
Серийный номер дополняется до этого числа байт случайными
|
|||
|
данными. В результате получается следующий формат серийного
|
|||
|
номера: 00 02 NN..NN 00 DD..DD MM..MM, где NN - набор случайных
|
|||
|
ненулевых байтов, DD - исходный серийный номер, MM -набор
|
|||
|
случайных байтов (в т.ч. и нулевых). Суммарная длина
|
|||
|
последовательности должна равняться количеству бит,
|
|||
|
применяемому в алгоритме, деленному на 8.</li>
|
|||
|
|
|||
|
<li><strong>Шифрование</strong> - производится по стандатной
|
|||
|
схеме, реализованной во многих библиотеках, работающих с
|
|||
|
большими числами. Генератор на PHP содержит всю необходимую
|
|||
|
информацию в открытом виде.</li>
|
|||
|
|
|||
|
<li><strong>Упаковка</strong> - полученный после шифрования
|
|||
|
набор байт кодируется в base-64 - это и есть серийный номер,
|
|||
|
который отправляется покупателю.</li>
|
|||
|
</ul><br />
|
|||
|
<br />
|
|||
|
<br />
|
|||
|
<br />
|
|||
|
<br />
|
|||
|
<hr noshade="noshade" size="1" />
|
|||
|
|
|||
|
<div align="center">
|
|||
|
© 2006-2015 Copyright VMProtect Software
|
|||
|
</div>
|
|||
|
</body>
|
|||
|
</html>
|