KR20020082540A - 디이에스 암호화 장치 - Google Patents

디이에스 암호화 장치 Download PDF

Info

Publication number
KR20020082540A
KR20020082540A KR1020010021973A KR20010021973A KR20020082540A KR 20020082540 A KR20020082540 A KR 20020082540A KR 1020010021973 A KR1020010021973 A KR 1020010021973A KR 20010021973 A KR20010021973 A KR 20010021973A KR 20020082540 A KR20020082540 A KR 20020082540A
Authority
KR
South Korea
Prior art keywords
output
register
exclusive
data
bit
Prior art date
Application number
KR1020010021973A
Other languages
English (en)
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 KR1020010021973A priority Critical patent/KR20020082540A/ko
Publication of KR20020082540A publication Critical patent/KR20020082540A/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/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)

Abstract

본 발명은 디이에스 암호화 장치에 관한 것으로 주기 T를 갖는 주기적인 신호인 마스터 클럭으로부터 T시간 동안 지연되어 생성된 4T 주기의 네 개의 게이트 클럭을 사용하여 레지스터에서 발생하는 스위칭 전력소모를 최소화하며, 16비트 버스를 갖는 시스템에서 매크로 파이프라인의 성능을 최대화하는 4싸이클로 동작하는 저전력 암호화 장치를 제공하기 위한 것이다.

Description

디이에스 암호화 장치{Apparatus for encryption of Data Encryption Standard}
본 발명은 암호화 장치에 관한 것으로, 특히 데이터 암호화 표준 알고리즘을 이용한 4싸이클로 동작하는 암호화 장치에 관한 것이다.
일반적으로 데이터 암호화 표준(DES : Data Encryption Standard, 이하 DES라 함) 알고리즘은 가장 널리 쓰이고 있는 암호화 방식으로 네트워킹 사용이 증가함에 따라 그 중요성을 더해 가고 있다. 특히, 보안 인터넷 응용(Secure internet applicatuon)이나 원격 접근 서버(Remote access server)나 케이블 모뎀(Cable modem)과 위성용 모뎀(Satellite modem) 등의 분야에서 많이 이용되고 있다.
DES는 기본적으로 64비트 블럭의 입력 및 출력을 가지는 64비트 블럭 암호이며, 64비트의 키 블럭 중 56비트가 암호화 및 복호화에 사용되고, 나머지 8비트는 패리티 검사용으로 사용된다. 즉, 64비트의 평문(Plain Text) 블럭과 56비트의 키(Key)를 입력으로 해서 64비트의 암호문(Cipher Text) 블럭을 출력하는 암호화 방식이다.
DES를 실현시키는 중요한 기법은 치환(P-Box), 대치(S-Box) 그리고 보조키(Subkey)를 발생시키는 키 스케쥴 등이 있다.
데이터 암호화부의 내부는 16라운드의 반복연산을 수행하는 형태로 되어 있고 입력부의 초기 치환(Initial Permutation; IP)과 출력부의 역초기 치환(IP-1)으로 구성되어 있다.
이하, 종래기술의 일예를 도면을 참조하여 상세히 설명한다.
<제1 종래기술>
도 1은 제1 종래기술에 따른 DES 알고리즘을 나타내는 구성도이다.
도 1을 참조하면, DES 알고리즘은 먼저 64비트의 평문(Plain Text) 블럭을 입력받아 초기 치환(IP)에 의해 치환을 수행하는 초기치환부(110)와, 다음에 상기치환부(110)의 64비트의 블럭을 두개의 32비트 블럭으로 나누어 왼쪽레지스터(L0)와 오른쪽레지스터(R0)에 저장하고 사이퍼(Cipher) 함수 f로 수행되는 16라운드의 곱 변형(Product Transformation)과 왼쪽레지스터(Li)와 오른쪽레지스터(Ri)를 매 라운드마다 교환하여 16라운드의 블록 변형(Block Transformation)을 수행하는 변형부(120)와, 16라운드에 걸친 변형이 끝난 후 역초기 치환(IP-1)을 거쳐서 암호화된 암호문(Cipher Text)을 출력하는 역초기치환부(130)로 구성되어 있다.
상기 변형부(120)에서의 곱 변형은 상기 초기치환부(110)에서 나뉘어진 32비트의 블럭 중에서 오른쪽레지스터(Ri)에 저장된 데이터를 키 스케쥴(Key Schedule)에 의해서 생성된 보조키(Subkey) Ki와 함께 입력시켜서 암호화 연산을 수행하는 사이퍼 함수부(f)(121)와, 상기 사이퍼 함수 f의 결과를 왼쪽레지스터(Li)와 함께 배타적 논리합하는 배타적 논리합 연산부(122)로 구성되어 있다.
상기 배타적 논리합 연산부(122)의 32비트의 데이터는 다음 라운드의 연산을 위해 오른쪽레지스터(Ri+1)에 저장되고 상기 오른쪽레지스터(Ri)에 저장된 32비트의 데이터는 다음 라운드의 왼쪽레지스터(Li+1)에 교환(Swapping)되어 저장된다. 이러한 1라운드의 연산이 반복되어 16라운드가 수행되는 것이다.
상기 초기치환부(110)를 거친 64비트의 평문(Plain Text) 블럭을 둘로 나뉘어 왼쪽레지스터(L0)와 오른쪽레지스터(R0)에 입력하면 16회의 각 라운드는 다음 수학식1과 수학식2로 표현가능하다.
Li= Ri-1i=1,2,......16
f(Ri-1, Ki) i=1,2,......16
도 2는 상기 DES 알고리즘의 중간 계산 결과들을 도시한 도면이다.
상기 도 2를 참조하면, 왼쪽 및 오른쪽레지스터의 초기 값(L0, R0)을 시작으로 해서 사이퍼함수 f와 배타적 논리합 연산부(122)를 거친 계산 값들이 도시되어 있다. 도시된 바와 같이 DES가 계산하는 값들은 L1, L2.... L16과 R1, R2.... R16인데 Li= Ri-1이므로, 주어진 L0와 R0로부터 DES 코어가 실질적으로 새로 계산하는 값들은 R1, R2.... R16임을 알 수 있다. 최종 결과는 L16과 R16으로써 R15와 R16을 출력하면 된다.
도 3은 보조키(Subkey) Ki를 생성하는 보조키 발생부를 도시한 구성도이다.
상기 도 3을 참조하면, 키 스케쥴은 56비트의 키(Key)를 입력받아서 치환하는 제1 치환선택부(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비트의 보조키(Subkey) Ki를 출력하는 제2치환선택부(PC2 : Permutation Choice 2)(220)로 구성되는 바, 16라운드 동안 Ci와 Di는 28자리 수만큼 쉬프트가 되어 C0와 C16그리고 D0와 D16은 서로 같은 데이터가 되며, 도 4에 이러한 각 라운드마다 쉬프트하는 비트수가 나타나 있다.
도 5는 상기 도 1의 기본연산부와 한 개의 라운드를 하드웨어로 구현한 DES 코어 아키텍쳐의 블럭도이다.
상기 도 5를 참조하면, 사이퍼 함수 f(121)는 오른쪽레지스터에 저장된 32비트의 입력(R(i-1)) 중 몇개를 복사하여 48비트로 치환하는 확장 치환부(Expansion Permutation)(300)와, 상기 확장 치환부(300)의 치환 결과를 각 라운드에서 키 스케쥴(Key Schedule)에 의해서 생성된 48비트의 보조키(Subkey)와 배타적 논리합하는 배타적 논리합 연산부(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)로 저장된다. 한편, 오른쪽레지스터에 저장되어 있던 32비트의 블럭(R(i-1))은 다음 라운드의 왼쪽 레지스터에 L(i)로 저장된다.
그리고, 상기 S-Box 치환부(320)는 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의 기억장치가 필요하다. 따라서 전체적으로 칩에서 차지하는 면적이 상대적으로 크며, 상기 변형부(120)에서 곱변형을 수행할 때 오른쪽레지스터에 저장된 32비트의 데이터 블럭을 교환(Swapping)하여 왼쪽레지스터에 저장하므로써 평문을 DES 암호화할 때 항상 16 클럭 사이클이 걸리는 문제점이 발생한다.
<제2 종래기술>
상기와 같은 제1 종래기술의 문제점을 해결하기 위해, 다음과 같은 원리를 이용하여 소요되는 클럭 수 즉, 레이턴시를 줄여 스위칭에 의한 전력소모를 감소시킬 수 있다.
예컨대, 상기 제1 수학식을 제2 수학식에 대입하고 Ri-1= Li임을 가정하면 DES 코어의 계산과정을 다음 수학식3으로 나타낼 수 있다.
f( Ri-1, Ki) i=1,2....16, Ri-1= Li
도 6은 서로 반전된 클럭을 사용하는 제2 종래기술에 따른 DES 아키텍쳐로서, 상기 제3 수학식의 연산을 수행한다.
도 6을 참조하면, 제2 종래기술에 따른 DES 알고리즘은, 초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 하나인 b0블럭이 제2 다중화부(602)를 통한 출력인 32비트의 데이터를 키 스케쥴(Key Schedule)로부터 생성된 보조키(KA)를 입력받아, 사이퍼 함수 fA(650)에 의해서 암호화 변형하며, 상기 사이퍼 함수 fA(650)에 의해 변형된 32비트의 데이터와, 초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 다른 하나인 a0블럭이 제1 다중화부(601)를 통한 출력을 제1 배타적 논리합 연산부(660)를 통해 연산을 수행한 후, 제1 클럭(CLK1)에 의해 제1 왼쪽레지스터(A0)(610)에 저장한다.
이어서, 상기 제1 왼쪽레지스터(A0)(610)에 저장된 데이타는 보조키(KB)를 입력받아, 사이퍼 함수 fB(651)에 의해서 암호화 변형되어 상기 b0블럭과 제2 배타적 논리합 연산부(661)를 통해 연산된 후, 제2 클럭(CLK2)에 의해 제1 오른쪽레지스터(620)에 저장된다.
상기와 같은 과정을 통해 제3 배타적 논리합 연산부(662)와 사이퍼 함수 fC(652) 및 제2 왼쪽레지스터(A1)(630)를 통한 반복 과정과 제4 배타적 논리합 연산부(663)와 사이퍼 함수 fD(653) 및 제2 오른쪽지스터(B1)(640)를 통한 반복과정을 거치게 된다.
여기서, 상기 제2 클럭(CLK2)은 상기 제1 클럭(CLK1)을 반전시킨 것으로 상기 제1 클럭(CLK1)의 주기의 반만큼 지연시킨 것으로 볼 수 있다. 즉, 상기 제1 클럭(CLK1)이 상승할 때 상기 왼쪽레지스터 A0(610)와 A1(630)에 새로운 값이 저장되고 상기 제1 클럭(CLK1)이 하강할 때 상기 오른쪽레지스터 B0(620)와 B1(640)에 새로운 값이 저장된다.
요컨대, 서로 반전된 클럭을 사용하여 데이터를 로드하기 때문에, 한 레지스터가 로드된 값을 유지하는 한 주기 중간에 다른 레지스터가 새로운 값을 로드하며, 이에 따라 한 주기 동안 한 레지스터는 한 개의 값을 유지하며 다른 레지스터에서 서로 다른 값을 반 주기씩 액세스가 가능하다.
순열 Ri(i=1,2,....,16) 값들을 상기 네 개의 레지스터에 교대로 저장하면, 모든 인접한 Ri값들을 반 주기 동안 두 개의 인접한 인접한 에지스터로부터 액세스가 가능하다.
상기 제3 수학식에서 새로이 계산되는 Ri 값들을 상기 네 개의 레지스터에 교대로 저장하려면, 이전에 계산된 Ri-1과 Ri-2값들을 두 레지스터에서 반주기 동안 액세스가 가능하므로 이 반주기 동안 사이퍼 함수 연산이 수행될 수 있다. 즉, 한 주기 동안 두 개의 사이퍼 함수 연산이 반주기 씩 시분할되며, 두 개의 시분할된 사이퍼 함수는 한 개의 S-Box 치환부 만을 사용하여 구현할 수 있다.
도 7은 도 6에 따른 DES 아키텍쳐의 동작 순서를 나타내는 타이밍도로서, 파이프라인을 이용하지 않는 8싸이클 DES 아키텍쳐에 관한 것이다.
도 7을 참조하면, 32비트의 블럭 a0와 b0는 초기 치환을 거친 64비트의 평문 블럭이 32비트의 두블럭으로 나뉘어진 것이고, 32비트의 블럭 a0는 왼쪽변수(L0)가 되며 32비트의 블럭 b0는 오른쪽변수(R0)가 된다. 그리고 DES 코어가 계산하는 값을 b1, b2....b16(bi=Ri)라고 하고 키 스케쥴러(Ker Scheduler)가 주기적으로 보조키 Ki를 사이퍼 함수 f에 입력해주도록 제어기를 만들면 32비트 블럭 bi의 값을 계산하는 과정은 다음과 같다.
먼저, t0에서 b1값(b1= a0 fA(b0,K1))을 계산하여 제1 클럭(CLK1)이 상승할때, 레지스터 A0(610)에 저장한다. 이어서, t1에서 b2값(b2= b0 f(b1, K1))을 제2 클럭(CLK2)이 상승할 때, 레지스터 B0(620)에 저장한다. t-1에서부터 b1값(b1= a0 f(b0,K1))을 계산하기 시작해서 t0에서 계산된 값을 레지스터 A0(610)에 저장한다. 이 때, 상기 레지스터 A0(610)에 입력된 값 b1값(b1= a0 fA(b0,K1))은 t2까지만 유지가 되며, t1-t2구간에서 b2값을 계산하는데 사용할 수 있다. 이 것은 반전된 상기 제1클럭(CLK1)과 제2클럭(CLK2)에 의해서 레지스터 A1(630)과 B0(620)가 새로운 값을 저장하기 때문에 해결할 수 있다. 즉, 상기 레지스터 A1(630)이 새로운 데이터를 저장할 수 있는 시간은 t0, t2, t4....이고, 레지스터 B0(620)에 새로운 데이터가 입력되는 시간은 t1, t3, t5....이다. 마찬가지로 t1에서 상기 레지스터 B0(620)에 저장된 b2값(b2= b0 f(b1, K2))과 t2에서 레지스터 A1에 저장된 값 b6가 t2-t3구간에서 유지되기 때문에 t3에서 상기 레지스터 B1(640)에 상기 제2 클럭(CLK2)를 사용하여 계산된 b4값을 저장할 수 있다. 이와 같은 방식으로 상기 제1 클럭(CLK1)이 상승할 때 t4, t8, t12에서 계산된 b7, b11, b15값이 상기 레지스터 A0(610)에 저장되고 t6, t10, t14에서 새로운 b5, b9, b13의 값이 레지스터 A1(630)에 저장된다. 또한 상기 제2 클럭(CLK2)이 상승할 때 레지스터 B0(620)에는 b6, b10, b14값이 t5, t9, t13에서 저장되며, 레지스터 B1(640)에는 b8, b12, b16의 값이 t7, t11,t15에서 저장된다.
도 8은 도 6에 따른 DES 아키텍쳐의 동작 순서를 나타내는 타이밍도로서, 파이프라인을 이용하는 8싸이클 DES 아키텍쳐에 관한 것이다.
도 8을 참조하면, 종래기술의 파이프라인 동작을 나타내는 타이밍도는 파이프라인 구조를 이용하여 두개의 평문 블럭들을 8클럭 사이클동안 동시에 처리할 수 있음을 보여준다. 또한 도 7에서 비어 있는 부분에 새로운 평문 블럭 c0와 d0를 t0와 t1에서 레지스터 A0(610)와 B0(620)에 입력함으로써 블럭 bi값들을 계산하는 동안 블럭 di값들을 계산할 수 있음을 보여준다. 이 때 t0-t1, t1-t2, t2-t3.... 구간마다 새로운 평문 블럭 bi와 di값을 암호화 하기위해 사이퍼 함수 f가 두 개씩 동시에 수행된다. 따라서 사이퍼 함수를 구성하는 S-Box들은 한 개씩 추가로 구현할 필요가 있다.
마찬가지로, 4개의 평문 블럭을 8클럭 사이클 동안 동시에 처리하기 위하여, 8 단의 파이프라인 DES 아키텍쳐에서는 각 시간 구간마다 사이퍼 함수 f가 네 개씩 동시에 수행된다. 따라서 사이퍼 함수를 구성하는 S-Box들은 네 개씩 추가로 구현할 필요가 있다.
상기한 바와 같이 이루어지는 제2 종래기술에 따른 DES 아키텍쳐는 제1 종래기술의 문제점인 DES 코어에서 16라운드의 연산을 반복 수행하기 때문에 16클럭 사이클이 걸리는 문제점을 8클럭 사이클로 줄이므로써 시간소모를 줄일 수 있다.
그러나, 상기 도 8에 도시된 바와 같이 파이프라인을 사용하는 경우 각 시간 구간 (ti-ti+1)마다 사이퍼 함수가 두 개씩 동시에 수행되어서 면적을 상대적으로 많이 차지하는 S-Box 치환부가 두 개 필요하게 되어 전체적인 회로의 면적이 증가하는 문제점이 발생하게 된다.
또한, 상기 도 8에 도시된 바와 같이 파이프라인을 사용하지 않는 경우 네 개의 다른 레지스터들은 서로 반전된 클럭에 의하여 구동되기 때문에 한 주기 후에는 항상 데이터를 로드하게 되어 전력소모가 증가하게 되는 문제점이 발생하게 된다.
상기한 바와 같은 종래기술은 다음과 같은 참고문헌에 도시되어 있다.
<참고문헌>
문헌 1. H. Eberle, "A High-Speed DES Implementation for Network Applications", Advances in Cryptology - CRYPTO '92 Proceedings, Springer-Verlag, pp. 521-539, 1993
문헌 2. I. Verbauwhede, F. Hoonaert, J. Vandewalle, "Security and Performance Optimization of a New DES Encryption Chip", IEEE Journal of Solid-State Circuits, Vol. 23, No. 23, pp. 647-656, 1988
문헌 3. 데이터 암호화 표준 알고리즘을 이용한 암호화 장치, 임영원, 출원 중(2000-028311)
문헌 4. Y.W. Lim, "Efficient 8-Cycle DES Implementation", AP-ASIC, pp.175-178, 2000
본 발명은 상기와 같은 종래 기술의 문제점을 해결하기 위한 것으로써, 스위칭에 의한 전력소모가 디자인 전체 전력소모의 70% 이상을 차지하는 바, 이러한 스위칭 전력소모는 각 트랜지스터의 부하 캐패시턴스와 토글 속도에 비례하므로, 상기 토글 속도 및 횟수를 감소시키면 스위칭 전력소모를 줄일 수 있는 기술적 바탕에 기초한 클럭 게이팅 기술을 이용함으로써, 네 개의 서로 다른 위상을 갖는 게이트화된 클럭들을 생성시켜서 한 개의 평문 블럭을 네 싸이클로 동작하는 DES 암호화 장치를 제공하는데 그 목적이 있다.
도 1은 제1 종래기술에 따른 DES 알고리즘을 나타내는 구성도,
도 2는 도 1의 DES 알고리즘의 중간 계산 결과들을 도시한 도표,
도 3은 보조키(Subkey) Ki를 생성하는 보조키 발생부를 도시한 구성도,
도 4는 도 3에 따른 각 라운드마다 쉬프트하는 비트수를 도시한 도표,
도 5는 도 1의 기본연산부와 한 개의 라운드를 하드웨어로 구현한 DES 코어 아키텍쳐의 구성도,
도 6은 서로 반전된 클럭을 사용하는 제2 종래기술에 따른 DES 아키텍쳐를 도시한 구성도,
도 7은 도 6에 따른 DES 아키텍쳐의 단순 동작 순서를 나타내는 타이밍도,
도 8은 도 6에 따른 DES 아키텍쳐의 파이프 라인 동작 순서를 나타내는 타이밍도,
도 9는 본 발명의 일실시예에 따른 4 싸이클 DES 아키텍쳐를 도시한 구성도,
도 10은 도 9에 따른 4 싸이클 DES 아키텍쳐의 동작 순서를 나타내는 타이밍도,
도 11은 도 9를 이용한 3단계 매크로 파이프라인의 구성도,
도 12는 본 발명의 다른 실시예에 따른 파이프라인 구조의 8싸이클 DES 아키텍쳐를 도시한 구성도,
도 13은 도 12에 따른 8싸이클 DES 아키텍쳐의 동작 순서를 나타내는 타이밍도.
* 도면의 주요 부분에 대한 부호의 설명 *
901, 902 : 다중화부
910, 930 : 왼쪽레지스터
920, 940 : 오른쪽레지스터
950 ∼ 953 : 사이퍼 함수
960 ∼ 963 : 배타적 논리합 연산부
상기 목적을 달성하기 위하여 본 발명의 DES 암호화 장치는, 주기 T를 갖는 주기적인 신호인 마스터 클럭으로부터 T시간 동안 지연되어 생성된 4T 주기의 제1 내지 제4 게이트 클럭; 초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 하나인 b0블럭을 다중화하는 제1 다중화부; 상기 제1 다중화부를 통한 출력인 32비트의 데이터를 키 스케쥴로부터 생성된 제1 보조키를 입력받아, 암호화 변형하는 제1사이퍼 함수; 초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 다른 하나인 a0블럭을 다중화하는 제2다중화부; 상기 제1 사이퍼 함수에 의해 변형된 32비트의 데이터와, 상기 제2 다중화부를 통한 출력을 연산하는 제1 배타적 논리합 연산부; 상기 제1 게이트 클럭에 의해 상기 제1 배타적 논리합 연산부를 통한 데이타를 저장하는 제1 왼쪽레지스터; 상기 제1 왼쪽레지스터에 저장된 데이타를 제2 보조키를 입력받아, 암호화 변형하는 제2 사이퍼 함수; 상기 제2 사이퍼 함수의 출력과 상기 제1 다중화부의 출력을 연산하는 제2 배타적 논리합 연산부; 상기 제2 배타적 논리합 연산부에 의한 결과를 상기 제2 게이트 클럭에 의해 저장하는 제1 오른쪽레지스터; 상기 제1 오른쪽레지스터에 저장된 데이타를 제3 보조키를 입력받아 암호화 변형하는 제3 사이퍼 함수; 상기 제3 사이퍼 함수를 통한 결과와 상기 제1 왼쪽레지스터에 저장된 데이타를 연산하는 제3 배타적 논리합 연산부; 상기 제3 배타적 논리합 연산부를 통한 연산 결과를 상기 제3 게이트 클럭에 의해 저장하며 피드백 루프를 형성하여 자신의 데이타를 상기 제1 다중화부로 출력하는 제2 왼쪽레지스터; 상기 제2 왼쪽레지스터의 데이타를 제4 보조키를 입력받아 암호화 변형하는 제4 사이퍼 함수; 상기 제4 사이퍼 함수의 출력과 상기 제1 오른쪽 레지스터에 저장된 데이타를 연산하는 제4 배타적 논리합 연산부; 및 상기 제4 배타적 논리합 연산부의 연산 결과를 상기 제4 게이트 클럭에 의해 저장하며, 다른 피드백 루프를 형성하여 자신의 데이타를 상기 제2 다중화부로 출력하는 제2 오른쪽레지스터를 포함하여 이루어진다.
또한, 상기 목적을 달성하기 위하여 본 발명의 DES 암호화 장치는, 주기 T를 갖는 주기적인 신호인 마스터 클럭으로부터 T시간 동안 지연되어 생성된 2T 주기의 두쌍으로 구성된 제1 내지 제4 게이트 클럭; 초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 하나인 b0블럭을 다중화하는 제1 다중화부; 상기 제1 다중화부를 통한 출력인 32비트의 데이터를 키 스케쥴로부터 생성된 제1 보조키를 입력받아, 암호화 변형하는 제1 사이퍼 함수; 초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 다른 하나인 a0블럭을 다중화하는 제2 다중화부; 상기 제1 사이퍼 함수에 의해 변형된 32비트의 데이터와, 상기 제2 다중화부를 통한 출력을 연산하는 제1 배타적 논리합 연산부; 상기 제1 게이트 클럭에 의해 상기 제1 배타적 논리합 연산부를 통한 데이타를 상기 제1 게이트 클럭에 의해 저장하는 제1 왼쪽레지스터; 상기 제1 왼쪽레지스터에 저장된 데이타를 제2 보조키를 입력받아, 암호화 변형하는 제2 사이퍼 함수; 상기 제2 사이퍼 함수의 출력과 상기 제1 다중화부의 출력을 연산하는 제2 배타적 논리합 연산부; 상기 제2 배타적 논리합 연산부에 의한 결과를 상기 제2 게이트 클럭에 의해 저장하는 제1 오른쪽레지스터; 상기 제1 오른쪽레지스터에 저장된 데이타를 제3 보조키를 입력받아 암호화 변형하는 제3 사이퍼 함수; 상기 제3 사이퍼 함수를 통한 결과와 상기 제1 왼쪽레지스터에 저장된 데이타를 연산하는 제3 배타적 논리합 연산부; 상기 제3 배타적 논리합 연산부를 통한 연산 결과를 상기 제3 게이트 클럭)에 의해 저장하며 피드백 루프를 형성하여 자신의 데이타를 상기 제1 다중화부로 출력하는 제2 왼쪽레지스터; 상기 제2 왼쪽레지스터의 데이타를 제4 보조키를 입력받아 암호화 변형하는 제4 사이퍼 함수와, 상기 제4 사이퍼 함수의 출력과 상기 제1 오른쪽 레지스터에 저장된 데이타를 연산하는 제4 배타적 논리합 연산부; 및 상기 제4 배타적 논리합 연산부의 연산 결과를 상기 제4 게이트 클럭에 의해 저장하며, 다른 피드백 루프를 형성하여 자신의 데이타를 상기 제2 다중화부로 출력하는 제2 오른쪽레지스터를 포함하여 이루어지는 파이프라인 구조를 이용하여 두 개의 평문 블럭을 동시에 암호화할 수 있는 디이에스 암호화 장치를 제공한다.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부한 도면을 참조하여 설명하기로 한다.
본 발명은 상기 제3 수학식에 의하여 DES 암호화를 수행하는 바, 새로운 Ri를 연산하는데 걸리는 시간을 T라고 할 때, 종래에는 주기가 2T인 클럭을 사용하였으나, 본 발명에서는 주기가 T인 마스터 클럭으로부터 서로 T시간 동안 지연되어 생성된 4T의 주기 값을 갖는 네 개의 게이트화된 클럭을 사용하여 네 개의 레지스터들이 각각 구동되는 특징을 갖는다.
도 9는 본 발명의 일실시예에 따른 4 싸이클 DES 아키텍쳐를 도시한 구성도이다.
도 9를 참조하면, 본 발명의 DES 암호화 장치는, 주기 T를 갖는 주기적인 신호인 마스터 클럭으로부터 T시간 동안 지연되어 생성된 4T 주기의 제1 내지 제4 게이트 클럭(EN_CLK1 ∼ EN_CLK4)과, 초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 하나인 b0블럭을 다중화하는 제1 다중화부(901)과, 상기 제1 다중화부(901)를 통한 출력인 32비트의 데이터를 키 스케쥴(Key Schedule)로부터 생성된 보조키(KA)를 입력받아, 암호화 변형하는 사이퍼 함수 fA(950)와, 초기 치환부를 거친 64비트의 평문(Plain Text) 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 다른 하나인 a0블럭을 다중화하는 제2 다중화부(902)와, 상기 사이퍼 함수 fA(950)에 의해 변형된 32비트의 데이터와, 상기 제2 다중화부(902)를 통한 출력을 연산하는 제1 배타적 논리합 연산부(960)와, 상기 제1 게이트 클럭(EN_CLK1)에 의해 상기 제1 배타적 논리합 연산부(960)를 통한 데이타를 저장하는 제1 왼쪽레지스터(A0)(910)와, 상기 제1 왼쪽레지스터(A0)(910)에 저장된 데이타를 보조키(KB)를 입력받아, 암호화 변형하는 사이퍼 함수 fB(951)와, 상기 사이퍼 함수 fB(951)의 출력과 상기 제1 다중화부(901)의 출력을 연산하는 제2 배타적 논리합 연산부(961)와, 상기 제2 배타적 논리합 연산부(961)에 의한 결과를 상기 제2 게이트 클럭(EN_CLK2)에 의해 저장하는 제1 오른쪽레지스터(920)와, 상기 제1 오른쪽레지스터(B0)(920)에 저장된 데이타를 보조키(KC)를 입력받아 암호화 변형하는 사이퍼 함수 fC(952)와, 상기 사이퍼 함수 fC(952)를 통한 결과와 상기 제1 왼쪽레지스터(A0)(910)에 저장된 데이타를 연산하는 제3 배타적 논리합 연산부(962)와, 상기 제3 배타적 논리합연산부(962)를 통한 연산 결과를 상기 제3 게이트 클럭(EN_CLK3)에 의해 저장하며 피드백 루프를 형성하여 자신의 데이타를 상기 제1 다중화부(902)로 출력하는 제2 왼쪽레지스터(A1)(930)와, 상기 제2 왼쪽레지스터(A1)(930)의 데이타를 보조키(KD)를 입력받아 암호화 변형하는 사이퍼 함수 fD(953)와, 상기 사이퍼 함수 fD(953)의 출력과 상기 제1 오른쪽 레지스터(961)에 저장된 데이타를 연산하는 제4 배타적 논리합 연산부(963) 및 상기 제4 배타적 논리합 연산부(963)의 연산 결과를 상기 제4 게이트 클럭(EN_CLK4)에 의해 저장하며, 다른 피드백 루프를 형성하여 자신의 데이타를 상기 제1 다중화부(901)로 출력하는 제2 오른쪽레지스터(B1)(940)를 구비하여 이루어진다.
상기한 구성을 갖는 DES 암호화 장치의 동작을 도 10을 참조하여 상세히 설명한다.
상기 제3 수학식에서 Ri를 연산하는데 걸리는 시간을 T라 할 때, 주기가 T인 마스터 클럭으로부터 FSM(Finite State Machine) 또는 카운터를 이용하여 상기 도 7과 같이 생성한 서로 다른 T시간 동안 지연된 4T 주기 값을 갖는 네 개의 게이트화된 클럭(EN_CLK1 ∼ EN_CLK4)을 사용하여 네 개의 레지스터(910 ∼ 940)를 각각 로드한다.
a0와 b0를 초기 치환 IP를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉜 것을 나타낸다고 하면, a0= L0이고, b0= R0가 된다. 그리고, 16라운드의 DES알고리즘이 연산하는 값을 b1,b2,...,b16(bi=Ri)라고 한다.
또한, 키 스케쥴러가 상기 bi를 계산하기 전에 주기적으로 보조키 Ki를 사이퍼 함수 f에 입력해 주도록 컨트롤러를 만들면, bi값이 계산되는 과정은 다음과 같다.
먼저, 도 10에 도시된 바와 같이, 입력 버퍼레지스터(도시하지 않음)로부터 a0값을 시간 구간 [t-1, t0]에서 액세스 가능하고, b0값을 시간 구간 [t-1, t0]에서 액세스 가능하면, 시간 t-1에서부터 b1값(b1= a0 f(b0, K1))을 계산하기 시작해서 시간 t0에 계산된 값을 제1 왼쪽레지스터(A0)(910)에 게이트화된 제1 클럭(EN_CLK1)을 이용하여 저장한다.
이어서, 시간 구간 [t0, t1]에서는, 상기 입력 버퍼레지스터(도시하지 않음)로부터 b0값을 그리고, 제1 오른쪽레지스터(B0)(920)로부터 상기 b1값(b1= a0 f(b0, K1))을 액세스할 수 있으므로, 시간 t0에서부터 b2값(b2= b0 f(b1, K2))을 계산하기 시작해서 시간 t1에 계산된 값을 상기 제1 오른쪽레지스터(B0)(920)에 게이트화된 제2 클럭(EN_CLK2)을 이용하여 저장한다.
다음으로, 시간 구간 [t1, t2]에서는, 상기 제1 왼쪽레지스터(A0)(910)로부터의 상기 b1 값(b1= a0 f(b0, K1))과 상기 제1 오른쪽레지스터(B0)(920)로부터의상기 b2값(b2= b0 f(b1, K2))을 각각 액세스할 수 있으므로, 시간 t1에서부터 b3값(b3 = b1 f(b2, K3))을 계산하기 시작해서 시간 t2에 계산된 값을 제2 왼쪽레지스터(A1)(930)에 게이트화된 제3 클럭(EN_CLK3)을 사용하여 저장한다.
다음으로, 시간 구간 [t2, t3]에서는, 상기 제1 오른쪽레지스터(B0)(920)로부터의 상기 b2값(b2= b0 f(b1, k2))과 상기 제2 왼쪽레지스터(A1)(930)로부터의 상기 b3값(b3= b1 f(b2, k3))을 각각 액세스할 수 있으므로, 시간 t2에서부터 b4값(b4= b2 f(b3, k4))을 계산하기 시작해서 시간 t3에 계산된 값을 제2 오른쪽레지스터(B1)(940)에 게이트화된 제4 클럭(EN_CLK4)을 사용하여 저장한다.
즉, 상기와 같이 4싸이클을 반복 연산함으로써 16라운드의 DES 암호화 연산을 수행하는 바, 두 개의 다중화부(901, 902)에 의하여, 레지스터 A0(910)와 B0(920)는 입력 데이터를 첫번째 싸이클에서는 a0와 b0값을 입력 버퍼레지스터(도시하지 않음)에서 액세스하지만, 나머지 세 싸이클에서는 b3, b7, b11과 b4, b8, b12값들을 레지스터 A1(930)과 B1(940)에서 각각 액세스한다.
한편, 사이퍼 함수 f는 롬이나 PLA같은 기억장치로 구현된 S-Box를 필요로 한다.
하지만, 본 발명의 사이퍼 함수 (fA∼ fD)(950 ∼ 953)는 t1-t2, t2-t3, t3-t4,...구간에서 액세스가 가능하면 된다. 따라서, 면적을 크게 차지하는 8 개의 S-Box들을 복수 개로 구현할 필요없이 한 개씩만으로 구현이 가능하다.
단, 확장지환과 P-Box 치환을 구현하기 위한 와이어링(Wiring)과 각 라운드마다 생성된 서브키와 배타적 논리합 연산을 위한 연산부가 추가로 필요하다.
또한, Li값을 저장하는데 필요한 32비트의 레지스터를 사용하지 않아 면적 증가를 최소로 하였다.
도 11은 상기 도 9를 이용한 3단계 매크로 파이프라인의 구성도로서, 64비트의 데이터를 DES 코어에 입출력하기 위해 소요되는 레이턴시를 숨기는 효과가 있다.
도 11을 참조하면, 16비트의 입출력(I/O) 버스를 갖는 시스템에서 데이터는 한 워드(16비트)씩 입출력되기 때문에, 4개의 워드를 수집하는 입력과정에 64비트의 입력 버퍼레지스터(Input Buffer Register; 이하 IBR이라 함, 110)와, 64비트의 출력을 한 워드씩 분배하는 출력과정에 64비트의 출력 버퍼레지스터(Output Buffer Register; 이하 OBR이라 함, 111)를 이용하여 입력과정과 DES 연산과정 및 출력과정의 3단계 매크로 파이프라인으로 입출력 과정의 레이턴시를 숨길 수 있다.
상기 IBR(110)과 OBR(111)은 모두 4개의 워드 단위의 쉬프트레지스터(Word0 ∼ Word3)로 구성되며, 버스로부터 한 개의 워드를 입출력할 때 쉬프트되는 구조로 이루어진다.
도 12는 본 발명의 다른 실시예에 따른 파이프라인 구조의 8싸이클 DES 아키텍쳐를 도시한 구성도이다.
도 12를 참조하면, 주기 T를 갖는 주기적인 신호인 마스터 클럭으로부터 T시간 동안 지연되어 생성된 2T 주기의 두쌍으로 구성된 제1 내지 제4 게이트 클럭(EN_CLK1 ∼ EN_CLK4)과, 초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 하나인 b0블럭을 다중화하는 제1 다중화부(1201)과, 상기 제1 다중화부(1201)를 통한 출력인 32비트의 데이터를 키 스케쥴(Key Schedule)로부터 생성된 보조키(KA)를 입력받아, 암호화 변형하는 사이퍼 함수 fA(1250)와, 초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 다른 하나인 a0블럭을 다중화하는 제2 다중화부(1202)와, 상기 사이퍼 함수 fA(1250)에 의해 변형된 32비트의 데이터와, 상기 제2 다중화부(1202)를 통한 출력을 연산하는 제1 배타적 논리합 연산부(1260)와, 상기 제1 클럭(EN_CLK1)에 의해 상기 제1 배타적 논리합 연산부(1260)를 통한 데이타를 저장하는 제1 왼쪽레지스터(A0)(1210)와, 상기 제1 왼쪽레지스터(A0)(1210)에 저장된 데이타를 보조키(KB)를 입력받아, 암호화 변형하는 사이퍼 함수 fB(1251)와, 상기 사이퍼 함수 fB(1251)의 출력과 상기 제1 다중화부(1201)의 출력을 연산하는 제2 배타적 논리합 연산부(1261)와, 상기 제2 배타적 논리합 연산부(1261)에 의한 결과를 상기 제2 클럭(EN_CLK2)에 의해 저장하는 제1 오른쪽레지스터(1220)와, 상기 제1 오른쪽레지스터(B0)(1220)에 저장된 데이타를 보조키(KB)를 입력받아 암호화 변형하는 사이퍼 함수 fC(1252)와, 상기 사이퍼 함수 fC(1252)를 통한 결과와 상기 제1 왼쪽레지스터(A0)(1210)에 저장된 데이타를 연산하는 제3 배타적 논리합 연산부(1262)와, 상기 제3 배타적 논리합 연산부(1262)를 통한 연산 결과를 상기 제3 클럭(EN_CLK3)에 의해 저장하며 피드백 루프를 형성하여 자신의 데이타를 상기 제1 다중화부(1202)로 출력하는 제2 왼쪽레지스터(A1)(1230)와, 상기 제2 왼쪽레지스터(A1)(1230)의 데이타를 보조키(KD)를 입력받아 암호화 변형하는 사이퍼 함수 fD(1253)와, 상기 사이퍼 함수 fD(1253)의 출력과 상기 제1 오른쪽 레지스터(1261)에 저장된 데이타를 연산하는 제4 배타적 논리합 연산부(1263) 및 상기 제4 배타적 논리합 연산부(1263)의 연산 결과를 상기 제4 클럭(EN_CLK4)에 의해 저장하며, 다른 피드백 루프를 형성하여 자신의 데이타를 상기 제1 다중화부(1201)로 출력하는 제2 오른쪽레지스터(B1)(1240)를 구비하여 이루어진다.
상기한 구성을 갖는 DES 암호화 장치의 동작을 도 13을 참조하여 상세히 설명한다.
상기 제 도 13은 두 개의 평문블럭들을 8싸이클 동안 동시에 처리할 수 있음을 보여주며, 상기 도 9와 도 10의 평문블럭 a0와 b0외에 co와 do를 시간 구간 [t1, t2]에서 액세스하여 d1값(d1= c0 f(d0, K1))을 연산하여 레지스터 A0(1210)에 입력함으로써 암호화 연산을 수행한다.
즉, 도 13에 도시된 바와 같이, 각 시간 구간 [t0, t1], [t1, t2], [t2, t3]등에서 새로운 bi와 di값을 얻기 위해 사이퍼 함수 두 개씩 동시에 수행된다. 따라서, S-Box 치환부를 한 개씩 추가로 구현할 필요가 없다.
요컨대, S-Box 치환부를 두 개 구현하고 32비트의 입력 다중화부를 네 개 사용하는 두 개의 평문블럭을 동시에 암호화할 수 있는 파이프라인 구조로서, FSM에 의해 주기가 2T인 두 쌍의 게이트 클럭과 주기가 4T인 4개의 지연된 게이트 클럭을 선택적으로 생성시킬 수가 있어서, 파이프라인을 이용하지 않을 때에 전력소모를 최소화할 수 있다.
상기한 바와 같이 이루어지는 본 발명의 DES 암호화 장치는 종래의 DES 코어 이키텍쳐에서는 Ri와 Li값을 16번 계산하며 해당 레지스터에 저장하여 암호화를 수행하기 때문에 M단계의 파이프 라인을 사용하여도 M 값에 관계없이 항상 16클럭 싸이클의 레이턴시를 갖는 반면, 16 개의 Ri값만을 계산하여 교대로 네 개의 레지스터에 저장하기 때문에 각 레지스터들은 네 개의 Ri값만을 저장해서 암호화를 수행할 수 있으며, 각 레지스터는 주기가 네배 증가된 서로 다른 위상을 갖는 게이트 클럭에 의하여 데이터를 저장하기 때문에 각 레지스터의 스위칭 전력소모를 감소시킨다.
또한, 저속 입출력 과정의 레이턴시를 DES를 연산에 숨기기 위해서, 입력 및 출력버퍼를 사용하여, 입력과정과 DES 연산과정 및 출력과정으로 구성된 세 단계 매크로 파이프라인을 사용하는 바, 16비트 버스를 갖는 시스템에서 DES 코어에 64비트의 데이터를 입출력하기 위해서는 4클럭 싸이클이 필요로하나 DSE 연산과정을가상의 네 단계 마이크로 파이프라인을 사용하여 16싸이클에서 4싸이클로 줄였기 때문에 입 출력과정과 DES 연산과정이 모두 4클럭 싸이클이 걸린다. 따라서, 마이크로 파이프라인 측면에서도 최대의 효과를 얻을 수 있다.
또한, 게이트 클럭의 한 주기 동안에 집적화 시 면적을 가장 크게 차지하는 S-Box 치환부를 포함하는 네 개의 사이퍼 함수를 필요로하나, 본 발명은 네 개의 사이퍼 함수를 시분할시켜서 S-Box 치환부를 한 개만을 사용하여 구현할 수 있으며, DES 연산에서 중간변수를 저장하는 레지스터를 제거할 수 있으므로 필요한 코어 레지스터의 수를 반으로 줄였다. 따라서, 집적화 시 면적 증가를 최소로 하였다.
또한, FSM의 로직에 따라 두 종류의 게이트 클럭을 생성할 수 있기 때문에, 한 개의 S-Box 치환부와 두 개의 32비트 다중화부를 추가로 구현하면, 선택적으로 두 개의 평문블럭을 파이프라인 구조를 이용하여 동시에 암호화할 수 있다.
본 발명의 기술 사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 전문가라면 본 발명의 기술 사상의 범위내에서 다양한 실시예가 가능함을 이해할 수 있을 것이다.
상기와 같이 본 발명은, 16라운드의 DES 연산을 가상의 네 단계 마이크로 파이프라인 구조를 사용하여 네싸이클로 수행하여 스위칭 전력소모를 감소시킬 수 있으며, 저속의 입출력 과정에서 발생하는 레이턴시를 DES 연산에 숨기는 3단계 마이크로 파이프라인의 효율을 극대화시킬 수 있는 효과가 있다.
또한, 본 발명은 집적화 시 면적 증가를 최소화 시킬 수 있으며, 파이프라인 구조를 확장시켜 한 번에 처리할 수 있는 비암호화 입력 데이타의 수를 증가시킬 수 효과가 있다.

Claims (4)

  1. 디이에스 암호화 장치에 있어서,
    주기 T를 갖는 주기적인 신호인 마스터 클럭으로부터 T시간 동안 지연되어 생성된 4T 주기의 제1 내지 제4 게이트 클럭;
    초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 하나인 b0블럭을 다중화하는 제1 다중화부;
    상기 제1 다중화부를 통한 출력인 32비트의 데이터를 키 스케쥴로부터 생성된 제1 보조키를 입력받아, 암호화 변형하는 제1사이퍼 함수;
    초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 다른 하나인 a0블럭을 다중화하는 제2 다중화부;
    상기 제1 사이퍼 함수에 의해 변형된 32비트의 데이터와, 상기 제2 다중화부를 통한 출력을 연산하는 제1 배타적 논리합 연산부;
    상기 제1 게이트 클럭에 의해 상기 제1 배타적 논리합 연산부를 통한 데이타를 저장하는 제1 왼쪽레지스터;
    상기 제1 왼쪽레지스터에 저장된 데이타를 제2 보조키를 입력받아, 암호화 변형하는 제2 사이퍼 함수;
    상기 제2 사이퍼 함수의 출력과 상기 제1 다중화부의 출력을 연산하는 제2 배타적 논리합 연산부;
    상기 제2 배타적 논리합 연산부에 의한 결과를 상기 제2 게이트 클럭에 의해 저장하는 제1 오른쪽레지스터;
    상기 제1 오른쪽레지스터에 저장된 데이타를 제3 보조키를 입력받아 암호화 변형하는 제3 사이퍼 함수;
    상기 제3 사이퍼 함수를 통한 결과와 상기 제1 왼쪽레지스터에 저장된 데이타를 연산하는 제3 배타적 논리합 연산부;
    상기 제3 배타적 논리합 연산부를 통한 연산 결과를 상기 제3 게이트 클럭에 의해 저장하며 피드백 루프를 형성하여 자신의 데이타를 상기 제1 다중화부로 출력하는 제2 왼쪽레지스터;
    상기 제2 왼쪽레지스터의 데이타를 제4 보조키를 입력받아 암호화 변형하는 제4 사이퍼 함수;
    상기 제4 사이퍼 함수의 출력과 상기 제1 오른쪽 레지스터에 저장된 데이타를 연산하는 제4 배타적 논리합 연산부; 및
    상기 제4 배타적 논리합 연산부의 연산 결과를 상기 제4 게이트 클럭에 의해 저장하며, 다른 피드백 루프를 형성하여 자신의 데이타를 상기 제2 다중화부로 출력하는 제2 오른쪽레지스터
    를 포함하여 이루어지는 디이에스 암호화 장치.
  2. 제 1 항에 있어서,
    상기 제1 내지 제4 게이트 클럭은, 다음의 수식
    Ri= Ri-2 f(Ri-1, Ki) , 여기서 i=1,2,...,16, R-1= L0,는 배타적 논리합 연산을 의미함.
    에 근거하여 Ri를 연산하는데 걸리는 시간을 T라 할 때, 주기가 T인 마스터 클럭으로부터 FSM(Finite State Machine) 또는 카운터를 이용하여 생성한 서로 T시간 동안 지연된 4T 주기 값을 갖는 네 개의 게이트 클럭임을 특징으로 하는 DES 암호화 장치.
  3. 제 1 항에 있어서,
    상기 제2 내지 제4 게이트 클럭으로 구동시킬 수 있는 네 개의 워드 단위의 쉬프트레지스터로 구성된 64비트 입력 버퍼레지스터 및 출력 버퍼 레지스터로 구성된 매크로 파이프라인을 이용한 디이에스 암호화 장치.
  4. 디이에스 암호화 장치에 있어서,
    주기 T를 갖는 주기적인 신호인 마스터 클럭으로부터 T시간 동안 지연되어 생성된 2T 주기의 두쌍으로 구성된 제1 내지 제4 게이트 클럭;
    초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진것 중의 하나인 b0블럭을 다중화하는 제1 다중화부;
    상기 제1 다중화부를 통한 출력인 32비트의 데이터를 키 스케쥴로부터 생성된 제1 보조키를 입력받아, 암호화 변형하는 제1 사이퍼 함수;
    초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 다른 하나인 a0블럭을 다중화하는 제2 다중화부;
    상기 제1 사이퍼 함수에 의해 변형된 32비트의 데이터와, 상기 제2 다중화부를 통한 출력을 연산하는 제1 배타적 논리합 연산부;
    상기 제1 게이트 클럭에 의해 상기 제1 배타적 논리합 연산부를 통한 데이타를 상기 제1 게이트 클럭에 의해 저장하는 제1 왼쪽레지스터;
    상기 제1 왼쪽레지스터에 저장된 데이타를 제2 보조키를 입력받아, 암호화 변형하는 제2 사이퍼 함수;
    상기 제2 사이퍼 함수의 출력과 상기 제1 다중화부의 출력을 연산하는 제2 배타적 논리합 연산부;
    상기 제2 배타적 논리합 연산부에 의한 결과를 상기 제2 게이트 클럭에 의해 저장하는 제1 오른쪽레지스터;
    상기 제1 오른쪽레지스터에 저장된 데이타를 제3 보조키를 입력받아 암호화 변형하는 제3 사이퍼 함수;
    상기 제3 사이퍼 함수를 통한 결과와 상기 제1 왼쪽레지스터에 저장된 데이타를 연산하는 제3 배타적 논리합 연산부;
    상기 제3 배타적 논리합 연산부를 통한 연산 결과를 상기 제3 게이트 클럭)에 의해 저장하며 피드백 루프를 형성하여 자신의 데이타를 상기 제2 다중화부로 출력하는 제2 왼쪽레지스터;
    상기 제2 왼쪽레지스터의 데이타를 제4 보조키를 입력받아 암호화 변형하는 제4 사이퍼 함수와, 상기 제4 사이퍼 함수의 출력과 상기 제1 오른쪽 레지스터에 저장된 데이타를 연산하는 제4 배타적 논리합 연산부; 및
    상기 제4 배타적 논리합 연산부의 연산 결과를 상기 제4 게이트 클럭에 의해 저장하며, 다른 피드백 루프를 형성하여 자신의 데이타를 상기 제1 다중화부로 출력하는 제2 오른쪽레지스터
    를 포함하여 이루어지는 파이프라인 구조를 이용하여 두 개의 평문 블럭을 동시에 암호화할 수 있는 디이에스 암호화 장치.
KR1020010021973A 2001-04-24 2001-04-24 디이에스 암호화 장치 KR20020082540A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020010021973A KR20020082540A (ko) 2001-04-24 2001-04-24 디이에스 암호화 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020010021973A KR20020082540A (ko) 2001-04-24 2001-04-24 디이에스 암호화 장치

Publications (1)

Publication Number Publication Date
KR20020082540A true KR20020082540A (ko) 2002-10-31

Family

ID=27702285

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010021973A KR20020082540A (ko) 2001-04-24 2001-04-24 디이에스 암호화 장치

Country Status (1)

Country Link
KR (1) KR20020082540A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105049203A (zh) * 2015-06-17 2015-11-11 复旦大学 一种支持多工作模式的可配置3des加解密算法电路

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105049203A (zh) * 2015-06-17 2015-11-11 复旦大学 一种支持多工作模式的可配置3des加解密算法电路
CN105049203B (zh) * 2015-06-17 2018-06-29 复旦大学 一种支持多工作模式的可配置3des加解密算法电路

Similar Documents

Publication Publication Date Title
Mangard et al. A highly regular and scalable AES hardware architecture
USRE44697E1 (en) Encryption processor with shared memory interconnect
KR100435052B1 (ko) 암호화장치
AU767323B2 (en) Block encryption device using auxiliary conversion
KR100377172B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러
JP5551065B2 (ja) 擬似ランダム生成、データ暗号化、およびメッセージ暗号化ハッシングのための暗号化方法およびデバイス
KR100377176B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
US8411853B2 (en) Alternate galois field advanced encryption standard round
JP2004233427A (ja) Aes暗号処理装置、aes復号処理装置、および、aes暗号・復号処理装置
KR100377175B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
KR20050078271A (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
CN109150495B (zh) 一种轮变换复用电路及其aes解密电路
US6931127B2 (en) Encryption device using data encryption standard algorithm
CN108933652B (zh) 一种普通轮变换运算单元、普通轮变换电路及aes解密电路
CN108809627B (zh) 轮变换复用电路及aes解密电路
WO2009090689A1 (ja) 暗号化装置、暗号化方法及びプログラム
KR20020082540A (ko) 디이에스 암호화 장치
KR20030037890A (ko) 디이에스 암호화 장치
KR100377173B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
JP4117157B2 (ja) 暗号回路
KR100418575B1 (ko) 암호블럭연쇄 방식의 디이에스 암호화 장치
Suwais Parallel Model for Rabbit Stream Cipher over Multi-core Processors
KR20030087893A (ko) 라운드 키의 온라인 계산 기능을 갖는 모듈화 구조의 AESRijndael 라운드 키 생성 회로
CN109936440B (zh) Aes解密电路中的复用轮变换运算单元和构建方法
KR100384873B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치

Legal Events

Date Code Title Description
N231 Notification of change of applicant
SUBM Submission of document of abandonment before or after decision of registration