EA021803B1 - Method of data encoding for calculating platforms with simd-architecture - Google Patents

Method of data encoding for calculating platforms with simd-architecture 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
Russian (ru)
Other versions
EA201200672A1 (en
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/en
Publication of EA201200672A1 publication Critical patent/EA201200672A1/en
Publication of EA021803B1 publication Critical patent/EA021803B1/en

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

The invention relates to data encoding. Proposed is a technology of realization of data encoding cycle for calculating platforms with SIMD-architecture, allowing to avoid forced mixture instructions of the standard architecture and SIMD-instructions due to a specialized adaptation of change units providing to perform change operations only by the SIMD-instructions. The technical result provides the production increase.

Description

Область техники, к которой относится изобретениеFIELD OF THE INVENTION

Изобретение, в общем, относится к шифрованию данных, в частности к шифрованию данных согласно ГОСТ 28147-89 для вычислительных платформ с δΙΜΌ-архитектурой.The invention generally relates to data encryption, in particular to data encryption according to GOST 28147-89 for computing platforms with δΙΜΌ architecture.

Описание предшествующего уровня техникиDescription of the Related Art

В современной технике шифрование данных играет значительную роль и имеет весьма широкое применение. Как следствие, к разработкам в области шифрования данных приковано серьезное внимание на различных уровнях.In modern technology, data encryption plays a significant role and is very widely used. As a result, serious attention at various levels has been riveted to developments in the field of data encryption.

Национальный стандарт Российской Федерации ГОСТ 28147-89 устанавливает единый алгоритм криптографического преобразования для систем обработки информации в сетях ЭВМ и отдельных вычислительных комплексах. ГОСТ 28147-89, содержимое которого по ссылке полностью включено в настоящее описание, вводит алгоритм блочного шифрования с размером блока 64 двоичных разряда (далее - разряда) и 256-разрядным ключом. В криптографическом преобразовании используется блок подстановки, состоящий из восьми узлов замены. Каждый узел замены представляет собой таблицу из шестнадцати 4-разрядных чисел и обеспечивает взаимно однозначное отображение множества 4-разрядных чисел на себя. При этом следует отметить, что стандарт не специфицирует конкретного набора констант для блока подстановки. Это означает, что разработчик может по своему усмотрению выбрать его наполнение.The national standard of the Russian Federation GOST 28147-89 establishes a unified algorithm of cryptographic conversion for information processing systems in computer networks and individual computer complexes. GOST 28147-89, the contents of which by reference is fully included in the present description, introduces a block encryption algorithm with a block size of 64 binary bits (hereinafter referred to as the bit) and a 256-bit key. The cryptographic transformation uses a substitution block consisting of eight replacement nodes. Each replacement node is a table of sixteen 4-bit numbers and provides a one-to-one mapping of the set of 4-bit numbers onto itself. It should be noted that the standard does not specify a specific set of constants for the substitution block. This means that the developer can choose its content at his discretion.

В ГОСТ 28147-89 описывается ряд режимов шифрования, а именно: простой замены, гаммирования, гаммирования с обратной связью и выработки имитовставки. Цикл шифрования составляет основу каждого из упомянутых режимов, которые отличаются друг от друга специфическим комбинированием входных параметров.GOST 28147-89 describes a number of encryption modes, namely: simple replacement, gamming, gamming with feedback and the development of an imitation insert. The encryption cycle is the basis of each of the mentioned modes, which differ from each other by a specific combination of input parameters.

В настоящее время вычислительные платформы с δΙΜΌ-архитектурой широко применяются на практике. Такая платформа, в общем, допускает параллельную обработку N потоков данных, так как ее аппаратная компонента состоит из N независимых, но идентичных по ресурсоемкости процессорных элементов, при этом управление обработкой осуществляется единым потоком команд. Каждый процессорный элемент располагает локальной оперативной памятью. Процессорные элементы получают команды от одного центрального контроллера команд и работают синхронно, исполняя на каждом шаге одну и ту же команду. При этом каждый процессорный элемент оперирует с данными из локальной оперативной памяти, т.е. основной характеристикой δΙΜΌ-архитектуры является то, что все N процессорных элементов исполняют фиксированную команду, но над различными данными.Currently, computing platforms with δΙΜΌ-architecture are widely used in practice. Such a platform, in general, allows parallel processing of N data streams, as its hardware component consists of N independent, but resource-intensive processor elements, while processing is controlled by a single stream of commands. Each processor element has a local RAM. The processor elements receive commands from one central command controller and operate synchronously, executing the same command at each step. In this case, each processor element operates with data from the local RAM, i.e. The main characteristic of the δΙΜΌ architecture is that all N processor elements execute a fixed command, but on different data.

Известны процессоры с δΙΜΌ-архитектурой производства компаний 1п1е1 или ΑΜΌ, которые помимо инструкций стандартной архитектуры включают также набор специализированных инструкций (так называемых δΙΜΌ-инструкций), в частности набор инструкций δδΕ-технологии (81геапппд δΙΜΌ Е.\1епхюпх).There are known processors with δ производства-architecture produced by 1n1e1 or ΑΜΌ companies, which in addition to standard architecture instructions also include a set of specialized instructions (so-called δΙΜΌ-instructions), in particular a set of δδΕ-technology instructions (81geappppd δΙΜΌ E. \ 1ephyuph).

Принимая во внимание обеспечиваемые δΙΜΌ-архитектурой высокие рабочие характеристики, обуславливаемые вышеупомянутым распараллеливанием, перспективной представляется реализация на ней шифрования данных согласно ГОСТ 28147-89 с целью повышения производительности. Однако экспериментально показано, что при использовании исключительно δΙΜΌ-инструкций невозможно реализовать цикл шифрования ГОСТ 28147-89 в точном соответствии с описанным в стандарте алгоритмом. Суть проблемы заключается в том, что δΙΜΌ-инструкций не позволяют осуществить выполняемую при шифровании данных операцию замены так, как это указано в ГОСТ 28147-89. Очевидно, что для выполнения этой операции можно воспользоваться инструкциями стандартной архитектуры. Однако в итоге производительность не увеличивается, а наоборот снижается. Такое снижение обусловлено дополнительными накладными расходами, которые возникают в результате согласования данных при переключении между инструкциями δΙΜΌ- и стандартной архитектур.Considering the high performance characteristics provided by the δΙΜΌ architecture, which are caused by the aforementioned parallelization, it seems promising to implement data encryption on it according to GOST 28147-89 in order to increase productivity. However, it was experimentally shown that when using exclusively δΙΜΌ instructions it is impossible to implement the encryption cycle of GOST 28147-89 in exact accordance with the algorithm described in the standard. The essence of the problem lies in the fact that δΙΜΌ instructions do not allow the replacement operation performed during data encryption to be performed as specified in GOST 28147-89. Obviously, you can use the standard architecture instructions to complete this operation. However, in the end, productivity does not increase, but rather decreases. This decrease is due to additional overhead that occurs as a result of data matching when switching between δΙΜΌ- and standard architecture instructions.

Таким образом, в технике существует потребность в методике реализации цикла шифрования ГОСТ 28147-89, исключающей смешивание инструкций стандартной архитектуры и δΙΜΌ-инструкций.Thus, in technology there is a need for a methodology for implementing the encryption cycle of GOST 28147-89, which excludes mixing of standard architecture instructions and δΙΜΌ instructions.

Для алгоритма блочного шифрования ΌΕδ известна реализация с применением δΙΜΌ-инструкций (см. Е. Βίΐιαιη. А Гах1 пе\у ΌΕδ нпр1етеп1аОоп ίη хоП\уаге. ЬесФте ΝοΡχ ίη СотрШег δ<^η<^. νοί. 1267, рр. 260-272, 1997), в которой предлагается использовать δΙΜΌ-инструкции над 64-разрядными регистрами для параллельного шифрования шестидесяти четырех независимых потоков данных. Однако использование описанного в этой статье подхода для реализации цикла шифрования по ГОСТ 28147-89 с конкретным наполнением узлов замены не применимо в силу существенных алгоритмических различий ΌΕδ и ГОСТ 28147-89.For the block cipher algorithm ΌΕδ known implementation using δΙΜΌ-instructions (see. E. Βίΐιαιη. A Gah1 ne \ y ΌΕδ npr1etep1aOop ίη hop \ uage. EsFte ΝοΡχ ίη SotrSheg δ <^ η <^. Νοί. 1267, pp. 260 to 272, 1997), which proposes to use δΙΜΌ instructions on 64-bit registers for parallel encryption of sixty-four independent data streams. However, the use of the approach described in this article to implement the encryption cycle according to GOST 28147-89 with the specific content of the replacement nodes is not applicable due to significant algorithmic differences between ΌΕδ and GOST 28147-89.

Возможный подход к реализации национального стандарта шифрования предлагается в публикации А. Винокурова Алгоритм шифрования ГОСТ 28147-89, его использование и программная реализация для компьютеров платформы Ιηίο1\86, Монитор, №1, с. 5, 1995, которая в переработанном и дополненном виде доступна по адресу ЬПр://ууу.епПдЦ.ги/сгур1о/аг1ю1е8Мпокш^/до81_Шт.A possible approach to the implementation of the national encryption standard is proposed in the publication by A. Vinokurov. GOST 28147-89 encryption algorithm, its use and software implementation for computers of the platform Ιηίο1 \ 86, Monitor, No. 1, p. 5, 1995, which in a revised and augmented form is available at the address Lp: //yyy.epPdTs.Gi/gur1o/ag1yu1e8Mpoksh ^/do81_Pcs.

Данная публикация содержит описание реализации стандарта ГОСТ 28147-89 для платформ ΙηΡί\86, однако специфика δΙΜΌ-архитектуры при этом никак не учитывается.This publication contains a description of the implementation of the standard GOST 28147-89 for the ΙηΡί \ 86 platforms, however, the specificity of the δΙΜΌ-architecture is not taken into account.

Краткое описание сущности изобретенияSUMMARY OF THE INVENTION

Предлагается методика реализации цикла шифрования данных согласно ГОСТ 28147-89 на δΙΜΌ- 1 021803 архитектуре, позволяющая избежать вынужденного смешивания инструкций стандартной архитектуры и δΙΜΌ-инструкций за счет специализированной адаптации узлов замены, обеспечивающей возможность выполнения операции замены исключительно при помощи δΙΜΌ-инструкций. При реализации на 8ΙΜΌархитектуре заданного типа предлагаемый подход обеспечивает двукратный прирост производительности по сравнению с реализацией исключительно на основе инструкций стандартной архитектуры.A technique is proposed for implementing a data encryption cycle according to GOST 28147-89 on a δΙΜΌ- 1 021803 architecture, which avoids the forced mixing of standard architecture instructions and δΙΜΌ-instructions due to specialized adaptation of replacement nodes, which enables the replacement operation to be performed exclusively using δΙΜΌ-instructions. When implementing a given type on an 8-architecture, the proposed approach provides a twofold increase in performance compared to the implementation based solely on instructions from the standard architecture.

Согласно настоящему изобретению предлагается реализация цикла шифрования данных по ГОСТ 28147-89 для компьютерных систем, имеющих δΙΜΌ-архитектуру. Предлагаемый способ содержит этапы, на которых инициализируют маски Μ (к=1, ..., 6), причем каждая маска представляет собой массив размерности 4, каждый элемент которого представляет собой уникальную для маски 32-разрядную константу; реорганизуют оговоренные в ГОСТ 28147-89 предварительно заполненные узлы замены Кт (т=1, ..., 8), каждый из которых представляет собой массив 4-разрядных чисел размерности 16, в массивы Т (]=0, ..., 3) 4-разрядных чисел размерности 32 следующим образом:The present invention proposes the implementation of a data encryption cycle according to GOST 28147-89 for computer systems having a δΙΜΌ-architecture. The proposed method comprises the steps of initializing the masks Μ ] ί (k = 1, ..., 6), each mask being an array of dimension 4, each element of which is a 32-bit constant unique to the mask; reorganize the pre-filled replacement nodes K t (t = 1, ..., 8) specified in GOST 28147-89, each of which is an array of 4-bit numbers of dimension 16, into arrays T (] = 0, ..., 3) 4-bit numbers of dimension 32 as follows:

Т0[2(л>] = + = Ке[л],T 0 [2 (l>] = + = K e [l],

ТД2(п)] = КЦп],Г,[2(п) + 1] = К4[п],TD2 (p)] = KCP], G, [2 (p) + 1] = K 4 [p],

7^2{л)] = КДл],Г:[2(л) + 1] = Кг[л], ' ' ' '7 ^ 2 (l)] = KDl], T : [2 (l) + 1] = K g [l], ''''

Т,Ип)] = КДп],Г3[2(л) + 1] = ед выполняют цикл шифрования. Отметим, что количество выполнений упомянутого цикла шифрования определено в ГОСТ 28147-89.Т, Ип)] = КДп], Г 3 [2 (l) + 1] = units perform an encryption cycle. Note that the number of executions of the mentioned encryption cycle is defined in GOST 28147-89.

Предпочтительно, δΙΜΌ-архитектура является δΙΜΌ-архитектурой компании 1п1с1 или аналогичной архитектурой компании ΛΜΌ, образуемой процессором, имеющим четыре процессорных элемента.Preferably, the δΙΜΌ architecture is a 1ΙΜΌ1s1 δΙΜΌ architecture or a similar ΛΜΌ company architecture formed by a processor having four processing elements.

При выполнении цикла шифрования формируют массивы 32-разрядных элементов размерности 4:When performing the encryption cycle, arrays of 32-bit elements of dimension 4 are formed:

= {Νι.ίΐζ = {Χϊ}, X = {Χχ}, 2 = 0, ..., 3, где Ν1>1, Ν2>1 - подблоки, на которые предварительно разбит 64-разрядный блок шифруемых данных, а X! - часть 256-разрядного ключа шифрования, выбираемая в соответствии с ГОСТ 28147-89. Выбор части ключа шифрования предпочтительно определяется режимом шифрования, предусмотренным ГОСТ 28147-89. С каждым из процессорных элементов связано отдельное локальное запоминающее устройство, в котором сохраняется соответственно один из наборов Ν1>1, Ν2>1, Χ1 (ί=0, ..., 3) для независимой обработки этим процессорным элементом. В то же время узлы замены Кт (т=1, ..., 8) в совокупности образуют блок подстановки, который является единым для всех процессорных элементов.= {Νι.ίΐζ = {Χϊ}, X = {Χχ}, 2 = 0, ..., 3, where Ν 1> 1 , Ν 2> 1 are subblocks into which the 64-bit block of encrypted data is previously split, and X! - part of the 256-bit encryption key selected in accordance with GOST 28147-89. The choice of part of the encryption key is preferably determined by the encryption mode provided by GOST 28147-89. A separate local storage device is associated with each of the processor elements, in which one of the sets Ν 1> 1 , Ν 2> 1 , Χ 1 (ί = 0, ..., 3) for independent processing by this processor element is stored. At the same time, the replacement nodes K t (m = 1, ..., 8) together form a substitution block, which is the same for all processor elements.

При выполнении цикла шифрования далее формируют массив СМ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. Применением операции логического И к соответствующей маске и соответствующему результату операции перемешивания обнуляются незначащие значения в получающемся промежуточном массиве.When performing the encryption cycle, an array of CM 1 is then formed by performing the summing operation modulo 2 32 with respect to arrays Ν 1 and X. Then, the first auxiliary array Υ 0 is formed by applying the bitwise shift operation four times to the array CM1 and form the second auxiliary array Υ by applying a logical OR operation to the result of the logical aND operation against Μ mask 1 and CM array 1 and the result of the logical aND operation against mask M 2 and the first auxiliary array and form Υ 0 tre s Ζ auxiliary array by applying a logical OR operation to the result of the logical AND operation with respect to the mask M1 and the first auxiliary array Υ 0 and logic AND operation result with regard to the mask M and the array 2 SM !. After that, the first intermediate array K 0 is formed by applying the logical AND operation to the mask M 2 and the result of the mixing operation with respect to the T 0 array and the second auxiliary array Υ, the second intermediate array K is formed! by applying the logical And operation to the mask M 5 and the result of performing the mixing operation with respect to the T2 array and the third auxiliary array Ζ, the third intermediate array K 2 is formed by applying the logical And operation to the mask M 4 and the result of performing the mixing operation with respect to the T1 array and the second auxiliary array Υ, form the fourth intermediate array K 2 by applying the logical operation AND to the mask M 6 and the result of the operation of mixing in relation to the array T3 and the third of the auxiliary array Ζ and form the fifth intermediate array K, combining the previously obtained intermediate arrays from first to fourth, by applying the logical OR operation to the result of the logical OR operation with respect to the first intermediate array K 0 and the third intermediate array K 2 and the result of the logical OR operation with respect to the second intermediate array and the fourth intermediate array K 3 . By applying the logical AND operation to the corresponding mask and the corresponding result of the mixing operation, insignificant values in the resulting intermediate array are zeroed.

Затем при выполнении цикла шифрования в отношении пятого промежуточного массива К выполняют циклический сдвиг путем применения операции логического ИЛИ к результату операции поразрядного сдвига влево на одиннадцать разрядов в отношении массива К и результату операции поразрядного сдвига вправо на двадцать один разряд в отношении массива К. После этого формируют представляющий шифрованные данные массив СМ2 путем выполнения операции поразрядного суммирования по модулю 2 в отношении пятого промежуточного массива, прошедшего циклический сдвиг, и массива Ν2.Then, when performing the encryption cycle with respect to the fifth intermediate array K, a cyclic shift is performed by applying the logical OR operation to the result of the bitwise left shift operation by eleven digits with respect to the array K and the result of the bitwise right shift operation by twenty one bits with respect to the array K. After this, the the SM2 array representing the encrypted data by performing a bitwise summing operation modulo 2 with respect to the fifth intermediate array that has passed cyclically shift, and array Ν 2 .

Упомянутые выше операции логического И, логического ИЛИ, сдвига вправо/влево, суммированияThe above operations of logical AND, logical OR, right / left shift, summation

- 2 021803 по модулю 2, суммирования по модулю 232 и перемешивания непосредственно предусмотрены 8ΙΜΌархитектурой.- 2 021803 modulo 2, summation modulo 2 32 and mixing are directly provided for by the 8 architecture.

Согласно настоящему изобретению также предлагается машиночитаемый носитель, на котором сохранены машиноисполняемые команды, которые при их исполнении компьютерной системой, имеющей δΙΜΌ-архитектуру, предписывают этой компьютерной системе выполнять заявляемый способ шифрования данных согласно ГОСТ 28147-89.The present invention also provides a machine-readable medium on which computer-executable instructions are stored which, when executed by a computer system having a δΙΜΌ architecture, require this computer system to perform the claimed method of data encryption according to GOST 28147-89.

Перечень фигур чертежейList of drawings

На фиг. 1 показана логическая блок-схема цикла шифрования; на фиг. 2 - логическая блок-схема операции замены согласно настоящему изобретению.In FIG. 1 shows a logical block diagram of an encryption cycle; in FIG. 2 is a flowchart of a replacement operation according to the present invention.

Подробное описание изобретенияDETAILED DESCRIPTION OF THE INVENTION

При раскрытии заявляемого предложения для удобства воспользуемся специализированным псевдоязыком для описания процедур, каждая из которых соответствует конкретной используемой 8ΙΜΌинструкции (например, из набора 88Е2, 88Е3, 888Е3).When disclosing the proposed proposal, for convenience, we will use a specialized pseudo-language to describe the procedures, each of which corresponds to the specific 8 instruction used (for example, from the 88E2, 88E3, 888E3 set).

При описании процедур будем интерпретировать переменную как массив. Предположим, А - это 128-разрядная переменная, тогда старшие 32 разряда будем обозначать как А[0], следующие в порядке убывания 32 разряда - как А[1] и так далее до А[3]. Аналогично поступим при разбиении переменной на более мелкие части, например по восемь разрядов, тогда массив будет иметь размерность шестнадцать. Способ разбиения переменной однозначно следует из диапазона значений, который принимает индекс при адресации в массиве.When describing the procedures, we will interpret the variable as an array. Suppose A is a 128-bit variable, then the highest 32 bits will be denoted as A [0], the next in descending order of 32 bits will be denoted as A [1] and so on to A [3]. We will do the same when breaking the variable into smaller parts, for example, eight digits, then the array will have a dimension of sixteen. The method of splitting a variable unambiguously follows from the range of values that the index takes when addressing in an array.

Для поразрядных логических операций И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, СДВИГ ВПРАВО, СДВИГ ВЛЕВО воспользуемся обозначениями ог, апД, хог, кЬг, кЬ1 соответственно.For bitwise logical operations AND, OR, EXCLUSIVE OR, SHIFT RIGHT, SHIFT LEFT, we use the notation og, apD, hog, kb, kb1, respectively.

Итак, в предлагаемом подходе используется следующий набор процедур, где в угловых скобках приводятся соответствующие 81МЭ-инструкции.So, in the proposed approach, the following set of procedures is used, where the corresponding 81ME instructions are given in angle brackets.

А = загрузить(В) <_пиа_зеЪ1_ер132>A = load (B) <_pia_zeb1_er132>

Вход: В - 32-разрядное беззнаковое целое число.Input: B is a 32-bit unsigned integer.

Выход: А - массив 32-разрядных беззнаковых чисел размерности четыре и А[Д = В, где 0£<£3.Output: A is an array of 32-bit unsigned numbers of dimension four and A [D = B, where 0 £ <£ 3.

А = сумма (В, С) <_шт_ас1<1_ер132>A = sum (B, C) <_pcs_ac1 <1_er132>

Вход: В и С - массивы 32-разрядных беззнаковых целых чисел размерности четыре.Input: B and C are arrays of 32-bit unsigned integers of dimension four.

Выход: А - массив 32-разрядных беззнаковых целых чисел размерности четыре иOutput: A - an array of 32-bit unsigned integers of dimension four and

А[/'] = В[/] + СИ, где Ой/'^З.A [/ '] = B [/] + SI, where Oy /' ^ 3.

Иными словами, данная операция является операцией суммирования по модулю 232, суть которой заключается в том, что при переполнении, которое возникает в результате суммирования, значения двоичных разрядов, вышедших за пределы разрядной сетки, игнорируются.In other words, this operation is an operation of summation modulo 2 32 , the essence of which is that during overflow, which arises as a result of summation, the values of binary bits that go beyond the limits of the bit grid are ignored.

А = сдвиг_влθβο (В Г С) <_лш>_з11±_вр±>A = shift_vlθβο (V G C) <_lsh> _z11 ± _vr ±>

Вход: В - массив 32-разрядных беззнаковых целых чисел размерности четыре, С - целое положительное число, 0^Сй32.Input: B is an array of 32-bit unsigned integers of dimension four, C is a positive integer, 0 ^ C32.

Выход: А - массив 32-разрядных беззнаковых целых чисел размерности четыре иOutput: A - an array of 32-bit unsigned integers of dimension four and

А[,'] = В[Д в/ι/ С, где 0 < ΐ < 3.А [, '] = В [Д в / ι / С, where 0 <ΐ <3.

При сдвиге влево на один двоичный разряд происходит смещение двоичной последовательности в направлении старшего значащего разряда, при этом само значение старшего значащего разряда выходит за пределы разрядной сетки и игнорируется. На позицию младшего значащего разряда заносится значение двоичного нуля.When shifting to the left by one binary digit, the binary sequence is shifted in the direction of the most significant digit, while the value of the most significant digit goes beyond the boundaries of the bit grid and is ignored. The position of the least significant digit is the value of binary zero.

А = сдвиг_вправо (В, С} <_χηπι_3ΐ:1ί_βρϊ32>A = right_shift (B, C} <_χηπι_3ΐ: 1ί_βρϊ32>

Вход: В - массив 32-разрядных беззнаковых целых чисел размерности четыре, С - целое положительное число, 0<С<32.Input: B is an array of 32-bit unsigned integers of dimension four, C is a positive integer, 0 <C <32.

Выход: А - массив 32-разрядных беззнаковых целых чисел размерности четыре иOutput: A - an array of 32-bit unsigned integers of dimension four and

А[/] = В[/'] зЬг С, где 0 < ί < 3.A [/] = B [/ '] sB C, where 0 <ί <3.

Аналогично, при сдвиге вправо на один двоичный разряд младший значащий разряд сдвигаемой двоичной последовательности выходит за пределы разрядной сетки и игнорируется, а на позицию старшего значащего разряда заносится значение двоичного нуля.Similarly, when shifting to the right by one binary digit, the least significant bit of the shifted binary sequence goes beyond the boundaries of the bit grid and is ignored, and the binary zero value is entered at the position of the most significant bit.

- 3 021803- 3 021803

А = или(В,С} <_ит_ог_зх128>A = or (B, C} <_it_og_zx128>

Вход: В и С - массивы 32-разрядных беззнаковых целых чисел размерности четыре.Input: B and C are arrays of 32-bit unsigned integers of dimension four.

Выход: А - массив 32-разрядных беззнаковых целых чисел размерности четыре иOutput: A - an array of 32-bit unsigned integers of dimension four and

А[/] = бр] от Ср], где 0 < ί ί 3.A [/] = br] from Cp], where 0 <ί ί 3.

А = и (В, С) <_пш1_апс1_8д.128>A = and (B, C) <_пш1_апс1_8д.128>

Вход: В и С - массивы 32-разрядных беззнаковых целых чисел размерности четыре.Input: B and C are arrays of 32-bit unsigned integers of dimension four.

Выход: А - массив 32-разрядных беззнаковых целых чисел размерности четыре иOutput: A - an array of 32-bit unsigned integers of dimension four and

А(/] - В[г] апс! С[(], где 0 < ί < 3.A (/] - B [r] aps! C [(], where 0 <ί <3.

А = искл_или (В, С) <_пш1_хог_В1128>A = exc_or (B, C) <_пш1_хог_В1128>

Вход: В и С- массивы 32-разрядных беззнаковых целых чисел размерности четыре.Input: B and C arrays of 32-bit unsigned integers of dimension four.

Выход: А - массив 32-разрядных беззнаковых целых чисел размерности четыре иOutput: A - an array of 32-bit unsigned integers of dimension four and

Α[ί] = Β[ί] тог Ср], где 0 < ί < 3.Α [ί] = Β [ί] tag Ср], where 0 <ί <3.

А = перемешать (В, С) <_пип_дЪи££1е_ер±8>A = mix (B, C) <_pip_db and £ 1 1e_er ± 8>

Вход: в и С - массивы 8-разрядных беззнаковых целых чисел размерности шестнадцать.Input: B and C are arrays of sixteen eight-bit unsigned integers.

Выход: А - массив 8-разрядных беззнаковых целых чисел размерности шестнадцать.Output: A - an array of 8-bit unsigned integers of dimension sixteen.

Если С[у] апс/ 0x80 *0x00, то Д[/] =0x00, иначе Д[/] = В[С[/] апд ОхОР], где 0 < ί < 15.If C [y] aps / 0x80 * 0x00, then D [/] = 0x00, otherwise D [/] = B [C [/] upd OhOR], where 0 <ί <15.

Операция позволяет сформировать массив А из значений массива В. Значения младших четырех разрядов некоторого элемента массива С определяют позицию элемента из массива В для записи в позицию массива А, соответствующую позиции данного элемента массива С. Если старший разряд некоторого элемента С имеет значение двоичной единицы, то на соответствующую позицию А заносится нулевое значение.The operation allows you to form an array A from the values of the array B. The values of the least four bits of some element of the array C determine the position of the element from the array B to write to the position of the array A, corresponding to the position of the given element of the array C. If the senior bit of some element C has a binary value, then zero is entered in the corresponding position A.

Далее, при раскрытии заявляемого предложения используются следующие обозначения, соответствующие ГОСТ 28147-89:Further, when disclosing the proposed proposal, the following designations are used, corresponding to GOST 28147-89:

Х|.0<|<7 - ключевое хранилище на 256 разрядов, состоящее из восьми 32-разрядных накопителей. Здесь под накопителем понимается ячейка памяти;X | .0 <| <7 - 256-bit key storage, consisting of eight 32-bit drives. Here, a drive is a memory cell;

Ν1, Ν2 - 32-разрядные накопители, в которые перед началом исполнения цикла шифрования заносится 64-разрядный блок входных данных, предварительно разбитый на два 32-разрядных подблока;Ν 1 , Ν 2 - 32-bit drives into which a 64-bit block of input data, previously divided into two 32-bit subblocks, is entered before the start of the encryption cycle;

СМ1 - 32-разрядный накопитель, в котором сохраняется результат суммирования по модулю 232;SM 1 - 32-bit drive, which stores the result of the summation modulo 2 32 ;

СМ2 - 32-разрядный накопитель, в котором сохраняется результат поразрядного суммирования по модулю 2 (иными словами, поразрядной логической операции ИСКЛЮЧАЮЩЕЕ ИЛИ). По окончании исполнения цикла шифрования в этом же накопителе сохраняется итоговый результат;SM 2 is a 32-bit drive in which the result of bitwise summation modulo 2 is saved (in other words, bitwise logical operation EXCLUSIVE OR). At the end of the encryption cycle, the final result is saved in the same drive;

Кт,1<щ<8 - восемь 32-разрядных накопителей, которые используются в промежуточных вычислениях;To t , 1 <u <8 - eight 32-bit drives that are used in intermediate calculations;

Кт, 1<т<8 - восемь узлов замены, в совокупности составляющих блок подстановки.To t , 1 <t <8 - eight replacement nodes, together constituting a substitution block.

Как отмечалось ранее, каждый узел замены представляет собой таблицу из шестнадцати 4разрядных чисел. Соответственно для хранения одного узла замены необходимо зарезервировать 64 разряда. Обобщенно говоря, замена выполняется следующим образом: число Ь задает номер позиции в узле замены Кт, затем выполняется считывание соответствующего 4-разрядного числа с последующей его записью в накопитель Кт.As noted earlier, each replacement node is a table of sixteen 4-digit numbers. Accordingly, for storage of one replacement unit, 64 bits must be reserved. Generally speaking, the replacement is performed as follows: the number b sets the position number in the replacement node K t , then the corresponding 4-bit number is read and then written to the drive K t .

Далее приводится описание отвечающей настоящему изобретению реализации цикла шифрования данных согласно ГОСТ 28147-89 для платформы с §1МИ-архитектурой.The following is a description of the implementation of the present invention of the data encryption cycle according to GOST 28147-89 for a platform with §1MI architecture.

Пусть имеется компьютерная система с 81МИ-архитектурой компании 1н1с1 (или схожей архитектурой компании АМИ), образуемой процессором, имеющим четыре процессорных элемента. Как было сказано ранее, с каждым из процессорных элементов связана собственная локальная оперативная память.Let there be a computer system with 81MI-architecture of the company 1n1s1 (or a similar architecture of the company AMI), formed by a processor with four processor elements. As mentioned earlier, each processor element has its own local random access memory.

С учетом вышеприведенных обозначений вводятся переменные Ν1>1, Ν2>1, Х1, 0<ί<3. Так, Ν1>1, Ν2>1 обозначают 32-разрядные подблоки данных, над которым необходимо выполнить один цикл шифрования, Х1 обозначает 32-разрядную часть 256-разрядного ключа, используемую циклом шифрования. ПриTaking into account the above notation, the variables Ν 1> 1 , Ν 2> 1 , X 1 , 0 <ί <3 are introduced. So, Ν 1> 1 , Ν 2> 1 denote 32-bit data subblocks on which one encryption cycle is to be performed, X 1 denotes the 32-bit part of the 256-bit key used by the encryption cycle. At

- 4 021803 этом, порядок выбора части ключа описан в ГОСТ 28147-89.- 4 021803 of this, the procedure for selecting a part of the key is described in GOST 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.According to the standard, before executing an encryption cycle, certain values must be loaded into drives Y 1 , Ν 2 , Χ ^ 0 <_] <7. Then the contents of the variables Ν 1> 0 , Ν 2 , 0 , X 0 correspond to the values of the drives Ν 1 , Ν 2 , Χ_ί of the first processor element, and the contents of Ν 1 , 1 , Ν 2> 1 , Χ 1 correspond to the values of the drives Ν 1 , Ν 2 , Χ_ί of the second processor element and so on to the fourth processor element with variables Ν 1> 3 , Ν 2 , 3 , X 3 .

Основная особенность предлагаемого подхода для вычислительной платформы с 8ΙΜΌархитектурой заключается в обеспечении возможности выполнения цикла шифрования ГОСТ 28147-89 четырьмя процессорными элементами одновременно в отношении четырех наборов переменных Ν1>1, Ν2>1, X! с использованием одних и тех же узлов замены Кт, 1<т<8. При этом, компонент ключа в каждом наборе переменных может быть свой. Также следует отметить, что содержимое каждого из таких наборов никак не коррелирует с содержимым любого другого из них.The main feature of the proposed approach for a computing platform with an 8 architecture is to enable the encryption cycle of GOST 28147-89 by four processor elements simultaneously with respect to four sets of variables Ν 1> 1 , Ν 2> 1 , X! using the same replacement nodes K t , 1 <t <8. At the same time, the key component in each set of variables can be its own. It should also be noted that the contents of each of these sets in no way correlate with the contents of any other of them.

Выполнение цикла шифрования согласно настоящему изобретению предваряется следующими действиями.The implementation of the encryption cycle according to the present invention is preceded by the following actions.

Во-первых, константы М16, выполняющие роль масок, задаются следующим образом:Firstly, the constants M 1 -M 6 acting as masks are defined as follows:

М, = загрузить (ОхОООРОООР) ;M, = download (Ohoooooooo);

М2 = загрузить(0x0РО00Р00);M 2 = load (0x0OP00R00);

М, = Загрузить(ОхРООО00ОР);M, = Download (OhROOO00OR);

Ма = загрузить (ОхОООРРООО)-;M a = download (OhOOORROOO) -;

Λί5 = загрузить(ОхОРРООООО);Λί 5 = download (OhORROOOOO);

Λί„ = загрузить (0x00000РРО) ,Λί „= download (0x00000РРО),

Выбор этих констант определяется особенностями используемой δΙΜΌ-архитектуры, а именно набором δΙΜΌ-инструкций (по сути, вопрос о выборе конкретных констант эквивалентен вопросу об использовании конкретных инструкций). Функциональное назначение этих констант объясняется ниже.The choice of these constants is determined by the features of the used δΙΜΌ-architecture, namely a set of δΙΜΌ-instructions (in fact, the question of choosing specific constants is equivalent to the question of using specific instructions). The functional purpose of these constants is explained below.

Во-вторых, формируются массивы Т1 беззнаковых 4-разрядных чисел размерности 32, в которых размещаются предварительно заполненные узлы замены. Тогда в ячейках массивов Т1 будут сохраняться следующие значения:Secondly, T 1 arrays of unsigned 4-bit numbers of dimension 32 are formed, in which pre-filled replacement nodes are placed. Then the following values will be stored in the cells of the T 1 arrays:

Т0[2(л)] = К,[л],7-0[2(л) + 1] = Ка[л],T 0 [2 (l)] = K, [l], 7-0 [2 (l) + 1] = K a [l],

Т1[2(л)] = К5[л],Г1[2(л) + 1] = Х4[л],T 1 [2 (l)] = K 5 [l], T 1 [2 (l) + 1] = X 4 [l],

Т2(2(л)] = К3[л],Г2[2(л) + 1] = К2[л], ' 'T 2 (2 (l)] = K 3 [l], G 2 [2 (l) + 1] = K 2 [l], ''

Т,[2(л)] = К7[л],Г3[2(л) + 1] = Кв[л]T, [2 (l)] = K 7 [l], T 3 [2 (l) + 1] = K in [l]

Например, Т0 =(К1[0],К8[0],К1[1],К8[1],...,К1[15],К8[15]). Следует при этом отметить, что, как сказано ранее, ГОСТ 28147-89 не специфицирует конкретный набор констант для блока подстановки, что означает, что разработчик может по своему усмотрению выбрать его наполнение.For example, T 0 = (K 1 [0], K 8 [0], K 1 [1], K 8 [1], ..., K 1 [15], K 8 [15]). It should be noted that, as said earlier, GOST 28147-89 does not specify a specific set of constants for the substitution block, which means that the developer can choose its content at his discretion.

Далее со ссылкой на фиг. 1 непосредственно описывается выполнение одного цикла шифрования данных согласно ГОСТ 2814 7-89. Как было сказано выше, количество циклов шифрования определяется ГОСТ 28147-89 в зависимости от режима шифрования.Next, with reference to FIG. 1 directly describes the implementation of one cycle of data encryption according to GOST 2814 7-89. As mentioned above, the number of encryption cycles is determined by GOST 28147-89, depending on the encryption mode.

На входе цикла - три массива данных Ν1, Ν2 и X:At the input of the loop there are three data arrays Ν 1 , Ν 2 and X:

Ν, = (Ν,ρ,Ν^ΝνΧ3),Ν, = (Ν, ρ , Ν ^ Ν ν , Ν Χ3 ),

Ν2=(Ν2222},Ν 2 = (Ν , Ν , Ν 22 , Ν 22 },

X = (Х9гХг3).X = (X 9 , X g X g , X 3 ).

Пояснения, касающиеся 32-разрядных элементов этих трех массивов, приведены выше.Explanations regarding the 32-bit elements of these three arrays are given above.

На его выходе формируется массив СМ2, состоящий из четырех 32-разрядных элементов, где СМ2[1] результат выполнения одного цикла шифрования для набора переменных Ν1>1, Ν2>1, Χ1, ί = 0, ..., 3.At its output, an array of SM 2 is formed , consisting of four 32-bit elements, where SM 2 [1] is the result of performing one encryption cycle for a set of variables Ν 1> 1 , Ν 2> 1 , Χ 1 , ί = 0, ... , 3.

На этапе 101 выполняется суммирование Ν1,1 и Χ1 по модулю 232 Результат заносится в 32разрядный элемент массива СМ!, т.е. СМ||1|=(^|,| + Χ,)ιηού232. На используемом здесь псевдоязыке этап 101 обобщенно представляется какAt step 101, the summation of Ν 1 , 1 and Χ 1 is carried out modulo 2 32 The result is recorded in the 32-bit element of the SM array !, i.e. SM | | 1 | = (^ |, | + Χ,) ιηού2 32 . In the pseudo-language used here, step 101 is summarized as

СМ, = сумма ( Ν, , X )CM, = sum (Ν,, X)

Далее на этапе 102 выполняется отвечающая настоящему изобретению операция замены, которая подробно описывается ниже.Next, at step 102, the replacement operation of the present invention is performed, which is described in detail below.

Затем на этапе 103 в отношении результата К замены выполняется циклический сдвиг Я = или ( сдвигов лево (Я , 11) , сдвиг_вправо ( Р , 21) ) после чего на этапе 104 получают выходные зашифрованные данные в массиве СМ2 путем выполнения поразрядного суммирования по модулю 2 следующим образомThen, at step 103, with respect to the replacement result K, a cyclic shift of = = or (left shifts (Z, 11), right-shift (P, 21)) is performed, after which, at step 104, output encrypted data is received in the CM2 array by performing bitwise summation modulo 2 in the following way

СМг = искл_или ( К , Λί2)CM g = exc_or (K, Λί 2 )

Следует отметить, что операции по этапам 101, 103, 104 соответствуют спецификации ГОСТ 2814789 без какой-либо δΙΜΌ-ориентированной адаптации. Иными словами, эти операции напрямую проецируются на δΙΜΌ-инструкции.It should be noted that the operations in steps 101, 103, 104 correspond to the specification of GOST 2814789 without any δΙΜΌ-oriented adaptation. In other words, these operations are directly projected onto δΙΜΌ instructions.

- 5 021803- 5 021803

Как было сказано выше, суть решаемой настоящим изобретением задачи заключается в том, что операция замены, как она специфицирована в ГОСТ 28147-89, не может быть напрямую спроецирована на δΙΜΌ-инструкции, подобно вышеуказанным операциям по этапам 101, 103, 104, и, следовательно, необходима соответствующая ее адаптация с учетом специфики δΙΜΌ-архитектуры, которая описывается ниже со ссылкой на фиг. 2.As mentioned above, the essence of the problem solved by the present invention is that the replacement operation, as specified in GOST 28147-89, cannot be directly projected onto δΙΜΌ instructions, similar to the above operations in steps 101, 103, 104, and, therefore, its corresponding adaptation is necessary taking into account the specifics of the δΙΜΌ architecture, which is described below with reference to FIG. 2.

На вход операции замены по этапу 102 подается массив СМ!, полученный на этапе 101. Результат данной операции помещается в переменную К. При выполнении операции замены по сути осуществляется замена СМ! [ί] в соответствии с содержимым узлов замены Кт.At the input of the replacement operation, at step 102, an array of CM! Is supplied, obtained at step 101. The result of this operation is placed in variable K. When the replacement operation is performed, the SM is essentially replaced! [ί] in accordance with the contents of the replacement nodes K t

На этапе 201 при помощи масок М1, М2 (см. выше) из массива СМ1 формируются два вспомогательных массива Υ и Ζ следующим образом:At step 201, using the masks M 1 , M 2 (see above), two auxiliary arrays Υ and Ζ are formed from the array SM 1 as follows:

У' = сдвиг_вправо(СМ, ,4) ,Y '= right_shift (CM,, 4),

Υ = или ( и ( М., СМ,} , и ( М2, У') ) ,Υ = or (and (M., CM,}, and (M 2 , Y ')),

Ζ = или ( и ( Μ, , Υ') , и ( М2 , СМ,) ) .Ζ = or (and (Μ,, Υ '), and (М 2 , СМ,)).

Далее, каждый 32-разрядный элемент массивов СМ1, Υ и Ζ будет естественным образом рассматриваться как массив 4-разрядных элементов размерности восемь. В результате такой интерпретации массивы СМ1, Υ и Ζ будут иметь размерность 32. Предположим, что массив СМ1 задан в виде последовательностиFurther, each 32-bit element of the SM 1 , Υ, and массив arrays will naturally be considered as an array of four-bit elements of dimension eight. As a result of this interpretation, the arrays CM 1 , Υ, and Ζ will have a dimension of 32. Suppose that the array CM 1 is given as a sequence

Тогда (-1,1.(-1,2.--4 0810110,24-4 0,8.....(-4.1ι(-ί,2ι··>(-42·Then (-1.1. (- 1.2 .-- 4 0811010.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.Y = (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) and = (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:Then, at step 202, with respect to the auxiliary arrays Υ and Ζ, the replacement is performed using the shuffle operation in accordance with the representation of the substitution block T 1 , ί = 0, ..., 3 (see above), to obtain intermediate data arrays K 0 -P 3 :

При этом получаемые в результате операции перемешать массивы данных, в силу специфики этой операции, содержат как значимые с точки зрения конечного результата данные, так и незначимые. Для дальнейших вычислений выполняется фильтрация данных из этих массивов данных путем выделения значимых данных при помощи масок М36.At the same time, the resulting data arrays mix the data arrays, due to the specifics of this operation, they contain both data that is significant from the point of view of the final result and insignificant. For further calculations, filtering data from these data arrays by extracting significant data using masks M 3 -M 6 .

При этом следует отметить следующее. Хотя в вышеприведенном описании набора процедур сказано, что на вход оператора перемешать подаются массивы 8-разрядных целых чисел размерности 16, в то время как в описании по фиг. 2 на его вход подаются массивы 4-разрядных целых чисел размерности 32, никакого противоречия нет, поскольку отвечающий δΙΜΌ-архитектуре оператор перемешать оперирует входными массивами как 128-разрядными переменными, в то время как задействуемая здесь конкретная их разбивка используется для удобства иллюстрирования того или иного аспекта.The following should be noted. Although in the above description of the set of procedures it is said that arrays of 8-bit integers of dimension 16 are fed to the operator input, while in the description of FIG. 2 arrays of 4-bit integers of dimension 32 are fed to its input, there is no contradiction, since the operator corresponding to the δΙΜΌ-architecture mixes the input arrays with 128-bit variables, while the specific breakdown used here is used to conveniently illustrate one or another aspect.

Рассмотрим подробнее операцию замены на примере Т0 и Υ. При выполнении операции будут получены Т0|У|к||. 0<к<15. Однако значимыми результатами операции являются значения старших четырех разрядов для к=0,4,8,12 и младших четырех разрядов для к=3,7,11,15, значения же остальных разрядов следует игнорировать в силу их бесполезности. Запишем промежуточный результат в виде развернутого массива К1>тт1>т]. При помощи х пометим значения, которые не являются значимыми. В результате получимLet us consider in more detail the replacement operation by the example of T 0 and Υ. During the operation, T 0 | Y | k || will be obtained. 0 <k <15. However, the significant results of the operation are the values of the senior four digits for k = 0.4.8.12 and the lower four digits for k = 3.7.11.11.15, the values of the remaining digits should be ignored due to their uselessness. We write the intermediate result in the form of an expanded array K 1> m = K m [b 1> m ]. Using x, we mark values that are not significant. As a result, we get

Я01,х,х,х, х, х, х, Ροβ, Ρυ, х, х, х, х, х, χ, К31, χ,χ,χ,χ, χ,χ,I 01 , x, x, x, x, x, x, Ρ οβ , Ρ υ , x, x, x, x, x, χ, K 31 , χ, χ, χ, χ, χ, χ,

Для того чтобы значения на позициях с пометкой х не влияли на результаты вычислений, в эти позиции следует записать нулевое значение. Это и делается при помощи маски М3.In order for the values at the positions marked x not to affect the calculation results, a zero value should be written to these positions. This is done using the mask M 3 .

Замена посредством остальных узлов выполняется аналогичным образом.Replacement by means of the remaining units is carried out in a similar way.

Наконец, на этапе 203 объединением полученных ранее промежуточных массивов Ко-К3 получают выдаваемый на этап 103 результат операции замены в виде массива К следующим образом:Finally, at step 203, by combining the previously obtained intermediate arrays of Ko-K 3 , the result of the replacement operation issued in step 103 is obtained in the form of array K as follows:

К = или ( или ( Я, , Я,) , или (К,, Я,) )K = or (or (I, I,), or (K, I,))

Для иллюстрации приведем вычисленные значения на этапах 101, 102 (т.е. 201-203):To illustrate, we present the calculated values at steps 101, 102 (i.e., 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Д- 6 021803 - Щр ίη £ η β , 21 Ά.3 ί · 4.1 | ί4.2>'Ι ^, β)' γ = (0.4,, 0,4, ο, ^, ο, ς., ΟΑ ,, ο, ί ^ οΑ., ΟΑβ ..... ο, ί ,,, ο, ^, ο, ^, ο, ^), ζ = (0, ^ 2.0-4.0.1 ,,, o, q 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).Κ, = (^ ,, 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,0, ^ 2 ^, 3,0,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,0,0, ^, ^ 23,0,0,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,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 )(ί = (^. „Κϊ, 2 '' I ^ 03Λ,. (^ 12” · I D. &. ^ 2! '^ 2,2 ..... ^ 20' ^ 31 '^ 3,2 ..... ^ 33)

Для практической реализации описанного цикла шифрования ГОСТ 28147-89 необходима компьютерная система с δΙΜΌ-архитектурой, например компьютерная система с процессором производства компаний 1п(е1 или ΆΜΌ с набором инструкций δδΕ-технологии. В частности, вышеизложенный подход может быть реализован в виде программного обеспечения, сохраненного на известном машиночитаемом носителе(ях) из состава такой компьютерной системы, которое при его исполнении упомянутым процессором будет предписывать ему осуществлять шифрование данных согласно настоящему изобретению. Такое программное обеспечение может быть создано путем компиляции исходного кода, представляющего описанные выше этапы, операции и действия, а также переменные и константы, на соответствующем языке программирования (например, на языке программирования С++) с помощью компилятора, поддерживающего инструкции δδΕ-технологии, такого как, например, компилятор У15иа1 С++ 2008 компании М1СГО5ОЙ или компилятор компании 1п1е1.For the practical implementation of the described encryption cycle, GOST 28147-89 requires a computer system with a δ архитектур architecture, for example a computer system with a processor manufactured by 1p companies (e1 or ΆΜΌ with a set of δδΕ technology instructions. In particular, the above approach can be implemented as software, stored on a known computer-readable medium (s) from such a computer system, which, when executed by the said processor, will instruct it to encrypt data according to The invention can be created by compiling source code representing the steps, operations and actions described above, as well as variables and constants, in the appropriate programming language (for example, in the C ++ programming language) using a compiler that supports the instructions δδΕ -technologies, such as, for example, the compiler U15ia1 C ++ 2008 of the company M1SGO5OY or the compiler of the company 1p1e1.

Изобретение было раскрыто выше со ссылкой на конкретный вариант его осуществления. Для специалистов могут быть очевидны и иные варианты осуществления изобретения, не меняющие его сущности, как она раскрыта в настоящем описании. Соответственно, изобретение следует считать ограниченным по объему только нижеследующей формулой изобретения.The invention has been disclosed above with reference to a specific embodiment. Other specialists may be obvious to other embodiments of the invention, without changing its essence, as it is disclosed in the present description. Accordingly, the invention should be considered limited in scope only by the following claims.

Claims (17)

ФОРМУЛА ИЗОБРЕТЕНИЯCLAIM 1. Способ шифрования данных, реализуемый посредством вычислительной платформы, имеющей δΙΜΌ-архитектуру, содержащий этапы, на которых инициализируют маски Мк (к=1, ..., 6), причем каждая маска представляет собой массив размерности 4, каждый элемент которого представляет собой уникальную для маски 32-разрядную константу;1. A method of data encryption implemented by a computing platform having a δΙΜΌ-architecture, comprising the steps of initializing the masks M k (k = 1, ..., 6), each mask being an array of dimension 4, each element of which represents a 32-bit constant unique to the mask; реорганизуют оговоренные в ГОСТ 28147-89 предварительно заполненные узлы замены Кт (т=1, ..., 8), каждый из которых представляет собой массив 4-разрядных чисел размерности 16, в массивы Т (ί=0, ..., 3) 4-разрядных чисел размерности 32 следующим образом:reorganize the pre-filled replacement nodes K t (t = 1, ..., 8) specified in GOST 28147-89, each of which is an array of 4-bit numbers of dimension 16, into arrays T (ί = 0, ..., 3) 4-bit numbers of dimension 32 as follows: Го[2(л)1 = КМГо[ЗД + 1] = Кв[п|,Г о [2 (л) 1 = КМГо [ЗД + 1] = К в [п |, Г,[2(/э)]-К5[п],Г42(п)+11-К4[л1,G, [2 (/ e)] - K 5 [n], G42 (n) + 11-K 4 [l1, Т2[2(П)] = К3[ц],Тг[2(п) + 1] = КДп], ' ~ 'T 2 [2 ( n )] = K 3 [q], T r [2 (n) + 1] = KDp], '~' Г,[2{П)] = К7[и],Г3[2(п) + 1] = Ке[п1 выполняют по меньшей мере один цикл шифрования, в котором формируют массивы 32-разрядных элементов размерности 4Г, [2 ( П )] = К 7 [и], Г 3 [2 (п) + 1] = К е [п1 perform at least one encryption cycle in which arrays of 32-bit elements of dimension 4 are formed Их = {Νι,4, 1¾ = {Л3,4, X = {ХЦ, 1 = 0, ,3, где Νι>1, Ν2>1 - подблоки, на которые предварительно разбит 64-разрядный блок шифруемых данных, а X! - часть 256-разрядного ключа шифрования, выбираемая в соответствии с ГОСТ 28147-89;Their = {Νι, 4, 1¾ = {Л 3 , 4, X = {ХЦ, 1 = 0,, 3, where Νι > 1 , Ν 2> 1 are subblocks into which a 64-bit block of encrypted data is previously split, and X! - part of the 256-bit encryption key, selected in accordance with GOST 28147-89; формируют массив СМ1 путем выполнения операции суммирования по модулю 232 в отношении массивов Ν1 и X;form an array CM1 by performing the summation operation modulo 2 32 with respect to arrays Ν 1 and X; формируют первый вспомогательный массив Υ0 путем применения к массиву СМ! операции поразрядного сдвига вправо на четыре разряда, формируют второй вспомогательный массив Υ путем применения операции логического ИЛИ к результату операции логического И в отношении маски М1 и массива СМ1 и результату операции логического И в отношении маски М2 и первого вспомогательного массива Υ0 и формируют третий вспомогательный массив Ζ путем применения операции логического ИЛИ к результату операции логического И в отношении маски М1 и первого вспомогательного массива Υ0 и результату операции логического И в отношении маски М2 и массива СМ1;form the first auxiliary array Υ 0 by applying CM to the array! bitwise right operations by four digits, form the second auxiliary array Υ by applying the logical OR operation to the result of the logical AND operation with respect to the mask M 1 and the array CM 1 and the result of the logical AND operation with respect to the mask M 2 and the first auxiliary array Υ 0 and form the third auxiliary array Ζ by applying the logical OR operation to the result of the logical AND operation with respect to the mask M1 and the first auxiliary array Υ0 and the result of the logical AND operation with respect to the mask M2 and array CM1; формируют первый промежуточный массив Ко путем применения операции логического И к маске М3 и результату выполнения операции перемешивания в отношении массива Т0 и второго вспомогательного массива Υ, формируют второй промежуточный массив Κι путем применения операции логического И к маске М5 и результату выполнения операции перемешивания в отношении массива Т2 и третьего вспомогательного массива Ζ, формируют третий промежуточный массив Κ2 путем применения операции логического И к маске М4 и результату выполнения операции перемешивания в отношении массива Т1 и второго вспомогательного массива Υ, формируют четвертый промежуточный массив Κ3 путем применения операции логического И к маске М6 и результату выполнения операции перемешивания в отношенииform the first intermediate array Ko by applying the logical AND operation to the mask M3 and the result of the mixing operation with respect to the array T0 and the second auxiliary array Υ, form the second intermediate array путемι by applying the logical And operation to the mask M 5 and the result of the mixing operation with respect to the array T 2 and the third auxiliary array Ζ, form a third intermediate Κ array 2 by applying a logical aND operation to the mask M 4 and the operation result is stirred I against array T 1 and the second auxiliary array Υ, form a fourth intermediate array Κ 3 by applying a logical AND operation to the mask M 6 and the result of performing mixing operation against - 7 021803 массива Т 3 и третьего вспомогательного массива Ζ и формируют пятый промежуточный массив К путем применения операции логического ИЛИ к результату операции логического ИЛИ в отношении первого промежуточного массива Ко и третьего промежуточного массива К2 и результату операции логического ИЛИ в отношении второго промежуточного массива К! и четвертого промежуточного массива К3;- 7 021803 of the array T 3 and the third auxiliary array Ζ and form the fifth intermediate array K by applying the logical OR operation to the result of the logical OR operation with respect to the first intermediate array Ko and the third intermediate array K 2 and the result of the logical OR operation with respect to the second intermediate array K ! and the fourth intermediate array K 3 ; выполняют в отношении пятого промежуточного массива К циклический сдвиг и формируют представляющий шифрованные данные массив СМ2 путем выполнения операции поразрядного суммирования по модулю 2 в отношении пятого промежуточного массива, прошедшего циклический сдвиг, и массива Ν2;perform a cyclic shift with respect to the fifth intermediate array K and form a CM 2 array representing the encrypted data by performing bitwise summing operations modulo 2 with respect to the fifth intermediate array that has passed the cyclic shift and array Ν 2 ; при этом вышеупомянутые суммирования, логические операции, сдвиги и операция перемешивания непосредственно предусмотрены δΙΜΏ-архитектурой.the aforementioned summation, logical operations, shifts, and mixing operation are directly provided for by the δΙΜΏ-architecture. 2. Способ по п.1, в котором δΙΜΏ-архитектура является δΙΜΏ-архитектурой компании 1п1е1 или аналогичной архитектурой компании ΆΜΏ, образуемой процессором, имеющим четыре процессорных элемента.2. The method according to claim 1, in which the δΙΜΏ-architecture is the δΙΜΏ-architecture of the company 1n1e1 or similar architecture of the company ΆΜΏ formed by a processor having four processor elements. 3. Способ по п.2, в котором с каждым из процессорных элементов связано отдельное локальное запоминающее устройство, в котором сохраняется соответственно один из наборов Ν1;1, Ν24, X! (ί = 0, ..., 3) для независимой обработки этим процессорным элементом.3. The method according to claim 2, in which a separate local storage device is associated with each of the processor elements, in which one of the sets Ν 1; 1 , Ν 24 , X! (ί = 0, ..., 3) for independent processing by this processor element. 4. Способ по п.3, в котором узлы замены Кт (т=1, ..., 8) в совокупности образуют блок подстановки, который является единым для всех процессорных элементов.4. The method according to claim 3, in which the replacement nodes K t (t = 1, ..., 8) together form a substitution block, which is the same for all processor elements. 5. Способ по п.1, в котором количество циклов шифрования определяется ГОСТ 28147-89.5. The method according to claim 1, in which the number of encryption cycles is determined by GOST 28147-89. 6. Способ по п.1, в котором выбор части ключа шифрования определяется режимом шифрования, предусмотренным ГОСТ 28147-89.6. The method according to claim 1, in which the choice of part of the encryption key is determined by the encryption mode provided for by GOST 28147-89. 7. Способ по п.1, в котором при формировании массива СМ1 путем выполнения операции суммирования по модулю 232 в отношении массивов Ν1 и X ΐ-й элемент массива СМ1 получают суммированием Ν1;1 и X! по модулю 232, 1=0, ..., 3.7. The method according to claim 1, wherein when forming the array of CM 1 by performing the summing operation modulo 2 32 with respect to arrays Ν 1 and X, the ΐ -th element of the array SM 1 is obtained by summing Ν 1; 1 and X! modulo 2 32 , 1 = 0, ..., 3. 8. Способ по п.1, в котором перед формированием промежуточных массивов каждый из вспомогательных массивов Υ и Ζ реорганизуют как массив 4-разрядных чисел размерности 32 путем реорганизации каждого его 32-разрядного элемента в массив 4-рязрядных чисел размерности 8.8. The method according to claim 1, in which before the formation of intermediate arrays, each of the auxiliary arrays Υ and Ζ is reorganized as an array of 4-bit numbers of dimension 32 by reorganizing each of its 32-bit elements into an array of 4-bit numbers of dimension 8. 9. Способ по п.8, в котором при операции перемешивания, выполняемой в отношении двух массивов, результирующий массив заполняется элементами первого из этих двух массивов так, что в элемент результирующего массива, позиция которого соответствует позиции элемента второго из упомянутых двух массивов, записывается либо 0, либо элемент первого из упомянутых двух массивов, позиция которого указывается младшими четырьмя разрядами упомянутого элемента второго из этих двух массивов.9. The method of claim 8, wherein in the mixing operation performed on two arrays, the resulting array is filled with elements of the first of these two arrays so that the element of the resulting array, whose position corresponds to the position of the element of the second of the two arrays, is written either 0, or an element of the first of the two arrays mentioned, the position of which is indicated by the lower four digits of the said element of the second of these two arrays. 10. Способ по п.9, в котором применением операции логического И к соответствующей маске и соответствующему результату операции перемешивания обнуляются незначащие значения в получающемся промежуточном массиве.10. The method according to claim 9, in which by applying the logical AND operation to the corresponding mask and the corresponding result of the mixing operation, insignificant values in the resulting intermediate array are zeroed. 11. Способ по п.1, в котором циклический сдвиг в отношении пятого промежуточного массива К выполняют путем применения операции логического ИЛИ к результату операции поразрядного сдвига влево на одиннадцать разрядов в отношении массива К и результату операции поразрядного сдвига вправо на двадцать один разряд в отношении массива К.11. The method according to claim 1, in which the cyclic shift in relation to the fifth intermediate array K is performed by applying the logical OR operation to the result of the bitwise left shift operation by eleven digits in relation to the array K and the result of the bitwise right shift operation by twenty one bits in relation to the array TO. 12. Способ по п.7 или 11, в котором при применении к массиву 32-разрядных чисел размерности 4 операции поразрядного сдвига влево/вправо операцию поразрядного сдвига влево/вправо выполняют в отношении каждого элемента данного массива.12. The method according to claim 7 or 11, in which when applying to the array of 32-bit numbers of dimension 4, the operations of bitwise shift left / right, the operation of bitwise shift left / right is performed with respect to each element of this array. 13. Способ по п.1, в котором при формировании массива СМ2 путем выполнения операции поразрядного суммирования по модулю 2 в отношении массивов К и Ν2 ΐ-й элемент массива СМ2 получают поразрядным суммированием 1-го элемента массива К и Ν2,ϊ по модулю 2, 1=0, ..., 3.13. The method according to claim 1, in which when forming the array of SM 2 by performing the operation of bitwise summation modulo 2 with respect to arrays K and Ν 2, the ΐ-th element of the array SM 2 is obtained by bitwise summation of the 1st element of the array K and Ν 2 , ϊ modulo 2, 1 = 0, ..., 3. 14. Способ по любому из пп.1-11, в котором при применении к массивам 32-разрядных чисел размерности 4 операции логического ИЛИ ΐ-й элемент результирующего массива получается соответственным применением операции логического ИЛИ в отношении ΐ-х элементов упомянутых массивов, 1=0, ..., 3.14. The method according to any one of claims 1-11, wherein when applying logical OR operations to 32-bit numbers of dimension 4, the ΐth element of the resulting array is obtained by the corresponding application of the logical OR operation with respect to the элементовth elements of the arrays mentioned, 1 = 0, ..., 3. 15. Способ по любому из пп.1-11, в котором при применении к массивам 32-разрядных чисел размерности 4 операции логического И ΐ-й элемент результирующего массива получается соответственным применением операции логического И в отношении ΐ-х элементов упомянутых массивов, 1=0, ..., 3.15. The method according to any one of claims 1 to 11, wherein when applying logical AND operations to the arrays of 32-bit numbers of dimension 4, the ΐth element of the resulting array is obtained by the corresponding application of the logical AND operation with respect to the элементовth elements of the arrays mentioned, 1 = 0, ..., 3. 16. Способ по п.1, в котором маски Μι^ (к=1, ..., 6) инициализируют следующими значениями:16. The method according to claim 1, in which the mask Μι ^ (k = 1, ..., 6) is initialized with the following values: МЛН = ОхОООРОООР, Μ2[ϊ] = ΟχΟΡΟΟΟΓΟΟ, Μ3[ί] = ОхРООООООР, МЛЛ = ОхОООРРООО, М5 [2] =MLN = OhOOOOOOOO, Μ 2 [ϊ] = ΟχΟΡΟΟΟΓΟΟ, Μ 3 [ί] = OhROOOOOO, MLL = OhOOOOOOOO, M 5 [2] = ОхОООРРООО, М5 [2] = ОхОРРООООО, М6 [1] = 0Х00000РР0, 2 = 0, ,3.OhOOORROOO, M 5 [2] = OhORROOOOO, M 6 [1] = 0Х00000РР0, 2 = 0, 3. 17. Машиночитаемый носитель, на котором сохранены машиноисполняемые команды, которые при их исполнении вычислительной платформой, имеющей δΙΜΏ-архитектуру, предписывают этой вычислительной платформе выполнять способ шифрования данных по п.1.17. A machine-readable medium on which computer-executable instructions are stored which, when executed by a computing platform having a δΙΜΏ architecture, require this computing platform to perform the data encryption method according to claim 1.
EA201200672A 2012-04-25 2012-04-25 Method of data encoding for calculating platforms with simd-architecture EA021803B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EA201200672A EA021803B1 (en) 2012-04-25 2012-04-25 Method of data encoding for calculating platforms with simd-architecture

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EA201200672A EA021803B1 (en) 2012-04-25 2012-04-25 Method of data encoding for calculating platforms with simd-architecture

Publications (2)

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

Family

ID=49488733

Family Applications (1)

Application Number Title Priority Date Filing Date
EA201200672A EA021803B1 (en) 2012-04-25 2012-04-25 Method of data encoding for calculating platforms with simd-architecture

Country Status (1)

Country Link
EA (1) EA021803B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2633132C1 (en) * 2016-06-02 2017-10-11 Андрей Валерьевич Менячихин Method for constructing replacement nodes using values of line and difference spectra and device implementing it

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 (en) * 2004-03-31 2010-05-27 Майкрософт Корпорейшн Stream cipher structure with cyclic buffer movement

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 (en) * 2004-03-31 2010-05-27 Майкрософт Корпорейшн Stream cipher structure with cyclic buffer movement
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 (en) 2013-10-30

Similar Documents

Publication Publication Date Title
CN107251474A (en) Use the Cryptographic AES for the finite subregions look-up table in masked operation
JP6135804B1 (en) Information processing apparatus, information processing method, and program
US20120159186A1 (en) Securing the implementation of a cryptographic process using key expansion
WO2018015325A1 (en) Device and method for performing obfuscated arithmetic
CN106105089B (en) The dynamic encryption key that close XTS encryption system is used together is compiled with reduction bout is used
CN106034021B (en) Lightweight dual-mode compatible AES encryption and decryption module and method thereof
CN106233660A (en) Encryption processing apparatus, cipher processing method and program
US8553878B2 (en) Data transformation system using cyclic groups
EP3127271B1 (en) Obfuscated performance of a predetermined function
JP2021507391A (en) Compilation device and method
JP6187624B1 (en) Information processing apparatus, information processing method, and program
KR101914453B1 (en) Apparatus and method for encryption
US8687803B2 (en) Operational mode for block ciphers
US11200346B2 (en) Secure computation for reading multiple elements from a secure text array
JP6292195B2 (en) Information processing apparatus and information processing method
EA021803B1 (en) Method of data encoding for calculating platforms with simd-architecture
US8774402B2 (en) Encryption/decryption apparatus and method using AES rijndael algorithm
KR101699176B1 (en) Hadoop Distributed File System Data Encryption and Decryption Method
CN110990896A (en) Digital signature device, method, storage medium and equipment based on SM2 white box
JP5500923B2 (en) Information processing device
WO2015178082A1 (en) Information-processing device, program, and recording medium
JP2014240921A (en) Encryption device, encryption processing method and encryption processing program
JP5113833B2 (en) ENCRYPTION METHOD AND ENCRYPTION APPARATUS FOR IMPROVING OPERATION PERFORMANCE OF A CENTRAL PROCESSOR
CN115730296A (en) Secure execution of cryptographic processes
KR102452181B1 (en) Apparatus for sorting of approximate encrypted messages and method thereof