RU2111620C1 - Method for encrypting data units - Google Patents
Method for encrypting data units Download PDFInfo
- Publication number
- RU2111620C1 RU2111620C1 RU97104755A RU97104755A RU2111620C1 RU 2111620 C1 RU2111620 C1 RU 2111620C1 RU 97104755 A RU97104755 A RU 97104755A RU 97104755 A RU97104755 A RU 97104755A RU 2111620 C1 RU2111620 C1 RU 2111620C1
- Authority
- RU
- Russia
- Prior art keywords
- encryption
- type
- binary
- binary vector
- sub
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 239000013598 vector Substances 0.000 claims abstract description 74
- 239000000126 substance Substances 0.000 abstract 1
- 230000004048 modification Effects 0.000 description 23
- 238000012986 modification Methods 0.000 description 23
- 238000006243 chemical reaction Methods 0.000 description 21
- 125000004122 cyclic group Chemical group 0.000 description 10
- 230000015572 biosynthetic process Effects 0.000 description 7
- 230000007423 decrease Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 239000002131 composite material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 208000035126 Facies Diseases 0.000 description 1
- 235000018936 Vitellaria paradoxa Nutrition 0.000 description 1
- 230000001154 acute effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Landscapes
- Storage Device Security (AREA)
Abstract
Description
Изобретение относится к области электросвязи и вычислительной техники, а конкретнее к области криптографических способов и устройств для шифрования сообщений (информации). В совокупности признаков заявляемого способа используются следующие термины:
секретный ключ (или пароль) представляет из себя комбинацию битов, известную только законному пользователю;
шифрключ (ключ шифрования) представляет из себя комбинацию битов, используемую при шифровании информационных сигналов данных; шифрключ является сменным элементом шифра и используется для преобразования данного сообщения или данной совокупности сообщений; шифрключ является известным только законному пользователю или может быть выработан по детерминированным процедурам по паролю;
шифр представляет собой совокупность элементарных шагов преобразования входных данных с использованием шифрключа; шифр может быть реализован в виде программы для ЭВМ или в виде отдельного устройства;
подключ представляет собой часть шифрключа, используемую на отдельных элементарных шагах шифрования;
расписание использования шифрключа (или подключей) представляет собой последовательность использования подключей в процессе шифрования;
шифрование есть процесс, реализующий некоторый способ преобразования данных с использованием шифрключа, переводящий данные в криптограмму, представляющую собой псевдослучайную последовательность знаков, из которой получение информации без знания шифрключа практически невыполнимо;
дешифрование есть процесс, обратный процедуре шифрования; дешифрование обеспечивает восстановление информации по криптограмме при знании шифрключа;
криптостойкость является мерой надежности защиты информации и представляет собой трудоемкость, измеренную в количестве элементарных операций, которые необходимо выполнить для восстановления информации по криптограмме при знании алгоритма преобразования, но без знания шифрключа;
криптоаналитик - лицо, пытающееся восстановить информацию по шифртексту без знания ключа шифрования.The invention relates to the field of telecommunications and computer technology, and more particularly to the field of cryptographic methods and devices for encrypting messages (information). In the aggregate of the features of the proposed method, the following terms are used:
the secret key (or password) is a combination of bits known only to a legitimate user;
cipher key (encryption key) is a combination of bits used in encryption of information data signals; the cipher key is a removable cipher element and is used to convert a given message or a given set of messages; the cipher key is known only to the legitimate user or can be generated by deterministic password procedures;
a cipher is a set of elementary steps for converting input data using a cipher key; the cipher can be implemented as a computer program or as a separate device;
a subkey is a part of a cryptographic key used in individual elementary encryption steps;
a cryptographic key (or subkey) usage schedule is a sequence of subkey usage in the encryption process;
encryption is a process that implements some way of converting data using a cryptographic key, converting data into a cryptogram, which is a pseudo-random sequence of characters from which obtaining information without knowing the cryptographic key is practically impossible;
decryption is the opposite of encryption; decryption provides recovery of information from the cryptogram with knowledge of the cipher key;
cryptographic strength is a measure of the reliability of information protection and represents the complexity, measured in the number of elementary operations that must be performed to recover information from the cryptogram with knowledge of the conversion algorithm, but without knowledge of the cipher key;
cryptanalyst - a person trying to recover information on ciphertext without knowing the encryption key.
двоичный вектор - это некоторая последовательность нулевых и единичных битов, например 101101011; конкретная структура двоичного вектора может быть интерпретирована как двоичное число, если считать, что позиция каждого бита соответствует двоичному разряду, т.е. двоичному вектору может быть сопоставлено численное значение, которое определяется однозначно структурой двоичного вектора;
машинный код программы - последовательность нулевых и единичных битов, интерпретируемая как последовательность машинных команд и непосредственно управляющая работой вычислительного устройства, например микропроцессора, по выполнению заданного алгоритма преобразования данных.a binary vector is a sequence of zero and one bits, for example 101101011; the specific structure of the binary vector can be interpreted as a binary number, if we assume that the position of each bit corresponds to a binary digit, i.e. a binary vector can be associated with a numerical value, which is determined uniquely by the structure of the binary vector;
program machine code is a sequence of zero and single bits, interpreted as a sequence of machine instructions and directly controlling the operation of a computing device, such as a microprocessor, to execute a given data conversion algorithm.
Известны способы блочного шифрования данных: стандарт США DES (Деффи У., Хеллмэн М. Э. Защищенность и имитостойкость. Введение в криптографию. - ТИИЭР, 1979 т. 67, N 3, с. 87-89); шифр FEAL-1 и криптоалгоритм B-Crypt (Мафтик С. Механизмы защиты в сетях ЭВМ.- М.: Мир, 1993, с. 49-52); Российский стандарт шифрования (Стандарт СССР ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования). Known methods of block data encryption: US standard DES (Deffi W., Hellman M. E. Security and imitation resistance. Introduction to cryptography. - TIIER, 1979 v. 67, No. 3, pp. 87-89); the FEAL-1 cipher and the B-Crypt cryptographic algorithm (Maftik S. Protection mechanisms in computer networks - M .: Mir, 1993, p. 49-52); The Russian encryption standard (USSR Standard GOST 28147-89. Information processing systems. Cryptographic protection. Cryptographic conversion algorithm).
В известных способах шифрование блоков данных выполняют путем формирования ключа шифрования в виде совокупности подключей, разбиения преобразуемого блока данных на подблоки и поочередного изменения последних с помощью операций подстановки и перестановки, а также арифметических операций, выполняемых над текущим подблоком и текущим подключом. In known methods, encryption of data blocks is performed by forming an encryption key in the form of a set of subkeys, splitting the converted data block into subblocks and changing the latter one by one using substitution and permutation operations, as well as arithmetic operations performed on the current subblock and current subkey.
Однако в известных способах-аналогах процедуры шифрования одинаковы для всех пользователей, и стойкость шифрующего преобразования обеспечивается только секретностью ключа шифрования. Тот факт, что алгоритм шифрования является предопределенным, позволяет криптоаналитику детально исследовать статистические свойства используемых процедур шифрования, выявить характерные особенности алгоритма шифрования и использовать их для раскрытия шифрключей. Например, криптоаналитик имеет возможность эффективно применять дифференциальный криптоанализ (Berson T.A. Differential Cryptanalysis Mod 232 with application to MD5. - EUROCRYPT'92. Hungary, May 24-28, 1992, Proceedings, p. 67-68).However, in the known analogous methods, the encryption procedures are the same for all users, and the strength of the encryption conversion is ensured only by the secrecy of the encryption key. The fact that the encryption algorithm is predetermined allows the cryptanalyst to study in detail the statistical properties of the encryption procedures used, to identify the characteristic features of the encryption algorithm and use them to reveal cryptographic keys. For example, a cryptanalyst has the ability to effectively apply differential cryptanalysis (Berson TA
Наиболее близким по своей технической сущности к заявляемому способу блочного шифрования является способ, описанный в патенте США N 5222139 от 22.06.93 г. , в котором для противодействия наиболее сильным способам криптоанализа, которые основаны на предварительном анализе свойств конкретных наборов шифрующих процедур, совокупность используемых процедур шифрования (составляющих уникальный для данного пользователя алгоритм шифрования) выбирается в зависимости от секретного ключа пользователя. Криптоаналитику являются известными правила формирования алгоритма шифрования, однако ему неизвестен секретный ключ пользователя, а следовательно, является неизвестной и конкретная модификация алгоритма шифрования, сформированного в зависимости от секретного ключа. The closest in technical essence to the claimed method of block encryption is the method described in US patent N 5222139 from 06.22.93, in which to counteract the most powerful methods of cryptanalysis, which are based on a preliminary analysis of the properties of specific sets of encryption procedures, the totality of the procedures used encryption (making up a unique encryption algorithm for a given user) is selected depending on the user's secret key. Cryptanalysts are aware of the rules for generating an encryption algorithm, however, they do not know the user's secret key, and therefore, the specific modification of the encryption algorithm generated depending on the secret key is also unknown.
Способ-прототип включает в себя формирование ключа шифрования в виде совокупности подключей, генерацию машинного кода программы шифрования, разбиение входного 64-битового блока данных на два 32-битовых подблока и поочередное преобразование подблоков. Способ-прототип реализуется на базе библиотеки заранее описанных шифрующих процедур, являющихся возможными фрагментами программы шифрования. Библиотека шифрующих процедур включает в себя таблицы операций подстановок (или операций замещения в терминах описания патента США N 5222139) и перестановок элементов преобразуемого блока данных, операции циклического смещения вправо и влево битов преобразуемых подблоков, а также операции поразрядного сложения по модулю два или сложения по модулю 232, выполняемых между подблоком и одним из подключей. Генерация машинного кода состоит в следующем. В зависимости от секретного ключа пользователя выбираются некоторые шифрующие процедуры, устанавливается очередность их выполнения и число циклов выполнения каждой из них. После этого генерируется машинный код, который соответствует выполнению установленного по секретному ключу алгоритма преобразования блоков данных. В наборах шифрующих процедур расписание использования подключей является фиксированным, т.е. в формируемых модификациях шифрующих процедур подключи входят в процедуры преобразования независимо от преобразуемых данных (для всех блоков данных на заданных шагах использования подключей выбираются одни и те же подключи). Задание непредопределенности (недетерминированности) алгоритма шифрования существенно повышает стойкость шифра. Чем больше число потенциально реализуемых модификаций процедур шифрования, тем выше стойкость шифра, поскольку выбор конкретной модификации является случайным (так как зависит от случайно выбираемого секретного ключа).The prototype method includes generating an encryption key in the form of a set of subkeys, generating a machine code for the encryption program, splitting the input 64-bit data block into two 32-bit subblocks, and alternately converting the subblocks. The prototype method is implemented on the basis of a library of previously described encryption procedures, which are possible fragments of the encryption program. The library of encryption procedures includes tables of substitution operations (or substitution operations in terms of the description of US Pat. No. 5,222,139) and permutations of elements of a transformable data block, operations of cyclic right and left shift of bits of transformable subunits, and bitwise addition modulo two or
Однако способ-прототип имеет недостатки, а именно при программной реализации при числе возможных модификаций алгоритма шифрования более 109 он не обеспечивает высокой скорости шифрования, необходимой для построения программных систем защиты компьютерной информации, работающих в масштабе реального времени. Данный недостаток связан с тем, что в способе-прототипе число модификаций зависит от скорости шифрования: при скорости шифрования около 4 Мбит/с (для вычислительного комплекса HITTACHI Workstation 2050/32, являющегося более производительным по сравнению с ЭВМ на базе массового процессора Intel 486/100) число потенциально возможных модификаций составляет около 1019. Повышение скорости шифрования может быть достигнуто сокращением числа последовательно выполняемых составных шифрующих процедур, однако уменьшение их числа приводит к снижению неопределенности в выборе модификации алгоритма шифрования. При увеличении скорости, например, до 8 Мбит/с число возможных модификаций составляет всего около 109, т.е. вклад того фактора, что алгоритм шифрования не является предопределенным, в стойкость шифра резко падает.However, the prototype method has drawbacks, namely, in software implementation, with the number of possible modifications of the encryption algorithm more than 10 9, it does not provide the high encryption speed necessary to build software systems for protecting computer information operating in real time. This drawback is due to the fact that in the prototype method the number of modifications depends on the encryption speed: at an encryption speed of about 4 Mbps (for the HITTACHI Workstation 2050/32 computer complex, which is more efficient compared to computers based on the Intel 486 / mass processor 100) the number of potential modifications is about 10 19 . An increase in the encryption speed can be achieved by reducing the number of sequentially executed composite encryption procedures, however, a decrease in their number leads to a decrease in uncertainty in the choice of modification of the encryption algorithm. With an increase in speed, for example, up to 8 Mbps, the number of possible modifications is only about 10 9 , i.e. the contribution of the fact that the encryption algorithm is not predetermined sharply decreases in the strength of the cipher.
Цель изобретения - разработка способа блочного шифрования данных, обеспечивающего повышение скорости шифрования при числе потенциально реализуемых неэквивалентных модификаций алгоритма шифрования более 1020.The purpose of the invention is the development of a method of block data encryption, providing an increase in encryption speed with the number of potentially implemented nonequivalent modifications of the encryption algorithm more than 10 20 .
Поставленная цель достигается тем, что в известном способе блочного шифрования, заключающемся в формировании ключа шифрования в виде совокупности K подключей, генерировании машинного кода программы шифрования, разбиении блока данных на N подблоков и поочередном преобразовании подблоков, дополнительно формируют двоичные векторы двух типов. Выбирают номер l, где l = 1, 2, 3,..., K, подключа по структуре двоичного вектора первого типа и с помощью бинарной операции накладывают l-й подключ на двоичный вектор второго типа. После этого преобразуют очередной подблок (например, i-й подблок Bi, где i≤N) путем наложения на данный подблок преобразованного двоичного вектора второго типа.This goal is achieved by the fact that in the known method of block encryption, which consists in generating an encryption key in the form of a set of K subkeys, generating a machine code for the encryption program, dividing the data block into N subunits and alternately converting the subunits, two types of binary vectors are additionally generated. Choose the number l, where l = 1, 2, 3, ..., K, connecting the structure of the binary vector of the first type and using the binary operation, impose the lth subkey on the binary vector of the second type. After that, the next subblock is transformed (for example, the ith subblock B i , where i≤N) by overlaying the converted binary vector of the second type on this subblock.
Под формированием двоичного вектора первого типа понимается выделение в структуре подблока или в структуре двоичного вектора второго типа группы разрядов, численное значение которых берется в качестве номера подключа, накладываемого на подблок, или явное формирование двоичного вектора первого типа в отдельном регистре или ячейке памяти вычислительного устройства. Например, неявное формирование двоичного вектора первого типа заключается в следующем: подблок В имеет структуру {10110...11010011} и 8 младших двоичных разрядов, а именно двоичный вектор {11010011} используется в качестве номера выбираемого подключа без записи этого двоичного вектора в отдельный регистр или ячейку памяти. The formation of a binary vector of the first type means the selection in the structure of a subunit or in the structure of a binary vector of the second type of a group of bits whose numerical value is taken as the number of the subkey superimposed on the subunit, or the explicit formation of a binary vector of the first type in a separate register or memory cell of a computing device. For example, the implicit formation of a binary vector of the first type is as follows: subblock B has the structure {10110 ... 11010011} and 8 low-order bits, namely the binary vector {11010011} is used as the number of the selected subkey without writing this binary vector to a separate register or memory cell.
Могут быть использованы следующие три варианта формирования двоичного вектора первого типа:
1. Двоичный вектор первого типа формируют по структуре j-го подблока Bj, где 1 ≤ j ≤ N. Например, используют значение восьми младших разрядов в качестве номера выбираемого подключа;
2. Двоичный вектор первого типа формируют по структуре двоичного вектора второго типа. Например, вычисляют значение l = (V mod 28), где операция mod A обозначает остаток от деления численного значения двоичного вектора второго типа V на число A. Значение l используют в качестве номера выбираемого подключа;
3. Двоичный вектор первого типа формируют по структуре j-го подблока Bj, где 1 ≤ j ≤ N, и по значению номера подключа, наложенного на подблок на предыдущем шаге наложения. Например, в качестве номера выбираемого подключа используют число, получаемое в результате наложения на номер l подключа, наложенного на предыдущем шаге наложения на подблок, значения остатка от деления значения Bj на 28 : l := l ⊕ (Bj mod 28).The following three options for generating a binary vector of the first type can be used:
1. The binary vector of the first type is formed according to the structure of the j-th subblock B j , where 1 ≤ j ≤ N. For example, use the value of the eight least significant bits as the number of the selected subkey;
2. The binary vector of the first type is formed according to the structure of the binary vector of the second type. For example, calculate the value l = (V mod 2 8 ), where the operation mod A denotes the remainder of dividing the numerical value of the binary vector of the second type V by the number A. The value l is used as the number of the selected subkey;
3. The binary vector of the first type is formed by the structure of the j-th subblock B j , where 1 ≤ j ≤ N, and by the value of the number of the subkey superimposed on the sub-block at the previous superposition step. For example, as the number of the selected subkey, use the number obtained by superimposing on the number l of the subkey superimposed on the sub block at the previous step, the remainder of dividing the value of B j by 2 8 : l: = l ⊕ (B j mod 2 8 ) .
Под формированием двоичного вектора второго типа понимается явное формирование двоичного вектора второго типа в отдельном регистре или ячейке памяти вычислительного устройства. The formation of a binary vector of the second type means the explicit formation of a binary vector of the second type in a separate register or memory cell of a computing device.
Могут быть использованы следующие два варианта формирования двоичного вектора второго типа:
1. Двоичный вектор второго типа формируют по структуре подблока Bj, где j ≤ N. Например, выделяют 32-разрядный регистр для хранения значения двоичного вектора второго типа V, записывают в него некоторое начальное число, используя операцию поразрядного суммирования по модулю два (oplus), преобразуют значение V путем наложения подблока Bj на V : V := V ⊕ Bj. Возможен вариант, в котором структура подблока Bj предварительно записывается в дополнительную ячейку, соответствующую переменной G, после чего на V накладывают G : V := V ⊕ G;
2. Двоичный вектор второго типа формируют по структуре, которую он имел на предыдущем шаге наложения на подблок. Например, выделяют 32-разрядный регистр для хранения значения двоичного вектора второго типа V, записывают в него некоторое начальное число A: V := A. Используя операцию поразрядного суммирования по модулю два (oplus) накладывают на V подключ : V := V ⊕ . Затем накладывают V на подблок Bi : Bi := Bi ⊕ V. Структура, которую имел вектор V на этом шаге наложения на подблок, сохраняется и на V накладывают следующий подключ : V := V ⊕ . После наложения V на очередной подблок структура V опять сохраняется, на V накладывается очередной подключ и т.д. до завершения преобразования всех подблоков.The following two options for forming a binary vector of the second type can be used:
1. The binary vector of the second type is formed according to the structure of the subunit B j , where j ≤ N. For example, a 32-bit register is allocated to store the values of the binary vector of the second type V, some initial number is written into it using the bitwise summing operation modulo two (oplus ), convert the value of V by superimposing the subunit B j on V: V: = V ⊕ B j . A variant is possible in which the structure of the subunit B j is preliminarily written in an additional cell corresponding to the variable G, after which G is superimposed on V: V: = V ⊕ G;
2. The binary vector of the second type is formed according to the structure that it had at the previous step of superposition on the subblock. For example, a 32-bit register is allocated for storing the values of a binary vector of the second type V, some initial number A is written into it: V: = A. Using the bitwise summing operation modulo two (oplus) are applied to V subkey : V: = V ⊕ . Then V is superimposed onto the subunit B i : B i : = B i ⊕ V. The structure that the vector V had at this step of superimposing on the subunit is preserved and the next subconnect is applied to V : V: = V ⊕ . After V is superimposed on the next subblock, the V structure is again preserved, the next subkey is superimposed on V, etc. until the conversion of all sub-blocks is completed.
Перечисленная совокупность существенных признаков обеспечивает более высокую скорость шифрования при равном или большем числе возможных модификаций алгоритма шифрования благодаря следующему. Расписание использования подключей для каждого блока данных является непредопределенным и уникальным, что обеспечивает высокую стойкость ко всем известным способам криптоанализа, включая дифференциальный криптоанализ, при использовании даже простых арифметических операций, которые быстро выполняются микропроцессором. Смысл выбора подключа, который накладывается на подблок на текущем шаге, по специально формируемому двоичному вектору состоит в том, чтобы сделать выбор подключа непредопределенным для каждого шага преобразования подблоков. Это обеспечивает высокую стойкость шифрования при любых наборах операций, используемых для наложения подключей на подблоки, и поэтому позволяет произвольно модифицировать операции преобразования. При использовании такого механизма выборки подключей модифицирование алгоритма шифрования можно выполнить путем выбора конкретной совокупности операций преобразования подблоков в зависимости от секретного ключа пользователя. После формирования совокупности операций преобразования осуществляется генерирование машинного кода программы шифрования, соответствующей выполнению этих операций преобразования. При этом каждая возможная модификация алгоритма шифрования обладает высокой стойкостью к известным способам криптоанализа, поскольку для всех возможных модификаций алгоритма шифрования выборка подключей зависит от преобразуемого блока и от шифрключа. Непредопределенность для криптоаналитика выбора конкретной модификации и большое число модификаций делают практически невозможным предварительное исследование статистических свойств каждой из них. Этим обусловливается существенное дополнительное повышение стойкости шифра в целом. Заявляемый способ позволяет построить недетерминированные шифры с числом возможных модификаций алгоритма шифрования более 1020, при этом каждая модификация обеспечивает скорость шифрования не менее 20 Мбит/с.The listed set of essential features provides a higher encryption speed with an equal or greater number of possible modifications of the encryption algorithm due to the following. The subkey usage schedule for each data block is undefined and unique, which provides high resistance to all known methods of cryptanalysis, including differential cryptanalysis, using even simple arithmetic operations that are quickly performed by the microprocessor. The meaning of choosing a subkey that is superimposed on a subblock at the current step, according to a specially generated binary vector, is to make the choice of subkey undefined for each step of the conversion of subblocks. This provides high encryption strength for any set of operations used to apply subkeys to subblocks, and therefore allows arbitrary modification of conversion operations. When using such a mechanism for selecting subkeys, the modification of the encryption algorithm can be performed by selecting a specific set of operations for converting subblocks depending on the user's secret key. After the aggregate of the conversion operations is generated, the machine code of the encryption program corresponding to the implementation of these conversion operations is generated. Moreover, each possible modification of the encryption algorithm is highly resistant to known methods of cryptanalysis, since for all possible modifications of the encryption algorithm, the selection of subkeys depends on the block being converted and on the cipher key. The uncertainty for the cryptanalyst of the choice of a particular modification and the large number of modifications make it practically impossible to preliminary study the statistical properties of each of them. This leads to a significant additional increase in the strength of the cipher as a whole. The inventive method allows you to build non-deterministic ciphers with the number of possible modifications of the encryption algorithm more than 10 20 , and each modification provides an encryption speed of at least 20 Mbit / s.
Отличительные признаки заявляемого способа совпадают с отличительными признаками способа шифрования (заявка N 97101622. - Молдовян А.А. и др. Способ криптографического преобразования блоков данных), однако использование этих признаков для получения технического результата, заключающегося в получении большого числа неэквивалентных модификаций алгоритма шифрования, каждая из которых обладает высокой скоростью, не является очевидной. The distinguishing features of the proposed method coincide with the distinctive features of the encryption method (application N 97101622. - Moldovyan AA, etc. The method of cryptographic conversion of data blocks), however, the use of these signs to obtain a technical result, which consists in obtaining a large number of nonequivalent modifications of the encryption algorithm, each of which has a high speed, is not obvious.
Возможность технической реализации заявляемого способа блочного шифрования поясняется следующим образом. The possibility of technical implementation of the proposed method of block encryption is explained as follows.
Заявляемый способ ориентирован на шифрование входных блоков с помощью не повторяющихся комбинаций подключей, а именно на задание зависимости расписания использования подключей от структуры блока данных и от ключа шифрования, т. е. на задание псевдослучайной выборки подключей. Этот способ позволяет получить высокую скорость шифрования при использовании ключей шифрования длиной, например, от 256 до 2050 байт. Формирование шифрключа можно осуществить непосредственно вводя его в шифрующую систему, например со съемного носителя информации. Формирование шифрключа можно также осуществить путем ввода пароля (или секретного ключа) с клавиатуры или с машинного носителя информации в генератор псевдослучайных чисел, получая на выходе шифрключ необходимого размера и дополнительную псевдослучайную последовательность, используемую для формирования необходимого набора операций преобразования. Известен ряд способов построения генераторов псевдослучайных чисел (Брикелл Э. Ф., Одлижко Э.М. Криптоанализ. Обзор новейших результатов. - ТИИЭР, 1988, т. 76, N 5, с. 87-89). The inventive method is focused on encryption of input blocks using non-repeating combinations of subkeys, namely, setting the dependence of the usage schedule of the subkeys on the structure of the data block and the encryption key, i.e., on specifying a pseudo-random selection of subkeys. This method allows to obtain a high encryption speed when using encryption keys with a length of, for example, from 256 to 2050 bytes. The encryption key can be formed directly by entering it into the encryption system, for example, from a removable storage medium. The encryption key can also be generated by entering a password (or secret key) from the keyboard or from a computer storage medium into a pseudo-random number generator, receiving at the output a cipher key of the required size and an additional pseudorandom sequence used to form the necessary set of conversion operations. A number of methods are known for constructing pseudorandom number generators (Brickell E.F., Odlizhko E.M. Cryptanalysis. Review of the latest results. - TIIER, 1988, v. 76, No. 5, pp. 87-89).
Дополнительную псевдослучайную последовательность можно использовать для формирования алгоритма шифрования следующим образом. Предварительно составляется программа-шаблон, где зарезервированы места, в которых предусмотрена возможность записи любой из некоторого набора операций (например, бинарных операций). Все зарезервированные места (под операции преобразования) нумеруют. Поочередно, начиная с первой, все операции настраивают в зависимости от значения элемента дополнительной псевдослучайной последовательности, имеющего номер, совпадающий с номером настраиваемой операции. Например, бинарная операция, используемая для наложения подключа на подблок, устанавливается как операция поразрядного суммирования по модулю два ( ⊕ ), если di mod 3 = 0, где di - значение соответствующего элемента дополнительной псевдослучайной последовательности, либо как операция суммирования по модулю 232 (+), если di mod 3 = 1, либо как операция вычитания по модулю 232 (-), если di mod 3 = 2. В процедурах настройки алгоритма дешифрования настраиваются операции, являющиеся обратными по отношению к соответствующим операциям, настраиваемым в алгоритме шифрования. Для этого бинарная операция в алгоритме дешифрования устанавливается как операция поразрядного суммирования по модулю два ( ⊕ ), если di mod 3 = 0, либо как операция вычитания по модулю 232 (-), если di mod 3 = 1, либо как операция суммирования по модулю 232 (+), если di mod 3 = 2. После того, как в программе шифрования, записанной на алгоритмическом языке (например, на языке СИ или Паскаль), установлены операции преобразования во всех зарезервированных местах, генерируется машинный код, соответствующий программе шифрования, используя, например, транслятор, преобразующий программу, составленную на алгоритмическом языке, в последовательность машинных команд. Шифрключ и машинный код программы шифрования записываются в оперативную память ЭВМ (или специализированного шифрующего устройства) и находятся там постоянно в течение всего времени работы данного пользователя, выполняя преобразование поступающих для шифрования блоков данных. Сложность процедур формирования ключа шифрования и генерирования машинного кода программы шифрования не влияет на скорость шифрования, поскольку эту процедуру выполняют однократно при идентификации пользователя по паролю в момент включения шифрующего устройства или вызова шифрующей программы.An additional pseudo-random sequence can be used to form the encryption algorithm as follows. A template program is preliminarily compiled, where places are reserved in which it is possible to record any of a certain set of operations (for example, binary operations). All reserved places (for conversion operations) are numbered. In turn, starting from the first, all operations are adjusted depending on the value of the element of the additional pseudo-random sequence having a number that matches the number of the custom operation. For example, the binary operation used to superimpose a subkey on a subblock is set as a bitwise summing operation modulo two (⊕) if d i mod 3 = 0, where d i is the value of the corresponding element of the additional pseudorandom sequence, or as a modulo 2 summing operation 32 (+) if d i mod 3 = 1, or as a subtraction operation modulo 2 32 (-) if d i mod 3 = 2. In the procedures for setting the decryption algorithm, operations are configured that are inverse to the corresponding operations that are customizable in the shea algorithm facies. For this, the binary operation in the decryption algorithm is set as a bitwise summation operation modulo two (⊕), if d i mod 3 = 0, or as a subtraction modulo 2 32 (-) operation, if d i mod 3 = 1, or as an operation summation modulo 2 32 (+), if d i mod 3 = 2. After the encryption program written in the algorithmic language (for example, SI or Pascal), the conversion operations are set in all reserved places, a machine code is generated corresponding to the encryption program, using, for example, a translator, pre forming a program compiled in an algorithmic language into a sequence of machine instructions. The encryption key and the machine code of the encryption program are recorded in the main memory of the computer (or specialized encryption device) and are there continuously for the entire time the user is working, converting the incoming data blocks for encryption. The complexity of the procedures for generating the encryption key and generating the machine code for the encryption program does not affect the encryption speed, since this procedure is performed once when the user is identified with a password at the moment the encryption device is turned on or the encryption program is called.
Заявляемый способ может быть реализован с помощью ЭВМ или вычислительного устройства, представленного блок-схемой на фиг. 1, где:
блок 1 - устройство ввода пароля пользователя;
блок 2 - блок формирования шифрключа и генерирования машинного кода программы шифрования (блок настройки шифра);
блок 3 - блок памяти устройства шифрования;
блок 4 - операционный блок устройства шифрования, содержащий три, четыре или более регистра;
блок 5 - устройство шифрования;
6 - шина передачи информационных сигналов пароля пользователя;
7 - шина передачи информационных сигналов сформированного шифрключа и информационных сигналов сформированного машинного кода программы шифрования;
8 - шина передачи информационных сигналов подключей и передачи информационных сигналов входных данных и информационных сигналов преобразуемых подблоков;
9 - шина адресации;
10 - шина передачи информационных сигналов машинного кода программы шифрования;
11 - шина ввода входных данных;
12 - шина вывода шифртекста.The inventive method can be implemented using a computer or a computing device, represented by the flowchart in FIG. 1, where:
block 1 - user password input device;
block 2 - block generating a cipher key and generating a machine code for the encryption program (cipher settings block);
block 3 - the memory block of the encryption device;
block 4 - the operational block of the encryption device containing three, four or more registers;
block 5 - encryption device;
6 - bus for transmitting information signals of the user password;
7 - a bus for transmitting information signals of the generated cipher key and information signals of the generated machine code of the encryption program;
8 - a bus for transmitting information signals of subkeys and for transmitting information signals of input data and information signals of converted subunits;
9 - addressing bus;
10 - bus for transmitting information signals of the machine code of the encryption program;
11 - input data input bus;
12 - ciphertext output bus.
Используя блок 1, вводят секретный ключ, информационный сигнал которого по шине 6 подают на вход блока 2. В блоке 2 формируют шифрключ и машинный код программы шифрования. Информационный сигнал шифрключа и информационный сигнал машинного кода программы шифрования по шине 7 передают в блок памяти 3. После этого устройство шифрования 5 содержит в памяти шифрключ и готово к выполнению операций шифрования. Данное инициализированное состояние устройства сохраняется в течение всего времени работы законного пользователя. Входной блок вводят по шине 11 в операционный блок 4 и затем по шине 8 - в блок памяти 3. Блок шифртекста считывается с шины 12. По шине 10 в операционный блок 4 передают коды машинных команд для выполнения процедур преобразования. Using
Входной блок данных представляют в виде совокупности подблоков, записанных по фиксированным адресам в блок памяти 3. Информационные сигналы подблока Bj по шине 8 вводят в первый регистр операционного блока 4 (в случае ЭВМ - в один из регистров микропроцессора). Во втором регистре формируют двоичный вектор первого типа, например записывая в него содержимое 8 младших разрядов подблока Bj. В четвертый регистр вводят подблок Bi. В третьем регистре блока 4 формируют двоичный вектор второго типа, например путем записи в регистр 1-го подключа. Информационные сигналы двоичного вектора первого типа подают на шину адресации 9 и тем самым задают выбор номера l текущего подключа Ql по значению двоичного вектора первого типа. На двоичный вектор второго типа накладывают с помощью бинарной операции подключ, расположенный по адресу, установленному во втором регистре, т.е. по значению двоичного вектора первого типа. Подблок Bi преобразуют путем наложения на него с помощью бинарной операции двоичного вектора второго типа, структура которого была предварительно преобразована наложением на него подключа. После этого переходят к преобразованию следующего подблока. На каждом новом шаге преобразования текущего подблока в третьем регистре аккумулируется значение еще одного подключа, выбираемого по текущей структуре подблока Bj. Под наложением понимается выполнение бинарной операции между двумя операндами, например подблоком Bi и двоичным вектором второго типа V, и замене исходного значения первого операнда на значение результата выполнения бинарной операции. Аналитически процедура наложения записывается в виде формулы Bi := Bi•V, где знак • обозначает бинарную операцию; знак := - операцию присваивания. Схема наложения показана на фиг.2, где 1 - подблок Bi с исходной структурой; 2 - двоичный вектор второго типа V; 3 - блок, выполняющий бинарную операцию •; 4 - подблок Bi с измененной структурой.The input data block is represented as a set of subblocks recorded at fixed addresses in the
В качестве бинарной операции могут быть использованы простые арифметические операции сложения (+) и вычитания (-) по модулю 232, поразрядного суммирования по модулю 2⊕, которые быстро исполняются микропроцессором. Могут быть использованы также более сложные бинарные операции, определенные на основе комбинирования перечисленных арифметических операций и быстро выполняемых унарных операций, т.е. операций над одним двоичным вектором. Например, в качестве унарной операции может быть применена операция циклического сдвига операнда X на d бит, обозначаемая выражением X>>d>>, где 1 ≤ d ≤ b-1, здесь b - размер операнда X в битах. Например, бинарную операцию • над 32-битовыми векторами можно определить в следующих вариантах, соответствующих формулам:
X • Y = (X>>11>>) ⊕ Y, (1)
X • Y = (X>>11>>) + Y, (2)
X • Y = (X>>1>>) ⊕ (Y>>21>>) (3)
На фиг.3 показана структура бинарной операции, задаваемой формулой (3), где блоки 1 и 2 - входные операнды X и Y, блок 3 выполняет операцию циклического сдвига на 1 бит вправо, блок 4 выполняет операцию циклического сдвига на 7 бит вправо, блок 5 выполняет операцию поразрядного суммирования по модулю два, блок 6 выполняет составную бинарную операцию •. Использование в заявляемом способе более сложных бинарных операций, задаваемых путем комбинирования указанных трех арифметических бинарных операций и унарной операции циклического сдвига вправо на число бит от 1 до 31, позволяет задать очень большое число реализуемых модификаций алгоритма шифрования. При этом обеспечивается высокая скорость шифрования, поскольку указанные операции сложения, вычитания, поразрядного суммирования по модулю два и операция циклического сдвига выполняются современными массовыми процессорами за малое число машинных тактов.As a binary operation, simple arithmetic operations of addition (+) and subtraction (-) modulo 2 32 , bitwise summation modulo 2⊕, which are quickly executed by the microprocessor, can be used. More complex binary operations can also be used, which are determined by combining the listed arithmetic operations and quickly performed unary operations, i.e. operations on one binary vector. For example, as a unary operation, the operation of cyclic shifting the operand X by d bits, denoted by the expression X >> d >> , where 1 ≤ d ≤ b-1, here b is the size of the operand X in bits, can be used. For example, the binary operation • on 32-bit vectors can be defined in the following variants corresponding to the formulas:
X • Y = (X >> 11 >> ) ⊕ Y, (1)
X • Y = (X >> 11 >> ) + Y, (2)
X • Y = (X >> 1 >> ) ⊕ (Y >> 21 >> ) (3)
Figure 3 shows the structure of the binary operation defined by formula (3), where
Формируемый двоичный вектор первого типа имеет структуру, зависящую от подблока Bj или от структуры двоичного вектора второго типа. В вариантах заявляемого способа, в которых задано формирование двоичного вектора первого типа, по структуре двоичного вектора второго типа используется вариант формирования двоичного вектора второго типа по структуре подблока Bj. Это задает зависимость выбора текущего подключа, накладываемого на подблок Bi, от структуры подблока Bj. Поскольку структура Bj в ходе преобразования изменяется в зависимости от выбираемых подключей, то это обусловливает псевдослучайный характер изменения номера подключа, выбираемого на текущем шаге выборки. Формируемый двоичный вектор второго типа имеет структуру, зависящую от совокупности подключей, выбранных на предыдущих шагах выборки, поэтому он принимает значения, отличные от значений подключей, причем двоичный вектор второго типа принимает число различных значений, равное примерно 232, если его длина составляет 32 бита, тогда как число подключей обычно составляет не более 212.The generated binary vector of the first type has a structure depending on the subblock B j or on the structure of the binary vector of the second type. In variants of the proposed method in which the formation of a binary vector of the first type is specified, the option of generating a binary vector of the second type according to the structure of the subunit B j is used according to the structure of the binary vector of the second type. This determines the dependence of the selection of the current subkey superimposed on subblock B i on the structure of subblock B j . Since the structure B j during the conversion varies depending on the selected subkeys, this determines the pseudo-random nature of the change in the number of the subkey selected at the current sampling step. The generated binary vector of the second type has a structure depending on the set of subkeys selected in the previous sampling steps, so it takes values different from the values of the subkeys, and the binary vector of the second type takes a number of different values equal to approximately 2 32 if its length is 32 bits , while the number of subkeys is usually not more than 2 12 .
Формирование двоичного вектора первого типа выполняется таким образом, что его структура зависит от структуры подблока Bj и поэтому задает зависимость выбора текущего подключа, накладываемого на подблок Bi от текущего состояния структуры подблока Bj. Это определяет зависимость выбора номеров текущих подключей от структуры входного блока данных и от ключа шифрования.The formation of the binary vector of the first type is performed in such a way that its structure depends on the structure of the subblock B j and therefore determines the dependence of the choice of the current subkey superimposed on the subblock B i on the current state of the structure of the subblock B j . This determines the dependence of the choice of numbers of current subkeys on the structure of the input data block and on the encryption key.
Предлагаемый способ блочного шифрования легко реализуем, например, на персональных ЭВМ и обеспечивает возможность создания на его основе скоростных программных модулей шифрования, что позволяет решить ряд острых проблем защиты компьютерной информации. The proposed method of block encryption is easily implemented, for example, on personal computers and provides the possibility of creating high-speed encryption software modules on its basis, which allows solving a number of acute problems of protecting computer information.
Пример 1. Данный пример относится к реализации блока настройки и представлен следующим алгоритмом, в котором используется заранее оговоренная последовательность 16-битовых слов {Zj}, где j = 0, 1, 2,..., 511, которая предполагается известной всем, в том числе и криптоаналитику.Example 1. This example relates to the implementation of the tuner and is presented by the following algorithm, which uses a predetermined sequence of 16-bit words {Z j }, where j = 0, 1, 2, ..., 511, which is supposed to be known to everyone, including cryptanalysts.
Алгоритм 1: формирование шифрключа и настройка операций преобразования. Algorithm 1: generating a cipher key and setting up conversion operations.
ВХОД: Пароль произвольной длины. LOGIN: Password of arbitrary length.
1. Установить значение числа раундов шифрования R. Повторить пароль несколько раз до получения последовательности длиной 1024 байт: {Pj}, j = 0, 1, 2, . . ., 511, где Pj - 16-битовое представление информационных сигналов соответствующей пары знаков пароля.1. Set the value of the number of rounds of encryption R. Repeat the password several times until a sequence of 1024 bytes is received: {P j }, j = 0, 1, 2,. . ., 511, where P j is a 16-bit representation of the information signals of the corresponding pair of password characters.
2. Вычислить управляющую последовательность: {Hj} = {Zj ⊕ Pj}, установить счетчик r = 1 и определить {Rj} = {Pj}, j = 0, 1, 2,..., 511.2. Calculate the control sequence: {H j } = {Z j ⊕ P j }, set the counter r = 1 and determine {R j } = {P j }, j = 0, 1, 2, ..., 511.
3. Установить счетчик i = 1 и вычислить начальные значения переменных G, Y, U:
G0 = (P1 - P9 mod 216, U0 = P11 ⊕ P18, Y0 = (P21 + P36) mod 216.3. Set the counter i = 1 and calculate the initial values of the variables G, Y, U:
G 0 = (P 1 - P 9 mod 2 16 , U 0 = P 11 ⊕ P 18 , Y 0 = (P 21 + P 36 )
4. Вычислить текущие значения переменных m, n, Y и U
mi = Ui-1 mod 29, ni = Yi-1 mod 29,
Yi = [(Yi-1 ⊕ Pi-1 + ] mod 216,
Ui = {[Ui-1 + (Pi-1 div 27)] mod 216} ⊕ .4. Calculate the current values of the variables m, n, Y and U
m i = U i-1 mod 2 9 , n i = Y i-1 mod 2 9 ,
Y i = [(Y i-1 ⊕ P i-1 + ]
U i = {[U i-1 + (P i-1 div 2 7 )] mod 2 16 } ⊕ .
5. Выполнить преобразование
Gi = {[(Pi-1 ⊕ Yi)>>r>>) + Gi-1] mod 216} ⊕ Ui.5. Perform the conversion
G i = {[(P i-1 ⊕ Y i ) >> r >> ) + G i-1 ] mod 2 16 } ⊕ U i .
6. Сохранить значение L
7. Если i < 512, то прирастить i и перейти к п. 4. 7. If i <512, then increment i and go to
8. Если r < 7, то прирастить r, определить {Rj} = { L
9. Определить 2048-байтовую последовательность {Bl} : Bl = L
10. Для индексов f = 0, 1, 2,..., 31 вычислить
df = b
где
знак обозначает конкатенацию (присоединение) двоичных векторов.10. For indices f = 0, 1, 2, ..., 31, calculate
d f = b
Where
sign denotes the concatenation (joining) of binary vectors.
11. Представить последовательность { df}, f = 0, 1, 2,..., 31, в виде последовательности 16-битовых слов { Dl} , l = 0, 1, 2,..., 1023, где
12. Построить последовательность {Ql}: {Ql} = {Dl ⊕ Pl} для l = 0, 1, 2, ..., 511, и {Ql} = {Dl ⊕ Pl-512} для l = 512, 513,..., 1023.11. Represent the sequence {d f }, f = 0, 1, 2, ..., 31, in the form of a sequence of 16-bit words {D l }, l = 0, 1, 2, ..., 1023, where
12. Construct the sequence {Q l }: {Q l } = {D l ⊕ P l } for l = 0, 1, 2, ..., 511, and {Q l } = {D l ⊕ P l-512 } for l = 512, 513, ..., 1023.
13. Построить шифрключ { qh}, h = 0, 1, 2,..., 2050; q2l = Ql mod 28; q2l+1 = Ql div 28, l = 0, 1, 2,..., 1023; q2048 = L
14. Если L
14. If L
15. Если L
16. Если f < 12R, то прирастить f и перейти к п. 14.15. If L
16. If f <12R, then increment f and go to step 14.
17. Установить индекс h = 1. 17. Set the index h = 1.
18. Задать число сдвигаемых битов в операциях циклического сдвига вправо > uh > и влево < uh <: uh = Lh+100 mod 25.18. Set the number of bits to be shifted in cyclic shift operations to the right> u h > and to the left <u h <: u h = L h + 100 mod 2 5 .
19. Если uh = 0, то uh := h mod 25.19. If u h = 0, then u h : =
20. Если h < 6R, то прирастить h и перейти к шагу 18. 20. If h <6R, then increment h and go to step 18.
21. СТОП. 21. STOP.
ВЫХОД: 1. Шифрключ {qh}, h = 0, 1, 2, ..., 2050.EXIT: 1. Encryption key {q h }, h = 0, 1, 2, ..., 2050.
2. Набор настроенных операций > uh >, < uh <, └f┘ и ┌f┐.
В шаблоне программы шифрования зарезервированы пронумерованные позиции └f┘, , где f - порядковый номер, под бинарные операции преобразования и пронумерованные позиции под операции циклического сдвига вправо > uh >, где h - порядковый номер. Причем в шаблоне программы шифрования зарезервированные позиции пронумерованы последовательно, начиная с начала шаблона программы в сторону его конца. В шаблоне программы дешифрования зарезервированные позиции под бинарные операции ┌f┐ и операции циклического сдвига влево < uh < пронумерованы в обратном порядке, начиная с конца шаблона программы дешифрования. Шаблон программы дешифрования содержит все процедуры шаблона программы шифрования, но заданы они в обратном порядке. Шифрующая и соответствующая ей дешифрующая программа составляют единую криптографическую программу.2. A set of configured operations> u h >, <u h <, └ f ┘ and ┌ f ┐ .
In the encryption program template, numbered positions └ f ┘ , where f is the serial number, for binary conversion operations and numbered positions for the cyclic right shift operations> u h > are reserved, where h is the serial number. Moreover, in the encryption program template, the reserved positions are numbered sequentially, starting from the beginning of the program template towards its end. In the decryption program template, the reserved positions for binary operations ┌ f ┐ and the cyclic left shift operations <u h <are numbered in the reverse order, starting from the end of the decryption program template. The decryption program template contains all the procedures of the encryption program template, but they are specified in the reverse order. The encryption program and its corresponding decryption program constitute a single cryptographic program.
После того как в зарезервированных позициях шаблона криптографической программы установлены конкретные операции преобразования, осуществляется запуск транслятора команд с алгоритмического языка на язык машинных команд и, таким образом, завершается генерирование кода программы шифрования. Машинный код программы шифрования записывается в оперативную память ЭВМ, которая под его управлением выполняет шифрование блоков данных по мере их поступления для преобразования. Процедуры шифрования и ключ шифрования сформированы в зависимости от секретного ключа (пароля) пользователя, т.е. являются уникальными, что обеспечивает высокую сложность криптоанализа. After specific conversion operations are established in the reserved positions of the cryptographic program template, the command translator is launched from the algorithmic language to the machine command language and, thus, the encryption program code generation is completed. The machine code of the encryption program is recorded in the main memory of the computer, which under his control performs the encryption of data blocks as they are received for conversion. The encryption procedures and the encryption key are generated depending on the user's secret key (password), i.e. are unique, which provides high complexity of cryptanalysis.
Возможны также вариант предварительного формирования шаблона машинного кода и запись его в оперативную память. В этом случае после записи шаблона машинного кода программы шифрования специальная программа настройки операций определяет адреса, по которым записаны коды операций, подлежащих модифицированию. В этом варианте генерации машинного кода программы шифрования пункт 14 означает: при выполнении указанного в нем соотношения записать информационные сигналы кода машинной операции ⊕ в оперативную память по адресу, соответствующему зарезервированным операциям └f┘ и ┌f┐.
Пункт 15 означает: если выполняются указанные условия, то записать информационные сигналы кодов машинных команд, соответствующих операциям + (mod 232) и - (mod 232), в оперативную память по адресу, соответствующему зарезервированным операциям └f┘ и ┌f┐.
Пункт 18 соответствует генерации информационных сигналов параметров, управляющих величиной циклического сдвига и их записи в оперативную память по соответствующим адресам машинного кода программы шифрования.There is also the option of pre-generating a machine code template and writing it to RAM. In this case, after writing the machine code template of the encryption program, a special operation configuration program determines the addresses to which the codes of operations to be modified are recorded. In this variant of generating the machine code of the encryption program, clause 14 means: when the relation specified therein is fulfilled, write information signals of the machine operation code ⊕ to the RAM at the address corresponding to the reserved operations └ f ┘ and ┌ f ┐ .
Clause 15 means: if the specified conditions are met, then write down the information signals of machine instruction codes corresponding to the operations + (mod 2 32 ) and - (mod 2 32 ) in the RAM at the address corresponding to the reserved operations └ f ┘ and ┌ f ┐ .
Clause 18 corresponds to the generation of information signals of parameters that control the magnitude of the cyclic shift and their recording in RAM at the corresponding addresses of the machine code of the encryption program.
В шифрключе, сформированном по алгоритму 1, можно выделить 2048 32-битовых подключа, используя формулу Ql = В этом случае, формируя двоичный вектор первого типа длиной 11 бит, можно задать более высокую степень неопределенности выбора текущего подключа. Возможны варианты формирования двоичных векторов длиной до 16 бит, которые позволяют повысить скорость шифрования в сравнении с приводимыми ниже примерами на 70%, однако эти варианты имеют более ограниченное применение, поскольку требуют использования шифрключей длиной 64 кбайт. Оптимальным представляется использование шифрключей длиной 259 - 2051 байт.In the cryptographic key generated by
Пример 2. Второй пример поясняет процедуры шифрования. Входным сообщением является 512-байтовый блок, представленный как последовательность 128 32-битовых слов {Tj}, j = 0, 1, ..., 127.Example 2. The second example explains the encryption procedure. The input message is a 512-byte block, represented as a sequence of 128 32-bit words {T j }, j = 0, 1, ..., 127.
ВХОД: 512-байтовый блок данных {Bi}, i = 1, 2, 3,..., 128.INPUT: 512-byte data block {B i }, i = 1, 2, 3, ..., 128.
1. Установить счетчик числа раундов r = 1 и число раундов R = 4. 1. Set the counter for the number of rounds r = 1 and the number of rounds R = 4.
2. Установить счетчик s = 1, значение переменной G, начальное значение вектора первого типа l и начальные значения векторов второго типа U, V, Y: l = Q5 mod 211, U = Q1, V = Q2, Y = Q3, G = Q4.2. Set the counter s = 1, the value of the variable G, the initial value of the vector of the first type l and the initial values of the vectors of the second type U, V, Y: l = Q 5 mod 2 11 , U = Q 1 , V = Q 2 , Y = Q 3 , G = Q 4 .
3. Сформировать текущие значения двоичных векторов
4. Сформировать текущие значения двоичных векторов
5. Сформировать текущие значения двоичных векторов
6. Вычислить номер текущего преобразуемого подблока i = 129 - s, если r = 2, 4, или i = s, если r = 1, 3.3. Generate current values of binary vectors
4. Generate current values of binary vectors
5. Generate current values of binary vectors
6. Calculate the number of the current converted subunit i = 129 - s, if r = 2, 4, or i = s, if r = 1, 3.
7. Наложить на подблок двоичные вектора первого типа U и Y:
8. Преобразовать G: G := Bi.7. To impose on the subblock the binary vectors of the first type U and Y:
8. Convert G: G: = B i .
9. Наложить на подблок двоичный вектор первого типа V:
.9. To impose on the subblock the binary vector of the first type V:
.
10. Если s < 128, то прирастить s и перейти к шагу 3. 10. If s <128, then increment s and go to
11. Если r < R, то прирастить r и перейти к шагу 2. 11. If r <R, then increment r and go to
12. СТОП. 12. STOP.
ВЫХОД: 512-байтовый блок шифртекста. OUTPUT: 512-byte ciphertext block.
Число возможных модификаций составляет более I > 1014R. Алгоритм дешифрования очевиден. Скорость шифрования составляет около 50/R Мбит/ с (для Intel 486/100). Параметр R задает число раундов шифрования. Допустимы значения R≥ 2. При R = 2 скорость шифрования составляет около 25 Мбит/с, а число модификаций алгоритма шифрования - более 1028.The number of possible modifications is more than I> 10 14R . The decryption algorithm is obvious. The encryption speed is about 50 / R Mbps (for Intel 486/100). The parameter R sets the number of rounds of encryption. Valid values are R≥ 2. For R = 2, the encryption speed is about 25 Mbit / s, and the number of modifications of the encryption algorithm is more than 10 28 .
Claims (6)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| RU97104755A RU2111620C1 (en) | 1997-04-02 | 1997-04-02 | Method for encrypting data units |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| RU97104755A RU2111620C1 (en) | 1997-04-02 | 1997-04-02 | Method for encrypting data units |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| RU2111620C1 true RU2111620C1 (en) | 1998-05-20 |
| RU97104755A RU97104755A (en) | 1998-08-27 |
Family
ID=20191235
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| RU97104755A RU2111620C1 (en) | 1997-04-02 | 1997-04-02 | Method for encrypting data units |
Country Status (1)
| Country | Link |
|---|---|
| RU (1) | RU2111620C1 (en) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| RU2251153C2 (en) * | 1998-09-11 | 2005-04-27 | Гизеке Унд Девриент Гмбх | Data carrier with protection from unsanctioned access |
| WO2006022566A1 (en) * | 2004-07-26 | 2006-03-02 | Stochasto Asa | Method for protecting computer systems against encrypted and polymorphous viruses |
| RU2284666C1 (en) * | 2005-06-21 | 2006-09-27 | Федеральное государственное унитарное предприятие "Воронежский научно-исследовательский институт связи" | Method for transmitting and receiving discontinuous information with pseudo-random signals |
| RU2498416C1 (en) * | 2012-05-15 | 2013-11-10 | Закрытое акционерное общество "Современные беспроводные технологии" | Encryption device defined in standard gost 28147-89 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0354774A2 (en) * | 1988-08-11 | 1990-02-14 | International Business Machines Corporation | Data cryptography using control vectors |
| US5222139A (en) * | 1990-11-02 | 1993-06-22 | Hitachi, Ltd. | Cryptographic method and apparatus |
| RU2007884C1 (en) * | 1991-11-22 | 1994-02-15 | Борис Владимирович Березин | Device for encrypting binary information |
| RU2030836C1 (en) * | 1991-12-26 | 1995-03-10 | Борис Владимирович Березин | Binary message digital signature encoding method |
| US5483598A (en) * | 1993-07-01 | 1996-01-09 | Digital Equipment Corp., Patent Law Group | Message encryption using a hash function |
-
1997
- 1997-04-02 RU RU97104755A patent/RU2111620C1/en active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0354774A2 (en) * | 1988-08-11 | 1990-02-14 | International Business Machines Corporation | Data cryptography using control vectors |
| US5222139A (en) * | 1990-11-02 | 1993-06-22 | Hitachi, Ltd. | Cryptographic method and apparatus |
| RU2007884C1 (en) * | 1991-11-22 | 1994-02-15 | Борис Владимирович Березин | Device for encrypting binary information |
| RU2030836C1 (en) * | 1991-12-26 | 1995-03-10 | Борис Владимирович Березин | Binary message digital signature encoding method |
| US5483598A (en) * | 1993-07-01 | 1996-01-09 | Digital Equipment Corp., Patent Law Group | Message encryption using a hash function |
Non-Patent Citations (1)
| Title |
|---|
| 2. Деффи У., Хеллмэн М.Э. Защищенность и имитостойкость. Введение в криптографию.-ТИИЭР, 1979, т.67, N 3, с.87-89. 3. Стандарт СССР ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования. 4. * |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| RU2251153C2 (en) * | 1998-09-11 | 2005-04-27 | Гизеке Унд Девриент Гмбх | Data carrier with protection from unsanctioned access |
| WO2006022566A1 (en) * | 2004-07-26 | 2006-03-02 | Stochasto Asa | Method for protecting computer systems against encrypted and polymorphous viruses |
| RU2284666C1 (en) * | 2005-06-21 | 2006-09-27 | Федеральное государственное унитарное предприятие "Воронежский научно-исследовательский институт связи" | Method for transmitting and receiving discontinuous information with pseudo-random signals |
| RU2498416C1 (en) * | 2012-05-15 | 2013-11-10 | Закрытое акционерное общество "Современные беспроводные технологии" | Encryption device defined in standard gost 28147-89 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3053106B2 (en) | Encryption processing device and decryption processing device | |
| US6097815A (en) | Method of and an apparatus for generating pseudo-random numbers | |
| RU2124814C1 (en) | Method for encoding of digital data | |
| RU2103829C1 (en) | Method for encoding information which is represented in binary code | |
| JP2002366029A (en) | Secure encryption for DPA | |
| CN110190951B (en) | Power consumption attack method and system for DES algorithm L register turning | |
| MX2011001228A (en) | Method for generating a cipher-based message authentication code. | |
| JP2011512562A (en) | Random encryption and decryption method for access and communication data | |
| EP1646174A1 (en) | Method and apparatus for generating cryptographic sets of instructions automatically and code generation | |
| RU2141729C1 (en) | Method for encrypting of binary data units | |
| RU2140714C1 (en) | Data block iterative ciphering technique | |
| RU2111620C1 (en) | Method for encrypting data units | |
| RU2103828C1 (en) | Method for block data encryption | |
| RU2007884C1 (en) | Device for encrypting binary information | |
| JP2003517745A (en) | Countermeasures in electronic components using secret-key cryptographic algorithms | |
| RU2106752C1 (en) | Method for ciphering of data blocks | |
| JP4470135B2 (en) | Pseudo random number generation system | |
| RU2188513C2 (en) | Method for cryptographic conversion of l-bit digital-data input blocks into l-bit output blocks | |
| Ledda et al. | Enhancing IDEA algorithm using circular shift and middle square method | |
| RU2186467C2 (en) | Method for iterative block encryption | |
| RU2106753C1 (en) | Process of cryptographic conversion of data blocks | |
| KR100494560B1 (en) | Real time block data encryption/decryption processor using Rijndael block cipher and method therefor | |
| KR100497130B1 (en) | Encryption method of binary code information | |
| RU2359415C2 (en) | Method for cryptographic transformation of digital data units | |
| Mohammed et al. | Efficient plain password cryptanalysis techniques |