KR100583635B1 - 다수의 동작 모드들을 지원하는 암호화 장치 - Google Patents

다수의 동작 모드들을 지원하는 암호화 장치 Download PDF

Info

Publication number
KR100583635B1
KR100583635B1 KR1020030004806A KR20030004806A KR100583635B1 KR 100583635 B1 KR100583635 B1 KR 100583635B1 KR 1020030004806 A KR1020030004806 A KR 1020030004806A KR 20030004806 A KR20030004806 A KR 20030004806A KR 100583635 B1 KR100583635 B1 KR 100583635B1
Authority
KR
South Korea
Prior art keywords
data
register
input
initial vector
response
Prior art date
Application number
KR1020030004806A
Other languages
English (en)
Other versions
KR20040067601A (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 KR1020030004806A priority Critical patent/KR100583635B1/ko
Priority to US10/721,398 priority patent/US7336783B2/en
Priority to US10/744,125 priority patent/US7509501B2/en
Priority to JP2003426676A priority patent/JP4684550B2/ja
Priority to TW093100636A priority patent/TW200417219A/zh
Priority to JP2004008782A priority patent/JP2004226969A/ja
Priority to TW093101126A priority patent/TWI286689B/zh
Priority to CN2004100029716A priority patent/CN1531240B/zh
Publication of KR20040067601A publication Critical patent/KR20040067601A/ko
Application granted granted Critical
Publication of KR100583635B1 publication Critical patent/KR100583635B1/ko
Priority to US11/972,387 priority patent/US7885404B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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
    • 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
    • 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/20Manipulating the length of blocks of bits, e.g. padding or block truncation

Landscapes

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

Abstract

본 발명은 메모리에 저장된 데이터를 암호화하기 위한 암호화 장치에 관한 것으로, 작고 간단한 소자들을 이용하여 ECB, CBC, CBC-MAC, 카운터 및 OCB 모드 등에서 동작할 수 있는 암호화 장치가 개시된다. 또한, 본 발명의 암호화 장치는, CPU와 암호화 장치 간의 데이터 송수신을 최소화함으로써 통신 시스템의 성능을 향상시킨다. 한편, 암호화 장치 내에 구성되는 입력 버퍼 및 출력 버퍼가 각각 적어도 2 개의 블록들을 저장할 수 있도록 구성함으로써 암호화 장치의 성능을 극대화할 수 있다. 더욱이, 암호화 장치가 제로-패딩 기능을 지원함으로써 CPU가 처리해야할 작업을 최소화한다.

Description

다수의 동작 모드들을 지원하는 암호화 장치{CRYPTOGRAPHIC APPARATUS FOR SUPPORTING MULTIPLE MODES}
도 1은 본 발명의 바람직한 실시예에 따른 암호화 장치를 구비한 통신 시스템을 보여주는 도면;
도 2는 도 1에 도시된 암호화 장치의 상세한 구성을 보여주는 블록도;
도 3 내지 도 5는 도 2에 도시된 블록 암호화 유닛의 동작 모드에 따른 회로 구성을 보여주는 도면들;
도 4는 도 2에 도시된 블록 암호화 유닛이 CBC 모드 또는 CBC-MAC 모드로 동작하기 위해 필요한 회로 구성들을 보여주는 도면;
도 5는 도 2에 도시된 블록 암호화 유닛이 CNT 모드로 동작하기 위해 필요한 회로 구성들을 보여주는 도면;
도 6은 본 발명의 바람직한 실시예에 따른 블록 암호화 유닛을 보여주는 도면;
도 7은 도 1에 도시된 암호화 장치와 메모리 사이의 데이터 송수신을 예시적으로 보여주는 도면;
도 8은 도 2에 도시된 DMA 컨트롤러의 FSM(Finite State Machine)을 보여주는 도면;
도 9는 도 2에 도시된 입력 버퍼, 출력 버퍼 그리고 블록 암호화 유닛의 관계에 따른 FSM을 보여주는 도면;
도 10a 내지 도 10b는 데이터의 마지막에 '0'을 삽입하는 제로-패딩(zero-padding)을 예시적으로 보여주는 도면;
도 11은 OCB 모드의 암호화 프로세스를 보여주는 도면;
12는 OCB 모드의 복호화 프로세스를 개념적으로 보여주는 도면; 그리고
도 13은 도 1에 도시된 메모리의 소스 어드레스들(SA0 - SAm+1)에 저장된 데이터 블록들(I0 - Im+1)과 목표 어드레스들(DA0 - DAm+1)에 저장된 데이터 블록들(O0 - 0m+1)을 보여주는 도면이다.
본 발명은 데이터 암호화에 관한 것으로, 좀 더 구체적으로는 데이터를 암호화/복호화하는 암호화 장치에 관한 것이다.
암호화 기술은 메시지 전송의 안전을 보장하기 위하여 자주 사용되고 있다. 암호화 기술은 전송측(transmission side)에서 메시지(이하, 플레인텍스트(plaintext))를 부호화(encrypt)하고, 수신측(receiving side)에서 메시지(이하, 싸이퍼텍스트(ciphering))를 해독(decrypt) 또는 복호화(decode)한다. 이러한 메시지의 부호화 및 복호화는 암호화 기술로 널리 알려져 있다.
데이터 암호화 표준(Data Encryption Standard : DES)은 여러 나라들과 ANSI(American National Standards Institute)에서 표준으로 채용된 블록단위 암호화 프로토콜이다. 이외에도 암호화 프로토콜에는 3-DES 및 AES 등이 있다. 블록단위 암호화 프로토콜에는 여러가지 동작 모드들 즉, ECB(Electronic Codebook), CBC(Cipher Block Chaining), OFB(Output Feedback), 및 CFB(Cipher Feedback) 등을 정의하고 있다. 최근에는 카운터(counter) 모드 및 OCB(Offset Codebook) 모드 등도 제안되었다.
이와 같이 다양한 동작 모드들은 개별적인 하드웨어로 구현될 수 있다. 그러나, 다양한 동작 모드들을 하나의 칩으로 구현하기 위해서는 많은 수의 게이트들이 필요하다.
따라서 본 발명의 목적은 다수의 동작 모드들을 지원하는 암호화 장치를 제공하는데 있다.
본 발명의 다른 목적은 간단한 회로 구성을 가지면서 다수의 동작 모드들을 지원하는 암호화 장치를 제공하는데 있다.
본 발명의 또다른 목적은 다수의 동작 모드들을 지원하는 통신 시스템을 제공하는데 있다.
(구성)
상술한 바와 같은 목적을 달성하기 위한 본 발명의 특징에 의하면, 메모리에 저장된 데이터를 암호화하기 위한 암호화 장치는: 외부로부터 제공되는 암호화 정 보에 응답해서 제어 신호들을 생성하는 제어 유닛과, 상기 메모리로부터 상기 데이터를 독출하는 메모리 컨트롤러와, 상기 메모리 컨트롤러에 의해서 독출된 데이터를 저장하기 위한 입력 버퍼와, 상기 입력 버퍼에 저장된 데이터 블록을 암호화하기 위한 암호화 유닛 그리고 상기 암호화 유닛에 의해 암호화된 데이터를 저장하기 위한 출력 버퍼를 포함한다. 상기 메모리 컨트롤러는 상기 출력 버퍼에 저장된 상기 암호화된 데이터를 상기 메모리에 기입하고, 상기 메모리 컨트롤러, 상기 입력 버퍼, 상기 암호화 유닛 및 상기 출력 버퍼는 상기 제어 신호들에 응답해서 동작한다.
바람직한 실시예에 있어서, 상기 제어 유닛은, 상기 암호화 정보에 응답해서 초기 벡터 및 동작 모드를 나타내는 동작 모드 신호를 생성한다.
이 실시예에 있어서, 상기 동작 모드는, ECB(Electronic Codebook) 모드, CBC(Cipher Block Chaining) 모드, CBC-MAC(CBC-Message Anthetication Code) 모드 또는 CNT(Counter) 모드 중 어느 하나이다.
이 실시예에 있어서, 상기 암호화 유닛은, 상기 입력 버퍼로부터 제공된 데이터를 저장하기 위한 데이터 입력 레지스터와, 상기 데이터 입력 레지스터에 저장된 데이터를 암호화하는 암호화기 그리고 상기 암호화기에 의해서 암호화된 데이터를 저장하기 위한 데이터 출력 레지스터를 포함한다.
이 실시예에 있어서, 상기 암호화 유닛은 상기 ECB 모드로 동작한다.
바람직한 실시예에 있어서, 상기 암호화 유닛은, 상기 제어 유닛으로부터 제공된 초기 벡터를 저장하기 위한 초기 벡터 레지스터와, 상기 초기 벡터 레지스터 에 저장된 상기 초기 벡터와 상기 데이터 입력 레지스터에 저장된 데이터를 논리 연산하는 제 1 논리 연산기를 더 포함한다.
이 실시예에 있어서, 상기 암호화 유닛은 상기 CBC 또는 CBC-MAC 모드 중 어느 하나로 동작한다.
이 실시예에 있어서, 상기 암호화 유닛이 상기 CBC-MAC 모드로 동작할 때, 상기 메모리 컨트롤러는 상기 출력 버퍼에 저장된 암호화된 데이터를 상기 메모리에 기입하지 않는다.
바람직한 실시예에 있어서, 상기 암호화 유닛은, 상기 제어 유닛으로부터 제공된 초기 벡터를 저장하기 위한 초기 벡터 레지스터와, 상기 초기 벡터 레지스터에 저장된 데이터에 미리 설정된 값을 더해서 상기 초기 벡터 레지스터에 다시 저장하는 가산기와, 상기 초기 벡터 레지스터에 저장된 데이터를 암호화하는 암호화기와, 상기 입력 버퍼로부터 제공된 데이터를 저장하기 위한 데이터 입력 레지스터와, 상기 암호화기에 의해서 암호화된 데이터와 상기 데이터 입력 레지스터에 저장된 데이터를 논리 연산하기 위한 제 2 논리 연산기 그리고 상기 제 2 논리 연산기의 출력을 저장하기 위한 데이터 출력 레지스터를 포함한다.
이 실시예에 있어서, 상기 암호화 유닛은 상기 CNT 모드로 동작한다.
바람직한 실시예에 있어서, 상기 암호화 유닛은, 상기 제어 유닛으로부터의 초기 벡터를 저장하는 초기 벡터 레지스터와, 상기 입력 버퍼로부터의 상기 데이터를 저장하는 데이터 입력 레지스터와, 입력 데이터를 암호화하는 암호화기와, 상기 출력 버퍼로 제공될 데이터를 저장하는 데이터 출력 레지스터와, 가산기와, 상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터, 상기 초기 벡터 레지스터에 저장된 데이터 및 상기 데이터 입력 레지스터에 저장된 데이터를 논리 연산한 결과 데이터, 또는 상기 데이터 입력 레지스터에 저장된 데이터 가운데 하나를 상기 암호화기의 입력 데이터로서 제공하고, 상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터를 상기 가산기로 전달하는 제 1 선택 회로 그리고 상기 동작 모드 신호에 응답해서, 상기 데이터 입력 레지스터에 저장된 데이터 및 상기 블록 암호화기에 의해서 암호화된 데이터를 논리 연산한 결과 데이터 또는 상기 블록 암호화기에 의해서 암호화된 데이터를 상기 데이터 출력 레지스터로 전달하고, 상기 동작 모드 신호에 응답해서, 상기 암호화기에 의해서 암호화된 데이터를 상기 초기 벡터 레지스터로 전달하는 제 2 선택 회로를 포함한다. 상기 가산기는 상기 제 1 선택 회로로부터 제공된 데이터에 미리 설정된 값을 더해서 상기 초기 벡터 레지스터에 저장한다.
이 실시예에 있어서, 상기 제 1 선택 회로는, 제 1 멀티플렉서와, 제 1 논리 연산기와, 상기 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터를 상기 가산기와 상기 제 1 멀티플렉서로 또는 상기 제 1 논리 연산기로 전달하는 제 2 멀티플렉서 그리고 상기 모드 신호에 응답해서, 상기 데이터 입력 레지스터에 저장된 데이터를 상기 제 1 논리 연산기 또는 상기 제 1 멀티플렉서로 전달하는 제 3 멀티플렉서를 포함한다. 상기 제 1 논리 연산기는 상기 제 2 및 제 3 멀티플렉서들로부터의 출력들을 받아들여 논리 연산하고, 상기 제 1 멀티플렉서는 상기 모드 신호에 응답해서, 상기 제 2 멀티플렉서, 상기 제 1 논리 연산기 또는 상기 제 3 멀티플렉서의 출력을 상기 블록 암호화기로 전달한다. 상기 제 2 선택 회로는, 제 4 멀티플렉서, 제 2 논리 연산기, 그리고 상기 모드 신호에 응답해서, 상기 암호화기의 출력을 상기 제 2 논리 연산기 또는 상기 제 4 멀티플렉서 또는/그리고 상기 초기 벡터 레지스터로 전달하는 제 5 멀티플렉서를 포함한다. 상기 제 2 논리 연산기는 상기 제 3 및 제 5 멀티플렉서들의 출력들을 받아들여서 논리 연산하고, 상기 제 4 멀티플렉서는 상기 제 2 논리 연산기 또는 상기 제 5 멀티플렉서의 출력을 상기 데이터 출력 데이터로 전달한다.
바람직한 실시예에 있어서, 상기 제어 유닛은, 상기 입력 버퍼에 저장된 데이터는 블록 단위로 상기 암호화 유닛으로 제공되도록 제어한다.
이 실시예에 있어서, 상기 제어 유닛은, 상기 입력 버퍼 저장된 마지막 데이터가 미리 설정된 블록 크기보다 작을 때 제로-패딩(zero-padding)을 수행한다.
바람직한 실시예에 있어서, 상기 입력 버퍼는 FIFO(First-In Fisrt-Out) 버퍼이고, 적어도 2 개의 데이터 블록들을 저장한다.
바람직한 실시예에 있어서, 상기 출력 버퍼는 FIFO(First-In Fisrt-Out) 버퍼이고, 적어도 2 개의 암호화된 데이터 블록들을 저장한다.
바람직한 실시예에 있어서, 상기 메모리 컨트롤러는, DMA(Direct Memory Access) 컨트롤러이다.
본 발명의 다른 특징에 의하면, 통신 시스템은: 메모리와, 상기 메모리에 저장된 데이터를 암호화하기 위한 암호화 장치 그리고 상기 암호화 장치의 동작을 제어하는 중앙 처리 장치를 포함한다. 상기 암호화 장치는, 상기 중앙 처리 장치로 부터 제공되는 암호화 정보에 응답해서 제어 신호들을 생성하는 제어 유닛과, 상기 메모리로부터 상기 데이터를 독출하는 메모리 컨트롤러와, 상기 메모리 컨트롤러에 의해서 독출된 데이터를 저장하기 위한 입력 버퍼와, 상기 입력 버퍼에 저장된 데이터 블록을 암호화하기 위한 암호화 유닛 그리고 상기 암호화 유닛에 의해 암호화된 데이터를 저장하기 위한 출력 버퍼를 포함한다. 상기 메모리 컨트롤러는 상기 출력 버퍼에 저장된 상기 암호화된 데이터를 상기 메모리에 기입하고, 상기 메모리 컨트롤러, 상기 입력 버퍼, 상기 암호화 유닛 및 상기 출력 버퍼는 상기 제어 신호들에 응답해서 동작한다.
(실시예)
이하 본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다.
도 1은 본 발명의 바람직한 실시예에 따른 암호화 장치를 구비한 통신 시스템을 보여주는 도면이다. 암호화 장치를 구비한 통신 시스템에는 데스크 탑 컴퓨터, 휴대용 컴퓨터, PDA 및 핸드폰 등이 있다. 도 1을 참조하면, 통신 시스템은, CPU(10), 메모리(20), 암호화 장치(30), 중재기(40) 그리고 시스템 버스(50)를 포함한다. 메모리(20)는 암호화 프로그램을 저장하고 있으며, 플레인텍스트와 싸이퍼텍스트를 저장한다. CPU(10)는 메모리(20)에 저장된 암호화 프로그램에 따라서 암호화 장치(30)가 동작하도록 제어한다. 중재기(40)는 시스템 버스(50)에 여러 개의 DMA 마스터들이 연결되어 있을 때, 버스(50)를 사용할 수 있는 권한을 특정 DMA 마스터에게 부여한다. 도 1에 도시된 통신 시스템에서는 CPU(10)와 암호화 유 닛(30)이 DMA 마스터로서 기능하기 때문에 중재기(40)가 필요하다.
도 2는 도 1에 도시된 암호화 장치(30)의 상세한 구성을 보여주는 블록도이다. 도 2를 참조하면, 암호화 장치(30)는 제어 유닛(31), DMA 컨트롤러(32), 입력 버퍼(33), 출력 버퍼(34) 그리고 블록 암호화 유닛(block cipher unit)(35)을 포함한다.
제어 유닛(31)은 CPU(10)로부터 제공되는 암호화 정보 즉, 소스 어드레스(Source Address : SA), 목적 어드레스(Destination Address : DA), 데이터 크기(data size : D_SIZE), 블록 크기(block size : B_SIZE), 키(key : K), 키 사이즈(key size), 방향(direction)(암호화(encryption) 또는 복호화(decryption)), 초기 벡터(Initialization Vector) 및 동작 모드가 입력되면, 암호화 장치(30) 내의 구성 요소들을 제어한다. DMA 컨트롤러(32)는 제어 유닛(31)의 제어에 응답해서, 메모리(20)의 소스 어드레스(SA)에 저장된 플레인텍스트를 독출해서 입력 버퍼(33)에 저장하고 그리고 출력 버퍼(34)에 저장된 싸이퍼텍스트를 메모리(20)의 목표 어드레스(DA)에 저장한다. 입력 버퍼(33)에 저장된 플레인텍스트는 블록 단위로 블록 암호화 유닛(35)으로 전달된다. 예컨대, 블록 암호화 유닛(35)이 128 비트 AES로 구성되는 경우, 입력 버퍼(33)로부터 블록 암호화 유닛(35)으로 전달되는 블록의 크기는 128 비트이다. 출력 버퍼(34)는 블록 암호화 유닛(35)으로부터의 싸이퍼텍스트 블록을 저장하고, 제어 유닛(31)의 제어에 따라서 저장된 싸이퍼텍스트를 DMA 컨트롤러(32)로 전달한다. 입력 버퍼(33) 및 출력 버퍼(34)는 각각 FIFO(First-In First-Out) 버퍼로 구성되고, 크기는 블록 암호 화 유닛(35)에서 처리하는 블록의 크기의 2배이다. 그러므로, 입력 버퍼(33) 및 출력 버퍼(34)는 2 개의 블록들을 각각 저장할 수 있다. 예컨대, 블록 암호화 유닛(35)이 한 번에 처리하는 플레인텍스트 블록의 크기가 128 비트(bit)이면, 입력 버퍼(33) 및 출력 버퍼(34)의 크기는 각각 256 비트이다. 이 실시예에서, 입력 버퍼(33) 및 출력 버퍼(34)는 각각 2 개의 블록들을 저장할 수 있는 것으로 설명하였으나, 입력 버퍼(33) 및 출력 버퍼(34)의 크기는 다양하게 변경될 수 있다. 블록 암호화 유닛(35)은 예컨대, AES(Advanced Encryption Standard) 블록 암호화기를 포함한다. 블록 암호화 유닛(35)의 상세한 회로 구성 및 동작은 이하 상세히 설명된다.
도 3 내지 도 5는 도 2에 도시된 블록 암호화 유닛(35)의 동작 모드에 따른 회로 구성을 보여주는 도면들이다. 먼저, 도 3은 도 2에 도시된 블록 암호화 유닛(35)이 ECB(Electronic Codebook) 모드로 동작하기 위해 필요한 회로 구성들을 보여주고 있다. 도 3을 참조하면, ECB 모드의 블록 암호화 유닛(35a)은 데이터 입력 레지스터(110), 데이터 출력 레지스터(120) 그리고 블록 암호화기(130)를 포함한다. 도 2에 도시된 입력 버퍼(33)로부터의 플레인텍스트 블록은 데이터 입력 레지스터(110)를 통하여 블록 암호화기(130)로 입력된다. 블록 암호화기(130)는 제어 유닛(31)으로부터 주어지는 키(K)에 따라서 암호화를 수행하고, 싸이퍼텍스트를 데이터 출력 레지스터(120)로 출력한다. 데이터 출력 레지스터(120)에 저장된 데이터는 도 2에 도시된 출력 버퍼(34)로 출력된다.
도 4는 도 2에 도시된 블록 암호화 유닛(35)이 CBC(Cipher Block Chaining) 모드 또는 CBC-MAC(CBC-Message Anthetication Code) 모드로 동작하기 위해 필요한 회로 구성들을 보여주고 있다.
도 4를 참조하면, 블록 암호화 유닛(35b)은 초기값 레지스터(210), 데이터 입력 레지스터(220), 데이터 출력 레지스터(230), 익스클루시브-오아 연산기(240) 그리고 블록 암호화기(250)를 포함한다. 데이터 입력 레지스터(220)를 통하여 도 2에 도시된 입력 버퍼(33)로부터의 플레인텍스트 블록과 초기값 레지스터(210)에 설정된 초기 벡터(initialization vector) 데이터는 익스클루시브-오아 연산기(240)에서 익스클루시브-오아 연산된다. 초기값 레지스터(210)에 설정되는 초기 벡터 데이터는 제어 유닛(31)으로부터 제공된다. 익스클루시브-오아 연산기(240)의 연산 결과는 블록 암호화기(250)로 전달된다. 블록 암호화기(250)는 제어 유닛(31)으로부터 제공된 키(K)에 따라서 익스클루시브-오아 연산기(240)의 연산 결과를 암호화한다. 블록 암호화기(250)로부터의 싸이퍼텍스트는 데이터 출력 레지스터(230)와 초기값 레지스터(210)에 저장된다. 데이터 출력 레지스터(230)에 저장된 데이터는, CBC 모드일 때 도 2의 출력 버퍼(34)로 출력되나, CBC-MAC 모드일 때 출력 버퍼(34)로 출력되지 않는다. CMC-MAC 모드에서는, 메모리(20)에 저장된 플레인텍스트들이 모두 암호화되고 나서 초기값 레지스터(210)에 저장된 최종 데이터만이 출력 버퍼(34)로 출력된다.
도 5는 도 2에 도시된 블록 암호화 유닛(35)이 CNT(Counter) 모드로 동작하기 위해 필요한 회로 구성들을 보여주고 있다. 도 5를 참조하면, 블록 암호화 유닛(35c)은, 레지스터(310), 데이터 입력 레지스터(320), 데이터 출력 레지스터(330), 가산기(340), 블록 암호화기(250) 그리고 익스클루시브-오아 연산기(350)를 포함한다.
레지스터(310)에는 제어 유닛(31)으로부터 제공된 초기 데이터가 저장된다. 가산기(340)는 레지스터(310)에 저장된 데이터에 1을 더한다. 가산기(340)의 출력은 다시 레지스터(310)에 저장된다. 블록 암호화기(350)는 제어 유닛(31)으로부터 제공된 키(K)에 따라서 레지스터(310)에 저장된 데이터를 암호화한다. 데이터 입력 레지스터(320)는 도 2에 도시된 입력 버퍼(33)로부터의 플레인텍스트 블록을 저장한다. 익스클루시브-오아 연산기(350)는 블록 암호화기(350)로부터의 출력과 데이터 입력 레지스터(320)에 저장된 플레인텍스트를 익스클루시브-오아 연산하고 그 결과를 데이터 출력 레지스터(330)에 저장한다. 데이터 출력 레지스터(330)에 저장된 데이터는 싸이퍼텍스트로서, 도 2의 출력 버퍼(34)로 출력된다.
도 3 내지 도 5에 도시된 바와 같이, 블록 암호화 유닛(35)은 암호화 모드들에 따라서 조금씩 다른 회로 구성을 필요로 한다. 그러나, 각각의 모드를 위한 회로들을 개별적으로 구성한다면 회로 면적이 커질 것이다. 본 발명에서는 간단한 회로 구성을 가지면서도 앞서 설명한 암호화 모드들에서 모두 동작될 수 있는 블록 암호화 유닛을 제공한다. 도 6은 본 발명의 바람직한 실시예에 따른 블록 암호화 유닛(35)을 보여주고 있다.
도 6을 참조하면, 블록 암호화 유닛(35)은 레지스터(410), 데이터 입력 레지스터(420), 데이터 출력 레지스터(430), 가산기(440), 멀티플렉서들(450-454), 익스클루시브-오아 연산기들(461, 462) 그리고 블록 암호화기(470)를 포함한다. WLAN에 본 발명이 적용되는 경우, 도 6에 도시된 블록 암호화기(470)는 AES(Advanced Encryption Standard) 블록 암호화기로 구성되나 다른 응용 분양에서는 DES(Data Encryption Standard) 또는 3-DES 등 다른 블록 암호화기로 구성될 수 있다.
레지스터(410)는 CBC, CBC-MAC 및 CNT 모드에서 사용되며, 도 2의 제어 유닛(31)에 의해 초기값이 설정된다. 데이터 입력 레지스터(420)는 도 2의 입력 버퍼(33)로부터 입력되는 플레인텍스트 블록을 저장한다. 데이터 출력 레지스터(430)는 멀티플렉서(452)로부터 출력되는 싸이퍼텍스트를 저장한다. 멀티플렉서들(450-454)은 제어 유닛(31)으로부터의 모드 신호(MD)에 응답해서 각각 동작한다. 모드 신호(MD)는 블록 암호화 유닛(35)의 동작 모드를 나타내는 신호로서, 다수의 비트들로 구성된다. 이 실시예에서, 블록 암호화 유닛(35)은 CBC, CBC-MAC 또는 CNT 모드로 동작할 수 있으므로, 모드 신호(MD)는 2비트이다. 예컨대, 모드 신호(MD)가 '00'이면 ECB 모드, '01'이면 CBC 모드, '10'이면 CBC-MAC 모드 그리고 '11'이면 CNT 모드를 나타낸다. 도 6에서, 굵은 점선은 CNT 모드에서 데이터 이동 경로를 나타내고, 굵은 실선은 CBC 또는 CBC-MAC 모드에서 데이터 이동 경로 그리고 가는 실선은 ECB 모드에서 데이터 이동 경로를 나타낸다. 그리고 가는 실선은 모든 모드들에서 데이터 이동 경로를 나타낸다.
멀티플렉서(450)는 모드 신호(MD)가 CNT 모드를 나타낼 때 레지스터(410)에 저장된 데이터를 가산기(440)와 멀티플렉서(453)로 전달하고, 모드 신호(MD)가 CBC 모드 또는 CBC-MAC 모드를 나타낼 때 레지스터(410)에 저장된 데이터를 익스클루시 브-오아 연산기(461)로 전달한다. 멀티플렉서(451)는 모드 신호(MD)가 CBC 모드 또는 CBC-MAC 모드를 나타낼 때, 레지스터(420)에 저장된 플레인텍스트 블록을 익스클루시브-오아 연산기(461)로 전달하고, 모드 신호(MD)가 ECB 모드를 나타낼 때 레지스터(420)에 저장된 플레인텍스트 블록을 멀티플렉서(453)로 전달하고, 그리고 모드 신호(MD)가 CNT 모드를 나타낼 때 레지스터(420)에 저장된 플레인텍스트 블록을 익스클루시브-오아 연산기(461)로 전달한다. 멀티플렉서(453)는 모드 신호(MD)에 응답해서 멀티플렉서들(450, 512) 또는 익스클루시브-오아 연산기(461)의 출력 가운데 하나를 블록 암호화기(470)로 전달한다. 즉, 멀티플렉서(453)는, 모드 신호(MD)가 CNT 모드를 나타낼 때 멀티플렉서(450)의 출력을, 모드 신호(MD)가 CBC 또는 CBC-MAC 모드를 나타낼 때 익스클루스브-오아 연산기(461)의 출력을, 그리고 모드 신호(MD)가 ECB 모드를 나타낼 때 멀티플렉서(451)의 출력을 블록 암호화기(470)로 전달한다.
멀티플렉서(454)는 모드 신호(MD)에 응답해서 블록 암호화기(470)로부터 출력되는 싸이퍼텍스트를 익스클루시브-오아 연산기(462), 멀티플렉서(452) 또는/그리고 레지스터(410)로 전달한다. 즉, 멀티플렉서(454)는, 모드 신호(MD)가 CNT 모드를 나타낼 때 블록 암호화기(470)로부터의 싸이퍼텍스트를 익스클루시브-오아 연산기(462)로, 모드 신호(MD)가 ECB 모드를 나타낼 때 블록 암호화기(470)로부터의 싸이퍼텍스트를 멀티플렉서(452)로 그리고 모드 신호(MD)가 CBC 및 CBC-MAC 모드를 나타낼 때 블록 암호화기(470)로부터의 싸이퍼텍스트를 멀티플렉서(452) 및 레지스터(410)로 전달한다. 멀티플렉서(452)는 모드 신호(MD)가 CNT 모드를 나타낼 때 익스클루시브-오아 연산기(462)로부터의 연산 결과를 그리고 ECB, CBC 또는 CBC-MAC 모드일 때 멀티플렉서(454)의 출력을 데이터 출력 레지스터(430)로 전달한다.
상술한 바와 같이 본 발명의 블록 암호화 유닛(35)은, 레지스터들(410, 420, 430), 가산기(440), 멀티플렉서들(451-454), 익스클루시브-오아 연산기들(461, 462) 그리고 블록 암호화기(470)를 포함하여 ECB, CBC, CBC-MAC 및 CNT 모드를 모두 수행할 수 있다.
도 7은 도 1에 도시된 암호화 장치(30)와 메모리(20) 사이의 데이터 송수신을 예시적으로 보여주고 있다. 암호화 장치(30)는 CPU(10)로부터 제공된 소스 어드레스(SA), 목표 어드레스(DA) 및 데이터 크기(D_SIZE) 등에 따라서 메모리(20)를 액세스한다. 도 7에 도시된 바와 같이, 암호화 장치(30)는 메모리(20)의 소스 어드레스(SA)에 저장된 플레인텍스트(plaintext)를 독출해서 암호화를 수행한다. 그리고, 암호화 장치(30)는 암호화된 싸이퍼텍스트(ciphertext)를 메모리(20)의 목표 어드레스(DA)에 저장한다. 암호화 장치(30)는 제 0 독출 단계(R0)에서 독출된 플레인텍스트(PT0)에 대한 암호화가 완료되면 제 0 기입 단계(W0)에서 싸이퍼텍스트(CT0)를 메모리(20)에 기입한다. 이와 같은 방법으로, 나머지 독출 단계들(R1, R2 및 R3)과 나머지 기입 단계들(W1, W2 및 W3)이 순차적으로 수행된다. 그러나, 암호화 장치(30)가 제 0 독출 단계(R0)를 수행한 후에 제 0 기입 단계(W0)를 수행하고, 다시 제 1 독출 단계(R1)를 수행하는 것은 암호화 장치(30)의 성능 저하를 유발한다. 왜냐하면, 암호화 장치(30)가 메모리(20)에 싸이퍼텍스트를 기입하는 동안 암호화 장치(30) 내의 블록 암호화 유닛(35)은 어떠한 동작도 안하고 쉬게 되기 때문이다. 본 발명에서는 이러한 문제를 해결하기 위하여 앞서 설명한 바와 같이, 입력 버퍼(33)와 출력 버퍼(34)(도 2 참조)를 각각 블록 사이즈의 2 배 크기로 구성한다. 그러므로, R0, W0, R1 및 W1과 같이 독출 단계와 기입 단계를 순차적으로 하지 않고, 독출 단계와 기입 단계를 다양하게 변형할 수 있다. 독출 및 기입 방법에 관해서 이하 상세히 설명한다.
앞서 설명한 바와 같이, 암호화 장치(30)가 최대의 성능을 발휘할 수 있도록 블록 암호화 유닛(35)의 쉬는 시간(idle time)을 최소화해야만 한다. 그러기 위해서는 입력 데이터의 결핍(starvation) 상태를 방지하는 것이 중요하다. 본 발명에서는 입력 버퍼(33)의 크기가 블록 암호화 유닛(35)으로 입력되는 블록의 크기의 2 배 즉, 입력 버퍼(33)가 2 개의 블록들을 저장한다. 그러므로, 블록 암호화 유닛(35)이 암호화 프로세스를 수행하는 동안 입력 버퍼(33)에는 새로운 데이터가 기입될 수 있다. 또한, 블록 암호화 유닛(35)으로부터 출력된 싸이퍼텍스트가 출력 버퍼(34)에 임시 저장됨으로서 메모리(20)에 싸이퍼텍스트가 기입되기 전이라도 블록 암호화 유닛(35)은 다음 플레인텍스트 블록에 대한 암호화 프로세스를 수행할 수 있게 되는 것이다.
한편, DMA 컨트롤러(32)는 메모리(20)로부터 플레인텍스트를 독출하는 동작과 싸이퍼텍스트를 메모리(20)에 기입하는 동작을 동시에 수행할 수 없다. 그러므로, 제어 유닛(31)은 미리 설정된 우선 순위에 따라서 DMA 컨트롤러(32)가 독출 및 기입 프로세스를 수행하도록 제어한다. 다음 표 1은 입력 버퍼(33)와 출력 버퍼(34)에 저장된 블록의 개수에 따른 DMA 컨트롤러(32)의 동작 우선 순위를 보여 주고 있다.
Figure 112003002638747-pat00001
표 1의 기본 개념은 입력 버퍼(33)에 빈 공간이 있으면 독출 동작에 우선 순위를 주고, 출력 버퍼(34)에 적어도 하나의 블록이 저장되어 있으면 기입 동작에 우선 순위를 주는 것이다. 표 1에서, 입력 버퍼(33)가 완전히 비어 있고, 출력 버퍼(34)가 완전히 채워져 있을 때 블록 암호화 유닛(35)이 동작하지 않고 있다면, 입력 버퍼(33)에 플레인텍스트 블록을 넣는 독출 동작을 수행하여 블록 암호화 유닛(35)이 동작할 수 있도록 제어한 후, 출력 버퍼(34)에 저장된 싸이퍼텍스트를 메모리(20)에 기입하는 것이 바람직하다. 그러나, 입력 버퍼(33)가 완전히 비어 있고, 출력 버퍼(34)가 완전히 채워져 있을 때 블록 암호화 유닛(35)이 동작하고 있다면 독출 또는 기입 동작 중 어느 것을 먼저 수행하더라도 무방하다. 그러나, 동 작의 기준은 필요하므로, 이러한 경우에는 DMA 컨트롤러(32)가 독출 동작을 수행하는 것으로 설정한다. 표 1의 NOP(no operation)는 DMA 컨트롤러(32)가 어떠한 동작도 수행하지 않음을 나타낸다.
이와 같이, 입력 버퍼(33)와 출력 버퍼(34)가 각각 적어도 2 개의 블록들을 저장할 수 있도록 구성함으로서 시스템 버스(50)가 동작(BUSY) 상태에 있더라도 암호화 유닛(35)은 버퍼들(33, 34)을 이용하여 블록 암호화 프로세스를 수행할 수 있다.
도 8은 도 2에 도시된 DMA 컨트롤러의 FSM(Finite State Machine)을 보여준다. 도 8에서, 독출 제어 신호(MORE_DATAR)는, 메모리(20)의 소스 어드레스(SA)로부터 독출해서 암호화 프로세스를 수행해야 할 전체 데이터의 크기(D_SIZE)가 현재까지 DMA 컨트롤러(32)에 의해서 메모리(20)로부터 독출된 데이터의 크기보다 클 때 1, 그리고 작거나 같을 때 0이다. 기입 제어 신호(MORE_DATAW)는, 암호화 프로세스가 수행된 후 메모리(20)의 목표 어드레스(DA)에 기입될 전체 데이터의 크기(DATA_SIZE)가 현재까지 DMA 컨트롤러에 의해서 기입된 데이터의 크기보다 클 때 1, 그리고 작거나 같을 때 0이다.
제어 유닛(31)은 다음 수학식 1을 만족할 때 DMA 컨트롤러(32)가 휴지 상태(510)에서 독출 상태(520)로 천이하도록 제어한다.
MORE_DATAR && (RBUFCNT != 2) && (RBUFCNT !=1 ∥ WBUFCNT !=2) = 1
DMA 컨트롤러(32)는 메모리(20)로부터 데이터를 독출하는 동작(DMA_READ)이 완료되면 독출 완료 신호(DMA_READ_DONE)를 활성화하고, 독출 상태(520)에서 휴지 상태(510)로 천이한다. 이 때, 독출 카운트(DMA_READ_CNT) 값이 1만큼 증가한다.
제어 유닛(31)은 다음 수학식 2를 만족할 때 DMA 컨트롤러(32)가 휴지 상태(510)에서 독출 상태(530)로 천이한다.
MORE_DATAW && ((RBUFCNT=2)∥(RBUFCNT=1 && WBUFCNT=2)) && !CBC-MAC = 1
DMA 컨트롤러(32)는 메모리(20)에 데이터를 기입하는 동작(DMA_WRITE)이 완료되면 기입 완료 신호(DMA_WRITE_DONE)를 활성화하고, 기입 상태(530)에서 휴지 상태(510)로 천이한다. 이 때, 기입 카운트(DMA_WRITE_CNT) 값이 1만큼 증가한다. 독출 완료 신호(DMA_READ_DONE)와 기입 완료 신호(DMA_WRITE_DONE)는 제어 유닛(31)으로 제공되며, 독출 카운트(DMA_READ_CNT)와 기입 카운트(DMA_WRITE_CNT)는 제어 유닛(31) 내에 구성된 카운터들(미 도시됨)의 값이다.
메모리(20)로부터 독출될 데이터 크기(DATA_SIZE)와 독출 카운트(DMA_READ_CNT)의 관계에 따른 독출 제어 신호(MORE_DATAR)의 상태 그리고 메모리(20)에 기입될 데이터 크기(DATA_SIZE)와 기입 카운트(DMA_WRITE_CNT)의 관계에 따른 기입 제어 신호(MORE_DATAW)의 상태가 다음 표 2 및 표 3에 각각 정리되어 있다.
Figure 112003002638747-pat00002
Figure 112003002638747-pat00003
도 9는 도 2에 도시된 입력 버퍼(33), 출력 버퍼(34) 그리고 블록 암호화 유닛(35)의 관계에 따른 FSM을 보여주고 있다. 도 9를 참조하면, 제어 유닛(31)은, 블록 암호화 유닛(35)에서 처리해야할 데이터가 남아있으면(즉, 독출 제어 신호(MORE_DATAR)가 1이면) 블록 암호화 유닛(35)을 휴지 상태(610)에서 블록 암호화 유닛(35) 체크 상태(620)로 천이시킨다. 블록 암호화 유닛(35)은 암호화 프로세스를 시작할 준비가 되었을 때 입력 준비 신호(INPUT_READY)를 1로 활성화하고, 현재 입력된 블록에 대한 암호화 프로세스가 종료되었을 때 종료 신호(OUTPUT_READY)를 1로 활성화한다.
체크 상태(620)에 놓인 블록 암호화 유닛(350)은, 입력 준비 신호(INPUT_READY)가 1이고 그리고 입력 버퍼(33)에 적어도 하나의 데이터가 있으면, 입력 버퍼(33)로부터 블록 암호화 유닛(35)으로 데이터를 전송하는 상태(640) 로 천이한다. 입력 버퍼(33)로부터 블록 암호화 유닛(35)으로 데이터 전송이 완료되면 블록 암호화 유닛(35)은 입력 완료 신호(INPUT_DONE)를 활성화하고, 다시 체크 상태(620)로 천이한다.
체크 상태(620)에 놓인 블록 암호화 유닛(350)은, 출력 준비 신호(OUTPUT_READY)가 1이고 그리고 출력 버퍼(33)가 꽉 차 있지 않으면, 블록 암호화 유닛(35)으로부터 출력 버퍼(34)로 데이터를 전송하는 상태(630)로 천이한다. 블록 암호화 유닛(35)으로부터 출력 버퍼(34)로 데이터 전송이 완료되면 블록 암호화 유닛(35)은 출력 완료 신호(OUTPUT_DONE)을 활성화하고, 다시 체크 상태(620)로 천이한다.
도 8 및 도 9에서, CBC_MAC 모드인 경우, 각 블록에 대한 암호 프로세스가 완료되었을 때 생성되는 싸이퍼텍스트는 불필요하기 때문에 메모리(20)에 기입할 필요가 없다. 그러므로, 암호화 장치(30)의 시스템 버스(50) 사용을 최소화하기 위하여 CBC-MAC 모드에서는 각 블록에 대한 싸이퍼텍스트를 메모리(20)에 기입하지 않는다. CBC-MAC 모드에서는 모든 블록들에 대한 암호화 프로세스가 종료되었을 때 레지스터(410)에 저장된 데이터를 메모리(20)의 목표 어드레스(DA)에 한 번 기입하기만 하면 된다.
도 10a 내지 도 10b는 데이터의 마지막에 '0'을 삽입하는 제로-패딩(zero-padding)을 예시적으로 보여주고 있다. 도 10a를 참조하면, 데이터 프레임이 n 개의 블록들로 구성되고, 1 블록의 크기는 L1일 때 마지막 n 번째 블록의 크기는 항상 L1이 아니다. 예컨대, n 번째 블록의 크기 L2가 L1보다 작으면 n 번째 블록의 크기가 L1이 되도록 데이터의 마지막에 '0'을 삽입하는 제로-패딩이 수행된다. 본 발명에서는 CPU(10)와 암호화 장치(20) 사이의 데이터 송수신을 최소화하기 위하여 암호화 장치(20) 내에서 제로-패딩을 수행한다. 즉, 제어 유닛(31)은 초기에 CPU(10)로부터 수신되는 데이터 사이즈가 블록 사이즈의 정수배가 아니면 DMA 컨트롤러(32)를 통해 입력 버퍼(33)로 입력된 마지막 블록에 제로-패딩을 수행한다. 도 10b에 도시된 바와 같이, 제어 유닛(31)은 입력 버퍼(33)에 저장된 n 번째 블록의 마지막에 '0'들을 삽입하여 n 번째 블록의 크기가 L1이 되도록 한다.
정리하면, CPU(10)와 암호화 장치(20) 사이에 송수신되는 데이터는 다음과 같다. 우선, CPU(10)는 제어 정보를 암호화 장치(30)의 제어 유닛(31)으로 전달한다. 제어 정보에는 소스 어드레스, 목표 어드레스, 데이터 사이즈, 키, 키 사이즈, 방향(암호화 또는 복호화), 초기 벡터 그리고 동작 모드가 있다.
기본적으로, 암호화될 데이터 즉, 플레인텍스트는 메모리(20)의 소스 어드레스에 저장되어 있어야 한다. 그리고 나서 CPU(10)가 제어 정보를 암호화 장치(30)에게 알려주면 암호화 장치(30)는 암호화 프로세스를 수행하고, 처리 결과인 싸이퍼텍스트를 목표 어드레스에 저장한다. 이와 같은 본 발명에 의하면, CPU(10)와 암호화 장치(30) 사이의 상호 접속이 최소화되어서 시스템의 성능 저하를 방지한다.
한편, 동작 모드에 따라서 CPU(10)와 암호화 장치(30) 사이에 송수신되는 제어 정보와 데이터가 다르다. ECB 모드에서, 플레인텍스트는 메모리(20)의 소스 어드레스에 저장되어 있어야 하며, 싸이퍼텍스트는 메모리(20)의 목표 어드레스에 저 장된다. ECB 모드에서 소스 어드레스와 목표 어드레스는 동일해도 무방하다. CPU(10)가 암호화 장치(30)로 제공해야 할 제어 정보는 소스 어드레스, 목표 어드레스, 키, 키 사이즈, 데이터 사이즈, 방향 그리고 동작 모드이다. ECB 모드에서는, 각 블럭에 대한 암호화 프로세스가 완료될 때마다 싸이퍼텍스트가 메모리(20)의 목표 어드레스에 저장되어야 한다.
CBC 모드는 ECB 모드와 유사하나, 제어 정보에 초기 벡터가 포함되어야 한다. CBC-MAC 모드에서는 각 블록에 대한 싸이퍼텍스트는 불필요하기 때문에 매 블럭마다 싸이퍼텍스트를 메모리(20)에 기입하지 않아도 된다. 다만, 모든 블록들에 대한 암호화 프로세스가 종료되고 나서 레지스터(410)에 저장된 데이터가 CPU(10)로 전송되어야 한다.
OCB(offset codebook) 모드는 CPU(10)의 연산을 많이 필요로 한다. 도 11은 OCB 모드의 암호화 프로세스를 그리고 도 12는 OCB 모드의 복호화 프로세스를 개념적으로 보여주고 있다. 본 발명의 암호화 장치(30)는 미리 작성된 코드북(codebook)과 오프셋(offset)에 따라서 각 블록의 싸이퍼텍스트를 생성한다. 도 11에서, 인출 번호 710 및 720으로 묶여진 부분은 CPU(10)에 의해 수행되고, 인출 번호 730, 740 및 750으로 묶여진 제 1 내지 제 3 스테이지들은 암호화 장치(30)에 의해 수행된다.
도 13은 도 1에 도시된 메모리(20)의 소스 어드레스들(SA0 - SAm+1)에 저장된 데이터 블록들(I0 - Im+1)과 목표 어드레스들(DA0 - DAm+1)에 저장된 데이터 블 록들(O0 - 0m+1)을 보여주고 있다.
도 11 및 도 13을 참조하면, 암호화 장치(30)는 OCB 모드동안 ECB 모드와 동일하게 동작한다. 제 1 스테이지(730)에서, 메모리(20)의 소스 어드레스(SA0)에 저장된 데이터 블록(I0)은 데이터 입력 레지스터(420)(도 6)에 저장된다. 블록 암호화기(470)는 데이터 입력 레지스터(420)에 저장된 데이터 블록(I0)에 대한 암호화 프로세스를 수행하고 그 결과를 데이터 출력 레지스터(450)에 저장한다. 데이터 출력 레지스터(450)에 저장된 데이터는 오프셋(Offset0)으로서 CPU(10)로 전달된다. CPU(10)는 암호화 장치(30)로부터 제공된 오프셋(Offset0)과 미리 설정된 코드북(Lntz(1) - Lntz(m))에 따라서 오프셋들(Offset1 - Offsetm)을 계산하고, 메모리(20)의 소정 영역에 저장된 플레인텍스트들(M1-Mm)과 계산된 오프셋들(Offset1 - Offsetm)을 익스클루시브-오아 연산하고, 연산 결과를 메모리(20)의 소스 어드레스들(SA1 - SAm+1)에 저장한다.
제 2 스테이지(740)에서, 암호화 장치(30)는 메모리(20)의 소스 어드레스들(SA1 - SAm+1)에 저장된 데이터 블록들을 순차적으로 독출해서 암호화 프로세스를 수행하고, 암호화된 데이터 블록들(O0 - Om+1)을 메모리(20)의 목표 어드레스들(DA1 - DAm+1)에 저장한다.
CPU(10)는 암호화 장치(30)의 제 2 스테이지(740)가 완료되면 목표 어드레스들(DA1 - DAm+1)에 저장된 데이터 블록들(O0 - Om+1) 그리고 오프셋들(Offset1 - Offsetm-1) 및 플레인텍스트(Mm)에 대한 익스클루시브-오아 연산을 수행하여 싸이퍼텍스트들(C1 - Cm)을 생성한다. 그리고, CPU(10)는 체크섬(Checksum)과 오프셋(Offsetm)에 대한 익스클루시브-오아 연산을 수행해서 소스 어드레스(SAm+1)에 저장한다.
제 3 스테이지에서, 암호화 장치(30)는 소스 어드레스(SAm+1)에 저장된 데이터 블록(Im+1)을 독출해서 암호화 프로세스를 수행하고, 암호화된 데이터 블록(Om+1)을 메모리(20)의 목표 어드레스(DAm+1)에 저장한다. CPU(10)는 메모리(20)의 목표 어드레스(DAm+1)에 저장된 데이터(Om+1)를 독출하고, 데이터(Om+1)의 일부를 MIC로서 취한다.
도 12를 참조하여, OCB 모드의 복호화 과정이 설명된다. 도 12에서, 인출 번호 810 및 820으로 묶여진 부분은 CPU(10)에 의해 수행되고, 인출 번호 830, 840, 850 및 860으로 묶여진 제 1 내지 제 4 스테이지들은 암호화 장치(30)에 의해 수행된다. OCB 모드의 복호화 과정은 도 11에 도시된 OCB 모드의 암호화 과정의 역순으로 진행되나, 암호화 장치(30)의 4 개의 스테이지들(830-860)을 통해서 복호화가 수행된다. 여기서, OCB 모드의 복호화 역시 암호화 장치(30)를 ECB 모드의 복호화로 설정한 후 수행된다.
예시적인 바람직한 실시예를 이용하여 본 발명을 설명하였지만, 본 발명의 범위는 개시된 실시예들에 한정되지 않는다는 것이 잘 이해될 것이다. 오히려, 본 발명의 범위에는 다양한 변형 예들 및 그 유사한 구성들이 모두 포함될 수 있도록 하려는 것이다. 따라서, 청구범위는 그러한 변형 예들 및 그 유사한 구성들 모두를 포함하는 것으로 가능한 폭넓게 해석되어야 한다.
이와 같은 본 발명에 의하면, 작고 간단한 소자들을 이용하여 ECB, CBC, CBC-MAC, 카운터 및 OCB 모드 등에서 동작할 수 있는 암호화 장치가 구현된다. 또한, CPU와 암호화 장치 간의 데이터 송수신을 최소화함으로써 통신 시스템의 성능을 향상시킨다. 한편, 암호화 장치 내에 구성되는 입력 버퍼 및 출력 버퍼가 각각 적어도 2 개의 블록들을 저장할 수 있도록 구성함으로써 암호화 장치의 성능을 극대화할 수 있다. 더욱이, 암호화 장치가 제로-패딩 기능을 지원함으로써 CPU가 처리해야할 작업을 최소화한다.

Claims (21)

  1. 삭제
  2. 삭제
  3. 초기 벡터를 저장하는 초기 벡터 레지스터와;
    입력 데이터를 저장하는 데이터 입력 레지스터와;
    상기 입력 데이터를 암호화하는 암호화기와;
    출력 데이터를 저장하는 데이터 출력 레지스터와;
    가산기와;
    동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터 및 상기 데이터 입력 레지스터에 저장된 상기 입력 데이터를 논리 연산한 결과 데이터, 또는 상기 데이터 입력 레지스터에 저장된 상기 입력 데이터 가운데 하나를 상기 암호화기의 입력 데이터로서 제공하고, 상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터를 상기 가산기로 전달하는 제 1 선택 회로; 그리고
    상기 동작 모드 신호에 응답해서, 상기 데이터 입력 레지스터에 저장된 상기 입력 데이터 및 상기 암호화기에 의해서 암호화된 데이터를 논리 연산한 결과 데이터 또는 상기 암호화기에 의해서 암호화된 데이터를 상기 데이터 출력 레지스터로 전달하고, 상기 동작 모드 신호에 응답해서, 상기 암호화기에 의해서 암호화된 데이터를 상기 초기 벡터 레지스터로 전달하는 제 2 선택 회로를 포함하되;
    상기 가산기는 상기 제 1 선택 회로로부터 제공된 데이터에 미리 설정된 값을 더해서 상기 초기 벡터 레지스터에 저장하고;
    상기 동작 모드는, ECB(Electronic Codebook) 모드, CBC(Cipher Block Chaining) 모드, CBC-MAC(CBC-Message Anthetication Code) 모드 또는 CNT(Counter) 모드 중 어느 하나인 것을 특징으로 하는 암호화 장치.
  4. 제 3 항에 있어서,
    상기 ECB 모드로 동작할 때,
    상기 암호화 유닛 내 상기 데이터 입력 레지스터, 상기 암호화기, 그리고 상기 데이터 출력 레지스터가 동작하는 것을 특징으로 하는 암호화 장치.
  5. 삭제
  6. 제 3 항에 있어서,
    상기 암호화 유닛은,
    상기 CBC 또는 CBC-MAC 모드 중 어느 하나로 동작할 때 상기 초기 벡터 레지스터에 저장된 상기 초기 벡터와 상기 데이터 입력 레지스터에 저장된 데이터를 논리 연산하는 제 1 논리 연산기를 더 포함하는 것을 특징으로 하는 암호화 장치.
  7. 삭제
  8. 제 6 항에 있어서,
    상기 암호화 유닛이 상기 CBC-MAC 모드로 동작할 때,
    상기 메모리 컨트롤러는 상기 출력 버퍼에 저장된 암호화된 데이터를 상기 메모리에 기입하지 않는 것을 특징으로 하는 암호화 장치.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 제 3 항에 있어서,
    상기 제 1 선택 회로는,
    제 1 멀티플렉서와;
    제 1 논리 연산기와;
    상기 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터를 상기 가산기와 상기 제 1 멀티플렉서로 또는 상기 제 1 논리 연산기로 전달하는 제 2 멀티플렉서; 그리고
    상기 모드 신호에 응답해서, 상기 데이터 입력 레지스터에 저장된 데이터를 상기 제 1 논리 연산기 또는 상기 제 1 멀티플렉서로 전달하는 제 3 멀티플렉서를 포함하되;
    상기 제 1 논리 연산기는 상기 제 2 및 제 3 멀티플렉서들로부터의 출력들을 받아들여 논리 연산하고;
    상기 제 1 멀티플렉서는 상기 모드 신호에 응답해서, 상기 제 2 멀티플렉서, 상기 제 1 논리 연산기 또는 상기 제 3 멀티플렉서의 출력을 상기 블록 암호화기로 전달하는 것을 특징으로 하는 암호화 장치.
  13. 제 12 항에 있어서,
    상기 제 2 선택 회로는,
    제 4 멀티플렉서와;
    제 2 논리 연산기; 그리고
    상기 모드 신호에 응답해서, 상기 암호화기의 출력을 상기 제 2 논리 연산기 또는 상기 제 4 멀티플렉서 또는/그리고 상기 초기 벡터 레지스터로 전달하는 제 5 멀티플렉서를 포함하되;
    싱기 제 2 논리 연산기는 상기 제 3 및 제 5 멀티플렉서들의 출력들을 받아들여서 논리 연산하고;
    상기 제 4 멀티플렉서는 상기 제 2 논리 연산기 또는 상기 제 5 멀티플렉서의 출력을 상기 데이터 출력 데이터로 전달하는 것을 특징으로 하는 암호화 장치.
  14. 메모리에 저장된 데이터를 암호화하기 위한 암호화 장치에 있어서:
    외부로부터 제공되는 암호화 정보에 응답해서 초기 벡터 및 동작 모드를 나타내는 동작 모드 신호와 제어 신호들을 생성하는 제어 유닛과;
    상기 메모리로부터 상기 데이터를 독출하는 메모리 컨트롤러와;
    상기 메모리 컨트롤러에 의해서 독출된 데이터를 저장하기 위한 입력 버퍼와;
    상기 입력 버퍼에 저장된 데이터 블록을 암호화하기 위한 암호화 유닛; 그리고
    상기 암호화 유닛에 의해 암호화된 데이터를 저장하기 위한 출력 버퍼를 포함하되;
    상기 메모리 컨트롤러는 상기 출력 버퍼에 저장된 상기 암호화된 데이터를 상기 메모리에 기입하고;
    상기 메모리 컨트롤러, 상기 입력 버퍼, 상기 암호화 유닛 및 상기 출력 버퍼는 상기 제어 신호들에 응답해서 동작하며;
    상기 암호화 유닛은,
    상기 제어 유닛으로부터의 초기 벡터를 저장하는 초기 벡터 레지스터와;
    상기 입력 버퍼로부터의 상기 데이터를 저장하는 데이터 입력 레지스터와;
    입력 데이터를 암호화하는 암호화기와;
    상기 출력 버퍼로 제공될 데이터를 저장하는 데이터 출력 레지스터와;
    가산기와;
    상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터 및 상기 데이터 입력 레지스터에 저장된 데이터를 논리 연산한 결과 데이터, 또는 상기 데이터 입력 레지스터에 저장된 데이터 가운데 하나를 상기 암호화기의 입력 데이터로서 제공하고, 상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터를 상기 가산기로 전달하는 제 1 선택 회로; 그리고
    상기 동작 모드 신호에 응답해서, 상기 데이터 입력 레지스터에 저장된 데이터 및 상기 블록 암호화기에 의해서 암호화된 데이터를 논리 연산한 결과 데이터 또는 상기 블록 암호화기에 의해서 암호화된 데이터를 상기 데이터 출력 레지스터로 전달하고, 상기 동작 모드 신호에 응답해서, 상기 암호화기에 의해서 암호화된 데이터를 상기 초기 벡터 레지스터로 전달하는 제 2 선택 회로를 포함하되;
    상기 가산기는 상기 제 1 선택 회로로부터 제공된 데이터에 미리 설정된 값을 더해서 상기 초기 벡터 레지스터에 저장하며;
    상기 제어 유닛은, 상기 입력 버퍼에 저장된 데이터가 블록 단위로 상기 암호화 유닛으로 제공되도록 제어하는 것을 특징으로 하는 암호화 장치.
  15. 제 14 항에 있어서,
    상기 제어 유닛은,
    상기 입력 버퍼 저장된 마지막 데이터가 미리 설정된 블록 크기보다 작을 때 제로-패딩(zero-padding)을 수행하는 것을 특징으로 하는 암호화 장치.
  16. 메모리에 저장된 데이터를 암호화하기 위한 암호화 장치에 있어서:
    외부로부터 제공되는 암호화 정보에 응답해서 초기 벡터 및 동작 모드를 나타내는 동작 모드 신호와 제어 신호들을 생성하는 제어 유닛과;
    상기 메모리로부터 상기 데이터를 독출하는 메모리 컨트롤러와;
    상기 메모리 컨트롤러에 의해서 독출된 데이터를 저장하기 위한 입력 버퍼와;
    상기 입력 버퍼에 저장된 데이터 블록을 암호화하기 위한 암호화 유닛; 그리고
    상기 암호화 유닛에 의해 암호화된 데이터를 저장하기 위한 출력 버퍼를 포함하되;
    상기 메모리 컨트롤러는 상기 출력 버퍼에 저장된 상기 암호화된 데이터를 상기 메모리에 기입하고;
    상기 메모리 컨트롤러, 상기 입력 버퍼, 상기 암호화 유닛 및 상기 출력 버퍼는 상기 제어 신호들에 응답해서 동작하며;
    상기 암호화 유닛은,
    상기 제어 유닛으로부터의 초기 벡터를 저장하는 초기 벡터 레지스터와;
    상기 입력 버퍼로부터의 상기 데이터를 저장하는 데이터 입력 레지스터와;
    입력 데이터를 암호화하는 암호화기와;
    상기 출력 버퍼로 제공될 데이터를 저장하는 데이터 출력 레지스터와;
    가산기와;
    상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터 및 상기 데이터 입력 레지스터에 저장된 데이터를 논리 연산한 결과 데이터, 또는 상기 데이터 입력 레지스터에 저장된 데이터 가운데 하나를 상기 암호화기의 입력 데이터로서 제공하고, 상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터를 상기 가산기로 전달하는 제 1 선택 회로; 그리고
    상기 동작 모드 신호에 응답해서, 상기 데이터 입력 레지스터에 저장된 데이터 및 상기 블록 암호화기에 의해서 암호화된 데이터를 논리 연산한 결과 데이터 또는 상기 블록 암호화기에 의해서 암호화된 데이터를 상기 데이터 출력 레지스터로 전달하고, 상기 동작 모드 신호에 응답해서, 상기 암호화기에 의해서 암호화된 데이터를 상기 초기 벡터 레지스터로 전달하는 제 2 선택 회로를 포함하되;
    상기 가산기는 상기 제 1 선택 회로로부터 제공된 데이터에 미리 설정된 값을 더해서 상기 초기 벡터 레지스터에 저장하고;
    상기 입력 버퍼는 FIFO(First-In Fisrt-Out) 버퍼인 것을 특징으로 하는 암호화 장치.
  17. 메모리에 저장된 데이터를 암호화하기 위한 암호화 장치에 있어서:
    외부로부터 제공되는 암호화 정보에 응답해서 초기 벡터 및 동작 모드를 나타내는 동작 모드 신호와 제어 신호들을 생성하는 제어 유닛과;
    상기 메모리로부터 상기 데이터를 독출하는 메모리 컨트롤러와;
    상기 메모리 컨트롤러에 의해서 독출된 데이터를 저장하기 위한 입력 버퍼와;
    상기 입력 버퍼에 저장된 데이터 블록을 암호화하기 위한 암호화 유닛; 그리고
    상기 암호화 유닛에 의해 암호화된 데이터를 저장하기 위한 출력 버퍼를 포함하되;
    상기 메모리 컨트롤러는 상기 출력 버퍼에 저장된 상기 암호화된 데이터를 상기 메모리에 기입하고;
    상기 메모리 컨트롤러, 상기 입력 버퍼, 상기 암호화 유닛 및 상기 출력 버퍼는 상기 제어 신호들에 응답해서 동작하며;
    상기 암호화 유닛은,
    상기 제어 유닛으로부터의 초기 벡터를 저장하는 초기 벡터 레지스터와;
    상기 입력 버퍼로부터의 상기 데이터를 저장하는 데이터 입력 레지스터와;
    입력 데이터를 암호화하는 암호화기와;
    상기 출력 버퍼로 제공될 데이터를 저장하는 데이터 출력 레지스터와;
    가산기와;
    상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터 및 상기 데이터 입력 레지스터에 저장된 데이터를 논리 연산한 결과 데이터, 또는 상기 데이터 입력 레지스터에 저장된 데이터 가운데 하나를 상기 암호화기의 입력 데이터로서 제공하고, 상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터를 상기 가산기로 전달하는 제 1 선택 회로; 그리고
    상기 동작 모드 신호에 응답해서, 상기 데이터 입력 레지스터에 저장된 데이터 및 상기 블록 암호화기에 의해서 암호화된 데이터를 논리 연산한 결과 데이터 또는 상기 블록 암호화기에 의해서 암호화된 데이터를 상기 데이터 출력 레지스터로 전달하고, 상기 동작 모드 신호에 응답해서, 상기 암호화기에 의해서 암호화된 데이터를 상기 초기 벡터 레지스터로 전달하는 제 2 선택 회로를 포함하되;
    상기 가산기는 상기 제 1 선택 회로로부터 제공된 데이터에 미리 설정된 값을 더해서 상기 초기 벡터 레지스터에 저장하며;
    상기 입력 버퍼는 적어도 2 개의 데이터 블록들을 저장하는 것을 특징으로 하는 암호화 장치.
  18. 메모리에 저장된 데이터를 암호화하기 위한 암호화 장치에 있어서:
    외부로부터 제공되는 암호화 정보에 응답해서 초기 벡터 및 동작 모드를 나타내는 동작 모드 신호와 제어 신호들을 생성하는 제어 유닛과;
    상기 메모리로부터 상기 데이터를 독출하는 메모리 컨트롤러와;
    상기 메모리 컨트롤러에 의해서 독출된 데이터를 저장하기 위한 입력 버퍼와;
    상기 입력 버퍼에 저장된 데이터 블록을 암호화하기 위한 암호화 유닛; 그리고
    상기 암호화 유닛에 의해 암호화된 데이터를 저장하기 위한 출력 버퍼를 포함하되;
    상기 메모리 컨트롤러는 상기 출력 버퍼에 저장된 상기 암호화된 데이터를 상기 메모리에 기입하고;
    상기 메모리 컨트롤러, 상기 입력 버퍼, 상기 암호화 유닛 및 상기 출력 버퍼는 상기 제어 신호들에 응답해서 동작하며;
    상기 암호화 유닛은,
    상기 제어 유닛으로부터의 초기 벡터를 저장하는 초기 벡터 레지스터와;
    상기 입력 버퍼로부터의 상기 데이터를 저장하는 데이터 입력 레지스터와;
    입력 데이터를 암호화하는 암호화기와;
    상기 출력 버퍼로 제공될 데이터를 저장하는 데이터 출력 레지스터와;
    가산기와;
    상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터 및 상기 데이터 입력 레지스터에 저장된 데이터를 논리 연산한 결과 데이터, 또는 상기 데이터 입력 레지스터에 저장된 데이터 가운데 하나를 상기 암호화기의 입력 데이터로서 제공하고, 상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터를 상기 가산기로 전달하는 제 1 선택 회로; 그리고
    상기 동작 모드 신호에 응답해서, 상기 데이터 입력 레지스터에 저장된 데이터 및 상기 블록 암호화기에 의해서 암호화된 데이터를 논리 연산한 결과 데이터 또는 상기 블록 암호화기에 의해서 암호화된 데이터를 상기 데이터 출력 레지스터로 전달하고, 상기 동작 모드 신호에 응답해서, 상기 암호화기에 의해서 암호화된 데이터를 상기 초기 벡터 레지스터로 전달하는 제 2 선택 회로를 포함하되;
    상기 가산기는 상기 제 1 선택 회로로부터 제공된 데이터에 미리 설정된 값을 더해서 상기 초기 벡터 레지스터에 저장하고;
    상기 출력 버퍼는 FIFO(First-In Fisrt-Out) 버퍼인 것을 특징으로 하는 암호화 장치.
  19. 메모리에 저장된 데이터를 암호화하기 위한 암호화 장치에 있어서:
    외부로부터 제공되는 암호화 정보에 응답해서 초기 벡터 및 동작 모드를 나타내는 동작 모드 신호와 제어 신호들을 생성하는 제어 유닛과;
    상기 메모리로부터 상기 데이터를 독출하는 메모리 컨트롤러와;
    상기 메모리 컨트롤러에 의해서 독출된 데이터를 저장하기 위한 입력 버퍼와;
    상기 입력 버퍼에 저장된 데이터 블록을 암호화하기 위한 암호화 유닛; 그리고
    상기 암호화 유닛에 의해 암호화된 데이터를 저장하기 위한 출력 버퍼를 포함하되;
    상기 메모리 컨트롤러는 상기 출력 버퍼에 저장된 상기 암호화된 데이터를 상기 메모리에 기입하고;
    상기 메모리 컨트롤러, 상기 입력 버퍼, 상기 암호화 유닛 및 상기 출력 버퍼는 상기 제어 신호들에 응답해서 동작하며;
    상기 암호화 유닛은,
    상기 제어 유닛으로부터의 초기 벡터를 저장하는 초기 벡터 레지스터와;
    상기 입력 버퍼로부터의 상기 데이터를 저장하는 데이터 입력 레지스터와;
    입력 데이터를 암호화하는 암호화기와;
    상기 출력 버퍼로 제공될 데이터를 저장하는 데이터 출력 레지스터와;
    가산기와;
    상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터 및 상기 데이터 입력 레지스터에 저장된 데이터를 논리 연산한 결과 데이터, 또는 상기 데이터 입력 레지스터에 저장된 데이터 가운데 하나를 상기 암호화기의 입력 데이터로서 제공하고, 상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터를 상기 가산기로 전달하는 제 1 선택 회로; 그리고
    상기 동작 모드 신호에 응답해서, 상기 데이터 입력 레지스터에 저장된 데이터 및 상기 블록 암호화기에 의해서 암호화된 데이터를 논리 연산한 결과 데이터 또는 상기 블록 암호화기에 의해서 암호화된 데이터를 상기 데이터 출력 레지스터로 전달하고, 상기 동작 모드 신호에 응답해서, 상기 암호화기에 의해서 암호화된 데이터를 상기 초기 벡터 레지스터로 전달하는 제 2 선택 회로를 포함하되;
    상기 가산기는 상기 제 1 선택 회로로부터 제공된 데이터에 미리 설정된 값을 더해서 상기 초기 벡터 레지스터에 저장하고;
    상기 출력 버퍼는 적어도 2 개의 암호화된 데이터 블록들을 저장하는 것을 특징으로 하는 암호화 장치.
  20. 메모리에 저장된 데이터를 암호화하기 위한 암호화 장치에 있어서:
    외부로부터 제공되는 암호화 정보에 응답해서 초기 벡터 및 동작 모드를 나타내는 동작 모드 신호와 제어 신호들을 생성하는 제어 유닛과;
    상기 메모리로부터 상기 데이터를 독출하는 메모리 컨트롤러와;
    상기 메모리 컨트롤러에 의해서 독출된 데이터를 저장하기 위한 입력 버퍼와;
    상기 입력 버퍼에 저장된 데이터 블록을 암호화하기 위한 암호화 유닛; 그리고
    상기 암호화 유닛에 의해 암호화된 데이터를 저장하기 위한 출력 버퍼를 포함하되;
    상기 메모리 컨트롤러는 상기 출력 버퍼에 저장된 상기 암호화된 데이터를 상기 메모리에 기입하고;
    상기 메모리 컨트롤러, 상기 입력 버퍼, 상기 암호화 유닛 및 상기 출력 버퍼는 상기 제어 신호들에 응답해서 동작하며;
    상기 암호화 유닛은,
    상기 제어 유닛으로부터의 초기 벡터를 저장하는 초기 벡터 레지스터와;
    상기 입력 버퍼로부터의 상기 데이터를 저장하는 데이터 입력 레지스터와;
    입력 데이터를 암호화하는 암호화기와;
    상기 출력 버퍼로 제공될 데이터를 저장하는 데이터 출력 레지스터와;
    가산기와;
    상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터 및 상기 데이터 입력 레지스터에 저장된 데이터를 논리 연산한 결과 데이터, 또는 상기 데이터 입력 레지스터에 저장된 데이터 가운데 하나를 상기 암호화기의 입력 데이터로서 제공하고, 상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터를 상기 가산기로 전달하는 제 1 선택 회로; 그리고
    상기 동작 모드 신호에 응답해서, 상기 데이터 입력 레지스터에 저장된 데이터 및 상기 블록 암호화기에 의해서 암호화된 데이터를 논리 연산한 결과 데이터 또는 상기 블록 암호화기에 의해서 암호화된 데이터를 상기 데이터 출력 레지스터로 전달하고, 상기 동작 모드 신호에 응답해서, 상기 암호화기에 의해서 암호화된 데이터를 상기 초기 벡터 레지스터로 전달하는 제 2 선택 회로를 포함하되;
    상기 가산기는 상기 제 1 선택 회로로부터 제공된 데이터에 미리 설정된 값을 더해서 상기 초기 벡터 레지스터에 저장하고;
    상기 메모리 컨트롤러는, DMA(Direct Memory Access) 컨트롤러인 것을 특징으로 하는 암호화 장치.
  21. 메모리에 저장된 데이터를 암호화하기 위한 암호화 장치에 있어서:
    외부로부터 제공되는 암호화 정보에 응답해서 초기 벡터 및 동작 모드를 나타내는 동작 모드 신호와 제어 신호들을 생성하는 제어 유닛과;
    상기 메모리로부터 상기 데이터를 독출하는 메모리 컨트롤러와;
    상기 메모리 컨트롤러에 의해서 독출된 데이터를 저장하기 위한 입력 버퍼와;
    상기 입력 버퍼에 저장된 데이터 블록을 암호화하기 위한 암호화 유닛; 그리고
    상기 암호화 유닛에 의해 암호화된 데이터를 저장하기 위한 출력 버퍼를 포함하되;
    상기 메모리 컨트롤러는 상기 출력 버퍼에 저장된 상기 암호화된 데이터를 상기 메모리에 기입하고;
    상기 메모리 컨트롤러, 상기 입력 버퍼, 상기 암호화 유닛 및 상기 출력 버퍼는 상기 제어 신호들에 응답해서 동작하며;
    상기 암호화 유닛은,
    상기 제어 유닛으로부터의 초기 벡터를 저장하는 초기 벡터 레지스터와;
    상기 입력 버퍼로부터의 상기 데이터를 저장하는 데이터 입력 레지스터와;
    입력 데이터를 암호화하는 암호화기와;
    상기 출력 버퍼로 제공될 데이터를 저장하는 데이터 출력 레지스터와;
    가산기와;
    상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터 및 상기 데이터 입력 레지스터에 저장된 데이터를 논리 연산한 결과 데이터, 또는 상기 데이터 입력 레지스터에 저장된 데이터 가운데 하나를 상기 암호화기의 입력 데이터로서 제공하고, 상기 동작 모드 신호에 응답해서, 상기 초기 벡터 레지스터에 저장된 데이터를 상기 가산기로 전달하는 제 1 선택 회로; 그리고
    상기 동작 모드 신호에 응답해서, 상기 데이터 입력 레지스터에 저장된 데이터 및 상기 블록 암호화기에 의해서 암호화된 데이터를 논리 연산한 결과 데이터 또는 상기 블록 암호화기에 의해서 암호화된 데이터를 상기 데이터 출력 레지스터로 전달하고, 상기 동작 모드 신호에 응답해서, 상기 암호화기에 의해서 암호화된 데이터를 상기 초기 벡터 레지스터로 전달하는 제 2 선택 회로를 포함하되;
    상기 가산기는 상기 제 1 선택 회로로부터 제공된 데이터에 미리 설정된 값을 더해서 상기 초기 벡터 레지스터에 저장하는 것을 특징으로 하는 암호화 장치.
KR1020030004806A 2003-01-24 2003-01-24 다수의 동작 모드들을 지원하는 암호화 장치 KR100583635B1 (ko)

Priority Applications (9)

Application Number Priority Date Filing Date Title
KR1020030004806A KR100583635B1 (ko) 2003-01-24 2003-01-24 다수의 동작 모드들을 지원하는 암호화 장치
US10/721,398 US7336783B2 (en) 2003-01-24 2003-11-25 Cryptographic systems and methods supporting multiple modes
US10/744,125 US7509501B2 (en) 2003-01-24 2003-12-23 Cryptographic apparatus for supporting multiple modes
JP2003426676A JP4684550B2 (ja) 2003-01-24 2003-12-24 多数の動作モードを支援する暗号化装置
TW093100636A TW200417219A (en) 2003-01-24 2004-01-12 Cryptographic systems and methods supporting multiple modes
JP2004008782A JP2004226969A (ja) 2003-01-24 2004-01-16 暗号システム及び多様なモードを支援する方法
TW093101126A TWI286689B (en) 2003-01-24 2004-01-16 Cryptographic apparatus for supporting multiple modes
CN2004100029716A CN1531240B (zh) 2003-01-24 2004-01-21 支持多个模式的加密装置
US11/972,387 US7885404B2 (en) 2003-01-24 2008-01-10 Cryptographic systems and methods supporting multiple modes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030004806A KR100583635B1 (ko) 2003-01-24 2003-01-24 다수의 동작 모드들을 지원하는 암호화 장치

Publications (2)

Publication Number Publication Date
KR20040067601A KR20040067601A (ko) 2004-07-30
KR100583635B1 true KR100583635B1 (ko) 2006-05-26

Family

ID=32733106

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030004806A KR100583635B1 (ko) 2003-01-24 2003-01-24 다수의 동작 모드들을 지원하는 암호화 장치

Country Status (5)

Country Link
US (1) US7509501B2 (ko)
JP (1) JP4684550B2 (ko)
KR (1) KR100583635B1 (ko)
CN (1) CN1531240B (ko)
TW (1) TWI286689B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101922955B1 (ko) * 2018-02-14 2018-11-28 (주)케이사인 데이터 블록 기반의 근 실시간 데이터 암호화 시스템 및 방법
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

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7336783B2 (en) * 2003-01-24 2008-02-26 Samsung Electronics, C., Ltd. Cryptographic systems and methods supporting multiple modes
WO2006075869A1 (en) * 2005-01-11 2006-07-20 Samsung Electronics Co., Ltd. Apparatus and method for ciphering/deciphering a signal in a communication system
JP2006220748A (ja) * 2005-02-08 2006-08-24 Toshiba Corp データ処理装置、データ記録装置、データ再生装置およびデータ格納方法
US20060198515A1 (en) * 2005-03-03 2006-09-07 Seagate Technology Llc Secure disc drive electronics implementation
US8094814B2 (en) * 2005-04-05 2012-01-10 Broadcom Corporation Method and apparatus for using counter-mode encryption to protect image data in frame buffer of a video compression system
JP4887668B2 (ja) * 2005-06-09 2012-02-29 ソニー株式会社 暗号化復号処理回路および暗号化復号システム
US8218770B2 (en) * 2005-09-13 2012-07-10 Agere Systems Inc. Method and apparatus for secure key management and protection
CN101366226B (zh) * 2005-12-22 2013-03-20 美商内数位科技公司 用于在无线通信***中实施数据安全以及自动重复请求的方法和设备
KR100837270B1 (ko) * 2006-06-07 2008-06-11 삼성전자주식회사 스마트 카드 및 그것의 데이터 보안 방법
US7769166B2 (en) * 2006-08-24 2010-08-03 Lsi Corporation Dual mode AES implementation to support single and multiple AES operations
US7908411B2 (en) * 2006-09-20 2011-03-15 Panasonic Corporation Data transfer device and mobile telephone
FR2906380B1 (fr) * 2006-09-27 2008-12-19 Trusted Logic Sa Systeme et procede de securisation de donnees.
KR100866959B1 (ko) * 2007-02-13 2008-11-05 삼성전자주식회사 불휘발성 메모리 장치의 부분 페이지 데이터 기입 방법
US8538012B2 (en) * 2007-03-14 2013-09-17 Intel Corporation Performing AES encryption or decryption in multiple modes with a single instruction
JP4304215B2 (ja) * 2007-03-23 2009-07-29 株式会社東芝 秘密分散装置、方法及びプログラム
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
JP4334582B2 (ja) * 2007-06-26 2009-09-30 株式会社東芝 秘密分散装置、方法及びプログラム
TWI386814B (zh) 2007-12-31 2013-02-21 Ind Tech Res Inst 具動態工作管理能力之多處理器界面及其程式載卸方法
CN101499020B (zh) * 2008-01-28 2011-08-31 财团法人工业技术研究院 具有动态工作管理能力的多处理器界面及其程序加载或卸载方法
JP5228803B2 (ja) * 2008-10-30 2013-07-03 富士通セミコンダクター株式会社 共通鍵ブロック暗号におけるスワップ回路及び、それを有する暗号化・復号化回路
CN102035641A (zh) * 2009-09-24 2011-04-27 中兴通讯股份有限公司 一种实现aes加解密的装置和方法
JP5017439B2 (ja) * 2010-09-22 2012-09-05 株式会社東芝 暗号演算装置及びメモリシステム
US8498410B2 (en) * 2011-03-14 2013-07-30 Motorola Solutions, Inc. Methods for customizing a Rijndael block cipher
CN103517269B (zh) * 2012-06-19 2017-12-29 深圳市中兴微电子技术有限公司 数据加解密方法及***
CN103874060B (zh) * 2012-12-13 2019-04-30 深圳市中兴微电子技术有限公司 数据的加/解密方法和装置
US20150363333A1 (en) * 2014-06-16 2015-12-17 Texas Instruments Incorporated High performance autonomous hardware engine for inline cryptographic processing
US9003200B1 (en) 2014-09-22 2015-04-07 Storagecraft Technology Corporation Avoiding encryption of certain blocks in a deduplication vault
US11463236B2 (en) 2016-12-09 2022-10-04 Cryptography Research, Inc. Programmable block cipher with masked inputs
GB201808834D0 (en) * 2018-05-30 2018-07-11 Nordic Semiconductor Asa Memory-efficient hardware cryptographic engine
GB2574642A (en) 2018-06-13 2019-12-18 Nordic Semiconductor Asa Hardware accelerator
CN115348004A (zh) * 2022-08-11 2022-11-15 北京特纳飞电子技术有限公司 用于数据加密的方法、***和装置

Citations (6)

* 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 暗号演算回路
US5623549A (en) * 1995-01-30 1997-04-22 Ritter; Terry F. Cipher mechanisms with fencing and balanced block mixing
JPH11212451A (ja) * 1998-01-22 1999-08-06 Dainippon Printing Co Ltd 暗号処理装置
US6298136B1 (en) * 1996-05-20 2001-10-02 U.S. Philips Corporation Cryptographic method and apparatus for non-linearly merging a data block and a key
JP2002297030A (ja) * 2001-03-29 2002-10-09 Toshiba Corp 暗号処理装置及び暗号処理方法並びにプログラム
JP2002358008A (ja) * 2001-06-04 2002-12-13 Mitsubishi Electric Corp データ暗号化回路

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0276349B1 (en) * 1987-01-28 1992-03-25 International Business Machines Corporation Apparatus for switching information between channels for synchronous information traffic and asynchronous data packets
JPH0646344B2 (ja) * 1988-05-23 1994-06-15 日本電信電話株式会社 暗号回路
JP3148790B2 (ja) * 1994-03-15 2001-03-26 富士通株式会社 暗号装置
JPH08249238A (ja) * 1995-03-08 1996-09-27 Sanyo Electric Co Ltd 着脱可能な記憶メディアの機密保持方法
US6061449A (en) 1997-10-10 2000-05-09 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
US6295604B1 (en) * 1998-05-26 2001-09-25 Intel Corporation Cryptographic packet processing unit
TW375721B (en) * 1998-06-17 1999-12-01 Ind Tech Res Inst DES chip processor capable of executing data encryption standard (DES) operation
JP2000075785A (ja) * 1998-08-26 2000-03-14 Fujitsu Ltd 高速暗号処理回路および処理方法
JP3581601B2 (ja) 1998-12-18 2004-10-27 松下電器産業株式会社 データ転送装置、データ転送システムおよび記録媒体
JP2001177518A (ja) * 1999-12-17 2001-06-29 Nec Corp 暗号化方法、復号化方法及び装置
US7191341B2 (en) * 2002-12-18 2007-03-13 Broadcom Corporation Methods and apparatus for ordering data in a cryptography accelerator
US7657757B2 (en) * 2003-04-30 2010-02-02 Freescale Semiconductor, Inc. Semiconductor device and method utilizing variable mode control with block ciphers

Patent Citations (6)

* 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 暗号演算回路
US5623549A (en) * 1995-01-30 1997-04-22 Ritter; Terry F. Cipher mechanisms with fencing and balanced block mixing
US6298136B1 (en) * 1996-05-20 2001-10-02 U.S. Philips Corporation Cryptographic method and apparatus for non-linearly merging a data block and a key
JPH11212451A (ja) * 1998-01-22 1999-08-06 Dainippon Printing Co Ltd 暗号処理装置
JP2002297030A (ja) * 2001-03-29 2002-10-09 Toshiba Corp 暗号処理装置及び暗号処理方法並びにプログラム
JP2002358008A (ja) * 2001-06-04 2002-12-13 Mitsubishi Electric Corp データ暗号化回路

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101922955B1 (ko) * 2018-02-14 2018-11-28 (주)케이사인 데이터 블록 기반의 근 실시간 데이터 암호화 시스템 및 방법
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

Also Published As

Publication number Publication date
KR20040067601A (ko) 2004-07-30
TW200421098A (en) 2004-10-16
JP2004226966A (ja) 2004-08-12
CN1531240A (zh) 2004-09-22
US7509501B2 (en) 2009-03-24
JP4684550B2 (ja) 2011-05-18
TWI286689B (en) 2007-09-11
US20040148512A1 (en) 2004-07-29
CN1531240B (zh) 2010-11-03

Similar Documents

Publication Publication Date Title
KR100583635B1 (ko) 다수의 동작 모드들을 지원하는 암호화 장치
US7336783B2 (en) Cryptographic systems and methods supporting multiple modes
US20110255689A1 (en) Multiple-mode cryptographic module usable with memory controllers
US5671284A (en) Data encryptor having a scalable clock
US8112635B2 (en) Data-mover controller with plural registers for supporting ciphering operations
US11387980B2 (en) Hardware multiple cipher engine
EP3803672B1 (en) Memory-efficient hardware cryptographic engine
KR20080084752A (ko) 단일 명령어를 이용한 다수 모드에서의 aes 암호화 또는암호 해독 수행
EP1297652B1 (en) Improving des hardware throughput for short operations
US20010050989A1 (en) Systems and methods for implementing encryption algorithms
US7447311B2 (en) Method of designing optimum encryption function and optimized encryption apparatus in a mobile communication system
US7657034B2 (en) Data encryption in a symmetric multiprocessor electronic apparatus
US20030223581A1 (en) Cipher block chaining unit for use with multiple encryption cores
KR100546777B1 (ko) Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기
EP1629626A1 (en) Method and apparatus for a low memory hardware implementation of the key expansion function
KR100342526B1 (ko) 암호화 및 복호화 장치
CN116502288A (zh) 快速数据超过慢速数据的处理管线
KR100528890B1 (ko) 다양한 인터페이스를 갖는 고속 블럭 암호 장치 및 그구동 방법
KR20040045517A (ko) Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법
Karri et al. Field programmable gate array implementation of Advanced Encryption Standard Rijndael
KR20070017411A (ko) 암호화 동작을 지원하기 위한 복수의 레지스터를 갖는데이터-이동 제어기
JP2015061182A (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
FPAY Annual fee payment

Payment date: 20130430

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140430

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160429

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170427

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180430

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 14