EA 008183B1 20070427 Номер и дата охранного документа [PDF] EAPO2007\TIT_PDF/008183 Титульный лист описания [PDF] EAPO2007/PDF/008183 Полный текст описания EA200501623 20040519 Регистрационный номер и дата заявки EP03011696.6 20030523 Регистрационные номера и даты приоритетных заявок EP2004/050854 Номер международной заявки (PCT) WO2004/105305 20041202 Номер публикации международной заявки (PCT) EAB1 Код вида документа [eab] EAB20702 Номер бюллетеня [RU] УСТРОЙСТВО И СПОСОБ ШИФРОВАНИЯ И ДЕШИФРОВАНИЯ БЛОКА ДАННЫХ Название документа H04L 9/06 Индексы МПК [CH] Жюно Паскаль, Водена Серж Сведения об авторах [CH] МЕДИАКРИПТ АГ Сведения о патентообладателях [CH] МЕДИАКРИПТ АГ Сведения о заявителях
 

Патентная документация ЕАПВ

 
Запрос:  ea000008183b*\id

больше ...

Термины запроса в документе

Реферат

1. Способ шифровки или дешифровки блоков данных Х в Y, основанный на основном ключе R, использующий по меньшей мере два последовательно соединенных основных модуля (MOD), причем каждый из основных модулей (MOD) использует подключ (RA), полученный из основного ключа (R), и включающий этапы:

вводят по меньшей мере два исходных значения X0L и X0R,

смешивают по меньшей мере два значения X0L и X0R для образования смешанного значения Х1,

получают значение Х2 путем смешивания первой части RAH подключа RA со значением Х1,

получают значение Х3 путем обработки значения Х2 в слое подстановки, причем слой подстановки содержит по меньшей мере один блок (sbox) подстановки, причем каждый блок подстановки содержит таблицу констант, для которой входное значение служит указателем, а указанная константа служит выходным значением,

получают значение Х4 на основе значения Х3 при помощи диффузионного блока мультиперестановочного типа,

получают значение Х5 путем смешивания второй части RAL подключа RA со значением Х4,

получают значение Х6 путем обработки значения Х5 блоком подстановки,

получают значение Х7 путем смешивания первой части RAH подключа RA со значением Х6,

смешивают значение Х7 по меньшей мере с двумя исходными значениями X0L и X0R для получения по меньшей мере двух значений X8L и X8R, причем значения X8L и X8R составляют выходное значение Х8 модуля,

причем для каждого основного модуля (MOD) из основного ключа (R) генерируется новый подключ (RA), исходные значения X0L и X0R первого модуля являются подмножеством входных данных X, выходные значения X8L и X8R последнего модуля образуют выходные данные Y, а способ дополнительно включает этап применения по меньшей мере к одному из значений X8L и X8R ортоморфической функции перед направлением данных значений во входные каналы X0R и X0L следующего основного модуля.

2. Способ шифровки или дешифровки по п.1, отличающийся тем, что входные данные имеют длину 64 бит, причем входные данные Х разделены на два исходных значения X0L и X0R длиной по 32 бит, а два выходных значения X8L и X8R образуют выходные данные Y.

3. Способ шифровки или дешифровки по п.1, отличающийся тем, что входные данные имеют длину 128 бит, причем входные данные Х разделены на четыре исходных значения X0LL, X0LR, X0RL и X0RR длиной по 32 бит, а четыре выходных значения X8LL, X8LR, X8RL и X8RR образуют 128-битовые выходные данные Y, первая часть X1L значения Х1 получена смешиванием значения X0LL с X0LR, а вторая часть Х1R значения Х1 получена смешиванием значения X0RL с X0RR, первая часть X7L значения Х7 смешана с двумя из четырех исходных значений X0LL, X0LR, X0RL и X0RR, а вторая часть X7R значения Х7 смешана с оставшимися двумя частями исходных значений X0LL, X0LR, X0RL и X0RR.

4. Способ шифровки или дешифровки по п.1, отличающийся тем, что слой подстановки содержит несколько блоков (sbox) подстановки, каждый из которых имеет 8-битовый входной канал и 8-битовый выходной канал, причем входные данные слоя подстановки разбиты на части длиной по 8 бит.

5. Способ шифровки или дешифровки по п.4, отличающийся тем, что таблица (ТА) констант блока (sbox) подстановки на определенное входное значение выдает определенное выходное значение.

6. Способ шифровки или дешифровки по п.4, отличающийся тем, что таблицы констант всех блоков (sbox) подстановки одинаковы.

7. Способ шифровки или дешифровки по п.4, отличающийся тем, что таблицы констант всех блоков (sbox) подстановки различны.

8. Способ шифровки или дешифровки по п.4, отличающийся тем, что таблица констант блока (sbox) подстановки изменяется при каждом цикле работы основного модуля.

9. Способ шифровки или дешифровки по п.1, отличающийся тем, что длина данных равна 64 битам, а диффузионный блок представляет собой матричную функцию Y3 = М _ Х4, где аргумент М определяет 4*4 операции сложения, умножения или тождества, причем по меньшей мере одна строка и один столбец содержат по три тождества.

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

11. Способ шифровки или дешифровки по п.1, отличающийся тем, что длина данных равна 128 битам, а диффузионный блок представляет собой матричную функцию Y3 = N _ Х3, где аргумент N определяет 8*8 операций сложения, умножения или тождества, причем по меньшей мере одна строка и один столбец содержат по семь тождеств.

 


Полный текст патента

(57) Реферат / Формула:
Способ шифровки или дешифровки блоков данных Х в Y, основанный на основном ключе R, использующий по меньшей мере два последовательно соединенных основных модуля (MOD), причем каждый из основных модулей (MOD) использует подключ (RA), полученный из основного ключа (R), и включающий этапы:

вводят по меньшей мере два исходных значения X0L и X0R,

смешивают по меньшей мере два значения X0L и X0R для образования смешанного значения Х1,

получают значение Х2 путем смешивания первой части RAH подключа RA со значением Х1,

получают значение Х3 путем обработки значения Х2 в слое подстановки, причем слой подстановки содержит по меньшей мере один блок (sbox) подстановки, причем каждый блок подстановки содержит таблицу констант, для которой входное значение служит указателем, а указанная константа служит выходным значением,

получают значение Х4 на основе значения Х3 при помощи диффузионного блока мультиперестановочного типа,

получают значение Х5 путем смешивания второй части RAL подключа RA со значением Х4,

получают значение Х6 путем обработки значения Х5 блоком подстановки,

получают значение Х7 путем смешивания первой части RAH подключа RA со значением Х6,

смешивают значение Х7 по меньшей мере с двумя исходными значениями X0L и X0R для получения по меньшей мере двух значений X8L и X8R, причем значения X8L и X8R составляют выходное значение Х8 модуля,

причем для каждого основного модуля (MOD) из основного ключа (R) генерируется новый подключ (RA), исходные значения X0L и X0R первого модуля являются подмножеством входных данных X, выходные значения X8L и X8R последнего модуля образуют выходные данные Y, а способ дополнительно включает этап применения по меньшей мере к одному из значений X8L и X8R ортоморфической функции перед направлением данных значений во входные каналы X0R и X0L следующего основного модуля.

2. Способ шифровки или дешифровки по п.1, отличающийся тем, что входные данные имеют длину 64 бит, причем входные данные Х разделены на два исходных значения X0L и X0R длиной по 32 бит, а два выходных значения X8L и X8R образуют выходные данные Y.

3. Способ шифровки или дешифровки по п.1, отличающийся тем, что входные данные имеют длину 128 бит, причем входные данные Х разделены на четыре исходных значения X0LL, X0LR, X0RL и X0RR длиной по 32 бит, а четыре выходных значения X8LL, X8LR, X8RL и X8RR образуют 128-битовые выходные данные Y, первая часть X1L значения Х1 получена смешиванием значения X0LL с X0LR, а вторая часть Х1R значения Х1 получена смешиванием значения X0RL с X0RR, первая часть X7L значения Х7 смешана с двумя из четырех исходных значений X0LL, X0LR, X0RL и X0RR, а вторая часть X7R значения Х7 смешана с оставшимися двумя частями исходных значений X0LL, X0LR, X0RL и X0RR.

4. Способ шифровки или дешифровки по п.1, отличающийся тем, что слой подстановки содержит несколько блоков (sbox) подстановки, каждый из которых имеет 8-битовый входной канал и 8-битовый выходной канал, причем входные данные слоя подстановки разбиты на части длиной по 8 бит.

5. Способ шифровки или дешифровки по п.4, отличающийся тем, что таблица (ТА) констант блока (sbox) подстановки на определенное входное значение выдает определенное выходное значение.

6. Способ шифровки или дешифровки по п.4, отличающийся тем, что таблицы констант всех блоков (sbox) подстановки одинаковы.

7. Способ шифровки или дешифровки по п.4, отличающийся тем, что таблицы констант всех блоков (sbox) подстановки различны.

8. Способ шифровки или дешифровки по п.4, отличающийся тем, что таблица констант блока (sbox) подстановки изменяется при каждом цикле работы основного модуля.

9. Способ шифровки или дешифровки по п.1, отличающийся тем, что длина данных равна 64 битам, а диффузионный блок представляет собой матричную функцию Y3 = М _ Х4, где аргумент М определяет 4*4 операции сложения, умножения или тождества, причем по меньшей мере одна строка и один столбец содержат по три тождества.

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

11. Способ шифровки или дешифровки по п.1, отличающийся тем, что длина данных равна 128 битам, а диффузионный блок представляет собой матричную функцию Y3 = N _ Х3, где аргумент N определяет 8*8 операций сложения, умножения или тождества, причем по меньшей мере одна строка и один столбец содержат по семь тождеств.

 


008183
Область техники
Настоящее изобретение относится к устройству и способу шифровки и дешифровки блоков данных, известным под названием блочного шифра, в которых размеры входного и выходного блоков совпадают.
Данная операция производится с использованием ключа, который может иметь тот же размер, что и блок данных, или другой размер, как правило, больший.
Предшествующий уровень техники
Изобретение касается симметричного способа шифровки/дешифровки, в отличие от асимметричного способа. Симметричный способ отличается тем, что для шифровки и дешифровки данных используют один и тот же ключ, в то время как при использовании асимметричного способа для шифровки данных применяют первый ключ, а для дешифровки - второй ключ.
Хорошо известны способы DES (с 56-битовым ключом), CAST (со 128-битовым ключом), Blowfish (с 448-битовым ключом), Twofish (с 256-битовым ключом) и Rijndael (также известный под названием AES, с 256-битовым ключом). В зависимости от конкретного приложения каждый из этих способов обладает определенными достоинствами и недостатками.
Эти способы были описаны в нескольких патентных публикациях. Патент США № 5214703 описывает способ, известный под названием IDEA(tm), основанный на процессе шифровки из 8,5 циклов для блоков длиной в 64 бита, причем в каждом цикле используются 6 подключей, полученных на базе основного ключа. Ядро образовано схемой Lai-Massey, в которой используется сложение по модулю 216, умножение по модулю 216+1 и побитовое логическое сложение типа исключающее "ИЛИ".
Два основных требования, предъявляемых к любому способу шифровки, - это его устойчивость к любым формам криптоанализа и скорость вычислений. Одним из ключевых факторов обеспечения устойчивости является использование диффузионного эффекта, при котором в случае изменения одного бита входных данных все биты выходных данных изменяются непредсказуемым образом.
Скорость вычислений, в основном, определяется типом требуемых математических и логических операций. Использование большего количества сложных операций (деления или умножения) может увеличить время, необходимое для осуществления операции шифровки.
Сущность изобретения
Задача, на решение которой направлено настоящее изобретение, заключается в предложении нового способа шифровки, в котором высокий уровень безопасности сочетается с высокой скоростью вычислений.
Для решения поставленной задачи предлагается способ шифровки или дешифровки блоков данных Х в Y, основанный на основном ключе R, использующий несколько последовательно соединенных основных модуля, причем каждый из основных модулей использует подключ RA, полученный из основного ключа R, и включающий этапы:
ввода по меньшей мере двух значений X0L и X0R,
смешивания по меньшей мере двух значений X0L и X0R для образования смешанного значения Х1, получения значения Х2 путем смешивания первой части RAH подключа RA со значением Х1, получения значения Х3 путем обработки значения Х2 в слое подстановки, причем слой подстановки содержит по меньшей мере один блок (sbox) подстановки, причем каждый блок подстановки содержит таблицу констант, для которой входное значение служит указателем, а указанная константа служит выходным значением,
получения значения Х4 на основе значения Х3 при помощи диффузионного блока мультипереста-новочного типа,
получения значения Х5 путем смешивания второй части RAL подключа RA со значением Х4, получения значения Х6 путем обработки значения Х5 слоем подстановки, получения значения Х7 путем смешивания первой части RAH подключа RA со значением Х6, смешивания значения Х7 с по меньшей мере двумя исходными значениями X0L и X0R для получения по меньшей мере двух значений X8L и X8R, причем значения X8L и X8R составляют выходное значение Х8 модуля,
причем в способе используют по меньшей мере два модуля, для каждого основного модуля из основного ключа R генерируется новый подключ RA, исходные значения Х0 первого модуля являются подмножеством входных данных X, выходные значения X8L и X8R последнего модуля образуют выходные данные Y, а способ дополнительно включает этап применения к по меньшей мере одному из значений X8L и X8R ортоморфической функции перед направлением данных значений во входные каналы X0R и X0L следующего основного модуля.
Двумя основными частями способа являются слой подстановки и мультперестановочная матрица.
Слой подстановки предназначен для преобразования входного значения в выходное значение без использования простых алгебраических соотношений. Поэтому наиболее быстрый метод заключается в использовании таблицы соответствий, содержащей константы, при помощи которой можно получить требуемое смешение значений.
Поскольку в описываемом варианте осуществления входные данные имеют длину в 32 бита, количество констант равно 232, а длина каждой из них равна 32 битам.
- 1 -
008183
В соответствии с предпочтительным вариантом осуществления входные данные разбивают на группы длиной по 8 битов, что сокращает количество констант до 256 байтов.
Затем 32- или 64-битовые входные данные разбивают на байты по 8 битов и направляют в подстановочный блок для получения 8-битовых выходных данных. Входные данные используют в качестве указателя адреса, а определенная указателем константа представляет собой выходные данные.
В соответствии с одним из вариантов осуществления изобретения таблицы констант могут быть одинаковы для всех групп входных данных (32- или 64-битовых). В другом варианте осуществления таблицы констант могут быть различны для всех групп входных данных.
Константы, содержащиеся в такой таблице, представляют собой фиксированную перестановку различных (уникальных) чисел, закодированную по числу битов, равному ширине таблицы.
Вторая основная часть способа представляет собой мультиперестановочную матрицу. Мультипере-становочная матрица представляет собой квадратную матрицу, в которой определитель любой возможной квадратной подматрицы не равен нулю, а элементы матрицы являются элементами конечного поля. Операция смешивания сводится к умножению вектора входных элементов на матрицу, в результате которого получают вектор, представляющий собой выходные данные.
Краткое описание чертежей
Фиг. 1 изображает блок-схему основного модуля в 64-битовой версии.
Фиг. 2 иллюстрирует основной процесс с примером использования двух модулей.
Фиг. 3 изображает внутреннюю часть основного модуля в 64-битовой версии.
Фиг. 4 изображает блок-схему основного модуля в 128-битовой версии.
Фиг. 5 изображает блок-схему ортоморфической функции.
Фиг. 6 изображает подсистему генерации блока подстановки.
Фиг. 7 изображает внутреннюю часть основного модуля в 128-битовой версии.
Фиг. 8 иллюстрирует основной процесс с примером использования двух модулей в 128-битовой версии.
Фиг. 9 изображает альтернативный вариант блока подстановки.
Сведения, подтверждающие возможность осуществления изобретения
На фиг. 1 изображен каркас процесса шифровки (или дешифровки), которому соответствует модуль MOD. Входные данные Х0 размером 64 бита, составленные из двух частей X0L и X0R, каждая из которых имеет размер 32 бита, сначала смешивают при помощи смешивающего элемента MX и получают значение Х1. Смешивающий элемент предназначен для получения 32-битового образа двух 32-битовых наборов данных. Эта операция может быть выполнена различными методами, например с использованием функции X0R (исключающего "ИЛИ"), сложения по модулю или любого группового правила.
Следующий шаг проиллюстрирован блоком f32, который содержит 32-битовые входные данные Х1 и 32-битовые выходные данные Х7, а также использует подключ RA. Подробное описание данного блока приведено со ссылками на фиг. 3 (см. ниже).
Выходные данные Х7 блока f32 поступают в два смешивающих блока MX, соединенных с двумя входами X0L и X0R.
Итоговые данные X8L и X8R представляют собой два 64-битовых набора Х8 выходных данных модуля MOD.
На фиг. 2 представлена схема всего процесса, в котором используются по меньшей мере два модуля MOD. Входные данные Х сначала поступают в разделяющий модуль SP, преобразующий 64-битовый входной набор Х в два выходных набора X0L1 и X0R1, каждый из которых имеет длину в 32 бита.
Действие разделяющего модуля SP может быть основано на различных принципах; например отбора младших битов для набора X0L1, а старших битов - для набора X0R1 или каждого нечетного бита -для набора X0L1, а каждого четного бита - для набора X0R1. Также могут использоваться и другие методы разделения входных данных X, если они обеспечивают полное распределение всех битов набора Х между наборами X0L1 и X0R1.
Выходные данные X0L1 и X0R1 затем используют в качестве входных данных первого модуля MOD1. Этот первый модуль обрабатывает данные, используя первый подключ RA1. Обработка данных X0L1 и X0R1 производится так же, как описано со ссылками на фиг. 1. На выходе первого модуля MOD1 получают два набора X8L1 и X8R1 выходных данных. Как показано на фиг. 2, к одному из этих наборов выходных данных, например X8L1, применяют ортоморфическую функцию. Выходные данные, полученные в результате действия этой ортоморфической функции, обозначены как X0L2. Второе значение X8R1, полученное в результате обработки данных первым модулем MOD1, так же, как и выходные данные X0L2, полученные в результате действия ортоморфической функции, используют в качестве входных данных второго обрабатывающего модуля MOD2. Второй модуль MOD2 обрабатывает входные данные с использованием второго подключа RA2. Выходные данные этого второго модуля обозначены на фиг. 2 как X8L2 и X8R2. Эти выходные данные собирают в шифрованные данные Y при помощи собирающего модуля AS. Собирающий модуль AS имеет те же функции, что и разделяющий модуль SP, но действует в обратном направлении. Следует отметить, что метод восстановления набора Y выходных
- 2 -
008183
данных может отличаться от метода разделения данных, используемого в модуле SP, однако, цель его остается неизменной. Все биты данных X8L2 и X8R2 должны присутствовать в данных Y.
На фиг. 3 подробно проиллюстрированы функции блока f32, изображенного на фиг. 1. На вход этого блока поступает 32-битовый набор Х1 данных. Данные разбивают на блоки длиной по 8 битов (Х1а, X1b, X1c, X1d) при помощи разделяющего модуля SPMU, также обозначенного на фиг. 3 как Х1'. Этот блок выполняет ту же функцию, что и блок SP, изображенный на фиг. 2. Каждый из этих 8-битовых блоков смешивают с первой частью RAH подключа RA, чтобы получить значения Х2а, X2b, X2c, X2d (составляющие значение Х2). Эта операция смешивания аналогична той, что описана для блока MX, изображенного на фиг. 1.
Два подключа RAH и RAL генерируются разделяющим модулем SP. Этот модуль имеет функцию, аналогичную описанной выше со ссылками на фиг. 1.
Каждое из значений X2a-X2d обрабатывают в слое подстановки, содержащем по меньшей мере один блок (sbox) подстановки, причем каждый из блоков подстановки содержит таблицу констант, для которой входящее значение служит указателем, а определенная указателем константа служит выходным значением. Выходные значения обозначены на фиг. 3 как Х3а, Х3Ь, Х3с, X3d и составляют значение Х3.
Один из методов генерирования таблицы констант заключается в использовании генератора псевдослучайных чисел. Повторяющиеся значения должны быть исключены так, чтобы каждая константа в таблице была уникальна.
Эти данные вводят в диффузионный блок ММ, относящийся к типу мультиперестановочных матриц (4,4). Выходные данные диффузионного блока обозначены как Х4а, Х4Ь, Х4с, X4d и составляют значение Х4. Операция, производимая диффузионным блоком, заключается в умножении вектора (Х4а, Х4Ь, Х4с, X4d) входных данных на квадратную матрицу ММ размером 4х4, элементы которой принадлежат к конечному полю из 256 элементов и обозначены как Mu(i, j), где индекс i обозначает номер строки, а индекс j - номер столбца. В результате умножения вектора (Х4а, Х4Ь, Х4с, X4d) на матрицу ММ получают вектор (Y4a, Y4b, Y4c, Y4d), элементы которого вычисляют следующим образом:
Y4a=Мu4(1,1)*Х4а+Мu4(1,2)*Х4b+Мu4(1,3)*Х4с+Mu4(1,4)*X4d
Y4b=Mu4(2,1)*X4a+Mu4(2,2)*X4b+Mu4(2,3)*X4c+Mu4(2,4)*X4d
Y4c=Mu4(3,1)*X4a+Mu4(3,2)*X4b+Mu4(3,3)*X4c+Mu4(3,4)*X4d Y4d=Mu4(4,1)*X4a+Mu4(4,2)*X4b+Mu4(4,3)*X4c+Mu4(4,4)*X4d
Символ "+" обозначает здесь сложение в конечном поле, а символ "*" - умножение в нем же. Элементы матрицы ММ подобраны так, чтобы количество вычислений, необходимых для получения четырех вышеуказанных значений, было минимальным. Поэтому количество умножений на константу "1" (далее называемых "тождествами") выбирается максимальным.
Затем данные смешивают со второй частью RAL подключа RA для получения значений Х5а, X5b, X5c, X5d, которые составляют значение Х5.
Каждое из значений X5a-X5d обрабатывают в при помощи блока (sbox) подстановки и получают значения Х6а, X6b, X6c, X6d, которые составляют значение Х6. Эти значения смешивают с первой частью RAH подключа RA для получения новых значений Х7а, X7b, X7c, X7d, которые составляют значение Х7.
Затем из значений Х7а, X7b, X7c, X7d собирают выходной набор Х7 данных при помощи собирающего модуля AS, описанного выше со ссылками на фиг. 2. Эти данные соответствуют выходным данным Х7 блока f32, изображенного на фиг. 1.
В процессе шифровки основной ключ R разделяют на несколько подключей, каждый из которых приходится на один модуль MOD. В примере, представленном на фиг. 3, первый подключ RA1 используется в сочетании с модулем MOD1, а второй подключ RA2 - в сочетании с модулем MOD2.
Для получения данных Х по данным Y и ключу R применяют тот же процесс, что описан со ссылками на фиг. 3, с тем единственным отличием, что подключи генерируются в обратном порядке. Затем подключ RA2 применяют к первому модулю MOD1, а подключ RA1 - ко второму модулю MOD2.
В соответствии с общими принципами настоящего изобретения количество последовательно соединенных модулей MOD не ограничено двумя. Как показывает опыт, для получения хорошего уровня устойчивости оптимальным является использование 9 циклов, при котором получаемый результат может быть назван процессом шифровки. Для повышения устойчивости количество циклов может быть увеличено до 12 или более.
Фиг. 4 иллюстрирует осуществление модуля MOD64, разработанного для обработки наборов данных длиной по 128 битов. Входные данные X0LL и X0LR смешивают при помощи смешивающего элемента MX для получения выходного значения ХЩ а входные данные X0RL и X0RR смешивают аналогичным образом для получения выходного значения ХШ..
Следующий шаг проиллюстрирован слоем f64, который содержит два 32-битовых входных набора данных X1L и X1R и два 32-битовых выходных набора данных, а также использует подключ RA. Подробное описание этого блока приведено со ссылками на фиг. 7 (см. ниже).
Каждый из этих выходных наборов данных смешивают с двумя входными наборами данных модуля MOD64 в одном и том же смешивающем элементе MX. В представленном примере выходное значение
- 3 -
008183
X7L смешивают соответственно с входными данными X0LL и X0LR, а выходное значение X7R смешивают соответственно с входными данными X0RL и X0RR. Также возможны другие комбинации для смешивания: например, перекрестная конфигурация со смешиванием выходного значения X7L с данными X0LL и X0RR.
На фиг. 5 проиллюстрировано осуществление ортоморфической функции. Входные данные обозначены как ZI, а выходные данные - как ZO. Длина данных для этой функции не важна. Входные данные ZI сначала разделяют при помощи разделяющего модуля SP на два набора данных ZL и ZR одинаковой длины. Затем два набора данных смешивают при помощи так называемого смешивающего элемента MX, а выходные данные этого элемента вводят в собирающий модуль AS. Второе из разделенных значений ZR прямо направляют в собирающий модуль AS без изменений. Этот модуль содержит два входных канала и собирает эти данные в выходные данные ZO. Этот модуль работает по принципу, обратному принципу работы разделяющего модуля SP. Особенность данного осуществления заключается в том, что входные каналы собирающего модуля расположены перекрестно относительно выходных каналов разделяющего модуля SP. Данные из правого выходного канала ZR разделяющего модуля SP направляют в левый входной канал собирающего модуля AS, а данные из левого выходного канала ZR разделяющего модуля SP после смешивания с другими выходными данными разделяющего модуля SP направляют в правый входной канал собирающего модуля AS.
Для осуществления блока подстановки существует несколько возможностей. Выше был описан метод, основанный исключительно на использовании таблицы констант. Первый шаг, предпринимаемый для уменьшения размеров таблицы, заключается в разделении входных данных и обработки части данных при помощи таблицы гораздо меньшего размера.
На фиг. 3 приведен пример блока подстановки, работающего с наборами данных длиной в 8 битов, для чего требуется таблица из 256 констант.
В некоторых случаях, в частности, если объем памяти является важным фактором, используются альтернативные варианты. Один из таких вариантов описан со ссылками на фиг. 6-9.
На фиг. 6 изображена подсистема СЬОХ блока подстановки, содержащая один входной канал С, разделенный на два входных канала CL и CR, а также два выходных канала CL' и CR'.
Основным элементом этой системы является модуль ТА, который содержит таблицу констант из 2(n/2) элементов, каждый размером по n/2 битов, где n - длина исходного набора данных С.
Если входные данные имеют длину в 8 битов, таблица констант содержит 16 (24) элементов, каждый длиной по 4 бита. Эти элементы генерируются случайным образом с учетом того, что каждый элемент должен иметь уникальное значение.
Фиг. 9 иллюстрирует использование модуля СЬОХ для создания блока подстановки. Сначала входное значение CI разделяют на две части CL1 и CR1 и направляют в первый модуль СЬох1, как описано со ссылками на фиг. 3. Выходные данные модуля СЬох1 направляют в следующий модуль СЬох2. Один из выходных наборов данных первого модуля, в данном случае данные CL1', перед направлением во второй модуль СЬох2 обрабатывают при помощи ортоморфической функции OR ("ИЛИ").
В работе модуля подстановки обычно используют по меньшей мере две подсистемы СЬох, каждая из которых имеет свою таблицу констант ТА. В представленном примере в модуле подстановки используются три подсистемы СЬох, причем в соответствии с данным вариантом осуществления изобретения выходные данные последней из этих подсистем не обрабатывают при помощи ортоморфической функции OR.
На фиг. 7 представлен вариант осуществления, альтернативный варианту по фиг. 3 и предназначенный для работы с данными длиной в 64 бита. В целом, для обработки 64-битовых данных дублируют схему, разработанную для обработки 32-битовых данных. Входные данные Х1 разбивают на вектор с элементами длиной по 8 битов (Х1а-Х111) и обрабатывают так же, как было описано выше со ссылками на фиг. 3. Главное отличие заключается в использовании диффузионного блока Ми8, представляющего собой матрицу из 8х8 элементов, выбранных из конечного поля 256 элементов. Элементы матрицы обозначены как Mu8(i, j), где индекс i обозначает номер строки, а индекс j - номер столбца. Умножение входного вектора (Х3а, Х311) на матрицу Ми8 дает выходной вектор (Y3a, Y3h) по следующим формулам (в которых символ "+" обозначает сложение, а символ "*" - умножение в конечном поле):
Y3a=Mu8(1,1)*X3a+Mu8(1,2)*X3b+Mu8(1,3)*X3c+Mu8(1,4)*X3d+Mu8(1,5)*X3e+Mu8(1,6)*X3f+ Mu8(1,7)*X3g+Mu8(1,8)*X3h;
Y3b=Mu8(2,1)*X3a+Mu8(2,2)*X3b+Mu8(2,3)*X3c+Mu8(2,4)*X3d+Mu8(2,5)*X3e+Mu8(2,6)*X3f+ Mu8(2,7)*X3g+Mu8(2,8)*X3h;
Y3c=Mu8(3,1)*X3a+Mu8(3,2)*X3b+Mu8(3,3)*X3c+Mu8(3,4)*X3d+Mu8(3,5)*X3e+Mu8(3,6)*X3f+ Mu8(3,7)*X3g+Mu8(3,8)*X3h;
Y3d=Mu8(4,1)*X3a+Mu8(4,2)*X3b+Mu8(4,3)*X3c+Mu8(4,4)*X3d+Mu8(4,5)*X3e+Mu8(4,6)*X3f+
Mu8(4,7)*X3g+Mu8(4,8)*X3h;
Y3e=Mu8(5,1)*X3a+Mu8(5,2)*X3b+Mu8(5,3)*X3c+Mu8(5,4)*X3d+Mu8(5,5)*X3e+Mu8(5,6)*X3f+
Mu8(5,7)*X3g+Mu8(5,8)*X3h;
- 4 -
008183
Y3f=Mu8(6,1)*X3a+Mu8(6,2)*X3b+Mu8(6,3)*X3c+Mu8(6,4)*X3d+Mu8(6,5)*X3e+Mu8(6,6)*X3f+ Mu8(6,7)*X3g+Mu8(6,8)*X3h;
Y3g=Mu8(7,1)*X3a+Mu8(7,2)*X3b+Mu8(7,3)*X3c+Mu8(7,4)*X3d+Mu8(7,5)*X3e+Mu8(7,6)*X3f+ Mu8(7,7)*X3g+Mu8(7,8)*X3h;
Y3h=Mu8(8,1)*X3a+Mu8(8,2)*X3b+Mu8(8,3)*X3c+Mu8(8,4)*X3d+Mu8(8,5)*X3e+Mu8(8,6)*X3f+ Mu8(8,7)*X3g+Mu8(8,8)*X3h;
Фиг. 8 полностью иллюстрирует весь процесс, в котором использованы два цикла работы модуля MOD64. Разделяющий модуль SP разделяет входные данные Х длиной в 128 битов на четыре части, а именно X0LL1, X0LR1, X0RL1 и X0RR1 (которые вместе составляют значение Х0). Две части выходных данных модуля MOD64-1 затем обрабатывают при помощи ортоморфической функции OR, а затем направляют на вход следующего модуля MOD64-2.
Положение ортоморфической функции OR относительно выходных каналов модуля MOD64 не является решающим фактором. Для обработки этой функцией могут быть выбраны два левых выходных канала или два правых выходных канала в зависимости от конкретного варианта осуществления данного способа.
Выходные данные Y получают прямо из последнего модуля MOD64 без использования ортоморфи-ческой функции OR в одном из его выходных каналов.
Если используется более двух модулей MOD64, ортоморфическую функцию OR предусматривают между каждыми двумя модулями MOD64. Хотя в предпочтительном варианте осуществления изобретения положение ортоморфических функций OR остается неизменным независимо от номера модуля, в других вариантах осуществления положение этих ортоморфических функций OR может изменяться с соединением функции с другими выходными каналами модуля MOD64.
ФОРМУЛА ИЗОБРЕТЕНИЯ
1. Способ шифровки или дешифровки блоков данных Х в Y, основанный на основном ключе R, использующий по меньшей мере два последовательно соединенных основных модуля (MOD), причем каждый из основных модулей (MOD) использует подключ (RA), полученный из основного ключа (R), и включающий этапы:
вводят по меньшей мере два исходных значения X0L и X0R,
смешивают по меньшей мере два значения X0L и X0R для образования смешанного значения Х1, получают значение Х2 путем смешивания первой части RAH подключа RA со значением Х1, получают значение Х3 путем обработки значения Х2 в слое подстановки, причем слой подстановки содержит по меньшей мере один блок (sbox) подстановки, причем каждый блок подстановки содержит таблицу констант, для которой входное значение служит указателем, а указанная константа служит выходным значением,
получают значение Х4 на основе значения Х3 при помощи диффузионного блока мультиперестано-вочного типа,
получают значение Х5 путем смешивания второй части RAL подключа RA со значением Х4, получают значение Х6 путем обработки значения Х5 блоком подстановки, получают значение Х7 путем смешивания первой части RAH подключа RA со значением Х6, смешивают значение Х7 по меньшей мере с двумя исходными значениями X0L и X0R для получения по меньшей мере двух значений X8L и X8R, причем значения X8L и X8R составляют выходное значение Х8 модуля,
причем для каждого основного модуля (MOD) из основного ключа (R) генерируется новый под-ключ (RA), исходные значения X0L и X0R первого модуля являются подмножеством входных данных X, выходные значения X8L и X8R последнего модуля образуют выходные данные Y, а способ дополнительно включает этап применения по меньшей мере к одному из значений X8L и X8R ортоморфической функции перед направлением данных значений во входные каналы X0R и X0L следующего основного модуля.
2. Способ шифровки или дешифровки по п.1, отличающийся тем, что входные данные имеют длину 64 бит, причем входные данные Х разделены на два исходных значения X0L и X0R длиной по 32 бит, а два выходных значения X8L и X8R образуют выходные данные Y.
3. Способ шифровки или дешифровки по п.1, отличающийся тем, что входные данные имеют длину 128 бит, причем входные данные Х разделены на четыре исходных значения X0LL, X0LR, X0RL и X0RR длиной по 32 бит, а четыре выходных значения X8LL, X8LR, X8RL и X8RR образуют 128-битовые выходные данные Y, первая часть X1L значения Х1 получена смешиванием значения X0LL с X0LR, а вторая часть ХЖ значения Х1 получена смешиванием значения X0RL с X0RR, первая часть X7L значения Х7 смешана с двумя из четырех исходных значений X0LL, X0LR, X0RL и X0RR, а вторая часть X7R значения Х7 смешана с оставшимися двумя частями исходных значений X0LL, X0LR, X0RL и X0RR.
- 5 -
008183
4. Способ шифровки или дешифровки по п.1, отличающийся тем, что слой подстановки содержит несколько блоков (sbox) подстановки, каждый из которых имеет 8-битовый входной канал и 8-битовый выходной канал, причем входные данные слоя подстановки разбиты на части длиной по 8 бит.
5. Способ шифровки или дешифровки по п.4, отличающийся тем, что таблица (ТА) констант блока (sbox) подстановки на определенное входное значение выдает определенное выходное значение.
6. Способ шифровки или дешифровки по п.4, отличающийся тем, что таблицы констант всех блоков (sbox) подстановки одинаковы.
7. Способ шифровки или дешифровки по п.4, отличающийся тем, что таблицы констант всех блоков (sbox) подстановки различны.
8. Способ шифровки или дешифровки по п.4, отличающийся тем, что таблица констант блока (sbox) подстановки изменяется при каждом цикле работы основного модуля.
9. Способ шифровки или дешифровки по п.1, отличающийся тем, что длина данных равна 64 битам, а диффузионный блок представляет собой матричную функцию Y3 = М х Х4, где аргумент М определяет 4*4 операции сложения, умножения или тождества, причем по меньшей мере одна строка и один столбец содержат по три тождества.
10. Способ шифровки или дешифровки по п.9, отличающийся тем, что остальные строки и остальные столбцы аргумента М содержат по два тождества.
11. Способ шифровки или дешифровки по п.1, отличающийся тем, что длина данных равна 128 битам, а диффузионный блок представляет собой матричную функцию Y3 = N х Х3, где аргумент N определяет 8*8 операций сложения, умножения или тождества, причем по меньшей мере одна строка и один столбец содержат по семь тождеств.
XOL . . X0R
MOD
X8L+ I X8R
Фиг. 1
XOLl
XORl
MODI
RAl
X8L1
X8R1
X0L2
X0R2
MOD2
RA2
X8L2
X8R2
Фиг. 2
- 6 -
008183
Xl'-> Х2-> ХЗ->
Х4-> Х5->
Х6-> Х7'->
Х7->
X0LL
Фиг. 3
XOLR
XORL
XORR
X8LL.
X8LR1 X8RL 1 X8RR,
Фиг. 4
Z0 Фиг. 5
- 7 -
008183
XI->
Xl'-> Х2->
хз->
Х4->
Х5->
X6 -> Х7->
Х7->
Ф- |СЬ-Ф
СВох
CL' CR* Фиг. 6
RAL
RAH
X1L
Х1Н
SPMU
Х1а
Х2а
sbox
Xlb
X2b
sbox
Xlc
X2c
sbox
Xld
X2d
sbox
X3a X3b X3c X3d
Mu8
X4a н X4b ч X4c
I X5a I X5b j X5c _^5ctTj
X4d 1 X4e 1 X4f | X4g | X4h
X5eT X5f T X5g X5h
X7L
X7H
Фиг. 7
- 8 -
008183
X0LL1
X0LR1 X0RL1
MOD64-1
X8LL1
X0LL2
X8LR1 X8RL1
X0LR2 X0RL2
MOD64-2
X8LL2
X8LR2 X8RL2
X0RR1 = XO
RAl X8RR1
X0RR2
RA2 X8RR2
= X8
Фиг. 8 CI I
CL1
Cboxl
CL'l
CL2
Cbox2
CL'2
CL3
СЬохЗ
CI/3
CR1
CR'l
CR2
CR'2
CR3
CR'3
Фиг. 9
Евразийская патентная организация, ЕАПВ Россия, 109012, Москва, Малый Черкасский пер., 2/6
- 9 -