EA021803B1 - Способ шифрования данных для вычислительных платформ с simd-архитектурой - Google Patents

Способ шифрования данных для вычислительных платформ с simd-архитектурой Download PDF

Info

Publication number
EA021803B1
EA021803B1 EA201200672A EA201200672A EA021803B1 EA 021803 B1 EA021803 B1 EA 021803B1 EA 201200672 A EA201200672 A EA 201200672A EA 201200672 A EA201200672 A EA 201200672A EA 021803 B1 EA021803 B1 EA 021803B1
Authority
EA
Eurasian Patent Office
Prior art keywords
array
logical
arrays
respect
result
Prior art date
Application number
EA201200672A
Other languages
English (en)
Other versions
EA201200672A1 (ru
Inventor
Леонид Анатольевич ТЫЧИНА
Original Assignee
Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" (Оао "Инфотекс")
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" (Оао "Инфотекс") filed Critical Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" (Оао "Инфотекс")
Priority to EA201200672A priority Critical patent/EA021803B1/ru
Publication of EA201200672A1 publication Critical patent/EA201200672A1/ru
Publication of EA021803B1 publication Critical patent/EA021803B1/ru

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

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

Description

Область техники, к которой относится изобретение
Изобретение, в общем, относится к шифрованию данных, в частности к шифрованию данных согласно ГОСТ 28147-89 для вычислительных платформ с δΙΜΌ-архитектурой.
Описание предшествующего уровня техники
В современной технике шифрование данных играет значительную роль и имеет весьма широкое применение. Как следствие, к разработкам в области шифрования данных приковано серьезное внимание на различных уровнях.
Национальный стандарт Российской Федерации ГОСТ 28147-89 устанавливает единый алгоритм криптографического преобразования для систем обработки информации в сетях ЭВМ и отдельных вычислительных комплексах. ГОСТ 28147-89, содержимое которого по ссылке полностью включено в настоящее описание, вводит алгоритм блочного шифрования с размером блока 64 двоичных разряда (далее - разряда) и 256-разрядным ключом. В криптографическом преобразовании используется блок подстановки, состоящий из восьми узлов замены. Каждый узел замены представляет собой таблицу из шестнадцати 4-разрядных чисел и обеспечивает взаимно однозначное отображение множества 4-разрядных чисел на себя. При этом следует отметить, что стандарт не специфицирует конкретного набора констант для блока подстановки. Это означает, что разработчик может по своему усмотрению выбрать его наполнение.
В ГОСТ 28147-89 описывается ряд режимов шифрования, а именно: простой замены, гаммирования, гаммирования с обратной связью и выработки имитовставки. Цикл шифрования составляет основу каждого из упомянутых режимов, которые отличаются друг от друга специфическим комбинированием входных параметров.
В настоящее время вычислительные платформы с δΙΜΌ-архитектурой широко применяются на практике. Такая платформа, в общем, допускает параллельную обработку N потоков данных, так как ее аппаратная компонента состоит из N независимых, но идентичных по ресурсоемкости процессорных элементов, при этом управление обработкой осуществляется единым потоком команд. Каждый процессорный элемент располагает локальной оперативной памятью. Процессорные элементы получают команды от одного центрального контроллера команд и работают синхронно, исполняя на каждом шаге одну и ту же команду. При этом каждый процессорный элемент оперирует с данными из локальной оперативной памяти, т.е. основной характеристикой δΙΜΌ-архитектуры является то, что все N процессорных элементов исполняют фиксированную команду, но над различными данными.
Известны процессоры с δΙΜΌ-архитектурой производства компаний 1п1е1 или ΑΜΌ, которые помимо инструкций стандартной архитектуры включают также набор специализированных инструкций (так называемых δΙΜΌ-инструкций), в частности набор инструкций δδΕ-технологии (81геапппд δΙΜΌ Е.\1епхюпх).
Принимая во внимание обеспечиваемые δΙΜΌ-архитектурой высокие рабочие характеристики, обуславливаемые вышеупомянутым распараллеливанием, перспективной представляется реализация на ней шифрования данных согласно ГОСТ 28147-89 с целью повышения производительности. Однако экспериментально показано, что при использовании исключительно δΙΜΌ-инструкций невозможно реализовать цикл шифрования ГОСТ 28147-89 в точном соответствии с описанным в стандарте алгоритмом. Суть проблемы заключается в том, что δΙΜΌ-инструкций не позволяют осуществить выполняемую при шифровании данных операцию замены так, как это указано в ГОСТ 28147-89. Очевидно, что для выполнения этой операции можно воспользоваться инструкциями стандартной архитектуры. Однако в итоге производительность не увеличивается, а наоборот снижается. Такое снижение обусловлено дополнительными накладными расходами, которые возникают в результате согласования данных при переключении между инструкциями δΙΜΌ- и стандартной архитектур.
Таким образом, в технике существует потребность в методике реализации цикла шифрования ГОСТ 28147-89, исключающей смешивание инструкций стандартной архитектуры и δΙΜΌ-инструкций.
Для алгоритма блочного шифрования ΌΕδ известна реализация с применением δΙΜΌ-инструкций (см. Е. Βίΐιαιη. А Гах1 пе\у ΌΕδ нпр1етеп1аОоп ίη хоП\уаге. ЬесФте ΝοΡχ ίη СотрШег δ<^η<^. νοί. 1267, рр. 260-272, 1997), в которой предлагается использовать δΙΜΌ-инструкции над 64-разрядными регистрами для параллельного шифрования шестидесяти четырех независимых потоков данных. Однако использование описанного в этой статье подхода для реализации цикла шифрования по ГОСТ 28147-89 с конкретным наполнением узлов замены не применимо в силу существенных алгоритмических различий ΌΕδ и ГОСТ 28147-89.
Возможный подход к реализации национального стандарта шифрования предлагается в публикации А. Винокурова Алгоритм шифрования ГОСТ 28147-89, его использование и программная реализация для компьютеров платформы Ιηίο1\86, Монитор, №1, с. 5, 1995, которая в переработанном и дополненном виде доступна по адресу ЬПр://ууу.епПдЦ.ги/сгур1о/аг1ю1е8Мпокш^/до81_Шт.
Данная публикация содержит описание реализации стандарта ГОСТ 28147-89 для платформ ΙηΡί\86, однако специфика δΙΜΌ-архитектуры при этом никак не учитывается.
Краткое описание сущности изобретения
Предлагается методика реализации цикла шифрования данных согласно ГОСТ 28147-89 на δΙΜΌ- 1 021803 архитектуре, позволяющая избежать вынужденного смешивания инструкций стандартной архитектуры и δΙΜΌ-инструкций за счет специализированной адаптации узлов замены, обеспечивающей возможность выполнения операции замены исключительно при помощи δΙΜΌ-инструкций. При реализации на 8ΙΜΌархитектуре заданного типа предлагаемый подход обеспечивает двукратный прирост производительности по сравнению с реализацией исключительно на основе инструкций стандартной архитектуры.
Согласно настоящему изобретению предлагается реализация цикла шифрования данных по ГОСТ 28147-89 для компьютерных систем, имеющих δΙΜΌ-архитектуру. Предлагаемый способ содержит этапы, на которых инициализируют маски Μ (к=1, ..., 6), причем каждая маска представляет собой массив размерности 4, каждый элемент которого представляет собой уникальную для маски 32-разрядную константу; реорганизуют оговоренные в ГОСТ 28147-89 предварительно заполненные узлы замены Кт (т=1, ..., 8), каждый из которых представляет собой массив 4-разрядных чисел размерности 16, в массивы Т (]=0, ..., 3) 4-разрядных чисел размерности 32 следующим образом:
Т0[2(л>] = + = Ке[л],
ТД2(п)] = КЦп],Г,[2(п) + 1] = К4[п],
7^2{л)] = КДл],Г:[2(л) + 1] = Кг[л], ' ' ' '
Т,Ип)] = КДп],Г3[2(л) + 1] = ед выполняют цикл шифрования. Отметим, что количество выполнений упомянутого цикла шифрования определено в ГОСТ 28147-89.
Предпочтительно, δΙΜΌ-архитектура является δΙΜΌ-архитектурой компании 1п1с1 или аналогичной архитектурой компании ΛΜΌ, образуемой процессором, имеющим четыре процессорных элемента.
При выполнении цикла шифрования формируют массивы 32-разрядных элементов размерности 4:
= {Νι.ίΐζ = {Χϊ}, X = {Χχ}, 2 = 0, ..., 3, где Ν1>1, Ν2>1 - подблоки, на которые предварительно разбит 64-разрядный блок шифруемых данных, а X! - часть 256-разрядного ключа шифрования, выбираемая в соответствии с ГОСТ 28147-89. Выбор части ключа шифрования предпочтительно определяется режимом шифрования, предусмотренным ГОСТ 28147-89. С каждым из процессорных элементов связано отдельное локальное запоминающее устройство, в котором сохраняется соответственно один из наборов Ν1>1, Ν2>1, Χ1 (ί=0, ..., 3) для независимой обработки этим процессорным элементом. В то же время узлы замены Кт (т=1, ..., 8) в совокупности образуют блок подстановки, который является единым для всех процессорных элементов.
При выполнении цикла шифрования далее формируют массив СМ1 путем выполнения операции суммирования по модулю 232 в отношении массивов Ν1 и X. Затем формируют первый вспомогательный массив Υ0 путем применения к массиву СМ1 операции поразрядного сдвига вправо на четыре разряда, формируют второй вспомогательный массив Υ путем применения операции логического ИЛИ к результату операции логического И в отношении маски Μ1 и массива СМ1 и результату операции логического И в отношении маски М2 и первого вспомогательного массива Υ0 и формируют третий вспомогательный массив Ζ путем применения операции логического ИЛИ к результату операции логического И в отношении маски М1 и первого вспомогательного массива Υ0 и результату операции логического И в отношении маски М2 и массива СМ!. После этого формируют первый промежуточный массив К0 путем применения операции логического И к маске М2 и результату выполнения операции перемешивания в отношении массива Т0 и второго вспомогательного массива Υ, формируют второй промежуточный массив К! путем применения операции логического И к маске М5 и результату выполнения операции перемешивания в отношении массива Т2 и третьего вспомогательного массива Ζ, формируют третий промежуточный массив К2 путем применения операции логического И к маске М4 и результату выполнения операции перемешивания в отношении массива Т1 и второго вспомогательного массива Υ, формируют четвертый промежуточный массив К2 путем применения операции логического И к маске М6 и результату выполнения операции перемешивания в отношении массива Т3 и третьего вспомогательного массива Ζ и формируют пятый промежуточный массив К, объединяющий ранее полученные промежуточные массивы с первого по четвертый, путем применения операции логического ИЛИ к результату операции логического ИЛИ в отношении первого промежуточного массива К0 и третьего промежуточного массива К2 и результату операции логического ИЛИ в отношении второго промежуточного массива и четвертого промежуточного массива К3. Применением операции логического И к соответствующей маске и соответствующему результату операции перемешивания обнуляются незначащие значения в получающемся промежуточном массиве.
Затем при выполнении цикла шифрования в отношении пятого промежуточного массива К выполняют циклический сдвиг путем применения операции логического ИЛИ к результату операции поразрядного сдвига влево на одиннадцать разрядов в отношении массива К и результату операции поразрядного сдвига вправо на двадцать один разряд в отношении массива К. После этого формируют представляющий шифрованные данные массив СМ2 путем выполнения операции поразрядного суммирования по модулю 2 в отношении пятого промежуточного массива, прошедшего циклический сдвиг, и массива Ν2.
Упомянутые выше операции логического И, логического ИЛИ, сдвига вправо/влево, суммирования
- 2 021803 по модулю 2, суммирования по модулю 232 и перемешивания непосредственно предусмотрены 8ΙΜΌархитектурой.
Согласно настоящему изобретению также предлагается машиночитаемый носитель, на котором сохранены машиноисполняемые команды, которые при их исполнении компьютерной системой, имеющей δΙΜΌ-архитектуру, предписывают этой компьютерной системе выполнять заявляемый способ шифрования данных согласно ГОСТ 28147-89.
Перечень фигур чертежей
На фиг. 1 показана логическая блок-схема цикла шифрования; на фиг. 2 - логическая блок-схема операции замены согласно настоящему изобретению.
Подробное описание изобретения
При раскрытии заявляемого предложения для удобства воспользуемся специализированным псевдоязыком для описания процедур, каждая из которых соответствует конкретной используемой 8ΙΜΌинструкции (например, из набора 88Е2, 88Е3, 888Е3).
При описании процедур будем интерпретировать переменную как массив. Предположим, А - это 128-разрядная переменная, тогда старшие 32 разряда будем обозначать как А[0], следующие в порядке убывания 32 разряда - как А[1] и так далее до А[3]. Аналогично поступим при разбиении переменной на более мелкие части, например по восемь разрядов, тогда массив будет иметь размерность шестнадцать. Способ разбиения переменной однозначно следует из диапазона значений, который принимает индекс при адресации в массиве.
Для поразрядных логических операций И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, СДВИГ ВПРАВО, СДВИГ ВЛЕВО воспользуемся обозначениями ог, апД, хог, кЬг, кЬ1 соответственно.
Итак, в предлагаемом подходе используется следующий набор процедур, где в угловых скобках приводятся соответствующие 81МЭ-инструкции.
А = загрузить(В) <_пиа_зеЪ1_ер132>
Вход: В - 32-разрядное беззнаковое целое число.
Выход: А - массив 32-разрядных беззнаковых чисел размерности четыре и А[Д = В, где 0£<£3.
А = сумма (В, С) <_шт_ас1<1_ер132>
Вход: В и С - массивы 32-разрядных беззнаковых целых чисел размерности четыре.
Выход: А - массив 32-разрядных беззнаковых целых чисел размерности четыре и
А[/'] = В[/] + СИ, где Ой/'^З.
Иными словами, данная операция является операцией суммирования по модулю 232, суть которой заключается в том, что при переполнении, которое возникает в результате суммирования, значения двоичных разрядов, вышедших за пределы разрядной сетки, игнорируются.
А = сдвиг_влθβο (В Г С) <_лш>_з11±_вр±>
Вход: В - массив 32-разрядных беззнаковых целых чисел размерности четыре, С - целое положительное число, 0^Сй32.
Выход: А - массив 32-разрядных беззнаковых целых чисел размерности четыре и
А[,'] = В[Д в/ι/ С, где 0 < ΐ < 3.
При сдвиге влево на один двоичный разряд происходит смещение двоичной последовательности в направлении старшего значащего разряда, при этом само значение старшего значащего разряда выходит за пределы разрядной сетки и игнорируется. На позицию младшего значащего разряда заносится значение двоичного нуля.
А = сдвиг_вправо (В, С} <_χηπι_3ΐ:1ί_βρϊ32>
Вход: В - массив 32-разрядных беззнаковых целых чисел размерности четыре, С - целое положительное число, 0<С<32.
Выход: А - массив 32-разрядных беззнаковых целых чисел размерности четыре и
А[/] = В[/'] зЬг С, где 0 < ί < 3.
Аналогично, при сдвиге вправо на один двоичный разряд младший значащий разряд сдвигаемой двоичной последовательности выходит за пределы разрядной сетки и игнорируется, а на позицию старшего значащего разряда заносится значение двоичного нуля.
- 3 021803
А = или(В,С} <_ит_ог_зх128>
Вход: В и С - массивы 32-разрядных беззнаковых целых чисел размерности четыре.
Выход: А - массив 32-разрядных беззнаковых целых чисел размерности четыре и
А[/] = бр] от Ср], где 0 < ί ί 3.
А = и (В, С) <_пш1_апс1_8д.128>
Вход: В и С - массивы 32-разрядных беззнаковых целых чисел размерности четыре.
Выход: А - массив 32-разрядных беззнаковых целых чисел размерности четыре и
А(/] - В[г] апс! С[(], где 0 < ί < 3.
А = искл_или (В, С) <_пш1_хог_В1128>
Вход: В и С- массивы 32-разрядных беззнаковых целых чисел размерности четыре.
Выход: А - массив 32-разрядных беззнаковых целых чисел размерности четыре и
Α[ί] = Β[ί] тог Ср], где 0 < ί < 3.
А = перемешать (В, С) <_пип_дЪи££1е_ер±8>
Вход: в и С - массивы 8-разрядных беззнаковых целых чисел размерности шестнадцать.
Выход: А - массив 8-разрядных беззнаковых целых чисел размерности шестнадцать.
Если С[у] апс/ 0x80 *0x00, то Д[/] =0x00, иначе Д[/] = В[С[/] апд ОхОР], где 0 < ί < 15.
Операция позволяет сформировать массив А из значений массива В. Значения младших четырех разрядов некоторого элемента массива С определяют позицию элемента из массива В для записи в позицию массива А, соответствующую позиции данного элемента массива С. Если старший разряд некоторого элемента С имеет значение двоичной единицы, то на соответствующую позицию А заносится нулевое значение.
Далее, при раскрытии заявляемого предложения используются следующие обозначения, соответствующие ГОСТ 28147-89:
Х|.0<|<7 - ключевое хранилище на 256 разрядов, состоящее из восьми 32-разрядных накопителей. Здесь под накопителем понимается ячейка памяти;
Ν1, Ν2 - 32-разрядные накопители, в которые перед началом исполнения цикла шифрования заносится 64-разрядный блок входных данных, предварительно разбитый на два 32-разрядных подблока;
СМ1 - 32-разрядный накопитель, в котором сохраняется результат суммирования по модулю 232;
СМ2 - 32-разрядный накопитель, в котором сохраняется результат поразрядного суммирования по модулю 2 (иными словами, поразрядной логической операции ИСКЛЮЧАЮЩЕЕ ИЛИ). По окончании исполнения цикла шифрования в этом же накопителе сохраняется итоговый результат;
Кт,1<щ<8 - восемь 32-разрядных накопителей, которые используются в промежуточных вычислениях;
Кт, 1<т<8 - восемь узлов замены, в совокупности составляющих блок подстановки.
Как отмечалось ранее, каждый узел замены представляет собой таблицу из шестнадцати 4разрядных чисел. Соответственно для хранения одного узла замены необходимо зарезервировать 64 разряда. Обобщенно говоря, замена выполняется следующим образом: число Ь задает номер позиции в узле замены Кт, затем выполняется считывание соответствующего 4-разрядного числа с последующей его записью в накопитель Кт.
Далее приводится описание отвечающей настоящему изобретению реализации цикла шифрования данных согласно ГОСТ 28147-89 для платформы с §1МИ-архитектурой.
Пусть имеется компьютерная система с 81МИ-архитектурой компании 1н1с1 (или схожей архитектурой компании АМИ), образуемой процессором, имеющим четыре процессорных элемента. Как было сказано ранее, с каждым из процессорных элементов связана собственная локальная оперативная память.
С учетом вышеприведенных обозначений вводятся переменные Ν1>1, Ν2>1, Х1, 0<ί<3. Так, Ν1>1, Ν2>1 обозначают 32-разрядные подблоки данных, над которым необходимо выполнить один цикл шифрования, Х1 обозначает 32-разрядную часть 256-разрядного ключа, используемую циклом шифрования. При
- 4 021803 этом, порядок выбора части ключа описан в ГОСТ 28147-89.
Согласно стандарту, перед исполнением цикла шифрования в накопители Ы1, Ν2, Χ^ 0<_]<7 необходимо загрузить определенные значения. Тогда содержимое переменных Ν1>0, Ν2,0, Х0, соответствует значениям накопителей Ν1, Ν2, Χ_ί первого процессорного элемента, а содержимое Ν1,1, Ν2>1, Χ1 - значениям накопителей Ν1, Ν2, Χ_ί второго процессорного элемента и так далее до четвертого процессорного элемента с переменными Ν1>3, Ν2,3, Х3.
Основная особенность предлагаемого подхода для вычислительной платформы с 8ΙΜΌархитектурой заключается в обеспечении возможности выполнения цикла шифрования ГОСТ 28147-89 четырьмя процессорными элементами одновременно в отношении четырех наборов переменных Ν1>1, Ν2>1, X! с использованием одних и тех же узлов замены Кт, 1<т<8. При этом, компонент ключа в каждом наборе переменных может быть свой. Также следует отметить, что содержимое каждого из таких наборов никак не коррелирует с содержимым любого другого из них.
Выполнение цикла шифрования согласно настоящему изобретению предваряется следующими действиями.
Во-первых, константы М16, выполняющие роль масок, задаются следующим образом:
М, = загрузить (ОхОООРОООР) ;
М2 = загрузить(0x0РО00Р00);
М, = Загрузить(ОхРООО00ОР);
Ма = загрузить (ОхОООРРООО)-;
Λί5 = загрузить(ОхОРРООООО);
Λί„ = загрузить (0x00000РРО) ,
Выбор этих констант определяется особенностями используемой δΙΜΌ-архитектуры, а именно набором δΙΜΌ-инструкций (по сути, вопрос о выборе конкретных констант эквивалентен вопросу об использовании конкретных инструкций). Функциональное назначение этих констант объясняется ниже.
Во-вторых, формируются массивы Т1 беззнаковых 4-разрядных чисел размерности 32, в которых размещаются предварительно заполненные узлы замены. Тогда в ячейках массивов Т1 будут сохраняться следующие значения:
Т0[2(л)] = К,[л],7-0[2(л) + 1] = Ка[л],
Т1[2(л)] = К5[л],Г1[2(л) + 1] = Х4[л],
Т2(2(л)] = К3[л],Г2[2(л) + 1] = К2[л], ' '
Т,[2(л)] = К7[л],Г3[2(л) + 1] = Кв[л]
Например, Т0 =(К1[0],К8[0],К1[1],К8[1],...,К1[15],К8[15]). Следует при этом отметить, что, как сказано ранее, ГОСТ 28147-89 не специфицирует конкретный набор констант для блока подстановки, что означает, что разработчик может по своему усмотрению выбрать его наполнение.
Далее со ссылкой на фиг. 1 непосредственно описывается выполнение одного цикла шифрования данных согласно ГОСТ 2814 7-89. Как было сказано выше, количество циклов шифрования определяется ГОСТ 28147-89 в зависимости от режима шифрования.
На входе цикла - три массива данных Ν1, Ν2 и X:
Ν, = (Ν,ρ,Ν^ΝνΧ3),
Ν2=(Ν2222},
X = (Х9гХг3).
Пояснения, касающиеся 32-разрядных элементов этих трех массивов, приведены выше.
На его выходе формируется массив СМ2, состоящий из четырех 32-разрядных элементов, где СМ2[1] результат выполнения одного цикла шифрования для набора переменных Ν1>1, Ν2>1, Χ1, ί = 0, ..., 3.
На этапе 101 выполняется суммирование Ν1,1 и Χ1 по модулю 232 Результат заносится в 32разрядный элемент массива СМ!, т.е. СМ||1|=(^|,| + Χ,)ιηού232. На используемом здесь псевдоязыке этап 101 обобщенно представляется как
СМ, = сумма ( Ν, , X )
Далее на этапе 102 выполняется отвечающая настоящему изобретению операция замены, которая подробно описывается ниже.
Затем на этапе 103 в отношении результата К замены выполняется циклический сдвиг Я = или ( сдвигов лево (Я , 11) , сдвиг_вправо ( Р , 21) ) после чего на этапе 104 получают выходные зашифрованные данные в массиве СМ2 путем выполнения поразрядного суммирования по модулю 2 следующим образом
СМг = искл_или ( К , Λί2)
Следует отметить, что операции по этапам 101, 103, 104 соответствуют спецификации ГОСТ 2814789 без какой-либо δΙΜΌ-ориентированной адаптации. Иными словами, эти операции напрямую проецируются на δΙΜΌ-инструкции.
- 5 021803
Как было сказано выше, суть решаемой настоящим изобретением задачи заключается в том, что операция замены, как она специфицирована в ГОСТ 28147-89, не может быть напрямую спроецирована на δΙΜΌ-инструкции, подобно вышеуказанным операциям по этапам 101, 103, 104, и, следовательно, необходима соответствующая ее адаптация с учетом специфики δΙΜΌ-архитектуры, которая описывается ниже со ссылкой на фиг. 2.
На вход операции замены по этапу 102 подается массив СМ!, полученный на этапе 101. Результат данной операции помещается в переменную К. При выполнении операции замены по сути осуществляется замена СМ! [ί] в соответствии с содержимым узлов замены Кт.
На этапе 201 при помощи масок М1, М2 (см. выше) из массива СМ1 формируются два вспомогательных массива Υ и Ζ следующим образом:
У' = сдвиг_вправо(СМ, ,4) ,
Υ = или ( и ( М., СМ,} , и ( М2, У') ) ,
Ζ = или ( и ( Μ, , Υ') , и ( М2 , СМ,) ) .
Далее, каждый 32-разрядный элемент массивов СМ1, Υ и Ζ будет естественным образом рассматриваться как массив 4-разрядных элементов размерности восемь. В результате такой интерпретации массивы СМ1, Υ и Ζ будут иметь размерность 32. Предположим, что массив СМ1 задан в виде последовательности
Тогда (-1,1.(-1,2.--4 0810110,24-4 0,8.....(-4.1ι(-ί,2ι··>(-42·
У = (0,0,0,0,0,0,0,0,0,0,0,0,,0,0,0,0, 0,0,0,0,0,0,0,0) и = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,,0,0,.,.,0,0^,0,0,0,0.,,0,00.
Затем на этапе 202 в отношении вспомогательных массивов Υ и Ζ выполняется замена при помощи операции перемешать в соответствии с представлением блока подстановки Т1, ί = 0, ..., 3 (см. выше), с получением промежуточных массивов данных К03:
При этом получаемые в результате операции перемешать массивы данных, в силу специфики этой операции, содержат как значимые с точки зрения конечного результата данные, так и незначимые. Для дальнейших вычислений выполняется фильтрация данных из этих массивов данных путем выделения значимых данных при помощи масок М36.
При этом следует отметить следующее. Хотя в вышеприведенном описании набора процедур сказано, что на вход оператора перемешать подаются массивы 8-разрядных целых чисел размерности 16, в то время как в описании по фиг. 2 на его вход подаются массивы 4-разрядных целых чисел размерности 32, никакого противоречия нет, поскольку отвечающий δΙΜΌ-архитектуре оператор перемешать оперирует входными массивами как 128-разрядными переменными, в то время как задействуемая здесь конкретная их разбивка используется для удобства иллюстрирования того или иного аспекта.
Рассмотрим подробнее операцию замены на примере Т0 и Υ. При выполнении операции будут получены Т0|У|к||. 0<к<15. Однако значимыми результатами операции являются значения старших четырех разрядов для к=0,4,8,12 и младших четырех разрядов для к=3,7,11,15, значения же остальных разрядов следует игнорировать в силу их бесполезности. Запишем промежуточный результат в виде развернутого массива К1>тт1>т]. При помощи х пометим значения, которые не являются значимыми. В результате получим
Я01,х,х,х, х, х, х, Ροβ, Ρυ, х, х, х, х, х, χ, К31, χ,χ,χ,χ, χ,χ,
Для того чтобы значения на позициях с пометкой х не влияли на результаты вычислений, в эти позиции следует записать нулевое значение. Это и делается при помощи маски М3.
Замена посредством остальных узлов выполняется аналогичным образом.
Наконец, на этапе 203 объединением полученных ранее промежуточных массивов Ко-К3 получают выдаваемый на этап 103 результат операции замены в виде массива К следующим образом:
К = или ( или ( Я, , Я,) , или (К,, Я,) )
Для иллюстрации приведем вычисленные значения на этапах 101, 102 (т.е. 201-203):
- 6 021803 — Щр ίη £ηβ, 21 Ά.3 ί·4.1|ί4.2> ’Ι ^,β )’ γ = (0.4,,0,4,, ο, ^,ο,ς.,οΑ,,ο,ί^οΑ.,ΟΑβ.....ο,ί,,,ο,^,ο,^,ο,^), ζ = (0,^2,0-4.0,1,,,о,ц7,ο,ί2,,0Α3.θΛ.3.θ.±.....ο,4,,0.4,.0,4,,о,4Д
Κ, = (^,,0.0.0.^0.0./^./^,,0.0.0,0.0.0,^,.,^,,0,0.0.0.0,0./^.^,,0.0,0.0.0.0.^4.). ^=(0,^.^.0.0,0,0,0,0,^2^,3,0,0,0,0,0,0,^,^,,0,0,0,0,0,0,^2.^.3-0.0,0,0,0,), ί?2 =(0,0,0,^,^,0,0,0,0,0,0,^,^,0,0,0,0,0,0,^,^23,0,0,0,0,0,0,^,^,0,0,0), ^=(0,0,0,0,0,^,^2,0,0,0,0,0,0,^,,^,0,0,0,0,0,0^2..^.7.0.0.0.0.0.0.^,^.7-0).
(ί = (^.„ Κϊ,2 ’' I ^03Λ,. (^12 »· I Д.&. ^2! ’ ^2,2.....^20 ’ ^31 ’ ^3,2.....^33 )
Для практической реализации описанного цикла шифрования ГОСТ 28147-89 необходима компьютерная система с δΙΜΌ-архитектурой, например компьютерная система с процессором производства компаний 1п(е1 или ΆΜΌ с набором инструкций δδΕ-технологии. В частности, вышеизложенный подход может быть реализован в виде программного обеспечения, сохраненного на известном машиночитаемом носителе(ях) из состава такой компьютерной системы, которое при его исполнении упомянутым процессором будет предписывать ему осуществлять шифрование данных согласно настоящему изобретению. Такое программное обеспечение может быть создано путем компиляции исходного кода, представляющего описанные выше этапы, операции и действия, а также переменные и константы, на соответствующем языке программирования (например, на языке программирования С++) с помощью компилятора, поддерживающего инструкции δδΕ-технологии, такого как, например, компилятор У15иа1 С++ 2008 компании М1СГО5ОЙ или компилятор компании 1п1е1.
Изобретение было раскрыто выше со ссылкой на конкретный вариант его осуществления. Для специалистов могут быть очевидны и иные варианты осуществления изобретения, не меняющие его сущности, как она раскрыта в настоящем описании. Соответственно, изобретение следует считать ограниченным по объему только нижеследующей формулой изобретения.

Claims (17)

  1. ФОРМУЛА ИЗОБРЕТЕНИЯ
    1. Способ шифрования данных, реализуемый посредством вычислительной платформы, имеющей δΙΜΌ-архитектуру, содержащий этапы, на которых инициализируют маски Мк (к=1, ..., 6), причем каждая маска представляет собой массив размерности 4, каждый элемент которого представляет собой уникальную для маски 32-разрядную константу;
    реорганизуют оговоренные в ГОСТ 28147-89 предварительно заполненные узлы замены Кт (т=1, ..., 8), каждый из которых представляет собой массив 4-разрядных чисел размерности 16, в массивы Т (ί=0, ..., 3) 4-разрядных чисел размерности 32 следующим образом:
    Го[2(л)1 = КМГо[ЗД + 1] = Кв[п|,
    Г,[2(/э)]-К5[п],Г42(п)+11-К4[л1,
    Т2[2(П)] = К3[ц],Тг[2(п) + 1] = КДп], ' ~ '
    Г,[2{П)] = К7[и],Г3[2(п) + 1] = Ке[п1 выполняют по меньшей мере один цикл шифрования, в котором формируют массивы 32-разрядных элементов размерности 4
    Их = {Νι,4, 1¾ = {Л3,4, X = {ХЦ, 1 = 0, ,3, где Νι>1, Ν2>1 - подблоки, на которые предварительно разбит 64-разрядный блок шифруемых данных, а X! - часть 256-разрядного ключа шифрования, выбираемая в соответствии с ГОСТ 28147-89;
    формируют массив СМ1 путем выполнения операции суммирования по модулю 232 в отношении массивов Ν1 и X;
    формируют первый вспомогательный массив Υ0 путем применения к массиву СМ! операции поразрядного сдвига вправо на четыре разряда, формируют второй вспомогательный массив Υ путем применения операции логического ИЛИ к результату операции логического И в отношении маски М1 и массива СМ1 и результату операции логического И в отношении маски М2 и первого вспомогательного массива Υ0 и формируют третий вспомогательный массив Ζ путем применения операции логического ИЛИ к результату операции логического И в отношении маски М1 и первого вспомогательного массива Υ0 и результату операции логического И в отношении маски М2 и массива СМ1;
    формируют первый промежуточный массив Ко путем применения операции логического И к маске М3 и результату выполнения операции перемешивания в отношении массива Т0 и второго вспомогательного массива Υ, формируют второй промежуточный массив Κι путем применения операции логического И к маске М5 и результату выполнения операции перемешивания в отношении массива Т2 и третьего вспомогательного массива Ζ, формируют третий промежуточный массив Κ2 путем применения операции логического И к маске М4 и результату выполнения операции перемешивания в отношении массива Т1 и второго вспомогательного массива Υ, формируют четвертый промежуточный массив Κ3 путем применения операции логического И к маске М6 и результату выполнения операции перемешивания в отношении
    - 7 021803 массива Т 3 и третьего вспомогательного массива Ζ и формируют пятый промежуточный массив К путем применения операции логического ИЛИ к результату операции логического ИЛИ в отношении первого промежуточного массива Ко и третьего промежуточного массива К2 и результату операции логического ИЛИ в отношении второго промежуточного массива К! и четвертого промежуточного массива К3;
    выполняют в отношении пятого промежуточного массива К циклический сдвиг и формируют представляющий шифрованные данные массив СМ2 путем выполнения операции поразрядного суммирования по модулю 2 в отношении пятого промежуточного массива, прошедшего циклический сдвиг, и массива Ν2;
    при этом вышеупомянутые суммирования, логические операции, сдвиги и операция перемешивания непосредственно предусмотрены δΙΜΏ-архитектурой.
  2. 2. Способ по п.1, в котором δΙΜΏ-архитектура является δΙΜΏ-архитектурой компании 1п1е1 или аналогичной архитектурой компании ΆΜΏ, образуемой процессором, имеющим четыре процессорных элемента.
  3. 3. Способ по п.2, в котором с каждым из процессорных элементов связано отдельное локальное запоминающее устройство, в котором сохраняется соответственно один из наборов Ν1;1, Ν24, X! (ί = 0, ..., 3) для независимой обработки этим процессорным элементом.
  4. 4. Способ по п.3, в котором узлы замены Кт (т=1, ..., 8) в совокупности образуют блок подстановки, который является единым для всех процессорных элементов.
  5. 5. Способ по п.1, в котором количество циклов шифрования определяется ГОСТ 28147-89.
  6. 6. Способ по п.1, в котором выбор части ключа шифрования определяется режимом шифрования, предусмотренным ГОСТ 28147-89.
  7. 7. Способ по п.1, в котором при формировании массива СМ1 путем выполнения операции суммирования по модулю 232 в отношении массивов Ν1 и X ΐ-й элемент массива СМ1 получают суммированием Ν1;1 и X! по модулю 232, 1=0, ..., 3.
  8. 8. Способ по п.1, в котором перед формированием промежуточных массивов каждый из вспомогательных массивов Υ и Ζ реорганизуют как массив 4-разрядных чисел размерности 32 путем реорганизации каждого его 32-разрядного элемента в массив 4-рязрядных чисел размерности 8.
  9. 9. Способ по п.8, в котором при операции перемешивания, выполняемой в отношении двух массивов, результирующий массив заполняется элементами первого из этих двух массивов так, что в элемент результирующего массива, позиция которого соответствует позиции элемента второго из упомянутых двух массивов, записывается либо 0, либо элемент первого из упомянутых двух массивов, позиция которого указывается младшими четырьмя разрядами упомянутого элемента второго из этих двух массивов.
  10. 10. Способ по п.9, в котором применением операции логического И к соответствующей маске и соответствующему результату операции перемешивания обнуляются незначащие значения в получающемся промежуточном массиве.
  11. 11. Способ по п.1, в котором циклический сдвиг в отношении пятого промежуточного массива К выполняют путем применения операции логического ИЛИ к результату операции поразрядного сдвига влево на одиннадцать разрядов в отношении массива К и результату операции поразрядного сдвига вправо на двадцать один разряд в отношении массива К.
  12. 12. Способ по п.7 или 11, в котором при применении к массиву 32-разрядных чисел размерности 4 операции поразрядного сдвига влево/вправо операцию поразрядного сдвига влево/вправо выполняют в отношении каждого элемента данного массива.
  13. 13. Способ по п.1, в котором при формировании массива СМ2 путем выполнения операции поразрядного суммирования по модулю 2 в отношении массивов К и Ν2 ΐ-й элемент массива СМ2 получают поразрядным суммированием 1-го элемента массива К и Ν2,ϊ по модулю 2, 1=0, ..., 3.
  14. 14. Способ по любому из пп.1-11, в котором при применении к массивам 32-разрядных чисел размерности 4 операции логического ИЛИ ΐ-й элемент результирующего массива получается соответственным применением операции логического ИЛИ в отношении ΐ-х элементов упомянутых массивов, 1=0, ..., 3.
  15. 15. Способ по любому из пп.1-11, в котором при применении к массивам 32-разрядных чисел размерности 4 операции логического И ΐ-й элемент результирующего массива получается соответственным применением операции логического И в отношении ΐ-х элементов упомянутых массивов, 1=0, ..., 3.
  16. 16. Способ по п.1, в котором маски Μι^ (к=1, ..., 6) инициализируют следующими значениями:
    МЛН = ОхОООРОООР, Μ2[ϊ] = ΟχΟΡΟΟΟΓΟΟ, Μ3[ί] = ОхРООООООР, МЛЛ = ОхОООРРООО, М5 [2] =
    ОхОООРРООО, М5 [2] = ОхОРРООООО, М6 [1] = 0Х00000РР0, 2 = 0, ,3.
  17. 17. Машиночитаемый носитель, на котором сохранены машиноисполняемые команды, которые при их исполнении вычислительной платформой, имеющей δΙΜΏ-архитектуру, предписывают этой вычислительной платформе выполнять способ шифрования данных по п.1.
EA201200672A 2012-04-25 2012-04-25 Способ шифрования данных для вычислительных платформ с simd-архитектурой EA021803B1 (ru)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EA201200672A EA021803B1 (ru) 2012-04-25 2012-04-25 Способ шифрования данных для вычислительных платформ с simd-архитектурой

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EA201200672A EA021803B1 (ru) 2012-04-25 2012-04-25 Способ шифрования данных для вычислительных платформ с simd-архитектурой

Publications (2)

Publication Number Publication Date
EA201200672A1 EA201200672A1 (ru) 2013-10-30
EA021803B1 true EA021803B1 (ru) 2015-09-30

Family

ID=49488733

Family Applications (1)

Application Number Title Priority Date Filing Date
EA201200672A EA021803B1 (ru) 2012-04-25 2012-04-25 Способ шифрования данных для вычислительных платформ с simd-архитектурой

Country Status (1)

Country Link
EA (1) EA021803B1 (ru)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2633132C1 (ru) * 2016-06-02 2017-10-11 Андрей Валерьевич Менячихин Способ построения узлов замены, использующий значения линейного и разностных спектров, и устройство его реализующее

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040184602A1 (en) * 2003-01-28 2004-09-23 Nec Corporation Implementations of AES algorithm for reducing hardware with improved efficiency
US20070237324A1 (en) * 2006-03-15 2007-10-11 Microsoft Corporation Cryptographic processing
US20090055458A1 (en) * 2004-09-24 2009-02-26 O'neil Sean Substitution Boxes
RU2390949C2 (ru) * 2004-03-31 2010-05-27 Майкрософт Корпорейшн Структура поточного шифра с циклическим перемещением буферов

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040184602A1 (en) * 2003-01-28 2004-09-23 Nec Corporation Implementations of AES algorithm for reducing hardware with improved efficiency
RU2390949C2 (ru) * 2004-03-31 2010-05-27 Майкрософт Корпорейшн Структура поточного шифра с циклическим перемещением буферов
US20090055458A1 (en) * 2004-09-24 2009-02-26 O'neil Sean Substitution Boxes
US20070237324A1 (en) * 2006-03-15 2007-10-11 Microsoft Corporation Cryptographic processing

Also Published As

Publication number Publication date
EA201200672A1 (ru) 2013-10-30

Similar Documents

Publication Publication Date Title
JP2018508044A (ja) マスク演算で使用するための有限部分体ルックアップテーブルを用いた暗号法暗号
JP6135804B1 (ja) 情報処理装置、情報処理方法及びプログラム
US20120159186A1 (en) Securing the implementation of a cryptographic process using key expansion
EP3488553A1 (en) Device and method for performing obfuscated arithmetic
CN106105089B (zh) 与使用缩减回合编密的xts加密系统一起使用的动态加密密钥
JP2017519457A (ja) 共有鍵を決定するためのデバイス
CN106034021B (zh) 轻量级双模兼容aes加解密模块及其方法
CN106233660A (zh) 加密处理设备、加密处理方法和程序
EP3127271B1 (en) Obfuscated performance of a predetermined function
US8553878B2 (en) Data transformation system using cyclic groups
KR101914453B1 (ko) 암호화 장치 및 방법
JP2017167390A (ja) 情報処理装置、情報処理方法及びプログラム
US8687803B2 (en) Operational mode for block ciphers
US11200346B2 (en) Secure computation for reading multiple elements from a secure text array
JP6292195B2 (ja) 情報処理装置及び情報処理方法
EA021803B1 (ru) Способ шифрования данных для вычислительных платформ с simd-архитектурой
US8774402B2 (en) Encryption/decryption apparatus and method using AES rijndael algorithm
JP5500923B2 (ja) 情報処理装置
WO2015178082A1 (ja) 情報処理装置、プログラム、及び記録媒体
JP5113833B2 (ja) 中央演算処理装置の演算能力を高めるための暗号方法および暗号装置
CN115730296A (zh) 密码学过程的安全执行
KR102452181B1 (ko) 근사 암호화된 암호문에 대한 정렬 장치 및 방법
KR101662291B1 (ko) 경량 블록암호 lea 기반 암호화 및 복호화 장치
Tolba et al. Generalized MitM attacks on full TWINE
JP2019506031A (ja) 計算装置及び方法