KR20080052291A - Aes 암복호화 장치 및 암복호화 방법 - Google Patents

Aes 암복호화 장치 및 암복호화 방법 Download PDF

Info

Publication number
KR20080052291A
KR20080052291A KR1020070081452A KR20070081452A KR20080052291A KR 20080052291 A KR20080052291 A KR 20080052291A KR 1020070081452 A KR1020070081452 A KR 1020070081452A KR 20070081452 A KR20070081452 A KR 20070081452A KR 20080052291 A KR20080052291 A KR 20080052291A
Authority
KR
South Korea
Prior art keywords
data
round
key
encryption
xor
Prior art date
Application number
KR1020070081452A
Other languages
English (en)
Other versions
KR100922728B1 (ko
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 한국전자통신연구원
Publication of KR20080052291A publication Critical patent/KR20080052291A/ko
Application granted granted Critical
Publication of KR100922728B1 publication Critical patent/KR100922728B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or 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/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)

Abstract

본 발명은 AES 암복호화 장치 및 암복호화 방법을 제공한다.
본 발명의 AES 암복호화 장치는 하나의 S-box를 이용하여 서브바이트 연산을 수행하고, 서브바이트 연산과 병렬로 믹스컬럼 연산을 수행하고, 4바이트 단위로 키 확장 연산을 수행한다.
따라서 본 발명의 AES 암복호화 장치 및 방법에 의해 RFID/USN과 같이 자원 제약이 있는 환경에서 최소한의 하드웨어를 이용하여 저전력/저면적이면서 높은 성능으로 연산을 수행하고, 암호화 연산과 복호화 연산을 모두 수행할 수 있다.
Figure P1020070081452
AES, 암복호, 서브바이트, 믹스컬럼

Description

AES 암복호화 장치 및 암복호화 방법{AES encryption and decryption apparatus and method}
본 발명은 AES 암복호화 장치 및 암복호화 방법에 관한 것으로, 보다 상세하게는, RFID/USN과 같이 자원 제약이 있는 환경에서 저전력 및 저면적이면서 높은 성능으로 구현되며, 암호화 연산과 복호화 연산을 모두 수행할 수 있는 AES 암복호화 장치 및 암복호화 방법에 관한 것이다.
본 발명은 정보통신부의 IT신성장동력핵심기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2005-S-088-02, 과제명: 안전한 RFID/USN을 위한 정보보호 기술].
AES(Advanced Encryption Standard) 암호 알고리즘은 스트림을 블록 단위로 모아 암호화를 수행하는 국제 표준 대칭키 암호 알고리즘으로서, 대부분의 보안 시스템에 필수적인 암호 알고리즘으로 사용되고 있다. 또한 기본 연산이 8비트 단위로 수행될 수 있는 특징으로 인하여 RFID와 USN과 같은 자원 제약이 많은 환경에서의 적용도 고려되고 있다.
그러나, 통상의 병렬 처리를 통한 고속 AES 연산기는 높은 소비 전력과 큰 하드웨어 면적으로 인하여 RFID나 USN과 같은 환경에 적용하기에는 어려움이 있으며, 8비트 단위 연산을 이용한 저전력 AES 연산기는 연산 시간이 길어 시스템 성능을 크게 저하시키는 원인이 된다. 또한 기존의 저전력 AES 연산 모듈은 저전력 구현을 목적으로 하여 암호화 연산만을 주로 구현하고 있어 복호화 연산이 필요한 프로토콜에는 이용할 수 없는 어려움이 있다.
상기와 같은 문제를 해결하기 위한 본 발명이 이루고자 하는 기술적 과제는 최소한의 연산 로직을 이용하여 AES 암호화 연산과 복호화 연산을 모두 수행하면서 저전력/저면적 구현이 가능한 AES 암복호화 장치 및 방법을 제공하는 것이다.
상기와 같은 문제를 해결하기 위한 본 발명이 이루고자 하는 다른 기술적 과제는 연산을 최적화하여 연산 속도를 향상시킬 수 있는 AES 암복호화 장치 및 방법을 제공하는 것이다.
본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있으며, 본 발명의 실시예에 의해 보다 분명하게 알게 될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
상기의 기술적 과제를 달성하기 위한 본 발명의 AES 암복호화 장치는, 소정의 제어 신호에 따라 각 라운드별로 선별된 입력 데이터 또는 피드백 데이터를 저장하는 데이터 레지스터; 및 상기 데이터 레지스터에 저장된 데이터와 매 라운드마다 입력되는 라운드 키를 매 라운드마다 정해진 연산 순서에 따라 소정 바이트 단위로 논리 연산하여 상기 입력 데이터를 AES 암호화 또는 복호화하는 연산부;를 포함할 수 있다.
상기 연산부는 암호화 시에 상기 데이터 레지스터에 저장된 데이터와 암호화 라운드 키를 XOR 연산하는 제1 XOR 연산부; 라운드 키 확장을 위해 입력되는 라운드 키 및 암호화 시에 상기 제1 XOR 연산부의 출력 데이터를 서브바이트 연산하고, 복호화 시에 상기 서브바이트 연산된 데이터를 역 서브바이트 연산하는 서브바이트 연산부; 암호화 시에 상기 서브바이트 연산된 데이터를 믹스컬럼 연산하고, 복호화 시에 상기 믹스컬럼 연산된 데이터를 역 믹스컬럼 연산하는 믹스컬럼 연산부; 복호화 시에 상기 역 서브바이트 연산된 데이터와 상기 복호화 라운드 키를 XOR 연산하는 제2 XOR 연산부; 및 상기 각 연산부 및 상기 데이터 레지스터의 입력 데이터를 각 라운드별로 선별하는 다수의 다중화기;를 포함할 수 있다.
상기 AES 암복호화 장치는 라운드 키를 상기 연산부에 제공하고, 매 라운드 종료 후 키 확장 연산을 수행하는 키 스케쥴링부;를 더 포함할 수 있다.
상기 키 스케쥴링부는 서브바이트 연산된 라운드 키와 XOR 연산될 라운드 상수를 생성하는 라운드 상수부; 상기 서브바이트 연산된 라운드 키와 상기 라운드 상수를 XOR 연산하는 제3 XOR 연산부; 및 상기 XOR 연산된 키를 이용하여 다음 라운드 키를 업데이트하고, 서브바이트 연산을 위해 상기 다음 라운드 키를 출력하는 키 레지스터;를 포함할 수 있다.
상기의 기술적 과제를 달성하기 위한 본 발명의 AES 암호화 방법은, 소정의 제어 신호에 따라 각 라운드별로 선별된 입력 데이터 또는 피드백 데이터를 저장하는 단계; 및 상기 저장된 데이터와 매 라운드마다 입력되는 암호화 라운드 키를 매 라운드마다 정해진 연산 순서에 따라 소정 바이트 단위로 논리 연산하여 상기 입력 데이터를 AES 암호화하는 단계;를 포함할 수 있다.
상기 암호화 단계는, 상기 입력 데이터와 상기 암호화 라운드 키를 XOR 연산하고, 상기 XOR 연산된 데이터를 서브바이트 연산하고, 상기 서브바이트 연산된 데이터를 믹스컬럼 연산하여 초기 라운드 암호화를 수행하는 단계; 상기 초기 라운드 암호화 수행된 피드백 데이터와 상기 암호화 라운드 키를 XOR 연산하고, 상기 XOR 연산된 데이터를 서브바이트 연산하고, 상기 서브바이트 연산된 데이터를 믹스컬럼 연산하여 반복 라운드 암호화를 수행하는 단계; 상기 반복 라운드 암호화 수행된 피드백 데이터와 상기 암호화 라운드 키를 XOR 연산하고, 상기 XOR 연산된 데이터를 서브바이트 연산하여 마지막 라운드 암호화를 수행하는 단계; 및 상기 마지막 라운드 암호화 수행된 데이터를 상기 암호화 라운드 키와 XOR 연산하고, 상기 XOR 연산된 암호화 데이터를 어드레스 변환 후 출력하는 단계;를 포함할 수 있다.
상기 AES 암호화 방법은 매 라운드 종료 후 키 확장 연산을 수행하는 단계;를 더 포함할 수 있다.
상기 암호화 키 확장 수행 단계는, 상기 암호화 라운드 키를 서브바이트 연산하는 단계; 상기 서브바이트 연산된 라운드 키와 XOR 연산될 라운드 상수를 생성하는 단계; 상기 서브바이트 연산된 라운드 키와 상기 라운드 상수를 XOR 연산하는 단계; 및 상기 XOR 연산된 라운드 키를 이용하여 다음 라운드 키를 업데이트하는 단계;를 포함할 수 있다.
상기의 기술적 과제를 달성하기 위한 본 발명의 AES 복호화 방법은, 소정의 제어 신호에 따라 각 라운드별로 선별된 입력 데이터 또는 피드백 데이터를 저장하는 단계; 및 상기 저장된 데이터와 매 라운드마다 입력되는 복호화 라운드 키를 매 라운드마다 정해진 연산 순서에 따라 소정 바이트 단위로 논리 연산하여 상기 입력 데이터를 AES 복호화하는 단계;를 포함할 수 있다.
상기 복호화 단계는, 상기 입력 데이터를 역 서브바이트 연산하고, 상기 역 서브바이트 연산된 데이터와 상기 복호화 라운드 키를 XOR 연산하여 초기 라운드 복호화를 수행하는 단계; 및 상기 초기 라운드 복호화 수행된 피드백 데이터를 역 믹스컬럼 연산하고, 상기 역 믹스컬럼 연산된 데이터를 역 서브바이트 연산하고, 상기 역 서브바이트 연산된 데이터와 상기 복호화 라운드 키를 XOR 연산하여 반복 라운드 복호화를 수행하는 단계; 및 상기 반복 라운드 복호화 수행된 복호화 데이터를 어드레스 변환 후 출력하는 단계;를 포함할 수 있다.
상기 AES 복호화 방법은 매 라운드 종료 후 키 확장 연산을 수행하는 단계;를 더 포함할 수 있다.
상기 복호화 키 확장 수행 단계는, 두 개의 복호화 라운드 키의 XOR 연산 결과를 서브바이트 연산하는 단계; 상기 서브바이트 연산 결과와 XOR 연산될 라운드 상수를 생성하는 단계; 상기 서브바이트 연산 결과와 상기 라운드 상수를 XOR 연산하는 단계; 및 상기 라운드 상수와 XOR 연산된 결과를 이용하여 다음 라운드 키를 업데이트하는 단계;를 포함할 수 있다.
상기의 기술적 과제를 달성하기 위한 본 발명은 AES 암호화 방법 및 AES 복호화 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공할 수 있다.
본 발명의 AES 암복호화 장치 및 방법은 다음과 같은 효과를 가진다.
첫째, 본 발명의 AES 암복호화 장치는 믹스컬럼 연산부에서 4개의 데이터(4 바이트)를 함께 연산하고, 4개의 키 데이터(4 바이트)를 동시에 업데이트시켜 키 확장을 수행함으로써 연산 로직을 최소화하면서도 종래 방식에 비해 최대 4배의 높은 성능을 얻을 수 있다.
둘째, 본 발명의 AES 암복호화 장치의 데이터 레지스터와 키 레지스터의 어드레스 조작 기법은 하위 두 비트만을 연산하여 어드레스를 조작할 수 있어 효율적으로 연산을 수행할 수 있다.
셋째, 본 발명의 AES 암복호화 장치의 연산 기법은 하나의 S-box를 반복 사용하여 연산을 수행함으로써 최소한의 하드웨어를 이용하여 저면적 및 저전력으로 AES 연산을 최적화시킬 수 있으며, 이로 인한 시스템의 효율성을 향상시킬 수 있다.
이하 본 발명의 바람직한 실시예가 첨부된 도면들을 참조하여 설명될 것이다. 도면들 중 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 참조번호들 및 부호들로 나타내고 있음에 유의해야 한다. 하기에서 본 발명을 설명함에 있어, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다.
또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되 는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1a는 본 발명의 일 실시예에 따른 AES 암복호화 장치의 개략적인 내부 구성도이고, 도 1b는 도 1a의 AES 암복호화 장치의 내부 상세 구성도이다. 도 2는 본 발명의 일 실시예에 따른 데이터 저장 방법을 설명하는 도면이다.
도 1a 및 도 1b의 AES 암복호화 장치는 기존의 AES 연산 장치와 구조적으로 유사한 구조를 가지지만, 각 암복호화 연산을 모두 수행할 수 있도록 하는 데이터 패스 구조와 연산 속도를 향상시키기 위한 각 블록들의 구현 및 연산 순서에서 차이를 보인다.
도 1a 및 도 1b를 참조하면, AES 암복호화 장치는 암복호화부(100), 키 스케쥴러(300) 및 제어부(500)를 포함한다.
암복호화부(100)는 암호화 및 복호화 연산을 모두 수행하고, AES 암복호화 알고리즘에 따라 초기 라운드부터 마지막 라운드까지 반복하여 데이터를 처리함으로써 암호화 및 복호화한다.
암복호화부(100)는 데이터 레지스터(130) 및 연산부(150)를 포함하고, 데이터 레지스터 입력을 선별하는 다중화기(110)를 더 포함할 수 있다.
다중화기(110)는 암호화 또는 복호화에 따라 외부 입력 데이터 및 피드백 데이터를 선별한다. 피드백 데이터는 라운드 처리에 의해 생성된 중간 연산 데이터이다. 다중화기(110)는 암호화를 수행하는 경우, 제1 라운드에서는 외부 시스템으로부터 입력되는 데이터를 선택하고, 제2 라운드부터 마지막 라운드까지는 피드백 데 이터를 선택한다. 다중화기(110)는 복호화를 수행하는 경우, 암호화 라운드의 역순으로 복호화산 처리된 피드백 데이터를 선택한다.
데이터 레지스터(130)는 다중화기(110)의 출력 데이터를 저장한다. 데이터 레지스터(130)는 도 2에 도시된 바와 같이 메모리 어드레스를 행렬 변환한 후 저장한다. 이러한 저장 방식은 하위 두 비트만을 연산하여 어드레스를 조작할 수 있어 어드레스 연산 효율을 높이는 이점이 있다.
연산부(150)는 암호화 또는 복호화 여부 및 라운드에 따라 상기 데이터 레지스터(130)에 저장된 데이터와 키 스케쥴러(300)로부터 입력되는 키값, 즉 라운드 키를 이용하여 암호화 연산 또는 복호화 연산을 수행한다.
연산부(150)는 서브바이트(Sub_Byte) 연산부(151), 믹스컬럼(Mix_Column) 연산부(152), 데이터의 XOR 연산을 위한 다수의 XOR 연산부(153, 154) 및 각 연산부의 입출력 데이터를 선별하는 다수의 다중화기(MUX)(155, 156, 157)를 포함한다.
서브바이트 연산부(151)는 암호화 시에 입력되는 데이터를 서브바이트(Sub_Byte) 연산하고, 복호화 시에 서브 바이트 연산된 데이터를 역 서브바이트(Inverse Sub_Byte) 연산한다. 또한 서브바이트 연산부(151)는 키 확장을 위해 키 스케쥴러(300)로부터 입력되는 라운드 키를 서브바이트 연산한다.
믹스컬럼 연산부(152)는 암호화 시에 서브바이트 연산된 데이터를 믹스컬럼( Mix_Column) 연산하고, 복호화 시에 믹스컬럼 연산된 데이터를 역 믹스컬럼(Inverse Mix_Column) 연산한다. 믹스컬럼 연산부(152)는 키 확장이 진행되고 있는 동안 잔여 데이터를 믹스컬럼 연산 또는 역 믹스컬럼 연산을 수행할 수 있다.
XOR 연산부(153)는 암호화 시에 데이터 레지스터(130)에 저장된 데이터와 키 스케쥴러(300)로부터 입력되는 라운드 키를 XOR 연산하고, 서브바이트 연산부(151)로 출력한다.
XOR 연산부(154)는 복호화 시에 서브바이트 연산부(151)에서 출력되는 역 서브바이트 연산된 데이터와 키 스케쥴러(300)로부터 입력되는 라운드 키를 XOR 연산한다. XOR 연산부(154)는 XOR 연산된 데이터를 데이터 레지스터(130)로 출력한다.
다중화기(155)는 암호화/복호화 여부, 라운드 및 키 확장 여부에 따라, XOR 연산부(153), 데이터 레지스터(130), 믹스컬럼 연산부(152) 및 키 스케쥴러(300)의 출력 중 하나를 선택하고, 선택한 데이터를 서브바이트 연산부(151)로 출력한다. 암호화의 경우에는 XOR 연산부(153)의 출력을 선택하고, 복호화의 경우에는 제1 라운드에서는 데이터 레지스터(130)의 출력을 선택하고 제2 라운드 이상에서는 역 믹스컬럼 연산 처리된 믹스컬럼 연산부(152)의 출력을 선택하고, 키 확장의 경우에는 키 스케줄러(300)로부터의 라운드 키를 선택한다.
다중화기(156)는 암호화/복호화 여부 및 라운드에 따라, 암호화의 경우 서브바이트 연산부(151)의 출력을 선택하고, 복호화의 경우 복호화 제2 라운드부터 데이터 레지스터(130)의 출력을 선택한 후, 선택한 데이터를 믹스컬럼 연산부(152)로 출력한다.
다중화기(157)는 암호화 연산의 마지막 라운드의 경우 서브바이트 연산부(151)의 출력을 선택하고, 복호화의 경우 XOR 연산부(154)의 출력을 선택한 후, 선택한 데이터를 다중화기(110)로 출력한다.
키 스케쥴러(300)는 암복호화부(100)의 암복호화 연산에 필요한 각 라운드별 키를 생성하여 제공한다. 키 스케쥴러(300)는 키 레지스터(310), 라운드 상수부(rcon)(330), XOR 연산부(350)를 포함한다.
키 레지스터(310)는 외부 시스템으로부터 초기 키를 수신하여 키 확장 연산에 의한 키 처리 후 생성된 암호화 연산의 제1 라운드를 위한 라운드 키를 저장하고, 연산부(150)에 라운드 키를 제공한다. 제2 라운드부터는 키 확장 연산에 의해 생성된 라운드 키를 저장하고, 연산부(150)에 해당 라운드 키를 제공한다. 키 레지스터(310)는 암호화의 경우 데이터 레지스터의 출력과 XOR 연산될 해당 라운드 키를 XOR 연산부(153)로 출력하고, 키 확장 연산의 경우 라운드 키의 서브바이트 연산을 위해 다중화기(155)로 출력한다. 키 레지스터(310)는 복호화의 경우 서브바이트 연산부(151)의 출력과 XOR 연산될 라운드 키를 XOR 연산부(154)로 출력한다. 키 레지스터(310) 또한 데이터 레지스터(130)와 유사하게 라운드 키의 메모리 어드레스를 행렬 변환한 후 저장한다. 이러한 저장 방식은 하위 두 비트만을 연산하여 어드레스를 조작할 수 있어 어드레스 연산 효율을 높이는 이점이 있다.
라운드 상수부(330)는 키 확장 시 서브바이트 연산부(151)에서 서브바이트 연산된 라운드 키에 XOR 연산될 상수를 생성하여 XOR 연산부(350)로 출력한다.
XOR 연산부(350)는 서브바이트 연산부(151)에서 서브바이트 연산되어 출력되는 라운드 키와 라운드 상수부(330)에서 출력되는 상수를 XOR 연산한 후, 키 레지스터(310)로 출력한다. 키 레지스터(310)로 입력된 XOR 연산된 라운드 키는 다른 라운드 키들을 업데이트한다. 이때 네 개의 라운드 키, 즉 4 바이트의 데이터를 업 데이트시킴으로써 연산 효율성을 높일 수 있다.
제어부(500)는 제어 신호를 생성하여 암복호화부(100) 및 키 스케쥴링부(300)의 각 블록의 동작을 제어한다.
도 3a 및 도 3b는 본 발명의 암복호화 장치의 서브바이트 연산부(151)의 내부 구성을 나타내는 블록도이다.
도 3a를 참조하면, 서브바이트 연산부(151a)는 8비트로 구성된 상태(State) 값을 갖는 데이터를 변환시키는 연산을 수행하며, 암호화 시에 서브바이트 연산을 수행하고 복호화 시에 그 역변환인 역 서브바이트 연산을 수행한다. 서브바이트 연산부(151a)는 또한 키 확장 연산시 입력되는 라운드 키를 서브바이트 연산한다.
서브바이트 연산부(151a)는 역 아핀 변환부(301), S-Box(303), 아핀 변환부(304) 및 다수의 다중화기(302, 305)를 포함한다.
역 아핀 변환부(301)는 복호화 연산의 경우 서브바이트 연산부(151a)로 입력되는 데이터를 역 아핀 변환한다.
다중화기(302)는 암호화 연산의 경우 서브바이트 연산부(151a)로 입력되는 데이터를 바로 선택하고, 복호화 연산의 경우 역 아핀 변환부(301)의 출력을 선택한다. 선택된 데이터는 S-Box(303)로 출력된다. 이때 다중화기(302)는 'sel' Z 선택 신호에 따라서 암호화 동작을 위한 출력 또는 복호화 동작을 위한 출력을 선택한다.
S-Box(303)는 AES 연산에서 가장 많은 전력을 소비하는 연산 블록이므로, 본 발명에서는 저전력 구현을 위하여 하나의 S-Box만을 구비하여 하나의 S-Box를 반복 사용하며, 메모리가 아닌 로직 게이트로 구현한다. S-Box(303)는 유한체 GF(28)에서 곱셉의 역원을 취하는 x → x-1 매핑(mapping)을 수행한다.
아핀 변환부(304)는 암호화 연산의 경우 S-Box(303)의 출력을 아핀 변환한다.
다중화기(305)는 암호화 연산의 경우 아핀 변환부(304)의 출력을 선택하고 복호화 연산의 경우 S-Box(303)의 출력을 선택한다. 이때 다중화기(305)는 'sel' Z 선택 신호에 따라서 암호화 동작을 위한 출력 또는 복호화 동작을 위한 출력을 선택한다.
도 3a에 따른 Sub_Byte 연산부(151a)에서의 암호화 및 복호화 연산 과정은 다음과 같다.
암호화 연산시, 다중화기(302)는 0을 선택하여 서브바이트 연산부(151a)로 입력되는 데이터를 S-Box(303)로 전송한다. S-Box(303)는 다중화기(302)의 출력 데이터에 대한 치환 연산을 수행한 후 아핀 변환부(304)로 출력한다. 아핀 변환부(304)는 S-Box(303)의 출력 데이터를 아핀 변환하고, 다중화기(305)는 0을 선택하여 아핀 변환부(304)의 출력 데이터를 다음 연산 블록으로 출력한다.
복호화 연산시, 역 아핀 변환부(301)는 서브바이트 연산부(151a)로 입력되는 데이터를 역 아핀 변환한다. 다중화기(302)는 1을 선택하여 역 아핀 변환부(301)의 출력 데이터를 S-Box(303)로 전송한다. S-Box(303)는 다중화기(302)의 출력 데이터에 대한 치완 연산을 수행한다. 다중화기(305)는 1을 선택하여 S-Box(303)의 출력 데이터를 다음 연산 블록으로 출력한다.
도 3b를 참조하면, 도 3b의 서브바이트 연산부(151b)는 도 3a의 서브바이트 연산부(151a)와 기능 및 동작이 동일하고, 다만 역 아핀 변환부(301') 및 아핀 변환부(304') 각각의 입력에 위치하고, 제어 신호와 역 아핀 변환부(301') 및 아핀 변환부(304') 각각의 입력 데이터를 앤드(and) 연산하여 각각 아핀 역 변환부(301') 및 아핀 변환부(304')로 입력하는 앤드 연산부(306, 307)가 추가되는 점에서 다르다. 이러한 구성은 불필요한 로직의 동작을 막음으로써 소비전력을 줄일 수 있는 장점을 갖는다. 도 3b의 내부 구성에 대한 상세한 설명은 도 3a를 참조할 수 있으므로 생략하겠다.
도 4는 본 발명의 일 실시예에 따른 암복호화부(100)의 믹스컬럼(Mix_Column) 연산부(152)의 구성을 나타내는 블록도이다. 도 5는 도 4의 믹스컬럼 연산부(152) 내 Xtime 연산기의 연산 방법을 설명하는 도면이다. 도 6은 본 발명의 일 실시예에 따른 암호화 연산시 도 4의 믹스컬럼 연산부(152)의 연산 과정을 설명하는 도면이다. 도 7은 복호화 연산시 도 4의 믹스컬럼 연산부(152)의 연산 과정을 설명하는 도면이다. 이하에서는 도 4의 믹스 컬럼 연산 블록의 구성의 동작을 도 6 및 도 7을 참조하여 설명하도록 하겠다.
믹스컬럼 연산부(152)는 서브바이트 연산과 병렬로 믹스컬럼 연산을 수행할 수 있고, 암호화 연산을 위한 믹스컬럼(mix column) 연산과 복호화 연산을 위한 역 믹스컬럼(linverse mix column) 연산을 모두 수행하며, 수학식 1과 같은 행렬 연산을 수행한다.
Figure 112007058630407-PAT00001
상기 믹스컬럼 행렬 연산은 수학식 2와 같이 다시 표현될 수 있고, 역 믹스컬럼 행렬 연산은 수학식 3과 같이 다시 표현할 수 있다.
Figure 112007058630407-PAT00002
Figure 112007058630407-PAT00003
도 4를 참조하면, 믹스컬럼 연산부(152)는 믹스컬럼 연산과 역 믹스컬럼 연산의 4개의 입력 데이터를 저장하기 위한 R0, R1, R2, R3 레지스터(404, 405, 406, 407), 3개의 T0, T1, T2 임시 레지스터(408, 409, 410), 입력 데이터들의 XOR 누적 연산을 위한 S0 레지스터(403), 입력 데이터들의 XOR 연산 결과를 저장하기 위한 R0_3 레지스터(411), xtime 연산부(415, 416, 418), 중간 데이터들의 XOR 연산을 위한 XOR 연산부(401, 402, 414, 417, 419), 및 입출력을 선택하기 위한 다중화기(421, 412, 413, 420)를 포함한다.
S0 레지스터(403)는 믹스컬럼 연산부(152)로 입력되는 데이터들을 누적하여 배타적 논리합 연산,
Figure 112007058630407-PAT00004
을 하기 위한 레지스터이다.
R0_3 레지스터(411)는 S0 레지스터(403)의 결과 값을 저장하여 믹스컬럼 연산 또는 역 믹스컬럼 연산에 사용하기 위한 레지스터이다.
R0 내지 R3 레지스터(404, 405, 406, 407)는 입력되는 데이터들을 쉬프트 시키며 저장하기 위한 레지스터이다.
T0 내지 T2 레지스터(408, 409, 410)는 R0 내지 R3 레지스터(404, 405, 406, 407)에 저장된 데이터를 다음 연산에 사용하기 위하여 임시로 저장하는 레지스터이다. 이때 T0 레지스터(408)는 믹스컬럼 연산 및 역 믹스컬럼 연산시 R2 레지스터(406)에 저장된 데이터를 임시 저장하고, T1 및 T2 레지스터(409, 410)는 역 믹스컬럼 연산시 R0 및 R2 레지스터(404, 406)에 저장된 데이터의 XOR 연산 값을 저장한다. Xtime 연산부(415)는 도 5와 같은 연산을 수행하며, Xtime2 연산부(416)와 Xtime3 연산부(418)는 xtime 연산을 두 번, 세 번 반복한다. 도 5는 8비트 데이터의 xtime 연산을 도시한다.
도 6을 참조하면, 암호화 시 믹스컬럼 연산부(152)는 서브바이트 연산 후 입력되는 데이터를 차례로 R0 내지 R3 레지스터(404, 405, 406, 407)에 쉬프트 하면 서 저장하고, S0 레지스터(403)에서는 입력 데이터들을 누적하면서 XOR 연산하여 저장한다. 믹스컬럼 연산될 4개의 데이터가 입력되면 step 3과 같이 R0 내지 R3 레지스터(404, 405, 406, 407)에 데이터가 저장되고, 누적 XOR 연산 값은 R0_3 레지스터(411)에 저장되어 계속 사용된다. T0 레지스터(708)는 R2 레지스터에서 R3 레지스터로 쉬프트 되는 데이터를 입력받아 저장한다.
XOR 연산부(414)는 R2 레지스터(406)와 R3 레지스터(407)의 데이터
Figure 112007058630407-PAT00005
Figure 112007058630407-PAT00006
을 XOR 연산하고, Xtime 연산부(415)는 XOR 연산부(414)의 출력을 xtime 연산하고, XOR 연산부(417)는 Xtime 연산부(415)의
Figure 112007058630407-PAT00007
와 R0_3 레지스터(411)에 저장되어 있는
Figure 112007058630407-PAT00008
와 R3 레지스터(407)의
Figure 112007058630407-PAT00009
를 XOR 연산하여
Figure 112007058630407-PAT00010
를 계산한다.
이후 각 step 별로 동일한 연산을 수행하여 나머지 b 값들을 연산한다. 단 마지막
Figure 112007058630407-PAT00011
연산시 필요한 기존의
Figure 112007058630407-PAT00012
값은 T0 레지스터(408)에 저장되어 있는 값을 사용한다. 다중화기(412)는 R2 레지스터(406)와 T0 레지스터(408)의
Figure 112007058630407-PAT00013
값을 선택한다.
다중화기(420)는 XOR 연산기(417)의 출력인 암호화된 데이터 b 값을 선택하여 출력한다.
도 7을 참조하면, 역 믹스컬럼 연산은 도 6의 믹스컬럼 연산과 유사한 과정으로 진행된다. 단 xtime2 연산을 위한 값들을 저장하기 위하여 T1, T2 레지스 터(409, 410)가 사용되며, xtime2 연산과 xtime3 연산이 추가된다.
복호화 시 믹스컬럼 연산부(152)는 입력되는 데이터를 차례로 R0 내지 R3 레지스터(404, 405, 406, 407)에 쉬프트 하면서 저장하고, S0 레지스터(403)에서는 입력 데이터들을 누적하면서 XOR 연산하여 저장한다. 믹스컬럼 연산될 4개의 데이터가 입력되면 step 3과 같이 R0 내지 R3 레지스터(404, 405, 406, 407)에 데이터가 저장되고, 누적 XOR 연산 값은 R0_3 레지스터(411)에 저장되어 계속 사용된다. T0 레지스터(708)는 R2 레지스터에서 R3 레지스터로 쉬프트되는 데이터를 저장한다. XOR 연산부(702)는 R0 레지스터(404)와 R2 레지스터(406)에서 각각 R1 레지스터(405)와 R3 레지스터(407)로 쉬프트되는 데이터를 XOR 연산하고, 그 값을 T1 레지스터(709)가 저장한다. T2 레지스터(710)는 T1 레지스터(709)의 데이터를 저장한다.
XOR 연산부(414)는 R2 레지스터(406)와 R3 레지스터(407)의 데이터
Figure 112007058630407-PAT00014
Figure 112007058630407-PAT00015
을 XOR 연산하고, Xtime 연산부(415)는 XOR 연산부(414)의 출력을 xtime 연산하고, XOR 연산부(417)는 Xtime 연산부(415)의 출력
Figure 112007058630407-PAT00016
, R0_3 레지스터(411)에 저장되어 있는
Figure 112007058630407-PAT00017
, R3 레지스터(407)의
Figure 112007058630407-PAT00018
를 XOR 연산한다. XOR 연산부(419)는 XOR 연산부(417)의 출력
Figure 112007058630407-PAT00019
, R0_3 레지스터(411)에 저장되어 있는
Figure 112007058630407-PAT00020
를 세 번 xtime 연산한
Figure 112007058630407-PAT00021
, 다중화기(413)에 의해 T1 레지스터(709)와 T2 레지스터(710)에서 번갈아 선택되어 출력되는 데이터를 두 번 xtime 연산한
Figure 112007058630407-PAT00022
를 XOR 연산하여
Figure 112007058630407-PAT00023
를 계산한다.
이후 각 step 별로 동일한 연산을 수행하여 나머지 a 값들을 연산한다. 단 마지막
Figure 112007058630407-PAT00024
연산시 필요한 기존의
Figure 112007058630407-PAT00025
값은 T0 레지스터(408)에 저장되어 있는 값을 사용한다.
다중화기(420)는 XOR 연산기(417)의 출력인 복호화된 데이터 a 값을 선택하여 출력한다.
도 8은 본 발명의 일 실시예에 따른 키 레지스터의 내부 구성을 나타내는 블록도이다. 도 9는 도 8의 키 레지스터에서 출력 제어기의 내부 구성을 나타내는 블록도이다. 도 10 및 도 11은 본 발명의 일 실시예에 따른 키 확장 연산 과정을 보여주는 도면이다.
도 8을 참조하면, 본 발명의 키 레지스터(310)는 키값 저장 및 키 확장 연산을 수행하며, 효율적인 키 확장 연산을 위하여 4 바이트씩 연산을 수행한다. 키 확장 연산은 암복호화부의 각 라운드가 종료된 후 수행되어, 다음 라운드에 제공될 라운드 키를 생성한다.
키 레지스터(310)는 라운드 키 및 중간 연산 값을 저장하는 레지스터(805, 806, 807, 808), 레지스터 입출력 선택을 위한 다중화기(801, 802, 803, 804, 809, 810, 811, 812), 데이터의 XOR 연산을 위한 XOR 연산부(813, 815, 817, 819), 암호 화와 복호화 시 데이터 패스를 결정하기 위한 다중화기(814, 816, 818), AES 연산과 키 확장 연산시 필요한 라운드 키를 출력하기 위한 출력 제어기(820)를 포함한다. 다중화기(814, 816, 818)는 암호화 시 0을 선택하고, 복호화 시 1을 선택하여 해당 데이터를 수신한다.
도 9를 참조하면, 출력 제어기(820)는 암복호화 연산 시에 해당 라운드 키를 출력하는 동작과 매 라운드 종료 후 키 확장 연산을 위한 라운드 키를 출력하는 동작을 수행한다.
출력 제어기(820)는 복호화 시 라운드 키들의 XOR 연산을 하는 XOR 연산부(820a, 820b, 820c, 820l), 암복호화 동작 모드에 따라 데이터를 선택하는 다중화기(820d, 820e, 820f, 820i, 820j, 820k, 820m), 출력 전 라운드 키를 임시로 저장하는 레지스터(820h), 임시 저장 레지스터의 입력을 선택하는 다중화기(820g), 16개의 라운드 키 중 하나를 선택하는 출력 다중화기(820n)를 포함한다.
키 레지스터(310)는 암호화 동작시에는 키 레지스터(310)에 저장되어 있는 라운드 키들을 하나씩 출력하고, 키 확장 연산시에는 라운드 키를 서브바이트 연산하여 새로운 키를 생성한다.
도 10을 함께 참조하여 키 확장 연산 과정을 살펴보면, 키 레지스터(310)는 암호화 동작의 경우, 16개의 라운드 키의 4×4 행렬에서 마지막 열, 마지막 행의 KEY[15] 데이터, 즉 마지막 어드레스 값을 갖는 키를 먼저 출력한다. 이는 키 어드레스를 효율적으로 조작하기 위해서이다. 서브바이트 연산부(800)는 KEY[15] 데이터를 서브바이트 연산한다. XOR 연산부(350)는 서브바이트 연산된 KEY[15] 데이터 를 라운드 상수와 XOR 연산하고 다시 키 레지스터(310)로 출력한다. 키 레지스터(310)로 입력된 라운드 키(도 8의 din)는 다음 키 확장 연산에 이용될 행의 기존 KEY[8: 11] 데이터를 연산하여 새로운 키를 생성하고 저장한다. 다음은 KEY [11] 데이터를 서브바이트 연산 후 키들을 업데이트(update)함으로써 새로운 키 KEY[4:7]를 생성하여 저장한다. 이때 기존 KEY[11]은 임시 저장 레지스터(320h)에 저장된 키를 출력하여 사용한다. 이러한 과정을 반복하여 KEY[12:15]까지 모두 생성한다.
복호화 동작의 경우도 상기 암호화 동작의 경우와 유사한 방법으로 동작을 수행하며, 단 서브바이트 연산을 위해 출력되는 값은 XOR 연산부(920a, 920b, 920c, 920l)에 의해 XOR 연산된 KEY[2] xor KEY[3], KEY[6] xor KEY[7], KEY[10] xor KEY[11], KEY[14] xor KEY[15]이 된다. 이때 역시 암호화 동작의 경우처럼 마지막 어드레스를 갖는 키들의 XOR 연산 결과인, KEY[14] xor KEY[15]부터 연산을 수행한다.
암호화 또는 복호화 동작은 키 레지스터의 op_mode에 따라 구현되며, 0의 경우 암호화 동작이, 1의 경우 복호화 동작이 수행된다. 출력 제어부(820)의 로직 역시 op_mode에 따라 암호화 및 복호화 동작을 수행하며, init 제어 값에 의해 라운드 키 출력 동작과 키 확장 동작을 수행한다. 이때는 0의 경우 라운드 키 출력 동작이며, 1의 경우 키 확장 동작이다. 최종 출력은 raddr에 의해 선택된다.
도 11에 도시된 바와 같이 본 발명은 키 확장 연산과 믹스컬럼 연산부(152)에서 잔여 데이터의 믹스컬럼 연산 수행이 병렬로 진행될 수도 있다.
전술한 바와 같이 본 발명의 키 확장 연산은 4 바이트 단위로 키가 업데이트되기 때문에 효율적인 키 처리 연산이 가능하다.
본 발명의 AES 암호화 방법은 암호화 초기 라운드 단계, 암호화 반복 라운드 단계 및 암호화 마지막 라운드 단계로 분류되고, AES 복호화 방법은 AES 암호화 단계를 역으로 수행하는 것으로, 복호화 초기 라운드 단계 및 복호화 반복 라운드 단계로 분류된다.
도 12 및 도 13은 본 발명의 일 실시예에 따른 AES 암복호화 장치에 의한 암호화 초기 라운드(제1 라운드) 처리 과정을 나타내는 도면이다. 도 13의 각 가로 연산은 한 클럭 연산을 나타내고, 각 세로 연산은 레지스터 내에서의 4 바이트 연산을 나타낸다.
도 12 및 도 13을 참조하면, 외부 시스템으로부터 초기 입력 데이터가 다중화기(110)로 입력되고, 초기 키 값이 키 레지스터(310)로 입력된다.
다중화기(110)는 제어 신호에 따라 초기 입력 데이터를 선택하고 데이터 레지스터(130)로 출력한다. 키 레지스터(310)는 초기 키 값을 키 처리하여 초기 라운드 키를 생성한다.
데이터 레지스터(130)는 입력 데이터의 메모리 어드레스를 변환하여 저장하고, XOR 연산기(400)는 데이터 레지스터에 저장된 데이터와 키 레지스터에 저장된 라운드 키 각각으로부터 '0'번 주소의 데이터를 읽어 들여 XOR 연산을 수행한다.
다중화기(155)에 의해 선택된 XOR 연산 결과는 서브바이트 연산부(151)로 입력된다. 서브바이트 연산부(151)는 믹스컬럼 연산을 바로 수행할 수 있도록 서브바 이트 연산을 수행하고, 수행 결과를 바로 믹스컬럼 연산부(152)로 출력한다. 다중화기(156)에 의해 선택된 서브바이트 연산된 데이터는 믹스컬럼 연산부(152)에서 믹스컬럼 연산된 후 피드백 데이터로 다중화기(110)에 의해 선택된 후 데이터 레지스터(130)로 입력되어 저장된다.
서브바이트 연산부(151)에서의 서브바이트 연산시 수행되어야 하는 shift row 연산은 별도의 연산 블록이나 시간을 사용하지 않고 데이터 레지스터와 키 레지스터의 메모리 어드레스 조작으로 수행한다.
믹스컬럼 연산부(152)의 내부 레지스터에 저장되는 데이터는 네 개의 데이터에 대한 XOR 연산이 동시에 수행될 수 있도록 제어된다. 믹스컬럼 연산부(152)의 R0 내지 R3 레지스터에 데이터가 입력되면, 데이터에 대한 연산 후 출력이 발생되고, 이는 데이터 레지스터(130)로 입력되어 저장된다.
초기 라운드 연산이 종료되면, 키 스케쥴링부(300)에 의한 키 확장 연산이 수행된다. 이때, 도 11에 도시된 바와 같이 믹스컬럼 연산부(152)에 남아있는 데이터에 대한 연산이 동시에 수행되어 데이터 레지스터에 저장된다.
키 확장 연산은 키 레지스터(310)로부터 출력되는 하나의 키 데이터를 서브바이트 연산부(151)에서 서브바이트 연산을 수행하고, 서브바이트 연산 결과값을 라운드 상수와 XOR 연산한 후, XOR 연산 결과값을 이용하여 다음 4개의 라운드 키를 동시에 업데이트하여 새로운 키를 생성한다. 이때 키 업데이트에 의하여 서브바이트 연산되어야 할 라운드 키가 없어지는 것을 방지하기 위하여 키 레지스터 내의 임시 저장 레지스터(920h)에 임시 저장한다. 키 확장 연산은 마지막 어드레스 값을 갖는 키부터 수행된다.
도 14는 본 발명의 일 실시예에 따른 AES 암복호화 장치의 암호화 반복 라운드(제2 라운드 이후부터 마지막 10 라운드 전까지)의 처리 과정을 나타내는 도면이다.
도 14를 참조하면, 반복 라운드는 초기 라운드 동작과 유사하며, 다만 다중화기(110)에 의해 선택되어 데이터 레지스터(130)에 저장되는 데이터가 초기 라운드 연산 결과인 피드백 데이터인 차이가 있다. 따라서 반복 라운드의 상세한 설명은 생략하겠다.
반복 라운드 동작에서 각 라운드 연산이 종료되면, 키 스케쥴링부(300)에 의한 키 확장 연산이 수행된다. 키 확장 연산 또한 전술한 동작과 동일하므로 상세한 설명은 생략하겠다.
도 15는 본 발명의 일 실시예에 따른 AES 암복호화 장치의 암호화 마지막 라운드(제10 라운드)의 처리 과정을 나타내는 도면이다. 전술된 내용과 중복되는 내용의 상세한 설명은 생략하겠다.
도 15를 참조하면, 마지막 라운드 연산은 믹스컬럼 연산이 없다는 점에서 초기 라운드 및 반복 라운드 연산과 차이가 있다.
이전 라운드(제9 라운드) 연산 결과인 피드백 데이터가 다중화기(110)를 통해 데이터 레지스터에 입력된다.
데이터 레지스터(130)는 입력 데이터의 메모리 어드레스를 변환하여 저장하고, XOR 연산기(400)는 데이터 레지스터에 저장된 데이터와 키 레지스터에 저장된 라운드 키 각각으로부터 '0'번 주소의 데이터를 읽어 들여 XOR 연산을 수행한다.
다중화기(155)에 의해 선택된 XOR 연산 결과는 서브바이트 연산부(151)로 입력된다. 서브바이트 연산부(151)는 믹스컬럼 연산을 바로 수행할 수 있도록 서브바이트 연산을 수행한다.
서브바이트 연산된 데이터는 다중화기(157)에 의해 선택된 후 데이터 레지스터(130)에 저장된다.
마지막 라운드 연산이 종료되면, 키 스케쥴링부(300)에 의한 키 확장 연산이 수행된다.
도 17 및 도 18은 본 발명의 일 실시예에 따른 AES 암복호화 장치의 암호화 마지막 라운드 이후의 처리 과정을 도시한다. 전술된 내용과 중복되는 내용의 상세한 설명은 생략하겠다.
도 17을 참조하면, 마지막 라운드 연산 종료 후 키 확장 연산에 의해 생성된 라운드 키와 마지막 라운드 연산 결과 데이터를 XOR 연산부(153)에서 XOR 연산하여 최종 암호화 연산 값을 얻는다. 최종 암호화 연산 결과인 암호문은 데이터 레지스터(130)에서 도 18에 도시된 바와 같은 어드레스 조작이 수행되어 출력된다.
도 19는 본 발명의 일 실시예에 따른 AES 암복호화 장치의 복호화 초기 라운드(제1 라운드)의 처리 과정을 나타내는 도면이다. 복호화 초기 라운드는 암호화 마지막 라운드 연산 수행된 데이터에 대해 전술된 암호화 연산들을 역으로 수행한다.
다중화기(155)는 데이터 레지스터(130)로부터 출력되는 복호화 데이터를 선 택하여 서브바이트 연산부(151)로 출력한다.
서브바이트 연산부(151)는 입력 데이터를 역 서브바이트 연산한다.
XOR 연산부(154)는 서브바이트 연산부(151)의 출력과 키 레지스터(130)에서 출력되는 라운드 키를 XOR 연산하고 데이터 레지스터(130)로 출력한다.
복호화 초기 라운드 종료 후, 암호화 키 확장 연산의 역으로 키 확장 연산을 수행하여 다음 라운드 키를 생성한다.
복호화 라운드의 키 확장 연산은 키 레지스터(310)로부터 출력되는 두 개의 키 데이터를 XOR 연산한 결과를 서브바이트 연산부(151)에서 서브바이트 연산을 수행하고, 서브바이트 연산 결과를 라운드 상수와 XOR 연산한 후, XOR 연산 결과를 이용하여 다음 4개의 라운드 키를 동시에 업데이트하여 새로운 키를 생성한다. 이때 키 업데이트에 의하여 서브바이트 연산되어야 할 라운드 키가 없어지는 것을 방지하기 위하여 키 레지스터 내의 임시 저장 레지스터(920h)에 상기 두 개의 키 데이터를 XOR 연산한 결과를 임시 저장한다. 암호화의 경우와 마찬가지로 복호화 시에도 마지막 어드레스 값을 갖는 키부터 수행된다.
도 20은 본 발명의 일 실시예에 따른 AES 암복호화 장치의 복호화 반복 라운드(제2 라운드 이후부터 제10 라운드까지)의 처리 과정을 나타내는 도면이다.
다중화기(110)는 초기 라운드 연산 결과 데이터인 피드백 데이터를 선택하고, 데이터 레지스터(130)로 출력한다.
다중화기(156)는 데이터 레지스터(130)로부터 출력되는 데이터를 선택하여 믹스컬럼 연산부(152)로 출력한다.
믹스컬럼 연산부(152)는 입력 데이터를 역 믹스컬럼 연산하고, 서브바이트 연산부(151)로 출력한다.
서브바이트 연산부(151)는 역 믹스컬럼 연산된 데이터를 역 서브바이트 연산하고, XOR 연산부(154)로 출력한다.
XOR 연산부(154)는 서브바이트 연산부(151)의 출력과 키 레지스터(130)에서 출력되는 라운드 키를 XOR 연산하여 최종 복호화 연산 값을 얻는다.
최종 복호화 연산 값은 데이터 레지스터(130)에서 어드레스 조작 후 출력된다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
지금까지 본 발명에 대하여 바람직한 실시예들을 중심으로 살펴보았다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다.
그러므로 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 따라서 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1a는 본 발명의 바람직한 일 실시예에 따른 AES 암복호화 장치의 개략적인 내부 구성도이고, 도 1b는 도 1a의 AES 암복호화 장치의 내부 상세 구성도이다.
도 2는 본 발명의 바람직한 일 실시예에 따른 데이터 저장 방법을 설명하는 도면이다.
도 3a 및 도 3b는 본 발명의 바람직한 일 실시예에 따른 암복호화 장치의 서브바이트 연산부의 내부 구성을 나타내는 블록도이다.
도 4는 본 발명의 바람직한 일 실시예에 따른 암복호화부(100)의 믹스컬럼(Mix_Column) 연산부(152)의 구성을 나타내는 블록도이다.
도 5는 본 발명의 바람직한 일 실시예에 따른 도 4의 믹스컬럼 연산부 내 Xtime 연산기의 연산 방법을 설명하는 도면이다.
도 6은 본 발명의 바람직한 일 실시예에 따른 암호화 연산시 도 4의 믹스컬럼 연산부의 연산 과정을 설명하는 도면이다.
도 7은 본 발명의 바람직한 일 실시예에 따른 복호화 연산시 도 4의 믹스컬럼 연산부의 연산 과정을 설명하는 도면이다.
도 8은 본 발명의 바람직한 일 실시예에 따른 키 레지스터의 내부 구성을 나타내는 블록도이다.
도 9는 본 발명의 바람직한 일 실시예에 따른 도 8의 키 레지스터에서 출력 제어기의 내부 구성을 나타내는 블록도이다.
도 10 및 도 11은 본 발명의 바람직한 일 실시예에 따른 키 확장 연산 과정 을 보여주는 도면이다.
도 12 및 도 13은 본 발명의 바람직한 일 실시예에 따른 AES 암복호화 장치에 의한 암호화 초기 라운드 처리 과정을 나타내는 도면이다.
도 14는 본 발명의 바람직한 일 실시예에 따른 AES 암복호화 장치의 암호화 반복 라운드의 처리 과정을 나타내는 도면이다.
도 15 및 도 16은 본 발명의 바람직한 일 실시예에 따른 AES 암복호화 장치의 암호화 마지막 라운드의 처리 과정을 나타내는 도면이다.
도 17 및 도 18은 본 발명의 바람직한 일 실시예에 따른 AES 암복호화 장치의 암호화 마지막 라운드 이후의 처리 과정을 도시한다.
도 19는 본 발명의 바람직한 일 실시예에 따른 AES 암복호화 장치의 복호화 초기 라운드의 처리 과정을 나타내는 도면이다.
도 20은 본 발명의 바람직한 일 실시예에 따른 AES 암복호화 장치의 복호화 반복 라운드의 처리 과정을 나타내는 도면이다.

Claims (38)

  1. 복수의 라운드를 반복 수행하여 입력 데이터를 암복호화하는 AES(Advanced Encryption Standard) 암복호화 장치에 있어서,
    소정의 제어 신호에 따라 각 라운드별로 선별된 상기 입력 데이터 또는 피드백 데이터를 저장하는 데이터 레지스터; 및
    상기 데이터 레지스터에 저장된 데이터와 매 라운드마다 입력되는 라운드 키를 매 라운드마다 정해진 연산 순서에 따라 소정 바이트 단위로 논리 연산하여 상기 입력 데이터를 AES 암호화 또는 복호화하는 연산부;를 포함하는 것을 특징으로 하는 AES 암복호화 장치.
  2. 제1항에 있어서,
    상기 데이터 레지스터는 상기 입력 데이터 또는 피드백 데이터의 메모리 어드레스를 변환하여 저장하는 것을 특징으로 하는 AES 암복호화 장치.
  3. 제1항에 있어서, 상기 연산부는,
    암호화 시에 상기 데이터 레지스터에 저장된 데이터와 암호화 라운드 키를 XOR 연산하는 제1 XOR 연산부;
    라운드 키 확장 시에 입력되는 라운드 키 및 암호화 시에 상기 제1 XOR 연산부의 출력 데이터를 서브바이트 연산하고, 복호화 시에 상기 서브바이트 연산된 데 이터를 역 서브바이트 연산하는 서브바이트 연산부;
    암호화 시에 상기 서브바이트 연산된 데이터를 믹스컬럼 연산하고, 복호화 시에 상기 믹스컬럼 연산된 데이터를 역 믹스컬럼 연산하는 믹스컬럼 연산부;
    복호화 시에 상기 역 서브바이트 연산된 데이터와 상기 복호화 라운드 키를 XOR 연산하는 제2 XOR 연산부; 및
    상기 각 연산부 및 상기 데이터 레지스터의 입력 데이터를 각 라운드별로 선별하는 다수의 다중화기;를 포함하는 것을 특징으로 하는 AES 암복호화 장치.
  4. 제3항에 있어서, 상기 다중화기는,
    암호화 시에 상기 제1 XOR 연산부의 출력 데이터를 선택하고, 복호화 초기 라운드 시에 상기 데이터 레지스터의 출력을 선택하고, 복호화 반복 라운드 시에 상기 역 믹스컬럼 연산된 믹스컬럼 연산부의 출력 데이터를 선택하고, 키 확장시에 상기 라운드 키 확장을 위해 입력되는 라운드 키를 선택하는 제1 다중화기;
    암호화 초기 라운드 및 반복 라운드 시에 상기 서브바이트 연산된 서브바이트 연산부의 출력 데이터를 선택하고, 복호화 반복 라운드 시에 상기 데이터 레지스터의 출력 데이터를 선택하는 제2 다중화기; 및
    암호화 마지막 라운드 시에 상기 서브바이트 연산된 서브바이트 연산부의 출력 데이터를 선택하고, 복호화 시에 상기 제2 XOR 연산부의 출력 데이터를 선택하는 제3 다중화기;를 포함하는 것을 특징으로 하는 AES 암복호화 장치.
  5. 제3항에 있어서, 상기 서브바이트 연산부는,
    상기 제1 XOR 연산부의 출력 데이터를 역 어핀 변환하는 역 어핀 변환부;
    암호화 시에 상기 제1 XOR 연산부의 출력 데이터를 선택하고, 복호화 시에 상기 역 어핀 변환부의 출력 데이터를 선택하는 제4 다중화기;
    상기 제4 다중화기의 출력 데이터를 서브바이트 연산 또는 역 서브바이트 연산하는 S 박스;
    암호화 시에 상기 S 박스의 출력 데이터를 어핀 변환하는 어핀 변환부; 및
    암호화 시에 상기 어핀 변환부의 출력 데이터를 선택하고, 복호화 시에 상기 역 서브바이트 연산된 S 박스의 출력 데이터를 선택하는 제5 다중화기;를 포함하는 것을 특징으로 하는 AES 암복호화 장치.
  6. 제5항에 있어서,
    상기 S 박스는 로직 게이트로 구현되고,
    상기 S 박스 연산 횟수에 의해 전체 연산 시간이 결정되는 것을 특징으로 하는 AES 암복호화 장치.
  7. 제5항에 있어서, 상기 서브바이트 연산부는,
    상기 역 어핀 변환부의 입력에 위치하고, 소정의 제어 신호 데이터와 상기 제1 XOR 연산부의 출력 데이터를 앤드(and) 연산하는 제1 앤드 연산부; 및
    상기 S 박스의 출력과 상기 어핀 변환부의 입력 사이에 위치하고, 상기 제어 신호 데이터와 상기 S 박스의 출력 데이터를 앤드(and) 연산하는 제2 앤드 연산부;를 더 포함하는 것을 특징으로 하는 AES 암복호화 장치.
  8. 제3항에 있어서, 상기 믹스컬럼 연산부는,
    순차적으로 입력되는 데이터를 쉬프트하며 각각 저장하는 네 개의 제1 레지스터;
    상기 제1 레지스터에 저장된 첫 번째 내지 네 번째 데이터를 암호화 또는 복호화 여부에 따라 소정 방법으로 임시 저장하는 다수의 제2 레지스터;
    상기 첫 번째 내지 네 번째 데이터를 누적하면서 XOR 연산한 중간 결과를 저장하는 제3 레지스터;
    상기 첫 번째 내지 네 번째 데이터의 XOR 연산 최종 결과를 저장하는 제4 레지스터;
    암호화 또는 복호화 여부에 따라 상기 레지스터들 중 선택된 레지스터에 저장된 데이터를 소정 횟수 xtime 연산하는 xtime 연산부; 및
    암호화 또는 복호화 여부에 따라 상기 각 레지스터 및 상기 xtime 연산부에 저장된 데이터를 선택하여 XOR 연산하는 다수의 XOR 연산기;를 포함하는 것을 특징으로 하는 AES 암복호화 장치.
  9. 제3항에 있어서, 상기 믹스컬럼 연산부는,
    암호화 시에 순차적으로 입력되는 데이터가 a0, a1, a2, a3일 때, 다음과 같은 연산식에 의해 믹스컬럼 연산된 데이터 b0, b1, b2, b3를 생성하고,
    Figure 112007058630407-PAT00026
    복호화 시에 순차적으로 입력되는 상기 믹스컬럼 연산된 데이터 b0, b1, b2, b3는, 다음과 같은 연산식에 의해 역 믹스컬럼 연산된 데이터 a0, a1, a2, a3를 생성하는 것을 특징으로 하는 AES 암복호화 장치:
    Figure 112007058630407-PAT00027
    .
  10. 제1항에 있어서,
    상기 데이터 레지스터로 입력되는 입력 데이터 및 피드백 데이터 중 하나를 암호화 또는 복호화 신호에 따라 선택하는 제6 다중화기;를 더 포함하는 것을 특징으로 하는 AES 암복호화 장치.
  11. 제1항에 있어서,
    상기 라운드 키를 상기 연산부에 제공하고, 매 라운드 종료 후 키 확장 연산을 수행하는 키 스케쥴링부;를 더 포함하는 것을 특징으로 하는 AES 암복호화 장치.
  12. 제11항에 있어서, 상기 키 스케쥴링부는,
    서브바이트 연산된 라운드 키와 XOR 연산될 라운드 상수를 생성하는 라운드 상수부; 및
    상기 서브바이트 연산된 라운드 키와 상기 라운드 상수를 XOR 연산하는 제3 XOR 연산부; 및
    상기 XOR 연산된 키를 이용하여 다음 라운드 키를 업데이트하고, 서브바이트 연산을 위해 상기 다음 라운드 키를 출력하는 키 레지스터;를 포함하는 것을 특징으로 하는 AES 암복호화 장치.
  13. 제12항에 있어서, 상기 키 레지스터는,
    상기 라운드 키 및 상기 라운드 키의 중간 연산 결과를 저장하는 다수의 제1 키 레지스터;
    상기 제1 키 레지스터들의 입출력 데이터를 선별하는 다수의 다중화기;
    상기 제1 키 레지스터들의 출력 데이터와 상기 제3 XOR 연산부의 출력 데이터를 XOR 연산하여 다음 라운드 키를 업데이트하는 다수의 제4 XOR 연산부; 및
    암호화 또는 복호화 시에 매 라운드마다 상기 라운드 키를 출력하고, 키 확 장 시에 상기 다음 라운드 키를 업데이트 전에 임시 저장한 후 출력하는 출력 제어기;를 포함하는 것을 특징으로 하는 AES 암복호화 장치.
  14. 제13항에 있어서,
    상기 출력 제어기는 마지막 어드레스 값을 갖는 라운드 키부터 출력하고,
    상기 제4 XOR 연산부는 상기 출력된 라운드 키의 서브바이트 연산 결과를 이용하여 4개의 다음 라운드 키를 업데이트하는 것을 특징으로 하는 AES 암복호화 장치.
  15. 복수의 라운드를 반복 수행하여 입력 데이터를 암호화하는 AES(Advanced Encryption Standard) 암호화 방법에 있어서,
    (a) 소정의 제어 신호에 따라 각 라운드별로 선별된 상기 입력 데이터 또는 피드백 데이터를 저장하는 단계; 및
    (b) 상기 저장된 데이터와 매 라운드마다 입력되는 암호화 라운드 키를 매 라운드마다 정해진 연산 순서에 따라 소정 바이트 단위로 논리 연산하여 상기 입력 데이터를 AES 암호화하는 단계;를 포함하는 것을 특징으로 하는 AES 암호화 방법.
  16. 제15항에 있어서,
    상기 입력 데이터 또는 피드백 데이터는 메모리 어드레스가 변환되어 저장되는 것을 특징으로 하는 AES 암호화 방법.
  17. 제15항에 있어서, 상기 (b) 단계는,
    (b1) 상기 입력 데이터와 상기 암호화 라운드 키를 XOR 연산하고, 상기 XOR 연산된 데이터를 서브바이트 연산하고, 상기 서브바이트 연산된 데이터를 믹스컬럼 연산하여 초기 라운드 암호화를 수행하는 단계;
    (b2) 상기 초기 라운드 암호화 수행된 피드백 데이터와 상기 암호화 라운드 키를 XOR 연산하고, 상기 XOR 연산된 데이터를 서브바이트 연산하고, 상기 서브바이트 연산된 데이터를 믹스컬럼 연산하여 반복 라운드 암호화를 수행하는 단계;
    (b3) 상기 반복 라운드 암호화 수행된 피드백 데이터와 상기 암호화 라운드 키를 XOR 연산하고, 상기 XOR 연산된 데이터를 서브바이트 연산하여 마지막 라운드 암호화를 수행하는 단계; 및
    (b4) 상기 마지막 라운드 암호화 수행된 데이터를 상기 암호화 라운드 키와 XOR 연산하고, 상기 XOR 연산된 암호화 데이터를 어드레스 변환 후 출력하는 단계;를 포함하는 것을 특징으로 하는 AES 암호화 방법.
  18. 제17항에 있어서,
    매 라운드 종료 후 키 확장 연산을 수행하는 단계;를 더 포함하는 것을 특징으로 하는 AES 암호화 방법.
  19. 제18항에 있어서,
    상기 키 확장 연산과 동시에 잔여 데이터에 대한 믹스컬럼 연산이 수행되는 것을 특징으로 하는 AES 암호화 방법.
  20. 제17항에 있어서, 상기 (b1) 내지 (b3) 단계의 서브바이트 연산은
    상기 XOR 연산된 데이터를 S 박스에 의해 서브바이트 연산하는 단계; 및
    상기 S 박스의 출력 데이터를 어핀 변환하는 단계;를 포함하는 것을 특징으로 하는 AES 암호화 방법.
  21. 제18항에 있어서, 상기 (b1) 내지 (b3) 단계의 서브바이트 연산은,
    제어 신호 데이터와 상기 S 박스의 출력 데이터를 앤드(and) 연산하는 단계;를 더 포함하는 것을 특징으로 하는 AES 암호화 방법.
  22. 제17항에 있어서, 상기 (b1) 내지 (b2) 단계의 믹스컬럼 연산은,
    암호화 시에 순차적으로 입력되는 데이터가 a0, a1, a2, a3일 때, 다음과 같은 연산식에 의해 믹스컬럼 연산된 데이터 b0, b1, b2, b3를 생성하는 것을 특징으로 하는 AES 암호화 방법:
    Figure 112007058630407-PAT00028
    .
  23. 제22항에 있어서,
    상기 입력 데이터 a0, a1, a2, a3는 쉬프트되며 제1 레지스터에 각각 저장되고, XOR 누적 연산되어 제2 레지스터에 저장되는 것을 특징으로 하는 AES 암호화 방법.
  24. 제18항에 있어서, 상기 키 확장 수행 단계는,
    상기 암호화 라운드 키를 서브바이트 연산을 위해 출력하는 단계;
    상기 서브바이트 연산된 라운드 키와 XOR 연산될 라운드 상수를 생성하는 단계;
    상기 서브바이트 연산된 라운드 키와 상기 라운드 상수를 XOR 연산하는 단계; 및
    상기 XOR 연산된 라운드 키를 이용하여 다음 라운드 키를 업데이트하는 단계;를 포함하는 것을 특징으로 하는 AES 암호화 방법.
  25. 제24항에 있어서,
    상기 서브바이트 연산 단계는, 마지막 어드레스 값을 갖는 라운드 키부터 서브바이트 연산하는 단계;를 포함하고,
    상기 업데이트 단계는, 상기 라운드 키의 서브바이트 연산 결과에 의해 4개 의 다음 라운드 키를 업데이트하는 단계;를 포함하는 것을 특징으로 하는 AES 암호화 방법.
  26. 제24항에 있어서,
    상기 업데이트 단계 이전에, 상기 다음 라운드 키를 임시 저장하는 단계;를 포함하는 것을 특징으로 하는 AES 암호화 방법.
  27. 복수의 라운드를 반복 수행하여 암호화된 입력 데이터를 복호화하는 AES(Advanced Encryption Standard) 복호화 방법에 있어서,
    (a) 소정의 제어 신호에 따라 각 라운드별로 선별된 상기 입력 데이터 또는 피드백 데이터를 저장하는 단계; 및
    (b) 상기 저장된 데이터와 매 라운드마다 입력되는 복호화 라운드 키를 매 라운드마다 정해진 연산 순서에 따라 소정 바이트 단위로 논리 연산하여 상기 입력 데이터를 AES 복호화하는 단계;를 포함하는 것을 특징으로 하는 AES 복호화 방법.
  28. 제27항에 있어서,
    상기 입력 데이터 또는 피드백 데이터는 메모리 어드레스가 변환되어 저장되는 것을 특징으로 하는 AES 복호화 방법.
  29. 제27항에 있어서, 상기 (b) 단계는,
    (b1) 상기 입력 데이터를 역 서브바이트 연산하고, 상기 역 서브바이트 연산된 데이터와 상기 복호화 라운드 키를 XOR 연산하여 초기 라운드 복호화를 수행하는 단계; 및
    (b2) 상기 초기 라운드 복호화 수행된 피드백 데이터를 역 믹스컬럼 연산하고, 상기 역 믹스컬럼 연산된 데이터를 역 서브바이트 연산하고, 상기 역 서브바이트 연산된 데이터와 상기 복호화 라운드 키를 XOR 연산하여 반복 라운드 복호화를 수행하는 단계; 및
    (b3) 상기 반복 라운드 복호화 수행된 복호화 데이터를 어드레스 변환 후 출력하는 단계;를 포함하는 것을 특징으로 하는 AES 복호화 방법.
  30. 제29항에 있어서,
    매 라운드 종료 후 키 확장 연산을 수행하는 단계;를 더 포함하는 것을 특징으로 하는 AES 복호화 방법.
  31. 제29항에 있어서, 상기 키 확장 연산과 동시에 잔여 데이터에 대한 역 믹스컬럼 연산이 수행되는 것을 특징으로 하는 AES 복호화 방법.
  32. 제29항에 있어서, 상기 (b1) 내지 (b2) 단계의 역 서브바이트 연산은,
    상기 입력 데이터 또는 피드백 데이터를 역 어핀 변환하는 단계; 및
    상기 역 어핀 변환된 데이터를 S 박스에 의해 역 서브바이트 연산하는 단계; 를 포함하는 것을 특징으로 하는 AES 복호화 방법.
  33. 제32항에 있어서,
    상기 역 어핀 변환 단계 전에 제어 신호 데이터와 상기 입력 데이터 또는 피드백 데이터를 앤드(and) 연산하는 단계;를 더 포함하는 것을 특징으로 하는 AES 복호화 방법.
  34. 제29항에 있어서, 상기 (b1) 내지 (b2) 단계의 역 믹스컬럼 연산은,
    복호화 시에 순차적으로 입ㅇ력되는 데이터가 b0, b1, b2, b3일 때, 다음과 같은 연산식에 의해 역 믹스컬럼 연산된 데이터 a0, a1, a2, a3를 생성하는 것을 특징으로 하는 AES 복호화 방법:
    Figure 112007058630407-PAT00029
    .
  35. 제34항에 있어서,
    상기 입력 데이터 b0, b1, b2, b3는 쉬프트되며 제1 레지스터에 각각 저장되고, XOR 누적 연산되어 제2 레지스터에 저장되는 것을 특징으로 하는 AES 복호화 방법.
  36. 제30항에 있어서, 상기 키 확장 수행 단계는,
    두 개의 복호화 라운드 키의 XOR 연산 결과를 서브바이트 연산하는 단계;
    상기 서브바이트 연산 결과와 XOR 연산될 라운드 상수를 생성하는 단계;
    상기 서브바이트 연산 결과와 상기 라운드 상수를 XOR 연산하는 단계; 및
    상기 라운드 상수와 XOR 연산된 결과를 이용하여 다음 라운드 키를 업데이트하는 단계;를 포함하는 것을 특징으로 하는 AES 복호화 방법.
  37. 제36항에 있어서,
    상기 서브바이트 연산 단계는, 마지막 두 개의 어드레스 값을 갖는 라운드 키들을 XOR 연산한 결과부터 서브바이트 연산하는 단계;를 포함하고,
    상기 업데이트 단계는, 상기 라운드 상수와 XOR 연산된 결과를 이용하여 4개의 다음 라운드 키를 업데이트하는 단계;를 포함하는 것을 특징으로 하는 AES 복호화 방법.
  38. 제36항에 있어서,
    상기 업데이트 단계 이전에, 상기 다음 라운드 키를 임시 저장하는 단계;를 더 포함하는 것을 특징으로 하는 AES 복호화 방법.
KR1020070081452A 2006-12-05 2007-08-13 Aes 암복호화 장치 및 암복호화 방법 KR100922728B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20060122605 2006-12-05
KR1020060122605 2006-12-05

Publications (2)

Publication Number Publication Date
KR20080052291A true KR20080052291A (ko) 2008-06-11
KR100922728B1 KR100922728B1 (ko) 2009-10-22

Family

ID=39807129

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070081452A KR100922728B1 (ko) 2006-12-05 2007-08-13 Aes 암복호화 장치 및 암복호화 방법

Country Status (1)

Country Link
KR (1) KR100922728B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100949538B1 (ko) * 2008-09-09 2010-03-25 한국전자통신연구원 Aes 라인달 알고리즘을 이용하는 암호화 및 복호화 장치와 그 방법
KR101068367B1 (ko) * 2008-02-27 2011-09-28 인텔 코오퍼레이션 병렬 연산 모드에서 aes 암호화 및 암호 해독을 최적화하는 방법 및 장치
KR20210037945A (ko) * 2019-09-30 2021-04-07 국민대학교산학협력단 부채널 공격 대응이 용이한 128비트 경량 블록 암호화 방법 및 이를 이용한 장치
KR20210081908A (ko) * 2019-12-24 2021-07-02 주식회사 텔레칩스 암호화 알고리즘이 적용된 시스템에서의 데이터 처리 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102279245B1 (ko) * 2019-03-29 2021-07-20 한국항공대학교산학협력단 사물인터넷 응용을 위한 암호화 장치 및 그 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101068367B1 (ko) * 2008-02-27 2011-09-28 인텔 코오퍼레이션 병렬 연산 모드에서 aes 암호화 및 암호 해독을 최적화하는 방법 및 장치
KR100949538B1 (ko) * 2008-09-09 2010-03-25 한국전자통신연구원 Aes 라인달 알고리즘을 이용하는 암호화 및 복호화 장치와 그 방법
US8774402B2 (en) 2008-09-09 2014-07-08 Electronics And Telecommunications Research Institute Encryption/decryption apparatus and method using AES rijndael algorithm
KR20210037945A (ko) * 2019-09-30 2021-04-07 국민대학교산학협력단 부채널 공격 대응이 용이한 128비트 경량 블록 암호화 방법 및 이를 이용한 장치
KR20210081908A (ko) * 2019-12-24 2021-07-02 주식회사 텔레칩스 암호화 알고리즘이 적용된 시스템에서의 데이터 처리 방법

Also Published As

Publication number Publication date
KR100922728B1 (ko) 2009-10-22

Similar Documents

Publication Publication Date Title
Hodjat et al. Area-throughput trade-offs for fully pipelined 30 to 70 Gbits/s AES processors
Hammad et al. High-speed AES encryptor with efficient merging techniques
JP4905000B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
Kitsos et al. FPGA-based performance analysis of stream ciphers ZUC, Snow3g, Grain V1, Mickey V2, Trivium and E0
JP2005215688A (ja) S−box演算を用いるハードウェア暗号化/復号化装置及び、その方法
JPH1055135A (ja) プログラマブルな論理素子/装置を用いた暗号化/復号化装置および方法
JPH09230786A (ja) データの暗号化方法及び装置
CN109981249B (zh) 基于拉链式动态散列和nlfsr的加密解密方法及装置
Stallings NIST block cipher modes of operation for confidentiality
US20200044822A1 (en) Method and apparatus for improving the speed of advanced encryption standard (aes) decryption algorithm
KR100922728B1 (ko) Aes 암복호화 장치 및 암복호화 방법
Tillich et al. Area, delay, and power characteristics of standard-cell implementations of the AES S-box
Buell Modern symmetric ciphers—Des and Aes
Gueron et al. Hardware implementation of AES using area-optimal polynomials for composite-field representation GF (2^ 4)^ 2 of GF (2^ 8)
Kotel et al. Lightweight encryption algorithm based on modified XTEA for low-resource embedded devices
Saudagar et al. Image encryption based on advanced encryption standard (aes)
Sireesha et al. A novel approach of area optimized and pipelined FPGA implementation of AES encryption and decryption
JPWO2009090689A1 (ja) 暗号化装置及び暗号処理方法
EP1629626B1 (en) Method and apparatus for a low memory hardware implementation of the key expansion function
Daoud et al. High-level synthesis optimization of aes-128/192/256 encryption algorithms
Balamurugan et al. Low power and high speed AES using mix column transformation
Iyer et al. Mix/InvMixColumn decomposition and resource sharing in AES
Parikibandla et al. FPGA performance evaluation of present cipher using LCC key generation for IoT sensor nodes
Janshi Lakshmi et al. Design and Implementation of S-Box Using Galois Field Approach Based on LUT and Logic Gates for AES-256
KR102282363B1 (ko) 비트 시리얼 hight 연산 장치 및 그 방법, 그 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하는 컴퓨터 판독 가능한 기록매체 및 컴퓨터 프로그램

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121011

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130923

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140926

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150925

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20171010

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee