KR100384873B1 - 데이터 암호화 표준 알고리즘을 이용한 암호화 장치 - Google Patents

데이터 암호화 표준 알고리즘을 이용한 암호화 장치 Download PDF

Info

Publication number
KR100384873B1
KR100384873B1 KR10-2000-0028741A KR20000028741A KR100384873B1 KR 100384873 B1 KR100384873 B1 KR 100384873B1 KR 20000028741 A KR20000028741 A KR 20000028741A KR 100384873 B1 KR100384873 B1 KR 100384873B1
Authority
KR
South Korea
Prior art keywords
product transformation
register
clock
data
response
Prior art date
Application number
KR10-2000-0028741A
Other languages
English (en)
Other versions
KR20010107319A (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 KR10-2000-0028741A priority Critical patent/KR100384873B1/ko
Priority to JP2001159588A priority patent/JP2002032017A/ja
Priority to TW090112933A priority patent/TWI244273B/zh
Publication of KR20010107319A publication Critical patent/KR20010107319A/ko
Application granted granted Critical
Publication of KR100384873B1 publication Critical patent/KR100384873B1/ko

Links

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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 데이터 암호화 장치의 데이터 표준 암호화 알고리즘을 이용한 암호화 장치에 관한 것으로, 적어도 하나의 N비트(N은 짝수인 자연수)의 평문 데이터 블록의 초기 치환을 수행하여 초기치환된 데이터를 이등분하여 적어도 하나의 제1 및 제2 초기치환 데이터를 출력하기 위한 초기 치환 수단; 상기 제1 및 제2 초기치환 데이터를 수신하여 상기 제1 및 제2 초기치환 데이터의 i라운드(i는 자연수)의 곱변형을 수행하여 i라운드 곱변형된 데이터를 출력하기 위한 변형부; 및 상기 i라운드 곱변형된 데이터를 수신하여 역초기치환을 수행하기 위한 역초기 치환 수단을 포함하고, 상기 변형부는, 제1 클럭에 응답하여 상기 제1 초기치환 데이터를 저장하기 위한 제1 왼쪽 레지스터; 상기 제1 클럭을 1/3 주기만큼 지연시킨 제2 클럭에 응답하여 상기 제2 초기치환 데이터를 저장하기 위한 제1 오른쪽 레지스터; 상기 제1 오른쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제1 곱변형 결과를 출력하기 위한 제1 곱변형 수단; 상기 제2 클럭을 1/3 주기만큼 지연시킨 제3 클럭에 응답하여 상기 제1 곱변형결과를 저장하기 위한 제2 왼쪽 레지스터; 상기 제2 왼쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제2 곱변형 결과를 출력하기 위한 제2 곱변형 수단; 상기 제1 클럭에 응답하여 상기 제2 곱변형 결과를 저장하기 위한 제2 오른쪽 레지스터; 상기 제2 오른쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제3 곱변형 결과를 출력하기 위한 제3 곱변형 수단; 상기 제2 클럭에 응답하여 상기 제3 곱변형결과를 저장하기 위한 제3 왼쪽 레지스터; 상기 제3 왼쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제4 곱변형 결과를 출력하기 위한 제4 곱변형 수단; 상기 제3 클럭에 응답하여 상기 제4 곱변형 결과를 저장하기 위한 제3 오른쪽 레지스터; 상기 제3 오른쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제5 곱변형 결과를 상기 제1 클럭에 응답하여 상기 제1 왼쪽 레지스터로 출력하기 위한 제5 곱변형 수단; 및 상기 제1 왼쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제6 곱변형 결과를 상기 제2 클럭에 응답하여 상기 제1 오른쪽 레지스터로출력하기 위한 제6 곱변형 수단을 포함한다. 본 발명에 따른 암호화 장치는 중간변수를 중복하여 저장하는 레지스터를 제거하여 집적화 시에 칩에서 차지하는 면적을 줄이고 서로 1/3의 위상 차이를 갖는 3개의 클럭을 사용하여, 중간변수를 레지스터에 저장시키는 클럭 사이클을 줄임으로써 전체 16라운드를 계산하는데 걸리는 클럭 사이클을 5.66 클럭 사이클로 줄여서 전력 소모를 최소화하며 파이프라인 구조로 되어 있으므로 처리능력비(Throughput)를 향상시키는 효과가 있다.

Description

데이터 암호화 표준 알고리즘을 이용한 암호화 장치{Encryption device using data encryption standard algorithm}
본 발명은 암호화 장치에 관한 것으로, 특히 데이터 암호화 표준 알고리즘을 이용한 암호화 장치에 관한 것이다.
일반적으로 데이터 암호화 표준(DES : Data Encryption Standard, 이하 DES라 칭함) 알고리즘은 가장 널리 쓰이고 있는 암호화 방식으로 네트워킹 사용이 증가함에 따라 그 중요성을 더해 가고 있다. 특히, 보안 인터넷 응용이나 원격 접근 서버나 케이블 모뎀과 위성용 모뎀 등의 분야에서 많이 이용되고 있다.
DES는 기본적으로 64비트 블럭의 입력 및 출력을 가지는 64비트 블럭 암호(block cipher)이며, 64비트의 키 블럭(key block) 중 56비트가 암호화 및 복호화에 사용되고, 나머지 8비트는 패리티 검사용으로 사용된다. 또한. 64비트의 평문(Plain Text) 블럭과 56비트의 키(Key)를 입력으로 해서 64비트의 암호문(Cipher Text) 블럭을 출력하는 암호화 장치이다.
DES를 실현시키는 중요한 기법은 치환(P-Box), 대치(S-Box) 그리고 보조키(Subkey)를 발생시키는 키 스케쥴러 등이 있다.
데이터 암호화부의 내부는 16라운드(round)의 반복연산을 수행하는 형태로 되어 있고 입력부의 초기 치환(IP)와 출력부의 역초기 치환(IP-1)으로 구성되어 있다.
도1은 종래기술의 DES 알고리즘을 설명하기 위한 암호화 장치의 일반적인 블럭도이다.
도1을 참조하면, 종래기술의 암호화 장치의 알고리즘은 먼저 64비트의 평문(Plain Text) 블럭을 초기 치환(IP : Initial Permutation)을 수행하는 초기치환부(110)와, 초기 치환부(110)의 64비트의 블럭을 두개의 32비트 블럭으로 나누어 왼쪽레지스터(L0)와 오른쪽레지스터(R0)에 저장하고 사이퍼(Cipher) 함수 f로 수행되는 16라운드의 곱 변형(Product Transformation)과 왼쪽레지스터(Li, i=1 내지 16)와 오른쪽레지스터(Ri, i=1 내지 16)를 매 라운드마다 교환하여 16라운드의 블록 변형(Block Transformation)을 수행하는 변형부(120)와, 16라운드에 걸친 변형이 끝난 후 역초기 치환(IP-1)을 거쳐서 암호화된 암호문(Cipher Text)을 출력하는 역초기치환부(130)로 구성되어 있다.
변형부(120)에서의 곱 변형은 상기 초기치환부(110)에서 나뉘어진 32비트의 블럭 중에서 오른쪽레지스터(Ri)에 저장된 데이터를 키 스케쥴러(Key Scheduler)에 의해서 생성된 보조키(Subkey) Ki와 함께 입력시켜서 암호화 연산을 수행하는 사이퍼 함수 f(121)와, 사이퍼 함수 f의 결과를 전단의 왼쪽레지스터(Li)의 출력과 함께 배타적 논리합하여 후단의 오른쪽레지스터로 출력하는 배타적 논리합 연산부(122)에 의해 구현된다.
배타적 논리합 연산부(122)의 32비트 데이터는 오른쪽레지스터(Ri+1)에 저장되고 오른쪽레지스터(Ri)에 저장된 32비트의 데이터는 왼쪽레지스터(Li+1)에 저장된 32비트 데이터와 교환(Swapping)되어 다음 라운드의 왼쪽레지스터(Li+1)에 저장된다. 이러한 1라운드의 연산이 반복되어 16라운드가 수행되는 것이다.
초기치환부(110)를 거친 64비트의 평문(Plain Text) 블럭을 둘로 나누어 왼쪽레지스터(L0)와 오른쪽레지스터(R0)에 입력하면 16회의 각 라운드는 다음 수학식1과 수학식2로 표현가능하다.
Lii-1
f(Ri-1i
도2는 보조키 Ki(i=1 내지 16)를 발생하는 키 스케쥴러를 설명하기 위한 블럭도이다.
도2를 참조하면, 키 스케쥴러는 56비트의 키를 입력받아서 치환하는 치환선택부(PC1 : Permutation Choice 1)(200)와, 치환선택부(200)에 의해서 치환된 56비트의 블럭을 28비트의 두 블럭으로 나누어서 변수 C0와 D0에 저장한 후, 16라운드의 곱변형 연산 중 암호화 함수의 연산에 필요한 48비트의 보조키를 생성하기 위해 왼쪽레지스터 Ci(211)와 오른쪽레지스터 Di(212에 저장된 데이터를 (i=0 내지 15) 왼쪽쉬프터(213, 214)에 의해서 한자리 또는 두자리씩 왼쪽으로 쉬프트하여 다음 라운드의 왼쪽레지스터 Ci+1과 오른쪽레지스터 Di+1에 저장하는 기본 연산부(210) 및 각 라운드마다 상기의 쉬프트된 데이터를 저장하고 있는 왼쪽레지스터 Ci및 오른쪽레지스터 Di의 28비트의 블럭을 입력받아서 48비트의 보조키 Ki를 출력하는 치환선택부(PC2 : Permutation Choice 2)(220)를 포함한다.
16라운드 동안 Ci와 Di는 28자리 수만큼 쉬프트가 되어 C0와 C16그리고 D0와 D16은 서로 같은 데이터가 된다.
도3은 일반적인 DES 코아 아키텍쳐의 블럭도이다.
도3을 참조하면, 사이퍼 함수 f는 오른쪽레지스터에 저장된 32비트의 입력(R(i-1)) 중 몇개를 복사하여 48비트로 치환하는 확장 치환부(Expansion Permutation)(300)와, 확장 치환부(300)의 치환 결과를 각 라운드에서 키 스케쥴러에 의해서 생성된 48비트의 보조키와 배타적 논리합하는 배타적 논리합 연산부(310)와, 배타적 논리합 연산부(310)에서 연산된 48비트의 블럭 데이터를 32비트의 블럭 데이터로 대치(Substitution)하는 S-Box 치환부(320)와, S-Box 치환부(320)의 치환된 32비트의 블럭 데이터를 다시 치환하여 32비트의 블럭 데이터를 생성하는 P-Box 치환부(330)를 포함하며, P-Box 치환부(330)를 거친 32비트의 블럭은 왼쪽레지스터에 저장되어 있는 32비트의 블럭(L(i-1))과 배타적 논리합되어 다음 라운드의 오른쪽레지스터에 R(i)로 저장된다. 한편, 오른쪽레지스터(R(i-1))에 저장되어 있던 32비트의 블럭 데이터는 다음 라운드의 왼쪽 레지스터에 L(i)로 저장된다.
도4는 도3에 도시된 S-Box 치환부(320)에 대한 상세한 블럭도이다.
도4를 참조하면, 48비트의 입력을 받아서 32비트의 출력을 생성하는 8 개의 S-Box로 구성되어 있다. 즉, 48비트의 데이터는 8 개의 6비트 데이터로 분할되어 8 개의 S-Box에 입력된다. 이 8 개의 S-Box들은 8 개의 4비트 출력을 내보냄으로써 48 비트를 32비트로 줄인다. S-Box 치환부(320)는 테이블 룩-업(Look-up) 방식으로 대치됨으로써 프로그램가능 논리 어레이(PLA)나 롬(ROM)과 같은 기억장치를 필요로 한다. 6비트의 입력에 대하여 4비트를 출력하기 때문에 각 S-Box는 64 × 4 의 기억 용량이 필요하며 전체적으로 8개의 S-Box로 구성되어 있으므로 8 × 64 × 4의 기억장치가 필요하다. 따라서 전체적으로 칩에서 차지하는 면적이 상대적으로 크다
이상에서 살펴본 종래의 암호화 장치는 변형부에서 곱변형을 수행할 때 오른쪽레지스터에 저장된 32비트의 데이터 블럭을 교환하여 왼쪽레지스터에 저장하므로써 평문을 DES 암호화할 때 항상 16클럭 사이클이 걸리는 문제점이 발생한다.
본 발명은 상기와 같은 종래 기술의 문제점을 해결하기 위하여 안출된 것으로써, 집적화 시에 칩에서 차지하는 면적을 줄이고, 중간 변수를 레지스터에 저장시키는 클럭 사이클을 줄임으로써 전력 소모를 최소화하며, 처리능력비(Throughput)를 향상시킨 암호화 장치를 제공하는데 그 목적이 있다.
도1은 종래기술의 DES 알고리즘을 설명하기 위한 암호화 장치의 블럭도,
도2는 보조키(Subkey)를 발생하는 키 스케쥴러(Key Scheduler)을 설명하기 위한 블럭도,
도3은 일반적인 DES 코아 아키텍쳐의 블럭도,
도4는 도3에 도시된 S-Box 치환부(320)에 대한 상세한 블럭도,
도5는 교환(Swapping)되는 데이터 경로를 제거한 DES 알고리즘의 블럭도,
도6은 본 발명의 일실시예에 따른 DES 알고리즘의 아키텍쳐를 나타낸 블럭도,
도7은 본 발명의 일실시예에 따른 DES 알고리즘의 동작 순서를 나타내는 타이밍도,
도8은 본 발명의 일실시예에 따른 DES 알고리즘의 파이프라인 동작 순서를 나타내는 타이밍도,
도9는 본 발명의 다른 실시예에 따른 DES 알고리즘을 이용한 암호화 장치의 다른 실시예를 나타내는 블럭도,
도10은 본 발명의 다른 실시예에 따른 DES 아키텍쳐의 다른 실시예의 동작 순서를 나타내는 타이밍도.
* 도면의 주요 부분에 대한 부호의 설명 *
600 : 오른쪽레지스터 610 : 암호화 함수 f
620 : 배타적 논리합 연산부 630 : 왼쪽레지스터
상기 목적을 달성하기 위하여 본 발명의 암호화 장치는, 적어도 하나의 N비트(N은 짝수인 자연수)의 평문 데이터 블록의 초기 치환을 수행하여 초기치환된 데이터를 이등분하여 적어도 하나의 제1 및 제2 초기치환 데이터를 출력하기 위한 초기 치환 수단; 상기 제1 및 제2 초기치환 데이터를 수신하여 상기 제1 및 제2 초기치환 데이터의 i라운드(i는 자연수)의 곱변형을 수행하여 i라운드 곱변형된 데이터를 출력하기 위한 변형부; 및 상기 i라운드 곱변형된 데이터를 수신하여 역초기치환을 수행하기 위한 역초기 치환 수단을 포함하고, 상기 변형부는, 제1 클럭에 응답하여 상기 제1 초기치환 데이터를 저장하기 위한 제1 왼쪽 레지스터; 상기 제1 클럭을 1/3 주기만큼 지연시킨 제2 클럭에 응답하여 상기 제2 초기치환 데이터를 저장하기 위한 제1 오른쪽 레지스터; 상기 제1 오른쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제1 곱변형 결과를 출력하기 위한 제1 곱변형 수단; 상기 제2 클럭을 1/3 주기만큼 지연시킨 제3 클럭에 응답하여 상기 제1 곱변형결과를 저장하기 위한 제2 왼쪽 레지스터; 상기 제2 왼쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제2 곱변형 결과를 출력하기 위한 제2 곱변형 수단; 상기 제1 클럭에 응답하여 상기 제2 곱변형 결과를 저장하기 위한 제2 오른쪽 레지스터; 상기 제2 오른쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제3 곱변형 결과를 출력하기 위한 제3 곱변형 수단; 상기 제2 클럭에 응답하여 상기 제3 곱변형결과를 저장하기 위한 제3 왼쪽 레지스터; 상기 제3 왼쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제4 곱변형 결과를 출력하기 위한 제4 곱변형 수단; 상기 제3 클럭에 응답하여 상기 제4 곱변형 결과를 저장하기 위한 제3 오른쪽 레지스터; 상기 제3 오른쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제5 곱변형 결과를 상기 제1 클럭에 응답하여 상기 제1 왼쪽 레지스터로 출력하기 위한 제5 곱변형 수단; 및 상기 제1 왼쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제6 곱변형 결과를 상기 제2 클럭에 응답하여 상기 제1 오른쪽 레지스터로출력하기 위한 제6 곱변형 수단을 포함한다.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부한 도면을 참조하여 설명하기로 한다.
도5는 데이터 교환 경로를 제거한 DES 알고리즘의 블럭도이다.
도5를 참조하면, 본 발명의 DES 알고리즘의 구현방식은 먼저 64비트의 평문(Plain Text) 블럭 데이터의 초기 치환(IP : Initial Permutation)울 수행하는 초기치환부(500)와, 초기 치환부(500)에서 출력된 64비트의 초기 치환된 블럭 데이터를 두개의 32비트 블럭으로 나누어 왼쪽레지스터(L0)와 오른쪽레지스터(R0)에 저장하고 사이퍼(Cipher) 함수 f로 수행되는 16라운드의 곱 변형(Product Transformation)과 왼쪽레지스터(Li)를 다음 라운드의 왼쪽레지스터(Li)와 오른쪽레지스터(Ri)를 왼쪽레지스터(Li+1)와 오른쪽레지스터(Ri+1)에 저장하기 위한 블록 변형(Block Transformation)을 수행하는 변형부(510)와, 16라운드에 걸친 변형이 끝난 후 역초기 치환(IP-1)을 수행하여 암호화된 암호문(Cipher Text)을 출력하는 역초기치환부(520)를 포함한다.
변형부(510)에서의 곱 변형은 초기치환부(500)에서 나뉘어진 32비트의 블럭 중에서 오른쪽레지스터(Ri)에 저장된 데이터를 키 스케쥴러에 의해서 생성된 보조키 Ki와 함께 입력시켜서 암호화 연산을 수행하는 암호화 함수부(f)(511)와, 암호화 함수 f의 결과를 왼쪽레지스터(Li)에 저장된 데이터와 함께 배타적 논리합하는 배타적 논리합 연산부(512)를 포함한다.
기존의 DES 알고리즘의 블럭도에서 교환되는 데이터 경로를 제거하면 도5와 같이 된다. 즉 홀수번의 라운드에서 왼쪽레지스터(Li)와 오른쪽레지스터(Ri)의 위치를 서로 바꾸고 이에 상응하는 데이터 경로의 방향(암호화 함수 f와 배타적 논리합 연산부의 방향)을 변경하면 서로 교차되는 데이터 경로가 없어진다. 도5에서 왼쪽레지스터(Li ,i=1,2....16)의 값들을 주목하면 이전 라운드의 오른쪽레지스터(Ri-1) 값과 동일함을 알 수 있다. 이를 근거로 하여 상기 수학식 1에 상기 수학식 2를 대입하고 Ri-1= Li을 가정하면 다음 수학식 3으로 표현가능하다.
f(Ri-1ii-1i
도6은 본 발명의 DES 알고리즘의 아키텍쳐를 나타낸 블럭도이다.
도6을 참조하면, 본 발명의 DES 알고리즘은 초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 한 블럭(a0)를 제1클럭(CLK1)을 사용하여 제1왼쪽레지스터(A0)(750)에 저장하고 다른 블럭(b0)을 제2클럭(CLK2)를 사용하여 제1오른쪽레지스터(B0)(600)에 저장하는 1단계 연산 후, 키 스케쥴러로부터 생성된 보조키(K(i))를 입력받아 제1오른쪽레지스터(B0)(600)로부터의 32비트의 데이터를 암호화 함수 f(610)에 의해서 암호화 변형하며, 암호화 함수 f에 의해 변형된 32비트의 데이터를 제1왼쪽레지스터(A0)(710)의 32비트와 배타적 논리합 연산부(620)에서 배타적 논리합 연산을 수행한다. 또한, 배타적 논리합 연산부(620)의 32비트 데이터를 제3클럭(CLK3)을 사용하여 제2왼쪽레지스터(C0)(630)에 저장하고, 보조키(K(i+1))를 입력받아 제2왼쪽레지스터(C0)(630)에 저장되어 있는 32비트의 데이터를 암호화 함수 f(640)를 통하여 변형하며, 변형된 32비트의 데이터를 제1오른쪽레지스터(B0)(600)의 32비트와 배타적 논리합 연산부(650)에서 배타적 논리합 연산을 수행한다. 또한, 배타적 논리합 연산부(650)의 32비트 데이터를 제1클럭(CLK1)을 사용하여 제2오른쪽레지스터(A1)(660)에 저장하고, 보조키(K(i+2))를 입력받아 제2오른쪽레지스터(A1)(660)에 저장되어 있는 32비트의 데이터를 암호화 함수 f(670)를 통하여 변형하며, 변형된 32비트의 데이터를 제2왼쪽레지스터(C0)(630)의 32비트와 배타적 논리합 연산부(680)에서 배타적 논리합 연산을 수행한다. 또한 배타적 논리합 연산부(680)에서 출력된 32비트 데이터를 제2클럭(CLK2)을 사용하여 제3왼쪽레지스터(B1)(690)에 저장하고, 보조키(K(i+3))를 입력받아 왼쪽레지스터(B1)(690)에 저장되어 있는 32비트의 데이터를 암호화 함수 f(700)를 통하여 변형하며, 변형된 32비트의 데이터를 제2오른쪽레지스터(A1)(660)의 32비트와 배타적 논리합 연산부(710)에서 배타적 논리합 연산을 수행한다. 또한, 배타적 논리합 연산부(710)의 32비트 데이터를 제3클럭(CLK3)을 사용하여 제3오른쪽레지스터(C1)(720)에 저장하고, 보조키(K(i+4))를 입력받아 제3오른쪽레지스터(C1)(720)에 저장되어 있는 32비트의 데이터를 암호화 함수 f(730)를 통하여 변형하며, 변형된 32비트의 데이터를 제3왼쪽레지스터(B1)(690)의 32비트와 배타적 논리합 연산부(740)에서 배타적 논리합 연산을 수행한다. 또한 배타적 논리합 연산부(740)의 32비트 데이터를 제1클럭(CLK1)을 사용하여 제1왼쪽레지스터(A0)(750)에 저장하고, 보조키(K(i))를 입력받아 제1왼쪽레지스터(A0)(750)에 저장되어 있는 32비트의 데이터를 암호화 함수 f(760)를 통하여 변형하며, 변형된 32비트의 데이터를 제3오른쪽레지스터(C1)(720)의 32비트와 배타적 논리합 연산부(770)에서 배타적 논리합 연산을 수행한다.
마지막 라운드의 제3왼쪽레지스터(B1)(690)의 32비트가 변형부의 32비트 왼쪽 블럭 데이터 b15가 되며 마지막 라운드의 배타적 논리합 연산부(710)에서 출력된 32비트가 상기 변형부의 오른쪽 블럭 데이터 b16이 된다.
제2클럭(CLK2)은 제1클럭(CLK1)을 1/3 주기만큼 지연시킨 것이고 상기 제3클럭(CLK3)은 제2클럭(CLK2)를 1/3 주기만큼 지연시킨 것이다. 제1클럭(CLK1)이 상승할 때 레지스터 A0와 A1에 새로운 값이 저장되고 제2클럭(CLK2)이 상승할 때 레지스터 B0와 B1에 새로운 값이 저장되고 제3클럭(CLK3)이 상승할 때 레지스터 C0와 C1에 새로운 값이 저장된다.
도7은 본 발명에 따른 DES 알고리즘의 동작 순서를 나타내는 타이밍도이다.
도7을 참조하면, 32비트의 블럭 a0와 b0는 초기 치환을 거친 64비트의 평문 블럭이 32비트의 두블럭으로 나뉘어진 것이고, a0와 b0값은 t0와 t1에서 제1클럭(CLK1)과 제2클럭(CLK2)에 의해서 레지스터 A0와 B0에 각각 저장된다. t1에서부터 b1값(b1= a0 f(b0,K1))을 계산하기 시작해서 t2에서 계산된 값을 레지스터 C0에 저장한다. 이 때 레지스터 A0에 입력된 값 a0는 t3까지 유지가 되어서 t1-t2구간에서 b1값을 계산하는데 사용할 수 있고 레지스터 B0에 입력된 값 b0가 t4까지 유지가 되어서 t2-t3구간에서 b2값을 계산하는데 사용할 수 있다. 이 것은 서로 지연된 제1클럭(CLK1)과 제2클럭(CLK2)과 제3클럭(CLK3)에 의해서 레지스터 A0과 B0와 C0가 새로운 값을 저장하기 때문에 해결할 수 있다.
각 레지스터들의 데이터 입력 시간 및 입력된 데이터를 유지하는 구간을 살펴보면 다음 표 1 및 표 2와 같다.
레지스터 데이터 로드 시간
A0 t0 t6 t12 ...
B0 t1 t7 t13 ...
C0 t2 t8 t14 ...
A1 t3 t9 t15 ...
B1 t4 t10 t116 ...
C1 t5 t11 t17 ...
레지스터 데이터 유지 구간
A0 t0-t3 t6-t9 t12-t15 ...
B0 t1-t4 t7-t10 t13-t16 ...
C0 t2-t5 t8-t11 t14-t17 ...
A1 t3-t6 t9-t12 t15-t18 ...
B1 t4-t7 t10-t13 t16-t19 ...
C1 t5-t8 t11-t14 t17-t20 ...
b2(b2= b0 f(b1, K2))값은 t2-t3구간에서 계산되어 t3에서 레지스터 A1에제1클럭(CLK1)에 의해서 저장되며 b3(b3= b1 f(b2, K3))값은 t3-t4구간에서 계산되어 t4에서 레지스터 B1에 제2클럭(CLK2)에 의해서 저장된다. 이와 같이 3 개의 위상을 갖는 클럭을 사용하여 레지스터에 저장된 값을 동시에 억세스(Access)하게 함으로써 b1, b2,...., b16을 계산하는데 걸리는 시간을 5 클럭 사이클로 줄일 수 있다.
암호화(Cipher) 함수 f는 롬(ROM)이나 프로그램가능 논리 어레이(PLA)와 같은 기억 장치로 구현된 대치(S-Box)를 필요로 한다. 도7에서와 같이 한개의 평문을 암호화할 경우 본 발명에서 사용된 사이퍼 함수 f는 t1-t2, t2-t3, t3-t4.... 구간에서 한번씩 S-box를 엑세스할 수 있으면 된다. 따라서 면적을 크게 차지하는 8 개의 S-Box들을 복수 개로 구현할 필요 없이 한 개 씩만 구현하면 된다. 단지 확장 치환과 P-Box 치환을 구현하기 위한 결선과 각 라운드마다 생성된 보조키와 배타적 논리합하기 위한 배타적 논리합 연산 게이트 들만 추가로 필요로 한다. 또한 본 발명은 32비트의 왼쪽변수(Li)를 저장하는데 필요한 왼쪽레지스터를 사용하지 않아 면적 증가를 최소로 하였다.
일반적으로 주어진 키에 대하여 암호화 또는 해독화해야 될 입력 데이터가 한 개 이상인 경우가 많다. 예를 들어 MCNS 케이블 모뎀에서 사용되는 암호화 방식은 맥 프레임(MAC Frame) 단위로 암호화를 수행하기 때문에 최대 1,518 바이트의 평문 블럭들을 동일한 키(Key)로 암호화를 수행하여야 한다. 즉 동일한 키 스케쥴(Key Schedule)로써 다수의 평문 블럭들에 대해서 16라운드의 DES 코아 기능을 수행해야만 한다. 이 때 본 발명이 가지고 있는 파이프라인 구조를 이용하여 처리능력비를 증가시킬 수 있다.
도8은 본 발명의 DES 알고리즘의 파이프라인 동작 순서를 나타내는 타이밍도이다.
도8을 참조하면, 본 발명의 파이프라인 동작을 나타내는 타이밍도는 파이프라인 구조를 이용하여 두개의 평문 블럭들을 5.66 클럭 사이클동안 동시에 처리할 수 있음을 보여준다. 또한 도8에서 비어 있는 부분에 새로운 평문 블럭 c0와 d0를 t3와 t4에서 레지스터 A0와 B0에 입력함으로써 평문 블럭 bi값들을 계산하는 동안 평문 블럭 di값들을 계산할 수 있음을 보여준다. 이 때 t0-t1, t1-t2, t2-t3.... 구간마다 새로운 평문 블럭 bi와 di값을 암호화 하기 위해 암호화 함수 f가 두 개씩 동시에 수행된다. 따라서 암호화 함수를 구성하는 S-Box들은 한 개씩 추가로 구현할 필요가 있다. 그리고 주어진 5.66 클럭 사이클 동안 처리할 수 있는 평문 블럭의 수는 두배로 증가시킬 수 있다.
도9는 본 발명의 다른 실시예에 따른 DES 알고리즘을 이용한 암호화 장치를 나타내는 블럭도이다.
도9를 참조하면, 다른 실시예에 따른 암호화 장치는 도6에서 6개의 라운드로 구성된 6 단의 파이프라인 구조를 확장함으로써 레지스터 8개와 4개의 위상을 갖는 클럭을 사용하여 파이프라인 스테이지 수를 6에서 8로 증가시켰다. 이 구조는 하나의 평문 블럭을 처리하는데 4.25 클럭 사이클이 걸린다. 동시에 처리할 수 있는 평문 블럭의 수는 두개이다. 이 때 필요한 S-Box의 수는 두 개 씩이며 2-포트 S-Box 치환부로 구현하면 면적을 줄일 수 있다.
도10은 본 발명에 따른 DES 아키텍쳐의 다른 실시예의 동작 순서를 나타내는 타이밍도이다.
상기 도10을 참조하면, 두 개의 평문 블럭을 동시에 처리하는 과정을 나타낸다.
본 발명의 기술 사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 전문가라면 본 발명의 기술 사상의 범위내에서 다양한 실시예가 가능함을 이해할 수 있을 것이다.
상기와 같이 데이터 교환 경로를 제거한 본 발명은 중간변수를 중복하여 저장하지 않음으로써 필요한 레지스터의 수를 최소화하여 면적을 줄일 수 있으며 서로 1/3의 위상차이를 갖는 세 개의 클럭을 사용함으로써 DES 코아를 계산하는데 소요되는 시간을 16 클럭 사이클에서 5.66 클럭 사이클로 줄여서 전력소모를 최소화할 수 있다. 그리고 파이프라인 구조를 사용하여 한 번에 처리할 수 있는 평문 블럭의 수를 증가시킬 수 있는 효과가 있다.

Claims (7)

  1. 적어도 하나의 N비트(N은 짝수인 자연수)의 평문 데이터 블록의 초기 치환을 수행하여 초기치환된 데이터를 이등분하여 적어도 하나의 제1 및 제2 초기치환 데이터를 출력하기 위한 초기 치환 수단;
    상기 제1 및 제2 초기치환 데이터를 수신하여 상기 제1 및 제2 초기치환 데이터의 i라운드(i는 자연수)의 곱변형을 수행하여 i라운드 곱변형된 데이터를 출력하기 위한 변형부; 및
    상기 i라운드 곱변형된 데이터를 수신하여 역초기치환을 수행하기 위한 역초기 치환 수단
    을 포함하고,
    상기 변형부는,
    제1 클럭에 응답하여 상기 제1 초기치환 데이터를 저장하기 위한 제1 왼쪽 레지스터;
    상기 제1 클럭을 1/3 주기만큼 지연시킨 제2 클럭에 응답하여 상기 제2 초기치환 데이터를 저장하기 위한 제1 오른쪽 레지스터;
    상기 제1 오른쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제1 곱변형 결과를 출력하기 위한 제1 곱변형 수단;
    상기 제2 클럭을 1/3 주기만큼 지연시킨 제3 클럭에 응답하여 상기 제1 곱변형결과를 저장하기 위한 제2 왼쪽 레지스터;
    상기 제2 왼쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제2 곱변형 결과를 출력하기 위한 제2 곱변형 수단;
    상기 제1 클럭에 응답하여 상기 제2 곱변형 결과를 저장하기 위한 제2 오른쪽 레지스터;
    상기 제2 오른쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제3 곱변형 결과를 출력하기 위한 제3 곱변형 수단;
    상기 제2 클럭에 응답하여 상기 제3 곱변형결과를 저장하기 위한 제3 왼쪽 레지스터;
    상기 제3 왼쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제4 곱변형 결과를 출력하기 위한 제4 곱변형 수단;
    상기 제3 클럭에 응답하여 상기 제4 곱변형 결과를 저장하기 위한 제3 오른쪽 레지스터;
    상기 제3 오른쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제5 곱변형 결과를 상기 제1 클럭에 응답하여 상기 제1 왼쪽 레지스터로 출력하기 위한 제5 곱변형 수단; 및
    상기 제1 왼쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제6 곱변형 결과를 상기 제2 클럭에 응답하여 상기 제1 오른쪽 레지스터로 출력하기 위한 제6 곱변형 수단
    을 포함하는 암호화 장치.
  2. 제 1 항에 있어서,
    상기 제1 곱변형 수단은,
    제1 보조키를 이용하여 상기 제1 오른쪽 레지스터에 저장된 데이터의 암호화 연산을 수행하기 위한 암호화 연산부; 및
    상기 제1 암호화 연산부로부터 출력된 데이터와 상기 제1 왼쪽 레지스터에 저장된 데이터의 배타적 논리합 연산을 수행하여 상기 제2 왼쪽 레지스터로 출력하기 위한 배타적 논리합 연산부
    를 포함하는 암호화 장치.
  3. 삭제
  4. 적어도 하나의 N비트(N은 짝수인 자연수)의 평문 데이터 블록의 초기 치환을 수행하여 초기치환된 데이터를 이등분하여 적어도 하나의 제1 및 제2 초기치환 데이터를 출력하기 위한 초기 치환 수단;
    상기 제1 및 제2 초기치환 데이터를 수신하여 상기 제1 및 제2 초기치환 데이터의 i라운드(i는 자연수)의 곱변형을 수행하여 i라운드 곱변형된 데이터를 출력하기 위한 변형부; 및
    상기 i라운드 곱변형된 데이터를 수신하여 역초기치환을 수행하기 위한 역초기 치환 수단
    을 포함하고,
    상기 변형부는,
    제1 클럭에 응답하여 상기 제1 초기치환 데이터를 저장하기 위한 제1 왼쪽 레지스터;
    상기 제1 클럭을 1/4 주기만큼 지연시킨 제2 클럭에 응답하여 상기 제2 초기치환 데이터를 저장하기 위한 제1 오른쪽 레지스터;
    상기 제1 오른쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제1 곱변형 결과를 출력하기 위한 제1 곱변형 수단;
    상기 제2 클럭을 1/4 주기만큼 지연시킨 제3 클럭에 응답하여 상기 제1 곱변형결과를 저장하기 위한 제2 왼쪽 레지스터;
    상기 제2 왼쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제2 곱변형 결과를 출력하기 위한 제2 곱변형 수단;
    상기 제3 클럭을 1/4 주기만큼 지연시킨 제4 클럭에 응답하여 상기 제2 곱변형 결과를 저장하기 위한 제2 오른쪽 레지스터;
    상기 제2 오른쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제3 곱변형 결과를 출력하기 위한 제3 곱변형 수단;
    상기 제1 클럭에 응답하여 상기 제3 곱변형결과를 저장하기 위한 제3 왼쪽 레지스터;
    상기 제3 왼쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제4 곱변형 결과를 출력하기 위한 제4 곱변형 수단;
    상기 제2 클럭에 응답하여 상기 제4 곱변형 결과를 저장하기 위한 제3 오른쪽 레지스터;
    상기 제3 오른쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제5 곱변형 결과를 출력하기 위한 제5 곱변형 수단;
    상기 제3 클럭에 응답하여 상기 제5 곱변형 결과를 저장하기 위한 제4 왼쪽 레지스터;
    상기 제4 왼쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제6 곱변형 결과를 출력하기 위한 제6 곱변형 수단;
    상기 제4 클럭에 응답하여 상기 제6 곱변형 결과를 저장하기 위한 제4 오른쪽 레지스터;
    상기 제4 왼쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제7 곱변형 결과를 상기 제1 클럭에 응답하여 상기 제1 왼쪽 레지스터로 출력하기 위한 제7 곱변형 수단; 및
    상기 제1 왼쪽 레지스터에 저장된 데이터의 곱변형을 수행하여 제7 곱변형 결과를 상기 제2 클럭에 응답하여 상기 제1 오른쪽 레지스터로 출력하기 위한 제8 곱변형 수단
    을 포함하는 암호화 장치.
  5. 제 4 항에 있어서,
    상기 제1 곱변형 수단은,
    제1 보조키를 이용하여 상기 제1 오른쪽 레지스터에 저장된 데이터의 암호화 연산을 수행하기 위한 암호화 연산부; 및
    상기 제1 암호화 연산부로부터 출력된 데이터와 상기 제1 왼쪽 레지스터에 저장된 데이터의 배타적 논리합 연산을 수행하여 상기 제2 왼쪽 레지스터로 출력하기 위한 배타적 논리합 연산부
    를 포함하는 암호화 장치.
  6. 삭제
  7. 삭제
KR10-2000-0028741A 2000-05-26 2000-05-26 데이터 암호화 표준 알고리즘을 이용한 암호화 장치 KR100384873B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR10-2000-0028741A KR100384873B1 (ko) 2000-05-26 2000-05-26 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
JP2001159588A JP2002032017A (ja) 2000-05-26 2001-05-28 データ暗号化標準アルゴリズムを利用した暗号化装置
TW090112933A TWI244273B (en) 2000-05-26 2001-05-29 Ciphering device using standard algorithm for ciphering data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2000-0028741A KR100384873B1 (ko) 2000-05-26 2000-05-26 데이터 암호화 표준 알고리즘을 이용한 암호화 장치

Publications (2)

Publication Number Publication Date
KR20010107319A KR20010107319A (ko) 2001-12-07
KR100384873B1 true KR100384873B1 (ko) 2003-05-22

Family

ID=19670517

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0028741A KR100384873B1 (ko) 2000-05-26 2000-05-26 데이터 암호화 표준 알고리즘을 이용한 암호화 장치

Country Status (3)

Country Link
JP (1) JP2002032017A (ko)
KR (1) KR100384873B1 (ko)
TW (1) TWI244273B (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317638A (en) * 1992-07-17 1994-05-31 International Business Machines Corporation Performance enhancement for ANSI X3.92 data encryption algorithm standard
EP0661843A2 (en) * 1993-12-31 1995-07-05 Alcatel Standard Electrica, S.A. Device for implentation of DECT encryption algorithm with reduced current consumption
KR19990021759A (ko) * 1997-08-30 1999-03-25 구자홍 디이에스형 암호화 방법 및 장치
US6324286B1 (en) * 1998-06-17 2001-11-27 Industrial Technology Research Institute DES cipher processor for full duplex interleaving encryption/decryption service
KR20010107089A (ko) * 2000-05-25 2001-12-07 박종섭 데이터 암호화 표준 알고리즘을 이용한 암호화 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317638A (en) * 1992-07-17 1994-05-31 International Business Machines Corporation Performance enhancement for ANSI X3.92 data encryption algorithm standard
EP0661843A2 (en) * 1993-12-31 1995-07-05 Alcatel Standard Electrica, S.A. Device for implentation of DECT encryption algorithm with reduced current consumption
KR19990021759A (ko) * 1997-08-30 1999-03-25 구자홍 디이에스형 암호화 방법 및 장치
US6324286B1 (en) * 1998-06-17 2001-11-27 Industrial Technology Research Institute DES cipher processor for full duplex interleaving encryption/decryption service
KR20010107089A (ko) * 2000-05-25 2001-12-07 박종섭 데이터 암호화 표준 알고리즘을 이용한 암호화 장치

Also Published As

Publication number Publication date
TWI244273B (en) 2005-11-21
JP2002032017A (ja) 2002-01-31
KR20010107319A (ko) 2001-12-07

Similar Documents

Publication Publication Date Title
KR100377176B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
KR100377175B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
KR100377172B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러
US20050213756A1 (en) Round key generation for aes rijndael block cipher
CA2486713A1 (en) Advanced encryption standard (aes) hardware cryptographic engine
KR100390821B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
EP1191738A2 (en) Methods and apparatus for implementing a cryptography engine
KR20050087271A (ko) 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치
KR100377173B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
KR100384873B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
WO2009090689A1 (ja) 暗号化装置、暗号化方法及びプログラム
KR20020087331A (ko) 부분 라운드간 파이프라인 기법을 이용한 AES Rijndael암호 및 복호 회로
JP2000075785A (ja) 高速暗号処理回路および処理方法
KR100190157B1 (ko) 암호화 장치 및 암호화 방법
KR100316025B1 (ko) 데이터 암호 표준 알고리즘을 이용한 암호 및 복호 장치
KR100418575B1 (ko) 암호블럭연쇄 방식의 디이에스 암호화 장치
KR20030087893A (ko) 라운드 키의 온라인 계산 기능을 갖는 모듈화 구조의 AESRijndael 라운드 키 생성 회로
KR20030037890A (ko) 디이에스 암호화 장치
Lim Efficient 8-cycle DES implementation
KR20020082540A (ko) 디이에스 암호화 장치
CN118157843A (zh) 就地执行认证解密优化的aes-gcm引擎
KR20010109626A (ko) 3중 데이터 암호화 표준 아키텍쳐를 구현한 암호화 장치
JPH06276187A (ja) 暗号装置
KR20050117268A (ko) 에이이에스 온라인 라운드 키 생성회로

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
LAPS Lapse due to unpaid annual fee