СПОСОБ ШИФРОВАНИЯ БЛОКОВ ЦИФРОВЫХ ДАННЫХ Российский патент 1999 года по МПК H04L9/00 

Описание патента на изобретение RU2124814C1

Изобретение относится к области электросвязи и вычислительной техники, а конкретнее к области криптографических способов и устройств для шифрования сообщений (информации). В совокупности признаков заявляемого способа используются следующие термины:
- секретный ключ представляет собой двоичную информацию, известную только законному пользователю;
- подключ - элемент секретного ключа, представленного как совокупность подключей;
- шифрование есть процесс преобразования информации, который зависит от секретного ключа и преобразует исходный текст в шифртекст, представляющий собой псевдослучайную последовательность знаков, из которой получение информации без знания секретного ключа практически неосуществимо:
- дешифрование есть процесс, обратный процедуре шифрования; дешифрование обеспечивает восстановление информации по криптограмме при знании секретного ключа;
- шифр представляет собой совокупность элементарных шагов преобразования входных данных с использованием секретного ключа; шифр может быть реализован в виде программы для ЭВМ или в виде отдельного устройства;
- криптоанализ - метод вычисления секретного ключа для получения несанкционированного доступа к зашифрованной информации или разработка метода, обеспечивающего доступ к зашифрованной информации без вычисления секретного ключа;
- криптоаналитик - лицо, выполняющее криптоанализ, т. е. атакующее шифр;
- криптостойкость является мерой надежности защиты зашифрованной информации и представляет собой трудоемкость, измеренную в количестве элементарных операций, которые необходимо выполнить для восстановления информации по криптограмме при знании алгоритма преобразования, но без знания секретного ключа; в случае односторонних преобразований под криптостойкостью понимается сложность вычисления входного значения блока по его выходному значению;
- операции циклического сдвига, зависящие от преобразуемых подблоков или зависящие от двоичного вектора - это операции циклического сдвига на число бит, задаваемое значением подблока или значением двоичного вектора; операции циклического сдвига влево (вправо) обозначаются знаком "<<<" (">>>"), например, запись B1<B2 обозначает операцию циклического сдвига влево подблока B1 на число бит, равное значению двоичного вектора B2;
- одноместная операция - это операция, выполняемая над одним операндом (блоком данных или двоичным вектором); значение подблока после выполнения некоторой данной одноместной операции зависит только от его начального значения; примером одноместных операций являются операции циклического сдвига;
- двухместная операция - это операция, выполняемая над двумя операндами; результат выполнения некоторой данной двухместной операции зависит от значения каждого операнда; примером двухместных операций являются операции сложения, вычитания, умножения и др.;
- наложение подключа на подблок - это процедура выполнения двухместной операции (*) над подблоком (В) и подключом (Q) и присваивания результата выполнения этой операции подблоку, что аналитически записывается в виде формулы B <- B*Q, где " <- " - знак операции присваивания.

Известны способы блочного шифрования данных, см., например, стандарт США DES [National Bureau of Standards. Data Encryption Standard. Federal Information Processing Standards Publication 46, January 1977; см. также С.Мафтик. Механизмы защиты в сетях ЭВМ.- М., Мир, 1993. С. 42-47]. В данном способе шифрование блоков данных выполняют путем формирования секретного ключа, разбиения преобразуемого блока данных на два подблока L и R и поочередного изменения последних путем выполнения операции поразрядного суммирования по модулю два над подблоком L и двоичным вектором, который формируется как выходное значение некоторой функции F от значения подблока R. После этого блоки переставляются местами. Функция F в указанном способе реализуется путем выполнения операций перестановки и подстановки, выполняемых над подблоком R. Данный способ обладает высокой скоростью преобразований при реализации в виде специализированных электронных схем.

Однако известный способ-аналог использует секретный ключ малого размера (56 бит), что делает его уязвимым к криптоанализу на основе подбора ключа. Последнее связано с высокой вычислительной мощностью современных ЭВМ массового применения.

Наиболее близким по своей технической сущности к заявляемому способу криптографического преобразования L-битовых входных блоков цифровых данных в L-битовые выходные блоки является способ, реализованный в шифре RC5, описанный в работе R. Rivest, 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 и B и поочередное преобразование подблоков. Подблоки преобразуются путем выполнения над ними одноместных и двухместных операций. В качестве двухместных операций используются операции сложения по модулю 2n, где n = 8, 16, 32, 64, и операция поразрядного суммирования по модулю 2. В качестве одноместной операции используется операция циклического сдвига влево, причем число бит, на которое сдвигается преобразуемый подблок, зависит от значения другого подблока, это определяет зависимость операции циклического сдвига на текущем шаге преобразования подблока от исходного значения входного блока данных. Двухместная операция выполняется над подблоком и подключом, а также над двумя подблоками. Характерным для способа-прототипа является использование операции циклического сдвига, зависящей от значения входного блока.

Подблок, например подблок B, преобразуют следующим путем. Выполняется операция поразрядного суммирования по модулю 2 над подблоками A и B и значение, получаемое после выполнения этой операции, присваивается подблоку B. Это записывается в виде соотношения B ←_ B⊕V, где знак " <- " - обозначает операцию присваивания и знак " ⊕ " обозначает операцию поразрядного суммирования по модулю 2. После этого над подблоком В выполняют операцию циклического сдвига на число бит, равное значению подблока A: B <- B<<<A. Затем над подблоком и одним из подключей S выполняют операцию суммирования по модулю 2n, где n - длина подблока в битах: B <- B+S mod 2n. После этого аналогичным образом преобразуется блок А. Выполняется несколько таких шагов преобразования обоих подблоков.

Данный способ обеспечивает высокую скорость шифрования при реализации в виде программы для ЭВМ. Однако способ-прототип имеет недостатки, а именно, при программной реализации для ЭВМ с 32-разрядным микропроцессором он не обеспечивает высокой стойкости криптографического преобразования данных к дифференциальному и линейному криптоанализу [Kaliski В. S., Yin Y.L. On Differential and Linear Cryptanalysis of the RC5 Encryption Algorithm. Advances in Cryptology - CRYPTO '95 Proceedings, Springer-Verlag, 1995, pp. 171-184] . Этот недостаток связан с тем, что эффективность использования операций, зависящих от преобразуемых данных с целью усложнения известных методов криптоанализа снижается тем, что алгоритм шифрования известен криптоаналитику, что позволяет последнему выявить статистические особенности процедур шифрования и использовать их при проведении криптоанализа.

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

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

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

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

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

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

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

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

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

На фиг. 2 представлена схема шифрования, соответствующая примеру 1.

На фиг. 3 представлена схема шифрования, соответствующая примеру 3.

Заявляемый способ может быть реализован с помощью ЭВМ или вычислительного устройства, представленного блок-схемой на фиг. 1, где
блок 1 - устройство ввода секретного ключа;
блок 2 - блок формирования машинного кода программы шифрования (блок настройки шифра);
блок 3 - блок памяти устройства шифрования;
блок 4 - операционный блок устройства шифрования, содержащий три, четыре или более регистра;
блок 5 - устройство шифрования;
6 - шина передачи информационных сигналов секретного ключа пользователя;
7 - шина передачи информационных сигналов сформированного машинного кода программы шифрования и секретного ключа;
8 - шина передачи информационных сигналов подключей и передачи информационных сигналов входных данных и информационных сигналов преобразуемых подблоков;
9 - шина адресации;
10 - шина передачи информационных сигналов машинного кода программы шифрования;
11 - шина ввода входных данных;
12 - шина вывода шифртекста.

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

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

Информационный сигнал секретного ключа и информационный сигнал машинного кода программы шифрования по шине 7 передают в блок памяти 3. После этого устройство шифрования 5 содержит в памяти секретный ключ и машинный код, реализующий сформированный алгоритм шифрования, и готово к выполнению операций шифрования. Данное инициализированное состояние устройства сохраняется в течение всего времени работы законного пользователя. Входной блок цифровых данных вводят по шине 11 в операционный блок 4 и затем по шине 8 в блок памяти 3. Блок шифртекста считывается с шины 12. По шине 10 в операционный блок 4 передают коды машинных команд для выполнения процедур преобразования. При завершении работ по шифрованию данных пользователь выключает устройство шифрования, что приводит к автоматическому стиранию секретного ключа и сформированного машинного кода алгоритма шифрования из области памяти блока 2 и блока 3, поскольку отключается электропитание всех блоков устройства шифрования. Таким образом, конкретная модификация алгоритма шифрования также как и секретный ключ являются недоступными для потенциального криптоаналитика, которому известен только алгоритм формирования алгоритма шифрования. Это существенно затрудняет выявление статистических особенностей конкретной модификации алгоритма шифрования. При числе потенциально реализуемых модификаций, равном или более 1020, заявляемый способ шифрования обеспечивает высокую стойкость ко всем известным методам криптоанализа.

Формирование алгоритма шифрования может быть осуществлено следующим образом. Предварительно на основе одного из известных алгоритмических языков составляется программа-шаблон. В программе-шаблоне зарезервированы места, в которых предусмотрена возможность записи любой из некоторого набора операций (например, двухместных операций или операций циклического сдвига, зависящих от входного блока). Все зарезервированные места (под операции преобразования) нумеруют. Поочередно, начиная с первого, для всех зарезервированных мест формируют операции преобразования в зависимости от значения элемента дополнительной псевдослучайной последовательности, имеющего номер, совпадающий с номером настраиваемой операции. Генерацию псевдослучайной последовательности необходимой длины осуществляют в зависимости от секретного ключа, например, используя генераторы псевдослучайных чисел, описанные в работе Брикелл Э.Ф., Одлижко Э.М. Криптоанализ: Обзор новейших результатов// ТИИЭР. 1988. Т. 76. N. 5. С. 87-89.

Формирование операций преобразования осуществляют, например, следующим образом. Двухместная операция, используемая для наложения подключа на подблок, устанавливается как операция поразрядного суммирования по модулю два (⊕), если di mod 3 = 0, где di - значение соответствующего элемента дополнительной псевдослучайной последовательности, либо как операция суммирования по модулю 232 (+), если di mod 3 = 1, либо как операция вычитания по модулю 232 (-), если di mod 3 = 2. В процедурах настройки алгоритма дешифрования настраиваются операции, являющиеся обратными по отношению к соответствующим операциям, настраиваемым в алгоритме шифрования. Для этого бинарная операция в алгоритме дешифрования устанавливается как операция поразрядного суммирования по модулю два (⊕), если di mod 3 = 0, либо как операция вычитания по модулю 232 (-), если di mod 3 = 1, либо как операция суммирования по модулю 232 (+), если di mod 3 = 2.

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

Дополнительное повышение криптостойкости шифрования достигается при задании формирования операций преобразования, зависящих от преобразуемых данных. Например, для позиции, зарезервированной под одноместную операцию над одним из преобразуемых 32-битовых подблоков - подблоком Bi, можно задать формирование одной из следующих операций: (1) операции (1Sv) подстановки над 8 младшими двоичными разрядами (с номерами от 1-го по 8-й) подблока, выполняемая по V-той таблице подстановки, номер которой выбирается в зависимости от подблока Bj, где i≠j, (2) аналогичной операции (2Sv) подстановки над двоичными разрядами подблока с номерами от 9-го до 16-го включительно, (3) операции (<<<1V) циклического сдвига влево содержимого подблока на число бит, равное V = Bj mod 32, где i≠j, (4) операции (<<<2V) циклического сдвига влево содержимого младших 16 двоичных разрядов подблока на число бит, равное V = Bj mod 16, где i≠j, (5) операции (<<<3V) циклического сдвига влево содержимого младших 8 двоичных разрядов подблока на число бит, равное значению V = Bj mod 8, где i≠j, (6) операции (<<<4V) циклического сдвига влево содержимого двоичных разрядов с 9-го по 16-й включительно подблока на число бит, равное значению V = Bj mod 8, где i≠j.

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

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

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

Важным типом операций, зависящих от преобразуемых данных, являются операции подстановок, осуществляемые по таблицам, выбираемым в зависимости от входного блока. Пусть операции подстановки выполняются над подблоками цифровых данных длиной k бит, где k - целое число. Тогда для задания операции подстановки, преобразующей k-битовый входной подблок в k-битовый выходной подблок, требуется использование таблицы, содержащей две строки чисел:
0 1 2 ... N-1
a0 a1 a2 ... aN-1,
где
N = 2k.

В данной таблице в нижней строке присутствуют все возможные значения k-битового блока ровно по одному разу, но в произвольном порядке. Очередность расположения чисел в нижней строке определяет конкретный вариант таблицы подстановки, а следовательно, и конкретный вариант операции подстановки, выполняемой с использованием этой таблицы. Выполнение операции подстановки осуществляется следующим образом. Выбирается в верхней строке число, которое равно значению входного блока. Находящееся под этим числом значение в нижней строке берется в качестве выходного блока. Таким образом, таблицу подстановки можно разместить в оперативной памяти ЭВМ как последовательную запись k-битовых компьютерных слов, размещенных в ячейках с адресами W0, W1, W2, ..., WN-1. В этом случае значение входного блока b служит для вычисления адреса W0 + b слова, которое берется в качестве выходного блока. Этот способ представления таблицы подстановки требует использования объема памяти, равного kN бит.

Выберем количество таблиц подстановки, равное 2L (объем требуемой памяти составит при этом 2LkN бит), и разместим таблицы подстановок непрерывно друг за другом. В качестве адреса таблицы с номером V возьмем значение адреса W0 ее первого k-битового слова. Пусть адрес таблицы с номером 0 есть s. В этом случае адрес таблицы подстановки с произвольным номером V равен s + VN. Если заданы номер текущей таблицы подстановки V и текущий входной подблок для выполнения операции подстановки, то она выполняется заменой текущего входного блока на k-битовое слово, расположенное по адресу s + VN + b, где b - значение подблока, над которым выполняется текущая операция подстановки. Используя это соотношение легко задать выбор таблицы подстановки с номером V и выполнить подстановку над подблоком со значением b. В рассмотренном случае задание зависимости таблиц подстановок от значения двоичного вектора и выполнение операции подстановки осуществляются микропроцессором очень быстро при выборе соответствующих значений параметров L и k, например при L = 5 и k = 8. При указанных параметрах для размещения таблиц подстановки требуется 8 Кбайт оперативной памяти, что является приемлемым, поскольку современные ЭВМ обладают объемом оперативной памяти на многие порядки больше этой величины (от 1 до 64 Мбайт и более).

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

Пример 1.

Пусть L=5 и k=8, т.е. даны 32 таблицы, задающие операции подстановки над 8-битовыми подблоками данных. Таблицы будем предполагать известными, т. е. лицо, пытающееся провести криптоанализ, знает эти таблицы. Сформируем секретный ключ, представленный в виде совокупности из 8R 16-битовых подключей
q10, q11, ...., q17 (первая строка подключей)
q20, q21, ...., q27 (вторая строка подключей)
..........................

qr0, qr1, ..., qr7 ((r-тая строчка подключей)
..........................

qR0, qR1, ..., qR7 (R-тая строка подключей),
где R - число раундов шифрования.

На r-том раунде шифрования используется r-тая строка подключей.

Обозначим используемые таблицы подстановки следующим образом: T0, T1, T2, ...,T31, а операцию подстановки, задаваемую таблицей Tv, как Sv, где v = 0, 1, 2, ..., 31. Таблицы подстановок T0, T1, T2, ...,T15 могут быть выбраны произвольными, а таблицы T16, T17,..., T31 берутся такими, чтобы операции подстановок Sv и S31-v были взаимно обратными. Последнее условие выполняется, если пары таблиц T16 и T15; T17 и T14; T18 и T13;...; T31 и T0 будут задавать взаимно обратные операции подстановки. Для набора произвольных таблиц подстановки T0, T1, T2,...,T5 легко составить таблицы, соответствующие обратным операциям подстановки. Например, для операции подстановки, задаваемой следующей таблицей:
0 1 2 ... 255
a0 a1 a2 ... a255,
а обратная подстановка задается таблицей
0 1 2 ... 255
Z0 Z1 Z2 ... Z255,
где строка (Z0, Z1, Z2,..., Z255) получается как верхняя строка после упорядочения столбцов предыдущей таблицы в порядке возрастания чисел в нижней строке.

На фиг. 2 показана схема r-го раунда шифрования, где сплошная вертикальная линия соответствует передаче 16-битовых подблоков данных, пунктирная линия соответствует передаче двоичного вектора V, формируемого в зависимости от значения одного из преобразуемых подблоков, горизонтальная сплошная линия соответствует передаче 16-битового подключа. Двухместная операция, выполняемая над подблоком и подключом, обозначена блоком, в котором указан знак ("*") двухместной операции, формируемой на этапе формирования алгоритма шифрования и устанавливаемой как одна из следующих операций: "⊕", "+" или "-". Нижний индекс у знака "*" обозначает номер двухместной операции.

Одноместная операция, выполняемая над подблоком и формируемая на этапе формирования алгоритма шифрования, обозначена блоком, в котором указан знак "<<<C". Данная одноместная операция устанавливается как операция циклического сдвига влево на число бит, равное значению параметра C. Всего возможны 16 разных типов операций циклического сдвига влево, которые определяются значением параметра C = 0, 1, 2, ..., 16. Нижний индекс у параметра C обозначает номер одноместной операции. Все зарезервированные операции "*1", "*2", ...,"*8R-1", "*8R" и "<<<C1", "<<<C2",...,"<<<C8R-1", "<<<C8R" формируются в зависимости от секретного ключа и от порядкового номера. Для числа раундов шифрования, равного R = 4, потенциально реализуемы 38R168R = 488R = 4832 (около 1053) различных модификаций алгоритма шифрования. Выбор конкретной модификации определяется выбором секретного ключа. Данное число модификаций достаточно велико, что определяет уникальность алгоритма шифрования для каждого пользователя (или пары пользователей, использующих одинаковый секретный ключ для передачи сообщений по линиям связи).

Блок S обозначает операцию подстановки, выполняемую в зависимости от входного блока по таблице с номером V. qr0, qr1,...., qr7 - подключи, используемые на r-ом раунде. Стрелки на линиях обозначают направление передачи сигналов.

Пример 1 соответствует шифрованию блоков цифровых данных размером 128 бит. Шифрование выполняют следующим путем. Входной блок разбивают на 8 подблоков b0, b1, ..., b7 размером 16 бит каждый. После этого на первом раунде (r=1) над подблоком b0 осуществляют одноместную операцию "<<<C1", затем над подблоком b0 и подключом q10 выполняют двухместную операцию "*1", формируют двоичный вектор V, имеющий значение 5 младших двоичных разрядов подблока b0: V <- b0 mod 25.

После этого выполняют преобразование подблока b1. Над подблоком b1 выполняют операцию "<<<C2": b1 <- b1 <<<C2. Затем над b1 и подключом q11 выполняют операцию "*2" и выходное значение этой операции присваивают блоку b1, что можно записать аналитически следующим образом: b1 <- b1 *2 q11. Затем по таблице подстановки с номером v выполняют операцию подстановки над подблоком b1: b1 <- Sv (b1). Затем по значению b1 формируют двоичный вектор V (для преобразования следующего подблока): V <- b1 mod 25. После этого выполняют преобразование подблока b2: b2 <- b2<<<C3; b2 <- b2 *3 q12 и затем b2 <- Sv(b2). Аналогично выполняют преобразования подблоков b3, b4, b5, b6 и b7. На последнем шаге каждого раунда шифрования выполняют перестановку подблоков в обратном порядке, т. е. попарно меняются местами блоки b7 и b0, b6 и bi, b5 и b2, b4 и b3. Второй раунд выполняется аналогично, за исключением того, что вместо первой строки подключей используется вторая строка подключей. Затем выполняется третий раунд шифрования с использованием третьей строки подключей и т. д. Всего выполняется R раундов шифрования, где R = 4. Следующий алгоритм представляет собой логическую форму записи примера 1.

Алгоритм 1.

Вход: 128-битовый входной блок цифровых данных, представленный как конкатенация 16-битовых подблоков где знак " " обозначает операцию конкатенации.

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

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

3. Преобразовать подблок b0: b0 <- b0 <<<C8r-7;
b0 <- b0*8r-7qr0.

4. Сформировать двоичный вектор V: V <- bi-1 mod 25.

5. Преобразовать подблок bi: bi <- bi <<<C8r-7+i;
bi <- bi *8r-7+i qri;
bi <- 1Sv(bi), где операция подстановки 1Sv выполняется с помощью таблицы подстановки с номером V.

6. Сформировать двоичный вектор V: V <- bi mod 25.

7. Если i≠7, то прирастить i <- i+1 и перейти к п. 5.

8. Если r≠R, то прирастить r <- r+1. В противном случае перейти к п. 10.

9. Переставить подблоки в обратном порядке и перейти к п. 2.

10. СТОП.

Выход: 128-битовый блок шифртекста.

Следующий алгоритм описывает процедуры дешифрования.

Алгоритм 2.

Вход: 128-битовый входной блок шифртекста .

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

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

3. Сформировать двоичный вектор V: V <- bi-1 mod 25.

4. Сохранить значение bi в переменной g: g <- b1.

5. Преобразовать подблок bi: bi <- 1S31-v (bi):
bi <- bi (*)8r'-7+i qr'i;
b0 <- b0 >>>C8r'-7+i qr'0,
где
r' = 5 - r; ">>>C" - операция циклического сдвига вправо на C бит и "(*)8r'-7+i" - операция, обратная операции "*8r'-7+i". (В операциях "<<<Cx" и ">>>Cx" значения параметра С с одинаковыми индексами устанавливаются равными. В этом случае пара операций "<<<Cx" и ">>>Cx" является парой взаимно обратных операций.)
6. Сформировать двоичный вектор v: v <- g mod 25.

7. Если i≠7, то прирастить i <- i+1 и перейти к п. 4.

8. Преобразовать подблок b0: b0 <- b0 (*)8r'-7 qr'0;
b0 <- b0 >>>C8r'-7.

9. Если r≠R, то прирастить r <- r+1. В противном случае перейти к п. 11.

10. Переставить подблоки в обратном порядке и перейти к п. 2.

11. СТОП.

Выход: 64-битовый блок исходного текста.

При программной реализации алгоритм 1 и алгоритм 2, реализующие заявляемый способ, обеспечивают скорость шифрования около 30 Мбит/с для микропроцессора Pentium/200. При необходимости может быть задано и другое число раундов, например R = 2, 3, 5, 6.

Пример 2.

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

Пример 3.

Данный пример также является аналогичным примеру 1 и поясняется на фиг. 3. Отличие состоит в том, что вместо фиксированных операций подстановок 1Sv используются одноместные операции преобразования, зависящие от двоичного вектора V (V в свою очередь зависит от входного блока цифровых данных), которые обозначены как "(<S<)j" и формируются на этапе формирования алгоритма шифрования. Индекс j обозначает номер позиции операции "(<S<)". Операции "(<S<)" устанавливаются в зависимости от значения j (j=1, 2,... 7R, где R - число раундов шифрования) и от секретного ключа как одна из следующих пяти операций: "1Sv", "2Sv", "<<<2V", "<<<3V", "<<<4V". Все перечисленные операции являются, зависящими от входного блока. Каждая из данных операций выполняется в зависимости от преобразуемого блока данных, поскольку она зависит от двоичного вектора V. Если в некоторой позиции, первоначально зарезервированной под операцию "(<S<)", установлена операция подстановки, то она выполняется по таблице с номером V, если установлена операция циклического сдвига, то выполняется циклический сдвиг на V бит. Число возможных модификаций алгоритма шифрования в данном примере составляет в 57R раз больше, чем в примере 1, что составляет около 1075 при R=4.

Пример 4.

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

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

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

Похожие патенты RU2124814C1

название год авторы номер документа
СПОСОБ КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ БЛОКОВ ЦИФРОВЫХ ДАННЫХ 1997
  • Молдовян А.А.
  • Молдовян Н.А.
RU2140709C1
СПОСОБ КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ L-БИТОВЫХ ВХОДНЫХ БЛОКОВ ЦИФРОВЫХ ДАННЫХ В L-БИТОВЫЕ ВЫХОДНЫЕ БЛОКИ 1997
  • Молдовян А.А.
  • Молдовян Н.А.
RU2188513C2
СПОСОБ КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ БЛОКОВ ДВОИЧНЫХ ДАННЫХ 1998
  • Молдовян А.А.
  • Молдовян Н.А.
RU2141729C1
СПОСОБ ИТЕРАТИВНОГО ШИФРОВАНИЯ БЛОКОВ ДИСКРЕТНЫХ ДАННЫХ 2000
  • Молдовян А.А.
RU2186466C2
СПОСОБ ИТЕРАТИВНОГО ШИФРОВАНИЯ БЛОКОВ ДВОИЧНЫХ ДАННЫХ 1999
  • Гуц Н.Д.
  • Левченко В.И.
  • Молдовян А.А.
  • Молдовян Н.А.
RU2144268C1
СПОСОБ ИТЕРАТИВНОГО ШИФРОВАНИЯ БЛОКОВ ЦИФРОВЫХ ДАННЫХ 2000
  • Молдовян А.А.
  • Молдовян Н.А.
  • Попов П.В.
RU2199826C2
СПОСОБ ШИФРОВАНИЯ БЛОКОВ ДАННЫХ 1997
  • Молдовян Александр Андреевич[Ru]
  • Молдовян Николай Андреевич[Ru]
  • Молдовяну Петр Андреевич[Md]
RU2111620C1
СПОСОБ БЛОЧНОГО ИТЕРАТИВНОГО ШИФРОВАНИЯ 2000
  • Молдовян Н.А.
RU2186467C2
СПОСОБ ИТЕРАТИВНОГО ШИФРОВАНИЯ БЛОКОВ ДАННЫХ 1999
  • Алексеев Л.Е.
  • Белкин Т.Г.
  • Молдовян А.А.
  • Молдовян Н.А.
RU2140714C1
СПОСОБ БЛОЧНОГО ШИФРОВАНИЯ ДИСКРЕТНЫХ ДАННЫХ 1998
  • Масловский В.М.
  • Молдовян А.А.
  • Молдовян Н.А.
RU2140710C1

Иллюстрации к изобретению RU 2 124 814 C1

Реферат патента 1999 года СПОСОБ ШИФРОВАНИЯ БЛОКОВ ЦИФРОВЫХ ДАННЫХ

Изобретение относится к области электросвязи и вычислительной техники, а конкретнее к области криптографических способов и устройств для шифрования цифровых данных. Способ заключается в формировании секретного ключа, разбиении блока данных на N ≥ 2 подблоков и поочередном преобразовании подблоков путем осуществления над i-тым подблоком по крайней мере одной операции преобразования, которая зависит от значения j-го подблока, где j≠i, причем после формирования секретного ключа дополнительно формируют алгоритм шифрования в зависимости от секретного ключа путем формирования по крайней мере одной операции преобразования, которую осуществляют над i-тым подблоком в зависимости от j-го подблока, а операцию преобразования формируют в виде операции подстановки, при этом достигается технический результат, состоящий в повышении стойкости к известным методам криптоанализа, включая дифференциальный и линейный криптоанализ. 1 з. п. ф-лы, 3 ил.

Формула изобретения RU 2 124 814 C1

1. Способ шифрования блоков цифровых данных, заключающийся в формировании секретного ключа, разбиении блока данных на N≥2 подблоков и поочередном преобразовании подблоков путем осуществления над i-тым подблоком по крайней мере одной операции преобразования, которая зависит от значения j-го подблока, где j ≠ i, отличающийся тем, что после формирования секретного ключа дополнительно формируют алгоритм шифрования в зависимости от секретного ключа путем формирования по крайней мере одной операции преобразования, которую осуществляют над i-тым подблоком в зависимости от j-го подблока. 2. Способ по п.1, отличающийся тем, что формируют операцию преобразования в виде операции подстановки.

Документы, цитированные в отчете о поиске Патент 1999 года RU2124814C1

RU 94032780 A1, 20.07.96
СПОСОБ ШИФРОВАНИЯ ДВОИЧНОЙ ИНФОРМАЦИИ 1992
  • Березин Борис Владимирович
RU2032990C1
УСТРОЙСТВО ДЛЯ КОНТРОЛЯ ЧУВСТВИТЕЛЬНОСТИ РЕЛЕ 0
  • Г. Д. Карпенко, Г. В. Салов Ю. Ф. Тихомнров
SU406187A1
Огнетушитель 0
  • Александров И.Я.
SU91A1

RU 2 124 814 C1

Авторы

Молдовян А.А.

Молдовян Н.А.

Молдовяну П.А.

Даты

1999-01-10Публикация

1997-12-24Подача