способ итеративного шифрования блоков данных
Классы МПК: | H04L9/20 с псевдослучайной ключевой последовательностью, комбинированной поэлементно с последовательностью данных |
Автор(ы): | Алексеев Л.Е., Белкин Т.Г., Молдовян А.А., Молдовян Н.А. |
Патентообладатель(и): | Государственное унитарное предприятие Специализированный центр программных систем "СПЕКТР", Молдовян Александр Андреевич, Молдовян Николай Андреевич |
Приоритеты: |
подача заявки:
1999-01-18 публикация патента:
27.10.1999 |
Изобретение относится к области электросвязи и вычислительной техники, а конкретнее к области криптографических способов и устройств для шифрования данных. В основу изобретения положена задача уменьшения числа раундов шифрования, благодаря чему повышается скорость шифрования, в чем и состоит технический результат, достигаемый при его реализации. Способ включает формирование секретного ключа, разбиение блока данных на два подблока и выполнение R
2 раундов шифрования, заключающихся в формировании по первому подблоку двоичного вектора, преобразование двоичного вектора и наложение с помощью операции суммирования преобразованного двоичного вектора на второй подблок. Новым является то, что дополнительно формируют управляющий код и второй подблок преобразуют с помощью двух управляемых операций перестановки, зависящих от значения управляющего кода, причем одну из них выполняют до наложения двоичного вектора на второй подблок, а вторую выполняют после наложения двоичного вектора на второй подблок. Новым является также то, что управляющий код формируют по секретному ключу. Кроме того, новым является то, что управляющий код формируют по секретному ключу и по значению одного из подблоков. 2 з.п. ф-лы, 3 ил.
Рисунок 1, Рисунок 2, Рисунок 3

Формула изобретения
1. Способ итеративного шифрования блоков данных, включающий формирование секретного ключа, разбиение блока данных на два подблока и выполнение R
Описание изобретения к патенту
Изобретение относится к области электросвязи и вычислительной техники, а конкретнее к области криптографических способов и устройств для шифрования сообщений (информации). В совокупности признаков заявляемого способа используются следующие термины:- секретный ключ представляет собой двоичную информацию, известную только законному пользователю;
- криптографическое преобразование - это преобразование цифровой информации, которое обеспечивает влияние одного бита исходных данных на многие биты выходных данных, например, с целью защиты информации от несанкционированного чтения, формирования цифровой подписи, выработки кода обнаружения модификаций; важными видами криптографического преобразования являются одностороннее преобразование, хэширование и шифрование;
- хэширование информации есть некоторый способ формирования так называемого хэш-кода, размер которого является фиксированным (обычно 128 бит) для сообщений любого размера; процедуры хэширования обеспечивают зависимость хэш-кода от каждого бита сообщения;
- шифрование есть процесс, преобразования информации, который зависит от секретного ключа и преобразует исходный текст в шифртекст (криптограмму), представляющий собой псевдослучайную последовательность знаков, из которой получение информации без знания секретного ключа практически неосуществимо;
- дешифрование есть процесс, обратный процедуре шифрования; дешифрование обеспечивает восстановление информации по криптограмме при знании секретного ключа;
- шифр представляет собой совокупность элементарных шагов преобразования входных данных с использованием секретного ключа; шифр может быть реализован в виде программы для ЭВМ или в виде отдельного устройства;
- двоичный вектор - это некоторая последовательность нулевых и единичных битов, например (101101011); конкретная структура двоичного вектора может быть интерпретирована как двоичное число, если считать, что позиция каждого бита соответствует двоичному разряду, т.е. двоичному вектору может быть сопоставлено численное значение, которое определяется однозначно структурой двоичного вектора;
- криптоанализ - метод вычисления секретного ключа для получения несанкционированного доступа к зашифрованной информации или разработка метода, обеспечивающего доступ к зашифрованной информации без вычисления секретного ключа;
- одностороннее преобразование - это такое преобразование g-битового входного блока данных в g-битовый выходной блок данных, которое позволяет легко вычислить выходной блок по входному блоку, а вычисление входного блока, который бы преобразовывался в случайно выбранный выходной блок, является практически невыполнимой задачей;
- криптостойкость является мерой надежности защиты зашифрованной информации и представляет собой трудоемкость, измеренную в количестве элементарных операций, которые необходимо выполнить для восстановления информации по криптограмме при знании алгоритма преобразования, но без знания секретного ключа; в случае односторонних преобразований под криптостойкостью понимается сложность вычисления входного значения блока по его выходному значению;
- операции циклического сдвига, зависящие от преобразуемых подблоков или зависящие от двоичного вектора, - это операции циклического сдвига на число бит, задаваемое значением подблока или значением двоичного вектора; операции циклического сдвига влево (вправо) обозначаются знаком "<<<" (">>>"), например запись B <<< A обозначает операцию циклического сдвига влево подблока B на число бит, равное значению двоичного вектора A; подобные операции являются базовыми для шифра RC5;
- одноместная операция - это операция, выполняемая над одним операндом (блоком данных или двоичным вектором); значение подблока после выполнения некоторой данной одноместной операции зависит только от его начального значения; примером одноместных операций являются операции циклического сдвига;
- двуместная операция - это операция, выполняемая над двумя операндами; результат выполнения некоторой данной двуместной операции зависит от значения каждого операнда; примером двуместных операций являются операции сложения, вычитания, умножения и др.;
- операция конкатенации - это операция объединения нескольких двоичных векторов, в результате которой формируется новый двоичный вектор, включающий все биты каждого из объединяемых двоичных векторов, причем взаимное расположение битов, соответствующих исходным двоичным векторам, не изменяется; например конкатенация двоичных векторов W1 = (101101011) и W2 = (011101010) записывается в виде W1|W2 = (101101011011101010) ; данные двоичные векторы могут быть объединены операцией конкатенации еще одним способом: W2|W1 = (011101010101101011).
Известны способы блочного шифрования данных, см., например, шифр DES [B. Schneier, "Applied Cryptography", Second Eddition, John Wiley & Sons, Inc., New York, 1966, pp. 270-277]. В данном способе шифрование блоков данных выполняют путем формирования секретного ключа, разбиения преобразуемого блока данных на два подблока L и К и поочередного изменения последних путем выполнения операции поразрядного суммирования по модулю два над подблоком L и двоичным вектором, который формируется как выходное значение некоторой функции F от значения подблока R. После этого подблоки переставляются местами. Функция F в указанном способе реализуется путем выполнения операций перестановки и подстановки, выполняемых над подблоком R. Данный способ обладает высокой скоростью преобразований при реализации в виде специализированных электронных схем. Однако известный способ-аналог использует секретный ключ малого размера (56 бит), что делает его уязвимым к криптоанализу на основе подбора ключа. Последнее связано с высокой вычислительной мощностью современных ЭВМ. Другим известным способом блочного шифрования данных является способ, реализованный в шифре RC5 [B.Schneier, "Applied Cryptography", Second Eddition, John Wiley & Sons, Inc., New York, 1966, pp. 344-346]. Способ-прототип включает в себя формирование секретного ключа в виде совокупности подключей, разбиение двоичного кода информации на g-битовые информационные блоки и поочередное преобразование g-битовых блоков. Преобразование g-битовых блоков осуществляют путем разбиения g-битового блока данных на n-битовые подблоки A и B и поочередного преобразования подблоков. Подблоки преобразуются путем выполнения над ними одноместных и двуместных операций. В качестве двуместных операций используются операции сложения по модулю 2n, где n = g/2 = 8, 16, 32, 64, и операция поразрядного суммирования по модулю 2. В качестве одноместной операции используется операция циклического сдвига влево, причем число бит, на которое сдвигается преобразуемый подблок, зависит от значения другого подблока, что определяет зависимость операции циклического сдвига на текущем шаге преобразования подблока от исходного значения входного блока данных. Двуместная операция выполняется над подблоком и подключом, а также над двумя подблоками. Характерным для способа RC5 является использование операции циклического сдвига, зависящей от значения входного блока. Подблок, например подблок B, преобразуют путем наложения поблока A на подблок B с помощью операции поразраядного суммирования по модулю 2, т.е. выполняется операция поразрядного суммирования по модулю 2 (обозначаемая знаком "









1) повторения подблока данных: V = A|A|...A,
2) объединения нескольких подключей: V = K1|K2|...|Kw, где w - натуральное число,
3) объединения подключей и подблока данных: V = K1|A|K2|...|A.
После такого объединения управляющий код может быть подвергнут дополнительному преобразованию, например над ним может быть осуществлена операция фиксированной перестановки в соответствии с формулой V:=




7. Сформировать по подключу Qr управляющий код V : V:= Qr|Qr.
8. Преобразовать подблок В, выполнив над ним управляемую операцию перестановки, осуществляемую операционным блоком P-1, в зависимости от значения управляющего кода: B:= P-V1(B).
9. Если r < 16, то прирастить r := r+1, переставить подблоки A и B (т.е. взять двоичный вектор A в качестве двоичного вектора B, а двоичный вектор B - в качестве двоичного вектора A) и перейти к шагу 2. 10. СТОП. Преобразования, соответствующие шагам 3 и 5, выполняются параллельно. Блок криптограммы C формируется путем объединения преобразованных двоичных векторов A и B: C = A|B. Дешифрование блока криптограммы осуществляется с помощью этого же алгоритма, за исключением того, что при выполнении шагов 2 и 5 используется подключ K17-r вместо подключа Kr, а при выполнении шага 7 - подключ Q17-r вместо Qr. Пример 2: шифрование 64-битового блока данных T. Пример 2 поясняется на фиг. 3б, где P, P", P"" и P-1 - управляемые операционные блоки с 32-битовым информационным входом и 64-битовым управляющим входом. Сформировать секретный ключ, представленный в виде следующей совокупности n-битовых раундовых подключей: K1, K2, ..., K10 и Q1, Q2, .., Q10. Разбить блок данных два подблока: A = T div 232 и B = T mod 232. Шифрование блока данных выполнить в соответствии со следующим алгоритмом. 1. Установить счетчик числа раундов шифрования r := 1. 2. Сформировать по подключу Kr и подблоку A управляющий код V1: V1:= Kr|A.
3. В зависимости от значения V1 преобразовать подблок B путем выполнения управляемой операции перестановки:

6. Сформировать по подключу Qr управляющий код V3: V3:= Qr|Qr.
7. Преобразовать подключ Kr, выполнив над ним управляемую операцию перестановки, осуществляемую операционным блоком P", в зависимости от значения управляющего кода V2:

8. Преобразовать двоичный вектор F, выполнив над ним управляемую операцию перестановки, осуществляемую операционным блоком P"", в зависимости от значения управляющего кода V3:

9. Преобразовать двоичный вектор F, наложив на него с помощью операции суммирования по модулю 232 преобразованный подключ Kr: F:= F+Kr mod 232. 10. Используя операцию поразрядного суммирования по модулю 2, наложить преобразованный двоичный вектор F на подблок B: B:= B

11. Сформировать по подключу Qr и подблоку данных A управляющий код V4: V4:= Qr|A.
12. Преобразовать подблок B, выполнив над ним управляемую операцию перестановки, осуществляемую операционным блоком P-1 в зависимости от значения управляющего кода V4:

13. Если r < 10, то прирастить r:=r+1, переставить подблоки A и B и перейти к шагу 2. 14. СТОП. Шаги 3, 7 и 8 выполняются параллельно. Блок криптограммы C представляет собой конкатенацию преобразованных подблоков A и B: C = A|B. Дешифрование блока криптограммы осуществляется с помощью этого же алгоритма, за исключением того, что при выполнении шагов 2, 7 и 9 используется подключ K11-r вместо подключа Kr, а при выполнении шагов 6 и 11 - подключ Q11-r вместо Qr. Приведенные примеры показывают, что предлагаемый способ криптографических преобразований блоков двоичных данных технически реализуем и позволяет решить поставленную задачу. Благодаря простой структуре современная микроэлектронная технология позволяет легко изготовить криптографические микропроцессоры, содержащие управляемые блоки перестановок с размером входа 32, 64 и 128 бит. Заявляемый способ может быть реализован, например, в специализированных криптографических микропроцессорах, обеспечивающих скорость шифрования до 1 Гбит/с, достаточную для шифрования в масштабе реального времени данных, передаваемых по скоростным оптоволоконным каналам связи.
Класс H04L9/20 с псевдослучайной ключевой последовательностью, комбинированной поэлементно с последовательностью данных