KR102376506B1 - 암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법 - Google Patents

암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법 Download PDF

Info

Publication number
KR102376506B1
KR102376506B1 KR1020140141690A KR20140141690A KR102376506B1 KR 102376506 B1 KR102376506 B1 KR 102376506B1 KR 1020140141690 A KR1020140141690 A KR 1020140141690A KR 20140141690 A KR20140141690 A KR 20140141690A KR 102376506 B1 KR102376506 B1 KR 102376506B1
Authority
KR
South Korea
Prior art keywords
encryption
decryption
core
cores
data
Prior art date
Application number
KR1020140141690A
Other languages
English (en)
Other versions
KR20160046368A (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 KR1020140141690A priority Critical patent/KR102376506B1/ko
Priority to US14/790,106 priority patent/US9843440B2/en
Publication of KR20160046368A publication Critical patent/KR20160046368A/ko
Application granted granted Critical
Publication of KR102376506B1 publication Critical patent/KR102376506B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

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

Abstract

암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법이 게시된다. 본 발명의 실시예에 따른 암복호화기의 동작 방법에 의하면, 입력된 평문 스트림을 다수의 평문 데이터의 단위로, 다수의 암복호화 코어에 분배하는 단계, 다수의 암복호화 코어 중 제1 암복호화 코어에서 제1 동작을 수행하는 단계 및 제1 암복호화 코어에서 제1 동작을 수행한 결과를 이용하여, 다수의 암복호화 코어가, 각각, 평문 데이터를 암호문 데이터로 암호화 하거나, 암호문 데이터를 평문 데이터로 복호화하는 단계를 포함한다.

Description

암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법 {ENCRYPTOR/DECRYPTOR, ELECTRONIC APPARATUS INCLUDING ENCRYPTOR/DECRYPTOR AND OPERATION METHOD OF ENCRYPTOR/DECRYPTOR}
본 게시는 암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법에 관한 것으로, 데이터의 암복호화를 고속으로 처리하면서도 자원을 효율적으로 사용할 수 있는 암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법에 관한 것이다.
본 게시는 데이터의 암복호화를 고속으로 처리하면서도 자원을 효율적으로 사용할 수 있는 암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법을 제공하는 것에 있다.
본 게시는 데이터의 암복호화를 고속으로 처리하면서도 자원을 효율적으로 사용할 수 있는 암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법을 제공하는 것에 있다.
일 실시예에 따른 암복호화기의 동작 방법은, 입력된 평문 스트림을 다수의 평문 데이터로 분할하여 다수의 암복호화 코어에 분배하는 단계, 다수의 암복호화 코어 중 제1 암복호화 코어에서 제1 동작을 수행하는 단계 및 제1 암복호화 코어에서 제1 동작을 수행한 결과를 이용하여, 다수의 암복호화 코어가, 각각, 평문 데이터를 암호문 데이터로 암호화 하거나, 암호문 데이터를 평문 데이터로 복호화하는 단계를 포함한다.
일 실시예에 따른 암복호화기는, 각각, 블록 암호 알고리즘(block cipher algorithm)에 의한 다수의 라운드(round)를 통해 암호화 또는 복호화를 수행하는 다수의 암복호화 코어(encryption/decryption core); 및 입력된 평문 스트림(plaintext stream)을 평문 데이터(plaintext data)의 단위로, 상기 다수의 암복호화 코어에 분배하는 제1 데이터 처리기를 구비하고, 상기 다수의 암복호화 코어는 각각, 상기 다수의 암복호화 코어 중 제1 암복호화 코어에서 수행된 제1 동작의 결과를 이용하여, , 각각, 상기 평문 데이터를 암호문 데이터로 암호화하거나, 상기 암호문 데이터를 상기 평문 데이터로 복호화한다.
일 실시예에 따른 전자 장치는, 어플리케이션(application)을 수행하는 시스템 온 칩(System On Chip); 및 상기 시스템 온 칩과 전기적으로 연결될 수 있고, 상기 시스템 온 칩에서 사용되는 데이터가 저장되는 플래시 메모리 시스템(flash memory system)을 포함하고, 시스템 온 칩은, 각각, 블록 암호 알고리즘(block cipher algorithm)에 의한 다수의 라운드(round)를 통해 암호화 또는 복호화를 수행하는 다수의 암복호화 코어(encryption/decryption core); 및 상기 플래시 메모리 시스템으로부터 입력된 평문 스트림(plaintext stream)을 평문 데이터(plaintext data)의 단위로, 상기 다수의 암복호화 코어에 분배하는 제1 데이터 처리기를 구비하고, 상기 다수의 암복호화 코어는 각각, 상기 다수의 암복호화 코어 중 제1 암복호화 코어에서 수행된 제1 동작의 결과를 이용하여, 각각, 상기 평문 데이터를 암호문 데이터로 암호화하거나, 상기 암호문 데이터를 상기 평문 데이터로 복호화한다.
일 실시예에 따른 암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법에 의하면, 암복호화 코어(encryption/decryption core)를 다수로 구비하여 데이터의 암복호화를 병렬 처리함으로써 고속으로 데이터의 암복호화를 수행하면서도 다수의 암복호화 코어 사이에 자원을 공유하여, 전력을 감소시키거나, 레이아웃(layout) 면적을 줄이거나, 동작 시간을 줄일 수 있는 장점이 있다.
도 1은 본 발명의 일 실시예에 따른 암복호화기의 동작 방법을 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 암복호화기를 나타내는 도면이다.
도 3은 도 2의 제1 암복호화 코어의 동작 블록 A의 예를 나타내는 도면이다.
도 4는 도 3의 동작 블록 A가 AES(Advanced Encryption Standard) 알고리즘으로 암호화를 수행하는 예를 나타내는 도면이다.
도 5는 도 4의 암호 키의 크기에 따른 라운드의 개수를 나타내는 표이다.
도 6은 도 4의 암호화 알고리즘의 예를 나타내는 도면이다.
도 7은 도 3의 동작 블록 A가 AES(Advanced Encryption Standard) 알고리즘으로 복호화를 수행하는 예를 나타내는 도면이다.
도 8은 도 3의 동작 블록 A가 Feistel Cipher 방식의 알고리즘으로 암호화를 수행하는 예를 나타내는 도면이다.
도 9는 도 2의 제1 암복호화 코어의 일 예를 나타내는 도면이다.
도 27a 및 도 27b는, 각각, 본 발명의 다른 실시예에 따른 암복호화기의 암호화 코어부 및 복호화 코어부를 나타내는 도면이다. 도 10은 본 발명의 실시예에 다른 따른 암복호화기의 예를 나타내는 도면이다.
도 11은 도 10의 암복호화기의 동작 방법의 일 예를 나타내는 도면이다.
도 12는 본 발명의 실시예에 다른 따른 암복호화기의 다른 예를 나타내는 도면이다.
도 13은 도 2의 제1 암복호화 코어의 다른 예를 나타내는 도면이다.
도 14는 도 13의 제1 암복호화 코어를 구비하는 동작 방법의 일 예를 나타내는 도면이다.
도 15 내지 도 18은 각각, 본 발명의 다른 실시예에 따른 암복호화기를 나타내는 도면이다.
도 19는 도 2의 제1 암복호화 코어의 다른 예를 나타내는 도면이다.
도 20은 도 19의 제1 암복호화 코어의 구현 예를 나타내는 도면이다.
도 21은 본 발명의 다른 실시예에 따른 암복호화기를 나타내는 도면이다.
도 22 및 도 23은 각각, 도 21의 암복호화기의 동작 방법의 예를 나타내는 도면이다.
도 24 내지 도 26은 각각, 본 발명의 다른 실시예에 따른 암복호화기를 나타내는 도면이다.
도 27a 및 도 27b는, 각각, 본 발명의 다른 실시예에 따른 암복호화기의 암호화 코어부 및 복호화 코어부를 나타내는 도면이다.
도 28 내지 도 31은 각각, 본 발명의 다른 실시예에 따른 암복호화기를 나타내는 도면이다.
도 32는 본 발명의 다른 실시예에 따른 전자 장치를 나타내는 도면이다.
도 33 및 도 34는 각각, 도 32의 플래시 메모리 시스템의 예를 나타내는 도면이다.
도 35 및 도 36은 각각, 본 발명의 다른 실시예에 따른 전자 장치를 나타내는 도면이다.
본 게시의 동작상의 이점 및 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 실시예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다. 이하, 첨부한 도면을 참조하여 실시예를 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 암복호화기의 동작 방법을 나타내는 도면이다. 도 1을 참조하면, 본 발명의 일 실시예에 따른 암복호화기의 동작 방법은, 입력된 평문 스트림(plaintext stream)을 평문 데이터(plaintext data)의 단위로 다수의 암복호화 코어(encryption/decryption core)에 분배하는 단계(S120), 다수의 암복호화 코어 중 제1 암복호화 코어에서 제1 동작을 수행하는 단계(S140), 및 제1 암복호화 코어에서 제1 동작을 수행한 결과를 이용하여, 상기 다수의 암복호화 코어가, 각각, 평문 데이터를 암호문 데이터(ciphertext data)로 암호화 하거나, 암호문 데이터를 평문 데이터로 복호화 하는 단계(S160)를 포함한다.
제1 암복호화 코어에서 수행되는 제1 동작은 후술되는 바와 같이, 라운드 키(round key)의 생성 또는 XTS(XEX-based tweaked-codebook mode with ciphertext stealing)의 초기화 동작 등일 수 있다. 다수의 암복호화 코어가, 각각, 평문 데이터를 암호문 데이터(ciphertext data)로 암호화 하거나, 암호문 데이터를 평문 데이터로 복호화 하는 단계(S160)는, 다수의 암복호화 코어에서 동시에 수행하거나, 순차적으로 수행할 수 있다. 도 1의 암복호화기의 동작 방법은, 도 2의 암복호화기에서 수행될 수 있다. 도 2는 본 발명의 일 실시예에 따른 암복호화기를 나타내는 도면이다. 도 1 및 도 2를 참조하면, 본 발명의 일 실시예에 따른 암복호화기(200)는 제1 데이터 처리기(210) 및 암복호화 코어부(220)를 포함한다. 암복호화 코어부(220)는 다수의 암복호화 코어(220_1, 220_2, …, 220_X)를 포함한다.
제1 데이터 처리기(210)는 입력되는 평문 스트림(Pla_T)을 다수의 평문 데이터(Pla_D1, Pla_D2, …, Pla_DX)로 분배하여 암복호화 코어부(220)의 다수의 암복호화 코어(220_1, 220_2, …, 220_X)로 분배한다(S120). 평문 스트림(Pla_T)은 암복호화기(200)와 연결되는 버스(bus)를 통해 입력될 수 있다. 버스는 규정된 크기의 단위로 데이터를 전송할 수 있다. 따라서, 평문 스트림(Pla_T)은 버스 인터페이스에서 규정된 크기로 연속적으로 암복호화기에 전달될 수 있다.
제1 데이터 처리기(210)는 평문 스트림(Pla_T)을 평문 데이터(Pla_D1, Pla_D2, …, Pla_DX) 단위로 분배할 수 있다. 예를 들어, 제1 데이터 처리기(210)는 평문 스트림(Pla_T)을 각각 128 비트(bit)의 크기를 갖는 X(X는 2 이상의 정수)개의 평문 데이터(Pla_D1, Pla_D2, …, Pla_DX)로 분배할 수 있다. 이와 같이, 평문 데이터가 128 비트인 경우, 일 시점에서 버스를 통해 전달된 평문 스트림(Pla_T)의 일부 데이터가 128 비트이면 해당 데이터를 평문 데이터로 암복호화 코어(220_1, 220_2, …, 220_X) 중 하나로 바로 분배하고, 일 시점에서 버스를 통해 전달된 평문 스트림의 일부 데이터가 128 비트보다 작거나 크면 해당 데이터를 128 비트의 평문 데이터로 조립 또는 분할하여 암복호화 코어(220_1, 220_2, …, 220_X) 중 대응되는 암복호화 코어로 분배할 수 있다. 제1 데이터 처리기(210)는 평문 데이터(Pla_D1, Pla_D2, …, Pla_DX)를 동시에 또는 순차적으로 암복호화 코어(220_1, 220_2, …, 220_X)에 분배할 수 있다.
제1 데이터 처리기(210)는 X개의 평문 데이터(Pla_D1, Pla_D2, …, Pla_DX)를 각각, X개의 암복호화 코어(220_1, 220_2, …, 220_X)에 제공한다. 예를 들어, 제1 암복호화 코어((220_1)에 제1 평문 데이터(Pla_D1)가 제공되고, 제2 암복호화 코어((220_2)에 제2 평문 데이터(Pla_D2)가 제공될 수 있다. 마찬가지로, 제X 암복호화 코어((220_X)에 제X 평문 데이터(Pla_DX)가 제공될 수 있다. 평문 스트림(Pla_T)이 X개 이상의 평문 데이터를 포함하는 경우, 제1 데이터 처리기(210)는 X개의 평문 데이터(Pla_D1, Pla_D2, …, Pla_DX)를 각각, X개의 암복호화 코어(220_1, 220_2, …, 220_X)에 제공한 후, 암호화 동작이 종료된 암복호화 코어에 처리되지 아니한 평문 데이터를 다시 제공할 수 있다.
제1 데이터 처리기(210)는 또한, 다수의 암복호화 코어(220_1, 220_2, …, 220_X)로부터 제공되는 다수의 평문 데이터(Pla_D1, Pla_D2, …, Pla_DX)를 평문 스트림(Pla_T)으로 출력할 수도 있다. 전술한 바와 같이, 평문 스트림(Pla_T)은 버스 인터페이스에서 규정된 크기로 순차적으로 출력될 수 있다. 평문 스트림을 다수의 평문 데이터로 분배하는 때에, 각 평문 데이터의 헤더(header)에, 분배와 관련된 정보, 예를 들어, 해당 평문 데이터가 평문 스트림의 몇 번째 데이터인지를 나타내는 정보가 포함되고, 평문 데이터로부터 암호화되는 암호문 데이터의 헤더 및 암호문 데이터로부터 복호화되는 평문 데이터의 헤더에도 이의 정보가 포함될 수 있다. 제1 데이터 처리기(210)는 입력되는 평문 데이터(Pla_D1, Pla_D2, …, Pla_DX)의 헤더를 참조하여 순서대로 평문 스트림(Pla_T)을 출력할 수도 있다.
다수의 암복호화 코어(220_1, 220_2, …, 220_X)로부터 제공되는 다수의 평문 데이터(Pla_D1, Pla_D2, …, Pla_DX)는 다수의 암복호화 코어(220_1, 220_2, …, 220_X)에 의해 복호화된 데이터이다. 제1 데이터 처리기(210)는 암복호화기(200)의 외부에 위치할 수도 있다. 이 경우, 다수의 암복호화 코어(220_1, 220_2, …, 220_X)로 입력되는 평문 데이터(Pla_D1, Pla_D2, …, Pla_DX)는 암복호화기(200)의 외부로부터 입력될 수도 있다.
다수의 암복호화 코어(220_1, 220_2, …, 220_X)는 각각, 다수의 평문 데이터(Pla_D1, Pla_D2, …, Pla_DX) 중 입력된 평문 데이터를 암호문 데이터로 암호화 한다(S160). 예를 들어, 제1 암복호화 코어(220_1)는 제1 평문 데이터(Pla_D1)를 제1 암호문 데이터(Cip_D1)로 암호화하고, 제2 암복호화 코어(220_2)는 제2 평문 데이터(Pla_D2)를 제2 암호문 데이터(Cip_D2)로 암호화할 수 있다. 마찬가지로, 제X 암복호화 코어(220_X)는 제X 평문 데이터(Pla_DX)를 제X 암호문 데이터(Cip_DX)로 암호화할 수 있다.
이렇듯, 본 발명의 실시예에 따른 암복호화기(200)는 평문 스트림(Pla_T)를 다수의 암복호화 코어(220_1, 220_2, …, 220_X)에 의해 병렬적으로 암호화함으로써, 고속으로 암호화를 수행할 수 있다. 다수의 암복호화 코어(220_1, 220_2, …, 220_X)에 의해 생성된 다수의 암호문 데이터(Cip_D1, Cip_D2, …, Cip_DX)는 암복호화기(200)와 전기적으로 연결될 수 있는 저장 장치(미도시)에 저장되거나, 암복호화기(200)와 전기적으로 연결될 수 있는 통신 드라이버(communication driver, 미도시)를 통해 암복호화기(200)가 구비되는 전자 장치(미도시)의 외부로 전송될 수 있다. 도 2는 암호문 데이터(Cip_D1, Cip_D2, …, Cip_DX)가 각각, 암복호화기(200)에서 병렬적으로 출력되는 것으로 도시되었으나, 이에 한정되는 것은 아니다. 후술되는 도 15에 도시되는 바와 같이, 다수의 암호문 데이터(Cip_D1, Cip_D2, …, Cip_DX)는 순차적으로 암복호화기(200)로부터 출력될 수도 있다. 이는, 이하에서 설명되는 다른 실시예에 따른 암복호화 코어 또는 암호화 코어에서도 마찬가지로 적용될 수 있다.
다수의 암복호화 코어(220_1, 220_2, …, 220_X)로 입력되는 다수의 암호문 데이터(Cip_D1, Cip_D2, …, Cip_DX)는 도 2에 도시된 바와 같이, 암복호화기(200)의 외부로부터 입력될 수 있다. 예를 들어, 암복호화기(200)와 전기적으로 연결될 수 있는 저장 장치(미도시)로부터 입력되거나, 암복호화기(200)와 전기적으로 연결될 수 있는 통신 드라이버(미도시)를 통해 암복호화기(200)가 구비되는 전자 장치(미도시)의 외부로부터 입력될 수 있다. 암복호화기(200)와 전기적으로 연결될 수 있는 저장 장치 또는 통신 드라이버와 연결되는 버스를 통해 입력되는 암호문 스트림(ciphertext stream)이 다수의 암호문 데이터(Cip_D1, Cip_D2, …, Cip_DX)로 각 암복호화 코어(220_1, 220_2, …, 220_X)에 분배될 수 있다. 각 암복호화 코어로 입력될 수도 있다. 이는, 이하에서 설명되는 다른 실시예에 따른 암복호화 코어 또는 복호화 코어에서도 마찬가지로 적용될 수 있다.
이렇게 다수의 암복호화 코어(220_1, 220_2, …, 220_X)로 각각, 암호문 데이터(Cip_D1, Cip_D2, …, Cip_DX)가 입력되면, 다수의 암복호화 코어(220_1, 220_2, …, 220_X)는 각각, 다수의 암호문 데이터(Cip_D1, Cip_D2, …, Cip_DX) 중 입력된 암호문 데이터를 평문 데이터로 복호화 한다(S160). 예를 들어, 제1 암복호화 코어(220_1)는 제1 암호문 데이터(Cip_D1)를 제1 평문 데이터(Pla_D1)로 복호화하고, 제2 암복호화 코어(220_2)는 제2 암호문 데이터(Cip_D2)를 제2 평문 데이터(Pla_D2)로 복호화할 수 있다. 마찬가지로, 제X 암복호화 코어(220_X)는 제X 암호문 데이터(Cip_DX)를 제X 평문 데이터(Pla_DX)로 암호화할 수 있다. 다만, 전술한 바와 같이, 평문 데이터의 개수는 암복호화 코어의 개수와 무관할 수 있다. 암호문 데이터의 개수도 마찬가지이다. 이렇듯, 본 발명의 실시예에 따른 암복호화기(200)는 다수의 암복호화 코어(220_1, 220_2, …, 220_X)에 의해 병렬적으로 암호화함으로써, 고속으로 복호화를 수행할 수 있다.
다수의 암복호화 코어(220_1, 220_2, …, 220_X)는 블록(block) 단위로 암호화 또는 복호화를 수행하는 블록 암호 알고리즘(block cipher algorithm)을 이용하여 암호화 또는 복호화를 수행한다. 예를 들어, 다수의 암복호화 코어(220_1, 220_2, …, 220_X)는 DES(Data Encryption Standard), 3DES, AES(Advanced Encryption Standard) 또는 SEED 등의 블록 암호 알고리즘을 이용하여 암호화 또는 복호화를 수행할 수 있다. 블록 암호 알고리즘은 비트(bit) 단위로 암호화를 수행하는 LFSR(Linear Feedback Shift Register) 등의 스트림 암호 알고리즘(stream cipher algorithm)과 구분된다.
본 발명의 실시예에 따른 다수의 암복호화 코어(220_1, 220_2, …, 220_X)는 각각, 적어도 둘 이상의 동작을 통해 상기의 암호화 또는 복호화를 수행할 수 있다. 적어도 둘 이상의 동작 중 하나는 암호화 연산 또는 복호화 연산을 수행하는 단계이다. 적어도 둘 이상의 동작 중 또 하나는 암호화 연산 또는 복호화 연산을 수행하는데 사용되는 라운드 키(round key)를 생성하는 동작일 수 있다. 또는, 적어도 둘 이상의 동작 중 다른 하나는 암호화 연산 또는 복호화 연산 이전에 수행되는 초기화 동작일 수 있다. 그 밖에, 다수의 암복호화 코어(220_1, 220_2, …, 220_X)는 암호화 또는 복호화에 요구되는 동작을 더 수행할 수도 있다. 각 동작에 대한 구체적인 사항은 후술된다.
상기의 동작들은, 각각의 암복호화 코어에 포함되는 동작 블록들에 의해 수행될 수 있다. 도 2는 각 암복호화 코어(220_1, 220_2, …, 220_X)가 Y(Y는 2 이상의 정수)개의 동작 블록을 포함하는 예를 도시한다. 예를 들어, 각 암복호화 코어(220_1, 220_2, …, 220_X)의 동작 블록 A(OB_A1, OB_A2, …, OB_AX)는 전술된 암호화 연산 또는 복호화 연산을 수행할 수 있다. 또한, 각 암복호화 코어(220_1, 220_2, …, 220_X)의 동작 블록 B(OB_B1, OB_B2, …, OB_BX)는 전술된 라운드 키를 생성하는 동작을 수행할 수 있다. 동작 블록들은 각각, 하드웨어(hardware) 또는 소프트웨어(software)로 구현될 수 있다. 또는 동작 블록들은 각각, 하드웨어 및 소프트웨어가 결합되어 구현될 수 있다.
다만, 도 2에서 일부의 암복호화 코어의 동작 블록을 점선으로 표시한 바와 같이, 일부의 암복호화 코어에서 일부의 동작 블록은 구비되지 아니하거나 구비되더라도 동작의 일부만을 수행할 수 있다. 예를 들어, 제2 암복호화 코어(220_2)는 동작 블록 B(OB_B2)를 구비하지 아니하거나, 동작 블록 B(OB_B2)의 동작의 일부만을 수행할 수 있다. 예를 들어, 제2 암복호화 코어(220_2)의 동작 블록 B(OB_B2)가 동작 블록 A(OB_A2)의 복호화 연산을 수행하는데 사용되는 다수의 라운드 키 중 일부의 라운드 키만 생성할 수 있다. 이 경우, 제1 암복호화 코어(220_1)의 동작 블록 B(OB_B1)는 키를 생성하고(S140), 제2 암복호화 코어(220_2)는 제2 암호문 데이터(Cip_D2)를 제2 평문 데이터(Pla_D2)로 복호화함에 있어서, 제1 암복호화 코어(220_1)의 동작 블록 B(OB_B1)에서 생성된 키를 사용할 수 있다(S160). 각 동작 블록에 대한 구체적인 예는 후술된다. 먼저, 암호화 또는 복호화를 수행하는 동작 블록 A의 예가 설명된다.
도 3은 도 2의 제1 암복호화 코어의 동작 블록 A의 예를 나타내는 도면이다. 도 2 및 도 3을 참조하면, 제1 암복호화 코어(220_1)의 동작 블록 A(OB_A1)는 제1 평문 데이터(Pla_D1)를 다수의 라운드(round)에서 순차적으로 암호화 연산하여 제1 암호문 데이터(Cip_D1)로 암호화한다. 본 게시에서 하나의 라운드에서 다음 라운드로 인가되는 데이터 또는 각 라운드에 입력되는 데이터 및 출력되는 데이터를 데이터 블록 또는 블록이라 지칭할 수 있다. 따라서, 제1 평문 데이터(Pla_D1) 및 제1 암호문 데이터(Cip_D1)도 데이터 블록 또는 블록으로 지칭될 수 있다. 각 라운드에서의 구체적인 암호화 연산은 암호 알고리즘마다 상이할 수 있다.
도 4는 도 3의 동작 블록 A가 AES(Advanced Encryption Standard) 알고리즘으로 암호화를 수행하는 예를 나타내는 도면이다. 도 4의 동작 블록 A(OB_A1a)는 하나의 제1 프리 라운드(Pre-Round 1, PR1)와 N개의 라운드(RD1~RDN)로 구현될 수 있다. 제1 프리 라운드(PR)는 제1 평문 데이터(Pla_D1)를 암호 키(cipher key)와 배타적 논리합한다. 도 4의 제1 프리 라운드(PR1)로 입력되는 키를 라운드 키(round key)라 명명될 수 있고, 후술되는 바와 같이, 제1 프리 라운드(PR1)로 입력되는 라운드 키는 암호 키(CK)와 동일할 수도 있어, 암호 키(CK)로 명명될 수도 있다. 또한, 제1 프리 라운드(PR1)에서의 배타적 논리합은 후술되는 연산 AddRoundKey()와 동일함을 알려둔다.
N개의 라운드(RD1~RDN)는 각각, 이전 단계의 라운드(또는 제1 프리 라운드)의 암호화 연산 결과를 컨퓨젼(confusion) 및 디퓨전(diffusion)한 후, 각 라운드에 고유한 라운드 키 RK1~RKN와 배타적 논리합한다. 컨퓨젼은 연속되는 라운드의 데이터 블록 사이의 관계를 모호하게 하는 것이고, 디퓨젼은 데이터 블록의 패턴을 분산시키는 것을 말한다.
도 4의 제1 평문 데이터(Pla_D1)는 128 비트이다. 암호 키(CK)의 크기가 각각 128 비트, 192 비트 및 256 비트인 경우에 대해, AES는 각각 AES-128, AES-192 및 AES-256으로 명명될 수 있다. 라운드의 개수는 암호 키(CK)의 크기에 따라 달라진다.
도 5는 도 4의 암호 키의 크기에 따른 라운드의 개수를 나타내는 표이다. 도 4 및 도 5를 참조하면, AES-128인 경우, 암호 키(CK)는 4 워드(word), 즉 128 비트이고, 10개의 라운드가 진행된다. 그리고 AES-192 및 AES-256인 경우, 각각 암호 키(CK)는 6 워드 및 8 워드이고, 12개 및 14개의 라운드가 진행되다. 도 4의 제1 프리 라운드(PR1)는 라운드의 개수에 포함되지 아니한다. 다만, AES-128, AES-192 및 AES-256 모두 블록 크기, 즉 제1 평문 데이터(Pla_D1)의 크기는 128 비트로 동일하다.
다시 도 4를 참조하면, 각 라운드(RD1~RDN)는 전술된 동작을 수행하기 위해 SubBytes(), ShiftRows(), MixColumns() 및 AddRoundKey()의 4가지 연산을 차례로 수행한다. 단, 마지막 라운드인 라운드 N(RDN)에서는 연산 MixColumns()이 수행되지 아니한다. 연산 SubBytes()는 암호화된 결과(제1 암호문 데이터(Cip_D1))가 선형적인 구조를 갖지 않도록 데이터 블록의 각 바이트(byte)를 섞는다(scramble). 전술된 바와 같이, 데이터 블록은 128 비트로, 바이트 크기의 값을 원소로 하는 4x4 행렬로 표현될 수 있다. 데이터 블록의 각 바이트를 GF(2^8)의 갈로아 필드(Galois field) 상의 다항식으로 표현하여 역수를 구한 뒤 GF(2)에서 아핀 (Affine) 변환함으로써, 연산 SubBytes()가 수행될 수 있다. 연산 ShiftRows()는, 데이터 블록의 각 행을 일정한 수만큼 쉬프트(shift)함으로써 수행된다. 연산 MixColumns()은 데이터 블록의 각 열의 원소들을 섞는다. 데이터 블록의 각 열을 4개의 항을 갖는 3차 다항식으로 표현하고 mod x^4+1 상의 다항식과 곱하여 행렬 곱셈으로 표현함으로써, 연산 MixColumns()가 수행될 수 있다. 연산 SubBytes(), 연산 ShiftRows() 및 연산 MixColumns()을 수행함으로써, 전술된 데이터 블록에 대한 컨퓨전 및 디퓨전이 수행된다. 데이터 블록의 원소(바이트)들과 라운드 키를 배타적 논리합함으로써, 연산 AddRoundKey()이 수행된다.
상기의 동작을 알고리즘으로 표현하면 도 6의 알고리즘 1과 같다. 도 6의 알고리즘 1에서 Nb 및 Nr은 각각, 데이터 블록의 크기(워드 단위) 및 라운드 개수를 나타내고 w[]는 라운드 키의 값을 나타낸다. 따라서, Nb는 4이고 Nr은 암호 키의 크기에 따라 달라진다. 다만, 이하에서는 설명의 편의를 위해 AES-128의 예로 설명된다. 이 경우, 암호 키(CK)는 128 비트이다. 암호 키(CK)는, 예를 들어, {2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c}의 값을 가질 수 있다.
알고리즘 1에서 데이터 블록은 state로 기술되었고, 도 4의 예에서 제1 평문 데이터(Pla_D1)가 제1 프리 라운드(PR1)에 입력되면(행 5), 전술된 바와 같이, 제1 평문 데이터(Pla_D1)와 라운드 키 RK0를 배타적 논리합한다. 즉, 제1 평문 데이터(Pla_D1)와 라운드 키 RK0에 대해 연산 AddRoundKey()를 수행한다(행 7). 알고리즘 1의 행 7의 w[0, Nb-1]에서 Nb는 4이므로 라운드 키 RK0는 w[0, 3]으로 나타낼 수 있다. 전술된 암호 키(CK)의 예에 대해, w[0, 3]은 w0 = 2b7e1516, w1 = 28aed2a6 w2, = abf71588, 및 w3 = 09cf4f3c이다. 즉, 제1 평문 데이터(Pla_D1)와 AddRoundKey 연산되는 라운드 키 RK0의 값인 w[0, 3]은 암호 키(CK)와 동일하다.
라운드 1부터 라운드 9까지는 전술된 바와 같이, 데이터 블록에 대해 SubBytes(), ShiftRows(), MixColumns() 및 AddRoundKey()의 4가지 연산이 차례로 수행된다(행 9~행 14). 마지막 라운드인 라운드 10에 대하여는, 연산 MixColumns()을 제외한 SubBytes(), ShiftRows(), 및 AddRoundKey()의 3가지 연산이 차례로 수행된다(행 16 ~ 행 18). 라운드 10에서는 라운드 키 w[40, 43]이 사용된다.
전술된 암호 키(CK)의 예에 대한 각 라운드 키는 AES 표준인 FIPS-197의 Appendix A의 A.1의 표에 예시되어 있다. AES-128에서, 이전 라운드에서 생성된 라운드 키가 확장(expansion)되어 다음 라운드의 라운드 키가 생성된다. 라운드 키RK1부터는 다음의 수학식 1로부터 각 라운드 키를 이루는 각 워드를 생성함으로써 구한다.
Figure 112014099738881-pat00001
(1)
상기 수학식 1에서, RotWord는 워드를 순환 이동 시키는 함수로 네 개의 바이트로 구성된 하나의 워드 내에서 각 바이트를 한 바이트씩 왼쪽으로 이동시킨다. 예를 들어, RotWord는 바이트 a0, a1, a2, a3로 구현된 워드 [a0, a1, a2, a3]를 [a1, a2, a3, a0]로 변환하다. Subword는 연산 SubBytes()와 유사하나 단지 네 개의 바이트에만 적용된다. RCon은 라운드 상수로 4 바이트의 값을 갖는다. 따라서, 제1 암호문 데이터(Cip_D1)가 출력되는 최종 라운드 RDN에서 사용되는 제N 라운드 키(최종 라운드 키) RKN은 다른 라운드 키가 모두 산출되어야 생성될 수 있다. 각 라운드 키는 도 2의 동작 블록 B(OB_B1)에서 생성되어 동작 블록 A(OB_A1)로 인가될 수 있다.
도 7은 도 3의 동작 블록 A가 AES(Advanced Encryption Standard) 알고리즘으로 복호화를 수행하는 예를 나타내는 도면이다. 도 7을 참조하면, 도 4의 암호화 동작을 역으로 수행함으로써 동작 블록 A(OB_A1a)에서의 복호화가 수행된다. 따라서, 제1 암호문 데이터(Cip_D1)가 제2 프리 라운드(PR2)에 입력되면, 제1 암호문 데이터(Cip_D1)와, 도 4의 암호화 동작 시에 제1 암호문 데이터(Cip_D1)가 출력되는 최종 라운드 RDN의 제N 라운드 키 RDK가 배타적 논리합(또는 AddRoundKey())된다. 최종 라운드가 10인 AES-128의 예에서, w[40, 43]의 제N 라운드 키 RKN가 제2 프리 라운드(PR2)로 입력된다. 전술한 바와 같이, 제N 라운드 키 RKN는 이전 라운드까지의 라운드 키가 모두 계산된 후에 산출될 수 있으므로, 제N 라운드 키 RKN의 생성에 시간 및 전력 소모가 상당할 수 있다.
그리고, 도 7의 라운드 RD1'부터 라운드 RDN-1'까지는 각 라운드로 입력되는 데이터 블록에 대해 InverseShiftRows(), InverseSubBytes(), AddRoundKey() 및 IverseMixColumns()의 4가지 연산이 차례로 수행된다. 그리고, 제1 평문 데이터(Pla_D1)를 출력하는 도 7의 최종 라운드 RDN'에서는 연산 IverseMixColumns()을 제외한 InverseShiftRows(), InverseSubBytes() 및 AddRoundKey()의 3가지 연산이 차례로 수행된다. 연산 InverseShiftRows(), 연산 InverseSubBytes() 및 연산 IverseMixColumns()는 각각, 전술된 SubBytes(), ShiftRows() 및 MixColumns()에 대한 역 연산이고, AddRoundKey()는 암호화 시의 AddRoundKey()와 동일하므로 이에 대한 추가적인 설명은 생략한다. 도 7에서 복호화를 수행하는데 사용되는 라운드 키는 도 4의 암호화를 수행하는데 사용되는 라운드 키와 동일하다. 예를 들어, 도 4의 라운드 키 R1과 도 7의 라운드 키 R1은 동일한 값(w[4, 7])을 갖는다. 또한, 도 4의 제N 라운드 키 RKN와 도 7의 제N 라운드 키 RKN은 동일한 값(w[40, 43])을 갖는다.
도 7의 각 라운드는 도 4의 대응되는 라운드와 별개의 로직으로 구비될 수 있다. 예를 들어, 도 7의 라운드 RD1'과 도 7의 라운드 RD1'에 대응되는 도 4의 라운드 RDN은 각각 별개의 로직으로 구비될 수 있다. 또는, 도 7의 각 라운드는 도 4의 대응되는 라운드와 동일한 로직으로 구비될 수 있다. 예를 들어, 도 7의 라운드 RD1'과 도 7의 라운드 RD1'에 대응되는 도 4의 라운드 RDN은 하나의 로직에서 시간을 달리하여 암호화 및 복호화가 수행될 수도 있다. 도 8은 도 3의 동작 블록 A가 Feistel 방식의 알고리즘으로 암호화를 수행하는 예를 나타내는 도면이다. 도 2 및 도 8을 참조하면, 제1 암복호화 코어(220_1)의 동작 블록 A(OB_A1b)는, 도 4의 non-Feistel 방식인 AES 알고리즘과 달리, Feistel Cipher 방식의 알고리즘을 이용하여 암호화를 수행한다. 구체적으로, 도 2의 제1 암복호화 코어(220_1)의 동작 블록 A(OB_A1b)는 제1 평문 데이터(Pla_D1)를 두 개로 나누어서 오른쪽 부분(R)과 라운드 키(RK1, RK2, …, RKN)를 F 함수로 연산하고, 이를 제1 평문 데이터(Pla_D1)의 왼쪽 부분(L)과 배타적 논리합하여 출력한다. 이렇게 입력되는 데이터 블록을 둘로 나뉘어 오른쪽 부분(R)을 암호화한 후 왼쪽 부분(L)과 배타적 논리합하는 과정이 하나의 라운드로 취급된다. 도 8은 동작 블록 A(OB_A1b)가 N개의 라운드를 통해 암호화하는 동작을 도시하였다. Feistel 방식의 알고리즘으로는 DES(Data Encryption Standard), 3DES 또는 SEED 등이 있다. 도 8을 통해, Feistel 방식의 알고리즘을 이용한 동작 블록 A(OB_A1b)의 암호화 동작만이 설명되었으나, 전술된 암호화 동작을 역으로 수행함으로써 복호화를 수행하므로, 동작 블록 A(OB_A1b)의 복호화 동작에 대한 구체적인 설명은 생략한다.
도 2의 제1 암복호화 코어(220_1)의 동작 블록 A(OB_A1)는 전술된 알고리즘 이외의 다른 블록 암호화 알고리즘에 의해 동작할 수 있다. 이상에서 설명된 제1 암복호화 코어(220_1)의 동작 블록 A(OB_A1)에 대한 사항은, 다른 암복호화 코어(220_1, …, 220_X)의 동작 블록 A(OB_A2, …, OB_AX)에 대해서도 적용될 수 있다.
도 9는 도 2의 제1 암복호화 코어의 일 예를 나타내는 도면이다. 도 9를 참조하면, 제1 암복호화 코어(220_1a)는 암복호화부(220_11) 및 암복호화 키 스케줄러(220_12)를 포함할 수 있다. 암복호화부(220_11)는 전술된 암호화 알고리즘을 이용하여 제1 평문 데이터(Pla_D1)를 제1 암호문 데이터(Cip_D1)로 암호화하거나 제1 암호문 데이터(Cip_D1)를 제1 평문 데이터(Pla_D1)로 복호화한다. 암복호화부(220_11)는 도 4 및 도 7의 동작 블록 A(OB_A1a)일 수 있다. 따라서, 암복호화부(220_11)에 대한 좀더 자세한 설명은 생략한다. 암복호화 키 스케줄러(220_12)는 암복호화부(220_11)가 암복호화를 수행함에 있어서 각 라운드에서 사용되는 라운드 키(RK)를 생성한다. 암복호화 키 스케줄러(220_12)에 의해 생성된 라운드 키(RK)는 전술된 도 4 등의 라운드 키일 수 있다. 따라서, 암복호화 키 스케줄러(220_12)는 입력된 암호 키(CK)를 확장(expansion)하여 라운드 키(RK)를 생성할 수 있다. 암복호화 키 스케줄러(220_12)는 도 2의 동작 블록 B(OB_B1)일 수 있다.
도 10은 본 발명의 다른 실시예에 따른 암복호화기의 예를 나타내는 도면이고, 도 11은 도 10의 암복호화기의 동작 방법의 일 예를 나타내는 도면이다. 도 10 및 도 11을 참조하면, 본 발명의 실시예에 따른 암복호화기(1000)는 제1 데이터 처리기(210) 및 다수의 암복호화 코어(220_1a, 220_2a, …, 220_Xa)를 구비하는 암복호화 코어부(220A)를 포함하고, 입력된 평문 스트림(Pla_T)을 다수의 평문 데이터(Pla_D1, Pla_D2, …, Pla_DX)로 분할하여 다수의 암복호화 코어(220_1a, 220_2a, …, 220_Xa)에 분배하는 단계(S1120), 다수의 암복호화 코어(220_1a, 220_2a, …, 220_Xa)가, 각각, 순차적으로 제1 내지 제N 라운드(round)에서의 연산을 수행하여, 평문 데이터를 암호문 데이터로 암호화하는 단계(S1140), 다수의 암복호화 코어(220_1a, 220_2a, …, 220_Xa) 중 제1 암복호화 코어(220_1a)에서, 제N 라운드에서 사용된 제N 라운드 키(round key, RKN)를 재생성하는 단계(S1160), 및 다수의 암복호화 코어(220_1a, 220_2a, …, 220_Xa)가, 제1 암복호화 코어(220_1a)가 재생성한 제N 라운드 키(RKN)를 이용하여, 암호문 데이터를 평문 데이터로 복호화하는 단계(S1180)를 포함할 수 있다.
제1 데이터 처리기(210)는 평문 스트림(Pla_T)을 다수의 평문 데이터(Pla_D1, Pla_D2, …, Pla_DX)로 분할하여 다수의 암복호화 코어(220_1a, 220_2a, …, 220_Xa)로 분배한다(S1120). 제1 암복호화 코어(220_1a)는 도 9의 제1 암복호화 코어(220_1a)일 수 있다. 따라서, 제1 암복호화 코어(220_1a)는 암복호화부(220_11) 및 암복호화 키 스케줄러(220_21)를 포함할 수 있다. 암복호화부(220_11)는 도 4 등의 다수의 라운드를 통해 제1 평문 데이터(Pla_D1)를 제1 암호문 데이터(Cip_D1)로 암호화를 수행하고, 도 7의 다수의 라운드를 통해 제1 암호문 데이터(Cip_D1)를 제1 평문 데이터(Pla_D1)로 복호화를 수행할 수 있다. 제2 암복호화 코어(220_2a) 내지 제X 암복호화 코어(220_Xa)도 제1 암복호화 코어(220_1a)와 마찬가지로 암복호화부(220_21, 220_X1) 및 암복호화 키 스케줄러(220_22, 220_X2)를 포함할 수 있다. 다수의 암복호화 코어(220_1a, 220_2a, …, 220_Xa)는 입력되는 평문 데이터에 대해 암호화를 수행한다(S1120).
다수의 암복호화 코어(220_1a, 220_2a, …, 220_Xa)에 의해 암호문 데이터가 생성된 후, 해당 암호문 데이터에 대한 복호화가 요구될 수 있다. 예를 들어, 저장 장치에 저장되었던 암호문 데이터를 사용하고자 할 경우, 암호문 데이터에 대한 복호화가 수행될 수 있다. 전술한 바와 같이, 복호화의 첫 단계(도 7의 제2 프리 라운드(PR2))에서 제N 라운드 키(RKN)가 요구된다. 제N 라운드 키(RKN)는 암호화 동작 시의 최종 라운드, 즉 암호문 데이터가 출력되는 라운드에서 라운드 키를 말한다.
이를 위해, 다수의 암복호화 코어(220_1a, 220_2a, …, 220_Xa) 중 제1 암복호화 코어(220_1a)에서 제N 라운드 키(RKN)를 재생성한다(S1160). 본 게시에서 복호화를 위해 제N 라운드 키(RKN)를 생성하는 것을, 암호화를 위해 제N 라운드 키(RKN)를 생성하는 것과의 구분을 위해 제N 라운드 키(RKN)를 "재생성"하는 것으로 기술된다.
제2 암복호화 코어(220_2a) 내지 제X 암복호화 코어(220_Xa)의 암복호화 키 스케줄러(220_22, 220_X2)는 각각, 별도로 제N 라운드 키(RKN)를 생성하지 아니하고, 제1 암복호화 코어(220_1a)에서 재생성된 제N 라운드 키(RKN)를 이용하여 암호문 데이터를 평문 데이터로 복호화한다(S1180). 따라서, 다수의 암복호화 코어가 복호화를 위해, 모두 제N 라운드 키(RKN)를 생성하지 아니하므로, 전력 소모를 줄일 수 있다.
도 10에서는 제1 암복호화 코어(220_1a)가 생성한 제N 라운드 키(RKN)가 다른 암복호화 코어에서 복호화하는데 사용되는 것으로 도시하였으나 이에 한정되는 것은 아니다. 예를 들어, 제2 암복호화 코어(220_2a)에 의해 생성된 제N 라운드 키(RKN)가 다른 암복호화 코어에서 수행되는 복호화에 사용될 수 있다. 이하에서 기술되는 다른 실시예에서도 같을 수 있다.
도 12는 본 발명의 다른 실시예에 따른 암복호화기의 예를 나타내는 도면이다. 도 12는 다수의 암복호화 코어를 포함하는 암복호화 코어부(200B)를 포함한다. 평문 스트림(Pla_T)으로부터 분배된 다수의 평문 데이터(Pla_D1, Pla_D2, …, Pla_DX)를 다수의 암복호화 코어(220_1b, 220_2b, …, 220_Xb)로 제공한다. 제1 암복호화 코어(200_1b)는 도 9의 제1 암복호화 코어(200_1a)와 동일한 구성을 가질 수 있다. 다만, 반면, 제1 암복호화 코어(200_1b)는 후술되는 바와 같이, 제N 라운드 키(RKN)를 포함한 모든 라운드 키(RK)를 제2 암복호화 코어(220_2b) 내지 제X 암복호화 코어(220_Xb)로 전송할 수 있다.
도 12의 제2 암복호화 코어(220_2b) 내지 제X 암복호화 코어(220_Xb)는 도 11과 달리, 암복호화 키 스케줄러를 포함하지 아니할 수 있다. 제2 암복호화 코어(220_2b) 내지 제X 암복호화 코어(220_Xb)는 제1 암복호화 코어(220_1b)의 암복호화 키 스케줄러(220_12)에서 생성된 모든 라운드 키(RK)를 수신하여 암호화 및 복호화를 수행할 수 있다. 따라서, 암호화 및 복호화를 수행하기 위해 라운드 키를 생성하는데 소요되는 전력 및 암복호화 키 스케줄러에 대한 면적이 줄 수 있다.
도 13은 도 2의 제1 암복호화 코어의 다른 예를 나타내는 도면이다. 도 13의 제1 암복호화 코어(220_1c)는 도 9의 제1 암복호화 코어(220_1a)와 마찬가지로, 암복호화부(220_11) 및 암복호화 키 스케줄러(220_12)를 포함할 수 있다. 도 13의 암복호화부(220_11) 및 암복호화 키 스케줄러(220_12)는 각각, 도 9의 암복호화부(220_11) 및 암복호화 키 스케줄러(220_12)와 동일한 동작을 수행할 수 있다. 따라서, 이에 대한 좀더 자세한 설명은 생략한다. 다만, 도 13의 암복호화 키 스케줄러(220_12)는 후술되는 바와 같이, 복호화 동작 시에 제N 라운드 키(RKN)를 생성하지 아니할 수 있다. 도 13의 제1 암복호화 코어(220_1c)는 키 저장부(220_13)를 더 구비할 수 있다.
키 저장부(220_13)는 레지스터(register) 등으로 구현될 수 있다. 키 저장부(220_13)는 제1 암복호화 코어(220_1c)에서 제1 평문 데이터(Pla_D1)를 제1 암호문 데이터(Cip_D1)로 암호화하는 과정에서 생성된 제N 라운드 키(RKN), 즉 최종 라운드 키를 저장할 수 있다. 키 저장부(220_13)는 예를 들어, 서로 다른 암호 키(CK)에 대응되는 다수의 제N 라운드 키(RKN)를 저장할 수도 있다. 예를 들어, 키 저장부(220_13)는 제1 값의 암호 키(CK)에 대해 생성된 제N 라운드 키(RKN)와 제1 값의 암호 키(CK)에 대해 생성된 제N 라운드 키(RKN)를 함께 저장할 수 있다.
제1 암호문 데이터(Cip_D1)에 대한 복호화가 요구되는 경우, 제1 암복호화 코어(220_1c)는 복호화를 위해 제N 라운드 키(RKN)를 재생성하지 아니하고, 키 저장부(220_13)에 저장된 제N 라운드 키(RKN)를 이용할 수 있다. 마찬가지로, 도 2의 제2 암복호화 코어(220_2) 내지 제X 암복호화 코어(220_X)도 제1 암복호화 코어(220_1c)의 키 저장부(220_13)에 저장된 제N 라운드 키(RKN)를 수신하여 복호화할 수 있다. 따라서, 복호화를 위해 다수의 암복호화 코어(220_1, 220_2, …, 220_X)가 제N 라운드 키(RKN)를 재생성하기 위해 요구되는 동작 시간 및 전력을 줄일 수 있다.
본 발명의 실시예에 따른 암복호화기 보안을 위해, 키 저장부(220_13)로의 접근 권한이 엄격히 제어될 수 있다. 키 저장부(220_13)는 암복호화 키 스케줄러(220_12)에 포함되거나 암복호화 키 스케줄러(220_12)의 외부에 구비될 수 있다.
도 14는 도 13의 제1 암복호화 코어를 구비하는 암복호화기의 동작 방법의 일 예를 나타내는 도면이다. 도 13 및 도 14를 참조하면, 제1 암복호화 코어(220_1c)에서, 제1 평문 데이터(Pla_D1)를 제1 암호문 데이터(Cip_D1)로 암호화하기 위해 제N 라운드에서 사용되는 제N 라운드 키(RKN)를 생산하고 저장하는 단계(S1410), 제1 암복호화 코어(220_1c)로 입력되는 암호 키(CK)가 변경되었는지를 확인하는 단계(S1420), 암호 키(CK)가 변경되지 않았다면(S1420의 NO), 키 저장부(220_13)에 저장된 제N 라운드 키(RKN)를 사용하여, 도 2의 다수의 암복호화 코어(220_1, 220_2, …, 220_X)가, 암호문 데이터를 평문 데이터로 복호화하는 단계(S1430), 및 암호 키(CK)가 변경되었다면(S1420의 YES), 제1 암복호화 코어(220_1c)가 변경된 암호 키(CK)를 이용하여 제N 라운드 키(RKN)를 생산하는 단계(S1440), 단계 S1440에서 생성된 제N 라운드 키(RKN)로 업데이트(update)하는 단계(S1450), 도 2의 다수의 암복호화 코어(220_1, 220_2, …, 220_X)가, 업데이트 된 제N 라운드 키(RKN)를 이용하여, 암호문 데이터를 평문 데이터로 복호화하는 단계(S1460)를 통해, 암호화 및 복호화가 수행될 수 있다.
제1 암복호화 코어(220_1c)로 입력되는 암호 키(CK)가 변경되었는지를 확인하는 단계(S1420)는, 제1 암복호화 코어(220_1c)에서, 제1 평문 데이터(Pla_D1)를 제1 암호문 데이터(Cip_D1)로 암호화하기 위해 제N 라운드에서 사용되는 제N 라운드 키(RKN)를 생산하고 저장하는 단계(S1410)가 수행된 이후에, 제1 암복호화 코어(220_1c)로 새로운 파일(file)에 대한 암호화 또는 복호화 요청이 있는 경우에 수행될 수 있다. 파일은 적어도 하나 이상의 평문 스트림(Pla_T)을 포함할 수 있다. 암호 키(CK)는 파일마다 상이할 수 있다. 예를 들어, 제1 동영상 파일에 대한 암호 키(CK)의 값과 제2 동영상 파일에 대한 암호 키(CK)의 값이 상이할 수 있다. 다만, 같은 파일에 대하여는 다수의 암복호화 코어(220_1, 220_2, …, 220_X)에서 사용되는 암호 키(CK)는 모두 동일할 수 있어, 암호 키(CK)의 변경 여부는 제1 암복호화 코어(220_1c)에서만 확인해도 무관할 수 있다.
제1 암복호화 코어(220_1c)로 입력되는 암호 키(CK)가 변경되었는지를 확인하는 단계(S1420)는, 예를 들어, 새로운 파일이 입력되면 별도의 비교 동작을 수행하지 아니하고 암호 키(CK)가 변경되었다고 판단할 수 있다. 또는, 기존의 암호 키(CK)를 저장하고 추후에 암호 키(CK)가 입력되면 기존의 암호 키(CK)와 새로운 암호 키(CK)를 비교(예를 들어, 배타적 논리합)함으로써 판단될 수 있다. 또는, 제1 암복호화 코어(220_1c)는 키 레지스터(key register)를 포함하여, 입력되는 암호 키(CK)가 레지스터에 기입되는 경우, 새로운 암호 키(CK)가 입력되는 것으로 처리할 수 있다. 제1 암복호화 코어(220_1c)가 변경된 암호 키(CK)를 이용하여 제N 라운드 키(RKN)를 생산하는 단계(S1440)는 변경된 암호 키(CK)와 함께 입력된 파일 또는 평문 스트림(Pla_T)에 대한 암호화 요청에 응답하여, 다수의 암복호화 코어(220_1, 220_2, …, 220_X)가, 암호화를 수행하는 때에 생성될 수 있다.
도 15는 본 발명의 다른 실시예에 따른 암복호화기를 나타내는 도면이다. 도 15의 암복호화기(1500)는 도 2의 암복호화기(200) 등과 마찬가지로, 제1 데이터 처리기(210) 및 다수의 암복호화 코어를 포함하는 암복호화 코어부(220)를 포함한다. 나아가, 도 15의 암복호화기(1500)는 제2 데이터 처리기(230)를 더 포함할 수 있다. 제2 데이터 처리기(230)는 다수의 암호문 데이터(Cip_D1, Cip_D2, …, Cip_DX)를 암호문 스트림(Cip_T)으로 출력할 수 있다.
제2 데이터 처리기(230)의 동작은 제1 데이터 처리기(210)와 유사할 수 있다. 암호문 스트림(Cip_T)은 암복호화기(1500)와 전기적으로 연결될 수 있는 저장 장치(미도시)에 저장되거나, 암복호화기(1500)와 전기적으로 연결될 수 있는 통신 드라이버(미도시)를 통해 암복호화기(1500)가 구비되는 전자 장치의 외부로 전송될 수 있다. 이때, 암호문 스트림(Cip_T)은, 암복호화기(1500)와 저장 장치 또는 통신 드라이버 사이에서 데이터를 전송하는 버스 인터페이스에 규정된 크기의 단위로, 순차적으로 출력될 수 있다.
제2 데이터 처리기(230)는 또한, 외부로부터 입력되는 암호문 스트림(Cip_T)을 다수의 암호문 데이터(Cip_D1, Cip_D2, …, Cip_DX)로 분배하여 다수의 암복호화 코어(220_1, 220_2, …, 220_X)에 분배할 수 있다.
예를 들어, 암호문 스트림(Cip_T)은 암복호화기(1500)와 전기적으로 연결될 수 있는 저장 장치로부터 입력되거나, 암복호화기(1500)와 전기적으로 연결될 수 있는 통신 드라이버를 통해 암복호화기(1500)가 구비되는 전자 장치의 외부로부터 입력될 수 있다. 암호문 스트림(Cip_T)은, 암복호화기(1500)와 저장 장치 또는 통신 드라이버 사이에서 데이터를 전송하는 버스 인터페이스에 규정된 크기의 단위로, 순차적으로 입력될 수 있다. 도 15는 제1 데이터 처리기(210) 및 제2 데이터 처리기(230)가 분리되어 구비되는 것으로 도시하고 있으나, 제1 데이터 처리기(210) 및 제2 데이터 처리기(230)는 하나의 데이터 처리기로 구현될 수 있다.
도 16은 본 발명의 다른 실시예에 따른 암복호화기를 나타내는 도면이다. 도 16을 참조하면, 암복호화기(1600)는 암호화 및 복호화가 동시에 수행될 수 있는 Full Duplex 구조로 구현된다. 이를 위해, 암복호화기(1600)의 암복호화 코어부(220C)는 암호화 코어부(222a) 및 복호화 코어부(224a)를 별도로 구비한다. 암호화 코어부(222a) 및 복호화 코어부(224a)가 각각, 다수의 암호화 코어(222_1a, 222_2, …, 222_X) 및 다수의 복호화 코어(224_1a, 224_2, …, 224_X)를 구비한다.
다수의 암호화 코어(222_1a, 222_2, …, 222_X)는 각각, 입력된 평문 데이터를 암호문 데이터로 암호화한다. 예를 들어, 제1 암호화 코어(222_1a)는 제1 평문 데이터(Pla_D1)를 제1 암호문 데이터(Cip_D1)로 암호화하고, 제2 암호화 코어(222_2)는 제2 평문 데이터(Pla_D2)를 제2 암호문 데이터(Cip_D2)로 암호화한다. 마찬가지로, 제X 암호화 코어(222_X)는 제X 평문 데이터(Pla_DX)를 제X 암호문 데이터(Cip_DX)로 암호화한다. 전술한 바와 같이, 평문 데이터는 X개 이상으로 분배될 수 있다.
다수의 암호화 코어(222_1a, 222_2, …, 222_X)로 입력되는 평문 데이터는 도 2의 평문 스트림(Pla_T)으로부터 분배된 것일 수 있다. 이를 위해, 도 16의 암복호화기(1600) 또한, 도 15의 제1 데이터 처리기(210)를 구비할 수 있다. 다만, 도 16에서는 도시의 편의를 위해, 제1 데이터 처리기(210)를 도시하지 아니하였다. 또는, 전술된 바와 같이, 제1 데이터 처리기(210)는 암복호화기(1600)의 외부에 위치하여, 다수의 암호화 코어(222_1a, 222_2, …, 222_X)로 입력되는 평문 데이터는 암복호화기(1600)의 외부로부터 입력될 수도 있다.
다수의 암호화 코어(222_1a, 222_2, …, 222_X)는 각각, 암호화부(222_11, 222_21, …, 222_X1) 및 암호화 키 스케줄러(222_12, 222_22, …, 222_X2)를 포함할 수 있다. 암호화부(222_11, 222_21, …, 222_X1)는 전술된 도 4 등의 암호화 동작을 수행할 수 있다. 즉, 암호화부(222_11, 222_21, …, 222_X1)는 다수의 라운드를 통해 암호화를 순차적으로 수행하여 평문 데이터를 암호문 데이터로 암호화할 수 있다. 암호화부(222_11, 222_21, …, 222_X1)가 각 라운드에서 사용되는 라운드 키(RK)는 암호화 키 스케줄러(222_12, 222_22, …, 222_X2)에서 생성된다. 예를 들어, 제1 암호화 코어(222_1a)의 암호화 키 스케줄러(222_12)는 제1 암호화 코어(222_1a)의 암호화부(222_11)에서 사용되는 라운드 키(RK)를 생성하고, 제2 암호화 코어(222_2)의 암호화 키 스케줄러(222_22)는 제2 암호화 코어(222_2)의 암호화부(222_21)에서 사용되는 라운드 키(RK)를 생성한다. 마찬가지로, 제X 암호화 코어(222_X)의 암호화 키 스케줄러(222_ X2)는 제X 암호화 코어(222_X)의 암호화부(222_X1)에서 사용되는 라운드 키(RK)를 생성한다.
암호화 키 스케줄러(222_12, 222_22, …, 222_X2)는 전술된 바와 같이, 암호 키로부터 라운드 키(RK)를 확장하여 생성하는 것과 동일한 방식으로 라운드 키(RK)를 생성할 수 있다. 즉, 암호화 키 스케줄러(222_12, 222_22, …, 222_X2)는 도 4의 라운드 키 RK0 내지 라운드 키 RKN(제N 라운드 키(RKN))를 순차적으로 생성한다.
다수의 복호화 코어(224_1a, 224_2, …, 224_X)는 각각, 입력된 암호문 데이터를 평문 데이터로 복호화한다. 예를 들어, 제1 복호화 코어(222_1a)는 제1 암호문 데이터(Cip_D1)를 제1 평문 데이터(Pla_D1)로 암호화하고, 제2 복호화 코어(224_2)는 제2 암호문 데이터(Cip_D2)를 제2 평문 데이터(Pla_D2)로 복호화한다. 마찬가지로, 제X 복호화 코어(224_X)는 제X 암호문 데이터(Cip_DX)를 제X 평문 데이터(Pla_DX)로 복호화한다.
다수의 복호화 코어(224_1a, 224_2, …, 224_X)는 각각, 복호화부(224_11, 224_21, …, 224_X1) 및 복호화 키 스케줄러(224_12, 224_22, …, 224_X2)를 포함할 수 있다. 복호화부(224_11, 224_21, …, 224_X1)는 전술된 도 7 등의 복호화 동작을 수행할 수 있다. 즉, 복호화부(224_11, 224_21, …, 224_X1)는 다수의 라운드를 통해 복호화를 순차적으로 수행하여 암호문 데이터를 평문 데이터로 복호화할 수 있다. 예를 들어, 제1 복호화 코어(224_1a)의 복호화 키 스케줄러(224_12)는 제1 복호화 코어(224_1a)의 복호화부(224_11)에서 사용되는 라운드 키(RK)를 생성하고, 제2 복호화 코어(224_2)의 복호화 키 스케줄러(224_22)는 제2 복호화 코어(224_1)의 복호화부(224_21)에서 사용되는 라운드 키(RK)를 생성한다. 마찬가지로, 제X 복호화 코어(224_X)의 복호화 키 스케줄러(224_X2)는 제X 복호화 코어(224_X)의 복호화부(224_X1)에서 사용되는 라운드 키(RK)를 생성한다.
복호화 키 스케줄러(224_12, 224_22, …, 224_X2)는 전술된 바와 같이, 암호 키로부터 라운드 키(RK)를 확장하여 생성하는 것과 동일한 방식으로 라운드 키(RK)를 생성할 수 있다. 이때, 다수의 복호화 코어(224_1a, 224_2, …, 224_X)는 복호화를 수행하기 위해 암호화 동작 시에 사용된 제N 라운드 키(RKN)를 사용하여야 한다. 본 발명의 실시예에 따른 암복호화기(1600)는 제1 복호화 코어(224_1a)에 암호화 키 스케줄러(224_13)를 더 포함한다. 제1 복호화 코어(224_1)의 암호화 키 스케줄러(224_13)는 제N 라운드 키(RKN)를 생성한다. 제1 복호화 코어(224_1)의 암호화 키 스케줄러(224_13)는 전술된 암호화 키 스케줄러와 동일한 방식으로 제N 라운드 키(RKN)를 생성할 수 있다.
제1 복호화 코어(224_1)에 생성된 제N 라운드 키(RKN)는 다수의 복호화 코어(224_1a, 224_2, …, 224_X)의 복호화 키 스케줄러(224_12, 224_22, …, 224_X2)로 전송된다. 다수의 복호화 코어(224_1a, 224_2, …, 224_X)는 제1 복호화 코어(224_1)에 생성된 제N 라운드 키(RKN)를 사용하여, 복호화를 수행한다. 이렇듯, 본 발명의 실시예에 따른 암복호화기(1600)는 Full Deplex 구조로 구현되어 보다 빠른 암호화 및 복호화를 수행하면서도, 다수의 복호화 코어(224_1a, 224_2, …, 224_X)가 각각, 복호화에 사용되는 제N 라운드 키(RKN)를 생성하기 위해 별도의 암호화 키 스케줄러를 구비하지 아니함으로써, 전력 소모 및 레이아웃 면적을 줄일 수 있다.
도 17은 본 발명의 다른 실시예에 따른 암복호화기를 나타내는 도면이다. 도 17의 암복호화기(1700)는 암복호화 코어부(220D)를 구비하고, 암복호화 코어부(220D)는 암호화 코어부(222b) 및 복호화 코어부(224b)를 별도로 구비하여 Full Duplex 구조로 구현될 수 있다. 도 17의 암호화 코어부(222b) 및 복호화 코어부(224b)의 동작 중 도 16의 암호화 코어부(222a) 및 복호화 코어부(224a)와 동일한 동작에 대한 설명은 생략한다. 도 17의 암호화 코어부(222b)의 제1 암호화 코어(222_1b)는 생성된 제N 라운드 키(RKN)를 복호화 코어부(224b)로 전송할 수 있다. 제1 복호화 코어(224_1b)는 복호화부(224_11) 및 복호화 키 스케줄러(224_12)와 함께, 키 저장부(224_13)를 더 포함할 수 있다. 키 저장부(224_13)의 구조 및 동작은 전술된 도 13의 키 저장부(220_13)와 동일하므로 이에 대한 자세한 설명은 생략한다.
제1 복호화 코어(224_1b)의 키 저장부(224_13)에 저장된 제N 라운드 키(RKN)는 다수의 복호화 코어(224_1a, 224_2, …, 224_X)의 복호화 키 스케줄러(224_12, 224_22, …, 224_X2)에 전송된다. 다수의 복호화 코어(224_1a, 224_2, …, 224_X)는 제1 복호화 코어(224_1b) 로부터 전송된, 키 저장부(224_13)에 저장되었던 제N 라운드 키(RKN)를 사용하여, 복호화를 수행할 수 있다. 다만, 이에 한정되는 것은 아니다. 도 17의 제1 암호화 코어(222_1b)는 제N 라운드 키(RKN)를 복호화 코어부(224b)가 복호화 동작을 수행하는 때에, 다수의 복호화 코어(224_1a, 224_2, …, 224_X) 각각으로 전송될 수도 있다. 이렇듯, 본 발명의 실시예에 따른 암복호화기(1700)는 다수의 복호화 코어(224_1a, 224_2, …, 224_X)가 각각, 복호화에 사용되는 제N 라운드 키(RKN)를 별도로 생성하지 아니하고 키 저장부(224_13)에 저장된 제N 라운드 키(RKN)를 사용하여 복호화를 수행함으로써, 전력 소모 및 복호화에 소요되는 시간을 줄일 수 있다. 다만, 키 저장부(224_13)에 저장된 제N 라운드 키(RKN)를 사용하여 복호화를 수행하기 위해 전술된 도 14와 같이 암호 키의 변경 여부를 확인(S1420)이 선행될 수 있다.
도 16 및 도 17은 암복호화기가 Full Duplex 구조로 구현됨에 있어 암호화 코어부 및 복호화 코어부가 별도로 구비되는 예를 도시하였다. 그러나 이에 한정되는 것은 아니다. 본 발명의 다른 실시예에 따른 암복호화기(1800)를 나타내는 도 18과 같이, 암호화 코어부 및 복호화 코어부가 별도로 구비되지 아니하고, 암복호화 코어부(220E)는 암호화 코어와 복호화 코어가 함께 구비되는 다수의 암복호화 코어(220_1d, 220_2c, …, 220_Xc)를 포함할 수 있다. 예를 들어, 제1 암복호화 코어(220_1d)는 제1 암호화 코어(222_1a) 및 제1 복호화 코어(224_1a)를 함께 포함하고, 제2 암복호화 코어(220_2c)는 제2 암호화 코어(222_2) 및 제2 복호화 코어(224_2)를 함께 포함할 수 있다. 마찬가지로, 제X 암복호화 코어(220_Xc)는 제X 암호화 코어(222_X) 및 제X 복호화 코어(224_X)를 함께 포함할 수 있다. 도 18은 제1 암복호화 코어(220_1d)가 도 16의 제1 암호화 코어(222_1a) 및 제1 복호화 코어(224_1a)를 포함하는 것으로 도시하고 있으나, 도 17의 제1 암호화 코어(222_1b) 및 제1 복호화 코어(224_1b)를 포함할 수도 있다.
도 19는 도 2의 제1 암복호화 코어의 다른 예를 나타내는 도면이다. 도 19를 참조하면, 제1 암복호화 코어(200_1e)는 암복호화부(220_11), 암복호화 키 스케줄러(220_12) 및 암복호화 초기화부(220_14)를 포함한다. 도 19의 암복호화부(220_11) 및 암복호화 키 스케줄러(220_12)는 도 4의 암호화 알고리즘에 따라 동작할 수 있다. 다만, 도 19의 제1 암복호화 코어(200_1e)가 암복호화 초기화부(220_14)를 더 구비함에 따라, 암복호화부(220_11)는 제1 평문 데이터(Pla_D1)의 변형값을 암호화하고 암복호화 키 스케줄러(220_12)는 입력 키(IK)를 더 수신하여 암복호화 초기화부(220_14)에서 사용되는 초기화 라운드 키(RK)를 더 생성할 수 있다.
암복호화 초기화부(220_14)는 암복호화부(220_11)로 입력되는 데이터 블록(즉, 제1 평문 데이터(Pla_D1) 또는 제1 암호문 데이터(Cip_D1))와 결합되는 초기화 결과값(I_Rst)을 생성하여 암복호화부(220_11)로 전송할 수 있다. 암복호화 초기화부(220_14)는 데이터 블록과 구분되는 트윅(tweak, i)을, 암호 키(CK)와 구분되는 입력 키(IK)에 대해 생성되는 초기화 라운드 키(RK)를 이용하여 암호화 또는 복호화를 수행함으써 초기화 결과값(I_Rst)을 생성한다. 예를 들어, 초기화 결과값(I_Rst)은 AES 알고리즘을 XTS 모드로 수행하는 때에, 트윅과 XTS-AES 키를 이용하여 AES 알고리즘을 수행한 결과에 대응되는 값일 수 있다.
도 20은 도 19의 제1 암복호화 코어의 동작 예를 나타내는 도면이다. 도 20의 (a)는 제1 암복호화 코어(200_1e)의 암호화 수행을 위한 동작 예를, 도 20의 (b)는 제1 암복호화 코어(200_1e)의 복호화 수행을 위한 동작 예를 나타낸다. 먼저, 도 19 및 도 20의 (a)를 참조하면, 제1 암복호화 코어(200_1e)의 AES_Enc 에서, AES 알고리즘에 의해 트윅(i)을 암호화한다. AES_Enc는 AES Encryption(암호화)를 수행하는 모듈(module)을 나타낸다. 따라서, 트윅(i)은 도 4와 같이 다수의 라운드를 통해 암호화될 수 있다. 트윅(i)을 암호화하는데 사용되는 각 라운드의 초기화 라운드 키(RK)는 입력 키(IK)로부터 확장된다. 트윅(i)은 데이터 블록과 동일한 크기를 갖는다.
이렇게 트윅을 암호화한 값은 첫 번째 원시 값(α0)과 모듈러 곱셈된다. 트윅을 암호화한 값과 첫 번째 원시 값(α0)의 모듈러 곱셈 연산의 제1 결과값(τ)이 초기화 결과값(I_Rst)으로 생성된다. 첫 번째 원시 값은 1이고 그 값을 트윅(i)을 암호화한 값과 모듈러 곱셈하므로 초기화 결과 값은 트윅(i)을 암호화한 값과 동일하다. α는 바이너리 필드(binary field)의 원시 원소(primitive element)이고, 원시 값(αj)은 α를 j회 거듭 제곱한 값으로, 평문 데이터의 일련 번호에서 1을 뺀 값을 나타낸다. 예를 들어, 도 2에서 평문 스트림(Pla_T)이 순차적 및 연속적으로 제1 평문 데이터(Pla_D1) 내지 제X 평문 데이터(Pla_DX)로 분할된 경우, 제1 평문 데이터(Pla_D1) 내지 제X 평문 데이터(Pla_DX)의 일련 번호는 1 내지 X로 설정될 수 있고, 원시 값(αj)의 j는 0 내지 X-1을 나타낸다.
제1 결과값(τ)는 제1 평문 데이터(Pla_D1)와 배타적 논리합된다. 제1 결과값(τ)와 제1 평문 데이터(Pla_D1)를 배타적 논리합한 제2 결과값(PP)이 AES_Enc로 입력된다. AES_Enc 는 AES 알고리즘에 의해 다수의 라운드를 통해 제2 결과값(PP)을 암호화하여 제3 결과값(CC)을 출력한다. 제2 결과(PP)의 암호화를 위해 사용되는 각 라운드의 라운드 키(RK)는 암호 키(CK)로부터 확장된다. 제3 결과값(CC)과 1 결과값(τ)을 배타적 논리합함으로써, 제1 암호문 데이터(Cip_D1)가 생성된다.
도 20에서 (a)에서 트윅(i)을 암호화 하는 AES_Enc 와 제1 평문 데이터의 변형값(PP)을 암호화 하는 AES_Enc 가 별개로 구비되는 것으로 도시되었으나, 이는 설명의 편의를 위한 것이고, 하나의 AES_Enc 에서 시간을 달리하여 트윅(i) 및 제1 평문 데이터의 변형값(PP)의 암호화가 수행될 수 있다. 즉, 하나의 AES_Enc 에서 트윅(i)을 암호화된 후에, 제1 평문 데이터의 변형값(PP)을 암호화될 수 있다.
다음으로 도 19 및 도 20의 (b)를 참조하면, 제1 암복호화 코어(200_1e)의 AES_Enc 에서, AES 알고리즘에 의해 트윅(i)을 암호화한다. 트윅(i)을 암호화하는 동작은 도 20의 (a)의 경우와 동일하다. 제1 결과값(τ), 즉 초기화 결과값(I_Rst)은 제1 암호문 데이터(Cip_D1)와 배타적 논리합하여 도 20의 (a)의 제3 결과값(CC)이 생성된다. 제1 결과값(τ)은 동일한 트윅(i) 및 동일한 입력 키(IK)에 의한 암호화 결과이므로 도 20의 (a)의 제1 결과값(τ)과 동일하다. 제3 결과값(CC)은 AES_Dec에서 AES 알고리즘에 의해 복호화되어 도 20의 (a)의 제2 결과값(PP)이 생성된다. AES_ Dec 는 AES Dencryption(복호화)를 수행하는 모듈을 나타낸다. 제2 결과값(PP)을 제1 결과값(τ)과 배타적 논리합함으로써, 제1 평문 데이터(Pla_D1)가 출력된다.
도 21은 본 발명의 다른 실시예에 따른 암복호화기를 나타내는 도면이고, 도 22 및 도 23은 각각, 도 21의 암복호화기의 동작 방법의 예를 나타내는 도면이다. 먼저 도 21 및 도 22를 참조하면, 암복호화기(2100)의 암복호화 코어부(220F)에 포함되는 다수의 암복호화 코어(220_1e, 220_2d, …, 220_Xd)로 평문 스트림(Pla_T)이 분할된 다수의 평문 데이터(Pla_D1, Pla_D2, …, Pla_DX)가 분배된다(S2220). 평문 스트림(Pla_T)을 분할하고 분해하는 것은 도 2 등과 마찬가지로 제1 데이터 처리기(210)에 의해 수행될 수 있으나, 도 21에서는 편의를 위해 그 도시를 생략하였다.
다수의 암복호화 코어(220_1e, 220_2d, …, 220_Xd) 중 제1 암복호화 코어(220_1e)에서, XTS 모드의 초기화 결과값(I_Rst)이 생성된다(S2240). 제1 암복호화 코어(220_1e)는 암복호화부(220_11), 암복호화 키 스케줄러(220_12) 및 암복호화 초기화부(220_14)를 포함할 수 있다. 제1 암복호화 코어(220_1e)는 도 19의 제1 암복호화 코어(220_1e)일 수 있다. 따라서, 제1 암복호화 코어(220_1e)의 동작에 대한 더 자세한 설명은 생략한다.
제2 암복호화 코어(220_2d) 내지 제X 암복호화 코어(220_Xd)는 암복호화부(220_21, 220_X1) 및 암복호화 키 스케줄러(220_22, 220_X2)를 구비할 수 있다. 제2 암복호화 코어(220_2d) 내지 제X 암복호화 코어(220_Xd)의 암복호화부(220_21, 220_X1)는 제1 암복호화 코어(220_1e)의 암복호화부(220_11)와 동일한 동작을 수행할 수 있다. 즉, 초기화 결과값(I_Rst)에 의해 변형된 평문 데이터를 암호화한다. 제2 암복호화 코어(220_2d) 내지 제X 암복호화 코어(220_Xd)의 암복호화 키 스케줄러(220_22, 220_X2) 또한, 제1 암복호화 코어(220_1e)의 암복호화 키 스케줄러(220_12)와 마찬가지로 암복호화부(220_21, 220_X1)에서 사용되는 라운드 키(RK)를 생성한다. 다만, 제2 암복호화 코어(220_2d) 내지 제X 암복호화 코어(220_Xd)는 암복호화 초기화를 위한 구성을 별도로 구비하지 아니하고 제1 암복호화 코어(220_1e)의 암복호화 초기화부(220_14)로부터 생성된 초기화 결과값(I_Rst)을 수신한다. 따라서, 제2 암복호화 코어(220_2d) 내지 제X 암복호화 코어(220_Xd)의 암복호화 키 스케줄러(220_22, 220_X2)는 트윅을 암호화하기 위한 도 19의 초기화 라운드 키(RK)를 생성하지 아니한다.
즉, 제1 암복호화 코어(220_1e)에 의해 초기화 결과값이 생성된다(S2240). 초기화 결과값(I_Rst)은 도 19 및 도 20에서 설명된 XTS 모드의 초기화 결과값일 수 있다. 다수의 암복호화 코어(220_1e, 220_2d, …, 220_Xd)는 제1 암복호화 코어(220_1e)에서 생성된 XTS 모드의 초기화 결과값(I_Rst)을 이용하여, 평문 데이터를 암호문 데이터로 암호화한다(S2260). 예를 들어, 제1 암복호화 코어(220_1e)가 제1 평문 데이터(Pla_D1)를 제1 암호문 데이터(Cip_D1)로 암호화하고, 제2 암복호화 코어(220_2d)가 제2 평문 데이터(Pla_D2)를 제2 암호문 데이터(Cip_D2)로 암호화한다. 그리고, 제X 암복호화 코어(220_Xd)가 제X 평문 데이터(Pla_DX)를 제X 암호문 데이터(Cip_DX)로 암호화한다.
도 21의 암복호화기(2100)에서의 복호화는 도 23에 도시되는 바와 같이, 다수의 암복호화 코어(220_1e, 220_2d, …, 220_Xd)로 암호문 스트림(Cip_T)이 분할된 다수의 암호문 데이터(Cip_D1, Cip_D2, …, Cip_DX)가 분배되고(S2320), 제1 암복호화 코어(220_1e)에 의해 초기화 결과값이 생성된다(S2340). 다수의 암복호화 코어(220_1e, 220_2d, …, 220_Xd)는 제1 암복호화 코어(220_1e)에서 생성된 XTS 모드의 초기화 결과값(I_Rst)을 이용하여, 암호문 데이터를 평문 데이터로 복호화한다(S2360).
이렇듯, 본 발명의 실시예에 따른 암복호화기에 의하면 하나의 암복호화 코어에서 생성된 XTS 모드 등의 초기화 결과값을 이용하여 다수의 암복호화 코어에서 암호화 또는 복호화를 수행함으로써, 암호화 또는 복호화에 요구되는 전력 소모를 줄일 수 있다. 이상에서 설명된 모듈러 곱셈은 암복호화 코어가 아닌, 별도의 모듈에서 연산되어, 각 암복호화 코어로 전송될 수도 있다.
도 24 내지 도 26은 각각 본 발명의 다른 실시예에 따른 암복호화기를 나타내는 도면이다. 먼저, 도 24를 참조하면, 도 24의 암복호화기(2400)는 암복호화 코어부(220G)에 구비되는 다수의 암복호화 코어(220_1f, 220_2e, …, 220_Xe)를 도 21의 암복호화기(2100)와 같이 구비할 수 있다. 따라서, 제1 암복호화 코어(220_1f)에서 생성된 초기화 결과값(I_Rst)을 이용하여 다수의 암복호화 코어(220_1f, 220_2e, …, 220_Xe)가 암호화 또는 복호화를 수행할 수 있다. 나아가, 도 24의 암복호화기(2400)는 도 10의 암복호화기(1000)와 마찬가지로, 제1 암복호화 코어(220_1f)의 암복호화 키 스케줄러(220_12)에서 재생성된 제N 라운드 키(RKN)를 이용하여, 다수의 암복호화 코어(220_1f, 220_2e, …, 220_Xe)가 복호화를 수행할 수 있다.
도 24의 암복호화기(2400)는 다수의 암복호화 코어(220_1f, 220_2e, …, 220_Xe)에서 사용되는 초기화 결과값(I_Rst) 및 제N 라운드 키(RKN)이 모두 제1 암복호화 코어(220_1f)에서 생성 내지 재생성되는 예를 도시하였다. 그러나, 이에 한정되는 것은 아니다. 도 25의 암복호화기(2500)와 같이, 암복호화부(220H)의 다수의 암복호화 코어(220_1g, 220_2f, …, 220_Xe)에서 사용되는 초기화 결과값(I_Rst) 및 제N 라운드 키(RKN)가 서로 다른 암복호화 코어에서 생성 내지 재생성될 수도 있다. 도 25는 초기화 결과값(I_Rst)은 제1 암복호화 코어(220_1g)에서 생성, 제N 라운드 키(RKN)는 제2 암복호화 코어(220_2f)에서 재생성되는 예를 도시한다. 따라서, 도 24의 암복호화기(2400) 및 도 25의 암복호화기(2500)에서 암호화 또는 복호화에 요구되는 전력 소모가 줄어들 수 있다. 나아가, 도 26의 암복호화기(2600)에 의하면, 제1 암복호화 코어(220_1h)가 도 13과 같이 키 저장부(220_13)를 더 구비함으로써, 암복호화부(220I)의 다수의 암복호화 코어(220_1h, 220_2e, …, 220_Xe)가 암호화 동작 시에 생산되어 키 저장부(220_13)에 저장된 제N 라운드 키(RKN)를 이용하여 복호화를 수행함으로써, 제N 라운드 키(RKN)를 재생성에 소요되는 전력 또는 동작 시간을 줄일 수 있다.
도 27a 및 도 27b는, 각각, 본 발명의 다른 실시예에 따른 암복호화기의 암호화 코어부 및 복호화 코어부를 나타내는 도면이다. 도 27a 및 도 27b의 암복호화기(2700)는 암호화 및 복호화가 동시에 수행될 수 있는 Full Duplex 구조로 구현된다. 암복호화 코어(220J)는 암호화 코어부(222c) 및 복호화 코어부(224c)를 구비하고, 암호화 코어부(222c)는 다수의 암호화 코어(222_1c, 222_2c, …, 222_Xc)를, 복호화 코어부(224c)는 다수의 복호화 코어(224_1c, 224_2c, …, 224_Xc)를 포함할 수 있다. 제1 암호화 코어(222_1c)는 암호화부(222_11), 암호화 키 스케줄러(222_12) 및 암호화 초기화부(222_14)를 포함할 수 있다. 그리고, 제1 복호화 코어(224_1c)는 복호화부(224_11), 복호화 키 스케줄러(224_12) 및 복호화 초기화부(224_14)를 포함할 수 있다. 제1 암호화 코어(222_1c)의 암호화부(222_11), 암호화 키 스케줄러(222_12) 및 암호화 초기화부(222_14)는 각각, 도 21의 제1 암복호화 코어(220_1e)의 암복호화부(220_11), 암복호화 키 스케줄러(220_12) 및 암복호화 초기화부(222_14)가 암호화 시에 수행하는 동작과 동일한 동작을 수행할 수 있다. 그리고, 제1 복호화 코어(224_1c)의 복호화부(224_11), 복호화 키 스케줄러(224_12) 및 복호화 초기화부(224_14)는 각각, 도 21의 제1 암복호화 코어(220_1e)의 암복호화부(220_11), 암복호화 키 스케줄러(220_12) 및 암복호화 초기화부(220_14)가 복호화 시에 수행하는 동작과 동일한 동작을 수행할 수 있다. 복호화 초기화부(224_14)는 도 20의 (b)의 AES_Enc 를 포함할 수 있다.
제2 암호화 코어(222_2c) 내지 제X 암호화 코어(222_Xc)는 암호화부(222_11, 222_21, …, 222_X1) 및 암호화 키 스케줄러(222_12, 222_22, …, 222_X2)를 포함할 수 있다. 그리고, 제2 복호화 코어(224_2c) 내지 제X 복호화 코어(224_Xc)는 복호화부(224_21) 및 복호화 키 스케줄러(224_22)를 포함할 수 있다. 제2 암호화 코어(222_2c) 내지 제X 암호화 코어(222_Xc)의 암호화부(222_21, …, 222_X1) 및 암호화 키 스케줄러(222_22, …, 222_X2)는 각각, 도 21의 제2 암복호화 코어(220_2d) 내지 제X 암복호화 코어(220_Xd)의 암복호화부(220_21, …, 220_X1) 및 암복호화 키 스케줄러(220_22, …, 220_X2)가 암호화 시에 수행하는 동작과 동일한 동작을 수행할 수 있다. 그리고, 제2 복호화 코어(224_2c) 내지 제X 암호화 코어(224_Xc)의 복호화부(224_21, …, 224_X1) 및 복호화 키 스케줄러(224_22, …, 224_X2)는 각각, 도 21의 제2 암복호화 코어(220_2d) 내지 제X 암복호화 코어(220_Xd)의 암복호화부(220_21, …, 220_X1) 및 암복호화 키 스케줄러(220_22, …, 220_X2)가 복호화 시에 수행하는 동작과 동일한 동작을 수행할 수 있다.
따라서, 도 27a 및 도 27b의 암복호화기(2700)는 제1 암호화 코어(222_1c)에서 생성된 초기화 결과값(I_Rst)을 다수의 암호화 코어(222_1c, 222_2c, …, 222_Xc)에서 공유하고, 제1 복호화 코어(224_1c)에서 생성된 초기화 결과값(I_Rst)을 다수의 복호화 코어(224_1c, 224_2c, …, 224_Xc)에서 공유할 수 있다. 또한, 제1 복호화 코어(224_1c)는 복호화를 위해 암호화의 최종 라운드에서 사용된 제N 라운드 키(RKN)를 재생성하는 암호화 키 스케줄러(224_13)를 더 구비하고 제N 라운드 키(RKN)를 제2 복호화 코어(224_2c) 내지 제X 복호화 코어(224_Xc)에 전송함으로써, 제2 복호화 코어(224_2c) 내지 제X 복호화 코어(224_Xc)가 별도로 제N 라운드 키(RKN)를 재생성하기 위한 로직 및 동작을 수행하지 아니할 있다. 따라서, 도 27a 및 도 27b의 암복호화기(2700)는 Full Deplex 구조로 구현되어 보다 빠른 암호화 및 복호화를 수행할 수 있고, 전력 소모 및 레이아웃 면적을 줄일 수 있다.
도 28은 본 발명의 다른 실시예에 따른 암복호화기를 나타내는 도면이다. 도 28의 암복호화기(2800)의 암복호화 코어부(200K)는 다수의 암복호화 코어(220_1i, 220_2g, …, 220_Xf)를 포함한다. 다수의 암복호화 코어(220_1i, 220_2g, …, 220_Xf)는 각각, 적어도 둘 이상의 서브 암복호화 코어를 포함한다. 예를 들어, 제1 암복호화 코어(220_1i)는 제1 서브 암복호화 코어(220_S11) 및 제2 서브 암복호화 코어(220_S12)를 포함하고, 제2 암복호화 코어(220_2g)는 제1 서브 암복호화 코어(220_S21) 및 제2 서브 암복호화 코어(220_S22)를 포함하며, 제X 암복호화 코어(220_Xf)는 제1 서브 암복호화 코어(220_SX1) 및 제2 서브 암복호화 코어(220_SX2)를 포함할 수 있다.
동일한 암복호화 코어에 포함되는 서브 암복호화 코어들은 서로 다른 방식으로 암복화를 수행할 수 있다. 예를 들어, 제1 암복호화 코어(220_1i)의 제1 서브 암복호화 코어(220_S11)는 AES 알고리즘으로 암복호화를 수행하고, 제2 서브 암복호화 코어(220_S12)는 AES 알고리즘이 아닌 다른 암호 알고리즘으로 암복호화를 수행할 수 있다. 또는, 제1 서브 암복호화 코어(220_S11) 및 제2 서브 암복호화 코어(220_S12) 모두 AES 알고리즘으로 암복호화를 수행하나 암호 키를 달리할 수 있다. 예를 들어, 제1 암복호화 코어(220_1i)의 제1 서브 암복호화 코어(220_S11)는 도 6의 알고리즘 1에서 예시된 {2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c}의 값을 갖는 제1 암호 키(CK1)로 AES 알고리즘을 수행할 수 있고, 제2 서브 암복호화 코어(220_S12)는 제1 암호 키(CK1)와 다른 값의 제2 암호 키(CK2)로 AES 알고리즘을 수행할 있다.
다만, 다수의 암복호화 코어(220_1i, 220_2g, …, 220_Xf)의 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1)에서 사용되는 암복호화 방식은 서로 동일하고, 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2)에서 사용되는 암복호화 방식은 서로 동일할 수 있다. 예를 들어, 다수의 암복호화 코어(220_1i, 220_2g, …, 220_Xf)의 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1)의 제1 암호 키(CK1)는 서로 동일하고, 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2)의 제2 암호 키(CK2)는 서로 동일할 수 있다.
제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1)에서 평문 데이터(Pla_D1, Pla_D2, …, Pla_Dx)에 대해 암호화 수행 결과로 생성된 서브 암복호화 결과(SRst_D1, SRst_D2, …, SRst_DX)는, 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2)에서 다시 암호화가 수행되어, 최종적으로 암호문 데이터(Cip_D1, Cip_D2, …, Cip_Dx)가 출력된다. 예를 들어, 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1) 및 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2)가 모두 AES 알고리즘으로 암복호화를 수행하는 경우, 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1)의 최종 라운드의 출력이 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2)의 프리 라운드로 입력될 수 있다. 도 28은 도시의 편의를 위해 암호화 동작만을 예시하고 있으나, 복호화 동작도 같은 방식으로 수행될 수 있다. 이하에서 설명되는 도 29 내지 도 31의 경우도 마찬가지이다.
도 28의 암복호화기(2800)는 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1)에서 수행된 서브 암복호화 결과(SRst_D1, SRst_D2, …, SRst_DX)가, 별로도 저장 과정을 거치지 아니하고, 바로 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2)로 입력됨으로써, 암호화의 강도를 높이면서도 암복호화에 소요되는 시간 및 자원을 줄일 수 있다. 예를 들어, 도 28의 암복호화기(2800)는 서브 암복호화 결과(SRst_D1, SRst_D2, …, SRst_DX)를 저장하고 독출하는데 소요되는 시간 및 저장 공간과 같은 자원을 줄일 수 있다.
도 28은 각 암복호화 코어가 두 개의 서브 암복호화 코어를 구비하는 예를 도시하였으나, 이에 제한되는 것은 아니고, 셋 이상의 서브 암복호화 코어가 구비될 수도 있다. 이하의 도 29 내지 도 32의 암복호화기도 마찬가지일 수 있다.
도 29 내지 도 32은 각각, 본 발명의 다른 실시예에 따른 암복호화기를 나타내는 도면이다. 먼저 도 29를 참조하면, 도 29의 암복호화기(2900)는 도 28의 암복호화기(2800)와 마찬가지로, 암복호화 코어부(200L)에 포함되는 다수의 암복호화 코어(220_1j, 220_2h, …, 220_Xg)가 각각, 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1) 및 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2)를 포함할 수 있다. 도 29의 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1) 및 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2) 모두 AES 알고리즘을 이용하여 암복호화를 수행할 수 있다. 다만, 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1)는 제1 암호 키(CK1)를 이용하여, 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2)는 제1 암호 키(CK1)와 상이한 제2 암호 키(CK2)를 이용하여 암복호화를 수행한다.
나아가, 도 29의 암복호화기(2900)는 제1 암복호화 코어(220_1j)의 제1 서브 암복호화 코어(220_S11)에서 재생성된 제N 라운드 키(RKN1)를 사용하여, 다수의 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1)에서 복호화가 수행될 수 있다. 또한, 도 29의 암복호화기(2900)는 제1 암복호화 코어(220_1j)의 제2 서브 암복호화 코어(220_S21)에서 재생성된 제N 라운드 키(RKN2)를 사용하여, 다수의 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2)에서 복호화가 수행될 수 있다.
도 30의 암복호화기(3000) 또한, 도 28의 암복호화기(2800)와 마찬가지로, 암복호화 코어부(200M)에 포함되는 다수의 암복호화 코어(220_1k, 220_2j, …, 220_Xh)가 각각, 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1) 및 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2)를 포함할 수 있다. 도 30의 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1) 및 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2) 모두 XTS 모드로 AES 알고리즘을 이용하여 암복호화를 수행할 수 있다. 다만, 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1)는 제1 입력 키(IK1)를 이용하여, 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2)는 제1 입력 키(IK1)와 상이한 제2 입력 키(IK2)로 XTS 모드의 초기화 동작을 수행한다.
나아가, 도 30의 암복호화기(3000)는 제1 암복호화 코어(220_1k)의 제1 서브 암복호화 코어(220_S11)에서 생성된 초기화 결과값(I_Rst1)을 사용하여, 다수의 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1)에서 암호화 또는 복호화가 수행될 수 있다. 또한, 도 30의 암복호화기(3000)는 제1 암복호화 코어(220_1k)의 제2 서브 암복호화 코어(220_S21)에서 생성된 초기화 결과값(I_Rst2)을 사용하여, 다수의 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2)에서 암호화 또는 복호화가 수행될 수 있다.
도 31의 암복호화기(3100) 또한, 도 28의 암복호화기(2800)와 마찬가지로, 암복호화 코어부(200M)에 포함되는 다수의 암복호화 코어(220_1l, 220_2k, …, 220_Xi)가 각각, 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1) 및 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2)를 포함할 수 있다. 도 31의 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1) 및 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2) 모두 XTS 모드로 AES 알고리즘을 이용하여 암복호화를 수행할 수 있다. 다만, 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1)는 제1 암호 키(CK1) 및 제1 입력 키(IK1)를 이용하여, 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2)는 각각 제1 암호 키(CK1) 및 제1 입력 키(IK1)와 상이한 제2 암호 키(CK2) 및 제2 입력 키(IK2)로 XTS 모드에서의 초기화 동작 및 암복호화 동작을 수행한다.
나아가, 도 31의 암복호화기(3100)는 제1 암복호화 코어(220_1l)의 제1 서브 암복호화 코어(220_S11)에서 재생성 또는 생성된 제N 라운드 키(RKN1) 및 초기화 결과값(I_Rst1)을 사용하여, 다수의 제1 서브 암복호화 코어(220_S11, 220_S21, 220_SX1)에서 암호화 또는 복호화가 수행될 수 있다. 또한, 도 31의 암복호화기(3100)는 제1 암복호화 코어(220_1l)의 제2 서브 암복호화 코어(220_S21)에서 재생성 또는 생성된 제N 라운드 키(RKN2) 및 초기화 결과값(I_Rst2)을 사용하여, 다수의 제2 서브 암복호화 코어(220_S12, 220_S22, 220_SX2)에서 암호화 또는 복호화가 수행될 수 있다.
따라서, 도 29 내지 도 31의 암복호화기는 암호화의 강도를 높이면서도 전력, 시간 및 저장 공간 등의 자원을 줄일 수 있다. 자세히 설명되지는 아니하였으나, Full Duplex 구조의 암복호화기 또한, 포함하는 암호화 코어 및 복호화 코어 각각이, 둘 이상의 서브 암호화 코어 및 복호화 코어를 포함할 수 있다. 또한, 적어도 둘 이상의 암복호화 코어에 포함된 서브 암복호화 코어의 개수는 서로 상이할 수 있다.
도 32는 본 발명의 실시예에 따른 전자 장치를 나타내는 도면이다. 도 32를 참조하면 본 발명의 실시예에 따른 전자 장치(3200)는 시스템 온 칩(System On Chip, 3220) 및 시스템 온 칩(3220)과 전기적으로 연결될 수 있는 플래시 메모리 시스템(3240)을 포함한다. 시스템 온 칩(3220)은 시스템 온 칩(3220)에 요청된 어플리케이션(application)의 수행을 제어하는 CPU(Central Processing Unit, 3221), CPU(3221)이 제어 동작을 수행하는데 필요한 데이터가 로드(load)되는 ROM(3222), 어플리케이션의 수행을 위해 담당하는 기능을 수행하는 IP들(Intellectual Property, 3223), 어플리케이션의 수행에 요구되는 데이터의 에러를 검출하고 정정하는 ECC 엔진(Error Check and Correction Engine, 3224), 외부의 호스트(host)와의 인터페이스(interface)를 수행하는 호스트 인터페이스(Host Interface, 3225), 어플리케이션의 수행에 요구되는 데이터가 임시적으로 저장되는 버퍼(Buffer)를 제어하는 버퍼 컨트롤러(Buffer Controller, 3226), 및 시스템 온 칩(3220)과 전기적으로 연결될 수 있는 플래시 메모리 시스템(3240)와의 명령(주소 포함) 또는 데이터를 송수신하는 플래시 메모리 컨트롤러(Flash Memory Controller, 3228)이 버스(Bus, 3229)로 연결된다.
시스템 온 칩(3220)은 암복호화기(3226)를 더 구비한다. 암복호화기(3226)는 버퍼 컨트롤러(3226)에 포함될 수 있다. 암복호화기(3226)는 시스템 온 칩(3220)에서 어플리케이션을 수행하는데 사용되는 데이터가 암호화 또는 복호화될 수 있다. 암복호화기(3226)는 암호화된 데이터를 플래시 메모리 컨트롤러(3228)를 통해 플래시 메모리 시스템(3240)에 저장하거나, 플래시 메모리 시스템(3240)에 암호화되어 저장된 데이터를 플래시 메모리 컨트롤러(3228)를 통해 수신하여 복호화하여, IP들(3223)에서 사용되게 할 수 있다. 암복호화기(3226)는 전술된 도 2 등의 암복호화기일 수 있다. 따라서, 전자 장치(3200)는 암호화 또는 복호화를 고속으로, 또한 효율적으로 수행할 수 있다.
시스템 온 칩(3220)에 전기적으로 연결될 수 있는 플래시 메모리 시스템(3240)은, 플래시 메모리 시스템의 일 예를 나타내는 도 33에 도시되는 바와 같이, 솔리드 스테이트 드라이브(Solid State Drive, 이하 SSD)로 구현될 수 있다. SSD(3200)는 SSD 컨트롤러(SCtrl) 및 다수의 플래시 메모리(MDEV)를 포함한다. SSD 컨트롤러(SCtrl)는 다수의 채널(Ch1~CHn)을 통해 플래시 메모리(MDEV)와 연결되어, 시스템 온 칩(3220)으로부터 입력되는 데이터를 플래시 메모리(MDEV)에 프로그램하고, 시스템 온 칩(3220)으로부터 요청되는 데이터를 플래시 메모리(MDEV)로부터 독출하는 등의 제어를 수행한다.
시스템 온 칩(3220)에 전기적으로 연결될 수 있는 플래시 메모리 시스템(3240)은, 플래시 메모리 시스템의 일 예를 나타내는 도 33에 도시되는 바와 같이, 메모리 카드(3400)로 구현될 수 있다. 메모리 카드(3400)는 포트 영역(3420), 컨트롤러(3440) 및 플래시 메모리(3460)을 구비할 수 있다. 메모리 카드(3400)는 포트 영역(3420)을 통해서 시스템 온 칩(3220)과 통신할 수 있고, 컨트롤러(3440)는 시스템 온 칩(3220)으로부터 입력되는 데이터를 플래시 메모리(3460)에 프로그램하고, 시스템 온 칩(3220)으로부터 요청되는 데이터를 플래시 메모리(3460)로부터 독출하는 등의 제어를 수행한다. 메모리 카드(3400)는 SD 카드(secure digital card), eMMC(embedded Multimedia Memory Card) 또는 UFS(universal Flash Storage) 등 다양한 형태로 구현될 수 있다. 다만, 도 34은 SD 카드, eMMC 또는 UFS을 구분하여 도시하지는 아니하였다.
도 35 및 도 36은 각각, 본 발명의 다른 실시예에 따른 전자 장치를 나타내는 도면이다. 도 35의 전자 장치(3500)는 시스템 온 칩(3520) 및 시스템 온 칩(3520)과 전기적으로 연결될 수 있는 플래시 메모리 시스템(3540)을 포함한다. 도 35의 시스템 온 칩(3520)은 CPU(3521), 플래시 메모리 컨트롤러(3522), DRAM 컨트롤러(3524) 및 IP들(3525)이 버스(3526)에 연결된다. 도 35의 시스템 온 칩(3520)은 DRAM 컨트롤러(3524)를 통해 외부의 메인 메모리(main memory)와의 데이터 송수신을 수행할 수 있다. 그 밖에, 도 35의 시스템 온 칩(3520)은 도 32의 시스템 온 칩(3220)과 동일하거나 유사한 동작을 수행할 수 있다.
시스템 온 칩(3520)은 암복호화기(3523)를 더 구비한다. 암복호화기(3523)는 플래시 메모리 컨트롤러(3522)에 포함될 수 있다. 암복호화기(3523)는 시스템 온 칩(3520)에서 어플리케이션을 수행하는데 사용되는 데이터가 암호화 또는 복호화될 수 있다. 암복호화기(3523)는 플래시 메모리 컨트롤러(3522)에 구비됨으로써, 버스(3526)를 통하지 아니하고, 암호화된 데이터를 바로 플래시 메모리 시스템(3540)에 저장하거나, 플래시 메모리 시스템(3540)에 암호화되어 저장된 데이터를 수신하여 복호화할 수 있다. 다만, 도 36의 전자 장치(3600)에 도시된 바와 같이, 암복호화기(3523)는 플래시 메모리 컨트롤러(3522)의 외부에 구비될 수도 있다. 암복호화기(3523)는 전술된 도 2 등의 암복호화기일 수 있다. 따라서, 전자 장치(3500, 3600)는 암호화 또는 복호화를 고속으로, 또한 효율적으로 수행할 수 있다. 이상에서 설명된 시스템 온 칩은 어플리케이션 프로세서(Application Processor)로 구현되어 모바일 장치(mobile device) 등에 포함될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 게시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 게시를 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 본 게시에 의한 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
200: 암복호화기
210: 제1 데이터 처리기
220: 암복호화 코어
Pla_T: 평문 텍스트
Pla_D: 평문 데이터
Cip_D: 암호문 데이터

Claims (20)

  1. 입력된 평문 스트림(plaintext stream)을 평문 데이터(plaintext data)의 단위로, 다수의 암복호화 코어(encryption/decryption core)에 분배하는 단계;
    상기 다수의 암복호화 코어 중 제1 암복호화 코어에서 다수의 라운드(round)에 대한 다수의 라운드 키를 생성하는 키 생성 동작을 수행하는 단계; 및
    상기 제1 암복호화 코어에서 상기 키 생성 동작을 수행한 결과 생성된 다수의 라운드 키 중 적어도 하나를 이용하여, 상기 다수의 암복호화 코어가, 각각, 상기 평문 데이터를 암호문 데이터로 암호화하거나, 상기 암호문 데이터를 상기 평문 데이터로 복호화하는 단계를 포함하는 것을 특징으로 하는 암복호화기의 동작 방법.
  2. 제1항에 있어서, 상기 키 생성 동작은,
    상기 암복호화기로 요청되는 상기 암호문 데이터에 대한 복호화 요청에 응답하여, 블록 암호 알고리즘(block cipher algorithm)에 의한 상기 다수의 라운드를 통해 상기 평문 데이터를 상기 암호문 데이터로 암호화하는 때에, 상기 다수의 라운드 중 상기 암호문 데이터를 출력하는 제N 라운드에서 사용되는 제N 라운드 키(round key)를 재생성하는 동작을 포함하는 것을 특징으로 하는 암복호화기의 동작 방법.
  3. 제2항에 있어서, 상기 다수의 암복호화 코어가, 암호화하거나 복호화하는 단계는,
    상기 다수의 암복호화 코어가, 상기 제1 암복호화 코어가 재생성한 제N 라운드 키를 사용하여 상기 블록 암호 알고리즘에 의한 복호화를 수행하는 단계를 포함하는 것을 특징으로 하는 암복호화기의 동작 방법.
  4. 제2항에 있어서,
    상기 키 생성 동작은,
    XTS 모드(XEX-based tweaked-codebook mode with ciphertext stealing mode)에서, 상기 평문 데이터를 변형시키기 위한 초기화 결과값을 생성하는 동작을 더 포함하고,
    상기 다수의 암복호화 코어가, 암호화하거나 복호화하는 단계는,
    상기 다수의 암복호화 코어 각각이, 상기 초기화 결과값과 상기 평문 데이터를 배타적 논리합한 결과를 이용하여, 상기 블록 암호 알고리즘에 의해 암호화 하는 단계를 포함하는 것을 특징으로 하는 암복호화기의 동작 방법.
  5. 제2항에 있어서,
    상기 다수의 암복호화 코어 중 제2 암복호화 코어에서 제2 동작을 수행하는 단계를 더 포함하고,
    상기 다수의 암복호화 코어가, 암호화하거나 복호화하는 단계는, 상기 제1 암복호화 코어에서 키 생성 동작을 수행한 결과와 함께, 상기 제2 암복호화 코어에서 제2 동작을 수행한 결과를 이용하여, 상기 다수의 암복호화 코어가, 암호화하거나 복호화하는 단계를 더 포함하는 것을 특징으로 하는 암복호화기의 동작 방법.
  6. 제5항에 있어서, 상기 제2 동작은,
    XTS 모드(XEX-based tweaked-codebook mode with ciphertext stealing mode)에서, 상기 평문 데이터를 변형시키기 위한 초기화 결과값을 생성하는 동작을 포함하는 것을 특징으로 하는 암복호화기의 동작 방법.
  7. 제1항에 있어서,
    상기 암복호화기로 요청되는 상기 평문 스트림에 대한 암호화 요청에 응답하여, 다수의 암복호화 코어가, 각각, 순차적으로 블록 암호 알고리즘에 의한 제1 내지 제N 라운드에서의 연산을 수행하여, 상기 평문 데이터를 상기 암호문 데이터로 암호화하는 단계를 더 포함하고,
    상기 키 생성 동작은,
    상기 제1 암복호화 코어가 상기 제N 라운드에서의 연산을 수행하기 위해 제N 라운드 키를 생성하여 저장하는 동작을 포함하는 것을 특징으로 하는 암복호화기의 동작 방법.
  8. 제7항에 있어서, 상기 다수의 암복호화 코어가, 암호화하거나 복호화하는 단계는,
    상기 암복호화기로 요청되는 상기 암호문 데이터에 대한 복호화 요청에 응답하여, 상기 다수의 암복호화 코어가, 상기 제1 암복호화 코어에 저장된 제N 라운드 키를 사용하여 복호화를 수행하는 단계를 포함하는 것을 특징으로 하는 암복호화기의 동작 방법.
  9. 제7항에 있어서, 상기 다수의 암복호화 코어가, 암호화하거나 복호화하는 단계는,
    상기 암복호화기로 요청되는 상기 암호문 데이터에 대한 복호화 요청에 응답하여, 상기 제1 암복호화 코어가 상기 제N 라운드 키에 대응되는 암호 키(cipher key)의 변경 여부를 확인하는 단계;
    상기 암호 키가 변경되지 아니한 경우, 상기 다수의 암복호화 코어가, 상기 제1 암복호화 코어에 저장된 제N 라운드 키를 사용하여 복호화를 수행하는 단계; 및
    상기 암호 키가 변경된 경우, 상기 제1 암복호화 코어가 상기 제N 라운드 키를 재생성하고, 상기 다수의 암복호화 코어가 상기 재생성된 제N 라운드 키를 사용하여, 복호화를 수행하는 단계를 포함하는 것을 특징으로 하는 암복호화기의 동작 방법.
  10. 제1항에 있어서,
    상기 키 생성 동작은,
    XTS 모드(XEX-based tweaked-codebook mode with ciphertext stealing mode)에서, 상기 평문 데이터를 변형시키기 위한 초기화 결과값을 생성하는 동작을 포함하고,
    상기 다수의 암복호화 코어가, 암호화하거나 복호화하는 단계는,
    상기 다수의 암복호화 코어 각각이, 상기 초기화 결과값과 상기 평문 데이터를 배타적 논리합한 결과를 이용하여, 순차적으로 블록 암호 알고리즘에 의해 암호화하는 단계를 포함하는 것을 특징으로 하는 암복호화기의 동작 방법.
  11. 제1항에 있어서,
    상기 다수의 암복호화 코어는 각각,
    상기 평문 데이터를 상기 암호문 데이터로 암호화하는 암호화 코어 및 상기 암호문 데이터를 상기 평문 데이터로 복호화하는 복호화 코어를 별개로 포함하고,
    상기 키 생성 동작은,
    상기 암복호화기로 요청되는 상기 암호문 데이터에 대한 복호화 요청에 응답하여, 상기 제1 암복호화 코어의 상기 복호화 코어가, 블록 암호 알고리즘에 의한 다수의 라운드 중 상기 암호문 데이터를 출력하는 제N 라운드에서 사용되는 제N 라운드 키를 생성하는 동작을 포함하는 것을 특징으로 하는 암복호화기의 동작 방법.
  12. 제11항에 있어서, 상기 다수의 암복호화 코어가, 암호화하거나 복호화하는 단계는,
    상기 다수의 암복호화 코어 각각의 상기 복호화 코어가, 상기 제1 암복호화 코어의 복호화 코어에서 생성된 제N 라운드 키를 사용하여 복호화를 수행하는 단계를 포함하는 것을 특징으로 하는 암복호화기의 동작 방법.
  13. 제11항에 있어서,
    상기 암복호화기로 요청되는 상기 평문 스트림에 대한 암호화 요청에 응답하여, 상기 다수의 암복호화 코어의 상기 암호화 코어가, 각각, 순차적으로 블록 암호 알고리즘에 의한 제1 내지 제N 라운드에서의 연산을 수행하여, 상기 평문 데이터를 상기 암호문 데이터로 암호화하는 단계를 더 포함하고,
    상기 키 생성 동작은,
    상기 제1 암복호화 코어의 상기 암호화 코어가 상기 제N 라운드에서의 연산을 수행하기 위해 제N 라운드 키를 생성하여 저장하는 동작을 포함하는 것을 특징으로 하는 암복호화기의 동작 방법.
  14. 제13항에 있어서, 상기 다수의 암복호화 코어가, 암호화하거나 복호화하는 단계는,
    상기 암복호화기로 요청되는 상기 암호문 데이터에 대한 복호화 요청에 응답하여, 상기 다수의 암복호화 코어의 상기 복호화 코어가, 상기 제1 암복호화 코어의 상기 암호화 코어가 저장한 상기 제N 라운드 키를 이용하여, 복호화를 수행하는 단계를 포함하는 것을 특징으로 하는 암복호화기의 동작 방법.
  15. 제1항에 있어서,
    상기 다수의 암복호화 코어는 각각,
    각각, 서로 다른 암복호화 방식으로 암호화 또는 복호화를 수행하는 제1 서브 암복호화 코어 및 제2 서브 암복호화 코어를 포함하고,
    상기 키 생성 동작은,
    상기 암복호화기로 요청되는 상기 암호문 데이터에 대한 복호화 요청에 응답하여, 상기 제1 암복호화 코어의 상기 제1 서브 암복호화 코어가 제N 라운드 키를 재생성하는 동작 및 상기 제1 암복호화 코어의 상기 제2 서브 암복호화 코어가 제N 라운드 키를 재생성하는 동작을 포함하는 것을 특징으로 하는 암복호화기의 동작 방법.
  16. 제15항에 있어서,
    상기 다수의 암복호화 코어가, 암호화하거나 복호화하는 단계는,
    상기 다수의 암복호화 코어의 상기 제1 서브 암복호화 코어가 상기 제1 암복호화 코어의 상기 제1 서브 암복호화 코어가 재생성한 상기 제N 라운드 키를 이용하여 복호화를 수행하는 단계; 및
    상기 다수의 암복호화 코어의 상기 제2 서브 암복호화 코어가 상기 제1 암복호화 코어의 상기 제2 서브 암복호화 코어가 재생성한 상기 제N 라운드 키를 이용하여 복호화를 수행하는 단계를 포함하는 것을 특징으로 하는 암복호화기의 동작 방법.
  17. 제15항에 있어서,
    상기 다수의 암복호화 코어의 상기 제1 서브 암복호화 코어는 각각, 제1 암호 키를 이용하여 AES(Advanced Encryption Standard) 알고리즘으로 상기 평문 데이터를 암호화하거나 또는 상기 암호문 데이터를 복호화하고,
    상기 다수의 암복호화 코어의 상기 제2 서브 암복호화 코어는 각각, 상기 제1 암호 키와 다른 제2 암호 키를 이용하여 AES 알고리즘으로 상기 제2 서브 암복호화 코어의 암호화 결과를 상기 암호문 데이터로 암호화하거나 상기 평문 데이터로 복호화하는 것을 특징으로 하는 암복호화기의 동작 방법.
  18. 각각, 블록 암호 알고리즘(block cipher algorithm)에 의한 다수의 라운드(round)를 통해 암호화 또는 복호화를 수행하는 다수의 암복호화 코어(encryption/decryption core); 및
    입력된 평문 스트림(plaintext stream)을 평문 데이터(plaintext data)의 단위로, 상기 다수의 암복호화 코어에 분배하는 제1 데이터 처리기를 구비하고,
    상기 다수의 암복호화 코어는 각각, 상기 다수의 암복호화 코어 중 제1 암복호화 코어에서 수행된 다수의 라운드(round)에 대한 다수의 라운드 키를 생성하는 키 생성 동작을 수행한 결과 생성된 다수의 라운드 키 중 적어도 하나를 이용하여, 각각, 상기 평문 데이터를 암호문 데이터로 암호화하거나, 상기 암호문 데이터를 상기 평문 데이터로 복호화하는 것을 특징으로 하는 암복호화기.
  19. 제18항에 있어서, 상기 키 생성 동작은,
    상기 제1 암복호화 코어가 상기 블록 암호 알고리즘에 의한 다수의 라운드 중 상기 암호문 데이터를 출력하는 제N 라운드에서 사용되는 제N 라운드 키(round key)를 재생성하는 동작을 포함하는 것을 특징으로 하는 암복호화기.
  20. 어플리케이션(application)을 수행하는 시스템 온 칩(System On Chip); 및
    상기 시스템 온 칩과 전기적으로 연결될 수 있고, 상기 시스템 온 칩에서 사용되는 데이터가 저장되는 플래시 메모리 시스템(flash memory system)을 포함하고,
    시스템 온 칩은,
    각각, 블록 암호 알고리즘(block cipher algorithm)에 의한 다수의 라운드(round)를 통해 암호화 또는 복호화를 수행하는 다수의 암복호화 코어(encryption/decryption core); 및
    상기 플래시 메모리 시스템으로부터 입력된 평문 스트림(plaintext stream)을 평문 데이터(plaintext data)의 단위로, 상기 다수의 암복호화 코어에 분배하는 제1 데이터 처리기를 구비하고,
    상기 다수의 암복호화 코어는 각각, 상기 다수의 암복호화 코어 중 제1 암복호화 코어에서 수행된 다수의 라운드(round)에 대한 다수의 라운드 키를 생성하는 키 생성 동작을 수행한 결과 생성된 다수의 라운드 키 중 적어도 하나를 이용하여, 각각, 상기 평문 데이터를 암호문 데이터로 암호화하거나, 상기 암호문 데이터를 상기 평문 데이터로 복호화하는 것을 특징으로 하는 전자 장치.
KR1020140141690A 2014-10-20 2014-10-20 암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법 KR102376506B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140141690A KR102376506B1 (ko) 2014-10-20 2014-10-20 암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법
US14/790,106 US9843440B2 (en) 2014-10-20 2015-07-02 Encryptor/decryptor, electronic device including encryptor/decryptor, and method of operating encryptor/decryptor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140141690A KR102376506B1 (ko) 2014-10-20 2014-10-20 암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법

Publications (2)

Publication Number Publication Date
KR20160046368A KR20160046368A (ko) 2016-04-29
KR102376506B1 true KR102376506B1 (ko) 2022-03-18

Family

ID=55749916

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140141690A KR102376506B1 (ko) 2014-10-20 2014-10-20 암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법

Country Status (2)

Country Link
US (1) US9843440B2 (ko)
KR (1) KR102376506B1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102447476B1 (ko) 2015-08-20 2022-09-27 삼성전자주식회사 암복호 장치, 그것을 포함하는 저장 장치 및 그것의 암복호 방법
KR101989956B1 (ko) * 2015-10-29 2019-06-17 삼성에스디에스 주식회사 암호화 장치 및 방법
KR102488512B1 (ko) 2016-04-15 2023-01-13 주식회사 에이치엘클레무브 주차 지원 장치 및 그의 주차 제어 방법
US10797722B2 (en) 2016-06-10 2020-10-06 The Boeing Company System and method for providing hardware based fast and secure expansion and compression functions
CN109286484A (zh) * 2018-09-28 2019-01-29 哈尔滨百香果科技有限公司 一种提高数据加解密速度的快速数据处理方法
KR102448059B1 (ko) * 2019-05-02 2022-09-27 한국전자통신연구원 통신 시스템에서 비밀키를 사용한 통신 방법 및 장치
US11757855B2 (en) 2019-05-02 2023-09-12 Electronics And Telecommunications Research Institute Method and apparatus for communications using secret key in communication system
US11029858B1 (en) * 2020-04-03 2021-06-08 Kara Partners Llc Systems and method for enhancing computer security and redundancy
EP4148606A4 (en) * 2020-06-08 2023-10-18 Huawei Technologies Co., Ltd. METHOD FOR ENCRYPTING OR DECRYPTING DATA, APPARATUS AND SYSTEM
US11508273B2 (en) * 2020-11-12 2022-11-22 Synaptics Incorporated Built-in test of a display driver
CN112615816A (zh) * 2020-11-30 2021-04-06 中科热备(北京)云计算技术有限公司 一种云文档传输加解密方法
CN115114895B (zh) * 2022-08-26 2022-11-29 华控清交信息科技(北京)有限公司 一种合并报表的方法、装置和可读存储介质
KR102520958B1 (ko) * 2022-09-01 2023-04-12 주식회사 스마트엠투엠 Fpga 기반의 암호해독 시스템 데이터 처리 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080044025A1 (en) * 2006-08-18 2008-02-21 Corndorf Eric D Secure Telemetric Link

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1471661A (zh) 2000-06-29 2004-01-28 皇家菲利浦电子有限公司 提供多级存取特权的单文档多重加密
US20030223581A1 (en) * 2002-05-30 2003-12-04 Bedros Hanounik Cipher block chaining unit for use with multiple encryption cores
JP3880933B2 (ja) 2003-01-21 2007-02-14 株式会社東芝 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法
JP2004266479A (ja) 2003-02-28 2004-09-24 Nippon Telegr & Teleph Corp <Ntt> 暗号鍵生成方法および装置、暗号鍵生成プログラム並びにそのプログラムを記録した記録媒体
KR100546777B1 (ko) 2003-12-16 2006-01-25 한국전자통신연구원 Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기
KR20050095168A (ko) 2004-03-25 2005-09-29 대한민국(전남대학교총장) 다중 암/복호 연산용 프로세서
US8155306B2 (en) 2004-12-09 2012-04-10 Intel Corporation Method and apparatus for increasing the speed of cryptographic processing
KR100680025B1 (ko) 2005-07-05 2007-02-07 한국전자통신연구원 멀티세션 고속암복호화 처리 장치 및 방법
US7769166B2 (en) * 2006-08-24 2010-08-03 Lsi Corporation Dual mode AES implementation to support single and multiple AES operations
JP5050454B2 (ja) * 2006-09-01 2012-10-17 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US7945789B2 (en) 2006-09-12 2011-05-17 International Business Machines Corporation System and method for securely restoring a program context from a shared memory
US8549282B2 (en) * 2007-06-22 2013-10-01 Trend Micro Incorporated Method and system for monitoring encrypted data transmissions
JP5134894B2 (ja) 2007-09-07 2013-01-30 株式会社日立製作所 ストレージ装置及び暗号鍵変更方法
US9191197B2 (en) * 2007-10-10 2015-11-17 Canon Kabushiki Kaisha AES encryption/decryption circuit
DE102007052656B4 (de) * 2007-11-05 2010-03-25 Texas Instruments Deutschland Gmbh Digital-Verschlüsselungs-Hardware-Beschleuniger
WO2009122464A1 (ja) * 2008-03-31 2009-10-08 富士通株式会社 共通鍵暗号機能を搭載した暗号化装置及び組込装置
KR100949538B1 (ko) * 2008-09-09 2010-03-25 한국전자통신연구원 Aes 라인달 알고리즘을 이용하는 암호화 및 복호화 장치와 그 방법
KR100960113B1 (ko) * 2008-09-19 2010-05-27 한국전자통신연구원 고속처리 가능한 아리아 암복호화 장치
US9336160B2 (en) 2008-10-30 2016-05-10 Qualcomm Incorporated Low latency block cipher
US8745411B2 (en) * 2008-11-07 2014-06-03 Broadcom Corporation Protecting external volatile memories using low latency encryption/decryption
US8355499B2 (en) * 2008-12-12 2013-01-15 Micron Technology, Inc. Parallel encryption/decryption
JP2010185982A (ja) * 2009-02-10 2010-08-26 Toshiba Storage Device Corp 暗号化装置、復号化装置及び記憶装置
US8719593B2 (en) * 2009-05-20 2014-05-06 Harris Corporation Secure processing device with keystream cache and related methods
KR101612518B1 (ko) * 2009-11-26 2016-04-15 삼성전자주식회사 병렬 처리 가능한 암복호화기 및 그것의 암복호 방법
JP5017439B2 (ja) * 2010-09-22 2012-09-05 株式会社東芝 暗号演算装置及びメモリシステム
US8681974B1 (en) * 2011-03-17 2014-03-25 Altera Corporation Array encryption core
US8635467B2 (en) * 2011-10-27 2014-01-21 Certicom Corp. Integrated circuit with logic circuitry and multiple concealing circuits
US20140292371A1 (en) * 2013-03-29 2014-10-02 The Board Of Trustees Of The University Of Arkansas Multi-threshold dual-spacer dual-rail delay-insensitive logic (mtd3l) circuit design
US9355279B1 (en) * 2013-03-29 2016-05-31 Secturion Systems, Inc. Multi-tenancy architecture
US9274979B2 (en) * 2013-11-27 2016-03-01 Nvidia Corporation System, method, and computer program product for optimizing data encryption and decryption by implementing asymmetric AES-CBC channels
US20150227472A1 (en) * 2014-02-10 2015-08-13 Kabushiki Kaisha Toshiba Memory system, controller, and method
US9405919B2 (en) * 2014-03-11 2016-08-02 Qualcomm Incorporated Dynamic encryption keys for use with XTS encryption systems employing reduced-round ciphers
US9565018B2 (en) * 2014-05-28 2017-02-07 Apple Inc. Protecting cryptographic operations using conjugacy class functions
US20150363334A1 (en) * 2014-06-16 2015-12-17 Texas Instruments Incorporated Speculative cryptographic processing for out of order data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080044025A1 (en) * 2006-08-18 2008-02-21 Corndorf Eric D Secure Telemetric Link

Also Published As

Publication number Publication date
US20160112188A1 (en) 2016-04-21
US9843440B2 (en) 2017-12-12
KR20160046368A (ko) 2016-04-29

Similar Documents

Publication Publication Date Title
KR102376506B1 (ko) 암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법
US8737606B2 (en) Method and system for high throughput blockwise independent encryption/decryption
TWI402675B (zh) 低等待時間的區塊密碼術
US9712319B2 (en) Method and apparatus to encrypt plaintext data
US8837719B2 (en) Cryptographic methods and devices for pseudo-random generation, encrypting data, and cryptographically hashing a message
EP2197144A1 (en) Methods and devices for a chained encryption mode
US20090125726A1 (en) Method and Apparatus of Providing the Security and Error Correction Capability for Memory Storage Devices
US20080279371A1 (en) Methods of encrypting and decrypting data and bus system using the methods
US10176121B2 (en) Apparatus and method for memory address encryption
US20120159186A1 (en) Securing the implementation of a cryptographic process using key expansion
US20150195089A1 (en) Data scramble device, security device, security system, and data scramble method
KR20090131696A (ko) 암/복호화 장치 및 이를 포함하는 보안 저장 장치
CN103580851A (zh) 信息加密及解密方法
EP2717511A1 (en) Method and device for digital data blocks encryption and decryption
US20070183594A1 (en) Data processing apparatus for performing a cryptographic method
KR20180065183A (ko) Cctv 카메라 영상보안 암호화 임베디드 모듈
JP6167721B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法及びプログラム
JP5431191B2 (ja) 認証付きストリーム暗号の暗号化装置、認証付きストリーム暗号の復号化装置、暗号化方法、復号化方法およびプログラム
US9058507B2 (en) Signal processor with an encrypting or decrypting device in a memory system
JP4287397B2 (ja) 暗号文生成装置、暗号文復号装置、暗号文生成プログラム及び暗号文復号プログラム
KR101824315B1 (ko) 데이터 암호화 방법 및 장치, 및 데이터 복호화 방법 및 장치
WO2015173905A1 (ja) 暗号装置及び記憶システム及び復号装置及び暗号方法及び復号方法及び暗号プログラム及び復号プログラム
KR102626974B1 (ko) 화이트박스 암호의 비밀키 보호를 위한 방법 및 시스템
JP5559011B2 (ja) ストリーム暗号の暗号化装置、ストリーム暗号の暗号化方法およびプログラム
JP2011130312A (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