EA021803B1 - Method of data encoding for calculating platforms with simd-architecture - Google Patents
Method of data encoding for calculating platforms with simd-architecture Download PDFInfo
- 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
Links
Landscapes
- Storage Device Security (AREA)
Abstract
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.
Во-первых, константы М1-М6, выполняющие роль масок, задаются следующим образом: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=(Ν2ΰ,Ν2ί,Ν22,Ν22},Ν 2 = (Ν 2ΰ , Ν 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 (см. выше), с получением промежуточных массивов данных К0-Р3: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 :
При этом получаемые в результате операции перемешать массивы данных, в силу специфики этой операции, содержат как значимые с точки зрения конечного результата данные, так и незначимые. Для дальнейших вычислений выполняется фильтрация данных из этих массивов данных путем выделения значимых данных при помощи масок М3-М6.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)
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)
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)
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 |
-
2012
- 2012-04-25 EA EA201200672A patent/EA021803B1/en unknown
Patent Citations (4)
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 |