KR100377172B1 - 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러 - Google Patents

데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러 Download PDF

Info

Publication number
KR100377172B1
KR100377172B1 KR10-2000-0032451A KR20000032451A KR100377172B1 KR 100377172 B1 KR100377172 B1 KR 100377172B1 KR 20000032451 A KR20000032451 A KR 20000032451A KR 100377172 B1 KR100377172 B1 KR 100377172B1
Authority
KR
South Korea
Prior art keywords
register
bit
key
bits
shift
Prior art date
Application number
KR10-2000-0032451A
Other languages
English (en)
Other versions
KR20010111784A (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-0032451A priority Critical patent/KR100377172B1/ko
Priority to JP2001179331A priority patent/JP2002040933A/ja
Priority to US09/879,793 priority patent/US7123720B2/en
Priority to GB0114389A priority patent/GB2367462B/en
Priority to TW090117895A priority patent/TW522698B/zh
Publication of KR20010111784A publication Critical patent/KR20010111784A/ko
Application granted granted Critical
Publication of KR100377172B1 publication Critical patent/KR100377172B1/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
    • 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
    • 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

Abstract

본 발명은 데이터 암호화 표준 알고리즘을 사용한 암호화 장치에 관한 것으로 특히, 8라운드로 작동하는 데이터 암호화 표준 알고리즘을 사용한 암호화 장치에서 보조키를 발생하는 키스케쥴러에 관한 것으로, 레지스터의 면적을 반으로 줄인 암호화 장치의 키 스케쥴러를 제공하기 위한 것으로, 이를 위하여 본 발명은, 56비트의 키를 입력받아 치환하는 제1 치환선택부; 클럭 신호에 따라 상기 제1치환선택부에 의해서 치환된 56비트의 블럭을 28비트의 두 블럭으로 나누어 각각 저장하는 제1레지스터 및 제2레지스터; 상기 제1 및 제2레지스터로부터의 28비트의 키 블럭을 각각 왼쪽으로 제1 소정의 비트수만큼 쉬프트시키고 쉬프트된 두 개의 28비트 블록을 상기 제1 레지스터 및 상기 제2 레지스터로 출력하는 제1쉬프트부 및 제2쉬프트부; 상기 제1 레지스터 및 상기 제2레지스터로부터의 상기 28비트의 키 블럭을 입력받아 48비트의 제1 보조키를 생성하기 위한 제2 치환선택부; 상기 제1 레지스터 및 상기 제2레지스터의 출력을 입력받아서 왼쪽으로 제2 소정의 비트수만큼 쉬프트하는 제3 쉬프트부 및 제4 쉬프트부; 및 상기 제3 쉬프트부 및 상기 제4 쉬프트부의 출력을 입력받아서 48비트의 제2 보조키를 생성하기 위한 제3 치환선택부를 포함하는 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키 스케쥴러를제공한다.

Description

데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키 스케쥴러{Key Scheduller of encryption device using data encryption standard algorithm}
본 발명은 데이터 암호화 표준(Data Encryption Standard; 이하 DES라 함) 알고리즘을 이용한 암호화 장치에 관한 것으로, 특히 키를 발생하는 키 스케쥴러에 관한 것이다.
일반적으로 데이터 암호화 표준 알고리즘은 가장 널리 쓰이고 있는 암호화 방식으로 네트워킹 사용이 증가함에 따라 그 중요성을 더해 가고 있다. 특히, 보안 인터넷 응용이나 원격 접근 서버나 케이블 모뎀과 위성용 모뎀 등의 분야에서 많이 이용되고 있다.
DES는 기본적으로 64비트 블럭의 입력 및 출력을 가지는 64비트 블럭 암호이며, 64비트의 키 블럭 중 56비트가 암호화 및 복호화에 사용되고, 나머지 8비트는 패리티 검사용으로 사용된다. 또한. 64비트의 평문(Plain Text) 블럭과 56비트의 키(Key)를 입력으로 해서 64비트의 암호문(Ciper Text) 블럭을 출력하는 암호화 장치이다.
도1은 DES 알고리즘을 설명하기 위한 블럭도이다.
도1을 참조하면, 종래기술에 따른 암호화 장치의 알고리즘은 먼저 64비트의 평문(Plain Text) 블럭을 초기 치환(IP : Initial Permutation)을 수행하는 초기치환부(110)와, 다음에 초기 치환부(110)의 64비트의 블럭을 두개의 32비트 블럭으로 나누어 왼쪽레지스터(Li)와 오른쪽레지스터(Ri)에 저장한 후, 사이퍼(Cipher) 함수 f로 수행되는 16라운드의 곱 변형(Product Transformation)과 왼쪽레지스터(Li)와 오른쪽레지스터를(Ri)를 매 라운드마다 교환하는 16라운드의 블록 변형(Block Transformation)을 수행하는 기본연산부(120)와, 16라운드에 걸친 변형이 끝난 후 역초기 치환(IP-1)을 거쳐서 암호화된 암호문(Cipher Text)을 출력하는 역초기치환부(130)로 구성되어 있다.
기본연산부(120)에서의 곱 변형은 오른쪽레지스터(Ri)에 저장된 32비트의 블럭을 키 스케쥴러에 의해서 생성된 보조키(Subkey) Ki와 함께 입력시켜서 암호화 연산을 수행하는 사이퍼 함수부(f)(121)와, 사이퍼 함수 f의 결과를 왼쪽레지스터(Li)에 저장된 32비트의 블럭과 함께 배타적 논리합하는 배타적 논리합 연산부(122)로 구성되어 있다.
배타적 논리합 연산부(122)의 32비트의 데이터는 다음 라운드의 오른쪽레지스터(Ri+1)에 저장되고 오른쪽레지스터(Ri)에 저장된 32비트의 데이터는 다음 라운드의 왼쪽레지스터(Li+1)에 교환(Swapping)되어 저장됨으로 블럭 변형이 수행된다. 이러한 1라운드의 연산이 반복되어 16라운드가 수행되는 것이다.
초기치환부(110)을 거친 64비트의 평문(Plain Text) 블럭을 둘로 나누어 왼쪽레지스터(L0)와 오른쪽레지스터(R0)에 입력하면 16회의 각 라운드는 다음 수학식1과 수학식2로 표현가능하다.
Lii-1
f(Ri-1i
도2는 보조키(Subkey)를 발생하는 키 스케쥴러를 설명하기 위한 블럭도이다.
도2를 참조하면, 키 스케쥴러는 56비트의 키(Key)를 입력받아서 제1치환선택부(PC1 : Permutation Choice 1)(200)에 의해서 치환된 56비트의 블럭을 28비트의 두 블럭으로 나누어서 변수 C0와 D0에 저장한 후, 제1 및 제2쉬프트부(220, 230)에 의해 변수 Ci와 Di에 (i=1, 2, ..., 16) 저장된 값을 각각 왼쪽으로 한자리 또는 두자리씩 쉬프트하며 다음 라운드의 변수 Ci+1과 Di+1에 저장함과 동시에, 변수 Ci와 Di에 (i=1, 2, ..., 16) 저장된 두개의 28비트의 블럭을 입력받는 제2치환선택부(PC2 : Permutation Choice 2)(240)에 의해 치환된 48비트의 보조키(Subkey) Ki를 출력함으로써 16라운드의 연산에 필요한 보조키를 생성한다.
16라운드 동안 Ci와 Di는 28자리 수만큼 쉬프트가 되어 C0와 C16그리고 D0와 D16은 서로 같은 데이터가 된다.
도3은 일반적인 DES 코아의 아키텍쳐와 S-Box 치환부의 상세한 블럭도이다.
도3을 참조하면, DES 코아는 32비트의 텍스트 블럭 R(i-1)을 저장하고 있는 오른쪽레지스터로부터 32비트의 데이터를 입력받아 48비트의 데이터로 확장 치환하는 확장치환부(310)와, 확장치환부의 48비트의 데이터를 입력받고 키 스케쥴러로부터의 보조키(Ki)를 입력받아 배타적 논리합 연산을 수행하는 배타적 논리합 연산부(320)와, 배타적 논리합 연산부(320)로부터의 48비트의 데이터를 32비트의 데이터로 치환하는 S-Box 치환부(330)와, S-Box 치환부(330)의 32비트의 데이터를 치환하는 P-Box 치환부(340)와, P-Box 치환부의 32비트의 데이터와 왼쪽레지스터에 저장되어 있는 32비트의 블럭 L(i-1)을 입력받아 배타적 논리합하는 배타적 논리합 연산부(350)를 구비한다.
키 스케쥴러는 제1치환선택부(PC1 : Permutation Choice 1)(360)으로부터 56비트의 키(Key)를 입력받아서 28비트의 두 블럭으로 나누어서 각각 왼쪽으로 한자리 또는 두자리씩 쉬프트하는 쉬프트부(370, 380)와, 상기 28비트의 두 블럭을 입력시켜 48비트의 보조키를 생성하는 제2치환선택부(PC2 : Permutation Choice 2)(390)를 구비한다.
구체적으로, S-Box 치환부는 48비트의 입력을 받아서 32비트의 출력을 생성하는 8 개의 S-Box로 구성되어 있다. 즉, 48비트의 데이터는 8 개의 6비트 데이터로 분할되어 8 개의 S-Box에 입력된다. 이 8 개의 S-Box들은 8 개의 4비트 출력을 내보냄으로써 48 비트를 32비트로 줄인다. S-Box 치환부(330)는 테이블 룩-업(Look-up) 방식으로 대치됨으로써 프로그램가능 논리 어레이(PLA)나 롬(ROM)과 같은 기억장치를 필요로 한다. 6비트의 입력에 대하여 4비트를 출력하기 때문에 각 S-Box는 64 × 4 의 기억 용량이 필요하며 전체적으로 8개의 S-Box로 구성되어 있으므로 8 × 64 × 4의 기억장치가 필요하다. 따라서 전체적으로 칩에서 차지하는 면적이 상대적으로 크다
이상과 같이 동일한 연산 구조를 16회 반복하는 루우프로 구성된 DES 알고리즘을 구현하기 위해서, 종래의 아키텍쳐는 도3과 같이 한 개의 라운드를 기본 연산부로 하여 하드웨어를 구현하였으나, 최근 2 내지 16개의 라운드를 기본 연산부로 하는 루우프 전개 아키텍쳐가 대두되고 있다. 이 방식은 합성시 각 라운드간의 슬랙(Slack, Time Margin)을 효율적으로 줄이고 주변 최적화(Boundary Optimization) 합성 기법을 통해 집적화시 면적을 줄이는 효과가 있다. 이 루우프 전개 아키텍쳐는 한 클럭 사이클 당 두 개의 라운드를 연산하기 때문에, 암호화를 8 클럭 사이클 안에 수행할 수 있으나, 집적화시에 면적을 크게 차지하는 S-Box 치환부가 두개 필요하다.
도4는 루우프 전개 사이퍼 함수를 사용한 DES 코어의 아키텍쳐이다.
도4를 참조하면, 루우프 전개 사이퍼 함수를 사용한 DES코어의 아키텍쳐는 데이터와 키(Key)를 입력받아 치환하는 초기 치환부(400)와, 초기 치환부(400)에서 치환된 데이터와 제1레지스터(450)를 통하여 피드백된 데이터 중 하나를 선택하는 제1멀티플렉서(410)와, 초기치환부에서 치환된 키와 제2레지스터(460)를 통하여 피드백된 키 중 하나를 선택하는 제2멀티플렉서(420)와, 제1 및 제2멀티플렉서로부터 출력된 데이터와 키를 입력받아 홀수번째 라운드의 암호화 연산을 수행하는 제1조합논리회로부(430)와, 제1조합논리회로부(430)의 출력을 입력받아 짝수번째 라운드의 암호화 연산을 수행하는 제2조합논리회로부(440)와 제2조합논리회로부(440)로부터 출력된 데이터를 저장하는 제1레지스터(450)와, 제2조합논리회로부(440)로부터 출력된 키를 저장하는 제2레지스터(460)와, 제1레지스터(450)로부터 출력된 데이터를 입력받아 치환하여 최종 암호문을 생성하는 최종 치환부(470)를 구비한다.
도5a와 도5b는 루우프 전개 사이퍼 함수에서 사용되는 제1 및 제2조합논리회로와 DES 아키텍쳐의 상세한 블럭도이다.
도5a와 도5b를 참조하면, 도4의 제1 및 제2조합논리회로는 DES 알고리즘의 두개 라운드를 하드웨어로 구현한 것으로 도5a에 도시되어 있는 것과 같이 루우프 전개 사이퍼 함수와 키 스케쥴러의 조합 논리회로 부분을 나타낸다. 한 클럭 사이클 동안 키 스케쥴러가 두개의 보조키 Km및 Kn을 생성하면, 루우프 전개 사이퍼 함수는 이들의 보조키를 입력받아 두 개의 사이퍼 함수 fm및 fn과 두개의 배타 논리합 연산자들로 구성된 DES 알고리즘의 두개 라운드를 수행한다. 즉,루우프 전개 사이퍼 함수는 두개의 보조키 Km및 Kn과 레지스터 A,B의 출력 RA및 RB를 입력으로 받아 두 개의 연산된 출력 RC와 RD를 다음 클럭 사이클에서 해당 레지스터에 입력한다.
도6은 루우프 전개 사이퍼 함수의 상세한 구성을 나타내는 블럭도이다.
도6을 참조하면, 루우프 전개 사이퍼 함수는 32비트의 텍스트 블럭을 저장하고 있는 레지스터(RB)로부터 32비트의 데이터를 입력받아 48비트의 데이터로 확장 치환하는 확장치환부(610)와, 확장치환부(610)의 48비트의 데이터를 입력받고 키 스케쥴러로부터의 보조키(Km)를 입력받아 배타적 논리합 연산을 수행하는 배타적 논리합 연산부(620)와, 배타적 논리합 연산부(620)로부터의 48비트의 데이터를 32비트의 데이터로 대치 치환하는 S-Box 치환부(630)와, S-Box 치환부(630)의 32비트의 데이터를 복사 치환하는 P-Box 치환부(640)와, P-Box 치환부(640)의 32비트의 데이터와 레지스터(RA)에 저장되어 있는 32비트의 데이터를 입력받아 배타적 논리합하여 레지스터(RC)로 출력하는 배타적 논리합 연산부(650)를 구비하며, 이러한 구성을 갖고 레지스터(RD)로 데이터를 출력하는 또 다른 루우프 전개 사이퍼 함수를 하나 더 구비한다.
레지스터 A, B에 32비트의 데이터 R2i-3, R2i-2이 저장되어 있고 키 스케쥴러가 연속된 두개의 키 K2i-1과 K2i를 공급한다고 가정하면, 다음 수학식3과 수학식4에 의해 32비트의 데이터 R2i-1과 R2i의 값들을 한 클럭 사이클 동안 연산한다.
f(R2i-2, K2i-1) i=1,2,...,8
f(R2i-1, K2i) i=1,2,...,8
도7은 종래기술의 두 개의 연산부로 구성된 키 스케쥴러 아키텍쳐를 설명하기 위한 블럭도이다.
도7을 참조하면, 종래기술의 키 스케쥴러는 56비트의 키(Key)를 입력받아서 치환하는 제1치환선택부(PC1 : Permutation Choice 1)(700)와, 제1치환선택부(700)에 의해서 치환된 56비트의 블럭을 28비트의 두 블럭으로 나누어서 제1클럭(CLK1)에 의해서 저장하는 제1레지스터(Cm)(710) 및 제2레지스터(Dm)(720)와, 제1레지스터 및 제2레지스터의 28비트의 키(Key) 블럭을 각각 왼쪽으로 두자리, 세자리 또는 네자리씩 쉬프트하는 제1쉬프트부(730) 및 제2쉬프트부(740)와, 제1레지스터 및 제2레지스터의 28비트의 키(Key) 블럭을 입력받아 48비트의 보조키(Km)를 생성하는 제2치환선택부(PC2 : Permutation Choice 2)(750)로 8라운드로 동작하는 제1유닛이 구성되고 제1유닛과 같은 구성을 갖는 제2유닛이 더 포함된다.
8라운드 동안 제1유닛은 K2i-1을, 제2유닛은 K2i를 생성하게 한다. 즉 제1유닛은 누적된 쉬프트 비트 수가 1, 4, 8, 12, 15, 19, 23, 27이 되도록 8 클럭 사이클 동안 1비트, 2비트, 3비트, 또는 4비트씩 왼쪽으로 쉬프트시키고, 제2유닛은 누적된 비트 수가 2, 6, 10, 14, 17, 21, 25, 28이 되도록 8 클럭 사이클 동안 2비트, 3비트, 또는 4비트씩 왼쪽으로 쉬프트시킨다.
상기와 같은 구성을 가지고 한 클럭당 두 개의 보조키를 발생시키는 키 스케쥴러는 도2에서 도시한 바와 같이 두 개의 28비트 레지스터와 왼쪽 쉬프터를 사용하여 각 라운드마다 1비트 또는 2비트씩 왼쪽으로 쉬프트하여 한 개의 보조키를 발생시키는 키스케쥴러에 비교해서 모두 네 개의 레지스터와 쉬프터가 필요하며 레지스터가 차지하는 면적이 커서 집적화시 문제가 된다.
본 발명은 상기와 같은 종래 기술의 문제점을 해결하기 위하여 안출된 것으로써, 레지스터의 면적을 반으로 줄인 암호화 장치의 키 스케쥴러를 제공하는데 그 목적이 있다.
도1은 DES 알고리즘을 설명하기 위한 블럭도,
도2는 보조키(Subkey)를 발생하는 키 스케쥴러(Key Scheduler)을 설명하기 위한 블럭도,
도3은 일반적인 DES 코아의 아키텍쳐와 S-Box 치환부의 상세한 블럭도,
도4는 루우프 전개 사이퍼 함수를 사용한 DES 코어의 아키텍쳐,
도5a와 도5b는 루우프 전개 사이퍼 함수에서 사용되는 제1 및 제2조합논리회로와 DES 아키텍쳐의 상세한 블럭도,
도6은 루우프 전개 사이퍼 함수의 상세한 구성을 나타내는 블럭도,
도7은 종래기술의 두 개의 연산부로 구성된 키 스케쥴러 아키텍쳐를 설명하기 위한 블럭도,
도8은 본 발명의 기본 연산부 하나만을 사용한 키 스케쥴러 아키텍쳐의 구성을 나타내는 블럭도,
도9는 기본 연산부만를 사용한 키 스케쥴러의 또 다른 실시예를 도시한 블럭도,
도10은 본 발명의 키 스케쥴러 아키텍쳐의 동작을 나타내는 타이밍도,
도11은 본 발명의 시분할 사이퍼 함수를 이용한 DES 코어에 매크로 파이프라인을 적용한 DES 아키텍쳐의 블럭도,
도12는 본 발명의 루우프 전개 사이퍼 함수를 이용한 DES 코어에 매크로 파이프라인을 적용한 DES 아키텍쳐의 구성을 나타내는 블럭도,
도13은 본 발명의 상기 루우프 전개 사이퍼 함수를 이용한 DES 코어에 매크로 파이프라인을 적용한 DES 아키텍쳐의 동작 순서를 나타내는 타이밍도,
도14는 매크로 파이프라인의 효과를 나타낸 타이밍도.
* 도면의 주요부분에 대한 부호의 설명 *
800 : 제1치환선택부 810 : 제1레지스터
820 : 제2레지스터 830 : 제1쉬프트부
840 : 제2쉬프트부 850 : 제2치환선택부
상기 목적을 달성하기 위하여 본 발명의 일실시예에 따른 키 스케쥴러는 데이터 암호화 표준 알고리즘을 이용한 암호화 장치에 있어서, 56비트의 키를 입력받아 치환하는 제1 치환선택부; 클럭 신호에 따라 상기 제1치환선택부에 의해서 치환된 56비트의 블럭을 28비트의 두 블럭으로 나누어 각각 저장하는 제1레지스터 및 제2레지스터; 상기 제1 및 제2레지스터로부터의 28비트의 키 블럭을 각각 왼쪽으로 제1 소정의 비트수만큼 쉬프트시키고 쉬프트된 두 개의 28비트 블록을 상기 제1 레지스터 및 상기 제2 레지스터로 출력하는 제1쉬프트부 및 제2쉬프트부; 상기 제1 레지스터 및 상기 제2레지스터로부터의 상기 28비트의 키 블럭을 입력받아 48비트의 제1 보조키를 생성하기 위한 제2 치환선택부; 상기 제1 레지스터 및 상기 제2레지스터의 출력을 입력받아서 왼쪽으로 제2 소정의 비트수만큼 쉬프트하는 제3 쉬프트부 및 제4 쉬프트부; 및 상기 제3 쉬프트부 및 상기 제4 쉬프트부의 출력을 입력받아서 48비트의 제2 보조키를 생성하기 위한 제3 치환선택부를 포함한다.상기 목적을 달성하기 위하여 본 발명의 다른 실시예에 따른 키 스케쥴러는 데이터 암호화 표준 알고리즘을 이용한 암호화 장치에 있어서, 56비트의 키를 입력받아 치환하는 제1 치환선택부; 클럭 신호에 따라 상기 제1치환선택부에 의해서 치환된 56비트의 블럭을 28비트의 두 블럭으로 나누어 각각 저장하는 제1레지스터 및 제2레지스터; 상기 제1 및 제2레지스터로부터의 28비트의 키 블럭을 각각 왼쪽으로 제1 소정의 비트수만큼 쉬프트시키고 쉬프트된 두 개의 28비트 블록을 상기 제1 레지스터 및 상기 제2 레지스터로 출력하는 제1쉬프트부 및 제2쉬프트부; 상기 제1 레지스터 및 상기 제2레지스터로부터의 상기 28비트의 키 블럭을 입력받아 48비트의 제1 보조키를 생성하기 위한 제2 치환선택부; 상기 제1 레지스터 및 상기 제2레지스터의 출력을 입력받아서 오른쪽으로 제2 소정의 비트수만큼 쉬프트하는 제3 쉬프트부 및 제4 쉬프트부; 및 상기 제3 쉬프트부 및 상기 제4 쉬프트부의 출력을 입력받아서 48비트의 제2 보조키를 생성하기 위한 제3 치환선택부를 포함한다.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부한 도면을 참조하여 설명하기로 한다.
도8은 본 발명의 기본 연산부 하나만을 사용한 키 스케쥴러 아키텍쳐의 구성을 나타내는 블럭도이다.
도8을 참조하면, 본 발명의 키 스케쥴러는 56비트의 키(Key)를 입력받아 치환하는 제1치환선택부(800)와, 제1치환선택부(800)에 의해서 치환된 56비트의 블럭을 28비트의 두 블럭으로 나누어서 클럭(CLK)에 의해서 저장하는 제1레지스터(Cm)(810) 및 제2레지스터(Dm)(820)와, 제1레지스터 및 제2레지스터의 28비트의 키(Key) 블럭을 각각 왼쪽으로 두자리, 세자리 또는 네자리씩 쉬프트하는 제1쉬프트부(830) 및 제2쉬프트부(840)와, 제1레지스터 및 제2레지스터의 28비트의 키(Key) 블럭을 입력받아 48비트의 보조키(Km)를 생성하는 제2치환선택부(PC2 : Permutation Choice 2)(850)와, 제1 및 제2레지스터(810, 820)의 출력을 입력받아서 왼쪽으로 한자리 또는 두자리씩 쉬프트하는 제3 및 제4쉬프트부(860, 870)와, 제3 및 제4쉬프트부(860, 870)의 출력을 입력받아서 48비트의 보조키를 생성하는 제2치환선택부(PC2)(880)를 구비한다.
본 발명의 키 스케쥴러는 8라운드로 동작하는 제1기본 연산부 하나만을 사용해서 i번째 라운드에서 보조키 K2i-1을 연산한다. 제1 및 제2레지스터(Cm, Dm)는 제1치환선택부(800)를 거친 초기 키를 입력받거나, 제1 및 제2레지스터(810, 820)의 출력을 제1 및 제2쉬프트부(830, 840)에 의해 쉬프트 시킨 값을 다음 클럭 사이클에서 저장한다. 각 라운드에서 왼쪽 쉬프터가 쉬프트하는 비트수 Sm은 3, 4, 4, 3, 4, 4, 4, 2(1)이다.
도8의 도표에서 알 수 있듯이, i번째 라운드에서 보조키 K2i-1을 얻기위한 누적된 쉬프트 비트 수 TSm과 보조키 K2i를 얻기위한 누적된 쉬프트 비트수 TSn은, TSn-TSm=Dm이라 할 때, 다음과 같은 관계가 있다. 첫번째 라운드(P0)에서 변수 Dm=1이고, 여덟번째 라운드(P7)에서 초기 키를 새로이 저장할 경우에는 변수 Dm=0이며, 동일한 키를 사용하여 반복해서 비암호화 입력 데이터를 암호화할 경우에는 변수 Dm=1이다. 나머지 라운드(P1내지 P6)에서는 변수 Dm=2이다. 따라서, 도8과 같이 왼쪽 쉬프터(860, 870)와 와이어링으로 구현되는 제2치환선택부(PC2)(880)를 추가로 사용하여, i번째 라운드에서 K2i-1값과 K2i값을 연산하여 Km과 Kn으로 각각 출력할 수 있다.
도9는 본 발명의 다른 실시에에 따른 하나의 기본 연산부만를 사용한 키 스케쥴러의 블럭도이다.
도9를 참조하면, 키 스케쥴러는 56비트의 키를 입력받는 제1치환선택부(PC1)(900)와, 제1치환선택부(900)의 의해서 치환된 56비트의 블럭을 28비트의 두 블럭으로 나누어서 클럭(CLK)에 의해서 저장하는 제1레지스터(Cn)(910) 및 제2레지스터(Dn)(920)와, 제1레지스터 및 제2레지스터의 28비트의 키(Key) 블럭을 각각 왼쪽으로 두자리, 세자리 또는 네자리씩 쉬프트하는 제1쉬프트부(930) 및 제2쉬프트부(940)와, 제1레지스터 및 제2레지스터의 28비트의 블럭을 입력받아 48비트의 보조키(Kn)를 생성하는 제2치환선택부(PC2 : Permutation Choice 2)(950)와, 제1 및 제2레지스터(910, 920)의 출력을 입력받아서 오른쪽으로 한자리 또는 두자리씩 쉬프트하는 제3 및 제4쉬프트부(960, 970)와, 제3 및 제4쉬프트부(960, 970)의 출력을 입력받아서 48비트의 보조키(Km)을 생성하는 제2치환선택부(PC2)(980)을 구비한다.
도9에서 도시된 키 스케쥴러는 도7의 기본 연산부 제2유닛만을 사용하여 i번째 라운드에서 보조키 K2i를 연산한다. 도9의 도표에서 알 수 있듯이, i번째 라운드에서 보조키 K2i-1을 얻기위한 누적된 쉬프트 비트수 TSm과 보조키 K2i를 얻기 위한 누적된 쉬프트 비트수 TSn은 TSm-TSn=Dn이라고 할 때 다음과 같은 관계가 있다.첫번째 라운드(P0)와 여덟번째 라운드(P7)에서 Dn=-1이고, 나머지 라운드(P1내지 P6)에서는 Dn=-2이다. 따라서, 도9와 같이 오른쪽 쉬프터(960, 970)와 와이어링으로 구현되는 제2치환선택부(PC2)(980)를 추가로 사용하여, i번째 라운드에서 K2i값과 K2i-1값을 연산하여 Kn과 Km으로 각각 출력할 수 있다.
도10은 본 발명의 키 스케쥴러 아키텍쳐의 동작을 나타내는 타이밍도이다.
도 10을 참조하면, Km와 Kn는 8라운드 DES 아키텍쳐에서 16개의 보조키가 엑세스되는 시간 구간을 나타낸다. TSm및 TSn는 필요한 보조키를 얻기 위해 PC1을 거친 초기 키가 왼쪽 쉬프터에 의해 쉬프트된 총 비트 수를 나타낸다. Sm및 Sn은 TSm및 TSn에 표시된 총 쉬프트된 비트 수를 얻기 위해서 각 라운드 (Pi)에서 쉬프트하는 비트 수를 나타낸다. 본 발명에서 보조키를 생성하는 과정은 다음과 같다.
먼저, 제 1 라운드 (P0)에서 TSm및 TSn는 1과 2로서 해당 레지스터의 출력,즉 PC1을 거친 초기키를 1비트와 2비트씩 왼쪽 쉬프트된 결과를 PC2로 출력하여 보조키 K1과 K2를 생성할 수 있다.
제 2 라운드 (P1)에서 보조키 K3와 K4를 생성하기 위해서, 즉 TSm=4와 TSn=6을 위해서 제 1 라운드에서 왼쪽 쉬프터는 해당 레지스터를 3(=4-1)비트와 4(=6-2)비트 씩 왼쪽 쉬프트한다.
제3라운드 (P2)에서 보조키 K5와 K6를 생성하기 위해서, 즉 TSm=8와 TSn=10을 위해서 제 2 라운드에서 왼쪽 쉬프터는 해당 레지스터를 4(=8-4)비트와 4(=10-6)비트 씩 왼쪽 쉬프트한다.
이와 같이 각 라운드 (Pi)에서 해당 레지스터를 Sm또는 Sn비트씩 왼쪽 쉬프트하여 제 8 라운드 (P7)에서 TSA=27와 TSB=28(=0)비트만큼 초기키가 쉬프트된다. 다음에 다시 제 1 라운드로 돌아가기 위해서, 즉 TSm=1과 TSn=2가 되기 위해서, Sm=2 및 Sn=2가 되어야 한다.
일반적으로 주어진 키에 대하여 암호화 해야될 데이터가 다수인 경우가 많다. 이 때 파이프라인을 사용하여 암호화하는 성능을 높일 수 있다. DES 아키텍쳐에서 사용되는 파이프라인은 적용되는 레벨에 따라 마이크로 파이프라인(Micro Pipeline)과 매크로 파이프라인(Macro Pipeline)의 두 종류로 구분할 수 있다.
DES 코어에 입력되는 데이터의 속도는 DES 코어보다도 DES 코어 외부의 전체 시스템 측면에서 결정된다. 네트워크에 사용되는 DES의 경우 변조기 및 복조기의 최대 전송속도 및 외부 호스트 마이크로 프로세서의 속도 등을 고려하여 정해진다. 일반적으로 DES에 입출력되는 속도는 느리다. 그리고, DES코어 외부의 시스템에서 데이터는 대부분 바이트(8비트) 단위로 이동되며 DES 코어는 64비트의 입력 데이터를 64비트로 암호화하여 출력하기 때문에, 8 개의 입력 바이트들을 모아서 DES 코어에 전달하는 입력 버퍼 레지스터(IBR)와 64비트의 DES 출력을 바이트 단위로 전달하기 위한 출력 버퍼 레지스터(OBR)를 사용하여 8 클럭 사이클 동안 데이터 포멧팅을 수행하여야 한다. 이와같이 느린 입출력 과정의 레이턴시를 숨기기 위하여 도11 및 도12와 같은 입력과정(제1단계), DES 연산과정(제 2단계), 출력 과정(제3단계)으로 3단계 파이프라인을 구현한 것을 매크로 파이프라인으로 구별하자. 매크로 파이프라인의 주기는 입력 및 출력 과정에 걸리는 시간과 DES 연산 시간 중 최대 값으로 결정되며, 이 들 시간이 동일할 때 최대의 효과를 얻을 수 있다.
도11은 시분할 사이퍼 함수를 이용한 DES 코어에 3단계 매크로 파이프라인을 적용한 아키텍쳐이고, 도12는 루우프 전개 사이퍼 함수를 이용한 DES 코어에 3단계 매크로 파이프라인을 적용한 아키텍쳐이다.
도11은 본 발명의 시분할 사이퍼 함수를 이용한 DES 코어에 매크로 파이프라인을 적용한 DES 아키텍쳐의 블럭도이다.
도11의 DES 아키텍쳐는 64비트의 입력 데이터를 8개로 분할하여 순차적으로 8비트씩 입력받아 제1클럭(CLK1)에 따라서 왼쪽 입력 버퍼 레지스터(IBR(L))(1110)와 오른쪽 입력 버퍼 레지스터(IBR(R))(1120)에 각각 32비트의 입력데이터를 수집하여 저장하는 제1단계와, 왼쪽 입력 버퍼 레지스터와 오른쪽 입력 버퍼 레지스터로부터 각각의 32비트의 데이터 블록을 제1사이퍼 함수와 제2사이퍼 함수에 교대로 입력시켜 8라운드의 암호화 연산을 수행하는 제2단계와, 2단계로부터의 32비트의 데이터를 왼쪽 출력 버퍼 레지스터(OBR(L))(1140)와 오른쪽 출력 버퍼 레지스터(OBR(R))(1150)을 통하여 각각 8비트씩 분배하여 출력하는 제3단계로 이루어진다.
도11에서의 시분할 사이퍼 함수의 입력은 레지스터 A0와 B0의 32비트 출력과 키 스케쥴러의 48비트 출력 KA와 KB로 구성된다. 제1클럭(CLK1) 주기의 전반부에서는 사이퍼 함수 fA를 연산하여 출력하게 하며, 제1클럭(CLK1) 주기의 후반부에서는 사이퍼 함수 fB를 연산하여 출력하게 한다. 즉, 시분할 사이퍼 함수는 제1클럭(CLK1) 주기의 전반부에서 A0와 KA를 입력해서 확장 치환부, 배타적 논리합, S-Box 치환부, 그리고 P-Box 치환부로 구성되는 사이퍼 함수를 연산하여 fA로 출력하고, 마찬가지로 상기 제1클럭(CLK1) 주기의 후반부에서 B0와 KB를 입력받아 사이퍼 함수 연산 결과를 fB로 출력한다.
따라서, 한 클럭 사이클 동안 두 개의 연속된 보조키 쌍 K2i-1과 K2i를 생성하는 본 발명의 키 스케쥴러 아키텍쳐들은 상기 도11의 시분할 사이퍼 함수를 이용하여 8 라운드로 동작하는 아키텍쳐에도 사용할 수 있다.
도12는 본 발명의 루우프 전개 사이퍼 함수를 이용한 DES 코어에 매크로 파이프라인을 적용한 DES 아키텍쳐의 구성을 나타내는 블럭도이다.
도12를 참조하면, DES 아키텍쳐는 64비트의 입력 데이터를 8개로 분할하여 순차적으로 8비트씩 입력받아 제1클럭(CLK1)에 따라서 왼쪽 입력 버퍼 레지스터(IBR(L))(1210)와 오른쪽 입력 버퍼 레지스터(IBR(R))(1220)에 각각 32비트의 입력데이터를 수집하여 저장하는 제1단계와, 왼쪽 입력 버퍼 레지스터 및 오른쪽 입력 버퍼 레지스터로부터 두 개의 32비트 블럭을 입력받아 8라운드에 거쳐서 루우프 전개 사이퍼 함수 연산을 수행하여 암호화하는 제2단계와, 2단계로부터의 32비트의 데이터를 왼쪽 출력 버퍼 레지스터(OBR(L))(1260)과 오른쪽 출력 버퍼 레지스터(OBR(R))(1270)을 통하여 각각 8비트씩 분배하여 출력하는 제3단계로 이루어진다.
한 클럭 사이클 동안 두 개의 연속된 보조키 쌍 K2i-1과 K2i(i=1,2,...,8)를 생성하는 본 발명의 키 스케쥴러 아키텍쳐들은 루우프 전개 사이퍼 함수를 사용한 DES 아키텍쳐와 시분할 사이퍼 함수를 사용한 DES 아키텍쳐에 적용 가능하다. 종래기술의 키 스케쥴러 아키텍쳐는 28비트의 쉬프트 된 결과를 저장하는 4 개의 레지스터를 사용하여, 집적화 시 레지스터가 차지하는 면적이 커진다. i번째 라운드에서 보조키 K2i-1또는 K2i를 얻기 위한 누적된 쉬프트 비트수는 1비트 또는 2비트의 차이가 있다. 그러므로, 키 스케쥴러 아키텍쳐의 기본 연산부(도7의 제1유닛이나 제2유닛)만을 이용하여 도8과 도9의 키 스케쥴러 아키텍쳐를 구현할 수 있다. 이 아키텍쳐들은 보조키 K2i-1또는 K2i를 연산하는데 사용되는 레지스터에 저장된 값으로부터 왼쪽 쉬프터 또는 오른쪽 쉬프터와 제2치환선택부(PC2)를 추가로 사용하여 다른 보조키 K2i와 K2i-1을 각각 구할 수 있다. 기본연산부 제1유닛만을 사용한 도8의 아키텍쳐는 누적된 비트수가 0(=28)이 되는 것이 없기 때문에 초기키를 저장할 경우 별도로 처리하여야 한다. 그러므로 기본 연산부 제2유닛만을 사용한 도9의 아키텍쳐에 비해서 사용되는 조합 논리회로로 구현된 쉬프터의 크기가 커진다. 루우프 전개 사이퍼 함수는 먼저 K2i-1을 사용하여 사이퍼 함수 연산을 시작하지만, 기본 연산부 제2유닛만을 사용한 도9의 아키텍쳐는 조합 논리회로로 구현된 오른쪽 쉬프터를 통해서 K2i-1을 얻기 때문에 기본 연산부 제1유닛만을 사용한 도8의 아키텍쳐에 비해서 임계 경로를 증가시킨다.
도13은 본 발명의 상기 루우프 전개 사이퍼 함수를 이용한 DES 코어에 매크로 파이프라인을 적용한 DES 아키텍쳐의 동작 순서를 나타내는 타이밍도이다.
도13를 참조하면, 본 발명의 DES 아키텍쳐가 평문 입력 데이터 (y0, z0), (a0, b0), (c0, d0)를 순서대로 입력받아 zi, bi, di, (i=1,2,...,16)를 계산하여 (z16, z15), (b16, b15), (d16, d15)을 차례로 출력하는 과정 중 비암호화 데이터 a0와 b0로부터 b1, b2, ..., b16을 계산하여 b16과 b15를 출력하는 과정을 중점으로 나타내었다. a0와 b0를 초기 치환 IP를 거친 64비트의 비암호화 블럭이 32비트의 두블럭으로 나뉘어진 것을 나타낸다고 하자. 즉 a0=L0=R-1이고 b0=R0이다. 그리고 DES 코아가 계산한 값을 b1, b2, ..., b16(bi=Ri)라고 한다. bi를 계산하기 전에 미리 키 스케쥴러가 적절한 보조키 Ki를 사이퍼 함수에 입력해주도록 하면, 본 발명의 아키텍쳐에서 DES가 연산되는 과정은 다음과 같다.
먼저, 입력 과정은 시간 t0이전에 8 사이클 동안 바이트 단위로 입력된 데이터를 레지스터 IBR에 수집한다. 그리고 시간 [t0-t2]구간에서 레지스터 IBR(L)은 a0를, 레지스터 IBR(R)은 b0를 유지한다. 동시에 다음 비암호화 입력 데이터 c0와 d0를 한 바이트씩 레지스터 IBR에 수집한다. 따라서 8 사이클 후인 시간 [t16-t18]에서 레지스터 IBR은 c0와 d0의 값을 유지한다.
출력 과정을 살펴보면, 레지스터 OBR은 시간 t1에서 레지스터 A와 B에서 z16과 z15의 값을 로드한 후 역치환된 데이터를 시간 t2에서 한 바이트씩 8 사이클 동안 출력한다. z16과 z15의 값은 레지스터 OBR에서 시간 [t1-t17]구간에서 유지되며, 시간 t17에 다시 레지스터 A와 B의 값(b16와 b15)을 로드한 후 8 사이클 동안 유지하여 시간 t17에서부터 다시 역치환된 출력 데이터를 한 바이트씩 8 사이클 동안 출력한다.
DES 연산과정은 시간 [t0-t2] 구간에서 레지스터 IBR(R)과 IBR(L)에 저장된 값 a0와 b0를 엑세스하고 시간 [t0-t2]구간에서 보조키 K1과 K2를 키 스케쥴러로부터 입력받으면 시간 [t0-t2]구간에서 루우프 전개 사이퍼 함수를 연산하여 시간 t2에서 연산된 b1과 b2의 값을 레지스터 A와 B에 저장한다.
또한, 시간 [t2-t4] 구간에서 레지스터 A와 B로부터 b1과 b2값을 엑세스할 수 있으므로, 시간 [t2-t4]구간에서 보조키 K3와 K4를 키 스케쥴러로부터 입력받으면 시간 [t2-t4]구간에서 루우프 전개 사이퍼 함수를 연산하여 시간 t4에서 연산된 b3와 b4값을 레지스터 A와 B에 저장할 수 있다.
이와 같이 시간 t0로부터 b1과 b2값을 계산하기 시작하여 b3,b4,...., b16를 계산하여 해당 레지스터에 저장하여, 8 사이클 뒤인 시간 t14에 b15와 b16을 레지스터 A와 B에 저장함으로써 a0와 b0를 입력으로 한 DES 연산을 끝낸다. 동시에 시간 t16에서 다시 c0와 d0를 입력으로 한 DES 연산을 수행한다.
도14는 매크로 파이프라인의 효과를 나타낸 타이밍도이다.
도14를 참조하면, 매크로 파이프라인을 사용할 경우에 8 라운드로 동작하는 이들 아키텍쳐와 일반적인 16라운드로 동작하는 DES 아키텍쳐의 성능을 비교 분석한 것이다. 한 개의 비암호화 입력 데이터를 입력하는 과정에서부터 DES 연산하여 출력하는 과정까지 걸리는 클럭 수를 레이턴시라고 하고 클럭 사이클 당 처리할 수 있는 비암호화 입력 데이터의 갯수를 처리능력비라고 하면 도14의 레이턴시와 처리능력비의 관계는 다음과 같다.
기존의 16 라운드 DES 아키텍쳐는 매크로 파이프라인을 사용하지 않을 경우, 입력 과정과 출력 과정에 각각 8 클럭 사이클이 걸리고, DES 연산과정에 16클럭 사이클이 걸리므로, 32클럭 사이클마다 새로운 비암호화 입력 데이터를 입력할 수 있다. 따라서, 이 경우에는 레이턴시는 32이고, 처리능력비는 1/32이다. 만약, 입력과 출력과정에 2단계 매크로 파이프라인을 사용하면, 레이턴시는 32로 상기의 경우와 동일하지만, DES 연산된 결과를 출력하는 과정과 새로운 비암호화 입력 데이터를 입력하는 과정을 동시에 수행할 수 있어서, 24 클럭 사이클마다 새로운 비암호화 입력 데이터를 입력할 수 있다. 따라서, 이 경우에는 레이턴시는 32이고 처리능력비는 1/24이다. 입력과정, DES 연산과정, 출력과정의 3단계 매크로 파이프라인을 적용하면, 입출력과정에서 각각 8 클럭 사이클씩 아이들(Idle)하게 되어 레이턴시는 40으로 늘어나지만, 처리능력비는 1/16으로 증가한다. 즉 16 사이클마다 새로운 비암호화 입력 데이터를 입력받아 DES 연산을 할 수 있다. 루우프 전개 사이퍼 함수를 이용한 DES 아키텍쳐와 시분할 사이퍼 함수를 이용한 DES 아키텍쳐는 입출력 과정과 DES 연산과정 모두 8클럭 사이클에 수행한다. 이들 이키텍쳐에 3 단계 매크로 파이프라인을 적용하면, 레이턴시는 24이고 처리능력비는 1/8로서, 8클럭 사이클마다 새로운 비암호화 입력 데이터를 암호화할 수 있다.
본 발명의 기술 사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 전문가라면 본 발명의 기술 사상의 범위내에서 다양한 실시예가 가능함을 이해할 수 있을 것이다.
상기와 같이 본 발명은 기본 연산부 하나로 구성된 키 스케쥴러를 사용함으로써 레지스터가 차지하는 면적을 반으로 줄여 집적화 시에 코스트(Cost)를 절감할 수 있도록 한다.

Claims (8)

  1. 데이터 암호화 표준 알고리즘을 이용한 암호화 장치에 있어서,
    56비트의 키를 입력받아 치환하는 제1 치환선택부;
    클럭 신호에 따라 상기 제1치환선택부에 의해서 치환된 56비트의 블럭을 28비트의 두 블럭으로 나누어 각각 저장하는 제1레지스터 및 제2레지스터;
    상기 제1 및 제2레지스터로부터의 28비트의 키 블럭을 각각 왼쪽으로 제1 소정의 비트수만큼 쉬프트시키고 쉬프트된 두 개의 28비트 블록을 상기 제1 레지스터 및 상기 제2 레지스터로 출력하는 제1쉬프트부 및 제2쉬프트부;
    상기 제1 레지스터 및 상기 제2레지스터로부터의 상기 28비트의 키 블럭을 입력받아 48비트의 제1 보조키를 생성하기 위한 제2 치환선택부;
    상기 제1 레지스터 및 상기 제2레지스터의 출력을 입력받아서 왼쪽으로 제2 소정의 비트수만큼 쉬프트하는 제3 쉬프트부 및 제4 쉬프트부; 및
    상기 제3 쉬프트부 및 상기 제4 쉬프트부의 출력을 입력받아서 48비트의 제2 보조키를 생성하기 위한 제3 치환선택부
    를 포함하는 키 스케쥴러.
  2. 제 1 항에 있어서,
    상기 제2 소정의 비트수는 1비트 또는 2비트인 것을 특징으로 하는 키 스케쥴러.
  3. 제2항에 있어서,
    상기 제3치환선택부는 와이어링(wiring)으로 구현되는 것을 특징으로 하는 키 스케쥴러.
  4. 데이터 암호화 표준 알고리즘을 이용한 암호화 장치에 있어서,
    56비트의 키를 입력받아 치환하는 제1 치환선택부;
    클럭 신호에 따라 상기 제1치환선택부에 의해서 치환된 56비트의 블럭을 28비트의 두 블럭으로 나누어 각각 저장하는 제1레지스터 및 제2레지스터;
    상기 제1 및 제2레지스터로부터의 28비트의 키 블럭을 각각 왼쪽으로 제1 소정의 비트수만큼 쉬프트시키고 쉬프트된 두 개의 28비트 블록을 상기 제1 레지스터 및 상기 제2 레지스터로 출력하는 제1쉬프트부 및 제2쉬프트부;
    상기 제1 레지스터 및 상기 제2레지스터로부터의 상기 28비트의 키 블럭을 입력받아 48비트의 제1 보조키를 생성하기 위한 제2 치환선택부;
    상기 제1 레지스터 및 상기 제2레지스터의 출력을 입력받아서 오른쪽으로 제2 소정의 비트수만큼 쉬프트하는 제3 쉬프트부 및 제4 쉬프트부; 및
    상기 제3 쉬프트부 및 상기 제4 쉬프트부의 출력을 입력받아서 48비트의 제2 보조키를 생성하기 위한 제3 치환선택부
    를 포함하는 키 스케쥴러.
  5. 제 4 항에 있어서,
    상기 제2 소정의 비트수는 1비트 또는 2비트인 것을 특징으로 하는 키 스케쥴러.
  6. 제 5 항에 있어서,
    상기 제3치환선택부는 와이어링으로 구현되는 것을 특징으로 하는 키 스케쥴러.
  7. 삭제
  8. 삭제
KR10-2000-0032451A 2000-06-13 2000-06-13 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러 KR100377172B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR10-2000-0032451A KR100377172B1 (ko) 2000-06-13 2000-06-13 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러
JP2001179331A JP2002040933A (ja) 2000-06-13 2001-06-13 データ暗号化標準アルゴリズムを利用した暗号化装置
US09/879,793 US7123720B2 (en) 2000-06-13 2001-06-13 Key scheduler for encryption apparatus using data encryption standard algorithm
GB0114389A GB2367462B (en) 2000-06-13 2001-06-13 Key Schedular for encryption apparatus using data encryption standard algorithm
TW090117895A TW522698B (en) 2000-06-13 2001-07-23 Key scheduler for encryption apparatus using data encryption standard algorithm

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2000-0032451A KR100377172B1 (ko) 2000-06-13 2000-06-13 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러

Publications (2)

Publication Number Publication Date
KR20010111784A KR20010111784A (ko) 2001-12-20
KR100377172B1 true KR100377172B1 (ko) 2003-03-26

Family

ID=19671837

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0032451A KR100377172B1 (ko) 2000-06-13 2000-06-13 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러

Country Status (5)

Country Link
US (1) US7123720B2 (ko)
JP (1) JP2002040933A (ko)
KR (1) KR100377172B1 (ko)
GB (1) GB2367462B (ko)
TW (1) TW522698B (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020082919A (ko) * 2001-04-24 2002-11-01 엘지전자 주식회사 암호화 코드의 저장 방법
US7298849B2 (en) * 2001-06-29 2007-11-20 Intel Corporation Method and apparatus for simultaneous encryption and decryption of publicly distributed media
US7251326B2 (en) 2001-06-29 2007-07-31 Harris Corporation Method and apparatus for data encryption
US7123728B2 (en) * 2001-08-15 2006-10-17 Apple Computer, Inc. Speaker equalization tool
US20030068038A1 (en) * 2001-09-28 2003-04-10 Bedros Hanounik Method and apparatus for encrypting data
US7103180B1 (en) * 2001-10-25 2006-09-05 Hewlett-Packard Development Company, L.P. Method of implementing the data encryption standard with reduced computation
US7076059B1 (en) * 2002-01-17 2006-07-11 Cavium Networks Method and apparatus to implement the data encryption standard algorithm
KR100440074B1 (ko) * 2002-10-28 2004-07-14 주식회사 하이닉스반도체 데이터 암호화 표준 알고리즘의 키 생성 장치
KR100456599B1 (ko) * 2002-11-12 2004-11-09 삼성전자주식회사 병렬 디이에스 구조를 갖는 암호 장치
US7257225B2 (en) * 2003-12-29 2007-08-14 American Express Travel Related Services Company, Inc. System and method for high speed reversible data encryption
KR100800468B1 (ko) * 2004-01-29 2008-02-01 삼성전자주식회사 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
US7639798B1 (en) * 2005-09-15 2009-12-29 Rockwell Collins, Inc. High speed data encryption architecture
KR100835718B1 (ko) * 2006-11-27 2008-06-05 삼성전기주식회사 Aes에서의 암호화 장치 및 그 방법
CN100581101C (zh) * 2007-11-19 2010-01-13 西安西电捷通无线网络通信有限公司 一种基于分组密码算法的加密处理设备
JP5319209B2 (ja) * 2008-08-29 2013-10-16 株式会社東芝 暗号化で用いる鍵をスケジュールする装置、方法およびプログラム
US8654970B2 (en) * 2009-03-31 2014-02-18 Oracle America, Inc. Apparatus and method for implementing instruction support for the data encryption standard (DES) algorithm
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US8255702B1 (en) * 2009-12-03 2012-08-28 Altera Corporation Programmable logic device with improved security
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03254538A (ja) * 1990-03-05 1991-11-13 Nippon Telegr & Teleph Corp <Ntt> 暗号方式
JPH0697930A (ja) * 1992-02-20 1994-04-08 Fujitsu F I P Kk ブロック暗号処理装置
KR19980035079A (ko) * 1996-11-11 1998-08-05 양승택 통신시 데이타 보안을 위한 데이타 보안 장치
KR19990075977A (ko) * 1998-03-26 1999-10-15 구자홍 데이터 스크램블링 회로
KR20000039901A (ko) * 1998-12-16 2000-07-05 서평원 데이터 암호화 방법

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2632148B1 (fr) * 1988-05-27 1990-08-10 France Etat Procede de diffusion et de reception de messages de gestion de titres d'acces
SE464991B (sv) * 1989-06-16 1991-07-08 Televerket Krypteringskrets uppbyggd med grindmatristeknik
US5675653A (en) * 1995-11-06 1997-10-07 Nelson, Jr.; Douglas Valmore Method and apparatus for digital encryption
US5835599A (en) * 1996-04-15 1998-11-10 Vlsi Technology, Inc. Muti-cycle non-parallel data encryption engine
US6357009B1 (en) * 1996-08-20 2002-03-12 Hewlett-Packard Company Secure enablement of a processing entity
US6400824B1 (en) * 1996-11-12 2002-06-04 California Institute Of Technology Semiconductor imaging sensor with on-chip encryption
AUPO799197A0 (en) * 1997-07-15 1997-08-07 Silverbrook Research Pty Ltd Image processing method and apparatus (ART01)
JP3351305B2 (ja) * 1997-08-07 2002-11-25 日本電気株式会社 暗号装置及び暗号装置を実現するプログラムを記録したコンピューターが読みとり可能な記録媒体
ATE429748T1 (de) * 1998-01-02 2009-05-15 Cryptography Res Inc Leckresistentes kryptographisches verfahren und vorrichtung
US6108421A (en) * 1998-03-06 2000-08-22 Harris Corporation Method and apparatus for data encryption
JP2002519722A (ja) * 1998-06-03 2002-07-02 クリプターグラフィー リサーチ インコーポレイテッド スマートカードおよび他の暗号システム用の、漏洩を最小に抑える、改良desおよび他の暗号プロセス
US6816968B1 (en) * 1998-07-10 2004-11-09 Silverbrook Research Pty Ltd Consumable authentication protocol and system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03254538A (ja) * 1990-03-05 1991-11-13 Nippon Telegr & Teleph Corp <Ntt> 暗号方式
JPH0697930A (ja) * 1992-02-20 1994-04-08 Fujitsu F I P Kk ブロック暗号処理装置
KR19980035079A (ko) * 1996-11-11 1998-08-05 양승택 통신시 데이타 보안을 위한 데이타 보안 장치
KR19990075977A (ko) * 1998-03-26 1999-10-15 구자홍 데이터 스크램블링 회로
KR20000039901A (ko) * 1998-12-16 2000-07-05 서평원 데이터 암호화 방법

Also Published As

Publication number Publication date
GB2367462B (en) 2004-04-14
TW522698B (en) 2003-03-01
GB0114389D0 (en) 2001-08-08
GB2367462A (en) 2002-04-03
US7123720B2 (en) 2006-10-17
JP2002040933A (ja) 2002-02-08
US20020018562A1 (en) 2002-02-14
KR20010111784A (ko) 2001-12-20

Similar Documents

Publication Publication Date Title
KR100377172B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러
KR100377176B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
AU2003213318B2 (en) Block cipher apparatus using auxiliary transformation
KR100435052B1 (ko) 암호화장치
KR20090094086A (ko) 암호 처리 장치, 암호 처리 방법과 컴퓨터 프로그램
KR100377175B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
KR100390821B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
JPH10240500A (ja) 乱数生成装置及び方法、暗号化装置及び方法、復号装置及び方法、並びにストリーム暗号システム
JP5182295B2 (ja) 暗号化装置及び暗号処理方法
EP1202488B1 (en) Encryption sub-key generation circuit
JP4515716B2 (ja) 拡大鍵生成装置、暗号化装置および暗号化システム
JP3606418B2 (ja) 乱数生成装置
KR100377173B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
KR100190157B1 (ko) 암호화 장치 및 암호화 방법
KR100316025B1 (ko) 데이터 암호 표준 알고리즘을 이용한 암호 및 복호 장치
KR20030087893A (ko) 라운드 키의 온라인 계산 기능을 갖는 모듈화 구조의 AESRijndael 라운드 키 생성 회로
KR100384873B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
JPH09251267A (ja) 暗号化装置及び暗号化方法
KR20030037890A (ko) 디이에스 암호화 장치
Lim Efficient 8-cycle DES implementation
KR20020082540A (ko) 디이에스 암호화 장치
JP2018155922A (ja) 帰還シフトレジスタ回路及び帰還シフトレジスタの動作方法
Noras Custom hardware for high performance and high security digital data ciphering
Guerrero et al. Customised hardware based on the REDOC III algorithm for high performance data ciphering

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