Способ блочного итеративного шифрования

Реферат

 

Изобретение относится к электросвязи и вычислительной технике, а конкретнее к криптографическим способам для шифрования данных. Способ блочного итеративного шифрования включает формирование секретного ключа в виде совокупности подключей, разбиение блока данных на два подблока и выполнение R раундов шифрования, каждый из которых заключается в преобразовании первого подблока путем выполнения над ним последовательности операций L1, L2, ..., Ln, и преобразование второго подблока путем выполнения над ним последовательности операций H1, Н2, ..., Нn, где n1, причем, по крайней мере, для одного значения i, где 1in, в качестве операции H1 используют управляемую операцию и, по крайней мере, для одного значения j, где 1jn, в качестве операции Lj используют управляемую операцию и перед выполнением операции Нi формируют управляющий вектор в зависимости от первого подблока, а перед выполнением операции Lj формируют управляющий вектор в зависимости от второго подблока, кроме того, при выполнении, по крайней мере, одной из операций L1, L2, ..., Ln, H1, Н2, ..., Hn используют один из подключей, причем в каждом раунде шифрования после выполнения операций Ln и Hn дополнительно осуществляют перестановку подблоков и, по крайней мере, в качестве n операций Hi, где i=l, 2, ..., n, используют операции, являющиеся обратными по отношению к операциям Lj, где j=n-i+1. Технический результат, достигаемый при реализации способа, состоит в повышении стойкости шифрования. 3 з.п. ф-лы, 4 ил.

Изобретение относится к области электросвязи и вычислительной техники, а конкретнее к области способов шифрования и криптографических устройств для защиты информации, передаваемой по каналам связи или хранимой в компьютерных системах.

В совокупности признаков заявляемого способа используются следующие термины: - секретный ключ представляет из себя двоичную информацию, известную только законному пользователю; - подключ - часть секретного ключа; - шифрование есть процесс преобразования информации, который зависит от секретного ключа и преобразует исходный текст в шифртекст (криптограмму), представляющий собой псевдослучайную последовательность знаков, из которой получение информации без знания секретного ключа практически неосуществимо; - дешифрование есть процесс обратный процедуре шифрования; дешифрование обеспечивает восстановление информации по криптограмме при знании секретного ключа; - шифр представляет собой совокупность элементарных шагов преобразования входных данных с использованием секретного ключа; шифр может быть реализован в виде программы для ЭВМ или в виде отдельного устройства; - двоичный вектор - это некоторая последовательность нулевых и единичных битов, например (101101011); двоичный вектор интерпретируется как двоичное число, т.е. двоичному вектору может быть сопоставлено численное значение; - криптоанализ - метод вычисления секретного ключа для получения несанкционированного доступа к зашифрованной информации; - криптостойкость является мерой надежности защиты зашифрованной информации и представляет собой трудоемкость, измеренную в количестве элементарных операций, которые необходимо выполнить для восстановления информации по криптограмме при знании алгоритма преобразования, но без знания секретного ключа; - одноместная операция - это операция, выполняемая над двоичным вектором; двоичный вектор, формируемый на выходе одноместной операции, зависит только от входного двоичного вектора; примером одноместных операций являются операции циклического сдвига; - двуместная операция - это операция, выполняемая над двумя операндами; результат выполнения некоторой данной двуместной операции зависит от значения каждого операнда; примером двуместных операций являются операции сложения, вычитания, умножения и др.; - операнд - это двоичный вектор, над которым выполняется двуместная или одноместная операция; - управляемая двуместная операция - это операция выполняемая над двумя операндами под управлением некоторого двоичного вектора, называемого управляющим вектором; результат выполнения некоторой управляемой двуместной операции при фиксированном управляющем векторе зависит от значения каждого операнда, а при фиксированных значениях операндов - от значения управляющего вектора; примеры реализации управляемых двуместных операций описаны в патенте 2140716 [Молдовян А.А., Молдовян Н.А., Молдовян П.А. Способ криптографического преобразования блоков цифровых данных// Патент РФ 2140716. МПК6Н 04 L 9/28. Бюл. 30 от 27.10.1999]; в формулах управляемую двуместную операцию будем обозначать записью Z:=QV(A, B), где А, В - операнды, V - управляющий вектор, Z - двоичный вектор, являющийся результатом выполнения управляемой двуместной операции QV; - модификация управляемой двуместной операции - двуместная операция, соответствующая преобразованию двух операндов при фиксированном значении управляющего вектора; - управляемая перестановка - это операция, выполняемая над одним операндом под управлением некоторого двоичного вектора, называемого управляющим вектором и заключающаяся в перестановке битов операнда в зависимости от значения управляющего вектора; примеры реализации управляемых перестановок описаны в патенте 2140714 [Алексеев Л.Е., Белкин Т.Г., Молдовян А.А., Молдовян Н.А. Способ итеративного шифрования блоков данных // Патент РФ 2140714. МПК6 Н 04 L 9/20. Бюл. 30 от 27.10.1999]; в формулах управляемую перестановку будем обозначать записью РV, а преобразование операнда В путем выполнения над ним управляемой перестановки - записью В:=PV(B), где V - управляющий вектор; управляемая перестановка является частным случаем управляемой одноместной операции; - модификация управляемой перестановки - фиксированная перестановка битов операнда, соответствующая заданному фиксированному значению управляющего вектора; - обратная управляемая перестановка (по отношению к некоторой данной управляемой перестановке) - это перестановка, все модификации P-1 V которой являются обратными по отношению к модификациям перестановки РV, т.е. для любого заданного значения управляющего вектора последовательное выполнение операций РV и P-1 V над двоичным вектором В не изменяют значение последнего, что аналитически можно записать в виде B=P-1 VV(B)) или B=РV(P-1 V(B)); варианты реализации двух взаимно обратных управляемых перестановок описаны в патенте РФ 2140714; - обратная управляемая двуместная операция (по отношению к некоторой данной управляемой двуместной операции Q - это такая управляемая двуместная операция (обозначаемая как Q-1), которая для любого заданного значения управляющего вектора V и любого заданного значения операнда В удовлетворяет условию A=Q-1 V(Z, B), если Z=QV(A, B); варианты реализации двух взаимно обратных управляемых двуместных операций описаны в работе [Гуц Н.Д., Молдовян А. А. , Молдовян Н.А. Гибкие аппаратно-ориентированные шифры на базе управляемых сумматоров // Вопросы защиты информации. 2000. 1. С.8-15]; - совпадение двух операций L и Н будем обозначать записью L = Н, которая означает, что операции L и Н являются одинаковыми или эквивалентными; - суперпозиция операций - это некоторая результирующая операция, которая заключается в последовательном выполнении нескольких операций над заданным двоичным вектором A; например, суперпозиция операций Q1 и Q2 записывается в виде Q1Q2; по определению имеем Q1Q2(A)=Q2(Q1(A)); суперпозиция n операций Q1, Q2, ..., Qn записывается в виде Q1Q2...Qn(A)=Qn(...Q2(Q1(A))); - тождественное преобразование - преобразование, выполняемое над двоичным вектором и не изменяющее значение последнего; - управляемая перестановочная инволюция - это частный вид операции управляемой перестановки Р, для которой обратная по отношению к ней управляемая перестановка совпадает с ней самой, т.е. P-1 V=PV для всех возможных значений управляющего вектора; это означает, что для управляемой перестановочной инволюции справедливо равенство В=РVV(В)) при произвольном значении V вариант реализации управляемой перестановочной инволюции приведен далее в описании изобретения.

Известны способы блочного итеративного шифрования, см., например, шифр DES [B.Schneier, "Applied Cryptography", Second Eddition, John Wiley & Sons, Inc. , New York, 1996, pp.270-277]. В данном способе данные разбиваются на блоки, шифрование которых выполняют путем формирования секретного ключа, разбиения преобразуемого блока данных на два подблока L и R и поочередного изменения последних путем выполнения операции поразрядного суммирования по модулю два над подблоком L и двоичным вектором, который формируется как выходное значение некоторой функции Е от значения подблока R. После этого подблоки переставляются местами. Функция Е в указанном способе реализуется путем выполнения операций перестановки и подстановки, выполняемых над подблоком R. Данный способ обладает высокой скоростью преобразований при реализации в виде специализированных электронных схем. Однако известный способ-аналог использует секретный ключ малого размера (56 бит), что делает его уязвимым к криптоанализу на основе подбора ключа. Последнее связано с высокой вычислительной мощностью современных ЭВМ.

Другим известным способом блочного итеративного шифрования является способ, описанный в Российском стандарте криптографической защиты данных [Стандарт СССР ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования] . Этот способ включает в себя формирование ключа шифрования в виде последовательности из 8 подключей длиной 32 бита, разбиение входной информации, представленной в виде двоичного кода, на участки длиной по 64 бит, формирование на их основе 64-битовых блоков данных и преобразование блоков под управлением ключа шифрования. Перед преобразованием каждый блок данных разбивается на два 32-битовых подблока A и В, которые поочередно преобразуются путем выполнения 32 раундов преобразования (итераций). Один раунд преобразования заключается в следующем. По подблоку А и одному из подключей вычисляется 32-битовое значение раундовой функции Е и полученное значение Е(A) накладывают на подблок В с помощью операции поразрядного суммирования по модулю два () в соответствии с формулой B := BE(A). Вычисление раундовой функции осуществляется в соответствии со следующими шагами преобразования. По подблоку А формируется двоичный вектор F. Преобразуют двоичный вектор F путем наложения на него текущего подключа i, являющегося фиксированным для данного раунда и называемого раундовым подключом, с помощью операции сложения по модулю 232 (+) в соответствии с формулой F:=(R+Ki)mod232, где 1i8, после чего над двоичным вектором F выполняют операцию подстановки (F:=S(F)), затем операцию циклического сдвига влево на одиннадцать бит, т.е. на одиннадцать двоичных разрядов в сторону старших разрядов (F:=F<<<11). После каждого раунда шифрования, за исключением последнего раунда, подблоки переставляются. Операция подстановки выполняется следующим образом. Двоичный вектор F разбивается на 8 двоичных векторов длиной по 4 бит. Каждый двоичный вектор заменяется двоичным вектором из таблицы подстановок. Выбранные из таблицы подстановок 8 4-битовых векторов объединяются в преобразованный 32-битовый двоичный вектор F.

Однако способ-аналог имеет недостатки, а именно операции подстановок выполняются над двоичными векторами малой длины (4 бита), что создает предпосылки для атаки этого шифра методом дифференциального криптоанализа [B. Schneier, "Applied Cryptography", Second Eddition, John Wiley & Sons, Inc., New York, 1996, pp. 285-290] . Поэтому для обеспечения высокой стойкости к дифференциальному криптоанализу требуется выполнить большое число раундов шифрования, что снижает скоростные показатели шифра.

Наиболее близким по своей технической сущности к заявляемому способу блочного итеративного шифрования является способ, описанный в патенте РФ 2141729 [Молдовян А. А., Молдовян Н.А. "Способ криптографического преобразования блоков двоичных данных"// Патент РФ 2141729. МПК6 Н 04 L 9/00. Бюл. 32 от 20.11.1999]. Способ-прототип включает в себя формирование секретного ключа, разбиение блока данных на два подблока А и В и преобразование подблоков под управлением ключа шифрования путем выполнения над ними 16 раундов преобразования (итераций). Каждый раунд включает поочередное преобразование подблоков, причем над каждым из них выполняются не менее двух операций. В частном случае реализации способа-прототипа (см. пример 1 при r = 1 в описании патента 2141729) один раунд включает следующие шаги преобразования: 1. С помощью операции поразрядного суммирования по модулю два () на подблок А накладывается подключ K1 в соответствии с формулой A := AK1, где знак ":=" обозначает операцию присваивания.

2. С помощью операции сложения по модулю 232 (+) на подблок В накладывается подключ К2 в соответствии с формулой В:=В+К2.

3. Подблок В преобразуется в соответствии с выражением В:=РV(В), где РV - модификация управляемой перестановки, V - значение управляющего вектора, формируемого в зависимости от значений подблока А и подключа K3.

4. На подблок А накладывается подблок В по формуле А:=А+В.

5. Над подблоком А выполняется операция управляемой перестановки А:= РV(A), где V - значение управляющего вектора, формируемого в зависимости от значений подблока В и подключа К4.

6. Преобразуется подблок В в соответствии с формулой B := BA. Однако способ-прототип имеет недостатки, а именно при его реализации в виде электронных криптографических устройств для выполнения шифрования и дешифрования необходимо использовать две различные электронные схемы, что усложняет его реализацию.

В основу изобретения положена задача разработать способ блочного итеративного шифрования, в котором преобразование входных данных осуществлялось бы таким образом, чтобы процедуры шифрования и дешифрования могли осуществляться с помощью одной и той же электронной схемы, используя подключи в обратной очередности при выполнении дешифрования по отношению очередности использования подключей при шифровании, что упрощает схемотехническую реализацию.

Поставленная задача достигается тем, что в способе итеративного блочного шифрования, включающем формирование секретного ключа, разбиение блока данных на два подблока и выполнение R2 раундов шифрования, включающих поочередное преобразование подблоков, причем преобразование первого подблока осуществляют путем выполнения над ним последовательности операций L1, L2, ..., Ln, а преобразование второго подблока осуществляют путем выполнения над ним последовательности операций H1, Н2, ..., Нn, где n1, при этом, по крайней мере, в качестве одной из операций Нi, где 1in, и, по крайней мере, в качестве одной из операций Lj, где 1jn, используют управляемые операции, новым, согласно изобретению является то, что в каждом раунде после выполнения операций Ln и Нn дополнительно осуществляют перестановку подблоков и в качестве операций Нi, где i=1, 2, ..., n, используют операции, являющиеся обратными по отношению к операциям Lj, где j=n-i+1.

Благодаря такому решению выполнение последовательности операций L1, L2, ..., Ln и последовательности операций H1, Н2, ..., Нn задают соответствующие пары взаимно обратных преобразований, что, благодаря перестановке подблоков после выполнения операций Нn и Ln, обеспечивает возможность осуществления шифрования и дешифрования блока данных с помощью одной и той же электронной схемы за счет инвертирования очередности использования подключей. Это упрощает схемотехническую реализацию способа итеративного шифрования блоков дискретных данных.

Новым является также то, что в качестве операций Нi и Lj, где 1i, jn и n2, используют управляемые перестановки и управляемые двуместные операции.

Благодаря такому решению обеспечивается повышение стойкости шифрования.

Кроме того, новым является то, что в качестве операций Нi и Lj, где 1i, jn и n2, используют управляемые перестановочные инволюции и управляемые двуместные операции.

Благодаря такому решению обеспечивается дополнительное упрощение схемотехнической реализации способа блочного итеративного шифрования.

Ниже сущность заявляемого изобретения более подробно разъясняется примерами его осуществления со ссылками на прилагаемые чертежи.

Обобщенная схема блочного итеративного шифрования на основе заявляемого способа представлена структурой раунда шифрования, показанной на фиг.1,а, где А и В - подблоки преобразуемого блока данных; L1, L2, ..., Ln - операции, выполняемые над подблоком В; H1, Н2, ..., Нn - операции, выполняемые над подблоком А, причем операции преобразования выбраны таким образом, что для i=1,2, ..., n выполняются условия H1=L-1 n, H2=L-1 n-1, ..., Hi=L-1 n-i+1, ..., Hn=L-1 1, что эквивалентно выполнению условий L1=H-1 n, L2=H-1 n-1, ..., Li=H-1 n-i+1, ..., Ln=H-1 1; V' и V" - значения управляющего вектора, формируемого в зависимости от соответствующего подблока данных; E1 и Е2 - операции, используемые для формирования управляющего вектора.

Схема преобразований, показанная на фиг.1,а, осуществляет также и процедуру дешифрования при соответствующем изменении очередности использования подключей. Подключи, использованные на r-ом раунде шифрования, например, подключи Wr и Kr, при дешифровании используются на (R-r+1)-ом раунде, причем, если в раунде шифрования подключи Wr и Кr используются при выполнении операций Hi и Ln-i+1, соответственно, то в раунде дешифрования эти подключи используются при выполнении операций Ln-i+1 и Hi, соответственно. Благодаря такому изменению очередности использования подключей одна и та же схема преобразований осуществляет как процедуру шифрования, так и процедуру дешифрования. Это можно показать следующим образом.

Введем следующие обозначения: преобразованный блок данных (блок шифртекста), т.е. блок данных, поступающий на вход первого раунда дешифрования; входной блок данных, т.е. блок данных, поступающий на вход первого раунда шифрования; преобразованное значение блока шифртекста после выполнения над ним r-ого раунда дешифрования; преобразованное значение исходного блока данных после выполнения над ним r-ого раунда шифрования.

С учетом этих обозначений имеют место соотношения A(R) 1=A(0) 0 и B(R) 1= B(0) 0. Первый раунд дешифрования восстанавливает значение блока данных после (R-1)-гo раунда шифрования. Действительно, при дешифровании, например, подблока B(0) 0 на первом раунде осуществляется такая суперпозиция операций L(1) 1(0)L1 2(0) ... L(1) n(0)(B(0) 0)=B'. (1) Здесь и далее верхний индекс у операции обозначает номер раунда, на котором эта операция выполняется, а в скобках в нижнем индексе указывается режим преобразования: (0) - дешифрование или (1) - шифрование. Заметим, что подблок B(0) 0= B(R) 1 получен из подблока A(R-1) 1 после осуществления над последним следующей суперпозиции операций на R-ом раунде шифрования H(R) 1(1)H(R) 2(1) ... H(R) n(1)(A(R-1) 1)=B0 0. (2) Подставляя (2) в (1), получаем H(R) 1(1)H(R) 2(1) ... H(R) i(1) ... H(R) n-1(1)H(R) n(1)L(1) 1(0)L(1) 2(0) ... L(1) n-i+1(0) ... L(1) n-1(0)L(1) n(0)(A(R-1) 1)=B'. (3) Благодаря указанному выше изменению порядка использования подключей и тому, что согласно отличительному признаку заявляемого способа блочного итеративного шифрования для операций Нi и Ln-i+1 выполняются условия Нi= Ln-i+1 для всех значений i=1, 2, ..., n, суперпозиции следующих пар операций: H(R) n(1)L(1) 1(0); H(R) n-1(1)L(1) 2(0); ... H(R) i(1)L(1) n-i+1(0); ... H(R) 2(1)L(1) n-1(0) и H(R) 1(1)L(1) n(0) задают тождественное преобразование. С учетом этого из (2) следует B'= A1 (R-1). Для дешифруемого на первом раунде подблока A0 (0) аналогичным путем можно получить A'=H(1) 1(0)H(1) 2(0) ... H(1) n-i+1(0) ... H(1) n-1(0)H(1) n(0)(A(0) 0)=L(R) 1(1)L(R) 2(1) ... L(R) i(1) ... L(R) n-1(1)L(R) n(1)H(1) 1(0)H(1) 2(0) ... H(1) n-i+1(0) ... H(1) n-1(0)H(1) n(0)(B(R-1) 1)=B(R-1) 1. (4) Первый раунд дешифрования заканчивается перестановкой подблоков А' и В', в результате чего получаем A(1) 0=A(R-1) 1 и B(1) 0=B(R-1) 1. Таким образом, первый раунд дешифрования восстанавливает значение подблока данных после (R-1) раундов шифрования. Аналогично можно показать, что два раунда дешифрования восстанавливают значение подблока данных после (R-2) раундов шифрования, а r раундов дешифрования (1rR) восстанавливают значение подблока данных после (R-r) раундов шифрования. Последовательность преобразований входного блока A|B при шифровании можно записать в виде а последовательность преобразований блока шифртекста при его дешифровании можно представить в виде Таким образом, после R раундов дешифрования получаем исходное значение блока данных A(0)1|B(0)1 = A|B. Рассмотрим конкретные примеры реализации заявляемого способа блочного итеративного шифрования.

Пример 1.

Данный пример показан на фиг. 1, б и поясняет реализацию способа для случая n=1. Блок данных Т имеет длину 64 бит и разбивается на два 32-битовых подблока А и В. На фиг.1,б использованы следующие обозначения: Q и Q-1 - взаимно обратные управляемые двуместные операции, выполняемые над 32-битовыми двоичными векторами и имеющие 32-битовый управляющий вход.

В примере 1 формируется секретный ключ в виде следующей совокупности 32-битовых раундовых подключей: K1, K2, ..., K16 и W1, W2, ..., W16. Блок данных разбивается на два подблока А=Тdiv232 и В=Тmod232. Шифрование блока данных выполняется в соответствии со следующим алгоритмом: 1. Установить счетчик числа раундов шифрования r:= 1.

2. Используя текущее значение подблока В в качестве текущего значения управляющего вектора V, наложить подключ r на подблок А с помощью операции Q: А:=QB(A, Wr).

3. Используя текущее значение подблока А в качестве текущего значения управляющего вектора V, наложить подключ r на подблок В с помощью операции Q-1: B:=Q-1 A(B, Kr).

3. Переставить подблоки А и В.

4. Если r<16, то прирастить счетчик числа раундов: r:=r+1. и перейти к шагу 2, в противном случае - СТОП.

Блок криптограммы С формируется путем объединения преобразованных двоичных векторов А и В: C = A|B. Дешифрование блока криптограммы осуществляется с помощью этого же алгоритма, за исключением того, что при выполнении шага 2 используется подключ K17-r вместо подключа Wr, а при выполнении шага 3 - подключ W17-r вместо Kr. Шифрование и дешифрование осуществляются с помощью одного и того же алгоритма, поэтому обе эти процедуры могут быть выполнены с помощью одной и той же электронной схемы.

Пример 2. Шифрование 64-битового блока данных Т Данный пример поясняется на фиг.2,а и соответствует случаю n=3. В данном примере используются взаимно обратные управляемые перестановки Р и Р-1 с 32-битовым управляющим входом, а также управляемые двуместные операции Q и F и соответствующие им обратные управляемые двуместные операции Q-1 и F-1 с 32-битовым управляющим входом. Шифрование в соответствии с примером 2 осуществляется следующим образом. Формируется секретный ключ в виде следующей совокупности 32-битовых раундовых подключей: K1, K2, ..., K8 и W1, W2, ..., W8. Блок данных T разбивается на два 32-битовых подблока А и В. Затем выполняется шифрование блока данных в соответствии со следующим алгоритмом: 1. Установить счетчик числа раундов шифрования r:=1.

2. По подблоку В сформировать управляющий вектор V: V:=В.

3. Наложить подключ Kr на подблок А по формуле А:=QV(A, Kr).

4. По подблоку А сформировать управляющий вектор V: V:=А.

5. Наложить подблок А на подблок В по формуле B:=F-1 V(B, A).

6. По подблоку В сформировать управляющий вектор V: V:=В.

7. Преобразовать подблок А по формуле А:=РV(А).

8. По подблоку А сформировать управляющий вектор V: V:=А.

9. Преобразовать подблок В по формуле B:=P-1 V(B).

10. По подблоку В сформировать управляющий вектор V: V:=В.

11. Наложить подблок В на подблок А по формуле А:=FV(A, B).

12. По подблоку А сформировать управляющий вектор V: V:=А.

13. Наложить подключ Wr на подблок В по формуле B:=Q-1 V(B, Wr).

14. Переставить подблоки А и В.

15. Если r<8, то прирастить r: =r+1 и перейти к шагу 2, в противном случае - СТОП.

В результате выполнения алгоритма формируется блок криптограммы C = A|B. Дешифрование блока криптограммы осуществляется с помощью этого же алгоритма, за исключением того, что при выполнении шага 3 используется подключ W9-r вместо подключа Кr и при выполнении шага 13 - подключ K9-r вместо подключа Wr.

Пример 3.

Данный пример поясняется на фиг. 2,б, где Q - управляемая двуместная операция с 32-битовым управляющим входом и Q-1 - соответствующая ей обратная управляемая двуместная операция. Пример 3 соответствует случаю n=3 и использованию управляемых перестановочных инволюций Р' и Р", причем операция Р' используется в качестве операций H1 и L3, а операция Р" - в качестве операций L1 и Н3. Благодаря тому, что инволюция является операцией, обратной самой себе, то выполняются условия L1=H-1 3 и L3=H-1 1.

Шифрование в соответствии с примером 3 осуществляется следующим образом. Формируется секретный ключ в виде следующей совокупности 32-битовых раундовых подключей: K1, K2, ..., К16 и W1, W2, ..., W16. Блок данных T разбивается на два 32-битовых подблока А и В. Шифрование блока данных выполняется в соответствии со следующим алгоритмом: 1. Установить r:=1.

2. По подблоку В сформировать управляющий вектор V: V:=В.

3. Преобразовать подблок А в соответствии с формулой А:=Р'V(A).

4. По подблоку А сформировать управляющий вектор V: V:=A.

5. Преобразовать подблок В в соответствии с формулой В:=Р"V(В).

6. По подблоку В сформировать управляющий вектор V: V:=В.

7. Наложить подключ Кr на подблок А в соответствии с формулой A:=QV(A, Kr).

8. По подблоку А сформировать управляющий вектор V: V:=А.

9. Наложить подключ Wr на подблок В в соответствии с формулой B:=Q-1 V(B, Wr).

10. По подблоку В сформировать управляющий вектор V: V:=В.

11. Преобразовать подблок А по формуле А:=Р"V(А).

12. По подблоку А сформировать управляющий вектор V: V:=А.

13. Преобразовать подблок В по формуле В:=Р'V(В).

14. Переставить подблоки A и В.

15. Если r<16, то прирастить r:=r+1 и перейти к шагу 2, в противном случае - СТОП.

В результате выполнения алгоритма формируется блок криптограммы C = A|B. Дешифрование блока криптограммы осуществляется с помощью этого же алгоритма, за исключением того, что при выполнении шага 7 используется подключ W17-r вместо подключа Kr, а при выполнении шага 9 - подключ K17-r вместо подключа Wr. Такое изменение очередности использования подключей в электронных схемах может быть легко задано в зависимости от установки значения бита инвертирования Е, задающего установку режима шифрования или режима дешифрования.

Операция управляемой перестановочной инволюции над двоичными векторами длины 2n легко строится на основе двух параллельно выполняемых операций управляемой перестановки над двоичными векторами длины n. Приведенный ниже пример 4 показывает возможный вариант реализации управляемой перестановочной инволюции.

Пример 4. Управляемая перестановочная инволюция.

Данный пример поясняется на фиг.3, где Р - произвольная управляемая перестановка над двоичными векторами длины n, P-1 - управляемая перестановка, обратная по отношению к Р, V - двоичный вектор длины 2n, используемый в качестве управляющего вектора для операции управляемой перестановочной инволюции Р*. Один и тот же двоичный вектор V служит управляющим вектором для обеих операций Р и Р-1, благодаря чему при любом заданном значении V реализуемые модификации этих управляемых перестановок являются взаимно обратными, т. е. операционные блоки Р и Р-1 для всех значений V осуществляют две параллельные взаимно обратные перестановки РV и P-1 V. На фиг.3,а показана схема преобразований двоичного вектора А длины 2n, который разбивается на два n-битовых двоичных вектора А' и A", которые соответственно преобразуются с помощью операций Р и Р-1. Их преобразованные n-битовые значения B'=РV(А') и В"= PV -1(A") переставляются и объединяются в соответствии с формулой B = B|B. Двоичный вектор В длины 2n является результатом преобразования P*V(A). На фиг.3,б показаны преобразования двоичного вектора В с помощью операции Р* при том же значении управляющего вектора, которое он имел при выполнении преобразований двоичного вектора А. В результате формируется исходный двоичный вектор, т.е. А=P*V(B). Таким образом, имеет место соотношение P*V(P*V(A))= A, т.е. схема преобразований на фиг.3,а задает управляемую перестановочную инволюцию для любой управляемой перестановки Р (при этом выбор Р однозначно задает выбор Р-1).

Пример 5.

Данный пример поясняется на фиг.4 и соответствует реализации способа для случая n=2. Особенностью этого примера является использование одной и той же операции в качестве пары соответствующих друг другу взаимно обратных операций Н2 и L1, где L1=H-1 2. В качестве такой операции используется операция поразрядного суммирования по модулю два (), которая является обратной самой себе, т. е. из соотношения Z = AKr следует справедливость соотношения A = ZKr. В этом примере используются также две взаимно обратные управляемые двуместные операции Q и Q-1 с 32-битовым управляющим входом.

В примере 5 используется секретный ключ в виде совокупности 32-битовых раундовых подключей: K1, K2, ..., K16 и W1, W2, ..., W16. Блок данных разбивается на два 32-битовых подблока А и В. Шифрование блока данных выполняется в соответствии со следующим алгоритмом: 1. Установить счетчик числа раундов шифрования r:=1.

2. Используя текущее значение подблока В в качестве текущего значения управляющего вектора V, наложить подключ r на подблок A с помощью операции Q: A:= QB(A, Wr).

3. Наложить подключ Kr на подблок A с помощью операции "": A := AKr. 4. Наложить подключ Wr на подблок В с помощью операции "": B := BWr. 5. Используя текущее значение подблока А в качестве текущего значения управляющего вектора V, наложить подключ r на подблок В с помощью операции Q-1: B:=Q-1 A(B, Kr).

6. Переставить подблоки А и В.

7. Если r<16, то прирастить счетчик числа раундов: r:=r+1. и перейти к шагу 2, в противном случае - СТОП.

После завершения этого имеем блок шифртекста C = A|B. Дешифрование блока криптограммы осуществляется с помощью этого же алгоритма, за исключением того, что при выполнении шагов 2 и 4 используется подключ K17-r вместо подключа Wr, а при выполнении шагов 3 и 5 - подключ W17-r вместо Kr.

Приведенные примеры показывают, что предлагаемый способ итеративного шифрования блоков дискретных данных технически реализуем и позволяет решить поставленную задачу.

Формула изобретения

1. Способ блочного итеративного шифрования, включающий формирование секретного ключа в виде совокупности подключей, разбиение блока данных на два подблока и выполнение R раундов шифрования, каждый из которых заключается в преобразовании первого подблока путем выполнения над ним последовательности операций L1, L2, . . . , Ln и преобразование второго подблока путем выполнения над ним последовательности операций H1, Н2, . . . , Нn, где n1, причем, по крайней мере, для одного значения i, где 1in, в качестве операции Нi используют управляемую операцию и, по крайней мере, для одного значения j, где 1jn, в качестве опе