Способ итеративного блочного шифрования двоичных данных
Изобретение относится к области электросвязи и вычислительной техники, а конкретнее к области криптографических способов для шифрования данных. Способ итеративного блочного шифрования двоичных данных заключается в формировании секретного ключа в виде совокупности подключей, разбиении блока данных на m2 подблоков B1, B2,..., Вm и преобразовании подблоков, причем преобразование подблока j, где 1
j
m, осуществляют путем преобразования, по крайней мере, одного подключа с помощью управляемой операции, зависящей от подблока Вh, где 1
j
m и h
j, и наложения с помощью двуместной операции преобразованного подключа на подблок Bj, при этом в качестве управляемой операции используют управляемую двуместную операцию. Технический результат, достигаемый при осуществлении данного способа, состоит в увеличении скорости шифрования. 2 з.п.ф-лы, 2 ил.
Изобретение относится к области электросвязи и вычислительной техники, а конкретнее к области криптографических способов и устройств для шифрования сообщений (информации).
В совокупности признаков заявляемого способа используются следующие термины: - шифр представляет собой совокупность элементарных шагов преобразования входных данных с использованием секретного ключа; - секретный ключ представляет из себя двоичную информацию, известную только законному пользователю; - подключ - часть секретного ключа; - шифрование есть процесс преобразования информации, который зависит от секретного ключа и преобразует исходный текст в шифротекст (криптограмму), представляющий собой псевдослучайную последовательность знаков, из которой получение информации без знания секретного ключа практически неосуществимо; - дешифрование есть процесс обратный процедуре шифрования; дешифрование обеспечивает восстановление информации по криптограмме при знании секретного ключа; - двоичный вектор - это некоторая последовательность нулевых и единичных битов, например (101101011); - вес Хемминга от двоичного вектора - это целочисленная функция, значение которой равно числу единиц в двоичном векторе; - криптоанализ - метод вычисления секретного ключа для получения несанкционированного доступа к зашифрованной информации; - криптостойкость является мерой надежности защиты зашифрованной информации и представляет собой трудоемкость, измеренную в количестве элементарных операций, которые необходимо выполнить для восстановления информации по криптограмме при знании алгоритма преобразования, но без знания секретного ключа;- одноместная операция - это операция, выполняемая над двоичным вектором; двоичный вектор, формируемый на выходе одноместной операции, зависит только от входного двоичного вектора; примером одноместных операций являются операции циклического сдвига;
- двуместная операция - это операция выполняемая над двумя операндами; результат выполнения некоторой данной двуместной операции зависит от значения каждого операнда; примером двуместных операций являются операции сложения, вычитания, умножения и др.;
- операнд - это двоичный вектор, над которым выполняется двуместная или одноместная операция;
- управляемая двуместная операция - это операция, выполняемая над двумя операндами под управлением некоторого двоичного вектора, называемого управляющим кодом; результат выполнения некоторой управляемой двуместной операции при фиксированном управляющем коде зависит от значения каждого операнда, а при фиксированных значениях операндов - от значения управляющего вектора; примеры реализации управляемых двуместных операций описаны в патенте РФ N 2140716 [Молдовян А. А., Молдовян Н.А., Молдовяну П.А. Способ криптографического преобразования блоков цифровых данных // БИ N 30 от 27.10.1999]; в формулах управляемую двуместную операцию будем обозначать записью Z:=QV(A, B), где А, В - операнды, V - управляющий код, Z - двоичный вектор, являющийся результатом выполнения управляемой двуместной операции QV;
- управляющий код (или управляющий двоичный вектор) - совокупность единичных и нулевых сигналов на управляющем входе управляемого операционного блока;
- модификация управляемой двуместной операции - двуместная операция, соответствующая преобразованию двух операндов при фиксированном значении управляющего кода;
- управляемая перестановка - это операция, заключающаяся в перестановке битов операнда в зависимости от значения управляющего кода; примеры реализации управляемых перестановок описаны в патенте N 2140714 [Алексеев Л.Е., Белкин Т. Г. , Молдовян А.А., Молдовян Н.А. Способ итеративного шифрования блоков данных // БИ N 30 от 27.10.1999] и в статье [Гуц Н.Д., Изотов Б.В., Молдовян Н. А. Управляемые перестановки с симметричной структурой в блочных шифрах // Вопросы защиты информации, 2000, N 4, с.57-64]; в формулах управляемую перестановку будем обозначать записью РV, а преобразование операнда А путем выполнения над ним управляемой перестановки - записью А:=РV(A), где V - управляющий код; управляемая перестановка является частным случаем управляемой одноместной операции;
- модификация управляемой перестановки - фиксированная перестановка битов операнда, соответствующая заданному фиксированному значению управляющего кода;
- обратная управляемая двуместная операция (по отношению к некоторой данной управляемой двуместной операции Q - это такая управляемая двуместная операция (обозначаемая как Q-1), которая для любого заданного значения управляющего кода V и любого заданного значения операнда В удовлетворяет условию A=QV -1, если Z=QV(A.,B); варианты реализации двух взаимно обратных управляемых двуместных операций описаны в работе [Гуц Н.Д., Молдовян А.А., Молдовян Н. А. Гибкие аппаратно-ориентированные шифры на базе управляемых сумматоров // Вопросы защиты информации, 2000, N 1, с.8-15];
- обращаемая управляемая двуместная операция Q* - это такая управляемая двуместная операция, которая контролируется специальным битом инвертирования е; разные значения е задают два разных варианта управляемой двуместной операции, причем эти варианты являются взаимно обратными; например, если при е= 0 выполняется операция Q*[e=0], а при е=1 - операция Q*[e=1], то для этих управляемых двуместных операций имеет место соотношение Q*[e=1]=Q*[e=0] -1; вариант реализации обращаемой управляемой двуместной операции описан в работе [Гуц Н. Д. , Молдовян А.А., Молдовян Н.А. Гибкие аппаратно-ориентированные шифры на базе управляемых сумматоров // Вопросы защиты информации, 2000, N 1, с.8-15];
- операция конкатенации - это операция объединения нескольких двоичных векторов, в результате которой формируется новый двоичный вектор, включающий все биты каждого из объединяемых двоичных векторов, причем взаимное расположение битов, соответствующих исходным двоичным векторам не изменяется; например, конкатенация двоичных векторов W1=(101101011) и W2=(011101010) записывается в виде W1\W2=(101101011011101010). Известны способы блочного шифрования данных, см., например, шифр DES [B. Schneier. Applied Cryptography. Second Eddition. - New York: John Wiley & Sons, Inc., 1966, p.270-277]. В данном способе шифрование блоков данных выполняют путем формирования секретного ключа, разбиения преобразуемого блока данных на два подблока L и R и поочередного изменения последних путем выполнения операции поразрядного сложения по модулю 2 (которую будем обозначать знаком













Q - операционный блок, осуществляющий управляемую двуместную операцию, модификация которой задается значением управляющего кода V=A, подаваемого на управляющий вход операционного блока Q;
А и В - подблоки преобразуемого блока данных;
"


F - второй операнд, используемый при выполнении управляемой двуместной операции над подключом; в качестве F может быть использован подблок данных А или дополнительный подключ. Фиг.1а соответствует выполнению одного раунда шифрования. После выполнения каждого раунда шифрования, кроме последнего, осуществляется перестановка подблоков. Дешифрование осуществляется по этой же схеме, но при использовании подключей в обратном порядке. Варианты построения электронных схем, реализующих управляемую двуместную операцию Q описаны в работе [Гуц Н.Д. и др. Гибкие аппаратно-ориентированные шифры на базе управляемых сумматоров // Вопросы защиты информации, 2000, N 1, с.8-15]. При выполнении дешифрующих преобразований подключи используются в обратном порядке, т.е. подключи Кr и Wr, использованные на r-м раунде шифрования, при осуществлении дешифрования используются на (R-r+1)-м раунде, где R - число раундов шифрования. Таким образом, для подключей K'r и W'r, используемых на r-м раунде дешифрования, имеем соотношения K'r=KR-r+1 и W'r=WR-r+1. После выполнения последнего (R-го) раунда шифрования или дешифрования перестановка подблоков данных не выполняется. С точки зрения применения в алгоритмах шифрования управляемые операции обладают тем достоинством, что их модификации выбираются в зависимости от переменных параметров процесса шифрования. Переменными параметрами могут быть подключи, подблоки информационного блока или специально вырабатываемые значения, изменяющиеся с изменением исходного значения информационного блока. В общем случае значение, управляющее двуместной операцией, будем называть управляющим кодом V. Под формированием управляющего кода V будем понимать формирование сигналов на управляющем входе операционного блока, выполняющего управляемые двуместные операции. В конкретных примерах реализации заявляемого способ итеративного блочного шифрования двоичных данных в качестве процедуры преобразования двоичного вектора F используется операция управляемой перестановки с 32-битовым входом для преобразуемых данных и 96-битовым управляющим входом, на который поступает управляющий код, в зависимости от которого выбирается модификация управляемой перестановки. Вариант построения операционного блока для реализации такой управляемой перестановки описан в статье [Гуц Н.Д. и др. Управляемые перестановки с симметричной структурой в блочных шифрах // Вопросы защиты информации, 2000, N 4, с.62-63]. Пример 1
Данный пример поясняется на фиг.1б. Он соответствует шифрованию 64-битовых блоков данных. Ключ шифрования формируется в виде множества из 16 K1, K2, K3, . .. A16, каждый из которых имеет длину 32 бит. Входной блок данных разбивается на два 32-битовых подблока А и В. Процедура шифрования входного блока описывается следующим алгоритмом:
1. Установить счетчик числа раундов r=1. 2. Преобразовать подключ Кr путем наложения на него подблока А с помощью управляемой двуместной операции Q, используя в качестве управляющего кода значение подблока А:
Kr:=QA(Kr,A). 3. Преобразовать подблок В: В:=В


Пример 2 поясняется на фиг.1в и соответствует шифрованию 64-битовых блоков данных. Ключ шифрования формируется в виде множества из 16 подключей K1, К2, К3,... K16, каждый из которых имеет длину 32 бит. В каждом раунде преобразования используются два подключа, а именно в r-м раунде используются подключи Кr и Wr, где Wr=Kr+8 для r=1, 2,..., 8 и Wr=Kr-8 для r=9, 10,..., 16. Входной блок данных разбивается на два 32-битовых подблока А и В. Процедура шифрования входного блока описывается следующим алгоритмом:
1. Установить счетчик числа раундов r=1. 2. В зависимости от подблока А сформировать управляющий код V:
V:=А

3. Преобразовать подключ Кr путем наложения на него подключа Wr, с помощью управляемой двуместной операции Q:
Kr:=QV(Kr,Wr). 4. Преобразовать подблок В: В:=В


Пример 3 поясняется на фиг.1г и соответствует шифрованию 64-битовых блоков данных. Ключ шифрования формируется в виде множества из 16 подключей К1, К2, K3, ... К16, каждый из которых имеет длину 32 бит. В каждом раунде преобразования используются два подключа, а именно в r-м раунде используются подключи Кr и Wr, где Wr=Kr+8 для r=1, 2,..., 8 и Wr=Kr-8 для r=9, 10,..., 16. Входной блок данных разбивается на два 32-битовых подблока А и В. Процедура шифрования входного блока описывается следующим алгоритмом:
1. Установить счетчик числа раундов r=1 и значение параметра режима шифрования z=0 (шифрование). 2. По подблоку А сформировать управляющий код V1:
V1:=A

Kr:=QV1(Kr,Wr). 4. Преобразовать подблок В с помощью обращаемой управляемой двуместной операции Q*[e=z], используя в качестве управляющего кода значение подблока А:
B:=Q*A,[e=z](B,Kr). 5. Если r

В данном примере поясняется шифрование 96-битовых блоков данных. Ключ шифрования формируется в виде 24 подключей K1, К2 K3,... A24, каждый из которых имеет длину 32 бит. Входной блок данных разбивается на три 32-битовых подблока A, В и С. Процедура шифрования входного блока описывается следующим алгоритмом:
1. Установить счетчик числа раундов r=1. 2. Преобразовать подключ К3r-2: К3r-2:=QC(K3r-2,B). 3. Преобразовать подблок А: А:=А




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









РИСУНКИ
Рисунок 1, Рисунок 2