KR20020003579A - 비-병렬 다중 사이클 데이터 암호화 장치 및 방법 - Google Patents

비-병렬 다중 사이클 데이터 암호화 장치 및 방법 Download PDF

Info

Publication number
KR20020003579A
KR20020003579A KR1020000029547A KR20000029547A KR20020003579A KR 20020003579 A KR20020003579 A KR 20020003579A KR 1020000029547 A KR1020000029547 A KR 1020000029547A KR 20000029547 A KR20000029547 A KR 20000029547A KR 20020003579 A KR20020003579 A KR 20020003579A
Authority
KR
South Korea
Prior art keywords
encryption
data
stage
output
multiplexer
Prior art date
Application number
KR1020000029547A
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 KR1020000029547A priority Critical patent/KR20020003579A/ko
Publication of KR20020003579A publication Critical patent/KR20020003579A/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 데이터 암호화 방법에 있어서, 제1멀티플렉서로 암호화되지 않은 데이터를 입력하여, 암호화되지 않은 데이터와 초기화 벡터를 배타적 논리합하며, 배타적 논리합 출력을 초기 치환하고 초기 치환된 데이터를 직렬로 연결된 다수의 암호화 단의 암호화 제1단으로 입력하여 각 암호화 단에 의해 암호화가 수행되도록 하며, 다수의 암호화 단의 마지막 암호화 단으로부터의 출력을 제2멀티플렉서로 출력하고, 마지막 암호화 단의 출력을 상기 암호화 제1단의 입력으로 선택하며, N 사이클이 완료된 이후에 다수의 암호화 단 중 어느 하나의 출력을 역초기 치환하여, 역초기 치환된 데이터를 최종 암호화된 데이터로 출력한다.

Description

비-병렬 다중 사이클 데이터 암호화 장치 및 방법{METHOD AND APPARATUS OF MULTI-CYCLE NON-PARALLEL DATA ENCRYPTION}
본 발명은 미국 표준 데이터 암호화 방식인 DES(Data Encryption Standard) 알고리즘을 이용한 데이터 암호화 및 복호화에 관한 기술로서, 특히 멀티-사이클(multi-cycle), 비-병렬(non-parallel) DES(Data Encryption Standard) 암호화 기술에 관한 것이다.
암호화(encryption)는 자체 독단적인 부분(unauthorized party)에 의해 전송 데이터를 식별 불가능한 형태로 변환하는 동작이다. 암호화된 데이터는 일반적으로 의사 난수(pseudo random number)의 특성을 갖는다. 복호화(decryption)는 이러한 변환된 데이터를 다시 원래의 형태로 되돌리는 동작이다. 일반적으로, 복호화는 "키(key)"로 표현되는, 권한을 갖는 사용자 점유 비밀 정보에 의해 쉽사리 수행된다. 이에 따라, 성공적인 데이터 암호화는 권한을 갖지 않는 자가 데이터의 내용을 식별하는 것을 방지하는 것에 의해 사용자의 프라이버시를 지지한다. 비밀 키를 알지 않고서는 복호화가 사실상 불가능하며, 코드를 해독하는 것은 과도한 양의 시간 및 계산 자원을 필요로 한다. 현재의 실정에 있어서, 안전한 사설 통신, 특히 컴퓨터 네트웍이나 디지털 전화 라인 상의 안전한 통신은 전송 데이터의 암호화에 달려 있다. 이는 전송되는 데이터의 프라이버시 및 정확도를 보장하는 것에 의해 달성된다. 예를 들어, 재정 상의 교환(즉, 은행으로부터의 전자 화폐 전송 등), 군사상의 데이터, 상업상의 매매(즉, 항공 예약 및 티켓 구입) 등 엄격한 신용을 지키거나임의 자의 간섭을 방지하여야 할 곳에서는 이는 중대한 문제이다.
데이터 암호화를 위해 여러 다양한 설계나 방법이 있다. 일반적으로 더 안전한 암호화를 위해서는 암호화/복호화를 수행하는데 더 긴 데이터 처리 작업이 필요하다. 널리 퍼져 있으며 사용되고 있는 한 엔코딩(encoding) 기술은 데이터 암호화 표준(DES: Data Encryption Standard)으로 알려진 기술이다. DES는 ANSI(American National Standard Institute)의해 표준으로 채택된 암호화 프로토콜(cryptographic encryption protocol)이다. 이는 현재까지 미국 연방 표준으로 사용되어지고 있으며, 비즈니스 분야에 있어서까지 광범위하게 사용되어지고 있다. DES를 기술하는 관련된 문서로는 NBS(National Bureau of Standards) FIPS PUB 46 "Data Encryption Standard"(1977), FIPS PUB 81"DES Modes of Operation"(1980) 및 FIPS PUB 74 "Guidelines for Implementing and Using the NBS Data Encryption Standard"(1980) 등이 있다. 일반적으로 DES를 재조사하고 DES 구현을 인증하는 것에 대한 책임은 NIST(National Institute of Standards and Technology) 및 NSA(National Security Agency)에 있다.
DES의 64비트 평문(plaintext) 암호화 블럭은 54비트 키의 사용에 의해 64비트 암호문(ciphertext) 블럭으로 입력된다. 동일한 키가 암호화 및 복호화 단계에 모두 사용된다. 상기 언급한 FIPS PUB 81에서 DES를 위한 4가지 모드를 규정하고 있다. 이는 ECB(Electronic Codebook), CBC(Cipher Block Chaining), OFB(Output Feedback) 및 CFB(Cipher Feedback) 모드이다. 상기 4가지 모드의 중요한 차이점은 하나의 블럭이 그 다음 블럭의 암호화에 영향을 끼친다는 점이다. ECB 모드에서,각 64비트는 독립적으로 엔코드된다. 다른 모드에서는, 이전 블럭이 주어진 블럭을 위한 암호문을 결정하는 암호화 및 이후의 역할을 담당할 수 있다. 그 결과, ECB 모드는 다른 모드들이 더 안전함에 비해 상대방 즉, 임의 자로부터 더 공격받기 쉬운 취약성을 가진다.
그럼에도 불구하고 ECB 모드를 사용하는 하나의 장점은 고속 암호와/복호화가 가능하다는 것이다. ECB는 다중-프로세서 머신(multi-processor machine) 또는 다중 머신(multiple machine) 상에서 병렬적으로 동작을 수행할 수 있다. 이는 초기 데이터를 분리된 부분으로 쪼개는 것으로 달성될 수 있다. 각각의 나누어진 부분은 이후 다중 프로세서에서 동시에 처리될 수 있다. 이때 각각의 프로세서는 상기 나누어진 부분을 독립적으로 엔코드하게 된다. 이는 극히 빠른 속도로 데이터가 암호화되거나 복호화되는 것을 가능하게 한다. 고속 데이터 암호화/복호화의 능력은 음성 통신 및 비디오 원격 회의 같은 다양한 실시간 응용 기술에 있어서 매우 중요한 요소이다. 특히 빠른 암호화/복호화는 공용 데이터베이스에 저장된 데이터를 억세스하거나 업데이트하는 네트웍 연결된 개인용 컴퓨터간에 대량의 통신량을 가진 클라이언트-서버(client-server) 기술에 상당히 요구되는 기술이다.
불행히도, CBC, OFB 및 CFB 모드는 데이터의 일련된 블럭간의 상호 의존성 때문에 병렬 처리의 장점을 가질 수 없다. 다시 말하면, 하나의 데이터 블럭은 이전 암호화/복호화된 데이터 블럭에 따라 암호화/복호화된다. 이러한 피드백 때문에 무작위(randomness), 즉 엔트로피(entropy)가 암호화된 데이터 스트림에 더해진다. 여태까지 설계사는 조합된 보조 회로를 통해 이러한 모드들을 위한 암호화/복호화의 속도를 증가시키려는 경향을 가지고 있었다. 그런데 이러한 보조 회로를 통해 신호가 전파되는데 더 많은 시간이 소요될 수 있다. 더욱이 이러한 접근은 상기 보조 회로에 의한 더 큰 다이(die) 사이즈를 가져옴으로 상당한 추가 비용이 들게 된다. 보다 작은 다이(즉 반도체 칩)가 주어진 웨이퍼(wafer)로부터 더 많이 제작될 수 있기 때문에 더 큰 다이는 직접적으로 고비용을 뜻한다. 그러므로, DES의 빠른 처리를 위한 하드웨어의 설계는 여전히 중요한 기술적 과제로 남아있다. 더욱이 종래의 설계는 단일 모드 동작에 정확하게 딱 맞게 되어 있다. 그 결과, 이러한 설계는 일반적으로 단지 하나의 모드 동작만 제외하고는 핸들링되지 않는다.
따라서, 모든 동작 모드에서 작동할 수 있는 고속 DES 암호화 및 복호화 메커니즘이 필요하게 된다. 이러한 메커니즘은 고속으로 동작하면서도 비용 효과면을 충족시키는 것이 바람직하다.
따라서 본 발명의 목적은 DES의 모든 동작 모드를 지원 가능하고, 고속으로 DES 암호화 및 복호화를 수행하며, 비용 효과면을 충족시킬 수 있는 데이터 암호화 및 복호화 장치 및 방법을 제공함에 있다.
상기한 목적을 달성하기 위하여 본 발명은 데이터 암호화 방법에 있어서, 제1멀티플렉서로 암호화되지 않은 데이터를 입력하여, 암호화되지 않은 데이터와 초기화 벡터를 배타적 논리합하며, 배타적 논리합 출력을 초기 치환하고 초기 치환된 데이터를 직렬로 연결된 다수의 암호화 단의 암호화 제1단으로 입력하여 각 암호화 단에 의해 암호화가 수행되도록 하며, 다수의 암호화 단의 마지막 암호화 단으로부터의 출력을 제2멀티플렉서로 출력하고, 마지막 암호화 단의 출력을 상기 암호화 제1단의 입력으로 선택하며, N 사이클이 완료된 이후에 다수의 암호화 단 중 어느 하나의 출력을 역초기 치환하여, 역초기 치환된 데이터를 최종 암호화된 데이터로 출력함을 특징으로 한다.
도 1은 단일 키(single key)를 사용한 표준 키-베이스드(key-based) 엔코딩 장치의 블럭도.
도 2는 메시지의 암호문 변환 과정의 흐름도.
도 3은 DES 암호화 처리 기능의 상세한 예를 나타낸 도면.
도 4는 CEC 모드에서 DES 암호화 기술 수행 표준 하드웨어의 주요부를 나타낸 블럭도.
도 5는 표준 구성의 속도의 한계를 해결하기 위한 DES 구성 블럭도.
도 6은 본 발명의 일 실시예에 따른 암호화 단의 상세 회로도.
도 7은 본 발명의 일 실시예에 따른 키생성 단의 상세 회로도.
도 8은 본 발명의 일 실시예에 따른 전체 DES 동작 흐름을 설명하기 위한 도면.
도 9는 본 발명의 일 실시예에 따른 DES 장치의 블록 구성도.
도 10은 도 9의 각부 동작 타이밍도.
도 11은 본 발명이 적용될 수 있는 컴퓨터 시스템의 일 예시도.
이하 본 발명에 따른 바람직한 실시예를 첨부한 도면을 참조하여 상세히 설명한다. 하기 설명에서는 구체적인 진행 과정과 같은 특정 사항들이 나타나고 있는데 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐 이러한 특정 사항들이 본 발명의 범위 내에서 소정의 변형이나 혹은 변경이 이루어질 수 있음은 이 기술분야에서 통상의 지식을 가진 자에게는 자명하다 할 것이다.
도 1은 단일 키를 사용한 표준 키-베이스드(key-based) 엔코딩 장치를 나타낸다. 도 1을 참조하면, 메시지, 또는 평문(100)은 키(105) 및 암호 알고리즘(110)의 기반하에 암호화된다. 상기 키는 사용자에 의해 선택되고 비밀이 유지되어야 한다. 엔코딩의 안정성은 키의 비밀 여부에 달려 있다. 엔코딩의 출력 결과는 암호문(115)으로 불린다. 키(105)를 아는 것과 적당한 복호 알고리즘(120)을 통해 상기 암호문은 원래의 평문(125)으로 다시 변환될 수 있다. 이러한 기본 모형은 다양한 기본적 하드웨어 및 소프트웨어 기술에 범용으로 광범위하게 사용되도록 적용될 수 있다.
DES는 단일 키를 이용하는 키-베이스드 암호화 기술의 일 예이다. 도 2는 200단계에서의 메시지가 어떻게 대응된 암호문으로 변환되는지를 각 단계별로 나타낸 흐름도이다. 205단계에서 상기 메시지는 2진 형태로 변환된다. 이후 210단계에서 사용자는 56비트 비밀 키를 선택한 것으로 간주된다. 이후 215단계에서 상기 메시지는 64비트 블럭으로 엔코드된다. 이후 220단계에서 상기 엔코드된 64비트 블럭은 64비트 출력 불럭을 발생한다. 단지 64비트 블럭이 수용 가능하므로, 만약 마지막 블럭이 64비트의 길이가 아니면 일반적으로 어떠한 규칙적인 패턴(예를 들어, 0의 연속)이 덧붙여진다. 다음으로 225단계에서 상기 64비트 블럭은 초기 메시지의 전체가 엔코드될 때까지 엔코드된다. 이후 230단계에서 상기 출력 블럭은 최종 엔코드된 메시지를 형성하기 위하여 서로 연쇄적으로 연결된다. 이때 상기 220단계에서 하나의 엔코딩은 또한 다음 블럭의 엔코딩에 사용될 수 있는 어떠한 상태 정보를 발생할 수 있음을 유의하여야 한다. 이 단계에서 DES 표준 상세 문서에 자세히 기술되어 있다. 예를 들어, ECB(Electronic Codebook) 모드에서, 이러한 상태 정보는 전혀 필요치 않다. 각 블럭은 독립적으로 엔코드된다. CBC(Cipher Block Chaining) 모드에서 평문은 엔코드되기 전에 이전 암호문 블럭과 배타적 논리합(XOR) 된다. 복호화 방법은 전체적으로 비슷하며 암호화에 사용된 것과 동일한 키를 사용하여 이루어진다.
도 3은 DES 암호화 처리 기능의 상세한 예를 나타낸다. 사용자는 암호화될 평문 메시지(300)를 갖고 있다. 상기 평문 메시지는 참조번호 305, 310으로 나타낸 바와 같이 64 비트 블럭 P1, P2 등으로 나누어진다. 상기 64비트 블럭은 참조번호315, 320으로 나타낸 바와 같이, 겉보기에 임의적으로 보이는 64비트 스트링 E1, E2 등으로 연속적으로 엔코드된다.
도 4는 CEC 모드에서 DES 암호화 기술 수행 표준 하드웨어의 주요부를 나타낸 블럭도이다. 64비트 블럭으로 구성되는 평문(405)은 DES 하드웨어로 입력된다. DES 하드웨어에서는 이후 16 라운드의 동일한 암호화 동작이 있게 된다. 이러한 동일한 16 라운드 각각은 암호화 단(stage)(425 및 445)으로 나타내어진다. 하나의 암호화 단의 결과는 두 번째 16 단(445)을 위한 그 다음 암호화 단의 입력으로 사용된다. 암호화 단(425)의 입력이 평문(405)으로부터 온 것인지, 마지막 암호화 단계 출력(445)으로부터 온 것인지의 결정은 전용 입력 레지스터(420)로 결과를 보내는 멀티플렉서(MUX)(415)에 의해 결정된다. 16 암호화 단계 후에 그 결과는 암호화 블럭 출력(440)을 야기한다. CBC 모드에서, 출력 암호화문은 XOR(exclusive or) 작업(410)을 사용하여 그 다음 64비트 블럭(435)과 결합된다. 다른 모드 및 복호화는 동일한 주요 아키텍처를 사용한다. 예를 들어, ECB 모드에서 XOR 작업은 모두 단순히 바이패스된다.
표준 구성에서, 각 암호화 단은 하나의 사이클을 갖는다. 여기서, 사이클은 기반 머신이 하나의 동작을 수행할 수 있는 시간의 단위를 언급한다. 한 사이클의 실제 클럭 타임은 머신에 따라 다양하다. 모든 암호화 단이 표준 방식에서 유사하기 때문에 단지 하나의 암호화 단(425)의 하드웨어만 도시하였다. 암호화 작업은 동일한 하드웨어(430)를 사용하여 16회 반복된다. 각 사이클에서의 암호화 단의 입력은 다양한 암호화 단 출력에 의해 결정된다. 이러한 표준 방식은 전체 하드웨어비용을 저감시키며 단지 하나의 하드웨어 암호화 단을 갖는 것에 의해 필요한 실리콘 영역을 축소시킨다. 이에 비해 이러한 방식은 각기 다른 16 사이클에서 16 암호화 단계들이 요구됨에 의해 속도의 제한을 가져온다는 결점이 있다.
이에 따라 이러한 표준 구성의 속도 한계를 해결하기 위한 새로운 아키텍처가 등장하게 되었다. 도 5는 표준 구성의 속도의 한계를 해결하기 위한 DES 구성 블럭도를 나타낸다. 도 5에 도시된 바와 같은 구성 상에서 모든 각기 다른 모드들이 작업이 수행될 수도 있다. 더욱이, 이러한 동일한 주요 아키텍처는 DES 암호화된 어떠한 수신 데이터를 복호화하는 데에도 사용될 수 있다. 주어진 클럭 주파수 내에서 한 사이클 안에 수행 가능한 암호화 단의 개수는 제한되므로 클럭 주파수를 높임으로서 암호화 속도를 높이는데는 한계가 있다. 따라서 직렬로 연결된 암호화 단을 다수개 사용함으써 암호화 속도를 높이려는 기술이 제안되었다. 도 5를 참조하면, CBC 모드에서, 평문은 처음 XOR 게이트(110)에 의해 출력되는 이전 암호문과 배타적 논리합(XOR) 작업을 거치게 된다. 표준 아키텍처(415)의 단일 암호화 단을 대체하는 사이클당 3개의 암호화 단(520, 525, 530)이 사용된다. 이에 따라, 단지 6 사이클(590)(즉, 5번의 전체 사이클 및 출력은 6 사이클에서 암호화 제1단(140)으로부터 도출된다)이 표준 구성의 16 사이클을 대체하기 위하여 요구된다. 시스템에서 멀티플렉서(520)는 얼마나 많은 사이클이 완료되었는지를 추적하고 있어서 입력 레지스터(530)에 제공될 데이터가 평문 입력으로부터 오는지 또는 최종 암호화 단(560)으로부터 오는 지의 여부를 결정한다. 상기 6번째 사이클 상에서, 출력 레지스터(570)는 암호화 제1단(540)으로부터의 출력을 로드하고 이를 암호문으로 출력한다. 5번의 완전한 사이클이 수행되고 6번의 부분적 사이클은 DES 표준에 의해 상기 기술된 바와 같이 16번 암호화 단으로부터 도출됨을 유의하여야 한다.
그런데, 상기 도 5에 도시된 바와 같은 구성에서는 최종 암호문을 여러 개의 암호화 단들 중 하나의 출력 부분에서 뽑아 내어 이 값을 출력 레지스터에 저장하는 방법을 사용하였다. 따라서 이러한 기술은 입력 레지스터와 출력 레지스터를 각각 따로 구비하여 했다. 이에 비해 본 발명에 따른 암호화 장치에서는 입력 레지스터와 출력 레지스터를 하나의 레지스터로 구현하는 기술을 보인다. 즉, 본 발명에서는 상기 입력 레지스터와 출력 레지스터를 암호부 레지스터란 이름으로 하나로 구성하며, 이러한 암호부 레지스터에 초기 암호화하고자 하는 평문이 저장될 뿐만 아니라, 여섯 번째 사이클에서는 자동으로 암호문이 암호부 레지스터에 저장되도록 구현한다. 이렇게 함으로써 본 발명에 따른 암호화 장치는 도 5에 도시된 바와 같은 장치와는 달리 암호문을 래치하기 위한 출력 레지스터가 불필요하게 된다. 따라서 본 발명에 따른 장치는 오직 하나의 64비트 레지스터만이 필요하므로 그 만큼 칩 구현 영역을 줄일 수 있게 된다.
또한 도 5에 도시된 바와 같은 장치에서는 서브키 생성에 관한 회로 구현이 없으나 본 발명에 따른 장치는 서브키 생성부에 대한 구체적인 구현을 하였기 때문에 평문에 따라 키 값이 다를 경우 평문과 동시에 키 값을 입력시킴으로써 즉시 평문의 암호화가 가능하도록 하였다.
한편, 도 5에 도시된 바와 같은 기술에서의 출력은 아직 역초기 치환(Inverse Initial Permutation: IIP)이 되지 않았기 때문에 엄밀히 말하면 완전한 암호문이 아니다. 마찬가지로 암호문 제1단에 평문이 입력되기 전에 초기 치환(Initial Permutation: IP)이 되어야 하는데 이에 대해서는 도 5의 장치는 기술하지 않는다. 그러나 본 발명에 따른 장치는 구체적으로 초기 치환과 역초기 치환을 위한 회로를 추가하게 되어 다섯 사이클이 완료된 후 여섯 번째 사이클에는 평문이 완전히 암호화된 암호문이 존재하도록 한다.
도 6은 본 발명의 일 실시예에 따른 암호화 단의 상세 회로도를 나타낸다. 가장 단순한 기본 레벨에서, DES 알고리즘은 두 개의 주요 암호화 기술, 즉 뒤섞음(confusion), 및 분산(diffusion)의 조합 기술을 포함한다. 따라서, 암호화 단은 키(Ki)를 기반으로 하여 평문 상에서 치환(permutation)(602 및 603)과 함께 대입(substitution)(601)을 수행하는 것에 의해 이 원리를 활용한다. 초기에 64비트 평문 블럭은 32비트 좌반(left half)(L) 및 32비트 우반(right half)(R)으로 처음 나누어진다. 이때 "i"라는 글자는 진행 반복 횟수를 가리킨다. 이에 따라, Li-1 블럭(605)은 이전 반복된 결과의 32비트 좌반을 나타낸다. 마찬가지로, Ri-1 블럭(606)은 이전 반복된 결과의 대응되는 32비트 우반을 나타낸다. Ri-1 데이터는 확장(expansion) 치환 블럭(602)에 입력된다. 확장 치환 블럭(602)은 우반 데이터를 32비트에서 48비트로 확장한다. 필수적으로, 이러한 작업은 어떠한 비트를 반복하는 것과 마찬가지로 비트들의 순서를 바꾸게 된다. 그 목적은 우반을 XOR 게이트(607)에서의 배타적 논리합 작업을 위한 키와 동일한 사이즈로 만드는 것이다. 더욱이 이는 더 긴 결과물을 발생하게 되어, 이 결과물이 대입 프로세스(601)를 거치는 동안 압착되게 한다. 암호화적으로, 확장 치환(602)은 하나의 비트가 두대입에 영향을 미치도록 허용한다. 따라서 입력 비트에 대한 출력 비트의 의존성은 더 급격히 퍼진다. DES는 평문의 모든 비트에 달려 있는 암호문의 모든 비트 및 키의 모든 비트들을 가지는 조건에 최대한으로 빨리 만족하도록 디자인된다.
확장 치환(602)에 의해 확장된 블럭은 키(Ki)와 XOR 된 후(607), 48비트의 결과는 S-박스(Substitution box) 대입(601)으로 입력된다. 대입은 8개의 각기 다른 대입 박스에 의해 수행된다. 각 S-박스는 6비트의 입력과 4비트의 출력을 가진다. 48비트들은 8개의 6비트 서브 블럭으로 나누어진다. 각 나누어진 블럭은 각각의 S-블럭에 의해 수행된다. 각 S-블럭은 4 로우(row), 6 컬럼(columns)의 테이블에 포함된다. 박스의 각 입력은 4비트 넘버와 대응한다. S-박스의 6개 입력 비트는 출력을 찾도록 로우 및 컬럼 수에 대해 열거하고 있다. 이러한 S-박스의 비선형성은 DES를 안전하게 한다. 이후, S-박스 대입(601)의 32비트 출력은 P-박스 치환(603)에 의해 치환된다. 이러한 치환은 각 입력 비트를 출력 위치로 맵핑(mapping)한다. 두 번 사용되는 비트는 없고, 어느 비트도 무시되지 않는다. 즉 직접(straight) 치환이 수행된다.
P-박스 치환(603)의 출력은 Li-1(605)과 XOR(611)되어 현재의 반복용 우반 데이터 Ri(612)를 발생한다. 현재의 반복용 좌반 데이터 Li(613)은 이전 반복된 우반 Ri-1(606)로부터 직접적으로 얻어진다.
한편 각각의 키(ki)들의 생성 단의 상세 구성은 도 7에 도시된 바와 같다. 도 7을 참조하면, 64비트의 키는 초기 압축 변환된다. 이는 매 8번째 비트를 무시하는 것에 의해 56비트의 키로 줄여진다. 이러한 비트들은 키가 에러-프리(error-free)하는 것을 보장하도록 패러티(parity)를 체크하는데 사용될 수 있다. 56비트 키가 추출된 후, 다른 48-비트 서브키(subkey)가 하기 기술하는 바와 같은 16 암호화 단계 각각을 위하여 발생된다. 첫째, 56비트 키는 두 개의 28비트 절반들(Ci-1, Di-1)로 나누어진다. 이후, 순환 시프트기(703, 704)는 특정한 암호화 단계에 따라 하나 또는 두 비트씩 상기 절반(Ci-1, Di-1)들을 왼쪽 또는 오른쪽으로 순환 시프트한다. 치환된 선택2(705)는 비트들의 48비트 부분을 선택할 뿐만 아니라 비트들의 순서를 치환하는데 사용된다. 시프트 때문에 키 비트들의 다른 부분들이 각각 서브키에서 사용된다. 더욱이 각 비트들은 비록 모든 비트들이 정확히 동일한 횟수로 사용되지는 않지만, 대략 16 서브키들의 14개에서 사용된다. 압축된 키의 결과는 이후 XOR 게이트(607)로 입력된다. 마지막으로 시프트된 비트들(703, 704)은 다음 반복을 위한 28비트 절반(Ci, Di)으로 사용된다.
상기한 도 6 및 도 7에 도시한 바와 같은 암호화 단 및 키생성 단은 16번의 라운드를 수행하여 전체 암호화 동작이 완료되게 된다. 도 8은 본 발명의 일 실시예에 따른 전체 DES 동작 흐름을 설명하기 위한 도면이다. 도 8을 참조하면, 초기 메시지의 64비트 평문이 입력되면, 본 발명은 평문을 초기 치환하게 된다. 이후 초기 치환된 평문은 암호화 1라운드에서 32비트 좌반(L0) 및 우반(R0)으로 나누어지고, 서브키(K1) 기반하에 암호화가 이루어지며, 이후 암호화 2라운드에서 서브키(K2)의 기반하에 암호화가 수행되며, 이러한 과정을 16라운드까지 수행하고 나서는 이후 역초기 전치 치환이 수행되어 64비트의 암호문을 출력하게 된다.
상기 도 8에 도시된 바와 같은 동작을 수행하기 위한 본 발명에 따른 장치는크게 하기와 같이 구성될 수 있다. 즉, 본 발명에 따른 장치는 암호화가 수행될 데이터와 암호화 수행시 필요한 키 값을 입력받아 데이터 암호화 표준(DES) 알고리즘을 이용해서 암호화를 수행하는 암호 처리부와, 암호화 수행중 매 라운드마다 1비트 또는 2비트의 시프트 값을 입력받아 매 라운드마다 입력될 서브키를 생성하는 키생성부와, 블럭 암호화를 위한 제어 신호를 생성하는 제어부(985)로 구성된다. 도 9는 본 발명의 일 실시예에 따른 DES 장치의 블록 구성도이며, 도 10은 도 9의 각부 동작 타이밍도이다.
도 9를 참조하면, 암호처리부는 초기화 벡터와 이전의 평문이 암호화된 값 중 하나를 선택하는 제1멀티플렉서(905)와, 초기화 벡터 또는 이전의 평문이 암호화된 암호문과 평문에 대해 배타적 논리합을 수행하는 XOR 게이트(910)와, DES 알고리즘의 16개의 암호화 라운드 중 하나를 각각 나타내는 세 개의 암호화 단(935, 920, 925)과, DES 알고리즘 수행 중 중간값과 최종 결과인 암호문을 저장하기 위한 암호부 레지스터(950)와, DES 알고리즘으로 암호화하고자하는 데이터와 암호화 제3단(925)의 출력 중 하나를 선택하는 제2멀티플렉서(930)와, 암호화 제1단(935)의 출력과 암호화 제1단(535)의 출력이 IIP(940)에 의해 역초기 전치된 값 중 하나를 선택하는 제3멀티플렉서(945)를 포함하여 구성된다.
키생성부는 암호 처리부의 각각의 암호화 단에서 사용될 서브키를 생성하는 세 개의 키생성 단(960, 975, 970)과, 키의 DES 알고리즘 수행 중간값을 저장하기 위한 서브키 레지스터(955)와, 64비트의 키가 치환선택1(PC1: Permuted Choice1)(980)에 의해 선택된 값에 따라 전치된 값과 키생성 단(970)의 출력 중 하나를 선택하는 제4멀티플렉서(965)를 포함하여 구성된다.
본 발명에 따른 장치 및 방법은 DES의 모든 동작 모드(ECB, CBC, CFB, OFB)에 적용 가능하나 여기서는 CBC 모드에 적용되는 경우에 대해서 예로서 설명하기로 한다.
도 9를 참조하면, 평문을 입력으로 받아서 만약 이 평문이 암호화 하고자 하는 데이터의 첫 번째 64비트 블럭이라면 제1멀티플렉서(905)는 초기화 벡터를 선택하게 되며, 이에 따라 XOR 게이트(910)는 이 제1멀티플렉서(905)의 출력과 평문에 대해 배타적 논리합을 수행하게 된다.
본 발명은 암호화 알고리즘의 구현을 위하여 암호화할 데이터의 중간값을 저장할 64비트의 암호부 레지스터(950)와 키의 중간값을 저장할 56비트의 서브키 레지스터(955)가 구비되어 있다.
제2멀티플렉서(930)는 XOR 게이트(910)의 출력이 IP(915)에 의해 초기 치환(Initial Permutation)된 값을 선택하여 암호화 제1단(935)에 입력시켜서 DES 알고리즘의 첫 번째 암호화 라운드를 수행하게 한다. 제3멀티플렉서(945)는 암호화 제1단(535)의 출력을 선택하여 암호부 레지스터(950)에 입력되어 저장되도록 한다. 이와 동시에 제6멀티플렉서(965)는 64비트의 키가 PC1(980)에 의해 패리티 비트가 제거된 후 치환 선택1에 따라 전치된 값을 선택하여 키생성 제1단(960)에 입력시킨다. 키생성 제1단(960)은 제어부(985)로부터 몇 비트 시프트할 것인지를 나타내는 값과 좌우 어느쪽으로 시프트할 지를 나타내는 값을 입력으로 받아서 DES 알고리즘의 첫 번째 암호화 라운드에서 사용될 첫 번째 서브키를 생성하여 암호화제1단(935)에 보내 준다. 키생성 제1단(960)의 출력은 서브키 레지스터(955)에 입력되어 저장된다.
암호부 레지스터(950)에 저장된 값은 암호화 제2단(920)에 입력되어 두 번째 암호화 라운드를 수행하게 되고, 그 출력이 다시 암호화 제3단(925)에 입력되어 세 번째 암호화 라운드를 수행하게 된다. 이때 제3멀티플렉서(945)는 암호화 제1단(935)의 출력을 선택하여 네 번째 암호화 라운드가 수행된 값이 암호부 레지스터(550)에 저장되도록 한다. 이와 동시에 서브키 레지스터(955)에 저장된 값은 키 생성 제2단(975)에 입력되어 제어부(985)로부터 몇 비트 시프트할 것이지를 나타내는 값과 좌우 어느 쪽으로 시프트할 것인지를 나타내는 값을 입력으로 받아서 두 번째 암호화 라운드에 필요한 서브키를 생성하여 암호화 제2단(920)에 보내 주고, 키생성 제2단(975)의 출력이 다시 키생성 제3단(970)에 입력되어 제어부(985)로부터 좌우 몇 비트 시프트할 것인지 나타내는 값을 입력받아 세 번째 암호화 라운드에 필요한 서브키를 생성하여 암호화 제3단(925)에 보내준다. 이때 제6멀티플렉서(965)는 키생성 제3단(570)의 출력을 키생성 제1단(560)의 입력으로 선택하여 키생성 제1단(560)이 제어부(985)로부터 좌우 몇 비트 시프트할 지를 나타내는 값을 입력받아 네 번째 암호화 라운드에 필요한 서브키를 생성하여 암호화 제1단(935)에 보내주고, 이 키생성 제1단(960)의 입력으로 선택하여 키생성 제1단(960)의 출력은 서브키 레지스터(955)에 저장된다.
상기와 같은 동작이 4번 더 반복 수행되면 총 16개의 암호화 라운드 수행이 완료되므로, 5번째 반복될 제3멀티플렉서(945)는 암호화 제1단(935)의 출력이IIP(975)에 의해 역초기 치환(Inverse Initial Permutation)된 값을 선택하여 암호부 레지스터(950)에 암호화할 데이터가 입력된 후 5사이클이 지나서 여섯 번째 사이클에 DES 알고리즘이 완료된 값이 암호부 레지스터(950)에 저장되어 있게 된다. 이 암호화된 값은 다시 피드백되어 멀티플렉서(905)는 암호부 레지스터(950)의 출력을 선택하여 다음에 암호화할 평문과 배타적 논리합이 수행되도록 한다.
상기한 바와 같은 구성 및 동작을 가짐으로 본 발명에 따른 장치는 도 10에 도시된 바와 같이, 6 클럭마다 평문이 입력되며 6 클럭 주기로 해당 평문의 암호화가 수행된다.
도 11은 본 발명이 구현되거나 수행될 수 있는 컴퓨터 시스템(1100)의 일 예를 나타낸다. 도 7의 컴퓨터 시스템(1100)은 다양한 구성 요소들간의 디지털 정보를 전달하기 위한 어드레스/데이터 버스(1109)와, 디지털 정보 및 지시 등을 처리하기 위한 중앙처리장치(CPU)(1101), 디지털 정보 및 지시를 저장하기 위한 RAM(Random Access Memory)(1102), 다른 영구적 특성에 관한 정보 및 지시 등을 저장하기 위한 ROM(Read Only Memory)(1103)을 포함하여 구성된다. 또한 컴퓨터 시스템(700)은 많은 양의 데이터를 저장하기 위한 데이터 저장 장치(1104)(즉, 자기, 광, 플로피, 또는 테이프 드라이브)와, 주변 장치(즉, 컴퓨터 네트웍, 모뎀 등)와 인터페이스를 하기 위한 I/O 인터페이스(1108)를 포함한다. 또한 암호화 및 복호화 회로(710)가 전송기(sender)에 의해 암호화된 수신 메시지를 디코드하고 나가는 메시지를 엔코드 하기 위하여 사용될 수 있다. 컴퓨터 시스템(1100)과 결합되는 장치들은 정보(즉, 채널 그리드 맵, 수직 제한 그래프(vertical constraint graph), 웨이팅 펑션, 가능한 링크들 등)를 컴퓨터 사용자에게 디스플레이하는 디스플레이 장치(1105)와, 문자-숫자 키 입력 장치(1106)(즉, 키보드)와, 데이터 및 선택을 입력하기 위한 커서 제어 장치(1107)(즉, 마우스, 트랙볼, 라이트 팬 등)를 포함하여 구성될 수 있다.
한편 상기한 본 발명의 설명에서는 구체적인 실시예에 관해 설명하였으나 여러 가지 변형이 본 발명의 범위를 벗어나지 않고 실시될 수 있다. 특히 상기에서는 본 발명의 암호화 장치에 암호화 단 및 키생성 단이 3개인 경우를 예를 들어 설명하였으나, 본 발명은 이 외에도 2개 또는 4개 이상의 암호화 단 및 키생성 단을 가질 수 있다. 이러한 암호화 단 및 키생성 단의 개수는 구성 비용, 작업 효율 등을 고려하여 적절히 달리 설정될 수 있다. 따라서 본 발명의 범위는 설명된 실시예에 의하여 정할 것이 아니고 청구범위와 청구범위의 균등한 것에 의하여 정하여져야 할 것이다.
상기한 바와 같이 본 발명은 DES의 모든 동작 모드를 지원 가능하고, 고속으로 DES 암호화 및 복호화를 수행하며, 비용 효과면을 충족시킬 수 있는 데이터 암호화 및 복호화 장치 및 방법을 제공할 수 있다. 더욱이 일반적인 기술에서는 최종 암호문을 여러 개의 암호화 단들 중 하나의 출력부분에서 뽑아내어 이 값을 출력 레지스터에 저장하는 방법을 사용하였으므로, 입력 레지스터와 출력 레지스터를 따로 두어야 했었다. 이에 비해 본 발명은 입력 레지스터와 출력 레지스터를 암호부레지스터란 이름으로 하나로 합쳐서 암호부 레지스터에 암호화 하고자 하는 평문이 저장된 후 여섯 번째 사이클에서 자동으로 암호문이 암호부 레지스터에 저장되어 있도록 구현하였다. 이렇게 함으로써 종래의 기술과는 달리 암호문을 래치하기 위한 별도의 출력 레지스터가 불필요하다. 따라서 본 발명은 오직 하나의 64비트 레지스터만이 필요함으로 그만큼 칩 영역을 줄일 수 있는 장점이 있다. 또한 종래기술에서는 서브키 생성에 대한 회로 구현이 없었으나, 본 발명은 서브키 생성부에 대한 구체적인 구현을 하였기 때문에 평문에 따라 키 값이 다를 경우 평문과 동시에 키 값을 입력시킴으로써 즉시 평문의 암호화가 가능하도록 하였다.

Claims (4)

  1. 비-병렬 다중 사이클 데이터 암호화 방법에 있어서,
    제1멀티플렉서로 암호화되지 않은 데이터를 입력하는 과정과,
    상기 암호화되지 않은 데이터와 초기화 벡터를 배타적 논리합 하여 출력하는 과정과,
    상기 배타적 논리합 출력을 초기 치환하는 과정과,
    상기 초기 치환된 데이터를 직렬로 연결된 다수의 암호화 단의 암호화 제1단으로 입력하여 각 암호화 단에 의해 암호화가 수행되도록 하는 과정과,
    상기 다수의 암호화 단의 마지막 암호화 단으로부터의 출력을 제2멀티플렉서로 출력하는 과정과,
    상기 마지막 암호화 단의 출력을 상기 암호화 제1단의 입력으로 선택하는 과정과,
    N 사이클이 완료된 이후에 상기 다수의 암호화 단 중 어느 하나의 출력을 역초기 치환하는 과정과,
    상기 역초기 치환된 데이터를 최종 암호화된 데이터로 출력하는 과정을 가짐을 특징으로 하는 암호화 방법.
  2. 비-병렬 다중 사이클 데이터 암호화 장치에 있어서,
    이전 암호화된 데이터와 암호화되지 않은 데이터를 배타적 논리합 작업을 하는 XOR 게이트와,
    상기 XOR 게이트와 결합되어, XOR 게이트의 출력 및 마지막 암호화 단으로부터 출력 중 어느 하나를 선택하여 암호화 제1단의 입력으로 제공하는 멀티플렉서와,
    각각의 암호화 단에 의해 데이터가 암호화되며, 암호화된 데이터는 하나의 암호화 단에서 그 다음의 암호화 단으로 입력되도록 구성되는 상기 멀티플렉서와 직렬로 연결되는 다수의 암호화 단과,
    상기 암호화 제1단의 출력과 연결되어 암호화된 데이터를 저장하며, 최종 저장된 암호화 데이터를 출력하는 암호부 레지스터와,
    상기 암호부 레지스터와 상기 암호화 제2단을 연결하여, 상기 다수의 암호화 단을 통해 N 사이클의 암호화가 수행되도록 상기 암호부 레지스터로부터의 데이터를 상기 암호화 제2단으로 입력토록 하는 피드백 경로를 포함하여 구성함을 특징으로 하는 데이터 암호화 장치.
  3. 제2항에 있어서, 상기 XOR 게이트와 상기 멀티플렉서 사이에서 상기 XOR 게이트의 출력을 초기 치환하는 초기 치환부를 추가로 더 포함하여 구성함을 특징으로 하는 데이터 암호화 장치.
  4. 제2항에 있어서, 최종 출력되는 암호화 데이터를 역초기 치환하는 역초기 치환기를 추가로 더 포함하여 구성함을 특징으로 하는 데이터 암호화 장치.
KR1020000029547A 2000-05-31 2000-05-31 비-병렬 다중 사이클 데이터 암호화 장치 및 방법 KR20020003579A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020000029547A KR20020003579A (ko) 2000-05-31 2000-05-31 비-병렬 다중 사이클 데이터 암호화 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020000029547A KR20020003579A (ko) 2000-05-31 2000-05-31 비-병렬 다중 사이클 데이터 암호화 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20020003579A true KR20020003579A (ko) 2002-01-15

Family

ID=19670894

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000029547A KR20020003579A (ko) 2000-05-31 2000-05-31 비-병렬 다중 사이클 데이터 암호화 장치 및 방법

Country Status (1)

Country Link
KR (1) KR20020003579A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11838402B2 (en) 2019-03-13 2023-12-05 The Research Foundation For The State University Of New York Ultra low power core for lightweight encryption

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11838402B2 (en) 2019-03-13 2023-12-05 The Research Foundation For The State University Of New York Ultra low power core for lightweight encryption

Similar Documents

Publication Publication Date Title
EP0802653B1 (en) Multi-cycle non-parallel data encryption engine
US9054857B2 (en) Parallelizeable integrity-aware encryption technique
US5671284A (en) Data encryptor having a scalable clock
US7092525B2 (en) Cryptographic system with enhanced encryption function and cipher key for data encryption standard
US6185679B1 (en) Method and apparatus for a symmetric block cipher using multiple stages with type-1 and type-3 feistel networks
US6185304B1 (en) Method and apparatus for a symmetric block cipher using multiple stages
DK1686722T3 (en) Block encryption device and block encryption method comprising rotation key programming
US6189095B1 (en) Symmetric block cipher using multiple stages with modified type-1 and type-3 feistel networks
US20020041685A1 (en) Data encryption apparatus
JPH11509940A (ja) データブロックおよび鍵を非線形的に結合する暗号方法および装置
KR100800468B1 (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
JP2005004048A (ja) 鍵拡張装置、鍵拡張方法および鍵拡張プログラム
Masoodi et al. Symmetric Algorithms I
US8130956B2 (en) Efficient and low power encrypting and decrypting of data
TW533726B (en) Generation of keyed integer permutations for message authentication codes
KR100456599B1 (ko) 병렬 디이에스 구조를 갖는 암호 장치
JP4470135B2 (ja) 擬似乱数生成システム
Anusha et al. Analysis and comparison of symmetric key cryptographic algorithms on FPGA
Baigneres et al. A classical introduction to cryptography exercise book
Moldovyan On cipher design based on switchable controlled operations
Mohan et al. Revised aes and its modes of operation
Saqib et al. A compact and efficient FPGA implementation of the DES algorithm
KR20020003579A (ko) 비-병렬 다중 사이클 데이터 암호화 장치 및 방법
Swayamprakash et al. Design of Advanced Encryption Standard using Verilog HDL
JP2001509608A (ja) デジタル・データのlビットの入力ブロックをlビットの出力ブロックに暗号変換するための方法

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination