KR20090037366A - Aes encryption/decryption circuit - Google Patents
Aes encryption/decryption circuit Download PDFInfo
- Publication number
- KR20090037366A KR20090037366A KR1020080099876A KR20080099876A KR20090037366A KR 20090037366 A KR20090037366 A KR 20090037366A KR 1020080099876 A KR1020080099876 A KR 1020080099876A KR 20080099876 A KR20080099876 A KR 20080099876A KR 20090037366 A KR20090037366 A KR 20090037366A
- Authority
- KR
- South Korea
- Prior art keywords
- conversion
- transformation
- addroundkey
- encryption
- decryption
- 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
- 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
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- 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/12—Details relating to cryptographic hardware or logic circuitry
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
Description
본 발명은 FIPS(연방정보처리규격)으로서 규정되어 있는 AES(Advanced Encryption Standard) 처리를 실행하기 위한 AES 암호화/복호화 회로에 관한 것이다.The present invention relates to an AES encryption / decryption circuit for executing AES (Advanced Encryption Standard) processing defined as FIPS (Federal Information Processing Standard).
최근의 광 파이버 망의 발전으로, 누구나 인터넷상에서 고속 통신을 용이하게 이용할 수 있다. 이는 또한 고화질의 비디오 배포 등의 대용량 데이터 통신을 용이하게 한다. 그러나, 네트워크에는 도청, 변조, 및 위장(spoofing)을 포함하는 위협이 존재한다. 이러한 위협으로부터 네트워크 통신을 보호하기 위해, 암호화에 대한 요구가 높아지고 있다.With the recent development of optical fiber networks, anyone can easily use high speed communication on the Internet. It also facilitates large data communications such as high quality video distribution. However, there are threats in the network, including eavesdropping, tampering, and spoofing. To protect network communications from these threats, the demand for encryption is increasing.
안전한 통신을 위해서는 암호화가 필수이지만, 전달 속도의 저하는 바람직하지 않다. 대용량의 데이터가 처리되는 비디오 배포 분야에서 이러한 경향이 특히 현저하다. 대용량의 데이터를 안전하게 고속으로 통신하기 위해서는 고속의 암호화가 필요하다.Encryption is essential for secure communication, but lowering the transfer rate is undesirable. This trend is particularly noticeable in video distribution where large amounts of data are processed. High speed encryption is required to communicate large amounts of data safely and at high speed.
대용량의 암호화 통신에서는, 일반적으로, 대칭 블록 암호(symmetric block cipher)가 이용된다.In a large amount of encrypted communication, a symmetric block cipher is generally used.
가장 널리 사용되는 대칭 블록 암호가 FIPS(Federal Information Processing Standards) 197에서 규정되는 AES이다.The most widely used symmetric block cipher is AES, as defined by Federal Information Processing Standards (FIPS) 197.
고속의 암호화 통신에 대응하기 위해서는, AES는 전용의 하드웨어 액셀레이터를 이용하여 고속화할 필요가 있다.In order to cope with high-speed encrypted communication, AES needs to be speeded up using a dedicated hardware accelerator.
도 60a 및 도 60b는 AES의 암호화 및 복호화 알고리즘을 나타낸다. 도 60a 및 도 60b에 있어서의 AddRoundKey, SubBytes, ShiftRows, MixColumns, InvSubBytes, InvShiftRows, 및 InvMixColumns는 FIPS 197에서 서브블록 변환으로서 규정되어 있는 동일 명칭의 처리이다. 또한, NR은 키 길이에 따라서 결정되는 라운드의 수이며, AES-128에서는 10, AES-192에서는 12, AES-256에서는 14이다.60A and 60B show encryption and decryption algorithms of AES. AddRoundKey, SubBytes, ShiftRows, MixColumns, InvSubBytes, InvShiftRows, and InvMixColumns in Figs. 60A and 60B are processes of the same name defined as subblock conversion in FIPS 197. In addition, NR is the number of rounds determined according to the key length, which is 10 in AES-128, 12 in AES-192, and 14 in AES-256.
도 60a 및 도 60b에 도시된 바와 같이, AES의 알고리즘은 AddRoundKey 변환 후에 규격에서 정의된 라운드(round) 기능을 NR회 반복한다. 라운드 기능은, 암호화에 대하여는 SubBytes, ShiftRows, MixColumns, 및 AddRoundKey의 4개의 처리를, 복화화에 대하여는 InvShiftRows, InvSubBytes, AddRoundKey, 및 InvMixColumns의 4개의 처리를 포함한다. 예외적으로, NR번째의 라운드 기능은, 암호화에 대하여 SubBytes, ShiftRows, 및 AddRoundKey의 3개의 처리, 복호화에 대하여 InvShiftRows, InvSubBytes, 및 AddRoundKey의 3개의 처리를 포함한다. AddRoundKey 변환은 암호키(cipher key)로부터 생성되며 값이 매 라운드마다 변하는 라운드 키 wkeyi를 필요로 한다(FIPS197에 기재된 라운드 키, 여기서, i는 라운드 수). 그러나, wkey0는 암호키와 동일하다.As shown in Figs. 60A and 60B, the algorithm of AES repeats the round function defined in the specification NR times after the AddRoundKey conversion. The round function includes four processes of SubBytes, ShiftRows, MixColumns, and AddRoundKey for encryption, and four processes of InvShiftRows, InvSubBytes, AddRoundKey, and InvMixColumns for decryption. Exceptionally, the NRth round function includes three processes of SubBytes, ShiftRows, and AddRoundKey for encryption, and three processes of InvShiftRows, InvSubBytes, and AddRoundKey for decryption. The AddRoundKey conversion requires a round key wkeyi, which is generated from a cipher key and whose value changes every round (round key described in FIPS197, where i is the number of rounds). However, wkey0 is the same as the encryption key.
AES 알고리즘을 하드웨어로서 구현하려면, AES 회로에 공급되는 1 클록 사이 클 기간 내에서 실행될 수 있는 것으로 AES 신호 처리 전부가 분할되어야 한다. 예를 들어, 일반적인 구현 방법에서는, 1개의 클록 사이클 내에서 1개의 라운드 기능이 실행되거나, 1개의 클록 사이클 내에서 2개의 라운드 기능이 실행되거나, 2개의 클록 사이클 내에서 1개의 라운드 기능이 실행된다.In order to implement the AES algorithm as hardware, all of the AES signal processing must be divided into those that can be executed within one clock cycle period supplied to the AES circuit. For example, in a typical implementation, one round function is executed in one clock cycle, two round functions are executed in one clock cycle, or one round function is executed in two clock cycles. .
종래 방법에 있어서, 1개의 클록 사이클 내에서 1개의 라운드 기능이 실행되는 경우, AES-128의 암호화 및 복호화는 11개의 클록 사이클을 필요로 하며, 1개의 클록 사이클 내에서 2개의 라운드 기능이 실행되는 경우는, 6개의 클록 사이클을 필요로 하며, 2개의 클록 사이클 내에서 1개의 라운드 기능이 실행되는 경우는, 22개의 클록 사이클을 필요로 한다.In the conventional method, when one round function is executed in one clock cycle, encryption and decryption of the AES-128 requires 11 clock cycles, and two round functions are executed in one clock cycle. The case requires six clock cycles, and when one round function is executed within two clock cycles, 22 clock cycles are required.
하드웨어에 의해 구현되는 AES는 소정 레벨의 고속 처리를 성취할 수는 있다. 그러나, AES 처리 속도는 더 고속화가 요구된다.AES implemented by hardware may achieve some level of high speed processing. However, the AES processing speed needs to be further increased.
본 발명은 상기 사항을 감안하여 이루어진 것으로서, 암호화 및 복호화에 필요한 사이클 수를 감소시킴으로써 보다 고속으로 AES 처리를 실행하는 암호화/복호화 회로를 제공한다.SUMMARY OF THE INVENTION The present invention has been made in view of the above, and provides an encryption / decryption circuit that executes AES processing at higher speed by reducing the number of cycles required for encryption and decryption.
본 발명은 제1 양태에 있어서, 제1 AddRoundKey 변환 모듈; 제2 AddRoundKey 변환 모듈; ShiftRows 변환 모듈; SubBytes 변환 모듈; MixColumns 변환 모듈; 및 데이터 유지부를 포함하며, 암호화의 사이클에 있어서, 제1 AddRoundKey 변환 모듈 및 제2 AddRoundKey 변환 모듈을 상이한 라운드 키들 사용하여 실행하는 AES 암호화/복호화 회로를 제공한다.In accordance with a first aspect of the present invention, there is provided an apparatus comprising: a first AddRoundKey conversion module; A second AddRoundKey conversion module; ShiftRows conversion module; SubBytes conversion module; MixColumns conversion module; And a data holding unit, wherein the AES encryption / decryption circuit executes the first AddRoundKey conversion module and the second AddRoundKey conversion module using different round keys in a cycle of encryption.
본 발명은 제2 양태에 있어서, 제1 AddRoundKey 변환 모듈; 제2 AddRoundKey 변환 모듈; InvShiftRows 변환 모듈; InvSubBytes 변환 모듈; InvMixColumns 변환 모듈; 및 데이터 유지부를 포함하며, 복호화의 사이클에 있어서, 제1 AddRoundKey 변환 모듈 및 제2 AddRoundKey 변환 모듈을 상이한 라운드 키들을 사용하여 실행하는 AES 암호화/복호화 회로를 제공한다.In accordance with a second aspect of the present invention, there is provided an apparatus, comprising: a first AddRoundKey conversion module; A second AddRoundKey conversion module; InvShiftRows transformation module; InvSubBytes Conversion Module; InvMixColumns transformation module; And a data holding unit, wherein the AES encryption / decryption circuit executes the first AddRoundKey conversion module and the second AddRoundKey conversion module using different round keys in a cycle of decryption.
본 발명은 제3 양태에 있어서, 제1 AddRoundKey 변환 모듈; 제2 AddRoundKey 변환 모듈; 제3 AddRoundKey 변환 모듈; 제1 ShiftRows 변환 모듈; 제2 ShiftRows 변환 모듈; 제1 SubBytes 변환 모듈; 제2 SubBytes 변환 모듈; 제1 MixColumns 변환 모듈; 제2 MixColumns 변환 모듈; 및 데이터 유지부를 포함하며, 암호화의 사이클에 있어서, 제1 AddRoundKey 변환 모듈, 제2 AddRoundKey 변환 모듈, 및 제3 AddRoundKey 변환 모듈을 상이한 라운드 키를 사용하여 실행하는 AES 암호화/복호화 회로를 제공한다.In accordance with a third aspect of the present invention, there is provided an apparatus comprising: a first AddRoundKey conversion module; A second AddRoundKey conversion module; A third AddRoundKey conversion module; A first ShiftRows conversion module; A second ShiftRows conversion module; A first SubBytes transform module; A second SubBytes transform module; A first MixColumns conversion module; A second MixColumns conversion module; And a data holding unit, wherein the AES encryption / decryption circuit executes the first AddRoundKey conversion module, the second AddRoundKey conversion module, and the third AddRoundKey conversion module using different round keys in a cycle of encryption.
본 발명은 제4 양태에 있어서, 제1 AddRoundKey 변환 모듈; 제2 AddRoundKey 변환 모듈; 제3 AddRoundKey 변환 모듈; 제1 InvShiftRows 변환 모듈; 제2 InvShiftRows 변환 모듈; 제1 InvSubBytes 변환 모듈; 제2 InvSubBytes 변환 모듈; 제1 InvMixColumns 변환 모듈; 제2 InvMixColumns 변환 모듈; 및 데이터 유지부를 포함하며, 복호화의 사이클에 있어서, 제1 AddRoundKey 변환 모듈, 제2 AddRoundKey 변환 모듈, 및 제3 AddRoundKey 변환 모듈을 상이한 라운드 키들을 사 용하여 실행하는 AES 암호화/복호화 회로를 제공한다.In accordance with a fourth aspect of the present invention, there is provided an apparatus comprising: a first AddRoundKey conversion module; A second AddRoundKey conversion module; A third AddRoundKey conversion module; A first InvShiftRows transformation module; A second InvShiftRows transform module; A first InvSubBytes conversion module; A second InvSubBytes conversion module; A first InvMixColumns transformation module; A second InvMixColumns conversion module; And a data holding unit, wherein the AES encryption / decryption circuit executes the first AddRoundKey conversion module, the second AddRoundKey conversion module, and the third AddRoundKey conversion module using different round keys in a cycle of decryption.
본 발명에 있어서는, 각 클록 사이클 기간에서 각 서브블록 변환에 대한 신호 처리 시간의 합산 간의 차이가 최소가 되도록 일부 클록 사이클에서의 신호 처리가 증가된다. 이로써 하드웨어에 의한 AES 암호화 또는 복호화에 필요한 사이클 수를 이전보다 감소시킬 수 있다.In the present invention, the signal processing in some clock cycles is increased so that the difference between the sum of the signal processing times for each subblock conversion in each clock cycle period is minimized. This can reduce the number of cycles required for AES encryption or decryption by hardware than before.
본 발명을 구현하는 경우, 각 클록 사이클 기간에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 종래 기술의 것과 동일하다. 따라서, 사이클 수의 감소는 처리 속도의 향상을 의미한다.In the implementation of the present invention, the maximum of the sum of the signal processing times for each subblock conversion in each clock cycle period is the same as that of the prior art. Thus, a reduction in the number of cycles means an improvement in processing speed.
본 발명은 (등가 역암호(Equivalent Inverse Cipher)를 포함한) 암호화와 복호화 양측에 대하여 적용가능하다. 본 발명은 1 Round/Cycle, 2 Cycle/Cycle, 또는 0.5 Round/Cycle 등의 임의의 구현 방법에 대하여 적용가능하다. 본 발명은 ECB 모드 또는 CBC 모드 등의 임의의 암호화 모드에 대하여 적용가능하다. 본 발명은 임의의 키 길이에 대하여 적용가능하다.The present invention is applicable to both encryption and decryption (including Equivalent Inverse Cipher). The present invention is applicable to any implementation method such as 1 Round / Cycle, 2 Cycle / Cycle, or 0.5 Round / Cycle. The present invention is applicable to any encryption mode, such as ECB mode or CBC mode. The present invention is applicable for any key length.
본 발명의 효과로서, 1 Round/Cycle의 구현 방법에 있어서는, AES-128에 있어서 11개의 사이클이 10개의 사이클로 감소되며, AES-192에 있어서 13개의 사이클이 12개의 사이클로 감소되며, AES-256에 있어서 15개의 사이클이 14개의 사이클로 감소된다.As an effect of the present invention, in the implementation method of 1 Round / Cycle, 11 cycles are reduced to 10 cycles in AES-128, 13 cycles are reduced to 12 cycles in AES-192, and 15 cycles are reduced to 14 cycles.
2 Round/Cycle의 구현 방법에 있어서는, AES-128에 있어서 6개의 사이클이 5개의 사이클로 감소되며, AES-192에 있어서 7개의 사이클이 6개의 사이클로 감소되 며, AES-256에 있어서 8개의 사이클이 7개의 사이클로 감소된다.In the implementation of 2 Round / Cycle, six cycles in AES-128 are reduced to five cycles, seven cycles in AES-192 are reduced to six cycles, and eight cycles in AES-256. Reduced to seven cycles.
본 발명의 또 다른 특징들은 첨부 도면을 참조하여 예시적인 실시예에 대한 이하의 설명으로부터 더욱 명확하게 될 것이다. Further features of the present invention will become more apparent from the following description of exemplary embodiments with reference to the accompanying drawings.
이하, 첨부 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다. 본 실시예에 있어서, FIPS197에 정의된 AES-128(이하, AES로 약칭함)을 예로 들어 설명한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. In this embodiment, AES-128 (hereinafter abbreviated to AES) defined in FIPS197 will be described as an example.
<제1 실시예><First Embodiment>
도 1은 종래 기술과 제1 실시예에 있어서의 클록 사이클 내에서 실행되는 암호화의 처리 내용들 사이의 비교를 나타낸다.Fig. 1 shows a comparison between the processing contents of encryption executed in clock cycles in the prior art and the first embodiment.
도 1을 참조하면, 사이클 카운트는 AES 처리의 스타트에서 "0"인 클록 사이클 카운트를 나타낸다. 라운드 키 wkeyi(i는 라운드 수)는 FIPS197에 기재된 라운드 키(Round Key)이다.Referring to Fig. 1, the cycle count represents a clock cycle count that is "0" at the start of the AES process. The round key wkeyi (i is the round number) is a round key described in FIPS197.
본 실시예에 있어서, 0번째 내지 8번째 사이클에서는 AddRoundKey 변환, ShiftRows 변환, SubBytes 변환, 및 MixColumns 변환이 실행된다. 9번째 사이클에서는 제1 AddRoundKey 변환, ShiftRows 변환, SubBytes 변환, 및 제2 AddRoundKey 변환이 실행된다. 라운드 키로서는, 0번째 사이클에서 wkeyO가, l번째 사이클에서는 wkeyl가, ..., 8번째 사이클에서는 wkey8가 사용된다. 9번째 사이클에서는 2개의 라운드 키 wkey9 및 wkeylO가 사용된다.In the present embodiment, AddRoundKey conversion, ShiftRows conversion, SubBytes conversion, and MixColumns conversion are executed in the 0th to 8th cycles. In the ninth cycle, the first AddRoundKey transformation, the ShiftRows transformation, the SubBytes transformation, and the second AddRoundKey transformation are executed. As the round key, wkeyO is used in the 0th cycle, wkeyl is used in the lth cycle, ..., and wkey8 is used in the 8th cycle. In the ninth cycle, two round keys wkey9 and wkeylO are used.
본 실시예에서는, 종래 기술과 동일한 처리가 전체적으로 실행된다. 그러 나, 본 실시예에서는, AES 암호화를 l개 적은 클록 사이클로 실행할 수 있다. In this embodiment, the same processing as in the prior art is executed as a whole. However, in this embodiment, AES encryption can be executed in clock cycles fewer by one.
다음, 본 실시예에 따른 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 암호화 처리 시간의 합산에 대하여 설명한다. 도 2는 종래 기술과 제1 실시예의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 암호화 처리 시간의 합산 사이의 비교를 나타낸 도면이다. 세로축은 시간을 나타낸다. 바가 길수록, 처리 시간이 길다. 본 실시예를 구현하기 위하여, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 1 클록 사이클 시간보다 작아야 한다. 도 2에 도시된 바와 같이, 각 서브블록 변환의 처리 시간은 SubBytes 변환이 가장 길고, MixColumns 변환, AddRoundKey 변환, ShiftRows 변환의 순서로 짧다.Next, the sum of the encryption processing times for each subblock conversion in each clock cycle period according to the present embodiment will be described. Fig. 2 is a diagram showing a comparison between the sum of the encryption processing time for each subblock transformation within each clock cycle period of the prior art and the first embodiment. The vertical axis represents time. The longer the bar, the longer the processing time. In order to implement this embodiment, the maximum of the sum of the signal processing times for each subblock conversion within each clock cycle period must be less than one clock cycle time. As shown in FIG. 2, the processing time of each subblock transform is the longest in the SubBytes transform, and is short in the order of the MixColumns transform, the AddRoundKey transform, and the ShiftRows transform.
본 실시예에 있어서, AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, MixColumns 변환이 실행되는 0번째에서 8번째 사이클 각각에서 각 서브블록 변환에 대한 신호 처리 시간의 합산이, AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, AddRoundKey 변환이 실행되는 9번째 사이클에서 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 더 길다. 따라서, 본 실시예에서 1 사이클 기간 내에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 종래 기술과 동일하다. 종래 기술에서 1 사이클 기간 내에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 1 사이클 시간보다 짧다면, 본 실시예 또한 구현될 수 있다.In the present embodiment, the sum of the signal processing times for each subblock transform in each of the 0th to 8th cycles in which AddRoundKey transform, SubBytes transform, ShiftRows transform, and MixColumns transform is performed is performed by AddRoundKey, SubBytes transform, ShiftRows transform It is longer than the sum of the signal processing time for each subblock transform in the ninth cycle in which the AddRoundKey transform is executed. Therefore, in the present embodiment, the maximum value of the sum of the signal processing times for each subblock transform executed within one cycle period is the same as in the prior art. In the prior art, the present embodiment can also be implemented if the maximum value of the sum of the signal processing times for each subblock transformation executed within one cycle period is shorter than one cycle time.
본 발명은 AES 복호화에 대하여도 적용가능하다.The present invention is also applicable to AES decryption.
도 3은 본 실시예의 클록 사이클들에서 실행되는 복호화의 처리 내용과 종래 기술의 것과의 비교를 나타낸다.Fig. 3 shows a comparison between the processing contents of the decoding executed in the clock cycles of this embodiment and those of the prior art.
도 3을 참조하면, 사이클 카운트는 AES의 처리의 스타트에서 "0"인 클록 사이클 카운트를 나타낸다.Referring to Fig. 3, the cycle count indicates a clock cycle count that is "0" at the start of the processing of the AES.
본 실시예에서, 0번째 사이클에서 제1 AddRoundKey 변환, InvShiftRows 변환, InvSubBytes 변환, 및 제2 AddRoundKey 변환이 실행된다. 1번째 내지 9번째 사이클에서 InvMixColumns 변환, lnvShiftRows 변환, InvSubBytes 변환, 및 AddRoundKey 변환이 실행된다. 라운드 키로서, 0번째 사이클에서 2개의 라운드 키 wkey9 및 wkeylO, l번째 사이클에서는 wkey8, 2번째 사이클에서는 wkoy7, ..., 9번째 사이클에서는 wkeyO가 사용된다.In the present embodiment, the first AddRoundKey transformation, InvShiftRows transformation, InvSubBytes transformation, and second AddRoundKey transformation are executed in the 0th cycle. InvMixColumns transformation, lnvShiftRows transformation, InvSubBytes transformation, and AddRoundKey transformation are executed in the first to ninth cycles. As the round key, two round keys wkey9 and wkeylO in the 0th cycle, wkey8 in the 1st cycle, wkoy7 in the 2nd cycle, wkeyO in the 9th cycle are used.
본 실시예에서, 종래 기술과 동일한 처리가 전체적으로 실행된다. 그러나, 본 실시예에서는, AES 복호화를 1개 적은 클록 사이클로 실행할 수 있다.In this embodiment, the same processing as in the prior art is executed as a whole. However, in this embodiment, AES decryption can be executed in clock cycles fewer by one.
다음, 본 실시예에 따라서 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 복호화 처리 시간의 합산에 대하여 설명한다. 도 4는 제1 실시예에서의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 복호화 처리 시간의 합산과 종래 기술의 비교를 나타낸 도면이다. 세로축은 시간을 나타낸다. 바가 길수록, 처리 시간이 더 길다. 본 실시예를 구현하기 위하여, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 1 사이클 시간보다 작아야 한다. 도 4에 도시된 바와 같이, 각 서브블록 변환의 처리 시간은 InvSubBytes 변환이 가장 길고, InvMixColumns 변환, AddRoundKey 변환, InvShiftRows 변환의 순서로 짧다.Next, the sum of the decoding processing time for each subblock conversion in each clock cycle period will be described according to the present embodiment. FIG. 4 is a diagram showing the sum of decoding processing time for each subblock transform and comparison of the prior art in each clock cycle period in the first embodiment. The vertical axis represents time. The longer the bar, the longer the processing time. In order to implement this embodiment, the maximum of the sum of the signal processing times for each subblock conversion within each clock cycle period must be less than one cycle time. As shown in FIG. 4, the processing time of each subblock transform is the longest in InvSubBytes transform, and is short in the order of InvMixColumns transform, AddRoundKey transform, and InvShiftRows transform.
본 실시예에서, AddRoundKey 변환, InvSubBytes 변환, InvShiftRows 변환, 및 InvMixColumns 변환이 실행되는 1번째 내지 9번째 사이클 각각에서 각 서브블록 변환에 대한 신호 처리 시간의 합산은, AddRoundKey 변환, InvSubBytes 변환, InvShiftRows 변환, 및 AddRoundKey 변환이 실행되는 0번째 사이클에서 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 길다. 본 실시예에서 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대값은 종래 기술과 동일하다. 따라서, 본 실시예가 또한 구현될 수 있다. In the present embodiment, the sum of the signal processing times for each subblock transform in each of the first to ninth cycles in which the AddRoundKey transform, InvSubBytes transform, InvShiftRows transform, and InvMixColumns transform are performed is performed by AddRoundKey transform, InvSubBytes transform, InvShiftRows transform, And longer than the sum of the signal processing time for each subblock transform in the 0th cycle in which the AddRoundKey transform is performed. In this embodiment, the maximum value of the sum of the signal processing times for each subblock conversion within each clock cycle period is the same as in the prior art. Thus, the present embodiment can also be implemented.
본 발명의 전술한 특징들에 대하여 정리한다.The above-mentioned features of the present invention are summarized.
종래의 일반적인 구현 방법에서, 규격에서 정의되는 라운드 기능은 처리에 있어서의 단절로서 간주되며, 암호화 및 복호화가 클록 사이클들에 분산된다. 따라서, 10번째와 0번째 사이클에서 각 서브블록 변환에 대한 신호 처리 시간의 합산은 1번째 내지 9번째 사이클 각각에서의 것보다 짧다. 즉, 각 사이클에서 각 서브블록 변환에 대한 신호 처리 시간의 합산은 변동한다.In the conventional general implementation method, the round function defined in the standard is regarded as a break in processing, and encryption and decryption are distributed among clock cycles. Thus, the sum of the signal processing times for each subblock transform in the 10th and 0th cycles is shorter than that in each of the 1st to 9th cycles. In other words, the sum of the signal processing times for each subblock transform varies in each cycle.
한편, 본 발명에서는, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산 사이의 차이가 최소가 되도록 일부 클록 사이클들에서의 신호 처리가 증가된다. 본 발명에 있어서, AES 암호화 또는 복호화에 필요한 클록 사이클 수는 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산을 증가시키지 않고 1 사이클 감소된다. 이는 AES 처리 속도를 약 10% 증가시킨다.On the other hand, in the present invention, the signal processing in some clock cycles is increased so that the difference between the sum of the signal processing times for each subblock conversion within each clock cycle period is minimized. In the present invention, the number of clock cycles required for AES encryption or decryption is reduced by one cycle without increasing the sum of signal processing times for each subblock conversion within each clock cycle period. This increases the AES processing speed by about 10%.
다음, AES 암호화 및 복호화를 구현하기 위한 AES 코어의 회로 구성에 대하여 설명한다.Next, a circuit configuration of the AES core for implementing AES encryption and decryption will be described.
도 5는 본 실시예에 따른 AES 코어의 블록도이다.5 is a block diagram of an AES core according to the present embodiment.
도 5를 참조하면, AES 코어(101)는 AES 처리를 실행한다. 키 확장부(102)는 암호키로부터 AES 암호화 및 복호화에 필요한 라운드 키를 생성하여, 이 라운드 키를 출력한다. 암호화/복호화부(103)는 키 확장부(102)로부터 공급되는 라운드 키를 이용하여 128 비트 평문 데이터의 암호화 또는 128 비트 암호문 데이터의 복호화를 실행한다. 제어부(104)는 AES 코어(101) 외부의 유닛으로부터 제어 신호를 수신하여, 키 확장부(102) 및 암호화/복호화부(103)의 동작을 제어하기 위한 신호들과 AES 코어(101) 외부의 유닛에 그 동작의 완료를 통지하기 위한 신호를 생성한다.Referring to Fig. 5, the
도 5를 참조하면, 입력 신호(105)는 암호화의 대상인 평문 데이터 또는 복호화의 대상인 암호문 데이터이다. 출력 신호(151)는 암호화/복호화부(103)에 대하여 입력 신호(150)를 암호화 또는 복호화시킴으로써 얻어지는 결과이다. 암호키(152)는 암호화 또는 복호화를 위하여 사용된다. 암호화/복호화 선택 신호(153)는 암호화 및 복호화 중 하나를 실행하도록 선택한다. 키 준비 개시 신호(155)는 키 확장부(102)에 대하여 암호키(152)로부터 라운드 키를 생성하도록 키 확장을 개시시킨다. 제어 신호(157)는 암호화/복호화 처리를 1 사이클 후에 가능하도록 한다. 암호화/복호화 개시 신호(158)는 입력 신호(150)의 암호화 또는 복호화를 개시시킨다. 유효 신호(159)는 출력 신호(151)가 암호화/복호화부(103)에 의한 암호 화 또는 복호화의 결과를 유지하고 있는 것을 나타낸다. 제어 신호(160)는 암호화/복호화부(103)에 대하여 출력 신호(151)의 값을 유지시킨다. 카운터 신호(161)는 키 준비 또는 암호화/복호화에 있어서 키 준비 개시 신호(155) 또는 암호화/복호화 개시 신호(158)의 리딩 에지(leading edge)로부터의 사이클 수를 나타낸다. 라운드 키 A(162)는 라운드 키들 중 하나이다. 라운드 키 B(163)는 키 확장부(102)에 의해 생성되는 라운드 키이며, 암호화의 최종 사이클 또는 복호화의 1번째 사이클에서 사용된다. 선택 신호(170)는 암호화/복호화부(103)에서 서브블록 변환의 접속을 절환시킨다. 선택 신호(171)는 암호화/복호화부(103)에서 타겟 프로세스 데이터를 절환시킨다.Referring to FIG. 5, the
상기 구성에 있어서, 입력 신호(150)는 암호화/복호화부(103)에 외부로부터 입력된다. 출력 신호(151)는 암호화/복호화부(103)로부터 외부에 출력된다. 암호키(152)는 키 확장부(102)에 외부로부터 입력된다. 암호화/복호화 선택 신호(153)는 키 확장부(102), 암호화/복호화부(103), 및 제어부(104)에 외부로부터 입력된다. 키 준비 개시 신호(155)는 키 확장부(102) 및 제어부(104)에 외부로부터 입력된다. 제어 신호(157)는 제어부(104)로부터 외부에 출력된다. 암호화/복호화 개시 신호(158)는 키 확장부(102) 및 제어부(104)에 외부로부터 입력된다. 유효 신호(159)는 제어부(104)로부터 외부에 출력된다. 출력 유지 제어 신호(160)는 제어부(104)로부터 암호화/복호화부(103)에 출력된다. 카운터 신호(161)는 제어부(104)로부터 키 확장부(102)에 출력된다. 라운드 키 A(162)는 키 확장부(102)로부터 암호화/복호화부(103)에 출력된다. 라운드 키 B(163)는 키 확장부(102)로부 터 암호화/복호화부(103)에 출력된다. 선택 신호(170)는 제어부(104)로부터 암호화/복호화부(103)에 출력된다. 선택 신호(171)는 제어부(104)로부터 암호화/복호화부(103)에 출력된다.In the above configuration, the
다음, 암호화/복호화부(103)를 설명한다. 도 6은 암호화/복호화부(103)의 블록도이다. 도 6을 참조하면, 변형된 라운드 기능 모듈(105)은 선택 신호(170)의 제어 하에서 라운드 키 A(162) 및 라운드 키 B(163)를 이용하여 1 사이클 분의 암호화를 실행한다. 변형된 라운드 기능 모듈(106)은 선택 신호(170)의 제어 하에서 라운드 키 A(162) 및 라운드 키 B(163)를 이용하여 복호화를 실행한다.Next, the encryption /
선택기(107)는 암호화/복호화 선택 신호(153)에 따라서 변형된 라운드 기능 모듈(105)로부터의 출력과 변형된 라운드 기능 모듈(106)로부터의 출력 중 하나를 선택한다. 데이터 유지부(108)는 출력 유지 제어 신호(160)에 따라서 선택기(107)에 의해 선택된 신호를 유지한다. 선택기(109)는 선택 신호(171)에 따라서 입력 신호(150)와 데이터 유지부(108)로부터의 출력 신호 중 하나를 선택한다.The
도 6을 참조하면, 변형된 라운드 기능 모듈(105 및 106)에 입력 신호(165)가 입력된다. 출력 신호(166)는 변형된 라운드 기능 모듈(105)에 대하여 입력 신호(165)를 처리시킴으로써 얻어지는 결과이다. 출력 신호(167)는 변형된 라운드 기능 모듈(106)에 대하여 입력 신호(165)를 처리시킴으로써 얻어지는 결과이다. 출력 신호(168)는 선택기(107)로부터 출력된다.Referring to FIG. 6, the
상기 구성에 있어서, 입력 신호(150), 데이터 유지부로부터의 출력, 및 선택 신호(171)가 선택기(109)에 입력된다. 선택기(109)의 출력, 라운드 키 A(162), 라 운드 키 B(163), 및 선택 신호(170)가 변형된 라운드 기능 모듈(105)에 입력된다. 선택기(109)의 출력, 라운드 키 A(162), 라운드 키 B(163), 및 선택 신호(170)가 변형된 라운드 기능 모듈(106)에 입력된다. 변형된 라운드 기능 모듈(105)의 출력 신호, 변형된 라운드 기능 모듈(106)의 출력 신호, 및 암호화/복호화 선택 신호(153)가 선택기(107)에 입력된다. 선택기(107)의 출력 및 출력 유지 제어 신호(160)가 데이터 유지부(108)에 입력된다. 데이터 유지부(108)는 암호화/복호화부(103)의 출력 신호(151)를 출력한다.In the above configuration, the
상기 구성에 있어서, 선택 신호(171)가 니게이트(negate)되는 때에, 선택기(109)는 입력 신호(150)를 선택하여 출력한다. 선택 신호(171)가 어서트(assert)되는 때에, 선택기(109)는 데이터 유지부(108)의 출력 신호(1651)를 선택하여 출력한다. 선택기(109)에 의해 선택되는 결과인 입력 신호(165)는 암호화 및 복호화를 수행하는 변형된 라운드 기능 모듈(105 및 106)에 각각 입력된다. 암호화/복호화 선택 신호(153)가 니게이트되는 때에, 선택기(107)는 변형된 라운드 기능 모듈(105)의 출력 결과인 출력 신호(166)를 선택하여 출력한다. 암호화/복호화 선택 신호(153)가 어서트되는 때에, 선택기(107)는 변형된 라운드 기능 모듈(106)의 출력 결과인 출력 신호(167)를 선택하여 출력한다. 선택기(107)의 출력 신호(168)는 데이터 유지부(108)에 입력되어 임시 보관된다. 데이터 유지부(108)의 출력 신호(151)는 암호화/복호화부(103)의 출력 신호이다. 출력 신호는 또한 선택기(109)의 입력에 접속된다. 선택 신호(171)가 어서트 중인 경우, 변형된 라운드 기능 모듈(105)에 의한 암호화 또는 변형된 라운드 기능 모듈(106)에 의한 복 호화가 반복 실행된다.In the above configuration, when the
암호화/복호화가 종료되고, 다음의 암호화/복호화가 아직 개시되어 있지 않은 경우, 제어부(104)는 출력 유지 제어 신호(160)를 어서트시킨다. 이 동안에, 데이터 유지부(108)는 출력 신호(168)에 의존하지 않고 출력 신호(151)의 값을 계속 유지한다.When the encryption / decryption is finished and the next encryption / decryption has not yet started, the
다음, 변형된 라운드 기능 모듈(105)에 대하여 설명한다. 도 7은 변형된 라운드 기능 모듈(105)의 블록도이다. 도 7을 참조하면, AddRoundKey 변환 모듈(110)(제1 AddRoundKey 변환 모듈에 해당함)은 입력 신호(165)와 라운드 키 A(162)를 수신하여, AddRoundKey 변환을 실행한다. SubBytes 변환 모듈(111)은 AddRoundKey 변환 모듈(110)의 출력을 수신하여, SubBytes 변환을 실행한다. ShiftRows 변환 모듈(112)은 SubBytes 변환 모듈(111)의 출력을 수신하여, ShiftRows 변환을 실행한다. MixColumns 변환 모듈(113)은 ShiftRows 변환 모듈(112)의 출력을 수신하여, MixColumns 변환을 실행한다. AddRoundKey 변환 모듈(114)(제2 AddRoundKey 변환 모듈에 해당함)은 ShiftRows 변환 모듈(112)의 출력과 라운드 키 B(163)를 수신하여, AddRoundKey 변환을 실행한다. 선택기(115)는 선택 신호(170)에 따라서 MixColumns 변환 모듈(113)의 출력과 AddRoundKey 변환 모듈(114)의 출력 중 하나를 선택하여 출력한다. 선택기(115)의 출력 신호는 변형된 라운드 기능 모듈(105)의 출력 신호이다.Next, the modified
상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 MixColumns 변환 모듈의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 AddRoundKey 변환 모듈의 출력을 선택하여 출력한다.In the above configuration, when the
다음, 도 8의 블록도를 참조하여 변형된 라운드 기능 모듈(106)에 대하여 설명한다.Next, the modified
도 8을 참조하면, InvMixColumns 변환 모듈(116)은 입력 신호(165)를 수신하여, InvMixColumns 변환을 실행한다. AddRoundKey 변환 모듈(117)은 입력 신호(165)와 라운드 키 B(163)를 수신하여, AddRoundKey 변환을 실행한다. 선택기(118)는 선택 신호(170)에 따라서 InvMixColumns 변환 모듈(116)의 출력과 AddRoundKey 변환 모듈(117)을 출력 중 하나를 선택하여 출력한다. InvShiftRows 변환 모듈(119)은 선택기(118)의 출력을 수신하여, InvShiftRows 변환을 실행한다. InvSubBytes 변환 모듈(120)은 InvShiftRow 변환 모듈(119)의 출력을 수신하여, InvSubBytes 변환을 실행한다. AddRoundKey 변환 모듈(121)은 InvSubBytes 변환 모듈(120)의 출력을 수신하여, AddRoundKey 변환을 실행한다. AddRoundKey 변환 모듈(121)의 출력은 변형된 라운드 기능 모듈(106)의 출력이다.Referring to FIG. 8, the
상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(118)는 InvMixColumns 변환 모듈(116)의 결과를 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(118)는 AddRoundKey 변환 모듈(117)의 출력을 선택하여 출력한다.In the above configuration, when the
다음, 상기 구성에 있어서의 암호화 동작에 대하여 설명한다. 도 9a 및 도 9b는 본 실시예에 따른 암호화의 타이밍 차트이다. 도 9a 및 도 9b를 참조하면, 가로축이 시간을 나타낸다. 클록 펄스의 리딩 에지에 대하여 타이밍 명칭 T01, T02, ..., T33이 할당된다. Next, the encryption operation in the above configuration will be described. 9A and 9B are timing charts of encryption according to the present embodiment. 9A and 9B, the abscissa represents time. Timing names T01, T02, ..., T33 are assigned to the leading edge of the clock pulse.
도 9a의 좌단에 세로축에 있는 3 자리수는 신호 라인을 나타내며, 도 5 내지 도 8에 사용되는 신호 라인의 참조 번호에 일대일 대응한다.The three digits on the vertical axis at the left end of Fig. 9A represent signal lines and correspond one-to-one to the reference numbers of the signal lines used in Figs.
도 9a 및 도 9b의 타이밍 차트에 도시된 암호화 동작은 4개의 부분으로 대별된다. 1번째 부분은 암호키 등의 각종 파라미터를 설정하는 파라미터 설정 기간(T01 내지 T06)이다. 2번째 부분은 wkey10를 생성하여 이를 레지스터에 유지시키는 키 준비 기간(T06 내지 T17)이다. 3번째 부분은 1번째 블록의 암호화 기간(T17 내지 T27)이다. 4번째 부분은 2번째 블록의 암호화 기간이다(T27로부터).The encryption operation shown in the timing chart of Figs. 9A and 9B is roughly divided into four parts. The first part is parameter setting periods T01 to T06 for setting various parameters such as encryption keys. The second part is a key preparation period (T06 to T17) for generating wkey10 and holding it in a register. The third portion is the encryption periods T17 to T27 of the first block. The fourth part is the encryption period of the second block (from T27).
파라미터 설정에 있어서, 암호키(152) 및 암호화/복호화 선택 신호(153)에 추가하여 필요에 따라서 키 길이 및 암호화 모드 등의 암호화/복호화에 대한 각종 파라미터들이 설정된다. 암호화/복호화 선택 신호(153) 및 암호키(152)의 값은 새로운 파라미터 설정시까지 항상 외부에 유지되어야할 필요가 있다. 파라미터 설정 기간은 리셋 직후부터의 임의의 길이를 갖는 기간이다. AES 코어(101)의 외부의 유닛으로부터 키 준비 개시 신호(155)가 어서트되는 경우(T06), 파라미터 설정 기간이 종료된다.In the parameter setting, in addition to the
파라미터 설정 기간의 종료와 동시에, 다음의 키 준비 기간이 개시된다. 키 준비 기간에서, 키 확장부(102)는 2개의 라운드 키(wkey9 및 wkey10)를 암호화/복호화의 9번째 사이클(T26)에서 암호화/복호화부(103)에 동시에 공급하기 위하여 사전에 최후 라운드 키(wkey10)를 생성한다. 키 준비 기간은 키 준비 개시 신호(155)가 어서트된 후, 최후 라운드 키(wkey10)가 생성되는 11개 사이클 후(T17) 의 타이밍까지의 기간이다.At the same time as the end of the parameter setting period, the next key preparation period is started. In the key preparation period, the
다음, 키 준비 기간 동안 각 회로의 동작에 대하여 설명한다. 키 준비 개시 신호(155)가 어서트되는 때에, 제어부(104)는 카운터 신호(161)를 0에서부터 차례로 카운트 업한다. 키 확장부(102)는 카운터 신호(161)에 따라서 각 클록 사이클에서 wkey0(암호키(152))를 확장시켜, 10개의 라운드 키(wkey1, wkey2, ..., wkeyl0)를 생성한다. 생성된 라운드 키들은 라운드 키 A(162)로서 차례로 출력된다.Next, the operation of each circuit during the key preparation period will be described. When the key
타이밍 T16에서, 카운터 신호(161)는 "10"이 된다. 키 확장부(102)는 생성된 라운드 키(wkey10)를 레지스터에 유지하여, 이를 라운드 키 B(163)로서 출력한다. 그 후, 다음 키 준비 실행때까지 wkey10가 계속 유지된다.At the timing T16, the
키 준비 기간이 종료되는 때에(T17), 키 확장부(102)는 암호화/복호화에 첫번째로 사용되는 라운드 키(암호화에서 wkeyO, 또는 복호화에서 wkey9)를 라운드 키A(162)로서 출력한다. 라운드 키 A(162)의 값은 암호화/복호화 개시 신호(158)가 어서트되기 전까지 유지된다. 제어부(104)는 카운트 신호(162)의 카운트 업을 중지하고 카운터를 0으로 클리어시킨다.At the end of the key preparation period (T17), the
키 준비 기간의 종료 부근에서, 키 준비가 T17에서 종료할 것이며, 암호화가 가능해질 것을 예측하여, 제어부(104)는 T16에서 제어 신호(157)를 어서트시킨다.Near the end of the key preparation period, key preparation will end at T17, and in anticipation of encryption being enabled,
T17에서 제어 신호(157)가 어서트되는 것을 감지하면, AES 코어(101) 외부에 배치된 입력 신호 공급부는 입력 신호(150)로서 평문 데이터(P0)를 AES 코어(101)에 공급한다. 입력 신호(150)의 암호화를 개시하기 위하여 암호화/복호화 개시 신 호(158)가 어서트된다(T17). 타이밍 차트에 있어서, 암호화/복호화 개시 신호(158)는 최단 사이클에 어서트된다. 그러나, 타이밍은 AES 코어(101) 외부에서 자유롭게 결정된다.If it is detected at T17 that the
암호화 기간에서, 입력 신호(150)가 암호화된다. 암호화 기간은 암호화/복호화 개시 신호(158)가 어서트되는 때(T17)로부터 10 사이클 이후의 타이밍(T27)까지의 기간이다.In the encryption period, the
암호화/복호화 개시 신호(158)가 어서트된 것을 감지하면, 제어부(104)는 다음 사이클(T18)에서 제어 신호(157), 출력 유지 신호(159), 및 출력 유지 제어 신호(160)를 니게이트시킨다. 동시에, 제어부(104)는 카운터 신호(161)를 카운트 업하기 시작한다.Upon detecting that the encryption /
키 확장부(102)는 카운터 신호(161)에 따라서 라운드 키 wkeyO로부터 순차적으로 키 확장을 수행한다. 키 확장부(102)는 T18에서 wkey1, T19에서 wkey2,·..., T26에서 wkey9를 라운드 키 A(162)로서 암호화/복호화부(103)에 출력한다.The
T17에서 T18까지에서, 선택 신호(171)가 니게이트된다. 그러므로, 변형된 라운드 기능 모듈(105)은 입력 신호(150)에 대해서 라운드 키 A로서 출력되는 wkey0를 이용하여 서브블록 변환을 실행한다. T18에서 T27까지에서, 선택 신호(171)가 어서트된다. 그러므로, 변형된 라운드 기능 모듈(105)은 데이터 유지부(108)의 출력에 대하여 T18에서 T19까지는 wkey1, T19에서 T20까지는 wkey2, ..., T25에서 T26까지는 wkey8를 이용하여 서브블록 변환을 실행한다.From T17 to T18, the
암호화의 최종 사이클(T26)에서, 제어부(104)는 선택 신호(170)를 어서트시 킨다. 따라서, 변형된 라운드 기능 모듈(105)의 선택기(115)는 라운드 키 B(163)를 이용하여 AddRoundKey 변환을 실행하는 AddRoundKey 변환 모듈(114)의 출력을 선택하여, 최종 사이클의 서브블록 변환을 실행한다. T26에서, 변형된 라운드 기능 모듈(105)의 출력 신호(166)는 입력 신호로서 평문 데이터(P0)의 암호화의 결과인 암호문 데이터(C0)를 출력한다. 1 사이클 이후(T27), 데이터 유지부(108)는 AES 코어(101)의 출력으로서 암호문 데이터(C0)의 값을 외부에 출력한다. 동시에, AES 코어(101) 외부의 유닛에 대하여 암호화가 종료되어, 출력 신호가(151)가 유효한 것을 통지하기 위하여, 제어부(104)는 유효 신호(159)를 어서트시킨다(T27). 유효 신호(159)가 어서트되고 있는 동안, AES 코어(101)는 출력 신호(151)가 유효한 것을 보증한다.In a final cycle T26 of encryption, the
한편, 출력 유지 제어 신호(160)는 T27에서 유효 신호(159)가 어서트되어 있지만, T27에서 암호화/복호화 개시 신호(158) 또한 어서트되어 있기 때문에, 니게이트로 유지된다. 암호화/복호화 개시 신호(158)가 T27에서 어서트되지 않으면, 출력 유지 제어 신호(160)가 T27에서 어서트되고, 데이터 유지부(108)의 값은 암호문 데이터(C0)를 유지한다.On the other hand, although the
암호화가 종료하는 T27에서, 키 확장부(102)는 라운드 키 A(162)로서 wkey0를 출력한다. 라운드 키 A(162)의 값은 다음의 암호화/복호화 개시 신호(156)가 어서트될 때까지 유지된다.At T27 at which encryption ends, the
암호화의 종료(T27)를 예측하여, 제어부(104)는 완료 한 사이클 전에(T26) 제어 신호(157)를 어서트시킨다. 제어 신호(157)가 어서트되는 때에, AES 코 어(101) 외부의 유닛이 입력 신호(150)의 값을 다음의 평문 데이터(P1)에 설정하여, 2번째 블록의 암호화가 개시할 수 있게 된다. 도 9a 및 도 9b의 타이밍 차트에서, AES 코어(101)의 외부 유닛은 최단 사이클(T27)에서 다음의 암호화/복호화 개시 신호를 어서트시킨다. 1번째 블록과 동일한 방법으로 2번째 블록의 복호화 동작이 수행된다. 그 후, 소정 수의 블록만큼 암호화 동작이 반복 수행된다. 도 9a 및 도 9b의 타이밍 차트에서, 1번째 블록의 암호화 종료로부터 최단 간격에서 2번째 블록의 암호화가 개시된다. AES 코어는 이러한 타이밍에서 모든 블록들의 암호화를 실행함으로써 최대 성능을 발휘할 수 있다. 그러나, 암호화 간격은 기본적으로 임의의 길이로 설정될 수 있다.In anticipation of the end of encryption (T27), the
소정 수의 블록들의 암호화가 완전히 종료되어, 암호키와 같은 다른 파라미터를 이용하여 다음 작업이 수행되어야 하는 때에는, 파라미터 설정으로부터 처리가 다시 개시된다.When the encryption of the predetermined number of blocks is completely terminated and the next operation is to be performed using another parameter such as an encryption key, the process starts again from the parameter setting.
다음, 본 실시예의 복호화 동작에 대하여 설명한다. 도 10a 및 도 10b는 본 실시예에 따른 복호화의 타이밍 차트이다. 도 10a 및 도 10b를 참조하면, 가로축이 시간을 나타낸다. 클록 펄스의 리딩 에지에 대하여 타이밍 명칭 T01, T02, ..., T33이 할당된다. 도 10a의 좌단의 세로축 상의 3 자리수는 신호 라인을 나타내며, 도 5 내지 도 8에서 사용되는 신호 라인의 참조 번호와 일대일 대응한다.Next, the decoding operation of this embodiment will be described. 10A and 10B are a timing chart of decoding according to the present embodiment. 10A and 10B, the horizontal axis represents time. Timing names T01, T02, ..., T33 are assigned to the leading edge of the clock pulse. Three digits on the vertical axis of the left end of FIG. 10A represent signal lines and correspond one-to-one with reference numbers of the signal lines used in FIGS. 5 to 8.
복호화 동작 또한 4개 부분으로 대별된다: 파라미터 설정 기간(T01 내지 T06), 키 준비 기간(T06 내지 T17), 1번째 블록 복호화 기간(T17 내지 T27), 및 2번째 블록 복호화 기간(T27 이후).The decryption operation is also roughly divided into four parts: parameter setting periods T01 to T06, key preparation periods T06 to T17, first block decryption periods T17 to T27, and second block decryption periods after T27.
파라미터 설정 기간은 T01에서부터 T06까지이며, 그 역할, 개시 조건, 및 종료 조건은 본 실시예의 암호화와 동일하다. 그러나, 암호화/복호화 선택 신호(153)는 복호화 시에 어서트된다.The parameter setting period is from T01 to T06, and its role, start condition, and end condition are the same as in encryption of the present embodiment. However, the encryption /
키 준비 기간은 T06에서부터 T17까지이며, 그 개시 조건과 종료 조건은 본 실시예의 암호화에서와 동일하다. 각 회로의 동작 또한 본 실시예의 암호화에서와 거의 동일하다. 그러나, 1번째 사이클에서 사용되는 라운드 키가 암호화와 복호화 사이에 다르다. 따라서, 키 확장부(102)는 키 준비 기간(T17)의 종료 시에 wkey10로부터 역순서로 키 확장을 수행하여 wkey9을 생성하고, 이 키를 라운드 키 A(162)로서 출력한다. 라운드 키 A(162)의 값은 암호화/복호화 개시 신호(158)가 어서트될 때까지 유지된다. 제어부(104)는 카운터 신호(161)의 카운트 업을 정지하고, 카운터를 0으로 클리어시킨다.The key preparation period is from T06 to T17, and the start condition and end condition are the same as in encryption of this embodiment. The operation of each circuit is also almost the same as in the encryption of this embodiment. However, the round key used in the first cycle is different between encryption and decryption. Therefore, the
키 준비 기간의 종료 근처에서, T17에서 키 준비가 종료되어, 복호화가 가능하게 될 것을 예상하여, 제어부(104)는 T16에서 제어 신호(157)를 어서트한다.Near the end of the key preparation period, the
T17에서 제어 신호(157)가 어서트되는 것을 감지하면, AES 코어(101)의 외부에 배치된 입력 신호 공급부는 AES 코어(101)에 대하여 입력 신호(150)로서 평문 데이터(C0)를 공급한다. 암호화/복호화 개시 신호(158)가 어서트되어, 입력 신호(150)의 복호화가 개시된다(T17). 타이밍 차트에서, 암호화/복호화 개시 신호(158)는 최단 사이클에서 어서트된다. 그러나, 타이밍은 AES 코어(101) 외부에서 자유롭게 결정된다.When the
복호화 기간에서, 입력 신호(150)가 복호화된다. 복호화 기간은 암호화/복 호화 개시 신호(158)가 어서트되는 때(T17)부터 10 사이클 이후의 타이밍(T27)까지의 기간이다.In the decoding period, the
암호화/복호화 개시 신호(158)가 어서트되는 것을 감지하면, 제어부(104)는 다음 사이클(T18)에서 제어 신호(157), 유효 신호(159), 및 출력 유지 제어 신호(160)를 니게이트한다. 동시에, 제어부(104)는 카운터 신호(161)를 카운트 업하기 시작한다.Upon detecting that the encryption /
키 확장부(102)는 카운터 신호(161)에 따라서 라운드 키(wkey9)로부터 역순서로 키 확장을 수행한다. 키 확장부(102)는 T18에서 wkey9, T19에서 wkey8, ..., T26에서 wkeyO를 라운드 키 A(162)로서 암호화/복호화부(103)에 출력한다.The
T17에서 T18까지에서는, 선택 신호(171)가 니게이트된다. 따라서, 변형된 라운드 기능 모듈(106)이 라운드 키 A로서 출력되는 wkey9을 이용하여 입력 신호(150)에 대한 서브블록 변환을 실행한다. 복호화의 1번째 사이클에서, 제어부(104)는 선택 신호(170)를 어서트시킨다. 따라서, 변형된 라운드 기능 모듈(106)의 선택기(118)가 라운드 키 B(163)를 이용하여 AddRoundKey 변환을 실행하는 AddRoundKey 변환 모듈(117)의 출력을 선택하여, 1번째 사이클의 서브블록 변환을 실행한다.From T17 to T18, the
T18에서 T27까지에서, 선택 신호(171)가 어서트된다. 따라서, 변형된 라운드 기능 모듈(106)은 데이터 유지부(108)의 출력에 대하여 T18에서 T19까지는 wkey8, T19에서 T20까지는 wkey7, ..., T25에서 T26까지는 wkeyO를 이용하여 서브블록 변환을 실행한다.From T18 to T27, the
T26에서, 변형된 라운드 기능 모듈(106)의 출력 신호(167)는 입력 신호로서 암호문 데이터(C0)의 복호화 결과인 평문 데이터(P0)를 출력한다. 1 사이클 후에(T27), 데이터 유지부(108)는 AES 코어(101)의 출력으로서 평문 데이터(P0)의 값을 외부에 출력한다. 동시에, 복호화가 종료되어 출력 신호(151)가 유효한 것을 AES 코어(101) 외부 유닛에 통지하기 위하여, 제어부(104)는 유효 신호(159)를 어서트시킨다(T27). 유효 신호(159)가 어서트되고 있는 동안, AES 코어(101)는 출력 신호가 유효인 것을 보장한다.In T26, the
한편, T27에서 유효 신호(159)가 어서트되어 있지만, T27에서 암호화/복호화 개시 신호(158) 또한 어서트되어 있으므로, 출력 유지 제어 신호(160)는 니게이트된 채로 있다. T27에서 암호화/복호화 개시 신호(158)가 어서트되지 않으면, T27에서 출력 유지 제어 신호(160)가 어서트되어, 데이터 유지부(108)의 값이 평문 데이터(P0)를 유지한다.On the other hand, the
T27에서 복호화가 종료하는 때에, 키 확장부(102)는 wkey10에서부터 wkey9을 역산으로 취득하여, 이를 라운드 키 A(162)로서 출력한다. 라운드 키 A(162)의 값은 다음 암호화/복호화 개시 신호(156)가 어서트될 때까지 유지된다.At the end of decryption at T27, the
복호화의 종료를 예상하여(T27), 제어부(104)는 종료 한 사이클 전(T26)에 제어 신호(157)를 어서트시킨다. 제어 신호(157)가 어서트되는 때에, AES 코어(101) 외부의 유닛이 입력 신호(150)의 값을 다음 암호문 데이터(C1)에 설정하여, 2번째 블록의 복호화가 시작될 수 있도록 된다. 도 10a 및 도 10b의 타이밍 차트에서, AES 코어(101) 외부의 유닛이 최단 사이클(T27)에서 다음의 암호화/복호 화 개시 신호(158)를 어서트시킨다. 1번째 블록과 동일한 방법으로 2번째 블록의 복호화 동작이 수행된다. 그 후에, 복호화 동작이 임의의 회수 반복 수행된다.In anticipation of the end of the decoding (T27), the
복호화가 완전히 종료되어 다음 작업이 개시되어야 하는 때에는, 파라미터 설정으로부터 다시 처리를 시작한다.When the decryption is completely finished and the next work must be started, the process starts again from the parameter setting.
제1 실시예는 상기 방법으로 구현될 수 있다. 제1 실시예에 있어서, AES 암호화에 필요한 클록 사이클 수는 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치를 증가시키지 않고서 1 사이클 감소된다. 이는 AES 처리 속도를 약 10% 증가시킨다.The first embodiment can be implemented in this way. In the first embodiment, the number of clock cycles required for AES encryption is reduced by one cycle without increasing the maximum value of the sum of the signal processing times for each subblock conversion within each clock cycle period. This increases the AES processing speed by about 10%.
<제2 실시예>Second Embodiment
도 11은 제2 실시예에 따라서 클록 사이클들에서 실행되는 암호화 및 복호화의 처리 내용을 나타내는 도면이다.11 is a diagram showing the processing contents of encryption and decryption executed in clock cycles according to the second embodiment.
도 11을 참조하면, 사이클 카운트는 AES 처리의 개시시에 "0"인 클록 사이클 카운트를 나타낸다.Referring to Fig. 11, the cycle count indicates a clock cycle count that is "0" at the start of AES processing.
본 실시예의 암호화 처리에 있어서, 0번째 사이클에서, 제1 AddRoundKey 변환, ShiftRows 변환, SubBytes 변환, MixColumns 변환, 제2 AddRoundKey 변환이 실행된다. 1번째 사이클 내지 8번째 사이클에서는, AddRoundKey 변환, ShiftRows 변환, SubBytes 변환, 및 MixColumns 변환이 실행된다. 9번째 사이클에서는, AddRoundKey 변환, ShiftRows 변환, 및 SubBytes 변환이 실행된다. 라운드 키로서는, 0번째 사이클에서 wkeyO 및 wkey1, 1번째 사이클에서는 wkey2, ..., 9번째 사이클에서는 wkeyl0가 이용된다.In the encryption processing of the present embodiment, in the 0th cycle, the first AddRoundKey conversion, ShiftRows conversion, SubBytes conversion, MixColumns conversion, and the second AddRoundKey conversion are executed. In the first to eighth cycles, AddRoundKey transformation, ShiftRows transformation, SubBytes transformation, and MixColumns transformation are executed. In the ninth cycle, AddRoundKey transformation, ShiftRows transformation, and SubBytes transformation are performed. As the round key, wkeyO and wkey1 in the 0th cycle, wkey2 in the first cycle, ..., and wkeyl0 in the ninth cycle are used.
제2 실시예에 있어서, 전체적으로 종래 기술과 동일한 처리가 실행된다. 그러나, 본 실시예에 있어서는, 1개 적은 클록 사이클로 AES 암호화를 실행할 수 있다.In the second embodiment, the same processing as in the prior art is executed as a whole. However, in this embodiment, AES encryption can be executed in clock cycles fewer by one.
다음, 제2 실시예에 따라서 클록 사이클들에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산에 대하여 설명한다. 도 12는 제2 실시예에서 클록 사이클들에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산과 종래 기술 사이의 비교를 나타낸 도면이다. 세로축은 시간을 나타낸다. 바가 길수록, 처리 시간이 더 길다. 제2 실시예를 구현하기 위해서는, 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 1 사이클 시간보다 작아야 한다. 도 12에 도시된 바와 같이, 각 서브블록 변환의 처리 시간은 SubBytes 변환에서 가장 길고, MixColumns 변환, AddRoundKey 변환, ShiftRows 변환의 순서로 짧다.Next, the sum of the signal processing time for each subblock transformation executed in clock cycles according to the second embodiment will be described. FIG. 12 is a diagram showing a comparison between the sum of the signal processing time and each prior art for each subblock transformation executed in clock cycles in the second embodiment. The vertical axis represents time. The longer the bar, the longer the processing time. In order to implement the second embodiment, the maximum value of the sum of the signal processing times for each subblock transform must be smaller than one cycle time. As shown in FIG. 12, the processing time of each subblock transform is the longest in the SubBytes transform, and is short in the order of the MixColumns transform, the AddRoundKey transform, and the ShiftRows transform.
본 실시예에 있어서, 제1 AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, MixColumns 변환, 및 제2 AddRoundKey 변환이 실행되는 0번째 사이클에서 각 서브블록 변환에 대한 신호 처리 시간의 합산은, AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, 및 MixColumns 변환이 실행되는 1번째 내지 8번째 사이클에서 각 서브블록 변환에 대한 신호 처리 시간의 합산, 또는 AddRoundKey 변환, SubBytes 변환, 및 ShiftRows 변환이 실행되는 9번째 사이클에서 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 길다. 따라서, 본 실시예의 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 하나의 AddRoundKey 변환의 처리 시간에 해당하는 만큼 종래 기술보다 더 크다. 그러나, 하나의 AddRoundKey 변환의 처 리 시간은 1 사이클 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 훨씬 짧다. 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 때로는 1 사이클 시간에 대하여 충분한 여유를 갖고 설정된다. 이 때문에, 종래 기술의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 복호화 처리 시간의 합산의 최대치가 1 사이클 시간보다 짧다면, 본 실시예가 또한 많은 경우에 구현가능한 것으로 상정된다.In the present embodiment, the sum of the signal processing time for each subblock transformation in the 0th cycle in which the first AddRoundKey transformation, SubBytes transformation, ShiftRows transformation, MixColumns transformation, and the second AddRoundKey transformation are performed is the AddRoundKey transformation, SubBytes transformation. , The sum of the signal processing time for each subblock transform in the first to eighth cycles where the ShiftRows transform, and the MixColumns transform are performed, or each subblock transform in the ninth cycle where the AddRoundKey transform, SubBytes transform, and ShiftRows transform are performed. Is longer than the sum of the signal processing times for. Therefore, the maximum value of the sum of the signal processing time for each subblock transform of this embodiment is larger than the prior art by corresponding to the processing time of one AddRoundKey transform. However, the processing time of one AddRoundKey transformation is much shorter than the sum of the signal processing times for each subblock transformation within one cycle. The maximum sum of the signal processing time for each subblock conversion within each clock cycle period is sometimes set with sufficient margin for one cycle time. For this reason, it is assumed that this embodiment is also feasible in many cases if the maximum value of the sum of the decoding processing times for each subblock transformation within each clock cycle period of the prior art is shorter than one cycle time.
본 발명은 또한 AES 복호화에도 적용가능하다.The present invention is also applicable to AES decryption.
도 11에 도시된 바와 같이, 본 실시예의 복호화에 있어서, 0번째 사이클에서 AddRoundKey 변환, InvShiftRows 변환, 및 InvSubBytes 변환이 실행된다. 1번째 내지 8번째 사이클에서는 AddRoundKey 변환, InvShiftRows 변환, InvSubBytes 변환, InvMixColumns 변환이 실행된다. 9번째 사이클에서는 제1 AddRoundKey 변환, InvShiftRows 변환, InvSubBytes 변환, InvMixColumns 변환, 및 제2 AddRoundKey 변환이 실행된다. 라운드 키로서는, 0번째 사이클에서 wkey10, 1번째 사이클에서 wkey9, ..., 8번째 사이클에서 wkey2가 이용된다. 9번째 사이클에서는, 2개의 라운드 키 wkey1 및 wkey0가 이용된다.As shown in Fig. 11, in the decoding of the present embodiment, AddRoundKey transformation, InvShiftRows transformation, and InvSubBytes transformation are executed in the 0th cycle. In the first to eighth cycles, AddRoundKey conversion, InvShiftRows conversion, InvSubBytes conversion, and InvMixColumns conversion are executed. In the ninth cycle, the first AddRoundKey transformation, the InvShiftRows transformation, the InvSubBytes transformation, the InvMixColumns transformation, and the second AddRoundKey transformation are executed. As the round key, wkey10 is used in the 0th cycle, wkey9 is used in the 1st cycle, and wkey2 is used in the 8th cycle. In the ninth cycle, two round keys wkey1 and wkey0 are used.
제2 실시예에 있어서, 전체적으로 종래 기술과 동일한 처리가 실행된다. 그러나, 제2 실시예에 있어서는, 1개 적은 클록 사이클로 AES 복호화를 실행할 수 있다.In the second embodiment, the same processing as in the prior art is executed as a whole. However, in the second embodiment, AES decryption can be executed in clock cycles fewer by one.
다음, 제2 실시예에 따라서 클록 사이클들에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산에 대하여 설명한다. 도 13은 제2 실시예에서 클록 사 이클들에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산과 종래 기술과의 사이의 비교를 나타낸 도면이다. 세로축은 시간을 나타낸다. 바가 길수록, 처리 시간이 더 길다. 본 실시예를 구현하기 위하여, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 1 사이클 시간보다 작아야 한다. 도 13에 도시된 바와 같이, 각 서브블록 변환의 처리 시간은, InvSubBytes 변환에서 가장 길고, InvMixColumns 변환, AddRoundKey 변환, InvShiftRows 변환의 순서로 짧아진다.Next, the sum of the signal processing time for each subblock transformation executed in clock cycles according to the second embodiment will be described. FIG. 13 is a diagram showing a comparison between the sum of the signal processing time for each subblock conversion executed in clock cycles and the prior art in the second embodiment. The vertical axis represents time. The longer the bar, the longer the processing time. In order to implement this embodiment, the maximum of the sum of the signal processing times for each subblock conversion within each clock cycle period should be less than one cycle time. As shown in Fig. 13, the processing time of each subblock transform is the longest in the InvSubBytes transform, and shortens in the order of the InvMixColumns transform, the AddRoundKey transform, and the InvShiftRows transform.
제2 실시예에 있어서, 제1 AddRoundKey 변환, InvSubBytes 변환, InvShiftRows 변환, InvMixColumns 변환, 및 제2 AddRoundKey 변환이 실행되는 9번째 사이클에서 각 서브블록 변환에 대한 신호 처리 시간의 합산은, AddRoundKey 변환, InvSubBytes 변환, InvShiftRows 변환, 및 InvMixColumns 변환이 실행되는 1번째 내지 8번째 사이클에서 각 서브블록 변환에 대한 신호 처리 시간의 합산, 또는 AddRoundKey 변환, InvSubBytes 변환, 및 InvShiftRows 변환이 실행되는 0번째 사이클에서 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 길다. 따라서, 제2 실시예의 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는, 하나의 AddRoundKey 변환의 처리 시간에 해당하는 만큼 종래 기술보다 더 크다. 그러나, 하나의 AddRoundKey 변환의 처리 시간은 1 사이클 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산보다는 훨씬 짧다. 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 때로는 1 사이클 시간에 대하여 충분한 여유를 가지고 설정된다. 이 때문에, 종래 기술의 각 클록 사이클 기간 내 에서 각 서브블록 변환에 대한 복호화 처리 시간의 합산의 최대치가 1 사이클 시간보다 짧다면, 본 실시예 또한 대다수 경우에서 구현될 수 있는 것으로 상정된다.In the second embodiment, the sum of the signal processing times for each subblock transform in the ninth cycle in which the first AddRoundKey transform, InvSubBytes transform, InvShiftRows transform, InvMixColumns transform, and second AddRoundKey transform are performed is performed by AddRoundKey transform, InvSubBytes. Sum of signal processing time for each subblock transform in the first to eighth cycles where the transform, InvShiftRows transform, and InvMixColumns transform are performed, or each subblock in the zeroth cycle where the AddRoundKey transform, InvSubBytes transform, and InvShiftRows transform are performed Longer than the sum of the signal processing times for the transforms. Therefore, the maximum value of the sum of the signal processing time for each subblock transform of the second embodiment is larger than the prior art by corresponding to the processing time of one AddRoundKey transform. However, the processing time of one AddRoundKey transformation is much shorter than the sum of the signal processing times for each subblock transformation within one cycle. The maximum of the sum of the signal processing times for each subblock conversion within each clock cycle period is sometimes set with sufficient margin for one cycle time. For this reason, it is assumed that the present embodiment can also be implemented in most cases if the maximum value of the sum of the decoding processing times for each subblock transformation within each clock cycle period of the prior art is shorter than one cycle time.
상기 제2 실시예의 특징에 대하여 정리한다.The features of the second embodiment are summarized.
종래의 일반적인 구현 방법에 있어서, 규격에 의해 정의된 라운드 기능은 처리에 있어서의 단절로서 간주되어, 암호화 및 복호화가 클록 사이클들에 분산되어 있다. 따라서, 10번째 및 0번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산은 1번째 내지 9번째 사이클 각각에서의 각 서브블록 변환에 대한 복호화 처리 시간의 합산보다 짧다. 즉, 각 사이클에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산은 변동한다.In a conventional general implementation method, the round function defined by the specification is regarded as a break in processing, so that encryption and decryption are distributed among clock cycles. Therefore, the sum of the signal processing times for each subblock transform in the 10th and 0th cycles is shorter than the sum of the decoding process times for each subblock transform in each of the 1st to 9th cycles. That is, the sum of the signal processing times for each subblock transform executed in each cycle varies.
한편, 본 발명에서는, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 차이가 감소하도록, 일부 클록 사이클에서의 신호 처리가 증가된다.On the other hand, in the present invention, the signal processing in some clock cycles is increased so that the difference in the sum of the signal processing times for each subblock conversion within each clock cycle period is reduced.
본 실시예에 있어서, 1 사이클에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 약간 증가한다. 따라서, 본 실시예는 종래 기술이 구현될 수 있는 조건하에서 반드시 구현가능할 필요는 없다. 그러나, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 때로는 1 사이클 시간에 대하여 충분한 여유를 두고 설정되기 때문에, 대다수의 경우에서 문제가 되지는 않는다. 대다수의 경우, AES 암호화 또는 복호화에 필요한 클록 사이클 수는 1 사이클 감소될 수 있다. 이는 AES 처리 속도를 약 10% 증가시킨다.In this embodiment, the maximum value of the sum of the signal processing times for each subblock transform executed in one cycle is slightly increased. Thus, the present embodiment need not necessarily be implemented under the conditions in which the prior art can be implemented. However, since the maximum value of the sum of signal processing times for each subblock conversion within each clock cycle period is sometimes set with sufficient margin for one cycle time, this is not a problem in most cases. In most cases, the number of clock cycles required for AES encryption or decryption can be reduced by one cycle. This increases the AES processing speed by about 10%.
다음, AES 암호화 및 복호화를 구현하기 위한 AES 코어의 회로 구성에 대하여 설명한다.Next, a circuit configuration of the AES core for implementing AES encryption and decryption will be described.
도 14는 본 실시예에 따른 AES 코어의 블록도이다.14 is a block diagram of an AES core according to the present embodiment.
도 14를 참조하면, AES 코어(131)는 AES 처리를 실행한다. 키 확장부(132)는 암호키로부터 AES 암호화 및 복호화에 필요한 라운드 키를 생성하여 이 라운드 키를 출력한다. 암호화/복호화부(133)는 키 확장부(132)로부터 공급되는 라운드 키를 이용하여 128 비트 평문 데이터의 암호화 또는 128 비트 암호문 데이터의 복호화를 실행한다. 제어부(134)는 AES 코어(131) 외부의 유닛으로부터 제어 신호를 수신하여, 키 확장부(132)와 암호화/복호화부(133)의 동작을 제어하기 위한 신호들과 동작 완료를 AES 코어(131) 외부 유닛에 통지하기 위한 신호를 발생시킨다.Referring to FIG. 14, the
도 14를 참조하면, 암호화/복호화부(133)에서 서브블록 변환의 접속을 절환하기 위하여 제어부(134)로부터 암호화/복호화부(133)에 선택 신호(175)가 출력된다.Referring to FIG. 14, the
도 14의 구성요소들과 신호 라인들은, 제1 실시예에 설명된 바와 동일하여, 그 설명은 생략한다.The components and signal lines in FIG. 14 are the same as those described in the first embodiment, and description thereof is omitted.
다음, 암호화/복호화부(133)에 대하여 설명한다. 도 15는 암호화/복호화부(133)를 설명하기 위한 블록도이다. 도 15를 참조하면, 변형된 라운드 기능 모듈(135)은 선택 신호(170) 및 선택 신호(175)의 제어 하에서 라운드 키 A(162) 및 라운드 키 B(163)을 이용하여 1 사이클의 암호화를 실행한다. 변형된 라운드 기능 모듈(136)은 선택 신호(170 및 175)의 제어 하에서 라운드 키 A(162) 및 라운드 키 B(163)를 이용하여 복호화를 실행한다.Next, the encryption /
상기 구성에 있어서, 선택 신호(171)가 니게이트되는 때에, 암호화/복호화부(133)의 선택기(109)는 입력 신호(150)를 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다.In the above configuration, when the
도 15의 구성요소들과 신호 라인들은, 제1 실시예에 설명된 바와 동일하여, 그 설명은 생략한다.The components and signal lines in Fig. 15 are the same as those described in the first embodiment, and the description thereof is omitted.
다음, 변형된 라운드 기능 모듈(135)에 대하여 설명한다. 도 16은 변형된 라운드 기능 모듈(135)의 블록도이다. 도 16을 참조하면, AddRoundKey 변환 모듈(114)은 입력 신호(165)와 라운드 키 B(163)를 수신하여, AddRoundKey 변환을 실행한다. 선택기(137)는 선택 신호(175)에 따라서 입력 신호(165)와 AddRoundKey 변환 모듈(114)의 출력 중 하나를 선택하여 출력한다. SubBytes 변환 모듈(111)은 선택기(137)의 출력을 수신하여, SubBytes 변환을 실행한다. ShiftRows 변환 모듈(112)은 SubBytes 변환 모듈(111)의 출력을 수신하여, ShiftRows 변환을 실행한다. MixColumns 변환 모듈(113)은 ShiftRows 변환 모듈(112)의 출력을 수신하여, MixColumns 변환을 실행한다. 선택기(115)는 선택 신호(170)에 따라서 MixColumns 변환 모듈(113)의 출력과 ShiftRows 변환 모듈(112)의 출력 중 하나를 선택하여 출력한다. AddRoundKey 변환 모듈(110)은 선택기(115)의 출력과 라운드 키 A(162)를 수신하여, AddRoundKey 변환 변환을 실행한다. AddRoundKey 변환 모듈(110)의 출력 신호는 변형된 라운드 기능 모듈(135)의 출력 신호이다.Next, the modified
상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 MixColumns 변환 모듈(113)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 ShiftRows 변환 모듈(112)의 출력을 선택하여 출력한다. 선택 신호(175)가 니게이트되는 때에, 선택기(137)는 입력 신호(165)를 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(137)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다.In the above configuration, when the
다음, 변형된 라운드 기능 모듈(136)에 대하여 설명한다. 도 17은 변형된 라운드 기능 모듈(136)의 블록도이다. 도 17을 참조하면, AddRoundKey 변환 모듈(121)이 입력 신호(165)와 라운드 키 A(162)를 수신하여, AddRoundKey 변환을 실행한다. InvMixColumns 변환 모듈(116)은 AddRoundKey 변환 모듈(121)의 출력을 수신하여 InvMixColumns 변환을 실행한다. 선택기(118)는 선택 신호(170)에 따라서 InvMixColumns 변환 모듈(116)의 출력과 AddRoundKey 변환 모듈(121)의 출력 중 하나를 선택하여 출력한다. InvShiftRows 변환 모듈(119)은 선택기(118)의 출력을 수신하여, InvShiftRows 변환을 실행한다. InvSubBytes 변환 모듈(120)은 InvShiftRow 변환 모듈(119)의 출력을 수신하여, InvSubBytes 변환을 실행한다. AddRoundKey 변환 모듈(117)은 InvSubBytes 변환 모듈(120)의 출력과 라운드 키 B(163)를 수신하여, AddRoundKey 변환을 실행한다. 선택기(138)는 선택 신호(175)에 따라서 InvSubBytes 변환 모듈(120)의 출력과 AddRoundKey 변환 모듈(117)의 출력 중 하나를 선택하여 출력한다. 선택기(138)의 출력은 변형된 라운드 기능 모듈(136)의 출력이다.Next, the modified
상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(118)는 InvMixColumns 변환 모듈(116)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(118)는 AddRoundKey 변환 모듈(121)의 출력을 선택하여 출력한다. 선택 신호(175)가 니게이트되는 때에, 선택기(138)는 InvSubBytes 변환 모듈(120)의 출력을 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(138)는 AddRoundKey 변환 모듈(117)의 출력을 선택하여 출력한다.In the above configuration, when the
다음, 상기 구성에 있어서의 암호화 동작에 대하여 설명한다. 도 18a 및 도 18b는 제2 실시예에 따른 암호화의 타이밍 차트이다. 도 18a 및 도 18b를 참조하면, 가로축이 시간을 나타낸다. 클록 펄스의 리딩 에지에 대하여 타이밍 명칭 T01, T02, ..., T33이 할당된다. 도 18a의 좌단에 세로축에 있는 3 자리수는 신호 라인을 나타내며, 도 14 내지 도 17에 사용되는 신호 라인의 참조 번호와 일대일 대응한다.Next, the encryption operation in the above configuration will be described. 18A and 18B are a timing chart of encryption according to the second embodiment. 18A and 18B, the horizontal axis represents time. Timing names T01, T02, ..., T33 are assigned to the leading edge of the clock pulse. Three digits on the vertical axis at the left end of FIG. 18A represent signal lines and correspond one-to-one with reference numerals of the signal lines used in FIGS. 14 to 17.
도 18a 및 도 18b의 타이밍 차트에 도시된 암호화 동작은 4개의 부분으로 대별된다. 1번째 부분은 암호키 등의 각종 파라미터를 설정하는 파라미터 설정 기간(T01 내지 T06)이다. 2번째 부분은 wkey0를 생성하여 이를 레지스터에 유지시키는 키 준비 기간(T06 내지 T17)이다. 3번째 부분은 1번째 블록의 암호화 기간(T17 내지 T27)이다. 4번째 부분은 2번째 블록의 암호화 기간이다(T27로부터).The encryption operation shown in the timing chart of Figs. 18A and 18B is roughly divided into four parts. The first part is parameter setting periods T01 to T06 for setting various parameters such as encryption keys. The second part is a key preparation period (T06 to T17) for generating wkey0 and holding it in a register. The third portion is the encryption periods T17 to T27 of the first block. The fourth part is the encryption period of the second block (from T27).
파라미터 설정 기간의 역할, 개시 조건, 및 종료 조건은 제1 실시예와 동일하다. 키 준비 기간은 T06에서부터 T17까지이며, 그 개시 조건과 종료 조건은 제1 실시예와 동일하다. 각 회로의 동작 또한 제1 실시예와 동일하다. 그러나, 타이밍 T16에서의 키 확장부(132)의 동작과, 타이밍 T17에서의 키 확장부(132) 및 제어 부(134)의 동작은 제1 실시예와 상이하므로, 이하에서 설명한다.The role, start condition, and end condition of the parameter setting period are the same as in the first embodiment. The key preparation period is from T06 to T17, and the start condition and end condition are the same as in the first embodiment. The operation of each circuit is also the same as in the first embodiment. However, the operation of the
타이밍 T16에서, 키 확장부(132)는 라운드 키 B(163)로서 wkey0를 출력한다. 라운드 키 wkey10은 키 확장부(132)에 마련된 레지스터에 유지된다.At the timing T16, the
타이밍 T17에서, 키 확장부(132)는 라운드 키 A(162)로서 wkey1을 출력한다. 제어부(134)는 선택 신호(175)를 어서트시킨다.At timing T17, the
제1 블록 암호화 기간은 T17에서부터 T27까지이며, 그 개시 조건과 종료 조건은 제1 실시예와 동일하다. 각 회로의 동작 또한 제1 실시예와 거의 동일하다.The first block encryption period is from T17 to T27, and the start condition and end condition are the same as in the first embodiment. The operation of each circuit is also almost the same as in the first embodiment.
제어부(134)는 선택 신호(175)를 암호화의 종료 시에 어서트시키고, 암호화의 1번째 사이클에서 니게이트시킨다(T18 또는 T28). 제어부(134)는 또한 암호화의 최종 사이클(T16)에서 선택 신호(170)를 어서트시키고, 암호화의 종료시(T17)에 니게이트시킨다. 제어부(134)는 또한 암호화의 1번째 사이클에서 선택 신호(171)를 어서트시키고, 암호화의 종료시에 니게이트시킨다.The
회로 구성에 대하여 설명한 바와 같이, 선택 신호(171)가 니게이트되는 때에, 선택기(109)는 입력 신호(150)를 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다. 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 MixColumns 변환 모듈(113)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 AddRoundKey 변환 모듈(112)의 출력을 선택하여 출력한다. 선택 신호(175)가 니게이트되는 때에, 선택기(137)는 입력 신호(165)를 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(137)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다.As described with respect to the circuit configuration, when the
따라서, 0번째 사이클(T17 내지 T18)에서, 변형된 라운드 기능 모듈(135)은 입력 신호(150)에 대하여 AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, MixColumns 변환, 및 AddRoundKey 변환을 실행한다. 1번째 사이클에서부터, 변형된 라운드 기능 모듈은 바로 전의 사이클의 결과에 대하여 SubBytes 변환, ShiftRows 변환, MixColumns 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 출력한다. 9번째 사이클(T26 내지 T27)에서, 변형된 라운드 기능 모듈은 SubBytes 변환, ShiftRows 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 출력한다.Accordingly, in the 0 th cycle T17 to T18, the modified
전술한 방법으로 선택 신호(171, 170, 및 175)를 제어함으로써 변형된 라운드 기능 모듈(135)은 도 11에 도시된 바와 같이 암호화를 실행할 수 있다.By controlling the selection signals 171, 170, and 175 in the manner described above, the modified
한편, 키 확장부(132)는 키 준비 기간 이후에 라운드 키 A(162)로서 wkey1을, 라운드 키 B(163)로서 wkey0를 출력한다. 따라서, 암호화 개시 시에(T17) 변형된 라운드 기능 모듈(135)에 wkey0 및 wkey1이 공급된다. 암호화/복호화 개시 신호(158)에 기초하여 암호화의 개시를 검출하면(T17), 키 확장부(132)는 라운드 키 A 레지스터에 유지되는 wkey1을 이용하여 wkey2를 생성하고, 라운드 키 A 레지스터에 wkey2를 유지한다. 따라서, T18에서 wkey2가 변형된 라운드 기능 모듈(135)에 공급된다. T26까지 동일한 방법으로 라운드 키들이 공급된다. 라운드 키 A 레지스터에 wkey10이 유지되고, T26에서 라운드 키 공급이 종료되면, 키 확장부(132)는 암호화 키(152)로서 외부에 계속 공급되는 wkey0를 이용하여 wkey1을 생성하고, 라운드 키 A 레지스터에 wkey1을 유지하여, 다음 암호화의 개시에 대하여 준비한다(T27).On the other hand, the
전술한 바와 같이 키 확장부(132)가 동작하는 때에, 변형된 라운드 기능 모듈(135)은 도 11에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.As described above, when the
제2 실시예에 따른 암호화 기간 동안의 동작은 상기의 방법으로 수행된다. 2번째 블록의 복호화 동작은 1번째 블록에 대한 것과 동일한 방식으로 수행된다. 그 후, 소정의 블록 수만큼 암호화 동작이 반복 수행된다. 도 18a 및 도 18b의 타이밍 차트에서, 2번째 블록의 암호화는 1번째 블록의 암호화의 종료 후에 최단 간격에서 개시된다. AES 코어는 이러한 타이밍에서 모든 블록의 암호화를 실행함으로써 그 최대 성능을 발휘할 수 있다. 그러나, 암호화 간격은 기본적으로 임의의 길이로 설정될 수 있다.The operation during the encryption period according to the second embodiment is performed by the above method. The decoding operation of the second block is performed in the same manner as for the first block. After that, the encryption operation is repeatedly performed as many as a predetermined number of blocks. In the timing charts of Figs. 18A and 18B, the encryption of the second block is started at the shortest interval after the termination of the encryption of the first block. The AES core can achieve its maximum performance by executing encryption of all blocks at this timing. However, the encryption interval can basically be set to any length.
소정 수의 블록들의 암호화가 완전히 종료되어, 암호키와 같은 다른 파라미터를 이용하여 다음 작업이 수행되어야 하는 때에는, 파라미터 설정으로부터 처리가 다시 개시된다.When the encryption of the predetermined number of blocks is completely terminated and the next operation is to be performed using another parameter such as an encryption key, the process starts again from the parameter setting.
다음, 본 실시예의 복호화 동작에 대하여 설명한다. 도 19a 및 도 19b는 본 실시예에 따른 복호화의 타이밍 차트이다. 도 19a 및 도 19b를 참조하면, 가로축이 시간을 나타낸다. 클록 펄스의 리딩 에지에 대하여 타이밍 명칭 T01, T02, ..., T33이 할당된다. 도 19a의 좌단의 세로축 상의 3 자리수는 신호 라인을 나타내며, 도 14 내지 도 17에서 사용되는 신호 라인의 참조 번호와 일대일 대응한다.Next, the decoding operation of this embodiment will be described. 19A and 19B are timing charts of decoding according to the present embodiment. 19A and 19B, the horizontal axis represents time. Timing names T01, T02, ..., T33 are assigned to the leading edge of the clock pulse. Three digits on the vertical axis of the left end of FIG. 19A represent signal lines and correspond one-to-one with reference numerals of the signal lines used in FIGS. 14 to 17.
도 19a 및 도 19b의 타이밍 차트에 도시된 복호화 동작 또한 4개 부분으로 대별된다. 1번째 부분은 암호키와 같은 각종 파라미터를 설정하는 파라미터 설정 기간(T01 내지 T06)이다. 2번째 부분은 wkey0를 생성하여 이를 레지스터에 유지하 는 키 준비 기간(T06 내지 T17)이다. 3번째 부분은 1번째 블록의 암호화 기간(T17 내지 T27)이다. 4번째 부분은 2번째 블록의 암호화 기간이다(T27부터).The decoding operation shown in the timing chart of Figs. 19A and 19B is also roughly divided into four parts. The first part is parameter setting periods T01 to T06 for setting various parameters such as encryption keys. The second part is the key preparation period (T06 to T17) that generates wkey0 and holds it in the register. The third portion is the encryption periods T17 to T27 of the first block. The fourth part is the encryption period of the second block (from T27).
파라미터 설정 기간의 역할, 개시 조건, 및 종료 조건은 제1 실시예와 동일하다. 키 준비 기간은 T06에서부터 T17까지이며, 그 개시 조건과 종료 조건은 제1 실시예와 동일하다. 각 회로의 동작 또한 제1 실시예와 동일하다. 그러나, 타이밍 T16에서의 키 확장부의 동작과, 타이밍 T17에서의 키 확장부(132) 및 제어부(134)의 동작은 제1 실시예와 상이하므로, 이하에서 설명한다.The role, start condition, and end condition of the parameter setting period are the same as in the first embodiment. The key preparation period is from T06 to T17, and the start condition and end condition are the same as in the first embodiment. The operation of each circuit is also the same as in the first embodiment. However, operations of the key expansion unit at timing T16 and operations of the
타이밍 T16에서, 키 확장부(132)는 라운드 키 B(163)로서 wkey0를 출력한다. 라운드 키 wkey0은 키 확장부(132)에 마련된 레지스터에 유지된다.At the timing T16, the
타이밍 T17에서, 키 확장부(132)는 라운드 키 A(162)로서 wkey10을 출력한다. 제어부(134)는 선택 신호(170)를 어서트시킨다.At timing T17, the
1번째 블록의 암호화 기간은 T17에서부터 T27까지이며, 그 개시 조건과 종료 조건은 제1 실시예와 동일하다. 각 회로의 동작 또한 제1 실시예와 거의 동일하다.The encryption period of the first block is from T17 to T27, and its start condition and end condition are the same as in the first embodiment. The operation of each circuit is also almost the same as in the first embodiment.
제어부(134)는 선택 신호(170)를 복호화의 종료 시에 어서트시키고, 복호화의 1번째 사이클에서 니게이트시킨다(T18 또는 T28). 제어부(134)는 또한 복호화의 최종 사이클(T16)에서 선택 신호(175)를 어서트시키고, 복호화의 종료시(T17)에 니게이트시킨다. 제어부(134)는 또한 복호화의 1번째 사이클에서 선택 신호(171)를 어서트시키고, 복호화의 종료시에 니게이트시킨다.The
회로 구성에 대하여 설명한 바와 같이, 선택 신호(171)가 니게이트되는 때 에, 선택기(109)는 입력 신호(150)를 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다. 선택 신호(170)가 니게이트되는 때에, 선택기(118)는 InvMixColumns 변환 모듈(116)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(118)는 AddRoundKey 변환 모듈(121)의 출력을 선택하여 출력한다. 선택 신호(175)가 니게이트되는 때에, 선택기(138)는 InvSubBytes 변환 모듈(120)의 출력을 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(138)는 AddRoundKey 변환 모듈(117)의 출력을 선택하여 출력한다.As described with respect to the circuit configuration, when the
따라서, 0번째 사이클(T17 내지 T18)에서, 변형된 라운드 기능 모듈(136)은 입력 신호(150)에 대하여 AddRoundKey 변환, InvShiftRows 변환, 및 InvSubBytes 변환을 실행한다. 1번째 사이클에서부터, 변형된 라운드 기능 모듈은 바로 전의 사이클의 결과에 대하여 AddRoundKey 변환, MixColumns 변환, InvShiftRows 변환, 및 InvSubBytes 변환을 실행하여 얻은 결과를 출력한다. 9번째 사이클(T26 내지 T27)에서, 변형된 라운드 기능 모듈은 AddRoundKey 변환, InvMixColumns 변환, InvShiftRows 변환, InvSubBytes 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 출력한다.Thus, in the 0 th cycle T17 to T18, the modified
전술한 방법으로 선택 신호(171, 170, 및 175)를 제어함으로써 변형된 라운드 기능 모듈(136)은 도 11에 도시된 바와 같이 복호화를 실행할 수 있다.By controlling the selection signals 171, 170, and 175 in the above-described manner, the modified
한편, 키 확장부(132)는 키 준비 기간 이후에 라운드 키 A(162)로서 wkey10을, 라운드 키 B(163)로서 wkey0를 출력한다. 따라서, 복호화 개시 시(T17)에 변 형된 라운드 기능 모듈(136)에 wkey10이 공급된다. 암호화/복호화 개시 신호(158)에 기초하여 복호화의 개시를 검출하면(T17), 키 확장부(132)는 라운드 키 A 레지스터에 유지되는 wkey10을 이용하여 wkey9를 생성하고, 라운드 키 A 레지스터에 wkey9를 유지한다. 따라서, T18에서 wkey9가 변형된 라운드 기능 모듈(136)에 공급된다. T26까지 동일한 방법으로 라운드 키들이 공급된다. 라운드 키 A 레지스터에 wkey1이 유지되고, T26에서 라운드 키 공급이 종료되면(T26), 키 확장부(132)는 키 확장부의 내부 레지스터에 유지되는 wkey10을 라운드 키 A 레지스터에 로딩하여, 다음 복호화의 개시(T27)를 준비한다.On the other hand, the
전술한 바와 같이 키 확장부(132)가 동작하는 때에, 변형된 라운드 기능 모듈(136)은 도 11에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.As described above, when the
제2 실시예에 따른 복호화 기간 동안의 동작은 상기의 방법으로 수행된다. 2번째 블록의 복호화 동작은 1번째 블록에 대한 것과 동일한 방식으로 수행된다. 그 후, 소정의 블록 수만큼 복호화 동작이 반복 수행된다. 도 19a 및 도 19b의 타이밍 차트에서, 2번째 블록의 복호화는 1번째 블록의 복호화의 종료 후에 최단 간격에서 개시된다. AES 코어는 이러한 타이밍에서 모든 블록의 복호화를 실행함으로써 그 최대 성능을 발휘할 수 있다. 그러나, 복호화 간격은 기본적으로 임의의 길이로 설정될 수 있다.The operation during the decoding period according to the second embodiment is performed by the above method. The decoding operation of the second block is performed in the same manner as for the first block. After that, the decoding operation is repeatedly performed as many as a predetermined number of blocks. In the timing charts of Figs. 19A and 19B, decoding of the second block is started at the shortest interval after completion of decoding of the first block. The AES core can achieve its maximum performance by executing decryption of all blocks at this timing. However, the decryption interval can basically be set to any length.
소정 수의 블록들의 복호화가 완전히 종료되어, 암호키와 같은 다른 파라미터를 이용하여 다음 작업이 수행되어야 하는 때에는, 파라미터 설정으로부터 처리가 다시 개시된다.When the decryption of the predetermined number of blocks is completely finished and the next operation is to be performed using another parameter such as an encryption key, the process starts again from the parameter setting.
제2 실시예는 상기 방법으로 구현될 수 있다. 제2 실시예에 있어서, 1 사이클 내에서 실행되어야 하는 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대값은 다소 증가한다. 그러나, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 때로는 1 사이클 시간에 대하여 충분한 여유를 두고 설정되기 때문에, 대다수의 경우에서 문제가 되지는 않는다. 따라서, 대다수의 경우, AES 암호화에 필요한 클록 사이클 수는 1 사이클 감소될 수 있다. 이는 AES 처리 속도를 약 10% 증가시킨다.The second embodiment can be implemented in the above way. In the second embodiment, the maximum value of the sum of the signal processing times for each subblock transform that must be executed in one cycle increases somewhat. However, since the maximum value of the sum of signal processing times for each subblock conversion within each clock cycle period is sometimes set with sufficient margin for one cycle time, this is not a problem in most cases. Thus, in most cases, the number of clock cycles required for AES encryption can be reduced by one cycle. This increases the AES processing speed by about 10%.
이상의 제2 실시예는 어디까지나 본 발명의 일례에 지나지 않고, 본 발명의 효과는 상기 실시예에 한정되는 것은 아니다. The above 2nd Example is only an example of this invention to the last, The effect of this invention is not limited to the said Example.
<제3 실시예>Third Embodiment
도 20은 제3 실시예에 따라서 각 클록 사이클 내에서 실행되는 암호화 및 복호화의 처리 내용을 나타낸 도면이다. 도 20을 참조하면, 사이클 카운트는 AES 처리의 개시 시에 "0"인 클록 사이클 카운트를 나타낸다.20 is a diagram showing the processing contents of encryption and decryption executed in each clock cycle according to the third embodiment. Referring to Fig. 20, the cycle count indicates a clock cycle count that is "0" at the start of AES processing.
제3 실시예의 암호화 처리에 있어서, 0번째 사이클에서는 AddRoundKey 변환, ShiftRows 변환, 및 SubBytes 변환이 실행된다. 1번째 내지 8번째 사이클에서는 AddRoundKey 변환, ShiftRows 변환, SubBytes 변환, 및 MixColumns 변환이 실행된다. 9번째 사이클에서는, MixColumns 변환, 제1 AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, 및 제2 AddRoundKey 변환이 실행된다. 라운드 키로서는, 0번째 사이클에서 wkeyO, 1번째 사이클에서는 wkey1, ..., 8번째 사이클에서는 wkey8가 이용된다. 9번째 사이클에서는, 2개의 라운드 키 wkey9 및 wkey10이 사용된다.In the encryption processing of the third embodiment, AddRoundKey conversion, ShiftRows conversion, and SubBytes conversion are executed in the 0th cycle. In the first to eighth cycles, AddRoundKey transformation, ShiftRows transformation, SubBytes transformation, and MixColumns transformation are executed. In the ninth cycle, MixColumns transformation, first AddRoundKey transformation, SubBytes transformation, ShiftRows transformation, and second AddRoundKey transformation are performed. As the round key, wkeyO is used in the 0th cycle, wkey1 in the 1st cycle, ..., and wkey8 in the 8th cycle. In the ninth cycle, two round keys wkey9 and wkey10 are used.
제3 실시예에 있어서, 전체적으로 종래 기술과 동일한 처리가 실행된다. 그러나, 제3 실시예에 있어서는, 1개 적은 클록 사이클로 AES 암호화를 실행할 수 있다.In the third embodiment, the same processing as in the prior art is executed as a whole. However, in the third embodiment, AES encryption can be executed in clock cycles fewer by one.
다음, 제3 실시예에 따라서 클록 사이클들에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산에 대하여 설명한다. 도 21은 제3 실시예에서 각 클록 사이클 기간에서 각 서브블록 변환에 대한 암호화 처리 시간의 합산과 종래 기술 사이의 비교를 나타낸 도면이다. 세로축은 시간을 나타낸다. 바가 길수록, 처리 시간이 길다. 제3 실시예를 구현하기 위해서는, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 1 사이클 시간보다 작아야 한다. 도 21에 도시된 바와 같이, 각 서브블록 변환의 처리 시간은 SubBytes 변환에서 가장 길고, MixColumns 변환, AddRoundKey 변환, ShiftRows 변환의 순서로 짧다.Next, the sum of the signal processing time for each subblock conversion executed in clock cycles according to the third embodiment will be described. FIG. 21 is a diagram showing a comparison between the sum of the encryption processing times for each subblock transformation in each clock cycle period and the prior art in the third embodiment. The vertical axis represents time. The longer the bar, the longer the processing time. In order to implement the third embodiment, the maximum of the sum of the signal processing times for each subblock transformation within each clock cycle period must be less than one cycle time. As shown in Fig. 21, the processing time of each subblock transform is the longest in the SubBytes transform, and is short in the order of the MixColumns transform, the AddRoundKey transform, and the ShiftRows transform.
제3 실시예에 있어서, AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, MixColumns 변환, 및 제2 AddRoundKey 변환이 실행되는 9번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산은, AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, 및 MixColumns 변환이 실행되는 1번째 내지 8번째 사이클에서 각 서브블록 변환에 대한 신호 처리 시간의 합산, 또는 AddRoundKey 변환, SubBytes 변환, 및 ShiftRows 변환이 실행되는 0번째 사이클에서 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 길다. 따라서, 제3 실시예의 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는, 하나의 AddRoundKey 변환의 처리 시간에 해당 하는 만큼 종래 기술보다 더 크다. 그러나, 하나의 AddRoundKey 변환의 처리 시간은 1 사이클 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 훨씬 짧다. 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 때로는 1 사이클 시간에 대하여 충분한 여유를 갖고 설정된다. 따라서, 종래 기술의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 복호화 처리 시간의 합산의 최대치가 1 사이클 시간보다 짧다면, 본 실시예가 또한 많은 경우에 구현가능한 것으로 상정된다.In the third embodiment, the sum of the signal processing times for each subblock transform in the ninth cycle in which the AddRoundKey transform, SubBytes transform, ShiftRows transform, MixColumns transform, and the second AddRoundKey transform is performed is the AddRoundKey transform, SubBytes transform. , The sum of the signal processing time for each subblock transform in the first to eighth cycles where the ShiftRows transform, and the MixColumns transform are performed, or each subblock transform in the 0th cycle where the AddRoundKey, SubBytes, and ShiftRows transforms are performed. Is longer than the sum of the signal processing times for. Therefore, the maximum value of the sum of the signal processing times for each subblock transform of the third embodiment is larger than the prior art by corresponding to the processing time of one AddRoundKey transform. However, the processing time of one AddRoundKey transformation is much shorter than the sum of the signal processing times for each subblock transformation within one cycle. The maximum sum of the signal processing time for each subblock conversion within each clock cycle period is sometimes set with sufficient margin for one cycle time. Accordingly, it is assumed that this embodiment is also feasible in many cases if the maximum value of the sum of the decoding processing times for each subblock transformation within each clock cycle period of the prior art is shorter than one cycle time.
본 발명은 또한 AES 복호화에도 적용가능하다.The present invention is also applicable to AES decryption.
도 20에 도시된 바와 같이, 제3 실시예의 복호화에 있어서, 0번째 사이클에서 제1 AddRoundKey 변환, InvShiftRows 변환, InvSubBytes 변환, InvMixColumns 변환, 및 제2 AddRoundKey 변환이 실행된다. 1번째 내지 8번째 사이클에서는 AddRoundKey 변환, InvShiftRows 변환, InvSubBytes 변환, 및 InvMixColumns 변환이 실행된다. 9번째 사이클에서는 AddRoundKey 변환, InvShiftRows 변환, 및 InvSubBytes 변환이 실행된다. 라운드 키로서는, 0번째 사이클에서 wkey10 및 wkey9, 1번째 사이클에서 wkey8, ..., 9번째 사이클에서 wkey0가 이용된다.As shown in Fig. 20, in the decryption of the third embodiment, the first AddRoundKey transformation, the InvShiftRows transformation, the InvSubBytes transformation, the InvMixColumns transformation, and the second AddRoundKey transformation are executed in the zeroth cycle. In the first to eighth cycles, AddRoundKey conversion, InvShiftRows conversion, InvSubBytes conversion, and InvMixColumns conversion are executed. In the ninth cycle, the AddRoundKey transformation, InvShiftRows transformation, and InvSubBytes transformation are executed. As the round key, wkey10 and wkey9 in the 0th cycle, wkey8 in the 1st cycle, ..., and wkey0 in the 9th cycle are used.
제3 실시예에 있어서, 전체적으로 종래 기술과 동일한 처리가 실행된다. 그러나, 제3 실시예에 있어서는, 1개 적은 클록 사이클로 AES 복호화를 실행할 수 있다.In the third embodiment, the same processing as in the prior art is executed as a whole. However, in the third embodiment, AES decryption can be executed in clock cycles fewer by one.
다음, 제3 실시예에 따라서 클록 사이클들에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산에 대하여 설명한다. 도 22은 제3 실시예에서 클록 사 이클들에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산과 종래 기술과의 사이의 비교를 나타낸 도면이다. 세로축은 시간을 나타낸다. 바가 길수록, 처리 시간이 길다. 본 실시예를 구현하기 위하여, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 1 사이클 시간보다 작아야 한다. 도 22에 도시된 바와 같이, 각 서브블록 변환의 처리 시간은, InvSubBytes 변환에서 가장 길고, InvMixColumns 변환, AddRoundKey 변환, InvShiftRows 변환의 순서로 짧아진다.Next, the sum of the signal processing time for each subblock conversion executed in clock cycles according to the third embodiment will be described. FIG. 22 is a diagram showing a comparison between the sum of the signal processing time for each subblock conversion executed in clock cycles and the prior art in the third embodiment. The vertical axis represents time. The longer the bar, the longer the processing time. In order to implement this embodiment, the maximum of the sum of the signal processing times for each subblock conversion within each clock cycle period should be less than one cycle time. As shown in Fig. 22, the processing time of each subblock transform is the longest in the InvSubBytes transform, and shortens in the order of the InvMixColumns transform, the AddRoundKey transform, and the InvShiftRows transform.
제3 실시예에 있어서, 제1 AddRoundKey 변환, InvSubBytes 변환, InvShiftRows 변환, InvMixColumns 변환, 및 제2 AddRoundKey 변환이 실행되는 0번째 사이클에서 각 서브블록 변환에 대한 신호 처리 시간의 합산은, AddRoundKey 변환, InvSubBytes 변환, InvShiftRows 변환, 및 InvMixColumns 변환이 실행되는 1번째 내지 8번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산, 또는 AddRoundKey 변환, InvSubBytes 변환, 및 InvShiftRows 변환이 실행되는 9번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 길다. 따라서, 제3 실시예의 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는, 하나의 AddRoundKey 변환의 처리 시간에 해당하는 만큼 종래 기술보다 더 크다. 그러나, 하나의 AddRoundKey 변환의 처리 시간은, 1 사이클에서 각 서브블록 변환에 대한 신호 처리 시간의 합산보다는 훨씬 짧다. 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 때로는 1 사이클 시간에 대하여 충분한 여유를 가지고 설정된다. 따라서, 종래 기술의 각 클록 사이클 기간 내에 서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 1 사이클 시간보다 짧다면, 본 실시예 또한 대다수 경우에서 구현될 수 있는 것으로 상정된다.In the third embodiment, the sum of the signal processing times for each subblock transform in the 0th cycle in which the first AddRoundKey transform, InvSubBytes transform, InvShiftRows transform, InvMixColumns transform, and the second AddRoundKey transform is executed is the AddRoundKey transform, InvSubBytes Summing of signal processing time for each subblock transform in the first to eighth cycles where the transform, InvShiftRows transform, and InvMixColumns transform are performed, or each cycle in the ninth cycle where the AddRoundKey transform, InvSubBytes transform, and InvShiftRows transform are performed. It is longer than the sum of the signal processing times for the subblock transformations. Therefore, the maximum value of the sum of the signal processing time for each subblock transformation of the third embodiment is larger than the prior art by corresponding to the processing time of one AddRoundKey transformation. However, the processing time of one AddRoundKey transformation is much shorter than the sum of the signal processing times for each subblock transformation in one cycle. The maximum of the sum of the signal processing times for each subblock conversion within each clock cycle period is sometimes set with sufficient margin for one cycle time. Therefore, it is assumed that the present embodiment can also be implemented in most cases if the maximum of the sum of the signal processing times for each subblock conversion within each clock cycle period of the prior art is shorter than one cycle time.
상기 제3 실시예의 특징에 대하여 정리한다.The features of the third embodiment are summarized.
종래의 일반적인 구현 방법에 있어서, 규격에 의해 정의된 라운드 기능은 처리에 있어서의 단절로서 간주되어, 암호화 및 복호화가 클록 사이클들에 분산되어 있다. 따라서, 10번째 및 0번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산은 1번째 내지 9번째 사이클 각각에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 짧다. 즉, 각 사이클에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산은 변동된다.In a conventional general implementation method, the round function defined by the specification is regarded as a break in processing, so that encryption and decryption are distributed among clock cycles. Therefore, the sum of the signal processing times for each subblock transform in the 10th and 0th cycles is shorter than the sum of the signal processing times for each subblock transform in each of the 1st to 9th cycles. That is, the sum of the signal processing times for each subblock transform executed in each cycle is varied.
한편, 제3 실시예에서는, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 차이가 감소하도록, 일부 클록 사이클에서의 신호 처리가 증가된다.On the other hand, in the third embodiment, the signal processing in some clock cycles is increased so that the difference in the sum of the signal processing times for each subblock conversion within each clock cycle period is reduced.
제3 실시예에 있어서, 1 사이클에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 다소 증가한다. 따라서, 본 실시예는 종래 기술이 구현될 수 있는 조건하에서 반드시 구현가능할 필요는 없다. 그러나, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 때로는 1 사이클 시간에 대하여 충분한 여유를 두고 설정되기 때문에, 대다수의 경우에서 문제가 되지는 않는다. 대다수의 경우, AES 암호화 또는 복호화에 필요한 클록 사이클 수는 1 사이클 감소될 수 있다. 이는 AES 처리 속도를 약 10% 증가시킨다.In the third embodiment, the maximum of the sum of the signal processing times for each subblock transform executed in one cycle is somewhat increased. Thus, the present embodiment need not necessarily be implemented under the conditions in which the prior art can be implemented. However, since the maximum value of the sum of signal processing times for each subblock conversion within each clock cycle period is sometimes set with sufficient margin for one cycle time, this is not a problem in most cases. In most cases, the number of clock cycles required for AES encryption or decryption can be reduced by one cycle. This increases the AES processing speed by about 10%.
다음, AES 암호화 및 복호화를 구현하기 위한 AES 코어의 회로 구성에 대하여 설명한다. 도 23은 본 실시예에 따른 AES 코어의 블록도이다. 도 23을 참조하면, AES 코어(141)는 AES 처리를 실행한다. 키 확장부(142)는 암호키로부터 AES 암호화 및 복호화에 필요한 라운드 키를 생성하여 이 라운드 키를 출력한다. 암호화/복호화부(143)는 키 확장부(142)로부터 공급되는 라운드 키를 이용하여 128 비트 평문 데이터의 암호화 또는 128 비트 암호문 데이터의 복호화를 실행한다. 제어부(144)는 AES 코어(141) 외부의 유닛으로부터 제어 신호를 수신하여, 키 확장부(142)와 암호화/복호화부(143)의 동작을 제어하기 위한 신호들과 동작 완료를 AES 코어(141) 외부 유닛에 통지하기 위한 신호를 발생시킨다.Next, a circuit configuration of the AES core for implementing AES encryption and decryption will be described. 23 is a block diagram of an AES core according to the present embodiment. Referring to Fig. 23, the
도 23의 구성요소들과 신호 라인들은, 제1 및 제2 실시예에서 기재한 바와 동일하므로, 그 설명은 생략한다.Since the components and signal lines of FIG. 23 are the same as those described in the first and second embodiments, description thereof is omitted.
다음, 암호화/복호화부(143)에 대하여 설명한다. 도 24는 암호화/복호화부(143)를 설명하기 위한 블록도이다. 도 24를 참조하면, 변형된 라운드 기능 모듈(145)은 선택 신호(170 및 175)의 제어 하에서 라운드 키 A(162) 및 라운드 키 B(163)을 이용하여 1 사이클의 암호화를 실행한다. 변형된 라운드 기능 모듈(146)은 선택 신호(170 및 175)의 제어하에서 라운드 키 A(162) 및 라운드 키 B(163)를 이용하여 복호화를 실행한다.Next, the encryption /
상기 구성에 있어서, 선택 신호(171)가 니게이트되는 때에, 암호화/복호화부(143)의 선택기(109)는 입력 신호(150)를 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다.In the above configuration, when the
도 24의 구성요소들과 신호 라인들은, 제1 실시예에 설명된 바와 동일하여, 그 설명은 생략한다.The components and signal lines in FIG. 24 are the same as those described in the first embodiment, and description thereof is omitted.
다음, 변형된 라운드 기능 모듈(145)에 대하여 설명한다. 도 25는 변형된 라운드 기능 모듈(145)의 블록도이다. 도 25를 참조하면, MixColumns 변환 모듈(113)은 입력 신호(165)를 수신하여, MixColumns 변환을 실행한다. 선택기(137)는 선택 신호(175)에 따라서 입력 신호(165)와 MixColumns 변환 모듈(113)의 출력 중 하나를 선택하여 출력한다. AddRoundKey 변환 모듈(110)은 선택기(137)의 출력과 라운드 키 A(162)를 수신하여, AddRoundKey 변환을 실행한다. SubBytes 변환 모듈(111)은 AddRoundKey 변환 모듈(110)의 출력을 수신하여, SubBytes 변환을 실행한다. ShiftRows 변환 모듈(112)은 SubBytes 변환 모듈(111)의 출력을 수신하여, ShiftRows 변환을 실행한다. AddRoundKey 변환 모듈(114)은 ShiftRows 변환 모듈(112)의 출력과 라운드 키 B(163)를 수신하여, AddRoundKey 변환을 실행한다. 선택기(115)는 선택 신호(170)에 따라서 ShiftRows 변환 모듈(112)의 출력과 AddRoundKey 변환 모듈(114)의 출력 중 하나를 선택하여 출력한다. 선택기(115)의 출력 신호가 변형된 라운드 기능 모듈(145)의 출력 신호이다.Next, the modified
상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 ShiftRows 변환 모듈(112)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다. 선택 신호(175)가 니게이트되는 때에, 선택기(137)는 MixColumns 변환 모듈(113)의 출력을 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택 기(137)는 입력 신호(165)를 선택하여 출력한다.In the above configuration, when the
다음, 변형된 라운드 기능 모듈(146)에 대하여 설명한다. 도 26은 변형된 라운드 기능 모듈(146)의 블록도이다. 도 26을 참조하면, AddRoundKey 변환 모듈(121)은 입력 신호(165)와 라운드 키 A(162)를 수신하여, AddRoundKey 변환을 실행한다. 선택기(118)는 선택 신호(170)에 따라서 입력 신호(165)와 AddRoundKey 변환 모듈(121)의 출력 중 하나를 선택하여 출력한다. InvShiftRows 변환 모듈(119)은 선택기(118)의 출력을 수신하여, InvShiftRows 변환을 실행한다. InvSubBytes 변환 모듈(120)은 InvShiftRows 변환 모듈(119)의 결과를 수신하여, InvSubBytes 변환을 실행한다. AddRoundKey 변환 모듈(117)은 InvSubBytes 변환 모듈(120)의 출력과 라운드 키 B(163)를 수신하여, AddRoundKey 변환을 실행한다. InvMixColumns 변환 모듈(116)은 AddRoundKey 변환 모듈(117)의 출력을 수신하여 InvMixColumns 변환을 실행한다. 선택기(138)는 선택 신호(175)에 따라서 InvMixColumns 변환 모듈(116)의 출력과 AddRoundKey 변환 모듈(117)의 출력 중 하나를 선택하여 출력한다. 선택기(138)의 출력은 변형된 라운드 기능 모듈(146)의 출력이다.Next, the modified
상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(118)는 입력 신호(165)를 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(118)는 AddRoundKey 변환 모듈(121)의 출력을 선택하여 출력한다. 선택 신호(175)가 니게이트되는 때에, 선택기(138)는 InvMixColumns 변환 모듈(116)의 출력을 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(138)는 AddRoundKey 변환 모듈(117)의 출력을 선택하여 출력한다.In the above configuration, when the
다음, 상기 구성에 있어서의 암호화 동작에 대하여 설명한다. 도 27a 및 도 27b는 제2 실시예에 따른 암호화의 타이밍 차트이다. 도 27a 및 도 27b를 참조하면, 가로축이 시간을 나타낸다. 클록 펄스의 리딩 에지에 대하여 타이밍 명칭 T01, T02, ..., T33이 할당된다. 도 27a의 좌단의 세로축에 있는 3 자리수는 신호 라인을 나타내며, 도 23 내지 도 26에 사용되는 신호 라인의 참조 번호와 일대일 대응한다.Next, the encryption operation in the above configuration will be described. 27A and 27B are a timing chart of encryption according to the second embodiment. Referring to Figs. 27A and 27B, the horizontal axis represents time. Timing names T01, T02, ..., T33 are assigned to the leading edge of the clock pulse. Three digits on the vertical axis of the left end of FIG. 27A represent signal lines and correspond one-to-one with reference numbers of the signal lines used in FIGS. 23 to 26.
도 27a 및 도 27b의 타이밍 차트에 도시된 암호화 동작은 4개의 부분으로 대별된다. 1번째 부분은 암호키 등의 각종 파라미터를 설정하는 파라미터 설정 기간(T01 내지 T06)이다. 2번째 부분은 wkey0를 생성하여 이를 레지스터에 유지시키는 키 준비 기간(T06 내지 T17)이다. 3번째 부분은 1번째 블록의 암호화 기간(T17 내지 T27)이다. 4번째 부분은 2번째 블록의 암호화 기간이다(T27부터).The encryption operation shown in the timing chart of Figs. 27A and 27B is roughly divided into four parts. The first part is parameter setting periods T01 to T06 for setting various parameters such as encryption keys. The second part is a key preparation period (T06 to T17) for generating wkey0 and holding it in a register. The third portion is the encryption periods T17 to T27 of the first block. The fourth part is the encryption period of the second block (from T27).
파라미터 설정 기간의 역할, 개시 조건, 및 종료 조건은 제1 실시예와 동일하다. 키 준비 기간은 T06에서부터 T17까지이며, 그 개시 조건과 종료 조건은 제1 실시예와 동일하다. 각 회로의 동작 또한 제1 실시예와 동일하다. 그러나, 제어부(144)는 키 준비 기간(T17)의 끝에서 선택 신호(175)를 어서트시킨다.The role, start condition, and end condition of the parameter setting period are the same as in the first embodiment. The key preparation period is from T06 to T17, and the start condition and end condition are the same as in the first embodiment. The operation of each circuit is also the same as in the first embodiment. However, the
1번째 블록의 암호화 기간은 T17에서부터 T27까지이며, 그 개시 조건과 종료 조건은 제1 실시예와 동일하다. 각 회로의 동작 또한 제1 실시예와 거의 동일하다.The encryption period of the first block is from T17 to T27, and its start condition and end condition are the same as in the first embodiment. The operation of each circuit is also almost the same as in the first embodiment.
제어부(144)는 선택 신호(175)를 암호화의 종료 시에 어서트시키고, 암호화 의 1번째 사이클에서 니게이트시킨다(T18 또는 T28). 제어부(144)는 또한 암호화의 최종 사이클(T16)에서 선택 신호(170)를 어서트시키고, 암호화의 종료시(T17)에 니게이트시킨다. 제어부(144)는 또한 암호화의 1번째 사이클에서 선택 신호(171)를 어서트시키고, 암호화의 종료시에 니게이트시킨다.The
회로 구성에 대하여 설명한 바와 같이, 선택 신호(171)가 니게이트되는 때에, 선택기(109)는 입력 신호(150)을 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다. 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 ShiftRows 변환 모듈(112)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다. 선택 신호(175)가 니게이트되는 때에, 선택기(137)는 MixColumns 변환 모듈(113)의 출력을 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(137)는 입력 신호(165)를 선택하여 출력한다.As described with respect to the circuit configuration, when the
따라서, 0번째 사이클(T17 내지 T18)에서, 변형된 라운드 기능 모듈(145)은 입력 신호(150)에 대하여 AddRoundKey 변환, SubBytes 변환, 및 ShiftRows 변환을 실행한다. 1번째 사이클에서부터, 변형된 라운드 기능 모듈은 바로 전의 사이클의 결과에 대하여 SubBytes 변환, ShiftRows 변환, MixColumns 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 출력한다. 9번째 사이클(T26 내지 T27)에서, 변형된 라운드 기능 모듈은 MixColumns 변환, AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 출력한다.Thus, in the 0 th cycle T17 to T18, the modified
전술한 방법으로 선택 신호(171, 170, 및 175)를 제어함으로써 변형된 라운 드 기능 모듈(145)은 도 20에 도시된 바와 같이 암호화를 실행할 수 있다.By controlling the selection signals 171, 170, and 175 in the manner described above, the modified
한편, 키 확장부(142)는 키 준비 기간 이후에 라운드 키 A(162)로서 wkey0을, 라운드 키 B(163)로서 wkey10를 출력한다. 따라서, 암호화 개시 시(T17)에 변형된 라운드 기능 모듈(145)에 wkey0가 공급된다. 암호화/복호화 개시 신호(158)에 기초하여 암호화의 개시를 검출하면(T17), 키 확장부(142)는 라운드 키 A 레지스터에 유지되는 wkey0을 이용하여 wkey1를 생성하고, 라운드 키 A 레지스터에 wkey1를 유지한다. 따라서, T18 타이밍에서 wkey1가 변형된 라운드 기능 모듈(145)에 공급된다. T26까지 동일한 방법으로 라운드 키들이 공급된다. T26에서, 라운드 키 B(163)로서 wkey10도 공급된다. 라운드 키 A 레지스터에 wkey10이 유지되고, T26에서 라운드 키 공급이 종료되면, 키 확장부(142)는 암호화 키(152)로서 외부에 계속 공급되는 wkey0를 라운드 키 A 레지스터에 유지하여, 다음 암호화의 개시에 대하여 준비한다(T27).On the other hand, the
전술한 바와 같이 키 확장부(142)가 동작하는 때에, 변형된 라운드 기능 모듈(145)은 도 20에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.As described above, when the
제3 실시예에 따른 암호화 기간 동안의 동작은 상기의 방법으로 수행된다. 2번째 블록의 복호화 동작은 1번째 블록에 대한 것과 동일한 방식으로 수행된다. 그 후, 소정의 블록 수만큼 암호화 동작이 반복 수행된다. 도 27a 및 도 27b의 타이밍 차트에서, 2번째 블록의 암호화는 1번째 블록의 암호화의 종료 후에 최단 간격에서 개시된다. AES 코어는 이러한 타이밍에서 모든 블록의 암호화를 실행함으로써 그 최대 성능을 발휘할 수 있다. 그러나, 암호화 간격은 기본적으로 임의의 길이로 설정될 수 있다.The operation during the encryption period according to the third embodiment is performed by the above method. The decoding operation of the second block is performed in the same manner as for the first block. After that, the encryption operation is repeatedly performed as many as a predetermined number of blocks. In the timing charts of Figs. 27A and 27B, encryption of the second block is started at the shortest interval after termination of encryption of the first block. The AES core can achieve its maximum performance by executing encryption of all blocks at this timing. However, the encryption interval can basically be set to any length.
소정 수의 블록들의 암호화가 완전히 종료되어, 암호키와 같은 다른 파라미터를 이용하여 다음 작업이 수행되어야 하는 때에는, 파라미터 설정으로부터 처리가 다시 개시된다.When the encryption of the predetermined number of blocks is completely terminated and the next operation is to be performed using another parameter such as an encryption key, the process starts again from the parameter setting.
다음, 본 실시예의 복호화 동작에 대하여 설명한다. 도 28a 및 도 28b는 본 실시예에 따른 복호화의 타이밍 차트이다. 도 28a 및 도 28b를 참조하면, 가로축이 시간을 나타낸다. 클록 펄스의 리딩 에지에 대하여 타이밍 명칭 T01, T02, ..., T33이 할당된다. 도 28a의 좌단의 세로축 상의 3 자리수는 신호 라인을 나타내며, 도 23 내지 도 26에서 사용되는 신호 라인의 참조 번호와 일대일 대응한다.Next, the decoding operation of this embodiment will be described. 28A and 28B are timing charts of decoding according to the present embodiment. 28A and 28B, the abscissa represents time. Timing names T01, T02, ..., T33 are assigned to the leading edge of the clock pulse. Three digits on the vertical axis of the left end of FIG. 28A represent signal lines and correspond one-to-one with reference numbers of the signal lines used in FIGS. 23 to 26.
도 28a 및 도 28b의 타이밍 차트에 도시된 복호화 동작은 4개 부분으로 대별된다. 1번째 부분은 암호키와 같은 각종 파라미터를 설정하는 파라미터 설정 기간(T01 내지 T06)이다. 2번째 부분은 wkey0를 생성하여 이를 레지스터에 유지하는 키 준비 기간(T06 내지 T17)이다. 3번째 부분은 1번째 블록의 암호화 기간(T17 내지 T27)이다. 4번째 부분은 2번째 블록의 암호화 기간이다(T27부터).The decoding operation shown in the timing chart of Figs. 28A and 28B is roughly divided into four parts. The first part is parameter setting periods T01 to T06 for setting various parameters such as encryption keys. The second part is a key preparation period (T06 to T17) for generating wkey0 and holding it in a register. The third portion is the encryption periods T17 to T27 of the first block. The fourth part is the encryption period of the second block (from T27).
파라미터 설정 기간의 역할, 개시 조건, 및 종료 조건은 제1 실시예와 동일하다. 키 준비 기간은 T06에서부터 T17까지이며, 그 개시 조건과 종료 조건은 제1 실시예와 동일하다. 각 회로의 동작 또한 제1 실시예와 동일하다. 그러나, 제어부(144)는 키 준비 기간의 종료시(T17) 선택 신호(170)를 어서트시킨다.The role, start condition, and end condition of the parameter setting period are the same as in the first embodiment. The key preparation period is from T06 to T17, and the start condition and end condition are the same as in the first embodiment. The operation of each circuit is also the same as in the first embodiment. However, the
1번째 블록의 암호화 기간은 T17에서부터 T27까지이며, 그 개시 조건과 종료 조건은 제1 실시예와 동일하다. 각 회로의 동작 또한 제1 실시예와 거의 동일하 다.The encryption period of the first block is from T17 to T27, and its start condition and end condition are the same as in the first embodiment. The operation of each circuit is also almost the same as in the first embodiment.
제어부(144)는 선택 신호(170)를 복호화의 종료 시에 어서트시키고, 복호화의 1번째 사이클에서 니게이트시킨다(T18 또는 T28). 제어부(144)는 또한 복호화의 최종 사이클(T16)에서 선택 신호(175)를 어서트시키고, 복호화의 종료시(T17)에 니게이트시킨다. 제어부(144)는 또한 복호화의 1번째 사이클에서 선택 신호(171)를 어서트시키고, 복호화의 종료시에 니게이트시킨다.The
회로 구성에 대하여 설명한 바와 같이, 선택 신호(171)가 니게이트되는 때에, 선택기(109)는 입력 신호(150)를 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다. 선택 신호(170)가 니게이트되는 때에, 선택기(118)는 입력 신호(165)를 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(118)는 AddRoundKey 변환 모듈(121)의 출력을 선택하여 출력한다. 선택 신호(175)가 니게이트되는 때에, 선택기(138)는 InvMixColumns 변환 모듈(116)의 출력을 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(138)는 AddRoundKey 변환 모듈(117)의 출력을 선택하여 출력한다.As described with respect to the circuit configuration, when the
따라서, 0번째 사이클(T17 내지 T18)에서, 변형된 라운드 기능 모듈(146)은 입력 신호(150)에 대하여 AddRoundKey 변환, InvShiftRows 변환, InvSubBytes 변환, AddRoundKey 변환, 및 InvMixColumns 변환을 실행한다. 1번째 사이클에서부터, 변형된 라운드 기능 모듈은 바로 전의 사이클의 결과에 대하여 InvShiftRows 변환, InvSubBytes 변환, AddRoundKey 변환, InvMixColumns 변환을 실행하여 얻은 결과를 출력한다. 9번째 사이클(T26 내지 T27)에서, 변형된 라운드 기능 모듈은 InvShiftRows 변환, InvSubBytes 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 출력한다.Therefore, in the 0 th cycle T17 to T18, the modified
전술한 방법으로 선택 신호(171, 170, 및 175)를 제어함으로써 변형된 라운드 기능 모듈(146)은 도 20에 도시된 바와 같이 복호화를 실행할 수 있다.By controlling the selection signals 171, 170, and 175 in the above-described manner, the modified
한편, 키 확장부(142)는 키 준비 기간 이후에 라운드 키 A(162)로서 wkey9을, 라운드 키 B(163)로서 wkey10를 출력한다. 따라서, 복호화 개시 시(T17)에 변형된 라운드 기능 모듈(146)에 wkey10 및 wkey9가 공급된다. 암호화/복호화 개시 신호(158)에 기초하여 복호화의 개시를 검출하면(T17), 키 확장부(142)는 라운드 키 A 레지스터에 유지되는 wkey9을 이용하여 wkey8를 생성하고, 라운드 키 A 레지스터에 wkey8를 유지한다. 따라서, T18에서 wkey8이 변형된 라운드 기능 모듈(146)에 공급된다. T26까지 동일한 방법으로 라운드 키들이 공급된다. 라운드 키 A 레지스터에 wkey0이 유지되고, T26에서 라운드 키 공급이 종료되면(T26), 키 확장부(142)는 라운드 키 B 레지스터에 유지되는 wkey10을 이용하여 wkey9을 생성하고, 라운드 키 A 레지스터에 wkey9을 유지하여, 다음 복호화의 개시(T27)를 준비한다.On the other hand, the
전술한 바와 같이 키 확장부(142)가 동작하는 때에, 변형된 라운드 기능 모듈(146)은 도 20에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.As described above, when the
본 실시예에 따른 복호화 기간 동안의 동작은 상기의 방법으로 수행된다. 2번째 블록의 복호화 동작은 1번째 블록에 대한 것과 동일한 방식으로 수행된다. 그 후, 소정의 블록 수만큼 복호화 동작이 반복 수행된다. 도 28a 및 도 28b의 타이밍 차트에서, 2번째 블록의 복호화는 1번째 블록의 복호화의 종료 후에 최단 간격에서 개시된다. AES 코어는 이러한 타이밍에서 모든 블록의 복호화를 실행함으로써 그 최대 성능을 발휘할 수 있다. 그러나, 복호화 간격은 기본적으로 임의의 길이로 설정될 수 있다.The operation during the decoding period according to the present embodiment is performed by the above method. The decoding operation of the second block is performed in the same manner as for the first block. After that, the decoding operation is repeatedly performed as many as a predetermined number of blocks. In the timing charts of Figs. 28A and 28B, decoding of the second block is started at the shortest interval after completion of decoding of the first block. The AES core can achieve its maximum performance by executing decryption of all blocks at this timing. However, the decryption interval can basically be set to any length.
소정 수의 블록들의 복호화가 완전히 종료되어, 암호키와 같은 다른 파라미터를 이용하여 다음 작업이 실행되어야 하는 때에는, 파라미터 설정으로부터 처리가 다시 개시된다.When the decryption of the predetermined number of blocks is completely terminated and the next operation is to be executed using another parameter such as an encryption key, the process starts again from the parameter setting.
제3 실시예는 상기 방법으로 구현될 수 있다. 제3 실시예에 있어서, 1 사이클 내에서 실행되어야 하는 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대값은 다소 증가한다. 그러나, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 때로는 1 사이클 시간에 대하여 충분한 여유를 두고 설정되기 때문에, 대다수의 경우에서 문제가 되지는 않는다. 따라서, 대다수의 경우, AES 암호화 및 복호화에 필요한 클록 사이클 수는 1 사이클 감소될 수 있다. 이는 AES 처리 속도를 약 10% 증가시킨다.The third embodiment can be implemented in this way. In the third embodiment, the maximum value of the summation of the signal processing times for each subblock transform that must be executed in one cycle increases somewhat. However, since the maximum value of the sum of signal processing times for each subblock conversion within each clock cycle period is sometimes set with sufficient margin for one cycle time, this is not a problem in most cases. Thus, in most cases, the number of clock cycles required for AES encryption and decryption can be reduced by one cycle. This increases the AES processing speed by about 10%.
전술한 바와 같이, 본 발명의 개념을 적용함으로써 기본적인 제1 실시예에 더하여 다수의 실시예들이 얻어질 수 있다. 그 예로는 제2 및 제3 실시예가 있다. 8번째 사이클에서 AddRoundKey 변환을 2회 실행하는 구성을 나타낸 도 26에 도시된 바와 같이, 암호화의 임의의 사이클에서 AddRoundKey 변환을 2회 실행하는 구성 또한 가능하다. 실시예들은 단지 본 발명의 예시를 위한 것으로서, 본 발명의 효과 는 실시예들에 기재된 바에 한하지 않는다.As mentioned above, a number of embodiments can be obtained in addition to the basic first embodiment by applying the concept of the present invention. Examples are the second and third embodiments. As shown in Fig. 26 showing the configuration of executing AddRoundKey conversion twice in the eighth cycle, the configuration of executing AddRoundKey conversion twice in any cycle of encryption is also possible. The examples are for illustrative purposes only, and the effects of the present invention are not limited to the examples.
<제4 실시예>Fourth Example
제4 실시예에서는, FIPS197에 기재된 등가 역 암호(Equivalent Inverse Cipher)를 이용하여 복호화가 실행된다.In the fourth embodiment, decryption is performed using the equivalent inverse cipher described in FIPS197.
도 29는 종래 기술과 제4 실시예에 있어서의 클록 사이클들에서 실행되는 암호화의 처리 내용들 사이의 비교를 나타낸다.Fig. 29 shows a comparison between the processing contents of encryption executed in clock cycles in the prior art and the fourth embodiment.
도 29을 참조하면, 사이클 카운트는 AES 처리의 개시시에 "0"인 클록 사이클 카운트를 나타낸다. Referring to Fig. 29, the cycle count indicates a clock cycle count that is "0" at the start of AES processing.
본 실시예에 있어서, 0번째 내지 8번째 사이클에서는 AddRoundKey 변환, ShiftRows 변환, SubBytes 변환, 및 MixColumns 변환이 실행된다. 9번째 사이클에서는 제1 AddRoundKey 변환, ShiftRows 변환, SubBytes 변환, 및 제2 AddRoundKey 변환이 실행된다. 라운드 키로서는, 0번째 사이클에서 wkeyO, l번째 사이클에서는 wkeyl, ..., 8번째 사이클에서는 wkey8가 사용된다. 9번째 사이클에서는 2개의 라운드 키 wkey9 및 wkeylO가 사용된다.In the present embodiment, AddRoundKey conversion, ShiftRows conversion, SubBytes conversion, and MixColumns conversion are executed in the 0th to 8th cycles. In the ninth cycle, the first AddRoundKey transformation, the ShiftRows transformation, the SubBytes transformation, and the second AddRoundKey transformation are executed. As the round key, wkeyO is used in the 0th cycle, wkeyl in the 1st cycle, ..., and wkey8 in the 8th cycle. In the ninth cycle, two round keys wkey9 and wkeylO are used.
제4 실시예에서는, 종래 기술과 동일한 처리가 전체적으로 실행된다. 그러나, 제4 실시예에서는, AES 암호화를 l개 적은 클록 사이클로 실행할 수 있다. In the fourth embodiment, the same processing as in the prior art is executed as a whole. However, in the fourth embodiment, AES encryption can be executed in clock cycles fewer by one.
다음, 제4 실시예에 따라서 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 암호화 처리 시간의 합산에 대하여 설명한다. 도 31은 종래 기술과 제4 실시예의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 암호화 처리 시간의 합산 사이의 비교를 나타낸 도면이다. 세로축은 시간을 나타낸다. 바가 길수록, 처 리 시간이 길다. 제4 실시예를 구현하기 위하여, 각 클록 사이클 기간 내에서 각 서브블록 변환의 신호 처리 시간의 합산의 최대치가 1 클록 사이클 시간보다 작아야 한다. 도 31에 도시된 바와 같이, 각 서브블록 변환의 처리 시간은 SubBytes 변환이 가장 길고, MixColumns 변환, AddRoundKey 변환, ShiftRows 변환의 순서로 짧다.Next, according to the fourth embodiment, the sum of the encryption processing times for each subblock conversion within each clock cycle period will be described. FIG. 31 is a diagram showing a comparison between the sum of the encryption processing time for each subblock transformation within each clock cycle period of the prior art and the fourth embodiment. FIG. The vertical axis represents time. The longer the bar, the longer the processing time. In order to implement the fourth embodiment, the maximum of the sum of the signal processing times of each subblock conversion within each clock cycle period must be less than one clock cycle time. As shown in Fig. 31, the processing time of each subblock transform has the longest SubBytes transform, and is short in the order of MixColumns transform, AddRoundKey transform, and ShiftRows transform.
제4 실시예에 있어서, AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, MixColumns 변환이 실행되는 0번째 내지 8번째 사이클 각각에서 각 서브블록 변환에 대한 신호 처리 시간의 합산이, 제1 AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, 제2 AddRoundKey 변환이 실행되는 9번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 더 길다. 따라서, 제4 실시예에서 1 사이클에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 종래 기술과 동일하다. 1 사이클에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 종래 기술에서의 1 사이클 시간보다 짧다면, 본 실시예 또한 구현될 수 있다.In the fourth embodiment, the sum of the signal processing time for each subblock transform in each of the 0th to 8th cycles in which AddRoundKey transform, SubBytes transform, ShiftRows transform, and MixColumns transform is performed is performed by the first AddRoundKey transform, SubBytes transform, It is longer than the sum of the signal processing times for each subblock transform in the ninth cycle in which the ShiftRows transform and the second AddRoundKey transform are performed. Therefore, in the fourth embodiment, the maximum value of the sum of the signal processing times for each subblock transform executed in one cycle is the same as in the prior art. If the maximum value of the sum of the signal processing times for each subblock transform executed in one cycle is shorter than one cycle time in the prior art, the present embodiment can also be implemented.
본 발명은 AES 복호화에 대하여도 적용가능하다.The present invention is also applicable to AES decryption.
도 30은 제4 실시예의 클록 사이클들에서 실행되는 복호화의 처리 내용과 종래 기술의 것과의 비교를 나타낸다.Fig. 30 shows a comparison between the processing contents of decryption executed in clock cycles of the fourth embodiment and those of the prior art.
도 30을 참조하면, 사이클 카운트는 AES의 처리의 개시에서 "0"인 클록 사이클 카운트를 나타낸다. 변형된 복호화 키 wkeyi'(i는 라운드 수)는 FIPS197에 기재된 등가 역암호(Equivalent Inverse Cipher)에 필요한 라운드 키이다.Referring to Fig. 30, the cycle count indicates a clock cycle count that is "0" at the start of the processing of the AES. The modified decryption key wkeyi '(i is the number of rounds) is the round key required for the equivalent inverse cipher described in FIPS197.
제4 실시예에 있어서, 0번째 내지 8번째 사이클에서는 AddRoundKey 변환, InvShiftRows 변환, InvSubBytes 변환, 및 InvMixColumns 변환이 실행된다. 9번째 사이클에서는 제1 AddRoundKey 변환, InvShiftRows 변환, InvSubBytes 변환, 및 제2 AddRoundKey 변환이 실행된다. 라운드 키로서, 0번째 사이클에서는 wkey10, 1번째 사이클에서는 wkey9', ..., 8번째 사이클에서는 wkey2'이 사용된다. 9번째 사이클에서는 2개의 라운드 키 wkey1' 및 wkey0가 사용된다.In the fourth embodiment, AddRoundKey transformation, InvShiftRows transformation, InvSubBytes transformation, and InvMixColumns transformation are performed in the 0th to 8th cycles. In the ninth cycle, the first AddRoundKey transformation, the InvShiftRows transformation, the InvSubBytes transformation, and the second AddRoundKey transformation are executed. As the round key, wkey10 is used in the 0th cycle, wkey9 'in the 1st cycle, ..., and wkey2' in the 8th cycle. In the ninth cycle, two round keys wkey1 'and wkey0 are used.
제4 실시예에서, 종래 기술과 동일한 처리가 전체적으로 실행된다. 그러나, 제4 실시예에서는, AES 복호화를 1개 적은 클록 사이클로 실행할 수 있다.In the fourth embodiment, the same processing as in the prior art is executed as a whole. However, in the fourth embodiment, AES decryption can be executed in clock cycles fewer by one.
다음, 제4 실시예에 따라서 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 복호화 처리 시간의 합산에 대하여 설명한다. 도 31은 제4 실시예에서의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 복호화 처리 시간의 합산과 종래 기술과의 비교를 나타낸 도면이다. 세로축은 시간을 나타낸다. 바가 길수록, 처리 시간이 더 길다. 본 실시예를 구현하기 위하여, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 1 사이클 시간보다 작아야 한다. 도 31에 도시된 바와 같이, 각 서브블록 변환의 처리 시간은 InvSubBytes 변환이 가장 길고, InvMixColumns 변환, AddRoundKey 변환, InvShiftRows 변환의 순서로 짧다.Next, the sum of the decoding processing time for each subblock conversion within each clock cycle period will be described according to the fourth embodiment. FIG. 31 is a diagram showing the sum of decoding processing time for each subblock transformation and comparison with the prior art in each clock cycle period in the fourth embodiment. The vertical axis represents time. The longer the bar, the longer the processing time. In order to implement this embodiment, the maximum of the sum of the signal processing times for each subblock conversion within each clock cycle period must be less than one cycle time. As shown in Fig. 31, the processing time of each subblock transform is the longest in InvSubBytes transform, and is short in the order of InvMixColumns transform, AddRoundKey transform, and InvShiftRows transform.
제4 실시예에서, AddRoundKey 변환, InvSubBytes 변환, InvShiftRows 변환, 및 InvMixColumns 변환이 실행되는 0번째 내지 8번째 사이클 각각에서 각 서브블록 변환에 대한 신호 처리 시간의 합산은, 제1 AddRoundKey 변환, InvSubBytes 변환, InvShiftRows 변환, 및 제2 AddRoundKey 변환이 실행되는 9번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 길다. 따라서, 본 실시예에서 1 클록 사이클 내에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 종래 기술과 동일하다. 1 사이클에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 종래 기술의 1 사이클 시간보다 짧다면, 본 실시예가 또한 구현될 수 있다. In the fourth embodiment, the sum of the signal processing times for each subblock transform in each of the 0th to 8th cycles in which the AddRoundKey transform, InvSubBytes transform, InvShiftRows transform, and InvMixColumns transform are performed is performed by the first AddRoundKey transform, InvSubBytes transform, It is longer than the sum of the signal processing time for each subblock transform in the ninth cycle in which the InvShiftRows transform and the second AddRoundKey transform are executed. Therefore, in the present embodiment, the maximum value of the sum of the signal processing times for each subblock conversion executed within one clock cycle is the same as in the prior art. If the maximum value of the summation of the signal processing times for each subblock transform executed in one cycle is shorter than one cycle time in the prior art, this embodiment can also be implemented.
제4 실시예의 전술한 특징들에 대하여 정리한다.The above-mentioned features of the fourth embodiment are summarized.
종래의 일반적인 구현 방법에서, 규격에 정의되는 라운드 기능은 처리에 있어서의 단절로서 간주되며, 암호화 및 복호화가 클록 사이클들에 분산된다. 따라서, 10번째와 0번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산이 1번째 내지 9번째 사이클 각각의 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 더 짧다. 즉, 각 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산은 변동한다.In the conventional general implementation method, the round function defined in the standard is regarded as a break in processing, and encryption and decryption are distributed among clock cycles. Thus, the sum of the signal processing times for each subblock transform in the 10th and 0th cycles is shorter than the sum of the signal processing times for each subblock transform in each of the 1st to 9th cycles. In other words, the sum of the signal processing times for each subblock transform in each cycle varies.
한편, 제4 실시예에서는, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산 사이의 차이가 최소가 되도록 일부 클록 사이클들에서의 신호 처리가 증가된다. 본 발명에 있어서, AES 암호화 또는 복호화에 필요한 클록 사이클 수는 1 사이클에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산을 증가시키지 않고 1 사이클 감소된다. 이는 AES 처리 속도를 약 10% 증가시킨다.On the other hand, in the fourth embodiment, the signal processing in some clock cycles is increased so that the difference between the sum of the signal processing times for each subblock conversion within each clock cycle period is minimized. In the present invention, the number of clock cycles required for AES encryption or decryption is reduced by one cycle without increasing the sum of the signal processing time for each subblock transformation executed in one cycle. This increases the AES processing speed by about 10%.
다음, AES 암호화 및 복호화를 구현하기 위한 AES 코어의 회로 구성에 대하 여 설명한다.Next, a circuit configuration of the AES core for implementing AES encryption and decryption will be described.
도 32는 제4 실시예에 따른 AES 코어의 블록도이다.32 is a block diagram of an AES core according to a fourth embodiment.
도 32를 참조하면, AES 코어(201)는 AES 처리를 실행한다. 키 확장부(202)는 암호키로부터 AES 암호화 및 복호화에 필요한 라운드 키를 생성하여, 이 라운드 키를 출력한다. 암호화/복호화부(203)는 키 확장부(202)로부터 공급되는 라운드 키를 이용하여 128 비트 평문 데이터의 암호화 또는 128 비트 암호문 데이터의 복호화를 실행한다. 제어부(204)는 AES 코어(201) 외부의 유닛으로부터 제어 신호를 수신하여, 키 확장부(202) 및 암호화/복호화부(203)의 동작을 제어하기 위한 신호들과 AES 코어(201) 외부의 유닛에 동작의 완료를 통지하기 위한 신호를 생성한다.Referring to Fig. 32, the
도 32의 구성요소들과 신호 라인들은 제1 실시예에 기재된 바와 동일하며, 그 설명은 생략한다.The components and signal lines in Fig. 32 are the same as those described in the first embodiment, and the description thereof is omitted.
다음, 암호화/복호화부(203)를 설명한다. 도 33은 암호화/복호화부(203)의 블록도이다. 도 33을 참조하면, 변형된 라운드 기능 모듈(205)은 선택 신호(170), 암호화/복호화 선택 신호(153), 및 선택 신호(175)의 제어 하에서 라운드 키 A(162) 및 라운드 키 B(163)를 이용하여 1 사이클 분의 암호화 또는 복호화를 실행한다.Next, the encryption /
상기 구성에 있어서, 선택 신호(171)가 니게이트되는 때에, 선택기(109)는 입력 신호(150)를 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다.In the above configuration, when the
도 33의 구성요소들과 신호 라인들은 제1 실시예에 기재된 바와 동일하며, 그 설명은 생략한다.The components and signal lines in FIG. 33 are the same as those described in the first embodiment, and description thereof is omitted.
다음, 변형된 라운드 기능 모듈(205)에 대하여 설명한다. 도 34은 변형된 라운드 기능 모듈(205)의 블록도이다. 도 34을 참조하면, AddRoundKey 변환 모듈(110)은 입력 신호(165)와 라운드 키 A(162)를 수신하여, AddRoundKey 변환을 실행한다. SubBytes/InvSubBytes 변환 모듈(222)은 AddRoundKey 변환 모듈(110)의 출력을 수신하여, 암호화/복호화 선택 신호(153)에 따라서 SubBytes 변환과 InvSubBytes 변환 중 하나를 실행한다. ShiftRows/InvShifRows 변환 모듈(223)은 SubBytes/InvSubBytets 변환 모듈(222)의 출력을 수신하여, 암호화/복호화 선택 신호(153)에 따라서 ShiftRows 변환과 InvShiftRows 변환 중 하나를 실행한다. MixColumns/InvMixColumn 변환 모듈(224)은 ShiftRows/InvShiftRows 변환 모듈(223)의 출력을 수신하여, 암호화/복호화 선택 신호(153)에 따라서 MixColumns 변환과 InvMixColumns 변환 중 하나를 실행한다. AddRoundKey 변환 모듈(114)은 ShiftRows/InvShiftRows 변환 모듈(223)의 출력을 수신하여, AddRoundKey 변환을 실행한다. 선택기(115)는 선택 신호(170)에 따라서 MixColumns/InvMixColumns 변환 모듈(224)의 출력과 AddRoundKey 변환 모듈(114)의 출력 중 하나를 선택하여 출력한다. 선택기(115)의 출력 신호는 변형된 라운드 기능 모듈(205)의 출력 신호이다.Next, the modified
상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 MixColumns/InvMixColumns 변환 모듈(224)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다. 암호화/복호화 선택 신호(153)가 니게이트되는 때에, SubBytes/InvSubBytes 변환 모듈(222), ShiftRows/InvShiftRows 변환 모듈(223), 및 MixColumns/InvMixColumns 변환 모듈(224)이 SubBytes 변환, ShiftRows 변환, 및 MixColumns 변환을 각각 실행한다. 암호화/복호화 선택 신호(153)가 어서트되는 때에, 이들은 InvSubBytes 변환, InvShiftRows 변환, 및 InvMixColumns 변환을 각각 실행한다.In the above configuration, when the
다음, 도 9a 및 도 9b의 타이밍 차트를 참조하여 상기 구성에 있어서의 암호화 동작에 대하여 설명한다. 도 9a 및 도 9b를 참조하면, 가로축이 시간을 나타낸다. 클록 펄스의 리딩 에지에 대하여 타이밍 명칭 T01, T02, ..., T33이 할당된다. Next, the encryption operation in the above configuration will be described with reference to the timing charts of FIGS. 9A and 9B. 9A and 9B, the abscissa represents time. Timing names T01, T02, ..., T33 are assigned to the leading edge of the clock pulse.
도 9a의 좌단의 세로축에 있는 3 자리수는 신호 라인을 나타내며, 도 32 내지 도 34에 사용되는 신호 라인의 참조 번호에 일대일 대응한다.The three digits on the vertical axis of the left end of Fig. 9A represent signal lines and correspond one-to-one to the reference numbers of the signal lines used in Figs.
도 9a 및 도 9b의 타이밍 차트에 도시된 암호화 동작은 4개의 부분으로 대별된다. 1번째 부분은 암호키 등의 각종 파라미터를 설정하는 파라미터 설정 기간(T01 내지 T06)이다. 2번째 부분은 wkey0를 생성하여 이를 레지스터에 유지시키는 키 준비 기간(T06 내지 T17)이다. 3번째 부분은 1번째 블록의 암호화 기간(T17 내지 T27)이다. 4번째 부분은 2번째 블록의 암호화 기간이다(T27부터).The encryption operation shown in the timing chart of Figs. 9A and 9B is roughly divided into four parts. The first part is parameter setting periods T01 to T06 for setting various parameters such as encryption keys. The second part is a key preparation period (T06 to T17) for generating wkey0 and holding it in a register. The third portion is the encryption periods T17 to T27 of the first block. The fourth part is the encryption period of the second block (from T27).
파라미터 설정 기간의 역할, 개시 조건, 및 종료 조건은 제1 실시예와 동일하다. 키 준비 기간은 T06에서부터 T17까지이다. 키 준비 기간의 개시 조건, 종료 조건, 및 각 회로의 동작은 제1 실시예에 기재된 바와 동일하며, 그 설명은 생 략한다.The role, start condition, and end condition of the parameter setting period are the same as in the first embodiment. The key preparation period is from T06 to T17. The start condition, end condition, and operation of each circuit in the key preparation period are the same as those described in the first embodiment, and description thereof is omitted.
1번째 블록의 암호화 기간은 T17에서부터 T27까지이며, 그 개시 조건과 종료 조건은 제1 실시예와 동일하다. 각 회로의 동작 또한 제1 실시예와 거의 동일하다.The encryption period of the first block is from T17 to T27, and its start condition and end condition are the same as in the first embodiment. The operation of each circuit is also almost the same as in the first embodiment.
제어부(204)는 선택 신호(170)를 암호화의 최종 사이클(T16)에서 어서트시키고, 암호화의 종료시(T17) 니게이트시킨다. 제어부(204)는 또한 암호화의 1번째 사이클에서 선택 신호(171)를 어서트시키고, 암호화의 종료시에 니게이트시킨다.The
회로 구성에 대하여 설명한 바와 같이, 선택 신호(171)가 니게이트되는 때에, 선택기(109)는 입력 신호(150)을 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다. 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 MixColumns/InvMixColumns 변환 모듈(224)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다. 암호화/복호화 선택 신호(153)가 니게이트되는 때에, SubBytets/InvSubBytes 변환 모듈(222), ShiftRows/InvShifRows 변환 모듈(223), 및 MixColumns/InvMixColumns 변환 모듈(224)이 SubBytes 변환, ShiftRows 변환, 및 MixColumns 변환을 각각 실행한다. 암호화/복호화 선택 신호(153)가 어서트되는 때에, 이들은 InvSubBytes 변환, InvShiftRows 변환, 및 InvMixColumns 변환을 각각 실행한다.As described with respect to the circuit configuration, when the
따라서, 0번째 사이클(T17 내지 T18)에서, 변형된 라운드 기능 모듈(205)은 입력 신호(150)에 대하여 AddRoundKey 변환, SubBytets 변환, ShiftRows 변환, 및 MixColumns 변환을 실행한다. 1번째 사이클로부터, 변형된 라운드 기능 모듈은 바로 전의 사이클의 결과에 대하여 AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, 및 MixColumns 변환을 실행하여 얻은 결과를 출력한다. 9번째 사이클(T26 내지 T27)에서, 변형된 라운드 기능 모듈은 AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 출력한다.Therefore, in the 0 th cycle T17 to T18, the modified
변형된 라운드 기능 모듈(205)은 상기 방법으로 선택 신호(171 및 170)를 제어함으로써 도 29에 도시된 바와 같이 암호화를 실행할 수 있다.The modified
한편, 키 확장부(202)는 키 준비 기간 이후에 라운드 키 A(162)로서 wkey0을, 라운드 키 B(162)로서 wkey10를 출력한다. 따라서, 암호화 개시 시(T17) 변형된 라운드 기능 모듈(205)에 wkey0가 공급된다. 암호화/복호화 개시 신호(158)에 기초하여 암호화의 개시를 검출하면(T17), 키 확장부(202)는 라운드 키 A 레지스터에 유지되는 wkey0을 이용하여 wkey1를 생성하고, 라운드 키 A 레지스터에 wkey1를 유지한다. 따라서, T18에서 wkey1이 변형된 라운드 기능 모듈(205)에 공급된다. 타이밍 T26까지 동일한 방식으로 라운드 키들이 공급된다. T26에서, 라운드 키 B(163)로 기능하는 2개의 라운드 키 wkey9 및 wkey10가 공급된다. 라운드 키 A 레지스터에 wkey9이 유지되고, T26에서 라운드 키 공급이 종료되면(T26), 키 확장부(202)는 암호키(152)로서 계속 외부에서 공급되는 wkey0을 라운드 키 A 레지스터에 유지하여, 다음 암호화의 개시(T27)를 준비한다.On the other hand, the
전술한 바와 같이 키 확장부(202)가 동작하는 때에, 변형된 라운드 기능 모듈(205)은 도 29에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.When the
제4 실시예에 따른 암호화 기간 동안의 동작은 상기의 방법으로 수행된다. 2번째 블록의 복호화 동작은 1번째 블록에 대한 것과 동일한 방식으로 수행된다. 그 후, 소정의 블록 수만큼 암호화 동작이 반복 수행된다. 도 9a 및 도 9b의 타이밍 차트에서, 2번째 블록의 암호화는 1번째 블록의 암호화의 종료 후에 최단 간격에서 개시된다. AES 코어는 이러한 타이밍에서 모든 블록의 암호화를 실행함으로써 그 최대 성능을 발휘할 수 있다. 그러나, 암호화 간격은 기본적으로 임의의 길이로 설정될 수 있다.The operation during the encryption period according to the fourth embodiment is performed by the above method. The decoding operation of the second block is performed in the same manner as for the first block. After that, the encryption operation is repeatedly performed as many as a predetermined number of blocks. In the timing charts of Figs. 9A and 9B, the encryption of the second block is started at the shortest interval after the termination of the encryption of the first block. The AES core can achieve its maximum performance by executing encryption of all blocks at this timing. However, the encryption interval can basically be set to any length.
소정 수의 블록들의 암호화가 완전히 종료되어, 암호키와 같은 다른 파라미터를 이용하여 다음 작업이 실행되어야 하는 때에는, 파라미터 설정으로부터 처리가 다시 개시된다.When the encryption of the predetermined number of blocks is completely terminated and the next operation must be executed using another parameter such as an encryption key, the process starts again from the parameter setting.
다음, 본 실시예의 복호화 동작에 대하여 설명한다. 도 35a 및 도 35b는 제4 실시예에 따른 복호화의 타이밍 차트이다. 도 35a 및 도 35b를 참조하면, 가로축이 시간을 나타낸다. 클록 펄스의 리딩 에지에 대하여 타이밍 명칭 T01, T02, ..., T33이 할당된다. 도 35a의 좌단의 세로축 상의 3 자리수는 신호 라인을 나타내며, 도 32 내지 도 34에서 사용되는 신호 라인의 참조 번호와 일대일 대응한다.Next, the decoding operation of this embodiment will be described. 35A and 35B are a timing chart of decoding according to the fourth embodiment. 35A and 35B, the abscissa represents time. Timing names T01, T02, ..., T33 are assigned to the leading edge of the clock pulse. Three digits on the vertical axis of the left end of FIG. 35A represent signal lines and correspond one-to-one with reference numerals of the signal lines used in FIGS. 32 to 34.
도 35a 및 도 35b의 타이밍 차트에 도시된 복호화 동작 또한 4개 부분으로 대별된다. 1번째 부분은 암호키 등의 각종 파라미터를 설정하는 파라미터 설정 기간(T01 내지 T06)이다. 2번째 부분은 wkey0를 생성하여 이를 레지스터에 유지시키는 키 준비 기간(T06 내지 T17)이다. 3번째 부분은 1번째 블록의 복호화 기간(T17 내지 T27)이다. 4번째 부분은 2번째 블록의 복호화 기간이다(T27부터).The decoding operation shown in the timing chart of Figs. 35A and 35B is also roughly divided into four parts. The first part is parameter setting periods T01 to T06 for setting various parameters such as encryption keys. The second part is a key preparation period (T06 to T17) for generating wkey0 and holding it in a register. The third part is the decoding periods T17 to T27 of the first block. The fourth part is the decoding period of the second block (from T27).
파라미터 설정 기간의 역할, 개시 조건, 및 종료 조건은 제1 실시예의 암호화와 동일하다.The role, start condition, and end condition of the parameter setting period are the same as in encryption of the first embodiment.
키 준비 기간은 T06에서부터 T17까지이며, 그 개시 조건 및 종료 조건은 제1 실시예의 암호화에 기재된 바와 동일하며, 그 설명은 생략한다. 각 회로의 동작은 본 실시예의 암호화에서와 거의 동일하다. 그러나, T16 타이밍에서의 키 확장부(202)의 동작과 T17 타이밍에서의 키 확장부(202)와 제어부(204)의 동작은 암호화에서와는 상이하므로, 이하에서 설명한다.The key preparation period is from T06 to T17, the start condition and end condition are the same as those described in the encryption of the first embodiment, and the description thereof is omitted. The operation of each circuit is almost the same as in the encryption of this embodiment. However, operations of the
타이밍 T16에서, 키 확장부(202)는 라운드 키 B(163)로서 wkey0를, 라운드 키 A(162)로서 wkey10을 출력한다. 라운드 키 wkey0은 키 확장부(202)에 마련된 레지스터에 유지된다. 타이밍 T16에서, 키 확장부(202)는 wkey10로부터 역으로 키 확장을 수행하여 변형된 복호화 키 wkey9'을 생성한다. At timing T16, the
타이밍 T17에서, 키 확장부(202는 라운드 키 A(162)로서 wkey9'을 출력한다. 제어부(204)는 선택 신호(170)를 어서트시킨다.At timing T17, the
1번째 블록의 복호화 기간은 T17에서부터 T27까지이며, 그 개시 조건과 종료 조건은 제1 실시예와 동일하다. 각 회로의 동작 또한 제1 실시예와 거의 동일하다.The decoding period of the first block is from T17 to T27, and the start condition and end condition are the same as in the first embodiment. The operation of each circuit is also almost the same as in the first embodiment.
제어부(204)는 선택 신호(170)를 복호화의 최종 사이클(T16)에서 어서트시키고, 복호화의 종료시(T17)에 니게이트시킨다. 제어부(204)는 또한 복호화의 1번째 사이클에서 선택 신호(171)를 어서트시키고, 복호화의 종료시에 니게이트시킨다.The
회로 구성에 대하여 설명한 바와 같이, 선택 신호(171)가 니게이트되는 때 에, 선택기(109)는 입력 신호(150)을 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다. 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 MixColumns/InvMimxColumns 변환 모듈(224)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다. 암호화/복호화 선택 신호(153)가 니게이트되는 때에, SubBytes/InvSubBytes 변환 모듈(222), ShiftRows/InvShiftRows 변환 모듈(223), 및 MixColumns/InvMixColumns 변환 모듈(224)이 SubBytes 변환, ShiftRows 변환, 및 MixColumns 변환을 각각 수행한다. 암호화/복호화 선택 신호(153)가 어서트되는 때에, 이들은 InvSubBytes 변환, InvShiftRows 변환, 및 InvMixColumns 변환을 각각 실행한다. As described with respect to the circuit configuration, when the
따라서, 0번째 사이클(T17 내지 T18)에서, 변형된 라운드 기능 모듈(205)은 입력 신호(150)에 대하여 AddRoundKey 변환, InvSubBytes 변환, InvShiftRows 변환, 및 InvMixColumns 변환을 실행한다. 1번째 사이클에서부터, 변형된 라운드 기능 모듈은 바로 전의 사이클의 결과에 대하여 AddRoundKey 변환, InvSubBytes 변환, InvShiftRows 변환, 및 MixColumns 변환을 실행하여 얻은 결과를 출력한다. 9번째 사이클(T26 내지 T27)에서, 변형된 라운드 기능 모듈은 AddRoundKey 변환, InvSubBytes 변환, InvShiftRows 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 출력한다.Therefore, in the 0 th cycle T17 to T18, the modified
전술한 방법으로 선택 신호(171, 170)를 제어함으로써 변형된 라운드 기능 모듈(205)은 도 30에 도시된 바와 같이 복호화를 실행할 수 있다.By controlling the selection signals 171 and 170 in the above-described manner, the modified
한편, 키 확장부(202)는 키 준비 기간 이후에 라운드 키 A(162)로서 wkey10을, 라운드 키 B(163)로서 wkey0를 출력한다. 따라서, 복호화 개시 시(T17) 변형된 라운드 기능 모듈(205)에 wkey10이 공급된다. 암호화/복호화 개시 신호(158)에 기초하여 복호화의 개시를 검출하면(T17), 키 확장부(202)는 라운드 키 A 레지스터에 유지되는 wkey10을 이용하여 wkey9'를 생성하고, 라운드 키 A 레지스터에 wkey9'를 유지한다. 따라서, T18에서 wkey9'가 변형된 라운드 기능 모듈(202)에 공급된다. 타이밍 T26까지 동일한 방법으로 라운드 키들이 공급된다. 타이밍 T26에서, 라운드 키 B(163)로서 기능하는 2개의 라운드 키 wkey1' 및 wkey0가 공급된다. 라운드 키 A 레지스터에 wkey1'이 유지되고, T26에서 라운드 키 공급이 종료되면(T26), 키 확장부(202)는 키 확장부의 내부 레지스터에 유지되는 wkey10을 라운드 키 A 레지스터에 로딩하여, 다음 복호화의 개시(T27)를 준비한다.On the other hand, the
전술한 바와 같이 키 확장부(202)가 동작하는 때에, 변형된 라운드 기능 모듈(205)은 도 30에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.When the
제4 실시예에 따른 복호화 기간 동안의 동작은 상기의 방법으로 수행된다. 2번째 블록의 복호화 동작은 1번째 블록에 대한 것과 동일한 방식으로 수행된다. 그 후, 소정의 블록 수만큼 복호화 동작이 반복 수행된다. 도 35a 및 도 35b의 타이밍 차트에서, 2번째 블록의 복호화는 1번째 블록의 복호화의 종료 후에 최단 간격에서 개시된다. AES 코어는 이러한 타이밍에서 모든 블록의 복호화를 실행함으로써 그 최대 성능을 발휘할 수 있다. 그러나, 복호화 간격은 기본적으로 임의의 길이로 설정될 수 있다.Operation during the decoding period according to the fourth embodiment is performed by the above method. The decoding operation of the second block is performed in the same manner as for the first block. After that, the decoding operation is repeatedly performed as many as a predetermined number of blocks. In the timing charts of Figs. 35A and 35B, decoding of the second block is started at the shortest interval after completion of decoding of the first block. The AES core can achieve its maximum performance by executing decryption of all blocks at this timing. However, the decryption interval can basically be set to any length.
소정 수의 블록들의 복호화가 완전히 종료되어, 암호키와 같은 다른 파라미터를 이용하여 다음 작업이 수행되어야 하는 때에는, 파라미터 설정으로부터 처리가 다시 개시된다.When the decryption of the predetermined number of blocks is completely finished and the next operation is to be performed using another parameter such as an encryption key, the process starts again from the parameter setting.
제4 실시예는 상기 방법으로 구현될 수 있다. 제4 실시예에 있어서, 등가 역암호(Equivalent Inverse Cipher)를 이용하여 복호화를 실행하는 회로 구성과 동작을 설명하였다. 제4 실시예에 있어서, AES 암호화에 필요한 클록 사이클 수는 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치를 증가시키지 않고 1 사이클 감소된다. 이는 AES 처리 속도를 약 10% 증가시킨다.The fourth embodiment can be implemented by the above method. In the fourth embodiment, a circuit configuration and an operation for performing decryption using an equivalent inverse cipher have been described. In the fourth embodiment, the number of clock cycles required for AES encryption is reduced by one cycle without increasing the maximum of the sum of signal processing times for each subblock conversion within each clock cycle period. This increases the AES processing speed by about 10%.
상기 제4 실시예는 어디까지나 본 발명의 일례에 지나지 않고, 본 발명의 효과는 상기 실시예에 한정되는 것은 아니다. The fourth embodiment is merely an example of the present invention, and the effects of the present invention are not limited to the above embodiment.
<제5 실시예>Fifth Embodiment
제5 실시예에 있어서, FIPS197에 기재된 등가 역암호(Equivalent Inverse Cipher)를 이용하여 복호화가 실행된다.In the fifth embodiment, decryption is performed using the equivalent inverse cipher described in FIPS197.
도 36는 제5 실시예에 따라서 클록 사이클 내에서 실행되는 암호화 및 복호화의 처리 내용을 나타낸 도면이다.36 is a diagram showing processing contents of encryption and decryption executed in clock cycles according to the fifth embodiment.
도 36을 참조하면, 사이클 카운트는 AES 처리의 개시시에 "0"인 클록 사이클 카운트를 나타낸다.Referring to Fig. 36, a cycle count indicates a clock cycle count that is "0" at the start of AES processing.
본 실시예의 암호화에 있어서, 0번째 사이클에서는 2개의 라운드 키를 이용하여 제1 AddRoundKey 변환, ShiftRows 변환, SubBytes 변환, MixColumns 변환, 및 제2 AddRoundKey 변환이 실행된다. 1번째 내지 8번째 사이클에서는, AddRoundKey 변환, ShiftRows 변환, SubBytes 변환, 및 MixColumns 변환이 실행된다. 9번째 사이클에서는, AddRoundKey 변환, ShiftRows 변환, 및 SubBytes 변환이 실행된다. 라운드 키로서는, 0번째 사이클에서 wkeyO 및 wkey1, l번째 사이클에서는 wkey2, ..., 9번째 사이클에서는 wkey10가 사용된다.In the encryption of the present embodiment, in the 0th cycle, the first AddRoundKey transformation, ShiftRows transformation, SubBytes transformation, MixColumns transformation, and the second AddRoundKey transformation are executed using two round keys. In the first to eighth cycles, AddRoundKey conversion, ShiftRows conversion, SubBytes conversion, and MixColumns conversion are performed. In the ninth cycle, AddRoundKey transformation, ShiftRows transformation, and SubBytes transformation are performed. As the round key, wkeyO and wkey1 in the 0th cycle, wkey2 in the 1st cycle, ..., and wkey10 in the 9th cycle are used.
제5 실시예에서는, 종래 기술과 동일한 처리가 전체적으로 실행된다. 본 실시예에서는, 그러나, AES 암호화를 l개 적은 클록 사이클로 실행할 수 있다. In the fifth embodiment, the same processing as in the prior art is executed as a whole. In this embodiment, however, AES encryption can be executed in clock cycles fewer by one.
다음, 제5 실시예에 따라서 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 암호화 처리 시간의 합산에 대하여 설명한다. 도 37은 종래 기술과 제5 실시예의 클록 사이클에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산 사이의 비교를 나타낸 도면이다. 세로축은 시간을 나타낸다. 바가 길수록, 처리 시간이 길다. 제5 실시예를 구현하기 위하여, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 1 클록 사이클 시간보다 작아야 한다. 도 37에 도시된 바와 같이, 각 서브블록 변환의 처리 시간은 SubBytes 변환이 가장 길고, MixColumns 변환, AddRoundKey 변환, ShiftRows 변환의 순서로 짧다.Next, the sum of the encryption processing time for each subblock conversion within each clock cycle period will be described according to the fifth embodiment. FIG. 37 is a diagram showing a comparison between the sum of the signal processing time for each subblock conversion executed in the clock cycle of the prior art and the fifth embodiment. FIG. The vertical axis represents time. The longer the bar, the longer the processing time. In order to implement the fifth embodiment, the maximum of the sum of the signal processing times for each subblock conversion within each clock cycle period must be less than one clock cycle time. As shown in Fig. 37, the processing time of each subblock transform is the longest in the SubBytes transform, and is short in the order of MixColumns transform, AddRoundKey transform, and ShiftRows transform.
제5 실시예에 있어서, 제1 AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, MixColumns 변환, 및 제2 AddRoundKey 변환이 실행되는 0번째 사이클의 각 서브블록 변환에 대한 신호 처리 시간의 합산이, AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, 및 MixClumns 변환이 실행되는 1번째 내지 8번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산, 또는 AddRoundKey 변환, SubBytes 변환, 및 ShiftRows 변환이 실행되는 9번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 더 길다. 따라서, 제5 실시예에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는, 종래 기술에 비해서 하나의 AddRoundKey 변환의 처리 시간에 해당하는 만큼 크다. 그러나, 하나의 AddRoundKey 변환의 처리 시간은 1 사이클에서 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 훨씬 짧다. 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 때로는 1 사이클 시간에 대하여 충분한 여유를 두고 설정된다. 따라서, 종래 기술에서 각 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 1 사이클 시간보다 짧다면, 대다수의 경우에 본 실시예 또한 구현될 수 있는 것으로 상정된다.In the fifth embodiment, the sum of the signal processing time for each subblock transformation of the 0th cycle in which the first AddRoundKey transformation, SubBytes transformation, ShiftRows transformation, MixColumns transformation, and the second AddRoundKey transformation is performed is the AddRoundKey transformation, SubBytes Sum of signal processing time for each subblock transform in the first to eighth cycles where the transform, ShiftRows transform, and MixClumns transform are performed, or each in the ninth cycle in which the AddRoundKey, SubBytes, and ShiftRows transforms are performed. It is longer than the sum of the signal processing times for the subblock transformations. Therefore, in the fifth embodiment, the maximum value of the sum of the signal processing times for each subblock transform is as large as the processing time of one AddRoundKey transform as compared with the prior art. However, the processing time of one AddRoundKey transformation is much shorter than the sum of the signal processing times for each subblock transformation in one cycle. The maximum sum of the signal processing time for each subblock conversion within each clock cycle period is sometimes set with sufficient margin for one cycle time. Therefore, in the prior art, it is assumed that the present embodiment can also be implemented in most cases if the maximum value of the sum of the signal processing times for each subblock transformation within each cycle period is shorter than one cycle time.
본 발명은 AES 복호화에 대하여도 적용가능하다.The present invention is also applicable to AES decryption.
도 36에 도시된 바와 같이, 본 실시예의 복호화에 있어서는, 0번째 사이클에서는, 제1 AddRoundKey 변환, InvShiftRows 변환, InvSubBytes 변환, InvMixColumns 변환, 및 제2 AddRoundKey 변환이 실행된다. 1번째 내지 8번째 사이클에서는 AddRoundKey 변환, InvShiftRows 변환, InvSubBytes 변환, 및 InvMixColumns 변환이 실행된다. 9번째 사이클에서는 AddRoundKey 변환, InvShiftRows 변환, 및 InvSubBytes 변환이 실행된다. 라운드 키로서는, 0번째 사이클에서 wkey10 및 wkey9', 1번째 사이클에서 wkey8', ..., 9번째 사이클에서 wkey0가 이용된다.As shown in Fig. 36, in the decoding of the present embodiment, the first AddRoundKey transformation, InvShiftRows transformation, InvSubBytes transformation, InvMixColumns transformation, and second AddRoundKey transformation are executed in the 0th cycle. In the first to eighth cycles, AddRoundKey conversion, InvShiftRows conversion, InvSubBytes conversion, and InvMixColumns conversion are executed. In the ninth cycle, the AddRoundKey transformation, InvShiftRows transformation, and InvSubBytes transformation are executed. As the round key, wkey10 and wkey9 'are used in the 0th cycle, wkey8' is used in the first cycle, ..., wkey0 is used in the ninth cycle.
제5 실시예에 있어서, 전체적으로 종래 기술과 동일한 처리가 실행된다. 그러나, 제5 실시예에 있어서는, 1개 적은 클록 사이클로 AES 복호화를 실행할 수 있다.In the fifth embodiment, the same processing as in the prior art is executed as a whole. However, in the fifth embodiment, AES decryption can be executed in clock cycles fewer by one.
다음, 제5 실시예에 따라서 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 복호화 처리 시간의 합산에 대하여 설명한다. 도 37은 제5 실시예에서의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 복호화 처리 시간의 합산과 종래 기술과의 비교를 나타낸 도면이다. 세로축은 시간을 나타낸다. 바가 길수록, 처리 시간이 더 길다. 본 실시예를 구현하기 위하여, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 1 사이클 시간보다 작아야 한다. 도 37에 도시된 바와 같이, 각 서브블록 변환의 처리 시간은 InvSubBytes 변환이 가장 길고, InvMixColumns 변환, AddRoundKey 변환, InvShiftRows 변환의 순서로 짧다.Next, according to the fifth embodiment, the sum of the decoding processing times for each subblock conversion within each clock cycle period will be described. FIG. 37 is a view showing the sum of the decoding processing time for each subblock transformation within each clock cycle period in the fifth embodiment and comparison with the prior art. FIG. The vertical axis represents time. The longer the bar, the longer the processing time. In order to implement this embodiment, the maximum of the sum of the signal processing times for each subblock conversion within each clock cycle period should be less than one cycle time. As shown in FIG. 37, the processing time of each subblock transform is the longest in InvSubBytes transform, and is short in the order of InvMixColumns transform, AddRoundKey transform, and InvShiftRows transform.
제5 실시예에서, AddRoundKey 변환, InvSubBytes 변환, InvShiftRows 변환, InvMixColumns 변환, 및 AddRoundKey 변환이 실행되는 0번째 사이클에서 각 서브블록 변환에 대한 신호 처리 시간의 합산은, AddRoundKey 변환, InvSubBytes 변환, InvShiftRows 변환, 및 InvMixColumns 변환이 실행되는 0번째 내지 8번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산, 또는 AddRoundKey 변환, InvSubBytes 변환, 및 InvShiftRows 변환이 실행되는 9번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 보다 길다. 따라서, 제5 실시예의 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는, 하나의 AddRoundKey 변환의 처리 시간에 해당하는 만큼 종래 기술보다 더 크다. 그러나, 하나의 AddRoundKey 변환의 처리 시간은 1 사이클 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산보다는 훨씬 짧다. 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 때로는 1 사이클 시간에 대하여 충분한 여유를 가지고 설정된다. 따라서, 종래 기술의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 복호화 처리 시간의 합산의 최대치가 1 사이클 시간보다 짧다면, 본 실시예 또한 대다수 경우에서 구현될 수 있는 것으로 상정된다. In the fifth embodiment, the sum of the signal processing times for each subblock transform in the 0th cycle in which the AddRoundKey transform, InvSubBytes transform, InvShiftRows transform, InvMixColumns transform, and AddRoundKey transform are executed is performed by AddRoundKey transform, InvSubBytes transform, InvShiftRows transform, And summing the signal processing time for each subblock transform in the 0th through 8th cycles where the InvMixColumns transform is performed, or for each subblock transform in the 9th cycle where the AddRoundKey transform, InvSubBytes transform, and InvShiftRows transform are performed. It is longer than the sum of the signal processing times. Therefore, the maximum value of the sum of the signal processing time for each subblock transformation of the fifth embodiment is larger than the prior art by corresponding to the processing time of one AddRoundKey transformation. However, the processing time of one AddRoundKey transformation is much shorter than the sum of the signal processing times for each subblock transformation within one cycle. The maximum of the sum of the signal processing times for each subblock conversion within each clock cycle period is sometimes set with sufficient margin for one cycle time. Therefore, it is assumed that the present embodiment can also be implemented in most cases if the maximum value of the sum of the decoding processing times for each subblock transformation within each clock cycle period of the prior art is shorter than one cycle time.
상기 제5 실시예의 특징에 대하여 정리한다.The features of the fifth embodiment are summarized.
종래의 일반적인 구현 방법에 있어서, 규격에 의해 정의된 라운드 기능은 처리에 있어서의 단절로서 간주되어, 암호화 및 복호화가 클록 사이클들에 분산되어 있다. 따라서, 10번째 및 0번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산은 1번째 내지 9번째 사이클 각각에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 짧다. 즉, 각 사이클에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산은 변동한다.In a conventional general implementation method, the round function defined by the specification is regarded as a break in processing, so that encryption and decryption are distributed among clock cycles. Therefore, the sum of the signal processing times for each subblock transform in the 10th and 0th cycles is shorter than the sum of the signal processing times for each subblock transform in each of the 1st to 9th cycles. That is, the sum of the signal processing times for each subblock transform executed in each cycle varies.
한편, 제5 실시예에서는, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산 사이의 차이가 줄도록 일부 클록 사이클들에서의 신호 처리가 증가된다.On the other hand, in the fifth embodiment, the signal processing in some clock cycles is increased so that the difference between the sum of the signal processing times for each subblock conversion within each clock cycle period is reduced.
제5 실시예에 있어서, 1 사이클에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 다소 증가된다. 따라서, 본 실시예는 반드시 종래 기술이 구현될 수 있는 조건하에 구현될 필요는 없다. 그러나, 각 클록 사이클 기 간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 때로는 1 사이클 시간에 대하여 충분한 여유를 두고 설정되기 때문에, 대다수의 경우에서 문제가 되지는 않는다. 대다수의 경우, AES 암호화 또는 복호화에 필요한 클록 사이클 수는 1 사이클 감소될 수 있다. 이는 AES 처리 속도를 약 10% 증가시킨다.In the fifth embodiment, the maximum of the summation of the signal processing times for each subblock transform executed in one cycle is somewhat increased. Thus, this embodiment need not necessarily be implemented under the conditions in which the prior art can be implemented. However, this is not a problem in most cases, since the maximum of the sum of the signal processing times for each subblock conversion within each clock cycle period is sometimes set with sufficient margin for one cycle time. In most cases, the number of clock cycles required for AES encryption or decryption can be reduced by one cycle. This increases the AES processing speed by about 10%.
다음, AES 암호화 및 복호화를 구현하기 위한 AES 코어의 회로 구성에 대하여 설명한다.Next, a circuit configuration of the AES core for implementing AES encryption and decryption will be described.
도 38은 제5 실시예에 따른 AES 코어의 블록도이다. 도 38을 참조하면, AES 코어(231)는 AES 처리를 실행한다. 키 확장부(232)는 암호키로부터 AES 암호화 및 복호화에 필요한 라운드 키를 생성하여, 이 라운드 키를 출력한다. 암호화/복호화부(233)는 키 확장부(232)로부터 공급되는 라운드 키를 이용하여 128 비트 평문 데이터의 암호화 또는 128 비트 암호문 데이터의 복호화를 실행한다. 제어부(234)는 AES 코어(231) 외부의 유닛으로부터 제어 신호를 수신하여, 키 확장부(232) 및 암호화/복호화부(233)의 동작을 제어하기 위한 신호들과 AES 코어(231) 외부의 유닛에 동작의 완료를 통지하기 위한 신호를 생성한다.38 is a block diagram of an AES Core according to the fifth embodiment. Referring to FIG. 38, the
도 38의 구성요소들과 신호 라인들은 제1 실시예 및 제2 실시예에 기재된 바와 동일하며, 그 설명은 생략한다.The components and signal lines in FIG. 38 are the same as those described in the first and second embodiments, and description thereof is omitted.
다음, 암호화/복호화부(233)에 대하여 설명한다. 도 39는 암호화/복호화부(233)의 블록도이다. 도 39을 참조하면, 변형된 라운드 기능 모듈(235)은 선택 신호(170 및 175)와 암호화/복호화 선택 신호(153)의 제어 하에서 라운드 키 A(162) 및 라운드 키 B(163)를 이용하여 1 사이클 분의 암호화 또는 복호화를 실행 한다.Next, the encryption /
상기 구성에 있어서, 선택 신호(171)가 니게이트되는 때에, 암호화/복호화부(233)의 선택기(109)는 입력 신호(150)를 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다.In the above configuration, when the
도 39의 구성요소들과 신호 라인들은 제1 실시예 및 제2 실시예에 기재된 바와 동일하며, 그 설명은 생략한다.The components and signal lines in FIG. 39 are the same as those described in the first and second embodiments, and description thereof is omitted.
다음, 변형된 라운드 기능 모듈(235)에 대하여 설명한다. 도 40은 변형된 라운드 기능 모듈(235)의 블록도이다. 도 40을 참조하면, AddRoundKey 변환 모듈(114)은 입력 신호(165)와 라운드 키 B(163)를 수신하여, AddRoundKey 변환을 실행한다. 선택기(137)는 선택 신호(175)에 따라서 입력 신호(165)와 AddRoundKey 변환 모듈(114)의 출력 중 하나를 선택한다. SubBytes/InvSubBytes 변환 모듈(222)은 선택기(137)의 출력을 수신하여, 암호화/복호화 선택 신호(153)에 따라서 SubBytes 변환과 InvSubBytes 변환 중 하나를 실행한다. ShiftRows/InvShifRows 변환 모듈(223)은 SubBytes/InvSubBytets 변환 모듈(222)의 출력을 수신하여, 암호화/복호화 선택 신호(153)에 따라서 ShiftRows 변환과 InvShiftRows 변환 중 하나를 실행한다. MixColumns/InvMixColumn 변환 모듈(224)은 ShiftRows/InvShiftRows 변환 모듈(223)의 출력을 수신하여, 암호화/복호화 선택 신호(153)에 따라서 MixColumns 변환과 InvMixColumns 변환 중 하나를 실행한다. 선택기(115)는 선택 신호(170)에 따라서 MixColumns/InvMixColumns 변환 모듈(224)의 출력과 ShiftRows/InvShiftRows 변환 모듈(223)의 출력 중 하나를 선택 하여 출력한다. AddRoundKey 변환 모듈(110)은 선택기(115)의 출력과 라운드 키 A(162)를 수신하여, AddRoundKey 변환을 실행한다. AddRoundKey 변환 모듈(110)의 출력 신호는 변형된 라운드 기능 모듈(235)의 출력 신호이다.Next, the modified
상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 MixColumns/InvMixColumns 변환 모듈(224)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 ShiftRows/InvShiftRows 변환 모듈(223)의 출력을 선택하여 출력한다. 선택 신호(175)가 니게이트되는 때에, 선택기(137)는 입력 신호(165)를 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(137)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다.In the above configuration, when the
도 18a 및 도 18b의 타이밍 차트를 참조하여 상기 구성에 있어서의 암호화 동작에 대하여 설명한다. 도 18a의 좌단의 세로축에 있는 3 자리수는 신호 라인을 나타내며, 도 38 내지 도 40에 사용되는 신호 라인의 참조 번호에 일대일 대응한다.The encryption operation in the above configuration will be described with reference to the timing charts of Figs. 18A and 18B. Three digits on the vertical axis of the left end of Fig. 18A represent signal lines and correspond one-to-one to the reference numbers of the signal lines used in Figs. 38 to 40.
도 18a 및 도 18b의 타이밍 차트에 도시된 암호화 동작은 4개의 부분으로 대별된다. 1번째 부분은 암호키 등의 각종 파라미터를 설정하는 파라미터 설정 기간(T01 내지 T06)이다. 2번째 부분은 wkey0를 생성하여 이를 레지스터에 유지시키는 키 준비 기간(T06 내지 T17)이다. 3번째 부분은 1번째 블록의 암호화 기간(T17 내지 T27)이다. 4번째 부분은 2번째 블록의 암호화 기간이다(T27부터).The encryption operation shown in the timing chart of Figs. 18A and 18B is roughly divided into four parts. The first part is parameter setting periods T01 to T06 for setting various parameters such as encryption keys. The second part is a key preparation period (T06 to T17) for generating wkey0 and holding it in a register. The third portion is the encryption periods T17 to T27 of the first block. The fourth part is the encryption period of the second block (from T27).
파라미터 설정 기간의 역할, 개시 조건, 및 종료 조건은 제2 실시예와 동일하다. 키 준비 기간은 T06에서부터 T17까지이다. 키 준비 기간의 개시 조건, 종 료 조건, 및 각 회로의 동작은 제2 실시예에 기재된 바와 동일하며, 그 설명은 생략한다. 제1 블록 암호화 기간은 T17에서부터 T27까지이며, 그 개시 조건과 종료 조건은 제2 실시예와 동일하다. 각 회로의 동작 또한 제2 실시예와 거의 동일하다.The role, start condition, and end condition of the parameter setting period are the same as in the second embodiment. The key preparation period is from T06 to T17. The start condition, end condition, and operation of each circuit of the key preparation period are the same as those described in the second embodiment, and the description thereof is omitted. The first block encryption period is from T17 to T27, and the start condition and end condition are the same as in the second embodiment. The operation of each circuit is also almost the same as in the second embodiment.
제어부(234)는 선택 신호(175)를 암호화의 종료 시(T16)에 어서트시키고, 암호화의 제1 사이클(T18 또는 T28)에서 니게이트시킨다. 제어부(234)는 또한 암호화의 최종 사이클(T16)에서 선택 신호(170)를 어서트시키고, 암호화의 종료시(T17)에 니게이트시킨다. 제어부(234)는 또한, 암호화의 1번째 사이클에서 선택 신호(171)을 어서트시키고, 암호화의 종료시에 니게이트시킨다.The
회로 구성에 대하여 설명한 바와 같이, 선택 신호(171)가 니게이트되는 때에, 선택기(109)는 입력 신호(150)을 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다. 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 입력 신호(165)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 AddRoundKey 변환 모듈(114)의 결과를 선택하여 출력한다. 선택 신호(175)가 니게이트되는 때에, 선택기(137)는 MixClolumns/InvMixColumns 변환 모듈(224)의 결과를 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(137)는 ShiftRows/InvShiftRows 변환 모듈(223)의 결과를 선택하여 출력한다. 암호화/복호화 선택 신호(153)가 니게이트되는 때에, SubBytets/InvSubBytes 변환 모듈(222), ShiftRows/InvShifRows 변환 모듈(223), 및 MixColumns/InvMixColumns 변환 모듈(224)이 SubBytes 변환, ShiftRows 변환, 및 MixColumns 변환을 각각 실행한다. 암호화/복호화 선택 신호(153)가 어서트되는 때에, 이들은 InvSubBytes 변환, InvShiftRows 변환, 및 InvMixColumns 변환을 각각 실행한다.As described with respect to the circuit configuration, when the
따라서, 0번째 사이클(T17 내지 T18)에서, 변형된 라운드 기능 모듈(235)은 입력 신호(150)에 대하여 AddRoundKey 변환, SubBytets 변환, ShiftRows 변환, MixColumns 변환, 및 AddRoundKey 변환을 실행한다. 1번째 사이클로부터, 변형된 라운드 기능 모듈은 바로 전의 사이클의 결과에 대하여 SubBytes 변환, ShiftRows 변환, MixColumns 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 출력한다. 9번째 사이클(T26 내지 T27)에서, 변형된 라운드 기능 모듈은 SubBytes 변환, ShiftRows 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 출력한다.Therefore, in the 0 th cycle T17 to T18, the modified
변형된 라운드 기능 모듈(235)은 상기 방법으로 선택 신호(171, 170, 및 175)를 제어함으로써 도 36에 도시된 바와 같이 암호화를 실행할 수 있다.The modified
한편, 키 확장부(232)는 키 준비 기간 이후에 라운드 키 A(162)로서 wkey1을, 라운드 키 B(163)로서 wkey0를 출력한다. 따라서, 암호화 개시 시(T17) 변형된 라운드 기능 모듈(235)에 wkey0 및 wkey1가 공급된다. 암호화/복호화 개시 신호(158)에 기초하여 암호화의 개시를 검출하면(T17), 키 확장부(232)는 라운드 키 A 레지스터에 유지되는 wkey1을 이용하여 wkey2를 생성하고, 라운드 키 A 레지스터에 wkey2를 유지한다. 따라서, 타이밍 T18에서 wkey2가 변형된 라운드 기능 모듈(235)에 공급된다. 타이밍 T26까지 동일한 방법으로 라운드 키들이 공급된다. 라운드 키 A 레지스터에 wkey10이 유지되고, 타이밍 T26에서 라운드 키 공급이 종 료되면, 키 확장부(232)는 암호키(152)로서 계속 외부에서 공급되는 wkey0을 이용하여 wkey1을 생성하고, wkey1을 라운드 키 A 레지스터에 유지하여, 다음 암호화의 개시(T27)를 준비한다.On the other hand, the
전술한 바와 같이 키 확장부(232)가 동작하는 때에, 변형된 라운드 기능 모듈(235)은 도 36에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.As described above, when the
제5 실시예에 따른 암호화 기간 동안의 동작은 상기의 방법으로 수행된다. 2번째 블록의 복호화 동작은 1번째 블록에 대한 것과 동일한 방식으로 수행된다. 그 후, 소정의 블록 수만큼 암호화 동작이 반복 수행된다. 도 18a 및 도 18b의 타이밍 차트에서, 2번째 블록의 암호화는 1번째 블록의 암호화의 종료 후에 최단 간격에서 개시된다. AES 코어는 이러한 타이밍에서 모든 블록의 암호화를 실행함으로써 그 최대 성능을 발휘할 수 있다. 그러나, 암호화 간격은 기본적으로 임의의 길이로 설정될 수 있다.The operation during the encryption period according to the fifth embodiment is performed by the above method. The decoding operation of the second block is performed in the same manner as for the first block. After that, the encryption operation is repeatedly performed as many as a predetermined number of blocks. In the timing charts of Figs. 18A and 18B, the encryption of the second block is started at the shortest interval after the termination of the encryption of the first block. The AES core can achieve its maximum performance by executing encryption of all blocks at this timing. However, the encryption interval can basically be set to any length.
소정 수의 블록들의 암호화가 완전히 종료되어, 암호키와 같은 다른 파라미터를 이용하여 다음 작업이 실행되어야 하는 때에는, 파라미터 설정으로부터 처리가 다시 개시된다.When the encryption of the predetermined number of blocks is completely terminated and the next operation must be executed using another parameter such as an encryption key, the process starts again from the parameter setting.
다음, 제5 실시예의 복호화 동작에 대하여 설명한다. 도 41a 및 도 41b는 제5 실시예에 따른 복호화의 타이밍 차트이다. 도 41a 및 도 41b를 참조하면, 가로축이 시간을 나타낸다. 클록 펄스의 리딩 에지에 대하여 타이밍 명칭 T01, T02, ..., T33이 할당된다. Next, the decoding operation of the fifth embodiment will be described. 41A and 41B are timing charts of decoding according to the fifth embodiment. 41A and 41B, the abscissa represents the time. Timing names T01, T02, ..., T33 are assigned to the leading edge of the clock pulse.
도 41a의 좌단의 세로축 상의 3 자리수는 신호 라인을 나타내며, 도 38 내지 도 40에서 사용되는 신호 라인의 참조 번호와 일대일 대응한다.Three digits on the vertical axis of the left end of FIG. 41A represent signal lines and correspond one-to-one with reference numbers of the signal lines used in FIGS. 38 to 40.
도 41a 및 도 41b의 타이밍 차트에 도시된 복호화 동작 또한 4개 부분으로 대별된다. 1번째 부분은 암호키 등의 각종 파라미터를 설정하는 파라미터 설정 기간(T01 내지 T06)이다. 2번째 부분은 wkey0를 생성하여 이를 레지스터에 유지시키는 키 준비 기간(T06 내지 T17)이다. 3번째 부분은 1번째 블록의 복호화 기간(T17 내지 T27)이다. 4번째 부분은 2번째 블록의 복호화 기간이다(T27부터).The decoding operation shown in the timing chart of Figs. 41A and 41B is also roughly divided into four parts. The first part is parameter setting periods T01 to T06 for setting various parameters such as encryption keys. The second part is a key preparation period (T06 to T17) for generating wkey0 and holding it in a register. The third part is the decoding periods T17 to T27 of the first block. The fourth part is the decoding period of the second block (from T27).
파라미터 설정 기간의 역할, 개시 조건, 및 종료 조건은 본 실시예의 암호화와 동일하다. 복호화에 있어서는, 그러나, 암호화/복호화 선택 신호(153)가 어서트된다.The role, start condition, and end condition of the parameter setting period are the same as in encryption of this embodiment. In decryption, however, the encryption /
키 준비 기간은 T06에서부터 T17까지이며, 그 개시 조건 및 종료 조건은 본 실시예의 암호화에 기재된 바와 동일하다. 각 회로의 동작은 본 실시예의 암호화에서와 거의 동일하다. 그러나, T16 타이밍에서의 키 확장부(232)의 동작과 T17 타이밍에서의 키 확장부(232)와 제어부(234)의 동작은 암호화에서와는 상이하므로, 이하에서 설명한다.The key preparation period is from T06 to T17, and the start condition and end condition are the same as described in the encryption of this embodiment. The operation of each circuit is almost the same as in the encryption of this embodiment. However, the operation of the
타이밍 T16에서, 키 확장부(232)는 라운드 키 B(163)로서 wkey10를, 라운드 키 A(162)로서 wkey10을 출력한다. 타이밍 T16에서, 키 확장부(232)는 wkey10으로부터 역으로 키 확장을 수행하여, 변형된 복호화 키 wkey9'을 생성한다.At timing T16, the
타이밍 T17에서, 키 확장부(232)는 라운드 키 A(162)로서 wkey9'을 출력한다. 제어부(234)는 선택 신호(175)를 어서트시킨다.At timing T17, the
키 준비 기간(T17)의 종료 시, 제어부(234)는 선택 신호(175)를 어서트시킨 다.At the end of the key preparation period T17, the
제1 블록 복호화 기간은 T17에서부터 T27까지이며, 그 개시 조건과 종료 조건은 제1 실시예와 동일하다. 각 회로의 동작 또한 제1 실시예와 거의 동일하다.The first block decoding period is from T17 to T27, and the start condition and end condition are the same as in the first embodiment. The operation of each circuit is also almost the same as in the first embodiment.
제어부(234)는 선택 신호(170)를 복호화의 최종 사이클(T16)에서 어서트시키고, 복호화의 첫번째 사이클(T18 또는 T28)에 니게이트시킨다. 제어부(234)는 또한 복호화의 종료 시(T17) 선택 신호(175)를 어서트시키고, 복호화의 종료시(T17)에 니게이트시킨다. 제어부(234)는 또한 복호화의 1번째 사이클에서 선택 신호(171)를 어서트시키고, 복호화의 종료시 이를 니게이트시킨다.The
회로 구성에 대하여 설명한 바와 같이, 선택 신호(171)가 니게이트되는 때에, 선택기(109)가 입력 신호(150)을 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다. As described with respect to the circuit configuration, when the
선택 신호(175)가 니게이트되는 때에, 선택기(137)는 입력 입력 신호(165)를 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(137)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다. 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 MixColumns/InvMixColumns 변환 모듈(224)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 ShiftRows/InvShiftRows 변환 모듈(223)의 출력을 선택하여 출력한다.When
따라서, 0번째 사이클(T17 내지 T18)에서, 변형된 라운드 기능 모듈(235)은 입력 신호(150)에 대하여 AddRoundKey 변환, InvShiftRows 변환, InvSubBytes 변환, AddRoundKey 변환, 및 InvMixColumns 변환을 실행한다. 1번째 사이클에서부 터, 변형된 라운드 기능 모듈은 바로 전의 사이클의 결과에 대하여 InvShiftRows 변환, InvSubBytes 변환, AddRoundKey 변환, 및 InvMixColumns 변환을 실행하여 얻은 결과를 출력한다. 9번째 사이클(T26 내지 T27)에서, 변형된 라운드 기능 모듈은 InvShiftRows 변환, InvSubBytes 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 출력한다.Thus, in the 0 th cycle T17 to T18, the modified
전술한 방법으로 선택 신호(171, 170, 및 175)를 제어함으로써 변형된 라운드 기능 모듈(235)은 도 36에 도시된 바와 같이 복호화를 실행할 수 있다.By controlling the selection signals 171, 170, and 175 in the above-described manner, the modified
한편, 키 확장부(232)는 키 준비 기간 이후에 라운드 키 A(162)로서 wkey9'을, 라운드 키 B(163)로서 wkey10를 출력한다. 따라서, 복호화 개시 시(T17) 변형된 라운드 기능 모듈(235)에 wkey10과 wkey9'이 공급된다. 암호화/복호화 개시 신호(158)에 기초하여 복호화의 개시를 검출하면(T17), 키 확장부(232)는 라운드 키 A 레지스터에 유지되는 wkey9'을 이용하여 wkey8'를 생성하고, 라운드 키 A 레지스터에 wkey8'를 유지한다. 따라서, T18에서 wkey8'가 변형된 라운드 기능 모듈(235)에 공급된다. T26까지 동일한 방법으로 라운드 키들이 공급된다. 라운드 키 A 레지스터에 wkey0이 유지되고, T26에서 라운드 키 공급이 종료되면, 키 확장부(232)는 라운드 키 B 레지스터에 유지되는 wkey10을 이용하여 wkey9'을 생성하고, wkey9'을 라운드 키 A 레지스터에 유지하여, 다음 복호화의 개시(T27)를 준비한다.On the other hand, the
전술한 바와 같이 키 확장부(232)가 동작하는 때에, 변형된 라운드 기능 모듈(235)은 도 36에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.As described above, when the
제5 실시예에 따른 복호화 기간 동안의 동작은 상기의 방법으로 수행된다. 2번째 블록의 복호화 동작은 1번째 블록에 대한 것과 동일한 방식으로 수행된다. 그 후, 소정의 블록 수만큼 복호화 동작이 반복 수행된다. 도 41a 및 도 41b의 타이밍 차트에서, 2번째 블록의 복호화는 1번째 블록의 복호화의 종료 후에 최단 간격에서 개시된다. AES 코어는 이러한 타이밍에서 모든 블록의 복호화를 실행함으로써 그 최대 성능을 발휘할 수 있다. 그러나, 복호화 간격은 기본적으로 임의의 길이로 설정될 수 있다.Operation during the decoding period according to the fifth embodiment is performed by the above method. The decoding operation of the second block is performed in the same manner as for the first block. After that, the decoding operation is repeatedly performed as many as a predetermined number of blocks. In the timing charts of Figs. 41A and 41B, decoding of the second block is started at the shortest interval after completion of decoding of the first block. The AES core can achieve its maximum performance by executing decryption of all blocks at this timing. However, the decryption interval can basically be set to any length.
소정 수의 블록들의 복호화가 완전히 종료되어, 암호키와 같은 다른 파라미터를 이용하여 다음 작업이 실행되어야 하는 때에는, 파라미터 설정으로부터 처리가 다시 개시된다.When the decryption of the predetermined number of blocks is completely terminated and the next operation is to be executed using another parameter such as an encryption key, the process starts again from the parameter setting.
제5 실시예가 상기 방법으로 구현될 수 있다. 제5 실시예에 있어서, 1 사이클에서 실행되어야 하는 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 다소 증가한다. 그러나, 이는 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 때로는 1 사이클 시간에 대하여 충분한 여유를 두고 설정되기 때문에, 대다수의 경우에서 문제가 되지는 않는다. 따라서, 대다수의 경우, AES 암호화 및 복호화에 필요한 클록 사이클 수는 1 사이클 감소될 수 있다. 이는 AES 처리 속도를 약 10% 증가시킨다.The fifth embodiment can be implemented in this way. In the fifth embodiment, the maximum value of the sum of the signal processing times for each subblock transform that should be executed in one cycle is somewhat increased. However, this is not a problem in most cases since the maximum of the summation of the signal processing times for each subblock conversion within each clock cycle period is sometimes set with sufficient margin for one cycle time. Thus, in most cases, the number of clock cycles required for AES encryption and decryption can be reduced by one cycle. This increases the AES processing speed by about 10%.
상기 제5 실시예는 어디까지나 본 발명의 일례에 지나지 않고, 본 발명의 효과는 상기 실시예에 한정되는 것은 아니다. The fifth embodiment is merely an example of the present invention, and the effects of the present invention are not limited to the above embodiment.
<제6 실시예>Sixth Example
제6 실시예에 있어서, FIPS197에 기재된 등가 역암호(Equivalent Inverse Cipher)를 이용하여 복호화가 실행된다.In the sixth embodiment, decryption is performed using the equivalent inverse cipher described in FIPS197.
도 42는 제6 실시예에 따라서 클록 사이클에서 실행되는 암호화 및 복호화의 처리 내용을 나타낸 도면이다.Fig. 42 is a diagram showing the processing contents of encryption and decryption executed in clock cycles according to the sixth embodiment.
도 42를 참조하면, 사이클 카운트는 AES 처리의 개시시에 "0"인 클록 사이클 카운트를 나타낸다.Referring to Fig. 42, a cycle count indicates a clock cycle count that is "0" at the start of AES processing.
제6 실시예에 있어서, 0번째 사이클에서는 2개의 라운드 키를 이용하여 제1 AddRoundKey 변환, SubBytes/InvSubBytes 변환, ShiftRows/InvShiftRows 변환, MixColumns/InvMixColumns 변환, 및 제2 AddRoundKey 변환이 실행된다. 1번째 내지 8번째 사이클에서는, SubBytes/InvSubBytes 변환, ShiftRows/InvShiftRows 변환, MixColumns/InvMixColumns 변환, 및 AddRoundKey 변환이 실행된다. 9번째 사이클에서는, SubBytes/InvSubBytes 변환, ShiftRows/InvShiftRows 변환, 및 AddRoundKey 변환이 실행된다. SubBytes/InvSubBytes 변환은 암호화에서는 SubBytes 변환이 실행되고, 복호화에서는 SubBytes 변환이 실행되는 것을 나타낸다. ShiftRows/InvShiftRows 변환은 암호화에서는 ShiftRows 변환이 실행되고, 복호화에서는 InvShiftRows 변환이 실행되는 것을 나타낸다. MixColumns/InvMixColumns 변환은 암호화에서는 MixColumns 변환이 실행되고, 복호화에서는 InvMixColumns이 실행되는 것을 나타낸다.In the sixth embodiment, the first AddRoundKey transformation, SubBytes / InvSubBytes transformation, ShiftRows / InvShiftRows transformation, MixColumns / InvMixColumns transformation, and the second AddRoundKey transformation are executed using two round keys. In the first to eighth cycles, SubBytes / InvSubBytes conversion, ShiftRows / InvShiftRows conversion, MixColumns / InvMixColumns conversion, and AddRoundKey conversion are executed. In the ninth cycle, SubBytes / InvSubBytes conversion, ShiftRows / InvShiftRows conversion, and AddRoundKey conversion are performed. SubBytes / InvSubBytes conversion indicates that SubBytes conversion is performed in encryption, and SubBytes conversion is performed in decryption. ShiftRows / InvShiftRows conversion indicates that ShiftRows conversion is performed in encryption, and InvShiftRows conversion is performed in decryption. MixColumns / InvMixColumns conversion indicates that MixColumns conversion is performed in encryption, and InvMixColumns is executed in decryption.
본 실시예의 암호화에서 사용되는 라운드 키로서는, 0번째 사이클에서 wkeyO 및 wkey1, l번째 사이클에서는 wkey2, ..., 9번째 사이클에서는 wkey10 이다. 복 호화에 사용되는 라운드 키로서는, 0번째 사이클에서 wkey10 및 wkey9', 1번째 사이클에서 wkey8', ..., 및 9번째 사이클에서 wkey0이다.As the round key used in the encryption of this embodiment, wkeyO and wkey1 in the 0th cycle, wkey2 in the 1st cycle, ..., wkey10 in the ninth cycle. The round keys used for the decoding are wkey10 and wkey9 'in the 0th cycle, wkey8' in the 1st cycle, ..., and wkey0 in the 9th cycle.
제6 실시예에서는, 종래 기술과 동일한 처리가 전체적으로 실행된다. 본 실시예에서는, 그러나, AES 암호화 및 복호화를 l개 적은 클록 사이클로 실행할 수 있다. In the sixth embodiment, the same processing as in the prior art is executed as a whole. In this embodiment, however, AES encryption and decryption can be executed in clock cycles fewer by one.
다음, 본 실시예에 따라서 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 암호화 처리 시간의 합산에 대하여 설명한다. 도 43은 종래 기술과 제6 실시예의 클록 사이클에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산 사이의 비교를 나타낸 도면이다. 세로축은 시간을 나타낸다. 바가 길수록, 처리 시간이 길다. 제6 실시예를 구현하기 위하여, 각 클록 사이클 기간 내에서 각 서브블록 변환의 신호 처리 시간의 합산의 최대치가 1 클록 사이클 시간보다 작아야 한다. 도 43에 도시된 바와 같이, 각 서브블록 변환의 처리 시간은 SubBytes 변환이 가장 길고, MixColumns 변환, AddRoundKey 변환, ShiftRows 변환의 순서로 짧다.Next, the sum of the encryption processing times for each subblock conversion within each clock cycle period will be described according to the present embodiment. FIG. 43 shows a comparison between the sum of the signal processing time for each subblock conversion executed in the clock cycle of the prior art and the sixth embodiment. FIG. The vertical axis represents time. The longer the bar, the longer the processing time. In order to implement the sixth embodiment, the maximum of the sum of the signal processing time of each subblock conversion within each clock cycle period must be less than one clock cycle time. As shown in FIG. 43, the processing time of each subblock transform is the longest in the SubBytes transform, and is short in the order of the MixColumns transform, the AddRoundKey transform, and the ShiftRows transform.
본 실시예에 있어서, AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, MixColumns 변환, 및 AddRoundKey 변환이 실행되는 0번째 사이클의 각 서브블록 변환에 대한 신호 처리 시간의 합산은, AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, 및 MixClumns 변환이 실행되는 1번째 내지 8번째 사이클 내의 각 서브블록 변환에 대한 신호 처리 시간의 합산, 또는 AddRoundKey 변환, SubBytes 변환, 및 ShiftRows 변환이 실행되는 9번째 사이클의 각 서브블록 변환에 대한 신호 처리 시 간의 합산보다 더 길다. 도 43은 또한 복호화에도 적용가능하며, 상기 설명한 바와 그대로 복호화에도 적용된다. 따라서, 제5 실시예에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는, 종래 기술에 비해서 하나의 AddRoundKey 변환의 처리 시간에 해당하는 만큼 크다. 그러나, 하나의 AddRoundKey 변환의 처리 시간은 1 사이클 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 훨씬 짧다. 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 때로는 1 사이클 시간에 대하여 충분한 여유를 두고 설정된다. 따라서, 종래 기술에서 각 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 1 사이클 시간보다 짧다면, 대다수의 경우에 본 실시예 또한 구현될 수 있는 것으로 상정된다.In the present embodiment, the sum of signal processing times for each subblock transformation of the 0th cycle in which AddRoundKey transformation, SubBytes transformation, ShiftRows transformation, MixColumns transformation, and AddRoundKey transformation are performed is performed by AddRoundKey transformation, SubBytes transformation, ShiftRows transformation, And summation of the signal processing times for each subblock transformation within the first to eighth cycles in which the MixClumns transformation is performed, or signal processing for each subblock transformation in the ninth cycle in which the AddRoundKey transformation, SubBytes transformation, and ShiftRows transformation are performed. It is longer than the sum of time. 43 is also applicable to decryption, and applies to decryption as described above. Therefore, in the fifth embodiment, the maximum value of the sum of the signal processing times for each subblock transform is as large as the processing time of one AddRoundKey transform as compared with the prior art. However, the processing time of one AddRoundKey transformation is much shorter than the sum of the signal processing times for each subblock transformation within one cycle. The maximum sum of the signal processing time for each subblock conversion within each clock cycle period is sometimes set with sufficient margin for one cycle time. Therefore, in the prior art, it is assumed that the present embodiment can also be implemented in most cases if the maximum value of the sum of the signal processing times for each subblock transformation within each cycle period is shorter than one cycle time.
상기 제6 실시예의 특징에 대하여 정리한다.The features of the sixth embodiment are summarized.
종래의 일반적인 구현 방법에 있어서, 규격에 의해 정의된 라운드 기능은 처리에 있어서의 단절로서 간주되어, 암호화 및 복호화가 클록 사이클들에 분산되어 있다. 따라서, 10번째 및 0번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산은 1번째 내지 9번째 사이클 각각에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 짧다. 즉, 각 사이클에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산은 변동한다.In a conventional general implementation method, the round function defined by the specification is regarded as a break in processing, so that encryption and decryption are distributed among clock cycles. Therefore, the sum of the signal processing times for each subblock transform in the 10th and 0th cycles is shorter than the sum of the signal processing times for each subblock transform in each of the 1st to 9th cycles. That is, the sum of the signal processing times for each subblock transform executed in each cycle varies.
한편, 제6 실시예에서는, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산 사이의 차이가 감소하도록, 일부 클록 사이클들에서의 신호 처리가 증가된다.On the other hand, in the sixth embodiment, the signal processing in some clock cycles is increased so that the difference between the sum of the signal processing times for each subblock conversion within each clock cycle period is reduced.
제6 실시예에 있어서, 1 사이클에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 다소 증가된다. 따라서, 제6 실시예는 반드시 종래 기술이 구현될 수 있는 조건하에 구현될 필요는 없다. 그러나, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 때로는 1 사이클 시간에 대하여 충분한 여유를 두고 설정되기 때문에, 대다수의 경우에서 문제가 되지는 않는다. 대다수의 경우, AES 암호화 또는 복호화에 필요한 클록 사이클 수는 1 사이클 감소될 수 있다. 이는 AES 처리 속도를 약 10% 증가시킨다.In the sixth embodiment, the maximum of the sum of signal processing times for each subblock transform executed in one cycle is somewhat increased. Thus, the sixth embodiment does not necessarily need to be implemented under the condition that the prior art can be implemented. However, since the maximum value of the sum of signal processing times for each subblock conversion within each clock cycle period is sometimes set with sufficient margin for one cycle time, this is not a problem in most cases. In most cases, the number of clock cycles required for AES encryption or decryption can be reduced by one cycle. This increases the AES processing speed by about 10%.
다음, AES 암호화 및 복호화를 구현하기 위한 AES 코어의 회로 구성에 대하여 설명한다.Next, a circuit configuration of the AES core for implementing AES encryption and decryption will be described.
도 44는 본 실시예에 따른 AES 코어의 블록도이다. 도 44를 참조하면, AES 코어(241)는 AES 처리를 실행한다. 키 확장부(242)는 암호키로부터 AES 암호화 및 복호화에 필요한 라운드 키를 생성하여, 이 라운드 키를 출력한다. 암호화/복호화부(243)는 키 확장부(242)로부터 공급되는 라운드 키를 이용하여 128 비트 평문 데이터의 암호화 또는 128 비트 암호문 데이터의 복호화를 실행한다. 제어부(244)는 AES 코어(241) 외부의 유닛으로부터 제어 신호를 수신하여, 키 확장부(242) 및 암호화/복호화부(243)의 동작을 제어하기 위한 신호들과 AES 코어(241) 외부의 유닛에 동작의 완료를 통지하기 위한 신호를 생성한다.44 is a block diagram of an AES core according to the present embodiment. Referring to Fig. 44, the
도 44의 구성요소들과 신호 라인들은 제1 실시예 및 제2 실시예에 기재된 바와 동일하며, 그 설명은 생략한다.The components and signal lines of FIG. 44 are the same as those described in the first and second embodiments, and description thereof is omitted.
다음, 암호화/복호화부(243)에 대하여 설명한다. 도 45는 암호화/복호화 부(243)의 블록도이다. 도 45를 참조하면, 변형된 라운드 기능 모듈(245)은 선택 신호(170 및 175)와 암호화/복호화 선택 신호(153)의 제어 하에서 라운드 키 A(162) 및 라운드 키 B(163)를 이용하여 1 사이클 분의 암호화 또는 복호화를 실행한다.Next, the encryption /
상기 구성에 있어서, 선택 신호(171)가 니게이트되는 때에, 암호화/복호화부(243)의 선택기(109)는 입력 신호(150)를 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다.In the above configuration, when the
도 45의 구성요소들과 신호 라인들은 제1 실시예 및 제2 실시예에 기재된 바와 동일하며, 그 설명은 생략한다.The components and signal lines of FIG. 45 are the same as described in the first and second embodiments, and description thereof is omitted.
다음, 변형된 라운드 기능 모듈(245)에 대하여 도 46을 참조하여 설명한다. 도 46을 참조하면, 입력 신호(165) 및 암호화/복호화 선택 신호(153)가 MixColumns/InvMixColumns 변환 모듈(224)에 입력된다. MixColumns/InvMixColumns 변환 모듈(224)의 출력, 입력 신호(165), 및 선택 신호(175)가 선택기(137)에 입력된다. 선택기(137)의 출력 및 라운드 키 A(162)가 AddRoundKey 변환 모듈(110)에 입력된다. AddRoundKey 변환 모듈(110)의 출력은 SubBytes/InvSubBytes 변환 모듈(222)에 입력된다. SubBytes/InvSubBytes 변환 모듈(22)의 출력은 ShiftRows/InvShiftRows 변환 모듈(223)에 입력된다. ShiftRows/InvShiftRows 변환 모듈(223)의 출력 및 라운드 키 B(163)는 AddRoundKey 변환 모듈(114)에 입력된다. ShiftRows/InvShiftRows 변환 모듈(223)의 출력, AddRoundKey 변환 모듈(114)의 출력, 및 선택 신호(170)은 선택기(115)에 입력된다. 선택기(115)의 출력은 변 형된 라운드 기능 모듈(245)로부터의 출력 신호(168)에 연결된다. 도 46의 구성요소 들과 신호 라인들은 제1, 제4, 및 제5 실시예에서 설명한 바와 동일하며, 그 설명은 생략한다.Next, the modified
상기 구성에 있어서, 선택 신호(175)가 니게이트되는 때에, 선택기(137)는 MixColumns/InvMixColumns 변환 모듈(224)의 출력을 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(137)는 입력 신호(165)를 선택하여 출력한다. 선택 신호(170)가 니게이트 되는 때에, 선택기(115)는 ShiftRows/InvShiftRows 변환 모듈(223)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다.In the above configuration, when the
도 27a 및 도 27b의 타이밍 차트를 참조하여 상기 구성에 있어서의 암호화 동작에 대하여 설명한다. 도 27a의 좌단의 세로축에 있는 3 자리수는 신호 라인을 나타내며, 도 44 내지 도 46에 사용되는 신호 라인의 참조 번호에 일대일 대응한다.The encryption operation in the above configuration will be described with reference to the timing charts of Figs. 27A and 27B. Three digits on the vertical axis of the left end of FIG. 27A represent signal lines and correspond one-to-one to reference numerals of the signal lines used in FIGS. 44 to 46.
도 27a 및 도 27b의 타이밍 차트에 도시된 암호화 동작은 4개의 부분으로 대별된다. 1번째 부분은 암호키 등의 각종 파라미터를 설정하는 파라미터 설정 기간(T01 내지 T06)이다. 2번째 부분은 wkey0를 생성하여 이를 레지스터에 유지시키는 키 준비 기간(T06 내지 T17)이다. 3번째 부분은 1번째 블록의 암호화 기간(T17 내지 T27)이다. 4번째 부분은 2번째 블록의 암호화 기간이다(T27부터).The encryption operation shown in the timing chart of Figs. 27A and 27B is roughly divided into four parts. The first part is parameter setting periods T01 to T06 for setting various parameters such as encryption keys. The second part is a key preparation period (T06 to T17) for generating wkey0 and holding it in a register. The third portion is the encryption periods T17 to T27 of the first block. The fourth part is the encryption period of the second block (from T27).
파라미터 설정 기간의 역할, 개시 조건, 및 종료 조건은 제3 실시예와 동일하다. 키 준비 기간은 T06에서부터 T17까지이다. 개시 조건, 종료 조건, 및 각 회로의 동작은 제3 실시예에 기재된 바와 동일하며, 그 설명은 생략한다. The role, start condition, and end condition of the parameter setting period are the same as in the third embodiment. The key preparation period is from T06 to T17. The start condition, end condition, and operation of each circuit are the same as those described in the third embodiment, and the description thereof is omitted.
제어부(244)는 선택 신호(175)를 암호화의 종료 시(T16)에 어서트시키고, 암호화의 제1 사이클(T18 또는 T28)에서 니게이트시킨다. 제어부(244)는 또한 암호화의 최종 사이클(T16)에서 선택 신호(170)를 어서트시키고, 암호화의 종료시(T17)에 니게이트시킨다. 제어부(244)는 또한 암호화의 1번째 사이클에서 선택 신호(171)을 어서트시키고, 암호화의 종료시에 니게이트시킨다..The
회로 구성에 대하여 설명한 바와 같이, 선택 신호(171)가 니게이트되는 때에, 선택기(109)는 입력 신호(150)을 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다. 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 ShiftRows/InvShiftRows 변환 모듈(223)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 AddRoundKey 변환 모듈(114)의 결과를 선택하여 출력한다. 선택 신호(175)가 니게이트되는 때에, 선택기(137)는 MixClolumns/InvMixColumns 변환 모듈(224)의 결과를 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(137)는 입력 신호(165)를 선택하여 출력한다. 암호화/복호화 선택 신호(153)가 니게이트되는 때에, SubBytets/InvSubBytes 변환 모듈(222), ShiftRows/InvShifRows 변환 모듈(223), 및 MixColumns/InvMixColumns 변환 모듈(224)이 SubBytes 변환, ShiftRows 변환, 및 MixColumns 변환을 각각 실행한다. 암호화/복호화 선택 신호(153)가 어서트되는 때에, 이들은 InvSubBytes 변환, InvShiftRows 변환, 및 InvMixColumns 변환을 각각 실행한다.As described with respect to the circuit configuration, when the
따라서, 0번째 사이클(T17 내지 T18)에서, 변형된 라운드 기능 모듈(245)은 입력 신호(150)에 대하여 AddRoundKey 변환, SubBytets 변환, 및 ShiftRows 변환을 실행한다. 1번째 사이클로부터, 변형된 라운드 기능 모듈은 바로 전의 사이클의 결과에 대하여 SubBytes 변환, ShiftRows 변환, MixColumns 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 출력한다. 9번째 사이클(T26 내지 T27)에서, 변형된 라운드 기능 모듈은 MixColumns 변환, AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 출력한다.Therefore, in the 0 th cycle T17 to T18, the modified
변형된 라운드 기능 모듈(245)은 상기 방법으로 선택 신호(171, 170, 및 175)를 제어함으로써 도 42에 도시된 바와 같이 암호화를 실행할 수 있다.The modified
한편, 키 확장부(242)는 키 준비 기간 이후에 라운드 키 A(162)로서 wkey0을, 라운드 키 B(163)로서 wkey10를 출력한다. 따라서, 암호화 개시 시(T17) 변형된 라운드 기능 모듈(245)에 wkey0가 공급된다. 암호화/복호화 개시 신호(158)에 기초하여 암호화의 개시를 검출하면(T17), 키 확장부(242)는 라운드 키 A 레지스터에 유지되는 wkey0을 이용하여 wkey1를 생성하고, 라운드 키 A 레지스터에 wkey1를 유지한다. 따라서, 타이밍 T18에서 wkey1가 변형된 라운드 기능 모듈(245)에 공급된다. 타이밍 T26까지 동일한 방법으로 라운드 키들이 공급된다. 타이밍 T26에서, 라운드 키 B(163)으로 기능하는 wkey10가 또한 공급된다. 라운드 키 A 레지스터에 wkey0가 유지되고, 타이밍 T26에서 라운드 키 공급이 종료되면, 키 확장부(242)는 암호키(152)로서 계속 외부에서 공급되는 wkey0을 라운드 키 A 레지스터에 유지하여, 다음 암호화의 개시(T27)를 준비한다.On the other hand, the
전술한 바와 같이 키 확장부(242)가 동작하는 때에, 변형된 라운드 기능 모듈(245)은 도 42에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.As described above, when the
제5 실시예에 따른 암호화 기간 동안의 동작은 상기의 방법으로 수행된다. 2번째 블록의 복호화 동작은 1번째 블록에 대한 것과 동일한 방식으로 수행된다. 그 후, 소정의 블록 수만큼 암호화 동작이 반복 수행된다. 도 27a 및 도 27b의 타이밍 차트에서, 2번째 블록의 암호화는 1번째 블록의 암호화의 종료 후에 최단 간격에서 개시된다. AES 코어는 이러한 타이밍에서 모든 블록의 암호화를 실행함으로써 그 최대 성능을 발휘할 수 있다. 그러나, 암호화 간격은 기본적으로 임의의 길이로 설정될 수 있다.The operation during the encryption period according to the fifth embodiment is performed by the above method. The decoding operation of the second block is performed in the same manner as for the first block. After that, the encryption operation is repeatedly performed as many as a predetermined number of blocks. In the timing charts of Figs. 27A and 27B, encryption of the second block is started at the shortest interval after termination of encryption of the first block. The AES core can achieve its maximum performance by executing encryption of all blocks at this timing. However, the encryption interval can basically be set to any length.
소정 수의 블록들의 암호화가 완전히 종료되어, 암호키와 같은 다른 파라미터를 이용하여 다음 작업이 실행되어야 하는 때에는, 파라미터 설정으로부터 처리가 다시 개시된다.When the encryption of the predetermined number of blocks is completely terminated and the next operation must be executed using another parameter such as an encryption key, the process starts again from the parameter setting.
다음, 제6 실시예의 복호화 동작에 대하여 설명한다. 도 47a 및 도 47b는 제6 실시예에 따른 복호화의 타이밍 차트이다. 도 47a 및 도 47b를 참조하면, 가로축이 시간을 나타낸다. 클록 펄스의 리딩 에지에 대하여 타이밍 명칭 T01, T02, ..., T33이 할당된다. 도 47a의 좌단의 세로축 상의 3 자리수는 신호 라인을 나타내며, 도 44 내지 도 46에서 사용되는 신호 라인의 참조 번호와 일대일 대응한다.Next, the decoding operation of the sixth embodiment will be described. 47A and 47B are a timing chart of decoding according to the sixth embodiment. 47A and 47B, the horizontal axis represents time. Timing names T01, T02, ..., T33 are assigned to the leading edge of the clock pulse. Three digits on the vertical axis of the left end of FIG. 47A represent signal lines and correspond one-to-one with reference numerals of the signal lines used in FIGS. 44 to 46.
도 47a 및 도 47b의 타이밍 차트에 도시된 복호화 동작은 4개 부분으로 대별된다. 1번째 부분은 암호키 등의 각종 파라미터를 설정하는 파라미터 설정 기 간(T01 내지 T06)이다. 2번째 부분은 wkey0를 생성하여 이를 레지스터에 유지시키는 키 준비 기간(T06 내지 T17)이다. 3번째 부분은 1번째 블록의 복호화 기간(T17 내지 T27)이다. 4번째 부분은 2번째 블록의 복호화 기간이다(T27부터).The decoding operation shown in the timing chart of Figs. 47A and 47B is roughly divided into four parts. The first part is parameter setting periods T01 to T06 for setting various parameters such as encryption keys. The second part is a key preparation period (T06 to T17) for generating wkey0 and holding it in a register. The third part is the decoding periods T17 to T27 of the first block. The fourth part is the decoding period of the second block (from T27).
파라미터 설정 기간의 역할, 개시 조건, 및 종료 조건은 본 실시예의 암호화와 동일하다. 복호화에 있어서는, 그러나, 암호화/복호화 선택 신호(153)가 어서트된다. 키 준비 기간은 T06에서부터 T17까지이며, 그 개시 조건 및 종료 조건은 본 실시예의 암호화에 기재된 바와 동일하다. 각 회로의 동작은 본 실시예의 암호화에서와 거의 동일하다. 그러나, 타이밍 T16에서, 라운드 키 B(163)로서 wkey10이 출력된다. 키 준비 기간(T17)의 종료 시, 제어부(244)는 선택 신호(175)를 어서트시킨다.The role, start condition, and end condition of the parameter setting period are the same as in encryption of this embodiment. In decryption, however, the encryption /
제1 블록 복호화 기간은 T17에서부터 T27까지이며, 그 개시 조건과 종료 조건은 본 실시예의 암호화와 동일하다. 각 회로의 동작 또한 전술한 바와 거의 동일하다.The first block decryption period is from T17 to T27, and its start condition and end condition are the same as in the encryption of the present embodiment. The operation of each circuit is also almost the same as described above.
제어부(244)는 선택 신호(170)를 복호화의 최종 사이클(T16)에서 어서트시키고, 복호화의 첫번째 사이클(T18 또는 T28)에서 니게이트시킨다. 제어부(244)는 또한 복호화의 종료 시(T17) 선택 신호(175)를 어서트시키고, 복호화의 종료시(T17)에 니게이트시킨다. 제어부(244)는 또한 복호화의 1번째 사이클에서 선택 신호(171)를 어서트시키고, 복호화의 종료시 이를 니게이트시킨다.The
회로 구성에 대하여 설명한 바와 같이, 선택 신호(171)가 니게이트되는 때에, 선택기(109)가 입력 신호(150)을 선택한다. 선택 신호(171)가 어서트되는 때 에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다. 선택 신호(175)가 니게이트되는 때에, 선택기(137)는 MixColumns/InvMixColumns 변환 모듈(224)의 출력을 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(137)는 입력 신호(165)를 선택하여 출력한다. 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 ShiftRows/InvShiftRows 변환 모듈(223)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다. As described with respect to the circuit configuration, when the
따라서, 0번째 사이클(T17 내지 T18)에서, 변형된 라운드 기능 모듈(245)은 입력 신호(150)에 대하여 AddRoundKey 변환, InvShiftRows 변환, 및 InvSubBytes 변환을 실행한다. 1번째 사이클에서부터, 변형된 라운드 기능 모듈은 바로 전의 사이클의 결과에 대하여 AddRoundKey 변환, InvMixColumns 변환, InvShiftRows 변환, 및 InvSubBytes 변환을 실행하여 얻은 결과를 출력한다. 9번째 사이클(T26 내지 T27)에서, 변형된 라운드 기능 모듈은 AddRoundKey 변환, InvMixColumns 변환, InvShiftRows 변환, InvSubBytes 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 출력한다.Therefore, in the 0 th cycle T17 to T18, the modified
전술한 방법으로 선택 신호(171, 170, 및 175)를 제어함으로써 변형된 라운드 기능 모듈(245)은 도 42에 도시된 바와 같이 복호화를 실행할 수 있다.By controlling the selection signals 171, 170, and 175 in the above-described manner, the modified
한편, 키 확장부(242)는 키 준비 기간 이후에 라운드 키 A(162)로서 wkey10을, 라운드 키 B(163)로서 wkey0를 출력한다. 따라서, 복호화 개시 시(T17) 변형된 라운드 기능 모듈(245)에 wkey10이 공급된다. 암호화/복호화 개시 신호(158)에 기초하여 복호화의 개시를 검출하면(T17), 키 확장부(242)는 라운드 키 A 레지스터에 유지되는 wkey10'을 이용하여 wkey9'를 생성하고, 라운드 키 A 레지스터에 wkey9'를 유지한다. 따라서, T18에서 wkey9'가 변형된 라운드 기능 모듈(245)에 공급된다. 동일한 방법으로, T19에서 wkey9'이, T20에서 wkey8'이, ..., T26에서 wkey1'이 공급된다. 최종 사이클의 처리에 필요한 wkey0는 라운드 키 B(163)로서 계속 공급된다.On the other hand, the
T26에서 라운드 키 공급이 종료되는 때에, 키 확장부(242)는 키 확장부(242)의 내부 레지스터에 유지되는 wkey10을 이용하여 wkey9'을 생성하고, 다음 사이클(T27)에서 라운드 키 A 레지스터에 wkey9'을 유지하여, 다음 복호화의 개시를 준비한다.When the round key supply ends at T26, the
제6 실시예에 따른 복호화 기간 동안의 동작은 상기의 방법으로 수행된다. 2번째 블록의 복호화 동작은 1번째 블록에 대한 것과 동일한 방식으로 수행된다. 그 후, 소정의 블록 수만큼 복호화 동작이 반복 수행된다. 도 47a 및 도 47b의 타이밍 차트에서, 2번째 블록의 복호화는 1번째 블록의 복호화의 종료 후에 최단 간격에서 개시된다. AES 코어는 이러한 타이밍에서 모든 블록의 복호화를 실행함으로써 그 최대 성능을 발휘할 수 있다. 그러나, 복호화 간격은 기본적으로 임의의 길이로 설정될 수 있다.Operation during the decoding period according to the sixth embodiment is performed by the above method. The decoding operation of the second block is performed in the same manner as for the first block. After that, the decoding operation is repeatedly performed as many as a predetermined number of blocks. In the timing charts of Figs. 47A and 47B, decoding of the second block is started at the shortest interval after completion of decoding of the first block. The AES core can achieve its maximum performance by executing decryption of all blocks at this timing. However, the decryption interval can basically be set to any length.
소정 수의 블록들의 복호화가 완전히 종료되어, 암호키와 같은 다른 파라미터를 이용하여 다음 작업이 실행되어야 하는 때에는, 파라미터 설정으로부터 처리가 다시 개시된다.When the decryption of the predetermined number of blocks is completely terminated and the next operation is to be executed using another parameter such as an encryption key, the process starts again from the parameter setting.
제6 실시예가 상기 방법으로 구현될 수 있다. 제6 실시예에 있어서, 1 사이클에서 실행되어야 하는 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는 다소 증가한다. 그러나, 이는 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 때로는 1 사이클 시간에 대하여 충분한 여유를 두고 설정되기 때문에, 대다수의 경우에서 문제가 되지는 않는다. 따라서, 대다수의 경우, AES 암호화에 필요한 클록 사이클 수는 1 사이클 감소될 수 있다. 이는 AES 처리 속도를 약 10% 증가시킨다.The sixth embodiment can be implemented in this way. In the sixth embodiment, the maximum of the sum of the signal processing times for each subblock transform that must be executed in one cycle is somewhat increased. However, this is not a problem in most cases since the maximum of the summation of the signal processing times for each subblock conversion within each clock cycle period is sometimes set with sufficient margin for one cycle time. Thus, in most cases, the number of clock cycles required for AES encryption can be reduced by one cycle. This increases the AES processing speed by about 10%.
상기 제6 실시예는 어디까지나 본 발명의 일례에 지나지 않고, 본 발명의 효과는 상기 실시예에 한정되는 것은 아니다. The sixth embodiment is merely an example of the present invention, and the effects of the present invention are not limited to the above embodiment.
<제7 실시예>Seventh Example
제1 내지 제6 실시예에 있어서, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 1 사이클 시간의 1/2 보다 작거나 같다면, 2 클록 사이클이 요구되는 처리가 1 클록 사이클에서 실행되도록 구현함으로써 처리 속도가 증가될 수 있다. 제7 실시예에서는, 제1 실시예를 예로 들어 스피드 업 방법을 구현한 예에 대하여 설명한다.In the first to sixth embodiments, a process in which two clock cycles are required if the maximum value of the sum of the signal processing times for each subblock conversion within each clock cycle period is less than or equal to 1/2 of one cycle time. The processing speed can be increased by implementing a to run in one clock cycle. In the seventh embodiment, an example of implementing the speed up method will be described taking the first embodiment as an example.
제7 실시예에 따른 암호화/복호화 회로의 암호화에 관련된 구성은, 제1 변형된 라운드 기능 모듈, 제2 변형된 라운드 기능 모듈, 및 데이터 유지부를 포함한다. 제1 변형된 라운드 기능 모듈은, 제1 AddRoundKey 변환 모듈, 제1 ShiftRows 변환 모듈, 제1 SubBytes 변환 모듈, 제1 MixColumns 변환 모듈, 및 제2 AddRoundKey 변환 모듈을 포함한다. 제2 변형된 라운드 기능 모듈은, 제3 AddRoundKey 변환 모듈, 제2 ShiftRows 변환 모듈, 제2 SubBytes 변환 모듈, 및 제2 MixColumns 변환 모듈을 포함한다.A configuration related to encryption of the encryption / decryption circuit according to the seventh embodiment includes a first modified round function module, a second modified round function module, and a data holding part. The first modified round function module includes a first AddRoundKey transform module, a first ShiftRows transform module, a first SubBytes transform module, a first MixColumns transform module, and a second AddRoundKey transform module. The second modified round function module includes a third AddRoundKey transform module, a second ShiftRows transform module, a second SubBytes transform module, and a second MixColumns transform module.
제7 실시예에 따른 암호화/복호화 회로의 복호화에 관련된 구성은, 제1 변형된 라운드 기능 모듈, 제2 변형된 라운드 기능 모듈, 및 데이터 유지부를 포함한다. 제1 변형된 라운드 기능 모듈은, 제1 AddRoundKey 변환 모듈, 제1 InvShiftRows 변환 모듈, 제1 InvSubBytes 변환 모듈, 제1 InvMixColumns 변환 모듈, 및 제2 AddRoundKey 변환 모듈을 포함한다. 제2 변형된 라운드 기능 모듈은, 제3 AddRoundKey 변환 모듈, 제2 InvShiftRows 변환 모듈, 제2 InvSubBytes 변환 모듈, 및 제2 InvMixColumns 변환 모듈을 포함한다.A configuration related to decryption of the encryption / decryption circuit according to the seventh embodiment includes a first modified round function module, a second modified round function module, and a data holding unit. The first modified round function module includes a first AddRoundKey transform module, a first InvShiftRows transform module, a first InvSubBytes transform module, a first InvMixColumns transform module, and a second AddRoundKey transform module. The second modified round function module includes a third AddRoundKey transform module, a second InvShiftRows transform module, a second InvSubBytes transform module, and a second InvMixColumns transform module.
암호화 및 복호화의 구성은 이하의 설명으로 명확하게 될 것이다.The configuration of encryption and decryption will become apparent from the following description.
도 48은 제7 실시예의 클록 사이클에서 실행되는 암호화의 처리 내용과 종래 기술과의 비교를 나타낸다.Fig. 48 shows a comparison between the contents of encryption executed in the clock cycle of the seventh embodiment and the prior art.
도 48을 참조하면, 클록 카운트는 AES 처리의 시작 시에 "0"인 클록 사이클 카운트를 나타낸다. 라운드 키 wkeyi (i는 라운드 수)는 FIPS197에 기재된 라운드 키이다.Referring to Fig. 48, the clock count indicates a clock cycle count that is "0" at the start of the AES process. Round key wkeyi (i is the number of rounds) is the round key described in FIPS197.
제7 실시예에 있어서, 0번째 내지 3번째 사이클에서, 제1 AddRoundKey 변환, 제1 SubBytes 변환, 제1 ShiftRows 변환, 제1 MixColumns 변환, 제2 AddRoundKey 변환, 제2 SubBytes 변환, 제2 ShiftRows 변환, 및 제2 MixColumns 변환이 수행된다. 4번째 사이클에서, 제1 AddRoundKey 변환, 제1 SubBytes 변환, 제1 ShiftRows 변환, 제1 MixColumns 변환, 제2 AddRoundKey 변환, 제2 ShiftRows 변환, 제2 SubBytes 변환, 및 제3 AddRoundKey 변환이 실행된다.In the seventh embodiment, in the 0th to 3rd cycles, the first AddRoundKey transformation, the first SubBytes transformation, the first ShiftRows transformation, the first MixColumns transformation, the second AddRoundKey transformation, the second SubBytes transformation, the second ShiftRows transformation, And a second MixColumns transformation is performed. In a fourth cycle, a first AddRoundKey transform, a first SubBytes transform, a first ShiftRows transform, a first MixColumns transform, a second AddRoundKey transform, a second ShiftRows transform, a second SubBytes transform, and a third AddRoundKey transform are executed.
라운드 키로서는, 0번째 사이클에서 wkey0 과 wkey1이, 1번째 사이클에서 wkey2 와 wkey3이, ..., 4번째 사이클에서 wkey8, wkey9, 및 wkey10이 사용된다. As the round key, wkey0 and wkey1 are used in the 0th cycle, wkey2 and wkey3 are used in the first cycle, ..., wkey8, wkey9, and wkey10 are used in the fourth cycle.
제7 실시예에서는, 종래 기술과 동일한 처리가 전체적으로 실행된다. 그러나, 제7 실시예에서는, AES 암호화를 l개 적은 클록 사이클로 실행할 수 있다. 다음, 제7 실시예에 따라서 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 암호화 처리 시간의 합산에 대하여 설명한다. 도 49는 종래 기술과 제7 실시예의 클록 사이클에서 실행되는 각 서브블록 변환에 대한 암호화 처리 시간의 합산 사이의 비교를 나타낸 도면이다. 세로축은 시간을 나타낸다. 바가 길수록, 처리 시간이 길다. 제7 실시예를 구현하기 위하여, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 1 클록 사이클 시간보다 작아야 한다. 도 49에 도시된 바와 같이, 각 서브블록 변환의 처리 시간은 SubBytes 변환이 가장 길고, MixColumns 변환, AddRoundKey 변환, ShiftRows 변환의 순서로 짧다.In the seventh embodiment, the same processing as in the prior art is executed as a whole. However, in the seventh embodiment, AES encryption can be executed in clock cycles fewer by one. Next, the sum of the encryption processing time for each subblock conversion within each clock cycle period will be described according to the seventh embodiment. FIG. 49 shows a comparison between the sum of encryption processing times for each subblock transformation executed in the clock cycle of the prior art and the seventh embodiment. FIG. The vertical axis represents time. The longer the bar, the longer the processing time. In order to implement the seventh embodiment, the maximum of the sum of the signal processing times for each subblock conversion within each clock cycle period must be less than one clock cycle time. As shown in Fig. 49, the processing time of each subblock transform has the longest SubBytes transform, and is short in the order of MixColumns transform, AddRoundKey transform, and ShiftRows transform.
제7 실시예에 있어서, 제1 AddRoundKey 변환, 제1 SubBytes 변환, 제1 ShiftRows 변환, 제1 MixColumns 변환, 제2 AddRoundKey 변환, 제2 SubBytes 변환, 제2 ShiftRows 변환, 및 제2 MixColumns 변환이 실행되는 0번째 내지 3번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산은, 제1 AddRoundKey 변환, 제1 SubBytes 변환, 제1 ShiftRows 변환, 제1 MixClumns 변환, 제2 AddRoundKey 변환, 제2 ShiftRows 변환, 제2 SubBytes 변환, 및 제3 AddRoundKey 변환이 실행되는 4번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 더 길다. 따라서, 제7 실시예에서 1 사이클에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는, 종래 기술과 동일하다. 1 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 종래 기술에서 1 사이클 시간보다 짧다면, 제7 실시예가 또한 구현될 수 있다.In the seventh embodiment, the first AddRoundKey transformation, the first SubBytes transformation, the first ShiftRows transformation, the first MixColumns transformation, the second AddRoundKey transformation, the second SubBytes transformation, the second ShiftRows transformation, and the second MixColumns transformation are performed. The sum of the signal processing times for each subblock transform in the 0th to 3rd cycles is the first AddRoundKey transform, the first SubBytes transform, the first ShiftRows transform, the first MixClumns transform, the second AddRoundKey transform, and the second ShiftRows transform. Is longer than the sum of the signal processing time for each subblock transform in the fourth cycle in which the second SubBytes transform, and the third AddRoundKey transform are performed. Therefore, in the seventh embodiment, the maximum value of the sum of the signal processing times for each subblock transform executed in one cycle is the same as in the prior art. The seventh embodiment can also be implemented if the maximum value of the sum of the signal processing times for each subblock transformation within one cycle period is shorter than one cycle time in the prior art.
본 발명은 AES 복호화에도 적용가능하다.The present invention is also applicable to AES decoding.
도 50은 제7 실시예의 클록 사이클에서 실행되는 복호화의 처리 내용과 종래 기술과의 비교를 나타낸다. 도 50을 참조하면, 사이클 카운트는 AES 처리의 개시시에 "0"인 클록 사이클 카운트를 나타낸다.Fig. 50 shows a comparison between the processing contents of the decoding executed in the clock cycle of the seventh embodiment and the prior art. Referring to Fig. 50, the cycle count indicates a clock cycle count that is "0" at the start of the AES process.
제7 실시예에 있어서, 0번째 사이클에서는 제1 AddRoundKey 변환, 제1 InvShiftRows 변환, 제1 InvSubBytes 변환, 제2 AddRoundKey 변환, 제1 InvMixColumns 변환, 및 제2 InvShiftRows 변환, 및 제2 InvSubBytes 변환, 및 제3 AddRoundKey 변환이 실행된다. 1번째 내지 4번째 사이클에서는, 제1 InvMixColumns 변환, 제1 InvShiftRows 변환, 제1 InvSubBytes 변환, 제1 AddRoundKey 변환, 제2 InvMixColumns 변환, 제2 InvShiftRows 변환, 제2 InvSubBytes 변환, 및 제2 AddRoundKey 변환이 실행된다. 라운드 키로서는, 0번째 사이클에서 wkey1O, wkey9, 및 wkey8, l번째 사이클에서는 wkey7 및 wkey6, 2번째 사이클에서는 wkey5 및 wkey4, ..., 4번째 사이클에서는 wkey1 및 wkey0이 사용된다. In the seventh embodiment, in the 0th cycle, the first AddRoundKey transformation, the first InvShiftRows transformation, the first InvSubBytes transformation, the second AddRoundKey transformation, the first InvMixColumns transformation, and the second InvShiftRows transformation, and the second InvSubBytes transformation, and the first 3 The AddRoundKey transformation is performed. In the first to fourth cycles, the first InvMixColumns transformation, the first InvShiftRows transformation, the first InvSubBytes transformation, the first AddRoundKey transformation, the second InvMixColumns transformation, the second InvShiftRows transformation, the second InvSubBytes transformation, and the second AddRoundKey transformation are executed. do. As the round key, wkey10, wkey9, and wkey8 in the 0th cycle, wkey7 and wkey6 in the 1st cycle, wkey5 and wkey4 in the second cycle, ..., wkey1 and wkey0 in the fourth cycle are used.
제7 실시예에서는, 종래 기술과 동일한 처리가 전체적으로 실행된다. 그러나, 제7 실시예에서는, AES 복호화를 l개 적은 클록 사이클로 실행할 수 있다.In the seventh embodiment, the same processing as in the prior art is executed as a whole. However, in the seventh embodiment, AES decryption can be executed in clock cycles fewer by one.
다음, 제7 실시예에 따라서 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 복호화 처리 시간의 합산에 대하여 설명한다. 도 51은 제7 실시예의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 복호화 처리 시간의 합산과 종래 기술과의 비교를 도면이다. 세로축은 시간을 나타낸다. 바가 길수록, 처리 시간이 길다. 제7 실시예를 구현하기 위하여, 각 클록 사이클 기간 내에서 각 서브블록 변환의 신호 처리 시간의 합산의 최대치가 1 클록 사이클 시간보다 작아야 한다. 도 51에 도시된 바와 같이, 각 서브블록 변환의 처리 시간은 InvSubBytes 변환이 가장 길고, InvMixColumns 변환, AddRoundKey 변환, InvShiftRows 변환의 순서로 짧다.Next, the sum of the decoding processing time for each subblock conversion within each clock cycle period will be described according to the seventh embodiment. FIG. 51 is a diagram showing the sum of the decoding processing time for each subblock transformation within each clock cycle period in the seventh embodiment and comparison with the prior art. FIG. The vertical axis represents time. The longer the bar, the longer the processing time. In order to implement the seventh embodiment, the maximum of the sum of the signal processing times of each subblock conversion within each clock cycle period must be less than one clock cycle time. As shown in Fig. 51, the processing time of each subblock transform is the longest in InvSubBytes transform, and is short in the order of InvMixColumns transform, AddRoundKey transform, and InvShiftRows transform.
제7 실시예에 있어서, 제1 InvMaxColumns 변환, 제1 InvShiftRows 변환, 제1 InvSubBytes 변환, 제1 AddRoundKey 변환, 제2 InvMixColumns 변환, 제2 InvShiftRows 변환, 제2 InvSubBytes 변환, 및 제2 AddRoundKey 변환이 실행되는 1번째 내지 4번째 사이클 각각의 각 서브블록 변환에 대한 신호 처리 시간의 합산은, 제1 AddRoundKey 변환, 제1 InvShiftRows 변환, 제1 InvSubBytes 변환, 제2 AddRoundKey 변환, 제2 InvMixClumns 변환, 제2 InvShiftRows 변환, 제2 InvSubBytes 변환, 및 제3 AddRoundKey 변환이 실행되는 0번째 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산보다 더 길다. 따라서, 제7 실시예에서 1 사이클에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치는, 종래 기술과 동일하다. 1 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치가 종래 기술에서 1 사이클 시간보다 짧다면, 제7 실시 예가 또한 구현될 수 있다.In a seventh embodiment, a first InvMaxColumns transformation, a first InvShiftRows transformation, a first InvSubBytes transformation, a first AddRoundKey transformation, a second InvMixColumns transformation, a second InvShiftRows transformation, a second InvSubBytes transformation, and a second AddRoundKey transformation are performed. The sum of the signal processing times for each subblock transformation of each of the first to fourth cycles includes a first AddRoundKey transformation, a first InvShiftRows transformation, a first InvSubBytes transformation, a second AddRoundKey transformation, a second InvMixClumns transformation, and a second InvShiftRows transformation Is longer than the sum of the signal processing times for each subblock transform in the 0th cycle in which the second InvSubBytes transform and the third AddRoundKey transform are performed. Therefore, in the seventh embodiment, the maximum value of the sum of the signal processing times for each subblock transform executed in one cycle is the same as in the prior art. If the maximum value of the summation of the signal processing times for each subblock transformation within one cycle period is shorter than one cycle time in the prior art, the seventh embodiment can also be implemented.
본 실시예의 특징에 대하여 정리한다.The features of this embodiment are summarized.
종래의 일반적인 구현 방법에 있어서, 규격에 의해 정의된 라운드 기능은 처리에 있어서의 단절로서 간주되어, 암호화 및 복호화가 클록 사이클들에 분산되어 있다. 따라서, 각 사이클에서의 각 서브블록 변환에 대한 신호 처리 시간의 합산은 변한다. 또한, 제1 실시예에서 설명한 바와 같이, 11개의 사이클, 즉, 홀수의 사이클이 처리에 필요하다. 1 사이클에서 2개의 사이클의 처리가 실행된다면, 1 사이클의 처리가 분절로 남는다. 결과적으로, 처리는 6개의 사이클을 필요로 한다.In a conventional general implementation method, the round function defined by the specification is regarded as a break in processing, so that encryption and decryption are distributed among clock cycles. Thus, the sum of the signal processing times for each subblock transform in each cycle changes. In addition, as described in the first embodiment, eleven cycles, that is, odd cycles, are required for processing. If two cycles of processing are performed in one cycle, one cycle of processing remains as a segment. As a result, the process requires six cycles.
한편, 본 발명에서는, AES 처리가 10개의 사이클을 필요로 한다. 2개의 사이클의 처리가 1개의 사이클에서 실행되어도, 분절이 남지 않는다. 제7 실시예와 같이, 2개의 사이클의 처리가 1개의 사이클에서 실행되는 경우, 1개 사이클의 감소가 AES 처리 속도를 약 20% 증가시킨다.On the other hand, in the present invention, AES processing requires 10 cycles. Even if two cycles of processing are performed in one cycle, no segment remains. As in the seventh embodiment, when two cycles of processing are executed in one cycle, the reduction of one cycle increases the AES processing speed by about 20%.
다음, AES 암호화 및 복호화를 구현하기 위한 AES 코어의 회로 구성에 대하여 설명한다.Next, a circuit configuration of the AES core for implementing AES encryption and decryption will be described.
도 52는 제7 실시예에 따른 AES 코어의 블록도이다. 52 is a block diagram of an AES Core according to the seventh embodiment.
도 52를 참조하면, AES 코어(401)는 AES 처리를 실행한다. 키 확장부(402)는 암호키로부터 AES 암호화 및 복호화에 필요한 라운드 키를 생성하여 출력한다. 암호화/복호화부(403)는 키 확장부(402)로부터 공급되는 라운드 키를 이용하여 128 비트 평문 데이터의 암호화 또는 128 비트 암호문 데이터의 복호화를 실행한다. 제어부(404)는 AES 코어(401) 외부의 유닛으로부터 제어 신호를 수신하여, 키 확장부(402) 및 암호화/복호화부(403)의 동작을 제어하기 위한 신호들과 AES 코어(401) 외부의 유닛에 동작의 완료를 통지하기 위한 신호를 생성한다.Referring to Fig. 52,
도 52를 참조하면, 라운드 키 A1(462)은 키 확장부(402)에 의해 생성되는 라운드 키들 중 하나이다. 라운드 키 A2(463)는 키 확장부(402)에 의해 생성되는 라운드 키 중 하나이다.Referring to FIG. 52, the round
도 52의 구성요소들과 신호 라인들은 제1 실시예와 동일한 참조 번호가 지칭되어 있으며, 그 설명은 생략한다.The components and signal lines of FIG. 52 are referred to by the same reference numerals as in the first embodiment, and description thereof is omitted.
상기 구성에 있어서, 라운드 키 A1(462)는 키 확장부(402)로부터 암호화/복호화부(403)에 입력되며, 라운드 키 A2(463)는 키 확장부(402)로부터 암호화/복호화부(403)에 입력된다.In the above configuration, the round
다음, 암호화/복호화부(403)에 대하여 설명한다. 도 53은 암호화/복호화부(403)의 블록도이다. 도 53을 참조하면, 변형된 라운드 기능 모듈(405)은 라운드 키 A1(462)를 이용하여 암호화를 실행한다. 변형된 라운드 기능 모듈(407)은 선택 신호(170)의 제어 하에서 라운드 키 A2(463) 및 라운드 키 B(163)를 이용하여 암호화를 실행한다. 변형된 라운드 기능 모듈(406)은 선택 신호(170)의 제어하에서 라운드 키 A1(462) 및 라운드 키 B(163)를 이용하여 복호화를 실행한다. 변형된 라운드 기능 모듈(408)은 라운드 키 A2(463)를 이용하여 복호화를 실행한다.Next, the encryption /
도 53을 참조하면, 변형된 라운드 기능 모듈(407)은 입력 신호(475)를 수신한다. 변형된 라운드 기능 모듈(408)은 입력 신호(476)를 수신한다. 도 53의 구 성요소들과 신호 라인들에는 제1 실시예와 동일한 참조번호가 지칭되어 있으며, 그 설명은 생략한다.Referring to FIG. 53, the modified
도 54a는 변형된 라운드 기능 모듈(405)의 블록도이다. 도 54b는 변형된 라운드 기능 모듈(407)의 블록도이다.54A is a block diagram of a modified
도 54a를 참조하여 변형된 라운드 기능 모듈(405)에 대하여 설명한다. 도 54a를 참조하면, AddRoundKey 변환 모듈(110)은 입력 신호(165) 및 라운드 키 A1(462)를 수신하여 AddRoundKey 변환을 실행한다. SubBytes 변환 모듈(111)은 AddRoundKey 변환 모듈(110)의 출력을 수신하여, SubBytes 변환을 실행한다. ShiftRows 변환 모듈(112)은 SubBytes 변환 모듈(111)의 출력을 수신하여, ShiftRows 변환을 실행한다. MixColumns 변환 모듈(113)은 ShiftRows 변환 모듈(112)의 출력을 수신하여, MixColumns 변환을 실행한다. MixColumns 변환 모듈(113)의 출력 신호는 변형된 라운드 기능 모듈(405)의 출력이다.A modified
도 54b를 참조하여 변형된 라운드 기능 모듈(407)에 대하여 설명한다. 도 54b를 참조하면, AddRoundKey 변환 모듈(110)은 입력 신호(475)와 라운드 키 A2(463)를 수신하여, AddRoundKey 변환을 실행한다. SubBytes 변환 모듈(111)은 AddRoundKey 변환 모듈(110)의 출력을 수신하여, SubBytes 변환을 실행한다. ShiftRows 변환 모듈(112)은 SubBytes 변환 모듈(111)의 출력을 수신하여, ShiftRows 변환을 실행한다. MixColumns 변환 모듈(113)은 ShiftRows 변환 모듈(112)의 출력을 수신하여, MixColumns 변환을 실행한다. AddRoundKey 변환 모듈(114)은 ShiftRows 변환 모듈(112)의 출력과 라운드 키 B(163)를 수신하여, AddRoundKey 변환을 실행한다. 선택기(115)는 선택 신호(170)에 따라서 MixColumns 변환 모듈(113)의 출력과 AddRoundKey 변환 모듈(114)의 출력 중 하나를 선택하여 출력한다. 선택기(115)의 출력 신호는 변형된 라운드 기능 모듈(407)의 출력이다.A modified
여기서, 전술한 변환들의 명칭은 FIPS197에 기재된 AES 처리의 서브블록 변환의 것과 동일하다.Here, the names of the above-described transforms are the same as those of the subblock transform of the AES process described in FIPS197.
상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 MixColumns 변환 모듈(113)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다.In the above configuration, when the
다음, 도 55a 및 도 55b를 참조하여, 변형된 라운드 기능 모듈(406 및 408)에 대하여 설명한다. 도 55a는 변형된 라운드 기능 모듈(406)의 블록도이다.Next, the modified
도 55a를 참조하면, InvMixColumns 변환 모듈(116)은 입력 신호(165)를 수신하여, InvMixColumns 변환을 실행한다. AddRoundKey 변환 모듈(121)은 입력 신호(165)와 라운드 키 B(163)를 수신하여, AddRoundKey 변환을 실행한다. 선택기(118)는 선택 신호(170)에 따라서 InvMixColumns 변환 모듈(116)의 출력과 AddRoundKey 변환 모듈(121)을 출력 중 하나를 선택하여 출력한다. InvShiftRows 변환 모듈(119)은 선택기(118)의 출력을 수신하여, InvShiftRows 변환을 실행한다. InvSubBytes 변환 모듈(120)은 InvShiftRow 변환 모듈(119)의 출력을 수신하여, InvSubBytes 변환을 실행한다. AddRoundKey 변환 모듈(117)은 InvSubBytes 변환 모듈(120)의 출력과 라운드 키 A1(462)을 수신하여, AddRoundKey 변환을 실행한다. AddRoundKey 변환 모듈(117)의 출력은 변형된 라운드 기능 모듈(406)의 출력이다.Referring to FIG. 55A, the
여기서, 상기 변환의 명칭들은 FIPS197에 기재된 AES 처리의 서브블록 변환과 동일하다.Here, the names of the transformations are the same as the subblock transformations of the AES process described in FIPS197.
상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(118)는 InvMixColumns 변환 모듈(116)의 결과를 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(118)는 AddRoundKey 변환 모듈(121)의 출력을 선택하여 출력한다.In the above configuration, when the
다음, 도 55b의 블록도를 참조하여 변형된 라운드 기능 모듈(408)에 대하여 설명한다.Next, the modified
도 55b를 참조하면, InvMixColumns 변환 모듈(116)은 입력 신호(476)를 수신하여, InvMixColumns 변환을 실행한다. InvShiftRows 변환 모듈(119)은 InvMixColumns 변환 모듈(116)의 출력을 수신하여, InvShiftRows 변환을 실행한다. InSubBytes 변환 모듈(120)은 InvShiftRows 변환 모듈(119)의 출력을 수신하여, InvSubBytes 변환을 실행한다. AddRoundKey 변환 모듈(117)은 InvSubBytes 변환 모듈(120)의 출력과 라운드 키 A2(463)을 수신하여, AddRoundKey 변환을 실행한다. AddRoundKey 변환 모듈(117)의 출력은 변형된 라운드 기능 모듈(408)의 출력이다.Referring to FIG. 55B, the
여기서, 상기 변환의 명칭들은 FIPS197에 기재된 AES 처리의 서브블록 변환과 동일하다.Here, the names of the transformations are the same as the subblock transformations of the AES process described in FIPS197.
다음, 도 56a 및 도 56b의 타이밍 차트를 참조하여 상기 구성의 암호화의 동 작에 대하여 상세하게 설명한다.Next, the operation of encryption of the above configuration will be described in detail with reference to the timing charts of Figs. 56A and 56B.
도 56a 및 도 56b를 참조하면, 가로축이 시간을 나타낸다. 클록 펄스의 리딩 에지에 대하여 타이밍 명칭 T01, T02, ..., T33이 할당된다. 도 56a의 좌단에 세로축에 있는 3 자리수는 신호 라인을 나타내며, 도 52 내지 도 55b에 사용되는 신호 라인의 참조 번호에 일대일 대응한다.Referring to Figs. 56A and 56B, the horizontal axis represents time. Timing names T01, T02, ..., T33 are assigned to the leading edge of the clock pulse. The three digits on the vertical axis at the left end of Fig. 56A represent signal lines and correspond one-to-one to the reference numbers of the signal lines used in Figs. 52 to 55B.
도 56a 및 도 56b의 타이밍 차트에 도시된 암호화 동작은 4개의 부분으로 대별된다. 1번째 부분은 암호키 등의 각종 파라미터를 설정하는 파라미터 설정 기간(T01 내지 T06)이다. 2번째 부분은 wkey0를 생성하여 이를 레지스터에 유지시키는 키 준비 기간(T06 내지 T12)이다. 3번째 부분은 1번째 블록의 암호화 기간(T12 내지 T17)이다. 4번째 부분은 2번째 블록의 암호화 기간이다(T17 내지 T22).The encryption operation shown in the timing chart of Figs. 56A and 56B is roughly divided into four parts. The first part is parameter setting periods T01 to T06 for setting various parameters such as encryption keys. The second part is a key preparation period (T06 to T12) for generating wkey0 and holding it in a register. The third part is the encryption period T12 to T17 of the first block. The fourth part is the encryption period of the second block (T17 to T22).
파라미터 설정에 있어서, 암호키(152) 및 암호화/복호화 선택 신호(153)에 추가하여 필요에 따라서 키 길이 및 암호화 모드 등의 암호화/복호화에 대한 각종 파라미터들이 설정된다. 파라미터 설정 기간은 리셋 직후부터의 임의의 길이를 갖는 기간이다. AES 코어(401)의 외부의 유닛으로부터 키 준비 개시 신호(155)가 어서트되는 경우(T06), 파라미터 설정 기간이 종료된다.In the parameter setting, in addition to the
파라미터 설정 기간의 종료와 동시에, 다음 키 준비 기간이 개시된다. 키 준비 기간에서, 키 확장부는 미리 라운드 키를 생성한다. 키 준비 기간은 키 준비 개시 신호(155)가 어서트된 후부터(T06), 최후 라운드 키(wkey10)가 생성되는 6개 사이클 이후의 타이밍까지(T12)의 기간이다.At the same time as the end of the parameter setting period, the next key preparation period starts. In the key preparation period, the key extension generates a round key in advance. The key preparation period is a period from the time the key
다음, 키 준비 기간 동안 각 회로의 동작에 대하여 설명한다. 키 확장 부(402)는 키 준비 기간에 이미 암호키(152)로서 wkey0를 사용하여 wkey1을 생성한다. 키 준비 개시 신호(155)가 어서트됨과 동시에, wkey1이 라운드 키 A2(463)의 레지스터에 유지되어 출력된다. 키 준비 개시 신호(155)가 어서트됨에 따라서, 제어부(404)는 카운터 신호(161)를 0에서부터 차례로 카운트 업한다. T07에서, 키 확장부(402)는 라운드 키 A2(463)로서 유지되는 wkey1을 이용하여 키 확장을 수행하여, wkey2 및 wkey3를 생성하고, 이들을 라운드 키 A1(462) 및 라운드 키 A2(463)으로서 각각 출력한다. 다음 사이클(T08)에서, 키 확장부는 라운드 키 A2(463)로서 출력되는 wkey3을 이용하여 wkey4 및 wkey5를 생성하여, 이들을 라운드 키 A1(462) 및 라운드 키 A2(463)로서 각각 출력한다. 라운드 키 A1(462) 및 라운드 키 A2(463)으로서, 타이밍 T09에서 wkey6 및 wkey7, 및 타이밍 T10에서 wkey8 및 wkey9가 각각 출력되도록 동일한 방식으로 라운드 키들이 생성된다. 타이밍 T11에서, 키 확장부(402)는 라운드 키 A2(463)로서 출력되는 wkey9를 이용하여 wkey10을 생성하여, wkey10을 라운드 키 B(163)로서 출력한다. 그 후, 키 준비가 다시 실행될 때까지 wkey10이 라운드 키 B(163)로서 계속 출력된다.Next, the operation of each circuit during the key preparation period will be described. The
키 준비 기간의 종료 시(T12), 키 확장부(402)는 암호키(152)로서 공급되는 wkey0를 이용하여 wkey1을 생성하여, 각각 라운드 키 A1(462) 및 라운드 키 A2(463)으로서 암호화/복호화에 사용될 최초 라운드 키(wkey0 및 wkey1)를 출력한다. 라운드 키 A1(462) 및 라운드 키 A2(463)의 값은 암호화/복호화 개시 신호(158)가 어서트될 때까지 유지된다. 제어부(404)는 카운터 신호(161)의 카운트 업을 중지하고, 카운터를 0으로 클리어시킨다.At the end of the key preparation period (T12), the
키 준비 기간의 종료 부근에서, 더 구체적으로, 키 준비 개시 후 5번째 사이클(T11)에서, 키 준비가 다음 사이클(T12)에서 종료되어, 암호화가 유효한 것을 예상하여, 제어부(404)는 제어 신호(157)를 어서트시킨다.Near the end of the key preparation period, more specifically, in the fifth cycle T11 after the start of the key preparation, the key preparation is ended in the next cycle T12, in which the
타이밍 T12에서 제어 신호(157)가 어서트된 것을 감지하면, AES 코어(401) 외부에 배치된 입력 신호 공급부는 입력 신호(150)로서 평문 데이터(P0)를 AES 코어(401)에 공급한다. 입력 신호(150)의 암호화를 개시하기 위하여 암호화/복호화 개시 신호(158)가 어서트된다(T12). 타이밍 차트에 있어서, 암호화/복호화 개시 신호(158)는 최단 사이클에 어서트된다. 그러나, 타이밍은 AES 코어(401) 외부에서 자유롭게 결정된다.When the
암호화 기간에서, 입력 신호(150)가 암호화된다. 암호화 기간은 암호화/복호화 개시 신호(158)가 어서트되는 때(T12)로부터 5개 사이클 이후의 타이밍(T17)까지의 기간이다.In the encryption period, the
암호화/복호화 개시 신호(158)가 어서트된 것을 감지하면, 제어부(404)는 다음 사이클(T13)에서 제어 신호(157), 유효 신호(159), 및 출력 유지 제어 신호(160)를 니게이트시킨다. 동시에, 제어부(404)는 카운터 신호(161)를 카운트 업하기 시작한다.Upon detecting that the encryption /
키 확장부(402)는 키 준비 기간에서와 같이 라운드 키를 생성하여, 라운드 키 A1(462)로서, 타이밍 T12에서 wkey0, 타이밍 T13에서 wkey2, ..., 타이밍 T16에서 wkey8을 출력한다. 키 확장부(402)는 라운드 키 A2(463)로서, 타이밍 T12에서 wkey1, 타이밍 T13에서 wkey3, ..., 타이밍 T16에서 wkey9을 출력한다.The
T12에서 T13까지에서, 선택 신호(171)가 니게이트된다. 그러므로, 변형된 라운드 기능 모듈(405)은 입력 신호(150)에 대해서 라운드 키 A1로서 출력되는 wkey0를 이용하여 서브블록 변환을 실행한다. T13에서 T17까지에서, 선택 신호(171)가 어서트된다. 따라서, 변형된 라운드 기능 모듈(405)은 데이터 유지부(108)의 출력 신호에 대하여 T13에서 T14까지는 wkey2, T14에서 T15까지는 wkey4, ..., T15에서 T16까지는 wkey6를 이용하여 서브블록 변환을 실행한다.From T12 to T13, the
한편, 변형된 라운드 기능 모듈(407)은 입력 신호(475)에 대하여 T12 내지 T13에서 wkey1, T13 내지 T14에서 wkey3, T14 내지 T15에서 wkey5, ..., 및 T15 내지 T16에서 wkey7을 이용하여 서브블록 변환을 실행한다.On the other hand, the modified
암호화의 최종 사이클(T16)에서, 제어부(404)는 선택 신호(170)를 어서트시킨다. 따라서, 변형된 라운드 기능 모듈(407)의 선택기(115)는 라운드 키 B(163)을 이용하여 AddRoundKey 변환을 실행하는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력하여, 최종 사이클의 서브블록 변환이 실행된다. T16에서, 변형된 라운드 기능 모듈(407)의 출력 신호(166)는 입력 신호로서 평문 데이터(P0)의 암호화의 결과인 암호문 데이터(C0)를 출력한다. 1 사이클 이후(T17), 데이터 유지부(108)는 AES 코어(401)의 출력으로서 암호문 데이터(C0)의 값을 외부에 출력한다. 동시에, AES 코어(401) 외부의 유닛에 대하여 암호화가 종료되어, 출력 신호가(151)가 유효한 것을 통지하기 위하여, 제어부(404)는 유효 신호(159)를 어서트시킨다(T17). 유효 신호(159)가 어서트되는 동안, AES 코어(401)는 출력 신호(151)가 유효한 것을 보증한다.In the final cycle of encryption T16, the
한편, 제어 신호(160)는, T17에서 유효 신호(159)가 어서트되어 있지만, T17에서 암호화/복호화 개시 신호(158) 또한 어서트되어 있기 때문에, 니게이트로 유지된다. 암호화/복호화 개시 신호(158)가 T17에서 어서트되지 않으면, 제어 신호(160)가 T17에서 어서트되고, 데이터 유지부(108)의 값은 암호문 데이터(C0)를 유지한다.On the other hand, the
암호화가 종료하는 T17에서, 키 확장부(402)는 라운드 키 A1(462)로서 wkey0및 라운드 키 A2(463)로서 wkey1를 출력한다. 라운드 키 A1(462)과 라운드 키 A2(463)의 값은 다음의 암호화/복호화 개시 신호(156)가 어서트될 때까지 유지된다.At T17 when the encryption ends, the
암호화의 종료를 예측하여(T17), 제어부(404)는 완료 한 사이클 전에(T16) 제어 신호(157)를 어서트시킨다. 제어 신호(157)가 어서트되는 때에, AES 코어(401) 외부의 유닛이 입력 신호(150)의 값을 다음의 평문 데이터(P1)에 설정하여, 2번째 블록의 암호화가 개시할 수 있게 된다. 도 56a 및 도 56b의 타이밍 차트에서, AES 코어(401)의 외부 유닛은 최단 사이클(T17)에서 다음의 암호화/복호화 개시 신호를 어서트시킨다. 2번째 블록 암호화 기간은 T17에서부터 T22까지이며, 1번째 블록과 동일한 동작이 수행된다. 그 후, 소정 수의 블록만큼 암호화 동작이 반복 수행된다. 도 56a 및 도 56b의 타이밍 차트에서, 1번째 블록의 암호화 종료로부터 최단 간격에서 2번째 블록의 암호화가 개시된다. AES 코어는 이러한 타이밍에서 모든 블록들의 암호화를 실행함으로써 최대 성능을 발휘할 수 있다. 그러나, 암호화 간격은 기본적으로 임의의 길이로 설정될 수 있다.In anticipation of the end of encryption (T17), the
소정 수의 블록들의 암호화가 완전히 종료되어, 암호키와 같은 다른 파라미터를 이용하여 다음 작업이 수행되어야 하는 때에는, 파라미터 설정으로부터 처리가 다시 개시된다.When the encryption of the predetermined number of blocks is completely terminated and the next operation is to be performed using another parameter such as an encryption key, the process starts again from the parameter setting.
다음, 제7 실시예의 복호화 동작에 대하여 설명한다. 도 57a 및 도 57b는 제7 실시예에 따른 복호화의 타이밍 차트이다. 도 57a 및 도 57b를 참조하면, 가로축이 시간을 나타낸다. 클록 펄스의 리딩 에지에 대하여 타이밍 명칭 T01, T02, ..., T33이 할당된다. 도 57a의 좌단의 세로축 상의 3 자리수는 신호 라인을 나타내며, 도 52 내지 도 55에서 사용되는 신호 라인의 참조 번호와 일대일 대응한다.Next, the decoding operation of the seventh embodiment will be described. 57A and 57B are a timing chart of decoding according to the seventh embodiment. Referring to Figs. 57A and 57B, the horizontal axis represents time. Timing names T01, T02, ..., T33 are assigned to the leading edge of the clock pulse. Three digits on the vertical axis of the left end of FIG. 57A represent signal lines and correspond one-to-one with reference numerals of the signal lines used in FIGS. 52 to 55.
복호화 동작 또한 4개 부분으로 대별된다: 파라미터 설정(T01 내지 T06), 키 준비(T06 내지 T12), 제1 블록 복호화(T12 내지 T17), 및 제2 블록 복호화(T17부터).The decryption operation is also roughly divided into four parts: parameter setting (T01 to T06), key preparation (T06 to T12), first block decryption (T12 to T17), and second block decryption (from T17).
파라미터 설정 기간의 역할, 개시 조건, 및 종료 조건은 본 실시예의 암호화와 동일하다. 그러나, 복호화 시에 암호화/복호화 선택 신호(153)가 어서트된다.The role, start condition, and end condition of the parameter setting period are the same as in encryption of this embodiment. However, upon decryption, the encryption /
키 준비 기간은 T06에서부터 T12까지이며, 그 개시 조건 및 종료 조건은 본 실시예의 암호화에서와 동일하다. 그러나, 키 준비 기간의 종료 시(T12), 키 확장부(402)는 라운드 키 B(163)로서 유지되는 wkey10를 이용하여 역으로 키 확장을 수행하고, 각각 라운드 키 A1(462) 및 라운드 키 A2(463)로서 복호화에서 사용될 최초 라운드 키들(wkey9 및 wkey8)을 출력한다. 라운드 키 A1(462) 및 라운드 키 A2(463)의 값은 암호화/복호화 개시 신호(158)가 어서트될 때까지 유지된다. 제어 부(404)는 카운터 신호(161)의 카운트 업을 중지하고, 카운터를 0으로 클리어시킨다.The key preparation period is from T06 to T12, and its start condition and end condition are the same as in encryption of this embodiment. However, at the end of the key preparation period (T12), the
키 준비 기간 부근에서, 키 준비가 T12에서 종료되어, 복호화가 유효한 것을 예측하여, 제어부(404)는 T11에서 제어 신호(157)를 어서트시킨다.In the vicinity of the key preparation period, the key preparation is terminated at T12, and the
T12에서 제어 신호(157)가 어서트된 것을 감지하면, AES 코어(401) 외부에 배치된 입력 신호 공급부가 입력 신호(150)로서 AES 코어(401)에 대하여 암호문 데이터(C0)를 공급한다. 암호화/복호화 개시 신호(158)가 어서트되어, 입력 신호(150)의 복호화를 개시한다(T12). 타이밍 차트에 있어서, 암호화/복호화 개시 신호(158)는 최단 사이클에서 어서트된다. 그러나, AES 코어(401) 외부에서 타이밍이 자유롭게 결정된다.When the
복호화 기간에서, 입력 신호(150)가 복호화된다. 복호화 기간은 암호화/복호화 개시 신호(158)가 어서트되는 때부터 5개 사이클 이후의 타이밍(T17)까지의 기간이다.In the decoding period, the
암호화/복호화 개시 신호(158)가 어서트되는 것을 감지하면, 제어부(404)는 다음 사이클(T13)에서 제어 신호(157), 출력 유지 신호(159), 및 제어 신호(160)를 니게이트시킨다. 동시에, 제어부(404)는 카운터 신호(161)를 카운트 업하기 시작한다.Upon detecting that the encryption /
T13에서, 키 확장부(402)는 라운드 키 A2(463)로서 유지되는 wkey8를 이용하여 키 확장을 수행하여, 라운드 키 A1(462) 및 라운드 키 A2(463)로서 각각 wkey7 및 wkey6를 생성하여 출력한다. 다음 사이클(T14)에서, 키 확장부는 라운드 키 A2(463)으로서 출력되는 wkey6를 이용하여 wkey5 및 wkey4를 생성하여, 이들을 각각 라운드 키 A1(462) 및 라운드 키 A2(463)으로서 출력한다. 동일한 방법으로 라운드 키들이 생성되어, T15에서 wkey3 및 wkey2, T16에서 wkey1 및 wkey0가 라운드 키 A1(462) 및 라운드 키 A2(463)으로서 각각 출력된다.At T13,
복호화의 1번째 사이클(T12)에서, 제어부(404)는 선택 신호(171)를 니게이트시킨다. 따라서, 입력 신호(150)의 평문 데이터(P0)가 변형된 라운드 기능 모듈(406)에 입력된다. 선택 신호(170)가 어서트되므로, 변형된 라운드 기능 모듈(406)은 선택기(118)를 AddRoundKey 변환 모듈(121)의 출력을 선택하도록 절환시켜, 하나의 사이클의 복호화가 실행된다. 변형된 라운드 기능 모듈(406)의 출력은 변형된 라운드 기능 모듈(408)에 바로 입력되어, 또 하나의 사이클의 복호화가 실행된다. 변형된 라운드 기능 모듈(408)의 출력 결과는 데이터 유지부(108)에 유지된다.In the first cycle T12 of decoding, the
다음 사이클(T13)에서, 제어부(404)는 선택 신호(171)를 어서트시켜, 데이터 유지부의 출력이 변형된 라운드 기능 모듈(406)에 입력된다. 선택 신호(170)가 니게이트되므로, 변형된 라운드 기능 모듈(406)은 InvMixColumns 변환 모듈(116)의 출력을 선택하도록 선택기(118)를 절환시켜, 1 사이클의 복호화가 실행된다. 변형된 라운드 기능 모듈(406)의 출력은 변형된 라운드 기능 모듈(408)의 입력에 바로 입력되어, 또 하나의 사이클의 복호화가 실행된다. T16까지 동일한 방법으로 처리가 수행된다. 변형된 라운드 기능 모듈(406)은 라운드 키로서 T12에서 wkey 10 및 weky9, T13에서 wkey7, T14에서 wkey5, T16에서 wkey1을 이용한다. 변형된 라운드 기능 모듈(408)은 라운드 키로서 T12에서 wkey8, T13에서 wkey6, 및 T16에서 wkey0를 이용한다.In the next cycle T13, the
T16에서, 변형된 라운드 기능 모듈(408)의 출력 신호(167)는 입력 신호로서 암호문 데이터(C0)의 복호화의 결과인 평문 데이터(P0)를 출력한다. 1 사이클 이후(T17), 데이터 유지부(108)는 AES 코어(401)의 출력으로서 평문 데이터(P0)의 값을 외부에 출력한다. 동시에, AES 코어(401) 외부의 유닛에 대하여 복호화가 종료되어, 출력 신호가(151)가 유효한 것을 통지하기 위하여, 제어부(404)는 유효 신호(159)를 어서트시킨다(T17). 유효 신호(159)가 어서트되는 동안, AES 코어(401)는 출력 신호(151)가 유효한 것을 보증한다.In T16, the
한편, 제어 신호(160)는, T17에서 유효 신호(159)가 어서트되어 있지만, T17에서 암호화/복호화 개시 신호(158) 또한 어서트되어 있기 때문에, 니게이트로 유지된다. 암호화/복호화 개시 신호(158)가 T17에서 어서트되지 않으면, 제어 신호(160)가 T17에서 어서트되고, 데이터 유지부(108)의 값은 평문 데이터(P0)를 유지한다.On the other hand, the
복호화가 종료되는 T17에서, 키 확장부(402)는 라운드 키 A1(462)로서 wkey9및 라운드 키 A2(463)로서 wkey8를 출력한다. 라운드 키 A1(462)과 라운드 키 A2(463)의 값은 다음의 암호화/복호화 개시 신호(156)가 어서트될 때까지 유지된다.At T17 when the decryption ends, the
복호화의 종료를 예측하여(T17), 제어부(404)는 완료 한 사이클 전에(T16) 제어 신호(157)를 어서트시킨다. 제어 신호(157)가 어서트되는 때에, AES 코 어(401) 외부의 유닛은 입력 신호(150)의 값을 다음의 암호문 데이터(C1)에 설정하여, 2번째 블록의 복호화가 개시할 수 있게 된다.In anticipation of the end of decoding (T17), the
2번째 블록 암호화 기간은 T17에서부터 T22까지이며, 1번째 블록과 동일한 동작이 수행된다. 그 후, 소정 수의 블록만큼 복호화 동작이 반복 수행된다. 도 57a 및 도 57b의 타이밍 차트에서, 1번째 블록의 복호화 종료로부터 최단 간격에서 2번째 블록의 복호화가 개시된다. AES 코어는 이러한 타이밍에서 모든 블록들의 복호화를 실행함으로써 최대 성능을 발휘할 수 있다. 그러나, 복호화 간격은 기본적으로 임의의 길이로 설정될 수 있다.The second block encryption period is from T17 to T22, and the same operation as that of the first block is performed. Thereafter, the decoding operation is repeatedly performed for a predetermined number of blocks. In the timing charts of Figs. 57A and 57B, decoding of the second block is started at the shortest interval from the end of decoding of the first block. The AES core can achieve maximum performance by executing the decoding of all blocks at this timing. However, the decryption interval can basically be set to any length.
소정 수의 블록들의 복호화가 완전히 종료되어, 암호키와 같은 다른 파라미터를 이용하여 다음 작업이 실행되어야 하는 때에는, 파라미터 설정으로부터 처리가 다시 개시된다.When the decryption of the predetermined number of blocks is completely terminated and the next operation is to be executed using another parameter such as an encryption key, the process starts again from the parameter setting.
제7 실시예가 상기 방법으로 구현될 수 있다. 제7 실시예에 있어서, AES 암호화 및 복호화에 필요한 클록 사이클 수는 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산의 최대치를 증가시키지 않고 1 사이클 감소된다. 이는 AES 처리 속도를 약 20% 증가시킨다.The seventh embodiment can be implemented in this way. In the seventh embodiment, the number of clock cycles required for AES encryption and decryption is reduced by one cycle without increasing the maximum of the sum of signal processing times for each subblock transformation within each clock cycle period. This increases the AES processing speed by about 20%.
제1 실시예가 상기에서 예시되었다. 그러나, 임의의 다른 실시예에 대하여도 동일한 구현예가 가능하다.The first embodiment has been illustrated above. However, the same implementation is possible for any other embodiment.
전술한 제7 실시예는 단지 본 발명의 일례이며, 본 발명의 효과는 상기 실시예에 한하지 않는다.The seventh embodiment described above is merely one example of the present invention, and the effects of the present invention are not limited to the above embodiment.
<제8 실시예>Eighth Embodiment
제7 실시예의 일반형으로서, 제1 실시예의 N개 사이클의 처리가 1개의 클록 사이클에서 실행될 수 있다. N은 2 이상의 자연수이다. 제8 실시예에서는, 본 방법을 구현하기 위한 회로 구성을 설명한다.As a general form of the seventh embodiment, the processing of N cycles of the first embodiment can be executed in one clock cycle. N is a natural number of 2 or more. In the eighth embodiment, a circuit configuration for implementing the present method is described.
제1 실시예에 있어서, 1개의 클록 사이클에서 N 사이클의 처리를 실행하기 위한 회로는 2개의 형태로 분류될 수 있다: 처리에 필요한 총 사이클 수를 나머지 없이 N개로 나누어질 수 있는 경우와, N개로 나누어질 수 없는 경우. 예컨대, AES-128에 있어서, 처리에 필요한 총 사이클 수는 10이다(도 1). N이 2 또는 5인 경우는 전자의 경우로, 다른 경우는 후자의 경우로 분류될 수 있다.In the first embodiment, circuits for executing N cycles of processing in one clock cycle can be classified into two types: the total number of cycles required for processing can be divided into N without the rest, and N If not divided into dogs. For example, for AES-128, the total number of cycles required for processing is 10 (FIG. 1). When N is 2 or 5, it may be classified as the former case and the other case as the latter case.
우선, 총 사이클 수가 나머지 없이 N으로 나누어질 수 있는 경우에 대하여 설명한다. 이 경우, N=2 인 제7 실시예에서와 같이 암호화와 복호화 각각에 대하여 N개의 변형된 라운드 기능 모듈이 구현된다(N은 2 이상의 자연수). 클록 사이클마다 모든 변형된 라운드 기능 모듈을 이용하여 처리가 실행된다. 이때, 처리에 필요한 클록 사이클 수는 10/N 이다.First, the case where the total number of cycles can be divided by N without a remainder will be described. In this case, N modified round function modules are implemented for each of encryption and decryption as in the seventh embodiment where N = 2 (N is a natural number of two or more). Every clock cycle, processing is performed using all modified round function modules. At this time, the number of clock cycles required for the processing is 10 / N.
제1 실시예에 있어서 총 사이클 수가 나머지 없이 N으로 나누어질 수 있는 경우의 암호화/복호화부의 회로 구성에 대하여 설명한다. 도 58은 제8 실시예에 따른 암호화/복호화부의 블록도이다. 도 58을 참조하면, 참조 번호 503은 암호화/복호화부, 550은 라운드 키 A1, 551은 라운드 키 A2를 지칭한다. 라운드 키 A1(550)과 라운드 키 A2(551)을 포함하여 N 개의 라운드 키 A가 존재한다. 제7 실시예와 동일한 참조 번호가 동일 구성요소 및 동일 신호 라인들에 지칭하며, 그 설명은 생략한다.In the first embodiment, a circuit configuration of an encryption / decryption section in the case where the total number of cycles can be divided by N without a remainder will be described. 58 is a block diagram of an encryption / decryption unit according to the eighth embodiment. Referring to FIG. 58,
상기 구성에 있어서, 선택기(109)의 출력은 변형된 라운드 기능 모듈(405)에 접속된다. (N-1)개의 변형된 라운드 기능 모듈(405)이 직렬로 연결된다. 최종 변형된 라운드 기능 모듈(405)의 출력은 변형된 라운드 기능 모듈(407)에 연결된다. 선택기(109)의 출력 또한 변형된 라운드 기능 모듈(406)에 연결된다. 변형된 라운드 기능 모듈(406)의 출력은 변형된 라운드 기능 모듈(408)에 접속된다. (N-1)개의 변형된 라운드 기능 모듈(408)은 직렬로 접속된다. 최종 변형된 라운드 기능 모듈(408)의 출력은 선택기(107)에 연결된다. 변형된 라운드 기능 모듈(405)은 라운드 키 A1(550), 라운드 키 A2(551), 및 잔여 라운드 키 A를 연결 순서로 각각 수신한다. 변형된 라운드 기능 모듈(407)은 N번째 라운드 키 A와 라운드 키 B(163)을 수신한다. 변형된 라운드 기능 모듈(406)은 라운드 키 A1(550) 및 라운드 키 B(163)를수신한다. 변형된 라운드 기능 모듈(408)은 라운드 키 A2(551) 및 잔여 라운드 키 A를 연결 순서로 각각 수신한다. 도 58의 구성요소들에 대한 설명은, 제7 실시예와 동일한 연결 관계를 가지므로, 생략한다.In the above configuration, the output of the
다음, 제1 실시예의 총 사이클 수가 나머지 없이 N으로 나누어질 수 없는 경우에 대하여 설명한다. 이 경우, 암호화 및 복호화 각각에 대하여 N개의 변형된 라운드 기능 모듈이 구현된다. 또한, 암호화 또는 복호화의 특정 사이클에서 일부 변형된 라운드 기능 모듈을 바이패스할 필요도 있다. 예를 들어, N=4인 경우, 도 1에 도시된 제1 실시예에 있어서 0번째 내지 3번째 사이클의 처리는 0번째 클록 사이클에서 실행된다. 1번째 클록 사이클에서, 도 1의 제1 실시예의 4번째 내지 7번째 사이클의 처리가 실행된다. 2번째 클록 사이클에 있어서, 도 1의 제1 실시예의 제8 및 제9 사이클의 처리가 실행된다. 즉, 사이클의 총 수가 나머지 없이 N으로 나누어질 수 없다면, 4개의 변형된 라운드 기능 모듈 모두가 0번째 및 1번째 클록 사이클에서 사용된다. 2번째 클록 사이클에서는, 그러나, 2개의 변형된 라운드 기능 모듈만으로도 충분하다. 이 때, 처리에 필요한 클록 사이클 수는 10/N 이다(소수점 이하는 반올림).Next, the case where the total number of cycles in the first embodiment cannot be divided by N without the rest will be described. In this case, N modified round function modules are implemented for each of encryption and decryption. It is also necessary to bypass some modified round function modules in certain cycles of encryption or decryption. For example, when N = 4, in the first embodiment shown in Fig. 1, the processing of the 0th to 3rd cycles is executed in the 0th clock cycle. In the first clock cycle, the processing of the fourth to seventh cycles of the first embodiment of FIG. 1 is executed. In the second clock cycle, the processing of the eighth and ninth cycles of the first embodiment in FIG. 1 is executed. That is, if the total number of cycles cannot be divided by N without the remainder, all four modified round function modules are used in the 0th and 1st clock cycles. In the second clock cycle, however, only two modified round function modules are sufficient. At this time, the number of clock cycles required for the processing is 10 / N (the decimal point is rounded off).
제1 실시예에 있어서의 총 사이클 수가 나머지 없이 N으로 나누어질 수 없는 경우 다양한 회로 구성이 활용가능하다. 예를 들어, 도 58에 도시된 각각의 변형된 라운드 기능 모듈 바로 뒤에 변형된 라운드 기능 모듈을 바이패스할지 여부를 선택하기 위하여 선택기를 설치하여, 암호화 또는 복호화의 개시로부터 사이클 수에 따라서 각각의 선택기가 절환된다. 이 경우의 회로 구성은 도 58로부터 용이하게 상정될 수 있으며, 그 블록도는 생략한다.Various circuit configurations are available when the total number of cycles in the first embodiment cannot be divided by N without the rest. For example, a selector is installed to select whether to bypass the modified round function module immediately after each modified round function module shown in FIG. 58, and each selector according to the number of cycles from the start of encryption or decryption. Is switched. The circuit configuration in this case can be easily assumed from Fig. 58, and the block diagram is omitted.
제8 실시예는 전술한 방법으로 구현될 수 있다. 본 발명의 제1 실시예에 따르면, 처리에 필요한 클록 사이클의 총 수는 AES-128에 있어서 10개, AES-192에 있어서 12개, AES-256에 있어서 14개이다. 본 실시예에서 설명한 바와 같이, 모든 회로들은 사이클의 총수가 나머지 없이 N으로 나누어질 수 있는 경우, 또는 N으로 나누어질 수 없는 경우로 분류하여 구현될 수 있다. AES-128, AES-192, 및 AES-256 모두를 구현하는 회로 구성 또한 가능하다. 이 경우, N=l 및 N=2인 경우, AES-128, AES-192, 및 AES-256 모두에 있어서 처리에 필요로 하는 총 사이클 수가 나머지 없이 N으로 나누어질 수 있다. 따라서, 본 실시예에 있어서 나머지 없이 N으로 나누어질 수 있는 클록 사이클의 총수에 대한 배치를 이용하여 회로가 구현될 수 있다. N이 임의의 다른 값을 갖더라도, 제1 실시예에서 총 사이클 수가 나머지 없이 N으로 나누어질 수 없는 경우에서와 같이, 암호화/복호화부에 구현되는 N개의 변형된 라운드 기능 모듈 중 임의의 하나의 출력을 암호화/복호화부의 출력으로 선택할 수 있는 본 실시예의 구성을 이용하여 AES-128, AES-192, 및 AES-256 모두를 구현하는 회로가 형성될 수 있다.The eighth embodiment can be implemented in the manner described above. According to the first embodiment of the present invention, the total number of clock cycles required for processing is 10 for AES-128, 12 for AES-192, and 14 for AES-256. As described in this embodiment, all the circuits can be implemented by classifying the case where the total number of cycles can be divided by N without a remainder, or can not be divided by N. Circuit configurations that implement all of the AES-128, AES-192, and AES-256 are also possible. In this case, when N = l and N = 2, the total number of cycles required for processing in all of AES-128, AES-192, and AES-256 can be divided by N without remaining. Thus, the circuit can be implemented in this embodiment using an arrangement for the total number of clock cycles that can be divided by N without a remainder. Although N has any other value, any one of N modified round function modules implemented in the encryption / decryption portion, as in the case where the total number of cycles in the first embodiment cannot be divided by N without the rest Using the configuration of this embodiment, which can select the output as the output of the encryption / decryption unit, a circuit for implementing all of AES-128, AES-192, and AES-256 can be formed.
<제9 실시예><Example 9>
본 발명의 제1 내지 제6 실시예에 있어서, 일부 경우에 규정된 1개의 클록 사이클에 1개의 클록의 처리가 들어맞지 않는다. 이러한 경우, 변형된 라운드 기능 모듈에 새로운 데이터 유지부가 추가되어, 제1 내지 제6 실시예에서 1개의 사이클의 처리가 복수의 클록 사이클에서 실행된다. 구체적인 예로서 제1 실시예에 있어서의 1개의 사이클에서 실행되는 처리가 2개의 클록 사이클에서 실행되는 회로 구성에 대하여 설명한다.In the first to sixth embodiments of the present invention, the processing of one clock does not fit in one clock cycle defined in some cases. In this case, a new data holding part is added to the modified round function module, so that one cycle of processing is executed in a plurality of clock cycles in the first to sixth embodiments. As a concrete example, a circuit configuration in which the processing executed in one cycle in the first embodiment is executed in two clock cycles will be described.
도 59는 제1 실시예의 변형된 라운드 기능 모듈에 대하여 새로운 데이터 유지부가 추가된 예를 나타낸다. 도 59를 참조하면, 참조 번호 605는 변형된 라운드 기능 모듈을 지칭하며, 데이터 유지부(608)는 암호화 처리의 결과를 유지한다.59 shows an example in which a new data holding unit is added for the modified round function module of the first embodiment. Referring to Fig. 59,
상기 구성에 있어서, SubBytes 변환 모듈(111)의 출력은 데이터 유지부(608)에 입력된다. 데이터 유지부(608)의 출력은 ShiftRows 변환 모듈(112)에 입력된다.In the above configuration, the output of the
암호화부에 새로운 데이터 유지부를 추가하는 것은, 제1 실시예의 1개의 사이클의 처리를 2개의 클록 사이클에서 실행하는 것을 가능하게 한다. 도 59에 있 어서, 데이터 유지부(608)는 SubBytes 변환 모듈(111)과 ShiftRows 변환 모듈(112)과의 사이에 추가된다. 그러나, 데이터 유지부는 임의의 점에 연결될 수 있다. 대안으로서, SubBytes 변환 모듈(111)이 데이터 유지부를 포함할 수 있다.Adding a new data holding part to the encryption part makes it possible to execute the processing of one cycle of the first embodiment in two clock cycles. In FIG. 59, the
상기 예에 있어서, 제1 실시예의 1개의 사이클의 처리를 위해 2개의 클록 사이클이 필요하다. 그러나, N개의 클록 사이클에서 처리가 행해질 수 있다. 이 경우, 데이터 유지부가 변환 모듈들 사이의 임의의 지점에 (N-1)개의 새롭게 추가되거나, 변환 모듈들에 구현된다.In the above example, two clock cycles are required for the processing of one cycle of the first embodiment. However, processing can be done in N clock cycles. In this case, the data holding part is added to (N-1) new points at arbitrary points between the conversion modules, or implemented in the conversion modules.
제1 실시예를 상기에서 설명하였다. 그러나, 임의의 다른 실시예에 대하여도 동일한 구현이 가능하다.The first embodiment has been described above. However, the same implementation is possible for any other embodiment.
<제10 실시예><Example 10>
본 발명의 제1 내지 제9 실시예에 있어서, 데이터 유지부의 데이터 갱신 기간은 1개의 클록 사이클이다. 그러나, 반드시 그러한 것은 아니다.In the first to ninth embodiments of the present invention, the data update period of the data holding unit is one clock cycle. However, this is not necessarily the case.
일반적으로, CPU 또는 DMA의 동작 클록의 주파수는 대다수 높다. 암호화를 위한 데이터 유지부가 동일한 클록을 이용한다면, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산을 보장할 수 있으며, 1개의 클록 사이클에 처리가 맞지 않을 수 있다.In general, the frequency of the operating clock of the CPU or DMA is mostly high. If the data retainer for encryption uses the same clock, it is possible to ensure the sum of the signal processing times for each subblock conversion within each clock cycle period, and the processing may not fit in one clock cycle.
이러한 경우, 예를 들어, 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 신호 처리 시간의 합산이 1개의 클록 사이클의 2배이거나 그보다 작다면, 데이터 유지부의 데이터 갱신이 2개의 클록 사이클에서 한번 행해질 수 있다.In this case, for example, if the sum of the signal processing times for each subblock conversion within each clock cycle period is twice or less than one clock cycle, the data update of the data holding part may be performed once in two clock cycles. Can be.
이러한 구성은 데이터 유지부에 인에이블 신호를 새로 입력함으로써 용이하 게 구현될 수 있다.Such a configuration can be easily implemented by newly inputting an enable signal to the data holding unit.
도 61a 및 도 61b의 타이밍 차트를 참조하여 본 실시예에 대하여 설명한다. 도 61a는 클록 사이클에 데이터 유지부의 갱신이 동기하는 경우의 타이밍 차트를 나타낸다. 클록 사이클의 하강 에지에 동기하여, 데이터 유지부는 데이터를 갱신한다.This embodiment will be described with reference to the timing charts of Figs. 61A and 61B. Fig. 61A shows a timing chart when the update of the data holding unit is synchronized with the clock cycle. In synchronization with the falling edge of the clock cycle, the data holding portion updates the data.
도 61b는 데이터 유지부의 갱신이 클록 사이클에 동기하지 않는 경우의 타이밍 차트를 나타낸다. 인에이블 신호가 데이터 유지부에 입력되어, 클록의 1/2의 기간에서 High와 Low를 반복한다. 인에이블 신호가 High인 경우에만, 데이터 유지부가 데이터 갱신을 수행한다. 따라서, 데이터 유지부는 클록의 하강 에지에서 2개의 클록 사이클에서 한번 데이터를 갱신한다.61B shows a timing chart when the update of the data holding unit is not synchronized with the clock cycle. The enable signal is input to the data holding portion to repeat High and Low in one half of the clock. Only when the enable signal is High, the data holding unit performs data update. Thus, the data holding portion updates data once in two clock cycles on the falling edge of the clock.
이 경우, 1개의 클록의 처리가 2개의 클록 사이클에서 실행된다.In this case, processing of one clock is executed in two clock cycles.
본 실시예에 기재된 예에서, 1개의 사이클의 처리가 2개의 클록 사이클에서 실행된다. 하지만, 1개의 사이클의 처리가 N개의 클록 사이클에서 실행될 수 있는 것은 두말할 나위 없다.In the example described in this embodiment, one cycle of processing is executed in two clock cycles. However, it goes without saying that processing of one cycle can be executed in N clock cycles.
본 실시예의 제1 내지 제9 실시예에 있어서, N개의 클록 사이클이 1개의 사이클로서 정의될 수도 있다.In the first to ninth embodiments of this embodiment, N clock cycles may be defined as one cycle.
이상, 본 발명의 실시예들을 설명한다. 각 실시예에 있어서, AES-128을 예로 들었다. 그러나, AES-192 및 AES-256 또한 구현될 수 있다. AES-128의 실시예와 다른 점은, 키 확장부에 입력되는 암호키의 비트 수, 키 확장부에 의해 생성되는 라운드 키의 수, 및 제어 신호의 어서트/니게이트 타이밍이다. 이들은 각 실시 예에 기재된 바와 동일한 개념에 기초하여 용이하게 구현될 수 있다. 암호화/복호화부 및 변형된 라운드 기능 모듈은 AES-128의 실시예에 기재된 것으로부터 변경을 필요로 하지는 않는다.The embodiments of the present invention have been described above. In each example, AES-128 is taken as an example. However, AES-192 and AES-256 may also be implemented. The difference from the embodiment of AES-128 is the number of bits of the encryption key input to the key expansion unit, the number of round keys generated by the key expansion unit, and the assert / nigate timing of the control signal. These can be easily implemented based on the same concept as described in each embodiment. The encryption / decryption unit and the modified round function module do not require any changes from those described in the embodiment of AES-128.
본 발명을 예시적인 실시예를 참조하여 설명하였지만, 개시된 실시예들에 본 발명이 제한되지는 않는 것을 이해할 수 있을 것이다. 이하의 청구항들의 범주는 이러한 모든 변경예 및 균등 구조와 기능들을 포괄하도록 최광의로 해석되어야 한다.While the invention has been described with reference to exemplary embodiments, it will be understood that the invention is not limited to the disclosed embodiments. The scope of the following claims is to be accorded the broadest interpretation so as to encompass all such modifications and equivalent structures and functions.
도 1은 종래 기술의 클록 사이클들에서 실행되는 암호화의 처리 내용을 제1 실시예와 비교한 도면.1 compares the processing contents of encryption executed in clock cycles of the prior art with the first embodiment.
도 2는 종래 기술의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 암호화 처리 시간의 합산을 제1 실시예와 비교한 도면.Fig. 2 is a comparison of the sum of encryption processing times for each subblock transformation within each clock cycle period of the prior art compared with the first embodiment.
도 3은 종래 기술의 클록 사이클들에서 실행되는 복호화의 처리 내용을 제1 실시예와 비교한 도면.Fig. 3 is a diagram comparing the processing contents of decryption executed in clock cycles of the prior art with the first embodiment.
도 4는 종래 기술의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 복호화 처리 시간의 합산을 제1 실시예와 비교한 도면.Fig. 4 is a comparison of the sum of the decoding processing times for each subblock transformation within each clock cycle period of the prior art compared with the first embodiment.
도 5는 제1 실시예에 따른 AES 코어의 블록도.5 is a block diagram of an AES core according to the first embodiment.
도 6은 제1 실시예에 따른 암호화/복호화부의 블록도.6 is a block diagram of an encryption / decryption unit according to the first embodiment.
도 7은 제1 실시예에 따른 암호화 용의 변형된(modified) 라운드 기능 모듈의 블록도.Fig. 7 is a block diagram of a modified round function module for encryption according to the first embodiment.
도 8은 제1 실시예에 따른 복호화 용의 변형된 라운드 기능 모듈의 블록도.8 is a block diagram of a modified round function module for decryption according to the first embodiment;
도 9a 및 도 9b는 제1 실시예에 따른 암호화의 타이밍 차트.9A and 9B are a timing chart of encryption according to the first embodiment.
도 10a 및 도 10b는 제1 실시예에 따른 복호화의 타이밍 차트.10A and 10B are a timing chart of decoding according to the first embodiment.
도 11은 제2 실시예에 따라서 클록 사이클들에서 실행되는 암호화 및 복호화의 처리 내용을 나타낸 도면.Fig. 11 shows the processing contents of encryption and decryption executed in clock cycles according to the second embodiment.
도 12는 종래 기술의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 암호화 처리 시간의 합산을 제2 실시예와 비교한 도면.Fig. 12 is a view comparing the sum of encryption processing times for each subblock transformation within each clock cycle period of the prior art with the second embodiment.
도 13은 종래 기술의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 복호화 처리 시간의 합산을 제2 실시예와 비교한 도면.Fig. 13 is a view comparing the sum of decoding processing times for each subblock transformation within each clock cycle period of the prior art with the second embodiment.
도 14는 제2 실시예에 따른 AES 코어의 블록도.14 is a block diagram of an AES core according to the second embodiment.
도 15는 제2 실시예에 따른 암호화/복호화부의 블록도.Fig. 15 is a block diagram of an encryption / decryption unit according to the second embodiment.
도 16은 제2 실시예에 따른 암호화 용의 변형된 라운드 기능 모듈의 블록도.Fig. 16 is a block diagram of a modified round function module for encryption according to the second embodiment.
도 17은 제1 실시예에 따른 복호화 용의 변형된 라운드 기능 모듈의 블록도.Fig. 17 is a block diagram of a modified round function module for decryption according to the first embodiment.
도 18a 및 도 18b는 제2 실시예에 따른 암호화의 타이밍 차트.18A and 18B are a timing chart of encryption according to the second embodiment.
도 19a 및 도 19b는 제2 실시예에 따른 복호화의 타이밍 차트.19A and 19B are a timing chart of decoding according to the second embodiment.
도 20은 제3 실시예에 따른 클록 사이클들에서 실행되는 암호화 및 복호화의 처리 내용을 나타낸 도면.20 is a diagram showing processing contents of encryption and decryption executed in clock cycles according to the third embodiment.
도 21은 종래 기술의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 암호화 처리 시간의 합산을 제3 실시예와 비교한 도면.Fig. 21 is a comparison of the sum of encryption processing times for each subblock transformation within each clock cycle period of the prior art with the third embodiment.
도 22는 종래 기술의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 복호화 처리 시간의 합산을 제3 실시예와 비교한 도면.Fig. 22 is a comparison of the sum of decoding processing times for each subblock transformation within each clock cycle period of the prior art compared with the third embodiment;
도 23은 제3 실시예에 따른 AES 코어의 블록도.Fig. 23 is a block diagram of an AES core according to the third embodiment.
도 24는 제3 실시예에 따른 암호화/복호화부의 블록도.Fig. 24 is a block diagram of an encryption / decryption unit according to the third embodiment.
도 25는 제3 실시예에 따른 암호화 용의 변형된 라운드 기능 모듈의 블록도.Fig. 25 is a block diagram of a modified round function module for encryption according to the third embodiment.
도 26은 제3 실시예에 따른 복호화 용의 변형된 라운드 기능 모듈의 블록도.Fig. 26 is a block diagram of a modified round function module for decryption according to the third embodiment.
도 27a 및 도 27b는 제3 실시예에 따른 암호화의 타이밍 차트.27A and 27B are a timing chart of encryption according to the third embodiment.
도 28a 및 도 28b는 제3 실시예에 따른 복호화의 타이밍 차트.28A and 28B are a timing chart of decoding according to the third embodiment.
도 29는 종래 기술의 클록 사이클들에서 실행되는 암호화의 처리 내용을 제4 실시예와 비교한 도면.Fig. 29 is a comparison of the processing contents of encryption executed in clock cycles of the prior art with the fourth embodiment.
도 30은 종래 기술의 클록 사이클들에서 실행되는 복호화의 처리 내용을 제4 실시예와 비교한 도면.Fig. 30 is a comparison of the processing contents of decryption executed in clock cycles of the prior art with the fourth embodiment.
도 31은 종래 기술의 클록 사이클들에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산을 제4 실시예와 비교한 도면.FIG. 31 is a comparison of the sum of signal processing time for each subblock transformation executed in clock cycles of the prior art with the fourth embodiment. FIG.
도 32는 제4 실시예에 따른 AES 코어의 블록도.32 is a block diagram of an AES core according to a fourth embodiment.
도 33은 제4 실시예에 따른 암호화/복호화부의 블록도.Fig. 33 is a block diagram of an encryption / decryption unit according to the fourth embodiment.
도 34는 제4 실시예에 따른 변형된 라운드 기능 모듈의 블록도.34 is a block diagram of a modified round function module according to the fourth embodiment.
도 35a 및 도 35b는 제4 실시예에 따른 복호화의 타이밍 차트.35A and 35B are a timing chart of decoding according to the fourth embodiment.
도 36은 제5 실시예에 따라서 클록 사이클들에서 실행되는 암호화 및 복호화의 처리 내용을 나타낸 도면.Fig. 36 shows the processing contents of encryption and decryption executed in clock cycles according to the fifth embodiment.
도 37은 종래 기술의 클록 사이클들에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산을 제5 실시예와 비교한 도면.FIG. 37 compares the sum of signal processing time for each subblock transformation executed in clock cycles of the prior art with the fifth embodiment; FIG.
도 38은 제5 실시예에 따른 AES 코어의 블록도.38 is a block diagram of an AES core according to a fifth embodiment.
도 39는 제5 실시예에 따른 암호화/복호화부의 블록도.Fig. 39 is a block diagram of an encryption / decryption unit according to the fifth embodiment.
도 40은 제5 실시예에 따른 변형된 라운드 기능 모듈의 블록도.40 is a block diagram of a modified round function module according to the fifth embodiment.
도 41a 및 도 41b는 제5 실시예에 따른 복호화의 타이밍 차트.41A and 41B are a timing chart of decoding according to the fifth embodiment.
도 42는 제6 실시예에 따라서 클록 사이클들에서 실행되는 암호화 및 복호화의 처리 내용을 나타낸 도면.Fig. 42 is a diagram showing processing contents of encryption and decryption executed in clock cycles according to the sixth embodiment.
도 43은 종래 기술의 클록 사이클들에서 실행되는 각 서브블록 변환에 대한 신호 처리 시간의 합산을 제6 실시예와 비교한 도면.FIG. 43 is a comparison of the sum of signal processing time for each subblock transformation executed in clock cycles of the prior art with the sixth embodiment; FIG.
도 44는 제6 실시예에 따른 AES 코어의 블록도.44 is a block diagram of an AES core according to the sixth embodiment.
도 45는 제6 실시예에 따른 암호화/복호화부의 블록도.45 is a block diagram of an encryption / decryption unit according to the sixth embodiment.
도 46은 제6 실시예에 따른 변형된 라운드 기능 모듈의 블록도.46 is a block diagram of a modified round function module according to the sixth embodiment.
도 47a 및 도 47b는 제6 실시예에 따른 복호화의 타이밍 차트.47A and 47B are a timing chart of decoding according to the sixth embodiment.
도 48은 종래 기술의 클록 사이클들에서 실행되는 암호화의 처리 내용을 제7 실시예와 비교한 도면.Fig. 48 is a comparison of the processing contents of encryption executed in clock cycles of the prior art with the seventh embodiment.
도 49는 종래 기술의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 암호화 처리 시간의 합산을 제7 실시예와 비교한 도면.Fig. 49 is a comparison of the sum of encryption processing times for each subblock transformation within each clock cycle period of the prior art with the seventh embodiment.
도 50은 종래 기술의 클록 사이클들에서 실행되는 복호화의 처리 내용을 제7 실시예와 비교한 도면.Fig. 50 is a diagram comparing the processing content of decryption executed in clock cycles of the prior art with the seventh embodiment.
도 51은 종래 기술의 각 클록 사이클 기간 내에서 각 서브블록 변환에 대한 복호화 처리 시간의 합산을 제7 실시예와 비교한 도면.Fig. 51 is a comparison of the sum of the decoding processing times for each subblock transformation within each clock cycle period of the prior art with the seventh embodiment;
도 52는 제7 실시예에 따른 AES 코어의 블록도.52 is a block diagram of an AES Core according to the seventh embodiment.
도 53은 제7 실시예에 따른 암호화/복호화부의 블록도.Fig. 53 is a block diagram of an encryption / decryption unit according to the seventh embodiment.
도 54a 및 도 54b는 제7 실시예에 따른 암호화 용의 변형된 라운드 기능 모듈의 블록도.54A and 54B are block diagrams of a modified round function module for encryption according to a seventh embodiment.
도 55a 및 도 55b는 제7 실시예에 따른 복호화 용의 변형된 라운드 기능 모듈의 블록도.55A and 55B are block diagrams of a modified round function module for decryption according to the seventh embodiment.
도 56a 및 도 56b는 제7 실시예에 따른 암호화의 타이밍 차트.56A and 56B are a timing chart of encryption according to the seventh embodiment.
도 57a 및 도 57b는 제7 실시예에 따른 복호화의 타이밍 차트.57A and 57B are a timing chart of decoding according to the seventh embodiment.
도 58은 제8 실시예에 따른 암호화/복호화부의 블록도.58 is a block diagram of an encryption / decryption unit according to the eighth embodiment.
도 59는 제9 실시예에 따른 변형된 라운드 기능 모듈의 블록도.59 is a block diagram of a modified round function module according to the ninth embodiment.
도 60a 및 도 60b는 AES의 알고리즘을 나타낸 도면.60A and 60B illustrate an algorithm of AES.
도 61a 및 도 61b는 클록과 데이터 유지부의 데이터 갱신 타이밍을 나타낸 타이밍 차트.61A and 61B are timing charts showing data update timings of a clock and data holding unit.
도 62는 또 다른 구현 방법을 나타낸 도면.62 illustrates yet another implementation method.
<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for main parts of the drawings>
107, 109, 137, 115: 선택기107, 109, 137, 115: selector
108: 데이터 유지부108: data holding unit
142, 232: 키확장부142, 232: key extension
143, 233: 암호화/복호화부143, 233: encryption / decryption unit
135, 136, 145, 146: 변형된 라운드 기능 모듈135, 136, 145, 146: modified round function module
144, 234: 제어부144, 234: control unit
110, 114, 117, 121: AddRoundKey 변환 모듈110, 114, 117, 121: AddRoundKey Conversion Module
111: SubBytes 변환 모듈111: SubBytes Conversion Module
112: ShiftRows 변환 모듈112: ShiftRows transformation module
113: MixColumns 변환 모듈113: MixColumns transformation module
120: InvSubBytes 변환 모듈120: InvSubBytes Conversion Module
119: InvShiftRows 변환 모듈119: InvShiftRows Conversion Module
116: InvMixColumns 변환 모듈116: InvMixColumns Conversion Module
222: SubBytes/InvSubBytes 변환 모듈222: SubBytes / InvSubBytes Conversion Module
223: ShiftRows/InvShiftRows 변환 모듈223: ShiftRows / InvShiftRows transformation module
224: MixColumns/InvMixColumns 변환 모듈224: MixColumns / InvMixColumns Conversion Module
Claims (12)
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JPJP-P-2007-264967 | 2007-10-10 | ||
JP2007264967 | 2007-10-10 | ||
JPJP-P-2008-233094 | 2008-09-11 | ||
JP2008233094A JP5197258B2 (en) | 2007-10-10 | 2008-09-11 | Cryptographic processing circuit |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090037366A true KR20090037366A (en) | 2009-04-15 |
KR101047265B1 KR101047265B1 (en) | 2011-07-06 |
Family
ID=40278867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080099876A KR101047265B1 (en) | 2007-10-10 | 2008-10-10 | AES encryption / decryption circuit |
Country Status (3)
Country | Link |
---|---|
US (1) | US9191197B2 (en) |
EP (1) | EP2048810B1 (en) |
KR (1) | KR101047265B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210070075A (en) * | 2019-12-04 | 2021-06-14 | 한밭대학교 산학협력단 | Shared Module Unit for AES Encryption System |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8280040B2 (en) * | 2009-02-04 | 2012-10-02 | Globalfoundries Inc. | Processor instructions for improved AES encryption and decryption |
US20100246828A1 (en) * | 2009-03-30 | 2010-09-30 | David Johnston | Method and system of parallelized data decryption and key generation |
US8966285B2 (en) * | 2011-01-10 | 2015-02-24 | Apple Inc. | Securing implementation of a cryptographic process having fixed or dynamic keys |
CN103338447B (en) * | 2013-07-09 | 2016-06-29 | 东南大学 | A kind of self-access encryption and decryption circuit being applied to short-distance transmission |
JP6490064B2 (en) * | 2014-05-21 | 2019-03-27 | 富士電機株式会社 | Information processing apparatus, program, and recording medium |
KR102376506B1 (en) * | 2014-10-20 | 2022-03-18 | 삼성전자주식회사 | Encryptor/decryptor, electronic apparatus including encryptor/decryptor and operation method of encryptor/decryptor |
US10122690B2 (en) * | 2015-07-13 | 2018-11-06 | The Boeing Company | Data encryption and authentication using a mixing function in a communication system |
KR101824315B1 (en) * | 2016-02-25 | 2018-01-31 | 건국대학교 산학협력단 | Method and apparatus for encrypting data, and method and apparatus decrypting data |
RU2649429C1 (en) * | 2017-03-06 | 2018-04-03 | Общество с ограниченной ответственностью "КАСКАД" | Device for data encryption by gost r 34.12-2015 standard and “magma” and aes algorithms |
RU174150U1 (en) * | 2017-03-06 | 2017-10-04 | Общество с ограниченной ответственностью "КАСКАД" | DATA ENCRYPTION DEVICE ACCORDING TO THE STANDARD GOST R 34.12-2015 AND "MAGMA" AND AES ALGORITHMS |
KR102460248B1 (en) * | 2019-02-21 | 2022-10-31 | 한국전자통신연구원 | Finite division operator, elliptic curve cryptosystem having the same and operating method thereof |
US11188681B2 (en) * | 2019-04-08 | 2021-11-30 | International Business Machines Corporation | Malware resistant computer |
JP7383985B2 (en) * | 2019-10-30 | 2023-11-21 | 富士電機株式会社 | Information processing device, information processing method and program |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10232606A (en) | 1996-12-20 | 1998-09-02 | Toshiba Corp | Ciphering method and decoding method and ciphering device and decoding device |
US6625572B1 (en) * | 1999-12-22 | 2003-09-23 | Lsi Logic Corporation | Cycle modeling in cycle accurate software simulators of hardware modules for software/software cross-simulation and hardware/software co-simulation |
JP3499810B2 (en) * | 2000-03-06 | 2004-02-23 | 株式会社東芝 | ENCRYPTION DEVICE, ENCRYPTION METHOD, COMPUTER-READABLE RECORDING MEDIUM CONTAINING PROGRAM FOR FUNCTIONING COMPUTER AS ENCRYPTION DEVICE, AND COMPUTER READING RECORDING PROGRAM FOR FUNCTIONING COMPUTER AS DECRYPTION DEVICE, DECRYPTION METHOD, AND DECRYPTION DEVICE Possible recording media |
KR100525389B1 (en) * | 2001-01-17 | 2005-11-02 | 엘지전자 주식회사 | Scrambler/descrambler of real time input stream |
US6937727B2 (en) | 2001-06-08 | 2005-08-30 | Corrent Corporation | Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels |
JP3851115B2 (en) * | 2001-06-28 | 2006-11-29 | 富士通株式会社 | Cryptographic circuit |
US7801301B2 (en) * | 2001-10-10 | 2010-09-21 | Stmicroelectronics S.R.L. | Method and circuit for data encryption/decryption |
CN1672352A (en) | 2002-05-23 | 2005-09-21 | 爱特梅尔股份有限公司 | Advanced encryption standard (AES) hardware cryptographic engine |
US7403620B2 (en) * | 2002-07-02 | 2008-07-22 | Stmicroelectronics S.A. | Cyphering/decyphering performed by an integrated circuit |
US20040047466A1 (en) * | 2002-09-06 | 2004-03-11 | Joel Feldman | Advanced encryption standard hardware accelerator and method |
US7925891B2 (en) * | 2003-04-18 | 2011-04-12 | Via Technologies, Inc. | Apparatus and method for employing cryptographic functions to generate a message digest |
US7900055B2 (en) * | 2003-04-18 | 2011-03-01 | Via Technologies, Inc. | Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms |
CN1788450A (en) | 2003-05-14 | 2006-06-14 | 皇家飞利浦电子股份有限公司 | Small hardware implementation of the mixcolumn functions |
WO2004112309A1 (en) * | 2003-06-16 | 2004-12-23 | Electronics And Telecommunications Research Institue | Rijndael block cipher apparatus and encryption/decryption method thereof |
US7421076B2 (en) * | 2003-09-17 | 2008-09-02 | Analog Devices, Inc. | Advanced encryption standard (AES) engine with real time S-box generation |
KR100594265B1 (en) * | 2004-03-16 | 2006-06-30 | 삼성전자주식회사 | A cipher processing unit, an advanced encryption standard cipher system and an advanced encryption standard cipher method with masking method |
KR100675837B1 (en) * | 2004-12-13 | 2007-01-29 | 한국전자통신연구원 | Fast-GCM-AES block encoding apparatus and method |
US8036377B1 (en) * | 2006-12-12 | 2011-10-11 | Marvell International Ltd. | Method and apparatus of high speed encryption and decryption |
US8411853B2 (en) * | 2008-08-28 | 2013-04-02 | Lsi Corporation | Alternate galois field advanced encryption standard round |
-
2008
- 2008-09-24 US US12/236,905 patent/US9191197B2/en active Active
- 2008-09-30 EP EP08017194.5A patent/EP2048810B1/en active Active
- 2008-10-10 KR KR1020080099876A patent/KR101047265B1/en active IP Right Grant
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210070075A (en) * | 2019-12-04 | 2021-06-14 | 한밭대학교 산학협력단 | Shared Module Unit for AES Encryption System |
Also Published As
Publication number | Publication date |
---|---|
EP2048810B1 (en) | 2016-06-29 |
US20090097639A1 (en) | 2009-04-16 |
EP2048810A3 (en) | 2014-10-29 |
EP2048810A2 (en) | 2009-04-15 |
KR101047265B1 (en) | 2011-07-06 |
US9191197B2 (en) | 2015-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101047265B1 (en) | AES encryption / decryption circuit | |
US9374218B2 (en) | Method for conducting data encryption and decryption using symmetric cryptography algorithm and table look-up device | |
US7688974B2 (en) | Rijndael block cipher apparatus and encryption/decryption method thereof | |
CN101753292B (en) | Methods and devices for a chained encryption mode | |
US8000471B2 (en) | Robust cipher design | |
JP5652363B2 (en) | Cryptographic processing apparatus, cryptographic processing method, and program | |
CN105007154A (en) | Encryption and decryption device based on AES (Advanced Encryption Standard) algorithm | |
JP5197258B2 (en) | Cryptographic processing circuit | |
US20100061551A1 (en) | Encryption/decryption apparatus and method using aes rijndael algorithm | |
US8560832B2 (en) | Information processing apparatus | |
US20150163051A1 (en) | Encryption device, encryption method and program | |
US10594476B1 (en) | Reduced-latency packet ciphering | |
US20030059044A1 (en) | Encryption apparatus | |
JP4395527B2 (en) | Information processing device | |
KR100710455B1 (en) | Apparatus for rijndael block cipher and encryption/decryption method thereof | |
Lan et al. | An area-efficient implementation of a Message Authentication Code (MAC) algorithm for cryptographic systems | |
EP1629626B1 (en) | Method and apparatus for a low memory hardware implementation of the key expansion function | |
KR101725127B1 (en) | ARIA encoding/decoding apparatus and method | |
JP2002510058A (en) | Method for cryptographic conversion of binary data blocks | |
CN108763982B (en) | DES encryption and decryption device suitable for RFID reader | |
CN117240430A (en) | Encryption and decryption method and circuit based on asynchronous circuit | |
US8908861B2 (en) | AES algorithm-based encryption apparatus and method for mobile communication system | |
KR200279546Y1 (en) | Device for coding/decoding document | |
KR20180021473A (en) | Encryption device | |
JP2008040244A (en) | Aes encryption circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for 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: 20140527 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20150527 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20160525 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20170526 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20180525 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20190625 Year of fee payment: 9 |