RU2188513C2 - Method for cryptographic conversion of l-bit digital-data input blocks into l-bit output blocks - Google Patents

Method for cryptographic conversion of l-bit digital-data input blocks into l-bit output blocks Download PDF

Info

Publication number
RU2188513C2
RU2188513C2 RU99125491/09A RU99125491A RU2188513C2 RU 2188513 C2 RU2188513 C2 RU 2188513C2 RU 99125491/09 A RU99125491/09 A RU 99125491/09A RU 99125491 A RU99125491 A RU 99125491A RU 2188513 C2 RU2188513 C2 RU 2188513C2
Authority
RU
Russia
Prior art keywords
binary vector
subblock
conversion
value
bit
Prior art date
Application number
RU99125491/09A
Other languages
Russian (ru)
Other versions
RU99125491A (en
Inventor
н А.А. Молдов
А.А. Молдовян
н Н.А. Молдов
Н.А. Молдовян
Original Assignee
Открытое акционерное общество "Московская городская телефонная сеть"
Молдовян Александр Андреевич
Молдовян Николай Андреевич
Государственное унитарное предприятие "Специализированный центр программных систем "Спектр"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Открытое акционерное общество "Московская городская телефонная сеть", Молдовян Александр Андреевич, Молдовян Николай Андреевич, Государственное унитарное предприятие "Специализированный центр программных систем "Спектр" filed Critical Открытое акционерное общество "Московская городская телефонная сеть"
Priority to RU99125491/09A priority Critical patent/RU2188513C2/en
Publication of RU99125491A publication Critical patent/RU99125491A/en
Application granted granted Critical
Publication of RU2188513C2 publication Critical patent/RU2188513C2/en

Links

Images

Abstract

FIELD: electric communications and computer engineering; cryptographic methods and devices for data encryption. SUBSTANCE: method involves division of data block into N≥2 subblocks, generation of at least one binary vector with respect to subblock value at each step, and transformation of subblock depending on binary vector structure; during next step of subblock conversion binary vector is generated depending on binary vector structure at subblock conversion preceding step. In addition subblock is altered by subjecting it to cyclic shift by number of bits equal to current value of binary vector; subblock is also transformed by way of substitution operation corresponding to substitution V-table. EFFECT: enhanced encryption stability in data block conversion and encryption conversion speed. 3 cl, 3 dwg

Description

Область техники
Изобретение относится к области электросвязи и вычислительной техники, а конкретнее к области криптографических способов и устройств для шифрования сообщений (информации).
Technical field
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).

Предшествующий уровень техники
В совокупности признаков заявляемого способа используются следующие термины:
- секретный ключ представляет собой двоичную информацию, известную только законному пользователю;
- криптографическое преобразование - это преобразование цифровой информации, которое обеспечивает влияние одного бита исходных данных на многие биты выходных данных, например, с целью защиты информации от несанкционированного чтения, формирования цифровой подписи, выработки кода обнаружения модификаций; одними из важных видов криптографических преобразований являются одностороннее преобразование, хэширование и шифрование;
- хэширование информации есть некоторый способ формирования так называемого хэш-кода, размер которого является фиксированным (обычно 128 бит) для сообщений любого размера; широко применяются способы хэширования, основанные на итеративных хэш-функциях с использованием блочных механизмов криптографического преобразования информации [см. Lai X., Massey J.L. Hash Functions Based on Block Ciphers/Workshop on the Theory and Applications of Cryptographic Techniques. EUROCRYPT'92, Hungary, May 24-28, 1992, Proceedings, p.53-66].
State of the art
In the aggregate of the features of the proposed method, the following terms are used:
- the secret key is binary information known only to a legitimate user;
- cryptographic conversion is the conversion of digital information that provides the influence of one bit of the source data on many bits of the output data, for example, to protect information from unauthorized reading, the formation of a digital signature, and the generation of a modification detection code; One of the important types of cryptographic transformations is one-way conversion, hashing and encryption;
- hashing information is some way of generating a so-called hash code, the size of which is fixed (usually 128 bits) for messages of any size; widely used hashing methods based on iterative hash functions using block mechanisms of cryptographic information conversion [see Lai X., Massey JL Hash Functions Based on Block Ciphers / Workshop on the Theory and Applications of Cryptographic Techniques. EUROCRYPT'92, Hungary, May 24-28, 1992, Proceedings, p. 53-66].

- шифрование есть процесс преобразования информации, который зависит от секретного ключа и преобразует исходный текст в шифртекст, представляющий собой псевдослучайную последовательность знаков, из которой получение информации без знания секретного ключа практически неосуществимо;
- дешифрование есть процесс, обратный процедуре шифрования; дешифрование обеспечивает восстановление информации по криптограмме при знании секретного ключа;
- шифр представляет собой совокупность элементарных шагов преобразования входных данных с использованием секретного ключа; шифр может быть реализован в виде программы для ЭВМ или в виде отдельного устройства;
- двоичный вектор - это некоторая последовательность нулевых и единичных битов, например 101101011; конкретная структура двоичного вектора может быть интерпретирована как двоичное число, если считать, что позиция каждого бита соответствует двоичному разряду, т.е. двоичному вектору может быть сопоставлено численное значение, которое определяется однозначно структурой двоичного вектора;
- криптоанализ - метод вычисления секретного ключа для получения несанкционированного доступа к зашифрованной информации или разработка метода, обеспечивающего доступ к зашифрованной информации без вычисления секретного ключа;
- одностороннее преобразование - это такое преобразование L-битового входного блока данных в L-битовый выходной блок данных, которое позволяет легко вычислить выходной блок по входному блоку, а вычисление входного блока, который бы преобразовывался в случайно выбранный выходной блок, является практически невыполнимой задачей;
- односторонняя функция - это функция, значение которой легко вычисляется по данному аргументу, однако вычисление аргумента по данному значению функции является вычислительно трудной задачей; односторонние функции реализуются как последовательность процедур одностороннего преобразования некоторого входного блока (аргумента), выходное значение которого принимается за значение функции;
- криптостойкость является мерой надежности защиты зашифрованной информации и представляет собой трудоемкость, измеренную в количестве элементарных операций, которые необходимо выполнить для восстановления информации по криптограмме при знании алгоритма преобразования, но без знания секретного ключа; в случае односторонних преобразований под криптостойкостью понимается сложность вычисления входного значения блока по его выходному значению;
- операции циклического сдвига, зависящие от преобразуемых подблоков или зависящие от двоичного вектора, - это операции циклического сдвига на число бит, задаваемое значением подблока или значением двоичного вектора; операции циклического сдвига влево (вправо) обозначаются знаком "<<<" (">>>"), например запись В1<<<В2 обозначает операцию циклического сдвига влево подблока B1 на число бит, равное значению двоичного вектора B2; подобные операции являются базовыми для шифра RC5 [R. Rlvest, The RC5 Encryption Algorithm/ Fast Software Encryption, Second International Workshop Proceedings (Leuven, Belgium, December 14-16, 1994), Lecture Notes in Computer Science, v. 1008, Springer-Verlag, 1995, pp.86-96];
- одноместная операция - это операция выполняемая над одним операндом (блоком данных или двоичным вектором); значение подблока после выполнения некоторой данной одноместной операции зависит только от его начального значения; примером одноместных операций являются операции циклического сдвига:
- двухместная операция - это операция, выполняемая над двумя операндами; результат выполнения некоторой данной двухместной операции зависит от значения каждого операнда; примером двухместных операций являются операции сложения, вычитания, умножения и др.
- encryption is the process of converting information that depends on the secret key and converts the source text into ciphertext, which is a pseudo-random sequence of characters from which it is practically impossible to obtain information without knowing the secret key;
- decryption is the opposite of the encryption process; decryption provides recovery of information from the cryptogram with the knowledge of the secret key;
- the cipher is a set of elementary steps for converting input data using a secret key; the cipher can be implemented as a computer program or as a separate device;
- a binary vector is a sequence of zero and unit 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;
- cryptanalysis - a method of calculating a secret key to obtain unauthorized access to encrypted information or developing a method that provides access to encrypted information without calculating a secret key;
- one-way conversion is the conversion of an L-bit input data block to an L-bit output data block, which makes it easy to calculate the output block from the input block, and computing an input block that would be converted to a randomly selected output block is an almost impossible task;
- a one-way function is a function whose value is easily calculated by a given argument, however, calculating an argument from a given function value is a computationally difficult task; one-way functions are implemented as a sequence of procedures for one-way conversion of some input block (argument), the output value of which is taken as the value of the function;
- cryptographic strength is a measure of the reliability of encrypted information protection and represents the complexity, measured in the number of elementary operations that must be performed to recover information from a cryptogram with knowledge of the conversion algorithm, but without knowledge of the secret key; in the case of one-sided transformations, cryptographic strength is understood as the complexity of calculating the input value of a block from its output value;
- cyclic shift operations, depending on the converted sub-blocks or depending on the binary vector, are the cyclic shift operations by the number of bits specified by the sub-block value or the value of the binary vector; operations of cyclic shift to the left (right) are indicated by the sign "<<<"(">>>"), for example, the record В 1 <<< В 2 denotes the operation of cyclic left shift of the sub-block B 1 by the number of bits equal to the value of the binary vector B 2 ; similar operations are basic for the RC5 cipher [R. Rlvest, The RC5 Encryption Algorithm / Fast Software Encryption, Second International Workshop Proceedings (Leuven, Belgium, December 14-16, 1994), Lecture Notes in Computer Science, v. 1008, Springer-Verlag, 1995, pp. 86-96];
- a single operation is an operation performed on one operand (data block or binary vector); the value of a subblock after performing some given unary operation depends only on its initial value; an example of unary operations are cyclic shift operations:
- a double operation is an operation performed on two operands; the result of performing some given double operation depends on the value of each operand; examples of double operations are the operations of addition, subtraction, multiplication, etc.

Известны способы блочного шифрования данных, см., например, стандарт США DES [National Bureau of Standards. Data Encryption Standard. Federal Information Processing Standards Publication 46, January 1977]. В данном способе шифрование блоков данных выполняют путем формирования секретного ключа, разбиения преобразуемого блока данных на два подблока L и R и поочередного изменения последних путем выполнения операции поразрядного суммирования по модулю два над подблоком L и двоичным вектором, который формируется как выходное значение некоторой функции F от значения подблока R. После этого блоки переставляются местами. Функция F в указанном способе реализуется путем выполнения операций перестановки и подстановки, выполняемых над подблоком R. Данный способ обладает высокой скоростью преобразований при реализации в виде специализированных электронных схем. Known methods for block encryption of data, see, for example, US standard DES [National Bureau of Standards. Data Encryption Standard. Federal Information Processing Standards Publication 46, January 1977]. In this method, the encryption of data blocks is performed by generating a secret key, dividing the converted data block into two subunits L and R and alternating the latter by performing bitwise summing operations modulo two over the subunit L and the binary vector, which is formed as the output value of some function F from values of the sub-block R. After that, the blocks are rearranged. The function F in the specified method is implemented by performing permutation and substitution operations performed on the sub-block R. This method has a high conversion speed when implemented in the form of specialized electronic circuits.

Однако известный способ-аналог использует секретный ключ малого размера (56 бит), что делает его уязвимым к криптоанализу на основе подбора ключа. Последнее связано с высокой вычислительной мощностью современных ЭВМ массового применения. However, the known analogue method uses a small secret key (56 bits), which makes it vulnerable to cryptanalysis based on key selection. The latter is associated with the high computing power of modern computers of mass application.

Наиболее близким по своей технической сущности к заявляемому способу криптографического преобразования L-битовых входных блоков цифровых данных в L-битовые выходные блоки является способ, описанный в работе [Kaliski B.S., Robshaw M. J. B. Fast Block Cipher Proposal/ Fast Software Encryption. Proceedings of the Cambridge Security Workshop. Lecture Notes in Computer Science, v. 809, Springer-Verlag, 1994, pp. 26-39; см. также B. Schneier, "Applied Cryptography". Second Eddition. John Wiley & Sons, Inc., New York, 1966, pp. 342-344]. Способ-прототип включает в себя формирование секретного ключа, разбиение входного 1024-байтового блока данных на 32-битовые подблоки В0, В1, В2. . .В255 и поочередное преобразование подблоков. Секретный ключ формируется в виде таблицы перестановки и упорядоченной последовательности из 2048 подключей Q0, Q1, Q2...Q2047, каждый из которых имеет длину 32 бит. Шифрование блока данных выполняется в виде четырех раундов преобразований. Один раунд шифрования заключается в следующем. В соответствии с таблицей перестановки, задаваемой секретным ключом, выполняется перестановка подблоков данных. Затем поочередно преобразуются все подблоки. Подблок, например подблок В1, преобразуют следующим путем. Формируется 32-битовый двоичный вектор V по значениям подблоков Bh, Bk, Bj, где h, i, j, k являются разными номерами, в соответствии с аналитическим выражением V = Вh + F(Bh,Bk,Bj)+Qq, где знаком "+" обозначена операция суммирования по модулю 232, q - номер текущего подключа. Номера h, i, j, k выбираются в зависимости от номера раунда шифрования и номера шага преобразования подблока. Сформированный двоичный вектор используется при преобразовании подблока Bi следующим образом. Выполняется операция поразрядного суммирования по модулю 2 над подблоком Bi и V и значение, получаемое после выполнения этой операции, присваивается подблоку Вi. Это записывается в виде соотношения Bi← Bi⊕ V, где знак "<--" обозначает операцию присваивания и знак "⊕" обозначает операцию поразрядного суммирования по модулю 2. После этого аналогичным способом выполняется преобразование другого подблока и т.д., пока не будут преобразованы все подблоки. Каждый новый шаг формирования 32-битового двоичного вектора выполняется независимо от значения двоичного вектора, сформированного на предыдущем шаге. В одном раунде шифрования индекс i принимает в некоторой очередности 256 различных значений, соответствующих всем номерам подблоков (от 0 до 255).The closest in technical essence to the claimed method of cryptographic conversion of L-bit input blocks of digital data into L-bit output blocks is the method described in [Kaliski BS, Robshaw MJB Fast Block Cipher Proposal / Fast Software Encryption. Proceedings of the Cambridge Security Workshop. Lecture Notes in Computer Science, v. 809, Springer-Verlag, 1994, pp. 26-39; see also B. Schneier, "Applied Cryptography". Second Eddition. John Wiley & Sons, Inc., New York, 1966, pp. 342-344]. The prototype method includes generating a secret key, splitting an input 1024-byte data block into 32-bit subblocks B 0 , B 1 , B 2 . . .B 255 and sequential conversion of subblocks. The secret key is formed in the form of a permutation table and an ordered sequence of 2048 subkeys Q 0 , Q 1 , Q 2 ... Q 2047 , each of which has a length of 32 bits. Data block encryption is performed in the form of four rounds of transformations. One round of encryption is as follows. In accordance with the permutation table specified by the secret key, the data subunits are rearranged. Then all sub-blocks are converted one by one. A subunit, for example a subunit B 1 , is transformed in the following way. A 32-bit binary vector V is formed from the values of the subblocks B h , B k , B j , where h, i, j, k are different numbers, in accordance with the analytical expression V = В h + F (B h , B k , B j ) + Q q , where the sign “+” denotes the summation operation modulo 2 32 , q is the number of the current subkey. The numbers h, i, j, k are selected depending on the number of the encryption round and the step number of the conversion of the subunit. The generated binary vector is used to convert the sub-block B i as follows. The bitwise summing operation of modulo 2 is performed on the subunit B i and V and the value obtained after performing this operation is assigned to the subunit B i . This is written in the form of the relation B i ← B i ⊕ V, where the sign "<-" denotes the assignment operation and the sign "⊕" denotes the bitwise summation operation modulo 2. After that, the other subunit is converted in the same way, etc., until all sub-blocks are converted. Each new step of generating a 32-bit binary vector is performed regardless of the value of the binary vector generated in the previous step. In one round of encryption, the index i takes in some order 256 different values corresponding to all the numbers of the subunits (from 0 to 255).

Данный способ обеспечивает высокую криптостойкость благодаря большой длине блока данных и использованию большого числа выполняемых операций преобразования, приходящихся на один подблок. This method provides high cryptographic strength due to the large length of the data block and the use of a large number of conversion operations per one sub-block.

Однако способ-прототип имеет недостатки, а именно, при программной реализации он не обеспечивает высокой скорости криптографического преобразования данных, необходимой для построения программных систем защиты компьютерной информации, работающих в масштабе реального времени. Например, для микропроцессора Pentium/200 скорость шифрования не превышает 6 Мбит/с. Этот недостаток связан с тем, что для обеспечения стойкости к дифференциальному криптоанализу требуется выполнять большое число операций преобразования, приходящихся на один бит входных данных. However, the prototype method has drawbacks, namely, in software implementation it does not provide the high speed cryptographic data conversion necessary to build software systems for protecting computer information operating in real time. For example, for the Pentium / 200 microprocessor, the encryption speed does not exceed 6 Mbps. This drawback is due to the fact that to ensure resistance to differential cryptanalysis, a large number of conversion operations per one bit of input data are required.

В основу изобретения положена задача разработать способ криптографического преобразования L-битовых входных блоков цифровых данных в L-битовые выходные блоки, в котором преобразование входных данных осуществлялось бы таким образом, чтобы обеспечивалось уменьшение числа операций преобразования, приходящихся на один бит входных данных, при одновременном обеспечении высокой стойкости к дифференциальному криптоанализу, благодаря чему повышается скорость шифрования. The basis of the invention is to develop a method of cryptographic conversion of L-bit input blocks of digital data into L-bit output blocks, in which the conversion of input data is carried out in such a way as to reduce the number of conversion operations per one bit of input data, while ensuring high resistance to differential cryptanalysis, which increases the encryption speed.

Раскрытие изобретения
Поставленная задача достигается тем, что в способе криптографического преобразования L-битовых входных блоков цифровых данных в L-битовые выходные блоки, заключающемся в разбиении блока данных на N≥2 подблоков, поочередном преобразовании подблоков путем формирования по меньшей мере одного двоичного вектора по значению подблока и изменения подблока с использованием двоичного вектора, новым согласно изобретению является то, что формирование двоичного вектора на последующем шаге преобразования подблока осуществляют в зависимости от структуры двоичного вектора на предыдущем шаге преобразования подблока.
Disclosure of invention
The problem is achieved in that in the method of cryptographic conversion of L-bit input blocks of digital data into L-bit output blocks, which consists in dividing the data block into N≥2 subblocks, alternately converting the subblocks by generating at least one binary vector from the value of the subblock and changing a subblock using a binary vector, a new one according to the invention is that the formation of a binary vector in the next step of converting a subblock is carried out depending on uktury binary vector in the preceding step of subblock conversion.

Благодаря такому решению обеспечивается лучшее рассеивание влияния битов входного блока данных на биты выходного блока, благодаря чему обеспечивается высокая стойкость к дифференциальному криптоанализу при одновременном уменьшении числа выполняемых операций преобразования, что и обеспечивает повышение скорости криптографического преобразования. Лучшее рассеивание обеспечивается за счет того, что биты подблоков, преобразованных на предшествующих шагах преобразования, влияют на ход преобразования текущего блока двояким образом: (1) непосредственно влияя на текущее значение двоичного вектора и (2) влияя на текущее значение двоичного вектора через значение двоичного вектора на предыдущих шагах преобразования. Thanks to this solution, the best dispersion of the influence of the bits of the input data block on the bits of the output block is ensured, which ensures high resistance to differential cryptanalysis while reducing the number of conversion operations, which ensures an increase in the speed of cryptographic conversion. The best dispersion is ensured by the fact that the bits of the subblocks converted in the previous steps of the conversion influence the conversion process of the current block in two ways: (1) directly affecting the current value of the binary vector and (2) affecting the current value of the binary vector through the value of the binary vector in the previous steps of the conversion.

Новым является также то, что формируют два двоичных вектора и один из них преобразуют с помощью операции циклического сдвига на число бит, равное значению второго двоичного вектора. Also new is the fact that two binary vectors are formed and one of them is transformed using the cyclic shift operation by the number of bits equal to the value of the second binary vector.

Благодаря такому решению обеспечивается дополнительное повышение криптостойкости преобразования блоков информации длиной L = 512, 1024, 2048, 4096 и 8192 бит, поскольку операции циклического сдвига такого типа являются нелинейными и задают более сложную функцию формирования двоичного вектора. Thanks to this solution, an additional increase in the cryptographic stability of the conversion of information blocks of length L = 512, 1024, 2048, 4096 and 8192 bits is provided, since the cyclic shift operations of this type are nonlinear and define a more complex function for generating a binary vector.

Новым является также то, что изменение одного из подблоков осуществляют путем выполнения над ним операции циклического сдвига на число бит, разное текущему значению двоичного вектора. It is also new that one of the subunits is changed by performing a cyclic shift operation on it by the number of bits different from the current value of the binary vector.

Благодаря такому решению обеспечивается дополнительное повышение криптостойкости преобразования, поскольку операции циклического сдвига такого типа являются нелинейными и выполняются непосредственно над преобразуемыми подблоками. Thanks to this solution, an additional increase in the cryptographic stability of the conversion is provided, since cyclic shift operations of this type are non-linear and are performed directly on the converted subunits.

Новым является также то, что при преобразовании подблоков используют таблицы подстановок, число которых Т≥2, при этом по двоичному вектору вычисляют номер (v) таблицы и подблок изменяют с помощью операции подстановки, задаваемой v-той таблицей. Also new is the fact that when converting subblocks, lookup tables are used, the number of which is T≥2, while the binary number is used to calculate the table number (v) and the subblock is changed using the lookup operation specified by the vth table.

Благодаря такому решению обеспечивается дополнительное повышение криптостойкости преобразования блоков информации длиной L = 64 и 128 бит, поскольку операции подстановки являются нелинейными и эффективны для реализации при сравнительно малом размере преобразуемого блока информации. Использование заранее не предопределенных операций подстановки является способом достижения высокой криптостойкости к наиболее сильным методам криптоанализа, в частности к дифференциальному криптоанализу, описанному, например, в работе [Biham E. , Shamir A. Differential Cryptanalysis of DES-like Cryptosystems/Journal of Cryptology, v.4, n.1, 1991, pp.3-72]. Thanks to this solution, an additional increase in the cryptographic stability of the conversion of information blocks of length L = 64 and 128 bits is provided, since the substitution operations are nonlinear and effective for implementation with a relatively small size of the converted information block. Using predetermined substitution operations is a way to achieve high cryptographic resistance to the most powerful cryptanalysis methods, in particular to differential cryptanalysis described, for example, in [Biham E., Shamir A. Differential Cryptanalysis of DES-like Cryptosystems / Journal of Cryptology, v .4, n.1, 1991, pp.3-72].

Ниже сущность заявляемого изобретения более подробно разъясняется примерами его осуществления со ссылками на прилагаемые чертежи. Below the essence of the claimed invention is explained in more detail by examples of its implementation with reference to the accompanying drawings.

Краткое описание чертежей
На фиг. 1 представлена обобщенная схема криптографического преобразования согласно заявляемому способу.
Brief Description of the Drawings
In FIG. 1 presents a generalized scheme of cryptographic conversion according to the claimed method.

На фиг. 2 представлена схема шифрования, соответствующая примеру 2. In FIG. 2 shows an encryption scheme corresponding to example 2.

На фиг. 3 представлена схема одностороннего преобразования, соответствующая примеру 3. In FIG. 3 shows a one-way conversion scheme corresponding to example 3.

Лучшие варианты осуществления изобретения
Изобретение поясняется обобщенной схемой криптографического преобразования блоков данных на основе заявляемого способа, которая представлена фиг. 1,
где В - преобразуемый блок, b1, b2....bn - преобразуемые подблоки, F - операционный блок, осуществляющий изменение подблоков, f - операционный блок, осуществляющий формирование двоичного вектора, V0 - начальное значение двоичного вектора. Входной L-битовый блок цифровых данных, где L - число двоичных разрядов в блоке, разбивается на N≥2 подблоков, каждый из которых имеет размер L/N бит. Сплошная линия соответствует передаче преобразуемых подблоков, пунктирная - передаче двоичного вектора.
The best embodiments of the invention
The invention is illustrated by a generalized scheme of cryptographic conversion of data blocks based on the proposed method, which is presented in FIG. 1,
where B is the block to be transformed, b 1 , b 2 .... b n are the converted subblocks, F is the operation block that performs the change of subblocks, f is the operation block that performs the formation of the binary vector, V 0 is the initial value of the binary vector. The input L-bit block of digital data, where L is the number of bits in the block, is divided into N≥2 subunits, each of which has the size L / N bits. The solid line corresponds to the transfer of the converted subunits, the dotted line to the transmission of the binary vector.

Подблоки поочередно преобразуются путем их изменения с помощью операционного блока F, который использует в преобразованиях значение двоичного вектора, что обусловливает зависимость выходного значения преобразуемого подблока от значения двоичного вектора. Операционный блок f для выполнения преобразования двоичного вектора использует значение подблока, преобразованного на предыдущем шаге, т.е. операционный блок f формирует двоичный вектор по структуре одного из преобразуемых подблоков и по значению двоичного вектора, которое он имел на предыдущем шаге преобразования подблока с использованием двоичного вектора. Это обусловливает зависимость значения двоичного вектора от преобразуемых данных. Выполнение процедур преобразования, задаваемых функцией F, над подблоком будем называть одним шагом изменения подблока. Выполнение процедур преобразования, задаваемых функцией f, над двоичным вектором будем называть шагом формирования двоичного вектора. Шаг преобразования подблока включает шаг формирования двоичного вектора и шаг изменения полблока. Шаги преобразования выполняются последовательно над всеми подблоками, после чего осуществляется перестановка подблоков. Subblocks are converted one by one by changing them using the operational block F, which uses the binary vector value in the transformations, which determines the dependence of the output value of the converted subblock on the value of the binary vector. The operation unit f uses the value of the subblock transformed in the previous step to perform the binary vector transform, i.e. the operation unit f forms a binary vector according to the structure of one of the converted subunits and according to the value of the binary vector that it had in the previous step of converting the subunit using a binary vector. This makes the binary vector value dependent on the data being converted. The execution of the transformation procedures specified by the function F over the subblock will be called one step of changing the subblock. The execution of the conversion procedures specified by the function f over the binary vector will be called the step of generating the binary vector. The subblock conversion step includes a binary vector generation step and a half block change step. The conversion steps are performed sequentially on all sub-blocks, after which the sub-blocks are rearranged.

В частных случаях реализации заявляемого способа перестановка подблоков может не использоваться. Выполнение N шагов изменения подблока, N шагов формирования двоичного вектора и перестановка подблоков, показанные на фиг. 1, составляют один раунд преобразования. Значение двоичного вектора после N-го шага формирования двоичного вектора служит начальным значением двоичного вектора для следующего раунда преобразования при построении односторонних функций преобразования L-битовых блоков цифровых данных. При построении шифров начальное значение двоичного вектора для каждого раунда формируется в зависимости от секретного ключа. Количество раундов преобразования может быть задано в зависимости от конкретных вариантов построения операционных блоков F и f. Важным в приведенной схеме является то, что двоичный вектор формируют в зависимости от его структуры на предыдущем шаге преобразования подблока с использованием двоичного вектора. In special cases, the implementation of the proposed method, the permutation of the subunits may not be used. Performing N steps for changing a subblock, N steps for generating a binary vector, and permuting subblocks shown in FIG. 1, make up one round of conversion. The value of the binary vector after the Nth step of generating the binary vector serves as the initial value of the binary vector for the next conversion round when constructing one-way conversion functions of L-bit blocks of digital data. When building ciphers, the initial value of the binary vector for each round is formed depending on the secret key. The number of conversion rounds can be set depending on the specific construction options for the operational blocks F and f. Important in the given scheme is that the binary vector is formed depending on its structure at the previous step of transforming the sub-block using the binary vector.

Под преобразованием подблока с использованием двоичного вектора понимается (1) выполнение двухместной операции, операндами которой являются подблок и двоичный вектор, или (2) выполнение над подблоком одноместной операции (например, подстановки или перестановки битов), модификация которой выбирается в зависимости от значения двоичного вектора, или (3) выполнение двухместной операции, выполняемой над подблоком и подключом, номер которого зависит от значения двоичного вектора. Например, в первом случае это может быть преобразование 32-битового подблока В, когда данному подблоку присваивается значение, равное результату сложения по модулю 232 подблока В и двоичного вектора V: B<--B+V. Во втором случае это может быть операция циклического сдвига влево, выполняемая над подблоком В, на число разрядов, равное значению двоичного вектора, аналитически выражаемая соотношением B<--В <<< V. В третьем случае это может быть, например, преобразование, задаваемое выражением B ← B⊕Qv, где Qv - подключ с номером v, вычисляемым по значению двоичного вектора: v = V mod 211. Последнее соотношение задает выбор номера, равного значению 11 младших разрядов двоичного вектора.The transformation of a subblock using a binary vector means (1) performing a two-place operation, the operands of which are a subblock and a binary vector, or (2) performing a one-time operation on a subblock (for example, substitution or permutation of bits), the modification of which is selected depending on the value of the binary vector , or (3) performing a two-place operation performed on a subblock and subkey, the number of which depends on the value of the binary vector. For example, in the first case, it can be a conversion of a 32-bit subblock B, when this subblock is assigned a value equal to the modulo 2 addition of 32 subblock B and the binary vector V: B <- B + V. In the second case, it can be a cyclic left shift operation performed on subblock B by the number of bits equal to the value of the binary vector analytically expressed by the relation B <- B <<< V. In the third case, it can be, for example, a transformation specified expression B ← B⊕Q v , where Q v is the subkey with number v calculated by the value of the binary vector: v = V mod 2 11 . The last relation determines the choice of the number equal to the value of the 11 least significant bits of the binary vector.

Важным частным случаем второго варианта использования двоичного вектора в преобразованиях подблока является выполнение зависящей от двоичного вектора операции подстановки над подблоком. Такой тип подстановок может быть использован при задании множества различных таблиц подстановок, каждой из которых присвоен порядковый номер, и для выполнения операции подстановки над подблоком используют таблицу номер которой выбирают в зависимости от значения V, например, если используются 32 таблицы подстановки, то номер таблицы можно вычислить по формуле v = V mod 25. Смысл выбора таблицы подстановки, которая используется для выполнения операции подстановки над подблоком на текущем шаге, по специально формируемому двоичному вектору состоит в том, чтобы сделать выбор таблицы подстановки непредопределенным для каждого шага преобразования подблоков, что повышает стойкость криптографического преобразования.An important special case of the second use of the binary vector in the transformations of the subblock is the execution of a binary vector-dependent substitution operation on the subblock. This type of substitution can be used to set many different substitution tables, each of which is assigned a serial number, and to perform a substitution operation on a subblock, use a table whose number is selected depending on the value of V, for example, if 32 substitution tables are used, then the table number can be calculate by the formula v = V mod 2 5 . The meaning of choosing a lookup table that is used to perform a lookup operation on a subblock at the current step, according to a specially generated binary vector, is to make the lookup table selection undefined for each step of the subblock conversion, which increases the strength of the cryptographic conversion.

Под формированием двоичного вектора мы понимаем запись, например, в регистр или ячейку памяти вычислительного устройства некоторой последовательности единичных или нулевых битов. Под формированием двоичного вектора в зависимости от его структуры на предыдущем шаге преобразования подблока с использованием двоичного вектора мы понимаем задание зависимости текущего значения формируемого двоичного вектора от значения, которое двоичный вектор имел на предшествующем шаге использования при преобразовании подблока данных. Например, пусть подблок Вi был преобразован с использованием значения двоичного вектора V. Перед использованием двоичного вектора на некотором другом шаге преобразования, например, подблока Вj двоичный вектор может формироваться в соответствии с выражением V <-- V+Qb, где b = Bi mod 211 - номер подключа, вычисляемый в зависимости от значения подблока Вi.By the formation of a binary vector we mean a record, for example, in a register or memory cell of a computing device of a certain sequence of single or zero bits. By the formation of a binary vector depending on its structure in the previous step of transforming a subblock using a binary vector, we mean setting the dependence of the current value of the generated binary vector on the value that the binary vector had in the previous step of using the data subblock. For example, let subblock B i be converted using the value of binary vector V. Before using the binary vector at some other transformation step, for example, subblock B j, the binary vector can be formed in accordance with the expression V <- V + Q b , where b = B i mod 2 11 - the number of the subkey, calculated depending on the value of the sub-block In i .

Возможность технической реализации заявляемого способа поясняется следующими конкретными примерами его осуществления. The possibility of technical implementation of the proposed method is illustrated by the following specific examples of its implementation.

Пример 1. Example 1

Данный пример является вариантом заявляемого способа, выполняющим шифрование блоков данных по 512-байт (4096 бит). Использование такого размера входных блоков обусловлено тем, что в компьютерных системах этот размер блоков является стандартным. При использовании блочных шифров, обрабатывающих блоки такого размера, сохраняется возможность произвольного доступа к данным, хранящимся на встроенном магнитном носителе в зашифрованном виде. В этом примере используется 8192-байтовый секретный ключ, представленный в виде совокупности из 2048 пронумерованных 32-битовых подключен {Qv}, где v = 0, 1, 2...2047. Секретный ключ формируют, например, путем его копирования с магнитного носителя в оперативную память ЭВМ. Криптографическое преобразование по примеру 1 описывается следующим алгоритмом.This example is a variant of the proposed method, performing encryption of data blocks of 512-bytes (4096 bits). The use of this input block size is due to the fact that in computer systems this block size is standard. When using block ciphers that process blocks of this size, the possibility of random access to data stored on the built-in magnetic medium in encrypted form is preserved. In this example, an 8192-byte secret key is used, represented as a collection of 2048 numbered 32-bit connected {Q v }, where v = 0, 1, 2 ... 2047. A secret key is formed, for example, by copying it from a magnetic medium to the main memory of a computer. The cryptographic transformation of example 1 is described by the following algorithm.

Алгоритм 1: Шифрование 4096-битовых блоков. Algorithm 1: Encryption of 4096-bit blocks.

ВХОД: 4096-битовый блок, представленный в виде совокупности 128 32-битовых подблоков {B1, B2...B128}.ENTRANCE: 4096-bit block, represented as a collection of 128 32-bit subblocks {B 1 , B 2 ... B 128 }.

1. Установить номер обрабатываемого блока i = 1 и начальные значения двоичных векторов V1, V2, V3 и v: V1 <-- Q1; V2 <-- Q2; V3 <-- Q3; v <-- 79.1. Set the number of the processed block i = 1 and the initial values of the binary vectors V 1 , V 2 , V 3 and v: V 1 <- Q 1 ; V 2 <- Q 2 ; V 3 <- Q 3 ; v <- 79.

2. Сформировать двоичный вектор v по структуре двоичного вектора V1: v ← v⊕(V1 mod 211), где "⊕" - операция суммирования по модулю 2.2. Form the binary vector v according to the structure of the binary vector V 1 : v ← v⊕ (V 1 mod 2 11 ), where "⊕" is the summation operation modulo 2.

3. Сформировать двоичный вектор V2: V2← [(V2+Qv)⊕V1]>>>11, где "+" - операция суммирования по модулю 232.3. Generate the binary vector V 2 : V 2 ← [(V 2 + Q v ) ⊕ V 1 ] >>> 11, where "+" is the summation operation modulo 2 32 .

4. Сформировать двоичный вектор v по структуре двоичного вектора V2: v ← v⊕(V2 mod 211).
5. Сформировать двоичный вектор V3: V3← {[V3>>>V2)⊕Qv]-V1}>>>22, где "-" обозначает операцию вычитания по модулю 232.
4. Form the binary vector v according to the structure of the binary vector V 2 : v ← v⊕ (V 2 mod 2 11 ).
5. Generate the binary vector V 3 : V 3 ← {[V 3 >>> V 2 ) ⊕ Q v ] -V 1 } >>> 22, where "-" denotes the subtraction operation modulo 2 32 .

6. Сформировать двоичный вектор v по структуре двоичного вектора V3: v ← v⊕(V3 mod 211).
7. Сформировать двоичный вектор V1: V1<--V1+Qv.
6. Generate the binary vector v according to the structure of the binary vector V 3 : v ← v⊕ (V 3 mod 2 11 ).
7. Generate the binary vector V 1 : V 1 <- V 1 + Q v .

8. Преобразовать подблок Вi: Bi ← [(Bi<<<V2)⊕V3]+V1.
9. Сформировать двоичный вектор V1: V1 <-- Bi.
8. Convert the subunit B i : B i ← [(B i <<< V 2 ) ⊕V 3 ] + V 1 .
9. Generate the binary vector V 1 : V 1 <- B i .

10. Преобразовать подблок Вi: Вi <-- Вi+V2.10. Convert the sub-block B i : B i <- B i + V 2 .

11. Если i≠128, то изменить значение номера i: i <-- i+1 и перейти к п. 2. 11. If i ≠ 128, then change the value of the number i: i <- i + 1 and go to step 2.

12. Переставить подблоки в обратном порядке. 12. Rearrange subblocks in reverse order.

ВЫХОД: 4096-битовый блок шифртекста в виде совокупности преобразованных подблоков {В1, В2...В128}.OUTPUT: 4096-bit ciphertext block in the form of a set of converted subblocks {B 1 , B 2 ... B 128 }.

Алгоритм 1 описывает один раунд шифрования. После первого раунда выполняют второй раунд шифрования, беря выходной блок первого раунда в качестве входного для второго раунда. Затем выполняют последний (третий) раунд шифрования, беря выходной блок второго раунда в качестве входного блока для третьего раунда. При программной реализации скорость шифрования при использовании трех раундов преобразования составляет около 30 Мбит/с для микропроцессора Pentium/200. Algorithm 1 describes one round of encryption. After the first round, a second round of encryption is performed, taking the output block of the first round as input for the second round. Then perform the last (third) round of encryption, taking the output block of the second round as an input block for the third round. With a software implementation, the encryption speed when using three conversion rounds is about 30 Mbps for the Pentium / 200 microprocessor.

Пример 2. Example 2

Рассмотрим вариант заявляемого способа с использованием операций подстановок, задаваемых таблицами подстановок. Пусть операции подстановки выполняются над подблоками цифровых данных длиной k бит, где k - целое число. Тогда для задания операции подстановки, преобразующей k-битовый входной подблок в k-битовый выходной подблок, требуется использование таблицы, содержащей две строки чисел:
0 1 2 ... N-1
a0 a1 a2 ... aN-1
где N = 2k.
Consider a variant of the proposed method using substitution operations specified by lookup tables. Let the substitution operations be performed on subblocks of digital data of length k bits, where k is an integer. Then, to specify a substitution operation that converts a k-bit input subunit into a k-bit output subunit, a table containing two rows of numbers is required:
0 1 2 ... N-1
a 0 a 1 a 2 ... a N-1
where N = 2 k .

В данной таблице в нижней строке присутствуют все возможные значения k-битового блока ровно по одному разу, но в произвольном порядке. Очередность расположения чисел в нижней строке определяет конкретный вариант таблицы подстановки, а следовательно, и конкретный вариант операции подстановки, выполняемой с использованием этой таблицы. Выполнение операции подстановки осуществляется следующим образом. Выбирается в верхней строке число, которое равно значению входного блока. Находящееся под этим числом значение в нижней строке берется в качестве выходного блока. Таким образом, таблицу подстановки можно разместить в оперативной памяти ЭВМ как последовательную запись k-битовых компьютерных слов, размещенных в ячейках с адресами w0, w1, w2. . . wN-1. В этом случае значение входного блока b служит для вычисления адреса w0+b слова, которое берется в качестве выходного блока. Этот способ представления таблицы подстановки требует использования объема памяти, равного kN бит.In this table, the bottom line contains all the possible values of the k-bit block exactly once, but in an arbitrary order. The order in which the numbers are located in the bottom line determines the specific variant of the lookup table, and therefore the specific version of the lookup operation performed using this table. The substitution operation is as follows. A number is selected on the top line that is equal to the value of the input block. The value under this number in the bottom line is taken as the output block. Thus, the substitution table can be placed in the main memory of the computer as a sequential record of k-bit computer words located in cells with addresses w 0 , w 1 , w 2 . . . w N-1 . In this case, the value of the input block b is used to calculate the address w 0 + b of the word, which is taken as the output block. This way of representing a lookup table requires a memory size of kN bits.

Выберем количество таблиц подстановки, равное 2L (объем требуемой памяти составит при этом 2LkN бит), и разместим таблицы подстановок непрерывно друг за другом. В качестве адреса таблицы с номером v возьмем значение адреса w0 ее первого k-битового слова. Пусть адрес таблицы с номером 0 есть s. В этом случае адрес таблицы подстановки с произвольным номером v равен s+vN. Если задан двоичный вектор, определяющий номер текущей таблицы подстановки v и текущий входной подблок для выполнения операции подстановки, то oна выполняется заменой текущего входного блока на k-битовое слово, расположенное по адресу s+vN+b, где b - значение подблока, над которым выполняется текущая операция подстановки. Используя это соотношение легко задать выбор таблицы подстановки с номером v и выполнить подстановку над подблоком со значением b. В рассмотренном случае задание зависимости таблиц подстановок от значения двоичного вектора и выполнение операции подстановки осуществляются микропроцессором очень быстро при выборе соответствующих значений параметров L и k, например при L = 5 и k = 8. При указанных параметрах для размещения таблиц подстановки требуется 8 Кбайт оперативной памяти, что является приемлемым, поскольку современные ЭВМ обладают объемом оперативной памяти на многие порядки больше этой величины (от 1 до 64 Мбайт и более).We select the number of lookup tables equal to 2 L (the amount of required memory will be 2 L kN bits), and place the lookup tables continuously one after another. As the address of the table with number v, we take the value of the address w 0 of its first k-bit word. Let the address of the table with number 0 be s. In this case, the address of the lookup table with an arbitrary number v is s + vN. If a binary vector is specified that determines the number of the current lookup table v and the current input subblock to perform the lookup operation, then it is performed by replacing the current input block with a k-bit word located at s + vN + b, where b is the value of the subblock above which The current substitution operation is in progress. Using this relation, it is easy to set the selection of the lookup table with number v and perform the lookup over the subblock with value b. In the case under consideration, the assignment of the dependence of the lookup tables on the value of the binary vector and the performance of the lookup operation are carried out by the microprocessor very quickly when the appropriate values of the parameters L and k are selected, for example, with L = 5 and k = 8. With these parameters, 8 KB of RAM is required to place the lookup tables , which is acceptable, since modern computers have a RAM volume many orders of magnitude greater than this value (from 1 to 64 MB or more).

Пусть L = 5 и k = 8, т.е. даны 32 таблицы, задающие операции подстановки над 8-битовыми подблоками данных. Сформируем секретный ключ, представленный в виде совокупности из 7R 8-битовых подключей:

Figure 00000002

где R - число раундов шифрования. На r-том раунде шифрования используется r-тая строка подключей.Let L = 5 and k = 8, i.e. 32 tables are given that specify the substitution operations on 8-bit data subunits. We will form a secret key, presented as a combination of 7R 8-bit subkeys:
Figure 00000002

where R is the number of rounds of encryption. On the rth round of encryption, the rth row of subkeys is used.

Обозначим используемые таблицы подстановки следующим образом: Т0, Т1, Т2...Т31, а операцию подстановки, задаваемую таблицей Тv, как Sv, где v = 0, 1, 2...31. Таблицы подстановок Т0, Т1, Т2...Т15 могут быть выбраны произвольными, а таблицы Т16, Т17...Т31 берутся такими, чтобы операции подстановок Sv и S31-v были взаимно обратными. Последнее условие выполняется, если пары таблиц Т16 и Т15; Т17 и Т14; Т18 и Т13;...; Т31 и Т0 будут задавать взаимно обратные операции подстановки. Для набора произвольных таблиц подстановки Т0, Т1, Т2...Т15 легко составить таблицы, соответствующие обратным операциям подстановки. Например, для операции подстановки, задаваемой следующей таблицей
0 1 2 ... 255
а0 а1 а2 ... а255
а обратная подстановка задается таблицей
0 1 2 ... 255
z0 z1 z2 ... z255
где строка (z0, z1, z2...z255) получается как верхняя строка после упорядочения столбцов предыдущей таблицы в порядке возрастания чисел в нижней строке.
We denote the used lookup tables as follows: T 0 , T 1 , T 2 ... T 31 , and the lookup operation defined by the table T v as S v , where v = 0, 1, 2 ... 31. The permutation tables T 0 , T 1 , T 2 ... T 15 can be chosen arbitrarily, and the tables T 16 , T 17 ... T 31 are taken so that the permutation operations S v and S 31-v are mutually inverse. The last condition is satisfied if the pairs of tables T 16 and T 15 ; T 17 and T 14 ; T 18 and T 13 ; ...; T 31 and T 0 will define mutually inverse substitution operations. For a set of arbitrary substitution tables T 0 , T 1 , T 2 ... T 15 it is easy to compile tables corresponding to the inverse substitution operations. For example, for the lookup operation specified by the following table
0 1 2 ... 255
a 0 a 1 a 2 ... a 255
and the reverse substitution is set by the table
0 1 2 ... 255
z 0 z 1 z 2 ... z 255
where the row (z 0 , z 1 , z 2 ... z 255 ) is obtained as the top row after ordering the columns of the previous table in ascending order of numbers in the bottom row.

На фиг. 2 показана схема первого раунда шифрования. На фиг. 2 сплошная вертикальная линия соответствует передаче 8-битовых подблоков данных, пунктирная линия соответствует передаче 5-битовых подблоков, горизонтальная сплошная линия соответствует передаче 8-битового подключа. Операция поразрядного суммирования по модулю два обозначена знаком "⊕", v обозначает номер выбранной таблицы подстановки, блок S обозначает операцию подстановки, k11, k12. . . k17 - подключи, используемые на первом раунде. Стрелки на линиях обозначают направление передачи сигналов. Пример 2 соответствует шифрованию блоков цифровых данных размером 64 бит. Шифрование выполняют следующим путем. Входной блок разбивают на 8 подблоков b0, b1, b2...b7 размером 8 бит каждый. После этого формируют двоичный вектор v, имеющий значение 5 младших двоичных разрядов подблока b0: v <-- b0 mod 25. Потом над подблоком b1 и подключом k11 выполняют операцию поразрядного суммирования по модулю 2 и выходное значение этой операции присваивают блоку b1, что можно записать аналитически следующим образом: b1← b1⊕r11. Затем по таблице подстановки с номером v выполняют операцию подстановки над подблоком b1: b1 <-- Sv(b1). Затем по значению b1 формируют двоичный вектор v: v ← v⊕ (b1 mod 25), причем новое значение двоичного вектора зависит от его предыдущего значения. После этого выполняют преобразование подблока b2: b2← b2⊕k12 и затем b2 <-- Sv(b2).In FIG. 2 shows a diagram of a first round of encryption. In FIG. 2, the solid vertical line corresponds to the transmission of 8-bit subblocks of data, the dashed line corresponds to the transmission of 5-bit subblocks, the horizontal solid line corresponds to the transmission of 8-bit subblock. The bitwise summation operation modulo two is indicated by the sign "⊕", v denotes the number of the selected lookup table, block S denotes the lookup operation, k 11 , k 12 . . . k 17 - plug used in the first round. The arrows on the lines indicate the direction of signal transmission. Example 2 corresponds to the encryption of 64-bit digital data blocks. Encryption is performed in the following way. The input block is divided into 8 subblocks b 0 , b 1 , b 2 ... b 7 of size 8 bits each. After that form the binary vector v, having the value of the 5 least significant bits of the subblock b 0 : v <- b 0 mod 2 5 . Then, the bitwise summing operation modulo 2 is performed over the subblock b 1 and subkey k 11 and the output value of this operation is assigned to block b 1 , which can be written analytically as follows: b 1 ← b 1 ⊕r 11 . Then, according to the lookup table with number v, the lookup operation is performed on the subblock b 1 : b 1 <- S v (b 1 ). Then, according to the value of b 1 , the binary vector v is formed: v ← v⊕ (b 1 mod 2 5 ), and the new value of the binary vector depends on its previous value. After that, the subblock b 2 is transformed: b 2 ← b 2 ⊕k 12 and then b 2 <- S v (b 2 ).

Аналогично выполняют преобразования подблоков b3, b4, b5, b6 и b7. На последнем шаге каждого раунда шифрования выполняют перестановку подблоков в обратном порядке, т.е. попарно меняются местами блоки b7 и b0, b6 и b1, b5 и b2, b4 и b3.Similarly perform the conversion of the subblocks b 3 , b 4 , b 5 , b 6 and b 7 . At the last step of each encryption round, the sub-blocks are rearranged in the reverse order, i.e. the b 7 and b 0 , b 6 and b 1 , b 5 and b 2 , b 4 and b 3 blocks are interchanged in pairs.

Второй раунд выполняется аналогично, за исключением того, что вместо первой строки подключей используется вторая строка подключей. Затем выполняется третий раунд шифрования с использованием третьей строки подключей и т. д. Всего выполняется R раундов шифрования, где R = 4. При программной реализации данный пример реализации заявляемого способа обеспечивает скорость шифрования около 25 Мбит/с для микропроцессора Pentium/200. При необходимости может быть задано и другое число раундов, например R = 2, 3, 5, 6. The second round is the same, except that instead of the first row of subkeys, the second row of subkeys is used. Then the third round of encryption is performed using the third row of subkeys, etc. In total, R rounds of encryption are performed, where R = 4. In software implementation, this example implementation of the proposed method provides an encryption speed of about 25 Mbps for the Pentium / 200 microprocessor. If necessary, another number of rounds can be set, for example, R = 2, 3, 5, 6.

Пример 2. Example 2

Пример описывается следующим алгоритмом. An example is described by the following algorithm.

Алгоритм 2. Algorithm 2.

Вход. 64-битовый входной блок цифровых данных, представленный как конкатенация 8-битовых подблоков b0|b1|b2|b3|b4|b5|b6|b7, где знак "|" обозначает операцию конкатенации.Entrance. 64-bit digital data input block, represented as a concatenation of 8-bit subblocks b 0 | b 1 | b 2 | b 3 | b 4 | b 5 | b 6 | b 7 , where the sign "|" denotes a concatenation operation.

1. Установить число раундов шифрования R = 4 и счетчик числа раундов r = 1. 1. Set the number of rounds of encryption R = 4 and the counter of the number of rounds r = 1.

2. Установить счетчик i = 1. 2. Set the counter i = 1.

3. Сформировать двоичный вектор v: v <-- bi-1 mod 25.3. Form a binary vector v: v <- b i-1 mod 2 5 .

4. Преобразовать подблок bi: bi← bi⊕kri, bi <-- Sv(bi), где операция подстановки Sv выполняется с помощью таблицы подстановки с номером v.4. Convert the subblock b i : b i ← b i ⊕k ri , b i <- S v (b i ), where the substitution operation S v is performed using the substitution table with number v.

5. Сформировать двоичный вектор v: v ← v⊕ (bi mod 25).5. Generate the binary vector v: v ← v⊕ (b i mod 2 5 ).

6. Если i≠7, то прирастить i <-- i+1 и перейти к п. 4. 6. If i ≠ 7, then increment i <- i + 1 and go to step 4.

7. Если r≠R, то прирастить r <-- r+1. В противном случае СТОП. 7. If r ≠ R, then increment r <- r + 1. Otherwise STOP.

8. Переставить подблоки в обратном порядке и перейти к п. 3. 8. Rearrange the subunits in the reverse order and go to step 3.

Выход: 64-битовый блок шифртекста. Output: 64-bit ciphertext block.

В этом примере видно, что номер используемой таблицы подстановки зависит от преобразуемых блоков и является непредопределенным для текущего шага преобразования, т. е. операция подстановки заранее неизвестна для всех шагов преобразования. Она определяется секретным ключом и блоком преобразуемых данных. Дешифрование осуществляется аналогично и описывается следующим алгоритмом. In this example, it can be seen that the number of the used lookup table depends on the blocks being converted and is not predetermined for the current conversion step, i.e., the substitution operation is not known in advance for all conversion steps. It is determined by a secret key and a block of converted data. Decryption is carried out similarly and is described by the following algorithm.

Алгоритм 3. Algorithm 3.

Вход: 64-битовый входной блок шифртекста b0|b1|b2|b3|b4|b5|b6|b7.
1. Установить число раундов шифрования R = 4 и счетчик числа раундов r = 1.
Input: 64-bit ciphertext input block b 0 | b 1 | b 2 | b 3 | b 4 | b 5 | b 6 | b 7 .
1. Set the number of rounds of encryption R = 4 and the counter of the number of rounds r = 1.

2. Установить счетчик i = 1. 2. Set the counter i = 1.

3. Сформировать двоичный вектор v: v <-- bi-1 mod 25.3. Form a binary vector v: v <- b i-1 mod 2 5 .

4. Сохранить значение bi в переменной g: g <-- bi. Преобразовать подблок bi: bi <-- S31-v(bi), bi← bi⊕kr′1, где r' = 5-r.4. Save the value of b i in the variable g: g <- b i . Convert subblock b i : b i <- S 31-v (b i ), b i ← b i ⊕k r′1 , where r '= 5-r.

5. Сформировать двоичный вектор v: v ← v⊕(g mod 25)].
6. Если i≠7, то прирастить i <-- i+1 и перейти к п. 4.
5. Generate the binary vector v: v ← v⊕ (g mod 2 5 )].
6. If i ≠ 7, then increment i <- i + 1 and go to step 4.

7. Если r≠R, то прирастить r <-- r+1. В противном случае СТОП. 7. If r ≠ R, then increment r <- r + 1. Otherwise STOP.

8. Переставить подблоки в обратном порядке и перейти к п. 3. 8. Rearrange the subunits in the reverse order and go to step 3.

Выход: 64-битозый блок исходного текста. Output: 64-bit block of source text.

Приведенные алгоритмы шифрования и дешифрования могут быть легко модифицированы для преобразования блоков данных другого размера, например 128 и 256 бит. The above encryption and decryption algorithms can be easily modified to convert data blocks of a different size, for example, 128 and 256 bits.

Пример 3. Example 3

Данный пример относится к построению односторонней функции, основанной на заявляемом способе криптографического преобразования. Так же, как и в примерах 1 и 2, предполагается использование 32 таблиц подстановки Т0, Т1, Т2...Т31. Таблицы подстановок предполагаются известными и секретные ключи не используются. Односторонняя функция задается алгоритмом 4. Последовательность операций преобразования подблоков данных для одного раунда преобразования показана на фиг. 2.This example relates to the construction of a one-way function based on the claimed method of cryptographic conversion. As in examples 1 and 2, it is assumed that 32 substitution tables T 0 , T 1 , T 2 ... T 31 are used . Substitution tables are assumed to be known and private keys are not used. The one-way function is defined by algorithm 4. The sequence of operations for converting data subblocks for one round of transformation is shown in FIG. 2.

Алгоритм 4. Algorithm 4.

Вход. 64-битовый входной блок данных, представленный как конкатенация 8-битовых подблоков b0|b1|b2|...|b7.
1. Установить число раундов преобразования R = 8, счетчик числа раундов r = 1 и начальное значение двоичного вектора v = 13.
Entrance. A 64-bit input data block, represented as a concatenation of 8-bit subblocks b 0 | b 1 | b 2 | ... | b 7 .
1. Set the number of conversion rounds R = 8, the counter of the number of rounds r = 1 and the initial value of the binary vector v = 13.

2. Установить счетчик i = 1. 2. Set the counter i = 1.

3. Сформировать двоичный вектор v: v ← v⊕(bi-1mod 25).
4. Преобразовать подблок bi-1: bi-1 <--bi-1 <<< r, bi-1 <-- Sv(bi-1).
3. Generate the binary vector v: v ← v⊕ (b i-1 mod 2 5 ).
4. Convert the subblock b i-1 : b i-1 <- b i-1 <<< r, b i-1 <- S v (b i-1 ).

6. Если i≠8, то прирастить i <-- i+1 и перейти к п. 3. 6. If i ≠ 8, then increment i <- i + 1 and go to step 3.

7. Переставить подблоки b0, b1...b7 в обратном порядке.7. Rearrange the subblocks b 0 , b 1 ... b 7 in the reverse order.

8. Если r≠R, то прирастить r <-- r+1 и перейти к п. 2. В противном случае СТОП. 8. If r ≠ R, then increment r <- r + 1 and go to step 2. Otherwise, STOP.

Выход; 64-битовое значение функции F. Exit; 64-bit value of function F.

Аналогично может быть построена односторонняя функция для преобразования 128-битовых блоков данных, которая может быть использована для хэширования данных. Similarly, a one-way function can be constructed for converting 128-bit data blocks, which can be used to hash data.

Приведенные примеры показывают, что предлагаемый способ криптографических преобразований блоков цифровых данных технически реализуем и позволяет решить поставленную задачу. The above examples show that the proposed method of cryptographic transformations of digital data blocks is technically feasible and allows us to solve the problem.

Промышленная применимость
Заявляемый способ может быть реализован, например, на персональных ЭВМ и обеспечивает возможность создания на его основе скоростных программных модулей шифрования и замены дорогостоящей специализированной аппаратуры шифрования персональной ЭВМ, снабженной программной системой скоростного шифрования.
Industrial applicability
The inventive method can be implemented, for example, on personal computers and provides the ability to create on its basis high-speed encryption software modules and replace expensive specialized encryption equipment for personal computers equipped with a high-speed encryption software system.

Claims (3)

1. Способ криптографического преобразования L-битовых входных блоков цифровых данных в L-битовые выходные блоки, заключающийся в разбиении блока данных на N ≥ 2 подблоков, над которыми последовательно выполняют N шагов преобразования подблока, на каждом шаге преобразования подблока формируют, по крайней мере, один двоичный вектор по значению подблока и изменяют подблок в зависимости от структуры двоичного вектора, отличающийся тем, что формирование двоичного вектора на последующем шаге преобразования подблока осуществляют в зависимости от структуры двоичного вектора на предыдущем шаге преобразования подблока. 1. The method of cryptographic conversion of L-bit input blocks of digital data into L-bit output blocks, which consists in dividing the data block into N ≥ 2 subblocks, over which N steps of transforming a subblock are successively performed, at least at least one step of transforming a subblock one binary vector according to the value of the subblock and change the subblock depending on the structure of the binary vector, characterized in that the formation of the binary vector in the next step of the transformation of the subblock is carried out depending from the structure of the binary vector in the previous step of the conversion of the subunit. 2. Способ по п.1, отличающийся тем что изменяют подблок путем выполнения над ним операции циклического сдвига на число битов, равное текущему значению двоичного вектора. 2. The method according to claim 1, characterized in that the subblock is changed by performing a cyclic shift operation on it by the number of bits equal to the current value of the binary vector. 3. Способ по п.1, отличающийся тем, что изменяют подблок путем вычисления номера V таблицы подстановки в зависимости от структуры двоичного вектора и последующего выполнения над подблоком операции подставки, соответствующей V-й таблице подстановки. 3. The method according to claim 1, characterized in that the subblock is changed by calculating the number V of the lookup table depending on the structure of the binary vector and then performing the substitution operation on the subblock corresponding to the Vth lookup table.
RU99125491/09A 1997-11-28 1997-11-28 Method for cryptographic conversion of l-bit digital-data input blocks into l-bit output blocks RU2188513C2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU99125491/09A RU2188513C2 (en) 1997-11-28 1997-11-28 Method for cryptographic conversion of l-bit digital-data input blocks into l-bit output blocks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU99125491/09A RU2188513C2 (en) 1997-11-28 1997-11-28 Method for cryptographic conversion of l-bit digital-data input blocks into l-bit output blocks

Publications (2)

Publication Number Publication Date
RU99125491A RU99125491A (en) 2001-10-27
RU2188513C2 true RU2188513C2 (en) 2002-08-27

Family

ID=20227698

Family Applications (1)

Application Number Title Priority Date Filing Date
RU99125491/09A RU2188513C2 (en) 1997-11-28 1997-11-28 Method for cryptographic conversion of l-bit digital-data input blocks into l-bit output blocks

Country Status (1)

Country Link
RU (1) RU2188513C2 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004084484A1 (en) * 2003-03-17 2004-09-30 Alexander Andreevich Moldovyan Method for the cryptographic conversion of digital data blocks
RU2449482C2 (en) * 2006-09-01 2012-04-27 Сони Корпорейшн Encryption processing device, encryption processing method and computer programme
RU2481715C1 (en) * 2011-11-30 2013-05-10 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Московский государственный технологический университет "СТАНКИН" (ФГБОУ ВПО МГТУ "СТАНКИН") Method for block encryption of messages and transmission of encrypted data with closed key
RU2562426C2 (en) * 2013-12-20 2015-09-10 Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" Method for dynamic search of information unit based on random sampling of input data
MD4511C1 (en) * 2016-04-20 2018-03-31 Анатолий БАЛАБАНОВ Device and method for cryptographic protection of binary information (embodiments)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004084484A1 (en) * 2003-03-17 2004-09-30 Alexander Andreevich Moldovyan Method for the cryptographic conversion of digital data blocks
RU2449482C2 (en) * 2006-09-01 2012-04-27 Сони Корпорейшн Encryption processing device, encryption processing method and computer programme
RU2502201C2 (en) * 2006-09-01 2013-12-20 Сони Корпорейшн Encryption/decryption device, encryption/decryption method, information processing device and computer programme
RU2481715C1 (en) * 2011-11-30 2013-05-10 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Московский государственный технологический университет "СТАНКИН" (ФГБОУ ВПО МГТУ "СТАНКИН") Method for block encryption of messages and transmission of encrypted data with closed key
RU2562426C2 (en) * 2013-12-20 2015-09-10 Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" Method for dynamic search of information unit based on random sampling of input data
MD4511C1 (en) * 2016-04-20 2018-03-31 Анатолий БАЛАБАНОВ Device and method for cryptographic protection of binary information (embodiments)

Similar Documents

Publication Publication Date Title
EP0839418B1 (en) Cryptographic method and apparatus for non-linearly merging a data block and a key
KR100610367B1 (en) The multiplication method and apparatus for preventing in Galois field, the apparatus for inversion in Galois field and the apparatus for AES byte substitution operation
DK1686722T3 (en) Block encryption device and block encryption method comprising rotation key programming
RU2449482C2 (en) Encryption processing device, encryption processing method and computer programme
RU2124814C1 (en) Method for encoding of digital data
AU1132199A (en) A non-deterministic public key encryption system
JP2005215688A (en) Hardware encryption/decryption apparatus using s-box operation, and method for the same
Agrawal et al. Elliptic curve cryptography with hill cipher generation for secure text cryptosystem
JP2004258667A (en) Method for generating pseudo random permutation of word comprising n pieces of digits
KR101506499B1 (en) Method for encrypting with SEED applying mask
RU2188513C2 (en) Method for cryptographic conversion of l-bit digital-data input blocks into l-bit output blocks
RU2141729C1 (en) Method for encrypting of binary data units
US7142673B1 (en) Method for the cryptographic conversion of L-bit input blocks of digital data into L-bit output blocks
RU2140709C1 (en) Process of cryptographic conversion of blocks of digital data
KR100494560B1 (en) Real time block data encryption/decryption processor using Rijndael block cipher and method therefor
RU2206961C2 (en) Method for iterative block encryption of binary data
RU2186467C2 (en) Method for iterative block encryption
RU2140716C1 (en) Method for cryptographic conversion of digital data blocks
CN114337993B (en) White box SM4 encryption and decryption method and system applied to edge Internet of things proxy
RU2199826C2 (en) Method for iterative encoding of digital data blocks
RU2140712C1 (en) Method for ciphering binary data blocks
RU2204212C2 (en) Iterative method for block encryption
RU2106753C1 (en) Process of cryptographic conversion of data blocks
RU2186466C2 (en) Method for iterative encryption of digital data blocks
RU2140714C1 (en) Data block iterative ciphering technique

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20051129