KR20090037366A - Aes encryption/decryption circuit - Google Patents

Aes encryption/decryption circuit Download PDF

Info

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
Application number
KR1020080099876A
Other languages
Korean (ko)
Other versions
KR101047265B1 (en
Inventor
히로히사 홋따
아끼히꼬 유시야
Original Assignee
캐논 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP2008233094A external-priority patent/JP5197258B2/en
Application filed by 캐논 가부시끼가이샤 filed Critical 캐논 가부시끼가이샤
Publication of KR20090037366A publication Critical patent/KR20090037366A/en
Application granted granted Critical
Publication of KR101047265B1 publication Critical patent/KR101047265B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key 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

An AES encoding/decoding circuitry is provided to reduce the number of cycles required for the AES encoding by minimizing the difference between the summations of the signal processing time of each sub block conversion. A round feature module(105) is provided as the AES encoding/decoding circuitry. The first AddRoundKey conversion module(110) receives the input signal(165) and the round key A(162), and performs the AddRoundKey conversion. The second AddRoundKey conversion module(114) receives the output of the ShiftRows conversion module(112) and the round key B(163), and performs the AddRoundKey conversion. The SubBytes conversion module(111) receives the output of the first AddRoundKey conversion module(110), and performs the SubBytes conversion. The ShiftRows conversion module receives the output of the SubBytes conversion module, and performs the ShiftRows conversion. The MixColumns conversion module(113) receives the output of the ShiftRows conversion module and performs the MixColumns conversion. The data holding part outputs the output signal of the encoding/decoder.

Description

AES 암호화/복호화 회로{AES ENCRYPTION/DECRYPTION CIRCUIT}AES encryption / decryption circuit {AES ENCRYPTION / DECRYPTION CIRCUIT}

본 발명은 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 AES Core 101 executes AES processing. The key expansion unit 102 generates a round key for AES encryption and decryption from the encryption key and outputs the round key. The encryption / decryption unit 103 performs encryption of 128-bit plain text data or decryption of 128-bit cipher text data using the round key supplied from the key expansion unit 102. The control unit 104 receives a control signal from a unit outside the AES core 101 to control signals of the key expansion unit 102 and the encryption / decryption unit 103 and signals outside the AES core 101. Generate a signal to notify the unit of completion of its operation.

도 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 input signal 105 is plaintext data that is an object of encryption or ciphertext data that is an object of decryption. The output signal 151 is a result obtained by encrypting or decrypting the input signal 150 with respect to the encryption / decryption unit 103. The encryption key 152 is used for encryption or decryption. The encryption / decryption selection signal 153 selects to perform one of encryption and decryption. The key preparation start signal 155 initiates key expansion for the key extension 102 to generate a round key from the encryption key 152. The control signal 157 enables encryption / decryption processing after one cycle. The encryption / decryption start signal 158 initiates encryption or decryption of the input signal 150. The valid signal 159 indicates that the output signal 151 holds the result of encryption or decryption by the encryption / decryption section 103. The control signal 160 maintains the value of the output signal 151 with respect to the encryption / decryption unit 103. The counter signal 161 represents the number of cycles from the leading edge of the key preparation start signal 155 or the encryption / decryption start signal 158 in key preparation or encryption / decryption. Round key A 162 is one of the round keys. Round key B 163 is a round key generated by key extension 102 and is used in the last cycle of encryption or the first cycle of decryption. The selection signal 170 switches the connection of the subblock transformation in the encryption / decryption section 103. The selection signal 171 switches the target process data in the encryption / decryption unit 103.

상기 구성에 있어서, 입력 신호(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 input signal 150 is input to the encryption / decryption section 103 from the outside. The output signal 151 is output from the encryption / decryption section 103 to the outside. The encryption key 152 is input from the outside to the key expansion unit 102. The encryption / decryption selection signal 153 is input from the outside to the key expansion unit 102, the encryption / decryption unit 103, and the control unit 104. The key preparation start signal 155 is input from the outside to the key expansion unit 102 and the control unit 104. The control signal 157 is output from the controller 104 to the outside. The encryption / decryption start signal 158 is input from the outside to the key expansion unit 102 and the control unit 104. The valid signal 159 is output from the controller 104 to the outside. The output maintenance control signal 160 is output from the control unit 104 to the encryption / decryption unit 103. The counter signal 161 is output from the control unit 104 to the key expansion unit 102. The round key A 162 is output from the key expansion unit 102 to the encryption / decryption unit 103. The round key B 163 is output from the key expansion unit 102 to the encryption / decryption unit 103. The selection signal 170 is output from the control unit 104 to the encryption / decryption unit 103. The selection signal 171 is output from the control unit 104 to the encryption / decryption unit 103.

다음, 암호화/복호화부(103)를 설명한다. 도 6은 암호화/복호화부(103)의 블록도이다. 도 6을 참조하면, 변형된 라운드 기능 모듈(105)은 선택 신호(170)의 제어 하에서 라운드 키 A(162) 및 라운드 키 B(163)를 이용하여 1 사이클 분의 암호화를 실행한다. 변형된 라운드 기능 모듈(106)은 선택 신호(170)의 제어 하에서 라운드 키 A(162) 및 라운드 키 B(163)를 이용하여 복호화를 실행한다.Next, the encryption / decryption unit 103 will be described. 6 is a block diagram of the encryption / decryption unit 103. Referring to FIG. 6, the modified round function module 105 executes one cycle of encryption using the round key A 162 and the round key B 163 under the control of the selection signal 170. The modified round function module 106 performs decryption using the round key A 162 and the round key B 163 under the control of the selection signal 170.

선택기(107)는 암호화/복호화 선택 신호(153)에 따라서 변형된 라운드 기능 모듈(105)로부터의 출력과 변형된 라운드 기능 모듈(106)로부터의 출력 중 하나를 선택한다. 데이터 유지부(108)는 출력 유지 제어 신호(160)에 따라서 선택기(107)에 의해 선택된 신호를 유지한다. 선택기(109)는 선택 신호(171)에 따라서 입력 신호(150)와 데이터 유지부(108)로부터의 출력 신호 중 하나를 선택한다.The selector 107 selects one of the output from the modified round function module 105 and the output from the modified round function module 106 in accordance with the encryption / decryption selection signal 153. The data holding unit 108 holds the signal selected by the selector 107 in accordance with the output holding control signal 160. The selector 109 selects one of the input signal 150 and the output signal from the data holding unit 108 in accordance with the selection signal 171.

도 6을 참조하면, 변형된 라운드 기능 모듈(105 및 106)에 입력 신호(165)가 입력된다. 출력 신호(166)는 변형된 라운드 기능 모듈(105)에 대하여 입력 신호(165)를 처리시킴으로써 얻어지는 결과이다. 출력 신호(167)는 변형된 라운드 기능 모듈(106)에 대하여 입력 신호(165)를 처리시킴으로써 얻어지는 결과이다. 출력 신호(168)는 선택기(107)로부터 출력된다.Referring to FIG. 6, the input signal 165 is input to the modified round function modules 105 and 106. The output signal 166 is the result obtained by processing the input signal 165 for the modified round function module 105. The output signal 167 is the result obtained by processing the input signal 165 for the modified round function module 106. The output signal 168 is output from the selector 107.

상기 구성에 있어서, 입력 신호(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 input signal 150, the output from the data holding unit, and the selection signal 171 are input to the selector 109. The output of the selector 109, the round key A 162, the round key B 163, and the selection signal 170 are input to the modified round function module 105. The output of the selector 109, the round key A 162, the round key B 163, and the selection signal 170 are input to the modified round function module 106. The output signal of the modified round function module 105, the output signal of the modified round function module 106, and the encryption / decryption selection signal 153 are input to the selector 107. The output of the selector 107 and the output holding control signal 160 are input to the data holding unit 108. The data holding unit 108 outputs an output signal 151 of the encryption / decryption unit 103.

상기 구성에 있어서, 선택 신호(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 selection signal 171 is negated, the selector 109 selects and outputs the input signal 150. When the selection signal 171 is asserted, the selector 109 selects and outputs the output signal 1651 of the data holding unit 108. The input signal 165, the result of being selected by the selector 109, is input to the modified round function modules 105 and 106, which perform encryption and decryption, respectively. When the encryption / decryption selection signal 153 is negated, the selector 107 selects and outputs the output signal 166 which is the output result of the modified round function module 105. When the encryption / decryption selection signal 153 is asserted, the selector 107 selects and outputs an output signal 167 which is the output result of the modified round function module 106. The output signal 168 of the selector 107 is input to the data holding unit 108 and temporarily stored. The output signal 151 of the data holding unit 108 is an output signal of the encryption / decryption unit 103. The output signal is also connected to the input of the selector 109. When the selection signal 171 is asserted, encryption by the modified round function module 105 or decryption by the modified round function module 106 is repeatedly executed.

암호화/복호화가 종료되고, 다음의 암호화/복호화가 아직 개시되어 있지 않은 경우, 제어부(104)는 출력 유지 제어 신호(160)를 어서트시킨다. 이 동안에, 데이터 유지부(108)는 출력 신호(168)에 의존하지 않고 출력 신호(151)의 값을 계속 유지한다.When the encryption / decryption is finished and the next encryption / decryption has not yet started, the control unit 104 asserts the output maintenance control signal 160. During this time, the data holding unit 108 keeps the value of the output signal 151 without depending on the output signal 168.

다음, 변형된 라운드 기능 모듈(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 round function module 105 will be described. 7 is a block diagram of a modified round function module 105. Referring to FIG. 7, the AddRoundKey conversion module 110 (corresponding to the first AddRoundKey conversion module) receives an input signal 165 and a round key A 162 and performs AddRoundKey conversion. The SubBytes conversion module 111 receives the output of the AddRoundKey conversion module 110 and performs SubBytes conversion. The ShiftRows conversion module 112 receives the output of the SubBytes conversion module 111 and executes ShiftRows conversion. The MixColumns conversion module 113 receives the output of the ShiftRows conversion module 112 and executes MixColumns conversion. The AddRoundKey conversion module 114 (corresponding to the second AddRoundKey conversion module) receives the output of the ShiftRows conversion module 112 and the round key B 163 to execute AddRoundKey conversion. The selector 115 selects and outputs one of the output of the MixColumns conversion module 113 and the output of the AddRoundKey conversion module 114 according to the selection signal 170. The output signal of the selector 115 is the output signal of the modified round function module 105.

상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 MixColumns 변환 모듈의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 AddRoundKey 변환 모듈의 출력을 선택하여 출력한다.In the above configuration, when the selection signal 170 is negated, the selector 115 selects and outputs the output of the MixColumns conversion module. When the selection signal 170 is asserted, the selector 115 selects and outputs the output of the AddRoundKey conversion module.

다음, 도 8의 블록도를 참조하여 변형된 라운드 기능 모듈(106)에 대하여 설명한다.Next, the modified round function module 106 will be described with reference to the block diagram of FIG. 8.

도 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 InvMixColumns transformation module 116 receives an input signal 165 and performs InvMixColumns transformation. The AddRoundKey conversion module 117 receives the input signal 165 and the round key B 163 and performs AddRoundKey conversion. The selector 118 selects and outputs one of an output of the InvMixColumns conversion module 116 and an AddRoundKey conversion module 117 according to the selection signal 170. The InvShiftRows transformation module 119 receives the output of the selector 118 and executes InvShiftRows transformation. The InvSubBytes conversion module 120 receives the output of the InvShiftRow conversion module 119 and performs InvSubBytes conversion. The AddRoundKey conversion module 121 receives the output of the InvSubBytes conversion module 120 and performs AddRoundKey conversion. The output of the AddRoundKey conversion module 121 is the output of the modified round function module 106.

상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(118)는 InvMixColumns 변환 모듈(116)의 결과를 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(118)는 AddRoundKey 변환 모듈(117)의 출력을 선택하여 출력한다.In the above configuration, when the selection signal 170 is negated, the selector 118 selects and outputs the result of the InvMixColumns conversion module 116. When the selection signal 170 is asserted, the selector 118 selects and outputs the output of the AddRoundKey conversion module 117.

다음, 상기 구성에 있어서의 암호화 동작에 대하여 설명한다. 도 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 encryption key 152 and the encryption / decryption selection signal 153, various parameters for encryption / decryption such as key length and encryption mode are set as necessary. The values of the encryption / decryption selection signal 153 and the encryption key 152 need to always be kept external until a new parameter is set. The parameter setting period is a period having an arbitrary length immediately after reset. When the key preparation start signal 155 is asserted from a unit external to the AES core 101 (T06), the parameter setting period ends.

파라미터 설정 기간의 종료와 동시에, 다음의 키 준비 기간이 개시된다. 키 준비 기간에서, 키 확장부(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 key expansion unit 102 advances the last round key in advance to simultaneously supply the two round keys wkey9 and wkey10 to the encryption / decryption unit 103 in the ninth cycle T26 of encryption / decryption. Create (wkey10). The key preparation period is a period until the timing after 11 cycles (T17) in which the last round key wkey10 is generated after the key preparation start signal 155 is asserted.

다음, 키 준비 기간 동안 각 회로의 동작에 대하여 설명한다. 키 준비 개시 신호(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 preparation start signal 155 is asserted, the control unit 104 counts up the counter signal 161 in order from zero. The key expansion unit 102 expands wkey0 (encryption key 152) in each clock cycle in accordance with the counter signal 161 to generate ten round keys wkey1, wkey2, ..., wkeyl0. The generated round keys are output in turn as round key A 162.

타이밍 T16에서, 카운터 신호(161)는 "10"이 된다. 키 확장부(102)는 생성된 라운드 키(wkey10)를 레지스터에 유지하여, 이를 라운드 키 B(163)로서 출력한다. 그 후, 다음 키 준비 실행때까지 wkey10가 계속 유지된다.At the timing T16, the counter signal 161 becomes "10". The key expansion unit 102 keeps the generated round key wkey10 in a register and outputs it as the round key B 163. Thereafter, wkey10 is maintained until the next key preparation execution.

키 준비 기간이 종료되는 때에(T17), 키 확장부(102)는 암호화/복호화에 첫번째로 사용되는 라운드 키(암호화에서 wkeyO, 또는 복호화에서 wkey9)를 라운드 키A(162)로서 출력한다. 라운드 키 A(162)의 값은 암호화/복호화 개시 신호(158)가 어서트되기 전까지 유지된다. 제어부(104)는 카운트 신호(162)의 카운트 업을 중지하고 카운터를 0으로 클리어시킨다.At the end of the key preparation period (T17), the key expansion unit 102 outputs the round key (wkeyO in encryption, or wkey9 in decryption) used first for encryption / decryption as the round key A 162. The value of round key A 162 remains until the encryption / decryption start signal 158 is asserted. The controller 104 stops counting up the count signal 162 and clears the counter to zero.

키 준비 기간의 종료 부근에서, 키 준비가 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, control unit 104 asserts control signal 157 at T16.

T17에서 제어 신호(157)가 어서트되는 것을 감지하면, AES 코어(101) 외부에 배치된 입력 신호 공급부는 입력 신호(150)로서 평문 데이터(P0)를 AES 코어(101)에 공급한다. 입력 신호(150)의 암호화를 개시하기 위하여 암호화/복호화 개시 신 호(158)가 어서트된다(T17). 타이밍 차트에 있어서, 암호화/복호화 개시 신호(158)는 최단 사이클에 어서트된다. 그러나, 타이밍은 AES 코어(101) 외부에서 자유롭게 결정된다.If it is detected at T17 that the control signal 157 is asserted, the input signal supply unit disposed outside the AES core 101 supplies the plain text data P0 to the AES core 101 as the input signal 150. The encryption / decryption start signal 158 is asserted to initiate encryption of the input signal 150 (T17). In the timing chart, the encryption / decryption start signal 158 is asserted in the shortest cycle. However, the timing is freely determined outside the AES core 101.

암호화 기간에서, 입력 신호(150)가 암호화된다. 암호화 기간은 암호화/복호화 개시 신호(158)가 어서트되는 때(T17)로부터 10 사이클 이후의 타이밍(T27)까지의 기간이다.In the encryption period, the input signal 150 is encrypted. The encryption period is a period from when the encryption / decryption start signal 158 is asserted (T17) to a timing T27 10 cycles later.

암호화/복호화 개시 신호(158)가 어서트된 것을 감지하면, 제어부(104)는 다음 사이클(T18)에서 제어 신호(157), 출력 유지 신호(159), 및 출력 유지 제어 신호(160)를 니게이트시킨다. 동시에, 제어부(104)는 카운터 신호(161)를 카운트 업하기 시작한다.Upon detecting that the encryption / decryption start signal 158 is asserted, the control unit 104 receives the control signal 157, the output holding signal 159, and the output holding control signal 160 in the next cycle T18. Gate. At the same time, the controller 104 starts to count up the counter signal 161.

키 확장부(102)는 카운터 신호(161)에 따라서 라운드 키 wkeyO로부터 순차적으로 키 확장을 수행한다. 키 확장부(102)는 T18에서 wkey1, T19에서 wkey2,·..., T26에서 wkey9를 라운드 키 A(162)로서 암호화/복호화부(103)에 출력한다.The key expansion unit 102 performs key expansion sequentially from the round key wkeyO according to the counter signal 161. The key expansion unit 102 outputs wkey1 at T18, wkey2 at T19, ..., and wkey9 at T26 to the encryption / decryption unit 103 as the round key A 162.

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 select signal 171 is negated. Therefore, the modified round function module 105 performs subblock conversion using wkey0 output as the round key A on the input signal 150. From T18 to T27, the selection signal 171 is asserted. Therefore, the modified round function module 105 performs subblock conversion on the output of the data holding unit 108 using wkey1 from T18 to T19, wkey2 from T19 to T20, ..., wkey8 from T25 to T26. do.

암호화의 최종 사이클(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 control 104 asserts the selection signal 170. Therefore, the selector 115 of the modified round function module 105 selects the output of the AddRoundKey transformation module 114 that executes the AddRoundKey transformation using the round key B 163, and executes the subblock transformation of the last cycle. do. In T26, the output signal 166 of the modified round function module 105 outputs the ciphertext data C0 which is a result of the encryption of the plain text data P0 as an input signal. After one cycle (T27), the data holding unit 108 outputs the value of the ciphertext data C0 to the outside as the output of the AES core 101. At the same time, the control unit 104 asserts the valid signal 159 to notify that the unit outside the AES core 101 is encrypted and the output signal 151 is valid (T27). While the valid signal 159 is asserted, the AES core 101 ensures that the output signal 151 is valid.

한편, 출력 유지 제어 신호(160)는 T27에서 유효 신호(159)가 어서트되어 있지만, T27에서 암호화/복호화 개시 신호(158) 또한 어서트되어 있기 때문에, 니게이트로 유지된다. 암호화/복호화 개시 신호(158)가 T27에서 어서트되지 않으면, 출력 유지 제어 신호(160)가 T27에서 어서트되고, 데이터 유지부(108)의 값은 암호문 데이터(C0)를 유지한다.On the other hand, although the valid signal 159 is asserted in T27, the output maintenance control signal 160 is maintained as a gate because the encryption / decryption start signal 158 is asserted in T27. If the encryption / decryption start signal 158 is not asserted at T27, the output hold control signal 160 is asserted at T27, and the value of the data retainer 108 holds the ciphertext data C0.

암호화가 종료하는 T27에서, 키 확장부(102)는 라운드 키 A(162)로서 wkey0를 출력한다. 라운드 키 A(162)의 값은 다음의 암호화/복호화 개시 신호(156)가 어서트될 때까지 유지된다.At T27 at which encryption ends, the key expansion unit 102 outputs wkey0 as the round key A 162. The value of round key A 162 is maintained until the next encryption / decryption start signal 156 is asserted.

암호화의 종료(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 control unit 104 asserts the control signal 157 before the complete cycle (T26). When the control signal 157 is asserted, a unit outside the AES core 101 sets the value of the input signal 150 to the next plain text data P1 so that the encryption of the second block can start. do. 9A and 9B, the external unit of the AES core 101 asserts the next encryption / decryption start signal in the shortest cycle T27. The decoding operation of the second block is performed in the same manner as the first block. Thereafter, the encryption operation is repeatedly performed for a predetermined number of blocks. In the timing charts of Figs. 9A and 9B, encryption of the second block is started at the shortest interval from the encryption end of the first block. The AES core can achieve 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.

다음, 본 실시예의 복호화 동작에 대하여 설명한다. 도 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 / decryption selection signal 153 is asserted at the time of decryption.

키 준비 기간은 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 key expansion unit 102 performs key expansion in reverse order from wkey10 at the end of the key preparation period T17 to generate wkey9, and outputs this key as the round key A 162. The value of round key A 162 is maintained until encryption / decryption start signal 158 is asserted. The control unit 104 stops counting up the counter signal 161 and clears the counter to zero.

키 준비 기간의 종료 근처에서, T17에서 키 준비가 종료되어, 복호화가 가능하게 될 것을 예상하여, 제어부(104)는 T16에서 제어 신호(157)를 어서트한다.Near the end of the key preparation period, the control unit 104 asserts the control signal 157 at T16 in anticipation of the key preparation being completed at T17 and enabling decryption.

T17에서 제어 신호(157)가 어서트되는 것을 감지하면, AES 코어(101)의 외부에 배치된 입력 신호 공급부는 AES 코어(101)에 대하여 입력 신호(150)로서 평문 데이터(C0)를 공급한다. 암호화/복호화 개시 신호(158)가 어서트되어, 입력 신호(150)의 복호화가 개시된다(T17). 타이밍 차트에서, 암호화/복호화 개시 신호(158)는 최단 사이클에서 어서트된다. 그러나, 타이밍은 AES 코어(101) 외부에서 자유롭게 결정된다.When the control signal 157 is detected at T17, the input signal supply unit disposed outside the AES core 101 supplies the plain text data C0 as the input signal 150 to the AES core 101. . The encryption / decryption start signal 158 is asserted to start decrypting the input signal 150 (T17). In the timing chart, the encryption / decryption start signal 158 is asserted in the shortest cycle. However, the timing is freely determined outside the AES core 101.

복호화 기간에서, 입력 신호(150)가 복호화된다. 복호화 기간은 암호화/복 호화 개시 신호(158)가 어서트되는 때(T17)부터 10 사이클 이후의 타이밍(T27)까지의 기간이다.In the decoding period, the input signal 150 is decoded. The decryption period is a period from when the encryption / decryption start signal 158 is asserted (T17) to a timing T27 10 cycles later.

암호화/복호화 개시 신호(158)가 어서트되는 것을 감지하면, 제어부(104)는 다음 사이클(T18)에서 제어 신호(157), 유효 신호(159), 및 출력 유지 제어 신호(160)를 니게이트한다. 동시에, 제어부(104)는 카운터 신호(161)를 카운트 업하기 시작한다.Upon detecting that the encryption / decryption start signal 158 is asserted, the controller 104 negates the control signal 157, the valid signal 159, and the output retention control signal 160 in the next cycle T18. do. At the same time, the controller 104 starts to count up the counter signal 161.

키 확장부(102)는 카운터 신호(161)에 따라서 라운드 키(wkey9)로부터 역순서로 키 확장을 수행한다. 키 확장부(102)는 T18에서 wkey9, T19에서 wkey8, ..., T26에서 wkeyO를 라운드 키 A(162)로서 암호화/복호화부(103)에 출력한다.The key expansion unit 102 performs key expansion in the reverse order from the round key wkey9 in accordance with the counter signal 161. The key expansion unit 102 outputs wkey9 at T18, wkey8 at T19, ..., and wkeyO at T26 to the encryption / decryption unit 103 as the round key A 162.

T17에서 T18까지에서는, 선택 신호(171)가 니게이트된다. 따라서, 변형된 라운드 기능 모듈(106)이 라운드 키 A로서 출력되는 wkey9을 이용하여 입력 신호(150)에 대한 서브블록 변환을 실행한다. 복호화의 1번째 사이클에서, 제어부(104)는 선택 신호(170)를 어서트시킨다. 따라서, 변형된 라운드 기능 모듈(106)의 선택기(118)가 라운드 키 B(163)를 이용하여 AddRoundKey 변환을 실행하는 AddRoundKey 변환 모듈(117)의 출력을 선택하여, 1번째 사이클의 서브블록 변환을 실행한다.From T17 to T18, the selection signal 171 is negated. Thus, the modified round function module 106 performs subblock conversion on the input signal 150 using wkey9 output as round key A. In the first cycle of decoding, the control unit 104 asserts the selection signal 170. Accordingly, the selector 118 of the modified round function module 106 selects the output of the AddRoundKey transformation module 117 that executes the AddRoundKey transformation using the round key B 163 to perform the subblock transformation of the first cycle. Run

T18에서 T27까지에서, 선택 신호(171)가 어서트된다. 따라서, 변형된 라운드 기능 모듈(106)은 데이터 유지부(108)의 출력에 대하여 T18에서 T19까지는 wkey8, T19에서 T20까지는 wkey7, ..., T25에서 T26까지는 wkeyO를 이용하여 서브블록 변환을 실행한다.From T18 to T27, the selection signal 171 is asserted. Accordingly, the modified round function module 106 performs subblock conversion on the output of the data holding unit 108 using wkey8 from T18 to T19, wkey7 from T19 to T20, ..., and wkeyO from T25 to T26. do.

T26에서, 변형된 라운드 기능 모듈(106)의 출력 신호(167)는 입력 신호로서 암호문 데이터(C0)의 복호화 결과인 평문 데이터(P0)를 출력한다. 1 사이클 후에(T27), 데이터 유지부(108)는 AES 코어(101)의 출력으로서 평문 데이터(P0)의 값을 외부에 출력한다. 동시에, 복호화가 종료되어 출력 신호(151)가 유효한 것을 AES 코어(101) 외부 유닛에 통지하기 위하여, 제어부(104)는 유효 신호(159)를 어서트시킨다(T27). 유효 신호(159)가 어서트되고 있는 동안, AES 코어(101)는 출력 신호가 유효인 것을 보장한다.In T26, the output signal 167 of the modified round function module 106 outputs the plain text data P0 which is the result of decryption of the cipher text data C0 as the input signal. After one cycle (T27), the data holding unit 108 outputs the value of the plain text data P0 to the outside as the output of the AES core 101. At the same time, the control unit 104 asserts the valid signal 159 to notify the external unit of the AES core 101 that decryption is completed and the output signal 151 is valid (T27). While the valid signal 159 is asserted, the AES core 101 ensures that the output signal is valid.

한편, T27에서 유효 신호(159)가 어서트되어 있지만, T27에서 암호화/복호화 개시 신호(158) 또한 어서트되어 있으므로, 출력 유지 제어 신호(160)는 니게이트된 채로 있다. T27에서 암호화/복호화 개시 신호(158)가 어서트되지 않으면, T27에서 출력 유지 제어 신호(160)가 어서트되어, 데이터 유지부(108)의 값이 평문 데이터(P0)를 유지한다.On the other hand, the valid signal 159 is asserted at T27, but since the encryption / decryption start signal 158 is also asserted at T27, the output holding control signal 160 remains negated. If the encryption / decryption start signal 158 is not asserted at T27, the output holding control signal 160 is asserted at T27, so that the value of the data holding unit 108 holds the plain text data P0.

T27에서 복호화가 종료하는 때에, 키 확장부(102)는 wkey10에서부터 wkey9을 역산으로 취득하여, 이를 라운드 키 A(162)로서 출력한다. 라운드 키 A(162)의 값은 다음 암호화/복호화 개시 신호(156)가 어서트될 때까지 유지된다.At the end of decryption at T27, the key expansion unit 102 obtains wkey9 from wkey10 as the inverse, and outputs it as the round key A 162. The value of round key A 162 is maintained until the next encryption / decryption start signal 156 is asserted.

복호화의 종료를 예상하여(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 control unit 104 asserts the control signal 157 before the end of the cycle (T26). When the control signal 157 is asserted, a unit outside the AES core 101 sets the value of the input signal 150 to the next ciphertext data C1 so that decryption of the second block can be started. 10A and 10B, the unit outside the AES core 101 asserts the next encryption / decryption start signal 158 in the shortest cycle T27. The decoding operation of the second block is performed in the same manner as the first block. After that, the decryption operation is repeatedly performed any number of times.

복호화가 완전히 종료되어 다음 작업이 개시되어야 하는 때에는, 파라미터 설정으로부터 다시 처리를 시작한다.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 AES Core 131 executes AES processing. The key expansion unit 132 generates a round key for AES encryption and decryption from the encryption key and outputs the round key. The encryption / decryption unit 133 performs encryption of 128-bit plain text data or decryption of 128-bit cipher text data using the round key supplied from the key expansion unit 132. The control unit 134 receives a control signal from a unit external to the AES core 131, and controls the operations of the key expansion unit 132 and the encryption / decryption unit 133 and completes the operation of the AES core 131. ) Generates a signal for notifying the external unit.

도 14를 참조하면, 암호화/복호화부(133)에서 서브블록 변환의 접속을 절환하기 위하여 제어부(134)로부터 암호화/복호화부(133)에 선택 신호(175)가 출력된다.Referring to FIG. 14, the selection signal 175 is output from the control unit 134 to the encryption / decryption unit 133 in order to switch the connection of the subblock transformation in the encryption / decryption unit 133.

도 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 / decryption unit 133 will be described. 15 is a block diagram for explaining the encryption / decryption unit 133. Referring to FIG. 15, the modified round function module 135 performs one cycle of encryption using the round key A 162 and the round key B 163 under the control of the select signal 170 and the select signal 175. Run The modified round function module 136 performs decryption using the round key A 162 and the round key B 163 under the control of the selection signals 170 and 175.

상기 구성에 있어서, 선택 신호(171)가 니게이트되는 때에, 암호화/복호화부(133)의 선택기(109)는 입력 신호(150)를 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다.In the above configuration, when the selection signal 171 is negated, the selector 109 of the encryption / decryption section 133 selects the input signal 150. When the selection signal 171 is asserted, the selector 109 selects the output of the data holding unit 108.

도 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 round function module 135 will be described. 16 is a block diagram of a modified round function module 135. Referring to FIG. 16, the AddRoundKey conversion module 114 receives an input signal 165 and a round key B 163 and performs AddRoundKey conversion. The selector 137 selects and outputs one of the input signal 165 and the output of the AddRoundKey conversion module 114 according to the selection signal 175. The SubBytes conversion module 111 receives the output of the selector 137 and performs SubBytes conversion. The ShiftRows conversion module 112 receives the output of the SubBytes conversion module 111 and executes ShiftRows conversion. The MixColumns conversion module 113 receives the output of the ShiftRows conversion module 112 and executes MixColumns conversion. The selector 115 selects and outputs one of the output of the MixColumns conversion module 113 and the output of the ShiftRows conversion module 112 according to the selection signal 170. The AddRoundKey conversion module 110 receives the output of the selector 115 and the round key A 162 to execute AddRoundKey conversion. The output signal of the AddRoundKey conversion module 110 is the output signal of the modified round function module 135.

상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 MixColumns 변환 모듈(113)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 ShiftRows 변환 모듈(112)의 출력을 선택하여 출력한다. 선택 신호(175)가 니게이트되는 때에, 선택기(137)는 입력 신호(165)를 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(137)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다.In the above configuration, when the selection signal 170 is negated, the selector 115 selects and outputs the output of the MixColumns conversion module 113. When the selection signal 170 is asserted, the selector 115 selects and outputs the output of the ShiftRows transform module 112. When select signal 175 is negated, selector 137 selects and outputs input signal 165. When the selection signal 175 is asserted, the selector 137 selects and outputs the output of the AddRoundKey conversion module 114.

다음, 변형된 라운드 기능 모듈(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 round function module 136 will be described. 17 is a block diagram of a modified round function module 136. Referring to FIG. 17, the AddRoundKey conversion module 121 receives an input signal 165 and a round key A 162 and performs AddRoundKey conversion. The InvMixColumns conversion module 116 receives the output of the AddRoundKey conversion module 121 and performs InvMixColumns conversion. The selector 118 selects and outputs one of an output of the InvMixColumns conversion module 116 and an output of the AddRoundKey conversion module 121 according to the selection signal 170. The InvShiftRows transformation module 119 receives the output of the selector 118 and executes InvShiftRows transformation. The InvSubBytes conversion module 120 receives the output of the InvShiftRow conversion module 119 and performs InvSubBytes conversion. The AddRoundKey conversion module 117 receives the output of the InvSubBytes conversion module 120 and the round key B 163 and executes AddRoundKey conversion. The selector 138 selects and outputs one of the output of the InvSubBytes conversion module 120 and the output of the AddRoundKey conversion module 117 according to the selection signal 175. The output of the selector 138 is the output of the modified round function module 136.

상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(118)는 InvMixColumns 변환 모듈(116)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(118)는 AddRoundKey 변환 모듈(121)의 출력을 선택하여 출력한다. 선택 신호(175)가 니게이트되는 때에, 선택기(138)는 InvSubBytes 변환 모듈(120)의 출력을 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(138)는 AddRoundKey 변환 모듈(117)의 출력을 선택하여 출력한다.In the above configuration, when the selection signal 170 is negated, the selector 118 selects and outputs the output of the InvMixColumns conversion module 116. When the selection signal 170 is asserted, the selector 118 selects and outputs the output of the AddRoundKey conversion module 121. When the selection signal 175 is negated, the selector 138 selects and outputs the output of the InvSubBytes conversion module 120. When the selection signal 175 is asserted, the selector 138 selects and outputs the output of the AddRoundKey conversion module 117.

다음, 상기 구성에 있어서의 암호화 동작에 대하여 설명한다. 도 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 key expansion unit 132 at the timing T16 and the operation of the key expansion unit 132 and the control unit 134 at the timing T17 are different from those in the first embodiment, and will be described below.

타이밍 T16에서, 키 확장부(132)는 라운드 키 B(163)로서 wkey0를 출력한다. 라운드 키 wkey10은 키 확장부(132)에 마련된 레지스터에 유지된다.At the timing T16, the key expansion unit 132 outputs wkey0 as the round key B 163. The round key wkey10 is held in a register provided in the key expansion unit 132.

타이밍 T17에서, 키 확장부(132)는 라운드 키 A(162)로서 wkey1을 출력한다. 제어부(134)는 선택 신호(175)를 어서트시킨다.At timing T17, the key expansion unit 132 outputs wkey1 as the round key A 162. The controller 134 asserts the selection signal 175.

제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 control unit 134 asserts the selection signal 175 at the end of encryption and negates it in the first cycle of encryption (T18 or T28). The control unit 134 also asserts the selection signal 170 in the final cycle of encryption T16 and negates it at the end of encryption (T17). The control unit 134 also asserts the selection signal 171 in the first cycle of encryption and negates it at the end of encryption.

회로 구성에 대하여 설명한 바와 같이, 선택 신호(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 select signal 171 is negated, the selector 109 selects the input signal 150. When the selection signal 171 is asserted, the selector 109 selects the output of the data holding unit 108. When select signal 170 is negated, selector 115 selects and outputs the output of MixColumns transform module 113. When the selection signal 170 is asserted, the selector 115 selects and outputs the output of the AddRoundKey conversion module 112. When select signal 175 is negated, selector 137 selects and outputs input signal 165. When the selection signal 175 is asserted, the selector 137 selects and outputs the output of the AddRoundKey conversion module 114.

따라서, 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 round function module 135 performs AddRoundKey transformation, SubBytes transformation, ShiftRows transformation, MixColumns transformation, and AddRoundKey transformation on the input signal 150. From the first cycle, the modified round function module outputs the result obtained by executing SubBytes transformation, ShiftRows transformation, MixColumns transformation, and AddRoundKey transformation on the result of the previous cycle. In the ninth cycle (T26 to T27), the modified round function module outputs the result obtained by executing the SubBytes transformation, the ShiftRows transformation, and the AddRoundKey transformation.

전술한 방법으로 선택 신호(171, 170, 및 175)를 제어함으로써 변형된 라운드 기능 모듈(135)은 도 11에 도시된 바와 같이 암호화를 실행할 수 있다.By controlling the selection signals 171, 170, and 175 in the manner described above, the modified round function module 135 can execute encryption as shown in FIG. 11.

한편, 키 확장부(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 key expansion unit 132 outputs wkey1 as the round key A 162 and wkey0 as the round key B 163 after the key preparation period. Therefore, wkey0 and wkey1 are supplied to the modified round function module 135 at the start of encryption (T17). Upon detecting the start of encryption based on the encryption / decryption start signal 158 (T17), the key expansion unit 132 generates wkey2 using wkey1 held in the round key A register, and wkey2 in the round key A register. Keep it. Thus, wkey2 is supplied to the modified round function module 135 at T18. Round keys are supplied in the same way up to T26. When wkey10 is maintained in the round key A register, and the round key supply is terminated at T26, the key expansion unit 132 generates wkey1 using wkey0 continuously supplied to the outside as the encryption key 152, and the round key A register Wkey1 is held in preparation for preparation of the next encryption start (T27).

전술한 바와 같이 키 확장부(132)가 동작하는 때에, 변형된 라운드 기능 모듈(135)은 도 11에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.As described above, when the key extension 132 operates, the modified round function module 135 may use the round key in each cycle as shown in FIG.

제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 key expansion unit 132 and the control unit 134 at timing T17 are different from those in the first embodiment, and will be described below.

타이밍 T16에서, 키 확장부(132)는 라운드 키 B(163)로서 wkey0를 출력한다. 라운드 키 wkey0은 키 확장부(132)에 마련된 레지스터에 유지된다.At the timing T16, the key expansion unit 132 outputs wkey0 as the round key B 163. The round key wkey0 is held in a register provided in the key expansion unit 132.

타이밍 T17에서, 키 확장부(132)는 라운드 키 A(162)로서 wkey10을 출력한다. 제어부(134)는 선택 신호(170)를 어서트시킨다.At timing T17, the key expansion unit 132 outputs wkey10 as the round key A 162. The controller 134 asserts the selection signal 170.

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 control unit 134 asserts the selection signal 170 at the end of decoding and negates it in the first cycle of decoding (T18 or T28). The control unit 134 also asserts the selection signal 175 in the final cycle T16 of decoding and negates it at the end of decoding (T17). The control unit 134 also asserts the selection signal 171 in the first cycle of decoding and negates it at the end of decoding.

회로 구성에 대하여 설명한 바와 같이, 선택 신호(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 select signal 171 is negated, the selector 109 selects the input signal 150. When the selection signal 171 is asserted, the selector 109 selects the output of the data holding unit 108. When select signal 170 is negated, selector 118 selects and outputs the output of InvMixColumns transform module 116. When the selection signal 170 is asserted, the selector 118 selects and outputs the output of the AddRoundKey conversion module 121. When the selection signal 175 is negated, the selector 138 selects and outputs the output of the InvSubBytes conversion module 120. When the selection signal 175 is asserted, the selector 138 selects and outputs the output of the AddRoundKey conversion module 117.

따라서, 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 round function module 136 performs AddRoundKey transformation, InvShiftRows transformation, and InvSubBytes transformation on the input signal 150. From the first cycle, the modified round function module outputs the result obtained by executing AddRoundKey transformation, MixColumns transformation, InvShiftRows transformation, and InvSubBytes transformation on the result of the previous cycle. In the ninth cycle (T26 to T27), the modified round function module outputs the result obtained by executing AddRoundKey transformation, InvMixColumns transformation, InvShiftRows transformation, InvSubBytes transformation, and AddRoundKey transformation.

전술한 방법으로 선택 신호(171, 170, 및 175)를 제어함으로써 변형된 라운드 기능 모듈(136)은 도 11에 도시된 바와 같이 복호화를 실행할 수 있다.By controlling the selection signals 171, 170, and 175 in the above-described manner, the modified round function module 136 can execute decoding as shown in FIG. 11.

한편, 키 확장부(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 key expansion unit 132 outputs wkey10 as the round key A 162 and wkey0 as the round key B 163 after the key preparation period. Therefore, wkey10 is supplied to the modified round function module 136 at the start of decryption (T17). Upon detecting the start of decryption based on the encryption / decryption start signal 158 (T17), the key expansion unit 132 generates wkey9 using wkey10 held in the round key A register, and wkey9 in the round key A register. Keep it. Thus, wkey9 is supplied to the modified round function module 136 at T18. Round keys are supplied in the same way up to T26. When wkey1 is held in the round key A register, and the round key supply is terminated at T26 (T26), the key expansion unit 132 loads wkey10 held in the internal register of the key expansion unit into the round key A register to perform the next decryption. Prepare for the start T27.

전술한 바와 같이 키 확장부(132)가 동작하는 때에, 변형된 라운드 기능 모듈(136)은 도 11에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.As described above, when the key extension 132 is operated, the modified round function module 136 may use the round key in each cycle as shown in FIG.

제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 AES Core 141 executes AES processing. The key expansion unit 142 generates a round key for AES encryption and decryption from the encryption key and outputs the round key. The encryption / decryption unit 143 performs encryption of the 128-bit plain text data or decryption of the 128-bit cipher text data using the round key supplied from the key expansion unit 142. The control unit 144 receives a control signal from a unit external to the AES core 141 to control the operations of the key expansion unit 142 and the encryption / decryption unit 143 and completes the operation of the AES core 141. ) Generates a signal for notifying the external unit.

도 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 / decryption unit 143 will be described. 24 is a block diagram for explaining the encryption / decryption unit 143. Referring to FIG. 24, the modified round function module 145 executes one cycle of encryption using the round key A 162 and the round key B 163 under the control of the selection signals 170 and 175. The modified round function module 146 performs decryption using the round key A 162 and the round key B 163 under the control of the selection signals 170 and 175.

상기 구성에 있어서, 선택 신호(171)가 니게이트되는 때에, 암호화/복호화부(143)의 선택기(109)는 입력 신호(150)를 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다.In the above configuration, when the selection signal 171 is negated, the selector 109 of the encryption / decryption section 143 selects the input signal 150. When the selection signal 171 is asserted, the selector 109 selects the output of the data holding unit 108.

도 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 round function module 145 will be described. 25 is a block diagram of a modified round function module 145. Referring to FIG. 25, the MixColumns conversion module 113 receives an input signal 165 and performs MixColumns conversion. The selector 137 selects and outputs one of the input signal 165 and the output of the MixColumns conversion module 113 according to the selection signal 175. The AddRoundKey conversion module 110 receives the output of the selector 137 and the round key A 162 to perform AddRoundKey conversion. The SubBytes conversion module 111 receives the output of the AddRoundKey conversion module 110 and performs SubBytes conversion. The ShiftRows conversion module 112 receives the output of the SubBytes conversion module 111 and executes ShiftRows conversion. The AddRoundKey conversion module 114 receives the output of the ShiftRows conversion module 112 and the round key B 163 to execute AddRoundKey conversion. The selector 115 selects and outputs one of an output of the ShiftRows conversion module 112 and an output of the AddRoundKey conversion module 114 according to the selection signal 170. The output signal of the selector 115 is the output signal of the modified round function module 145.

상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 ShiftRows 변환 모듈(112)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다. 선택 신호(175)가 니게이트되는 때에, 선택기(137)는 MixColumns 변환 모듈(113)의 출력을 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택 기(137)는 입력 신호(165)를 선택하여 출력한다.In the above configuration, when the selection signal 170 is negated, the selector 115 selects and outputs the output of the ShiftRows conversion module 112. When the selection signal 170 is asserted, the selector 115 selects and outputs the output of the AddRoundKey conversion module 114. When select signal 175 is negated, selector 137 selects and outputs the output of MixColumns transform module 113. When select signal 175 is asserted, selector 137 selects and outputs input signal 165.

다음, 변형된 라운드 기능 모듈(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 round function module 146 will be described. 26 is a block diagram of a modified round function module 146. Referring to FIG. 26, the AddRoundKey conversion module 121 receives an input signal 165 and a round key A 162 and performs AddRoundKey conversion. The selector 118 selects and outputs one of the input signal 165 and the output of the AddRoundKey conversion module 121 according to the selection signal 170. The InvShiftRows transformation module 119 receives the output of the selector 118 and executes InvShiftRows transformation. The InvSubBytes conversion module 120 receives the result of the InvShiftRows conversion module 119 and executes InvSubBytes conversion. The AddRoundKey conversion module 117 receives the output of the InvSubBytes conversion module 120 and the round key B 163 and executes AddRoundKey conversion. InvMixColumns conversion module 116 receives the output of AddRoundKey conversion module 117 and executes InvMixColumns conversion. The selector 138 selects and outputs one of the output of the InvMixColumns conversion module 116 and the output of the AddRoundKey conversion module 117 according to the selection signal 175. The output of the selector 138 is the output of the modified round function module 146.

상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(118)는 입력 신호(165)를 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(118)는 AddRoundKey 변환 모듈(121)의 출력을 선택하여 출력한다. 선택 신호(175)가 니게이트되는 때에, 선택기(138)는 InvMixColumns 변환 모듈(116)의 출력을 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(138)는 AddRoundKey 변환 모듈(117)의 출력을 선택하여 출력한다.In the above configuration, when the select signal 170 is negated, the selector 118 selects and outputs the input signal 165. When the selection signal 170 is asserted, the selector 118 selects and outputs the output of the AddRoundKey conversion module 121. When select signal 175 is negated, selector 138 selects and outputs the output of InvMixColumns transform module 116. When the selection signal 175 is asserted, the selector 138 selects and outputs the output of the AddRoundKey conversion module 117.

다음, 상기 구성에 있어서의 암호화 동작에 대하여 설명한다. 도 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 controller 144 asserts the selection signal 175 at the end of the key preparation period T17.

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 control unit 144 asserts the selection signal 175 at the end of encryption and negates it in the first cycle of encryption (T18 or T28). The control unit 144 also asserts the selection signal 170 in the final cycle of encryption T16 and negates it at the end of encryption (T17). The control unit 144 also asserts the selection signal 171 in the first cycle of encryption and negates it at the end of encryption.

회로 구성에 대하여 설명한 바와 같이, 선택 신호(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 selection signal 171 is negated, the selector 109 selects the input signal 150. When the selection signal 171 is asserted, the selector 109 selects the output of the data holding unit 108. When the selection signal 170 is negated, the selector 115 selects and outputs the output of the ShiftRows conversion module 112. When the selection signal 170 is asserted, the selector 115 selects and outputs the output of the AddRoundKey conversion module 114. When select signal 175 is negated, selector 137 selects and outputs the output of MixColumns transform module 113. When the selection signal 175 is asserted, the selector 137 selects and outputs an input signal 165.

따라서, 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 round function module 145 performs AddRoundKey transformation, SubBytes transformation, and ShiftRows transformation on the input signal 150. From the first cycle, the modified round function module outputs the result obtained by executing SubBytes transformation, ShiftRows transformation, MixColumns transformation, and AddRoundKey transformation on the result of the previous cycle. In the ninth cycle (T26 to T27), the modified round function module outputs the result obtained by executing the MixColumns transformation, AddRoundKey transformation, SubBytes transformation, ShiftRows transformation, and AddRoundKey transformation.

전술한 방법으로 선택 신호(171, 170, 및 175)를 제어함으로써 변형된 라운 드 기능 모듈(145)은 도 20에 도시된 바와 같이 암호화를 실행할 수 있다.By controlling the selection signals 171, 170, and 175 in the manner described above, the modified round function module 145 can execute encryption as shown in FIG. 20.

한편, 키 확장부(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 key expansion unit 142 outputs wkey0 as the round key A 162 and wkey10 as the round key B 163 after the key preparation period. Therefore, wkey0 is supplied to the modified round function module 145 at the start of encryption (T17). Upon detecting the start of encryption based on the encryption / decryption start signal 158 (T17), the key expansion unit 142 generates wkey1 using wkey0 held in the round key A register, and wkey1 in the round key A register. Keep it. Therefore, wkey1 is supplied to the modified round function module 145 at the timing T18. Round keys are supplied in the same way up to T26. In T26, wkey10 is also supplied as the round key B 163. When wkey10 is maintained in the round key A register, and the round key supply is terminated at T26, the key expansion unit 142 keeps wkey0 continuously supplied to the outside as the encryption key 152 in the round key A register, so that Prepare for start (T27).

전술한 바와 같이 키 확장부(142)가 동작하는 때에, 변형된 라운드 기능 모듈(145)은 도 20에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.As described above, when the key extension 142 operates, the modified round function module 145 may use the round key in each cycle as shown in FIG. 20.

제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 control unit 144 asserts the selection signal 170 at the end of the key preparation period (T17).

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 control unit 144 asserts the selection signal 170 at the end of decoding and negates it in the first cycle of decoding (T18 or T28). The control unit 144 also asserts the selection signal 175 in the final cycle T16 of decoding and negates it at the end of decoding (T17). The control unit 144 also asserts the selection signal 171 in the first cycle of decoding and negates it at the end of decoding.

회로 구성에 대하여 설명한 바와 같이, 선택 신호(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 select signal 171 is negated, the selector 109 selects the input signal 150. When the selection signal 171 is asserted, the selector 109 selects the output of the data holding unit 108. When select signal 170 is negated, selector 118 selects and outputs input signal 165. When the selection signal 170 is asserted, the selector 118 selects and outputs the output of the AddRoundKey conversion module 121. When select signal 175 is negated, selector 138 selects and outputs the output of InvMixColumns transform module 116. When the selection signal 175 is asserted, the selector 138 selects and outputs the output of the AddRoundKey conversion module 117.

따라서, 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 round function module 146 performs AddRoundKey transformation, InvShiftRows transformation, InvSubBytes transformation, AddRoundKey transformation, and InvMixColumns transformation on the input signal 150. From the first cycle, the modified round function module outputs the result obtained by executing InvShiftRows transformation, InvSubBytes transformation, AddRoundKey transformation, and InvMixColumns transformation on the result of the previous cycle. In the ninth cycle T26 to T27, the modified round function module outputs the result obtained by executing the InvShiftRows transformation, the InvSubBytes transformation, and the AddRoundKey transformation.

전술한 방법으로 선택 신호(171, 170, 및 175)를 제어함으로써 변형된 라운드 기능 모듈(146)은 도 20에 도시된 바와 같이 복호화를 실행할 수 있다.By controlling the selection signals 171, 170, and 175 in the above-described manner, the modified round function module 146 can perform decryption as shown in FIG. 20.

한편, 키 확장부(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 key expansion unit 142 outputs wkey9 as the round key A 162 and wkey10 as the round key B 163 after the key preparation period. Therefore, wkey10 and wkey9 are supplied to the modified round function module 146 at the start of decryption (T17). Upon detecting the start of decryption based on the encryption / decryption start signal 158 (T17), the key expansion unit 142 generates wkey8 using wkey9 held in the round key A register, and wkey8 in the round key A register. Keep it. Thus, wkey8 is supplied to the modified round function module 146 at T18. Round keys are supplied in the same way up to T26. When wkey0 is held in the round key A register and the round key supply is terminated at T26 (T26), the key expansion unit 142 generates wkey9 using wkey10 held in the round key B register, and writes to the round key A register. Holding wkey9, the next decryption start (T27) is prepared.

전술한 바와 같이 키 확장부(142)가 동작하는 때에, 변형된 라운드 기능 모듈(146)은 도 20에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.As described above, when the key extension 142 is operated, the modified round function module 146 may use the round key in each cycle as shown in FIG.

본 실시예에 따른 복호화 기간 동안의 동작은 상기의 방법으로 수행된다. 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 AES Core 201 executes AES processing. The key expansion unit 202 generates a round key for AES encryption and decryption from the encryption key and outputs the round key. The encryption / decryption section 203 performs encryption of 128-bit plain text data or decryption of 128-bit cipher text data using the round key supplied from the key expansion section 202. The control unit 204 receives a control signal from a unit external to the AES core 201 to control signals of the key expansion unit 202 and the encryption / decryption unit 203 and external to the AES core 201. Generate a signal to notify the unit of completion of the operation.

도 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 / decryption unit 203 will be described. 33 is a block diagram of the encryption / decryption unit 203. Referring to FIG. 33, the modified round function module 205 may be configured to include a round key A 162 and a round key B (under control of the selection signal 170, the encryption / decryption selection signal 153, and the selection signal 175). 163) performs encryption or decryption for one cycle.

상기 구성에 있어서, 선택 신호(171)가 니게이트되는 때에, 선택기(109)는 입력 신호(150)를 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다.In the above configuration, when the selection signal 171 is negated, the selector 109 selects the input signal 150. When the selection signal 171 is asserted, the selector 109 selects the output of the data holding unit 108.

도 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 round function module 205 will be described. 34 is a block diagram of a modified round function module 205. Referring to FIG. 34, the AddRoundKey conversion module 110 receives an input signal 165 and a round key A 162 and performs AddRoundKey conversion. The SubBytes / InvSubBytes conversion module 222 receives the output of the AddRoundKey conversion module 110 and performs one of SubBytes conversion and InvSubBytes conversion according to the encryption / decryption selection signal 153. The ShiftRows / InvShifRows conversion module 223 receives the output of the SubBytes / InvSubBytets conversion module 222 and executes one of the ShiftRows conversion and the InvShiftRows conversion according to the encryption / decryption selection signal 153. The MixColumns / InvMixColumn conversion module 224 receives the output of the ShiftRows / InvShiftRows conversion module 223 and executes either MixColumns or InvMixColumns conversion according to the encryption / decryption selection signal 153. The AddRoundKey conversion module 114 receives the output of the ShiftRows / InvShiftRows conversion module 223 and executes AddRoundKey conversion. The selector 115 selects and outputs one of an output of the MixColumns / InvMixColumns conversion module 224 and an output of the AddRoundKey conversion module 114 according to the selection signal 170. The output signal of the selector 115 is the output signal of the modified round function module 205.

상기 구성에 있어서, 선택 신호(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 selection signal 170 is negated, the selector 115 selects and outputs the output of the MixColumns / InvMixColumns conversion module 224. When the selection signal 170 is asserted, the selector 115 selects and outputs the output of the AddRoundKey conversion module 114. When the encryption / decryption selection signal 153 is negated, the SubBytes / InvSubBytes conversion module 222, the ShiftRows / InvShiftRows conversion module 223, and the MixColumns / InvMixColumns conversion module 224 perform SubBytes conversion, ShiftRows conversion, and MixColumns. Run each transformation. When the encryption / decryption selection signal 153 is asserted, they perform InvSubBytes transformation, InvShiftRows transformation, and InvMixColumns transformation, respectively.

다음, 도 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 control unit 204 asserts the selection signal 170 in the final cycle T16 of encryption and negates it at the end of encryption (T17). The control unit 204 also asserts the selection signal 171 in the first cycle of encryption and negates it at the end of encryption.

회로 구성에 대하여 설명한 바와 같이, 선택 신호(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 selection signal 171 is negated, the selector 109 selects the input signal 150. When the selection signal 171 is asserted, the selector 109 selects the output of the data holding unit 108. When select signal 170 is negated, selector 115 selects and outputs the output of MixColumns / InvMixColumns conversion module 224. When the selection signal 170 is asserted, the selector 115 selects and outputs the output of the AddRoundKey conversion module 114. When the encryption / decryption selection signal 153 is negated, the SubBytets / InvSubBytes conversion module 222, the ShiftRows / InvShifRows conversion module 223, and the MixColumns / InvMixColumns conversion module 224 perform SubBytes conversion, ShiftRows conversion, and MixColumns. Run each transformation. When the encryption / decryption selection signal 153 is asserted, they perform InvSubBytes transformation, InvShiftRows transformation, and InvMixColumns transformation, respectively.

따라서, 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 round function module 205 performs AddRoundKey transformation, SubBytets transformation, ShiftRows transformation, and MixColumns transformation on the input signal 150. From the first cycle, the modified round function module outputs the result obtained by executing AddRoundKey transformation, SubBytes transformation, ShiftRows transformation, and MixColumns transformation on the result of the previous cycle. In the ninth cycle T26 to T27, the modified round function module outputs the result obtained by executing AddRoundKey transformation, SubBytes transformation, ShiftRows transformation, and AddRoundKey transformation.

변형된 라운드 기능 모듈(205)은 상기 방법으로 선택 신호(171 및 170)를 제어함으로써 도 29에 도시된 바와 같이 암호화를 실행할 수 있다.The modified round function module 205 can execute encryption as shown in FIG. 29 by controlling the selection signals 171 and 170 in this manner.

한편, 키 확장부(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 key expansion unit 202 outputs wkey0 as the round key A 162 and wkey10 as the round key B 162 after the key preparation period. Therefore, wkey0 is supplied to the modified round function module 205 at the start of encryption (T17). Upon detecting the start of encryption based on the encryption / decryption start signal 158 (T17), the key expansion unit 202 generates wkey1 using wkey0 held in the round key A register, and wkey1 in the round key A register. Keep it. Thus, wkey1 is supplied to the modified round function module 205 at T18. Round keys are supplied in the same manner until timing T26. At T26, two round keys wkey9 and wkey10 are supplied that function as the round key B 163. When wkey9 is held in the round key A register and the round key supply is terminated at T26 (T26), the key expansion unit 202 keeps wkey0 supplied externally as the encryption key 152 in the round key A register, Next, start of encryption (T27) is prepared.

전술한 바와 같이 키 확장부(202)가 동작하는 때에, 변형된 라운드 기능 모듈(205)은 도 29에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.When the key extension 202 operates as described above, the modified round function module 205 can use the round key in each cycle as shown in FIG.

제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 key expansion unit 202 at the timing T16 and operations of the key expansion unit 202 and the control unit 204 at the timing T17 are different from those in encryption, and will be described below.

타이밍 T16에서, 키 확장부(202)는 라운드 키 B(163)로서 wkey0를, 라운드 키 A(162)로서 wkey10을 출력한다. 라운드 키 wkey0은 키 확장부(202)에 마련된 레지스터에 유지된다. 타이밍 T16에서, 키 확장부(202)는 wkey10로부터 역으로 키 확장을 수행하여 변형된 복호화 키 wkey9'을 생성한다. At timing T16, the key expansion unit 202 outputs wkey0 as the round key B 163 and wkey10 as the round key A 162. The round key wkey0 is held in a register provided in the key expansion section 202. At timing T16, the key expansion unit 202 performs key expansion inverse from wkey10 to generate the modified decryption key wkey9 '.

타이밍 T17에서, 키 확장부(202는 라운드 키 A(162)로서 wkey9'을 출력한다. 제어부(204)는 선택 신호(170)를 어서트시킨다.At timing T17, the key expansion unit 202 outputs wkey9 'as the round key A 162. The control unit 204 asserts the selection signal 170.

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 control unit 204 asserts the selection signal 170 in the final cycle T16 of decoding and negates it at the end of decoding (T17). The control unit 204 also asserts the selection signal 171 in the first cycle of decoding and negates it at the end of decoding.

회로 구성에 대하여 설명한 바와 같이, 선택 신호(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 select signal 171 is negated, the selector 109 selects the input signal 150. When the selection signal 171 is asserted, the selector 109 selects the output of the data holding unit 108. When the selection signal 170 is negated, the selector 115 selects and outputs the output of the MixColumns / InvMimxColumns conversion module 224. When the selection signal 170 is asserted, the selector 115 selects and outputs the output of the AddRoundKey conversion module 114. When the encryption / decryption selection signal 153 is negated, the SubBytes / InvSubBytes conversion module 222, the ShiftRows / InvShiftRows conversion module 223, and the MixColumns / InvMixColumns conversion module 224 perform SubBytes conversion, ShiftRows conversion, and MixColumns. Perform each conversion. When the encryption / decryption selection signal 153 is asserted, they perform InvSubBytes transformation, InvShiftRows transformation, and InvMixColumns transformation, respectively.

따라서, 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 round function module 205 performs AddRoundKey transformation, InvSubBytes transformation, InvShiftRows transformation, and InvMixColumns transformation on the input signal 150. From the first cycle, the modified round function module outputs the result obtained by executing AddRoundKey transformation, InvSubBytes transformation, InvShiftRows transformation, and MixColumns transformation on the result of the previous cycle. In the ninth cycle T26 to T27, the modified round function module outputs the result obtained by executing AddRoundKey transformation, InvSubBytes transformation, InvShiftRows transformation, and AddRoundKey transformation.

전술한 방법으로 선택 신호(171, 170)를 제어함으로써 변형된 라운드 기능 모듈(205)은 도 30에 도시된 바와 같이 복호화를 실행할 수 있다.By controlling the selection signals 171 and 170 in the above-described manner, the modified round function module 205 can execute decoding as shown in FIG.

한편, 키 확장부(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 key expansion unit 202 outputs wkey10 as the round key A 162 and wkey0 as the round key B 163 after the key preparation period. Therefore, wkey10 is supplied to the modified round function module 205 at the start of decryption (T17). Upon detecting the start of decryption on the basis of the encryption / decryption start signal 158 (T17), the key expansion unit 202 generates wkey9 'using wkey10 held in the round key A register, and generates a round key A register. Keep wkey9 '. Thus, wkey9 'is supplied to the modified round function module 202 at T18. Round keys are supplied in the same way up to timing T26. At timing T26, two round keys wkey1 'and wkey0 serving as round key B 163 are supplied. When wkey1 'is held in the round key A register and the round key supply is terminated at T26 (T26), the key expansion unit 202 loads wkey10 held in the internal register of the key expansion unit into the round key A register, and then decrypts it. To start (T27).

전술한 바와 같이 키 확장부(202)가 동작하는 때에, 변형된 라운드 기능 모듈(205)은 도 30에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.When the key extension 202 is operating as described above, the modified round function module 205 may use the round key in each cycle as shown in FIG.

제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 AES Core 231 executes AES processing. The key expansion unit 232 generates a round key for AES encryption and decryption from the encryption key and outputs the round key. The encryption / decryption unit 233 performs encryption of 128-bit plain text data or decryption of 128-bit cipher text data using the round key supplied from the key expansion unit 232. The control unit 234 receives a control signal from a unit outside the AES core 231 to control signals of the key expansion unit 232 and the encryption / decryption unit 233 and the outside of the AES core 231. Generate a signal to notify the unit of completion of the operation.

도 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 / decryption unit 233 will be described. 39 is a block diagram of the encryption / decryption unit 233. Referring to FIG. 39, the modified round function module 235 uses the round key A 162 and the round key B 163 under the control of the selection signals 170 and 175 and the encryption / decryption selection signal 153. Encrypt or decrypt for one cycle.

상기 구성에 있어서, 선택 신호(171)가 니게이트되는 때에, 암호화/복호화부(233)의 선택기(109)는 입력 신호(150)를 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다.In the above configuration, when the selection signal 171 is negated, the selector 109 of the encryption / decryption section 233 selects the input signal 150. When the selection signal 171 is asserted, the selector 109 selects the output of the data holding unit 108.

도 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 round function module 235 will be described. 40 is a block diagram of a modified round function module 235. Referring to FIG. 40, the AddRoundKey conversion module 114 receives an input signal 165 and a round key B 163 and performs AddRoundKey conversion. The selector 137 selects one of the input signal 165 and the output of the AddRoundKey conversion module 114 according to the selection signal 175. The SubBytes / InvSubBytes conversion module 222 receives the output of the selector 137 and executes one of SubBytes conversion and InvSubBytes conversion according to the encryption / decryption selection signal 153. The ShiftRows / InvShifRows conversion module 223 receives the output of the SubBytes / InvSubBytets conversion module 222 and executes one of the ShiftRows conversion and the InvShiftRows conversion according to the encryption / decryption selection signal 153. The MixColumns / InvMixColumn conversion module 224 receives the output of the ShiftRows / InvShiftRows conversion module 223 and executes either MixColumns or InvMixColumns conversion according to the encryption / decryption selection signal 153. The selector 115 selects and outputs one of the output of the MixColumns / InvMixColumns conversion module 224 and the output of the ShiftRows / InvShiftRows conversion module 223 according to the selection signal 170. The AddRoundKey conversion module 110 receives the output of the selector 115 and the round key A 162 to perform AddRoundKey conversion. The output signal of the AddRoundKey conversion module 110 is the output signal of the modified round function module 235.

상기 구성에 있어서, 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 MixColumns/InvMixColumns 변환 모듈(224)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 ShiftRows/InvShiftRows 변환 모듈(223)의 출력을 선택하여 출력한다. 선택 신호(175)가 니게이트되는 때에, 선택기(137)는 입력 신호(165)를 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(137)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다.In the above configuration, when the selection signal 170 is negated, the selector 115 selects and outputs the output of the MixColumns / InvMixColumns conversion module 224. When the selection signal 170 is asserted, the selector 115 selects and outputs the output of the ShiftRows / InvShiftRows conversion module 223. When select signal 175 is negated, selector 137 selects and outputs input signal 165. When the selection signal 175 is asserted, the selector 137 selects and outputs the output of the AddRoundKey conversion module 114.

도 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 control unit 234 asserts the selection signal 175 at the end of encryption T16 and negates it in the first cycle T18 or T28 of encryption. The control unit 234 also asserts the selection signal 170 in the final cycle of encryption T16 and negates it at the end of encryption (T17). The control unit 234 also asserts the selection signal 171 in the first cycle of encryption and negates it at the end of encryption.

회로 구성에 대하여 설명한 바와 같이, 선택 신호(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 selection signal 171 is negated, the selector 109 selects the input signal 150. When the selection signal 171 is asserted, the selector 109 selects the output of the data holding unit 108. When select signal 170 is negated, selector 115 selects and outputs the output of input signal 165. When the selection signal 170 is asserted, the selector 115 selects and outputs the result of the AddRoundKey conversion module 114. When the select signal 175 is negated, the selector 137 selects and outputs the result of the MixClolumns / InvMixColumns conversion module 224. When the selection signal 175 is asserted, the selector 137 selects and outputs the result of the ShiftRows / InvShiftRows conversion module 223. When the encryption / decryption selection signal 153 is negated, the SubBytets / InvSubBytes conversion module 222, the ShiftRows / InvShifRows conversion module 223, and the MixColumns / InvMixColumns conversion module 224 perform SubBytes conversion, ShiftRows conversion, and MixColumns. Run each transformation. When the encryption / decryption selection signal 153 is asserted, they perform InvSubBytes transformation, InvShiftRows transformation, and InvMixColumns transformation, respectively.

따라서, 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 round function module 235 performs AddRoundKey transformation, SubBytets transformation, ShiftRows transformation, MixColumns transformation, and AddRoundKey transformation on the input signal 150. From the first cycle, the modified round function module outputs the result obtained by performing SubBytes transformation, ShiftRows transformation, MixColumns transformation, and AddRoundKey transformation on the result of the previous cycle. In the ninth cycle (T26 to T27), the modified round function module outputs the result obtained by executing the SubBytes transformation, the ShiftRows transformation, and the AddRoundKey transformation.

변형된 라운드 기능 모듈(235)은 상기 방법으로 선택 신호(171, 170, 및 175)를 제어함으로써 도 36에 도시된 바와 같이 암호화를 실행할 수 있다.The modified round function module 235 can execute encryption as shown in FIG. 36 by controlling the selection signals 171, 170, and 175 in this manner.

한편, 키 확장부(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 key expansion unit 232 outputs wkey1 as the round key A 162 and wkey0 as the round key B 163 after the key preparation period. Therefore, wkey0 and wkey1 are supplied to the modified round function module 235 at the start of encryption (T17). Upon detecting the start of encryption based on the encryption / decryption start signal 158 (T17), the key expansion unit 232 generates wkey2 using wkey1 held in the round key A register, and wkey2 in the round key A register. Keep it. Therefore, wkey2 is supplied to the modified round function module 235 at timing T18. Round keys are supplied in the same way up to timing T26. When wkey10 is maintained in the round key A register and the round key supply is terminated at timing T26, the key expansion unit 232 generates wkey1 using wkey0 supplied externally as the encryption key 152, and wkey1 is selected. Holding in the round key A register prepares the next encryption start (T27).

전술한 바와 같이 키 확장부(232)가 동작하는 때에, 변형된 라운드 기능 모듈(235)은 도 36에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.As described above, when the key extension 232 is operated, the modified round function module 235 may use the round key in each cycle as shown in FIG.

제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 / decryption selection signal 153 is asserted.

키 준비 기간은 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 key expansion unit 232 at the T16 timing and the operation of the key expansion unit 232 and the control unit 234 at the T17 timing are different from those in the encryption, and will be described below.

타이밍 T16에서, 키 확장부(232)는 라운드 키 B(163)로서 wkey10를, 라운드 키 A(162)로서 wkey10을 출력한다. 타이밍 T16에서, 키 확장부(232)는 wkey10으로부터 역으로 키 확장을 수행하여, 변형된 복호화 키 wkey9'을 생성한다.At timing T16, the key expansion section 232 outputs wkey10 as the round key B 163 and wkey10 as the round key A 162. At timing T16, the key expansion unit 232 performs key expansion inverse from wkey10 to generate the modified decryption key wkey9 '.

타이밍 T17에서, 키 확장부(232)는 라운드 키 A(162)로서 wkey9'을 출력한다. 제어부(234)는 선택 신호(175)를 어서트시킨다.At timing T17, the key expansion section 232 outputs wkey9 'as the round key A 162. The controller 234 asserts the selection signal 175.

키 준비 기간(T17)의 종료 시, 제어부(234)는 선택 신호(175)를 어서트시킨 다.At the end of the key preparation period T17, the control unit 234 asserts the selection signal 175.

제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 control unit 234 asserts the selection signal 170 in the final cycle T16 of decryption and negates the first cycle T18 or T28 of decryption. The control unit 234 also asserts the selection signal 175 at the end of decoding (T17) and negates it at the end of decoding (T17). The control unit 234 also asserts the selection signal 171 in the first cycle of decryption and negates it at the end of decryption.

회로 구성에 대하여 설명한 바와 같이, 선택 신호(171)가 니게이트되는 때에, 선택기(109)가 입력 신호(150)을 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다. As described with respect to the circuit configuration, when the selection signal 171 is gated, the selector 109 selects the input signal 150. When the selection signal 171 is asserted, the selector 109 selects the output of the data holding unit 108.

선택 신호(175)가 니게이트되는 때에, 선택기(137)는 입력 입력 신호(165)를 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(137)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다. 선택 신호(170)가 니게이트되는 때에, 선택기(115)는 MixColumns/InvMixColumns 변환 모듈(224)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 ShiftRows/InvShiftRows 변환 모듈(223)의 출력을 선택하여 출력한다.When select signal 175 is negated, selector 137 selects and outputs input input signal 165. When the selection signal 175 is asserted, the selector 137 selects and outputs the output of the AddRoundKey conversion module 114. When select signal 170 is negated, selector 115 selects and outputs the output of MixColumns / InvMixColumns conversion module 224. When the selection signal 170 is asserted, the selector 115 selects and outputs the output of the ShiftRows / InvShiftRows conversion module 223.

따라서, 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 round function module 235 performs AddRoundKey transformation, InvShiftRows transformation, InvSubBytes transformation, AddRoundKey transformation, and InvMixColumns transformation on the input signal 150. From the first cycle, the modified round function module outputs the result obtained by executing InvShiftRows transformation, InvSubBytes transformation, AddRoundKey transformation, and InvMixColumns transformation on the result of the previous cycle. In the ninth cycle T26 to T27, the modified round function module outputs the result obtained by executing the InvShiftRows transformation, the InvSubBytes transformation, and the AddRoundKey transformation.

전술한 방법으로 선택 신호(171, 170, 및 175)를 제어함으로써 변형된 라운드 기능 모듈(235)은 도 36에 도시된 바와 같이 복호화를 실행할 수 있다.By controlling the selection signals 171, 170, and 175 in the above-described manner, the modified round function module 235 can perform decryption as shown in FIG. 36.

한편, 키 확장부(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 key expansion unit 232 outputs wkey9 'as the round key A 162 and wkey10 as the round key B 163 after the key preparation period. Therefore, wkey10 and wkey9 'are supplied to the modified round function module 235 at the start of decryption (T17). Upon detecting the start of decryption based on the encryption / decryption start signal 158 (T17), the key expansion unit 232 generates wkey8 'using wkey9' held in the round key A register, and round key A register. Keep wkey8 ' Thus, wkey8 'is supplied to the modified round function module 235 at T18. Round keys are supplied in the same way up to T26. When wkey0 is held in the round key A register and the round key supply is terminated at T26, the key expansion unit 232 generates wkey9 'using wkey10 held in the round key B register, and converts wkey9' to the round key A register. In the next step, the next decoding start T27 is prepared.

전술한 바와 같이 키 확장부(232)가 동작하는 때에, 변형된 라운드 기능 모듈(235)은 도 36에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.As described above, when the key extension 232 is operated, the modified round function module 235 may use the round key in each cycle as shown in FIG.

제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 AES Core 241 executes AES processing. The key expansion unit 242 generates a round key for AES encryption and decryption from the encryption key and outputs the round key. The encryption / decryption section 243 performs encryption of 128-bit plain text data or decryption of 128-bit cipher text data using the round key supplied from the key expansion section 242. The control unit 244 receives a control signal from a unit external to the AES core 241, and controls signals of the key expansion unit 242 and the encryption / decryption unit 243 and external to the AES core 241. Generate a signal to notify the unit of completion of the operation.

도 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 / decryption unit 243 will be described. 45 is a block diagram of an encryption / decryption unit 243. Referring to FIG. 45, the modified round function module 245 uses the round key A 162 and the round key B 163 under the control of the selection signals 170 and 175 and the encryption / decryption selection signal 153. Encrypt or decrypt for one cycle.

상기 구성에 있어서, 선택 신호(171)가 니게이트되는 때에, 암호화/복호화부(243)의 선택기(109)는 입력 신호(150)를 선택한다. 선택 신호(171)가 어서트되는 때에, 선택기(109)는 데이터 유지부(108)의 출력을 선택한다.In the above configuration, when the selection signal 171 is negated, the selector 109 of the encryption / decryption section 243 selects the input signal 150. When the selection signal 171 is asserted, the selector 109 selects the output of the data holding unit 108.

도 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 round function module 245 will be described with reference to FIG. 46. Referring to FIG. 46, an input signal 165 and an encryption / decryption selection signal 153 are input to the MixColumns / InvMixColumns conversion module 224. An output of the MixColumns / InvMixColumns conversion module 224, an input signal 165, and a selection signal 175 are input to the selector 137. The output of the selector 137 and the round key A 162 are input to the AddRoundKey conversion module 110. The output of the AddRoundKey conversion module 110 is input to the SubBytes / InvSubBytes conversion module 222. The output of the SubBytes / InvSubBytes conversion module 22 is input to the ShiftRows / InvShiftRows conversion module 223. The output of the ShiftRows / InvShiftRows conversion module 223 and the round key B 163 are input to the AddRoundKey conversion module 114. The output of the ShiftRows / InvShiftRows conversion module 223, the output of the AddRoundKey conversion module 114, and the selection signal 170 are input to the selector 115. The output of the selector 115 is connected to the output signal 168 from the modified round function module 245. The components and signal lines of FIG. 46 are the same as described in the first, fourth, and fifth embodiments, and description thereof is omitted.

상기 구성에 있어서, 선택 신호(175)가 니게이트되는 때에, 선택기(137)는 MixColumns/InvMixColumns 변환 모듈(224)의 출력을 선택하여 출력한다. 선택 신호(175)가 어서트되는 때에, 선택기(137)는 입력 신호(165)를 선택하여 출력한다. 선택 신호(170)가 니게이트 되는 때에, 선택기(115)는 ShiftRows/InvShiftRows 변환 모듈(223)의 출력을 선택하여 출력한다. 선택 신호(170)가 어서트되는 때에, 선택기(115)는 AddRoundKey 변환 모듈(114)의 출력을 선택하여 출력한다.In the above configuration, when the selection signal 175 is negated, the selector 137 selects and outputs the output of the MixColumns / InvMixColumns conversion module 224. When the selection signal 175 is asserted, the selector 137 selects and outputs an input signal 165. When the selection signal 170 is negated, the selector 115 selects and outputs the output of the ShiftRows / InvShiftRows conversion module 223. When the selection signal 170 is asserted, the selector 115 selects and outputs the output of the AddRoundKey conversion module 114.

도 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 control unit 244 asserts the selection signal 175 at the end of encryption (T16) and negates it in the first cycle (T18 or T28) of encryption. The control unit 244 also asserts the selection signal 170 in the final cycle of encryption T16 and negates it at the end of encryption (T17). The control unit 244 also asserts the selection signal 171 in the first cycle of encryption and negates it at the end of encryption.

회로 구성에 대하여 설명한 바와 같이, 선택 신호(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 selection signal 171 is negated, the selector 109 selects the input signal 150. When the selection signal 171 is asserted, the selector 109 selects the output of the data holding unit 108. When the selection signal 170 is negated, the selector 115 selects and outputs the output of the ShiftRows / InvShiftRows conversion module 223. When the selection signal 170 is asserted, the selector 115 selects and outputs the result of the AddRoundKey conversion module 114. When the select signal 175 is negated, the selector 137 selects and outputs the result of the MixClolumns / InvMixColumns conversion module 224. When the selection signal 175 is asserted, the selector 137 selects and outputs an input signal 165. When the encryption / decryption selection signal 153 is negated, the SubBytets / InvSubBytes conversion module 222, the ShiftRows / InvShifRows conversion module 223, and the MixColumns / InvMixColumns conversion module 224 perform SubBytes conversion, ShiftRows conversion, and MixColumns. Run each transformation. When the encryption / decryption selection signal 153 is asserted, they perform InvSubBytes transformation, InvShiftRows transformation, and InvMixColumns transformation, respectively.

따라서, 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 round function module 245 performs AddRoundKey transformation, SubBytets transformation, and ShiftRows transformation on the input signal 150. From the first cycle, the modified round function module outputs the result obtained by performing SubBytes transformation, ShiftRows transformation, MixColumns transformation, and AddRoundKey transformation on the result of the previous cycle. In the ninth cycle (T26 to T27), the modified round function module outputs the result obtained by executing the MixColumns transformation, AddRoundKey transformation, SubBytes transformation, ShiftRows transformation, and AddRoundKey transformation.

변형된 라운드 기능 모듈(245)은 상기 방법으로 선택 신호(171, 170, 및 175)를 제어함으로써 도 42에 도시된 바와 같이 암호화를 실행할 수 있다.The modified round function module 245 can execute encryption as shown in FIG. 42 by controlling the selection signals 171, 170, and 175 in this manner.

한편, 키 확장부(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 key expansion unit 242 outputs wkey0 as the round key A 162 and wkey10 as the round key B 163 after the key preparation period. Therefore, wkey0 is supplied to the modified round function module 245 at the start of encryption (T17). Upon detecting the start of encryption based on the encryption / decryption start signal 158 (T17), the key expansion unit 242 generates wkey1 using wkey0 held in the round key A register, and wkey1 in the round key A register. Keep it. Therefore, wkey1 is supplied to the modified round function module 245 at timing T18. Round keys are supplied in the same way up to timing T26. At timing T26, wkey10 also serving as round key B 163 is also supplied. When wkey0 is maintained in the round key A register and the round key supply is terminated at timing T26, the key expansion unit 242 keeps wkey0 supplied externally as the encryption key 152 in the round key A register, and then encrypts. To start (T27).

전술한 바와 같이 키 확장부(242)가 동작하는 때에, 변형된 라운드 기능 모듈(245)은 도 42에 도시된 바와 같이 각 사이클에서 라운드 키를 사용할 수 있다.As described above, when the key extension 242 operates, the modified round function module 245 may use the round key in each cycle as shown in FIG.

제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 / decryption selection signal 153 is asserted. 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, at timing T16, wkey10 is output as the round key B 163. At the end of the key preparation period T17, the control unit 244 asserts the selection signal 175.

제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 control unit 244 asserts the selection signal 170 in the final cycle T16 of decoding and negates it in the first cycle T18 or T28 of decoding. The control unit 244 also asserts the selection signal 175 at the end of decoding (T17) and negates it at the end of decoding (T17). The control unit 244 also asserts the selection signal 171 in the first cycle of decryption and negates it at the end of decryption.

회로 구성에 대하여 설명한 바와 같이, 선택 신호(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 selection signal 171 is gated, the selector 109 selects the input signal 150. When select signal 171 is asserted, selector 109 selects the output of data retainer 108. When select signal 175 is negated, selector 137 selects and outputs the output of MixColumns / InvMixColumns conversion module 224. When the selection signal 175 is asserted, the selector 137 selects and outputs an input signal 165. When the selection signal 170 is negated, the selector 115 selects and outputs the output of the ShiftRows / InvShiftRows conversion module 223. When the selection signal 170 is asserted, the selector 115 selects and outputs the output of the AddRoundKey conversion module 114.

따라서, 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 round function module 245 performs AddRoundKey transformation, InvShiftRows transformation, and InvSubBytes transformation on the input signal 150. From the first cycle, the modified round function module outputs the result obtained by executing AddRoundKey transformation, InvMixColumns transformation, InvShiftRows transformation, and InvSubBytes transformation on the result of the previous cycle. In the ninth cycle (T26 to T27), the modified round function module outputs the result obtained by executing AddRoundKey transformation, InvMixColumns transformation, InvShiftRows transformation, InvSubBytes transformation, and AddRoundKey transformation.

전술한 방법으로 선택 신호(171, 170, 및 175)를 제어함으로써 변형된 라운드 기능 모듈(245)은 도 42에 도시된 바와 같이 복호화를 실행할 수 있다.By controlling the selection signals 171, 170, and 175 in the above-described manner, the modified round function module 245 can execute decryption as shown in FIG. 42.

한편, 키 확장부(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 key expansion unit 242 outputs wkey10 as the round key A 162 and wkey0 as the round key B 163 after the key preparation period. Therefore, wkey10 is supplied to the modified round function module 245 at the start of decryption (T17). Upon detecting the start of decryption based on the encryption / decryption start signal 158 (T17), the key expansion unit 242 generates wkey9 'using wkey10' held in the round key A register, and round key A register. Keep wkey9 'on Thus, wkey9 'is supplied to the modified round function module 245 at T18. In the same way, wkey9 'is supplied at T19, wkey8' is supplied at T20, and wkey1 'is supplied at T26. The wkey0 necessary for the processing of the last cycle continues to be supplied as the round key B 163.

T26에서 라운드 키 공급이 종료되는 때에, 키 확장부(242)는 키 확장부(242)의 내부 레지스터에 유지되는 wkey10을 이용하여 wkey9'을 생성하고, 다음 사이클(T27)에서 라운드 키 A 레지스터에 wkey9'을 유지하여, 다음 복호화의 개시를 준비한다.When the round key supply ends at T26, the key expansion unit 242 generates wkey9 'using wkey10 held in the internal register of the key expansion unit 242, and in the next cycle T27 to the round key A register. Hold wkey9 'and prepare to start the next decryption.

제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, AES Core 401 executes AES processing. The key expansion unit 402 generates and outputs a round key for AES encryption and decryption from the encryption key. The encryption / decryption section 403 performs encryption of 128-bit plain text data or decryption of 128-bit cipher text data using the round key supplied from the key expansion section 402. The control unit 404 receives a control signal from a unit external to the AES core 401 to control signals of the key expansion unit 402 and the encryption / decryption unit 403 and external to the AES core 401. Generate a signal to notify the unit of completion of the operation.

도 52를 참조하면, 라운드 키 A1(462)은 키 확장부(402)에 의해 생성되는 라운드 키들 중 하나이다. 라운드 키 A2(463)는 키 확장부(402)에 의해 생성되는 라운드 키 중 하나이다.Referring to FIG. 52, the round key A1 462 is one of the round keys generated by the key extension 402. Round key A2 463 is one of the round keys generated by key extension 402.

도 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 key A1 462 is input to the encryption / decryption unit 403 from the key expansion unit 402, and the round key A2 463 is encrypted / decryption unit 403 from the key expansion unit 402. ) Is entered.

다음, 암호화/복호화부(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 / decryption unit 403 will be described. 53 is a block diagram of the encryption / decryption unit 403. Referring to FIG. 53, the modified round function module 405 executes encryption using the round key A1 462. The modified round function module 407 performs encryption using the round key A2 463 and the round key B 163 under the control of the selection signal 170. The modified round function module 406 performs decryption using the round key A1 462 and the round key B 163 under the control of the selection signal 170. The modified round function module 408 executes decryption using the round key A2 463.

도 53을 참조하면, 변형된 라운드 기능 모듈(407)은 입력 신호(475)를 수신한다. 변형된 라운드 기능 모듈(408)은 입력 신호(476)를 수신한다. 도 53의 구 성요소들과 신호 라인들에는 제1 실시예와 동일한 참조번호가 지칭되어 있으며, 그 설명은 생략한다.Referring to FIG. 53, the modified round function module 407 receives an input signal 475. Modified round function module 408 receives input signal 476. Components and signal lines of FIG. 53 are referred to with the same reference numerals as in the first embodiment, and description thereof is omitted.

도 54a는 변형된 라운드 기능 모듈(405)의 블록도이다. 도 54b는 변형된 라운드 기능 모듈(407)의 블록도이다.54A is a block diagram of a modified round function module 405. 54B is a block diagram of a modified round function module 407.

도 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 round function module 405 will be described with reference to FIG. 54A. Referring to FIG. 54A, the AddRoundKey conversion module 110 receives an input signal 165 and a round key A1 462 to perform AddRoundKey conversion. The SubBytes conversion module 111 receives the output of the AddRoundKey conversion module 110 and performs SubBytes conversion. The ShiftRows conversion module 112 receives the output of the SubBytes conversion module 111 and executes ShiftRows conversion. The MixColumns conversion module 113 receives the output of the ShiftRows conversion module 112 and executes MixColumns conversion. The output signal of the MixColumns transformation module 113 is the output of the modified round function module 405.

도 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 round function module 407 will be described with reference to FIG. 54B. Referring to FIG. 54B, the AddRoundKey conversion module 110 receives an input signal 475 and a round key A2 463 to execute AddRoundKey conversion. The SubBytes conversion module 111 receives the output of the AddRoundKey conversion module 110 and performs SubBytes conversion. The ShiftRows conversion module 112 receives the output of the SubBytes conversion module 111 and executes ShiftRows conversion. The MixColumns conversion module 113 receives the output of the ShiftRows conversion module 112 and executes MixColumns conversion. The AddRoundKey conversion module 114 receives the output of the ShiftRows conversion module 112 and the round key B 163 to execute AddRoundKey conversion. The selector 115 selects and outputs one of the output of the MixColumns conversion module 113 and the output of the AddRoundKey conversion module 114 according to the selection signal 170. The output signal of the selector 115 is the output of the modified round function module 407.

여기서, 전술한 변환들의 명칭은 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 selection signal 170 is negated, the selector 115 selects and outputs the output of the MixColumns conversion module 113. When the selection signal 170 is asserted, the selector 115 selects and outputs the output of the AddRoundKey conversion module 114.

다음, 도 55a 및 도 55b를 참조하여, 변형된 라운드 기능 모듈(406 및 408)에 대하여 설명한다. 도 55a는 변형된 라운드 기능 모듈(406)의 블록도이다.Next, the modified round function modules 406 and 408 will be described with reference to FIGS. 55A and 55B. 55A is a block diagram of a modified round function module 406.

도 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 InvMixColumns transformation module 116 receives an input signal 165 and performs InvMixColumns transformation. The AddRoundKey conversion module 121 receives the input signal 165 and the round key B 163 and performs AddRoundKey conversion. The selector 118 selects and outputs one of an output of the InvMixColumns conversion module 116 and an AddRoundKey conversion module 121 according to the selection signal 170. The InvShiftRows transformation module 119 receives the output of the selector 118 and executes InvShiftRows transformation. The InvSubBytes conversion module 120 receives the output of the InvShiftRow conversion module 119 and performs InvSubBytes conversion. The AddRoundKey conversion module 117 receives the output of the InvSubBytes conversion module 120 and the round key A1 462 to execute AddRoundKey conversion. The output of the AddRoundKey conversion module 117 is the output of the modified round function module 406.

여기서, 상기 변환의 명칭들은 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 selection signal 170 is negated, the selector 118 selects and outputs the result of the InvMixColumns conversion module 116. When the selection signal 170 is asserted, the selector 118 selects and outputs the output of the AddRoundKey conversion module 121.

다음, 도 55b의 블록도를 참조하여 변형된 라운드 기능 모듈(408)에 대하여 설명한다.Next, the modified round function module 408 will be described with reference to the block diagram of FIG. 55B.

도 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 InvMixColumns transformation module 116 receives an input signal 476 and performs InvMixColumns transformation. The InvShiftRows conversion module 119 receives the output of the InvMixColumns conversion module 116 and executes InvShiftRows conversion. The InSubBytes conversion module 120 receives the output of the InvShiftRows conversion module 119 and executes InvSubBytes conversion. The AddRoundKey conversion module 117 receives the output of the InvSubBytes conversion module 120 and the round key A2 463 to execute AddRoundKey conversion. The output of the AddRoundKey conversion module 117 is the output of the modified round function module 408.

여기서, 상기 변환의 명칭들은 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 encryption key 152 and the encryption / decryption selection signal 153, various parameters for encryption / decryption such as key length and encryption mode are set as necessary. The parameter setting period is a period having an arbitrary length immediately after reset. When the key preparation start signal 155 is asserted from a unit external to the AES core 401 (T06), the parameter setting period ends.

파라미터 설정 기간의 종료와 동시에, 다음 키 준비 기간이 개시된다. 키 준비 기간에서, 키 확장부는 미리 라운드 키를 생성한다. 키 준비 기간은 키 준비 개시 신호(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 preparation start signal 155 is asserted (T06) to the timing T12 after six cycles in which the last round key wkey10 is generated.

다음, 키 준비 기간 동안 각 회로의 동작에 대하여 설명한다. 키 확장 부(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 key expansion unit 402 generates wkey1 using wkey0 as the encryption key 152 already in the key preparation period. At the same time as the key preparation start signal 155 is asserted, wkey1 is held in the register of the round key A2 463 and output. As the key preparation start signal 155 is asserted, the controller 404 counts up the counter signal 161 in order from zero. At T07, key extension 402 performs key expansion using wkey1 held as round key A2 463 to generate wkey2 and wkey3, and round them to round key A1 462 and round key A2 463. As output. In the next cycle T08, the key extension generates wkey4 and wkey5 using wkey3 output as round key A2 463, and outputs them as round key A1 462 and round key A2 463, respectively. As the round key A1 462 and the round key A2 463, the round keys are generated in the same manner so that wkey6 and wkey7 at timing T09 and wkey8 and wkey9 are output at timing T10, respectively. At timing T11, the key expansion unit 402 generates wkey10 using wkey9 output as the round key A2 463, and outputs wkey10 as the round key B 163. Thereafter, wkey10 continues to be output as the round key B 163 until key preparation is executed again.

키 준비 기간의 종료 시(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 key expansion unit 402 generates wkey1 using wkey0 supplied as the encryption key 152, and encrypts it as the round key A1 462 and the round key A2 463, respectively. Print the first round keys wkey0 and wkey1 to be used for / decryption. The values of the round key A1 462 and the round key A2 463 are maintained until the encryption / decryption start signal 158 is asserted. The control unit 404 stops counting up the counter signal 161 and clears the counter to zero.

키 준비 기간의 종료 부근에서, 더 구체적으로, 키 준비 개시 후 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 control unit 404 anticipates that the encryption is valid, and the control unit 404 controls the control signal. Assert (157).

타이밍 T12에서 제어 신호(157)가 어서트된 것을 감지하면, AES 코어(401) 외부에 배치된 입력 신호 공급부는 입력 신호(150)로서 평문 데이터(P0)를 AES 코어(401)에 공급한다. 입력 신호(150)의 암호화를 개시하기 위하여 암호화/복호화 개시 신호(158)가 어서트된다(T12). 타이밍 차트에 있어서, 암호화/복호화 개시 신호(158)는 최단 사이클에 어서트된다. 그러나, 타이밍은 AES 코어(401) 외부에서 자유롭게 결정된다.When the control signal 157 is detected at timing T12, the input signal supply unit disposed outside the AES core 401 supplies the plain text data P0 to the AES core 401 as the input signal 150. The encryption / decryption start signal 158 is asserted (T12) to initiate encryption of the input signal 150. In the timing chart, the encryption / decryption start signal 158 is asserted in the shortest cycle. However, the timing is freely determined outside the AES core 401.

암호화 기간에서, 입력 신호(150)가 암호화된다. 암호화 기간은 암호화/복호화 개시 신호(158)가 어서트되는 때(T12)로부터 5개 사이클 이후의 타이밍(T17)까지의 기간이다.In the encryption period, the input signal 150 is encrypted. The encryption period is a period from when the encryption / decryption start signal 158 is asserted (T12) to a timing T17 five cycles later.

암호화/복호화 개시 신호(158)가 어서트된 것을 감지하면, 제어부(404)는 다음 사이클(T13)에서 제어 신호(157), 유효 신호(159), 및 출력 유지 제어 신호(160)를 니게이트시킨다. 동시에, 제어부(404)는 카운터 신호(161)를 카운트 업하기 시작한다.Upon detecting that the encryption / decryption start signal 158 is asserted, the control unit 404 negates the control signal 157, the valid signal 159, and the output holding control signal 160 in the next cycle T13. Let's do it. At the same time, the control unit 404 starts to count up the counter signal 161.

키 확장부(402)는 키 준비 기간에서와 같이 라운드 키를 생성하여, 라운드 키 A1(462)로서, 타이밍 T12에서 wkey0, 타이밍 T13에서 wkey2, ..., 타이밍 T16에서 wkey8을 출력한다. 키 확장부(402)는 라운드 키 A2(463)로서, 타이밍 T12에서 wkey1, 타이밍 T13에서 wkey3, ..., 타이밍 T16에서 wkey9을 출력한다.The key expansion unit 402 generates a round key as in the key preparation period, and outputs wkey0 at the timing T12, wkey2 at the timing T13, ... wkey8 at the timing T16 as the round key A1 462. The key expansion unit 402 outputs wkey1 at the timing T12, wkey3 at the timing T13, ... wkey9 at the timing T16 as the round key A2 463. As shown in FIG.

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 select signal 171 is negated. Therefore, the modified round function module 405 performs subblock conversion on the input signal 150 using wkey0 output as the round key A1. From T13 to T17, the selection signal 171 is asserted. Therefore, the modified round function module 405 performs subblock conversion using wkey2 from T13 to T14, wkey4 from T14 to T15, and wkey6 from T15 to T16 with respect to the output signal of the data holding unit 108. Run

한편, 변형된 라운드 기능 모듈(407)은 입력 신호(475)에 대하여 T12 내지 T13에서 wkey1, T13 내지 T14에서 wkey3, T14 내지 T15에서 wkey5, ..., 및 T15 내지 T16에서 wkey7을 이용하여 서브블록 변환을 실행한다.On the other hand, the modified round function module 407 serves the input signal 475 using wkey1 at T12 to T13, wkey3 at T13 to T14, wkey5 at T14 to T15, ..., and wkey7 at T15 to T16. Perform a block transform.

암호화의 최종 사이클(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 control unit 404 asserts the selection signal 170. Accordingly, the selector 115 of the modified round function module 407 selects and outputs the output of the AddRoundKey conversion module 114 that executes the AddRoundKey conversion using the round key B 163 to convert the subblock of the final cycle. Is executed. At T16, the output signal 166 of the modified round function module 407 outputs the ciphertext data C0 that is the result of the encryption of the plain text data P0 as an input signal. After one cycle (T17), the data holding unit 108 outputs the value of the ciphertext data C0 to the outside as the output of the AES core 401. At the same time, the control unit 404 asserts the valid signal 159 in order to notify that the unit outside the AES core 401 is encrypted and the output signal 151 is valid (T17). While the valid signal 159 is asserted, the AES core 401 ensures that the output signal 151 is valid.

한편, 제어 신호(160)는, T17에서 유효 신호(159)가 어서트되어 있지만, T17에서 암호화/복호화 개시 신호(158) 또한 어서트되어 있기 때문에, 니게이트로 유지된다. 암호화/복호화 개시 신호(158)가 T17에서 어서트되지 않으면, 제어 신호(160)가 T17에서 어서트되고, 데이터 유지부(108)의 값은 암호문 데이터(C0)를 유지한다.On the other hand, the control signal 160 remains asserted because the valid signal 159 is asserted at T17, but the encryption / decryption start signal 158 is also asserted at T17. If the encryption / decryption start signal 158 is not asserted at T17, the control signal 160 is asserted at T17, and the value of the data holding unit 108 holds the ciphertext data C0.

암호화가 종료하는 T17에서, 키 확장부(402)는 라운드 키 A1(462)로서 wkey0및 라운드 키 A2(463)로서 wkey1를 출력한다. 라운드 키 A1(462)과 라운드 키 A2(463)의 값은 다음의 암호화/복호화 개시 신호(156)가 어서트될 때까지 유지된다.At T17 when the encryption ends, the key expansion unit 402 outputs wkey0 as the round key A1 462 and wkey1 as the round key A2 463. The values of the round key A1 462 and the round key A2 463 are maintained until the next encryption / decryption start signal 156 is asserted.

암호화의 종료를 예측하여(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 control unit 404 asserts the control signal 157 before the completion of the cycle (T16). When the control signal 157 is asserted, a unit outside the AES core 401 sets the value of the input signal 150 to the next plain text data P1 so that encryption of the second block can start. . In the timing charts of FIGS. 56A and 56B, the external unit of the AES core 401 asserts the next encryption / decryption start signal in the shortest cycle T17. The second block encryption period is from T17 to T22, and the same operation as that of the first block is performed. Thereafter, the encryption operation is repeatedly performed for a predetermined number of blocks. In the timing charts of Figs. 56A and 56B, encryption of the second block is started at the shortest interval from the end of encryption of the first block. The AES core can achieve 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.

다음, 제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 / decryption selection signal 153 is asserted.

키 준비 기간은 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 key expansion unit 402 performs key expansion inversely using wkey10 held as the round key B 163, and round key A1 462 and round key, respectively. As A2 463, the first round keys wkey9 and wkey8 to be used in decryption are output. The values of the round key A1 462 and the round key A2 463 are maintained until the encryption / decryption start signal 158 is asserted. The control unit 404 stops counting up the counter signal 161 and clears the counter to zero.

키 준비 기간 부근에서, 키 준비가 T12에서 종료되어, 복호화가 유효한 것을 예측하여, 제어부(404)는 T11에서 제어 신호(157)를 어서트시킨다.In the vicinity of the key preparation period, the key preparation is terminated at T12, and the control unit 404 asserts the control signal 157 at T11 in anticipation that the decryption is valid.

T12에서 제어 신호(157)가 어서트된 것을 감지하면, AES 코어(401) 외부에 배치된 입력 신호 공급부가 입력 신호(150)로서 AES 코어(401)에 대하여 암호문 데이터(C0)를 공급한다. 암호화/복호화 개시 신호(158)가 어서트되어, 입력 신호(150)의 복호화를 개시한다(T12). 타이밍 차트에 있어서, 암호화/복호화 개시 신호(158)는 최단 사이클에서 어서트된다. 그러나, AES 코어(401) 외부에서 타이밍이 자유롭게 결정된다.When the control signal 157 is detected at T12, the input signal supply unit disposed outside the AES core 401 supplies the ciphertext data C0 to the AES core 401 as the input signal 150. The encryption / decryption start signal 158 is asserted to start decrypting the input signal 150 (T12). In the timing chart, the encryption / decryption start signal 158 is asserted in the shortest cycle. However, the timing is freely determined outside the AES core 401.

복호화 기간에서, 입력 신호(150)가 복호화된다. 복호화 기간은 암호화/복호화 개시 신호(158)가 어서트되는 때부터 5개 사이클 이후의 타이밍(T17)까지의 기간이다.In the decoding period, the input signal 150 is decoded. The decryption period is a period from when the encryption / decryption start signal 158 is asserted to the timing T17 after five cycles.

암호화/복호화 개시 신호(158)가 어서트되는 것을 감지하면, 제어부(404)는 다음 사이클(T13)에서 제어 신호(157), 출력 유지 신호(159), 및 제어 신호(160)를 니게이트시킨다. 동시에, 제어부(404)는 카운터 신호(161)를 카운트 업하기 시작한다.Upon detecting that the encryption / decryption start signal 158 is asserted, the controller 404 negates the control signal 157, the output holding signal 159, and the control signal 160 in the next cycle T13. . At the same time, the control unit 404 starts to count up the counter signal 161.

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, key extension 402 performs key expansion using wkey8 held as round key A2 463 to generate wkey7 and wkey6 as round key A1 462 and round key A2 463, respectively. Output In the next cycle T14, the key extension generates wkey5 and wkey4 using wkey6 output as round key A2 463, and outputs them as round key A1 462 and round key A2 463, respectively. Round keys are generated in the same way, and wkey3 and wkey2 at T15 and wkey1 and wkey0 at T16 are output as round key A1 462 and round key A2 463, respectively.

복호화의 1번째 사이클(T12)에서, 제어부(404)는 선택 신호(171)를 니게이트시킨다. 따라서, 입력 신호(150)의 평문 데이터(P0)가 변형된 라운드 기능 모듈(406)에 입력된다. 선택 신호(170)가 어서트되므로, 변형된 라운드 기능 모듈(406)은 선택기(118)를 AddRoundKey 변환 모듈(121)의 출력을 선택하도록 절환시켜, 하나의 사이클의 복호화가 실행된다. 변형된 라운드 기능 모듈(406)의 출력은 변형된 라운드 기능 모듈(408)에 바로 입력되어, 또 하나의 사이클의 복호화가 실행된다. 변형된 라운드 기능 모듈(408)의 출력 결과는 데이터 유지부(108)에 유지된다.In the first cycle T12 of decoding, the control unit 404 negates the selection signal 171. Therefore, the plain text data P0 of the input signal 150 is input to the modified round function module 406. Since the selection signal 170 is asserted, the modified round function module 406 switches the selector 118 to select the output of the AddRoundKey conversion module 121, so that one cycle of decryption is executed. The output of the modified round function module 406 is directly input to the modified round function module 408 so that another cycle of decryption is executed. The output result of the modified round function module 408 is maintained in the data holding unit 108.

다음 사이클(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 control section 404 asserts the selection signal 171 so that the output of the data holding section is input to the modified round function module 406. Since the select signal 170 is negated, the modified round function module 406 switches the selector 118 to select the output of the InvMixColumns transform module 116, so that one cycle of decoding is performed. The output of the modified round function module 406 is directly input to the input of the modified round function module 408, so that another cycle of decryption is executed. The processing is performed in the same way up to T16. The modified round function module 406 uses wkey 10 and weky9 at T12, wkey7 at T13, wkey5 at T14, and wkey1 at T16 as round keys. The modified round function module 408 uses wkey8 at T12, wkey6 at T13, and wkey0 at T16.

T16에서, 변형된 라운드 기능 모듈(408)의 출력 신호(167)는 입력 신호로서 암호문 데이터(C0)의 복호화의 결과인 평문 데이터(P0)를 출력한다. 1 사이클 이후(T17), 데이터 유지부(108)는 AES 코어(401)의 출력으로서 평문 데이터(P0)의 값을 외부에 출력한다. 동시에, AES 코어(401) 외부의 유닛에 대하여 복호화가 종료되어, 출력 신호가(151)가 유효한 것을 통지하기 위하여, 제어부(404)는 유효 신호(159)를 어서트시킨다(T17). 유효 신호(159)가 어서트되는 동안, AES 코어(401)는 출력 신호(151)가 유효한 것을 보증한다.In T16, the output signal 167 of the modified round function module 408 outputs the plain text data P0 which is the result of decryption of the ciphertext data C0 as an input signal. After one cycle (T17), the data holding unit 108 outputs the value of the plain text data P0 to the outside as the output of the AES core 401. At the same time, the control unit 404 asserts the valid signal 159 in order to notify the unit outside the AES core 401 that the output signal 151 is valid (T17). While the valid signal 159 is asserted, the AES core 401 ensures that the output signal 151 is valid.

한편, 제어 신호(160)는, T17에서 유효 신호(159)가 어서트되어 있지만, T17에서 암호화/복호화 개시 신호(158) 또한 어서트되어 있기 때문에, 니게이트로 유지된다. 암호화/복호화 개시 신호(158)가 T17에서 어서트되지 않으면, 제어 신호(160)가 T17에서 어서트되고, 데이터 유지부(108)의 값은 평문 데이터(P0)를 유지한다.On the other hand, the control signal 160 remains asserted because the valid signal 159 is asserted at T17, but the encryption / decryption start signal 158 is also asserted at T17. If the encryption / decryption start signal 158 is not asserted at T17, the control signal 160 is asserted at T17, and the value of the data holding unit 108 holds the plain text data P0.

복호화가 종료되는 T17에서, 키 확장부(402)는 라운드 키 A1(462)로서 wkey9및 라운드 키 A2(463)로서 wkey8를 출력한다. 라운드 키 A1(462)과 라운드 키 A2(463)의 값은 다음의 암호화/복호화 개시 신호(156)가 어서트될 때까지 유지된다.At T17 when the decryption ends, the key expansion unit 402 outputs wkey9 as the round key A1 462 and wkey8 as the round key A2 463. The values of the round key A1 462 and the round key A2 463 are maintained until the next encryption / decryption start signal 156 is asserted.

복호화의 종료를 예측하여(T17), 제어부(404)는 완료 한 사이클 전에(T16) 제어 신호(157)를 어서트시킨다. 제어 신호(157)가 어서트되는 때에, AES 코 어(401) 외부의 유닛은 입력 신호(150)의 값을 다음의 암호문 데이터(C1)에 설정하여, 2번째 블록의 복호화가 개시할 수 있게 된다.In anticipation of the end of decoding (T17), the control unit 404 asserts the control signal 157 before completion of the cycle (T16). When the control signal 157 is asserted, the unit outside the AES core 401 sets the value of the input signal 150 to the next ciphertext data C1 so that decryption of the second block can start. do.

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, reference numeral 503 denotes an encryption / decryption unit, 550 denotes a round key A1, and 551 denotes a round key A2. There are N round keys A, including round key A1 550 and round key A2 551. The same reference numerals as in the seventh embodiment refer to the same components and the same signal lines, and the description thereof is omitted.

상기 구성에 있어서, 선택기(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 selector 109 is connected to the modified round function module 405. (N-1) modified round function modules 405 are connected in series. The output of the last modified round function module 405 is connected to the modified round function module 407. The output of the selector 109 is also connected to the modified round function module 406. The output of the modified round function module 406 is connected to the modified round function module 408. The (N-1) modified round function modules 408 are connected in series. The output of the last modified round function module 408 is connected to the selector 107. The modified round function module 405 receives the round key A1 550, the round key A2 551, and the remaining round key A, respectively, in the connection order. The modified round function module 407 receives the N th round key A and the round key B 163. Modified round function module 406 receives round key A1 550 and round key B 163. The modified round function module 408 receives round key A2 551 and remaining round key A, respectively, in concatenated order. Description of the components of FIG. 58 has the same connection relationship with the seventh embodiment, and thus will be omitted.

다음, 제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, reference numeral 605 denotes a modified round function module, and the data holding unit 608 holds the result of the encryption process.

상기 구성에 있어서, SubBytes 변환 모듈(111)의 출력은 데이터 유지부(608)에 입력된다. 데이터 유지부(608)의 출력은 ShiftRows 변환 모듈(112)에 입력된다.In the above configuration, the output of the SubBytes conversion module 111 is input to the data holding unit 608. The output of the data holding unit 608 is input to the ShiftRows conversion module 112.

암호화부에 새로운 데이터 유지부를 추가하는 것은, 제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 data holding unit 608 is added between the SubBytes conversion module 111 and the ShiftRows conversion module 112. In FIG. However, the data holding portion may be connected at any point. Alternatively, the SubBytes conversion module 111 may include a data retainer.

상기 예에 있어서, 제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)

AES 암호화/복호화 회로로서,AES encryption / decryption circuit, 제1 AddRoundKey 변환 모듈;A first AddRoundKey conversion module; 제2 AddRoundKey 변환 모듈;A second AddRoundKey conversion module; ShiftRows 변환 모듈;ShiftRows conversion module; SubBytes 변환 모듈;SubBytes conversion module; MixColumns 변환 모듈; 및MixColumns conversion module; And 데이터 유지부Data holding unit 를 포함하며,Including; 암호화의 사이클에 있어서, 상기 제1 AddRoundKey 변환 모듈 및 상기 제2 AddRoundKey 변환 모듈을 상이한 라운드 키들을 사용하여 실행하는 AES 암호화/복호화 회로.AES encryption / decryption circuitry, in the cycle of encryption, executing the first AddRoundKey conversion module and the second AddRoundKey conversion module using different round keys. 제1항에 있어서,The method of claim 1, 암호키로부터 라운드 키를 생성하여, 그 라운드 키를 상기 AddRoundKey 변환 모듈에 공급하는 키 확장부; 및A key expansion unit for generating a round key from an encryption key and supplying the round key to the AddRoundKey conversion module; And 암호화의 개시로부터의 클록 사이클을 카운팅하여, 상기 암호화를 실행하기 위한 제어 신호를 생성하는 제어부A control unit for generating a control signal for executing the encryption by counting clock cycles from the start of encryption 를 더 포함하는 AES 암호화/복호화 회로.AES encryption / decryption circuit further comprising. 제1항에 있어서,The method of claim 1, 암호화의 1번째 클록 사이클에서는, 평문 데이터에 대하여 AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, 및 MixColumns 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하며,In the first clock cycle of encryption, the result obtained by performing AddRoundKey conversion, SubBytes conversion, ShiftRows conversion, and MixColumns conversion on the plain text data is output to the data holding unit. 2번째 클록 사이클에서부터 (NR-1)번째 클록 사이클에서는(여기서, NR은 라운드 수), 상기 데이터 유지부의 출력 데이터에 대하여 AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, 및 MixColumns 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하며,From the second clock cycle to the (NR-1) th clock cycle, where NR is the number of rounds, the result obtained by executing AddRoundKey conversion, SubBytes conversion, ShiftRows conversion, and MixColumns conversion is performed on the output data of the data holding unit. Output to the data holding part, NR번째 클록 사이클에서는, 상기 데이터 유지부의 출력 데이터에 대하여 제1 AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, 및 제2 AddRoundKey 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하는 AES 암호화/복호화 회로.And an AES encryption / decryption circuit for outputting the result obtained by performing a first AddRoundKey conversion, SubBytes conversion, ShiftRows conversion, and second AddRoundKey conversion on the output data of the data holding unit in the NRth clock cycle. 제1항에 있어서,The method of claim 1, 암호화의 1번째 클록 사이클에서는, 평문 데이터에 대하여 제1 AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, MixColumns 변환, 및 제2 AddRoundKey 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하며,In the first clock cycle of encryption, a result obtained by performing a first AddRoundKey transformation, SubBytes transformation, ShiftRows transformation, MixColumns transformation, and a second AddRoundKey transformation on the plain text data is output to the data holding unit, 2번째 클록 사이클에서부터 (NR-1)번째 클록 사이클에서는(여기서, NR은 라운드 수), 상기 데이터 유지부의 출력 데이터에 대하여 SubBytes 변환, ShiftRows 변환, MixColumns 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하며,From the second clock cycle to the (NR-1) th clock cycle (where NR is the number of rounds), the result obtained by performing SubBytes transformation, ShiftRows transformation, MixColumns transformation, and AddRoundKey transformation is performed on the output data of the data holding unit. Output to the data holding part, NR번째 클록 사이클에서는, 상기 데이터 유지부의 출력 데이터에 대하여 SubBytes 변환, ShiftRows 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하는 AES 암호화/복호화 회로.And an AES encryption / decryption circuit for outputting the result obtained by performing SubBytes conversion, ShiftRows conversion, and AddRoundKey conversion on the output data of the data holding unit in the NRth clock cycle. 제1항에 있어서,The method of claim 1, 암호화의 1번째 클록 사이클에서는, 평문 데이터에 대하여 AddRoundKey 변환, SubBytes 변환, 및 ShiftRows 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하며,In the first clock cycle of encryption, the result obtained by performing AddRoundKey conversion, SubBytes conversion, and ShiftRows conversion on the plain text data is output to the data holding unit. 2번째 클록 사이클에서부터 (NR-1)번째 클록 사이클에서는(여기서, NR은 라운드 수), 상기 데이터 유지부의 출력 데이터에 대하여 MixColumns 변환, AddRoundKey 변환, SubBytes 변환, 및 ShiftRows 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하며,From the second clock cycle to the (NR-1) th clock cycle (where NR is the number of rounds), the result obtained by performing MixColumns transformation, AddRoundKey transformation, SubBytes transformation, and ShiftRows transformation on the output data of the data holding section is stored. Output to the data holding part, NR번째 클록 사이클에서는, 상기 데이터 유지부의 출력 데이터에 대하여 MixColumns 변환, 제1 AddRoundKey 변환, SubBytes 변환, ShiftRows 변환, 및 제2 AddRoundKey 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하는 AES 암호화/복호화 회로.In the NRth clock cycle, AES encryption / decryption outputting the result obtained by performing MixColumns conversion, first AddRoundKey conversion, SubBytes conversion, ShiftRows conversion, and second AddRoundKey conversion on the output data of the data holding part. Circuit. AES 암호화/복호화 회로로서,AES encryption / decryption circuit, 제1 AddRoundKey 변환 모듈;A first AddRoundKey conversion module; 제2 AddRoundKey 변환 모듈;A second AddRoundKey conversion module; InvShiftRows 변환 모듈;InvShiftRows transformation module; InvSubBytes 변환 모듈;InvSubBytes Conversion Module; InvMixColumns 변환 모듈; 및InvMixColumns transformation module; And 데이터 유지부Data holding unit 를 포함하며,Including; 복호화의 사이클에 있어서, 상기 제1 AddRoundKey 변환 모듈 및 상기 제2 AddRoundKey 변환 모듈을 상이한 라운드 키들을 사용하여 실행하는 AES 암호화/복호화 회로.AES encryption / decryption circuitry, in the cycle of decryption, executing the first AddRoundKey transform module and the second AddRoundKey transform module using different round keys. 제6항에 있어서,The method of claim 6, 복호화의 1번째 클록 사이클에서는, 암호문 데이터에 대하여 제1 AddRoundKey 변환, InvShiftRows 변환, InvSubBytes 변환, 및 제2 AddRoundKey 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하며,In the first clock cycle of decryption, a result obtained by performing a first AddRoundKey transformation, an InvShiftRows transformation, an InvSubBytes transformation, and a second AddRoundKey transformation on the ciphertext data is output to the data holding unit, 2번째 클록 사이클에서부터 (NR-1)번째 클록 사이클에서는(여기서, NR은 라운드 수), 상기 데이터 유지부의 출력 데이터에 대하여 InvMixColumns 변환, InvShiftRows 변환, InvSubBytes 변환, 및 AddRoundKey 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하며,From the second clock cycle to the (NR-1) th clock cycle (where NR is the number of rounds), the result obtained by executing InvMixColumns transformation, InvShiftRows transformation, InvSubBytes transformation, and AddRoundKey transformation is performed on the output data of the data holding unit. Output to the data holding part, NR번째 클록 사이클에서는, 상기 데이터 유지부의 출력 데이터에 대하여 InvMixColumns 변환, InvShiftRows 변환, InvSubBytes 변환, 및 AddRoundKey 변환 을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하는 AES 암호화/복호화 회로.An AES encryption / decryption circuit for outputting the result obtained by performing InvMixColumns conversion, InvShiftRows conversion, InvSubBytes conversion, and AddRoundKey conversion on the output data of the data holding unit in the NRth clock cycle. 제6항에 있어서,The method of claim 6, 복호화의 1번째 클록 사이클에서는, 암호문 데이터에 대하여 AddRoundKey 변환, InvSubBytes 변환, InvShiftRows 변환, 및 InvMixColumns 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하며,In the first clock cycle of decryption, the result obtained by performing AddRoundKey conversion, InvSubBytes conversion, InvShiftRows conversion, and InvMixColumns conversion on the ciphertext data is output to the data holding unit. 2번째 클록 사이클에서부터 (NR-1)번째 클록 사이클에서는(여기서, NR은 라운드 수), 상기 데이터 유지부의 출력 데이터에 대하여 AddRoundKey 변환, InvSubBytes 변환, InvShiftRows 변환, 및 InvMixColumns 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하며,From the second clock cycle to the (NR-1) th clock cycle (where NR is the number of rounds), the result obtained by executing AddRoundKey conversion, InvSubBytes conversion, InvShiftRows conversion, and InvMixColumns conversion on the output data of the data holding unit is described. Output to the data holding part, NR번째 클록 사이클에서는, 상기 데이터 유지부의 출력 데이터에 대하여 제1 AddRoundKey 변환, InvSubBytes 변환, InvShiftRows 변환, 및 제2 AddRoundKey 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하는 AES 암호화/복호화 회로.And an AES encryption / decryption circuit for outputting the result obtained by performing a first AddRoundKey transformation, an InvSubBytes transformation, an InvShiftRows transformation, and a second AddRoundKey transformation on the output data of the data holding portion in an NRth clock cycle. AES 암호화/복호화 회로로서,AES encryption / decryption circuit, 제1 AddRoundKey 변환 모듈;A first AddRoundKey conversion module; 제2 AddRoundKey 변환 모듈;A second AddRoundKey conversion module; 제3 AddRoundKey 변환 모듈;A third AddRoundKey conversion module; 제1 ShiftRows 변환 모듈;A first ShiftRows conversion module; 제2 ShiftRows 변환 모듈;A second ShiftRows conversion module; 제1 SubBytes 변환 모듈;A first SubBytes transform module; 제2 SubBytes 변환 모듈;A second SubBytes transform module; 제1 MixColumns 변환 모듈;A first MixColumns conversion module; 제2 MixColumns 변환 모듈; 및A second MixColumns conversion module; And 데이터 유지부Data holding unit 를 포함하며,Including; 암호화의 사이클에 있어서, 상기 제1 AddRoundKey 변환 모듈, 상기 제2 AddRoundKey 변환 모듈, 및 상기 제3 AddRoundKey 변환 모듈을 상이한 라운드 키들을 사용하여 실행하는 AES 암호화/복호화 회로.AES encryption / decryption circuitry, in the cycle of encryption, executing the first AddRoundKey conversion module, the second AddRoundKey conversion module, and the third AddRoundKey conversion module using different round keys. 제9항에 있어서,The method of claim 9, 암호화의 1번째 클록 사이클에서는, 평문 데이터에 대하여 제1 AddRoundKey 변환, 제1 SubBytes 변환, 제1 ShiftRows 변환, 제1 MixColumns 변환, 제2 AddRoundKey 변환, 제2 SubBytes 변환, 제2 ShiftRows 변환, 및 제2 MixColumns 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하며,In the first clock cycle of encryption, 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 for the plain text data. Outputting the result obtained by performing the MixColumns conversion to the data holding unit, 2번째 클록 사이클에서부터 (NR/2-1)번째 클록 사이클에서는(여기서, NR은 라운드 수), 상기 데이터 유지부의 출력 데이터에 대하여 제1 AddRoundKey 변환, 제1 SubBytes 변환, 제1 ShiftRows 변환, 제1 MixColumns 변환, 제2 AddRoundKey 변환, 제2 SubBytes 변환, 제2 ShiftRows 변환, 및 제2 MixColumns 변환을 실행하 여 얻은 결과를 상기 데이터 유지부에 출력하며,From the second clock cycle to the (NR / 2-1) th clock cycle, where NR is the number of rounds, the first AddRoundKey conversion, the first SubBytes conversion, the first ShiftRows conversion, and the first for the output data of the data holding part. Outputting the result obtained by performing the MixColumns transformation, the second AddRoundKey transformation, the second SubBytes transformation, the second ShiftRows transformation, and the second MixColumns transformation, (NR/2)번째 클록 사이클에서는, 상기 데이터 유지부의 출력 데이터에 대하여 제1 AddRoundKey 변환, 제1 SubBytes 변환, 제1 ShiftRows 변환, 제1 MixColumns 변환, 제2 AddRoundKey 변환, 제2 SubBytes 변환, 제2 ShiftRows 변환, 및 제3 AddRoundKey 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하는 AES 암호화/복호화 회로.In the (NR / 2) th clock cycle, the first AddRoundKey conversion, the first SubBytes conversion, the first ShiftRows conversion, the first MixColumns conversion, the second AddRoundKey conversion, the second SubBytes conversion, and the second data for the output data of the data holding part. An AES encryption / decryption circuit for outputting the result obtained by performing ShiftRows conversion and third AddRoundKey conversion to the data holding unit. AES 암호화/복호화 회로로서,AES encryption / decryption circuit, 제1 AddRoundKey 변환 모듈;A first AddRoundKey conversion module; 제2 AddRoundKey 변환 모듈;A second AddRoundKey conversion module; 제3 AddRoundKey 변환 모듈;A third AddRoundKey conversion module; 제1 InvShiftRows 변환 모듈;A first InvShiftRows transformation module; 제2 InvShiftRows 변환 모듈;A second InvShiftRows transform module; 제1 InvSubBytes 변환 모듈;A first InvSubBytes conversion module; 제2 InvSubBytes 변환 모듈;A second InvSubBytes conversion module; 제1 InvMixColumns 변환 모듈;A first InvMixColumns transformation module; 제2 InvMixColumns 변환 모듈; 및A second InvMixColumns conversion module; And 데이터 유지부Data holding unit 를 포함하며,Including; 복호화의 사이클에 있어서, 상기 제1 AddRoundKey 변환 모듈, 상기 제2 AddRoundKey 변환 모듈, 및 상기 제3 AddRoundKey 변환 모듈을 상이한 라운드 키들을 사용하여 실행하는 AES 암호화/복호화 회로.AES encryption / decryption circuitry, in the cycle of decryption, executing the first AddRoundKey transform module, the second AddRoundKey transform module, and the third AddRoundKey transform module using different round keys. 제11항에 있어서,The method of claim 11, 복호화의 1번째 클록 사이클에서는, 암호문 데이터에 대하여 제1 AddRoundKey 변환, 제1 InvSubBytes 변환, 제1 InvShiftRows 변환, 제1 InvMixColumns 변환, 제2 AddRoundKey 변환, 제2 InvSubBytes 변환, 제2 InvShiftRows 변환, 및 제2 InvMixColumns 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하며,In the first clock cycle of decryption, a first AddRoundKey transformation, a first InvSubBytes transformation, a first InvShiftRows transformation, a first InvMixColumns transformation, a second AddRoundKey transformation, a second InvSubBytes transformation, a second InvShiftRows transformation, and a second ciphertext data. Outputs the result obtained by performing InvMixColumns conversion to the data retainer, 2번째 클록 사이클에서부터 (NR/2-1)번째 클록 사이클에서는(여기서, NR은 라운드 수), 상기 데이터 유지부의 출력 데이터에 대하여 제1 AddRoundKey 변환, 제1 InvSubBytes 변환, 제1 InvShiftRows 변환, 제1 InvMixColumns 변환, 제2 AddRoundKey 변환, 제2 InvSubBytes 변환, 제2 InvShiftRows 변환, 및 제2 InvMixColumns 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하며,From the second clock cycle to the (NR / 2-1) th clock cycle, where NR is the number of rounds, the first AddRoundKey transformation, the first InvSubBytes transformation, the first InvShiftRows transformation, and the first Outputting the result obtained by executing an InvMixColumns transformation, a second AddRoundKey transformation, a second InvSubBytes transformation, a second InvShiftRows transformation, and a second InvMixColumns transformation, to the data holding unit, (NR/2)번째 클록 사이클에서는, 상기 데이터 유지부의 출력 데이터에 대하여 제1 AddRoundKey 변환, 제1 InvSubBytes 변환, 제1 InvShiftRows 변환, 제1 InvMixColumns 변환, 제2 AddRoundKey 변환, 제2 InvSubBytes 변환, 제2 InvShiftRows 변환, 및 제3 AddRoundKey 변환을 실행하여 얻은 결과를 상기 데이터 유지부에 출력하는 AES 암호화/복호화 회로.In the (NR / 2) th clock cycle, the first AddRoundKey conversion, the first InvSubBytes conversion, the first InvShiftRows conversion, the first InvMixColumns conversion, the second AddRoundKey conversion, the second InvSubBytes conversion, and the second An AES encryption / decryption circuit for outputting the result obtained by performing InvShiftRows conversion and third AddRoundKey conversion to the data holding unit.
KR1020080099876A 2007-10-10 2008-10-10 AES encryption / decryption circuit KR101047265B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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