KR100710455B1 - Apparatus for rijndael block cipher and encryption/decryption method thereof - Google Patents
Apparatus for rijndael block cipher and encryption/decryption method thereof Download PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/122—Hardware reduction or efficient architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- 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
도 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
상기 라운드 연산부(100)는 상기 모드신호의 값이 '0'을 나타내면 128비트 입력 데이터를 상위 64비트와 하위 64비트로 나누어 각각 시프트_로우, 대치, 믹스컬럼, 라운드 키 더하기의 변환 과정으로 이루어진 라운드 연산을 수행하여 상기 128비트 입력 데이터를 암호화한다.When the value of the mode signal indicates '0', the
상기 라운드 연산부(100)는 상기 모드신호의 값이 '1'을 나타내면, 128비트 입력 데이터를 상위 64비트와 하위 64비트로 나누어 각각 역시프트_로우, 역대치, 라운드 키 더하기, 역믹스컬럼의 변환 과정으로 이루어진 라운드 연산을 수행하여 상기 128비트 입력 데이터를 복호화한다.When the value of the mode signal indicates '1', the
라운드 연산 제어부(300)는 상기 버스(200)를 통해 암호 또는 복호연산 시작신호와 모드신호가 들어오면 이때부터 라운드 연산 시작신호(Round_start)와 라운드 번호신호(Round_number) 및 매 라운드 연산마다 상기 128비트 입력 데이터를 상위 64비트와 하위 64비트로 나누어 선택하기 위한 비트 선택신호(sel)를 상기 라운드 연산부(100)로 전달하여 상기 라운드 연산부(100)의 라운드 연산 작동을 제어한다.The round
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
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
도 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
본 발명의 구현에 필요한 레지스터 공간의 크기(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
상기 라운드 연산부(100)의 시프트/역시프트_로우 변환부(120)는 상기 라운드 연산 제어부(300)로부터 라운드 연산 시작신호와 비트 선택신호가 들어오면 상기 버스(200)를 통해 들어온 모드신호의 값에 따라서 128비트의 이전 라운드의 데이터(단, 제1라운드에서는 128비트 입력데이터)를 바이트 시프트 변환한 후, 상기 비트 선택신호의 값에 따라서 출력이 제어되는 내부의 제1다중화기(121)를 통해 시프트 변환된 128비트 데이터를 상위 64비트(비트선택신호="1"인 경우)와 하위 64비트(비트선택신호="0"인 경우)로 순차적으로 나누어 출력한다.The shift / reverse
상기 라운드 연산부(100)의 대치/역대치 변환부(130)는 상기 시프트/역시프트_로우 변환부(120)로부터 출력되는 상위 64비트 데이터 또는 하위 64비트 데이터를 한 바이트의 입력에 대해서 한 바이트의 출력을 내보내는 대치 박스(S-box) 또는 역대치 박스(SI-box)를 이용하여 대치 또는 역대치 연산한다.The substitution /
상기 라운드 연산부(100)의 제1역다중화기(140)는 상기 대치/역대치 변환부(130)로부터 출력되는 상위 64비트 데이터 또는 하위 64비트 데이터를 상기 모드신호의 값에 따라서 암호 출력단(0)과 복호 출력단(1) 중 어느 하나로 출력한 다.The
상기 라운드 연산부(100)의 믹스/역믹스컬럼 변환부(150)는 상기 제1역다중화기(140)의 암호 출력단(0)을 통해 입력되는 상위 64비트 데이터 또는 하위 64비트 데이터를 믹스컬럼 변환하거나 라운드 키 더하기 변환된 상위 64비트 데이터 또는 하위 64비트 데이터를 역믹스컬럼 변환한다.The mix / inverse
상기 라운드 연산부(100)의 제2역다중화기(160)는 상기 믹스/역믹스컬럼 변환부(150)로부터 출력되는 상위 64비트 데이터 또는 하위 64비트 데이터를 상기 모드신호의 값에 따라서 암호 출력단(0)과 복호 출력단(1) 중 어느 하나로 출력한다.The
상기 라운드 연산부(100)의 라운드 키 더하기 변환부(170)는 상기 제1역다중화기(140)의 복호 출력단(1) 또는 상기 제2역다중화기(160)의 암호 출력단(0)을 통해 입력되는 상위 64비트 데이터 또는 하위 64비트 데이터를 상기 라운드 키 생성부(110)로부터 출력되는 암호화용 또는 복호화용 128비트 라운드 키(RK)와 라운드 키 더하기 변환한다.The round key addition conversion unit 170 of the
상기 라운드 연산부(100)의 제3역다중화기(180)는 상기 라운드 키 더하기 변환부(170)로부터 출력되는 상위 64비트 데이터 또는 하위 64비트 데이터를 상기 모드신호의 값에 따라서 암호 출력단(0)과 복호 출력단(1) 중 어느 하나로 출력한다.The
여기서, 설명한 암/복호화 장치는 암호화모드와 복호화모드에서 사용되는 하드웨어 리소스를 공유하여, 하드웨어가 차지하는 면적을 최소화하고, 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
상기 라운드 키 생성부(110)의 128비트 키 레지스터(111a)는 매 라운드 연산을 위한 암호화용 또는 복호화용 128비트 라운드 키(RK)를 저장한다. 도 3에서 상기 128비트 라운드 키 레지스터(111a)에 저장되는 128비트 라운드 키(RK)는 매 라운드 연산 종료 후 상기 128비트 프리 키 레지스터(111)에 백업되어 다음 라운드 연산에서 이전 라운드의 라운드 키(prekey)로 사용된다.The 128-bit
상기 라운드 키 생성부(110)의 상수저장부(112)는 상기 라운드 연산 제어부(300)로부터 들어오는 라운드 번호신호가 나타내는 라운드가 몇 번째 라운드인지에 따라서 결정되는 상수값(Rcon)을 저장한다. 상기 상수저장부(112)로는 ROM을 사용하는 것이 바람직하다.The
상기 라운드 키 생성부(110)의 제2다중화기(113)는 상기 버스(200)를 통해 들어온 모드신호의 값에 따라서 출력이 제어되어 상기 128비트 프리 키 레지스터(111)와 상기 128비트 라운드 키 레지스터(111a)로부터 입력되는 암호화용 또는 복호화용 32비트 키 중 어느 하나를 선택하여 출력한다.The
상기 라운드 키 생성부(110)의 시프트기(114)는 상기 제2다중화기(113)를 통 해 입력되는 32비트 키를 한 바이트 왼쪽으로 순환 시프트한다.The
상기 라운드 키 생성부(110)의 대치변환기(115)는 대치 연산을 수행하는 대치 박스들로 이루어져 상기 시프트기(114)에 의해 순환 시프트된 32비트 키를 대치 변환한다.The replace
상기 라운드 키 생성부(110)의 제1XOR연산기(116)는 상기 대치변환기(115)로부터 출력되는 32비트 키 중 최상위 한 바이트 값과 상기 상수저장부(112)에 저장된 상수값과의 XOR연산을 수행한다.The
상기 라운드 키 생성부(110)의 라운드 XOR연산부(117)는 상기 제1XOR연산기(116)의 출력 값과 대치변환기(115)의 최상위 한 바이트 값을 제외한 나머지 24비트 값이 합쳐진 32비트 값과, 상기 128비트 프리 키 레지스터(111)에 저장되는 이전 라운드의 128비트 라운드 키(prekey) 및, 상기 128비트 라운드 키 레지스터(111a)에 저장되는 새로운 라운드의 128비트 라운드 키(RK)를 이용하는 XOR연산을 수행하여 상기 128비트 라운드 키 레지스터(111a)에 저장되는 암호화용 또는 복호화용 128비트 라운드 키(RK)를 라운드 연산의 매 라운드마다 새롭게 생성한다.The
상기 라운드 XOR연산부(117)의 제2XOR연산기(118)는 상기 제1XOR연산기(116)의 출력 값과 대치변환기(115)의 최상위 한 바이트 값을 제외한 나머지 24비트 값이 합쳐진 32비트 값과, 이전 라운드의 128비트 라운드 키 중 최상위 32비트(PK0)를 XOR연산하여 새로운 라운드의 암호화용 또는 복호화용 128비트 라운드 키 중 최상위 32비트 라운드 키(RK0)를 생성한다.The
상기 라운드 XOR연산부(117)의 제3XOR연산기(118a)는 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)와 이전 라운드의 128비트 라운드 키 중 최상위 32비트 다음의 95번째부터 64번째까지의 32비트 라운드 키(PK1)를 XOR연산하여 새로운 라운드의 암호화용 128비트 라운드 키 중 95번째부터 64번째까지의 32비트 라운드 키(RK1)를 생성한다.The
상기 제3XOR연산기(118a)는 이전 라운드의 128비트 라운드 키의 127번째부터 96번째까지의 최상위 32비트 라운드 키(PK0)와 그 다음 95번째부터 64번째까지의 32비트 라운드 키(PK1)를 XOR연산하여 새로운 라운드의 복호화용 128비트 라운드 키 중 95번째부터 64번째까지의 32비트 라운드 키(RK1)를 생성한다.The
상기 라운드 XOR연산부(117)의 제3다중화기(119)는 상기 버스(200)를 통해 들어온 모드신호의 값에 따라서 출력이 제어되어 상기 제3XOR연산기(118a)의 입력신호를 선택적으로 결정한다.The output of the
상기 라운드 XOR연산부(117)의 제4XOR연산기(118b)는 새로운 라운드의 128비트 라운드 키 중 95번째부터 64번째까지의 32비트 라운드 키(RK1)와 이전 라운드의 128비트 라운드 키 중 63번째부터 32번째까지의 32비트 라운드 키(PK2)를 XOR연산하여 새로운 라운드의 암호화용 128비트 라운드 키 중 63번째부터 32번째까지의 32비트 라운드 키(RK2)를 생성한다.The
상기 제4XOR연산기(118b)는 이전 라운드의 128비트 라운드 키의 95번째부터 64번째까지의 32비트 라운드 키(PK1)와 그 다음 63번째부터 32번째까지의 32비트 라운드 키(PK2)를 XOR연산하여 새로운 라운드의 복호화용 128비트 라운드 키 중 63 번째부터 32번째까지의 32비트 라운드 키(RK2)를 생성한다.The
상기 라운드 XOR연산부(117)의 제4다중화기(119a)는 상기 버스(200)를 통해 들어온 모드신호의 값에 따라서 출력이 제어되어 상기 제4XOR연산기(118b)의 입력신호를 선택적으로 결정한다.The output of the
상기 라운드 XOR연산부(117)의 제5XOR연산기(118c)는 새로운 라운드의 128비트 라운드 키 중 63번째부터 32번째까지의 32비트 라운드 키(RK2)와 이전 라운드의 128비트 라운드 키 중 31번째부터 0번째까지의 32비트 라운드 키(PK3)를 XOR연산하여 새로운 라운드의 암호화용 128비트 라운드 키 중 31번째부터 0번째까지의 32비트 라운드 키(RK3)를 생성한다.The
상기 제5XOR연산기(118c)는 이전 라운드의 128비트 라운드 키의 63번째부터 32번째까지의 32비트 라운드 키(PK2)와 그 다음 31번째부터 0번째까지의 32비트 라운드 키(PK3)를 XOR연산하여 새로운 라운드의 복호화용 128비트 라운드 키 중 31번째부터 0번째까지의 32비트 라운드 키(RK3)를 생성한다.The
상기 라운드 XOR연산부(117)의 제5다중화기(119b)는 상기 버스(200)를 통해 들어온 모드신호의 값에 따라서 출력이 제어되어 상기 제5XOR연산기(118c)의 입력신호를 선택적으로 결정한다.The
상기와 같이 구성되는 본 발명에 따른 라인달 블록 암복호 장치는 다음과 같이 작동하여 암호화 및 복호화 과정을 수행한다.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
이렇게 입력된 상기 128비트 입력 데이터에 대해, 상기 시프트/역시프트_로우 변환부(120)는 암호/복호 과정에 따라 라인달 블록 암호알고리즘에 정의된 대로 각기 다른 수만큼의 바이트 시프트/역시프트 변환을 수행한다.For the 128-bit input data input as described above, the shift / inverse
만약, 상기 라운드 연산 제어부(300)에서 상위 64비트를 선택하는 신호(sel='1')를 보내오면 상기 시프트/역시프트_로우 변환부(120)는 제1다중화기(121)를 통해서 상위 64비트를 출력하고, 상기 라운드 연산 제어부(300)에서 하위 64비트를 선택하는 신호(sel='0')를 보내오면 제1다중화기(121)를 통해서 하위 64비트를 출력한다.If the round
상기와 같이 바이트 시프트/역시프트_로우 변환이 수행되고 나면, 다음으로 상기 상위 또는 하위 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
상기와 같이 대치/역대치 변환이 수행되고 난 상태에서, 상기 버스(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
믹스/역믹스컬럼 변환을 거친 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
또한, 상기 라운드 키 더하기 변환을 거친 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
이상의 과정은 상위 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
라운드 연산이 시작되면 상기 라운드 키 생성부(110)는 128비트 프리 키 레지스터(111)에 저장된 이전 라운드의 128비트 라운드 키(prekey)를 이용하여 새로운 라운드의 라운드 키(RK)를 생성하기 시작한다.When the round operation is started, the round
상기 버스(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
반면에, 상기 버스(200)에서 복호 과정을 선택하는 모드신호(mode='1')를 보내오는 경우, 먼저 상기 제5XOR연산기(118c)가 이전 라운드의 라운드 키 중 하위 64비트(PK2,PK3)를 32비트씩 서로 XOR연산하여 새로운 라운드 키의 최하위 32비트(RK3)로 임시 저장함과 동시에 이 값(RK3)은 상기 제2다중화기(113)를 거쳐 시프트기(114)의 입력으로 들어간다.On the other hand, when the
상기 시프트기(114)로 들어간 32비트 키는 한 바이트 왼쪽으로 순환 시프트 연산된 다음, 4개의 대치 박스로 이루어진 대치변환기(115)로 들어가 대치 변환된다.The 32-bit key entered into the
상기와 같이 대치 변환을 마친 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
특히, 이때 라운드 키 생성 과정 중 라운드 번호와 관계되는 상수값을 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
이어서, 상기 제2XOR연산기(118)는 제1XOR연산기(116)의 결과값 8비트와 상기 대치변환기(115)의 대치 연산 결과인 나머지 24비트가 합해진 값과 이전 라운드의 라운드 키 중 최상위 32비트(PK0)를 XOR연산하여 생성한 결과값을 새로운 라운드의 최상위 32비트 라운드 키(RK0)로 저장한다.Subsequently, the
상기와 같이 새로운 라운드의 암호화 또는 복호화에 필요한 최상위 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
이때, 상기 제3다중화기(119)는 버스(200)를 통해 들어오는 암호 과정 혹은 복호 과정을 나타내는 모드신호에 따라서 제3XOR연산기(118a)의 입력 값을 결정한다.In this case, the
상기와 같이 새로운 라운드의 최상위 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
특히, 이와 같이 최상위 비트부터 최하위 비트까지 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
실제로, 암호화 라운드 연산 시작 신호의 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
상기 라운드 연산 제어부(300)로부터 클럭 주기가 일정한 라운드 연산 시작신호가 라운드 연산부(100)로 들어오는 경우, 상기 라운드 키 생성부(110)는 2클럭 기간에 암호화 라운드 키를 생성한다.When a round operation start signal having a constant clock period from the round
이때, 상기 제2XOR연산기(118)가 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)를 생성하기까지의 과정은 라 운드 연산 시작신호의 1번째 클럭이 '1'이 되면 진행된다.At this time, the process from the
이어서, 라운드 연산 시작신호의 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
이와 동시에, 상기 제4XOR연산기(118b)는 제3XOR연산기(118a)가 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)와 이전 라운드의 128비트 라운드 키 중 최상위 32비트 다음의 95번째부터 64번째까지의 32비트 라운드 키(PK1)를 XOR연산한 결과값(RKOPK1)과 이전 라운드의 63번째부터 32번째까지의 32비트 라운드 키(PK2)를 XOR연산하여 새로운 라운드의 암호화용 128비트 라운드 키 중 63번째부터 32번째까지의 32비트 라운드 키(RK2)를 생성한다.At the same time, the
이와 동시에, 상기 제5XOR연산기(118c)는 제4XOR연산기(118b)가 제3XOR연산기(118a)에 의해 XOR연산된 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)와 이전 라운드의 128비트 라운드 키 중 최상위 32비트 다음의 95번째부터 64번째까지의 32비트 라운드 키(PK1)의 XOR연산 결과값(RKOPK1)과 이전 라운드의 63번째부터 32번째까지의 32비트 라운드 키(PK2)를 XOR연산한 결과값(RKOPK1PK2)과 이전 라운드의 31번째부터 0번째까지의 32비트 라운드 키(PK3)를 XOR연산하여 새로운 라운드의 암호화용 128비트 라운드 키 중 31번째부터 0번째까지의 32비트 라운드 키(RK3)를 생성한다.At the same time, the
상기 라운드 연산 제어부(300)로부터 클럭 주기가 일정한 라운드 연산 시작신호가 라운드 연산부(100)로 들어오는 경우, 상기 라운드 키 생성부(110)는 1클럭 기간에 암호화 라운드 키를 생성한다.When the round operation start signal having a constant clock period from the round
이때, 상기 제2XOR연산기(118)가 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)를 생성하기까지의 과정은 라운드 연산 시작신호가 입력됨과 동시에 클럭이 '0'인 상태에서 진행된다.At this time, the process from the
상기 라운드 연산 시작신호의 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
이와 동시에, 상기 제4XOR연산기(118b)는 제3XOR연산기(118a)가 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)와 이전 라운드의 128비트 라운드 키 중 최상위 32비트 다음의 95번째부터 64번째까지의 32비트 라운드 키(PK1)를 XOR연산한 결과값(RKOPK1)과 이전 라운드의 63번째부터 32번째까지의 32비트 라운드 키(PK2)를 XOR연산하여 새로운 라운드의 암호화용 128비트 라운드 키 중 63번째부터 32번째까지의 32비트 라운드 키(RK2)를 생성한다.At the same time, the
이와 동시에, 상기 제5XOR연산기(118c)는 제4XOR연산기(118b)가 제3XOR연산기(118a)에 의해 XOR연산된 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)와 이전 라운드의 128비트 라운드 키 중 최상위 32비트 다음의 95번째부터 64번째까지의 32비트 라운드 키(PK1)의 XOR연산 결과값(RKOPK1)과 이전 라운드의 63번째부터 32번째까지의 32비트 라운드 키(PK2)를 XOR연산한 결과값(RKOPK1PK2)과 이전 라운드의 31번째부터 0번째까지의 32비트 라운드 키(PK3)를 XOR연산하여 새로운 라운드의 암호화용 128비트 라운드 키 중 31번째부터 0번째까지의 32비트 라운드 키(RK3)를 생성한다.At the same time, the
상기 라운드 연산 제어부(300)로부터 클럭 주기가 일정한 라운드 연산 시작신호가 라운드 연산부(100)로 들어오는 경우, 상기 라운드 키 생성부(110)는 1클럭 기간에 복호화 라운드 키를 생성한다.When a round operation start signal having a constant clock period from the round
이때, 상기 제2XOR연산기(118)가 새로운 라운드의 128비트 라운드 키 중 127번째부터 96번째까지의 최상위 32비트 라운드 키(RK0)를 생성하기까지의 과정은 라운드 연산 시작신호가 입력됨과 동시에 클럭이 '0'인 상태에서 진행된다.At this time, the process from the
상기 라운드 연산 시작신호의 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
상기와 같이 작동하여 암호화 및 복호화 과정을 수행하는 라인달 블록 암호 장치의 작동을 상기 라운드 연산 제어부(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
도 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
라운드 연산 시작신호의 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
라운드 연산 시작신호의 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
따라서, 상기와 같이 암호화 과정을 수행하는 라인달 블록 암호 장치에서는 상기 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
도 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
또한, 상기와 같이 암호화 과정을 수행하는 라인달 블록 암호 장치에서는 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
라운드 연산 시작신호의 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
라운드 연산 시작신호의 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
라운드 연산 시작신호의 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
이때도, 상기 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
도 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
라운드 연산 시작신호의 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
라운드 연산 시작신호의 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
이때도, 상기 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
도 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
도 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
라운드 연산 시작신호의 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
라운드 연산 시작신호의 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
이때도, 상기 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
도 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
도 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
라운드 연산 시작신호의 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
도 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
실제로, 이때는 도 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
도 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
라운드 연산 시작신호의 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
도 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
실제로, 이때는 도 3에 도시된 라운드 키 생성부(110)가 RK0을 라운드 연산 시작신호가 입력됨과 동시에 클럭이 '0'인 상태에서 생성해두고, 1번째 클럭이 '1'이 되는 순간 PK0과 PK1을 XOR연산해서 RK1을 생성하고, 이와 동시에 PK1과 PK2를 XOR연산해서 RK2를 생성하고, 또 이와 동시에 PK2와 PK3을 XOR해서 RK3을 생성한다.In this case, the round
상기한 바와 같은 도 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)
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100369404C (en) * | 2002-01-10 | 2008-02-13 | 张红雨 | Chaotic encipher series generator |
-
2003
- 2003-09-18 KR KR1020030064737A patent/KR100710455B1/en not_active IP Right Cessation
-
2004
- 2004-06-01 CN CN2004800224469A patent/CN1833399B/en not_active Expired - Fee Related
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 |