KR100560658B1 - 고속의 오프셋 코드북 모드를 위한 암호화 장치 및 그 방법 - Google Patents

고속의 오프셋 코드북 모드를 위한 암호화 장치 및 그 방법 Download PDF

Info

Publication number
KR100560658B1
KR100560658B1 KR20030009789A KR20030009789A KR100560658B1 KR 100560658 B1 KR100560658 B1 KR 100560658B1 KR 20030009789 A KR20030009789 A KR 20030009789A KR 20030009789 A KR20030009789 A KR 20030009789A KR 100560658 B1 KR100560658 B1 KR 100560658B1
Authority
KR
South Korea
Prior art keywords
packet
block
exception
encryption
unit
Prior art date
Application number
KR20030009789A
Other languages
English (en)
Other versions
KR20040074266A (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 KR20030009789A priority Critical patent/KR100560658B1/ko
Priority to CNA2004100387557A priority patent/CN1538655A/zh
Priority to US10/778,123 priority patent/US20040161105A1/en
Priority to JP2004040367A priority patent/JP2004254313A/ja
Priority to TW93103699A priority patent/TWI256224B/zh
Publication of KR20040074266A publication Critical patent/KR20040074266A/ko
Application granted granted Critical
Publication of KR100560658B1 publication Critical patent/KR100560658B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/04Key management, e.g. using generic bootstrapping architecture [GBA]
    • 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/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)
  • Small-Scale Networks (AREA)

Abstract

본 발명은 고속의 오프셋 코드북 모드를 위한 암호화 장치 및 그 방법에 관한 것이다. 본 발명에 의하면, 송신 및 수신 중에 블럭 단위로 암호화를 처리하기 위해 분할, 전송 및 재시도 예외 사항을 정의한다. 그리고 송신 또는 수신 중에 해당 예외 사항이 발생되면, 정의된 각각의 예외 사항에 대응하여 오프셋 코드북 모드를 수행하여 암호화 또는 복호화한다. 예외 사항은 패킷을 블럭 단위로 처리할 때 블럭 또는 메시지 인증 코드의 중간에서 분할되거나, 수신시 이전 블럭과 다음 블럭이 서로 다른 송신 소스로부터 수신되는 경우 또는, 수신된 패킷이 이미 수신된 패킷이거나 통신 에러 등으로 재시도해야 하는 경우 등이다. 따라서 본 발명의 암호화 장치는 데이터 패킷의 송신 또는 수신 중에 오프셋 코드북 모드를 수행함으로써, 암호화 시간 단축 및 데이터 처리량 향상의 효과를 얻을 수 있다.
블럭 암호, 오프셋 코드북, 예외 사항, 고속 처리, 무선랜

Description

고속의 오프셋 코드북 모드를 위한 암호화 장치 및 그 방법{APPARATUS AND METHOD FOR HIGH PERFORMANCE OFFSET CODEBOOK MODE WITH BLOCK-LEVEL OPERATION}
도 1은 분할되지 않은 프레임의 수신시 오프셋 코드북 모드에 의한 본 발명과 전형적인 암호화 방법에 따른 소요 시간을 비교한 도면;
도 2는 분할된 프레임의 수신시 오프셋 코드북 모드에 의한 본 발명과 전형적인 암호화 방법에 따른 소요 시간을 비교한 도면;
도 3은 본 발명에 따른 오프셋 코드북 모드를 위한 암호화 장치의 구성을 도시한 블럭도;
도 4는 도 3에 도시된 예외 사항 처리 유닛의 상세한 구성을 나타내는 블럭도;
도 5는 도 3에 도시된 암호 처리 유닛의 상세한 구성을 나타내는 블럭도;
도 6은 본 발명에 따른 고속의 오프셋 코드북 모드를 처리하는 암호화 장치의 수신시 처리 수순을 도시한 흐름도;
도 7은 도 6에 도시된 헤더 정보 수신 루틴 수순을 도시한 흐름도;
도 8은 도 6에 도시된 예외 사항 처리 루틴 수순을 상세히 나타내는 흐름도;
도 9는 도 6에 도시된 오프셋 코드북 모드 처리 루틴 수순을 상세히 나타낸 흐름도;
도 10은 도 6에 도시된 마지막 블럭 처리 루틴 수순을 상세히 나타낸 흐름도;
도 11은 도 6에 도시된 마지막 블럭이 아닌 경우의 처리 루틴 수순을 상세히 나타낸 흐름도;
도 12은 본 발명에 따른 고속의 오프셋 코드북 모드를 처리하는 암호화 장치의 송신 처리 수순을 도시한 흐름도;
도 13은 도 12에 도시된 헤더 정보 송신 루틴 수순을 상세히 나타낸 흐름도;
도 14는 도 12에 도시된 마지막 블럭 전송 처리 루틴 수순을 상세히 나타낸 흐름도;
도 15는 도 12에 도시된 마지막 블럭이 아닌 경우의 전송 처리 루틴 수순을 나타낸 흐름도;
도 16은 본 발명에 따른 블럭플래그 예외 사항을 설명하기 위한 도면;
도 17a 및 도 17b는 본 발명에 따른 맥플래그 예외 사항을 설명하기 위한 도면들; 그리고
도 18은 본 발명의 실시예에 따른 모바일 시스템의 구성을 나타내는 블럭도이다.
* 도면의 주요 부분에 대한 부호 설명 *
100 : 암호화 장치 102 : 제어 유닛
104 : 입력 버퍼(FIFO) 106 : 입력 버스 제어부
108 : 블럭 사이퍼 엔진 110 : 오프셋 코드북 메모리
112 : 체크섬 메모리 114 : 출력 버스 제어부
120 : 예외 사항 처리 유닛 122 : 분할 예외 처리부
124 : 전송 예외 처리부 126 : 재시도 예외 처리부
128 : 헤더 정보 메모리 130 : 암호 처리 유닛
132 : 오프셋 코드북 초기화부 134 : 블럭 복호화부
136 : 마지막 블럭 복호화부 138 : 태그 생성부
140 : 태그 비교부 142 : 블럭 암호화부
144 : 마지막 블럭 암호화부 146 : 메시지 인증 코드 생성부
400 : 모바일 시스템 402 : 중앙 처리 장치
404 : 메모리 410 : 모뎀
412 : 암호화 장치
본 발명은 암호화 장치에 관한 것으로, 좀 더 구체적으로는 고속의 블럭 단위의 오프셋 코드북 모드를 구현하기 위한 암호화 장치 및 그 방법에 관한 것이다.
암호화를 위한 표준 알고리즘으로는 데이터 암호화 표준(Data Encryption Standard : DES)와, 확장 암호화 표준(Advanced Encryption Standard : AES) 등이 있으며, 예컨대, 데이터 암호화 표준(DES)은 ECB(Electronic Codebook), CBC(Cipher Block Chaining), OFB(Output Feedback) 및 CFB(Cipher Feedback) 모드를 정의하고 있으며, 최근에는 카운터(counter) 모드 및 OCB(Offset Codebook) 모드 등이 제안되었다.
따라서 데이터 네트워크에서 암호화 장치는 데이터 보안을 위하여 블럭 사이퍼(block cipher)와 그것을 이용해서 실제 암호화를 수행하는 다양한 동작 모드(mode of operation)들을 사용한다.
블럭 사이퍼(block cipher)는 암호문을 만들기 위해 암호 키(key)와 알고리즘이 데이터 블럭 단위로 적용되는 암호화 방법으로, 평문(plaintext)의 동일 블록들이 하나의 메시지에서 동일한 암호문으로 코딩되지 않도록 하기 위해 이전 암호 블럭의 암호문을 다음 블럭에 순차적으로 적용한다. 예를 들어, 같은 시간에 암호화된 동일 메시지들이 같은 암호문을 만들지 않도록 난수 발생기에 의한 초기화 벡터를 평문의 첫 블럭에 조합함으로써 다음 블럭들이 이전 암호 블럭과 다른 암호문이 된다.
그러나 일반적인 암호화 장치는 데이터 네트워크에서 패킷을 받은 후에나 또는 보내기 전에 암호화를 수행하기 때문에 암호화 시간 만큼의 지연 시간이 발생되고, 또한 암호화 기능을 수행하기 위해 추가로 사용되는 시스템 자원 즉, 오버헤드(overhead)가 증가하여 데이터 처리량(data throughput)을 약화시키게 된다. 그리고 보내고자 하는 프레임을 분할하기 전에 암호화를 한다면 전송 또는 수신 중에 암호화를 할 수 없게 되는 문제점이 있다.
본 발명의 목적은 상술한 문제점을 해결하기 위한 것으로, 오프셋 코드북 모드에서 패킷의 송수신하는 중에 암호화를 수행하여 데이터 처리량을 향상시키기 위한 암호화 장치 및 그 처리 방법을 구현하는데 있다. 이러한 암호화 장치 및 방법을 적용하면서 발생되는 예외 사항을 정의하고, 이들에 대한 문제점들의 해결 방법을 제시한다.
본 발명의 다른 목적은 상술한 문제점을 해결하기 위한 것으로, 무선 랜(WLAN)을 이용하는 모바일 시스템에서의 블럭 암호화 동작시 고속의 암호화 장치 및 그 처리 방법을 제공하는데 있다.
상술한 목적을 달성하기 위한 본 발명의 일 특징에 의하면, 암호화 장치는, 외부로부터 암호화 또는 복호화하기 위한 입력 데이터를 받아서 저장하고, 상기 저장된 입력 데이터를 블럭 단위의 패킷으로 출력하는 입력부와, 상기 입력 데이터의 크기 정보를 받아들이고, 상기 입력 데이터를 블럭 단위의 패킷으로 출력하도록 제어하며, 상기 입력 데이터를 송신 또는 수신 중에 암호화 또는 복호화하도록 오프셋 코드북 모드를 제어하는 제어부와, 상기 입력부로부터 상기 패킷의 헤더 정보를 받아서 상기 제어부로 전송하고, 상기 헤더 정보로부터 상기 패킷의 송신 또는 수신시 분할, 전송 또는 재시도에 따른 예외 사항이 발생되었는지를 판별하여 적어도 하나의 예외 사항이 발생되면, 상기 제어부로 상기 발생된 예외 사항에 대응하는 정보를 출력하는 예외 사항 처리부와, 상기 패킷을 암호화 및 복호화하기 위한 오프셋 코드북과, 태그 및 메시지 인증 코드를 생성, 저장하고, 상기 제어부로부터 암호 키를 받아서 오프셋 코드북 모드로 상기 패킷을 암호화 및 복호화하는 암호화 처리부 및 상기 제어부의 제어를 받아서 상기 암호화 처리부로부터 출력되는 암호화 또는 복호화된 패킷을 받아서 외부로 출력하는 출력부를 포함한다.
이 특징의 바람직한 실시예에 있어서, 상기 입력부는, 외부로부터 암호화 또는 복호화하기 위한 입력 데이터를 받아서 저장하는 입력 버퍼 및 상기 입력 버퍼로부터 상기 입력 데이터를 블럭 단위의 패킷으로 받아서 상기 예외 사항 처리부 및 상기 암호 처리부로 라우팅(routing)하는 입력 버스 제어부를 포함한다.
이 특징의 바람직한 실시예에 있어서, 상기 암호화 처리부는, 상기 제어부로부터 암호키를 받아서 암호화 또는 복호화하기 위한 표준 알고리즘을 이용하여 오프셋 코드북 모드를 처리하도록 하는 블럭 사이퍼 엔진과, 상기 패킷을 암호화 및 복호화하기 위한 오프셋 코드북과, 상기 오프셋 코드북을 생성하기 위한 태그와 메시지 인증 코드를 생성, 저장하고, 상기 제어부의 제어에 대응하여 상기 블럭 사이퍼 엔진과 연계해서 오프셋 코드북 모드로 상기 패킷을 암호화 및 복호화하는 암호 처리 유닛과, 상기 암호 처리 유닛으로부터 생성된 오프셋 코드북을 저장하는 오프셋 코드북 메모리 및 상기 예외 사항 중 전송 예외 사항을 처리하기 위한 체크섬과 송신측 어드레스를 저장하는 체크섬 메모리를 포함한다.
이 실시예에 있어서, 상기 암호 처리 유닛은, 송신 및 수신시 동작하여 오프셋 코드북을 생성하여 상기 오프셋 코드북 메모리에 저장하는 오프셋 코드북 초기화부와, 수신시 동작하여 이전의 오프셋 코드북을 이용하여 다음 오프셋 코드북을 생성하고, 상기 입력부로부터 상기 블럭 단위의 패킷을 복호화하고, 상기 체크섬 메모리에 저장된 태그를 생성하기 위한 체크섬을 업데이트하는 블럭 복호화부와, 수신시 동작되며, 이전의 오프셋 코드북을 이용하여 다음 오프셋 코드북을 생성하여 상기 패킷 중 마지막 블럭을 복호화하며, 그리고 상기 태그를 생성하기 위한 체크섬을 업데이트하는 마지막 블럭 복호화부와, 수신시 동작되며, 상기 블럭 복호화부 및 상기 마지막 블럭 복호화부에 의해서 업데이트된 체크섬 값을 이용하여 태그를 생성하는 태그 생성부와, 수신시 동작되며, 상기 태그 생성부에 의해서 생성된 태그와 전송된 메시지 인증 코드를 비교하여 전송 상태에 따른 에러 여부를 판별하여 출력하는 태그 비교부와, 송신시 동작되며, 이전의 오프셋 코드북을 이용하여 다음 오프셋 코드북을 생성하고, 전송할 입력 데이터의 마지막이 아닌 블럭들을 암호화하며, 그리고 메시지 인증 코드를 생성하기 위한 체크섬을 업데이트하는 블럭 암호화부와, 송신시 동작되며, 이전의 오프셋 코드북을 이용하여 다음 오프셋 코드북을 생성하고, 전송할 입력 데이터의 마지막 블럭을 암호화하며, 그리고 메시지 인증 코드를 생성하기 위한 체크섬을 업데이트하는 마지막 블럭 암호화부 및 송신시 동작되며, 상기 블럭 암호화부 및 상기 마지막 블럭 암호화부에 의해서 업데이트된 체크섬을 이용하여 메시지 인증 코드를 생성하는 메시지 인증 코드 생성부를 포함한다.
이 특징의 바람직한 실시예에 있어서, 상기 예외 사항 처리부는, 상기 입력부로부터 상기 헤더 정보를 받아서 상기 예외 사항이 발생되는지를 판별하기 위한 정보를 저장하는 헤더 정보 메모리와, 상기 입력부로부터 상기 패킷들 중 최초 패킷의 헤더 정보를 받아서 상기 패킷의 어떤 블럭 또는 메시지 인증 코드가 중간에 서 분할되었는지를 판별하고, 판별 결과를 상기 제어부로 전달하는 분할 예외 사항 처리 유닛과, 상기 헤더 정보 메모리와 상기 입력부로부터 상기 헤더 정보를 받아서 상기 패킷들중 이전의 패킷과 다음의 패킷이 서로 다른 송신측으로부터 전송되었는지를 판별하고, 판별 결과를 상기 제어부로 전달하는 전송 예외 사항 처리 유닛 및 상기 헤더 정보로부터 수신된 이전의 패킷이 상기 입력 데이터의 마지막 패킷이 아니고 현재 수신되는 패킷의 재시도인지 또는 송신한 패킷이 에러가 발생되었는지를 판별하고, 판별 결과를 상기 제어부로 전달하는 재시도 예외 사항 처리 유닛을 포함한다.
이 특징의 바람직한 실시예에 있어서, 상기 제어부는, 상기 예외 사항 처리부로부터 분할 예외 사항이 발생되면, 상기 패킷의 적어도 하나의 블럭을 남겨두고 암호화 또는 복호화하도록 제어하거나, 상기 예외 사항 처리부로부터 전송 예외 사항이 발생되면, 상기 입력 버퍼를 클리어하여 상기 수신된 패킷을 제거하도록 제어한다. 또한, 상기 제어부는 상기 예외 사항 처리부로부터 전송 예외 사항이 발생되면, 상기 패킷들 중 이전 패킷과 다음 패킷의 송신측 소스를 판별하여 복호화하도록 제어한다.
이 특징의 바람직한 실시예에 있어서, 상기 제어부는 상기 예외 사항 처리부로부터 재시도 예외 사항이 발생되고, 상기 수신된 패킷이 이전의 패킷이면 오프셋 코드북 모드를 수행하지 않도록 제어한다.
이 특징의 바람직한 실시예에 있어서, 상기 제어부는 상기 예외 사항 처리부로부터 재시도 예외 사항이 발생되면, 상기 송신될 패킷을 오프셋 코드북 모드로 재전송하도록 제어한다.
데이터 네트워크에서 오프셋 코드북 모드를 이용하여 패킷의 송신 또는 수신 중에 암호화 또는 복호화하는 암호화 장치의 처리 방법은, 외부 입력 데이터로부터 다수의 블럭들로 분할된 패킷의 헤더 정보를 받아들이는 단계와, 상기 헤더 정보로부터 상기 패킷의 송수신시 분할, 전송 또는 재시도 예외 사항이 적어도 하나 발생되는지를 판별하기 위한 예외 사항 처리 루틴을 수행하는 단계 및 상기 판별 결과, 적어도 하나의 예외 사항이 발생되면, 해당 예외 사항에 대응하여 오프셋 코드북 모드를 수행하는 단계를 포함하여 송수신 중에 입력 데이터를 암호화 또는 복호화한다.
이 특징의 바람직한 실시예에 있어서, 상기 예외 사항 처리 루틴은, 상기 헤더 정보로부터 분할 예외 사항이 발생되었음이 판별되면, 상기 패킷의 적어도 하나의 블럭을 남겨두고 암호화 또는 복호화하거나, 상기 헤더 정보로부터 전송 예외 사항이 발생되었음이 판별되고, 상기 패킷들 중 이전 패킷과 현재 수신 중인 패킷의 송신 소스를 판별하여 서로 다른 소스이면, 상기 이전 패킷과 상기 현재 수신 중인 패킷을 삭제하여 복호화거나, 상기 헤더 정보로부터 재시도 예외 사항이 발생되었음이 판별되고, 상기 수신된 패킷이 이미 수신된 패킷이면 현재 수신중인 패킷을 삭제하고, 새로운 패킷이면 재전송하도록 오프셋 코드북 모드로 처리한다.
여기서, 상기 분할 예외 사항은 블럭 또는 메시지 인증 코드의 중간에 분할된 경우에 발생되며, 상기 분할 예외 사항이 블럭에 의한 경우에는 마지막 블럭을 남겨두고 처리하고, 메시지 인증 코드에 의한 경우에는 마지막 블럭과 적어도 하나 의 마지막 이전 블럭을 남겨두고 처리하는 것이 바람직하다.
따라서 본 발명에 의하면, 데이터 네트워크에서 데이터 패킷을 받거나 보내는 중에 암호화를 수행할 수 있음으로써, 암호화 장치 및 이를 구비하는 시스템의 데이터 처리량을 향상시킨다.
이하 본 발명의 실시예를 첨부된 도면에 의거하여 상세히 설명한다.
우선, 본 발명의 실시예에서 사용되는 용어들을 정의하면 다음과 같다.
분할(fragmentation)은 데이터 통신의 효율성을 위해, 전송되는 데이터를 일정 크기로 나누는 것을 의미한다. 이 때, 데이터가 나누어진 것을 프래그먼트(fragment)라 하며, 나누는 일정 크기를 프래그먼트 드레솔드(fragment threshold)라 한다.
프레임(frame)은 보내고자 하는 데이터 단위로, 분할하기 이전의 데이터를 의미하며, 분할된 프레임의 크기가 프래그먼트 드레솔드보다 크면 여러 개의 조각으로 나누어 지고, 작으면 프레임 자체를 한 개의 조각으로 판단한다.
패킷(packet)은 프레임이 분할되어 생긴 각각의 조각을 의미하며, 프래그먼트(fragment)라 칭하기도 한다. 패킷은 실제로 전송되는 데이터 단위이다.
블럭(block)은 블럭 사이퍼(block cipher)가 한번에 전송 처리되는 데이터 단위로, 그 크기는 블럭 사이퍼 마다 다르고, 몇 개의 크기들을 지원하는 경우도 있다. 그리고 '블럭의 바이트 단위 크기'를 'BlockSize'로 칭한다.
바디(body)는 패킷에서 헤더(header) 부분을 제외한 패이로드(payload) 부분을 뜻한다.
메시지 인증 코드(Message Authentication Code : MAC)은 데이터가 전송 중에 데이터가 변경되었는지를 확인하기 위한 수단으로, 일반적으로 프레임 또는 패킷 단위로 메시지 인증 코드(MAC)를 계산하여 프레임 또는 패킷의 뒷 부분에 결합된다. 'MAC의 바이트 단위의 크기'를 'MACSize'라 칭한다.
난스(nonce)는 사이퍼(cipher)에서 사용되는 키(key)와 함께 사용하는 값으로, 같은 키에 대해서 각각의 프레임 또는 패킷마다 다른 값을 갖는다. 일반적으로 난스는 프레임 또는 패킷에 결합해서 전송하게 되는데, 실제 패이로드와 결합될 수도 있고 또는 헤더와 결합될 수도 있다. 본 발명에서는 헤더에 포함되는 것으로 가정한다.
버퍼(buffer)는 오프셋 코드북의 앞과 뒤에 FIFO 타입과 같은 버퍼를 두고, 입력 내용을 앞의 버퍼에 차례로 저장하여 오프셋 코드북이 필요한 만큼의 데이터만을 가져다가 알고리즘을 수행하고, 뒤의 버퍼로 결과를 출력한다. 버퍼의 크기 제약은 없는 것으로 가정한다.
그리고 함수 'RoundUp(x)'는 x 값을 올림하는 것을 의미한다. x 값에 소수점 이하의 숫자가 있으면 x + 1 이고, x 값에 소수점 이하가 없으면 그냥 x 값을 출력한다.
도 1은 분할되지 않은 프레임 (a)이 패킷으로 전송될 때, 본 발명과 전형적인 오프셋 코드북 모드를 적용하는 두 가지 방법에 따른 소요 시간을 비교한 것이다. 여기서는 프레임, 패킷 및 프레그먼트가 동일한 경우를 이용하여 수신하는 것을 설명한다.
도면을 참조하면, 새로운 방법 (c)는 본 발명의 알고리즘을 적용했을 때, 패킷을 전송하거나 전송받는 중에 블럭 단위로 오프셋 코드북 모드를 수행한다. 따라서 패킷 전체가 송수신될 때까지 오프셋 코드북 모드를 수행하지 못하고 기다려야 하는 전형적인 방법 (b)보다 암호화에 걸리는 시간을 절감하는 효과를 나타낸 것이다.
새로운 방법 (c)는 먼저 헤더 정보(Header)를 획득하여 오프셋 코드북 모드에 필요한 파라메터들(예를 들어, 패킷의 크기, 어드레스 등)을 결정하고, 제 1 블럭(B1)이 버퍼에 입력되면 본 발명에 의한 오프셋 코드북 모드를 실행한다. 만약, 블럭 사이퍼의 수행 속도가 충분히 빠르면 도면에 도시된 바와 같이, 다음의 제 2 블럭(B2)이 버퍼에 입력되는 중에 제 1 블럭(B1)이 복호화 처리 완료될 수 있다. 그러므로 제 2 블럭(B2)이 버퍼에 들어오게 되면, 위의 절차를 반복하게 된다. 수신된 모든 블럭들(B1 ~ Bn)의 처리가 완료되면, 태그 생성(TAG_GEN) 및 태그 비교(TAG_COMP)를 수행하여 복호화가 종료된다.
상술한 새로운 방법 (c)를 이용하면 패킷을 받거나 보내기 시작함과 거의 동시에 오프셋 코드북 모드를 시작할 수 있으며, 패킷의 송수신이 완료됨과 거의 동시에 오프셋 코드북 모드가 완료될 수 있다. 반면에 전형적인 방법 (b)를 이용하는 경우에는 패킷을 모두 수신해야만 오프셋 코드북 모드를 시작하기 때문에 도면에 도시된 바와 같이, 동작 모드 시간이 많이 소요된다.
도 2는 프레임을 분할하기 전에 오프셋 코드북 모드를 적용할 때 본 발명과 전형적인 방법에 따른 소요 시간을 비교한 도면으로, 여기서는 다수의 패킷들(Packet1 ~ Packet3)로 구성된 프레임(Frame) (a)을 전송하는 경우를 이용하여 설명한다.
도면을 참조하면, 전형적인 방법 (b)는 모든 패킷들 (a)을 수신받은 후, 디프래그먼테이션을 하여 프레임을 복원한 후에 오프셋 코드북 모드를 적용하는 것이다. 그러나 새로운 방법 (c)은 본 발명에서 제안하는 알고리즘을 사용하였을 때, 각 패킷을 전송받는 중에 오프셋 코드북 모드를 수행하여 암호화하는데 소요되는 시간을 절감하는 효과를 얻을 수 있다. 즉, 제 1 패킷(Packet1)을 받는 중에 블럭 단위(B1 ~ Bn)로 오프셋 코드북 모드를 수행하면, 제 1 패킷(Packet1)의 수신이 완료되는 것과 거의 동시에 오프셋 코드북 모드를 완료할 수 있다. 그러므로 제 2 패킷(Packet2)이 들어와도 계속 동일한 처리 방법을 반복할 수 있기 때문에 마지막 제 3 패킷(Packet3)이 수신되는 것과 거의 동시에 오프셋 코드북 모드의 수행하고, 디프래그먼테이션(DEFRAG)을 수행함으로서 암호화 동작이 완료된다. 단, 이 경우에는 분할 동작 때문에 다음에서 설명되는 문제점들이 발생된다. 따라서 이들 문제점들을 해결하기 위한 '예외 사항'들을 정의하고, 이를 해결하기 위한 알고리즘을 이용하여 오프셋 코드북 모드를 수행한다. 본 발명에 의해 정의된 예외 사항 및 해당 알고리즘은 다음에 상세히 설명하겠다.
구체적으로 도 3 내지 도 17을 이용하여 본 발명에 따른 암호화 장치의 구성 및 오프셋 코드북 모드 동작의 수순을 상세히 설명한다.
도 3은 본 발명에 따른 암호화 장치의 구성을 도시한 블럭도이다.
도면을 참조하면, 상기 암호화 장치(100)는 제어 유닛(CONTROL UNIT : 102)과, 예외 사항 처리 유닛(EXCEPTION PROCESSING UNIT : 120) 및 암호 처리 유닛(CRYPTOPROCESSING UNIT : 130)을 포함한다. 또한 상기 암호화 장치(100)는 입력 버퍼(FIFO : 104)와, 입력/출력 버스 제어부(INPUT/OUTPUT BUS CTRL : 106/114)와, 블럭 암호 엔진(BLOCK CIPHER ENGINE : 108)과, 오프셋 코드북 메모리(OFFSET CODEBOOK MEMORY : 110) 및 체크섬 메모리(CHECKSUM MEMORY : 112)를 포함한다.
상기 입력 버퍼(104)는 외부로부터 암호화(encryption) 또는 복호화(decryption)하기 위한 입력 데이터(INPUT)를 받아서 저장하는 FIFO(First In First Out) 타입으로 구비되며, 저장된 데이터 크기 정보를 제어 유닛(102)으로 제공하고, 저장된 데이터를 암호화 또는 복호화하기 위하여 입력 버스 제어부(106)로 전달한다.
상기 입력 버스 제어부(106)는 입력 버퍼(104)로부터 전송된 데이터를 제어 유닛(102)의 제어를 받아서 예외 사항 처리 유닛(120) 및/또는 암호 처리 유닛(130)으로 제공하도록 라우팅(routing)한다.
상기 제어 유닛(102)은 입력 버퍼(104)에 저장된 데이터 크기 정보를 받아들이고, 예외 사항 처리 유닛(120)으로부터 예외 사항이 발생되었는지를 판별하고, 예외 사항이 발생되면 해당 정보를 받아서 나머지 유닛들(106, 108, 130)을 예외 사항에 적합하도록 구동시키는 유한 상태 머신(Finite State Machine : FSM)을 구비한다.
상기 제어 유닛(102)은 입력 버퍼(104)에 저장된 데이터를 블럭 단위로 암호화하기 위하여 블럭사이즈(BlockSize) 만큼 저장될 때 마다 암호 처리 유닛(130)으로 전달하도록 입력 버스 제어부(106)를 제어하여 오프셋 코드북 기능을 수행하도록 한다. 그리고 제어 유닛(102)는 블럭 암호 엔진(108)으로 암호 키를 전달하고, 전달된 암호 키가 암호화 또는 복호화에 사용되는지를 알려준다.
상기 출력 버스 제어부(114)는 제어 유닛(102)으로부터 제어 신호를 받아서 암호 처리 유닛(130)에 의해 처리된 데이터를 받아들이고 암호화 또는 복호화된 데이터(OUTPUT)를 출력한다.
상기 예외 사항 처리 유닛(120)은 송수신시 데이터의 헤더 정보로부터 예외 사항이 발생되는지를 판별하고, 예외 사항이 발생되면 상기 제어 유닛(102)으로 예외 사항이 발생되었음을 알려주는 정보를 제공한다. 구체적으로 도 4에 도시된 바와 같이, 상기 예외 사항 처리 유닛(120)은 분할 예외 사항 처리 유닛(FRAGMENTATION EXCEPTION PROCESSING UNIT : 122)과, 전송 예외 사항 처리 유닛(TRANSMITTER EXCEPTION PROCESSING UNIT : 124)과, 재시도 예외 사항 처리 유닛(RETRY EXCEPTION PROCESSING UNIT : 126) 및 헤더 메모리(HEADER MEMORY : 128)를 구비한다. 상기 예외 사항 처리 유닛(120)은 상기 입력 버스 제어부(106)로부터 패킷의 제일 처음 헤더 정보(header)를 받아들이고, 헤더 정보(header) 중에서 MoreFrag 비트와, 송신 어드레스(Transmitter Address : TA) 및 재시도 비트를 이용하여 각각의 처리 유닛들(122 ~ 126)로 제공한다. 각 처리 유닛들(122 ~ 126)은 자신이 처리하는 예외 사항이 발생되었는지를 판단하여 어느 하나로부터 예외 사항이 발생되면, 상기 제어 유닛(102)으로 해당 예외 사항을 처리하도록 알려준다. 그리고 상기 예외 사항 처리 유닛(120)은 헤더 정보(header) 전체 또는 헤더 정보(header) 중 송신 어드레스(TA)와 MoreFrag 비트를 헤더 메모리(128)에 저장하고, 다음에 입력될 패킷의 예외 사항이 발생되는지의 여부를 확인하기 위하여 저장된 헤더 정보를 사용한다. 또한 상기 예외 사항 처리 유닛(120)은 헤더 정보(header)에서 추출한 난스(nonce)와 패킷 길이(Packet Length) 및 송신 어드레스(TA)를 상기 제어 유닛(102)으로 전달한다.
여기서 본 발명에 따른 오프셋 코드북 모드 실행시 발생되는 예외 사항에 대하여 상세히 설명한다.
본 발명에 의하면, 오프셋 코드북 모드를 분할된 패킷 단위로 수행하면, 분할되지 않은 프레임 단위로 수행하는 것보다 블럭 암호화에 소요되는 시간을 절약할 수 있기 때문에 암호화 장치 및 이를 구비하는 시스템의 처리 속도를 향상시킬 수 있다. 그러나 이 때 발생할 수 있는 문제점들 즉, 예외 사항이 있고 그것을 해결하는 것이 본 발명의 가장 큰 관건이다. 따라서 본 발명에서는 이러한 예외 사항들을 정의하고, 그 해결 방안을 제시한다.
우선 본 발명에 의한 예외 사항은 크게 '분할 예외(Fragmentation Exception)' 사항, '전송 예외(Transmitter Exception)' 사항 및 '재시도 예외(Retry Exception)' 사항의 경우가 있다. 이들 예외 사항을 해결하기 위한 알고리즘(이하 예외 사항 알고리즘이라 한다)을 구현하는 것이 본 발명의 목적이라 하겠다.
먼저, '분할 예외' 사항은 프레임을 분할 할 때, 프레임이 블럭사이즈 단위로 분할되는 것이 아니고, 바이트 단위로 분할되기 때문에 어떤 블럭의 중간에서 분할될 수 있다. 이러한 경우에는 중간에서 분할된 블럭의 앞 부분이 포함된 프래그먼트의 마지막 블럭을 암호화 또는 복호화하지 못하고 다음 프레임이 올 때까지 기다려야만 한다. 이 예외 사항을 '블럭프래그 예외(BlockFrag Exception)' 사항이라 정의하고, 패킷이 마지막 프래그먼트가 아니고 동시에 프레임 바디의 크기가 블럭사이즈의 배수가 아닌 경우에 발생한다.
예를 들어 도 16에 도시된 바와 같이, 헤더 정보(Hdr)를 제외한 패킷의 길이가 70 바이트이고, 프래그먼트 드레솔드가 44 바이트, 블럭사이즈가 16 바이트 그리고 맥사이즈가 8 바이트일 경우, 패킷은 각각 44 바이트와 26 바이트 크기의 제 1 및 제 2 플래그먼트(Fragment0, Fragment1)로 분할된다. 블럭사이즈가 16 바이트이므로 제 1 플래그먼트(Fragment0)는 마지막 블럭인 제 3 블럭(Block2)의 중간에서 분할되어 제 1 플래그먼트(Fragment0)의 마지막 블럭 12 바이트는 송수신 중에 암호화 또는 복호화할 수 없다. 따라서 '블럭프래그 예외' 사항이 발생된다.
또한 프레임을 분할할 때, 프레임의 메시지 인증 코드(MAC)를 고려하지 않고 자르기 때문에 프레임의 메시지 인증 코드의 중간에서 잘리는 경우가 발생할 수 있다. 이러한 경우에는 프래그먼트된 패킷을 암호화 또는 복호화할 때 마지막 프래그먼트를 받기 전까지는 어느 블럭이 마지막 블럭인지 알 수 없다. 이러한 예외 사항을 '맥프래그 예외(MACFrag Exception)' 사항이라 정의하고, 수신의 경우에는 마지막 프래그먼트를 받아서 바디의 크기가 맥사이즈 미만일 때, 그리고 송신일 경우에는 마지막 프래그먼트의 바디 크기가 프래그먼트 드레솔드보다 맥사이즈 이내로 작을 때 발생한다. 다만, 프래그먼트 드레솔드가 맥사이즈보다 크거나 같을 때, 이러한 조건이 성립한다. 일반적으로 맥사이즈는 블럭사이즈 이하이고, 프래그먼트 드레솔드는 블럭사이즈보다 크기 때문에 이런 조건을 사용할 수 있다.
즉, 도 17a에 도시된 바와 같이, 헤더 정보(Hdr)를 제외한 패킷의 길이가 52 바이트이고, 프래그먼트 드레솔드가 48 바이트, 블럭 사이즈가 16 바이트 그리고 맥사이즈가 8 바이트의 경우, 제 1 및 제 2 플래그먼트는 각각 48 바이트와 4 바이트로 분할된다. 제 1 프래그먼트(Fragment0)의 제 3 블럭(Block2)은 메시지 인증 코드(MAC)의 중간에서 분할되므로 제 2 프래그먼트(Fragment1)를 다 받아야만 암호화 또는 복호화가 가능하다. 따라서 '맥프래그 예외' 사항이 발생된다.
상술한 '블럭프래그 예외' 사항과, '맥사이즈 예외' 사항들을 합해서 '분할 예외' 사항이라고 정의하고 이를 해결하기 위한 방법을 제시한다.
즉, 맥사이즈가 블럭사이즈 이하인 경우, 수신할 때 헤더 정보를 받아서 이번 패킷이 프래그먼트의 마지막 블럭이 아니면 마지막 두개 블럭은 복호화하지 않고 버퍼에 저장하여 둔다.
예를 들어 도 17b에 도시된 바와 같이, 헤더 정보(Hdr)를 제외한 패킷의 길이가 54 바이트이고, 프래그먼트 드레솔드가 52 바이트, 블럭 사이즈가 16 바이트 그리고 맥사이즈가 8 바이트인 경우, 마지막에서 두번째 블럭(Block1)의 크기는 블럭사이즈이고 마지막 블럭(Block2)의 크기는 14 바이트로 블럭사이즈 이하이다.
여기서 '블럭프래그 예외' 사항의 경우에는 마지막 하나의 블럭만 버퍼에 남겨 두면 문제를 해결할 수 있지만, 두 개의 블럭을 남겨 두는 이유는 마지막 블럭의 크기(Block3) 4 바이트와 다음 패킷(Fragment1)의 크기 2 바이트가 합쳐서 6 바이트로 맥사이즈가 되지 않는 경우, 마지막에서 두번째 블럭(Block2)에 마지막 블럭(Block3)에 메시지 인증 코드(MAC)의 일부분이 포함되기 때문이다. 따라서 다음 패킷(Fragment1)이 마지막 프래그먼트가 아니면 계속하고, 다음 패킷(Fragment1)이 마지막 프래그먼트이면 앞에서 남은 크기 4 바이트와 다음 메시지 프로토콜 데이터 유닛(Message Protocol Data Unit : MPDU)의 크기를 합쳐서 뒤에서부터 맥사이즈에 해당되는 크기는 메시지 인증 코드에 해당되고, 나머지 앞 부분은 블럭과 마지막 블럭의 합 또는 마지막 블럭이다. 여기서 메시지 프로토콜 데이터 유닛(MPDU)은 메시지 통신 시스템에서 다른 메시지 통신 시스템으로 데이터 전송하기 위하여 하위 계층에 데이터를 전송할 때의 프로토콜 데이터 단위를 의미한다.
맥사이즈가 블럭사이즈보다 큰 경우, 맥사이즈를 블럭사이즈로 나눈 값을 올림하여 1 을 더한 만큼( RoundUp(MACsize/Blocksize) + 1 )의 블럭들을 남겨 놓으면 문제 해결이 가능하다.
송신의 경우에는 블럭사이즈의 배수로만 프래그먼트 드레솔드를 설정 가능하게 한다. 즉, 메시지 인증 코드가 헤더 정보에 포함되는 경우에는 맥프래그 예외 사항이 발생되지 않으므로 블럭프래그 예외 사항을 위하여 마지막 한 블럭만을 버퍼에 남겨두면 해결이 가능하다.
본 발명에서 정의하는 예외 사항 중 하나인 '전송 예외' 사항은, 프래그먼트된 패킷들이 연속적으로 수신되지 못하고 중간에 다른 소스(즉, 송신측)에서 보낸 패킷이 삽입되면, 체크섬 레지스터의 값이 변형(corrupt)되는 문제가 발생된다. 이러한 문제는 수신인 경우에만 해당되며 '전송 예외' 사항이라고 정의한다. 바로 이전에 수신된 패킷이 마지막 프래크먼트가 아니고 지금 수신된 패킷의 소스가 이 전 수신된 것과 다를 때 발생된다.
이러한 문제를 해결하기 위하여 이전에 수신된 패킷들을 제거하고 방금 전에 수신한 패킷의 마지막 블럭들이 버퍼에 남아있을 수 있기 때문에 버퍼를 클리어한다. 이 방법은 IEEE 802.11 표준의 무선 랜의 경우처럼, 프래그먼트들을 버스트 트랜스미션하는 경우에 적용하기 적합하다. 실제로 프래그먼트들을 수신하는 중에 다른 소스 어드레스로부터의 패킷을 받는 경우가 드물기 때문이다. 만약 IP 패킷처럼 중간에 다른 어드레스로부터 패킷을 받는 경우가 많을 때는 수신된 패킷들을 저장할 때 체크섬 값도 같이 저장하여 체크섬 값들을 각각의 패킷을 수신하기 시작할 때마다 이전 체크섬 값을 이용하면 된다.
끝으로, 재시도 예외 사항은 통신 중에 에러가 발생하면 재시도를 하게 되는데, 본 발명의 알고리즘에서는 마지막 태그 생성부에서 사용하기 위하여 체크섬을 각각의 블럭들마다 계산하기 때문에 재시도를 하게 되면, 체크섬을 이전 상태로 되돌려야 하는 문제가 발생된다. 이러한 문제를 재시도 예외 사항이라 정의하고, 수신일 경우에는 이전에 수신된 패킷이 마지막 프래그먼트가 아니고 현재 수신된 패킷이 재시도인 경우, 그리고 송신일 경우에는 송신한 패킷이 프래그먼트된 프레임이고 에러가 발생한 경우에 이 예외 사항이 발생된다.
해결 방법으로 수신일 경우에는 이전에 받은 적이 있는 패킷이면, 오프셋 코드북 모드를 수행하지 않고 무시한다. 그리고 받은 적이 없는 패킷이면, 오프셋 코드북 모드를 수행한다. 또한 송신일 경우에는 재시도하는 패킷인지 확인하고 그렇다면 이 패킷에 대하여 오프셋 코드북 모드를 수행하는 동안에 체크섬을 계산하 여 바이패스한다.
다시 도 3을 참조하면, 상기 암호 처리 유닛(130)은 송수신시 입력된 데이터를 암호화 또는 복호화하기 위하여 오프셋 코드북을 생성하고, 태그 및 메시지 인증 코드를 생성한다. 구체적으로 도 5에 도시된 바와 같이, 상기 암호 처리 유닛(130)은 오프셋 코드북 초기화부(OCB_INIT : 132)와, 블럭 복호화부(BLOCK_DECIPHER : 134)와, 마지막 블럭 복호화부(LAST_BLOCK_DECIPHER : 136)와, 태그 생성부(TAG_GENERATOR : 138) 및 태그 비교부(TAG_COMPARATOR : 140)를 포함한다. 또한 상기 암호 처리 유닛(130)은 블럭 암호화부(BLOCK_ENCIPHER : 142)와, 마지막 블럭 암호화부(LAST_BLOCK_ENCIPHER : 144) 및 메시지 인증 코드(Message Authentication Code : MAC) 생성부(MAC_GENERATOR : 146)를 포함한다.
상기 암호 처리 유닛(130)은 복호화하기 위하여 오프셋 코드북 초기화부(132)와, 블럭 복호화부(134)와, 마지막 블럭 복호화부(136)와, 태그 생성부(138) 및 태그 비교부(140)를 이용하고, 암호화하기 위하여 오프셋 코드북 초기화부(132)와, 블럭 암호화부(142)와, 마지막 블럭 암호화부(144) 및 메시지 인증 코드 생성부(146)를 이용한다.
구체적으로, 상기 오프셋 코드북 초기화부(132)는 송신 및 수신시 동작되며, 오프셋 코드북(Offset CodeBook)을 작성하여 상기 오프셋 코드북 메모리(110)에 저장한다. 그리고 난스와 오프셋 코드북을 사용하여 오프셋 코드북 초기값(offset 0)을 생성하고, 오프셋 변수를 위한 메모리(또는 레지스터)에 저장한다.
상기 블럭 복호화부(134)는 수신시 동작되며, 이전의 오프셋 코드북 offset (i) 값을 가지고 다음 오프셋 코드북 offset (i+1) 값을 생성하여 오프셋 변수를 위한 메모리(또는 레지스터)에 저장한다. 상기 블럭 복호화부(134)는 전송받은 블럭을 복호화하며, 그리고 상기 체크섬 메모리(112)에 저장된, 태그(tag)를 생성하기 위한 체크섬(checksum) 값을 업데이트한다.
상기 마지막 블럭 복호화부(136)는 수신시 동작되며, 이전의 오프셋 코드북 offset (i) 값을 가지고 다음 오프셋 코드북 offset (i+1) 값을 생성하여 오프셋 변수를 위한 메모리(또는 레지스터)에 저장한다. 상기 마지막 블럭 복호화부(126)는 전송받은 마지막 블럭을 복호화하며, 그리고 태그를 생성하기 위한 체크섬 값을 업데이트한다.
상기 태그 생성부(138)는 수신시 동작되며, 상기 블럭 복호화부(134) 및 상기 마지막 블럭 복호화부(136)에 의해서 업데이트된 체크섬 값을 이용하여 태그를 생성한다.
상기 태그 비교부(140)는 수신시 동작되며, 상기 태그 생성부(138)에 의해서 생성된 태그와 전송된 메시지 인증 코드(MAC)를 비교하여 전송 상태에 따른 에러 여부를 판별한다. 예를 들어, 태그와 메시지 인증 코드가 서로 다르면 에러를 발생시킨다.
상기 블럭 암호화부(142)는 송신시 동작되며, 이전의 오프셋 코드북 offset (i) 값을 가지고 다음 오프셋 코드북 offset (i+1) 값을 생성하여 오프셋 변수에 저장한다. 또한 상기 블럭 암호화부(142)는 전송할 프레임에서 마지막이 아닌 블 럭들을 암호화하며, 그리고 메시지 인증 코드(MAC)를 생성하기 위한 체크섬 값을 업데이트한다.
상기 마지막 블럭 암호화부(144)는 송신시 동작되며, 이전의 오프셋 코드북 offset (i) 값을 가지고 다음 오프셋 코드북 offset (i+1) 값을 생성하여 오프셋 변수에 저장한다. 상기 마지막 블럭 암호화부(144)는 전송할 프레임의 마지막 블럭을 암호화하며, 그리고 메시지 인증 코드(MAC)를 생성하기 위한 체크섬 값을 업데이트한다.
상기 메시지 인증 코드(MAC) 생성부(146)는 송신시 동작되며, 상기 블럭 암호화부(142) 및 상기 마지막 블럭 암호화부(144)에 의해서 업데이트된 체크섬 값을 이용하여 메시지 인증 코드(MAC)를 생성한다.
다시 도 3을 참조하면, 상기 블럭 암호 엔진(108)은 상기 제어 유닛(102)으로부터 암호 키를 받아서 표준 암호화 알고리즘(예를 들어, DES, AES 등)을 이용하여 오프셋 코드북 모드로 암호화 또는 복호화 기능을 수행하도록 상기 암호 처리 유닛(130)과 연계한다.
상기 오프셋 코드북 메모리(110)는 상기 암호 처리 유닛(130)으로부터 생성된 오프셋 코드북을 저장한다.
그리고 상기 체크섬 메모리(112)는 전송 예외 사항을 처리하기 위한 메모리로서, 송신 어드레스와 체크섬 값의 한 쌍 단위로 저장한다. 따라서 상기 암호 처리 유닛(130)은 이전 패킷과 다른 송신측으로부터 패킷을 받게 되면, 상기 체크섬 메모리(112)로부터 해당 송신 어드레스를 이용하여 계산한다.
따라서 상기 암호화 장치(100)는 상기 입력 버퍼(104)로부터 블럭사이즈의 데이터를 입력 버스 제어부(106)로 전달하고, 상기 제어 유닛(102)의 제어 신호를 받아서 상기 입력 버스 제어부(106)는 해당 유닛들(120, 130)로 데이터를 전달한다. 해당 유닛들(120, 130)은 동작 중에 각각 블럭사이즈의 데이터를 처리하여 출력 버스 제어부(114)로 전달한다. 또한 상기 암호 처리 유닛(130) 중 태그 비교부(140)를 제외한 모든 유닛들(132 ~ 138, 142 ~ 146)은 동작 중에 상기 블럭 암호 엔진(108)을 이용하여 처리되며, 오프셋 코드북 초기화부(132)에서 생성된 오프셋 코드북은 오프셋 코드북 메모리(110)에 저장되어 블럭 복호화부(134)와, 마지막 블럭 복호화부(136)와, 블럭 암호화부(142) 및 마지막 블럭 암호화부(144)에서 오프셋 코드북을 생성할 때 사용한다. 그리고 태그 생성부(138)와 메시지 인증 코드 생성부(146)에서는 블럭 암호 엔진(108)에 입력되는 값을 계산한다.
계속해서 본 발명에 따른 암호화 장치의 수신 및 송신 동작 수순을 도 6 내지 도 15를 이용하여 상세히 설명한다.
우선, 메시지 인증 코드의 바이트 길이를 맥사이즈(MACSize)라 칭하고, 'MACSize' 라는 상수를 정의한다. 그리고 버퍼에 관련된 두가지 중요한 변수가 있는데, 하나는 'bytesLeft'라는 변수로 이전 패킷을 오프셋 코드북 모드 처리하고 얼마나 많은 바이트가 버퍼에 남아 있는지를 나타내는 변수이다. 변수 'bytesLeft'는 본 발명의 알고리즘에서 업데이트된다. 그리고 다른 하나는 'bytesInBuffer'라는 변수로 이는 실제로 현재 버퍼 안에 얼마 만큼의 바이트가 저장되어 있는지를 나타낸다. 버퍼에 데이터를 기입하는 주체 예컨대, 수신일 경우 에 모뎀에 의해서 업데이트된다. 또한 오프셋 코드북 모드로 수행 중에도 데이터를 계속해서 받을 수 있기 때문에, 변수 'bytesInBuffer'는 오프셋 코드북 모드 수행 중에도 오프셋 코드북 모드 알고리즘이 모르는 사이에 계속해서 변할 수 있는 값이다.
도 6은 본 발명에 따른 암호화 장치의 수신 동작을 개략적으로 나타낸 흐름도이다. 이 수순은 상기 암호화 장치(100)의 메모리 장치(미도시됨)에 구비되는 프로그램으로, 상기 프로그램은 상기 암호화 장치(100)의 제어 유닛(102)에 의해서 처리된다.
도면을 참조하면, 단계 S200에서 헤더 정보를 수신하는 루틴(RX_HDR)을 수행하고, 본 발명에 의해 정의된 예외 사항이 적어도 하나 발생되면, 단계 S210에서 예외 사항 처리 루틴(EX_HANDLE)을 수행하고, 그렇지 않으면 수신 동작을 종료한다.
단계 S230에서는 예외 사항에 대응하여 오프셋 코드북 모드 처리 루틴(OCB)을 수행하고, 처리할 블럭이 마지막 블럭인지를 판별하여 단계 S260에서 마지막 블럭 수신 처리 루틴(RX_LAST)을 수행한다. 그리고 단계 S280에서 마지막 블럭이 아닌 경우의 수신 처리 루틴(RX_NOT_LAST)을 수행한다.
구체적으로, 상기 헤더 정보 수신 루틴(S200)은 도 7에 도시된 바와 같이, 단계 S202에서 헤더 정보를 수신하고, 단계 S204에서 수신된 헤더 정보로부터 데이터의 크기 정보(L)를 획득하고, 변수 'counter'를 초기화한다. 데이터 크기 정보(L)는 패킷의 헤더 정보를 수신한 후, 헤더의 길이를 제외한 패킷의 길이를 바이트 단위로 나타낸다. 일반적으로 헤더에는 패킷의 길이가 저장되어 있으며, 또한 본 발명에서는 난스도 헤더에 포함되어 있는 것으로 가정한다. 그리고 변수 'counter'는 수신된 패킷 중 몇 번째 블럭까지 복호화했는지를 저장한다.
이어서 상기 예외 사항 처리 루틴(S210)을 수행한다. 상기 예외 사항 처리 루틴(S210)은 도 8에 도시된 바와 같이, 단계 S212에서 이전 패킷과 송신 어드레스 정보를 저장하는 변수들(prevMoreFrag, prevTA)을 정의한다. 예컨대, 글로벌 변수 'prevMoreFrag'는 이전에 받은 패킷이 마지막 프래그먼트였는지에 대한 정보를 저장한다. 그리고 변수 'prevTA'는 송신측의 어드레스 정보를 저장한다.
단계 S214에서 변수 'prevMoreFrag'가 1 이 아니면 즉, 현재 전송받은 패킷과 관계없이 이전 패킷이 마지막 프래그먼트이므로 예외 사항 알고리즘이 적용되지 않는다. 따라서 단계 S224로 진행하여 다음 번 패킷을 대비해서 두 가지 변수를 업데이트하고 예외 사항 처리 루틴(S210)을 종료한다. 즉, 현재 전송받은 패킷의 마지막 프래그먼트인지에 대한 정보와 송신측 어드레스 정보를 저장하는 변수 'curMoreFlag'와 변수 'curTA'를 다음 번 패킷에 대한 변수 'prevMoreFrag'와 'prevTA'로 업데이트한다.
그리고 단계 S214에서 변수 'prevMoreFrag'가 1 이면, 이전 패킷이 마지막 프래그먼트가 아니므로 이 수순은 단계 S216으로 진행하여 이전 패킷의 송신측 어드레스(prevTA)와 현재 패킷의 송신측 어드레스(curTA)를 비교한다.
비교 결과, 두 송신측 어드레스가 같지 않으면, 전송 예외 사항이 발생되므로 이 수순은 단계 S218으로 진행하여 이전의 변수 'prevTA'로부터 받았던 패킷들을 메모리에서 모두 지우고, 변수 'bytesLeft' 값 만큼의 버퍼 내용도 삭제한다. 또한, 변수 'bytesLeft' 값을 초기화 한다. 또는 전송 예외 사항이 발생되면, 상기 단계 S218에서 체크섬 메모리에 저장된 적당한 체크섬 값들을 이용하여 처리할 수도 있다.
또한 상기 단계 S216에서의 비교 결과, 두 송신측 어드레스가 같으면 전송 예외 사항이 발생되지 않으므로 단계 S220으로 진행한다. 여기서 변수 'bytesLeft'는 버퍼에서 이전 패킷 중 오프셋 코드북 모드를 처리하고 남아있는 바이트를 나타낸다.
이어서 단계 S220에서 현재 받은 패킷이 재시도인 경우이면, 단계 S222로 진행하여 재시도 예외 사항에 따른 처리 과정을 수행한다. 재시도는 일반적으로 전송된 패킷의 헤더 정보에 재시도인지에 대한 정보를 포함하고 있다.
재시도 예외 사항 처리 루틴은 단계 S222에서 수신된 패킷이 이미 받았던 패킷인지를 판별한다. 판별 결과, 수신된 패킷이 이미 받았던 패킷이면 단계 S226으로 진행하여 현재 받는 패킷을 제거한다. 이어서 수신 동작을 종료하고 다음 패킷이 수신될 때까지 대기한다.
그리고 판별 결과, 수신된 패킷이 이전에 받지 않았던 새로운 패킷이면, 이 수순은 단계 S224로 진행하여 변수들 즉, 'curMoreFlag'와 변수 'curTA'를 다음 번 패킷에 대한 변수 'prevMoreFrag'와 'prevTA'로 각각 업데이트하고 오프셋 코드북 모드 처리 루틴(S230)을 수행한다.
도 9a 및 도 9b는 도 6에 도시된 오프셋 코드북 모드 처리 루틴 수순을 상세히 나타낸 흐름도이다. 여기서 도 9a는 프래그먼트된 패킷을 처리하는 수순이고, 도 9b는 프래그먼트되지 않은 패킷을 처리하는 수순을 나타낸 것이다.
도 9a를 참조하면, 오프셋 코드북 모드 처리 루틴(S230)은 단계 S232에서 현재 수신 중인 패킷이 프래그먼트된 패킷인지를 판별한다. 즉, 수신 중인 패킷이 프래그먼트된 패킷이면, 이 수순은 단계 S234로 진행하여 오프셋 코드북 모드 초기화 기능을 수행하여 오프셋 코드북 모드를 준비한다.
단계 S236에서 수신된 패킷이 마지막 프래그먼트된 패킷인지를 판별하고, 마지막 프래그먼트된 패킷이면 이 수순은 단계 S238로 진행하여 블럭 개수 m과 마지막 블럭의 바이트 길이 변수 'bytesLastBlock'를 계산하고, 버퍼에 남아있는 바이트 수와 앞으로 들어올 패킷의 바이트 수를 더해서 변수 'bytesLeft'에 저장한다. 이어서 마지막 블럭 수신 처리 루틴(도 10의 S260)을 수행한다.
그리고 단계 S236에서 마지막 프래그먼트된 패킷이 아니면, 이 수순은 단계 S240으로 진행하여 블럭 개수 m과 버퍼에 남아있는 바이트 수와 앞으로 들어올 바이트 수를 더해서 변수 'bytesLast'에 저장한다. 이어서 마지막 블럭이 아닌 경우의 수신 처리 루틴(도 11의 S280)을 수행한다.
계속해서 도 9b를 참조하면, 오프셋 코드북 모드 처리 루틴(S230)은 단계 S232에서 현재 수신된 패킷이 프래그먼트된 패킷이 아닌 경우 단계 S242로 진행하여 블럭 개수 m을 계산한다. 블럭 개수 m은 수신된 데이터 크기(L)에서 맥사이즈 값(MACSize)을 뺀 값에 블럭사이즈(BlockSize)를 나눈 값을 올림한 값( RoundUp( (L-MACSize) / BlockSize) )이 된다. 그리고 이전의 수신된 패킷이 버퍼에 남아있을지도 모르기 때문에 버퍼를 클리어하고, 오프셋 코드북 모드 초기화 기능을 수행하여 오프셋 코드북 모드를 준비한다.
이어서 단계 S244에서 변수 'counter' 값이 m-1 보다 미만인지를 판별한다.
판별 결과, 변수 'counter' 값이 m-1 보다 미만이면, 이 수순은 단계 S246으로 진행하여 버퍼의 데이터 길이 즉, 변수 'bytesInBuffer'가 블럭사이즈 'BlockSize' 이상인지를 판별한다. 판별 결과, 변수 'bytesInBuffer'가 블럭사이즈 'BlockSize' 이상이면 이 수순은 단계 S248로 진행하여 블럭 복호화 기능을 수행하여 블럭 단위로 복호화를 수행한다. 이어서 변수 'counter' 값을 1 만큼 증가시키고 단계 S244로 진행하여 변수 'bytesInBuffer'가 블럭사이즈 'BlockSize' 이상이 되지 않을 때까지 상기 단계들(S244 ~ S248)을 반복 수행한다.
단계 S244에서 변수 'counter' 값이 m-1이 되면, 이 수순은 단계 S250으로 진행하여 변수 'bytesInBuffer'가 변수 'bytesLastBlock' 값 이상인지를 판별한다.
판별 결과, 변수 'bytesInBuffer'가 변수 'bytesLastBlock' 값 이상이면, 이 수순은 단계 S252로 진행하여 마지막 블럭 복호화 기능과, 태크 생성 기능을 수행한다. 이어서 단계 S254에서 변수 'bytesInBuffer'가 변수 'MACSize' 값 이상인지를 판별한다. 판별 결과, 변수 'bytesInBuffer'가 변수 'MACSize' 값 이상이면 이 수순은 단계 S256으로 진행하여 태크 비교 기능을 수행하고 이어서 변수 'bytesLeft' 값을 초기화한다. 그리고 수신 동작을 종료하여 다음 패킷이 수신될 때까지 대기한다.
도 10을 참조하면, 마지막 블럭 수신 처리 루틴(S260)은 단계 S262에서 변수 'counter' 값이 m-1 미만인지를 판별한다. 판별 결과, 변수 'counter' 값이 m-1 미만이면 이 수순은 단계 S264으로 진행하여 변수 'bytesInBuffer'가 변수 'BlockSize' 값 이상인지를 판별한다. 판별 결과, 변수 'bytesInBuffer'가 변수 'BlockSize' 값 이상이면 단계 S266에서 블럭 복호화 기능을 수행하고 변수 'counter' 값을 1 증가시킨다. 이어서 단계 S262로 진행하여 변수 'counter' 값이 m-1이 될 때까지 상기 단계들(S262 ~ S266)을 반복 수행한다.
상기 단계 S262에서 변수 'counter' 값이 m-1이면 이 수순은 단계 S268으로 진행하여 변수 'bytesInBuffer'가 변수 'bytesLastBlock' 값 이상인지를 판별한다.
판별 결과, 변수 'bytesInBuffer'가 변수 'bytesLastBlock' 값 이상이면 이 수순은 단계 S270으로 진행하여 마지막 블럭 복호화 기능과 태그 생성 기능을 수행한다.
그리고 단계 S272에서 변수 'bytesInBuffer'가 변수 'MACSize' 값 이상이면 이 수순은 단계 S274로 진행하여 태크 비교 기능을 수행하고 변수 'bytesLeft' 값을 초기화 한다. 이어서 수신 동작을 종료하여 다음 패킷이 수신될 때까지 대기한다.
도 11을 참조하면, 마지막 블럭이 아닌 경우의 수신 처리 루틴(S280)은 단계 S282에서 변수 'counter' 값이 m - RoundUp(MACSize/BlockSize) - 1 미만인지를 판별하고, 판별 결과 변수 'counter' 값이 m - RoundUp(MACSize/BlockSize) - 1 미만이면 이 수순은 단계 S284로 진행하여 변수 'bytesInBuffer'가 변수 'BlockSize' 값 이상인지를 판별한다. 판별 결과, 변수 'bytesInBuffer'가 변수 'BlockSize' 값 이상이면 이 수순은 단계 S286으로 진행하여 블럭 복호화 기능을 수행하고, 변수 'counter' 값을 1 증가시키고 변수 'bytesLeft' 값을 변수 'BlockSize' 값 만큼 감소시킨 후 단계 S282로 진행하여 상기 단계들(S282 ~ S286)을 계속 반복한다.
그리고 상기 단계 S282에서 변수 'counter' 값이 m - RoundUp(MACSize/BlockSize) - 1 이면, 수신 동작을 종료하고 다음 패킷이 수신될 때까지 대기한다.
도 12은 본 발명에 따른 고속의 오프셋 코드북 모드를 처리하는 암호화 장치의 송신 처리 수순을 도시한 흐름도이다. 이 수순 역시 상기 암호화 장치(도 3의 100)의 제어 유닛(102)에 의해서 처리되는 프로그램으로, 이 프로그램은 상기 암호화 장치(102)의 메모리 장치(미도시됨)에 구비된다. 또한, 도 12에 도시된 송신 처리 수순들은 도 6 내지 도 11에 도시된 수신 처리 수순들과 몇가지 기능을 제외하곤 유사하게 처리된다. 예컨대, 수신시의 복호화 기능은 송신시의 암호화 기능으로 바뀌며, 수신시의 예외 사항 처리 루틴은 송신시 재시도(retry) 사항을 체크하여 체크섬 계산을 바이패스(bypass)하는 것으로 변경된다. 또한 수신시 태그 생성 기능은 송신시 메시지 인증 코드 생성 기능으로 대신 수행하고, 송신시의 수순에서는 태그 비교 기능이 수행되지 않는다.
도면을 참조하면, 송신 수순은 단계 S300에서 헤더 정보 송신 루틴을 수행한다. 이어서 단계 S330에서 마지막 블럭 송신 루틴을 수행하고 단계 S350에서 마지막 블럭이 아닌 경우의 송신 루틴을 수행한다.
구체적으로, 상기 헤더 정보 송신 루틴(S300)은 도 13a에 도시된 바와 같이, 단계 S302에서 송신될 패킷의 데이터 길이(L)를 바이트로 계산하고, 변수 'counter' 값을 초기화한다.
단계 S304에서 송신될 패킷이 재시도인지를 판별한다. 송신될 패킷이 재시 도인 경우, 단계 S306에서 체크섬 값 계산을 무시하고 단계 S308으로 진행한다. 그리고 송신될 패킷이 재시도가 아니면 이 수순은 단계 S308으로 진행하여 전송될 패킷이 프래그먼트된 패킷인지를 판별한다.
판별 결과, 프래그먼트된 패킷이면 이 수순은 단계 S310으로 진행하여 오프셋 코드북 초기화 기능을 수행한다.
단계 S312에서 송신될 패킷이 마지막 프래그먼트된 패킷인지를 판별하고, 마지막 프래그먼트된 패킷이면 이 수순은 단계 S314로 진행하여 블럭 개수 m과 마지막 블럭의 바이트 길이 변수 'bytesLastBlock'를 계산하고 버퍼에 남아있는 바이트 수와 앞으로 들어올 바이트 수를 더해서 변수 'bytesLeft'에 저장한다. 이어서 마지막 블럭 처리 루틴(도 14의 S330)을 수행한다.
그리고 단계 S312에서 마지막 프래그먼트된 패킷이 아니면, 이 수순은 단계 S316으로 진행하여 블럭 개수 m과 버퍼에 남아있는 바이크 수와 앞으로 들어올 바이트 수를 더해서 변수 'bytesLast'에 저장한다. 이어서 마지막 블럭이 아닌 경우의 처리 루틴(도 15의 S350)을 수행한다.
상기 단계 S308에서 판별 결과 프래그먼트된 패킷이 아니면, 이 수순은 도 13b에 도시된 바와 같이, 단계 S318으로 진행하여 블럭 개수 m을 계산하고, 이전의 송신된 패킷이 버퍼에 남아있을지도 모르기 때문에 버퍼를 클리어한다. 그리고 오프셋 코드북 모드 초기화 기능을 수행하여 오프셋 코드북 모드를 준비한다.
이어서 단계 S320에서 변수 'counter' 값이 m-1 보다 미만인지를 판별한다.
판별 결과, 변수 'counter' 값이 m-1 보다 미만이면 이 수순은 단계 S322로 진행하여 버퍼의 데이터 길이 즉, 변수 'bytesInBuffer'가 블럭사이즈 'BlockSize' 이상인지를 판별한다. 판별 결과, 변수 'bytesInBuffer'가 블럭사이즈 'BlockSize' 이상이면 이 수순은 단계 S324로 진행하여 블럭 암호화 기능을 수행하여 블럭 단위로 암호화를 수행한다. 이어서 변수 'counter' 값을 1 만큼 증가시키고 단계 S320으로 진행하여 변수 'bytesInBuffer'가 블럭사이즈 'BlockSize' 이상이 되지 않을 때까지 상기 단계들(S320 ~ S324)을 반복 수행한다.
상기 단계 S320에서 변수 'counter' 값이 m-1이 되면 이 수순은 단계 S326으로 진행하여 변수 'bytesInBuffer'가 변수 'bytesLastBlock' 값 이상인지를 판별한다.
판별 결과, 변수 'bytesInBuffer'가 변수 'bytesLastBlock' 값 이상이면 이 수순은 단계 S328로 진행하여 마지막 블럭 암호화 기능과, 메시지 인증 코드(MAC) 생성 기능을 수행한다. 그리고 변수 'bytesLeft' 값을 초기화하고 송신 동작을 종료한다.
상기 마지막 블럭 전송 처리 루틴(S330)은 도 14에 도시된 바와 같이, 단계 S332에서 변수 'counter' 값이 m-1 미만인지를 판별한다. 판별 결과, 변수 'counter' 값이 m-1 미만이면 이 수순은 단계 S334로 진행하여 변수 'bytesInBuffer'가 변수 'BlockSize' 값 이상인지를 판별한다. 판별 결과, 변수 'bytesInBuffer'가 변수 'BlockSize' 값 이상이면 단계 S336에서 블럭 암호화 기능을 수행하고 변수 'counter' 값을 1 증가시킨다. 이어서 단계 S332로 진행하여 변수 'counter' 값이 m-1이 될 때까지 상기 단계들(S332 ~ S336)을 반복 수행한다.
상기 단계 S332에서 변수 'counter' 값이 m-1이면 이 수순은 단계 S338으로 진행하여 변수 'bytesInBuffer'가 변수 'bytesLastBlock' 값 이상인지를 판별한다.
판별 결과, 변수 'bytesInBuffer'가 변수 'bytesLastBlock' 값 이상이면 이 수순은 단계 S340으로 진행하여 마지막 블럭 암호화 기능과 메시지 인증 코드(MAC) 생성 기능을 수행한다. 그리고 변수 'bytesLeft' 값을 초기화한 후, 송신 동작을 종료한다.
그리고 상기 마지막 블럭이 아닌 경우의 전송 처리 루틴(S350)은 도 15에 도시된 바와 같이, 단계 S352에서 변수 'counter' 값이 m - RoundUp(MACSize/BlockSize) - 1 미만인지를 판별하고 그 결과, 변수 'counter' 값이 m - RoundUp(MACSize/BlockSize) - 1 미만이면 이 수순은 단계 S354로 진행하여 변수 'bytesInBuffer'가 변수 'BlockSize' 값 이상인지를 판별한다. 판별 결과, 변수 'bytesInBuffer'가 변수 'BlockSize' 값 이상이면 이 수순은 단계 S356로 진행하여 블럭 암호화 기능을 수행한다. 그리고 변수 'counter' 값을 1 증가시키고 변수 'bytesLeft' 값을 변수 'BlockSize' 값 만큼 감소시킨 후, 단계 S352로 진행하여 상기 단계들(S352 ~ S356)을 계속 반복한다.
상기 단계 S352에서 변수 'counter' 값이 m - RoundUp(MACSize/BlockSize) - 1 이면, 수신 동작을 종료한다.
상술한 바와 같이, 본 발명의 암호화 장치(100)는 프래그먼트된 패킷을 전송 또는 수신하는 중에 오프셋 코드북 모드를 수행하기 위하여 버퍼에 하나의 블럭을 남겨놓아 '블럭플래그 예외 사항'에서 정의한 예외 사항을 해결한다. 또한, 버퍼에 두 개 또는 RoundUp(MACSize/BlockSize) + 1 만큼의 블럭을 남겨놓아 '맥플래그 예외 사항'에서 정의한 예외 사항을 해결한다. 그리고 수신된 패킷을 무시하고 버퍼를 클리어해서 '전송 예외 사항'에서 정의한 예외 사항을 해결한다.
수신일 경우, 수신된 패킷들을 저장할 때, 체크섬 값도 같이 저장하여 각각의 패킷을 수신하기 시작할 때, 송신측 어드레스 값을 사용하여 이전 값을 찾아 이용하게 하여 전송 예외 사항에서 정의한 예외 사항을 해결한다. 그리고 이전에 받은 적이 있는 패킷이면 오프셋 코드북 모드를 수행하지 않고 무시하여 재시도 예외 사항에서 정의한 예외 사항을 해결한다.
그리고 송신일 경우, 재시도하는 패킷이면 그 패킷에 대해서 오프셋 코드북 모드를 수행하는 동안 체크섬 계산을 바이패스하여 재시도 예외 사항에서 정의한 예외 사항을 해결한다.
따라서 본 발명에 의하면, 패킷을 송신 또는 수신하는 중에 버퍼에 블럭사이즈 만큼의 데이터를 받으면 한 개 또는 다수의 블럭 사이퍼를 가지고 오프셋 코드북 모드 중 적당한 부분을 수행하여 암호화 시간을 줄일 수 있다.
그리고 도 18은 본 발명의 실시예에 따른 모바일 시스템의 구성을 도시한 블럭도이다.
도면을 참조하면, 상기 모바일 시스템(400)은 신규한 암호화 장치(412)를 포함하며, 상기 암호화 장치(412)는 모뎀(410) 내부에 구비된다. 또한, 상기 모바일 시스템(400)은 전형적인 모바일 시스템의 구성 요소들 예컨대, 중앙 처리 장치(CPU : 402)와, 메모리 장치(404) 및 모뎀(410) 등을 구비하고, 이들은 상호 내부 버스를 통해 연결된다. 그리고 상기 모바일 시스템(400)은 무선 랜(Wireless LAN) 방식을 이용하여 데이터 통신을 수행한다.
상기 암호화 장치(412)는 송신시, 상기 메모리 장치(404)로부터 데이터를 독출하여 암호화하여 전송하고, 수신시 복호화하여 메모리 장치(404)로 출력한다.
특히, 상기 모뎀(410)은 본 발명의 실시예에 따른 암호화 장치(412 : 도 3의 100)를 구비하여 데이터 패킷을 전송 또는 수신하는 중에 오프셋 코드북 모드를 이용하여 암호화 처리함으로써 암호화 시간을 줄일 수 있으며, 암호화 처리 속도를 향상시킨다.
상술한 바와 같이, 본 발명의 암호화 장치는 패킷을 송수신하는 중에 암호화를 수행함으로써, 송신 또는 수신 시간과 암호화 시간을 오버랩시킬 수 있게 되어 암호화시 발생되는 지연 시간을 최소화하고 데이터 처리량에서 큰 손해없이 데이터 보안 기능을 제공할 수 있다.
또한 본 발명의 암호화 장치 및 이를 구비하는 시스템에서 송수신 중에 암호화함으로써, 암호화 장치 및 시스템의 데이터 처리량을 향상시킬 수 있다.

Claims (13)

  1. 암호화 장치에 있어서:
    외부로부터 암호화(encryption) 또는 복호화(decryption)하기 위한 입력 데이터를 받아서 저장하고, 상기 저장된 입력 데이터를 블럭 단위의 패킷으로 출력하는 입력부와;
    상기 입력 데이터의 크기 정보를 받아들이고, 상기 입력 데이터를 블럭 단위의 패킷으로 출력하도록 제어하며, 상기 입력 데이터를 송신 또는 수신 중에 암호화 또는 복호화하도록 오프셋 코드북 모드를 제어하는 제어부와;
    상기 입력부로부터 상기 패킷의 헤더 정보를 받아서 상기 제어부로 전송하고, 상기 헤더 정보로부터 상기 패킷의 송신 또는 수신시 분할, 전송 또는 재시도에 따른 예외 사항이 발생되었는지를 판별하여 적어도 하나의 예외 사항이 발생되면, 상기 제어부로 상기 발생된 예외 사항에 대응하는 정보를 출력하는 예외 사항 처리부와;
    상기 패킷을 암호화 및 복호화하기 위한 오프셋 코드북과, 태그 및 메시지 인증 코드를 생성, 저장하고, 상기 제어부로부터 암호 키를 받아서 오프셋 코드북 모드로 상기 패킷을 암호화 및 복호화하는 암호화 처리부 및;
    상기 제어부의 제어를 받아서 상기 암호화 처리부로부터 출력되는 암호화 또는 복호화된 패킷을 받아서 외부로 출력하는 출력부를 포함하는 것을 특징으로 하는 암호화 장치.
  2. 제 1 항에 있어서,
    상기 입력부는;
    외부로부터 암호화 또는 복호화하기 위한 입력 데이터를 받아서 저장하는 입력 버퍼 및;
    상기 입력 버퍼로부터 상기 입력 데이터를 블럭 단위의 패킷으로 받아서 상기 예외 사항 처리부 및 상기 암호 처리부로 라우팅(routing)하는 입력 버스 제어부를 포함하는 것을 특징으로 하는 암호화 장치.
  3. 제 1 항에 있어서,
    상기 암호화 처리부는;
    상기 제어부로부터 암호키를 받아서 암호화 또는 복호화하기 위한 표준 알고리즘을 이용하여 오프셋 코드북 모드를 처리하도록 하는 블럭 사이퍼 엔진과;
    상기 패킷을 암호화 및 복호화하기 위한 오프셋 코드북과, 상기 오프셋 코드북을 생성하기 위한 태그와 메시지 인증 코드를 생성, 저장하고, 상기 제어부의 제어에 대응하여 상기 블럭 사이퍼 엔진과 연계해서 오프셋 코드북 모드로 상기 패킷을 암호화 및 복호화하는 암호 처리 유닛과;
    상기 암호 처리 유닛으로부터 생성된 오프셋 코드북을 저장하는 오프셋 코드북 메모리 및;
    상기 예외 사항 중 전송 예외 사항을 처리하기 위한 체크섬과 송신측 어드레 스를 저장하는 체크섬 메모리를 포함하는 것을 특징으로 하는 암호화 장치.
  4. 제 3 항에 있어서,
    상기 암호 처리 유닛은;
    송신 및 수신시 동작하여 오프셋 코드북을 생성하여 상기 오프셋 코드북 메모리에 저장하는 오프셋 코드북 초기화부와,
    수신시 동작하여 이전의 오프셋 코드북을 이용하여 다음 오프셋 코드북을 생성하고, 상기 입력부로부터 상기 블럭 단위의 패킷을 복호화하고, 상기 체크섬 메모리에 저장된 태그를 생성하기 위한 체크섬을 업데이트하는 블럭 복호화부와,
    수신시 동작되며, 이전의 오프셋 코드북을 이용하여 다음 오프셋 코드북을 생성하여 상기 패킷 중 마지막 블럭을 복호화하며, 그리고 상기 태그를 생성하기 위한 체크섬을 업데이트하는 마지막 블럭 복호화부와,
    수신시 동작되며, 상기 블럭 복호화부 및 상기 마지막 블럭 복호화부에 의해서 업데이트된 체크섬 값을 이용하여 태그를 생성하는 태그 생성부와,
    수신시 동작되며, 상기 태그 생성부에 의해서 생성된 태그와 전송된 메시지 인증 코드를 비교하여 전송 상태에 따른 에러 여부를 판별하여 출력하는 태그 비교부와,
    송신시 동작되며, 이전의 오프셋 코드북을 이용하여 다음 오프셋 코드북을 생성하고, 전송할 입력 데이터의 마지막이 아닌 블럭들을 암호화하며, 그리고 메시지 인증 코드를 생성하기 위한 체크섬을 업데이트하는 블럭 암호화부와,
    송신시 동작되며, 이전의 오프셋 코드북을 이용하여 다음 오프셋 코드북을 생성하고, 전송할 입력 데이터의 마지막 블럭을 암호화하며, 그리고 메시지 인증 코드를 생성하기 위한 체크섬을 업데이트하는 마지막 블럭 암호화부 및,
    송신시 동작되며, 상기 블럭 암호화부 및 상기 마지막 블럭 암호화부에 의해서 업데이트된 체크섬을 이용하여 메시지 인증 코드를 생성하는 메시지 인증 코드 생성부를 포함하는 것을 특징으로 하는 암호화 장치.
  5. 제 1 항에 있어서,
    상기 예외 사항 처리부는;
    상기 입력부로부터 상기 헤더 정보를 받아서 상기 예외 사항이 발생되는지를 판별하기 위한 정보를 저장하는 헤더 정보 메모리와,
    상기 입력부로부터 상기 패킷들 중 최초 패킷의 헤더 정보를 받아서 상기 패킷의 어떤 블럭 또는 메시지 인증 코드가 중간에서 분할되었는지를 판별하고, 판별 결과를 상기 제어부로 전달하는 분할 예외 사항 처리 유닛과,
    상기 헤더 정보 메모리와 상기 입력부로부터 상기 헤더 정보를 받아서 상기 패킷들중 이전의 패킷과 다음의 패킷이 서로 다른 송신측으로부터 전송되었는지를 판별하고, 판별 결과를 상기 제어부로 전달하는 전송 예외 사항 처리 유닛 및,
    상기 헤더 정보로부터 수신된 이전의 패킷이 상기 입력 데이터의 마지막 패킷이 아니고 현재 수신되는 패킷의 재시도인지 또는 송신한 패킷이 에러가 발생되었는지를 판별하고, 판별 결과를 상기 제어부로 전달하는 재시도 예외 사항 처리 유닛을 포함하는 것을 특징으로 하는 암호화 장치.
  6. 제 1 항 또는 제 5 항에 있어서,
    상기 제어부는;
    상기 예외 사항 처리부로부터 분할 예외 사항이 발생되면, 상기 패킷의 적어도 하나의 블럭을 남겨두고 암호화 또는 복호화하도록 제어하는 것을 특징으로 하는 암호화 장치.
  7. 제 1 항 또는 제 5 항에 있어서,
    상기 제어부는;
    상기 예외 사항 처리부로부터 전송 예외 사항이 발생되면, 상기 입력 버퍼를 클리어하여 상기 수신된 패킷을 제거하도록 제어하는 것을 특징으로 하는 암호화 장치.
  8. 제 1 항 또는 제 5 항에 있어서,
    상기 제어부는;
    상기 예외 사항 처리부로부터 전송 예외 사항이 발생되면, 상기 패킷들 중 이전 패킷과 다음 패킷의 송신측 소스를 판별하여 복호화하도록 제어하는 것을 특징으로 하는 암호화 장치.
  9. 제 1 항 또는 제 5 항에 있어서,
    상기 제어부는;
    상기 예외 사항 처리부로부터 재시도 예외 사항이 발생되고, 상기 수신된 패킷이 이전의 패킷이면 오프셋 코드북 모드를 수행하지 않도록 제어하는 것을 특징으로 하는 암호화 장치.
  10. 제 1 항 또는 제 5 항에 있어서,
    상기 제어부는;
    상기 예외 사항 처리부로부터 재시도 예외 사항이 발생되면, 상기 송신될 패킷을 오프셋 코드북 모드로 재전송하도록 제어하는 것을 특징으로 하는 암호화 장치.
  11. 데이터 네트워크에서 오프셋 코드북 모드를 이용하여 패킷의 송신 또는 수신 중에 암호화 또는 복호화하는 암호화 장치의 처리 방법에 있어서:
    외부 입력 데이터로부터 다수의 블럭들로 분할된 패킷의 헤더 정보를 받아들이는 단계와;
    상기 헤더 정보로부터 상기 패킷의 송수신시 분할, 전송 또는 재시도 예외 사항이 적어도 하나 발생되는지를 판별하기 위한 예외 사항 처리 루틴을 수행하는 단계 및;
    상기 판별 결과, 적어도 하나의 예외 사항이 발생되면, 해당 예외 사항에 대 응하여 오프셋 코드북 모드를 수행하는 단계를 포함하여 송수신 중에 입력 데이터를 암호화 또는 복호화하는 것을 특징으로 하는 암호화 장치의 처리 방법.
  12. 제 11 항에 있어서,
    상기 예외 사항 처리 루틴은;
    상기 헤더 정보로부터 분할 예외 사항이 발생되었음이 판별되면, 상기 패킷의 적어도 하나의 블럭을 남겨두고 암호화 또는 복호화하거나,
    상기 헤더 정보로부터 전송 예외 사항이 발생되었음이 판별되고, 상기 패킷들 중 이전 패킷과 현재 수신 중인 패킷의 송신 소스를 판별하여 서로 다른 소스이면, 상기 이전 패킷과 상기 현재 수신 중인 패킷을 삭제하여 복호화거나,
    상기 헤더 정보로부터 재시도 예외 사항이 발생되었음이 판별되고, 상기 수신된 패킷이 이미 수신된 패킷이면 현재 수신중인 패킷을 삭제하고, 새로운 패킷이면 재전송하도록 오프셋 코드북 모드로 처리하는 것를 특징으로 하는 암호화 장치의 처리 방법.
  13. 제 11 항 또는 제 12 항에 있어서,
    상기 분할 예외 사항은 블럭 또는 메시지 인증 코드의 중간에 분할된 경우에 발생되며, 상기 분할 예외 사항이 블럭에 의한 경우에는 마지막 블럭을 남겨두고 처리하고, 메시지 인증 코드에 의한 경우에는 마지막 블럭과 적어도 하나의 마지막 이전 블럭을 남겨두고 처리하는 것을 특징으로 하는 암호화 장치의 처리 방법.
KR20030009789A 2003-02-17 2003-02-17 고속의 오프셋 코드북 모드를 위한 암호화 장치 및 그 방법 KR100560658B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR20030009789A KR100560658B1 (ko) 2003-02-17 2003-02-17 고속의 오프셋 코드북 모드를 위한 암호화 장치 및 그 방법
CNA2004100387557A CN1538655A (zh) 2003-02-17 2004-02-17 用于块级偏移密本方式操作的设备及其方法
US10/778,123 US20040161105A1 (en) 2003-02-17 2004-02-17 Device for block level offset codebook mode operation and method thereof
JP2004040367A JP2004254313A (ja) 2003-02-17 2004-02-17 高速のオフセットコードブックモードのためのブロック暗号化装置及びその方法
TW93103699A TWI256224B (en) 2003-02-17 2004-02-17 Device for block level offset codebook mode operation and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20030009789A KR100560658B1 (ko) 2003-02-17 2003-02-17 고속의 오프셋 코드북 모드를 위한 암호화 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20040074266A KR20040074266A (ko) 2004-08-25
KR100560658B1 true KR100560658B1 (ko) 2006-03-16

Family

ID=32844853

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20030009789A KR100560658B1 (ko) 2003-02-17 2003-02-17 고속의 오프셋 코드북 모드를 위한 암호화 장치 및 그 방법

Country Status (5)

Country Link
US (1) US20040161105A1 (ko)
JP (1) JP2004254313A (ko)
KR (1) KR100560658B1 (ko)
CN (1) CN1538655A (ko)
TW (1) TWI256224B (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100612255B1 (ko) * 2005-01-11 2006-08-14 삼성전자주식회사 무선 네트워크 시스템에서의 데이터 보안장치 및 그 방법
US7904714B2 (en) 2005-01-11 2011-03-08 Samsung Electronics Co., Ltd Apparatus and method for ciphering/deciphering a signal in a communication system
GB2422752A (en) * 2005-02-01 2006-08-02 3Com Corp Deciphering encapsulated and enciphered UDP datagrams
GB2424556A (en) * 2005-03-23 2006-09-27 3Com Corp Packet fragment deciphering with cipher state storage
JP2007041223A (ja) * 2005-08-02 2007-02-15 Mitsubishi Electric Corp データ配信装置及びデータ通信システム
US8208495B2 (en) * 2006-07-26 2012-06-26 Qualcomm Incorporated Data transmission with supplemental resources
KR100954224B1 (ko) * 2007-11-06 2010-04-21 한국전자통신연구원 오프셋 코드북 암호화 장치
US8509439B2 (en) * 2007-12-31 2013-08-13 Intel Corporation Assigning nonces for security keys
US8526602B2 (en) 2008-04-15 2013-09-03 Nec Corporation Adjustment-value-attached block cipher apparatus, cipher generation method and recording medium
US8634549B2 (en) * 2008-05-07 2014-01-21 Red Hat, Inc. Ciphertext key chaining
US8396209B2 (en) 2008-05-23 2013-03-12 Red Hat, Inc. Mechanism for chained output feedback encryption
CN101594227B (zh) * 2008-05-30 2012-06-27 华为技术有限公司 数据加密和解密的方法、装置及通信系统
CN102460996B (zh) * 2009-04-29 2014-08-20 英特尔公司 用于闭环mimo射束形成的差分反馈方法和装置
CN102473214B (zh) * 2009-07-31 2016-05-25 国际商业机器公司 用于协作代理加密和解密的方法和设备
CN103490900B (zh) * 2013-09-29 2017-01-04 福建星网锐捷网络有限公司 加密认证方法及设备
CN107451046B (zh) * 2016-05-30 2020-11-17 腾讯科技(深圳)有限公司 一种检测线程的方法及终端
CN108197502A (zh) * 2018-01-11 2018-06-22 苏州国芯科技有限公司 一种spi传输方法、装置、控制器、加密芯片及通信设备
CN110727542B (zh) * 2019-09-18 2023-02-28 陕西法士特齿轮有限责任公司 一种Hex文件处理方法及应用

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3746098B2 (ja) * 1996-02-28 2006-02-15 株式会社日立製作所 データの暗号化装置
US6427173B1 (en) * 1997-10-14 2002-07-30 Alacritech, Inc. Intelligent network interfaced device and system for accelerated communication
TW375721B (en) * 1998-06-17 1999-12-01 Ind Tech Res Inst DES chip processor capable of executing data encryption standard (DES) operation
US6601217B1 (en) * 2000-04-13 2003-07-29 Sun Microsystems, Inc. System and method for error correction in an electronic communication
DE60135347D1 (de) * 2000-07-14 2008-09-25 Irdeto Access Bv Architektur zur gesicherten paketbasierten datenverteilung
US7046802B2 (en) * 2000-10-12 2006-05-16 Rogaway Phillip W Method and apparatus for facilitating efficient authenticated encryption
US6876669B2 (en) * 2001-01-08 2005-04-05 Corrigent Systems Ltd. Packet fragmentation with nested interruptions

Also Published As

Publication number Publication date
JP2004254313A (ja) 2004-09-09
CN1538655A (zh) 2004-10-20
TWI256224B (en) 2006-06-01
TW200501697A (en) 2005-01-01
US20040161105A1 (en) 2004-08-19
KR20040074266A (ko) 2004-08-25

Similar Documents

Publication Publication Date Title
KR100560658B1 (ko) 고속의 오프셋 코드북 모드를 위한 암호화 장치 및 그 방법
US8233619B2 (en) Implementation of AES encryption circuitry with CCM
US7831039B2 (en) AES encryption circuitry with CCM
US7336783B2 (en) Cryptographic systems and methods supporting multiple modes
US8020006B2 (en) Pipeline for high-throughput encrypt functions
US7574571B2 (en) Hardware-based encryption/decryption employing dual ported memory and fast table initialization
US20070189522A1 (en) Apparatuses for encoding, decoding, and authenticating data in cipher block chaining messaging authentication code
GB2447552A (en) Galois/Counter Mode Advanced Encryption Standard authenticated encrypted messaging with pre-calculation of round keys
US10686587B2 (en) Method for safeguarding the information security of data transmitted via a data bus and data bus system
Elgeldawi et al. A comparative analysis of symmetric algorithms in cloud computing: a survey
KR101088549B1 (ko) 송신용 애플리케이션 패킷 처리 방법과 수신된 애플리케이션 패킷 세그먼트 처리 방법
US7406595B1 (en) Method of packet encryption that allows for pipelining
JP2010011122A (ja) 暗号化パケット処理システム
JP5500923B2 (ja) 情報処理装置
JP4395527B2 (ja) 情報処理装置
KR20060091018A (ko) 무선 랜에서의 ccmp를 이용한 암호화, 복호화 장치
CN112333204B (zh) 基于tcp ip协议乱序特征码的5g网络传输保密装置
JP2011223385A (ja) 暗号化通信装置
JP5355408B2 (ja) メッセージデータの非順次着信に対する許容度を有するメッセージ完全性のための処理方法
CN114978699A (zh) 一种数据加密和数据解密方法、装置、设备以及存储介质
CN114051208A (zh) 一种车地安全通信的方法、装置及计算机可读存储介质
CN117918055A (zh) 用于通信网络中隐私保护路由的设备和方法
CN118784317A (zh) 一种ip报文的加密方法
JP2020178169A (ja) 情報処理装置、情報処理方法及びプログラム
JP2010268293A (ja) 通信装置及び通信処理方法

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
FPAY Annual fee payment

Payment date: 20090303

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee