KR101008574B1 - Aes encryption method using multi-processor - Google Patents
Aes encryption method using multi-processor Download PDFInfo
- Publication number
- KR101008574B1 KR101008574B1 KR1020100045482A KR20100045482A KR101008574B1 KR 101008574 B1 KR101008574 B1 KR 101008574B1 KR 1020100045482 A KR1020100045482 A KR 1020100045482A KR 20100045482 A KR20100045482 A KR 20100045482A KR 101008574 B1 KR101008574 B1 KR 101008574B1
- Authority
- KR
- South Korea
- Prior art keywords
- processor
- round
- elements
- aes encryption
- state
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
Abstract
Description
본 발명은 AES(Advanced Encryption Standard) 암호화 방법에 관한 것으로, 특히 다중 프로세서를 이용하여 AES 암호화 알고리즘을 수행하는 방법에 관한 것이다.The present invention relates to an advanced encryption standard (AES) encryption method, and more particularly, to a method for performing an AES encryption algorithm using a multiprocessor.
AES(Advanced Encryption Standard) 암호화 알고리즘은 크게 T-룩업(look-up) 방식과 전치(transposed) 방식이 많이 사용되어 왔다. T-룩업 방식은 글래드만(Gladman)이 제시한 방법으로, AES 4*4 바이트 크기의 2차원 어레이(arrary)인 스테이트(state)를 세로 방향 (열 벡터)으로 구현하여 AES의 암호화 단계의 하나인 서브바이트(SubByte)와 믹스컬럼 (MixColumn), 그리고 복호화 단계인 역 SubByte 및 역 MixColumn을 하나의 테이블로 구성하여 연산 속도를 향상시킨 방법이다. 그러나 이 방법은 수 Kbyte의 테이블이 필요하다.AES (Advanced Encryption Standard) encryption algorithm has largely used a T-look-up method and a transposed method. T-Lookup is a method proposed by Gladman that implements AES 4 * 4 byte sized two-dimensional array in the vertical direction (column vector). This method improves the computation speed by configuring one subbyte, MixColumn, and inverse SubByte and Inverse MixColumn as a table. However, this method requires several Kbytes of tables.
전치 방법은 베르토니(Bertoni)가 제안한 방법으로, T-룩업과는 달리 AES의 스테이트를 가로방향 (행 벡터)으로 구현하여 연산에 필요한 테이블의 크기를 줄이고 캐쉬 메모리가 한정된 시스템에서는 T-룩업에 비해서 빠른 특징이 있다.The transposition method is proposed by Bertoni. Unlike the T-lookup, the AES state is implemented in the horizontal direction (row vector) to reduce the size of the table required for the operation and to T-lookup in a system with limited cache memory. Compared to the fast features.
일반적으로 연산속도를 향상시키는 동시에 동작 클럭을 낮추기 위해 다중 프로세서를 사용하지만, T-룩업이나 전치 방식의 AES 방법은 다중 프로세서로 구현되지 않았다. In general, multiple processors are used to improve the operation speed and lower the operation clock. However, the T-lookup or pre-positioned AES method is not implemented in multiple processors.
본 발명이 해결하려는 과제는 AES 연산시 한 스테이트를 여러 프로세서로 나누어 계산하고 이를 다시 합칠 때 프로세서들간의 불필요한 데이터 교환을 줄이고 부하 연산량을 프로세서간에 비슷하게 할당하는 다중 프로세서를 이용한 AES 암호화 방법을 제공하는 것이다.SUMMARY OF THE INVENTION An object of the present invention is to provide an AES encryption method using multiple processors that divides a state into multiple processors in AES operation and calculates and recombines them, thereby reducing unnecessary data exchange between processors and allocating load computations similarly between processors. .
상기 과제를 이루기 위한, 본 발명은 다중 프로세서를 사용하여 AES 암호화하는 방법에 있어서, 스테이트에 대해 각 프로세서에서 처리될 원소들을 선택하여 상기 스테이트를 분할하는 단계; 분할된 스테이트에 대해 각 프로세서가 AES 암호화에 필요한 변환들을 수행하는 단계; 변환들이 완료된 결과에 라운드 키를 가산하는 단계; 가산이 완료된 결과로부터 각 프로세서별로 순차적으로 하나의 열벡터를 선택하는 단계; 및 각 프로세서가 다른 프로세서들로부터 다음 라운드의 AES 암호화에 필요한 스테이트 원소들을 전달받아 상기 과정들을 반복수행하는 단계를 포함함을 특징으로 한다.In order to achieve the above object, the present invention provides a method for AES encryption using multiple processors, comprising: selecting elements to be processed in each processor for a state and dividing the state; Performing, by each processor, transformations necessary for AES encryption on the partitioned state; Adding a round key to the result of the transformations being completed; Selecting one column vector sequentially for each processor from the result of the addition; And each processor receiving the state elements necessary for the next round of AES encryption from other processors and repeating the above processes.
상기 과제를 이루기 위한, 본 발명은 다중 프로세서를 사용하여 AES 암호화하는 방법에 있어서, 스테이트의 행벡터들을 상기 다중 프로세서 수만큼 각각 분할하는 단계; 분할된 행벡터들에 대해 각각 AES 암호화에 필요한 변환들을 수행하는 단계; 각 프로세서가 자신이 처리하는 행벡터와 다른 프로세서들로부터 전달된 행벡터들을 연산하여 자신이 처리하는 행벡터를 1차 갱신하는 단계; 및 1차 갱신된 행벡터에 라운드 키를 가산하고 상기 과정들을 반복하는 단계를 포함함을 특징으로 한다.In order to achieve the above object, the present invention provides a method for AES encryption using multiple processors, comprising: dividing a row vector of a state by the number of multiple processors, respectively; Performing transformations for AES encryption on the divided row vectors, respectively; Each processor calculating a row vector processed by the processor and row vectors transferred from other processors, and updating the row vector processed by the processor first; And adding the round key to the first updated row vector and repeating the above processes.
본 발명에 따르면 AES 암호화 알고리즘을 다중 프로세서로 구현함으로써, 프로세서간 불필요한 데이터 교환을 줄이면서도 부하 연산량을 비슷하게 할당하여 연산속도를 향상시킬 수 있다.According to the present invention, by implementing the AES encryption algorithm in multiple processors, it is possible to improve the operation speed by allocating similar load calculation amount while reducing unnecessary data exchange between processors.
도 1은 본 실시에 따른, 다중 프로세서에서 수행되는 T-룩업 AES 암호화 과정을 도시한 것이다.
도 2는 본 실시예에 따른, 다중 프로세서에서 수행되는 T-룩업 AES 키 확장 과정을 도시한 것이다.
도 3은 본 실시예에 따른, 다중 프로세서를 통해 수행되는 전치(transposed) AES 암호화 과정을 도시한 것이다.
도 4는 본 실시예에 따른, 다중 프로세서를 통해 수행되는 전치 AES 키 확장 과정을 도시한 것이다.1 illustrates a T-lookup AES encryption process performed in multiple processors according to the present embodiment.
2 illustrates a T-lookup AES key expansion process performed in multiple processors according to the present embodiment.
3 illustrates a transposed AES encryption process performed through multiple processors according to the present embodiment.
4 illustrates a pre-AES key expansion process performed by multiple processors according to the present embodiment.
AES 암호화는 표준문서인 FIPS 197(Federal Information Processing Standards Publication 197)에 기재되어 있으며, AES 암호화 과정에 필요한 각 함수들도 이 문서에 규정되어 있다.AES encryption is described in the Federal Information Processing Standards Publication 197, a standard document, and each function required for the AES encryption process is also defined in this document.
AES 암호화에 사용되는 키는 128비트, 192비트, 256비트 크기를 가지며, 각각 라운드 수는 암호화 키 길이에 따라 10/12/14이고, 입출력되는 블록의 길이는 128비트이다. 키 확장은 암호화 키로부터 AES 암호화 과정에 사용되는 라운드 키를 생성하는 것으로, 키 길이에 따라 각각 44,52,60 워드(word)를 생성하며, 초기 키 값 128/192/256비트로 각 라운드와 마지막 라운드에 필요한 4워드의 키를 확장한다.The key used for AES encryption has 128 bits, 192 bits, and 256 bits, and the number of rounds is 10/12/14 depending on the encryption key length, and the length of the input / output block is 128 bits. Key expansion generates round keys for AES encryption from the encryption key, generating 44,52,60 words, respectively, depending on the length of the key, with the initial key value 128/192/256 bits. Expand the key of 4 words needed for the round.
암호화 및 암호화에 사용되는 라운드 키 생성을 위한 키 확장에 사용되는 함수는 AddRoundkey, MixColumn, RotWord, ShiftRow, Subbyte, Subword, XOR 연산 등이 있으며, 라운드 상수 어레이를 나타내는 Rcon이 규정되어 있다.Functions used for key expansion for encryption and round key generation used for encryption include AddRoundkey, MixColumn, RotWord, ShiftRow, Subbyte, Subword, and XOR operation. Rcon is specified to represent an array of round constants.
각 함수들의 연산은 FIPS 197 표준에 규정되어 있으며, 간략한 설명은 다음과 같다.The operation of each function is specified in the FIPS 197 standard. A brief description follows.
AddRoundkey는 스테이트에 라운드 키를 XOR 연산하는 변환이다.AddRoundkey is a transformation that XORs a round key to a state.
MixColumn은 스테이트의 모든 칼럼들에 대해 각 데이터들을 독립적으로 혼합하여 새로운 칼럼을 만드는 것이다.MixColumn creates a new column by mixing each data independently for all the columns in the state.
RotWord는 4바이트 워드에 대해 순환 치환(cyclic permutation)하는 함수로 키 확장 과정에 사용된다. RotWord is a function for cyclic permutation of 4-byte words, which is used in the key expansion process.
ShiftRow는 스테이트에서 첫번째 행에 해당되는 원소를 제외한 나머지 세 행에 해당되는 원소를 각각 다른 오프셋으로 순환 쉬프트하는 변환이다.ShiftRow is a transformation that cyclically shifts the elements of the remaining three rows except for the first row of elements in the state with different offsets.
SubByte는 비선형 바이트 대치(substitution) 테이블인 S-box를 사용하여 스테이트를 처리하는 변환이다.SubByte is a transformation that processes states using S-box, a nonlinear byte substitution table.
SubWord는 키 확장에 사용되는 함수로 4바이트 입력 워드에 대해 S-box를 4바이트 각각에 적용하여 그 출력을 얻는 것으로 키 확장 과정에 사용된다.SubWord is a function used for key expansion. It is used for key expansion process by applying S-box to each of 4 bytes for 4 byte input word and getting the output.
각 연산 및 본 발명에서 사용하는 덧셈() 및 곱셈(*)은 FIPS-197에 정의되어 있다. 덧셈()은 각 비트별 XOR연산으로 정의된다.Each operation and addition used in the present invention ( ) And multiplication (*) are defined in FIPS-197. addition( ) Is defined by the XOR operation for each bit.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 상세히 설명하기로 한다. 이하의 실시 예는 이 기술 분야에서 통상적인 지식을 가진 자에게 본 발명이 충분히 이해되도록 제공되는 것으로서, 여러 가지 형태로 변형될 수 있으며, 본 발명의 범위가 다음에 기술되는 실시 예에 한정되는 것은 아니다. 예를 들어, 다중프로세서의 수를 변화시킨 방법, T-룩업을 사용하지 않고 세로방향으로 나누어 구현하는 방법, AES 복호화 알고리즘 구현방법, AES와 유사한 암호화/복호화 알고리즘 다중프로세서 구현방법도 본 발명의 범위에 포함된다. 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였다. 명세서 전체를 통하여 유사한 부분에 대해서는 동일한 도면 부호를 붙였다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. The following embodiments are provided to those skilled in the art to fully understand the present invention, and may be modified in various forms, and the scope of the present invention is limited to the embodiments described below. no. For example, a method of changing the number of multiprocessors, a method of dividing in a vertical direction without using a T-lookup, a method of implementing AES decryption algorithms, and a method of implementing an encryption / decryption algorithm multiprocessor similar to AES also include the scope of the present invention. Included in In the drawings, parts irrelevant to the description are omitted in order to clearly describe the present invention. Like parts are designated by like reference numerals throughout the specification.
도 1은 본 실시에 따른, 다중 프로세서에서 수행되는 T-룩업 AES 암호화 과정을 도시한 것이다.1 illustrates a T-lookup AES encryption process performed in multiple processors according to the present embodiment.
T-룩업 AES 암호화 방법은 스테이트에 대해 ShiftRow, SubByte, MixColum 그리고 AddRoundKey 과정을 반복 수행하는 것이다.The T-Lookup AES encryption method is to repeat the ShiftRow, SubByte, MixColum, and AddRoundKey processes for the state.
본 실시예에서는 T-룩업 AES 암호화 방법을 다중 프로세서로 구현하기 위해, 먼저 각 프로세서에서 수행될 과정에 필요한 스테이트들을 재구성한다. 도 1에서, 제1프로세서에는 스테이트의 대각선을 이루는 원소들(10a)만 선택한다. 제2 내지 제4프로세서에서는 대각선으로부터 각각 1, 2 및 3바이트 우측에 위치한 원소들(10b, 10c, 10d)만 선택한다. In this embodiment, in order to implement the T-lookup AES encryption method in multiple processors, first, states necessary for a process to be performed in each processor are reconfigured. In FIG. 1, only the
다음으로, 프로세서들은 재구성된 스테이트들에 대해 각각 ShiftRow, SubByte, MixColum 그리고 AddRoundKey 과정을 수행하고, 참조번호 12a, 12b, 12c 및 12d에 도시된 바와 같이 다음 라운드의 스테이트를 구성하는 열벡터를 각 프로세서마다 얻는다. 여기서 T-룩업을 사용하는 방법은 SubByte와 MixColumn을 한번에 연산하며 이외의 방법에서는 각각 연산한다. 여기서 도면에는 도시되지 않았으나, SubByte 변환을 구현하기 위해서는 다중 프로세서 이외에 S-Box를 저장한 메모리가 더 필요하다.Next, the processors perform the ShiftRow, SubByte, MixColum, and AddRoundKey processes on the reconstructed states, respectively, and each processor generates a column vector constituting the next round of states as shown by
각 프로세서는 얻어진 열벡터들(12a, 12b, 12c 및 12d)로부터 자신이 다음 라운드 수행에 필요한 원소들을 다른 세 프로세서들로부터 각각 전달받는다. 예를 들어 제1프로세서는 도시된 바와 같이 제2프로세서로부터 W'1 ,1, 제3프로세서로부터 W'2,2, 및 제4프로세서로부터 W'3 ,3을 받는다.Each processor receives its elements from the obtained
프로세서들은 이와 같은 과정을 암호화 키 길이에 따라 필요한 회수만큼 반복 수행한다(14a, 14b, 14c, 14d).Processors repeat this process as many times as necessary according to the encryption key length (14a, 14b, 14c, 14d).
한편, AddRoundKey 과정 수행에는 라운드 키가 필요하다. 라운드 키는 도 2에 도시된 T-룩업 AES 키 확장 과정에 따라 생성된다.On the other hand, the round key is required to perform the AddRoundKey procedure. The round key is generated according to the T-lookup AES key expansion procedure shown in FIG.
먼저 제1프로세서는 입력된 키 데이터 블록(21b)의 최우측 열벡터(21a)에 대해 RotWord, SubWord 변환을 수행하고, 그 결과에 Rcon을 XOR 연산하여 (22a), 템프(temp)벡터(23a)를 생성한다. 템프 벡터(23a)는 제2프로세서로 전달되고, 또한 제2프로세서로부터 전달된 P3벡터와 XOR연산(24a)되어 다음 라운드의 W'벡터(25a)가 생성된다. 제1프로세서는 이러한 과정을 암호화 키 길이에 따라 필요한 회수만큼 반복 수행한다(26a). 여기서 도면에는 도시되지 않았으나, SubWord 변환을 구현하기 위해서는 다중 프로세서 이외에 S-Box를 저장한 메모리가 더 필요하다.First, the first processor performs a RotWord and SubWord transformation on the
제2프로세서는 스테이트(21b)의 각 열벡터를 좌측에서부터 순차적으로 누적 XOR 연산하여(22b), 열벡터 P1, P2, P3(23b)를 각각 생성한다. 이들 중 P3는 제1프로세서로 전달되고, 스테이트(21b)의 최좌측 열벡터와 P1,P2,P3는 각각 제1프로세서로부터 전달된 템프벡터(23a)와 XOR 연산되고(24b). 연산된 각 열벡터는 다음 라운드의 키 데이터(25b)가 된다. 제2프로세서는 이러한 과정을 암호화 키 길이에 따라 필요한 회수만큼 반복 수행한다(26b).The second processor sequentially accumulates (22b) each column vector of the
도 3은 본 실시예에 따른, 다중 프로세서를 통해 수행되는 전치(transposed) AES 암호화 과정을 도시한 것이다.3 illustrates a transposed AES encryption process performed through multiple processors according to the present embodiment.
프로세서들은 전치 AES 암호화 과정에 따라 스테이트의 행벡터 데이터를 각각 처리한다. 먼저 각 행벡터(31a, 31b, 31c, 31d)에 대해 각각 0, 1, 2, 3 바이트 오프셋으로 ShiftRow 변환(32a, 32b, 32c, 32d)한 다음, SubByte변환(34a, 34b, 34c, 34d)한다. 참조번호 33a, 33b, 33c, 33d는 ShiftRow 변환결과를 나타내고, 35a,35b,35c,35d는 SubByte변환 결과를 도시한 것이다. 여기서 도면에는 도시되지 않았으나, SubByte 변환을 구현하기 위해서는 다중 프로세서 이외에 S-Box를 저장한 메모리가 더 필요하다.Processors process the row vector data of the state according to the pre-AES encryption process. First, ShiftRow transform (32a, 32b, 32c, 32d) with 0, 1, 2, and 3 byte offsets for each row vector (31a, 31b, 31c, 31d), and then SubByte transform (34a, 34b, 34c, 34d). do.
SubByte 변환이 완료된 행벡터에 대해 참조번호 36a, 36b, 36c, 36d와 같은 MixColumn 변환을 수행한다. MixColumn은 다음과 같은 연산을 수행한다.MixColumn transformations, such as
여기서, Row1, Row2, Row3, Row4는 각각 SubByte를 수행한 결과 행벡터이고, W0,x, W1,x, W2,x, W3,x는 MixColumn 연산 후 생성된 행벡터이며, 는 덧셈을, *는 곱셈 연산이다.Here, Row1, Row2, Row3, and Row4 are row vectors as a result of performing SubByte, respectively, and W0, x, W1, x, W2, x, W3, x are row vectors generated after the MixColumn operation. Is addition and * is a multiplication operation.
수학식 1에 따른 MixColumn변환을 위해 프로세서들은 다른 프로세서들로부터 행벡터를 전달받아 MixColumn 변환을 연산한다.For the MixColumn transform according to
다음으로 각 프로세서는 MixColumn 변환된 행벡터에 AddRoundkey 연산(37a, 37b, 37c, 37d)을 수행하여 다음 라운드의 행벡터(38a,38b, 38c, 38d)를 생성한다. 각 프로세서는 이러한 과정들을 암호화 키 길이에 따라 필요한 회수만큼 반복 수행한다(39a, 39b, 39c, 39d).Next, each processor performs
여기서 AddRoundKey 변환에 사용되는 라운드 키는 도 4에 도시된 전치 AES 키 확장 과정에 따라 생성된다.Here, the round key used for AddRoundKey conversion is generated according to the transpose AES key expansion process shown in FIG. 4.
제1프로세서는 키 데이터 블록의 첫 두 행벡터와 원소 W1 ,3에 대해 연산하고(41a), 제2프로세서는 키 데이터 블록의 나머지 두 행벡터와 원소 W0 ,3에 대해 연산한다(41b).The first processor operates on the first two row vectors and the elements W 1 , 3 of the key data block (41a), and the second processor operates on the remaining two row vectors and the elements W 0 , 3 of the key data block (41b).
제1프로세서는 먼저 원소 W1 ,3에 대해 SubByte 연산과 3바이트 좌측 쉬프트를 수행하고(42a), Rcon과 XOR 연산한다(43). 그 연산결과(44a)와 첫번째 행벡터를 각각 1, 2 및 3 바이트 우측으로 쉬프트한 결과들을 모두 XOR 연산하여(45a) 다음 라운드 키 데이터 블록(51a)의 첫번째 행벡터(46a)를 생성한다. 여기서 도면에는 도시되지 않았으나, SubByte 변환을 구현하기 위해서는 다중 프로세서 이외에 S-Box를 저장한 메모리가 더 필요하다.The first processor first performs a SubByte operation and a 3-byte left shift on elements W 1 and 3 (42a), and performs an XOR operation on Rcon (43). An
다음으로 제1프로세서는 원소 W2 ,3에 대해 SubByte 연산(47a)과 3바이트 좌측 쉬프트를 수행한다(48a). 그 결과(48a)와 두번째 행벡터를 각각 1, 2 및 3 바이트 우측으로 쉬프트한 결과들을 모두 XOR 연산하여(49a) 다음 라운드 키 데이터 블록(51a)의 두번째 행벡터(50a)를 생성한다.Next, the first processor performs a
제1프로세서는 또 다음 라운드 연산시 필요한 원소 W0 ,3을 제2프로세서로 전달한다.The first processor also passes the elements W 0 , 3 necessary for the next round operation to the second processor.
제2프로세서는 원소 W3 ,3에 대해 SubByte 연산(42b)과 3바이트 좌측 쉬프트를 수행한다(44b). 쉬프트 결과 데이터(44b)와 키 데이터 블록의 세번째 행벡터를 각각 1, 2 및 3바이트 우측으로 쉬프트한 결과들을 모두 XOR 연산하여(45b) 다음 라운드 키 데이터 블록(51a)의 세번째 행벡터를 생성하고, 이를 제1프로세서로 전달한다.The second processor performs the operation SubByte (42b) and 3-byte left shifts for the element W 3, 3 (44b). The third row vector of the next round
다음으로 제2프로세서는 원소 W0 ,3에 대해 SubByte 연산(47b)과 3바이트 좌측 쉬프트를 수행한다(48b). 쉬프트 결과 데이터(48b)와 키 데이터 블록의 네번째 행벡터를 각각 1, 2 및 3바이트 우측으로 쉬프트한 결과들을 모두 XOR 연산하여(49b) 다음 라운드 키 데이터 블록(51a)의 네번째 행벡터를 생성하고, 이를 제1프로세서로 전달한다.Next, the second processor performs a 48-byte left shift and
제1 및 제2프로세서는 이러한 과정을 암호화 키 길이에 따라 필요한 회수만큼 반복 수행한다(52a, 52b).The first and second processors repeat this process as many times as necessary according to the encryption key length (52a, 52b).
복호화는 암호화 과정과는 반대로 역 ShiftRow, 역 SubByte, 역 MixColumn 및AddRoundKey 과정으로 이루어지며 암호화의 역순으로 연산된다. 암호화 과정에서 본 실시예에서는 4개의 프로세서가 병렬로 연산하는 과정을 도시하였으나, 두 개의 프로세서로도 연산이 가능하며 복호화의 경우 반대의 순서로 연산하면 마찬가지로 다중 연산이 가능하다.In contrast to the encryption process, the decryption consists of the reverse ShiftRow, reverse SubByte, reverse MixColumn, and AddRoundKey processes. In the encryption process, this embodiment illustrates a process in which four processors operate in parallel. However, the two processors may operate in parallel, and in the case of decryption, multiple operations may be performed in the reverse order.
다음 표는 AES-128에 대해 각각 단일 프로세서와 다중 프로세서를 사용한 키 확장 성능을 나타낸 것이다.The following table shows key expansion performance using single and multiple processors, respectively, for the AES-128.
Number of processors
Data exchange between processors
T-Lookup
transposition
다음 표는 AES-128에 대해 각각 단일 프로세서와 다중 프로세서를 사용한 암호화 성능을 나타낸 것이다.The following table shows encryption performance using single and multiple processors, respectively, for AES-128.
T-룩업
T-Lookup
전치
transposition
표에 따르면, 다중 프로세서를 사용하는 경우 단일 프로세서를 사용하는 것보다 연산속도가 향상됨을 알 수 있다.According to the table, it can be seen that when using multiple processors, the computational speed is faster than using a single processor.
이상과 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서, 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.As described above, an optimal embodiment has been disclosed in the drawings and the specification. Herein, specific terms have been used, but they are used only for the purpose of describing the present invention and are not used to limit the scope of the present invention as defined in the meaning or claims. Therefore, those skilled in the art will understand that various modifications and equivalent other embodiments are possible. Therefore, the true technical protection scope of the present invention will be defined by the technical spirit of the appended claims.
Claims (8)
스테이트에 대해 각 프로세서에서 처리될 원소들을 선택하여 상기 스테이트를 분할하는 단계;
분할된 스테이트에 대해 각 프로세서가 AES 암호화에 필요한 변환들을 수행하는 단계;
변환들이 완료된 결과에 라운드 키를 가산하는 단계;
가산이 완료된 결과로부터 각 프로세서별로 순차적으로 하나의 열벡터를 선택하는 단계; 및
각 프로세서가 다른 프로세서들로부터 다음 라운드의 AES 암호화에 필요한 스테이트 원소들을 전달받아 상기 분할하는 단계부터 반복수행하는 단계;를 포함하고,
상기 스테이트를 분할하는 단계는, 제1프로세서가 상기 스테이트의 대각선에 해당하는 원소들을 선택하고, 나머지 프로세서들은 상기 대각선으로부터 순차적으로 1바이트씩 우측 쉬프트된 원소들을 선택하는 것을 특징으로 하는 다중 프로세서를 이용한 AES 암호화 방법.In a method for AES encryption using multiple processors,
Dividing the state by selecting elements to be processed in each processor for a state;
Performing, by each processor, transformations necessary for AES encryption on the partitioned state;
Adding a round key to the result of the transformations being completed;
Selecting one column vector sequentially for each processor from the result of the addition; And
Each processor receiving the state elements necessary for the next round of AES encryption from other processors and repeating the dividing step;
The dividing of the state may include a process in which the first processor selects elements corresponding to the diagonal of the state, and the remaining processors select elements shifted right by one byte sequentially from the diagonal. AES encryption method.
입력 키 데이터로부터 상기 스테이트와 동일한 크기의 키 데이터 블록을 만들고, 상기 반복수행의 매 라운드마다 상기 키 데이터 블록의 원소들이 갱신되어 생성됨을 특징으로 하는 다중 프로세서를 이용한 AES 암호화 방법.The method of claim 1, wherein the round key
And a key data block having the same size as the state from the input key data, and the elements of the key data block are updated and generated every round of the repetition.
제2다중 프로세서에 의해 갱신되고,
상기 제2다중 프로세서 중 제1프로세서는 상기 키 데이터 블록의 열벡터에 대응하는 크기의 제1값을 제2프로세서로부터 전달된 제2값을 이용하여 매 라운드마다 갱신한 다음 상기 제2프로세서에 전달하고,
상기 제2다중 프로세서 중 제2프로세서는 전달받은 제1값을 이용하여 상기 키 데이터 블록의 원소들을 매 라운드마다 갱신하는 것을 특징으로 하는 다중 프로세서를 이용한 AES 암호화 방법.The method of claim 3, wherein the round key
Updated by a second multiprocessor,
A first processor of the second multiprocessor updates a first value of a size corresponding to a column vector of the key data block every round using a second value transferred from a second processor, and then transfers the first value to the second processor. and,
The second processor of the second multiprocessor AES encryption method using a multi-processor, characterized in that for updating the elements of the key data block every round using the first value received.
스테이트의 행벡터들을 상기 다중 프로세서 수만큼 각각 분할하는 단계;
분할된 행벡터들에 대해 각각 AES 암호화에 필요한 변환들을 수행하는 단계;
각 프로세서가 자신이 처리하는 행벡터와 다른 프로세서들로부터 전달된 행벡터들을 연산하여 자신이 처리하는 행벡터를 1차 갱신하는 단계; 및
1차 갱신된 행벡터에 라운드 키를 가산하고 상기 분할하는 단계부터 반복수행하는 단계;를 포함하고,
상기 라운드 키는, 입력 키 데이터로부터 상기 스테이트와 동일한 크기의 키 데이터 블록을 만들고, 상기 반복수행의 매 라운드마다 상기 키 데이터 블록의 원소들이 갱신되어 생성됨을 특징으로 하는 다중 프로세서를 이용한 AES 암호화 방법.In a method for AES encryption using multiple processors,
Dividing the row vectors of the state by the number of the multiple processors, respectively;
Performing transformations for AES encryption on the divided row vectors, respectively;
Each processor calculating a row vector processed by the processor and row vectors transferred from other processors, and updating the row vector processed by the processor first; And
And adding the round key to the first updated row vector and repeating the partitioning operation.
The round key is a key data block having the same size as that of the state from the input key data, AES encryption method using a multi-processor characterized in that the elements of the key data block is generated by updating every round of the iteration.
제2다중 프로세서에 의해 갱신되고,
상기 제2다중 프로세서는 상기 키 데이터 블록의 제1원소들, 상기 데이터 블록의 행벡터들 및 상기 제2다중 프로세서가 서로 전달하는 제2원소들을 이용하여 매 라운드마다 상기 행벡터들을 갱신하는 것을 특징으로 하는 다중 프로세서를 이용한 AES 암호화 방법.The device of claim 5, wherein the round key is
Updated by a second multiprocessor,
The second multiprocessor updates the row vectors every round using first elements of the key data block, row vectors of the data block, and second elements transmitted by the second multiprocessor. AES encryption method using multiple processors.
상기 제2다중 프로세서 중 제1프로세서는 상기 키 데이터 블록의 제1원소들 중 제3원소에 대해 데이터 변환과 제1연산을 수행하고, 제4원소에 대해 상기 데이터 변환과 제2연산을 수행하며, 상기 키 데이터 블록의 제1행벡터들에 대해 제3연산을 수행하고, 상기 제1연산 결과 또는 제2연산 결과를 상기 제3연산 결과와 가산하여 상기 제1행벡터들을 갱신하며, 상기 제2다중 프로세서 중 다른 프로세서에 상기 제2원소들중 하나를 전달하는 것을 특징으로 하는 다중 프로세서를 이용한 AES 암호화 방법.The method of claim 7, wherein
A first processor of the second multiprocessor performs data conversion and a first operation on a third element of the first elements of the key data block, and performs a data conversion and a second operation on a fourth element. Perform a third operation on the first row vectors of the key data block, add the first operation result or the second operation result to the third operation result, and update the first row vectors; AES encryption method using a multi-processor, characterized in that for transferring one of the second elements to another processor of the processor.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100045482A KR101008574B1 (en) | 2010-05-14 | 2010-05-14 | Aes encryption method using multi-processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100045482A KR101008574B1 (en) | 2010-05-14 | 2010-05-14 | Aes encryption method using multi-processor |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101008574B1 true KR101008574B1 (en) | 2011-01-17 |
Family
ID=43616367
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100045482A KR101008574B1 (en) | 2010-05-14 | 2010-05-14 | Aes encryption method using multi-processor |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101008574B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190050105A (en) | 2017-11-02 | 2019-05-10 | 한국전자통신연구원 | Block cipher operation system, apparatus and method in non-uniform memory access environment |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030081348A (en) * | 2000-12-13 | 2003-10-17 | 인피네온 테크놀로지스 아게 | Cryptographic processor |
JP2009296195A (en) * | 2008-06-04 | 2009-12-17 | Mitsubishi Electric Corp | Encryption device using fpga with multiple cpu cores |
-
2010
- 2010-05-14 KR KR1020100045482A patent/KR101008574B1/en active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030081348A (en) * | 2000-12-13 | 2003-10-17 | 인피네온 테크놀로지스 아게 | Cryptographic processor |
JP2009296195A (en) * | 2008-06-04 | 2009-12-17 | Mitsubishi Electric Corp | Encryption device using fpga with multiple cpu cores |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190050105A (en) | 2017-11-02 | 2019-05-10 | 한국전자통신연구원 | Block cipher operation system, apparatus and method in non-uniform memory access environment |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DK1686722T3 (en) | Block encryption device and block encryption method comprising rotation key programming | |
US9143325B2 (en) | Masking with shared random bits | |
JP5822970B2 (en) | Encryption device for pseudo-random generation, data encryption, and message encryption hashing | |
US7295671B2 (en) | Advanced encryption standard (AES) hardware cryptographic engine | |
EP2058781B1 (en) | Encryption device, encryption method, and computer program | |
CN110166223A (en) | A kind of Fast Software implementation method of the close SM4 of state | |
KR100800468B1 (en) | Hardware cryptographic engine and method improving power consumption and operation speed | |
CN113987559B (en) | Method and device for jointly processing data by two parties for protecting data privacy | |
Saravanan et al. | Novel reversible design of advanced encryption standard cryptographic algorithm for wireless sensor networks | |
CN110784307A (en) | Lightweight cryptographic algorithm SCENERY implementation method, device and storage medium | |
CN111064562A (en) | Implementation method of AES algorithm on FPGA | |
CN108933652B (en) | Ordinary round of transform arithmetic element, ordinary round of transform circuit and AES decryption circuit | |
US9112698B1 (en) | Cryptographic device and method for data encryption with per-round combined operations | |
KR101008574B1 (en) | Aes encryption method using multi-processor | |
Tamilselvi et al. | A novel based mix-column architecture for AES-128 bit algorithm | |
JP2023009013A (en) | Method for determining cryptographic key, computer program, and data processing system | |
US10341089B2 (en) | High-speed AES with transformed keys | |
Gopi et al. | Design and analysis of nonlinear AES S-box and mix-column transformation with the pipelined architecture | |
Wali et al. | Modified MASK algorithm for image encryption | |
RU2738321C1 (en) | Cryptographic transformation method and device for its implementation | |
CN108964875B (en) | Ordinary round conversion arithmetic unit, ordinary round conversion circuit and AES decryption circuit | |
KR20060014420A (en) | Method and apparatus for a low memory hardware implementation of the key expansion function | |
JP2013205437A (en) | Method and apparatus for calculating nonlinear function s-box | |
US11750369B2 (en) | Circuit module of single round advanced encryption standard | |
JP2006235440A (en) | Semiconductor integrated circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20131231 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20141230 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20151230 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20161228 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20171227 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20190110 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20200103 Year of fee payment: 10 |