KR100528890B1 - 다양한 인터페이스를 갖는 고속 블럭 암호 장치 및 그구동 방법 - Google Patents

다양한 인터페이스를 갖는 고속 블럭 암호 장치 및 그구동 방법 Download PDF

Info

Publication number
KR100528890B1
KR100528890B1 KR10-2002-0035942A KR20020035942A KR100528890B1 KR 100528890 B1 KR100528890 B1 KR 100528890B1 KR 20020035942 A KR20020035942 A KR 20020035942A KR 100528890 B1 KR100528890 B1 KR 100528890B1
Authority
KR
South Korea
Prior art keywords
session
data
cpu
interface
block
Prior art date
Application number
KR10-2002-0035942A
Other languages
English (en)
Other versions
KR20040000925A (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-2002-0035942A priority Critical patent/KR100528890B1/ko
Publication of KR20040000925A publication Critical patent/KR20040000925A/ko
Application granted granted Critical
Publication of KR100528890B1 publication Critical patent/KR100528890B1/ko

Links

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Storage Device Security (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Finance (AREA)

Abstract

본 발명은 다양한 인터페이스를 갖는 고속 블럭 암호 장치 및 그 구동 방법에 관한 것이다. 본 발명에서는 CPU 인터페이스 모드에서 매 세션 시작시 CPU 인터페이스 블럭을 통해 입력된 세션 키를 이용하여 키 스케줄링 블럭이 라운드 키를 생성하고, 이후 같은 세션에서는 암/복호 블럭이 데이터 암/복호를 위하여 반복적으로 동작한다. 그리고, 전용 인터페이스 모드에서는 고속 데이터 입력부를 통하여 세션 키 및 데이터를 입력하여 키 스케쥴링 블럭과 암/복호 블럭에 전달하며, 같은 세션 동안에는 입력 데이터를 암/복호 블럭에 전달하고 알고리즘 종료시 암/복호화된 데이터를 고속 데이터 출력부에 반복적으로 전달한다. 또한, 혼합 인터페이스 모드에서는 세션 키와 세션 IV값을 CPU를 통하여 입력하고 데이터는 고속 데이터 입력부를 통하여 입력하여 암/복호화 후 고속 데이터 출력부을 통하여 출력한다.

Description

다양한 인터페이스를 갖는 고속 블럭 암호 장치 및 그 구동 방법{High-speed block cipher with multi-interfaces and method of operating the same}
본 발명은 전자 지불 관련 서버, 서버-클라이언트 환경 및 고속의 데이터 통신시 기밀성을 필요로 하는 시스템에서 고속의 데이터 암/복호화를 위한 블럭 암호 장치 및 그 구동 방법에 관한 것으로, ECB 모드, CBC 모드, CFB 모드, OFB 모드의 모든 암호 모드를 지원하며, 범용의 CPU 인터페이스를 지원하고, CPU의 개입이 필요 없는 전용의 인터페이스를 지원하며, 세션 키와 세션 IV(Initialization Vector)값은 CPU를 통하여 주고 받고 암/복호화 데이터는 전용 인터페이스를 사용하는 세가지 모드의 인터페이스를 지원할 수 있는 고속 블럭 암호 장치 및 그 구동 방법에 관한 것이다.
정보의 암호화 방식은 암호키와 복호키의 사용 방법에 따라 크게 공통키 암호화 방식과 공개키 암호화 방식으로 구분된다. 공통키 암호화 방식은 송신자와 수신자 쌍방으로 동일한 비밀키를 이용하여 평문에서 암호문으로의 변환인 역변환을 실시하는 암호 방식으로 비밀키 암호화 방식 또는 대칭키 암호화 방식으로도 불린다. 공개키 암호화 방식은 암호와 복호에 서로 다른 키를 사용함으로써 비대칭키 암호화 방식으로 불리기도 하며, 이 방식에서 하나는 비밀키를 사용하고 다른 하나는 공개키를 사용한다.
공통키 암호화 방식은 암/복호의 데이터의 형태에 따라 블럭 단위로 평문을 암호화하는 블럭 암호와 비트열로 처리하는 스트림 암호로 크게 나뉜다. 대표적인 공통키 암호 방식으로는 DES, IDEA, RC4, Skipjack, MISTY, 국내 표준인 SEED 등이 있다.
기존에는 일반적으로 하나의 인터페이스, 주로 범용의 CPU 인터페이스를 지원하여 입/출력 데이터의 지연을 가져오거나, 별도의 인터페이스가 있더라도 CPU의 개입이 필요하였다.
본 발명의 목적은 범용의 CPU 인터페이스 지원, CPU의 개입이 필요없는 전용의 인터페이스 지원, 세션 키와 세션 IV값은 CPU를 통하여 주고 받고 암/복호화 데이터는 전용 인터페이스를 사용하는 세가지 모드의 인터페이스를 지원하도록 구성되는 다양한 인터페이스를 갖는 고속 블럭 암호 장치를 제공하는데 있다.
본 발명의 다른 목적은 범용의 CPU 인터페이스 지원, CPU의 개입이 필요없는 전용의 인터페이스 지원, 세션 키와 세션 IV값은 CPU를 통하여 주고 받고 암/복호화 데이터는 전용 인터페이스를 사용하는 세가지 모드의 인터페이스를 지원하도록 구성되는 다양한 인터페이스를 갖는 고속 블럭 암호 장치의 구동 방법을 제공하는데 있다.
본 발명에 따른 다양한 인터페이스를 갖는 고속 블럭 암호 장치는 데이터 및 제어/상태 레지스터를 세팅하고, CPU 인터페이스 모드 및 혼합 인터페이스 모드에서 세션 키 및 세션 IV를 CPU로부터 수신하며, 상기 CPU 인터페이스 모드에서 알고리즘 처리 결과를 출력하고, 세션 시작을 명령하기 위한 CPU 인터페이스 블럭과, 전용 인터페이스 모드에서 세션 키 및 세션 IV를 로딩하기 위한 고속 데이터 입력부와, 상기 CPU 인터페이스 블럭 및 상기 고속 데이터 입력부를 통해 입력되는 세션 키를 입력하여 라운드 수만큼의 라운드 키를 생성하기 위한 키 스케쥴링 블럭과, 상기 CPU 인터페이스 블럭 및 상기 고속 데이터 입력부를 통해 입력된 데이터를 로딩하여 알고리즘을 수행하기 위한 암/복호 블럭과, 상기 전용 인터페이스 모드 또는 상기 혼합 인터페이스 모드에서 출력 데이터 및 세션 IV를 출력하기 위한 고속 데이터 출력부를 포함하여 이루어진 것을 특징으로 한다.
또한, 본 발명에 따른 다양한 인터페이스를 갖는 고속 블럭 암호 장치의 구동 방법은 칩 동작에 필요한 모드를 세팅한 후 인터페이스 모드를 확인하는 단계와, 상기 인터페이스 모드의 확인 결과 전용 인터페이스 모드인 경우 고속 데이터 입력부를 통해 세션 키 및 세션 IV를 수신한 후 라운드 키를 생성하는 단계와, 상기 라운드 키를 생성한 후 상기 고속 데이터 입력부를 통해 입력된 데이터를 로딩하여 암/복호화를 수행하는 단계와, 상기 세션의 마지막이 아닌 경우 암/복호화된 데이터를 고속 데이터 출력부를 통해 출력한 후 상기 고속 데이터 입력부를 통해 데이터를 로딩하고, 상기 세션의 마지막인 경우 세션 IV 및 데이터를 상기 고속 데이터 출력부를 통해 출력한 후 상기 고속 데이터 입력부를 통해 세션 키 및 세션 IV를 수신한 후 라운드 키를 생성하는 단계와, 상기 인터페이스 모드의 확인 결과 혼합 인터페이스와 CPU 인터페이스 모드인 경우 CPU를 통해 세션 키 및 세션 IV값을 로딩한 후 세션 시작 명령에 따라 라운드 키를 생성하는 단계와, 상기 인터페이스 모드가 상기 혼합 인터페이스 모드인 경우 라운드 키가 준비되어 있는가를 확인 후 CPU를 통해 입력된 입력 데이터를 로딩하고 암/복호화를 수행한 후 암/복호화된 출력 데이터를 고속 데이터 출력부를 통해 출력하는 단계와, 상기 세션의 마지막인 경우 세션 IV값을 CPU를 통하여 전달한 후 상기 CPU를 통해 입력 데이터를 로딩하여 암/복호화를 수행하고, 상기 세션의 마지막이 아닌 경우는 상기 CPU를 통해 세션 키 및 세션 IV값을 로딩한 후 세션 시작 명령에 따라 라운드 키를 생성하는 단계와, 상기 인터페이스 모드가 CPU 인터페이스 모드인 경우 라운드 키의 생성 완료를 별도로 감지하지 않고 입력 데이터를 로딩하고, 알고리즘 시작 명령에 따라 라운드 키가 생성된지를 확인한 후 데이터 암/복호화를 수행하는 단계와, 상기 암/복호화 수행이 종료된 후 알고리즘 종료를 외부로 알려주는 단계와, 상기 알고리즘 수행 종료를 인식하고, 상기 암/복호된 출력 데이터를 읽어간 후 같은 세션 동안은 상기 입력 데이터를 로딩하고, 알고리즘 시작 명령에 따라 라운드 키가 생성된지를 확인한 후 데이터 암/복호화를 수행하고, 다른 세션 동안은 상기 CPU를 통해 세션 키 및 세션 IV값을 로딩한 후 세션 시작 명령에 따라 라운드 키를 생성하는 단계를 포함하여 이루어진 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써 본 발명을 상세히 설명한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예는 본 발명의 개시가 완전하도록 하며, 이 기술 분야에서 통상의 지식을 가진자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다. 또한, 도면상에서 동일 부호는 동일 요소를 지칭한다.
본 발명은 범용의 CPU 인터페이스 지원, CPU의 개입이 필요없는 전용의 인터페이스 지원, 세션 키와 세션 IV값은 CPU를 통하여 주고 받고 암/복호화 데이터는 전용 인터페이스를 사용하는 세가지 모드의 인터페이스를 지원하도록 구성되어 있다. 이 세가지 인터페이스 모드를 각각 편의상 CPU 인터페이스 모드, 전용 인터페이스 모드, 혼합 인터페이스 모드로 칭하겠다.
도 1은 본 발명에 따른 다양한 인터페이스를 갖는 고속의 블럭 암호 장치의 구성을 설명하기 위해 도시한 블럭도로서, 본 발명에 따른 블럭 암호 장치는 데이터 및 제어/상태 레지스터를 세팅하고, CPU 인터페이스 모드 및 혼합 인터페이스 모드에서 세션 키 및 세션 IV를 CPU로부터 수신하며, CPU 인터페이스 모드에서 알고리즘 처리 결과를 출력하고, 세션 시작을 명령하는 CPU 인터페이스 블럭(110), CPU 인터페이스 블럭(110) 및 고속 데이터 입력부(140)를 통해 입력되는 세션 키를 입력하여 라운드 수만큼의 라운드 키를 생성하는 키 스케쥴링 블럭(120), CPU 인터페이스 블럭(110) 및 고속 데이터 입력부(140)를 통해 입력된 데이터를 로딩하여 알고리즘을 수행하는 암/복호 블럭(130), 전용 인터페이스 모드에서 세션 키 및 세션 IV를 로딩하는 고속 데이터 입력부(140), 전용 인터페이스 모드 또는 혼합 인터페이스 모드에서 출력 데이터 및 세션 IV를 출력하는 고속 데이터 출력부(150)로 구성된다.
CPU 인터페이스 블럭(110)은 모드 인터페이스부(111), CPU 읽기부(112), CPU 쓰기부(113), 칩 동작 명령부(114), 칩 동작 상태부(115), 인터럽트 처리부(116)로 구성된다. 모드 인터페이스부(111)는 외부 마이크로프로세서의 종류 및 통신 데이터 비트 크기에 맞게 외부와 정합하는 기능을 수행한다. CPU 읽기부(112) 및 쓰기부(113)는 암호 칩 동작 제어 및 상태를 나타내는 제어/상태 레지스터를 외부에서 읽고 쓰는 기능을 수행하며, 칩 동작 상태부(115)는 알고리즘 종료를 포함한 칩의 상태를 알 수 있는 신호를 수신하여 상태 레지스터 및 외부에 전달한다. 칩 동작 명령부(114)는 관련 제어 레지스터로부터 새로운 세션의 시작 및 알고리즘의 수행 시작을 알리는 신호를 생성하여 키 스케쥴링 블럭(120)과 암/복호 블럭(130)에 전달하는 기능을 한다. 인터럽트 처리부(116)는 칩의 오동작 및 알고리즘 종료를 인식하여 인터럽트 마스크 상태에 따라 외부에 인터럽트를 전달하는 기능을 수행한다.
키 스케쥴링 블럭(120)은 관련 제어 레지스터로부터 세션 키를 입력 받고 알고리즘 명령부로부터 세션 시작 명령을 받아 라운드 키를 생성하여 알고리즘 처리부에 전달하는 기능을 수행한다. 키 스케쥴링은 블럭(120)의 원리는 외부에서 입력되는 128비트의 키를 입력으로 받아 라운드 수만큼의 라운드 키를 생성하는 것이다.
암/복호 블럭(130)은 관련 제어 레지스터로부터 수신한 입력 데이터를 로딩하는 데이터 로딩부(131)와, 칩 동작 명령부(114)로부터 알고리즘 시작 명령을 받으면 알고리즘을 수행하고, 알고리즘 종료 및 출력 데이터를 전달하는 알고리즘 주요 기능부(132)로 구성되어 있다.
고속 데이터 입력부(140)는 입력 인터페이스 정합부(141), 세션 키/IV 버퍼 (142), 입력 데이터 버퍼(143)로 구성된다. 입력 인터페이스 정합부(141)는 데이터 인터페이스 모드(전용 인터페이스, 혼합 인터페이스)에 따라 세션 키 및 세션 IV, 입력 데이터를 각각 해당 버퍼에 저장하고 키 스케쥴링 블럭(120), 암/복호 블럭(130)에 전달하는 역할을 한다.
고속 데이터 출력부(150)는 출력 IV 버퍼(151), 출력 데이터 버퍼(152), 출력 인터페이스 정합부(153)로 구성되어, 암/복호 블럭(130)에서 알고리즘 종료시 수신한 암/복호 데이터를 출력 데이터 버퍼(152)에 저장하고, 세션의 마지막인 경우에는 세션 IV 값을 수신하여 출력 IV 버퍼(151)에 저장하며, 출력 인터페이스에 맞게 데이터를 전달한다.
상기와 같이 구성되는 본 발명에 따른 다양한 인터페이스를 갖는 고속의 암호 장치의 전체 동작을 개략적으로 설명하면 다음과 같다.
CPU 인터페이스 모드시에는 CPU 인터페이스 블럭(110)을 통하여 데이터 및 제어/상태 레지스터의 세팅이 이루어지고, 매 세션 시작시 키 스케줄링 블럭(120)이 라운드 키를 생성하기 위하여 동작하게 되며, 이후 같은 세션에서는 암/복호 블럭(130)이 데이터 암/복호를 위하여 반복적으로 동작한다. 즉, 매 세션 시작시 도 1의 (180) 점선을 따라 라운드 키를 생성하기 위하여 칩이 동작하며, 이후 같은 세션에서는 (181) 점선을 따라 데이터의 암/복호를 위하여 반복적으로 칩이 동작한다.
전용 인터페이스 모드시에는 고속 데이터 입력부(140)을 통하여 세션 키 및 데이터를 입력받아 키 스케쥴링 블럭(120)과 암/복호 블럭(130)에 전달하며(도 1의 실선 190), 같은 세션 동안에는 입력 데이터를 암/복호 블럭(130)에 전달하고(도 1의 실선 191), 알고리즘 종료시 암호화 또는 복호화된 출력 데이터를 고속 데이터 출력부(150)에 반복적으로 전달한다. 그리고 세션의 마지막 데이터인 경우는 ECB 모드를 제외한 피드백(Feedback) 모드에서 세션 IV 값을 전달한다.
혼합 인터페이스 모드시에는 세션 키와 세션 IV값을 CPU를 통하여 전달받고 (도 1의 점선 180), 데이터는 고속 데이터 입력부(140)를 통하여 전달받아(도 1의 실선 190), 암/복호화 후 고속 데이터 출력부(150)을 통하여 전달하게 된다. 이때, 세션의 마지막 데이터인 경우는 세션 IV값을 CPU를 통하여 전달하게 되어 있다.
도 2(a) 및 도 2(b)는 고속의 데이터 암/복호화를 위한 전용 입력 인터페이스로서, 데이터 입력을 위한 각각의 신호 및 기능은 다음과 같다.
DI[31:0]: 데이터의 암호화 또는 복호화를 위한 입력 데이터(암호화하기 위한 평문 또는 복호화하기 위한 암호문, DI[0]가 LSB이다.)
DI_RDY: Ready for Input Data, 입력 데이터를 장치가 받을 수 있다는 High Assert 신호
DI_VAL: Input Data Valid, 입력 데이터(DI[31:0])가 유효함을 나타내는 신호. 4 clock 단위로 Assert되는 신호, High Assert 신호
SES_END: 세션의 마지막 입력 데이터임을 알려주는 신호, 마지막 입력 데이터의 첫번째 클럭에서 high assert된다.
SES_STRT: 세션의 시작을 알리는 신호, 데이터 인터페이스가 전용 인터페이스 모드인 경우 Key와 IV값이 있는 동안 High Assert된다. 여기서 ECB 모드인 경우는 IV값이 필요 없으므로 Key값이 있는 동안 High Assert된다. 혼합 인터페이스 모드인 경우, 즉 세션 키와 세션 IV값은 CPU를 통하여 수신하고, 데이터만 이 인터페이스를 사용하는 경우는 입력 데이터의 첫번째 클럭에서만 High Assert된다.
암/복호화 입력 데이터를 받아들일 수 있는 경우 DI_VAL 신호를 High Assert시키면, 칩 외부에서 이 신호 보고 4클럭(4 Long Words: 32bit ×4 = 128bits) 단위의 데이터를 전송한다. 여기서는 편의상 128비트의 예를 들었지만, 32bit의 정수배가 되는 임의의 비트 단위의 입/출력 데이터를 갖는 블럭 암호에는 모두 적용이 가능하다. DI_RDY는 보통 4 Long Words(이하, 블럭이라 함)의 데이터의 두번째 클럭에서 deassert된다. 연속적으로 블럭 데이터를 전송 받을 수 있는 경우에는 첫번째 데이터 블럭에서 DI_RDY 신호는 계속 Assert되어 있다. 고속의 처리를 위하여 상호 동작하는 신호는 타이밍도와 같이 한 클럭 뒤에 Assert되거나 Deassert된다. 본 방법은 ECB, CFB, OFB, CFB 모드를 지원하는데 각각의 모드에 따라 입력되는 데이터는 도 2(b)에 도시된 바와 같이 4 클럭 단위로 처리된다. ECB, CBC, 128-bit CFB/OFB 모드에서는 1번의 알고리즘 입력 데이터인 128비트 입력 데이터를 4클럭 사이클 동안 전달하여 처리한다. 8-bit CFB/OFB 모드에서는 4개의 알고리즘 입력 데이터를 하위 8비트에 매 클럭마다 4클럭 사이클 동안 전달하여 처리한다. 16-bit CFB/OFB 모드에서는 4개의 알고리즘 입력 데이터를 하위 16비트에 매 클럭마다 4클럭 사이클 동안 전달하여 처리한다. 32-bit CFB/OFB 모드에서는 4개의 알고리즘 입력 데이터를 32비트에 매 클럭마다 4클럭 사이클 동안 전달하여 처리한다. 64-bit CFB/OFB 모드에서는 2개의 알고리즘 입력 데이터를 32비트에 매 클럭마다 4클럭 사이클 동안 전달하여 처리하는 구조로 되어 있다.
도 3a 및 도 3b는 고속의 데이터 암/복호화를 위한 전용 출력 인터페이스로서, 데이터 출력을 위한 각각의 신호 및 기능은 다음과 같다.
DO[31:0]: 알고리즘 수행후 암호화 또는 복호화된 출력 데이터, DO[0]가 LSB이다.
DO_RDY: 출력 데이터를 받을 수 있다고 외부에서 알려주는 신호, High Assert 신호
DO_VAL: Output Data Valid, 출력 데이터가 유효함을 나타내는 신호. 4clock 단위로 Assert되는 신호, High Assert 신호
SES_STRT: 세션의 시작을 알리는 신호, 세션의 첫 입력 데이터의 첫번째 클럭에서 high assert된다.
SES_END: 세션의 끝을 알리는 신호, 데이터 인터페이스가 전용 인터페이스 모드인 경우 IV값이 있는 동안 High Assert된다. 여기서 ECB 모드인 경우는 IV값이 필요 없으므로 혼합 인터페이스 모드와 같이 첫번째 클럭에서만 high assert된다. 혼합 인터페이스 모드인 경우, 즉 세션 IV값은 CPU를 통하여 전달하고, 데이터만 이 인터페이스를 사용하는 경우는, 세션의 마지막 출력 데이터의 첫번째 클럭에서만 High Assert된다.
ECB, CFB, OFB, CFB 모드를 지원하는데 각각의 모드에 따라 처리되어 출력되는 데이터는 다음 도 3b에 도시된 바와 같이 4클럭 단위이다. 여기서는 편의상 128비트의 예를 들었지만, 32bit의 정수배가 되는 임의의 비트 단위의 입/출력 데이터를 갖는 블럭 암호에는 모두 적용이 가능하다. ECB, CBC, 128-bit CFB/OFB 모드에서는 한 사이클의 알고리즘 출력 데이터인 128비트 출력 데이터를 4클럭 사이클 동안 전달하여 처리한다. 8-bit CFB/OFB 모드에서는 4사이클의 알고리즘 출력 데이터를 하위 8비트에 매 클럭마다 4클럭 사이클 동안 전달한다. 16-bit CFB/OFB 모드에서는 4사이클의 알고리즘 출력 데이터를 하위 16비트에 매 클럭마다 4클럭 사이클 동안 전달한다. 32-bit CFB/OFB 모드에서는 4사이클의 알고리즘 출력 데이터를 32비트에 매 클럭마다 4클럭 사이클 동안 전달하여 처리한다. 64-bit CFB/OFB 모드에서는 2사이클의 알고리즘 출력 데이터를 32비트에 매 클럭마다 4클럭 사이클 동안 전달하여 처리하는 구조로 되어 있다.
도 4a 및 도 4b는 본 발명에 따른 다양한 인터페이스를 갖는 블럭 암호 장치의 동작 흐름도로이다. 먼저 ECB, CBC, CFB, OFB중 암호 모드 선택, 암/복호화 동작 여부, CFB/OFB의 경우 k비트 할당 등 칩 동작에 필요한 모드를 세팅한다(401). 인터페이스 모드에 따라(402) 전용 인터페이스 모드인 경우에는 도 2에서 설명된 전용 인터페이스의 규격에 따라 세션 키 및 세션 IV를 입력 인터페이스 정합부 및 세션 키/IV 버퍼를 통해 수신한 후(403) 라운드 키 생성부에 전달하여 라운드 키를 생성하고(404), 입력 인터페이스 정합부 및 입력 데이터 버퍼를 통해 수신한 입력 데이터를 암/복호 블럭에 로딩하여(405) 암/복호화를 수행한다(406). 그리고, 다음 세션의 마지막이 아닌 경우는 출력 데이터 버퍼 및 출력 인터페이스 정합부를 통해 암/복호화된 데이터만을 출력하고(409), 단계 405로 천이한다. 세션의 마지막인 경우는 출력 IV 버퍼 및 출력 데이터 버퍼, 그리고 출력 인터페이스 정합부를 통해 세션 IV 및 데이터를 출력하고(408), 단계 403으로 천이한다. 인터페이스 모드에 따라(402) 혼합 인터페이스와 CPU 인터페이스 모드인 경우에는 모드 인터페이스부 및 CPU 쓰기부를 통해 CPU로부터 세션 키 및 세션 IV값을 로딩받은 후(410) 칩 동작 명령부의 세션 시작 명령(411)에 따라 라운드 키 생성부에서 라운드 키를 생성한다(412). 여기서 세션 키 및 세션 IV 로딩(410)은 이전 루틴에서 미리 로딩이 가능하다. 인터페이스 모드에 따라(413) 혼합 인터페이스 모드인 경우에는 라운드 키가 준비되어 있는가를 확인 후(414) CPU 쓰기부 및 데이터 로딩부를 통해 입력된 입력 데이터를 로딩하고(415) 알고리즘 주요 기능부를 이용하여 암/복호화를 수행한 후(416) 암/복호화된 출력 데이터를 출력 데이터 버퍼 및 출력 인터페이스 정합부를 통하여 출력한다(417). 이때 세션의 마지막인가에 따라(418) 세션의 마지막인 경우에는 세션 IV값을 CPU를 통하여 전달하고(419), 단계 410으로 천이하며, 세션의 마지막이 아닌 경우는 단계 415로 천이한다. 인터페이스 모드에 따라(413) CPU 인터페이스 모드인 경우에는 세션 시작 명령을 내린 후 CPU가 라운드 키의 생성 완료를 별도로 감지하지 않고 바로 CPU 쓰기부 및 데이터 로딩부를 통해 입력 데이터를 로딩하고(420), 칩 동작 명령부로부터 알고리즘 시작 명령(421)을 내려도 장치 내부에서는 자동적으로 라운드 키가 생성된지를 확인한 후(422) 데이터 암/복호화를 수행하도록 되어 있다(423). 알고리즘 수행이 끝나면 칩에서는 알고리즘 종료(424)를 3가지 형태로 외부에 알려 줄 수 있도록 설계되어 있다. 이 방법은 상태 레지스터를 통한 방법과 인터럽트을 이용한 방법, 외부로 할당된 핀을 통한 방법이 있다. 외부에서 어떤 방법을 통하여 인식하든지, 상태 레지스터와 외부로 할당된 핀은 항상 표시가 된다. 인터럽트는 인터럽트 디스에이블 제어 레지스터를 통하여 사용하지 않을 수 있다. 사용자는 시스템의 특성에 맞게 이 3가지 방법중 하나를 선택하여 알고리즘 수행 종료를 인식하도록 설계하면 된다. CPU는 이 3가지 방법중 하나를 선택하여 알고리즘 수행 종료를 인식한 후(425) 암/복호된 출력 데이터를 읽어간다(426). 장치에서는 CPU가 이 데이터를 읽어가면 자동으로 알고리즘 종료를 알렸던 신호들을 디스에이블(disable)하도록 설계되어 있어, CPU가 데이터를 읽어간 후 별도의 알고리즘 처리 데이터를 읽어갔다는 신호를 주지 않아도 된다. 지금까지 내용은 세션의 처음 알고리즘 수행 과정을 기술한 것이다. 같은 세션 동안은 처음 알고리즘 수행을 제외하고는 "입력 데이터 로딩부터 출력 데이터를 읽어가는 과정" 즉, 도 4의 (427) 루프를 따라서 입력 데이터 로딩(420)부터 출력 데이터 및 다음 세션 IV를 읽어가는 과정(426)까지를 반복하여 수행하면 된다. 여기서 세션키 로딩(410)과 입력 데이터 로딩(420)은 각각 첫번째 세션의 첫번째 알고리즘 처리를 제외하면, 장치에서 라운드 키 생성(412) 및 알고리즘 수행(423)을 하는 동안 미리 CPU에서 다음 세션 키 및 입력 데이터의 로딩이 가능하므로 칩이 알고리즘을 수행하는데 걸리는 시간은 평균적으로 알고리즘 시작 명령(421)에서 출력 데이터를 읽어가는 것(426)까지를 수행하는 시간과 같다고 볼 수 있다. 즉, 고속의 블럭 암호 장치는 CPU 인터페이스 모드시에도 성능 향상을 위해 세션 키 및 암/복호를 위한 입력 데이터를 키 생성 및 알고리즘 수행동안 미리 로딩할 수 있도록 설계되어 실제 알고리즘 처리 시간이 장치의 성능을 좌우하는 주요소로 작용하도록 설계되었다.
상술한 바와 같이 본 발명은 전자 지불 관련 서버, 서버-클라이언트 환경 및 고속의 데이터 통신시 기밀성을 요하는 시스템에서 고속의 데이터 암/복호화를 위한 블럭 암호를 구현하여 ECB 모드, CBC 모드, CTR 모드, CFB 모드, OFB 모드의 모든 암호 모드를 지원하며, 범용의 CPU 인터페이스 지원, CPU의 개입이 필요없는 전용의 인터페이스 지원, 세션 키와 세션 IV값은 CPU를 통하여 주고 받고 암/복호화 데이터는 전용 인터페이스를 사용하는 세가지 모드의 인터페이스를 지원하도록 한다. 이와 같이 다양한 인터페이스 지원을 통하여 암/복호화 장비에 적용이 용이하고, 전용 인터페이스 사용시 피드백 암호 모드에서도 622Mbps 이상의 처리 속도를 제공하며, ECB 모드나 CTR 모드시에는 수 Gbps의 성능도 제공하므로 고속의 IP 라우터 및 ATM 장비등 다양한 네트워크 장치에도 적용이 가능하다.
도 1은 본 발명에 따른 다양한 인터페이스를 갖는 고속 블럭 암호 장치의 구성을 설명하기 위한 블럭도.
도 2(a) 및 도 2(b)는 고속 데이터 입력 인터페이스.
도 3(a) 및 도 3(b)는 고속 데이터 출력 인터페이스.
도 4(a) 및 도 4(b)는 본 발명에 따른 고속의 블럭 암호 장치의 구동 방법을 설명하기 위한 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
110 : CPU 인터페이스 블럭 120 : 키 스케쥴링 블럭
130 : 암/복호 블럭 140 : 고속 데이터 입력부
150 : 고속 데이터 출력부 111 : 모드 인터페이스부
112 : CPU 읽기부 113 : CPU 쓰기부
114 : 칩 동작 명령부 115 : 칩 동작 상태부
116 : 칩 인터럽트 처리부 121 : 라운드 키 생성부
131 : 데이터 로딩부 132 : 알고리즘 주요 기능부
141 : 입력 인터페이스부 142 : 세션 IV 버퍼
143 : 입력 데이터부 151 : 출력 IV 버퍼
152 : 출력 데이터 버퍼 153 : 출력 인터페이스 정합부

Claims (7)

  1. 범용의 CPU 인터페이스를 지원하는 CPU 인터페이스 모드, CPU의 개입이 필요없는 전용의 인터페이스를 지원하는 전용 인터페이스 모드, 및 세션 키와 세션 IV는 CPU를 통하여 주고 받고 암복호화 데이터는 상기 전용의 인터페이스를 사용하는 혼합 인터페이스 모드를 구현하는 고속 블럭 암호 장치로서,
    상기 CPU 인터페이스 모드와 상기 혼합 인터페이스 모드에서 데이터 및 제어/상태 레지스터를 세팅하고 세션 키 및 세션 IV를 CPU로부터 수신하며, 상기 CPU 인터페이스 모드에서 알고리즘 처리 결과를 출력하고 세션 시작을 명령하는 CPU 인터페이스 블럭(110);
    상기 전용 인터페이스 모드에서 세션 키 및 세션 IV를 로딩하는 고속 데이터 입력부(140);
    상기 3가지 모드에서, 상기 CPU 인터페이스 블럭(110) 또는 상기 고속 데이터 입력부(140)를 통해 세션 키를 입력받아 이를 이용하여 라운드 수 만큼의 라운드 키를 생성하는 키 스케쥴링 블럭(120);
    상기 3가지 모드에서, 상기 CPU 인터페이스 블럭(110) 또는 상기 고속 데이터 입력부(140)를 통해 입력된 데이터를 로딩하여 알고리즘을 수행하고 그 결과를 출력하는 암/복호 블럭(130); 및
    상기 전용 인터페이스 모드 및 상기 혼합 인터페이스 모드에서 출력 데이터 및 세션 IV를 출력하기 위한 고속 데이터 출력부(150)를 포함하여 이루어진 다양한 인터페이스를 갖는 고속 블럭 암호 장치.
  2. 제 1 항에 있어서, 상기 CPU 인터페이스 블럭(110)은,
    외부 마이크로 프로세서의 종류 및 통신 데이터 비트의 크기에 맞게 외부와 정합하는 기능을 수행하는 모드 인터페이스부(111);
    암호 칩 동작 제어 및 상태를 나타내는 제어/상태 레지스터를 읽어 상기 세션 키, 상기 세션 IV 및 데이터, 그리고 칩 동작 모드를 수신하는 CPU 쓰기부(113);
    상기 암/복호 블럭의 알고리즘 처리 결과에 따른 데이터 및 세션 IV를 출력하기 위한 CPU 읽기부(112);
    상기 암/복호 블럭으로부터 알고리즘 종료 신호를 수신하여 칩의 동작 상태 및 인터럽트 상태를 알리기 위한 칩 동작 상태부(115);
    상기 CPU 쓰기부를 통해 관련 제어 레지스터로부터 새로운 세션의 시작 및 알고리즘 시작을 알리는 신호를 생성하여 상기 키 스케쥴링 블럭과 상기 암/복호 블럭에 전달하는 칩 동작 명령부(114); 및
    칩의 오동작 및 알고리즘 종료를 인식하여 인터럽트 마스크 상태에 따라 외부에 인터럽트를 전달하기 위한 인터럽트 처리부(116)를 포함하여 이루어진 것을 특징으로 하는 다양한 인터페이스를 갖는 고속 블럭 암호 장치.
  3. 제 1 항에 있어서, 상기 고속 데이터 입력부(140)는,
    상기 전용 인터페이스 모드 및 상기 혼합 인터페이스 모드에서 상기 세션 키, 상기 세션 IV 및 입력 데이터를 각각 해당 버퍼에 저장하고, 상기 키 스케쥴링 블럭(120) 및 상기 암/복호 블럭(130)에 전달하기 위한 입력 인터페이스 정합부(141);
    상기 입력 인터페이스 정합부(141)를 통해 입력되는 상기 세션 키 및 상기 세션 IV가 저장되는 제 1 버퍼(142); 및
    상기 입력 인터페이스 정합부(141)를 통해 입력되는 상기 데이터가 저장되는 제 2 버퍼(143)를 포함하여 이루어진 것을 특징으로 하는 다양한 인터페이스를 갖는 고속 블럭 암호 장치.
  4. 제 1 항에 있어서, 상기 암/복호 블럭(130)은,
    상기 CPU 인터페이스 블럭(130) 또는 상기 고속 데이터 입력부(140)를 통해 입력되는 데이터를 로딩하기 위한 데이터 로딩부(131); 및
    상기 CPU 인터페이스 블럭(130)으로부터의 알고리즘 시작 명령에 따라 알고리즘을 수행하고, 알고리즘 종료 및 출력 데이터를 전달하는 알고리즘 주요 기능부(132)를 포함하여 이루어진 것을 특징으로 하는 다양한 인터페이스를 갖는 고속 블럭 암호 장치.
  5. 제 1 항에 있어서, 상기 고속 데이터 출력부(150)는,
    상기 암/복호 블럭에서 알고리즘 종료시 수신한 암/복호 데이터를 저장하기 위한 제 1 버퍼(151);
    상기 세션의 마지막인 경우 세션 IV를 저장하기 위한 제 2 버퍼(152); 및
    상기 제 1 및 제 2 버퍼에 저장된 데이터 및 세션 IV를 출력 인터페이스에 맞게 정합하여 전달하기 위한 출력 인터페이스 정합부(153)를 포함하여 이루어진 것을 특징으로 하는 다양한 인터페이스를 갖는 고속 블럭 암호 장치.
  6. 범용의 CPU 인터페이스를 지원하는 CPU 인터페이스 모드, CPU의 개입이 필요없는 전용의 인터페이스를 지원하는 전용 인터페이스 모드, 및 세션 키와 세션 IV는 상기 CPU를 통하여 주고 받고 암복호화 데이터는 상기 전용의 인터페이스를 사용하는 혼합 인터페이스 모드를 구비하는 다양한 인터페이스를 갖는 고속 블럭 암호 장치의 구동 방법으로서,
    (a) 인터페이스 모드를 확인하는 단계:
    (b) 상기 인터페이스 모드의 확인 결과, 상기 전용 인터페이스 모드인 경우, (b-1) 세션 키 및 세션 IV를 수신한 후 라운드 키를 생성하는 단계; (b-2) 상기 라운드 키를 생성한 후 입력된 데이터를 로딩하여 암/복호화를 수행하는 단계; (b-3) 상기 세션이 마지막이 아닌 경우 암/복호화된 데이터를 출력한 후 상기 (b-2) 단계로 천이하고, 상기 세션의 마지막인 경우 상기 세션 IV 및 데이터를 출력한 후 상기 (b-1) 단계로 천이하는 단계를 포함하고;
    (c) 상기 인터페이스 모드의 확인 결과, 상기 혼합 인터페이스와 상기 CPU 인터페이스 모드인 경우, 상기 CPU를 통해 세션 키 및 세션 IV값을 로딩한 후 세션 시작 명령에 따라 라운드 키를 생성하는 단계;
    (d) 상기 인터페이스 모드를 재확인하여, 상기 인터페이스 모드가 상기 혼합 인터페이스 모드인 경우는, (d-1) 라운드 키가 준비되어 있는가를 확인 후 CPU를 통해 입력된 입력 데이터를 로딩하고 암/복호화를 수행한 후 암/복호화된 출력 데이터를 출력하는 단계; (d-2) 상기 세션의 마지막인 경우 세션 IV을 CPU를 통하여 전달한 후 상기 (c) 단계로 천이하고, 상기 세션의 마지막이 아닌 경우는 상기 (d-1) 단계로 천이하는 단계;
    (e) 상기 인터페이스 모드를 재확인하여, 상기 인터페이스 모드가 상기 CPU 인터페이스 모드인 경우는, (e-1) 라운드 키의 생성 완료를 별도로 감지하지 않고 입력 데이터를 로딩하고, 알고리즘 시작 명령에 따라 라운드 키가 생성된지를 확인한 후 데이터 암/복호화를 수행하는 단계; (e-2) 상기 암/복호화 수행이 종료된 후 알고리즘 종료를 외부로 알려주는 단계; (e-3) 상기 알고리즘 수행 종료를 인식하고, 상기 암/복호화된 출력 데이터를 읽어간 후 상기 세션의 마지막이 아닌 경우, 상기 (e-1) 단계로 천이하고, 상기 세션의 마지막인 경우 상기 (c) 단계로 천이하는 단계를 포함하여 이루어진 다양한 인터페이스를 갖는 고속 블럭 암호 장치의 구동 방법.
  7. 제 6 항에 있어서, 상기 알고리즘 종료를 외부로 알려주는 단계는,
    상태 레지스터를 통한 방법, 인터럽트를 이용한 방법 또는 외부로 할당된 핀을 이용하는 방법을 사용하는 다양한 인터페이스를 갖는 고속 블럭 암호 장치의 구동 방법.
KR10-2002-0035942A 2002-06-26 2002-06-26 다양한 인터페이스를 갖는 고속 블럭 암호 장치 및 그구동 방법 KR100528890B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0035942A KR100528890B1 (ko) 2002-06-26 2002-06-26 다양한 인터페이스를 갖는 고속 블럭 암호 장치 및 그구동 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0035942A KR100528890B1 (ko) 2002-06-26 2002-06-26 다양한 인터페이스를 갖는 고속 블럭 암호 장치 및 그구동 방법

Publications (2)

Publication Number Publication Date
KR20040000925A KR20040000925A (ko) 2004-01-07
KR100528890B1 true KR100528890B1 (ko) 2005-11-22

Family

ID=37312725

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0035942A KR100528890B1 (ko) 2002-06-26 2002-06-26 다양한 인터페이스를 갖는 고속 블럭 암호 장치 및 그구동 방법

Country Status (1)

Country Link
KR (1) KR100528890B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008085579A2 (en) * 2006-10-25 2008-07-17 Spyrus, Inc. Method and system for deploying advanced cryptographic algorithms

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07261662A (ja) * 1994-03-22 1995-10-13 Fujitsu Ltd 暗号演算回路
US5631960A (en) * 1995-08-31 1997-05-20 National Semiconductor Corporation Autotest of encryption algorithms in embedded secure encryption devices
KR20020071328A (ko) * 2001-03-06 2002-09-12 미션텔레콤 주식회사 파이프라인 구조를 이용한 시드의 하드웨어 구조
KR20020087332A (ko) * 2001-05-14 2002-11-22 최병윤 대칭키 암호 알고리즘의 모듈화된 ecb, cbc, cfb, ofb모드 구현 회로
KR20030083100A (ko) * 2002-04-19 2003-10-30 한국전자통신연구원 고속 세션 변경이 가능한 블록 암호화 장치 및 그 구동 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07261662A (ja) * 1994-03-22 1995-10-13 Fujitsu Ltd 暗号演算回路
US5631960A (en) * 1995-08-31 1997-05-20 National Semiconductor Corporation Autotest of encryption algorithms in embedded secure encryption devices
KR20020071328A (ko) * 2001-03-06 2002-09-12 미션텔레콤 주식회사 파이프라인 구조를 이용한 시드의 하드웨어 구조
KR20020087332A (ko) * 2001-05-14 2002-11-22 최병윤 대칭키 암호 알고리즘의 모듈화된 ecb, cbc, cfb, ofb모드 구현 회로
KR20030083100A (ko) * 2002-04-19 2003-10-30 한국전자통신연구원 고속 세션 변경이 가능한 블록 암호화 장치 및 그 구동 방법

Also Published As

Publication number Publication date
KR20040000925A (ko) 2004-01-07

Similar Documents

Publication Publication Date Title
JP4684550B2 (ja) 多数の動作モードを支援する暗号化装置
US4797928A (en) Encryption printed circuit board
US5513262A (en) Device for enciphering and deciphering, by means of the DES algorithm, data to be written to be read from a hard disk
EP1191739B1 (en) Stream cipher encryption application accelerator and methods thereof
US7574571B2 (en) Hardware-based encryption/decryption employing dual ported memory and fast table initialization
US5671284A (en) Data encryptor having a scalable clock
US20140189367A1 (en) Digital-encryption hardware accelerator
CA2441392A1 (en) Encrypting apparatus
US7925024B2 (en) Method and system for data encryption/decryption key generation and distribution
CN112329038B (zh) 一种基于usb接口的数据加密控制系统及芯片
EP3803672B1 (en) Memory-efficient hardware cryptographic engine
JPH11289324A (ja) 送受信装置および送受信方法
US6732271B1 (en) Method of deciphering ciphered data and apparatus for same
KR100528890B1 (ko) 다양한 인터페이스를 갖는 고속 블럭 암호 장치 및 그구동 방법
US20050055549A1 (en) Electronic unit provided in a microcircuit card and including cryptographic means for high-speed data processing
KR100494560B1 (ko) Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법
CN104035890A (zh) 基于静态随机存储器的可编程门阵列芯片加密方法及系统
KR100546777B1 (ko) Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기
JPS6363232A (ja) 暗号化通信方式
EP1460797B1 (en) Secure access and processing of an encryption/decryption key
EP1460796A2 (en) Encryption-decryption key generation and distribution
KR100416233B1 (ko) Imt-2000 시스템의 f8 암호화 알고리즘과 f9 무결성검증 알고리즘을 위한 암호화 장치
JP3115350B2 (ja) 暗号化方式
JPH07134548A (ja) データ暗号化システム
JPH08171617A (ja) データ通信システム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
G170 Re-publication after modification of scope of protection [patent]
FPAY Annual fee payment

Payment date: 20080911

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee