KR20030037890A - 디이에스 암호화 장치 - Google Patents
디이에스 암호화 장치 Download PDFInfo
- Publication number
- KR20030037890A KR20030037890A KR1020010069136A KR20010069136A KR20030037890A KR 20030037890 A KR20030037890 A KR 20030037890A KR 1020010069136 A KR1020010069136 A KR 1020010069136A KR 20010069136 A KR20010069136 A KR 20010069136A KR 20030037890 A KR20030037890 A KR 20030037890A
- Authority
- KR
- South Korea
- Prior art keywords
- register
- exclusive
- gate
- cipher function
- output
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0625—Block 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization 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시간 동안 지연되어 생성된 6T 주기의 6개의 게이트 클럭을 사용하여 레지스터에서 발생하는 스위칭 전력소모를 최소화하며, 8비트 버스를 갖는 시스템에서 매크로 파이프라인의 성능을 최대화하는 8싸이클로 동작하는 저전력 디이에스 암호화 장치를 제공하기 위한 것이다.
Description
본 발명은 암호화 장치에 관한 것으로, 특히 데이터 암호화 표준 알고리즘을 이용한 8사이클로 동작하는 3중 암호화 장치에 관한 것이다.
일반적으로 데이터 암호화 표준(DES : Data Encryption Standard, 이하 DES라 함) 알고리즘은 가장 널리 쓰이고 있는 암호화 방식으로 네트워킹 사용이 증가함에 따라 그 중요성을 더해 가고 있으며, 특히 보안 인터넷 응용(Secure internet application)이나 원격 접근 서버(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 Scheduler)에 의해서 생성된 보조키(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로 표현가능하다.
도 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)와, 제1치환선택부(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비트로 치환하는 확장 치환부(ExpansionPermutation)(300)와, 확장 치환부(300)의 치환 결과를 각 라운드에서 키 스케쥴러(Key Scheduler)에 의해서 생성된 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으로 나타낼 수 있다.
도 6은 서로 1/3 주기만큼 지연된 3상(Phase) 클럭을 사용하여 6개의 레지스터에 데이타를 저장하는 제2 종래기술에 따른 DES 아키텍쳐로서, 상기 제3 수학식의 연산을 수행한다.
도 6을 참조하면, 제2 종래기술에 따른 DES 알고리즘은, 초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 하나인 b0블럭이제2 다중화부(602)를 통한 출력인 32비트의 데이터를 키 스케쥴러로부터 생성된 보조키(KA)를 입력받아, 사이퍼 함수 fA(670)에 의해서 암호화 변형하며, 사이퍼 함수 fA(670)에 의해 변형된 32비트의 데이터와, 초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 다른 하나인 a0블럭이 제1 다중화부(601)를 통한 출력을 제1 배타적 논리합 연산부(680)를 통해 연산을 수행한 후, 제1 클럭(CLK1)에 의해 제1 왼쪽레지스터(A0)(610)에 저장한다.
이어서, 제1 왼쪽레지스터(A0)(610)에 저장된 데이타는 보조키(KB)를 입력받아, 사이퍼 함수 fB(671)에 의해서 암호화 변형되어 b0블럭과 제2 배타적 논리합 연산부(681)를 통해 연산된 후, 제2 클럭(CLK2)에 의해 제1 오른쪽레지스터(B0)(620)에 저장된다.
이어서, 제1 오른쪽레지스터(B0)(620)에 저장된 데이타는 보조키(KC)를 입력받아, 사이퍼 함수(fC)에 의해서 암호화 변형되어 제1 왼쪽레지스터(A0)(610)에 저장된 데이타와 제3 배타적 논리합 연산부(682)를 통해 연산된 후, 제3 클럭(CLK3)에 의해 제2 왼쪽레지스터(C0)(630)에 저장된다.
계속해서, 제2 왼쪽레지스터(C0)(630)에 저장된 데이타는 사이퍼 함수(fD)와 제4배타적 논리합 연산부(683)을 통해 제2 오른쪽레지스터(A1)(640) 이어서, 제3 왼쪽레지스터(B1)(650)와 제3 오른쪽레지스터(C1)(660)를 통한 반복과정을 거치게 된다.
여기서, 제1, 제2 및 제3 클럭(CLK1, CLK2, CLK3)은 서로 1/3 주기만큼 지연된 3상 클럭으로서, 제2클럭(CLK2)은 제1클럭(CLK1)을 1/3 주기만큼 지연시킨 것이고, 제3클럭(CLK3) 제2클럭(CLK2)을 1/3 주기만큼 지연시킨 것이므로, 제1클럭(CLK1)이 상승할 때 레지스터 A0, A1에 새로운 값이 저장되고, 제2클럭(CLK2)이 상승할 때 레지스터 B0, B1에 새로운 값이 저장되며, 제3클럭(CLK3)이 상승할 때 레지스터 C0, C1에 새로운 값이 저장된다.
요컨대, 1/3 주기로 지연된 3개의 클럭을 사용하여 데이타를 저장하기 때문에, 한 레지스터가 저장된 값을 유지하는 한 주기 중에 다른 레지스터가 새로운 값을 저장하며, 이에 따라 한 주기 동안 한 레지스터는 한 개의 값을 유지하며 다른 레지스터에서 서로 다른 값을 반 주기씩 액세스가 가능하다.
순열 Ri(i=1,2,....,16) 값들을 상기 여섯 개의 레지스터에 교대로 저장하면, 모든 인접한 Ri값들을 1/3 주기 동안 인접한 다른 레지스터로부터 액세스가 가능하다.
도 7은 도 6에 따른 DES 아키텍쳐의 동작 순서를 나타내는 타이밍도로서, 파이프라인을 이용하지 않는 6싸이클 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값을 계산하는데 사용할 수 있고 b1값은 t5까지 유지되어서 t2-t3구간에서 b2값을 계산하는데 사용할 수 있다. 이 것은 서로 지연된 제1클럭(CLK1)과 제2클럭(CLK2)과 제3클럭(CLK3)에 의해서 레지스터 A0와 B0와 C0가 새로운 값을 저장하기 때문에 해결할 수 있다. b2(b2= b0 f(b1,K2))값은 t2-t3구간에서 계산되어 t4에서 제2클럭(CLK2)에 의해서 레지스터 B1에 저장된다. 이와같이 3 개의 위상을 갖는 클럭을 사용하여 레지스터에 저장된 값을 동시에 억세스(Access)하게 함으로써 b1, b2, ..., b16을 계산하는데 걸리는 시간을 6클럭 사이클 예컨대, 5.33 클럭 사이클로 줄일 수 있다.
일반적으로 주어진 키(Key)에 대하여 암호화하거나 해독화 할 다수의 64비트의 평문이나 암호문 블럭이 연속적으로 입력되는 경우가 많다. 예를 들어 MCNS 케이블 모뎀에서 사용되는 암호화 방식은 맥 프레임(MAC Frame) 단위로 암호화를 수행하기 때문에 최대 1,518 바이트의 평문 블럭들을 동일한 키(Key)로 암호화를 수행하여야 한다. 즉 동일한 키(Key)로써 다수의 평문 블럭들에 대해서 16라운드의 DES 코아를 계산하여야만 한다. 이 경우 종래 기술이 가지고 있는 파이프라인 구조를 이용하여 처리능력비를 증가시킬 수 있다.
도 8은 도 6의 6단 파이프라인 구조의 DES 아키텍쳐의 파이프라인 동작 순서를 나타내는 타이밍도이다.
도 8을 참조하면, 제2종래기술이 적용되는 6단 파이프라인 DES 구조는 파이프라인 구조를 이용하여 두개의 평문 블럭들을 5.33 클럭 사이클 동안 동시에 처리할 수 있음을 보여준다. 또한 도7에서 비어 있는 부분에 새로운 평문 블럭 c0와 d0를 t3와 t4에서 레지스터 A0와 B0에 입력함으로써 평문 블럭 bi값들을 계산하는 동안 평문 블럭 di값들을 계산할 수 있음을 보여준다. 이 때 t0-t1, t1-t2, t2-t3.... 구간마다 새로운 평문 블럭 bi와 di값을 암호화 하기 위해 사이퍼 함수 f가 두 개씩 동시에 수행된다. 5.33 클럭 사이클 동안 처리할 수 있는 평문 블럭의 수는 두배로 증가시킬 수가 있다. 그러나 사이퍼 함수를 구성하는 S-Box들은 한 개씩 추가로 구현할 필요가 있는 단점이 발생한다.
사이퍼 함수 f는 롬(ROM)이나 프로그램가능 논리 어레이(PLA)와 같은 기억장치로 구현된 S-Box 치환부를 필요로 한다.
도 9는 도 6의 6단 파이프라인 구조의 DES 아키텍쳐의 파이프라인을 사용하지 않은 경우와 파이프라인을 사용한 경우에 사이퍼 함수가 연산되는 순서도이다.
도 9를 참조하면, 한개의 64비트 평문 블럭을 암호화하는 경우 즉, 파이프라인을 사용하지 않은 경우에는 도 6의 6개의 사이퍼 함수 fA, fB, fC, fD, fE, fF는 3개의 위상을 갖는 클럭에 의해서 시분할 되어 계산되기 때문에 1 개의 S-Box 치환부만으로도 구현가능하다. 그러나 파이프라인을 사용하여 두개의 64비트의 평문 블럭을 동시에 암호화할 경우에 사이퍼 함수들의 두 집합 (fA, fB, fC)와 (fD, fE, fF)는 서로 시분할되지만 세 집합 (fA,fD)와 (fB,fE)와 (fC,fF)는 시분할이 되지 않고 동시에 계산되기 때문에 두 개의 S-Box 치환부가 필요하다.
더불어, 도 6의 DES 아키텍쳐에서 6개의 레지스터들은 서로 1/3 주기씩 지연된 클럭에 의하여 구동되기 때문에 도 7에서와 같이 한 개의 평문 블럭을 파이프라인을 이용하지 않고 암호화할 경우에도, 한 주기 후에는 항상 데이타를 로드하게 되어 전력을 소모하는 단점이 있다.
상기한 바와 같은 종래기술은 다음과 같은 참고문헌에 도시되어 있다.
<참고문헌>
문헌 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-028741)
문헌 4. Y.W. Lim, "Efficient 8-Cycle DES Implementation", AP-ASIC, pp. 175-178, 2000
본 발명은 상기와 같은 종래 기술의 문제점을 해결하기 위한 것으로써, 스위칭에 의한 전력소모가 디자인 전체 전력소모의 70% 이상을 차지하는 바, 이러한 스위칭 전력소모는 각 트랜지스터의 부하 캐패시턴스와 토글 속도에 비례하므로, 상기 토글 속도 및 횟수를 감소시키면 스위칭 전력소모를 줄일 수 있는 기술적 바탕에 기초한 클럭 게이팅 기술을 이용함으로써, 여섯 개의 서로 다른 위상을 갖는 게이트화된 클럭들을 생성시켜서 한 개의 평문 블럭을 8 사이클로 동작하는 DES 암호화 장치를 제공하는데 그 목적이 있다.
도 1은 제1 종래기술에 따른 DES 알고리즘을 나타내는 구성도,
도 2는 도 1의 DES 알고리즘의 중간 계산 결과들을 도시한 도표,
도 3은 보조키(Subkey) Ki를 생성하는 보조키 발생부를 도시한 구성도,
도 4는 도 3에 따른 각 라운드마다 쉬프트하는 비트수를 도시한 도표,
도 5는 도 1의 기본연산부와 한 개의 라운드를 하드웨어로 구현한 DES 코어 아키텍쳐의 구성도,
도 6은 서로 1/3 주기만큼 지연된 3상(Phase) 클럭을 사용하여 6개의 레지스터에 데이타를 저장하는 제2 종래기술에 따른 DES 아키텍쳐를 도시한 구성도,
도 7은 도 6에 따른 DES 아키텍쳐의 동작 순서를 나타내는 타이밍도,
도 8은 도 6의 6단 파이프라인 구조의 DES 아키텍쳐의 파이프라인 동작 순서를 나타내는 타이밍도,
도 9는 도 6의 6단 파이프라인 구조의 DES 아키텍쳐의 파이프라인을 사용하지 않은 경우와 파이프라인을 사용한 경우에 사이퍼 함수가 연산되는 순서도를 도시한 도면,
도 10은 이러한 3중 DES 알고리즘을 도시한 블럭도,
도 11은 본 발명의 일실시예에 따른 8 사이클 3중 DES 아키텍쳐를 도시한 구성도,
도 12는 도 11에 따른 8 사이클 3중 DES 아키텍쳐의 동작 순서를 나타내는 타이밍도,
도 13은 도 11을 이용한 3단계 매크로 파이프라인의 구성도,
도 14는 본 발명의 다른 실시예에 따른 파이프라인 구조의 16사이클 3중 DES 아키텍쳐를 도시한 구성도,
도 15는 도 14에 따른 16사이클 3중 DES 아키텍쳐의 동작 순서를 나타내는 타이밍도.
* 도면의 주요 부분에 대한 부호의 설명 *
1101, 1102 : 다중화부
1110, 1130, 1150 : 왼쪽레지스터
1120, 1140, 1160 : 오른쪽레지스터
1170 ∼ 1175 : 사이퍼 함수
1180 ∼ 1185 : 배타적 논리합 연산부
상기 목적을 달성하기 위하여 본 발명은, 디이에스 암호화 장치에 있어서, 주기 T를 갖는 주기적인 신호인 마스터 클럭으로부터 T시간 동안 지연되어 생성되며 서로 위상이 다른 6T 주기의 제1 내지 제6 게이트 클럭을 쉬프트레지스터의 제어신호로 이용하는 것을 특징으로 하는 디이에스 암호화 장치를 제공한다.
바람직하게, 본 발명의 상기 제1 내지 제6 게이트 클럭은, 수식(Ri= Ri-2 f(Ri-1, Ki) , 여기서 i=1,2,...,48, R-1= L0,는 배타적 논리합 연산을 의미함)에 근거하여 Ri를 연산하는데 걸리는 시간을 T라 할 때, 주기가 T인 마스터 클럭으로부터 FSM(Finite State Machine) 또는 카운터를 이용하여 생성한 서로 T시간 동안 지연된 6T 주기 값을 갖는 6개의 게이트 클럭 임을 특징으로 하며,
상기 제1 내지 제6 게이트 클럭으로 구동시킬 수 있는 8개의 바이트 단위의쉬프트레지스터로 구성된 64비트 입력버퍼 레지스터 및 출력버퍼 레지스터를 구비하며 매크로 파이프라인을 이용하는 것을 특징으로 한다.
또한, 상기 목적을 달성하기 위하여 본 발명은, 주기 T를 갖는 주기적인 신호인 마스터 클럭으로부터 T시간 동안 지연되어 생성된 6T 주기의 제1 내지 제6 게이트 클럭; 초기 치환부를 거친 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 게이트 클럭에 의해 저장하는 제2 왼쪽레지스터; 상기 제2 왼쪽레지스터에 저장된 데이타를 제4 보조키를 입력받아 암호화 변형하는 제4 사이퍼 함수; 상기 제4 사이퍼 함수의 출력과 상기 제1 오른쪽레지스터의 출력을 연산하는 제4 배타적 논리합 연산부; 상기 제4 배타적 논리합 연산부를 통한 결과를 상기 제4 게이트 클럭에 의해 저장하는 제2 오른쪽레지스터; 상기 제2 오른쪽레지스터에 저장된 데이타를 제5 보조키를 입력받아 암호화 변형하는 제5 사이퍼 함수; 상기 제5 사이퍼 함수를 통한 결과와 상기 제2 왼쪽레지스터에 저장된 데이타를 연산하는 제5 배타적 논리합 연산부; 상기 제5 배타적 논리합 연산부를 통한 연산 결과를 상기 제5 게이트 클럭에 의해 저장하며, 피드백 루프를 형성하여 자신의 데이타를 상기 제2 다중화부로 출력하는 제3 왼쪽레지스터; 상기 제3 왼쪽레지스터의 데이타를 제6 보조키를 입력받아 암호화 변형하는 제6 사이퍼 함수; 상기 제6 사이퍼 함수의 출력과 상기 제2 오른쪽 레지스터에 저장된 데이타를 연산하는 제6 배타적 논리합 연산부; 및 상기 제6 배타적 논리합 연산부의 연산 결과를 상기 제6 게이트 클럭에 의해 저장하며, 다른 피드백 루프를 형성하여 자신의 데이타를 상기 제1 다중화부로 출력하는 제3 오른쪽레지스터를 포함하여 이루어지는 3중 디이에스 암호화 장치를 제공한다.
바람직하게, 본 발명의 상기 제1 내지 제6 게이트 클럭은, 수식(Ri= Ri-2 f(Ri-1, Ki) , 여기서 i=1,2,...,48, R-1= L0,는 배타적 논리합 연산을 의미함)에 근거하여 Ri를 연산하는데 걸리는 시간을 T라 할 때, 주기가 T인 마스터 클럭으로부터 FSM(Finite State Machine) 또는 카운터를 이용하여 생성한 서로 T시간 동안 지연된 6T 주기 값을 갖는 6개의 게이트 클럭 임을 특징으로 하며,
상기 각 레지스터는 상기 각 게이트 클럭의 상승에 응답하여 동작하는 것을 특징으로 한다.
바람직하게,본 발명의 상기 제1 내지 제6 게이트 클럭은, 수식(Ri= Ri-2 f(Ri-1, Ki) , 여기서 i=1,2,...,48, R-1= L0,는 배타적 논리합 연산을 의미함)에 근거하여 Ri를 연산하는데 걸리는 시간을 T라 할 때, 주기가 T인 마스터 클럭으로부터 FSM(Finite State Machine) 또는 카운터를 이용하여 생성한 서로 T시간 동안 지연된 3T 주기 값을 갖는 6개의 게이트 클럭 임을 특징으로 하며,
상기 제1 내지 제6 게이트 클럭으로 구동시킬 수 있는 8개의 바이트 단위의 쉬프트레지스터로 구성된 64비트 입력버퍼 레지스터 및 출력버퍼 레지스터를 구비하며 매크로 파이프라인을 이용하는 것을 특징으로 하며,
상기 제1 게이트 클럭과 제4게이트 클럭, 제2 게이트 클럭과 제5 게이트 클럭 및 제3 게이트 클럭과 제6 게이트 클럭은 각각 쌍을 이루며, 이러한 각 쌍을 이루는 게이트 클럭은 서로 위상이 동일한 것을 특징으로 한다.
또한, 상기 목적을 달성하기 위한 본 발명은, 주기 T를 갖는 주기적인 신호인 마스터 클럭으로부터 T시간 동안 지연되어 생성된 3T 주기의 두쌍으로 구성된 제1 내지 제6 게이트 클럭; 초기 치환부를 거친 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 게이트 클럭에 의해 저장하는 제2 왼쪽레지스터; 상기 제2 왼쪽레지스터에 저장된 데이타를 제4 보조키를 입력받아 암호화 변형하는 제4 사이퍼 함수; 상기 제4 사이퍼 함수의 출력과 상기 제1 오른쪽레지스터의 출력을 연산하는 제4 배타적 논리합 연산부; 상기 제4 배타적 논리합 연산부를 통한 결과를 상기 제4 게이트 클럭에 의해 저장하는 제2 오른쪽레지스터; 상기 제2 오른쪽레지스터에 저장된 데이타를 제5 보조키를 입력받아 암호화 변형하는 제5 사이퍼 함수; 상기 제5 사이퍼 함수를 통한 결과와 상기 제2 왼쪽레지스터에 저장된 데이타를 연산하는 제5 배타적 논리합 연산부; 상기 제5 배타적 논리합 연산부를 통한 연산 결과를 상기 제5 게이트 클럭에 의해 저장하며, 피드백 루프를 형성하여 자신의 데이타를 상기 제2 다중화부로 출력하는 제3 왼쪽레지스터; 상기 제3 왼쪽레지스터의 데이타를 제6 보조키를 입력받아 암호화 변형하는 제6 사이퍼 함수; 상기 제6 사이퍼 함수의 출력과 상기 제2 오른쪽 레지스터에 저장된 데이타를 연산하는 제6 배타적 논리합 연산부; 및 상기 제6 배타적 논리합 연산부의 연산 결과를 상기 제6 게이트 클럭에 의해 저장하며, 다른 피드백 루프를 형성하여 자신의 데이타를 상기 제1 다중화부로 출력하는 제3 오른쪽레지스터를 포함하여 이루어지는 3중 디이에스 암호화 장치를 제공한다.
상기 각 레지스터는 상기 각 게이트 클럭의 상승에 응답하여 동작하는 것을 특징으로 하며,
상기 제1 게이트 클럭과 제4게이트 클럭, 제2 게이트 클럭과 제5 게이트 클럭 및 제3 게이트 클럭과 제6 게이트 클럭은 각각 쌍을 이루며, 이러한 각 쌍을 이루는 게이트 클럭은 서로 위상이 동일한 것을 특징으로 한다.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부한 도면을 참조하여 설명하기로 한다.
본 발명은 상기 제3 수학식에 의하여 DES 암호화를 수행하는 바, 새로운 Ri를 연산하는데 걸리는 시간을 T라고 할 때, 종래에는 주기가 3T인 클럭을 사용하였으나, 본 발명에서는 주기가 T인 마스터 클럭으로부터 서로 T시간 동안 지연되어 생성된 6T의 주기 값을 갖는 여섯 개의 게이트화된 클럭을 사용하여 여섯 개의 레지스터들이 각각 구동되는 특징을 갖는다.
도 11은 본 발명의 일실시예에 따른 8 사이클 3중 DES 아키텍쳐를 도시한 구성도이다.
도 11을 참조하면, 본 발명의 DES 암호화 장치는, 주기 T를 갖는 주기적인 신호인 마스터 클럭(Master CK)으로부터 T시간 동안 지연되어 생성된 6T 주기의 제1 내지 제6 게이트 클럭(EN_CLK1 ∼ EN_CLK6)과, 초기 치환부를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 하나인 b0블럭을 다중화하는 제1 다중화부(1101)과, 제1 다중화부(1101)를 통한 출력인 32비트의 데이터를 키 스케쥴러로부터 생성된 보조키(KA)를 입력받아, 암호화 변형하는 사이퍼 함수 fA(1170)와, 초기 치환부를 거친 64비트의 평문(Plain Text) 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 다른 하나인 a0블럭을 다중화하는 제2 다중화부(1102)와, 상기 사이퍼 함수 fA(1170)에 의해 변형된 32비트의 데이터와, 제2 다중화부(1102)를 통한 출력을 연산하는 제1 배타적 논리합 연산부(1180)와, 제1 게이트 클럭(EN_CLK1)에 의해 제1 배타적 논리합 연산부(1180)를 통한 데이타를 저장하는 제1 왼쪽레지스터(A0)(1110)와, 제1 왼쪽레지스터(A0)(1110)에 저장된 데이타를 보조키(KB)를 입력받아, 암호화 변형하는 사이퍼 함수 fB(1171)와, 사이퍼 함수 fB(1171)의 출력과 제1 다중화부(1101)의 출력을 연산하는 제2 배타적 논리합 연산부(1181)와, 제2 배타적 논리합 연산부(1181)를 통한 결과를 제2 게이트 클럭(EN_CLK2)에 의해 저장하는 제1 오른쪽레지스터(B0)(1120)와, 제1 오른쪽레지스터(B0)(1120)에 저장된 데이타를 보조키(KC)를 입력받아 암호화 변형하는 사이퍼함수 fC(1172)와, 사이퍼 함수 fC(1172)를 통한 결과와 제1 왼쪽레지스터(A0)(1110)에 저장된 데이타를 연산하는 제3 배타적 논리합 연산부(1182)와, 제3 배타적 논리합 연산부(1182)를 통한 연산 결과를 상기 제3 게이트 클럭(EN_CLK3)에 의해 저장하는 제2 왼쪽레지스터(C0)(1130)와, 제2 왼쪽레지스터(C0)(1110)에 저장된 데이타를 보조키(KD)를 입력받아, 암호화 변형하는 사이퍼 함수 fD(1173)와, 사이퍼 함수 fB(1173)의 출력과 제1 오른쪽레지스터(B0)(1120)의 출력을 연산하는 제4 배타적 논리합 연산부(1183)와, 제4 배타적 논리합 연산부(1183)를 통한 결과를 제4 게이트 클럭(EN_CLK4)에 의해 저장하는 제2 오른쪽레지스터(A1)(1140)와, 제2 오른쪽레지스터(A1)(1140)에 저장된 데이타를 보조키(KE)를 입력받아 암호화 변형하는 사이퍼 함수 fE(1174)와, 사이퍼 함수 fE(1174)를 통한 결과와 제2 왼쪽레지스터(C0)(1130)에 저장된 데이타를 연산하는 제5 배타적 논리합 연산부(1184)와, 제5 배타적 논리합 연산부(1184)를 통한 연산 결과를 제5 게이트 클럭(EN_CLK5)에 의해 저장하며 피드백 루프를 형성하여 자신의 데이타를 제2 다중화부(1102)로 출력하는 제3 왼쪽레지스터(B1)(1150)와, 제3 왼쪽레지스터(B1)(1150)의 데이타를 보조키(KF)를 입력받아 암호화 변형하는 사이퍼 함수 fF(1175)와, 사이퍼 함수 fF(1175)의 출력과 제2 오른쪽 레지스터(A1)(1140)에 저장된 데이타를 연산하는 제6 배타적 논리합 연산부(1185) 및 제6 배타적 논리합 연산부(1185)의 연산 결과를 제6 게이트 클럭(EN_CLK6)에 의해 저장하며, 다른 피드백 루프를 형성하여 자신의 데이타를제1 다중화부(1101)로 출력하는 제3 오른쪽레지스터(C1)(1160)를 구비하여 이루어진다.
상기한 구성을 갖는 본 발명의 일실시예에 따른 암호화 장치의 동작을 도 10 및 도 12를 참조하여 상세하게 설명한다.
본 발명은 3중 DES(Triple DES)에 관한 것으로서, 도 10은 이러한 3중 DES 알고리즘을 도시한 블럭도이며, 도 12는 도 11에 따른 8 사이클 3중 DES 아키텍쳐의 동작 순서를 나타내는 타이밍도이다.
도 10을 참조하면, 3중 DES 알고리즘은 16라운드의 DES 암호화 및 해독화 연산을 교대로 수행하는 바, 16라운드의 DES 암호화 및 해독화 과정은 키 스케쥴러의 순서가 뒤바뀌는 차이밖에 없다. 따라서, 3중 DES 암호화는 16라운드의 DES 아키텍쳐를 3번 연속하여 연산한 것으로 볼 수 있다.
a0와 b0를 초기 치환 IP를 거친 64비트의 평문 블럭이 32비트의 두 블럭으로 나뉘어진 것을 나타낸다고 했을 때 즉, a0= L0, b0= R0일 때, 3중 DES 암호화는 bi= bi-2 f( bi-1, Ki) (i=1,2....48)을 연산하는 과정이다.
즉, 48 라운드의 DES 연산은 수행하여 b1, b2,...b48(bi= Ri) 값들을 계산한다. 키 스케쥴러가 주기적으로 보조키 Ki를 bi를 계산하기 전에 미리 사이퍼 함수 f에 입력해주도록 컨트롤러를 만들면 bi값이 본 발명의 아키텍쳐에서 계산되는 과정은 다음과 같다.
1. 도 12에 도시된 바와 같이, 입력버퍼 레지스터로부터 a0값을 시간 구간 [t-1, t0]에서 액세스 가능하고 b0값을 시간 구간 [t-1, t1]에서 액세스 가능하면, 시간 t-1에서 부터 b1값(b1= a0 f(b0, K1))을 계산하기 시작해서 시간 t0에 계산된 값을 레지스터 A0에 게이트 클럭 EN_CLK1을 사용하여 저장한다.
2. 시간 구간 [t0, t1]에서는 입력버퍼 레지스터로부터 b0값을, 레지스터 A0로부터 b1값을 각각 액세스할 수 있으므로 시간 t0에서부터 b2값(b2= b0 f(b1, K2))을 계산하기 시작해서 시간 t1에서 계산된 값을 레지스터 B0에 게이트 클럭 EN_CLK2를 사용하여 저장한다.
3. 시간 구간 [t1, t2]에서는 레지스터 A0로부터 b1값을, 레지스터 B0로부터 b2값을 각각 액세스할 수 있으므로 시간 t1에서부터 b3값(b3= b1 f(b2, K3))을 계산하기 시작해서 시간 t2에 계산된 값을 레지스터 C0에 게이트 클럭 EN_CLK3을 사용하여 저장한다.
4. 시간 구간 [t2, t3]에서는 레지스터 B0로부터 b2값을, 레지스터 C0로부터 b3값을 각각 액세스할 수 있으므로 시간 t2에서부터 b4값(b4= b2 f(b3, K4))을 계산하기 시작해서 시간 t3에 계산된 값을 레지스터 A1에 게이트 클럭 EN_CLK4을 사용하여 저장한다.
5. 시간 구간 [t3, t4]에서는 레지스터 C0로부터 b3값을, 레지스터 A1로부터 b4값을 각각 액세스할 수 있으므로 시간 t3에서부터 b5값(b5= b3 f(b4, K5))을 계산하기 시작해서 시간 t4에 계산된 값을 레지스터 B1에 게이트 클럭 EN_CLK5를 사용하여 저장한다.
6. 시간 구간 [t4, t5]에서는 레지스터 A1로부터 b4값을, 레지스터 B1로부터 b5값을 각각 액세스할 수 있으므로 시간 t4에서부터 b6값(b6= b4 f(b5, K6))을 계산하기 시작해서 시간 t5에 계산된 값을 레지스터 C1에 게이트 클럭 EN_CLK6을 사용하여 저장한다.
본 발명은 상기와 같은 동작 순서를 8사이클 반복 연산함으로써 48라운드의 3중 DES 암호화 연산을 수행한다. 두 개의 32비트 멀티플렉서에 의하여 레지스터 A0와 B0는 입력 데이타를, 첫번째 사이클에서는 a0와 b0값을 입력버퍼 레지스터에 액세스하지만 나머지 세 사이클에서는 b5, b11, b17, ... 과 b6, b12, b18... 값들을 레지스터 B1과 C1에서 각각 액세스한다.
사이퍼 함수 f는 롬이나 PLA 같은 기억 장치로 구현된 S-Box를 필요로 한다. 하지만, 본 발명에서 사이퍼 함수 f는 t1-t2, t2-t3, t3-t4,... 구간에서 액세스가 가능하면 된다. 따라서, 면적을 크게 차지하는 8개의 S-Box들을 복수개로 구현할 필요없이 한 개씩 만으로 구현 가능하다. 단지, 확장치환부와 P-Box 치환부를 구현하기 위한 와이어링과 각 라운드마다 생성된 서브키와 배타적 논리합 연산부 게이트들만 추가로 필요로 하며, Li값을 저장하는데 필요한 32비트의 레지스터를 사용하지 않아 면적 증가를 최소로 할 수 있게 된다.
도 13은 도 11을 이용한 3단계 매크로 파이프라인의 구성도로서, 64비트의 데이터를 DES 코어에 입출력하기 위해 소요되는 레이턴시를 숨기는 효과가 있다.
도 13을 참조하면, 8비트의 입출력(I/O) 버스를 갖는 시스템에서 데이터는 한 바이트(8비트)씩 입출력되기 때문에, 8개의 바이트를 수집하는 입력과정에 64비트의 입력 버퍼레지스터(Input Buffer Register; 이하 IBR이라 함, 1310)와, 64비트의 출력을 한 워드씩 분배하는 출력과정에 64비트의 출력 버퍼레지스터(Output Buffer Register; 이하 OBR이라 함, 1311)를 이용하여 입력과정과 DES 연산과정 및 출력과정의 3단계 매크로 파이프라인으로 입출력 과정의 레이턴시를 숨길 수 있다.
상기 IBR(1310)과 OBR(1311)은 모두 8개의 바이트 단위의 레지스터(Byte0 ∼ Byte7)로 구성되며, 버스로부터 한 개의 바이트를 입출력할 때 쉬프트되는 구조로 이루어진다.
도 14는 본 발명의 다른 실시예에 따른 파이프라인 구조의 8사이클 3중 DES 아키텍쳐를 도시한 구성도이다.
도 14를 참조하면, 주기 T를 갖는 주기적인 신호인 마스터 클럭으로부터 T시간 동안 지연되어 생성된 3T 주기의 두쌍으로 구성된 제1 내지 제6 게이트 클럭(EN_CLK1 ∼ EN_CLK6)과, 초기 치환부를 거친 64비트의 평문 블럭이 32비트의두 블럭으로 나뉘어진 것 중의 하나인 b0블럭을 다중화하는 제1 다중화부(1401)와, 제1 다중화부(1401)를 통한 출력인 32비트의 데이터를 키 스케쥴러(Key Schedule)로부터 생성된 보조키(KA)를 입력받아 암호화 변형하는 사이퍼 함수 fA(1470)와, 초기 치환부를 거친 64비트의 평문(Plain Text) 블럭이 32비트의 두 블럭으로 나뉘어진 것 중의 다른 하나인 a0블럭을 다중화하는 제2 다중화부(1402)와, 사이퍼 함수 fA(1470)에 의해 변형된 32비트의 데이터와, 제2 다중화부(1402)를 통한 출력을 연산하는 제1 배타적 논리합 연산부(1480)와, 제1 게이트 클럭(EN_CLK1)에 의해 제1 배타적 논리합 연산부(1480)를 통한 데이타를 저장하는 제1 왼쪽레지스터(A0)(1410)와, 제1 왼쪽레지스터(A0)(1410)에 저장된 데이타를 보조키(KB)를 입력받아 암호화 변형하는 사이퍼 함수 fB(1471)와, 사이퍼 함수 fB(1471)의 출력과 제1 다중화부(1401)의 출력을 연산하는 제2 배타적 논리합 연산부(1481)와, 제2 배타적 논리합 연산부(1481)를 통한 결과를 제2 게이트 클럭(EN_CLK2)에 의해 저장하는 제1 오른쪽레지스터(B0)(1420)와, 제1 오른쪽레지스터(B0)(1420)에 저장된 데이타를 보조키(KC)를 입력받아 암호화 변형하는 사이퍼 함수 fC(1472)와, 사이퍼 함수 fC(1472)를 통한 결과와 제1 왼쪽레지스터(A0)(1410)에 저장된 데이타를 연산하는 제3 배타적 논리합 연산부(1482)와, 제3 배타적 논리합 연산부(1482)를 통한 연산 결과를 제3 게이트 클럭(EN_CLK3)에 의해 저장하는 제2 왼쪽레지스터(C0)(1430)와, 제2 왼쪽레지스터(C0)(1430)에 저장된 데이타를 보조키(KD)를 입력받아, 암호화 변형하는 사이퍼 함수 fD(1473)와, 사이퍼 함수 fB(1473)의 출력과 제1 오른쪽레지스터(B0)(1420)의 출력을 연산하는 제4 배타적 논리합 연산부(1483)와, 제4 배타적 논리합 연산부(1483)를 통한 결과를 제4 게이트 클럭(EN_CLK4)에 의해 저장하는 제2 오른쪽레지스터(A1)(1440)와, 제2 오른쪽레지스터(A1)(1440)에 저장된 데이타를 보조키(KE)를 입력받아 암호화 변형하는 사이퍼 함수 fE(1474)와, 사이퍼 함수 fE(1474)를 통한 결과와 제2 왼쪽레지스터(C0)(1430)에 저장된 데이타를 연산하는 제5 배타적 논리합 연산부(1484)와, 제5 배타적 논리합 연산부(1484)를 통한 연산 결과를 제5 게이트 클럭(EN_CLK5)에 의해 저장하며 피드백 루프를 형성하여 자신의 데이타를 제2 다중화부(1402)로 출력하는 제3 왼쪽레지스터(B1)(1450)와, 제3 왼쪽레지스터(B1)(1450)의 데이타를 보조키(KF)를 입력받아 암호화 변형하는 사이퍼 함수 fF(1475)와, 사이퍼 함수 fF(1475)의 출력과 제2 오른쪽 레지스터(A1)(1440)에 저장된 데이타를 연산하는 제6 배타적 논리합 연산부(1485) 및 제6 배타적 논리합 연산부(1485)의 연산 결과를 제6 게이트 클럭(EN_CLK6)에 의해 저장하며, 다른 피드백 루프를 형성하여 자신의 데이타를 제1 다중화부(1401)로 출력하는 제3 오른쪽레지스터(C1)(1460)를 구비하여 이루어진다.
여기서, 제1 게이트 클럭(EN_CLK1)과 제4 게이트 클럭(EN_CLK4), 제2 게이트 클럭(EN_CLK2)와 제5 게이트 클럭(EN_CLK5) 및 제3 게이트 클럭(EN_CLK3)과 제6 게이트 클럭(EN_CLK6)은 각각 쌍을 이루는 바, 그 쌍들은 각각 동일한 위상이다.
도 15는 도 14에 따른 16 사이클 3중 DES 아키텍쳐의 동작 순서를 나타내는 타이밍도로서, 이하 도 15를 참조하여 상세하게 설명한다.
도 15는 두 개의 평문 블럭들을 16 사이클 동안 동시에 3중 DES 암호화할 수 있음을 보여주며, 상기 도 11와 도 12의 평문블럭 a0와 b0외에 co와 do를 시간 구간 [t3, t4]에서 액세스하여 d1값(d1= c0 f(d0, K1))을 연산하여 레지스터 A0(1410)에 입력함으로써 암호화 연산을 수행한다.
즉, 도 15에 도시된 바와 같이, 각 시간 구간 [t0, t1], [t1, t2], [t2, t3] 등에서 새로운 bi와 di값을 얻기 위해 사이퍼 함수 두 개씩 동시에 수행된다. 따라서, S-Box 치환부를 한 개씩 추가로 구현할 필요가 있다.
요컨대, S-Box 치환부를 두 개 구현하고 32비트의 입력 다중화부를 네 개 사용하는 두 개의 평문블럭을 동시에 암호화할 수 있는 파이프라인 구조로서, FSM에 의해 주기가 2T인 두 쌍의 게이트 클럭과 주기가 3T인 6개의 지연된 게이트 클럭을 선택적으로 생성시킬 수가 있어서, 파이프라인을 이용하지 않을 때에 전력소모를 최소화할 수 있다.
상기한 바와 같이 이루어지는 본 발명의 DES 암호화 장치는 다음과 같은 장점이 있다.
1. 종래의 DES 코어 이키텍쳐에서는 Ri와 Li값을 48번 계산하며 해당 레지스터에 저장하여 암호화를 수행하기 때문에 M단계의 파이프라인을 사용하여도 M 값에 관계없이 항상 48클럭 사이클의 레이턴시를 갖는 반면, 48 개의 Ri값만을 계산하여 교대로 6개의 레지스터에 저장하기 때문에 각 레지스터들은 8개의 Ri값만을 저장해서 8사이클로 암호화를 수행할 수 있으며, 각 레지스터는 주기가 6배 증가된 서로 다른 위상을 갖는 게이트 클럭에 의하여 데이터를 저장하기 때문에 각 레지스터의 스위칭 전력소모를 감소시킨다.
2. 저속 입출력 과정의 레이턴시를 DES를 연산에 숨기기 위해서, 입력 및 출력버퍼를 사용하여 입력과정과 DES 연산과정 및 출력과정으로 구성된 세 단계 매크로 파이프라인을 사용하는 바, 8비트 버스를 갖는 시스템에서 DES 코어에 64비트의 데이터를 입출력하기 위해서는 8클럭 싸이클이 필요로하나, 본 발명은 DES 연산과정을 가상의 8단계 마이크로 파이프라인을 사용하여 줄였기 때문에 입 출력과정과 DES 연산과정이 모두 8클럭 사이클이 걸린다. 따라서, 마크로 파이프라인 측면에서도 최대의 효과를 얻을 수 있다.
3. 게이트 클럭의 한 주기 동안에 집적화 시 면적을 가장 크게 차지하는 S-Box 치환부를 포함하는 6개의 사이퍼 함수를 필요로하나, 본 발명은 6개의 사이퍼 함수를 시분할시켜서 집적화시 면적을 크게 차지하는 S-Box 치환부를 한 개만을 사용하여 구현할 수 있으며, DES 연산에서 중간변수를 저장하는 레지스터를 제거할 수 있으므로 필요한 코어 레지스터의 수를 반으로 줄였다. 따라서, 집적화 시 면적 증가를 최소로 하였다.
4. FSM의 로직에 따라 두 종류의 게이트 클럭을 생성할 수 있기 때문에, 한 개의 S-Box 치환부와 두 개의 32비트 다중화부를 추가로 구현하면, 선택적으로 두 개의 평문 블럭을 파이프라인 구조를 이용하여 동시에 암호화할 수 있다.
따라서, 파이프라인 구조를 확장시켜 한 번에 처리할 수 있는 비암호화 입력 데이타의 수를 증가시킬 수 있다.
본 발명의 기술 사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 전문가라면 본 발명의 기술 사상의 범위내에서 다양한 실시예가 가능함을 이해할 수 있을 것이다.
상기와 같이 본 발명은, 48라운드의 3중 DES 연산을 6개의 게이트 클럭을 사용하는 가상의 6단계 마이크로 파이프라인 구조를 사용하여 네싸이클로 수행하여 스위칭 전력소모를 감소시킬 수 있으며, 저속의 입출력 과정에서 발생하는 레이턴시를 DES 연산에 숨기는 3단계 마이크로 파이프라인의 효율을 극대화시킬 수 있는 효과가 있다.
또한, 본 발명은 집적화 시 면적 증가를 최소화 시킬 수 있으며, 파이프라인 구조를 확장시켜 한 번에 처리할 수 있는 비암호화 입력 데이타의 수를 증가시킬 수 효과가 있다.
Claims (14)
- 디이에스 암호화 장치에 있어서,주기 T를 갖는 주기적인 신호인 마스터 클럭으로부터 T시간 동안 지연되어 생성되며 서로 위상이 다른 6T 주기의 제1 내지 제6 게이트 클럭을 쉬프트레지스터의 제어신호로 이용하는 것을 특징으로 하는 디이에스 암호화 장치.
- 제 1 항에 있어서,상기 제1 내지 제6 게이트 클럭은, 다음의 수식Ri= Ri-2 f(Ri-1, Ki) , 여기서 i=1,2,...,48, R-1= L0,는 배타적 논리합 연산을 의미함.에 근거하여 Ri를 연산하는데 걸리는 시간을 T라 할 때, 주기가 T인 마스터 클럭으로부터 FSM(Finite State Machine) 또는 카운터를 이용하여 생성한 서로 T시간 동안 지연된 6T 주기 값을 갖는 6개의 게이트 클럭 임을 특징으로 하는 디이에스 암호화 장치.
- 제 2 항에 있어서,상기 제1 내지 제6 게이트 클럭으로 구동시킬 수 있는 8개의 바이트 단위의 쉬프트레지스터로 구성된 64비트 입력버퍼 레지스터 및 출력버퍼 레지스터를 구비하며 매크로 파이프라인을 이용하는 것을 특징으로 하는 디이에스 암호화 장치.
- 주기 T를 갖는 주기적인 신호인 마스터 클럭으로부터 T시간 동안 지연되어 생성된 6T 주기의 제1 내지 제6 게이트 클럭;초기 치환부를 거친 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 게이트 클럭에 의해 저장하는 제2 왼쪽레지스터;상기 제2 왼쪽레지스터에 저장된 데이타를 제4 보조키를 입력받아 암호화 변형하는 제4 사이퍼 함수;상기 제4 사이퍼 함수의 출력과 상기 제1 오른쪽레지스터의 출력을 연산하는 제4 배타적 논리합 연산부;상기 제4 배타적 논리합 연산부를 통한 결과를 상기 제4 게이트 클럭에 의해 저장하는 제2 오른쪽레지스터;상기 제2 오른쪽레지스터에 저장된 데이타를 제5 보조키를 입력받아 암호화 변형하는 제5 사이퍼 함수;상기 제5 사이퍼 함수를 통한 결과와 상기 제2 왼쪽레지스터에 저장된 데이타를 연산하는 제5 배타적 논리합 연산부;상기 제5 배타적 논리합 연산부를 통한 연산 결과를 상기 제5 게이트 클럭에 의해 저장하며, 피드백 루프를 형성하여 자신의 데이타를 상기 제2 다중화부로 출력하는 제3 왼쪽레지스터;상기 제3 왼쪽레지스터의 데이타를 제6 보조키를 입력받아 암호화 변형하는 제6 사이퍼 함수;상기 제6 사이퍼 함수의 출력과 상기 제2 오른쪽 레지스터에 저장된 데이타를 연산하는 제6 배타적 논리합 연산부; 및상기 제6 배타적 논리합 연산부의 연산 결과를 상기 제6 게이트 클럭에 의해 저장하며, 다른 피드백 루프를 형성하여 자신의 데이타를 상기 제1 다중화부로 출력하는 제3 오른쪽레지스터를 포함하여 이루어지는 3중 디이에스 암호화 장치.
- 제 4 항에 있어서,상기 제1 내지 제6 게이트 클럭은, 다음의 수식Ri= Ri-2 f(Ri-1, Ki) , 여기서 i=1,2,...,48, R-1= L0,는 배타적 논리합 연산을 의미함.에 근거하여 Ri를 연산하는데 걸리는 시간을 T라 할 때, 주기가 T인 마스터 클럭으로부터 FSM(Finite State Machine) 또는 카운터를 이용하여 생성한 서로 T시간 동안 지연된 6T 주기 값을 갖는 6개의 게이트 클럭 임을 특징으로 하는 3중 디이에스 암호화 장치.
- 제 4 항에 있어서,상기 각 레지스터는 상기 각 게이트 클럭의 상승에 응답하여 동작하는 것을 특징으로 하는 3중 디이에스 암호화장치.
- 디이에스 암호화 장치에 있어서,주기 T를 갖는 주기적인 신호인 마스터 클럭으로부터 T시간 동안 지연되어 생성된 3T 주기의 두쌍으로 구성된 제1 내지 제6 게이트 클럭을 쉬프트레지스터의 제어신호로 이용하는 것을 특징으로 하는 디이에스 암호화 장치.
- 제 7 항에 있어서,상기 제1 내지 제6 게이트 클럭은, 다음의 수식Ri= Ri-2 f(Ri-1, Ki) , 여기서 i=1,2,...,48, R-1= L0,는 배타적 논리합 연산을 의미함.에 근거하여 Ri를 연산하는데 걸리는 시간을 T라 할 때, 주기가 T인 마스터 클럭으로부터 FSM(Finite State Machine) 또는 카운터를 이용하여 생성한 서로 T시간 동안 지연된 3T 주기 값을 갖는 6개의 게이트 클럭 임을 특징으로 하는 디이에스 암호화 장치.
- 제 7 항에 있어서,상기 제1 내지 제6 게이트 클럭으로 구동시킬 수 있는 8개의 바이트 단위의 쉬프트레지스터로 구성된 64비트 입력버퍼 레지스터 및 출력버퍼 레지스터를 구비하며 매크로 파이프라인을 이용하는 것을 특징으로 하는 디이에스 암호화 장치.
- 제 7 항 내지 제 9 항 중 어느 한 항에 있어서,상기 제1 게이트 클럭과 제4게이트 클럭, 제2 게이트 클럭과 제5 게이트 클럭 및 제3 게이트 클럭과 제6 게이트 클럭은 각각 쌍을 이루며, 이러한 각 쌍을 이루는 게이트 클럭은 서로 위상이 동일한 것을 특징으로 하는 디이에스 암호화 장치.
- 주기 T를 갖는 주기적인 신호인 마스터 클럭으로부터 T시간 동안 지연되어생성된 3T 주기의 두쌍으로 구성된 제1 내지 제6 게이트 클럭;초기 치환부를 거친 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 게이트 클럭에 의해 저장하는 제2 왼쪽레지스터;상기 제2 왼쪽레지스터에 저장된 데이타를 제4 보조키를 입력받아 암호화 변형하는 제4 사이퍼 함수;상기 제4 사이퍼 함수의 출력과 상기 제1 오른쪽레지스터의 출력을 연산하는 제4 배타적 논리합 연산부;상기 제4 배타적 논리합 연산부를 통한 결과를 상기 제4 게이트 클럭에 의해 저장하는 제2 오른쪽레지스터;상기 제2 오른쪽레지스터에 저장된 데이타를 제5 보조키를 입력받아 암호화 변형하는 제5 사이퍼 함수;상기 제5 사이퍼 함수를 통한 결과와 상기 제2 왼쪽레지스터에 저장된 데이타를 연산하는 제5 배타적 논리합 연산부;상기 제5 배타적 논리합 연산부를 통한 연산 결과를 상기 제5 게이트 클럭에 의해 저장하며, 피드백 루프를 형성하여 자신의 데이타를 상기 제2 다중화부로 출력하는 제3 왼쪽레지스터;상기 제3 왼쪽레지스터의 데이타를 제6 보조키를 입력받아 암호화 변형하는 제6 사이퍼 함수;상기 제6 사이퍼 함수의 출력과 상기 제2 오른쪽 레지스터에 저장된 데이타를 연산하는 제6 배타적 논리합 연산부; 및상기 제6 배타적 논리합 연산부의 연산 결과를 상기 제6 게이트 클럭에 의해 저장하며, 다른 피드백 루프를 형성하여 자신의 데이타를 상기 제1 다중화부로 출력하는 제3 오른쪽레지스터를 포함하여 이루어지는 3중 디이에스 암호화 장치.
- 제 11 항에 있어서,상기 제1 내지 제6 게이트 클럭은, 다음의 수식Ri= Ri-2 f(Ri-1, Ki) , 여기서 i=1,2,...,48, R-1= L0,는 배타적 논리합 연산을 의미함.에 근거하여 Ri를 연산하는데 걸리는 시간을 T라 할 때, 주기가 T인 마스터 클럭으로부터 FSM(Finite State Machine) 또는 카운터를 이용하여 생성한 서로 T시간 동안 지연된 3T 주기 값을 갖는 6개의 게이트 클럭 임을 특징으로 하는 3중 디이에스 암호화 장치.
- 제 11 항에 있어서,상기 각 레지스터는 상기 각 게이트 클럭의 상승에 응답하여 동작하는 것을특징으로 하는 3중 디이에스 암호화장치.
- 제 11 항 내지 제 13 항 중 어느 한 항에 있어서,상기 제1 게이트 클럭과 제4게이트 클럭, 제2 게이트 클럭과 제5 게이트 클럭 및 제3 게이트 클럭과 제6 게이트 클럭은 각각 쌍을 이루며, 이러한 각 쌍을 이루는 게이트 클럭은 서로 위상이 동일한 것을 특징으로 하는 디이에스 암호화 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020010069136A KR20030037890A (ko) | 2001-11-07 | 2001-11-07 | 디이에스 암호화 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020010069136A KR20030037890A (ko) | 2001-11-07 | 2001-11-07 | 디이에스 암호화 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20030037890A true KR20030037890A (ko) | 2003-05-16 |
Family
ID=29568336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020010069136A KR20030037890A (ko) | 2001-11-07 | 2001-11-07 | 디이에스 암호화 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20030037890A (ko) |
-
2001
- 2001-11-07 KR KR1020010069136A patent/KR20030037890A/ko not_active IP Right Cessation
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4128395B2 (ja) | データ変換装置 | |
AU767323B2 (en) | Block encryption device using auxiliary conversion | |
KR100377172B1 (ko) | 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러 | |
KR100377176B1 (ko) | 데이터 암호화 표준 알고리즘을 이용한 암호화 장치 | |
JP2004233427A (ja) | Aes暗号処理装置、aes復号処理装置、および、aes暗号・復号処理装置 | |
KR100377175B1 (ko) | 데이터 암호화 표준 알고리즘을 이용한 암호화 장치 | |
WO2009031883A1 (en) | Encryption processor | |
US6931127B2 (en) | Encryption device using data encryption standard algorithm | |
CN109150495B (zh) | 一种轮变换复用电路及其aes解密电路 | |
Blaze et al. | The MacGuffin block cipher algorithm | |
CN108809627B (zh) | 轮变换复用电路及aes解密电路 | |
JP5182295B2 (ja) | 暗号化装置及び暗号処理方法 | |
KR101662291B1 (ko) | 경량 블록암호 lea 기반 암호화 및 복호화 장치 | |
CN108989018B (zh) | 一种aes加密单元、aes加密电路及加密方法 | |
KR20030037890A (ko) | 디이에스 암호화 장치 | |
KR100377173B1 (ko) | 데이터 암호화 표준 알고리즘을 이용한 암호화 장치 | |
KR20020082540A (ko) | 디이에스 암호화 장치 | |
KR100316024B1 (ko) | 데이터 암호 표준 알고리즘을 이용한 암호화 장치 | |
KR100384873B1 (ko) | 데이터 암호화 표준 알고리즘을 이용한 암호화 장치 | |
Jain et al. | An Inner Round Pipeline Architecture Hardware Core for AES | |
CN109936440B (zh) | Aes解密电路中的复用轮变换运算单元和构建方法 | |
KR20030087893A (ko) | 라운드 키의 온라인 계산 기능을 갖는 모듈화 구조의 AESRijndael 라운드 키 생성 회로 | |
CN109033894B (zh) | 普通轮变换运算单元、普通轮变换电路及其aes加密电路 | |
KR100418575B1 (ko) | 암호블럭연쇄 방식의 디이에스 암호화 장치 | |
Lim | Efficient 8-cycle DES implementation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
SUBM | Submission of document of abandonment before or after decision of registration |