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

Реферат

 

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

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

В совокупности признаков заявляемого способа используются следующие термины: - секретный ключ представляет из себя двоичную информацию, известную только законному пользователю; - подключ - часть секретного ключа; - шифрование есть процесс преобразования информации, который зависит от секретного ключа и преобразует исходный текст в шифртекст (криптограмму), представляющий собой псевдослучайную последовательность знаков, из которой получение информации без знания секретного ключа практически неосуществимо; - дешифрование есть процесс, обратный процедуре шифрования; дешифрование обеспечивает восстановление информации по криптограмме при знании секретного ключа; - шифр представляет собой совокупность элементарных шагов преобразования входных данных с использованием секретного ключа; шифр может быть реализован в виде программы для ЭВМ или в виде отдельного устройства; - двоичный вектор - это некоторая последовательность нулевых и единичных битов, например (101101011); конкретная структура двоичного вектора может быть интерпретирована как двоичное число, если считать, что позиция каждого бита соответствует двоичному разряду, т. е. двоичному вектору может быть сопоставлено численное значение, которое определяется однозначно структурой двоичного вектора; - криптоанализ - метод вычисления секретного ключа для получения несанкционированного доступа к зашифрованной информации; - криптостойкость является мерой надежности защиты зашифрованной информации и представляет собой трудоемкость, измеренную в количестве элементарных операций, которые необходимо выполнить для восстановления информации по криптограмме при знании алгоритма преобразования, но без знания секретного ключа; - криптоаналитик - лицо, выполняющее криптоанализ; - операции циклического сдвига, зависящие от преобразуемых подблоков или зависящие от двоичного вектора - это операции циклического сдвига на число бит, задаваемое значением подблока или значением двоичного вектора; операции циклического сдвига влево (вправо) обозначаются знаком "<<<" (">>>"), например, запись В<<<А обозначает операцию циклического сдвига влево подблока В на число бит, равное значению двоичного вектора А; - одноместная операция - это операция, выполняемая над одним операндом (блоком данных или двоичным вектором); значение подблока после выполнения некоторой данной одноместной операции зависит только от его начального значения; примером одноместных операций являются операции циклического сдвига; - двуместная операция - это операция, выполняемая над двумя операндами; результат выполнения некоторой данной двуместной операции зависит от значения каждого операнда; примером двуместных операций являются операции сложения, вычитания, умножения и др.; - управляемая двуместная операция - это операция, выполняемая над двумя операндами под управлением некоторого двоичного вектора, называемого управляющим кодом; результат выполнения некоторой управляемой двуместной операции при фиксированном управляющем коде зависит от значения каждого операнда, а при фиксированных значениях операндов - от значения управляющего кода; примеры реализации управляемых двуместных операций описаны в патенте N 2140716 [Молдовян А. А., Молдовян Н.А., Молдовяну П.А. Способ криптографического преобразования блоков цифровых данных// Патент РФ N 2140716, МПК6 Н 04 L 9/28, Бюл. N 30 от 27.10.1999]; в формулах управляемую двуместную операцию будем обозначать записью В:=QV(A, B), где A, В - операнды, V - управляющий код; - модификация управляемой двуместной операции - двуместная операция, соответствующая преобразованию двух операндов при фиксированном значении управляющего кода; - управляемая перестановка - это операция, выполняемая над одним операндом под управлением некоторого двоичного вектора, называемого управляющим кодом, и заключающаяся в перестановке битов операнда в зависимости от значения управляющего кода; примеры реализации управляемых перестановок описаны в патенте N 2140714 [Алексеев Л.Е., Белкин Т.Г., Молдовян А.А., Молдовян Н.А. Способ итеративного шифрования блоков данных // Патент РФ N 2140714, МПК6 Н 04 L 9/20, Бюл. N 30 от 27.10.1999]; в формулах управляемую перестановку будем обозначать записью РV, а преобразование операнда В путем выполнения над ним управляемой перестановки - записью В:=РV(В), где V - управляющий код; управляемая перестановка является частным случаем управляемой одноместной операции; - модификация управляемой перестановки - фиксированная перестановка битов операнда, соответствующая заданному значению управляющего кода; - операция конкатенации - это операция объединения нескольких двоичных векторов, в результате которой формируется новый двоичный вектор, включающий все биты каждого из объединяемых двоичных векторов, причем взаимное расположение битов, соответствующих исходным двоичным векторам, не изменяется; например, конкатенация двоичных векторов W1=(101101011) и W2=(011101010) записывается в виде W1|W2=(101101011011101010); данные двоичные вектора могут быть объединены операцией конкатенации еще одним способом: W2|W1= (011101010101101011).

Известны способы блочного итеративного шифрования цифровых данных, см., например, шифр DES [B. Schneier, "Applied Cryptography", Second Eddition, John Wiley & Sons, Inc. , New York, 1996, pp.270-277]. В данном способе шифрование блоков данных выполняют путем формирования секретного ключа, разбиения преобразуемого блока данных на два подблока L и R и поочередного изменения последних путем выполнения операции поразрядного суммирования по модулю два над подблоком L и двоичным вектором, который формируется как выходное значение некоторой функции Е от значения подблока R. После этого подблоки переставляются местами. Функция F в указанном способе реализуется путем выполнения операций перестановки и подстановки, выполняемых над подблоком R. Данный способ обладает высокой скоростью преобразований при реализации в виде специализированных электронных схем. Однако, известный способ-аналог использует секретный ключ малого размера (56 бит), что делает его уязвимым к криптоанализу на основе подбора ключа. Последнее связано с высокой вычислительной мощностью современных ЭВМ. Другим известным способом блочного итеративного шифрования данных является способ, реализованный в шифре RC5 [B.Schneier, "Applied Cryptography", Second Eddition, John Wiley & Sons, Inc. , New York, 1996, pp.344-346]. Данный способ включает в себя формирование секретного ключа в виде совокупности подключей, разбиение двоичного кода информации на q-битовые информационные блоки и поочередное преобразование q-битовых блоков. Преобразование q-битовых блоков осуществляют путем разбиения q-битового блока данных на n-битовые подблоки А и В и поочередное преобразование подблоков. Подблоки преобразуются путем выполнения над ними одноместных и двуместных операций. В качестве двуместных операций используются операции сложения по модулю 2n, где n=q/2=8, 16, 32, 64, и операция поразрядного суммирования по модулю 2. В качестве одноместной операции используется операция циклического сдвига влево, причем число бит, на которое сдвигается преобразуемый подблок, зависит от значения другого подблока, что определяет зависимость операции циклического сдвига на текущем шаге преобразования подблока от исходного значения входного блока данных. Двуместная операция выполняется над подблоком и подключом, а также над двумя подблоками. Характерным для способа RC5 является использование операции циклического сдвига, зависящей от значения входного блока. Подблок, например подблок В, преобразуют путем наложения подблока А на подблок В с помощью операции поразрядного суммирования по модулю 2, т.е. выполняется операция поразрядного суммирования по модулю 2 (обозначаемая знаком "") над подблоками А и В и значение, получаемое после выполнения этой операции, присваивается подблоку В. Это записывается в виде соотношения B: = BA, где знак ":=" обозначает операцию присваивания. После этого над подблоком В выполняют операцию циклического сдвига влево на число бит, равное значению подблока А: В: = <<<А. Затем над подблоком В и одним из подключей S выполняют операцию суммирования по модулю 2n, где n - длина подблока в битах: В:=(В+S) mod 2n. После этого аналогичным образом преобразуется подблок A. Выполняется несколько таких шагов преобразования обоих подблоков. Недостатком шифра RC5 является недостаточная стойкость к дифференциальному криптоанализу.

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

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

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

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

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

Новым является также то, что управляющий код формируют по секретному ключу.

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

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

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

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

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

Новым является и то, что в качестве управляемых операций используются управляемые перестановки.

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

Также новым является то, что в качестве управляемых операций используются управляемые двуместные операции.

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

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

Обобщенная схема итеративного шифрования блоков данных на основе заявляемого способа представлена структурой раунда шифрования, показанной на фиг. 1а, где S1 и S2 - операционные блоки, выполняющие управляемые операции; выбор текущих модификаций этих операций осуществляется в зависимости от управляющих кодов V1 и V2, подаваемых на управляющий вход соответствующих блоков перестановок; А и В - подблоки преобразуемого блока данных; F - двоичный вектор, формируемый по подблоку данных А в соответствии с формулой F:=A; Е - операционный блок, обозначающий процедуры преобразования двоичного вектора; на выходе операционного блока Е фомируется значение преобразованного двоичного вектора F:=E(A, Kr); Кr - r-й раундовый подключ.

Операционный блок S управляется двоичным вектором V, который зависит от переменных параметров, участвующих в шифровании. Такими переменными параметрами могут быть подключи, подблоки информационного блока или специально вырабатываемые значения, изменяющиеся с изменением исходного значения информационного блока. В качестве переменного параметра, управляющего операцией перестановки, могут использоваться также значения, вырабатываемые из случайных или псевдослучайных данных. В общем случае значение, управляющее операцией S, будем называть управляющим кодом V. Под формированием управляющего кода V будем понимать формирование сигналов на управляющем входе управляемого операционного блока. Вариант управляемой операции S при заданном V будем называть модификацией управляемой операции, соответствующей значению V. Управляющий код может быть сформирован, например, следующими путями: 1) по подблоку данных В(V:=В или V: = (B), где - фиксированная перестановка, реализуемая в электронных схемах как простое переплетение проводников), 2) по i-му раундовому подключу Ki(V: = (Ki) или V:=Ki, 3) по подблоку данных и подключу (V: = (B)Ki). Шифрование заключается в выполнении R раундов преобразования, показанных на фиг. 1а, и осуществления перестановки подблоков А и В после выполнения R-го раунда. В общем случае операции S1 и S2 могут быть произвольными операциями, для которых существуют соответствующие им обратные операции, что позволяет осуществить дешифрование шифртекста. Раунду шифрования, показанному на фиг.1а, соответствует раунд дешифрования, показанный на фиг.1б, где S1 -1 - операция, обратная операции S1; S2 -1 - операция, обратная операции S2; Е - операционный блок, совпадающий с операционным блоком Е на фиг.1а; на выходе операционного блока Е при дешифровании фомируется значение преобразованного двоичного вектора F:=Е(А, КR-r+1); KR-r+1 - подключ, используемый на r-м раунде дешифрования. Дешифрование заключается в выполнении R раундов преобразования, показанных на фиг.1б, и осуществления перестановки подблоков А и В после выполнения R-го раунда. В общем случае шифрование и дешифрование осуществляются с помощью разных электронных схем. Упрощение аппаратной реализации заявляемого способа достигается выбором таких операций S1 и S2, которые являются взаимно обратными, т. е. такими управляемыми операциями, для которых модификации, соответствующие одинаковым значениям управляющих кодов V1 и V2, являются взаимно обратными операциями. В этом случае дешифрование может быть осуществлено с помощью той же схемы, что и шифрование, путем установки обратного порядка использования подключей.

В качестве управляемых операций S1 и S2 могут быть использованы (1) управляемые перестановки и (2) управляемые двуместные операции. Например, могут быть использованы управляемые перестановки, описанные в патенте N 2140713 [Молдовян А.А., Молдовян Н.А., Молдовяну П.А. Способ блочного криптографического преобразования двоичной информации // Патент РФ N 2140713, МПК6 Н 04 L 9/00, Бюл. N 30 от 27.10.1999], или управляемые двуместные операции, описанные в патенте N 2140716 [Молдовян А.А., Молдовян Н.А., Молдовяну П.А. Способ криптографического преобразования блоков цифровых данных// Патент РФ N 2140716, МПК6 Н 04 L 9/28, Бюл. N 30 от 27.10.1999]. Таким образом, в качестве управляемого операционного блока S может быть использован управляемый операционный блок перестановок (блок Р) или управляемый операционный блок, выполняющий двуместную операцию, зависящую от управляющего кода (блок Q). Операционные блоки, выполняющие управляемые перестановки или управляемые двуместные операции, могут быть легко реализованы в виде несложных быстродействующих комбинационных электронных схем, построенных на стандартных элементах логических схем. Блоки Р и блоки Q могут использоваться также для преобразования двоичного вектора F вместо обычно используемых блоков подстановки, имеющих низкое быстродействие, благодаря чему уменьшается время преобразования двоичного вектора и дополнительно повышается скорость шифрования. Современная микроэлектронная технология позволяет изготавливать недорогие электронные устройства, основанные на управляемых перестановках и обеспечивающие скорость шифрования до 1 Гбит/с.

Рассмотрим конкретные примеры реализации заявляемого способа блочного итеративного шифрования цифровых данных.

Пример 1: шифрование 64-битового блока данных Т. Пример 1 поясняется на фиг. 1в, где Р и Р-1 - управляемые операционные блоки с 32-битовым информационным входом и 64-битовым управляющим входом, реализующие взаимно обратные управляемые перестановки. Под взаимно обратными управляемыми перестановками понимаются такие управляемые перестановки, для которых при всех значениях управляющего кода соответствующие им модификации являются взаимно обратными фиксированными перестановками. Взаимно обратными фиксированными перестановками и -1 являются такие фиксированные перестановки, последовательное выполнение которых над любым операндом не изменяют значения последнего, т.е. имеют место соотношения: (-1(A)) = A, и -1(()) = A. Для произвольного операционного блока Р, выполняющего управляемые перестановки, легко может быть построен соответствующий ему операционный блок Р-1, выполняющий обратные управляемые перестановки. Блок Р-1 представляет собой блок Р, в котором вход используется в качестве выхода, а выход - в качестве входа.

Шифрование в соответствии с примером 1 осуществляется следующим образом. Сформировать секретный ключ, представленный в виде следующей совокупности n-битовых раундовых подключей: K1, К2,..., К16 и W1, W2,..., W16. Разбить блок данных на два подблока А=Т div 232 и В=T mod 232. Шифрование блока данных выполнить в соответствии со следующим алгоритмом.

1. Установить счетчик числа раундов шифрования r:=1.

2. Сформировать по подключу Кr и подблоку В управляющий код V1: V1: = B|Kr, где "|" - операция конкатенации.

3. В зависимости от значения V1 преобразовать подблок А путем выполнения управляемой операции перестановки, осуществляемой операционным блоком Р: А:= РV1(A).

4. Сформировать двоичный вектор F: F:=А.

5. Сформировать 32-битовый подключ Z для управления подблоком E, выполняющим раундовую процедуру шифрования в способе-прототипе: Z: = KrWr. 6. Используя раундовый подключ Z, преобразовать двоичный вектор F в соответствии с процедурами преобразования двоичного вектора, выполняемыми в способе-прототипе: F:=E(F, Z).

7. Используя операцию поразрядного суммирования по модулю 2, наложить преобразованный двоичный вектор F на подблок В: B: = BF. 8. Сформировать по подключу Wr и подблоку В управляющий код V2: V2: = B|Wr. 9. Преобразовать подблок A, выполнив над ним управляемую операцию перестановки, осуществляемую операционным блоком Р-1, в зависимости от значения управляющего кода: B: = P-1V2(A). 10. Если r<16, то прирастить r:=r+1, переставить подблоки А и В (т.е. взять двоичный вектор A в качестве двоичного вектора В, а двоичный вектор В - в качестве двоичного вектора A) и перейти к шагу 2.

11. СТОП.

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

Пример 2: шифрование 64-битового блока данных Т. Пример 2 поясняется на фиг. 2а, где Q и Q-1 - операционные блоки с 32-битовым информационным входом и 32-битовым управляющим входом, реализующие взаимно обратные управляемые двуместные операции. Под взаимно обратными управляемыми двуместными операциями понимаются такие управляемые двуместные операции, для которых при всех значениях управляющего кода соответствующие им модификации являются взаимно обратными двуместными операциями. В примере 2 шифрование осуществляется следующим образом. Сформировать секретный ключ, представленный в виде следующей совокупности n-битовых раундовых подключей: K1, K2,..., K10 и W1, W2,..., W10. Разбить блок данных на два подблока А=Т div 232 и В=Т mod 232. Выполнить шифрование блока данных в соответствии со следующим алгоритмом.

1. Установить счетчик числа раундов шифрования r:=1.

2. Сформировать по подключу Кr управляющий код V1: V1:=Kr.

3. В зависимости от значения V1 преобразовать подблок А путем выполнения управляемой двуместной операции над подблоком А и подключом Wr: A: = QV1(A,Wr). 4. Сформировать двоичный вектор F: F:=А.

5. Сформировать 32-битовый подключ Z для управления подблоком Е, выполняющим раундовую процедуру шифрования в способе-прототипе: Z: = KrWr. 6. Используя раундовый подключ Z, преобразовать двоичный вектор F в соответствии с процедурами преобразования двоичного вектора, выполняемыми в способе-прототипе: F:=E(F, Z).

7. Используя операцию поразрядного суммирования по модулю 2, наложить преобразованный двоичный вектор F на подблок В: B: = BF. 8. Сформировать по подключу Wr управляющий код V2: V2:=Wr.

9. В зависимости от значения V2 преобразовать подблок А путем выполнения управляемой двуместной операции Q-1 над подблоком А и подключом Kr: A: = Q-1V2(A,Kr). 10. Если r<10, то прирастить r:=r+1, переставить подблоки А и В и перейти к шагу 2.

14. СТОП.

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

Пример 3: шифрование 64-битового блока данных Т. Пример 3 поясняется на фиг. 2б, где Q и Q-1 - операционные блоки с 32-битовым информационным входом и 32-битовым управляющим входом, реализующие взаимно обратные управляемые двуместные операции. Шифрование осуществляется следующим образом. Сформировать секретный ключ, представленный в виде следующей совокупности n-битовых раундовых подключей: K1, K2,..., K10 и W1, W2,..., W10. Разбить блок данных на два подблока А=Т div 232 и В=Т mod 232. Выполнить шифрование блока данных в соответствии со следующим алгоритмом.

1. Установить счетчик числа раундов шифрования r:=1.

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

3. В зависимости от значения V1 преобразовать подблок А путем выполнения управляемой двуместной операции над подблоком А и подключом Кr: A: = QV1(A,Kr). 4. Сформировать двоичный вектор F: F:=A.

5. Сформировать 32-битовый подключ Z для управления подблоком E, выполняющим раундовую процедуру шифрования в способе-прототипе: Z: = KrWr. 6. Используя раундовый подключ Z, преобразовать двоичный вектор F в соответствии с процедурами преобразования двоичного вектора, выполняемыми в способе-прототипе: F:=E(F, Z).

7. Используя операцию поразрядного суммирования по модулю 2, наложить преобразованный двоичный вектор F на подблок В: B: = BF. 8. Сформировать по подблоку В управляющий код V2: V2:=В.

9. В зависимости от значения V2 преобразовать подблок А путем выполнения управляемой двуместной операции Q-1 над подблоком А и подключом Wr: A: = Q-1V2(A,Wr). 10. Если r<10, то прирастить r:=r+1, переставить подблоки А и В и перейти к шагу 2.

14. СТОП.

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

Пример 4: реализация обратных управляемых двуместных операций. Данный пример поясняет возможность реализации взаимно обратных двуместных операций с помощью одной и той же электронной схемы. Выбор режима выполнения прямой управляемой двуместной операции или режима выполнения соответствующей обратной управляемой двуместной операции задается некоторым управляющим битом i. Этот управляющий бит может одновременно использоваться для задания очередности использования подключей. Например, при i=1 (режим шифрования) устанавливается прямой порядок использования подключей и прямая управляемая двуместная операция, а при i=0 (режим дешифрования) - обратный порядок использования подключей и обратная управляемая двуместная операция.

Операционные блоки, выполняющие обратимую управляемую двуместную операцию, могут быть построены на основе обратимых сумматоров. На фиг.3а показан пример построения обратимого сумматора i, а на фиг.3б - пример обратимой управляемой двуместной операции, реализуемой с помощью операционного блока, состоящего из совокупности обратимых сумматоров i. На фиг.3а использованы следующие обозначения: - элемент, выполняющий операцию суммирования по модулю два над двумя входными битами; Р2/1 - элемент, выполняющий перестановку двух входных битов при значении i= 0; при i=1 входные биты передаются на выход данного элемента без перестановки; & - логический элемент, выполняющий операцию И; a и w - биты операндов А и W, относящиеся к соответствующим разрядам; g - бит переноса, передаваемый на вход обратимого сумматора следующего разряда; u - бит переноса, поступающий с выхода обратимого сумматора предыдущего разряда.

На фиг.3б использованы следующие обозначения: i - обратимый сумматор; & - логический элемент, выполняющий операцию И; аh(h=1, 2,..., n) - биты операнда А=(аn,...,a2,a1); wh(h=1, 2,..., п) - биты операнда W=(wn,..., w2, w1); vh(h=1, 2,..., n) - биты управляющего кода V=(vn,..., v2, v1).

Операционный блок на фиг.3б реализует при i=0 прямую управляемую двуместную операцию, а при i=1 - соответствующую ей обратную управляемую двуместную операцию, благодаря тому, что над битами каждого разряда выполняется обратимая операция и в соответствующих разрядах при прямой и обратной операциях формируются одинаковые биты переноса.

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

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

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

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

2. Способ по п. 1, отличающийся тем, что управляющий код формируют по секретному ключу.

3. Способ по п. 1, отличающийся тем, что управляющий код формируют по секретному ключу и по значению второго подблока.

4. Способ по п. 1, отличающийся тем, что в качестве второй управляемой операции используется управляемая двуместная операция, являющаяся обратной по отношению к первой управляемой операции.

5. Способ по п. 1, отличающийся тем, что в качестве первой и второй управляемых операций используются управляемые перестановки.

6. Способ по п. 1, отличающийся тем, что в качестве первой и второй управляемых операций используются управляемые двуместные операции.

РИСУНКИ

Рисунок 1, Рисунок 2, Рисунок 3