KR100734877B1 - Aria 암호 모듈 및 그 방법 - Google Patents

Aria 암호 모듈 및 그 방법 Download PDF

Info

Publication number
KR100734877B1
KR100734877B1 KR1020050124106A KR20050124106A KR100734877B1 KR 100734877 B1 KR100734877 B1 KR 100734877B1 KR 1020050124106 A KR1020050124106 A KR 1020050124106A KR 20050124106 A KR20050124106 A KR 20050124106A KR 100734877 B1 KR100734877 B1 KR 100734877B1
Authority
KR
South Korea
Prior art keywords
key
round
data
encryption
circuit
Prior art date
Application number
KR1020050124106A
Other languages
English (en)
Other versions
KR20070021883A (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 한국전자통신연구원
Priority to KR1020050124106A priority Critical patent/KR100734877B1/ko
Publication of KR20070021883A publication Critical patent/KR20070021883A/ko
Application granted granted Critical
Publication of KR100734877B1 publication Critical patent/KR100734877B1/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/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/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • 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

ARIA 암호 모듈 및 그 방법이 개시된다. 암호처리부는 소정의 라운드 키를 이용한 ARIA 암호 연산을 암호화 키 길이에 따른 라운드 횟수만큼 반복하여 수행하고, 키 스케줄러는 암호 처리부의 암호 연산에 필요한 각 라운드별 라운드 키를 생성하여 암호 처리부로 제공한다. 이로써, 라운드 반복 구조를 통해 면적과 성능을 향상시킬 수 있다.

Description

ARIA 암호 모듈 및 그 방법{ARIA crypto module and method}
도 1은 본 발명에 따른 ARIA 대칭키 암호 모듈의 구성을 도시한 도면,
도 2는 본 발명에 따른 암호 연산부의 일 실시예의 구성을 도시한 도면,
도 3은 본 발명에 따른 암호 처리부의 상세 구성을 도시한 도면,
도 4는 본 발명에 따른 키 스케줄러의 상세 구성을 도시한 도면,
도 5는 본 발명에 따른 도 4에 도시된 키 스케줄러의 라운드키 생성회로의 상세 구성을 도시한 도면,
도 6은 32비트 프로세서와 연동하기 위한 본 발명에 따른 ARIA 암호모듈의 주소버스를 정의한 표,
도 7은 본 발명에 따른 ARIA 암호모듈의 내부 동작을 제어하는 제어레지스터의 동작 설정을 나타낸 표,
도 8은 도 7에 나타난 제어 레지스터의 값에 따른 ARIA 암호모듈의 동작을 세분화하여 나타낸 도표, 그리고,
도 9는 본 발명에 따른 ARIA 암호 방법의 일 실시예의 흐름을 도시한 흐름도이다.
본 발명은 ARIA 암호 모듈 및 ARIA 암호 방법에 관한 것으로, 보다 상세하게는 라운드 구조를 갖는 암호 모듈 및 그 방법에 관한 것이다.
디지털 정보사회가 고도화되고 전자상거래가 활성화됨에 따라, 암호기술은 인터넷을 기반으로 한 사회, 경제적 활동의 안정성과 신뢰성, 사용자 프라이버시 보호 등을 위한 핵심 기술로서 인식되고 있다.
국내에서는 1960년대부터 기관, 연구소, 학계 등에서 대칭키 암호 기술을 연구하여 TTA 표준 대칭키 알고리즘인 SEED를 개발하여 현재 인터넷 뱅킹, 위성방송 및 IMT-2000에서 기본적인 보안 매커니즘으로 활용하고 있다.
그러나 SEED 알고리즘은 효율성보다는 안전성에 중점을 두고 개발되어, 연산을 수행하는데 시간이 오래 걸리고, 하드웨어 모듈로 구현하여도 성능을 충분히 낼 수 없는 구조적 단점을 가지고 있다.
ARIA 암호 알고리즘은 SEED 알고리즘의 단점을 극복하고 효율적인 구현을 위해 보다 효율적인 키 스케줄을 갖고 있으며 암호연산을 처리함에 있어 XOR 기능과 Sbox를 적절하게 사용하는 SPN(Substitution-Permutation Network)구조의 128 비트 블록암호 알고리즘이며, 다양한 안정성을 확보하기 위해 128비트, 192비트, 256비트의 가변 길이를 갖는다.
ARIA 알고리즘의 경우, 소프트웨어에서의 효율성과 하드웨어 구현에 적합한 구조로 보여지나, 이러한 특성을 적용하려는 시스템의 특성에 맞도록 구조를 설계하고 구현하는 방법에 대한 연구는 많이 진행되지 않고 있다.
본 발명이 이루고자 하는 기술적 과제는, 범용 32비트 프로세서와 연동 가능하고 라운드 회로 구조로 구성된 ARIA 암호 알고리즘을 이용한 암호 모듈 및 그 방법을 제공하는 데 있다.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 ARIA 암호 모듈의 일 실시예는, 소정의 라운드 키를 이용한 ARIA 암호 연산을 암호화 키 길이에 따른 라운드 횟수만큼 반복하여 수행하는 암호 처리부; 및 상기 암호 처리부의 암호 연산에 필요한 각 라운드별 라운드 키를 생성하여 상기 암호 처리부로 제공하는 키 스케줄러;를 포함한다.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 ARIA 암호 방법의 일 실시예는, (a) ARIA 암호 연산에 필요한 각 라운드별 라운드 키를 생성하는 단계; 및 (b) 상기 라운드 키를 이용한 ARIA 암호 연산을 암호화 키 길이에 따른 라운드 횟수만큼 반복하여 수행하는 단계:를 포함한다.
이로써, 라운드 반복 구조를 통해 면적과 성능을 향상시킬 수 있다.
이하에서, 첨부된 도면들을 참조하여 본 발명에 따른 ARIA 암호 모듈 및 그 방법에 대해 상세히 설명한다.
도 1은 본 발명에 따른 ARIA 대칭키 암호 모듈의 구성을 도시한 도면이다.
도 1을 참조하면, ARIA 대칭키 암호 모듈은 외부데이터 입력 단자(100, 110), 암호 연산을 수행하는 암호처리부(120), 암호 연산을 수행하는데 필요한 라 운드 키를 생성하는 키스케쥴러(130), ARIA 암호 모듈의 전반적인 연산을 제어하는 제어회로(160) 및 범용 프로세서에서 전송되는 명령을 저장하는 제어레지스터(170)를 포함한다.
암호화 키 데이터(140)는 인테페이스 회로에서 키스케쥴러로 제공되며, 키 스케줄러에서 생성된 라운드 키 데이터(150)는 암호연산부 각 라운드마다 암호처리부로 제공된다.
구체적으로, 외부입력단자(100, 110)는 외부 범용프로세서의 데이터 버스와 연결되어 데이터(100) 또는 암호화에 사용되는 암호화 키(110)를 수신하는 단자로서, 사용되는 프로세서에 따라 동일한 데이터 버스를 사용할 수 있다.
암호처리부(120)는 ARIA 암호 알고리즘을 수행하는 암호연산을 수행한다.
입력 인터페이스회로(121)는 외부 입력단자를 통해 수신되는 데이터들을 분석하여 ARIA 암호 연산에 사용될 데이터는 암호 처리부의 암호 연산부로 전송하고, 암호화 키는 키 스케줄러로 전송하고, 제어 명령에 해당하는 데이터는 제어 레지스터로 전송한다.
암호 연산부는 암호처리를 수행하며, ARIA 알고리즘의 라운드별 암호 연산을 수행하기 위한 라운드 키 데이터는 키 스케쥴러(130)로부터 전송받는다. 암호 처리부(120)는 입력인터페이스(121), 암호연산회로(122), 출력인터페이스(123)로 구성된다.
입력인터페이스회로(121)는 범용 프로세서에서 전송되는 데이터와 명령들을 분석하여 처리할 데이터의 경우에는 암호연산회로(122) 내부의 데이터 레지스터로 데이터를 저장하고, 암호처리에 사용되는 키데이터의 경우에는 키스케쥴러(13) 내부의 키레지스터에 저장한다. 그리고 전송되는 데이터가 연산의 종류를 지정하는 명령의 경우에는 제어레지스터(170)에 데이터를 저장하도록 데이터 경로를 설정한다.
암호 연산부(122)는 ARIA 암호 연산을 수행하는 회로로서, 시스템의 성능과 구현 면적을 고려하여 한 라운드의 암호 연산을 수행하는 회로를 구성하여 전체 라운드 연산을 반복 교체하여 사용하는 구조를 사용한다.
출력 인터페이스(123)는 ARIA 암호 연산의 수행이 끝나면 범용 프로세서에서 연산의 결과를 읽어갈 수 있도록 데이터 버스에 데이터를 전송할 수 있게 경로를 설정한다.
키 스케쥴러(130)는 암호처리부(120)에서 수행하는 암호 연산에서 필요로하는 라운드 키를 생성하는 부분으로 키 초기화부(131), 라운드 키 생성부(132) 및 키 레지스터(133)로 구성된다.
키 초기화부(131)는 입력되는 128비트의 암호화 키를 256비트의 길이로 확장한 후, 3번에 걸친 Feistel 함수를 이용하여 256 비트의 데이터를 생성하며, 이 데이터는 라운드 키 생성부(132)로 입력된다.
라운드 키 생성부(132)는 ARIA 암호 연산에 필요한 라운드 키를 생성하는 회로이다. ARIA 암호 알고리즘의 경우 128비트, 192비트, 256비트의 키 길이를 사용 하므로 수행되는 라운드의 횟수도 12, 14, 16라운드로 변화한다. 따라서 라운드 키 생성부(132)는 ARIA 암호 알고리즘에서 사용하는 3가지 키 길이에 따라 라운드키를 생성한다.
키 레지스터(133)는 라운드 키 생성부(132)에서 현재 암호 처리부의 수행 라운드보다 한 라운드 미리 계산된 라운드 키를 저장하고, 한 라운드 미리 저장된 라운드 키를 암호 연산부(122)에 공급한다.
제어회로(160)는 암호 처리부(120)와 키 스케쥴러(130)에서 수행하는 연산과 동작을 제어하고 데이터의 경로를 설정한다. 제어회로는 각 회로에 제어신호(161)를 공급한다. 예를 들어, 입력 인터페이스(121)에는 데이터의 분석과 분석된 데이터의 경로를 설정하도록 하는 제어신호를 공급하고, 암호 연산부(122)에는 연산할 데이터의 저장과 암호연산을 위한 데이터의 경로를 설정하도록 하는 제어신호를 공급하며, 출력 인테페이스(123)에는 데이터의 출력을 위한 경로를 설정하도록 하는 제어신호를 공급한다.
또한 암호화 키를 입력받아 키 초기화 과정을 수행하도록 하는 제어신호를 키 초기화부(131)에 공급되며, ARIA 암호의 키 길이에 따라 각각 다른 라운드키를 한 라운드 미리 발생하도록 하는 제어신호를 라운드 키 생성부(132)에 공급한다. 라운드 키 생성부에서 미리 계산된 라운드키는 제어신호(161)에 의해 키 레지스터(133)에 저장된다.
제어회로(160)에서 수행되는 일련의 과정은 범용 프로세서에서 인가되는 명령에 의해 결정되며, 연산의 종류를 결정하는 범용 프로세서의 명령은 제어신호(161)에 의해 제어레지스터(170)에 저장된 후, 제어회로(160)에 의해 수행될 명령이 분석된다. 제어회로(160)는 제어레지스터(170)에 저장된 명령으로 수행할 암호 연산의 키 길이와 암호화 연산인지 복호화 연산인지를 구별하며, 각 명령에 따라 적절한 제어신호(161)를 발생하여 암호처리부(120)와 키 스케쥴러(130)에 제공한다.
도 2는 본 발명에 따른 암호 연산부의 일 실시예의 구성을 도시한 도면이다.
도 2를 참조하면, 암호 연산부는 데이터 선택부(MUX), 데이터 레지스터, 조합논리회로로 구성된다.
ARIA 암호 알고리즘의 경우, 암호화 키 길이에 따라 수행하는 라운드의 횟수가 12, 14, 16번으로 가변적이다. 따라서 ARIA 암호 회로의 가변적인 라운드 연산을 효율적으로 구현하기 위해 암호 연산부(122)는 한 개의 라운드 구성을 갖고 이를 반복적으로 교체하여 사용하도록 한다. 도 2는 이러한 반복 구조를 갖는 회로의 일 실시예이다.
데이터 선택부(200)는 암호연산을 수행하는 반복구조에서 연산의 수행을 위해서 초기 라운드 연산에 필요한 데이터를 입력단자1(200)로 인가받아 소정 제어신호를 통해 데이터레지스터(230)에 저장된다.
데이터레지스터(230)에 저장된 데이터는 암호연산을 수행하는 조합논리회로(240)에서 연산을 수행하고 결과는 데이터선택부(220)의 입력단자2(210)로 피드백되어 입력된다. 제어신호는 입력단자2(210)로 피드백되는 신호를 선택하도록 한다.
도 3은 본 발명에 따른 암호 처리부의 상세 구성을 도시한 도면이다.
도 3을 참조하면, 암호 처리부는 라운드 회로의 반복적인 구성을 위해 입력되는 초기데이터(300)와 반복되는 라운드의 피드백 데이터(301) 중 어느 하나를 선 택하는 제1 데이터 선택부(310), 데이터 레지스터(320), ARIA 암호 연산을 수행하기 위해 데이터와 라운드 키(332)를 비트 단위로 XOR 연산을 수행하는 XOR회로(330), 데이터의 암호 연산을 수행하는데 사용하는 홀수 라운드용 S-box layer회로(340), 짝수 라운드용 S-box layer회로(345), 홀수 및 짝수 라운드의 S-box 출력을 선택하는 제2 데이터 선택부(350), 데이터 확산회로(360), 최종라운드 연산을 위한 제3, 제4 데이터 선택부(370,380)로 구성된다.
제1 데이터 선택부(310)는 암호 처리부에서 수행되는 연산에 사용되는 데이터를 처장하기 위한 데이터레지스터(320)에 입력되는 데이터(300, 301)를 선택한다. 데이터의 선택을 위한 제어신호는 제어회로(160)에서 생성된다.
제1 데이터 선택부(310)는 초기 라운드 연산을 수행하기 위해 입력데이터(300)을 선택하며, 2번째 이후의 라운드의 연산을 위해서는 암호 처리부의 연산결과를 피드백하는 데이터(301)를 선택한다.
데이터 레지스터(320)는 암호 처리부에서 수행하는 라운드 연산에서 사용하는 데이터를 저장한다. 또한 데이터레지스터(320)는 암호처리부에서 수행하는 라운드 연산이 종료하는 경우, 최종 연산값을 저장하여 출력 인터페이스(123)에서 데이터를 읽어갈 수 있도록 한다.
XOR회로(330)는 라운드연산을 수행할 때, 데이터 레지스터(320)의 출력 데이터(321)와 키 스케쥴러(130)로부터 인가되는 라운드 키 데이터(332)를 비트단위로 XOR 연산을 수행한다.
홀수 라운드용 S-box layer회로(340), 짝수 라운드용 S-box layer회로(345) 는 각각 ARIA 암호 연산을 수행함에 있어 홀수 라운드에 사용하는 S-box회로와 짝수 라운드에 사용하는 S-box회로를 나타낸다. S-box들은 메모리를 사용하여 look-up 테이블 형태로 구성할 수 있다.
홀수 및 짝수 라운드의 S-box 출력을 선택하는 제2 데이터선택부(350)는 암호 처리부에서 수행하는 라운드 연산이 홀수번째 라운드 연산인지, 짝수번째 라운드 연산인지에 따라 홀수 라운드용 S-box layer회로(340), 짝수 라운드용 S-box layer회로(345)의 출력을 선택하여 출력한다. 이때 데이터의 선택은 제어회로(160)에서 생성되어 입력된다.
데이터 확산회로(360)는 암호 처리부에서 수행하는 암호연산의 확산함수 부분으로 16x16 involution 이진 행렬의 수식으로 정의된다. 이러한 확산행렬은 각 입력 비트의 값들을 이용한 비트의 XOR 연산으로 구현가능하다.
ARIA암호 연산의 경우, 최종라운드 연산에서는 데이터 확산을 사용하지 않고 짝수라운드 S-box를 사용한다. 이러한 연산의 선택적 사용을 위해서 피드백을 위한 제3 데이터선택부(370) 외에 별도의 제4 데이터 선택부가 필요하다. 최종 라운드의 데이터 선택을 위한 신호는 제어회로에서 인가된다.
ARIA 암호 연산의 최종라운드 연산에서 최종적으로 한번 더 라운드키를 XOR하는 작업을 필요로 하므로, 최종 라운드연산용 제4 데이터선택기(380)는 이러한 연산의 지원을 위해서 S-box 연산과 확산함수를 거치지 않는 별개의 데이터 경로(즉 XOR회로의 출력과 연결된 경로)를 선택한다.
도 4는 본 발명에 따른 키 스케줄러의 상세 구성을 도시한 도면이다.
도 4를 참조하면, 라운드키 생성을 위해 입력되는 키 데이터(400)들을 저장하기 위한 키레지스터(410, 411), 라운드 키생성을 위해 초기화 작업을 수행하는 키 초기화부(420), 초기화된 키 데이터들을 저장하는 키 초기화레지스터(430, 431, 432, 433), 라운드키 생성회로(440), 복호화 연산용 라운드키 생성에 사용하는 확산함수(450), 암호화 연산용 라운드키와 복호화 연산용 라운드키를 선택하는 데이터선택부60) 및 각 라운드마다 생성되는 라운드키를 저장하는 라운드키 레지스터(470)로 구성된다.
키 레지스터(410, 411)는 입력 인터페이스회로(121)를 통해 인가되는 키 데이터(400)를 저장한다. 범용 32비트프로세서와의 효율적인 연동을 위해, ARIA 암호알고리즘은 128, 192, 256비트의 3가지 키를 사용하므로 32비트 레지스터들을 사용하여 키 데이터를 저장한다.
예를 들어, 128비트 키가 입력되는 경우 좌측키레지스터(410)에 순차적으로 저장되며, 192비트와 256비트의 키가 입력되는 경우, 좌측키레지스터(410)에 먼저 128비트를 저장후, 나머지 키데이터를 우측키레지스터 (411)에 저장한다.
키초기화부(420)는 입력된 마스트키 정보를 기초로 라운드 키 생성을 위한 초기화를 수행하는 부분으로, ARIA 알고리즘에서 규정한대로 3라운드의 256비트 Feistel 알고리즘을 이용하여 마스터 키로부터 4개의 128비트값 W0~W3을 생성한다.
키초기화 레지스터(430, 431, 432, 433)는 키초기화부(420)를 통해 생성된 초기화 값들을 저장하고, 라운드키를 생성하는 라운드키 생성회로(440)로 데이터를 인가한다.
라운드키 생성회로(440)는 128, 192, 256비트의 3가지 키를 사용하여 암/복호화 연산을 수행하는데 필요한 라운드 키를 생성하는 부분으로, 키초기화 레지스터(430, 431, 432, 433)에 저장된 초기화 값들을 조합하여 키를 생성한다. ARIA 암호회로의 경우, 128, 192, 256비트 키에 대하여 각각 10, 12, 14라운드의 연산을 수행하므로, 11, 13, 15개의 암호화 라운드 키를 생성한다. 복호화 연산을 수행하기 위한 라운드키의 경우, 라운드 키의 생성과 반대의 순서로 라운드키를 생성하고, 첫라운드와 마지막 라운드의 복호화 키를 제외한 나머지 복호화 키에 대해 확산함수(450)를 적용하여 생성한다. 라운드키 생성회로의 데이터 조합 순서는 제어회로에서 공급되는 신호로 정해진다.
데이터 선택부(460)는 암호화 연산과 복호화 연산에 따라 사용되는 키를 선택적하고, 복호화의 경우 첫번째와 마지막 라운드키는 확산함수(450)를 사용하지 않으므로, 이들 데이터를 선택적으로 적용할 수 있는 데이터 경로를 지원한다.
라운드키 레지스터(470)는 라운드키 생성회로(440)에서 생성한 암/복호화 라운드키를 저장하고 이를 암호연산부(120, 122)에 공급하는 역할을 한다. 라운드키 레지스터(470)에 저장되는 데이터는 암호연산부(122)에서 수행되는 라운드보다 1라운드 먼저 연산을 수행하여 데이터를 저장하여, 암호연산부(122)에서 수행하는 암호연산을 원활하게 수행하도록 한다.
도 5는 본 발명에 따른 도 4에 도시된 키 스케줄러의 라운드키 생성회로의 상세 구성을 도시한 도면이다.
도 5를 참조하면, 라운드키 생성회로는 4개의 128비트 입력데이터 W0, 1, 2, 3을 필요에따라 선택하는 데이터 선택부(510, 520)와 데이터를 정해진 비트만큼 회전이동시키는 로테이터회로(530) 및 XOR회로(540)로 구성된다.
데이터선택부(510, 520)는 라운드키 생성을 위해 사용되는 W0, 1, 2, 3의 데이터를 선택하는 데이터선택기로, 좌측데이터선택부(510)의 데이터 선택을 위해서 left_sel(511) 신호가, 우측데이터선택부(520)의 데이터 선택을 위해 right_sel(521) 신호가 제어회로로부터 인가된다. left_sel(511) 신호의 선택은 도 5의 512에 나타낸 표에 의해 선택 신호가 결정되며, right_sel(521) 신호의 선택은 도 5의 531의 표에 의해 선택된다.
로테이터회로(530)는 경우에 따라 우측으로 19, 31비트 및 좌측으로 19, 31, 61비트의 회전한다. 회전이동의 선택은 도 5의 532에 나타낸 표에 따라 선택되어지며, 제어회로에서 공급되는 rotate_sel(531) 신호에 의해 회전이동의 위치와 방향이 결정된다.
XOR회로(540)는 좌측데이터선택부(510)의 출력값과 로테이터회로(530)의 출력값들을 비트단위의 XOR 연산을 수행하여, 라운드키생성회로의 최종 출력값을 생성한다. XOR연산을 수행한 데이터는 라운드키레지스터(470)에 저장된다.
도 6은 32비트 프로세서와 연동하기 위한 본 발명에 따른 ARIA 암호모듈의 주소버스를 정의한 표이다.
ARIA 암호모듈의 동작을 제어하기 위해 제어 레지스터와 입력 데이터 및 암호화 키에 대한 데이터를 데이터 버스를 통해 전송할 필요가 있다. 범용 32비트프로세서와 효율적으로 연동하기 위해 ARIA 암호모듈은 별도의 신호선을 사용하지 않 고, 단순히 주소버스와 데이터버스만 사용하여 연산에 필요한 데이터를 전송하므로 거의 대부분의 범용 프로세서에 연동하여 동작이 가능하다. ARIA 암호모듈의 내부 동작을 제어하기 위한 데이터의 전송은 04번지의 주소를 사용하였고, 입력 데이터는 08번지, 그리고 암호화 키의 전송을 위해서는 0C번지와 10번지를 사용한다.
도 7은 본 발명에 따른 ARIA 암호모듈의 내부 동작을 제어하는 제어레지스터의 동작 설정을 나타낸 표이다.
범용 프로세서는 제어 레지스터에 비트별로 다른 값을 설정함으로써 ARIA 암호모듈의 동작을 제어할 수 있다. 제어레지스터의 최하위 비트가 1로 설정되면 ARIA 모듈의 연산의 시작을 의미한다. 이때는 비트1의 설정값을 참조하여 연산을 수행한다. 제어레지스터의 비트1의 값이 0이면 암호화 연산을 의미하고, 1이면 복호화 연산을 의미한다. 그리고 비트3과 비트2의 값은 ARIA 암호모듈이 사용하는 키의 길이를 나타낸다. 비트3과 2의 값이 '00'이면 128비트의 연산을 '01'이면 192비트의 연산을, '10'이면 256비트의 연산을 의미한다.
도 8은 도 7에 나타난 제어 레지스터의 값에 따른 ARIA 암호모듈의 동작을 세분화하여 나타낸 도표이다.
제어레지스터 3~0비트까지 4개 비트값의 설정에 따라 ARIA 암호 모듈은 각각 128, 192, 256비트 키 길이의 암호화, 복호화 연산을 각각 수행한다.
도 9는 본 발명에 따른 ARIA 암호 방법의 일 실시예의 흐름을 도시한 흐름도이다.
도 9를 참조하면, 키 스케줄러는 각 라운드에 사용될 라운드 키를 생성하고 저장한다(S900). 구체적으로, 외부로부터 입력받은 암호화 키를 Feistel 함수를 이용하여 확장한 후, 상기 확장된 키 값을 기초로 상기 암호화 키 길이에 따른 라운드 횟수만큼 각각의 라운드 키를 생성한다.
암호 처리부는 키 스케줄러에서 생성된 각 라운드별 라운트 키를 이용하여 암호화 키의 길이에 따른 라운드 횟수만큼 ARIA 암호 연산을 수행한다(S910). 구체적으로, 외부 프로세서와 동일한 크기의 데이터 버스를 통해 입력 데이터 및 암호화 키를 수신하고, 라운드별로 각각 생성되는 라운드 키를 기초로 상기 암호화 키 길이에 따른 라운드 횟수만큼 상기 ARIA 암호 연산을 반복 수행하여 상기 입력 데이터에 대한 ARIA 암호화를 수행한다. 그리고 AIRA 암호 연산의 결과를 데이터 버스를 통해 출력한다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본 질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
본 발명에 따르면, ARIA 암호모듈 라운드 회로 및 키 스케쥴러 회로는 범용 32비트 프로세서와 연동하도록 설계되어 인터페이스의 확장성이 뛰어나고, 고속의 성능을 낼 수 있으므로 다양한 성능과 작은 회로 면적을 필요로 하는 통신 네트워크 시스템이나 내장형 시스템 및 대용량 서버 시스템과 같이 다양한 정보보호 응용들에 효율적으로 적용될 수 있다.

Claims (12)

  1. 소정의 라운드 키를 이용한 ARIA 암호 연산을 암호화 키 길이에 따른 라운드 횟수만큼 반복하여 수행하는 암호 처리부;
    상기 암호 처리부의 암호 연산에 필요한 각 라운드별 라운드 키를 생성하여 상기 암호 처리부로 제공하는 키 스케줄러;
    제어 명령을 저장하는 제어 레지스터; 및
    상기 제어 명령에 따라 상기 암호 처리부 및 상기 키 스케줄러의 동작을 제어하는 제어회로;를 더 포함하고,
    상기 암호 처리부는,
    외부 프로세서와 동일한 크기의 데이터 버스를 통해 입력 데이터 및 암호화 키를 수신하고, 라운드 키 생성을 위해 상기 암호화 키를 상기 키 스케줄러로 전달하는 입력 인터페이스;
    상기 키 스케줄러에서 라운드별로 각각 생성되는 라운드 키를 기초로 상기 암호화 키 길이에 따른 라운드 횟수만큼 상기 ARIA 암호 연산을 반복 수행하는 암호 연산부; 및
    상기 AIRA 암호 연산의 결과를 상기 데이터 버스를 통해 출력하는 출력 인터페이스;를 포함하는 것을 특징으로 하는 ARIA 암호 모듈.
  2. 삭제
  3. 삭제
  4. 제 1항에 있어서, 상기 암호 연산부는,
    첫 번째 라운드의 경우 외부 입력 데이터를 선택하고, 두 번째 이상의 라운드의 경우 피드백 데이터를 선택하는 데이터 선택부;
    상기 데이터 선택부에 의해 선택된 데이터를 저장하는 데이터 레지스터; 및
    상기 데이터 레지스터에 저장된 데이터와 상기 라운드별 라운드 키를 논리 연산하여 상기 피드백 데이터를 생성하는 조합논리회로;를 포함하는 것을 특징으로 하는 ARIA 암호 모듈.
  5. 제 1항에 있어서, 상기 암호 연산부는,
    첫 번째 라운드의 경우 외부 입력 데이터를 선택하고, 두 번째 이상의 라운드의 경우 피드백 데이터를 선택하는 제1 데이터 선택부;
    상기 제1 데이터 선택부에 의해 선택된 데이터를 저장하는 데이터 레지스터;
    상기 데이터 레지스터에 저장된 데이터와 상기 키 스케줄러에서 생성된 라운드별 라운드 키를 XOR 연산하는 XOR 회로;
    상기 XOR 연산 결과에 대한 S-box 연산을 수행하는 S-box 레이어 회로;
    상기 S-box 레이어 회로의 출력을 소정 함수를 이용하여 확산하는 데이터 확산 회로;
    상기 데이터 확산 회로의 출력이 최종 라운드의 결과가 아니면 상기 데이터 확산 회로의 출력을 상기 피드백 데이터로 제공하는 제2 데이터 선택부; 및
    상기 데이터 확산 회로의 출력이 최종 라운드의 결과이면 상기 결과와 해당 라운드의 라운드 키의 XOR 연산의 결과를 출력하는 제3 데이터 선택부;를 포함하는 것을 특징으로 하는 ARIA 암호 모듈.
  6. 제 5항에 있어서, 상기 S-box 레이어 회로는,
    상기 라운드의 횟수가 홀수인 경우, S-box 연산을 수행하는 홀수용 S-box 레이어 회로; 및
    상기 라운드의 횟수가 짝수인 경우, S-box 연산을 수행하는 짝수용 S-box 레이어 회로;를 포함하는 것을 특징으로 하는 ARIA 암호 모듈.
  7. 제 1항에 있어서, 상기 키 스케줄러는,
    외부로부터 입력받은 암호화 키를 Feistel 함수를 이용하여 확장하는 키 초기화부;
    상기 확장된 키 값을 기초로 상기 암호화 키 길이에 따른 라운드 횟수만큼 각각의 라운드 키를 생성하는 라운드키 생성부; 및
    상기 생성한 라운드 키를 저장하고 상기 암호 연산부의 라운드보다 미리 계산된 라운드 키를 상기 암호 연산부로 제공하는 키 레지스터;를 포함하는 것을 특징으로 하는 ARIA 암호 모듈.
  8. 제 1항에 있어서, 상기 키 스케줄러는,
    외부로부터 입력된 암호화 키 데이터를 저장하는 키 레지스터;
    3 라운드의 256비트 Feistel 알고리즘을 이용하여 상기 암호화 키를 이용하여 256 비트로 확장한 후 4 등분하는 키 초기화부;
    상기 4등분된 키 초기값을 저장하는 키초기화 레지스터; 및
    상기 키초기화 레지스터에 저장된 값을 기초로 암호화/복호화 연산 수행에 필요한 라운드 키를 생성하는 라운드키 생성부;를 포함하는 것을 특징으로 하는 ARIA 암호 모듈
  9. 제 8항에 있어서, 상기 라운드키 생성부는,
    상기 4등분된 키 초기값을 좌측 또는 우측 데이터로 선택하는 데이터 선택부;
    상기 우측 데이터를 소정 비트 회전하는 로테이터 회로; 및
    상기 데이터 선택부의 우측 선택값과 상기 로테이터 회로의 결과값을 XOR 연산하여 출력하는 XOR 회로;를 포함하는 것을 특징으로 하는 ARIA 암호 모듈.
  10. (a) ARIA 암호 연산에 필요한 각 라운드별 라운드 키를 생성하는 단계; 및
    (b) 상기 라운드 키를 이용한 ARIA 암호 연산을 암호화 키 길이에 따른 라운드 횟수만큼 반복하여 수행하는 단계:를 포함하고,
    상기 (a) 단계는,
    (a1) 외부로부터 입력받은 암호화 키를 Feistel 함수를 이용하여 확장하는 단계; 및
    (a2) 상기 확장된 키 값을 기초로 상기 암호화 키 길이에 따른 라운드 횟수만큼 각각의 라운드 키를 생성하는 단계;를 포함하는 것을 특징으로 ARIA 암호 방법.
  11. 삭제
  12. 제 10항에 있어서, 상기 (b) 단계는,
    (b1) 외부 프로세서와 동일한 크기의 데이터 버스를 통해 입력 데이터 및 암호화 키를 수신하는 단계;
    (b2) 상기 (a) 단계에서 라운드별로 각각 생성되는 라운드 키를 기초로 상기 암호화 키 길이에 따른 라운드 횟수만큼 상기 ARIA 암호 연산을 반복 수행하여 상기 입력 데이터에 대한 ARIA 암호화를 수행하는 단계; 및
    (b3) 상기 AIRA 암호 연산의 결과를 상기 데이터 버스를 통해 출력하는 단계;를 포함하는 것을 특징으로 하는 ARIA 암호 방법.
KR1020050124106A 2005-08-19 2005-12-15 Aria 암호 모듈 및 그 방법 KR100734877B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050124106A KR100734877B1 (ko) 2005-08-19 2005-12-15 Aria 암호 모듈 및 그 방법

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020050076458 2005-08-19
KR1020050124106A KR100734877B1 (ko) 2005-08-19 2005-12-15 Aria 암호 모듈 및 그 방법

Publications (2)

Publication Number Publication Date
KR20070021883A KR20070021883A (ko) 2007-02-23
KR100734877B1 true KR100734877B1 (ko) 2007-07-03

Family

ID=41633067

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050124106A KR100734877B1 (ko) 2005-08-19 2005-12-15 Aria 암호 모듈 및 그 방법

Country Status (1)

Country Link
KR (1) KR100734877B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101011264B1 (ko) * 2008-01-18 2011-01-27 고려대학교 산학협력단 아리아 마스킹 방법 및 이를 이용한 아리아 암호 장치 및방법
WO2022107972A1 (ko) * 2020-11-23 2022-05-27 부산대학교 산학협력단 Aria의 암호화 및 복호화를 지원하는 프로세서용 32bit 확장 명령어 체계를 갖는 하드웨어 모듈 및 이의 제어 방법

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100933312B1 (ko) * 2007-08-29 2009-12-22 (주) 임베디드 솔루션 데이터 암호화와 인증이 가능한 아리아 암호화 방법 및이를 수행하기 위한 시스템
KR100969961B1 (ko) 2007-12-20 2010-07-15 한국전자통신연구원 블록 암호 아리아의 치환 연산 장치 및 방법
KR100960113B1 (ko) 2008-09-19 2010-05-27 한국전자통신연구원 고속처리 가능한 아리아 암복호화 장치
KR101508495B1 (ko) * 2013-11-11 2015-04-07 고려대학교 산학협력단 아리아 암호화 장치 및 방법
CN116094691B (zh) * 2022-12-26 2023-11-03 声龙(新加坡)私人有限公司 基于工作量证明的数据处理方法、装置及芯片

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ARIA 알고리즘 명세서, Version 1.0 (2004.05)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101011264B1 (ko) * 2008-01-18 2011-01-27 고려대학교 산학협력단 아리아 마스킹 방법 및 이를 이용한 아리아 암호 장치 및방법
WO2022107972A1 (ko) * 2020-11-23 2022-05-27 부산대학교 산학협력단 Aria의 암호화 및 복호화를 지원하는 프로세서용 32bit 확장 명령어 체계를 갖는 하드웨어 모듈 및 이의 제어 방법
KR20220071048A (ko) * 2020-11-23 2022-05-31 부산대학교 산학협력단 ARIA의 암호화 및 복호화를 지원하는 프로세서용 32bit 확장 명령어 체계를 갖는 하드웨어 모듈 및 이의 제어 방법
KR102457166B1 (ko) 2020-11-23 2022-10-20 부산대학교 산학협력단 ARIA의 암호화 및 복호화를 지원하는 프로세서용 32bit 확장 명령어 체계를 갖는 하드웨어 모듈 및 이의 제어 방법

Also Published As

Publication number Publication date
KR20070021883A (ko) 2007-02-23

Similar Documents

Publication Publication Date Title
US10313107B2 (en) Flexible architecture and instruction for advanced encryption standard (AES)
JP5120830B2 (ja) 共用のハードウェアを利用して暗号文及びメッセージ認証コードを生成するための方法及びシステム
McLoone et al. High performance single-chip FPGA Rijndael algorithm implementations
US7092525B2 (en) Cryptographic system with enhanced encryption function and cipher key for data encryption standard
US5483598A (en) Message encryption using a hash function
US8165288B2 (en) Cryptographic processing apparatus and cryptographic processing method, and computer program
US8396210B2 (en) Cryptographic processing apparatus and cryptographic processing method, and computer program
EP1246389B1 (en) Apparatus for selectably encrypting or decrypting data
Karthigaikumar et al. Simulation of image encryption using AES algorithm
US20110255689A1 (en) Multiple-mode cryptographic module usable with memory controllers
KR100734877B1 (ko) Aria 암호 모듈 및 그 방법
US20040047466A1 (en) Advanced encryption standard hardware accelerator and method
US7561689B2 (en) Generating keys having one of a number of key sizes
US20080240422A1 (en) Efficient advanced encryption standard (AES) Datapath using hybrid rijndael S-Box
JPH08248879A (ja) 2つの鍵を使用して暗号化する方法および装置
KR20100069610A (ko) 연쇄화된 암호화 모드를 위한 방법 및 디바이스
US20030059054A1 (en) Apparatus for generating encryption or decryption keys
US20010050989A1 (en) Systems and methods for implementing encryption algorithms
Pandey et al. A high-performance and area-efficient VLSI architecture for the PRESENT lightweight cipher
Panda Data security in wireless sensor networks via AES algorithm
WO2008121734A1 (en) Method and apparatus for advanced encryption standard (aes) block cipher
US10237066B1 (en) Multi-channel encryption and authentication
McLoone et al. Single-chip FPGA implementation of the advanced encryption standard algorithm
US6931127B2 (en) Encryption device using data encryption standard algorithm
Järvinen Sharing resources between AES and the SHA-3 second round candidates Fugue and Grøstl

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
G170 Publication of correction
FPAY Annual fee payment

Payment date: 20110609

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee