Способ шифрования блоков данных
Изобретение относится к электросвязи и вычислительной технике, а конкретнее к криптографическим способам и устройствам для шифрования данных. Целью изобретения является повышение скорости шифрования недетерминированных программных шифров. Способ включает формирование ключа шифрования в виде совокупности подключей, генерирование исполняемого машинного кода программы шифрования, разбиение блока данных на подблоки и поочередное преобразование подблоков. Отличается от известных способов тем, что дополнительно формируют двоичный вектор, а на i-тый подблок Bi, где i = 1,2,3,...N, N 2 - число подблоков, накладывают I-тый подключ, где i = 1,2,3...k, K
8 число подключей, причем i подключа присваивают значение двоичного вектора. Двоичный вектор формируют по структуре j-того подблока Bj, где j = 1,2,3,...N, причем i
j, или по структуре j-того подблока Bj, где i
j, и по значению номера подключа наложенного на подблок на предыдущем шаге наложения. 2 з.п.ф-лы, 2 ил.
Изобретение относится к электросвязи и вычислительной технике, а конкретнее к криптографическим способам и устройствам для шифрования сообщений (информации). В совокупности признаков предлагаемого способа используются следующие термины: - секретный ключ (или пароль) представляет из себя комбинацию битов, известную только законному пользователю; - шифрключ (ключ шифрования) представляет из себя комбинацию битов, используемую при шифровании информационных сигналов данных; шифрключ является сменным элементом шифра и используется для преобразования данного сообщения или данной совокупности сообщений; шифрключ является известным только законному пользователю или может быть выработан по детерминированным процедурам по паролю; - шифр представляет собой совокупность элементарных шагов преобразования входных данных с использованием шифрключа; шифр может быть реализован в виде программы для ЭВМ или в виде отдельного устройства; - подключ представляет собой часть шифрключа, используемую на отдельных элементарных шагах шифрования; - расписание использования шифрключа (или подключей) представляет собой последовательность использования подключей в процессе шифрования; - шифрование есть процесс, реализующий некоторый способ преобразования данных с использованием шифрключа, переводящий данные в криптограмму, представляющую собой псевдослучайную последовательность знаков, из которой получение информации без знания шифрключа практически невыполнимо; - дешифрование есть процесс, обратный процедуре шифрования; дешифрование обеспечивает восстановление информации по криптограмме при знании шифрключа; - криптостойкость является мерой надежности защиты информации и представляет собой трудоемкость, измеренную в количестве элементарных операций, которые необходимо выполнить для восстановления информации по криптограмме при знании алгоритма преобразования, но без знания шифрключа; - криптоаналитик - лицо, пытающееся восстановить информацию по шифртексту без знания ключа шифрования.
- двоичный вектор - это некоторая последовательность нулевых и единичных битов, например 101101011; конкретная структура двоичного вектора может быть интерпретирована как двоичное число, если считать, что позиция каждого бита соответствует двоичному разряду, т.е. двоичному вектору может быть сопоставлено численное значение, которое определяется однозначно структурой двоичного вектора. - машинный код программы - последовательность нулевых и единичных битов, интерпретируемая как последовательность машинных команд и непосредственно управляющая работой вычислительного устройства, например микропроцессора, по выполнению заданного алгоритма преобразования данных. Известны способы блочного шифрования данных, см. например стандарт США DES [У. Диффи, М.Э.Хеллмэн. Защищенность и имитостойкость: Введение в криптографию// ТИИЭР. 1979. Т. 67. N 3. С. 87-89], шифр FEAL-1 и криптоалгоритм B-Crypt [С. Мафтик. Механизмы защиты в сетях ЭВМ.- М.: Мир, 1993, с. 49-52] Российский стандарт шифрования [Стандарт СССР ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования]. В известных способах шифрование блоков данных выполняют путем формирования ключа шифрования в виде совокупности подключей, разбиения преобразуемого блока данных на подблоки и поочередного изменения последних с помощью операций подстановки и перестановки, а также арифметических операций, выполняемых над текущим подблоком и текущим подключом. Однако в известных способах-аналогах процедуры шифрования одинаковы для всех пользователей, и стойкость шифрующего преобразования обеспечивается только секретностью ключа шифрования. Тот факт, что алгоритм шифрования является предопределенным, позволяет криптоаналитику детально исследовать статистические свойства используемых процедур шифрования, выявить характерные особенности алгоритма шифрования и использовать их для раскрытия шифрключей. Например, криптоаналитик имеет возможность эффективно применять дифференциальный криптоанализ [Berson T. A. Differential Cryptanalysis Mod 232 with application to MD5// EUROCRYPT'92. Hungary, May 24-28, 1992, Proceedings, p. 67-68]. Наиболее близким по своей технической сущности к заявляемому способу блочного шифрования является способ, описанный в патенте США N 5222139, от 22 июня 1993 г. , в котором для противодействия наиболее сильным способам криптоанализа, которые основаны на предварительном анализе свойств конкретных наборов шифрующих процедур, совокупность используемых процедур шифрования (составляющих уникальный для данного пользователя алгоритм шифрования) выбирается в зависимости от секретного ключа пользователя. Криптоаналитику являются известными правила формирования алгоритма шифрования, однако ему не известен секретный ключ пользователя, а следовательно является неизвестной и конкретная модификация алгоритма шифрования, сформированного в зависимости от секретного ключа. Способ-прототип включает в себя формирование ключа шифрования в виде совокупности подключей, генерацию машинного кода программы шифрования, разбиение входного 64-битового блока данных на два 32-битовых подблока и поочередное преобразование подблоков. Способ-прототип реализуется на базе библиотеки заранее описанных шифрующих процедур, являющихся возможными фрагментами программы шифрования. Библиотека шифрующих процедур включает в себя таблицы операций подстановок (или операций замещения в терминах описания патента США N 5222139) и перестановок элементов преобразуемого блока данных, операции циклического смещения вправо и влево битов преобразуемых подблоков, а также операции поразрядного сложения по модулю два или сложения по модулю 232, выполняемых между подблоком и одним из подключей. Генерация машинного кода состоит в следующем. В зависимости от секретного ключа пользователя выбираются некоторые шифрующие процедуры, устанавливается очередность их выполнения и число циклов выполнения каждой из них. После этого генерируется машинный код, который соответствует выполнению установленного по секретному ключу алгоритма преобразования блоков данных. В наборах шифрующих процедур расписание использования подключей является фиксированным, т.е. в формируемых модификациях шифрующих процедур подключи входят в процедуры преобразования независимо от преобразуемых данных (для всех блоков данных на заданных шагах использования подключей выбираются одни и те же подключи). Задание непредопределенности (недетерминированности) алгоритма шифрования существенно повышает стойкость шифра. Чем больше число потенциально реализуемых модификаций процедур шифрования, тем выше стойкость шифра, поскольку выбор конкретной модификации является случайным (т.к. зависит от случайно выбираемого секретного ключа). Однако, способ-прототип имеет недостатки, а именно, при программной реализации при числе возможных модификаций алгоритма шифрования более 109 он не обеспечивает высокой скорости шифрования, необходимой для построения программных систем защиты компьютерной информации, работающих в масштабе реального времени. Данный недостаток связан с тем, что в способе-прототипе число модификаций зависит от скорости шифрования: при скорости шифрования около 4 Мбит/с (для вычислительного комплекса HITTACHI Workstation 2050/32, являющегося более производительным по сравнению с ЭВМ на базе массового процессора Intel 486/100), число потенциально возможных модификаций составляет около 1019. Повышение скорости шифрования может быть достигнуто сокращением числа последовательно выполняемых составных шифрующих процедур, однако уменьшение их числа приводит к снижению неопределенности в выборе модификации алгоритма шифрования. При увеличение скорости, например, до 8 Мбит/с число возможных модификаций составляет всего около 109, т.е. вклад того фактора, что алгоритм шифрования не является предопределенным, в стойкость шифра резко падает. Цель изобретения - разработка способа блочного шифрования данных, обеспечивающего повышение скорости шифрования при числе потенциально реализуемых неэквивалентных модификаций алгоритма шифрования более 1020. Поставленная цель достигается тем, что в известном способе блочного шифрования, заключающемся в формировании ключа шифрования в виде совокупности K под ключей, генерировании машинного кода программы шифрования, разбиении блока данных на N подблоков и поочередном преобразовании подблоков, дополнительно формируют двоичный вектор, выбирают номер l, где l![](https://img.poleznayamodel.ru/chr/8773.gif)
![](https://img.poleznayamodel.ru/chr/8773.gif)
![](https://img.poleznayamodel.ru/chr/8773.gif)
![](https://img.poleznayamodel.ru/chr/8773.gif)
![](https://img.poleznayamodel.ru/chr/8800.gif)
![](https://img.poleznayamodel.ru/chr/8773.gif)
![](https://img.poleznayamodel.ru/chr/8773.gif)
![](https://img.poleznayamodel.ru/chr/8800.gif)
![](https://img.poleznayamodel.ru/chr/8853.gif)
![](https://img.poleznayamodel.ru/chr/8853.gif)
где блок 1 - устройство ввода пароля пользователя; блок 2 - блок формирования шифрключа и генерирования машинного кода программы шифрования (блок настройки шифра); блок 3 - блок памяти устройства шифрования; блок 4 - операционный блок устройства шифрования, содержащий три или более регистра; блок 5 - устройство шифрования; 6 - шина передачи информационных сигналов пароля пользователя; 7 - шина передачи информационных сигналов сформированного шифрключа и информационных сигналов сформированного машинного кода программы шифрования; 8 - шина передачи информационных сигналов подключей и передачи информационных сигналов входных данных и информационных сигналов преобразуемых подблоков; 9 - шина адресации; 10 - шина передачи информационных сигналов машинного кода программы шифрования; 11 - шина ввода входных данных; 12 - шина вывода шифртекста. Используя блок 1, вводят секретный ключ, информационный сигнал которого по шине 6 подают на вход блока 2. В блоке 2 формируют шифрключ и машинный код программы шифрования. Информационный сигнал шифрключа и информационный сигнал машинного кода программы шифрования по шине 7 передают в блок памяти 3. После этого устройство шифрования 5 содержит в памяти шифрключ и готово к выполнению операций шифрования. Данное инициализированное состояние устройства сохраняется в течение всего времени работы законного пользователя. Входной блок вводят по шине II в операционный блок 4 и затем по шине 8 - в блок памяти 3. Блок шифртекста считывается с шины 12. По шине 10 в операционный блок 4 передают коды машинных команд для выполнения процедур преобразования. Входной блок данных представляют в виде совокупности подблоков, записанных по фиксированным адресам. Информационные сигналы подблока Bj по шине 8 вводят в первый регистр операционного блока 4 (в случае ЭВМ - в один из регистров микропроцессора). Во втором регистре блока 4 формируют двоичный вектор, например путем записи в регистр содержимого 8 младших разрядов подблока. В третий регистр вводят подблок Bi. Информационные сигналы двоичного вектора подают на шину адресации 9 и тем самым задают выбор номера 1 текущего подключа Ql по значению двоичного вектора. Подблок Bi преобразуют путем наложения на него подключа Ql с использованием команды, по которой операционный блок выполняет бинарную операцию, т.е. операцию над двумя двоичными векторами, например операцию сложения. Под наложением понимается выполнение бинарной операции между подблоком Bi и подключом Ql и замене исходной структуры подблока Bi на структуру двоичного вектора, являющегося результатом выполнения бинарной операции. Аналитически процедура наложения записывается в виде формулы Bi:=Bi
![](https://img.poleznayamodel.ru/chr/183.gif)
где 1 - подблок Bi исходной структурой; 2 - подключ Ql; 3 - блок, выполняющий бинарную операцию
![](https://img.poleznayamodel.ru/chr/183.gif)
![](https://img.poleznayamodel.ru/chr/8853.gif)
![](https://img.poleznayamodel.ru/chr/8773.gif)
![](https://img.poleznayamodel.ru/chr/8773.gif)
![](https://img.poleznayamodel.ru/chr/183.gif)
![](https://img.poleznayamodel.ru/img_pat/3/31102.gif)
Формула изобретения
![](https://img.poleznayamodel.ru/chr/8773.gif)
![](https://img.poleznayamodel.ru/chr/8773.gif)
![](https://img.poleznayamodel.ru/chr/8773.gif)
![](https://img.poleznayamodel.ru/chr/8800.gif)
![](https://img.poleznayamodel.ru/chr/8773.gif)
![](https://img.poleznayamodel.ru/chr/8800.gif)
РИСУНКИ
Рисунок 1, Рисунок 2