You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Current »

Electronic keys work with hardware algorithms according to the following general scheme:  a block of data is sent from the protected application to the key (question to key), this sequence of data is then converted (encrypted or decrypted) by the key using the symmetric hardware algorithm. This produces a key response to be sent to the protected program.
Most often, a protection system developer for any application is limited to a very small number of possible questions and answers that are used for a short period of time. This makes the task of building table emulators much easier, since it takes very little time to track all requests and responses. This is one of the most common mistakes in developing protection systems.
To ensure effective fight against table emulators the number of various requests and responses should be as large as possible, and the time during which they will all be used should be measured in months.
The AES algorithm, with a key length of 128 bits, implemented in Guardant dongles symmetrically encrypt and decrypt information inside the key. This allows to significantly expand the capabilities of Guardant electronic keys and increase the security of the software due to the fact that the data for encryption can change dynamically.

Symmetric algorithm of the AES family 

Алгоритм AES (Advanced Encryption Standard) – это блочный симметричный алгоритм шифрования, принятый в качестве стандарта шифрования США. Длина секретного ключа AES составляет 16 байт (128 бит). Минимальная длина блока данных, преобразуемых алгоритмом за один цикл – 16 байт. У алгоритма имеются режимы, позволяющие шифровать блоки данных, кратные по длине 16 байтам, и блоки произвольной длины. Симметричность алгоритма означает использование одного и того же секретного ключа шифрования, как для прямого преобразования, так и для обратного.
Подробное описание алгоритма AES можно найти на сайте NIST: http://csrc.nist.gov/archive/aes/index.html

The AES algorithm (Advanced Encryption Standard) is a symmetric block cipher that can encrypt and decrypt digital information. is a specification for the encryption of electronic data established by the U.S. National Institute of Standards and Technology (NIST) 

The AES algorithm is capable of using cryptographic keys of 128, 192, and 256 bits to encrypt and decrypt data in blocks of 128 bits.

Режимы работы

Режим ECB

Режим «электронной кодовой книги». Это простейший режим работы блочного симметричного алгоритма. В режиме ECB каждый блок открытого текста, подаваемый на вход алгоритма, преобразуется с одним и тем же определителем в блок шифртекста. Поэтому преобразование 2-х одинаковых блоков даст идентичный результат.
Если длина блока данных превышает минимальную длину блока, он должен быть разбит на блоки, равные минимальной длине блока (16 байт). При необходимости, к последнему блоку нужно добавить недостающие байты. Сильно желательно, чтобы байты-заполнители не были постоянными. В качестве байтов-заполнителей можно использовать случайные числа. В этом случае последний закодированный блок требуется хранить полностью, вместе с зашифрованными байтами-заполнителями (а не отбрасывать эти байты). Иначе полезные байты данных из этого блока невозможно будет расшифровать.
Режим ECB подходит для шифрования небольших объемов данных, например, векторов инициализации, используемых в других режимах алгоритма или ключей шифрования других алгоритмов.

Режим CBC

Режим сцепления блоков по шифртексту. В режиме CBC, как и в ECB, каждый блок открытого текста преобразуется в блок шифртекста той же длины. Преобразование в режиме CBC для всех блоков осуществляется с одним и тем же ключом. Режим CBC чаще используется и лучше подходит для преобразования блоков данных, превышающих по длине минимальную длину блока.
Однако в отличие от ECB, преобразование двух одинаковых блоков открытого текста, находящихся в разных позициях исходного блока данных, не даст идентичного результата. Это осуществляется благодаря тому, что на каждом следующем шаге шифруется не сам блок, а его сумма по модулю 2 с предыдущим блоком шифртекста. Для получения первого зашифрованного блока используется сумма по модулю 2 первого зашифрованного блока и некоторого вектора инициализации IV. Значение IV должно быть сохранено для корректного обратного преобразования, но желательно, если оно будет защищено (например, зашифровано в режиме ECB).
Преобразование получается позиционно-зависимым, поскольку результат шифрования зависит не только от самого блока открытого текста, но и от предшествующего ему.
Обратное преобразование также производится блочно.
Суммарная длина исходного набора данных должна быть кратна минимальной длине блока. В противном случае, к последнему блоку нужно добавить байты-заполнители, так же, как и в режиме ECB.
Режим CBC можно использовать для вычисления надежных контрольных сумм, аутентификации и проверки подлинности данных. В качестве такой контрольной суммы используется последний блок шифртекста. Этот блок зависит от всех предыдущих блоков, а также от вектора инициализации, и вычисляется на основе секретного ключа алгоритма. Он не дает информации об исходных данных, но идентифицирует их практически однозначно. Подделать этот блок так же трудно, как подобрать ключ алгоритма.

Рекомендации по работе с вектором инициализации IV

Для корректного преобразования данных симметричным алгоритмом AES необходимо принимать во внимание что:

  • Вектор инициализации IV должен иметь одинаковые значения перед началом зашифрования и перед началом расшифрования
  • Необходимо сохранять значение вектора инициализации IV между обращениями к GrdFeatureEncrypt/GrdFeatureDecrypt при продолжении зашифрования/расшифрования больших блоков (больше 248 байт)
  • При шифровании данных типа разных записей БД или секторов диска, инициализировать IV этим номером записи/ сектора для того, чтобы каждая из них кодировалась всегда одинаково, а разные записи с одинаковыми значениями кодировались по-разному.
  • No labels