[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR100710455B1 - Apparatus for rijndael block cipher and encryption/decryption method thereof - Google Patents

Apparatus for rijndael block cipher and encryption/decryption method thereof Download PDF

Info

Publication number
KR100710455B1
KR100710455B1 KR1020030064737A KR20030064737A KR100710455B1 KR 100710455 B1 KR100710455 B1 KR 100710455B1 KR 1020030064737 A KR1020030064737 A KR 1020030064737A KR 20030064737 A KR20030064737 A KR 20030064737A KR 100710455 B1 KR100710455 B1 KR 100710455B1
Authority
KR
South Korea
Prior art keywords
round
bit
key
data
round key
Prior art date
Application number
KR1020030064737A
Other languages
Korean (ko)
Other versions
KR20040108311A (en
Inventor
이윤경
박영수
김영세
이상우
전성익
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to CN2004800224469A priority Critical patent/CN1833399B/en
Priority to US10/560,220 priority patent/US7688974B2/en
Priority to JP2006516910A priority patent/JP2006527865A/en
Priority to PCT/KR2004/001296 priority patent/WO2004112309A1/en
Publication of KR20040108311A publication Critical patent/KR20040108311A/en
Application granted granted Critical
Publication of KR100710455B1 publication Critical patent/KR100710455B1/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
    • 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
    • H04L2209/122Hardware reduction or efficient architectures
    • 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)
  • Storage Device Security (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

본 발명은 라인달(Rijndael) 블록 암호를 암호화 및 복호화하기 위한 라운드 연산을 효율적으로 수행하는 연산장치를 포함하는 라인달 블록 암호 장치와 그 암호화 및 복호화 방법에 관한 것이다.The present invention relates to a linedal block cipher apparatus and a method of encrypting and decrypting the same, including an arithmetic apparatus for efficiently performing a round operation for encrypting and decrypting a Rijndael block cipher.

본 발명에 따른 라인달 블록 암호 장치는 고속, 저면적의 암호 프로세서를 요구하는 휴대폰이나 PDA같은 이동단말기 또는 스마트 카드에 탑재함으로써 보안이 필요한 중요한 데이터를 빠른 시간 안에 암호화 및 복호화할 수 있고, 특히 128비트 입력 데이터를 상위 64비트와 하위 64비트로 나누어 라운드 연산을 수행하도록 되어 있다.The linedal block cryptographic apparatus according to the present invention can be used to encrypt and decrypt sensitive data that needs security in a short time by being mounted on a mobile terminal or a smart card such as a mobile phone or a PDA requiring a high speed and low area cryptographic processor. Round operation is performed by dividing bit input data into upper 64 bits and lower 64 bits.

따라서, 본 발명은 라인달 블록 암호를 암호화 및 복호화하는데 필요한 시간을 줄이면서 장치의 면적을 감소시킬 수 있다.Thus, the present invention can reduce the area of the device while reducing the time required to encrypt and decrypt the linedal block cipher.

암호 알고리즘, Rijndael, 라인달, 라운드 연산, 블록 암호Cipher Algorithm, Rijndael, Linedal, Round Arithmetic, Block Cipher

Description

라인달 블록 암호 장치와 그 암호화 및 복호화 방법{Apparatus for rijndael block cipher and encryption/decryption method thereof} Apparatus for rijndael block cipher and encryption / decryption method             

도 1은 본 발명에 따른 라인달 블록 암호 장치를 도시한 구성도.1 is a block diagram showing a linedal block encryption apparatus according to the present invention.

도 2는 라운드 연산부를 도시한 구성도.2 is a block diagram showing a round calculation unit.

도 3은 라운드 키 생성부를 도시한 구성도.3 is a block diagram showing a round key generation unit.

도 4는 본 발명에 따른 라인달 블록 암호의 암호화 방법을 도시한 제1타이밍도.4 is a first timing diagram illustrating a method of encrypting a linedal block cipher according to the present invention.

도 5는 본 발명에 따른 라인달 블록 암호의 복호화 방법을 도시한 제1타이밍도.5 is a first timing diagram illustrating a method of decrypting a linedal block cipher according to the present invention.

도 6은 본 발명에 따른 라인달 블록 암호의 암호화 방법을 도시한 제2타이밍도.6 is a second timing diagram illustrating a method of encrypting a linedal block cipher according to the present invention.

도 7은 본 발명에 따른 라인달 블록 암호의 복호화 방법을 도시한 제2타이밍도.7 is a second timing diagram illustrating a method of decrypting a linedal block cipher according to the present invention.

도 8은 본 발명에 따른 라인달 블록 암호의 암호화 방법을 도시한 제3타이밍도.8 is a third timing diagram illustrating a method of encrypting a linedal block cipher according to the present invention.

도 9는 본 발명에 따른 라인달 블록 암호의 복호화 방법을 도시한 제3타이밍 도.9 is a third timing diagram illustrating a method of decrypting a linedal block cipher according to the present invention.

<도면의 주요부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>

100: 라운드 연산부 110: 라운드 키 생성부100: round operation unit 110: round key generation unit

120: 시프트/역시프트_로우 변환부 121: 제1다중화기120: shift / inverse shift_low converter 121: first multiplexer

130: 대치/역대치 변환부 140: 제1역다중화기130: replace / reverse replace conversion unit 140: first demultiplexer

150: 믹스/역믹스컬럼 변환부 160: 제2역다중화기150: mix / inverse mix column conversion unit 160: second demultiplexer

170: 라운드 키 더하기 변환부 180: 제3역다중화기170: round key addition conversion unit 180: third demultiplexer

200: 버스 300: 라운드 연산 제어부200: bus 300: round operation control unit

400: 64비트 데이터 레지스터 500: 128비트 데이터 레지스터400: 64-bit data register 500: 128-bit data register

본 발명은 라인달(Rijndael) 블록 암호 장치와 그 암호화 및 복호화 방법에 관한 것으로서, 보다 상세히는 휴대폰이나 PDA, 스마트 카드 등에 탑재함으로써 보안이 필요한 중요한 데이터를 빠른 시간 안에 암호화 및 복호화할 수 있도록 된 라인달 블록 암호 장치와 그 암호화 및 복호화 방법에 관한 것이다.The present invention relates to a Rijndael block cipher apparatus and a method of encrypting and decrypting the same, and more particularly, a line capable of quickly encrypting and decrypting important data requiring security by being mounted on a mobile phone, PDA, smart card, etc. The present invention relates to a moon block cipher apparatus and an encryption and decryption method thereof.

라인달 알고리즘은 벨기에의 암호개발자인 존 데몬(Joan Daemen)과 빈센트 리즈멘(Vincent Rijmen)에 의해 개발된 후 2000년 10월경 미국의 국립 표준 기술원(NIST; National Institute of Standards and Technology)에서 새로운 첨단 암호 표준(AES; Advanced Encryption Standard)으로 선정한 대칭 비밀키 암호화 알고리즘이다.The Rindal algorithm was developed by Belgian crypto developer Joan Daemen and Vincent Rijmen, and was introduced in October 2000 by the National Institute of Standards and Technology (NIST). Symmetric secret key encryption algorithm selected by the Advanced Encryption Standard (AES).

라인달 알고리즘은 SPN(Substitution-Permutation Network) 구조의 가변 블록길이를 지원하고, 각 블록길이에 대해 128비트, 192비트, 256비트 키를 사용할 수 있다.The linedal algorithm supports variable block lengths of the Substitution-Permutation Network (SPN) structure and can use 128-bit, 192-bit, and 256-bit keys for each block length.

라인달 알고리즘의 라운드 수는 키 길이에 의해 결정되고, 128비트 블록을 사용하는 경우 128, 192, 256비트 키에 대해 각각 10, 12, 14라운드를 사용하도록 권고되고 있다.The number of rounds of the linedal algorithm is determined by the key length, and when using 128-bit blocks, it is recommended to use 10, 12, and 14 rounds for 128, 192, and 256-bit keys, respectively.

현재 라인달 알고리즘은 128비트 키를 사용하여도 안전성에는 문제가 없는 것으로 알려져 있으며, 이에 따라서 128비트 길이의 키를 이용한 라인달 알고리즘의 하드웨어 구현에 관하여 연구가 진행되고 있는 실정이다.Currently, the linedal algorithm is known to have no safety problem even when using a 128-bit key. Therefore, a study on the hardware implementation of the linedal algorithm using a 128-bit key is being conducted.

라인달 알고리즘은 라운드 연산의 반복에 의해서 라인달 블록 암호화/복호화용 데이터를 암호화 또는 복호화하며, 특히 SPN 구조의 가변 블록길이를 지원하도록 되어있기 때문에 블록 암호의 암호화 과정과 복호화 과정이 다르다. 통상적으로, 라인달 블록 암호의 암호화 과정을 위한 라운드 연산은 대치(Substitution), 시프트_로우(Shift_Row), 믹스컬럼(MixColumn), 라운드 키 더하기(Add Round key)의 네 가지 변환으로 이루어지고, 복호화 과정을 위한 라운드 연산은 역시프트_로우(Inverse Shift_Row), 역대치(Inverse Substitution), 라운드 키 더하기(Add Round key), 역믹스컬럼(Inverse MixColumn)의 네 가지 변환으로 이루어진다. 이들 변환을 수행하는 방법에 따라 라인달 블록 암호에 대한 라운드 연산에 소요되는 시 간과 사용하는 하드웨어 리소스에 차이가 있으며, 이는 더 나아가 라인달 암호 프로세서의 성능과 직결되는 문제가 된다. 따라서 라운드 연산의 구현에 필요한 하드웨어 리소스의 양과 라운드 연산 수행에 소요되는 시간을 줄이는 것이 중요하다.The linedal algorithm encrypts or decrypts data for linedal block encryption / decryption by repeating round operations, and in particular, the encryption process and the decryption process of the block cipher differ from each other because it supports variable block length of the SPN structure. Typically, the round operation for the encryption process of the linedal block cipher consists of four transformations: Substitution, Shift_Row, MixColumn, and Add Round key. The round operation for the process consists of four transformations: Inverse Shift_Row, Inverse Substitution, Add Round key, and Inverse MixColumn. According to the method of performing these conversions, there is a difference in the time required for round operation on the linedal block cipher and the hardware resources used, which is directly related to the performance of the linedal cipher processor. Therefore, it is important to reduce the amount of hardware resources required to implement round operations and the time required to perform round operations.

따라서, 본 출원인은 상기한 바와 같은 관점에서 라인달 블록 암호를 암호화 및 복호화하기 위한 라운드 연산을 효율적으로 수행하는 연산장치를 포함하는 라인달 블록 암호 장치와 그 암호화 및 복호화 방법을 개발하게 되었다.Accordingly, the present applicant has developed a linedal block cipher apparatus and an encryption and decryption method thereof including an arithmetic unit for efficiently performing a round operation for encrypting and decrypting a linedal block cipher in view of the above.

본 발명의 목적은 고속, 저면적의 암호 프로세서를 요구하는 휴대폰이나 PDA같은 이동단말기 또는 스마트 카드에 탑재함으로써 보안이 필요한 중요한 데이터를 빠른 시간 안에 암호화 및 복호화할 수 있도록 된 라인달 블록 암호 장치와 그 암호화 및 복호화 방법을 제공하는데 있다.
SUMMARY OF THE INVENTION An object of the present invention is to install a mobile terminal or a smart card such as a mobile phone or a PDA requiring a high speed, low area cryptographic processor, and a linedal block cryptographic device capable of encrypting and decrypting sensitive data in a short time. An encryption and decryption method is provided.

본 발명은 M비트의 입력데이터 및 N비트의 입력키를 가지며, 시프트_로우(Shift_Row), 대치(Substitution), 믹스컬럼(MixColumn), 라운드 키 더하기(Add Round key)의 변환과정을 포함하는 라운드 연산을 소정 회수만큼 반복하여 상기 M 비트의 입력데이터를 암호화하는 라인달 블록 암호화 장치에 있어서, 적어도 상기 대치(Substitution), 믹스컬럼(MixColumn), 라운드 키 더하기(Add Round key)의 변환과정에서는 데이터를 M/m 비트(m은 2, 3 또는 4) 단위로 처리하는 라운 드 연산 실행부와 상기 라운드 키 더하기 과정에 라운드키를 제공하기 위해 라운드키를 생성하는 라운드키생성부를 포함하는 라운드 연산부; 상기 라운드 연산부에 의해 수행되는 라운드 연산을 제어하는 라운드 연산 제어부; 및 상기 라운드 연산부에 의해 매 라운드의 중간단계에서 생성되는 M/m 비트의 중간 데이터 및 매 라운드의 종료단계에서 생성되는 M 비트의 데이터를 저장하기 위한 데이터기억부를 포함하는 것을 특징으로 하는 라인달 블록 암호화 장치를 제공한다.The present invention has an M-bit input data and an N-bit input key, and includes a round including conversion of Shift_Row, Substitution, MixColumn, and Add Round key. A line-dal block encryption apparatus for encrypting the M-bit input data by repeating a predetermined number of operations, wherein at least the substitution process, the MixColumn, and the Add Round key are converted into data. A round operation unit including a round operation execution unit processing a M / m bit in units of 2, 3, or 4 and a round key generation unit generating a round key to provide a round key to the round key addition process; A round operation control unit controlling a round operation performed by the round operation unit; And a data storage unit for storing M / m-bit intermediate data generated in the middle stage of each round and M-bit data generated in the end stage of each round by the round operation unit. Provide an encryption device.

또한, 본 발명은 M비트의 입력데이터 및 N비트의 입력키를 가지며, 역시프트_로우(Inverse Shift_Row), 역대치(Inverse Substitution), 라운드 키 더하기(Add Round key), 역믹스컬럼(Inverse MixColumn)의 변환과정을 포함하는 라운드 연산을 소정 회수만큼 반복하여 상기 M 비트의 입력데이터를 복호화하는 라인달 블록 복호화 장치에 있어서, 적어도 상기 역대치(Inverse Substitution), 라운드 키 더하기(Add Round key), 역믹스컬럼(Inverse MixColumn)의 변환과정에서는 데이터를 M/m 비트(m은 2, 3 또는 4) 단위로 처리하는 라운드 연산 실행부와 상기 라운드 키 더하기 과정에 라운드키를 제공하기 위해 라운드키를 생성하는 라운드키생성부를 포함하는 라운드 연산부; 상기 라운드 연산부에 의해 수행되는 라운드 연산을 제어하는 라운드 연산 제어부; 및 상기 라운드 연산부에 의해 매 라운드의 중간단계에서 생성되는 M/m 비트의 중간 데이터 및 매 라운드의 종료단계에서 생성되는 M 비트의 데이터를 저장하기 위한 데이터기억부를 포함하는 것을 특징으로 하는 라인달 블록 복호화 장치를 제공한다.In addition, the present invention has M-bit input data and N-bit input key, and also Inverse Shift_Row, Inverse Substitution, Add Round key, Inverse MixColumn A linedal block decoding apparatus for decoding the M-bit input data by repeating a round operation including a conversion process of a predetermined number of times, the at least one of Inverse Substitution, Add Round key, In the conversion process of the inverse mix column, a round operation execution unit for processing data in units of M / m bits (m is 2, 3, or 4) and a round key to provide a round key to the round key addition process. A round operation unit including a round key generation unit to generate; A round operation control unit controlling a round operation performed by the round operation unit; And a data storage unit for storing M / m-bit intermediate data generated in the middle stage of each round and M-bit data generated in the end stage of each round by the round operation unit. Provided is a decoding device.

또한, 본 발명은 M비트의 입력데이터 및 N비트의 입력키를 가지며, 시프트_로우(Shift_Row), 대치(Substitution), 믹스컬럼(MixColumn), 라운드 키 더하기(Add Round key)의 변환과정을 포함하는 암호화용 라운드 연산을 소정 회수만큼 반복하여 상기 M 비트의 입력데이터를 암호화하거나, 역시프트_로우(Inverse Shift_Row), 역대치(Inverse Substitution), 라운드 키 더하기(Add Round key), 역믹스컬럼(Inverse MixColumn)의 변환과정을 포함하는 복호화용 라운드 연산을 소정 회수만큼 반복하여 상기 M 비트의 입력데이터를 복호화하기 위한 라인달 블록 암복호화 장치에 있어서, 암호화 모드에서는, 적어도 상기 대치(Substitution), 믹스컬럼(MixColumn), 라운드 키 더하기(Add Round key)의 변환과정에서는 데이터를 M/m 비트(m은 2, 3 또는 4) 단위로 처리하고, 복호화 모드에서는, 적어도 상기 역대치(Inverse Substitution), 라운드 키 더하기(Add Round key), 역믹스컬럼(Inverse MixColumn)의 변환과정에서는 데이터를 M/m 비트(m은 2, 3 또는 4) 단위로 처리하는 라운드 연산 실행부와 상기 라운드 키 더하기 과정에 라운드키를 제공하기 위해 라운드키를 생성하는 라운드키생성부를 포함하는 라운드 연산부; 상기 라운드 연산부에 의해 수행되는 라운드 연산을 제어하는 라운드 연산 제어부; 및 상기 라운드 연산부에 의해 매 라운드의 중간단계에서 생성되는 M/m 비트의 중간 데이터 및 매 라운드의 종료단계에서 생성되는 M 비트의 데이터를 저장하기 위한 데이터기억부를 포함하는 것을 특징으로 하는 라인달 블록 암복호화 장치를 제공한다.In addition, the present invention has M-bit input data and N-bit input key, and includes a process of converting Shift_Row, Substitution, MixColumn, and Add Round key. Repeating the encryption round operation for a predetermined number of times to encrypt the M-bit input data, or inverse shift_row, inverse substitution, add round key, inverse mix column ( A linedal block encryption / decryption apparatus for decrypting input data of M bits by repeating a decryption round operation including a conversion process of an Inverse MixColumn by a predetermined number of times, in an encryption mode, at least the substitution and mix in an encryption mode. In the conversion process of the column (MixColumn) and the Add Round key, the data is processed in units of M / m bits (m is 2, 3, or 4), and in the decryption mode, at least the inverse value (Invers). e Substitution, Add Round key, Inverse MixColumn conversion process is a round operation execution unit and the round that processes data in units of M / m bits (m is 2, 3 or 4). A round operation unit including a round key generation unit for generating a round key to provide a round key to a key addition process; A round operation control unit controlling a round operation performed by the round operation unit; And a data storage unit for storing M / m-bit intermediate data generated in the middle stage of each round and M-bit data generated in the end stage of each round by the round operation unit. An encryption / decryption apparatus is provided.

또한, 본 발명은 M비트의 입력데이터와 N비트의 입력키를 입력받아, 소정 회수만큼 라운드연산을 수행하는 라인달 블록 암호화 방법에 있어서, 상기 방법은, 이전 라운드로부터의 M 비트 데이터를 시프트_로우(Shift_Row)변환을 가하고, 선택신호에 대응하는 M/m 비트(m은 2, 3 또는 4) 데이터만을 다음 단계로 출력하는 시프트_로우(Shift_Row)변환단계; 상기 M/m 비트 데이터에 대하여 대치(Substitution)변환을 실시하는 대치(Substitution)변환단계; 상기 M/m 비트 데이터에 대하여 믹스컬럼(MixColumn)변환을 실시하는 믹스컬럼(MixColumn)변환단계; 및 상기 M/m 비트 데이터에 동일한 크기의 라운드 키를 더하는 라운드 키 더하기(Add Round key)단계를 m개의 M/m비트 데이터 모두에 대해 수행하는 것을 하나의 라운드로 하는 라운드 연산단계; 및 상기 라운드키 더하기 단계에 라운드 키를 제공하기 위해 라운드키를 생성하는 라운드키 생성단계를 포함하는 것을 특징으로 하는 라인달 블록 암호화 방법을 제공한다.In addition, the present invention is a linedal block encryption method for receiving M-bit input data and N-bit input key and performing round operation for a predetermined number of times, the method shifting M-bit data from the previous round. A Shift_Row conversion step of applying a Low_Row conversion and outputting only the M / m bit (m is 2, 3 or 4) data corresponding to the selection signal to the next step; A substitution conversion step of performing substitution conversion on the M / m bit data; A MixColumn transformation step of performing a MixColumn transformation on the M / m bit data; And a round operation step of performing a round key addition (Add Round key) step of adding a round key of the same size to the M / m bit data for all m M / m bit data as one round; And a round key generation step of generating a round key to provide a round key to the round key addition step.

또한, 본 발명은 M비트의 입력데이터와 N비트의 입력키를 입력받아, 소정 회수만큼 라운드연산을 수행하는 라인달 블록 복호화 방법에 있어서, 상기 방법은, 이전 라운드로부터의 M 비트 데이터를 역시프트_로우(Inverse Shift_Row)변환을 가하고, 선택신호에 대응하는 M/m 비트(m은 2, 3 또는 4) 데이터만을 다음 단계로 출력하는 역시프트_로우(Inverse Shift_Row)변환단계; 상기 역시프트_로우 변환된 M/m 비트 데이터에 대하여 역대치(Inverse Substitution)변환을 실시하는 역대치(Inverse Substitution)변환단계; 상기 역대치 변환된 M/m 비트 데이터에 동일한 크기의 라운드 키를 더하는 라운드 키 더하기(Add Round key)단계; 및 상기 라운드 키를 더한 M/m 비트 데이터에 대하여 역믹스컬럼(Inverse MixColumn)변환을 실시하는 역믹스컬럼(Inverse MixColumn)변환단계를 m개의 M/m비트 데이터 모두에 대해 수행하는 것을 하나의 라운드로 하는 라운드 연산단계; 및 상기 라운드키 더하기 단계에 라운드 키를 제공하기 위해 라운드키를 생성하는 라운드키 생성단계를 포함하는 것을 특징으로 하는 라인달 블록 복호화 방법을 제공한다.In addition, the present invention is a linedal block decoding method of receiving M-bit input data and N-bit input key, and performing a round operation for a predetermined number of times, wherein the method also performs lofted M-bit data from the previous round. An Inverse Shift_Row conversion step of applying an Inverse Shift_Row conversion and outputting only M / m bit (m is 2, 3 or 4) data corresponding to the selection signal to the next step; An Inverse Substitution transformation step of performing an Inverse Substitution transformation on the also lofted-row transformed M / m bit data; An add round key step of adding a round key of the same size to the inversely-converted M / m bit data; And performing an inverse mixcolumn transformation step of performing inverse mixcolumn transformation on the M / m bit data plus the round key for all m M / m bit data. A round operation step; And a round key generation step of generating a round key to provide a round key to the round key addition step.

본 발명에 따른 라인달 블록 암/복호화 장치에서는 라인달 블록 암호화/복호화용 입력 데이터의 크기가 128비트, 192비트, 256비트 중 어느 하나일 수 있으며, 이를 일정한 크기로 잘라 라인달 블록 암호화 또는 복호화 연산과정을 거치게 되므로, 상기 연산과정에 요구되는 하드웨어 자원을 절약할 수 있다. 여기서 입력데이터를 쪼갤 수 있는 최대 수를 4이하로 하는 것이 바람직한데, 이는 라운드연산이 4단계(예컨대, 암호화의 경우에는 시프트_로우(Shift_Row); 대치(Substitution); 믹스컬럼(MixColumn); 및 라운드 키 더하기(Add Round key)의 4단계)로 이루어지는 것과 관련이 된다. 본 발명에 따른 암복호화 장치는 처리가 요구되는 데이터 및 키의 크기와 하드웨어 및 처리시간에 따른 제약조건을 모두 만족할 수 있도록, 데이터를 나누는 개수를 정할 수 있을 것이다. 그러나 일반적으로 입력데이터를 4개보다 더 많게 나누어서 처리하려면, 처리시간이 늘어남은 물론이고, 추가의 레지스터가 필요하게 될 수 있으므로 바람직하지 않다.In the linedal block encryption / decryption apparatus according to the present invention, the size of the input data for linedal block encryption / decryption may be any one of 128 bits, 192 bits, and 256 bits. Since the operation is performed, hardware resources required for the operation can be saved. Here it is desirable to have a maximum number of input data that can be split to 4 or less, which means that the round operation is performed in four steps (e.g., in the case of encryption, Shift_Row; Substitution; MixColumn); and In the four steps of Add Round key). The encryption / decryption apparatus according to the present invention may determine the number of dividing data so that both the size of the data and the key to be processed and the constraints according to hardware and processing time are satisfied. However, in general, it is not preferable to divide the input data into more than four pieces because processing time may be increased and additional registers may be required.

또한, 상기 라운드 연산을 수행하면서 동시에 128비트, 192비트, 256비트 중 어느 하나일 수 있는 입력 키(key)를 이용하여 상기 라운드 연산(즉, 라운드 키 더하기)에 필요한 라운드 키(RK)를 생성하도록 되어 있다.In addition, while performing the round operation, a round key RK required for the round operation (ie, round key addition) is generated by using an input key which may be any one of 128 bits, 192 bits, and 256 bits. It is supposed to.

본 발명에 따른 암호화/복호화 방법 및 장치에서는 입력데이터가 128비트, 192비트, 256비트 중 어느 하나인 것이 일반적이며, 입력키도 128비트, 192비트, 256비트 중 어느 하나인 것이 일반적이다. In the encryption / decryption method and apparatus according to the present invention, the input data is generally one of 128 bits, 192 bits, and 256 bits, and the input key is generally one of 128 bits, 192 bits, and 256 bits.

이하에서는 본 발명에 따른 실시예들을 첨부한 도면을 참조하여 상세히 설명하기로 한다. 설명의 편의를 위해 입력데이터와 입력키가 모두 128비트인 경우에 대해서만 설명을 하고 있지만, 입력데이터 및 입력키의 크기가 달라지는 경우에도 마찬가지로 적용이 될 수 있다. 특별히, 이하의 실시예에서는 128비트 크기의 입력데이터를 2개의 64비트 데이터로 나누어 처리하는 것에 대해 상술하고 있다. Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. For convenience of description, only the case where both the input data and the input key are 128 bits is described, but the same may be applied to the case where the size of the input data and the input key is different. In particular, in the following embodiments, the process of dividing and processing the 128-bit input data into two 64-bit data is described in detail.

도 1 및 도 2는 본 발명에 따라 128비트 입력 데이터를 128비트 입력 키(key)를 이용하여 암호화 또는 복호화하는 라인달 블록 암/복호화 장치의 실시예이다.1 and 2 are embodiments of a linedal block encryption / decryption apparatus for encrypting or decrypting 128-bit input data using a 128-bit input key according to the present invention.

도 1을 참조하면, 라운드 연산부(100)는 라인달 블록 암호화/복호화용 버스(200)를 통해 암호 또는 복호연산 시작신호(start)와 모드신호(mode)가 들어온 후 라운드 연산 제어부(300)로부터 라운드 연산 시작신호(Round_start)와 라운드 번호신호(Round_number) 및 매 라운드 연산마다 상기 128비트 입력 데이터를 상위 64비트와 하위 64비트로 나누어 선택하기 위한 비트 선택신호(sel)가 들어오면 이때부터 모드신호의 값에 따라서 128비트 입력 키(key)를 암호화용 또는 복호화용 128비트 라운드 키(RK)로 변환하여 저장한다.Referring to FIG. 1, the round operation unit 100 receives a cipher or decryption operation start signal and a mode signal from the round operation control unit 300 through the linedal block encryption / decryption bus 200. When a round operation start signal (Round_start), a round number signal (Round_number), and a bit selection signal (sel) for selecting the 128 bit input data into upper 64 bits and lower 64 bits for each round operation are received, According to the value, the 128-bit input key is converted into the 128-bit round key RK for encryption or decryption and stored.

상기 라운드 연산부(100)는 상기 모드신호의 값이 '0'을 나타내면 128비트 입력 데이터를 상위 64비트와 하위 64비트로 나누어 각각 시프트_로우, 대치, 믹스컬럼, 라운드 키 더하기의 변환 과정으로 이루어진 라운드 연산을 수행하여 상기 128비트 입력 데이터를 암호화한다.When the value of the mode signal indicates '0', the round operation unit 100 divides the 128-bit input data into upper 64-bits and lower 64-bits, and includes a conversion process of shift_low, replace, mix column, and round key addition. An operation is performed to encrypt the 128-bit input data.

상기 라운드 연산부(100)는 상기 모드신호의 값이 '1'을 나타내면, 128비트 입력 데이터를 상위 64비트와 하위 64비트로 나누어 각각 역시프트_로우, 역대치, 라운드 키 더하기, 역믹스컬럼의 변환 과정으로 이루어진 라운드 연산을 수행하여 상기 128비트 입력 데이터를 복호화한다.When the value of the mode signal indicates '1', the round operation unit 100 divides the 128-bit input data into upper 64-bits and lower 64-bits, and also converts loft_low, reverse value, round key addition, and inverse mix column. A round operation is performed to decode the 128-bit input data.

라운드 연산 제어부(300)는 상기 버스(200)를 통해 암호 또는 복호연산 시작신호와 모드신호가 들어오면 이때부터 라운드 연산 시작신호(Round_start)와 라운드 번호신호(Round_number) 및 매 라운드 연산마다 상기 128비트 입력 데이터를 상위 64비트와 하위 64비트로 나누어 선택하기 위한 비트 선택신호(sel)를 상기 라운드 연산부(100)로 전달하여 상기 라운드 연산부(100)의 라운드 연산 작동을 제어한다.The round operation control unit 300 receives a cipher or decryption operation start signal and a mode signal through the bus 200, and then the round operation start signal Round_start, the round number signal Round_number, and the 128 bits for every round operation. The bit select signal sel for selecting and dividing the input data into upper 64 bits and lower 64 bits is transmitted to the round operation unit 100 to control the round operation operation of the round operation unit 100.

64비트 데이터 레지스터(400)는 상기 라운드 연산부(100)에 의해 수행되는 매 라운드 연산 중에 생성되는 상위 64비트 입력 데이터의 중간 암호 또는 복호 데이터를 저장한다.The 64-bit data register 400 stores intermediate cipher or decrypted data of the upper 64-bit input data generated during every round operation performed by the round operation unit 100.

128비트 데이터 레지스터(500)는 상기 라운드 연산부(100)에 의해 수행되는 매 라운드 연산 중에 생성되는 하위 64비트 입력 데이터의 중간 암호 또는 복호 데이터를 하위 64비트로 저장하고, 매 라운드 연산 결과로 생성된 상기 상위 64비트 데이터 및 상기 하위 64비트 데이터를 각각 상위 및 하위 64비트로 저장하여, 128비트 데이터를 다음 라운드의 입력데이터로 제공한다.The 128-bit data register 500 stores the intermediate cipher or decrypted data of the lower 64-bit input data generated during every round operation performed by the round operation unit 100 as the lower 64-bit, and generates the result of every round operation. Upper 64-bit data and the lower 64-bit data are stored as upper and lower 64-bits, respectively, to provide 128-bit data as input data for the next round.

도 1에 있어서, 매 라운드 연산 중에 생성되는 128비트 입력 데이터의 중간 암/복호 데이터, 매 라운드 종료시의 암/복호 데이터와 마지막 라운드 연산 결과로 생성된 최종 암호 또는 복호 데이터를 저장하는 복수의 데이터 레지스터로서 64비트 데이터 레지스터(400)와 128비트 데이터 레지스터(500)를 사용하지만, 다른 실시예로서 192비트 또는 256비트 입력 데이터를 128비트, 192비트, 256비트 입력 키(key) 중 어느 하나를 이용하여 암호화 또는 복호화하는 경우, 상기 복수의 데이터 레지스터는 다른 구조로 구현된다.1, a plurality of data registers for storing intermediate encryption / decryption data of 128-bit input data generated during each round operation, encryption / decryption data at the end of each round, and final encryption or decryption data generated as a result of the last round operation. In this embodiment, the 64-bit data register 400 and the 128-bit data register 500 are used. However, in another embodiment, any one of 128-bit, 192-bit, and 256-bit input keys is used for 192-bit or 256-bit input data. In this case, the plurality of data registers are implemented in a different structure.

예컨대, 192비트 입력 데이터를 암호화 또는 복호화하는 경우, 상기 라운드 연산부(100)에 의해 수행되는 매 라운드 연산 중에 생성되는 상위 64비트 입력 데이터와 그 다음 64비트 입력 데이터의 중간 암호 또는 복호 데이터를 각각 저장하는 2개의 64비트 데이터 레지스터(또는 1개의 128비트 데이터 레지스터)와, 상기 라운드 연산부(100)에 의해 수행되는 매 라운드 연산 중에 생성되는 하위 64비트 입력 데이터의 중간 암호 또는 복호 데이터를 하위 64비트로 저장하고, 매 라운드 연산 결과로 생성된 상기 2개의 64비트 데이터 레지스터에 각각 저장된 암호 또는 복호 데이터를 상위 64비트와 그 다음 64비트로 저장하는 192비트 데이터 레지스터로 구현될 수 있다.For example, when encrypting or decrypting 192 bit input data, the upper 64-bit input data generated during each round operation performed by the round operation unit 100 and the intermediate cipher or decrypted data of the next 64-bit input data are stored, respectively. Storing two 64-bit data registers (or one 128-bit data register) and intermediate cipher or decrypted data of lower 64-bit input data generated during every round operation performed by the round operation unit 100 as lower 64-bit data. In addition, the encryption or decryption data stored in each of the two 64-bit data registers generated as a result of each round operation may be implemented as a 192-bit data register that stores the upper 64-bit and the next 64-bit.

본 발명의 구현에 필요한 레지스터 공간의 크기(R)를 보다 일반적으로 표현하면, R = M(m-1)/m + M = (2m-1)M/m[여기서 M 은 입력테이터의 비트수, m 은 나누어져서 처리되는 데이터의 개수임]로 나타낼 수 있다. 상기 실시예를 예로 들어 보면, 128비트가 64비트 2개로 나누어져서 처리되므로, R = 128*1/2 + 128 = 192비트가 된다. 또한, 192비트가 3개로 나누어져서 처리되는 경우라면, R = 192*2/3 + 192 = 320비트가 되는 것을 알 수 있다. 이는 일반적인 파이프라인 방식을 이용하 는 것에 비해 M/m 만큼의 레지스터 공간을 절약할 수 있는 효과를 준다. More generally, the size (R) of the register space required for the implementation of the present invention, R = M (m-1) / m + M = (2m-1) M / m, where M is the number of bits of the input data , m is the number of data that is divided and processed. Taking the above embodiment as an example, since 128 bits are divided and processed into two 64 bits, R = 128 * 1/2 + 128 = 192 bits. In addition, when 192 bits are divided into three and processed, it turns out that R = 192 * 2/3 + 192 = 320 bits. This saves M / m of register space compared to using the traditional pipeline method.

도 2를 참조하면, 상기 라운드 연산부(100)의 라운드 키 생성부(110)는 상기 라운드 연산 제어부(300)로부터 라운드 연산 시작신호와 라운드 번호신호가 들어오면 상기 버스(200)를 통해 들어온 모드신호의 값에 따라서 128비트 입력 키(key)를 암호화용 또는 복호화용 128비트 라운드 키(RK)로 변환하여 내부의 128비트 라운드 키 레지스터에 저장한다.Referring to FIG. 2, the round key generation unit 110 of the round operation unit 100 receives a round operation start signal and a round number signal from the round operation control unit 300 and enters a mode signal entered through the bus 200. According to the value of the 128-bit input key (key) is converted into a 128-bit round key (RK) for encryption or decryption and stored in the internal 128-bit round key register.

상기 라운드 연산부(100)의 시프트/역시프트_로우 변환부(120)는 상기 라운드 연산 제어부(300)로부터 라운드 연산 시작신호와 비트 선택신호가 들어오면 상기 버스(200)를 통해 들어온 모드신호의 값에 따라서 128비트의 이전 라운드의 데이터(단, 제1라운드에서는 128비트 입력데이터)를 바이트 시프트 변환한 후, 상기 비트 선택신호의 값에 따라서 출력이 제어되는 내부의 제1다중화기(121)를 통해 시프트 변환된 128비트 데이터를 상위 64비트(비트선택신호="1"인 경우)와 하위 64비트(비트선택신호="0"인 경우)로 순차적으로 나누어 출력한다.The shift / reverse shift_low converter 120 of the round operation unit 100 receives a value of a mode signal input through the bus 200 when a round operation start signal and a bit selection signal are received from the round operation control unit 300. According to the byte shift conversion of the data of the previous round of 128 bits (128-bit input data in the first round), the internal first multiplexer 121 whose output is controlled in accordance with the value of the bit select signal. The 128-bit data shift-shifted through the output is sequentially divided into upper 64 bits (when bit selection signal = "1") and lower 64 bits (when bit selection signal = "0").

상기 라운드 연산부(100)의 대치/역대치 변환부(130)는 상기 시프트/역시프트_로우 변환부(120)로부터 출력되는 상위 64비트 데이터 또는 하위 64비트 데이터를 한 바이트의 입력에 대해서 한 바이트의 출력을 내보내는 대치 박스(S-box) 또는 역대치 박스(SI-box)를 이용하여 대치 또는 역대치 연산한다.The substitution / reverse substitution converter 130 of the round operation unit 100 performs one byte for one byte of input of upper 64-bit data or lower 64-bit data output from the shift / reverse shift_row converter 120. Substitution or inverse substitution is performed using a substitution box (S-box) or an inverse substitution box (SI-box) that outputs the output of.

상기 라운드 연산부(100)의 제1역다중화기(140)는 상기 대치/역대치 변환부(130)로부터 출력되는 상위 64비트 데이터 또는 하위 64비트 데이터를 상기 모드신호의 값에 따라서 암호 출력단(0)과 복호 출력단(1) 중 어느 하나로 출력한 다.The first demultiplexer 140 of the round operation unit 100 encrypts the upper 64-bit data or the lower 64-bit data output from the replace / reverse substitute converter 130 according to the value of the mode signal. And one of the decoding output stage (1).

상기 라운드 연산부(100)의 믹스/역믹스컬럼 변환부(150)는 상기 제1역다중화기(140)의 암호 출력단(0)을 통해 입력되는 상위 64비트 데이터 또는 하위 64비트 데이터를 믹스컬럼 변환하거나 라운드 키 더하기 변환된 상위 64비트 데이터 또는 하위 64비트 데이터를 역믹스컬럼 변환한다.The mix / inverse mix column converter 150 of the round operator 100 may mix-column convert upper 64-bit data or lower 64-bit data input through the cryptographic output terminal 0 of the first demultiplexer 140. Round key plus Inverse mix column transform of the converted upper 64-bit data or lower 64-bit data.

상기 라운드 연산부(100)의 제2역다중화기(160)는 상기 믹스/역믹스컬럼 변환부(150)로부터 출력되는 상위 64비트 데이터 또는 하위 64비트 데이터를 상기 모드신호의 값에 따라서 암호 출력단(0)과 복호 출력단(1) 중 어느 하나로 출력한다.The second demultiplexer 160 of the round operation unit 100 encrypts the upper 64-bit data or the lower 64-bit data output from the mix / inverse mix column converter 150 according to the value of the mode signal. ) And one of the decoding output stage (1).

상기 라운드 연산부(100)의 라운드 키 더하기 변환부(170)는 상기 제1역다중화기(140)의 복호 출력단(1) 또는 상기 제2역다중화기(160)의 암호 출력단(0)을 통해 입력되는 상위 64비트 데이터 또는 하위 64비트 데이터를 상기 라운드 키 생성부(110)로부터 출력되는 암호화용 또는 복호화용 128비트 라운드 키(RK)와 라운드 키 더하기 변환한다.The round key addition conversion unit 170 of the round operation unit 100 is a higher level input through the decryption output terminal 1 of the first demultiplexer 140 or the cryptographic output terminal 0 of the second demultiplexer 160. The 64-bit data or the lower 64-bit data is converted by the round key plus the 128-bit round key RK for encryption or decryption output from the round key generation unit 110.

상기 라운드 연산부(100)의 제3역다중화기(180)는 상기 라운드 키 더하기 변환부(170)로부터 출력되는 상위 64비트 데이터 또는 하위 64비트 데이터를 상기 모드신호의 값에 따라서 암호 출력단(0)과 복호 출력단(1) 중 어느 하나로 출력한다.The third demultiplexer 180 of the round operation unit 100 transmits the upper 64-bit data or the lower 64-bit data output from the round key addition converter 170 and the cipher output terminal 0 according to the value of the mode signal. Output to either of the decoding output stages 1.

여기서, 설명한 암/복호화 장치는 암호화모드와 복호화모드에서 사용되는 하드웨어 리소스를 공유하여, 하드웨어가 차지하는 면적을 최소화하고, 128비트의 데이터를 처리하면서도 64비트처리용 모듈을 사용할 수 있게 하며, 그렇게 하면서도 처리시간이 거의 늘어나지 않게 된다(연산처리 타이밍에 대해서는 후술함). Here, the encryption / decryption apparatus described above shares hardware resources used in the encryption mode and the decryption mode, thereby minimizing the area occupied by the hardware, and enabling the use of 64-bit processing modules while processing 128 bits of data. The processing time hardly increases (the operation processing timing will be described later).

도 3은 본 발명에 따른 라운드 키 생성부의 일실시예를 나타낸다. 여기서, 라운드 키 생성부(110)의 128비트 프리 키 레지스터(111)는 버스(200)를 통해 들어온 128비트 입력 키(key)를 암호화용 또는 복호화용 128비트 라운드 키(RK)로 변환하기 위한 프리 키(prekey)로 저장하고, 매 라운드 연산후 생성된 128비트 라운드 키(RK)를 다음 라운드 연산에서 사용되는 라운드 키(RK)를 생성하기 위한 프리 키(prekey)로 저장한다.3 shows an embodiment of a round key generator according to the present invention. Here, the 128-bit free key register 111 of the round key generating unit 110 converts the 128-bit input key (key) entered through the bus 200 into a 128-bit round key (RK) for encryption or decryption. A 128-bit round key RK generated after each round operation is stored as a prekey for generating a round key RK used in the next round operation.

상기 라운드 키 생성부(110)의 128비트 키 레지스터(111a)는 매 라운드 연산을 위한 암호화용 또는 복호화용 128비트 라운드 키(RK)를 저장한다. 도 3에서 상기 128비트 라운드 키 레지스터(111a)에 저장되는 128비트 라운드 키(RK)는 매 라운드 연산 종료 후 상기 128비트 프리 키 레지스터(111)에 백업되어 다음 라운드 연산에서 이전 라운드의 라운드 키(prekey)로 사용된다.The 128-bit key register 111a of the round key generation unit 110 stores the 128-bit round key RK for encryption or decryption for each round operation. In FIG. 3, the 128-bit round key RK stored in the 128-bit round key register 111a is backed up to the 128-bit free key register 111 after each round operation is completed, and the round key of the previous round in the next round operation ( prekey).

상기 라운드 키 생성부(110)의 상수저장부(112)는 상기 라운드 연산 제어부(300)로부터 들어오는 라운드 번호신호가 나타내는 라운드가 몇 번째 라운드인지에 따라서 결정되는 상수값(Rcon)을 저장한다. 상기 상수저장부(112)로는 ROM을 사용하는 것이 바람직하다.The constant storage unit 112 of the round key generation unit 110 stores a constant value Rcon that is determined according to the number of rounds that the round indicated by the round number signal coming from the round operation control unit 300 is. It is preferable to use a ROM as the constant storage unit 112.

상기 라운드 키 생성부(110)의 제2다중화기(113)는 상기 버스(200)를 통해 들어온 모드신호의 값에 따라서 출력이 제어되어 상기 128비트 프리 키 레지스터(111)와 상기 128비트 라운드 키 레지스터(111a)로부터 입력되는 암호화용 또는 복호화용 32비트 키 중 어느 하나를 선택하여 출력한다.The second multiplexer 113 of the round key generation unit 110 controls the output according to the value of the mode signal input through the bus 200, so that the 128-bit free key register 111 and the 128-bit round key are controlled. Any one of an encryption or decryption 32-bit key input from the register 111a is selected and output.

상기 라운드 키 생성부(110)의 시프트기(114)는 상기 제2다중화기(113)를 통 해 입력되는 32비트 키를 한 바이트 왼쪽으로 순환 시프트한다.The shifter 114 of the round key generator 110 cyclically shifts a 32-bit key input through the second multiplexer 113 to one byte to the left.

상기 라운드 키 생성부(110)의 대치변환기(115)는 대치 연산을 수행하는 대치 박스들로 이루어져 상기 시프트기(114)에 의해 순환 시프트된 32비트 키를 대치 변환한다.The replace converter 115 of the round key generator 110 includes replace boxes that perform a replace operation, and replaces the 32-bit key cyclically shifted by the shifter 114.

상기 라운드 키 생성부(110)의 제1XOR연산기(116)는 상기 대치변환기(115)로부터 출력되는 32비트 키 중 최상위 한 바이트 값과 상기 상수저장부(112)에 저장된 상수값과의 XOR연산을 수행한다.The first XOR operator 116 of the round key generator 110 performs an XOR operation on the most significant byte value of the 32-bit key output from the replacement converter 115 and the constant value stored in the constant storage unit 112. To perform.

상기 라운드 키 생성부(110)의 라운드 XOR연산부(117)는 상기 제1XOR연산기(116)의 출력 값과 대치변환기(115)의 최상위 한 바이트 값을 제외한 나머지 24비트 값이 합쳐진 32비트 값과, 상기 128비트 프리 키 레지스터(111)에 저장되는 이전 라운드의 128비트 라운드 키(prekey) 및, 상기 128비트 라운드 키 레지스터(111a)에 저장되는 새로운 라운드의 128비트 라운드 키(RK)를 이용하는 XOR연산을 수행하여 상기 128비트 라운드 키 레지스터(111a)에 저장되는 암호화용 또는 복호화용 128비트 라운드 키(RK)를 라운드 연산의 매 라운드마다 새롭게 생성한다.The round XOR operator 117 of the round key generator 110 may include a 32-bit value obtained by adding up the output value of the first XOR operator 116 and the remaining 24-bit value except the most significant byte value of the substitution converter 115; XOR operation using the previous round 128-bit round key stored in the 128-bit free key register 111 and the new round 128-bit round key RK stored in the 128-bit round key register 111a. Then, the encryption or decryption 128-bit round key RK stored in the 128-bit round key register 111a is newly generated for each round of the round operation.

상기 라운드 XOR연산부(117)의 제2XOR연산기(118)는 상기 제1XOR연산기(116)의 출력 값과 대치변환기(115)의 최상위 한 바이트 값을 제외한 나머지 24비트 값이 합쳐진 32비트 값과, 이전 라운드의 128비트 라운드 키 중 최상위 32비트(PK0)를 XOR연산하여 새로운 라운드의 암호화용 또는 복호화용 128비트 라운드 키 중 최상위 32비트 라운드 키(RK0)를 생성한다.The second XOR operator 118 of the round XOR operator 117 is a 32-bit value obtained by adding up the output value of the first XOR operator 116 and the remaining 24-bit value except the most significant one byte value of the substitution converter 115, and XOR operation of the most significant 32 bits (PK0) of the 128 bit round keys of the round generates the most significant 32 bit round key (RK0) of the 128 bit round keys for encryption or decryption of the new round.

상기 라운드 XOR연산부(117)의 제3XOR연산기(118a)는 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)와 이전 라운드의 128비트 라운드 키 중 최상위 32비트 다음의 95번째부터 64번째까지의 32비트 라운드 키(PK1)를 XOR연산하여 새로운 라운드의 암호화용 128비트 라운드 키 중 95번째부터 64번째까지의 32비트 라운드 키(RK1)를 생성한다.The third XOR operator 118a of the round XOR operator 117 is the most significant 32-bit round key RK0 of 127th to 96th of the 128-bit round key of the new round and the most significant 32-bit of the 128-bit round key of the previous round. The next 95-64th 32-bit round key (PK1) is XORed to generate the 95-64th 32-bit round key (RK1) of the new round encryption 128-bit round key.

상기 제3XOR연산기(118a)는 이전 라운드의 128비트 라운드 키의 127번째부터 96번째까지의 최상위 32비트 라운드 키(PK0)와 그 다음 95번째부터 64번째까지의 32비트 라운드 키(PK1)를 XOR연산하여 새로운 라운드의 복호화용 128비트 라운드 키 중 95번째부터 64번째까지의 32비트 라운드 키(RK1)를 생성한다.The third XOR operator 118a XORs the 127th to 96th highest 32bit round key (PK0) and the next 95th to 64th 32bit round key (PK1) of the 128bit round key of the previous round. The operation generates the 95th to 64th 32-bit round key RK1 among the 128-bit round keys for decryption of a new round.

상기 라운드 XOR연산부(117)의 제3다중화기(119)는 상기 버스(200)를 통해 들어온 모드신호의 값에 따라서 출력이 제어되어 상기 제3XOR연산기(118a)의 입력신호를 선택적으로 결정한다.The output of the third multiplexer 119 of the round XOR operator 117 is controlled according to the value of the mode signal input through the bus 200 to selectively determine the input signal of the third XOR operator 118a.

상기 라운드 XOR연산부(117)의 제4XOR연산기(118b)는 새로운 라운드의 128비트 라운드 키 중 95번째부터 64번째까지의 32비트 라운드 키(RK1)와 이전 라운드의 128비트 라운드 키 중 63번째부터 32번째까지의 32비트 라운드 키(PK2)를 XOR연산하여 새로운 라운드의 암호화용 128비트 라운드 키 중 63번째부터 32번째까지의 32비트 라운드 키(RK2)를 생성한다.The fourth XOR operator 118b of the round XOR operator 117 is a 32-bit round key (RK1) from 95th to 64th of the 128-bit round key of the new round and 63-32 of the 128-bit round key of the previous round. XOR operation of the first 32-bit round key (PK2) generates the 32-bit round key (RK2) of the 63rd to 32nd of the 128-bit round key for encryption of the new round.

상기 제4XOR연산기(118b)는 이전 라운드의 128비트 라운드 키의 95번째부터 64번째까지의 32비트 라운드 키(PK1)와 그 다음 63번째부터 32번째까지의 32비트 라운드 키(PK2)를 XOR연산하여 새로운 라운드의 복호화용 128비트 라운드 키 중 63 번째부터 32번째까지의 32비트 라운드 키(RK2)를 생성한다.The fourth XOR operator 118b performs an XOR operation on the 95 th to 64 th 32 bit round keys PK1 and the next 63 th to 32 th 32 bit round keys PK2 of the 128 bit round key of the previous round. To generate the 32-bit round key (RK2) from the 63rd to 32nd of the 128-bit round key for decryption of the new round.

상기 라운드 XOR연산부(117)의 제4다중화기(119a)는 상기 버스(200)를 통해 들어온 모드신호의 값에 따라서 출력이 제어되어 상기 제4XOR연산기(118b)의 입력신호를 선택적으로 결정한다.The output of the fourth multiplexer 119a of the round XOR operator 117 is controlled according to the value of the mode signal input through the bus 200 to selectively determine the input signal of the fourth XOR operator 118b.

상기 라운드 XOR연산부(117)의 제5XOR연산기(118c)는 새로운 라운드의 128비트 라운드 키 중 63번째부터 32번째까지의 32비트 라운드 키(RK2)와 이전 라운드의 128비트 라운드 키 중 31번째부터 0번째까지의 32비트 라운드 키(PK3)를 XOR연산하여 새로운 라운드의 암호화용 128비트 라운드 키 중 31번째부터 0번째까지의 32비트 라운드 키(RK3)를 생성한다.The fifth XOR operator 118c of the round XOR operator 117 is a 32-bit round key (RK2) from the 63rd to 32nd of the 128-bit round key of the new round and the 31st to 0 of the 128-bit round key of the previous round. XOR operation of the 32-bit round key (PK3) up to the first to generate the 32-bit round key (RK3) from the 31st to 0th of the 128-bit round key for encryption of the new round.

상기 제5XOR연산기(118c)는 이전 라운드의 128비트 라운드 키의 63번째부터 32번째까지의 32비트 라운드 키(PK2)와 그 다음 31번째부터 0번째까지의 32비트 라운드 키(PK3)를 XOR연산하여 새로운 라운드의 복호화용 128비트 라운드 키 중 31번째부터 0번째까지의 32비트 라운드 키(RK3)를 생성한다.The fifth XOR operator 118c performs an XOR operation on the 63rd to 32nd 32-bit round key (PK2) and the next 31st to 0th 32-bit round key (PK3) of the 128-bit round key of the previous round. To generate the 32-bit round key RK3 from the 31st to the 0th round of the 128-bit round key for decryption of the new round.

상기 라운드 XOR연산부(117)의 제5다중화기(119b)는 상기 버스(200)를 통해 들어온 모드신호의 값에 따라서 출력이 제어되어 상기 제5XOR연산기(118c)의 입력신호를 선택적으로 결정한다.The fifth multiplexer 119b of the round XOR operator 117 controls the output according to the value of the mode signal input through the bus 200 to selectively determine the input signal of the fifth XOR operator 118c.

상기와 같이 구성되는 본 발명에 따른 라인달 블록 암복호 장치는 다음과 같이 작동하여 암호화 및 복호화 과정을 수행한다.The linedal block encryption / decryption apparatus according to the present invention configured as described above operates as follows to perform an encryption and decryption process.

먼저, 도 1과 도 2를 참조하여 라인달 블록 암호 장치의 암호화 및 복호화 동작을 살펴보면 다음과 같다.First, referring to FIGS. 1 and 2, the encryption and decryption operations of the linedal block cipher apparatus are as follows.

라운드 연산이 시작되면 최초의 128비트 입력 키(key)가 버스(200)를 통해서 라운드 키 생성부(100)로 들어감에 따라서 라운드 키 생성 과정이 진행되고, 128비트 입력 데이터(data)는 시프트/역시프트_로우 변환부(120)에 들어간다. 여기서, 상기 128비트 입력데이터는 버스(200)로부터 128비트 데이터 레지스터(500)를 경유하여 상기 시프트/역시프트_로우 변환부(120)로 들어온 것이다(도1 및 도2 참조). 이와 같은 방법으로 상기 입력데이터가 버스(200)로부터 라운드연산부(100)(즉, 시프트/역시프트_로우 변환부(120))로 제공되도록 하는 구성은 상기 128비트 데이터 레지스터(500)가 입력데이터 레지스터의 기능도 동시에 수행할 수 있도록 할 수 있다는 이점이 있다. 그러나 설계자의 의도에 따라 이 부분의 구성은 얼마든지 달리 할 수 있음은 물론이다. When the round operation starts, the round key generation process proceeds as the first 128-bit input key enters the round key generator 100 through the bus 200, and the 128-bit input data is shifted / Also, the loft_row converter 120 enters. Here, the 128-bit input data is input from the bus 200 to the shift / reverse shift_row converter 120 via the 128-bit data register 500 (see FIGS. 1 and 2). In this way, the input data is provided from the bus 200 to the round operator 100 (that is, the shift / inverse shift_low converter 120). The advantage is that the functions of the registers can be performed simultaneously. However, depending on the designer's intention, the configuration of this part can be made differently.

이렇게 입력된 상기 128비트 입력 데이터에 대해, 상기 시프트/역시프트_로우 변환부(120)는 암호/복호 과정에 따라 라인달 블록 암호알고리즘에 정의된 대로 각기 다른 수만큼의 바이트 시프트/역시프트 변환을 수행한다.For the 128-bit input data input as described above, the shift / inverse shift_low conversion unit 120 converts a different number of byte shift / inverse shifts as defined in the linedal block encryption algorithm according to an encryption / decoding process. Do this.

만약, 상기 라운드 연산 제어부(300)에서 상위 64비트를 선택하는 신호(sel='1')를 보내오면 상기 시프트/역시프트_로우 변환부(120)는 제1다중화기(121)를 통해서 상위 64비트를 출력하고, 상기 라운드 연산 제어부(300)에서 하위 64비트를 선택하는 신호(sel='0')를 보내오면 제1다중화기(121)를 통해서 하위 64비트를 출력한다.If the round operation control unit 300 sends a signal (sel = '1') for selecting the upper 64 bits, the shift / inverse shift_low conversion unit 120 receives the upper level through the first multiplexer 121. When the 64-bit is output, and the round operation controller 300 sends a signal (sel = '0') for selecting the lower 64-bit, the lower 64-bit is output through the first multiplexer 121.

상기와 같이 바이트 시프트/역시프트_로우 변환이 수행되고 나면, 다음으로 상기 상위 또는 하위 64비트 데이터는 대치/역대치 연산을 수행하는 대치/역대치 변환부(130)로 들어가서 대치 박스나 역대치 박스에 의해 대치 또는 역대치 연산된다. 이때, 상기 대치 박스와 역대치 박스는 라인달 알고리즘의 스펙에 정의된 바와 같이 한 바이트의 입력에 대해서 한 바이트의 출력을 내보내는 대치 변환기로써 작용한다. 또한, 본 발명에서 제안하는 대치/역대치 변환부(130)는 한번에 64비트의 데이터만 처리하면 되기 때문에 8개의 대치 박스나 8개의 역대치 박스만이 필요하다.After the byte shift / reverse shift_low conversion is performed as described above, the upper or lower 64-bit data enters the replace / reverse replace unit 130 that performs the replace / reverse replace operation and replaces the replace box or reverse replace. Substitution or inverse substitution is performed by a box. At this time, the substitution box and the reverse substitution box serve as a substitution converter for outputting one byte of output for one byte of input as defined in the specification of the linedal algorithm. In addition, since the substitution / inverse substitution converter 130 proposed in the present invention only needs to process 64-bit data at a time, only eight replacement boxes or eight reverse substitution boxes are required.

상기와 같이 대치/역대치 변환이 수행되고 난 상태에서, 상기 버스(200)에서 암호 과정을 선택하는 모드신호(mode='0')를 보내오면 상기 상위 또는 하위 64비트 데이터는 제1역다중화기(140)의 암호 출력단(0)을 통해서 믹스/역믹스컬럼 변환부(150)의 입력으로 들어가고, 상기 버스(200)에서 복호 과정을 선택하는 모드신호(mode='1')를 보내오면 상기 상위 또는 하위 64비트 데이터는 제1역다중화기(140)의 복호 출력단(1)을 통해서 라운드 키 더하기 변환부(170)의 입력으로 들어간다.In the state where the substitution / inverse substitution conversion is performed as described above, when the mode signal (mode = '0') for selecting an encryption process is sent from the bus 200, the upper or lower 64-bit data is converted into a first demultiplexer. Entering the input of the mix / inverse mix column conversion unit 150 through the cryptographic output terminal (0) of 140, and sends a mode signal (mode = '1') to select a decoding process from the bus 200 The upper or lower 64-bit data enters the input of the round key addition converter 170 through the decoding output stage 1 of the first demultiplexer 140.

믹스/역믹스컬럼 변환을 거친 64비트 데이터는 상기 버스(200)에서 암호 과정을 선택하는 모드신호(mode='0')를 보내오면 제2역다중화기(160)의 암호 출력단(0)을 통해서 라운드 키 더하기 변환부(170)의 입력으로 들어가고, 상기 버스(200)에서 복호 과정을 선택하는 모드신호(mode='1')를 보내오면 상기 제2역다중화기(160)의 복호 출력단(1)을 통해서 라운드 연산의 결과 데이터로 출력된다.The 64-bit data that has undergone the mix / inverse mix column conversion sends a mode signal (mode = '0') to select an encryption process from the bus 200 through the encryption output terminal 0 of the second demultiplexer 160. The decoded output stage 1 of the second demultiplexer 160 is inputted to the input of the round key addition converter 170 and sends a mode signal (mode = '1') for selecting a decoding process from the bus 200. Outputs the result data of round operation through.

또한, 상기 라운드 키 더하기 변환을 거친 64비트 데이터는 상기 버스(200)에서 암호 과정을 선택하는 모드신호(mode='0')를 보내오면 제3역다중화기(180)의 암호 출력단(0)을 거쳐 라운드 연산의 출력 결과가 되고, 상기 버스(200)에서 복호 과정을 선택하는 모드신호(mode='1')를 보내오면 제3역다중화기(180)의 복호 출력단(1)을 거쳐 믹스/역믹스컬럼 변환부(150)의 입력이 된다.In addition, the 64-bit data that has undergone the round-key plus conversion sends a cipher output terminal 0 of the third demultiplexer 180 when the bus 200 sends a mode signal (mode = '0') to select an encryption process. After the round operation results in the output, the bus 200 sends a mode signal for selecting a decoding process (mode = '1') through the decoding output stage 1 of the third demultiplexer 180. The input of the mix column converter 150 is performed.

이상의 과정은 상위 64비트 및 하위 64비트 데이터 각각에 대해 모두 수행되며(처리 타이밍에 대해서는 후술함), 이것이 하나의 라운드가 되며, 이러한 과정이 소정의 라운드만큼 반복된다.The above process is performed for each of the upper 64-bit and lower 64-bit data (described later in the processing timing), and this becomes one round, and this process is repeated by a predetermined round.

상기한 바와 같이, 본 발명에서는 암호화 과정과 복호화 과정에서 공통으로 사용되는 구성요소를 공유하여 하드웨어 리소스의 사용을 줄이고자 하였기 때문에 각 변환부는 암호화 변환과 복호화 변환의 기능을 모두 갖고 있다.As described above, since the present invention intends to reduce the use of hardware resources by sharing the components commonly used in the encryption process and the decryption process, each transform unit has both functions of encryption conversion and decryption conversion.

한편, 도 3을 참조하여 라운드 키 생성부(110)가 본 발명에 따른 라인달 블록 암호 장치의 암호화 및 복호화 동작에 필요한 암호화용 또는 복호화용 라운드 키를 생성하는 동작을 살펴보면 다음과 같다.Meanwhile, referring to FIG. 3, the operation of generating the encryption or decryption round key required for the encryption and decryption operation of the linedal block encryption apparatus according to the present invention will be described as follows.

상기 라운드 연산 제어부(300)로부터 클럭 주기가 일정한 라운드 연산 시작신호와 라운드 번호신호가 라운드 연산부(100)로 들어오면 이때부터 라운드 연산이 시작된다.When the round operation start signal and the round number signal having a constant clock cycle from the round operation control unit 300 enter the round operation unit 100, the round operation starts from this time.

라운드 연산이 시작되면 상기 라운드 키 생성부(110)는 128비트 프리 키 레지스터(111)에 저장된 이전 라운드의 128비트 라운드 키(prekey)를 이용하여 새로운 라운드의 라운드 키(RK)를 생성하기 시작한다.When the round operation is started, the round key generation unit 110 starts to generate a new round key RK by using the 128-bit round key of the previous round stored in the 128-bit free key register 111. .

상기 버스(200)에서 암호 과정을 선택하는 모드신호(mode='0')를 보내오는 경우, 먼저 상기 128비트 프리 키 레지스터(111)의 이전 라운드의 128비트 라운드 키 중 최하위 32비트(PK3)가 제2다중화기(113)를 거쳐 시프트기(114)의 입력으로 들어간다.When the mode signal (mode = '0') for selecting an encryption process is sent from the bus 200, the least significant 32 bits (PK3) of the 128-bit round keys of the previous round of the 128-bit free key register 111 are first transmitted. Enters the input of shifter 114 via second multiplexer 113.

반면에, 상기 버스(200)에서 복호 과정을 선택하는 모드신호(mode='1')를 보내오는 경우, 먼저 상기 제5XOR연산기(118c)가 이전 라운드의 라운드 키 중 하위 64비트(PK2,PK3)를 32비트씩 서로 XOR연산하여 새로운 라운드 키의 최하위 32비트(RK3)로 임시 저장함과 동시에 이 값(RK3)은 상기 제2다중화기(113)를 거쳐 시프트기(114)의 입력으로 들어간다.On the other hand, when the bus 200 sends a mode signal (mode = '1') for selecting a decoding process, the fifth XOR operator 118c first performs the lower 64 bits (PK2, PK3) of the round keys of the previous round. ) XOR operation of 32 bits each other to temporarily store the lowest 32 bits (RK3) of the new round key, and the value (RK3) enters the input of the shifter 114 through the second multiplexer 113.

상기 시프트기(114)로 들어간 32비트 키는 한 바이트 왼쪽으로 순환 시프트 연산된 다음, 4개의 대치 박스로 이루어진 대치변환기(115)로 들어가 대치 변환된다.The 32-bit key entered into the shifter 114 is cyclically shifted one byte to the left, and then entered and replaced by a replacement converter 115 consisting of four replacement boxes.

상기와 같이 대치 변환을 마친 32비트 키들 중 최상위 8비트 키는 상기 제1XOR연산기(116)에 의해 상기 라운드 연산 제어부(300)로부터 들어오는 라운드 번호신호가 나타내는 라운드가 몇 번째 라운드인지에 따라서 결정되는 상수값(Rcon)과 XOR연산되고, 이 제1XOR연산기(116)의 결과값 8비트와 상기 대치변환기(115)의 대치 연산 결과인 나머지 24비트가 합해져서 상기 라운드 XOR연산부(117)의 제2XOR연산기(118)의 입력으로 들어간다.The most significant 8-bit key among the 32-bit keys that have undergone the substitution conversion as described above is a constant determined according to the number of rounds indicated by the round number signal coming from the round operation control unit 300 by the first XOR operator 116. A value Rcon and an XOR operation are added, and the resultant 8 bits of the first XOR operator 116 and the remaining 24 bits which are the result of the substitution operation of the substitution converter 115 are added together to form the second XOR operator of the round XOR operator 117. Enter the input of (118).

특히, 이때 라운드 키 생성 과정 중 라운드 번호와 관계되는 상수값을 XOR연산을 하는 부분을 상기 대치변환기(115)를 통과한 32비트 데이터 중 상위 8비트만으로 한정함으로써 하드웨어 면적 감소 효과를 얻을 수 있다. 한편, 이 부분에 대해서 라인달 알고리즘 스펙에서는 라운드 번호와 관계되는 상수값을 8비트의 상수 값에 24비트의 '0'을 패딩하여 32비트를 만든 후 대치변환기(115)를 통과한 32비트 값과 XOR연산하는 구조로 설명되어 있다.In particular, the hardware area reduction effect can be obtained by limiting the XOR operation of the constant value related to the round number during the round key generation process to only the upper 8 bits of the 32-bit data passed through the substitution converter 115. On the other hand, in this part, the line-dall algorithm specification makes 32-bit padding constant value related to round number and 8-bit constant value to 24 bits of '0', and then passes the substitution converter 115. And XOR operation.

이어서, 상기 제2XOR연산기(118)는 제1XOR연산기(116)의 결과값 8비트와 상기 대치변환기(115)의 대치 연산 결과인 나머지 24비트가 합해진 값과 이전 라운드의 라운드 키 중 최상위 32비트(PK0)를 XOR연산하여 생성한 결과값을 새로운 라운드의 최상위 32비트 라운드 키(RK0)로 저장한다.Subsequently, the second XOR operator 118 combines the sum of 8 bits of the resultant value of the first XOR operator 116 and the remaining 24 bits of the result of the substitution converter 115 and the most significant 32 bits of the previous round key ( The result of XOR operation of PK0) is stored as the most significant 32-bit round key (RK0) of the new round.

상기와 같이 새로운 라운드의 암호화 또는 복호화에 필요한 최상위 32비트 라운드 키(RK0)가 생성되고 나면, 다음으로 상기 제3XOR연산기(118a)는 암호화 과정의 경우 새로운 라운드의 최상위 32비트 라운드 키(RK0)와 이전 라운드의 상위 95번째부터 64번째까지의 32비트 라운드 키(PK1)를 XOR연산을 수행하여 새로운 라운드의 다음 32비트 라운드 키(RK1)를 생성하고, 복호화 과정의 경우 이전 라운드의 최상위 32비트(PK0)와 이전 라운드의 다음 상위 32비트(PK1)를 XOR연산하여 새로운 라운드의 다음 32비트 라운드 키(RK1)를 생성한다.After the highest 32-bit round key (RK0) necessary for encryption or decryption of the new round is generated as described above, the third XOR operator 118a next performs the encryption with the highest 32-bit round key (RK0) of the new round. Performs an XOR operation on the upper 95th through 64th 32-bit round keys (PK1) of the previous round to generate the next 32-bit round key (RK1) of the new round.In the decryption process, the most significant 32-bits of the previous round ( PK0) and the next higher 32 bits of the previous round (PK1) are XORed to generate the next 32-bit round key (RK1) of the new round.

이때, 상기 제3다중화기(119)는 버스(200)를 통해 들어오는 암호 과정 혹은 복호 과정을 나타내는 모드신호에 따라서 제3XOR연산기(118a)의 입력 값을 결정한다.In this case, the third multiplexer 119 determines an input value of the third XOR operator 118a according to a mode signal indicating an encryption process or a decryption process coming through the bus 200.

상기와 같이 새로운 라운드의 최상위 32비트 라운드 키(RK0)의 다음 32비트 라운드 키(RK1)가 생성되고 나면, 그 다음의 암호화용 또는 복호화용 32비트 라운드 키(RK2)와 최하위 32비트 라운드 키(RK3)는 각각 상기 제3XOR연산기(118a)와 동일한 방식으로 작동하는 상기 제4XOR연산기(118b)와 제5XOR연산기(118c)에 의해 생 성되고, 상기 제4다중화기(119a)는 제4XOR연산기(118b)의 입력 값을 결정하며, 상기 제5다중화기(119b)는 제5XOR연산기(118c)의 입력 값을 결정한다.After the next 32-bit round key (RK1) of the newest round 32-bit round key (RK0) is generated as described above, the next encryption or decryption 32-bit round key (RK2) and the lowest 32-bit round key ( RK3 is generated by the fourth XOR operator 118b and the fifth XOR operator 118c, respectively, operating in the same manner as the third XOR operator 118a, and the fourth multiplexer 119a is a fourth XOR operator (118a). The input value of 118b is determined, and the fifth multiplexer 119b determines the input value of the fifth XOR operator 118c.

특히, 이와 같이 최상위 비트부터 최하위 비트까지 32비트씩 나누어 새로운 라운드의 128비트 라운드 키를 생성하는데 소요되는 시간은 암호 과정의 경우 상기 라운드 연산 제어부(300)로부터 들어오는 라운드 연산 시작신호의 총 4클럭 기간에 해당하고, 복호 과정의 경우 총 2클럭 기간에 해당한다.In particular, the time required to generate a 128-bit round key of a new round by dividing the 32 bits from the most significant bit to the least significant bit is a total of 4 clock periods of the round operation start signal coming from the round operation control unit 300 in the case of an encryption process. In the case of the decoding process, it corresponds to a total of 2 clock periods.

실제로, 암호화 라운드 연산 시작 신호의 1번째 클럭이 1이 되면 상기 제2XOR연산기(118)에 의해 새로운 라운드의 최상위 32비트 라운드 키(RK0)가 생성되고, 2번째, 3번째, 4번째 클럭이 1이 될 때마다 상기 제3XOR연산기(118a)와 제4XOR연산기(118b) 및 제5XOR연산기(118c)에 의해 새로운 라운드의 32비트 라운드 키 RK1, RK2, RK3이 생성된다. 또한, 복호화 라운드 연산 시작 신호의 1번째 클럭이 1이 되면 상기 제2XOR연산기(118)에 의해 새로운 라운드의 최상위 32비트 라운드 키(RK0)가 생성되고, 2번째 클럭이 1이 될 때 상기 제3XOR연산기(118a)와 제4XOR연산기(118b) 및 제5XOR연산기(118c)에 의해 새로운 라운드의 32비트 라운드 키 RK1, RK2, RK3이 동시에 생성된다.In fact, when the first clock of the encryption round operation start signal becomes 1, the most significant 32-bit round key RK0 of a new round is generated by the second XOR operator 118, and the second, third, and fourth clocks are set to one. Each time, a new round of 32-bit round keys RK1, RK2, and RK3 are generated by the third XOR operator 118a, the fourth XOR operator 118b, and the fifth XOR operator 118c. In addition, when the first clock of the decryption round operation start signal is 1, the second XOR operator 118 generates the most significant 32-bit round key RK0 of a new round, and when the second clock is 1, the third XOR. A new round of 32-bit round keys RK1, RK2, and RK3 are generated simultaneously by the operator 118a, the fourth XOR operator 118b, and the fifth XOR operator 118c.

상기 라운드 연산 제어부(300)로부터 클럭 주기가 일정한 라운드 연산 시작신호가 라운드 연산부(100)로 들어오는 경우, 상기 라운드 키 생성부(110)는 2클럭 기간에 암호화 라운드 키를 생성한다.When a round operation start signal having a constant clock period from the round operation control unit 300 enters the round operation unit 100, the round key generation unit 110 generates an encryption round key in two clock periods.

이때, 상기 제2XOR연산기(118)가 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)를 생성하기까지의 과정은 라 운드 연산 시작신호의 1번째 클럭이 '1'이 되면 진행된다.At this time, the process from the second XOR operator 118 to generate the most significant 32-bit round key (RK0) from 127th to 96th of the 128-bit round key of the new round is the first clock of the round operation start signal. When it becomes '1', it progresses.

이어서, 라운드 연산 시작신호의 2번째 클럭이 '1'이 되면 상기 제3XOR연산기(118a)는 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)와 이전 라운드의 128비트 라운드 키 중 최상위 다음 32비트 라운드 키(PK1)를 XOR연산하여 새로운 라운드의 암호화용 128비트 라운드 키 중 95번째부터 64번째까지의 32비트 라운드 키(RK1)를 생성한다.Subsequently, when the second clock of the round operation start signal becomes '1', the third XOR operator 118a performs the previous round with the highest 32-bit round key RK0 from 127th to 96th of the 128-bit round key of the new round. The next 32-bit round key (PK1) of the most significant of the 128-bit round keys of XOR is generated to generate the 95-64th 32-bit round key (RK1) of the new 128-bit round key for encryption.

이와 동시에, 상기 제4XOR연산기(118b)는 제3XOR연산기(118a)가 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)와 이전 라운드의 128비트 라운드 키 중 최상위 32비트 다음의 95번째부터 64번째까지의 32비트 라운드 키(PK1)를 XOR연산한 결과값(RKO

Figure 112007026413850-pat00026
PK1)과 이전 라운드의 63번째부터 32번째까지의 32비트 라운드 키(PK2)를 XOR연산하여 새로운 라운드의 암호화용 128비트 라운드 키 중 63번째부터 32번째까지의 32비트 라운드 키(RK2)를 생성한다.At the same time, the fourth XOR operator 118b is configured such that the third XOR operator 118a is selected from the 127th to 96th highest 32-bit round keys RK0 and 128-bit round keys of the previous round. Result of XOR operation of 95-64th 32-bit round key (PK1) after the most significant 32-bits (RKO
Figure 112007026413850-pat00026
PK1) and the XOR operation of the 63rd through 32nd 32-bit round key (PK2) of the previous round to generate the 63rd through 32nd 32-bit round key (RK2) of the new round of 128-bit round keys. do.

이와 동시에, 상기 제5XOR연산기(118c)는 제4XOR연산기(118b)가 제3XOR연산기(118a)에 의해 XOR연산된 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)와 이전 라운드의 128비트 라운드 키 중 최상위 32비트 다음의 95번째부터 64번째까지의 32비트 라운드 키(PK1)의 XOR연산 결과값(RKO

Figure 112007026413850-pat00027
PK1)과 이전 라운드의 63번째부터 32번째까지의 32비트 라운드 키(PK2)를 XOR연산한 결과값(RKO
Figure 112007026413850-pat00028
PK1
Figure 112007026413850-pat00029
PK2)과 이전 라운드의 31번째부터 0번째까지의 32비트 라운드 키(PK3)를 XOR연산하여 새로운 라운드의 암호화용 128비트 라운드 키 중 31번째부터 0번째까지의 32비트 라운드 키(RK3)를 생성한다.At the same time, the fifth XOR operator 118c is the most significant 32-bit round key (127th through 96th) of the new round 128-bit round key in which the fourth XOR operator 118b is XOR-operated by the third XOR operator 118a. RK0) and the result of XOR operation of the 95th to 64th 32-bit round key (PK1) after the most significant 32 bits of the 128-bit round key of the previous round (RKO)
Figure 112007026413850-pat00027
PK1) and the result of XOR operation of 32-bit round key (PK2) from 63rd to 32nd of previous round (RKO)
Figure 112007026413850-pat00028
PK1
Figure 112007026413850-pat00029
PK2) and the XOR operation of the 31st to 0th 32-bit round key (PK3) of the previous round to generate the 31st to 0th 32-bit round key (RK3) of the new round of 128-bit round keys. do.

상기 라운드 연산 제어부(300)로부터 클럭 주기가 일정한 라운드 연산 시작신호가 라운드 연산부(100)로 들어오는 경우, 상기 라운드 키 생성부(110)는 1클럭 기간에 암호화 라운드 키를 생성한다.When the round operation start signal having a constant clock period from the round operation control unit 300 enters the round operation unit 100, the round key generation unit 110 generates an encryption round key in one clock period.

이때, 상기 제2XOR연산기(118)가 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)를 생성하기까지의 과정은 라운드 연산 시작신호가 입력됨과 동시에 클럭이 '0'인 상태에서 진행된다.At this time, the process from the second XOR operator 118 to generate the most significant 32-bit round key (RK0) from the 127th to the 96th of the 128-bit round key of the new round, the clock is input at the same time the round operation start signal is input; It proceeds with '0'.

상기 라운드 연산 시작신호의 1번째 클럭이 '1'이 되면 상기 제3XOR연산기(118a)는 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)와 이전 라운드의 128비트 라운드 키 중 최상위 다음 32비트 라운드 키(PK1)를 XOR연산하여 새로운 라운드의 암호화용 128비트 라운드 키 중 95번째부터 64번째까지의 32비트 라운드 키(RK1)를 생성한다.When the first clock of the round operation start signal is '1', the third XOR operator 118a performs the 127th to 96th highest 32-bit round key RK0 and the previous round of the 128-bit round key of the new round. The next 32-bit round key PK1 of the 128-bit round key is XORed to generate the 95-64th 32-bit round key RK1 of the new 128-bit round key for encryption.

이와 동시에, 상기 제4XOR연산기(118b)는 제3XOR연산기(118a)가 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)와 이전 라운드의 128비트 라운드 키 중 최상위 32비트 다음의 95번째부터 64번째까지의 32비트 라운드 키(PK1)를 XOR연산한 결과값(RKO

Figure 112007026413850-pat00030
PK1)과 이전 라운드의 63번째부터 32번째까지의 32비트 라운드 키(PK2)를 XOR연산하여 새로운 라운드의 암호화용 128비트 라운드 키 중 63번째부터 32번째까지의 32비트 라운드 키(RK2)를 생성한다.At the same time, the fourth XOR operator 118b is configured such that the third XOR operator 118a is selected from the 127th to 96th highest 32-bit round keys RK0 and 128-bit round keys of the previous round. Result of XOR operation of 95-64th 32-bit round key (PK1) after the most significant 32-bits (RKO
Figure 112007026413850-pat00030
PK1) and the XOR operation of the 63rd through 32nd 32-bit round key (PK2) of the previous round to generate the 63rd through 32nd 32-bit round key (RK2) of the new round of 128-bit round keys. do.

이와 동시에, 상기 제5XOR연산기(118c)는 제4XOR연산기(118b)가 제3XOR연산기(118a)에 의해 XOR연산된 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)와 이전 라운드의 128비트 라운드 키 중 최상위 32비트 다음의 95번째부터 64번째까지의 32비트 라운드 키(PK1)의 XOR연산 결과값(RKO

Figure 112007026413850-pat00031
PK1)과 이전 라운드의 63번째부터 32번째까지의 32비트 라운드 키(PK2)를 XOR연산한 결과값(RKO
Figure 112007026413850-pat00032
PK1
Figure 112007026413850-pat00033
PK2)과 이전 라운드의 31번째부터 0번째까지의 32비트 라운드 키(PK3)를 XOR연산하여 새로운 라운드의 암호화용 128비트 라운드 키 중 31번째부터 0번째까지의 32비트 라운드 키(RK3)를 생성한다.At the same time, the fifth XOR operator 118c is the most significant 32-bit round key (127th through 96th) of the new round 128-bit round key in which the fourth XOR operator 118b is XOR-operated by the third XOR operator 118a. RK0) and the result of XOR operation of the 95th to 64th 32-bit round key (PK1) after the most significant 32 bits of the 128-bit round key of the previous round (RKO)
Figure 112007026413850-pat00031
PK1) and the result of XOR operation of 32-bit round key (PK2) from 63rd to 32nd of previous round (RKO)
Figure 112007026413850-pat00032
PK1
Figure 112007026413850-pat00033
PK2) and the XOR operation of the 31st to 0th 32-bit round key (PK3) of the previous round to generate the 31st to 0th 32-bit round key (RK3) of the new round of 128-bit round keys. do.

상기 라운드 연산 제어부(300)로부터 클럭 주기가 일정한 라운드 연산 시작신호가 라운드 연산부(100)로 들어오는 경우, 상기 라운드 키 생성부(110)는 1클럭 기간에 복호화 라운드 키를 생성한다.When a round operation start signal having a constant clock period from the round operation control unit 300 enters the round operation unit 100, the round key generation unit 110 generates a decryption round key in one clock period.

이때, 상기 제2XOR연산기(118)가 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)를 생성하기까지의 과정은 라운드 연산 시작신호가 입력됨과 동시에 클럭이 '0'인 상태에서 진행된다.At this time, the process from the second XOR operator 118 to generate the most significant 32-bit round key (RK0) from the 127th to the 96th of the 128-bit round key of the new round, the clock is input at the same time the round operation start signal is input; It proceeds with '0'.

상기 라운드 연산 시작신호의 1번째 클럭이 '1'이 되면 상기 제3XOR연산기(118a)는 이전 라운드의 최상위 32비트(PK0)와 이전 라운드의 다음 상위 32비트(PK1)를 XOR연산하여 새로운 라운드의 다음 32비트 라운드 키(RK1)를 생성하고, 연속해서 그 다음의 복호화용 32비트 라운드 키(RK2)와 최하위 32비트 라운드 키(RK3)는 각각 상기 제3XOR연산기(118a)와 동일한 방식으로 작동하는 상기 제4XOR연산기(118b)와 제5XOR연산기(118c)에 의해 생성된다. 이들 과정은 1번째 클럭 기간에서 동시에 수행된다.When the first clock of the round operation start signal is '1', the third XOR operator 118a performs XOR operation on the most significant 32 bits (PK0) of the previous round and the next higher 32 bits (PK1) of the previous round to perform a new round. A next 32-bit round key RK1 is generated, and subsequently the next 32-bit round key RK2 and the lowest 32-bit round key RK3 operate in the same manner as the third XOR operator 118a, respectively. The fourth XOR operator 118b and the fifth XOR operator 118c are generated. These processes are performed simultaneously in the first clock period.

상기와 같이 작동하여 암호화 및 복호화 과정을 수행하는 라인달 블록 암호 장치의 작동을 상기 라운드 연산 제어부(300)로부터 라운드 연산부(100)로 들어가는 라운드 연산 시작신호의 클럭 수에 따라 구분하여 보다 구체적으로 설명하면 다음과 같다.The operation of the linedal block cipher apparatus that operates as described above and performs an encryption and decryption process is classified in detail according to the number of clocks of the round operation start signal entering the round operation unit 100 from the round operation control unit 300. Is as follows.

도 4는 본 발명에 따른 라인달 블록 암호의 암호화 방법을 도시한 제1타이밍도이다.4 is a first timing diagram illustrating a method of encrypting a linedal block cipher according to the present invention.

도 4를 참조하면, 라운드 연산 제어부(300)로부터 클럭 주기가 일정한 라운드 연산 시작신호와 라운드 번호신호가 라운드 연산부(100)로 들어오면(S400), 라운드 연산 시작신호의 1번째 클럭이 '1'이 되는 순간에 128비트 라운드 연산 입력 데이터 중 상위 64비트 데이터의 바이트 시프트 변환과 대치 연산이 순차적으로 수행되는데(S401), 이들 두 과정이 한 클럭 안에 이루어진다. 이들 과정의 수행 결과는 상기 64비트 데이터 레지스터(400)에 저장된다. 또한, 상기 라운드 연산 시작신호가 들어오면 라운드 연산 시작신호의 1번째 클럭이 '1'이 되는 순간에 128비트 라운드 입력 키를 이용하여 128비트 라운드 키 생성 과정이 시작된다(S401a).Referring to FIG. 4, when a round operation start signal and a round number signal having a constant clock cycle are input from the round operation control unit 300 to the round operation unit 100 (S400), the first clock of the round operation start signal is '1'. At this moment, the byte shift conversion and replacement operation of the upper 64-bit data among the 128-bit round operation input data are sequentially performed (S401). These two processes are performed in one clock. The result of performing these processes is stored in the 64-bit data register 400. In addition, when the round operation start signal is received, the 128 bit round key generation process is started using the 128 bit round input key at the first clock of the round operation start signal becomes '1' (S401a).

라운드 연산 시작신호의 2번째 클럭이 '1'이 되는 순간 상기 64비트 데이터 레지스터(400)에 저장된 64비트 데이터를 이용하여 믹스컬럼 변환이 시작되고 결과값은 64비트 데이터 레지스터(400)에 저장되며(S402), 동시에 라운드 연산 입력 데이터의 하위 64비트 데이터의 바이트 시프트 변환과 대치 연산이 순차적으로 수행되는데(S402), 이들 과정도 한 클럭 안에 수행된다. 또한, 상기 하위 64비트 데이터의 바이트 시프트 변환과 대치 연산의 결과 데이터는 라운드 연산 결과를 저장하 는 128비트 데이터 레지스터(500)의 하위 64비트 위치에 저장된다.As soon as the second clock of the round operation start signal is '1', the mix column conversion is started using the 64-bit data stored in the 64-bit data register 400 and the result value is stored in the 64-bit data register 400. At the same time (S402), the byte shift conversion and replacement operation of the lower 64-bit data of the round operation input data are sequentially performed (S402), and these processes are also performed in one clock. In addition, the result data of the byte shift conversion and replacement operation of the lower 64-bit data is stored in the lower 64-bit position of the 128-bit data register 500 that stores the round operation result.

라운드 연산 시작신호의 3번째 클럭이 '1'이 되는 순간 상기 64비트 데이터 레지스터(400)에 저장된 64비트 데이터는 라운드 키 생성부(110)에서 생성된 라운드 키의 상위 64비트와 더해지기 위해서 라운드 키 더하기 변환부(170)의 입력으로 들어가고 그 결과값은 상기 128비트 데이터 레지스터(500)의 상위 64비트 위치에 저장되며(S403), 상기 128비트 데이터 레지스터(500)의 하위 64비트 데이터는 믹스컬럼 변환과정을 거치고 그 결과값은 상기 128비트 데이터 레지스터(500)의 하위 64비트 위치에 저장된다(S403).As soon as the third clock of the round operation start signal is '1', the 64-bit data stored in the 64-bit data register 400 is rounded to be added to the upper 64 bits of the round key generated by the round key generator 110. The key is added to the input of the conversion unit 170 and the result value is stored in the upper 64-bit position of the 128-bit data register 500 (S403), the lower 64-bit data of the 128-bit data register 500 is mixed After the column conversion process, the result is stored in the lower 64-bit position of the 128-bit data register 500 (S403).

라운드 연산 시작신호의 4번째 클럭이 '1'이 되면 상기 128비트 데이터 레지스터(500)의 하위 64비트 데이터는 라운드 키 생성부(110)에서 생성된 라운드 키의 하위 64비트와 더해지기 위해서 라운드 키 더하기 변환부(170)의 입력으로 들어가고 그 결과값은 상기 128비트 데이터 레지스터(500)의 하위 64비트 위치에 저장된다(S404).When the fourth clock of the round operation start signal is '1', the lower 64-bit data of the 128-bit data register 500 is added to the lower 64-bit of the round key generated by the round key generator 110 to add the round key. The input of the addition converter 170 and the result value is stored in the lower 64-bit position of the 128-bit data register 500 (S404).

따라서, 상기와 같이 암호화 과정을 수행하는 라인달 블록 암호 장치에서는 상기 128비트 데이터 레지스터(500)의 128비트 데이터가 다음 라운드의 128비트 라운드 연산 입력 데이터로 되고, 라운드 키 생성부(110)에서 새롭게 생성되어 상기 128비트 라운드 키 레지스터(111a)에 저장된 라운드 키(RK) 또한 128비트 프리 키 레지스터(111)에 저장되었다가 다음 라운드의 128비트 라운드 입력 키로 사용된다. 이로써, 한 라운드의 암호화 연산이 완료되며 총 4클럭이 소요된다.Accordingly, in the linedal block encryption apparatus performing the encryption process as described above, the 128-bit data of the 128-bit data register 500 becomes the 128-bit round arithmetic input data of the next round, and is newly generated by the round key generator 110. The round key RK generated and stored in the 128-bit round key register 111a is also stored in the 128-bit free key register 111 and used as the next round 128-bit round input key. This completes one round of cryptographic operations and takes 4 clocks in total.

도 4에 도시된 암호화 방법을 본 발명에 따른 라인달 블록 암호 장치에서 수 행하는 경우, 상기 라운드 키 생성부(110)는 라운드 키 생성 과정을 라운드 연산 시작신호의 총 4클럭 기간에 끝낸다. 즉, 도 4에 따르면 상위 64비트 데이터와 라운드 키를 더하는 과정인 라운드 키 더하기 변환 과정(S403)이 라운드 연산을 시작한 후 3번째 클럭 후에 이루어진다. 라운드 연산을 시작 한 후 2번째 클럭이 지나면 새로운 라운드 키 중 상위 64비트 라운드 키만이 생성된 상태이고, 이 시점에서 상위 64비트 라운드 키만을 사용하므로 라운드 연산의 암호화 동작에는 무리가 없다. 또한 라운드 연산을 시작한 후 3번째 클럭이 지나고 4번째 클럭이 시작되는 시점에서는 128비트 라운드 키가 모두 생성되는 시점과 일치하므로 하위 64비트 데이터와 하위 64비트 라운드 키를 더하는 라운드 키 더하기 변환 과정(S404)의 수행에도 문제가 없다.When the encryption method shown in FIG. 4 is performed by the linedal block encryption apparatus according to the present invention, the round key generation unit 110 ends the round key generation process in a total of four clock periods of the round operation start signal. That is, according to FIG. 4, the round key addition conversion process S403, which is a process of adding the upper 64-bit data and the round key, is performed after the third clock after starting the round operation. After the second clock after the start of the round operation, only the upper 64-bit round key of the new round key is generated. At this point, only the upper 64-bit round key is used, so there is no problem in the encryption operation of the round operation. In addition, since the 3rd clock after the start of the round operation and the 4th clock starts, the coincidence of all 128-bit round keys is generated. ) Is not a problem.

또한, 상기와 같이 암호화 과정을 수행하는 라인달 블록 암호 장치에서는 64비트 데이터 레지스터(400)를 암호화 과정 중에 생성되는 중간 데이터 저장공간으로 사용함으로써 상위 64비트 데이터의 바이트 시프트 변환 결과가 하위 64비트 바이트 시프트 변환에 영향을 주지 않으며, 상위 64비트 데이터와 하위 64비트 데이터의 변환을 동시에 수행하되 동일한 클럭 주기 동안에 상위 64비트 데이터와 하위 64비트 데이터가 동일한 변환을 수행하지 않기 때문에 변환에 필요한 하드웨어 모듈의 수를 절반으로 줄일 수 있다. 특히, 각 클럭마다 생성된 데이터를 하나의 저장공간에 계속 업데이트 하는 방식을 취함으로써 추가적인 저장공간을 사용할 필요가 없다. 즉, 이 경우는 파이프 라인 구조를 응용하되 추가의 하드웨어가 필요하지 않는 구조를 지향하였으며 이들 구조는 이하에서 다른 실시예로 설명할 라인달 블 록 암호의 암호화 및 복호화 방법들에서도 동일하게 적용된다.In addition, in the above-described linedal block cipher apparatus that performs the encryption process, the 64-bit data register 400 is used as an intermediate data storage space generated during the encryption process, so that the result of byte shift conversion of upper 64-bit data is lower 64-bit byte. It does not affect the shift conversion, and because the upper 64-bit data and lower 64-bit data are converted at the same time, the upper 64-bit data and the lower 64-bit data do not perform the same conversion during the same clock period. You can cut the number in half. In particular, there is no need to use additional storage space by continuously updating the data generated for each clock to one storage space. That is, in this case, the structure is applied to the pipeline structure, but does not require any additional hardware. The structure is equally applicable to the encryption and decryption methods of the linedal block cipher, which will be described later.

도 5는 본 발명에 따른 라인달 블록 암호의 복호화 방법을 도시한 제1타이밍도이다.5 is a first timing diagram illustrating a method of decrypting a linedal block cipher according to the present invention.

도 5를 참조하면, 라운드 연산 제어부(300)로부터 클럭 주기가 일정한 라운드 연산 시작신호와 라운드 번호신호가 라운드 연산부(100)로 들어오면(S500), 라운드 연산 시작신호의 1번째 클럭이 '1'이 되는 순간에 128비트 라운드 연산 입력 데이터 중 상위 64비트 데이터의 바이트 역시프트 변환과 역대치 연산이 순차적으로 수행되는데(S501), 이들 두 과정이 한 클럭 안에 이루어진다. 이때, 결과 데이터는 상기 64비트 데이터 레지스터(400)에 저장된다. 또한, 라운드 연산 시작신호가 들어오면 라운드 연산 시작신호의 1번째 클럭이 '1'이 되는 순간에 128비트 라운드 입력 키를 이용하여 128비트 라운드 키 생성 과정이 시작된다(S501a).Referring to FIG. 5, when a round operation start signal and a round number signal having a constant clock cycle from the round operation control unit 300 enter the round operation unit 100 (S500), the first clock of the round operation start signal is '1'. At this moment, the byte of the upper 64-bit data among the 128-bit round operation input data is also subjected to the loft conversion and the reverse substitution operation (S501). These two processes are performed in one clock. In this case, the result data is stored in the 64-bit data register 400. In addition, when the round operation start signal is received, the 128 bit round key generation process is started using the 128 bit round input key at the first clock of the round operation start signal becomes '1' (S501a).

라운드 연산 시작신호의 2번째 클럭이 '1'이 되는 순간 상기 64비트 데이터 레지스터(400)에 저장된 64비트 데이터와 라운드 키 생성부(110)를 통해서 생성된 라운드 키의 상위 64비트가 더해지는 라운드 키 더하기 변환이 시작되고 결과 데이터는 64비트 데이터 레지스터(400)에 저장되며(S502), 동시에 라운드 입력 데이터의 하위 64비트 데이터의 바이트 역시프트 변환과 역대치 연산이 순차적으로 수행되고 결과 데이터는 128비트 데이터 레지스터(500)의 하위 64비트 위치에 저장된다(S502).As soon as the second clock of the round operation start signal is '1', the round key to which 64-bit data stored in the 64-bit data register 400 and the upper 64 bits of the round key generated by the round key generator 110 are added. The addition conversion starts and the result data is stored in the 64-bit data register 400 (S502). At the same time, the byte shift and reverse substitution operations of the lower 64-bit data of the round input data are sequentially performed and the result data is 128 bits. The data is stored in the lower 64-bit position of the register 500 (S502).

라운드 연산 시작신호의 3번째 클럭이 '1'이 되는 순간 상기 64비트 데이터 레지스터(400)에 저장된 64비트 데이터는 믹스/역믹스컬럼 변환부(150)의 입력으로 들어가고 역믹스컬럼 변환의 결과 데이터는 상기 128비트 데이터 레지스터(500)의 상위 64비트 위치에 저장되며(S503), 동시에 역대치 연산을 마친 상기 하위 64비트 데이터는 라운드 키 생성부(110)에서 생성된 라운드 키와 더해지는 라운드 키 더하기 변환을 거치고 결과 데이터는 상기 128비트 데이터 레지스터의 하위 64비트 위치에 저장된다(S503).As soon as the third clock of the round operation start signal is '1', the 64-bit data stored in the 64-bit data register 400 enters the input of the mix / inverse mix column converter 150 and the result data of the inverse mix column conversion. Is stored in the upper 64-bit position of the 128-bit data register 500 (S503), and at the same time, the lower 64-bit data having completed the reverse substitution operation is added to the round key added with the round key generated by the round key generation unit 110. After conversion, the result data is stored in the lower 64-bit position of the 128-bit data register (S503).

라운드 연산 시작신호의 4번째 클럭이 '1'이 되면 라운드 키 더하기 변환을 마친 상기 하위 64비트 데이터는 믹스/역믹스컬럼 변환부(150)의 입력이 되어 역믹스컬럼 변환되고 결과 데이터는 상기 128비트 데이터 레지스터(500)의 하위 64비트 위치에 저장된다(S504).When the fourth clock of the round operation start signal is '1', the lower 64-bit data of which the round key addition conversion is completed is input to the mix / inverse mix column converter 150 to perform inverse mix column conversion, and the result data is 128 The lower 64-bit position of the bit data register 500 is stored (S504).

이때도, 상기 128비트 데이터 레지스터(500)의 128비트 데이터는 다음 복호화 라운드 연산의 128비트 라운드 연산 입력 데이터로 사용되고, 라운드 키 생성 결과인 128비트 라운드 키(RK)는 상기 128비트 프리 키 레지스터(111)에 저장되어 다음 라운드 연산의 128비트 라운드 입력 키로 사용된다. 이로써, 한 라운드의 복호화 연산이 완료되며 총 4클럭이 소요된다.In this case, the 128-bit data of the 128-bit data register 500 is used as the 128-bit round operation input data of the next decryption round operation, and the 128-bit round key RK that is the result of the round key generation is the 128-bit free key register ( And used as the 128-bit round input key for the next round operation. This completes a round of decryption operations and takes a total of 4 clocks.

도 5에 도시된 복호화 방법을 본 발명에 따른 라인달 블록 암호 장치에서 수행하는 경우, 상기 라운드 키 생성부(110)는 라운드 키 생성 과정을 라운드 연산 시작신호의 총 2클럭 기간에 끝낸다. 즉, 도 5에 따르면 상위 64비트 라운드 키와 상위 64비트 데이터를 더하는 라운드 키 더하기 변환 과정(S502)이 라운드 연산을 시작 한 후 2번째 클럭에서 이루어지므로, 2번째 클럭에서는 이미 128비트 라운드 키가 모두 생성된 상태로 되어 라운드 연산의 수행에 문제가 없다.When the decryption method illustrated in FIG. 5 is performed by the linedal block encryption apparatus according to the present invention, the round key generation unit 110 completes the round key generation process in a total of two clock periods of the round operation start signal. That is, according to Figure 5, since the round key addition conversion process (S502) of adding the upper 64-bit round key and the upper 64-bit data is performed at the second clock after starting the round operation, the 128-bit round key is already at the second clock. All of them are created and there is no problem in performing the round operation.

도 6은 본 발명에 따른 라인달 블록 암호의 암호화 방법을 도시한 제2타이밍도이다.6 is a second timing diagram illustrating a method of encrypting a linedal block cipher according to the present invention.

도 6을 참조하면, 라운드 연산 제어부(300)로부터 클럭 주기가 일정한 라운드 연산 시작신호와 라운드 번호신호가 라운드 연산부(100)로 들어오면(S600), 라운드 연산 시작신호의 1번째 클럭이 '1'이 되는 순간 상위 64비트 데이터의 바이트 시프트 연산과 대치 연산이 순서대로 수행되어 결과 데이터는 64비트 데이터 레지스터(400)에 저장된다(S601). 또한, 라운드 키 생성 과정이 이와 동시에 수행된다(S601a).Referring to FIG. 6, when a round operation start signal and a round number signal having a constant clock cycle are input from the round operation control unit 300 to the round operation unit 100 (S600), the first clock of the round operation start signal is '1'. At this moment, the byte shift operation and the replacement operation of the upper 64-bit data are sequentially performed, and the result data is stored in the 64-bit data register 400 (S601). In addition, the round key generation process is performed at the same time (S601a).

라운드 연산 시작신호의 2번째 클럭이 '1'이 되면 상기 64비트 데이터 레지스터(400)에 저장된 64비트 데이터가 믹스컬럼 변환을 한 후 라운드 키 생성부(110)의 결과 데이터 중 상위 64비트 라운드 키와 라운드 키 더하기 변환되고 결과 데이터는 상기 64비트 데이터 레지스터(400)에 저장되며(S602), 이와 동시에 하위 64비트 데이터의 바이트 시프트 변환과 대치 변환이 차례대로 수행되어 상기 128비트 데이터 레지스터(500)의 하위 64비트 위치에 저장된다(S602).When the second clock of the round operation start signal is '1', the 64-bit data stored in the 64-bit data register 400 converts the mix column, and then the upper 64-bit round key among the result data of the round key generator 110. And round key plus conversion and the result data is stored in the 64-bit data register 400 (S602). At the same time, the byte shift conversion and the substitution conversion of lower 64-bit data are performed in order, so that the 128-bit data register 500 is performed. It is stored in the lower 64-bit position of (S602).

라운드 연산 시작신호의 3번째 클럭이 '1'이 되면 상기 64비트 데이터 레지스터(400)에 저장된 64비트 데이터가 상기 128비트 데이터 레지스터(500)의 상위 64비트 위치에 저장되며, 상기 128비트 데이터 레지스터(500)의 하위 64비트 데이터는 믹스컬럼 변환을 한 다음 라운드 키 생성부(110)에서 생성된 라운드 키 중 하위 64비트 라운드 키와 라운드 키 더하기 변환을 수행하고 결과 데이터는 상기 128비트 데이터 레지스터(500)의 하위 64비트 위치에 저장된다(S603).When the third clock of the round operation start signal is '1', 64-bit data stored in the 64-bit data register 400 is stored in the upper 64-bit position of the 128-bit data register 500, and the 128-bit data register The lower 64-bit data of 500 is mixed-column converted and then the lower 64-bit round key and round key plus conversion among the round keys generated by the round key generator 110 are performed, and the result data is the 128-bit data register ( 500 is stored in the lower 64-bit position (S603).

이때도, 상기 128비트 데이터 레지스터(500)의 128비트 데이터는 다음 라운드 연산의 128비트 라운드 연산 입력 데이터로 사용되고, 라운드 키 생성부(110)에서 생성된 라운드 키(RK)는 128비트 프리 키 레지스터(111)에 저장되어 다음 라운드의 128비트 라운드 입력 키로 사용된다. 이로써, 한 라운드의 암호화 연산이 완료되며 총 3클럭이 소요된다.In this case, the 128-bit data of the 128-bit data register 500 is used as the 128-bit round operation input data of the next round operation, and the round key RK generated by the round key generator 110 is a 128-bit free key register. Stored in 111 and used as the next round 128-bit round input key. This completes a round of cryptographic operations and takes a total of 3 clocks.

도 6에 도시된 암호화 방법을 본 발명에 따른 라인달 블록 암호 장치에서 수행하는 경우, 상기 라운드 키 생성부(110)는 라운드 키 생성 과정을 라운드 연산 시작신호의 총 2클럭 기간에 끝낸다. 즉, 도 6에 따르면 상위 64비트 라운드 키와 상위 64비트 데이터를 더하는 라운드 키 더하기 변환 과정(S602)이 라운드 연산을 시작 한 후 2번째 클럭에서 이루어지므로, 2번째 클럭에서는 이미 128비트 라운드 키가 모두 생성된 상태로 되어 라운드 연산의 수행에 문제가 없다.When the encryption method shown in FIG. 6 is performed in the linedal block encryption apparatus according to the present invention, the round key generation unit 110 ends the round key generation process in a total of two clock periods of the round operation start signal. That is, according to Figure 6, since the round key addition conversion process (S602) of adding the upper 64-bit round key and the upper 64-bit data is performed at the second clock after starting the round operation, the 128-bit round key is already at the second clock. All of them are created and there is no problem in performing the round operation.

도 7은 본 발명에 따른 라인달 블록 암호의 복호화 방법을 도시한 제2타이밍도이다.7 is a second timing diagram illustrating a method of decrypting a linedal block cipher according to the present invention.

도 7을 참조하면, 라운드 연산 제어부(300)로부터 클럭 주기가 일정한 라운드 연산 시작신호와 라운드 번호신호가 라운드 연산부(100)로 들어오면(S700), 라운드 연산 시작신호의 1번째 클럭이 '1'이 되면 라운드 입력 데이터의 상위 64비트 데이터가 바이트 역시프트 변환과 역대치 변환을 거치고 이 결과 데이터는 64비트 데이터 레지스터(400)에 저장된다(S701). 또한, 이들 변환과 동시에 라운드 키 생성 과정이 시작된다(S701a).Referring to FIG. 7, when the round operation start signal and the round number signal having a constant clock cycle are input from the round operation control unit 300 to the round operation unit 100 (S700), the first clock of the round operation start signal is '1'. In this case, the upper 64-bit data of the round input data is subjected to byte inverse transformation and inverse substitution conversion, and the result data is stored in the 64-bit data register 400 (S701). In addition, the round key generation process starts at the same time as these conversions (S701a).

라운드 연산 시작신호의 2번째 클럭이 '1'이 되면 상기 64비트 데이터 레지 스터(400)의 64비트 데이터와 라운드 키 생성부(110)에서 생성된 라운드 키의 상위 64비트 라운드 키가 라운드 키 더하기 변환되고 이 결과 데이터가 믹스/역믹스컬럼 변환부(150)의 입력 데이터로 되고, 역믹스컬럼 변환된 결과 데이터가 상기 64비트 데이터 레지스터(400)에 저장된다(S702). 이들 라운드 키 더하기 변환 및 역믹스컬럼 변환과 동시에 라운드 입력 데이터의 하위 64비트 데이터의 바이트 역시프트 변환과 역대치 변환이 차례로 수행되고 결과 데이터가 상기 128비트 데이터 레지스터(500)의 하위 64비트 위치에 저장된다(S702).When the second clock of the round operation start signal is '1', the 64-bit data of the 64-bit data register 400 and the upper 64-bit round key of the round key generated by the round key generator 110 are added to the round key. The result data is converted into the input data of the mix / inverse mix column converter 150, and the result data of the inverse mix column transform is stored in the 64-bit data register 400 (S702). At the same time as these round key addition and inverse mix column transformations, the bytes of the lower 64-bit data of the round input data are also inversely shifted and reversed-inverted, and the resulting data is placed in the lower 64-bit position of the 128-bit data register 500. It is stored (S702).

라운드 연산 시작신호의 3번째 클럭이 '1'이 되면 상기 64비트 데이터 레지스터(400)에 저장된 64비트 데이터가 상기 128비트 데이터 레지스터(500)의 상위 64비트 위치에 저장되며, 상기 128비트 데이터 레지스터(500)의 하위 64비트 데이터와 라운드 키 생성부(110)의 라운드 키 중 하위 64비트 라운드 키가 라운드 키 더하기 변환되고 이 결과 데이터를 역믹스컬럼 변환하여 얻은 결과 데이터가 상기 128비트 데이터 레지스터(500)의 하위 64비트 위치에 저장된다(S703).When the third clock of the round operation start signal is '1', 64-bit data stored in the 64-bit data register 400 is stored in the upper 64-bit position of the 128-bit data register 500, and the 128-bit data register The lower 64-bit data of 500 and the lower 64-bit round key of the round keys of the round key generator 110 are converted by round key addition, and the result data obtained by inverse-mixing the result data is converted into the 128-bit data register ( 500 is stored in the lower 64-bit position (S703).

이때도, 상기 128비트 데이터 레지스터(500)의 128비트 데이터는 다음 라운드 연산의 128비트 라운드 입력 데이터로 이용되고, 라운드 키 생성부(110)에서 생성된 라운드 키(RK)가 상기 128비트 프리 키 레지스터(111)에 저장되어 다음 라운드 연산의 128비트 라운드 입력 키로 사용된다. 이로써, 한 라운드의 복호화 연산이 완료되며 총 3클럭이 소요된다.In this case, the 128-bit data of the 128-bit data register 500 is used as the 128-bit round input data of the next round operation, and the round key RK generated by the round key generator 110 is the 128-bit free key. It is stored in register 111 and used as the 128-bit round input key for the next round operation. This completes a round of decryption operations and takes a total of 3 clocks.

도 7에 도시된 복호화 방법을 본 발명에 따른 라인달 블록 암호 장치에서 수행하는 경우, 상기 라운드 키 생성부(110)는 라운드 키 생성 과정을 라운드 연산 시작신호의 총 2클럭 기간에 끝낸다. 즉, 도 7에 따르면 상위 64비트 라운드 키와 상위 64비트 데이터를 더하는 라운드 키 더하기 변환 과정(S702)이 라운드 연산을 시작 한 후 2번째 클럭에서 이루어지므로, 2번째 클럭에서는 이미 128비트 라운드 키가 모두 생성된 상태로 되어 라운드 연산의 수행에 문제가 없다.When the decryption method illustrated in FIG. 7 is performed by the linedal block encryption apparatus according to the present invention, the round key generation unit 110 completes the round key generation process in a total of two clock periods of the round operation start signal. That is, according to Figure 7, since the round key addition conversion process (S702) for adding the upper 64-bit round key and the upper 64-bit data is performed at the second clock after starting the round operation, the 128-bit round key is already at the second clock. All of them are created and there is no problem in performing the round operation.

도 8은 본 발명에 따른 라인달 블록 암호의 암호화 방법을 도시한 제3타이밍도이다.8 is a third timing diagram illustrating a method of encrypting a linedal block cipher according to the present invention.

도 8을 참조하면, 라운드 연산 제어부(300)로부터 클럭 주기가 일정한 라운드 연산 시작신호와 라운드 번호신호가 라운드 연산부(100)로 들어오면(S800), 라운드 연산 시작신호의 1번째 클럭이 '1'이 되면 라운드 입력 데이터의 상위 64비트 데이터에 대한 바이트 시프트 변환, 대치변환, 믹스컬럼 변환, 라운드 키 더하기 변환이 차례로 수행되고 결과 데이터는 상기 64비트 데이터 레지스터(400)에 저장된다(S801). 이와 동시에 라운드 키 생성 과정(S801a)이 진행되고 생성된 라운드 키 중 상위 64비트 라운드 키가 앞서 기술한 라운드 키 더하기 변환에 사용된다. 이들 과정은 한 클럭 내에 수행된다.Referring to FIG. 8, when a round operation start signal and a round number signal having a constant clock cycle are input from the round operation control unit 300 to the round operation unit 100 (S800), the first clock of the round operation start signal is '1'. In this case, byte shift conversion, replacement conversion, mix column conversion, and round key addition conversion for the upper 64-bit data of the round input data are sequentially performed, and the result data is stored in the 64-bit data register 400 (S801). At the same time, the round key generation process S801a is performed, and the upper 64-bit round key of the generated round keys is used for the round key plus conversion described above. These processes are performed in one clock.

라운드 연산 시작신호의 2번째 클럭이 '1'이 되면 라운드 입력 데이터의 하위 64비트 데이터에 대한 바이트 시프트 변환, 대치 변환, 믹스컬럼 변환, 라운드 키 더하기 변환이 차례로 수행되고 결과 데이터는 상기 128비트 데이터 레지스터(500)의 하위 64비트 위치에 저장된다(S802). 그리고 라운드 키 생성 과정에서 생성된 라운드 키 중 하위 64비트 라운드 키가 앞서 기술한 라운드 키 더하기 변환에 사용된다. 이때, 64비트 데이터 레지스터(400)에 저장된 64비트 데이터는 128비트 데이터 레지스터(500)의 상위 64비트 위치에 저장되고, 라운드 키 생성부(110)에서 새롭게 생성된 128비트 라운드 키(RK)는 128비트 라운드 키 레지스터(111a)에 저장되고 상기 128비트 프리 키 레지스터(111)에 백업된다. 이로써, 한 라운드의 암호화 연산이 완료되며 총 2클럭이 소요된다.When the second clock of the round operation start signal becomes '1', byte shift conversion, replacement conversion, mix column conversion, and round key addition conversion are performed on the lower 64-bit data of the round input data in sequence, and the result data is the 128-bit data. The lower 64-bit position of the register 500 is stored (S802). The lower 64-bit round key of the round keys generated during the round key generation is used for the round key plus conversion described above. At this time, the 64-bit data stored in the 64-bit data register 400 is stored in the upper 64-bit position of the 128-bit data register 500, and the 128-bit round key RK newly generated by the round key generator 110 is It is stored in the 128-bit round key register 111a and backed up to the 128-bit free key register 111. This completes a round of cryptographic operations and takes a total of 2 clocks.

도 8에 도시된 암호화 방법을 본 발명에 따른 라인달 블록 암호 장치에서 수행하는 경우, 상기 라운드 키 생성부(110)는 라운드 키 생성 과정을 라운드 연산 시작신호의 총 1클럭 기간에 끝낸다. 즉, 도 8에 따르면 상위 64비트 라운드 키와 상위 64비트 데이터를 더하는 라운드 키 더하기 변환 과정(S801)이 라운드 연산을 시작 한 후 1번째 클럭에서 이루어지므로, 1번째 클럭에서는 이미 128비트 라운드 키가 모두 생성된 상태로 되어 라운드 연산의 수행에 문제가 없다.When the encryption method shown in FIG. 8 is performed in the linedal block encryption apparatus according to the present invention, the round key generation unit 110 ends the round key generation process in one clock period of the round operation start signal. That is, according to FIG. 8, since the round key addition conversion process S801 of adding the upper 64-bit round key and the upper 64-bit data is performed at the first clock after starting the round operation, the 128-bit round key is already present at the first clock. All of them are created and there is no problem in performing the round operation.

실제로, 이때는 도 3에 도시된 라운드 키 생성부(110)가 RK0을 이용하여 RK1을 생성하고, RK1을 이용하여 RK2를 생성하고, RK2를 이용하여 RK3을 생성하지 않고, RK0을 라운드 연산 시작신호가 입력됨과 동시에 클럭이 '0'인 상태에서 생성해두고, 라운드 연산 시작신호의 1번째 클럭이 '1'이 되는 순간 RK0과 PK1을 XOR연산해서 RK1을 생성하고, 이와 동시에 RK0과 PK1, PK2를 XOR연산해서 RK2를 생성하고, 또 이와 동시에 RK0과 PK1, PK2, PK3을 XOR해서 RK3을 생성한다.In this case, the round key generation unit 110 shown in FIG. 3 generates RK1 using RK0, generates RK2 using RK1, does not generate RK3 using RK2, and round operation start signal RK0. Is generated while the clock is '0' and RK1 is generated by XOR operation of RK0 and PK1 when the first clock of the round operation start signal becomes '1', and at the same time, RK0, PK1, and PK2 RK2 is generated by XOR operation, and at the same time, RK3 is generated by XORing RK0, PK1, PK2, and PK3.

도 9는 본 발명에 따른 라인달 블록 암호의 복호화 방법을 도시한 제3타이밍도이다.9 is a third timing diagram illustrating a method of decrypting a linedal block cipher according to the present invention.

도 9를 참조하면, 라운드 연산 제어부(300)로부터 클럭 주기가 일정한 라운드 연산 시작신호와 라운드 번호신호가 라운드 연산부(100)로 들어오면(S900), 라 운드 연산 시작신호의 1번째 클럭이 '1'이 되면 라운드 입력 데이터의 상위 64비트 데이터에 대한 바이트 역시프트 변환, 역대치 변환, 라운드 키 더하기 변환, 역믹스컬럼 변환이 차례로 수행되고 결과 데이터는 64비트 데이터 레지스터(400)에 저장된다(S901). 이들 과정은 한 클럭에 수행된다. 또한, 이와 동시에 복호화용 라운드 키 생성 과정이 진행(S901a)되어 라운드 키 생성부(110)에서 생성된 라운드 키 중 상위 64비트 라운드 키가 앞서 기술한 라운드 키 더하기 변환 과정에 사용된다.Referring to FIG. 9, when a round operation start signal and a round number signal having a constant clock cycle are input from the round operation control unit 300 to the round operation unit 100 (S900), the first clock of the round operation start signal is' 1. If a byte is converted to the upper 64-bit data of the round input data, inverse shift conversion, inverse substitution conversion, round key addition conversion, and inverse mix column conversion are sequentially performed, and the result data is stored in the 64-bit data register 400 (S901). ). These processes are performed in one clock. At the same time, the decryption round key generation process is performed (S901a), and the upper 64-bit round key of the round keys generated by the round key generation unit 110 is used in the above-described round key addition conversion process.

라운드 연산 시작신호의 2번째 클럭이 '1'이 되면 하위 64비트 데이터에 대한 바이트 역시프트 변환, 역대치 변환, 라운드 키 더하기 변환, 역믹스컬럼 변환이 차례로 수행되고 결과 데이터는 128비트 데이터 레지스터(500)의 하위 64비트 위치에 저장된다(S902). 이들 과정은 한 클럭에 수행된다. 그리고, 상기 라운드 키 더하기 변환에는 라운드 키 생성부(110)에서 한 클럭 앞서 생성된 라운드 키 중 하위 64비트 라운드 키가 사용된다. 이때, 상기 64비트 데이터 레지스터(400)에 저장된 64비트 데이터는 128비트 데이터 레지스터(500)의 상위 64비트 위치에 저장되며, 라운드 키 생성부(110)에서 새로 생성된 128비트 라운드 키(RK)는 128비트 라운드 키 레지스터(111a)에 저장되고 상기 128비트 프리 키 레지스터(111)에 백업된다. 이로써, 한 라운드의 복호화 연산이 완료되며 총 2클럭이 소요된다.When the second clock of the round operation start signal becomes '1', byte inverse shifting, inverse substitution, round key addition conversion, and inverse mix column conversion for the lower 64-bit data are performed in sequence, and the result data is a 128-bit data register ( 500 is stored in the lower 64-bit position (S902). These processes are performed in one clock. In addition, the lower 64-bit round key is used in the round key addition conversion of the round key generated one clock ahead of the round key generation unit 110. At this time, the 64-bit data stored in the 64-bit data register 400 is stored in the upper 64-bit position of the 128-bit data register 500, and the newly generated 128-bit round key (RK) in the round key generator 110 Is stored in the 128-bit round key register 111a and backed up to the 128-bit free key register 111. This completes a round of decryption operations and takes a total of 2 clocks.

도 9에 도시된 복호화 방법을 본 발명에 따른 라인달 블록 암호 장치에서 수행하는 경우, 상기 라운드 키 생성부(110)는 라운드 키 생성 과정을 라운드 연산 시작신호의 총 1클럭 기간에 끝낸다. 즉, 도 9에 따르면 상위 64비트 라운드 키와 상위 64비트 데이터를 더하는 라운드 키 더하기 변환 과정(S901)이 라운드 연산을 시작 한 후 라운드 연산 시작신호의 1번째 클럭에서 이루어지나 1번째 클럭에서는 이미 128비트 라운드 키가 모두 생성된 상태로 되어 라운드 연산의 수행에 문제가 없다.When the decryption method illustrated in FIG. 9 is performed by the linedal block encryption apparatus according to the present invention, the round key generation unit 110 completes the round key generation process in one clock period of the round operation start signal. That is, according to FIG. 9, the round key addition conversion process S901 that adds the upper 64-bit round key and the upper 64-bit data is performed at the first clock of the round operation start signal after starting the round operation, but is already 128 at the first clock. Since all bit round keys are generated, there is no problem in performing the round operation.

실제로, 이때는 도 3에 도시된 라운드 키 생성부(110)가 RK0을 라운드 연산 시작신호가 입력됨과 동시에 클럭이 '0'인 상태에서 생성해두고, 1번째 클럭이 '1'이 되는 순간 PK0과 PK1을 XOR연산해서 RK1을 생성하고, 이와 동시에 PK1과 PK2를 XOR연산해서 RK2를 생성하고, 또 이와 동시에 PK2와 PK3을 XOR해서 RK3을 생성한다.In this case, the round key generation unit 110 shown in FIG. 3 generates RK0 while the clock operation is '0' while the round operation start signal is input, and at the moment when the first clock becomes '1', RK1 is generated by XOR operation of PK1, and at the same time, RK2 is generated by XOR operation of PK1 and PK2, and at the same time, RK3 is generated by XORing PK2 and PK3.

상기한 바와 같은 도 8에 도시된 암호화 방법과 도 9에 도시된 복호화 방법에 따른 라인달 블록 암호 장치는 적은 면적과 적은 전력 소모 및 낮은 동작 주파수 특성을 가지는 스마트 카드, USIM(user subscriber identity module) 카드, SIM 카드 등에 적용하기에 적당한 모델이다.As described above, the linedal block encryption apparatus according to the encryption method shown in FIG. 8 and the decryption method shown in FIG. 9 includes a smart card and a user subscriber identity module (USIM) having a small area, low power consumption, and low operating frequency characteristics. It is a suitable model for card, SIM card and so on.

상술한 바와 같이 본 발명에 따른 라인달 블록 암호 장치와 그 암호화 및 복호화 방법은, 고속, 저면적의 암호 프로세서를 요구하는 휴대폰이나 PDA같은 이동단말기 또는 스마트 카드에 탑재함으로써 보안이 필요한 중요한 데이터를 빠른 시간 안에 암호화 및 복호화할 수 있고, 예컨대 128비트 입력 데이터를 상위 64비트와 하위 64비트로 나누어 라운드 연산을 수행하도록 되어 있기 때문에, 다음과 같은 효과를 가진다. As described above, the linedal block cipher apparatus and the encryption and decryption method thereof according to the present invention can be used to quickly mount sensitive data requiring security by mounting them on a mobile terminal or a smart card such as a mobile phone or a PDA requiring a high speed and low area cryptographic processor. Since encryption and decryption can be performed in time, and for example, a 128-bit input data is divided into upper 64-bits and lower 64-bits to perform a round operation, the following effects are obtained.                     

첫째, 본 발명에 따른 암호 장치 내의 라운드 연산 장치를 반복 사용함으로써 적은 면적과 빠른 속도로 실시간 데이터를 암호화 및 복호화할 수 있다.First, by repeatedly using the round computing device in the encryption device according to the present invention, it is possible to encrypt and decrypt real-time data with a small area and a high speed.

둘째, 본 발명에 따른 암호 장치는 라인달 알고리즘을 적용한 라운드 연산 장치를 이용하여 블록 암호 데이터를 실시간 암/복호화하므로 기존의 DES(Data Encryption Standard) 알고리즘을 적용한 연산 장치에 비해 더 높은 안전성을 제공한다.Second, since the encryption device according to the present invention encrypts / decrypts block cipher data in real time using a round operation device applying the linedal algorithm, the encryption device provides higher security than a calculation device using the conventional Data Encryption Standard (DES) algorithm. .

셋째, 본 발명에 따른 암호 장치의 라인달 암/복호화용 라운드 연산 장치는 라운드 연산을 일정 수만큼 반복하게 하는 단순한 제어기의 추가로 블록 암호 데이터를 빠른 시간 안에 실시간으로 암호화/복호화할 수 있는 장점이 있다.Third, the line operation encryption / decryption round operation device of the encryption device according to the present invention has the advantage of encrypting / decrypting block cipher data in real time in a short time by the addition of a simple controller for repeating a predetermined number of round operations. have.

넷째, 본 발명에 따른 암호 장치의 라운드 연산 장치는 기존의 128비트 단위 라운드 연산 장치에 비해서 절반에 가까운 적은 면적으로도 빠른 시간 내에 데이터를 암/복호화할 수 있다.Fourth, the round computing device of the cryptographic device according to the present invention can encrypt / decrypt data within a short time with a small area close to half compared to the conventional 128-bit round computing device.

다섯째, 본 발명에 따른 암호 장치의 라운드 연산 장치는 적용 분야에 따라서 적절한 방법을 선택하여 구현할 수 있으며, 사용된 하드웨어 리소스의 양에 구애받지 않는 시스템에 적용할 경우, 예컨대 64비트 단위의 라운드 처리가 아닌 128비트 단위의 라운드 처리 방식으로 응용하여 적용함으로써 두 배의 데이터 암호 복호 속도를 얻을 수 있다.Fifth, the round computing device of the cryptographic device according to the present invention can be implemented by selecting an appropriate method according to the application field, and when applied to a system that is independent of the amount of hardware resources used, for example, a 64-bit round processing is performed. Rather than applying 128-bit round processing, the data encryption and decryption speed can be doubled.

이상에서 설명한 것은 본 발명에 따른 라인달 블록 암호 장치와 그 암호화 및 복호화 방법을 실시하기 위한 하나의 실시예에 불과한 것으로서, 본 발명은 상기한 실시예에 한정되지 않고, 이하의 특허청구의 범위에서 청구하는 본 발명의 요 지를 벗어남이 없이 당해 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변경 실시가 가능한 범위까지 본 발명의 기술적 정신이 있다고 할 것이다.What has been described above is only one embodiment for implementing the linedal block encryption apparatus and its encryption and decryption method according to the present invention, and the present invention is not limited to the above-described embodiment, and the scope of the claims Without departing from the gist of the present invention, any person having ordinary skill in the art to which the present invention pertains will have the technical spirit of the present invention to the extent that various modifications can be made.

Claims (12)

128비트의 입력데이터 및 128비트의 입력키를 가지며, 시프트_로우(Shift_Row), 대치(Substitution), 믹스컬럼(MixColumn), 라운드 키 더하기(Add Round key)의 변환과정을 포함하는 라운드 연산을 소정 회수만큼 반복하여 상기 128비트의 입력데이터를 암호화하는 라인달 블록 암호화 장치에 있어서, It has a 128-bit input data and a 128-bit input key, and performs a round operation including conversion of Shift_Row, Substitution, MixColumn, and Add Round key. A linedal block encryption apparatus for encrypting the 128-bit input data repeatedly by a number of times, 적어도 상기 대치(Substitution), 믹스컬럼(MixColumn), 라운드 키 더하기(Add Round key)의 변환과정에서는 데이터를 64비트 단위로 처리하는 라운드 연산 실행부와 상기 라운드 키 더하기 과정에 라운드키를 제공하기 위해 라운드키를 생성하는 라운드키생성부를 포함하는 라운드 연산부;At least in the conversion process of Substitution, MixColumn, and Add Round key, a round operation execution unit for processing data in 64-bit units and a round key for providing the round key addition process are provided. A round operator comprising a round key generator to generate a round key; 상기 라운드 연산부에 의해 수행되는 라운드 연산을 제어하는 라운드 연산 제어부; 및A round operation control unit controlling a round operation performed by the round operation unit; And 상기 라운드 연산부에 의해 매 라운드의 중간단계에서 생성되는 64비트의 중간 데이터 및 매 라운드의 종료단계에서 생성되는 128비트의 데이터를 저장하기 위한 데이터기억부를 포함하는 것을 특징으로 하는 라인달 블록 암호화 장치.And a data storage unit for storing 64-bit intermediate data generated at the intermediate stage of each round and 128-bit data generated at the end of each round by the round operation unit. 제 1 항에 있어서, The method of claim 1, 상기 데이터기억부는 하나 이상의 레지스터를 포함하며, 그 크기의 전체합이 192비트와 같거나 큰 것을 특징으로 하는 라인달 블록 암호화 장치.The data storage unit includes one or more registers, characterized in that the total sum of the size is equal to or larger than 192 bits. 128비트의 입력데이터 및 128비트의 입력키를 가지며, 역시프트_로우(Inverse Shift_Row), 역대치(Inverse Substitution), 라운드 키 더하기(Add Round key), 역믹스컬럼(Inverse MixColumn)의 변환과정을 포함하는 라운드 연산을 소정 회수만큼 반복하여 상기 128비트의 입력데이터를 복호화하는 라인달 블록 복호화 장치에 있어서, It has 128 bits of input data and 128 bits of input key and converts Inverse Shift_Row, Inverse Substitution, Add Round key, and Inverse MixColumn. A linedal block decoding apparatus for decoding input data of 128 bits by repeating a round operation including a predetermined number of times, 적어도 상기 역대치(Inverse Substitution), 라운드 키 더하기(Add Round key), 역믹스컬럼(Inverse MixColumn)의 변환과정에서는 데이터를 64비트 단위로 처리하는 라운드 연산 실행부와 상기 라운드 키 더하기 과정에 라운드키를 제공하기 위해 라운드키를 생성하는 라운드키생성부를 포함하는 라운드 연산부;At least the inverse substitution, add round key, and inverse mixcolumn conversion process includes a round operation execution unit that processes data in 64-bit units and a round key in the round key addition process. A round operator comprising a round key generator for generating a round key to provide a round key; 상기 라운드 연산부에 의해 수행되는 라운드 연산을 제어하는 라운드 연산 제어부; 및A round operation control unit controlling a round operation performed by the round operation unit; And 상기 라운드 연산부에 의해 매 라운드의 중간단계에서 생성되는 64비트의 중간 데이터 및 매 라운드의 종료단계에서 생성되는 128비트의 데이터를 저장하기 위한 데이터기억부를 포함하는 것을 특징으로 하는 라인달 블록 복호화 장치. And a data storage unit for storing the 64-bit intermediate data generated at the intermediate stage of each round and the 128-bit data generated at the end of each round by the round operation unit. 제 3 항에 있어서, The method of claim 3, wherein 상기 데이터기억부는 하나 이상의 레지스터를 포함하며, 그 크기의 전체합이 192비트와 같거나 큰 것을 특징으로 하는 라인달 블록 복호화 장치.And the data storage unit includes one or more registers, and the total sum of the sizes is equal to or larger than 192 bits. 128비트의 입력데이터 및 128비트의 입력키를 가지며, 시프트_로우(Shift_Row), 대치(Substitution), 믹스컬럼(MixColumn), 라운드 키 더하기(Add Round key)의 변환과정을 포함하는 암호화용 라운드 연산을 소정 회수만큼 반복하여 상기 128비트의 입력데이터를 암호화하거나, 역시프트_로우(Inverse Shift_Row), 역대치(Inverse Substitution), 라운드 키 더하기(Add Round key), 역믹스컬럼(Inverse MixColumn)의 변환과정을 포함하는 복호화용 라운드 연산을 소정 회수만큼 반복하여 상기 128비트의 입력데이터를 복호화하기 위한 라인달 블록 암복호화 장치에 있어서, Encryption round operation with 128-bit input data and 128-bit input key, including conversion of Shift_Row, Substitution, MixColumn, and Add Round key. Repeat the predetermined number of times to encrypt the 128-bit input data, or convert Inverse Shift_Row, Inverse Substitution, Add Round key, and Inverse MixColumn. An apparatus for encrypting a linedal block for decoding the 128-bit input data by repeating a decoding round operation including a process for a predetermined number of times, 암호화 모드에서는, 적어도 상기 대치(Substitution), 믹스컬럼(MixColumn), 라운드 키 더하기(Add Round key)의 변환과정에서는 데이터를 64비트 단위로 처리하고, 복호화 모드에서는, 적어도 상기 역대치(Inverse Substitution), 라운드 키 더하기(Add Round key), 역믹스컬럼(Inverse MixColumn)의 변환과정에서는 데이터를 64비트 단위로 처리하는 라운드 연산 실행부와 상기 라운드 키 더하기 과정에 라운드키를 제공하기 위해 라운드키를 생성하는 라운드키생성부를 포함하는 라운드 연산부;In encryption mode, at least the conversion process of Substitution, MixColumn, and Add Round key processes data in 64-bit units, and in decryption mode, at least the Inverse Substitution. In the conversion process of Add Round key, Inverse MixColumn, a round operation execution unit that processes data in 64-bit units and a round key is provided to provide a round key to the round key addition process. A round operator comprising a round key generator; 상기 라운드 연산부에 의해 수행되는 라운드 연산을 제어하는 라운드 연산 제어부; 및A round operation control unit controlling a round operation performed by the round operation unit; And 상기 라운드 연산부에 의해 매 라운드의 중간단계에서 생성되는 64비트의 중간 데이터 및 매 라운드의 종료단계에서 생성되는 128비트의 데이터를 저장하기 위한 데이터기억부를 포함하는 것을 특징으로 하는 라인달 블록 암복호화 장치.And a data storage unit for storing the 64-bit intermediate data generated at the intermediate stage of each round and the 128-bit data generated at the end of each round by the round operation unit. . 제 5 항에 있어서, 상기 라운드 연산 실행부는, The method of claim 5, wherein the round operation execution unit, 상기 시프트_로우(Shift_Row)연산 및 역시프트_로우(Inverse Shift_Row)연산을 수행하는 시프트/역시프트_로우(Shift/Inverse Shift_Row)연산수단; Shift / inverse shift_row operation means for performing the shift_row operation and the inverse shift_row operation; 상기 대치(Substitution)연산 및 역대치(Inverse Substitution)연산을 수행하는 대치/역대치(Substitution/Inverse Substitution)연산수단;Substitution / Inverse Substitution means for performing the Substitution operation and the Inverse Substitution operation; 상기 믹스컬럼(MixColumn)연산 및 역믹스컬럼(Inverse MixColumn)연산을 수행하는 믹스/역믹스컬럼(MixColumn/Inverse MixColumn)연산수단; 및MixColumn / Inverse MixColumn operating means for performing the MixColumn operation and the Inverse MixColumn operation; And 상기 라운드키 더하기(Add Round key)연산을 수행하는 라운드키 더하기(Add Round key)연산수단을 포함하는 것을 특징으로 하는 라인달 블록 암복호화 장치. And a round key addition means for performing the round key addition operation. 제 6 항에 있어서, 상기 라운드 연산 실행부는,The method of claim 6, wherein the round operation execution unit, 암호 또는 복호모드를 나타내는 모드신호의 입력에 따라 각각 암호화용 라운드 연산 또는 복호화용 라운드 연산을 수행하도록, 상기 대치/역대치연산수단, 상기 믹스/역믹스컬럼연산수단 및 상기 라운드 키 더하기연산수단 사이에서 데이터의 흐름방향을 제어하는 복수의 역다중화수단을 포함하는 것을 특징으로 하는 라인달 블록 암복호화 장치. Between the substitution / subversal calculation means, the mix / inverse mix column calculation means and the round key addition calculation means so as to perform an encryption round operation or a decryption round operation according to an input of a mode signal indicating an encryption or decryption mode, respectively. And a plurality of demultiplexing means for controlling the flow direction of data in the apparatus. 제 5 항 내지 제 7항 중 어느 한 항에 있어서, The method according to any one of claims 5 to 7, 상기 데이터기억부는 하나 이상의 레지스터를 포함하며, 그 크기의 전체합이 192비트와 같거나 큰 것을 특징으로 하는 라인달 블록 암복호화 장치.And the data storage unit includes one or more registers, and the total sum of the sizes is equal to or larger than 192 bits. 128비트의 입력데이터와 128비트의 입력키를 입력받아, 소정 회수만큼 라운드연산을 수행하는 라인달 블록 암호화 방법에 있어서, 상기 방법은,In the method of receiving a 128-bit input data and the 128-bit input key, and performing a round operation for a predetermined number of times, the method of encrypting the line dahl block, 이전 라운드로부터의 128비트 데이터를 시프트_로우(Shift_Row)변환을 가하고, 선택신호에 대응하는 64비트 데이터만을 다음 단계로 출력하는 시프트_로우(Shift_Row)변환단계; 상기 64비트 데이터에 대하여 대치(Substitution)변환을 실시하는 대치(Substitution)변환단계; 상기 64비트 데이터에 대하여 믹스컬럼(MixColumn)변환을 실시하는 믹스컬럼(MixColumn)변환단계; 및 상기 64비트 데이터에 동일한 크기의 라운드 키를 더하는 라운드 키 더하기(Add Round key)단계를 2개의 64비트 데이터 모두에 대해 수행하는 것을 하나의 라운드로 하는 라운드 연산단계; 및A shift_row conversion step of performing shift_row conversion on 128-bit data from the previous round and outputting only 64-bit data corresponding to the selection signal to the next step; A substitution conversion step of performing substitution conversion on the 64-bit data; A MixColumn transformation step of performing a MixColumn transformation on the 64-bit data; And a round operation step of performing a round key addition step of adding a round key having the same size to the 64-bit data on both 64-bit data as one round; And 상기 라운드키 더하기 단계에 라운드 키를 제공하기 위해 라운드키를 생성하는 라운드키 생성단계를 포함하는 것을 특징으로 하는 라인달 블록 암호화 방법.And a round key generation step of generating a round key to provide a round key to the round key addition step. 제 9 항에 있어서, The method of claim 9, 상기 시프트_로우(Shift_Row)변환단계, 대치(Substitution)변환단계, 믹스컬럼(MixColumn)변환단계, 및 라운드 키 더하기(Add Round key)단계는 각각 64비트 크기의 데이터를 처리할 수 있으며, 소정 타이밍에 따라 복수의 64비트 데이터가 동일 시점에 상기 네 단계 중 복수의 단계를 각각 점유하여 처리될 수 있는 것을 특징으로 하는 라인달 블록 암호화 방법.The shift_row conversion step, substitution conversion step, mixcolumn conversion step, and add round key step may process data of 64-bit size, respectively. And a plurality of 64-bit data can be processed by occupying a plurality of steps among the four steps at the same time. 128비트의 입력데이터와 128비트의 입력키를 입력받아, 소정 회수만큼 라운드연산을 수행하는 라인달 블록 복호화 방법에 있어서, 상기 방법은,In the method of decoding a linedal block receiving a 128-bit input data and a 128-bit input key, and performing a round operation a predetermined number of times, the method, 이전 라운드로부터의 128비트 데이터를 역시프트_로우(Inverse Shift_Row)변환을 가하고, 선택신호에 대응하는 64비트 데이터만을 다음 단계로 출력하는 역시프트_로우(Inverse Shift_Row)변환단계; 상기 역시프트_로우 변환된 64비트 데이터에 대하여 역대치(Inverse Substitution)변환을 실시하는 역대치(Inverse Substitution)변환단계; 상기 역대치 변환된 64비트 데이터에 동일한 크기의 라운드 키를 더하는 라운드 키 더하기(Add Round key)단계; 및 상기 라운드 키를 더한 64비트 데이터에 대하여 역믹스컬럼(Inverse MixColumn)변환을 실시하는 역믹스컬럼(Inverse MixColumn)변환단계를 2개의 64비트 데이터 모두에 대해 수행하는 것을 하나의 라운드로 하는 라운드 연산단계; 및An inverse shift_row conversion step of performing inverse shift_row conversion on the 128-bit data from the previous round and outputting only 64-bit data corresponding to the selection signal to the next step; An Inverse Substitution transformation step of performing an Inverse Substitution transformation on the 64-bit data which is also transformed by Low_; An add round key step of adding a round key of the same size to the inversely-converted 64-bit data; And performing an inverse mixcolumn transformation step of performing an inverse mixcolumn transformation on 64-bit data plus the round key on both 64-bit data as one round. step; And 상기 라운드키 더하기 단계에 라운드 키를 제공하기 위해 라운드키를 생성하는 라운드키 생성단계를 포함하는 것을 특징으로 하는 라인달 블록 복호화 방법.And a round key generation step of generating a round key to provide a round key to the round key addition step. 제 11 항에 있어서, The method of claim 11, wherein 상기 역시프트_로우(Inverse Shift_Row)변환단계, 역대치(Inverse Substitution)변환단계, 라운드 키 더하기(Add Round key)단계, 및 역믹스컬럼(Inverse MixColumn)변환단계는 각각 64비트 크기의 데이터를 처리할 수 있으며, 소정 타이밍에 따라 복수의 64비트 데이터가 동일 시점에 상기 네 단계 중 복수의 단계를 각각 점유하여 처리될 수 있는 것을 특징으로 하는 라인달 블록 복호화 방법.The Inverse Shift_Row conversion step, Inverse Substitution conversion step, Add Round key step, and Inverse MixColumn conversion step respectively process 64-bit data. And a plurality of 64-bit data can be processed by occupying a plurality of steps among the four steps at the same time according to a predetermined timing.
KR1020030064737A 2003-06-16 2003-09-18 Apparatus for rijndael block cipher and encryption/decryption method thereof KR100710455B1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN2004800224469A CN1833399B (en) 2003-06-16 2004-06-01 Rijndael block cipher apparatus and encryption/decryption method thereof
US10/560,220 US7688974B2 (en) 2003-06-16 2004-06-01 Rijndael block cipher apparatus and encryption/decryption method thereof
JP2006516910A JP2006527865A (en) 2003-06-16 2004-06-01 Line doll block encryption apparatus and encryption and decryption method thereof
PCT/KR2004/001296 WO2004112309A1 (en) 2003-06-16 2004-06-01 Rijndael block cipher apparatus and encryption/decryption method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20030038892 2003-06-16
KR1020030038892 2003-06-16

Publications (2)

Publication Number Publication Date
KR20040108311A KR20040108311A (en) 2004-12-23
KR100710455B1 true KR100710455B1 (en) 2007-04-24

Family

ID=36994699

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030064737A KR100710455B1 (en) 2003-06-16 2003-09-18 Apparatus for rijndael block cipher and encryption/decryption method thereof

Country Status (2)

Country Link
KR (1) KR100710455B1 (en)
CN (1) CN1833399B (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100668664B1 (en) * 2005-11-22 2007-01-12 한국전자통신연구원 Module and method for encryption/decryption by using aes rijndael block algorithm
WO2008061395A1 (en) * 2006-11-23 2008-05-29 Tsinghua University Aes encryption circuit for data stream executed in desequencing
KR100935372B1 (en) * 2007-12-18 2010-01-06 한국전자통신연구원 Apparatus for encryption/decryption by using ???????? algorithm
KR100949538B1 (en) 2008-09-09 2010-03-25 한국전자통신연구원 Apparatus and method for improving rate encryption and decryption using aes rijndael algorithm
CN104753663B (en) * 2013-12-31 2018-02-23 上海复旦微电子集团股份有限公司 Data processing method and device
KR101593169B1 (en) 2014-08-20 2016-02-15 한국전자통신연구원 Feistel-based variable length block cipher apparatus and method thereof
CN106603223A (en) * 2016-11-30 2017-04-26 中国电子科技集团公司第五十八研究所 FPGA-based Rijndael-ECC encryption system

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100369404C (en) * 2002-01-10 2008-02-13 张红雨 Chaotic encipher series generator

Also Published As

Publication number Publication date
CN1833399A (en) 2006-09-13
CN1833399B (en) 2010-09-22
KR20040108311A (en) 2004-12-23

Similar Documents

Publication Publication Date Title
US7688974B2 (en) Rijndael block cipher apparatus and encryption/decryption method thereof
US7295671B2 (en) Advanced encryption standard (AES) hardware cryptographic engine
McLoone et al. High performance single-chip FPGA Rijndael algorithm implementations
US8170204B2 (en) Method and system for extending advanced encryption standard (AES) operations for enhanced security
EP1246389B1 (en) Apparatus for selectably encrypting or decrypting data
US20030059054A1 (en) Apparatus for generating encryption or decryption keys
US11057193B2 (en) Enhanced randomness for digital systems
US10237066B1 (en) Multi-channel encryption and authentication
KR100710455B1 (en) Apparatus for rijndael block cipher and encryption/decryption method thereof
EP1629626B1 (en) Method and apparatus for a low memory hardware implementation of the key expansion function
JP4395527B2 (en) Information processing device
Beuchat et al. A low-area unified hardware architecture for the AES and the cryptographic hash function ECHO
KR200279546Y1 (en) Device for coding/decoding document
Nayana et al. VLSI implementation of AES Encryption/Decryption Algorithm using FPGA
KR100546777B1 (en) Apparatus and method for SEED Encryption/Decryption, and F function processor therefor
KR20180021473A (en) Encryption device
Gajbhiye et al. FPGA IMPLEMENTATION OF ENCRYPTION AND DECRYPTION RIJINDAEL’S ALGORITHM BASED ON AES
ManjulaRani et al. An Efficient FPGA Implementation of Advanced Encryption Standard Algorithm on Virtex-5 FPGA’s
KR20050019086A (en) Advanced encryption standard(aes) hardware cryptographic engine
KR20200086859A (en) Lightweight block cryptography device
Raval et al. Optimized AES Algorithm Using FeedBack Architecture
Chitu et al. High Performance of an AES-Rijndael ASIC working in OCB/ECB Modes of Operation.
KR20050117268A (en) Aes online round key generation circuit

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
E801 Decision on dismissal of amendment
B601 Maintenance of original decision after re-examination before a trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20060109

Effective date: 20070130

S901 Examination by remand of revocation
E902 Notification of reason for refusal
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee