KR100546777B1 - Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기 - Google Patents

Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기 Download PDF

Info

Publication number
KR100546777B1
KR100546777B1 KR1020030091885A KR20030091885A KR100546777B1 KR 100546777 B1 KR100546777 B1 KR 100546777B1 KR 1020030091885 A KR1020030091885 A KR 1020030091885A KR 20030091885 A KR20030091885 A KR 20030091885A KR 100546777 B1 KR100546777 B1 KR 100546777B1
Authority
KR
South Korea
Prior art keywords
seed
data
function
encryption
block
Prior art date
Application number
KR1020030091885A
Other languages
English (en)
Other versions
KR20050060301A (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 KR1020030091885A priority Critical patent/KR100546777B1/ko
Publication of KR20050060301A publication Critical patent/KR20050060301A/ko
Application granted granted Critical
Publication of KR100546777B1 publication Critical patent/KR100546777B1/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/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
    • 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/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • 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)
  • Multi Processors (AREA)
  • Storage Device Security (AREA)

Abstract

한국 표준 암호 알고리즘(SEED) 암호화/복호화 장치에 관한 것으로서 특히, 파이프라인 기법과 병렬 프로세싱 기법을 사용하여 고속 처리를 가능하게 한 SEED 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 F함수 처리기에 관한 것이다.
본 발명에 따른 SEED 암/복호화 장치는 외부 프로세서와의 인터페이스를 위한 인터페이스 처리부; 암/복호 블록들의 저장을 위한 데이터 메모리; 병렬로 각각의 암/복호 블록들을 처리하는 제1 및 제2의 SEED 코어들; 상기 제1 및 제2 SEED 코어들에서 필요한 라운드별 키 값들을 생성하는 키 스케줄러; 및 SEED 암/복호 동작에 필요한 동작 모드, 초기값 등을 저장하며, 상기 제1 및 제2 SEED 코어들과 데이터 메모리, 키 스케줄러를 제어하기 위한 SEED 제어기를 포함하는 것을 특징으로 한다.
SEED 암/복호화 장치는 SEED 암호 연산을 지원하지 않는 상용 보안 프로세서들과 PCI 인터페이스를 통하여 연동하게 함으로써 전체 보안 시스템의 처리 성능을 향상시킬 수 있다는 효과를 가진다.

Description

SEED 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 F함수 처리기{Apparatus and method for SEED Encryption/Decryption, and F function processor therefor}
도 1은 SEED의 암/복호화 알고리즘을 도식적으로 보이는 것이다.
도 2는 CBC 동작 모드를 도식적으로 보이는 것이다.
도 3은 ECB 동작 모드를 도식적으로 보이는 것이다.
도 4는 본 발명에 따른 SEED 암/복호화 장치의 일실시예 구성을 보이는 블록도이다.
도 5는 도 4에 도시된 SEED 코어들의 일실시예를 보이는 블록도이다.
도 6은 도 5에 도시된 SEED 코어들에 의한 CBC 암호화 동작을 도식적으로 보이는 것이다.
도 7은 도 5에 도시된 SEED 코어들에 의한 CBC 복호화 동작을 도식적으로 보이는 것이다.
도 8은 도 5에 도시된 SEED 코어들에 의한 ECB 암호화 동작을 도식적으로 보이는 것이다.
도 9는 도 5에 도시된 SEED 코어들에 의한 ECB 복호화 동작을 도식적으로 보 이는 것이다.
도 10은 도 2에 도시된 제1 F함수 처리기 및 제2 F함수 처리기의 구조를 보이는 블록도이다.
도 11은 도 2에 도시된 SEED 코어들에서의 파이프라인 동작을 도식적으로 보이기 위해 도시된 것이다.
도 12는 본 발명에 따른 보안 시스템의 일실시예를 보이는 블록도이다.
본 발명은 한국 표준 암호 알고리즘(SEED) 암호화/복호화 장치에 관한 것으로서 특히, 파이프라인 기법과 병렬 프로세싱 기법을 사용하여 고속 처리를 가능하게 한 SEED 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 그리고 이에 적합한 F함수 처리기에 관한 것이다.
정보화 사회가 도래함에 따라 컴퓨터와 통신망을 통한 주요 정보의 저장, 처리, 전송량이 급격하게 증가하게 되었다. 이러한 정보의 노출로 인한 정보의 침해 가능성을 막기 위하여 많은 방법들이 연구되고 있지만 특히 평이한 정보를 암호화된 정보로 만드는 암호학이 오랜 연구를 통하여 실용화되고 있다.
암호화 방법에는 키의 형태에 따라 암/복호키가 같은 대칭키 암호화와 암/복호화키가 서로 다른 공개키 암호화로 나누어진다. 공개키 암호의 대표적인 예로는 ECC와 RSA가 있다. 다른 한편으로는 메시지 처리 방식에 따라 블록 암호 알고리즘 과 스트림 암호 알고리즘으로 구분되며 블록 암호 알고리즘으로 현재 DES(Data Encryption Standard)가 보편적으로 사용되고 있다.
미국의 경우 NIST(National Institute of Standards and Technology)에서 기존의 표준 블록 암호 알고리즘 DES(Data Encryption Standard)를 대신할 새로운 표준을 선정하기 위하여 AES(Advanced Encryption Standard) 공모 사업을 주관하였으며, 유럽연합(EU)에서도 회원국들을 위한 암호 알고리즘 공모 사업인 NESSIE(New European Schemes for Signatures, Integrity, and Encryption)를 진행하여 다양한 분야의 알고리즘에 대한 표준화를 추진하고 있다. 한편, 일본에서는 2003년 전자정부 구현에 필요한 표준 암호 알고리즘 공모 사업으로서 CRYPTREC(Cryptography Research & Evaluation Committee)를 진행 중에 있다. 이러한 추세에 발맞추어 ISO/IEC(International Organization for Standardization/International Electro-technical Commission)에서는 2000년부터 국제 표준 암호 알고리즘을 선정하기 위한 노력을 기울이고 있다.
1998년 한국 전자통신 연구원과 한국 정보보호 진흥원을 주축으로 개발된 SEED는 지금까지 정보통신 단체 표준으로 제정되어 왔으며, 2001년에는 국제 표준화를 위한 ISO 표준 후보 알고리즘으로 상정된 바 있다.
대칭키 암호 알고리즘의 하나인 SEED는 입출력 처리 기본 단위(블록 크기)가 128비트, 입력키의 크기가 128비트, 라운드수가 16라운드인 블록 알고리즘으로서 128비트 입력키를 이용해 128비트 블록 단위로 메시지를 암호화/복호화한다.
SEED 암호 알고리즘은 데이터의 비밀성, 기밀성 등의 서비스를 제공하기 위 한 국내 표준으로서, 보안 네트워크 제품의 국내 인증을 위해서는 반드시 구현되어야 하는 암호 알고리즘이다.
보안 네트워크 제품은 크게 소프트웨어 기반의 제품과 하드웨어 기반의 제품으로 구분되는데, 네트워크의 고속화 요구에 따라서 점차 하드웨어 기반 제품의 비중이 커지고 있다. 이러한 하드웨어 기반 제품은 많은 연산을 필요로 하는 암호 처리를 위해서 별도의 보안 프로세서들이 사용되고 있다.
그런데, SEED 암호 알고리즘은 국내 표준이지만 대부분의 보안 프로세서들에서는 이를 지원하지 않고 있으며, SEED 암/복호 처리를 위해서는 별도의 절차가 수행되어야 한다. 이를 극복하기 위해서 대부분의 보안 프로세서들은 SEED를 소프트웨어적으로 처리하고 있으나, 이는 보안 시스템 전체의 성능을 크게 저하시키는 요인이 되고 있다.
SEED 암호 알고리즘의 하드웨어 설계 기술은 하드웨어 자원을 공유하여 사용함으로써 하드웨어 자원을 최소화하는 기법과, 파이프라인을 이용하여 성능을 향상시키는 기법 등이 있다.
하지만, 하드웨어 자원을 공유하는 기법은 하드웨어 자원은 줄어드나 시스템 성능을 저하시키는 요인이 되며, 파이프라인 기법은 SEED 동작 모드나 데이터 입출력, 그리고 상위 프로세서와의 연동 등이 고려되지 않으면 실제 시스템 구현 시 성능 향상에 크게 도움이 되지 못하는 어려움이 있다.
본 발명은 상기의 문제점을 해결하기 위하여 고안된 것으로서 파이프라인 기 법과 병렬 프로세싱 기법을 이용하여 처리 속도를 고속화하며, 데이터의 암/복호가 필요한 보안 프로세서와 연동될 수 있는 SEED 암/복호화 장치를 제공하는 것에 있다.
본 발명의 또 다른 목적은 병렬 프로세싱 기법을 이용하여 처리 속도를 고속화한 SEED CBC 모드 암호화 방법을 제공하는 것에 있다.
본 발명의 또 다른 목적은 병렬 프로세싱 기법을 이용하여 처리 속도를 고속화한 SEED CBC 모드 복호화 방법을 제공하는 것에 있다.
본 발명의 또 다른 목적은 병렬 프로세싱 기법을 이용하여 처리 속도를 고속화한 SEED ECB 모드 암호화 방법을 제공하는 것에 있다.
본 발명의 또 다른 목적은 병렬 프로세싱 기법을 이용하여 처리 속도를 고속화한 SEED ECB 모드 복호화 방법을 제공하는 것에 있다.
본 발명의 또 다른 목적은 파이프라인 기법을 이용하여 처리 속도를 고속화할 수 있는 SEED 암/복호화 장치의 라운드 처리 방법을 제공하는 것을 그 목적으로 한다.
본 발명의 또 다른 목적은 파이프라인 기법을 이용하여 처리 속도를 고속화할 수 있는 SEED 암/복호화 장치의 F함수 처리기를 제공하는 것을 그 목적으로 한다.
상기의 목적을 달성하는 본 발명에 따른 SEED 암/복호화 장치는
외부 프로세서와의 인터페이스를 위한 인터페이스 처리부;
암/복호 블록들의 저장을 위한 데이터 메모리;
병렬로 각각의 암/복호 블록들을 처리하는 제1 및 제2의 SEED 코어들;
상기 제1 및 제2 SEED 코어들에서 필요한 라운드별 키 값들을 생성하는 키 스케줄러; 및
SEED 암/복호 동작에 필요한 동작 모드, 초기값 등을 저장하며, 상기 제1 및 제2 SEED 코어들과 데이터 메모리, 키 스케줄러를 제어하기 위한 SEED 제어기를 포함하는 것을 특징으로 한다.
상기의 다른 목적을 달성하는 본 발명에 따른 SEED CBC 모드 암호화 방법은
각각이 SEED 알고리즘에 의해 암/복호화를 수행하는 제1 및 제2 SEED 모듈을 이용한 SEED CBC 모드 암호화 방법에 있어서,
I번째 평문 블록 Mi를 상기 제1SEED 모듈에 입력하여 i번째 암호문 블록 Ci를 생성하는 과정;
상기 i번째 암호문 블록 Ci를 i+1번째 평문 블록 Mi+1과 XOR연산하는 제1XOR연산 과정;
상기 제1XOR 연산 과정의 결과를 상기 제2SEED 모듈에 입력하여 i+1번째 암호문 블록 Ci+1을 생성하는 과정;
상기 i+1번째 암호문 블록 Ci+1을 i+2번째 평문 블록 Mi+2와 XOR 연산하는 제2XOR 연산 과정; 및
상기 제2XOR 연산 과정의 결과를 상기 제1SEED 모듈에 입력하여 i+2 번째 암호문 블록 Ci+2를 생성하는 과정을 포함하는 것을 특징으로 한다.
상기의 또 다른 목적을 달성하는 본 발명에 따른 SEED CBC 모드 복호화 방법은
각각이 SEED 알고리즘에 의해 암/복호화를 수행하는 제1 및 제2 SEED 모듈을 이용한 SEED CBC 모드 복호화 방법에 있어서,
I번째 암호문 블록 Ci 및 i+2번째 암호문 블록 Ci+2를 상기 제1SEED 모듈에 차례로 입력하여 복호하는 제1복호과정;
I-1번째 암호문 블록 Ci-1 및 i+1번째 암호문 블록 Ci+1을 상기 제2SEED 모듈에 차례로 입력하여 복호하는 제2복호과정;
상기 제2SEED 모듈에 차례로 제공되는 I-1번째 암호문 블록 Ci-1 및 i+1번째 암호문 블록 Ci+1을 선입선출 방식에 의해 버퍼링하되 상기 제1 및 제2SEED 모듈의 블록 처리 기간만큼의 주기로 차례로 출력하는 제1지연과정;
제1지연 과정의 결과를 상기 제1복호과정의 결과들과 순차로 XOR연산하여 I번째 평문 블록 Mi 및 i+2번째 평문 블록 Mi+2를 복호하는 제1XOR연산과정;
상기 제1SEED 모듈에 차례로 제공되는 I번째 암호문 블록 C1 및 i+2번째 암호문 블록 Ci+2를 선입선출 방식에 의해 버퍼링하되 상기 제1 및 제2SEED 모듈의 블록 처리 기간만큼의 주기로 차례로 지연하는 제2지연과정; 및
제2지연 과정의 결과를 상기 제2복호과정의 결과들과 순차로 XOR연산하여 I-1번째 평문 블록 Mi-1 및 i+1번째 평문 블록 Mi+1을 복호하는 제1XOR연산과정을 포 함하는 것을 특징으로 한다.
상기의 또 다른 목적을 달성하는 SEED 암/복호화 장치의 라운드 처리 방법은
I번째 블록 Bi를 상위 데이터 Bi_upper 및 하위 데이터 Bi_lower로 분리하고, 하위 데이터 Bi_lower에 대하여 F함수 처리한 결과와 상위 데이터 Bi_upper를 XOR 연산하여 다음 라운드의 하위 데이터 Bi_lower_next로 제공하고, 상기 하위 데이터 Bi_lower를 다음 라운드의 상위 데이터 Bi_upper_next로 제공하는 SEED 암/복호의 라운드 처리 방법에 있어서,
a) I번째 블록 Bi의 하위 데이터 Bi_lower를 버퍼링하는 과정;
b) I번째 블록 Bi의 하위 데이터 Bi_lower에 대하여 F함수의 전반부를 처리하고, 그 결과 Bi_lower_f0 및 I번째 블록 Bi의 상위 데이터 Bi_upper를 버퍼링하는 과정; 및
c) i+1번째 블록의 하위 데이터 Bi+1_lower에 대하여 F함수의 전반부를 처리하고 그 결과 Bi+1_lower_f0 및 I+1번째 블록 Bi+1의 상위 데이터 Bi+1_upper를 버퍼링하는 한편, 상기 b)과정에서 버퍼링된 F함수의 전반부가 처리된 I번째 블록 Bi의 하위 데이터 Bi_lower_f0 에 대하여 F함수의 후반부를 처리하고, 그 결과 Bi_lower_f0_f1 및 I번째 블록 Bi의 상위 데이터 Bi_upper를 XOR연산하여 다음 라운드의 하위 데이터 Bi_lower_next로서 제공하며, 그리고 상기 a)과정에서 버퍼링된 I번째 블록 Bi의 하위 데이터 Bi_lower를 다음 라운드의 상위 데이터 Bi_upper_next로서 제공하는 과정을 포함하여, 2개의 블록을 파이프라인 방식에 의해 처리하는 것을 특징으로 한다.
상기의 또 다른 목적을 달성하는 본 발명에 따른 F함수 처리기는
SEED 암/복호화 장치의 F함수 처리기에 있어서,
F함수의 전반부를 처리하는 제1F함수 처리기;
상기 제1F함수 처리기의 처리 결과를 버퍼링하는 레지스터; 및
상기 레지스터에 저장된 데이터에 대하여 F함수의 후반부를 처리하는 제2F함수 처리기를 포함하는 것을 특징으로 한다.
상기의 또 다른 목적을 달성하는 본 발명에 따른 보안 시스템은
이하 첨부된 도면을 참조하여 본 발명의 구성 및 동작을 상세히 설명하기로 한다.
도 1은 SEED의 암/복호화 알고리즘을 도식적으로 보이는 것이다. SEED 알고리즘은 128비트의 평문 블록을 상하위의 2개의 64비트 데이터들(L, R)로 나누고, 16개의 64비트 라운드 키(round key)를 이용하여 16라운드를 수행한 후, 최종적으 로 128비트 암호문 블록을 출력하는 구조이다. 이러한 SEED는 4가지의 표준 동작 모드들 즉, CBC(Cipher Block Chaining), OFB(Output Feedback), CFB(Cipher Feedback), 그리고 ECB(Electronic Code Book)를 지원한다.
도 2는 CBC 동작 모드를 도식적으로 보이는 것이다. CBC 동작 모드는 도 2에 도시된 바와 같이 평문이 128비트의 블록 M1, M2,,,Mi,,,와 같이 나누어질 경우에 i번째 평문 블록 Mi의 암호화시 i-1번째 생성된 암호문 블록 Ci-1을 참조한다. 따라서 생성된 각각의 암호문 블록은 단지 현재의 평문 블록뿐만 아니라 그 이전의 암호문 블록에 의해서도 영향을 받게 된다.
그런데 첫 번째 평문의 암호화시에 최초의 암호문 블록 C0은 정의되어있지 않으므로 맨 처음 평문 블록에 대해서는 C0대신에 초기값을 사용한다. 이 값은 비밀키와 동일하게 송신자와 수신자 간에 서로 약속이 되어 있어야 하지만 공개된 값을 사용해도 관계없다.
또한 암호화될 평문의 길이가 가변적이기 때문에 마지막 평문 블록이 항상 128 비트로 정확히 나누어지지 않게 된다. 이 경우에는 부족한 길이만큼을 일정한 패턴으로 채워주거나 또는 "0"값으로 채워주어야 한다.
도 3은 ECB 동작 모드를 도식적으로 보이는 것이다. ECB 동작 모드는 블록 암호 알고리즘의 기본 동작 모드이며, 블록 단위의 암호화 및 복호화 기능을 제공하는 가장 단순한 동작 모드이다. 따라서 보안 측면에서는 다소 취약한 요소를 내포하고 있다. 즉, 동일한 비밀키를 연속으로 사용함에 의해 동일한 평문 블록이 동일한 암호문 블록을 생성한다는 단순한 사실에서 심각한 보안상의 문제를 야기할 수 있는 약점을 갖고 있다.
ECB 동작 모드는 도 3에 도시된 바와 같이 평문이 128비트의 블록 M1, M2,,,Mi,,,와 같이 나누어질 경우에 i번째 평문 블록 Mi의 암호화시 비밀키에 의해서만 암호화한다. 따라서 생성된 각각의 블록 암호문은 단지 현재의 평문에 의해서만 영향을 받게 된다.
도 4는 본 발명에 따른 SEED 암/복호화 장치의 일실시예 구성을 보이는 블록도이다.
도 4에 도시된 SEED 암/복호화 장치는 외부 프로세서와의 인터페이스를 위한 PCI 인터페이스 처리부(100), 암/복호 데이터 저장을 위한 데이터 메모리(200), SEED 암호 알고리즘을 연산하기 위해 병렬로 동작하는 두 개의 SEED 코어들(400, 500), 키값 생성을 위한 키 스케줄러(600), 그리고 SEED 코어들(400, 500)과 데이터 메모리(200), 키 스케줄러(600) 등을 제어하기 위한 SEED 제어기(300)로 구성된다.
SEED 암/복호 동작에 필요한 동작 모드, 초기값 등은 SEED 제어기(300)에 저장되며, 키 값은 키스케줄러(600)의 레지스터에 저장된다. 암/복호될 데이터는 데이터 메모리(200)에 저장된다. 데이터 메모리(200)는 양방향 입출력 메모리로서 PCI 버스쪽에서의 입출력은 PCI 데이터 크기(32 또는 64비트)로 이루어지며, SEED 연산 코어들(400, 500)쪽에서의 입출력은 256비트(128비트 + 128비트)로 이루어진다.
SEED 코어들(400, 500)이 동작하고 있는 동안 데이터 메모리(200)가 외부 프 로세서에 의해 액세스될 수 있다. 즉, 암호/복호할 데이터를 SEED 코어들(400, 500)이 처리하고 있는 동안 외부 프로세서에 의해 데이터 메모리(200)를 액세스하여 데이터를 Read 혹은 Write할 수 있다. 이와 같은 데이터 입출력 구조는 SEED 암/복호 처리시 불필요한 입출력 시간을 줄여주며, 두 개의 SEED 코어들(400, 500)이 병렬로 암/복호 동작을 할 수 있도록 한다.
키스케줄러(600)는 SEED 코어(400, 500)에서 필요한 라운드별 키 값들을 생성하고, 이들을 SEED 제어기(300)에서 제공되는 키스케줄러 제어 신호에 따라 SEED 코어들(400, 500)에 제공한다.
SEED 코어(400, 500)는 1라운드를 처리할 수 있는 파이프라인 구조의 SEED 모듈을 구비하며, SEED 동작 모드에 따라서 ECB(Electronic Codebook Mode)나 CBC(Cipher Block Chaining Mode)의 암/복호 동작을 수행한다.
SEED 제어기(300)는 데이터 메모리(200), 키스케줄러(600), SEED 코어(400, 500)등을 제어하며, 모든 동작이 완료되었을 때 PCI 인터페이스(100)를 통하여 암/복호가 완료되었음을 알리기 위한 인터럽트 신호를 발생한다. 도 2에 도시된 SEED 암/복호화 장치의 모든 입출력 데이터는 PCI 인터페이스 처리부(100)를 통하여 처리된다.
도 5는 도 4에 도시된 SEED 코어들의 일실시예를 보이는 블록도이다.
도 5에 도시된 각각의 SEED 코어들(400, 500)은 2단 파이프라인된 1라운드 구조의 SEED 모듈을 반복적으로 사용하여 암/복호 동작을 수행하며, CBC 및 ECB 암/복호화 모드들을 수행할 수 있다. 두 개의 SEED 코어(400, 500)는 거의 유사한 구조로 구성된다.
두 개의 SEED 코어들(400, 500)은 CBC 모드의 암/복호화 동작에 있어서 번갈아가면서 서로의 작업 결과를 참조하여 작업하게 되며, ECB 모드의 암/복호화 동작에 있어서는 서로 독립적으로 작업하게 된다.
도 6은 도 5에 도시된 SEED 코어들에 의한 CBC 암호화 동작을 도식적으로 보이는 것이다. CBC 모드의 암호화 동작에 있어서 SEED 코어들(400, 5O0)이 병렬로 동작하여 I번째 및 i+1번째 평문 블록들(Mi 및 Mi+1)을 암호화한다.
CBC 모드의 암호화 동작에 있어서 먼저, SEED 코어0(400)이 동작하여 i번째 암호문 블록 Ci를 생성하여 SEED 코어1(500)에 제공한다. SEED 코어1(500)은 SEED 코어0(400)에서 제공되는 i번째 암호문 블록 Ci를 i+1번째 평문 블록 Mi+1과 XOR연산한 후, 그 결과를 암호화하여 i+1번째 암호문 블록Ci+1을 생성한다.
SEED 코어1(500)에서 출력되는 i+1번째 암호문 블록 Ci+1은 다시 SEED 코어0(400)에 제공되며, SEED 코어0(400)은 i+1번째 암호문 Ci+1을 i+2번째 평문 블록 Mi+2와 XOR 연산한 후 그 결과를 암호화하여 i+2 번째 암호문 블록 Ci+2를 생성하여 SEED 코어1(500)에 제공한다.
SEED 코어1(500)은 i+2 번째 암호문 블록 Ci+2를 i+3번째 평문 블록 Mi+3과 XOR 연산한 후 그 결과를 SEED(1)코어에 의해 암호화하여 i+3번째 암호문 블록 Ci+3을 생성하게 된다. 즉, CBC 모드의 암호화 동작에 있어서는 두 개의 SEED 코어들(400, 500)이 번갈아 서로의 작업 결과를 참조하여 작동하여 암호문 블록들 C0, C1,,,Ci, Ci+1,,를 생성하게 된다.
도 7은 도 5에 도시된 SEED 코어들에 의한 CBC 복호화 동작을 도식적으로 보이는 것이다. 실제에 있어서는 CBC 모드의 복호화 동작에 있어서 각각의 SEED 코어들(400, 5O0)이 파이프라인 동작에 의해 두 개의 암호문 블록들을 동시에 처리하지만 이에 대해서는 SEED 코어들(400, 500)의 파이프라인 동작에 대해서는 도 11을 참조하여 추후에 설명하기로 한다.
일단은 설명의 편의 및 이해의 복잡성을 줄이기 위하여 각각의 SEED 코어들(400, 5O0)이 하나의 암호문 블록을 복호하는 것으로 가정하여 CBC 모드의 복호화 동작을 설명하기로 한다.
CBC 모드의 복호화 동작에 있어서 SEED 코어들(400, 5O0)이 병렬로 동작하여 I번째 및 i+1번째 평문 블록들(Mi 및 Mi+1)을 복호화한다.
구체적으로 먼저, SEED 코어0(400)이 동작하여 i번째 암호문 블록 Ci를 복호하고 그 결과를 SEED 코어1(500)에서 제공되는 i+1번째 암호문 Ci+1과 XOR연산하여 I번째 평문 블록 Mi를 출력한다. 한편, SEED 코어0(400)과 병렬로 SEED 코어1(500)이 동작하여 i+1번째 암호문 Ci+1을 복호하고 그 결과인 평문 블록 Mi+1을 SEED 코어0(400)에서 제공되는 i+2번째 암호문 블록 Ci+2와 XOR연산하여 평문 블록 Mi+1을 복호한다.
실제에 있어서는 SEED 코어0(400)은 두 개의 암호문 블록들 Ci 및 Ci+2를 입력하여 파이프라인 동작에 의해 한꺼번에 복호한다. 마찬가지로 SEED 코어1(500)은 두 개의 암호문 블록들 Ci+1 및 Ci+3을 입력하여 파이프라인 동작에 의해 한꺼번에 복호한다.
도 8은 도 5에 도시된 SEED 코어들에 의한 ECB 암호화 동작을 도식적으로 보이는 것이다. ECB 모드의 암호화 동작에 있어서 SEED 코어들(400, 500)이 병렬로 동작하며, 각각의 SEED 코어들(400, 500)이 파이프라인 동작에 의해 2개의 평문 블록들을 암호화한다.
구체적으로 SEED 코어0(400)이 파이프라인 동작에 의해 2개의 평문 블록들 Mi 및 Mi+1을 암호화하고, 이것과 병렬로 SEED 코어1(500)이 역시 파이프라인 동작에 의해 2개의 평문 블록들 Mi+2 및 Mi+3을 암호화한다.
도 9는 도 5에 도시된 SEED 코어들에 의한 ECB 복호화 동작을 도식적으로 보이는 것이다. ECB 모드의 복호화 동작에 있어서 SEED 코어들(400, 500)이 병렬로 동작하며, 각각의 SEED 코어들(400, 500)이 파이프라인 동작에 의해 2개의 평문 블록들을 복호화한다.
구체적으로 SEED 코어0(400)이 파이프라인 동작에 의해 2개의 암호문들 Ci 및 Ci+1을 복호화하고, SEED 코어1(500)이 역시 파이프라인 동작에 의해 2개의 암호문들 Ci+2 및 Ci+3을 복호화한다.
SEED 코어0(400)과 SEED 코어1(500)들은 거의 유사한 구조를 가지므로 SEED 코어0(400)의 예를 들어 그 구조를 상세히 설명한다.
여기서, 설명의 편의를 위하여 도 1에 도시된 바와 같은 알고리즘을 구현하기 위하여 1라운드의 암/복호 처리를 수행하기 위한 기본적인 장치를 SEED 모듈이라 하기로 한다. SEED 코어들(400, 500)의 SEED 모듈들은 동일하다.
SEED 코어0(400)의 SEED 모듈은 LO 레지스터(405), R0 레지스터(407), M0 레지스터(406), 제1 F함수 처리기(409), 제2 F함수 처리기(411), XOR2(412), L1 레지스터(413), 그리고 R1 레지스터(414)로 구성된다. LO 레지스터(405) 및 R0 레지스터(407)는 입력 데이터 및 라운드별 중간값을 저장하며, L1 레지스터(413) 및 R1 레지스터(414)는 출력 데이터를 저장한다.
이와 같은 구성을 가지는 SEED 모듈에 의한 도 1에 도시된 SEED 암/복호 알고리즘의 수행 과정은 다음과 같다.
1) 데이터 메모리(200)로부터 입력되는 128비트 데이터 중에서 상위 64비트는 L0 레지스터(405)에 저장되고 하위 64비트는 R0 레지스터(407)에 저장된다.
2) R0 레지스터(407)에 저장된 하위 64비트는 다음 라운드의 처리를 위하여 일단 M0 레지스터(406)에 버퍼링된다. M0 레지스터(406)에 버퍼링된 데이터는 다음 라운드가 시작될 때 L0 레지스터(405)에 저장되게 된다.
3) 한편, R0 레지스터(407)에 저장된 하위 64비트는 제1 F함수 처리기(409) 및 제2 F함수 처리기(411)에 의해 처리된 후 제3 XOR연산기(412)에서 L0 레지스터(405)에 저장된 상위 64비트와 XOR연산된다. 제1 F함수 처리기(409) 및 제2 F함수 처리기(411)는 표준의 F함수를 파이프라인 처리를 위하여 2개로 분리한 것으로서 그 상세한 구성은 하기에 설명된다.
4) 제3 XOR 연산기(412)의 출력은 다음 라운드의 처리를 위하여 R0 레지스터(407)에 저장된다. 이때, M0 레지스터(406)에 버퍼링된 64비트도 다음 라운드의 처리를 위하여 L0 레지스터(405)에 저장된다.
5) 이와 같은 1) 내지 4)의 과정을 통하여 도 1에 도시된 바의 1라운드 처리 가 종료되며, 이러한 과정을 제1 F함수 처리기(409)에 인가되는 키값을 바꾸어가면서 반복하여 16라운드의 암/복호 알고리즘을 처리한다.
6) 도 1에 도시된 바와 같은 16라운드의 처리가 종료되면 제3 XOR 연산기(412)의 출력은 L1 레지스터(413)에 저장되고, M0 레지스터(406)의 64비트는 R1 레지스터(414)에 저장된다.
도 10은 도 2에 도시된 제1 F함수 처리기 및 제2 F함수 처리기의 구조를 보이는 블록도이다. 제1 F함수 처리기(409) 및 제2 F함수 처리기(411)는 표준의 F함수를 파이프라인 처리를 위하여 2개로 분리한 것들이다.
제1 F함수 처리기(409, 507)는 각각이 F함수에 의해 처리될 64비트의 입력 데이터로부터 절단된 32비트의 데이터와 F함수에 의해 처리될 64비트의 키데이터로부터 절단된 32비트의 데이터(Ki0, Ki1)를 XOR연산하는 2개의 제6 및 제7 XOR 연산기들(1002, 1004), 제6 및 제7 XOR 연산기들(1002, 1004)의 출력들을 XOR연산하는 제8 XOR연산기(1006), 제8 XOR 연산기(1006)의 출력을 G함수 처리하는 제1G함수 처리기(1008), 제1G함수 처리기(1008)의 출력과 제6XOR 연산기(1002)의 출력을 가산하는 제1덧셈기(1010), 그리고 제1덧셈기(1010)의 출력을 G함수 처리하는 제2G함수 처리기(1012)를 구비한다. 제1 및 제2 G함수 처리기들(1018, 1012)의 출력들은 다시 조합되어 64비트로 출력된다.
한편, 제2 F함수 처리기(411, 509)는 각각이 제1 F함수 처리기(409, 507)에서 출력되는 64비트의 데이터로부터 절단된 32비트 데이터들을 가산하는 제2덧셈기(1014), 제2덧셈기(1014)의 출력을 G함수 처리하는 제3 G함수 처리기(1016), 그리고 제3 G함수 처리기(1016)의 출력과 제1 F함수 처리기(409, 507)에서 출력되는 64비트의 데이터로부터 절단된 32비트 데이터를 가산하는 제3덧셈기(1018)를 구비한다. 제3덧셈기(1018)의 출력과 제3G함수 처리기(1016)의 출력들은 다시 조합되어 64비트로 출력된다.
한편, M2 레지스터(410, 508)는 제2 F함수 처리기(411, 509)의 출력을 버퍼링하는 것으로서 추후에 설명할 파이프라인 동작을 위하여 준비된 것이다.
CBC 모드 암호화 동작인 경우 초기값이나 이전 암호화 블록이 제3 및 제4XOR 연산기들(402, 404)을 통하여 XOR 연산되는데, 첫 평문 블록에 대해서는 초기값이 XOR 연산되고, 이후부터는 SEED 코어1(500)의 L1 레지스터(511)와 R1 레지스터(512)에 저장되는 이전 블록의 암호화 데이터가 XOR 연산된다.
제1 및 제2입력 다중화기들(401, 403)은 초기값과 이전 암호화 블록들 중의 하나를 선택한다. 이후 제1 및 제2 F함수 처리기들(409, 411)과 제3XOR 연산기(412)로 구성되는 1라운드 구조의 SEED 모듈을 16번 반복 수행하여 SEED 암호화 동작을 수행한다.
CBC, 모드 복호화 동작인 경우 이후 F함수 처리기들(409, 411)과 제3XOR 연산기(412)들로 구현된 1라운드 구조의 SEED 모듈을 16번 반복 수행하여 SEED 복호화 동작을 수행한 후 초기값이나 이전 암호화 블록이 제4 및 제5XOR 연산기들(418, 421)을 통하여 XOR 연산되는데, 첫 평문 블록에 대해서는 초기값이 XOR 연산되고, 이후부터는 SEED 코어1(500)의 L4 레지스터(521)와 R4 레지스터(522)를 통하여 제공되는 이전 암호화 블록이 XOR 연산된다.
제3 및 제4입력 다중화기들(417, 420)은 초기값과 이전 암호화 블록들 중의 하나를 선택한다.
SEED 코어들(400, 500)에서 CBC 모드 복호화 동작에 있어서는 입력 데이터가 다음 입력 데이터의 복호 결과와 XOR 연산되기 때문에 이러한 입력 데이터를 저장했다가 다른 SEED 코어에 제공하기 위한 레지스터들이 필요하다.
L2(513), R2(514), L3(519), R3(520), L4(521), R4(522) 레지스터들은 이러한 목적을 위해 사용되는 레지스터들이며, 128비트 입력 데이터를 선입선출 방식에 의해 버퍼링하여 다른 SEED 코어에 제공한다.
그렇지만 SEED 코어1(500)은 다섯 번째 입력 데이터를 저장하기 위해 SEED 코어0(400)과 달리 한 단의 레지스터들(L4(521), R4(522))을 더 가지고 있다. SEED 코어0(400)에 입력되는 암호문 블록들을 Ci 및 Ci+2이라 하고, SEED 코어1(500)에 입력되는 암호문 블록들을 Ci+1 및 Ci+3이라 하면, CBC 모드의 수행을 위해 SEED 코어1(500)에서 제공되는 4번째 암호문 블록 Bi+3이 SEED 코어0(400)에서 세 번째 암호문 블록 Ci+2와 XOR 연산된다. SEED 코어들(400, 500)에 입력된 암호문 블록들(Ci 내지 Ci+3)이 모두 처리되면 다시 SEED 코어0(400)에 Ci+4 및 Ci+6이 입력되고, SEED 코어1(500)에는 Ci+5 및 Ci+7이 입력된다.
여기서, Ci+4는 Ci+3과 XOR 연산되어야 하므로 이를 위하여 SEED 코어1(500)의 시프트 단수는 SEED 코어0(400)보다 1단이 더 많아야 함을 알 수 있다.
본 발명에 따른 SEED 암/복호 장치에 있어서 CBC 암호화 동작 시에는 두 개의 SEED 코어들이 반복적으로 사용되며, ECB 모드나 CBC 복호화 모드에서 각각의 SEED 코어마다 2개씩 모두 4개의 데이터가 한꺼번에 처리된다.
도 11은 도 2에 도시된 SEED 코어들에서의 파이프라인 동작을 도식적으로 보이기 위해 도시된 것이다. ECB 모드 및 CBC 복호화 모드에 있어서 SEED 코어들(400, 500)은 각각이 2개의 평문 블록들 혹은 암호문들에 대한 암/복호화를 수행할 수 있다. 이를 도 11을 참조하여 SEED 코어0(400)의 ECB 암호화 동작을 예로 들어 설명하기로 한다.
SEED 코어0(400)은 i번째 및 i+1번째 평문 블록들 Mi 및 Mi+1에 대한 암호화동작을 파이프라인 처리에 의해 동시에 수행한다. 이를 위하여 표준의 F함수 처리기를 2개로 분리하고, M0 레지스터(406, M1 레지스터(408), 그리고 M2 레지스터(410)가 준비된다. 즉, 표준의 F함수 처리기를 2개의 F함수 처리기들(제1 F함수 처리기(409), 제2 F함수 처리기(410))들로 분리하고, 함수 처리기들의 중간에 레지스터를 두어 I번째 및 i+1번째 평문 블록들 Mi 및 Mi+1에 대한 암호화 동작이 시간적으로 분리되어 수행될 수 있게 한다.
1) 먼저, i번째 평문 블록 Mi의 상위 데이터 및 하위 데이터를 각각 L0 레지스터(405) 및 R0 레지스터(407)에 저장한다.
2) M 번째 블록에 대해서, R0 레지스터(407)에 저장된 하위 데이터 R0_Mi를 M0 레지스터(406)에 버퍼링하고, R0 레지스터(407)에 저장된 하위 데이터 R0_Mi를 제1 F함수 처리기(409)에 의해 처리하고, 그 결과 F0(R0_Mi)을 M2 레지스터(410)에 저장하며, L0 레지스터(405)에 저장된 상위 데이터 L0_Mi를 M1 레지스터(408)에 저장한다.
한편, 제1 F함수 처리기(409)에 의해 처리된 결과 F1(R0_Mi)을 M2 레지스터(410)에 저장하는 것에 맞추어 i+1번째 평문 블록 Mi+1을 입력하여 L0 레지스터(405) 및 R0 레지스터(407)에 저장한다.
3) M 번째 블록에 대해서, M2 레지스터(410)에 저장된 데이터를 제2 F함수 처리기(411)에 의해 처리한 결과 F1(R0_Mi)과 M1 레지스터(408)에 저장된 상위 데이터를 XOR2(412)를 통하여 XOR 연산하고 그 결과 F1(R0_Mi).XOR.M1_L0_Mi를 R0 레지스터(407)에 저장하며, M0 레지스터(406)에 저장된 데이터 M0_R0_Mi를 L0 레지스터(405)에 저장한다. R0 레지스터(407) 및 L0 레지스터(405)에 저장된 데이터들은 다음 라운드의 동작을 위하여 제공된다.
한편, M+i 번째 블록에 대해서는, R0 레지스터(407)에 저장된 데이터 R0_Mi+1은 M0 레지스터(406)에 저장하고, R0 레지스터(407)에 저장되었던 하위 데이터 R0_Mi+1을 제1 F함수 처리기(409)로 처리하고 그 결과 F0(R0_M+i)을 M2 레지스터(410)에 저장하며, L0 레지스터(405)에 저장되었던 상위 데이터 L0_Mi+1을 M1 레지스터(406)에 저장한다.
4) M번째 블록에 대해서, R0 레지스터(407)에 저장되었던 다음 라운드의 하위 데이터 R0_Mi_next 을 M0 레지스터(406)에 저장하는 한편 제1 F함수 처리기(409)로 처리하고 그 결과 F0(R0_Mi_next)을 M2 레지스터(410)에 저장하며, L0 레지스터(405)에 저장된 다음 라운드의 상위 데이터 L0_Mi_next를 M1 레지스터(408)에 저장한다.
한편, M+i 번째 블록에 대해서는, M2 레지스터(410)에 저장된 데이터를 제2 F함수 처리기(411)에 의해 처리한 결과 F1(R0_Mi+1)과 M1 레지스터(408)에 저장된 상위 데이터 M1_L0_Mi+1을 XOR2(412)를 통하여 XOR 연산하고 그 결과 F1(R0_Mi+1).XOR.M1_L0_Mi+1을 R0 레지스터(407)에 저장하면서, M0 레지스터(406)에 저장된 하위 데이터 M0_R0_Mi+1을 L0 레지스터(405)에 저장한다.
3) 및 4)과정을 살펴보면 제1 F함수 처리기(409)에 의해 I+1번째 평문 블록 Mi+1이 처리되는 동안 I번째 평문 블록 Mi을 L0레지스터(405) 및 RO 레지스터(407)에 입력하고, 제2 F함수 처리기(410)에 의해 I+1번째 평문 블록 Mi이 처리되는 동안 제1 F함수 처리기(409)에 의해 L0레지스터(405) 및 RO 레지스터(407)에 입력된 I번째 평문 블록 Mi을 처리하는 것을 알 수 있다. 즉, F함수를 두 부분으로 나누고 파이프라인 방식에 의해 I번째 블록 및 i+1번째 블록을 처리하는 것을 알 수 있다. 본 발명에 따른 SEED 암/복호 장치는 이와 같은 파이프라인 방식에 의해 CBC 복호 모드 및 ECB 모드에서 하나의 SEED 코어가 한꺼번에 2개의 블록들을 처리한다.
대부분의 상용 보안 프로세서들은 다른 코프로세서(co-processor)와의 연동을 위한 별도의 인터페이스는 준비되어있지 않으며, 범용적인 인터페이스들만 구현되어 있다. 이 중 가장 기본이 되는 것이 PCI 인터페이스이며, 이를 위하여 본 발명에 따른 SEED 암/복호화 장치는 PCI 인터페이스를 통하여 보안 프로세서와 연동한다.
도 12는 본 발명에 따른 보안 시스템의 일실시예를 보이는 블록도이다.
통상의 보안 네트워크 처리 보드(8000)는 서버 시스템의 PCI 버스(3000)로 연결되어 사용되고 있으며, 서버의 주CPU(2000)와 보안 네트워크 처리 보드(8000)의 보안 프로세서(6000)는 PCI 버스(3000)를 통하여 통신하게 된다.
여기에 본 발명에 따른 SEED 암/복호화 장치(7000)를 PCI 버스로 연결하기 위해서 PCI 데이터의 경로 설정을 위한 PCI Bridge(4000)가 필요하다. 보안 프로세서는 대부분의 보안 네트워크 프로토콜을 자체적으로 수행하며, SEED 암/복호 연산이 필요한 경우에만 데이터를 SEED 암/복호화 장치에 전송하여 연산을 수행하고, 연산 결과를 다시 가져와 나머지 처리를 수행하게 된다.
이때 보안 프로세서가 PCI 마스터 모드로 동작 가능하면 SEED 암/복호화 장치(7000)에 데이터를 바로 전송하여 필요한 연산을 수행하며, 마스터 모드로 동작 가능하지 않은 경우 주CPU(2000)에 SEED 암호 처리가 필요함을 알리고, 이 주CPU(2000)에서 보안 프로세서(6000)내의 데이터를 SEED 암/복호화 장치(7000)로 전송하고, 연산 결과를 다시 보안 프로세서(6000)로 전송한다.
상술한 바와 같이 본 발명에 따른 SEED 암/복호화 장치는 SEED 암호 연산을 지원하지 않는 상용 보안 프로세서들과 PCI 인터페이스를 통하여 연동하게 함으로써 전체 보안 시스템의 처리 성능을 향상시킬 수 있다는 효과를 가진다.
또한, 본 발명에 따른 SEED 암/복호화 장치는 ECB 모드나 CBC 복호화 모드에서 4개의 데이터를 동시에 처리하므로 종래 방식에 비래 최대 4배의 높은 성능을 얻을 수 있다는 효과를 가진다.
또한, 본 발명에 따른 암/복호화 장치는 두 개의 SEED 코어를 병렬로 사용함으로써 SEED 암/복호 연산 효율적으로 수행할 수 있다는 효과를 가진다.

Claims (17)

  1. SEED 암/복호화 연산을 수행하는 장치에 있어서,
    외부 프로세서와의 인터페이스를 위한 인터페이스 처리부;
    암/복호 블록들의 저장을 위한 데이터 메모리;
    병렬로 각각의 암/복호 블록들을 처리하는 제1 및 제2의 SEED 코어들;
    상기 제1 및 제2 SEED 코어들에서 필요한 라운드별 키 값들을 생성하는 키 스케줄러; 및
    SEED 암/복호 동작에 필요한 동작 모드, 초기값 등을 저장하며, 상기 제1 및 제2 SEED 코어들과 데이터 메모리, 키 스케줄러를 제어하기 위한 SEED 제어기를 포함하는 SEED 암/복호화 장치.
  2. 제1항에 있어서, 상기 인터페이스 처리부는 PCI 인터페이스를 수행하는 것을 특징으로 하는 SEED 암/복호화 장치.
  3. 제1항에 있어서,
    상기 데이터 메모리는 양방향 입출력 메모리인 것을 특징으로 하는 SEED 암/복호화 장치.
  4. 제1항에 있어서, 상기 제1 및 제2 SEED 코어들은
    입력 데이터의 상위 및 하위 데이터 혹은 라운드별 중간값을 저장하는 LO 레 지스터 및 R0 레지스터;
    상기 R0 레지스터에 저장된 하위 데이터를 버퍼링하고, 1라운드의 처리가 종료되면 버퍼링된 데이터를 상기 L0 레지스터에 저장시키는 M0 레지스터;
    상기 키 스케줄러에서 제공되는 라운드별 키값과 상기 RO 레지스터에서 제공되는 하위 데이터에 대하여 F함수 처리를 수행하는 F함수 처리기;
    상기 F함수 처리기의 처리 결과와 상기 L0 레지스터에 저장된 상위 데이터와를 XOR연산하며, 1라운드의 처리가 종료되면 XOR연산된 결과를 상기 RO 레지스터에 저장시키는 제3XOR 연산기; 및
    16라운드의 처리가 종료되면 각각 상기 제3XOR 연산기의 연산 결과 및 상기 M0 레지스터에 버퍼링된 데이터를 저장하는 L1 레지스터 및 R1 레지스터를 포함하는 것을 특징으로 하는 SEED 암/복호화 장치.
  5. 제4항에 있어서, 상기 SEED 코어는
    상기 SEED 제어기에서 제공되는 암호화를 위한 초기값의 상위 데이터 혹은 이전 암호화 블록의 상위 데이터를 선택하는 제1입력 다중화기;
    입력 데이터의 상위 데이터와 상기 제1 입력 다중화기의 출력과를 XOR연산하여 상기 .LO 레지스터에 제공하는 제1XOR 연산기;
    상기 SEED 제어기에서 제공되는 암호화를 위한 초기값의 하위 데이터 혹은 이전 암호화 블록의 하위 데이터를 선택하는 제2입력 다중화기;
    입력 데이터의 하위 데이터와 상기 제2 입력 다중화기의 출력과를 XOR연산하 여 상기 .RO 레지스터에 제공하는 제2XOR 연산기를 더 구비하는 것을 특징으로 하는 SEED 연산 장치.
  6. 제4항에 있어서, 상기 제1 및 제2 SEED 코어들은
    상기 SEED 제어기에서 제공되는 복호화를 위한 초기값의 상위 데이터 혹은 이전 암호화 블록의 상위 데이터를 선택하는 제3 입력 다중화기;
    상기 L1 레지스터에 저장된 데이터와 상기 제3 입력 다중화기의 출력과를 XOR연산하는 제4XOR 연산기;
    상기 SEED 제어기에서 제공되는 복호화를 위한 초기값의 하위 데이터 혹은 이전 암호화 블록의 하위 데이터를 선택하는 제4 입력 다중화기;
    상기 R1 레지스터에 저장된 데이터와 상기 제4입력 다중화기의 출력과를 XOR연산하여 출력하는 제5XOR 연산기;
    상기 제4XOR 연산기의 출력 혹은 상기 L1 레지스터에 저장된 데이터를 선택적으로 출력하는 제1 출력 다중화기; 및
    상기 제5XOR연산기의 출력 혹은 상기 R1 레지스터에 저장된 데이터를 선택적으로 출력하는 제2 출력 다중화기;
    이전 암호화 블록을 버퍼링하여 다른 SEED 코어의 제3입력 다중화기 및 제4입력 다중화기에 각각 제공하기 위한 L2 레지스터 및 R2레지스터를 포함하는 것을 특징으로 하는 SEED 연산 장치.
  7. 제6항에 있어서,
    상기 제2SEED 코어는 상기 L2 레지스터 및 R2 레지스터들의 출력을 버퍼링하여 상기 제1SEED 코어의 제3 입력 다중화기 및 제4입력 다중화기에 제공하기 위한 L4 레지스터 및 R4레지스터들을 더 구비하는 것을 특징으로 하는 SEED 연산 장치.
  8. 제4항에 있어서,
    표준의 F함수의 전반부 및 후반부를 각각 처리하는 제1 및 제2F 함수 처리기;
    상기 제1F함수 처리기의 결과를 버퍼링하는 M2 레지스터; 및
    상기 L0 레지스터의 출력을 버퍼링하여 상기 제3XOR 연산기에 제공하는 M1 레지스터를 더 구비하여, 두 개의 블록들을 파이프라인 처리하는 것을 특징으로 하는 SEED 연산 장치.
  9. 제8항에 있어서, 상기 제1F함수 처리기는
    각각이 F함수에 의해 처리될 64비트의 입력 데이터로부터 절단된 32비트 데이터와 F함수에 의해 처리될 64비트의 키 데이터로부터 절단된 32비트 데이터를 XOR연산하는 제6 및 제7XOR 연산기들;
    상기 제6 및 제7 XOR 연산기들의 출력을 XOR연산하는 제8XOR 연산기;
    상기 제8XOR 연산기의 출력을 G함수 처리하는 제1G함수 처리기;
    상기 제1G함수 처리기의 출력과 상기 제1XOR 연산기의 출력을 가산하는 제1 가산기; 및
    상기 제1가산기의 출력을 G함수 처리하는 제2G함수 처리기를 구비하는 것을 특징으로 하는 SEED 연산 장치.
  10. 제8항에 있어서, 상기 제2F함수 처리기는
    각각이 상기 제1F함수 처리기에서 출력되는 데이터의 상위 및 하위 데이터들을 가산하는 제2덧셈기;
    상기 제2덧셈기의 출력을 G함수 처리하는 제3 G함수 처리기;
    상기 제3 G함수 처리기의 출력과 상기 제1F함수 처리기에서 출력되는 데이터로부터 상위 데이터를 가산하는 제3덧셈기를 포함하는 것을 특징으로 하는 SEED 연산 장치.
  11. 각각이 SEED 알고리즘에 의해 암/복호화를 수행하는 제1 및 제2 SEED 모듈을 이용한 SEED CBC 모드 암호화 방법에 있어서,
    I번째 평문 블록 Mi를 상기 제1SEED 모듈에 입력하여 i번째 암호문 블록 Ci를 생성하는 과정;
    상기 i번째 암호문 블록 Ci를 i+1번째 평문 블록 Mi+1과 XOR연산하는 제1XOR연산 과정;
    상기 제1XOR 연산 과정의 결과를 상기 제2SEED 모듈에 입력하여 i+1번째 암호문 블록 Ci+1을 생성하는 과정;
    상기 i+1번째 암호문 블록 Ci+1을 i+2번째 평문 블록 Mi+2와 XOR 연산하는 제2XOR 연산 과정;
    상기 제2XOR 연산 과정의 결과를 상기 제1SEED 모듈에 입력하여 i+2 번째 암호문 블록 Ci+2를 생성하는 과정을 포함하는 SEED CBC 모드 암호화 방법
  12. 각각이 SEED 알고리즘에 의해 암/복호화를 수행하는 제1 및 제2 SEED 모듈을 이용한 SEED CBC 모드 복호화 방법에 있어서,
    I번째 암호문 블록 Ci 및 i+2번째 암호문 블록 Ci+2를 상기 제1SEED 모듈에 차례로 입력하여 복호하는 제1복호과정;
    I-1번째 암호문 블록 Ci-1 및 i+1번째 암호문 블록 Ci+1을 상기 제2SEED 모듈에 차례로 입력하여 복호하는 제2복호과정;
    상기 제2SEED 모듈에 차례로 제공되는 I-1번째 암호문 블록 Ci-1 및 i+1번째 암호문 블록 Ci+1을 선입선출 방식에 의해 버퍼링하되 상기 제1 및 제2SEED 모듈의 블록 처리 기간만큼의 주기로 차례로 출력하는 제1지연과정;
    제1지연 과정의 결과를 상기 제1복호과정의 결과들과 순차로 XOR연산하여 I번째 평문 블록 Mi 및 i+2번째 평문 블록 Mi+2를 복호하는 제1XOR연산과정;
    상기 제1SEED 모듈에 차례로 제공되는 I번째 암호문 블록 C1 및 i+2번째 암호문 블록 Ci+2를 선입선출 방식에 의해 버퍼링하되 상기 제1 및 제2SEED 모듈의 블록 처리 기간만큼의 주기로 차례로 지연하는 제2지연과정; 및
    제2지연 과정의 결과를 상기 제2복호과정의 결과들과 순차로 XOR연산하여 I- 1번째 평문 블록 Mi-1 및 i+1번째 평문 블록 Mi+1을 복호하는 제1XOR연산과정을 포함하는 SEED CBC 복호화 방법.
  13. I번째 블록 Bi를 상위 데이터 Bi_upper 및 하위 데이터 Bi_lower로 분리하고, 하위 데이터 Bi_lower에 대하여 F함수 처리한 결과와 상위 데이터 Bi_upper를 XOR 연산하여 다음 라운드의 하위 데이터 Bi_lower_next로 제공하고, 상기 하위 데이터 Bi_lower를 다음 라운드의 상위 데이터 Bi_upper_next로 제공하는 SEED 암/복호의 라운드 처리 방법에 있어서,
    a) I번째 블록 Bi의 하위 데이터 Bi_lower를 버퍼링하는 과정;
    b) I번째 블록 Bi의 하위 데이터 Bi_lower에 대하여 F함수의 전반부를 처리하고, 그 결과 Bi_lower_f0 및 I번째 블록 Bi의 상위 데이터 Bi_upper를 버퍼링하는 과정; 및
    c) i+1번째 블록의 하위 데이터 Bi+1_lower에 대하여 F함수의 전반부를 처리하고 그 결과 Bi+1_lower_f0 및 I+1번째 블록 Bi+1의 상위 데이터 Bi+1_upper를 버퍼링하는 한편, 상기 b)과정에서 버퍼링된 F함수의 전반부가 처리된 I번째 블록 Bi의 하위 데이터 Bi_lower_f0 에 대하여 F함수의 후반부를 처리하고, 그 결과 Bi_lower_f0_f1 및 I번째 블록 Bi의 상위 데이터 Bi_upper를 XOR연산하여 다음 라운드의 하위 데이터 Bi_lower_next로서 제공하며, 그리고 상기 a)과정에서 버퍼링된 I번째 블록 Bi의 하위 데이터 Bi_lower를 다음 라운드의 상위 데이터 Bi_upper_next로서 제공하는 과정을 포함하여, 2개의 블록을 파이프라인 방식에 의 해 처리하는 SEED 암/복호 라운드 처리 방법.
  14. SEED 암/복호화 장치의 F함수 처리기에 있어서,
    F함수의 전반부를 처리하는 제1F함수 처리기;
    상기 제1F함수 처리기의 처리 결과를 버퍼링하는 레지스터; 및
    상기 레지스터에 저장된 데이터에 대하여 F함수의 후반부를 처리하는 제2F함수 처리기를 포함하는 F함수 처리기.
  15. 제14항에 있어서, 상기 제1F함수 처리기는
    각각이 F함수에 의해 처리될 64비트의 입력 데이터로부터 절단된 32비트의 데이터와 F함수에 의해 처리될 64비트의 키데이터로부터 절단된 32비트의 데이터를 XOR연산하는 제6 및 제7 XOR들;
    상기 제6 및 제7XOR들의 출력들을 XOR연산하는 제8XOR;
    상기 제8XOR의 출력을 G함수 처리하는 제1G함수 처리기;
    상기 제1G함수 처리기의 출력과 상기 제6XOR의 출력을 가산하는 제1덧셈기; 및
    상기 제1덧셈기의 출력을 G함수 처리하는 제2G함수 처리기를 구비하며, 상기 제1 및 제2G함수 처리기의 출력들을 조합하여 출력하는 F함수 처리기.
  16. 제14항에 있어서, 상기 제2F함수 처리기는
    각각이 상기 제1F함수 처리기에서 출력되는 64비트의 데이터로부터 절단된 32비트 데이터들을 가산하는 제2덧셈기;
    상기 제2덧셈기의 출력을 G함수 처리하는 제3G함수 처리기;
    상기 제3G함수 처리기의 출력과 상기 제1F함수 처리기에서 출력되는 64비트의 데이터로부터 절단된 32비트 데이터를 가산하는 제3덧셈기를 포함하며, 상기 제3덧셈기의 출력과 상기 제3G함수 처리기의 출력들은 조합하여 출력하는 F함수 처리기.
  17. 삭제
KR1020030091885A 2003-12-16 2003-12-16 Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기 KR100546777B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020030091885A KR100546777B1 (ko) 2003-12-16 2003-12-16 Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030091885A KR100546777B1 (ko) 2003-12-16 2003-12-16 Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기

Publications (2)

Publication Number Publication Date
KR20050060301A KR20050060301A (ko) 2005-06-22
KR100546777B1 true KR100546777B1 (ko) 2006-01-25

Family

ID=37253025

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030091885A KR100546777B1 (ko) 2003-12-16 2003-12-16 Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기

Country Status (1)

Country Link
KR (1) KR100546777B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9843440B2 (en) 2014-10-20 2017-12-12 Samsung Electronics Co., Ltd. Encryptor/decryptor, electronic device including encryptor/decryptor, and method of operating encryptor/decryptor

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8615078B2 (en) 2009-08-21 2013-12-24 Electronics And Telecommunications Research Institute Method and apparatus for processing F-function in seed encryption system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9843440B2 (en) 2014-10-20 2017-12-12 Samsung Electronics Co., Ltd. Encryptor/decryptor, electronic device including encryptor/decryptor, and method of operating encryptor/decryptor

Also Published As

Publication number Publication date
KR20050060301A (ko) 2005-06-22

Similar Documents

Publication Publication Date Title
TWI573039B (zh) 計算系統及其加解密裝置與加解密方法
US8737606B2 (en) Method and system for high throughput blockwise independent encryption/decryption
EP2186250B1 (en) Method and apparatus for hardware-accelerated encryption/decryption
EP0802653B1 (en) Multi-cycle non-parallel data encryption engine
CN107465501B (zh) 用于高级加密标准aes的处理器和系统
TWI402675B (zh) 低等待時間的區塊密碼術
KR100583635B1 (ko) 다수의 동작 모드들을 지원하는 암호화 장치
US5671284A (en) Data encryptor having a scalable clock
US7623660B1 (en) Method and system for pipelined decryption
JP4025722B2 (ja) データ暗号化のための方法および装置
US7657757B2 (en) Semiconductor device and method utilizing variable mode control with block ciphers
KR20180081559A (ko) 암호화 동작을 위한 키 시퀀스 생성
JP3824121B2 (ja) 暗号データの復号化処理方法および装置
GB2398213A (en) Encryption using the KASUMI algorithm
JP3769804B2 (ja) 解読化方法および電子機器
EP1416664A2 (en) Data encryption method
KR100546777B1 (ko) Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기
JPH11161162A (ja) 暗号化方法または復号化方法およびそれを用いた装置
JP6631989B2 (ja) 暗号化装置、制御方法、及びプログラム
KR100494560B1 (ko) Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법
KR100845835B1 (ko) 다단계 암호화 및 복호화 시스템
KR100835718B1 (ko) Aes에서의 암호화 장치 및 그 방법
JPH10303883A (ja) 暗号化方法
KR20030087893A (ko) 라운드 키의 온라인 계산 기능을 갖는 모듈화 구조의 AESRijndael 라운드 키 생성 회로
JPH09230788A (ja) 暗号化方法および暗号化装置

Legal Events

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

Payment date: 20110104

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee