Главная страница  |  Описание сайта  |  Контакты
СПОСОБ БЛОЧНОГО ШИФРОВАНИЯ ДАННЫХ
СПОСОБ БЛОЧНОГО ШИФРОВАНИЯ ДАННЫХ

СПОСОБ БЛОЧНОГО ШИФРОВАНИЯ ДАННЫХ

Патент Российской Федерации
Суть изобретения: Изобретение относится к электросвязи и вычислительной технике, а конкретнее к криптографическим способам и устройствам для шифрования данных. Цель: повышение скорости шифрования программных шифров. Способ включает формирование ключа шифрования в виде совокупности подключей, разбиение блока данных на подблоки и поочередное наложение подключей на подблоки с помощью бинарных операций. Отличается от известных способов тем, что дополнительно формируют двоичный вектор, а на i-й подблок Bi, где i=1,2,3,...N, N ≥ 2 - число подблоков, накладывают l-й подключ, где l=1,2,3,...,K, K≥ 8 - число подключей, причем номер l подключа выбирают по значению двоичного вектора. Двоичный вектор формируют по структуре j-го подблока Bj, где j = 1,2,3,...N, причем i≠j, или по структуре j-го подблока Bj, где i≠j, и по значению номера подключа, наложенного на подблок на предыдущем шаге наложения. 1 с. и 2 з.п. ф-лы, 2 ил.
Поиск по сайту

1. С помощью поисковых систем

   С помощью Google:    

2. Экспресс-поиск по номеру патента


введите номер патента (7 цифр)

3. По номеру патента и году публикации

2000000 ... 2099999   (1994-1997 гг.)

2100000 ... 2199999   (1997-2003 гг.)
Номер патента: 2103828
Класс(ы) патента: H04L9/00
Номер заявки: 97101622/09
Дата подачи заявки: 10.02.1997
Дата публикации: 27.01.1998
Заявитель(и): Управление Федеральной службы безопасности России по Санкт- Петербургу и Ленинградской области; Государственное унитарное предприятие "Специализированный центр программных систем "Спектр"; Молдовян Александр Андреевич
Автор(ы): Молдовян А.А.; Молдовян Н.А.
Патентообладатель(и): Управление Федеральной службы безопасности России по Санкт- Петербургу и Ленинградской области; Государственное унитарное предприятие "Специализированный центр программных систем "Спектр"; Молдовян Александр Андреевич
Описание изобретения: Изобретение относится к электросвязи и вычислительной техники, а конкретнее к криптографическим способам и устройствам для шифрования сообщений (информации). В совокупности признаков предлагаемого способа используются следующие термины:
пароль представляет из себя комбинацию битов, известную только законному пользователю;
шифрключ (ключ шифрования) представляет из себя комбинацию битов, используемую при шифровании информационных сигналов данных; шифрключ является сменным элементом шифра и используется для преобразования данного сообщения или данной совокупности сообщений; шифрключ является известным только законному пользователю или может быть выработан по детерминированным процедурам по паролю;
шифр представляет собой совокупность элементарных шагов преобразования входных данных с использованием шифрключа; шифр может быть реализован в виде программы для ЭВМ или в виде отдельного устройства;
подключ представляет собой часть ключа, используемую на отдельных элементарных шагах шифрования;
расписание использования шифрключа (или подключей) представляет собой последовательность использования подключей в процессе шифрования;
шифрование есть процесс, реализующий некоторый способ преобразования данных с использованием шифрключа, переводящий данные в криптограмму, представляющую собой псевдослучайную последовательность знаков, из которой получение информации без знания ключа практически невыполнимо;
дешифрование есть процесс, обратный процедуре шифрования; дешифрование обеспечивает восстановление информации по криптограмме при знании шифрключа;
криптостойкость является мерой надежности защиты информации и представляет собой трудоемкость, измеренную в количестве элементарных операций, которые необходимо выполнить для восстановления информации по криптограмме при знании алгоритма преобразования, но без знания шифрключа.
двоичный вектор - это некоторая последовательность нулевых и единичных битов, например 101101011; конкретная структура двоичного вектора может быть интерпретирована как двоичное число, если считать, что позиция каждого бита соответствует двоичному разряду, т.е. двоичному вектору может быть сопоставлено численное значение, которое определяется однозначно структурой двоичного вектора.
Известны способы блочного шифрования данных ( например стандарт США DES Диффи У., Хеллмэн М.Э. Защищенность и имитостойкость: Введение в криптографию. -ТИИЭР, 1979, т. 67. N.3, с. 87-89), способ шифрования (патент США N 5222139, от 22 июня 1993, шифр FEAL-1 и криптоалгоритм B-Crypt. Мафтик С. Механизмы защиты в сетях ЭВМ. - М.: Мир, 1993, с.49-52). В известных способах шифрование блоков данных выполняют путем формирования ключа шифрования в виде совокупности подключей, разбиения преобразуемого блока данных на подблоки и поочередного изменения последних с помощью операций подстановки, перестановки и арифметических операций, выполняемых над текущим подблоком и текущим подключом.
Однако известные способы-аналоги не обладают достаточной стойкостью к дифференциальному криптоанализу (Berson T.A. Differential Cryptanalysis Mod 232 with application to MD5// EUROCRYPT'92. Hungary, May 24-28, 1992. Proceedings. р.67-68), так как расписание использования подключей является фиксированным для всех преобразуемых входных блоков.
Наиболее близким по своей технической сущности к предлагаемому способу блочного шифрования является способ, описанный в Российском стандарте криптографической защиты данных (Стандарт СССР ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования). Способ-прототип включает в себя формирование ключа шифрования в виде последовательности из 8 подключей длиной 32 бита, разбиении входного 64-битового блока данных на два 32-битовых подблока B1 и B2 и поочередным преобразовании подблоков. Один шаг преобразования подблока, например подблока B2, заключается в наложении на него текущего подключа Qi,являющегося фиксированным для данного шага, с помощью операции сложения по модулю 232 (+) в соответствии с формулой B2:= B2 + Qi, где 1≅i≅8, после чего над полученным новым значением подблока B2 выполняют операцию подстановки, затем операцию циклического сдвига влево на одиннадцать бит, т.е. на одиннадцать двоичных разрядов в сторону старших разрядов, а затем на полученное значение B2 накладывают подблок B1 с помощью операции поразрядного суммирования по модулю два (⊕) в соответствии с формулой B2:=B2 ⊕ B1. Операция подстановки выполняется следующим образом.
Подблок разбивается на 8 двоичных вектора длиной по 4 бит. Каждый двоичный вектор заменяется двоичным вектором из таблицы подстановок. Выбранные из таблицы подстановок 8 4-битовых вектора объединяются в 32-битовый двоичный вектор, который и является выходным состоянием подблока после выполнения операции подстановки. Всего выполняется 32 аналогичных шага изменения подблоков, причем для всех преобразуемых входных блоков данных на фиксированном шаге преобразования подблоков используется подключ с фиксированным номером.
Однако способ-прототип имеет следующий недостаток: при программной реализации он не обеспечивает высокой скорости шифрования, необходимой для построения программных систем защиты компьютерной информации, работающих в масштабе реального времени. Например, для микропроцессора Intel 486/100 скорость шифрования не превышает 3 Мбит/с. Этот недостаток связан с тем, что для обеспечения стойкости к дифференциальному криптоанализу задано большое число операций подстановок, медленно выполняемых микропроцессором.
Цель изобретения - разработка способа блочного шифрования данных, обеспечивающего повышение скорости шифрования.
Поставленная цель достигается тем, что в известном способе блочного шифрования, заключающемся в формировании ключа шифрования в виде совокупности K подключей, разбиении блока данных на N подблоков и поочередном преобразовании подблоков, дополнительно формируют двоичный вектор, выбирают номер l, где l≅K, подключа по структуре двоичного вектора. После этого преобразуют текущий подблок, например i-й подблок, где i≅N, путем наложения на него l-го подключа.
Под формированием двоичного вектора понимается выделение в структуре подблока группы разрядов, численное значение которых берется в качестве номера подключа, накладываемого на подблок, или явное формирование двоичного вектора в отдельном регистре или ячейке памяти вычислительного устройства. Формирование двоичного вектора, по которому осуществляют выбор номера текущего подключа, может выполняться без явной записи в отдельный регистр или ячейку памяти содержимого нескольких разрядов подблока Bj в случае, когда подблок Bj записан в регистре, по которому выполняется адресация к памяти ЭВМ. В этом случае при использовании ЭВМ на базе микропроцессора Intel 486 значение 16 младших разрядов подблока Bj непосредственно берется в качестве номера l подключа.
Изменение структуры двоичного вектора в процессе шифрования блока данных не является предопределенным, а зависит от структуры блока данных и от ключа шифрования. Могут быть использованы следующие два варианта формирования двоичного вектора. В первом варианте двоичный вектор формируют по структуре j-го подблока Bj, где j≅N, причем i≠j. Во втором варианте двоичный вектор формируют по структуре j-го подблока Bj, где j≅N, причем i≠j, и по значению номера подключа, наложенного на подблок на предыдущем шаге наложения. Смысл выбора подключа, который накладывается на подблок на текущем шаге, по специально формируемому двоичному вектору, состоит в том, чтобы сделать выбор подключа непредопределенным для каждого шага преобразования подблоков. Перечисленная совокупность существенных признаков обеспечивает более высокую скорость шифрования благодаря следующему. Расписание использования подключей для каждого блока данных является непредопределенным и уникальным, что обеспечивает высокую стойкость ко всем известным способам криптоанализа, включая дифференциальный криптоанализ, при использовании даже простых арифметических операций, которые быстро выполняются микропроцессором.
Возможность технической реализации предлагаемого способа блочного шифрования поясняется следующим образом.
Предлагаемый способ ориентирован на шифрование входных блоков с помощью не повторяющихся комбинаций подключей, а именно на задание зависимости расписания использования подключей от структуры блока данных и от ключа шифрования, т.е. на задание псевдослучайной выборки подключей. Этот способ позволяет получить высокую скорость шифрования при использовании ключей шифрования длиной, например, от 256 до 2050 байт. Формирование шифрключа можно осуществить непосредственно вводя его в шифрующую систему, например, со съемного носителя информации. Формирование шифрключа можно также осуществить путем ввода пароля с клавиатуры или с машинного носителя информации в генератор псевдослучайных чисел, получая на выходе шифрключ необходимого размера. Известен ряд способов построения генераторов псевдослучайных чисел (например, Брикелл Э.Ф., Одлижко Э.М. Криптоанализ: Обзор новейших результатов. - ТИИЭР, 1988, т.76. N.5, с. 87-89). Сложность процедур формирования ключа не влияет на скорость шифрования, поскольку эту процедуру выполняют однократно при идентификации пользователя по паролю в момент включения шифрующего устройства или вызова шифрующей программы.
Предлагаемый способ может быть реализован с помощью ЭВМ или вычислительного устройства, представленного блок-схемой на фиг. 1, где
блок 1 - устройство ввода пароля пользователя;
блок 2 - блок генерации шифрключа;
блок 3 - блок памяти устройства шифрования;
блок 4 - операционный блок устройства шифрования, содержащий три или более регистра;
блок 5 - устройство шифрования;
6 - шина передачи информационных сигналов пароля пользователя;
7- шина передачи информационных сигналов шифрключа;
8 - шина передачи информационных сигналов подключей и передачи информационных сигналов входных данных и информационных сигналов преобразуемых подблоков;
9 - шина адресации;
10 - шина ввода входных данных;
11 - шина вывода шифртекста.
Используя блок 1, вводят секретный ключ, информационные сигналы 6 которого подают на вход блока 2. В блоке 2 формируют шифрключ и соответствующие ему информационные сигналы по шине 7 передают в блок памяти 3. После этого устройство шифрования 5 содержит в памяти шифрключ и готово к выполнению операций шифрования. Данное инициализированное состояние устройства сохраняется в течение всего времени работы законного пользователя. Входной блок вводят по шине 10 в операционный блок 4 и затем по шине 8 в блок памяти 3.
Входной блок данных представляют в виде совокупности подблоков, записанных по фиксированным адресам. Информационные сигналы подблока Bjпо шине 8 вводят в первый регистр операционного блока 4 (в случае ЭВМ - в один из регистров микропроцессора). Во втором регистре блока 4 формируют двоичный вектор, например, путем записи в регистр содержимого 8 младших разрядов подблока. В третий регистр вводят подблок Bi. Информационные сигналы двоичного вектора подают на шину адресации 9 и тем самым задают выбор номера l текущего подключа Ql по значению двоичного вектора. Подблок Bi преобразуют путем наложения на него подключа Ql с использованием команды, по которой операционный блок выполняет бинарную операцию, т.е. операцию над двумя двоичными векторами, например операцию сложения. Под наложением понимается выполнение бинарной операции между подблоком Bi и подключом Ql и замене исходной структуры подблока Bi на структуру двоичного вектора, являющегося результатом выполнения бинарной операции. Аналитически процедура наложения записывается в виде формулы Bi:= Bi*Ql, где знак * обозначает бинарную операцию, знак := - операцию присваивания. Схема наложения показана на фиг. 2, где
1 - подблок Bi с исходной структурой;
2 - подключ Ql;
3 - блок, выполняющий бинарную операцию*;
4 - подблок Bi с измененной структурой.
В качестве бинарной операции могут быть использованы простые арифметические операции сложения (+) и вычитания (-) по модулю 232, поразрядного суммирования по модулю 2(⊕), которые быстро исполняются микропроцессором. Могут быть использованы также более сложные бинарные операции, определенные на основе перечисленных простых бинарных операций и на основе быстро выполняемых унарных операций, т.е. операций над одним двоичным вектором, например, на основе операции циклического сдвига >d> на d бит, где 1≅d ≅b-1, где b - размер подблока в битах. Например, операцию * над 32-битовыми векторами можно определить в следующих вариантах, соответствующих формулам:

Использование в предлагаемом способе более сложных бинарных операций является допустимым, поскольку в этом случае также обеспечивается высокая скорость шифрования, а увеличение числа типов используемых операций повышает стойкость шифра.
Предлагаемый способ криптографического преобразования блоков данных легко реализуем, например, на персональных ЭВМ и обеспечивает возможность создания на его основе скоростных программных модулей шифрования, что позволяет решить ряд острых проблем защиты компьютерной информации, а также заменить в большом числе практических приложений дорогостоящую специализированную аппаратуру шифрования персональной ЭВМ, снабженной программной системой скоростного шифрования.
Формула изобретения: 1. Способ блочного шифрования данных, заключающийся в формировании ключа шифрования в виде совокупности К подключей, разбиении блока данных на N подблоков и поочередном преобразовании подблоков, отличающийся тем, что дополнительно формируют двоичный вектор, выбирают номер l, где l ≅ К, подключа по структуре двоичного вектора и преобразуют i-й подблок, где i ≅ N, путем наложения на него l-го подключа.
2. Способ по п. 1, отличающийся тем, что двоичный вектор формируют по структуре j-го подблока, где j ≅ N, причем i ≠ j.
3. Способ по п. 1, отличающийся тем, что двоичный вектор формируют по структуре j-го подблока, где j ≅ N, причем i ≠ j, и по значению номера подключа, наложенного на подблок на предыдущем шаге наложения.