KR20230032429A - 메모리 장치 및 메모리 장치의 데이터 암복호화 방법 - Google Patents

메모리 장치 및 메모리 장치의 데이터 암복호화 방법 Download PDF

Info

Publication number
KR20230032429A
KR20230032429A KR1020210115254A KR20210115254A KR20230032429A KR 20230032429 A KR20230032429 A KR 20230032429A KR 1020210115254 A KR1020210115254 A KR 1020210115254A KR 20210115254 A KR20210115254 A KR 20210115254A KR 20230032429 A KR20230032429 A KR 20230032429A
Authority
KR
South Korea
Prior art keywords
cts
block
encryption
core
cipher
Prior art date
Application number
KR1020210115254A
Other languages
English (en)
Inventor
장재훈
김지엽
나한별
라영석
서만근
손홍락
임세진
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020210115254A priority Critical patent/KR20230032429A/ko
Priority to US17/698,639 priority patent/US20230068302A1/en
Priority to CN202210866899.XA priority patent/CN115733648A/zh
Publication of KR20230032429A publication Critical patent/KR20230032429A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

메모리 장치와 메모리 장치의 암복호화 방법이 제공된다. 메모리 장치는, 플레인(plain) 텍스트를 제공받고 플레인 블록들과 CTS(Cipher Text Stealing) 플레인 블록을 출력하는 입력부, 암복호화 코어 제어부의 제어에 따라, 입력부로부터 제공받은 상기 플레인 블록들을 각각 암호화하여 사이퍼(Cipher) 블록들을 출력하는 복수의 암복호화 코어를 포함하는 멀티 코어부, 입력부로부터 제공받은 CTS 플레인 블록을 CTS 사이퍼 블록으로 암호화하는 CTS 코어를 포함하는 CTS 코어부, 및 사이퍼 블록들 및 CTS 사이퍼 블록을 제공받아 사이퍼 텍스트를 출력하는 출력부를 포함하되, CTS 플레인 블록은 플레인 텍스트를 기초로 CTS 연산을 통해 생성되는 데이터 블록이다.

Description

메모리 장치 및 메모리 장치의 데이터 암복호화 방법 {MEMORY DEVICE AND METHOD FOR DATA ENCRYPTION/DECRYPTION OF MEMORY DEVICE}
본 발명은 메모리 장치 및 메모리 장치의 데이터 암복호화 방법에 관한 것이다.
통신 기술과 정보 처리 기술의 발달로 공격자의 능력이 향상됨에 따라 그에 따른 안전한 암호 시스템의 요구가 증가하고 있다. 일반적으로 더 복잡한 암호화 과정을 거친 사이퍼(Cipher) 데이터일수록 더 안전한데, 데이터를 암호화하기 위해서는 많은 연산을 필요로 하기 때문에 고속 동작을 위해 암복호화 장치는 복수의 코어를 이용하여 연산을 수행하게 된다.
그런데 암복호화 연산을 위해 복수의 코어를 이용하는 경우 전력 소모가 높아지는 단점이 있다. 또한, 암복호화 장치를 포함하는 기기들이 소형화됨에 따라 더 높은 집적도를 가지는 구조가 요구되고 있다.
본 발명이 해결하고자 하는 기술적 과제는, 데이터를 고속으로 암호화할 수 있는 암복호화 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 집적도를 높일 수 있는 암복호화 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 데이터를 고속으로 암호화할 수 있는 암복호화 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 기술적 사상에 따른 메모리 장치는, 플레인(plain) 텍스트를 제공받고 플레인 블록들과 CTS 플레인 블록을 출력하는 입력부, 암복호화 코어 제어부의 제어에 따라, 입력부로부터 제공받은 상기 플레인 블록들을 각각 암호화하여 사이퍼(Cipher) 블록들을 출력하는 복수의 암복호화 코어를 포함하는 멀티 코어부, 입력부로부터 제공받은 CTS 플레인 블록을 CTS 사이퍼 블록으로 암호화하는 CTS 코어를 포함하는 CTS 코어부, 및 사이퍼 블록들 및 CTS 사이퍼 블록을 제공받아 사이퍼 텍스트를 출력하는 출력부를 포함하되, CTS 플레인 블록은 플레인 텍스트를 기초로 CTS 연산을 통해 생성되는 데이터 블록이다.
상기 과제를 해결하기 위한 본 발명의 기술적 사상에 따른 메모리 장치는, 플레인 텍스트를 제공받아 플레인 텍스트를 분할하여 제1 내지 제4 플레인 블록을 출력하는 입력부, 입력부로부터 제1 내지 제4 플레인 블록을 제공받아 제1 내지 제4 플레인 블록을 암호화하여 제1 내지 제4 사이퍼 블록으로 출력하는 멀티 코어부, 멀티 코어부로부터 제1 내지 제4 사이퍼 블록을 제공받고, 사이퍼 텍스트를 출력하는 출력부,를 포함하되, 멀티 코어부는, 제1 암복호화 코어와, 제1 암복호화 코어와 다른 제2 암복호화 코어, 및 암복호화 코어 제어부를 포함하고, 제1 암복호화 코어는, 제1 플레인 블록을 암호화하여 제1 사이퍼 블록을 생성한 후, 제3 플레인 블록을 암호화하여 제3 사이퍼 블록을 생성하고, 제2 암복호화 코어는, 제2 플레인 블록을 암호화하여 제2 사이퍼 블록을 생성한 후, 제4 플레인 블록을 암호화하여 제4 사이퍼 블록을 생성하고, 입력부는 입력 레지스터를 포함하고, 입력 레지스터는, 제1 내지 제4 플레인 블록을 저장하고, 제1 및 제2 암복호화 코어에서 제1 및 제2 사이퍼 블록이 각각 생성된 후, 제1 및 제2 암복호화 코어 각각에 제3 및 제4 플레인 블록을 제공할 수 있다.
상기 과제를 해결하기 위한 본 발명의 기술적 사상에 따른 메모리 장치의 암복호화 방법은, 제1 암복호화 코어에서 제1 플레인 블록을 암호화하여 제1 사이퍼 블록을 생성하고, 제2 암복호화 코어에서 제1 암복호화 코어와 동기화되어 제2 플레인 블록을 암호화하여 제2 사이퍼 블록을 생성하고, 제2 사이퍼 블록을 제2 사이퍼 블록 헤드와 제2 사이퍼 블록 테일로 분할하고, 제2 사이퍼 블록 테일과 플레인 텍스트 테일을 가산 연산하여 CTS 플레인 블록을 생성하고, CTS 코어에서 CTS 플레인 블록을 CTS 사이퍼 블록으로 암호화하는 것을 시작하고, CTS 코어에서 CTS 플레인 블록을 CTS 사이퍼 블록으로 암호화하는 동안, 제1 암복호화 코어에서 제3 플레인 블록을 암호화하여 제3 사이퍼 블록을 생성하는 것을 시작하고, CTS 코어에서 CTS 플레인 블록을 CTS 사이퍼 블록으로 암호화하는 동안, 제2 암복호화 코어에서 제4 플레인 블록을 암호화하여 제4 사이퍼 블록을 생성하는 것을 시작하는 것을 포함할 수 있다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 몇몇 실시예에 따른 스토리지(storage) 장치가 적용된 시스템을 도시한 도면이다.
도 2는 본 발명의 몇몇 실시예에 따른 호스트-스토리지 시스템을 나타내는 블록도이다.
도 3은 본 발명의 몇몇 실시예에 따른 암복호화 장치를 나타내는 블록도이다.
도 4는 본 발명의 몇몇 실시예에 따른 XTS(XEX-based tweaked-codebook mode with cipher text stealing) 모드의 암호화 과정을 설명하기 위한 도면이다.
도 5a는 도 2의 암복호화 코어가 AES(Advanced Encryption Standard) 알고리즘으로 암호화를 수행하는 것을 예시적으로 나타낸 도면이다.
도 5b는 도 5a의 라운드 키(Round key)의 크기에 따른 라운드의 개수를 나타내는 도면이다.
도 6은 도 3의 입력부로 제공되는 플레인 텍스트를 예시적으로 나타내는 도면이다.
도 7 내지 10은 본 발명의 몇몇 실시예에 따른 CTS(Cipher Text Stealing) 연산 과정을 설명하기 위한 도면들이다.
도 11 및 12는 도 3의 출력부에서 출력되는 사이퍼 텍스트를 예시적으로 나타내는 도면이다.
도 13은 도 3의 암복호화 장치의 파이프 라인(pipe-line) 동작을 설명하기 위한 도면이다.
도 14는 본 발명의 다른 몇몇 실시예에 따른 암복호화 장치를 나타내는 블록도이다.
도 15 및 16은 본 발명의 다른 몇몇 실시예에 따른 암호화 과정을 설명하기 위한 도면이다.
도 17은 도 14의 암복호화 장치의 동작을 설명하기 위한 도면이다.
이하 첨부된 도면을 참조하여, 본 발명의 기술적 사상에 따른 실시예들에 대해 설명한다.
도 1은 본 발명의 일 실시예에 따른 스토리지(storage) 장치가 적용된 시스템(1000)을 도시한 도면이다. 도 1의 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 1의 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
도 1을 참조하면, 시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 시스템(1000)의 전반적인 동작, 보다 구체적으로는 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다.
메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator)(1130)를 더 포함할 수 있다. 이와 같은 가속기(1130)는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.
메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.
스토리지 장치(1300a, 1300b)는 전원 공급 여부와 관계없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성 메모리(non-volatile memory, NVM)(1320a, 1320b)를 포함할 수 있다. 비휘발성 메모리(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) V-NAND(Vertical NAND) 구조의 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(Universal Flash Storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다.
사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keyboard), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.
센서(1430)는 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다.
통신 장치(1440)는 다양한 통신 규약에 따라 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.
디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.
전력 공급 장치(1470)는 시스템(1000)에 내장된 배터리(도시 안함) 및/또는 외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.
연결 인터페이스(1480)는 시스템(1000)과, 시스템(1000)에 연결되어 시스템(1000)과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe, IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
도 2는 본 발명의 몇몇 실시예에 따른 호스트-스토리지 시스템(2000)을 나타내는 블록도이다.
호스트-스토리지 시스템(2000)은 호스트(2100) 및 스토리지 장치(2200)를 포함할 수 있다. 또한, 스토리지 장치(2200)는 스토리지 컨트롤러(2210) 및 비휘발성 메모리 (NVM)(2220)를 포함할 수 있다. 또한, 본 발명의 몇몇 실시예에 따라, 호스트(2100)는 호스트 컨트롤러(2110) 및 호스트 메모리(2120)를 포함할 수 있다. 호스트 메모리(2120)는 스토리지 장치(2200)로 전송될 데이터, 혹은 스토리지 장치(2200)로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다.
스토리지 장치(2200)는 호스트(2100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(2200)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(2200)가 SSD인 경우, 스토리지 장치(2200)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(2200)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(2200)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(2100)와 스토리지 장치(2200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
스토리지 장치(2200)의 비휘발성 메모리(2220)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(2200)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(2200)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
일 실시예에 따라, 호스트 컨트롤러(2110)와 호스트 메모리(2120)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 몇몇 실시예에서, 호스트 컨트롤러(2110)와 호스트 메모리(2120)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(2110)는 애플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 애플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(2120)는 상기 애플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 애플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.
호스트 컨트롤러(2110)는 호스트 메모리(2120)의 버퍼 영역의 데이터(예컨대, 기록 데이터)를 비휘발성 메모리(2220)에 저장하거나, 비휘발성 메모리(2220)의 데이터(예컨대, 독출 데이터)를 버퍼 영역에 저장하는 동작을 관리할 수 있다.
스토리지 컨트롤러(2210)는 호스트 인터페이스(2211), 메모리 인터페이스(2212) 및 CPU(central processing unit)(2213)를 포함할 수 있다. 또한, 스토리지 컨트롤러(2210)는 플래시 변환 레이어(Flash Translation Layer; FTL)(2214), 패킷 매니저(2215), AES(advanced encryption standard) 엔진(2216), ECC(error correction code) 엔진(2217) 및 버퍼 메모리(2218)을 더 포함할 수 있다. 스토리지 컨트롤러(2210)는 플래시 변환 레이어(FTL)(2214)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, CPU(2213)가 플래시 변환 레이어를 실행하는 것에 의해 비휘발성 메모리(2220)에 대한 데이터 기록 및 독출 동작이 제어될 수 있다.
호스트 인터페이스(2211)는 호스트(2100)와 패킷(packet)을 송수신할 수 있다. 호스트(2100)로부터 호스트 인터페이스(2211)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리(2220)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(2211)로부터 호스트(2100)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리(2220)로부터 독출된 데이터 등을 포함할 수 있다. 메모리 인터페이스(2212)는 비휘발성 메모리(2220)에 기록될 데이터를 비휘발성 메모리(2220)로 송신하거나, 비휘발성 메모리(2220)로부터 독출된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(2212)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
플래시 변환 계층(2214)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트(2100)로부터 수신한 논리 어드레스(logical address)를, 비휘발성 메모리(2220) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 웨어-레벨링은 비휘발성 메모리(2220) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 비휘발성 메모리(2220) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.
패킷 매니저(2215)는 호스트(2100)와 협의된 인터페이스의 프로토콜에 따른 패킷(Packet)을 생성하거나, 호스트(2100)로부터 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다. 또한, 버퍼 메모리(2218)는 비휘발성 메모리(2220)에 기록될 데이터 혹은 비휘발성 메모리(2220)로부터 독출될 데이터를 임시로 저장할 수 있다. 버퍼 메모리(2218)는 스토리지 컨트롤러(2210) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(2210)의 외부에 배치되어도 무방하다.
ECC 엔진(2217)은 비휘발성 메모리(2220)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(2217)은 비휘발성 메모리(2220)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리(2220) 내에 저장될 수 있다. 비휘발성 메모리(2220)로부터의 데이터 독출 시, ECC 엔진(2217)은 독출 데이터와 함께 비휘발성 메모리(2220)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.
AES 엔진(2216)은, 스토리지 컨트롤러(2210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다. 몇몇 실시예에서, AES 엔진(2216)은 도 2에 도시된 바와 같이 메모리 인터페이스(2212)보다 호스트 인터페이스(2211)에 더 인접하게 배치될 수 있다.
이하에서는 본 발명의 몇몇 실시예에 따른 암복호화 장치(10)에 대해 설명할 것이다. 본 명세서에서 '코어'는 블록(block) 단위로 암호화 또는 복호화를 수행하는 블록 암호 알고리즘(block cipher algorithm)을 이용하여 암호화 또는 복호화를 수행하는 모듈을 의미한다. 예를 들어, 코어는 DES(Data Encryption Standard), 3DES, AES(Advanced Encryption Standard) 또는 SEED 등의 블록 암호 알고리즘을 이용하여 암호화 또는 복호화를 수행할 수 있다. 블록 암호 알고리즘은 비트(bit) 단위로 암호화를 수행하는 LFSR(Linear Feedback Shift Register) 등의 스트림 암호 알고리즘(stream cipher algorithm)과 구분된다. 코어는 도 3의 암복호화 코어(230), CTS 코어(430), 트윅 코어부(500) 등을 포함한다. 각 코어들은 별개의 모듈로 구성되지만, 도 2의 CPU(2213)가 그 역할을 수행할 수도 있다.
도 3은 본 발명의 몇몇 실시예에 따른 암복호화 장치를 나타내는 블록도이다.
도 3을 참조하면, 암복호화 장치(10)는 입력부(100), 멀티 코어부(200), 출력부(300), CTS(Cipher Text Stealing) 코어부(400), 트윅 코어부(500)를 포함할 수 있다.
입력부(100)는 멀티 코어 제어부(110), CTS 제어부(120), 분배기(130)를 포함할 수 있다. 입력부(100)에는 키(KEY), 모드 신호(MODE)가 제공될 수 있다. 또한, 입력부(100)는 플레인 텍스트(P-TXT)를 제공받을 수 있다.
분배기(130)는 플레인 텍스트(P-TXT)를 제공받아 플레인 텍스트 바디(P-TXT_b)와 플레인 텍스트 테일(P-TXT_t)로 분할하여 플레인 텍스트 바디(P-TXT_b)는 멀티 코어 제어부(110)에 제공하고, 플레인 텍스트 테일(P-TXT_t)은 CTS 제어부(120)에 제공할 수 있다.
입력부(100)는 모드 신호(MODE)를 제공받아, 모드 신호(MODE)를 기초로 하여 동작할 수 있다. 모드 신호(MODE)는 암복호화 코어와 CTS 코어가 복수의 암호화 연산 모드 중 하나를 선택하여 동작하도록 제어할 수 있다. 연산 모드는 ECB(Electronic Code Book), CTS(Cipher Text Stealing), XEX(Xor-E-Xor), XTS(XEX-based tweaked-codebook mode with cipher text stealing)을 포함한다. 모드 신호(MODE)는 또한 플레인 텍스트(P-TXT)가 블록 단위로 나누어 떨어지는지 여부를 판단하여, 상기 판단에 따라 입력부(100)의 동작을 제어할 수 있다. 예를 들면, 플레인 텍스트(P-TXT)가 블록 단위로 나누어 떨어지는 경우, 모드 신호(MODE)는 분배기(130)가 플레인 텍스트(P-TXT)를 분할하지 않고 멀티 코어 제어부(110)에 제공하도록 제어할 수 있다. 반면, 플레인 텍스트(P-TXT)가 블록 단위로 나누어 떨어지지 않는 경우, 모드 신호(MODE)는 분배기(130)가 플레인 텍스트(P-TXT)를 플레인 텍스트 바디(P-TXT_b)와 플레인 텍스트 테일(P-TXT_t)로 분할하도록 제어할 수 있다. 즉, 모드 신호(MODE)는, 플레인 텍스트(P-TXT)가 블록 단위의 배수가 아닌 경우, 입력부(100)에서 후술하는 CTS 연산을 통해, 후술하는 CTS 플레인 블록(CTS-P-BLK)을 생성하도록 제어할 수 있다.
키(KEY)는 후술할 AES 알고리즘으로 암호화를 수행하는 경우, 라운드 키(Round key)를 생성하기 위한 암호 키일 수 있다. 키(KEY)의 크기는 128비트(Bit), 192비트, 256비트일 수 있다. 키(KEY)의 크기가 각각 128비트(Bit), 192비트, 256비트인 경우에 대해, AES 알고리즘은 각각 AES-128, AES-192, AES-256으로 지칭될 수 있다.
플레인 텍스트(P-TXT)는 도 2에 도시된 버스를 통해 입력될 수 있다. 버스는 규정된 크기의 단위로 데이터를 전송할 수 있다. 따라서, 플레인 텍스트(P-TXT)는 버스 인터페이스에서 규정된 크기로 연속적으로 암복호화 장치에 전달될 수 있다.
플레인 텍스트(P-TXT)를 다수의 플레인 블록(P-BLK)으로 분배하는 경우, 각 플레인 블록(P-BLK)의 헤더(header)에, 분배와 관련된 정보, 예를 들어, 해당 플레인 블록(P-BLK)이 플레인 텍스트(P-TXT)의 몇 번째 데이터인지를 나타내는 정보가 포함될 수 있다. 또한, 플레인 블록(P-BLK)이 암호화되어 생성되는 사이퍼 블록(C_BLK)의 헤더에도 해당 정보가 포함될 수 있다.
멀티 코어 제어부(110)는 입력 레지스터(111)를 포함할 수 있다. 입력 레지스터(111)는 분배기(130)로부터 플레인 텍스트 바디(P-TXT_b)를 제공받아 이를 블록 단위로 분할하여 저장할 수 있다. 블록 단위로 분할된 플레인 텍스트 바디(P-TXT_b)는 플레인 블록(P-BLK)으로 지칭될 수 있다. 즉, 플레인 텍스트(P-TXT)를 블록 단위로 나눈 데이터들을 플레인 블록(P-BLK)이라고 하고, 플레인 텍스트 바디(P-TXT_b)는 플레인 블록(P-BLK)들의 합과 동일할 수 있다. 몇몇 실시예에서, 블록 단위는 16바이트(Byte)일 수 있다.
이 경우, 플레인 텍스트 테일(P-TXT_t)은 플레인 텍스트(P-TXT)를 블록 단위로 나누었을 때의 나머지에 해당하는 데이터일 수 있다. 예를 들면, 플레인 텍스트(P-TXT)가 50바이트의 데이터이고, 블록 단위가 16바이트인 경우, 플레인 텍스트 바디(P-TXT_b)는 플레인 텍스트(P-TXT) 중에서 앞 부분 48바이트에 해당하는 데이터이고, 플레인 텍스트 테일(P-TXT_t)은 플레인 텍스트(P-TXT) 중에서 뒷 부분 2바이트에 해당하는 데이터일 수 있다.
CTS 제어부(120)는 플레인 텍스트 테일(P-TXT_t)을 제공받아 플레인 텍스트 테일(P-TXT_t)을 저장할 수 있다. CTS 제어부(120)는 멀티 코어 제어부(110)로부터 키(KEY)와 모드 신호(MODE)를 수신하여, 이를 기초로 동작할 수 있다. 또한, CTS 제어부(120)는 후술할 제n 사이퍼 블록(C-BLK_n)을 제공받아 이를 기초로 CTS 연산을 통해 후술할 CTS 플레인 블록(CTS-P-BLK)을 생성할 수 있다. CTS 연산에 관한 내용은 상세히 후술한다.
멀티 코어부(200)는 암복호화 코어 제어부(210), 및 복수의 암복호화 코어(230)를 포함할 수 있다.
암복호화 코어 제어부(210)는 키 제어부(211), 상태 제어부(213)를 포함할 수 있다. 키 제어부(211)는 입력부(100)로부터 키(KEY)를 제공받아 키(KEY)를 기초로 하여 후술할 라운드 키(Round key)를 생성할 수 있다. 키 제어부(211)의 라운드 키(Round key) 생성 과정에 대해서는 후술한다. 상태 제어부(213)는 암복호화 코어(230)들의 암호화 동작을 전반적으로 제어할 수 있다. 또한, 암복호화 코어 제어부(210)는 키 저장부(미도시)를 더 포함할 수 있다. 키 저장부(미도시)는 레지스터(register) 등으로 구현될 수 있다. 키 저장부(미도시)는 후술할 라운드 키(Round key)를 저장할 수 있다. 키 저장부(미도시)는 암복호화 코어 제어부(210)에 포함되거나, 또는 암복호화 코어 제어부(210)의 외부에 구비될 수도 있다.
복수의 암복호화 코어(230) 각각은 상태 제어부(213)의 제어에 따라 플레인 블록(P-BLK)들을 암호화할 수 있다. 예를 들면, 플레인 텍스트(P-TXT)가 분할되어 생성된 플레인 블록(P-BLK)들 중 제1 플레인 블록(P-BLK_1)은 제1 암복호화 코어(230_1)에 제공될 수 있다. 제2 플레인 블록(P-BLK_2)은 제2 암복호화 코어(230_2)에 제공될 수 있다. 마찬가지로, 제n 플레인 블록(P-BLK_n)은 제n 암복호화 코어(230_n)에 제공될 수 있다. 즉, 플레인 텍스트 바디(P-TXT_b)가 n 개의 플레인 블록(P-BLK)으로 분할되는 경우, n 개의 플레인 블록(P-BLK) 각각은 n 개의 암복호화 코어(230)에 각각 제공되어 암호화될 수 있다. 몇몇 실시예에서, 각각의 암복호화 코어(230)는 상태 제어부(213)의 제어에 기초하여 서로 동기화되어 동시에 암호화를 시작할 수 있다.
출력부(300)는 플레인 블록(P-BLK)들이 암호화된 복수의 사이퍼 블록(C_BLK)들과, CTS 플레인 블록(CTS-P-BLK)이 암호화된 CTS 사이퍼 블록(CTS-C-BLK)을 제공받아 이를 기초로 사이퍼 텍스트(C-TXT)를 출력할 수 있다. 출력부(300)는 제공되는 사이퍼 블록(C_BLK)들의 헤더를 참조하여, 헤더를 기초로 사이퍼 블록(C_BLK)들을 순서대로 가산 연산하여 사이퍼 텍스트(C-TXT)를 출력할 수 있다. 출력부(300)는 출력 레지스터(310)를 포함할 수 있다. 출력 레지스터(310)는 암호화가 완료되어 멀티 코어부(200)로부터 생성된 사이퍼 블록(C_BLK)들을 사이퍼 텍스트(C-TXT)로 출력하기 전에 임시로 저장할 수 있다.
CTS 코어부(400)는 CTS 코어 제어부(410)와 CTS 코어(430)를 포함할 수 있다. CTS 코어부(400)는 멀티 코어부(200)와 물리적으로 분리될 수 있다. CTS 코어 제어부(410)는 CTS 키 제어부(411), CTS 상태 제어부(413)를 포함할 수 있다. CTS 키 제어부(411)는 CTS 제어부(120)로부터 키(KEY)를 제공받아 키(KEY)를 기초로 하여 라운드 키(Round key)를 생성할 수 있다. CTS 상태 제어부(413)는 CTS 코어(430)의 암호화 동작을 전반적으로 제어할 수 있다. CTS 키 제어부(411)와 CTS 제어부(120)는 멀티 코어부(200)의 키 제어부(211), 상태 제어부(213)와 각각 동일하거나 유사할 수 있다.
몇몇 실시예에서, CTS 코어(430)는 복수의 코어로 구성될 수 있다. 도 3에서는 CTS 코어(430)가 하나의 코어인 것으로 도시되었으나, 본 발명은 이에 제한되지 않는다. CTS 코어(430)는 멀티 코어부(200)와 동일하거나 유사한 구조를 가질 수 있다.
트윅 코어부(500)는 초기 벡터(Initial Vector)(IV)와 트윅 키(KEY)를 제공받아 이를 기초로 트윅(Tweak)을 생성할 수 있다. 트윅(Tweak)은 멀티 코어부(200)와 CTS 코어부(400)에 제공되어 후술할 암복호화 코어(230)의 XEX(Xor-E-Xor) 모드의 암호화 과정에 이용될 수 있다.
도 4는 본 발명의 몇몇 실시예에 따른 XTS(XEX-based tweaked-codebook mode with cipher text stealing) 모드의 암호화 과정을 설명하기 위한 도면이다.
도 4를 참조하면, 데이터는 XTS(XEX-based tweaked-codebook mode with cipher text stealing) 모드로 암호화될 수 있다. 전술한 바와 같이, XTS 모드는 플레인 텍스트(P-TXT)가 블록 단위로 나누어 떨어지지 않는 경우의 암복호화 장치(10)의 동작 모드이다. 즉, 플레인 텍스트(P-TXT)가 플레인 텍스트 바디(P-TXT_b)와 플레인 텍스트 테일(P-TXT_t)로 분할되고, 플레인 텍스트 바디(P-TXT_b)는 다시 플레인 블록(P-BLK)들로 분할되어 각 암복호화 코어(230)에 제공되며, 플레인 텍스트 테일(P-TXT_t)은 CTS 제어부(120)에 제공되는 경우의 동작이 설명될 것이다. 또한, 비록 도 4에는 멀티 코어부(200)가 제1 암복호화 코어(230_1)와 제2 암복호화 코어(230_2)만을 포함하는 것으로 도시되었으나, 본 발명은 이에 제한되지 않고 멀티 코어부(200)가 다양한 개수의 암복호화 코어(230)를 포함하는 경우에도 적용될 수 있음에 유의하여야 한다.
먼저 제1 플레인 블록(P-BLK_1)은 제1 연산기(511)에서 제1 트윅(Tweak1)과 배타적 논리합되어 제1 암복호화 코어(230_1)에 입력된다. 제1 암복호화 코어(230_1)는 라운드 키(Round key)를 제공받아 이를 기초로 입력받은 제1 플레인 블록(P-BLK_1)의 배타적 논리합 결과 데이터를 암호화한다. 상기 암호화하는 과정은 다수의 라운드를 거쳐 수행될 수 있다. 제1 암복호화 코어(230_1)의 암호화 동작은 상세히 후술한다. 출력된 암호화된 제1 플레인 블록(P-BLK_1)의 배타적 논리합 결과 데이터는 다시 제2 연산기(512)에서 제1 트윅(Tweak1)과 배타적 논리합되어 제1 사이퍼 블록(C-BLK_1)으로 출력된다. 즉, 제1 플레인 블록(P-BLK_1)을 제1 사이퍼 블록(C-BLK_1)으로 암호화하는 과정에서, 데이터가 제1 암복호화 코어(230_1)에 입력되기 전과 후에 2번의 트위킹(tweaking)을 거칠 수 있다.
마찬가지로, 제2 플레인 블록(P-BLK_2)은 제3 연산기(521)에서 제2 트윅(Tweak2)과 배타적 논리합되어 제2 암복호화 코어(230_2)에 입력된다. 제2 트윅(Tweak2)은 제1 트윅(Tweak1)이 제1 트윅 연산기(501)에서 초기 값(a)과 배타적 논리합되어 생성된다. 제2 암복호화 코어(230_2)와 제4 연산기(522)의 동작은 제1 암복호화 코어(230_1)와 제2 연산기(512)의 동작과 각각 동일하거나 유사할 수 있다. 즉, 제1 플레인 블록(P-BLK_1)은 2번의 트위킹을 거쳐 제1 사이퍼 블록(C-BLK_1)으로 암호화된다. 전술한 바와 같이, 제1 암복호화 코어(230_1)와 제2 암복호화 코어(230_2)는 상태 제어부(213)의 제어에 따라 서로 동기화되어 암호화를 수행할 수 있다.
제2 암복호화 코어(230_2)의 암호화가 끝난 후, 즉, 제2 사이퍼 블록(C-BLK_2)이 생성된 후에, 제2 사이퍼 블록(C-BLK_2)이 제2 사이퍼 블록 헤드(C-BLK_2_h)와 제2 사이퍼 블록 테일(C-BLK_2_t)로 분할된다. 제2 사이퍼 블록 테일(C-BLK_2_t)은 CTS 제어부(120)에 제공된다. 또한, CTS 제어부(120)는 도 3의 분배기(130)로부터 플레인 텍스트 테일(P-TXT_t)을 제공받을 수 있다. CTS 제어부(120)는 제2 사이퍼 블록 테일(C-BLK_2_t)과 플레인 텍스트 테일(P-TXT_t)을 가산 연산하여 CTS 플레인 블록(CTS-P-BLK)을 생성한다. 본 명세서에서는, CTS 플레인 블록(CTS-P-BLK)을 생성시키는 제2 사이퍼 블록 테일(C-BLK_2_t)과 플레인 텍스트 테일(P-TXT_t)의 가산 연산은 'CTS 연산'으로 지칭될 수 있다.
CTS 플레인 블록(CTS-P-BLK)은 제5 연산기(591)에서 제3 트윅(Tweak3)과 배타적 논리합되어 CTS 코어(430)에 입력된다. 제3 트윅(Tweak3)은 제2 트윅(Tweak2)이 제2 트윅 연산기(502)에서 초기 값(a)과 배타적 논리합되어 생성된다. CTS 코어(430)는 라운드 키(Round key)를 제공받아 이를 기초로 입력받은 CTS 플레인 블록(CTS-P-BLK)의 배타적 논리합 결과 데이터를 암호화한다. 출력된 암호화된 CTS 플레인 블록(CTS-P-BLK)의 배타적 논리합 결과 데이터는 다시 제6 연산기에서 제3 트윅(Tweak3)과 배타적 논리합되어 CTS 사이퍼 블록(CTS-C-BLK)으로 출력된다. 즉, CTS 플레인 블록(CTS-P-BLK)을 CTS 사이퍼 블록(CTS-C-BLK)으로 암호화하는 과정에서, 데이터가 CTS 코어(430)에 입력되기 전과 후에 2번의 트위킹을 거칠 수 있다.
전술한 과정을 거쳐 생성된 제1 사이퍼 블록(C-BLK_1), 제2 사이퍼 블록 헤드(C-BLK_2_h), CTS 사이퍼 블록(CTS-C-BLK)의 헤더를 참조하여, 헤더를 기초로 제1 사이퍼 블록(C-BLK_1), 제2 사이퍼 블록 헤드(C-BLK_2_h), CTS 사이퍼 블록(CTS-C-BLK)을 조합하여 도 3에 도시된 사이퍼 텍스트(C-TXT)를 출력할 수 있다. 몇몇 실시예에서, 제2 사이퍼 블록 헤드(C-BLK_2_h)과 CTS 사이퍼 블록(CTS-C-BLK)의 순서는 서로 교차 변경될 수 있다. 즉, 제2 사이퍼 블록 헤드(C-BLK_2_h)가 CTS 사이퍼 블록(CTS-C-BLK)보다 먼저 생성되지만, 최종 출력되는 사이퍼 텍스트(C-TXT)에서 CTS 사이퍼 블록(CTS-C-BLK)이 제2 사이퍼 블록 헤드(C-BLK_2_h)보다 앞서서 배치될 수 있다. 제2 사이퍼 블록 헤드(C-BLK_2_h)과 CTS 사이퍼 블록(CTS-C-BLK)의 순서를 서로 교차 변경함으로써 사이퍼 텍스트(C-TXT)에 대한 공격을 보다 어렵게 할 수 있다.
다음으로, 도 5a 및 5b를 참조하여 플레인 블록(P-BLK)을 AES 알고리즘으로 암호화하여 사이퍼 블록(C-BLK)을 생성하는 과정에 대하여 설명한다. 설명의 편의를 위해 플레인 블록(P-BLK)의 크기가 16바이트이고, 라운드 키(Round key)의 크기가 256비트(즉, AES-256)인 것을 예시로서 설명할 것이나, 본 발명은 이에 한정되지 않음을 명심해야 할 것이다. 또한, 도 5a에 도시된 암복호화 코어(230)는 도 3에 도시된 복수의 암복호화 코어(230_1, 230_2, ?? 230_n)중 어느 하나일 수 있다.
도 5a는 도 2의 암복호화 코어가 AES(Advanced Encryption Standard) 알고리즘으로 암호화를 수행하는 것을 예시적으로 나타낸 도면이다. 도 5a의 암복호화 코어(230)는 하나의 프리 라운드(PRE-ROUND)와 14개의 라운드 (ROUND1~ROUND14)를 거쳐 플레인 블록(P-BLK)을 암호화할 수 있다.
프리 라운드(PRE-ROUND)는 플레인 블록(P-BLK)을 초기 라운드 키(Round key 0)와 배타적 논리합한다. 도 5a의 프리 라운드(PRE-ROUND)로 입력되는 초기 라운드 키(Round key 0)는 키(KEY)와 동일할 수 있다. 또는 초기 라운드 키(Round key 0)는 키(KEY)가 키 제어부(211)에서 초기 값(미도시)과 배타적 논리합되어 생성되는 키일 수도 있다. 또한, 프리 라운드(PRE-ROUND)에서의 배타적 논리합은 후술되는 연산 Add Round key와 동일할 수 있다.
14개의 라운드(ROUND1~ROUND14)는 각각, 이전 단계의 라운드(또는, 프리 라운드)의 암호화 연산 결과를 컨퓨젼(confusion) 및 디퓨전(diffusion)한 후, 각 라운드에 고유한 라운드 키(Round key 1 ~ Round key 14)와 배타적 논리합한다. 컨퓨젼은 연속되는 라운드의 데이터 블록 사이의 관계를 모호하게 하는 것이고, 디퓨젼은 데이터 블록의 패턴을 분산시키는 것을 말한다. 도 5a의 플레인 블록(P-BLK)의 크기는 16바이트이다. 라운드 키(Round key)의 크기가 각각 128비트, 192비트 및 256비트인 경우에 대해, AES 알고리즘은 각각 AES-128, AES-192 및 AES-256으로 명명될 수 있다. 라운드의 개수는 라운드 키(Round key)의 크기에 따라 달라진다.
도 5a에 도시된 Mix-column, Sub Bytes, Shift Row, 및 Add Round key의 4가지 연산은 각각 Mix-column 모듈(231), Sub Bytes 모듈(233), Shift Row 모듈(235), 및 Add Round key 모듈(237)에 의해 수행될 수 있다. 또는, Mix-column, Sub Bytes, Shift Row, 및 Add Round key의 4가지 연산은 소프트웨어로서 각각 구현될 수도 있다.
도 5b는 도 5a의 라운드 키(Round key)의 크기에 따른 라운드의 개수를 나타내는 도면이다. 도 5a 및 도 5b를 참조하면, AES-128인 경우, 라운드 키(Round key)의 크기는 128 비트이고, 10개의 라운드가 진행된다. 그리고 AES-192 및 AES-256인 경우, 각각 라운드 키(Round key)의 크기는 192 비트 및 256 비트이고, 각각 12개 및 14개의 라운드가 진행된다. 도 5a의 프리 라운드(PRE-ROUND)는 라운드의 개수에 포함되지 않는다. 다만, AES-128, AES-192 및 AES-256 모두 블록 크기, 즉 플레인 블록(P-BLK)의 크기는 16바이트로 동일하다.
다시 도 5a를 참조하면, 각 라운드(ROUND1~ROUND14)는 전술된 동작을 수행하기 위해 Mix-column, Sub Bytes, Shift Row, 및 Add Round key의 4가지 연산을 차례로 수행한다. 단, 마지막 라운드인 라운드 14(ROUND14)에서는 연산 Mix Column은 생략될 수 있다. 연산 Sub-Bytes는 플레인 블록(P-BLK)이 암호화된 사이퍼 블록(C-BLK)가 선형 구조를 가지지 않도록 데이터 블록의 각 바이트(byte)를 섞는다(scramble). 데이터 블록은 16바이트로, 바이트 크기의 값을 원소로 하는 4x4 행렬로 표현될 수 있다. 데이터 블록의 각 바이트를 GF(2^8)의 갈로아 필드(Galois field) 상의 다항식으로 표현하여 역수를 구한 뒤 GF(2)에서 아핀(Affine) 변환함으로써, 연산 Sub Byte가 수행될 수 있다.
연산 Shift Row는, 데이터 블록의 각 행을 일정한 수만큼 쉬프트(shift)함으로써 수행된다. 연산 Mix-Column은 데이터 블록의 각 열의 원소들을 섞는다. 데이터 블록의 각 열을 4개의 항을 갖는 3차 다항식으로 표현하고 mod x^4+1 상의 다항식과 곱하여 행렬 곱셈으로 표현함으로써, 연산 Mix-Column가 수행될 수 있다. 연산 Sub Byte, 연산 Shift Row 및 연산 Mix-Column을 수행함으로써, 전술된 데이터 블록에 대한 컨퓨전 및 디퓨전이 수행된다. 데이터 블록의 원소(바이트)들과 라운드 키를 배타적 논리합 함으로써, 연산 Add Round key이 수행된다.
라운드 1부터 라운드 13까지는 전술한 바와 같이, 데이터 블록에 대해 Sub bytes, Shift Row, Mix-Column 및 Add Round key의 4가지 연산이 차례로 수행된다. 마지막 라운드인 라운드 14에 대하여는, 연산 Mix-Column을 제외한 Sub bytes, Shift Row, 및 Add Round key의 3가지 연산이 차례로 수행된다. 초기 라운드 키(Round key 0)에 대해서는 AES 표준인 FIPS-197의 Appendix A의 A.1의 표에 예시되어 있다.
AES-128에서, 이전 라운드에서 생성된 라운드 키가 확장(Expansion)되어 다음 라운드의 라운드 키가 생성된다. 즉, 초기 라운드 키(Round key 0)이 확장되어 제1 라운드 키(Round key 1)이 생성된다(도 5a에서 Expand KEY). 제1 라운드 키(Round key 1)이 확장되어 제2 라운드 키(Round key 2)가 생성된다.(도 5a에서 Expand KEY). 따라서, 사이퍼 블록(C-BLK)이 출력되는 최종 라운드(ROUND14)에서 사용되는 제14 라운드 키(Round key 14)는 다른 라운드 키(Round key 1 ~ Round key 13)가 모두 산출되어야 생성될 수 있다. 전술한 바와 같이, 각 라운드 키(Round key 1 ~ Round key 14)는 도 3의 키 제어부(211)에서 생성되어(즉, 확장되어) 각 암복호화 코어(230)로 인가될 수 있다.
도 6은 도 3의 입력부로 제공되는 플레인 텍스트를 예시적으로 나타내는 도면이다. 도 7 내지 10은 본 발명의 몇몇 실시예에 따른 CTS(Cipher Text Stealing) 연산 과정을 설명하기 위한 도면들이다. 도 11 및 12는 도 3의 출력부에서 출력되는 사이퍼 텍스트를 예시적으로 나타내는 도면이다. 이하에서는 전술한 CTS 연산을 설명하기 위해 플레인 텍스트(P-TXT)를 예시적으로 도시하였으나, 이는 설명의 편의를 위한 것임을 유의하여야 한다. 이하에서는, 설명의 편의를 위해 도 6 내지 도 12에 도시된 1 개의 직사각형 블록이 1 바이트의 데이터를 나타내는 것으로 가정하여 설명할 것이다. 또한, 블록 단위는 16 바이트를 의미한다.
먼저 도 6을 참조하면, 플레인 텍스트(P-TXT)는 플레인 텍스트 바디(P-TXT_b)와 플레인 텍스트 테일(P-TXT_t)으로 분할될 수 있다. 플레인 텍스트 바디(P-TXT_b)는 다시 블록 단위로 분할되어, 제1 플레인 블록(P-BLK_1), 제2 플레인 블록(P-BLK_2), ?? 제n 플레인 블록(P-BLK_n)으로 분할될 수 있다. 즉, 도 6에 도시된 각각의 플레인 블록(P-BLK)은 16 바이트의 크기를 가진다. 또한, 도 6에서, 플레인 텍스트 테일(P-TXT_t)은 16 바이트보다 작은 10 바이트의 크기를 가진다. 즉, 플레인 텍스트(P-TXT)는 16n + 10 바이트의 크기를 가진다. 비록 도 6에서는 플레인 텍스트 테일(P-TXT_t)이 10 바이트의 크기를 가지는 것으로 도시되었으나, 플레인 텍스트(P-TXT)에서 플레인 텍스트 테일(P-TXT_t)이 분할된 크기는 예시적인 것이며, 블록 단위가 16 바이트인 경우, 플레인 텍스트 테일(P-TXT_t)은 1 바이트 이상 15 바이트 이하의 크기를 가질 수 있음은 통상의 기술자에게 자명할 것이다.
도 7은 도 6의 제n 플레인 블록(P-BLK_n)을 나타내는 도면이다. 도 7 및 8을 참조하면, 도 7의 제n 플레인 블록(P-BLK_n)은 암호화 과정을 거쳐 도 8의 제n 사이퍼 블록(C-BLK_n)으로 암호화된다. 제n 사이퍼 블록은 CTS 연산을 위해, 제n 사이퍼 블록 헤드(C-BLK_n_h)와 제n 사이퍼 블록 테일(C-BLK_n_t)로 분할된다. 이 경우, 제n 사이퍼 블록 헤드(C-BLK_n_h)는 도 6에 도시된 플레인 텍스트 테일(P-TXT_t)과 같은 크기를 가져야 한다. 즉, 제n 사이퍼 블록 헤드(C-BLK_n_h)의 크기는 10 바이트이다. 또한, 제n 사이퍼 블록 테일(C-BLK_n_t)의 크기는 6 바이트이다.
다음으로, 도 3과 도 9 및 10을 참조하면, 플레인 텍스트 테일(P-TXT_t)과 제n 사이퍼 블록 테일(C-BLK_n_t)은 도 3의 CTS 제어부(120)에서 가산 연산되어 CTS 플레인 블록(CTS-P-BLK)이 생성된다(도 9에 도시됨). 플레인 텍스트 테일(P-TXT_t)의 크기는 10 바이트이고, 제n 사이퍼 블록 테일(C-BLK_n_t)의 크기는 6 바이트이므로, 플레인 텍스트 테일(P-TXT_t)와 제n 사이퍼 블록 테일(C-BLK_n_t)이 가산 연산되어 생성된 CTS 플레인 블록(CTS-P-BLK)은 16 바이트의 크기를 가진다. CTS 플레인 블록(CTS-P-BLK)은 도 3의 CTS 코어(430)에 입력되어 CTS 사이퍼 블록(CTS-C-BLK)으로 암호화된다(도 10에 도시됨). 생성된 CTS 사이퍼 블록(CTS-C-BLK)은 도 3의 출력 레지스터(310)에 저장되어, 다른 사이퍼 블록(C_BLK)들과 가산 연산되어 사이퍼 텍스트(C-TXT)로 출력된다.
도 11을 참조하면, 사이퍼 텍스트(C-TXT)는 제1 사이퍼 블록(C-BLK_1), 제2 사이퍼 블록(C-BLK_2), ?? 제n-1 사이퍼 블록(C-BLK_n-1)과, CTS 사이퍼 블록(CTS-C-BLK), 제n 사이퍼 블록 헤드(C-BLK_n_h)가 순서대로 가산 연산되어 출력될 수 있다. 비록 CTS 사이퍼 블록(CTS-C-BLK)이 제n 사이퍼 블록 헤드(C-BLK_n_h)보다 늦게 생성되지만, 사이퍼 텍스트(C-TXT)에 대한 공격을 어렵게 하기 위해 CTS 사이퍼 블록(CTS-C-BLK)과 제n 사이퍼 블록 헤드(C-BLK_n_h)의 배치 순서를 서로 변경할 수 있다.
도 12을 참조하면, 도 11과는 달리 사이퍼 텍스트(C-TXT)는 제1 사이퍼 블록(C-BLK_1), 제2 사이퍼 블록(C-BLK_2), ?? 제n-1 사이퍼 블록(C-BLK_n-1)과, 제n 사이퍼 블록 헤드(C-BLK_n_h), CTS 사이퍼 블록(CTS-C-BLK)이 순서대로 가산 연산되어 출력될 수도 있다.
도 13은 도 3의 암복호화 장치의 파이프 라인(pipe-line) 동작을 설명하기 위한 도면이다. 도 13은 제1 내지 제3 플레인 텍스트가 순차적으로 입력되는 경우에, 각 플레인 텍스트의 암호화 과정을 예시적으로 도시한다. 설명의 편의를 위해, 암복호화 장치(10)로 입력되는 각 플레인 텍스트의 크기가 60 바이트인 것으로 가정하여 설명한다. 비록 도 13에서는 도 3의 암복호화 장치(10)가 제1 암복호화 코어(230_1), 제2 암복호화 코어(230_2), 및 CTS 코어(430)만을 포함하는 것으로 도시되었으나, 이는 설명의 편의를 위한 것으로, 본 발명은 이에 제한되지 않는다.
도 3 및 13을 참조하면, t1 시점 이전에, 제1 플레인 텍스트(P-TXT_1)는 제1 내지 제4 플레인 블록(P-BLK1, P-BLK2, P-BLK3, P-BLK4)과 제1 플레인 텍스트 테일(P-TXT_1_t)로 분할된다. t1 시점에서, 제1 암복호화 코어(230_1)가 제1 플레인 블록(P-BLK_1)의 암호화를 시작하고(ENCRYPTION 1), 제2 암복호화 코어(230_2)가 제1 암복호화 코어(230_1)에 동기화되어 제2 플레인 블록(P-BLK_2)의 암호화를 시작한다(ENCRYPTION 2). 제1 플레인 블록(P-BLK_1)과 제2 플레인 블록(P-BLK_2)의 암호화가 완료되면, 생성된 제1 사이퍼 블록(C-BLK_1)과 제2 사이퍼 블록(C-BLK_2)은 도 3의 출력 레지스터(310)로 전달되고, 제1 암복호화 코어(230_1)는 제3 플레인 블록(P-BLK_3)의 암호화를 시작하고(ENCRYPTION 3), 제2 암복호화 코어(230_2)는 제4 플레인 블록(P-BLK_4)의 암호화를 시작한다(ENCRYPTION 4).
t2 시점에서, 제3 플레인 블록(P-BLK_3)과 제4 플레인 블록(P-BLK_4)의 암호화가 완료되면, 생성된 제3 사이퍼 블록(C-BLK_3)은 도 3의 출력 레지스터(310)로 전달되고, 제4 사이퍼 블록(C-BLK_4)은 도 3의 CTS 제어부(120)로 전달된다. CTS 제어부(120)는 제4 사이퍼 블록(C-BLK_4)을 분할하여 제4 사이퍼 블록 헤드(C-BLK_4_h)와 제4 사이퍼 블록 테일(C-BLK_4_t)을 생성한다. 그리고 CTS 제어부(120)는 제1 플레인 텍스트 테일(P-TXT_1_t)과 제4 사이퍼 블록 테일(C-BLK_4_t)을 가산 연산하여 제1 CTS 플레인 블록(CTS-P-BLK_1)을 생성하여 CTS 코어(430)에 제공한다. CTS 코어(430)는 제1 CTS 플레인 블록(CTS-P-BLK_1)을 제공받아, t2 시점에서, 제1 CTS 플레인 블록(CTS-P-BLK_1)의 암호화를 시작한다(CTS MODE). 동시에, t2 시점에서, 제1 암복호화 코어(230_1)는 제2 플레인 텍스트(P-TXT)가 분할되어 생성된 제5 플레인 블록(P-BLK_5)의 암호화를 시작하고(ENCRYPTION 1'), 제2 암복호화 코어(230_2)는 제1 암복호화 코어(230_1)에 동기화되어 제6 플레인 블록(P-BLK_6)의 암호화를 시작한다(ENCRYPTION 2').
t2' 시점에서, 제1 CTS 플레인 블록(CTS-P-BLK_1)의 암호화가 완료되면, 즉, CTS MODE가 종료되면, 생성된 제1 CTS 사이퍼 블록(CTS-C-BLK_1)은 도 3의 출력 레지스터(310)로 전달된다. 출력 레지스터(310)는 제공받은 제1 내지 제3 사이퍼 블록(C-BLK_1, C-BLK_2, C-BLK_3)과, 제4 사이퍼 블록 헤드(C-BLK_4_h), 및 제1 CTS 사이퍼 블록(CTS-C-BLK_1)을 가산 연산하여 제1 사이퍼 텍스트(C-TXT_1)를 출력한다.
t1 ~ t2' 구간에서 제1 플레인 텍스트(P-TXT_1)에 대한 암복호화 장치(10)의 동작은, t2 ~ t3' 구간에서 제2 플레인 텍스트(P-TXT_2)에 대한 암복호화 장치(10)의 동작과 유사할 수 있다. 마찬가지로, t3 ~ t5 구간에서 제3 플레인 텍스트(P-TXT_3)에 대한 암복호화 장치(10)의 동작은, t1 ~ t2' 구간에서 제1 플레인 텍스트(P-TXT_1)에 대한 암복호화 장치(10)의 동작과 유사할 수 있다. 즉, 제1 내지 제3 플레인 텍스트(P-TXT_1, P-TXT_2, P-TXT_3)의 암호화가 끝나는 시점은 t5이다.
전술한 바와 같이, CTS 연산된 CTS 플레인 블록(CTS-P-BLK)을 암호화하기 위해서는, 1개의 암복호화 코어만을 필요로 한다. 그런데, CTS 연산을 수행하기 위해서는 암호화가 완료된 사이퍼 블록이 필요하기 때문에, CTS 플레인 블록(CTS-P-BLK)은 다른 플레인 블록들과 동시에 암호화될 수 없고, 다른 플레인 블록들의 암호화가 끝난 후에 암호화되어야 한다. 또한, 1개의 암복호화 코어에서 CTS 플레인 블록(CTS-P-BLK)을 암호화하는 동안, 1개의 코어를 제외한 다른 암복호화 코어는 동작하지 않는다(t2 ~ t2' 구간 및 t3 ~ t3' 구간). 그러나, 본 발명의 몇몇 실시예에 따른 암복호화 장치(10)는 CTS 코어(430)를 이용하여 CTS 플레인 블록(CTS-P-BLK)을 처리하기 때문에, CTS 플레인 블록(CTS-P-BLK)을 처리하는 동안 다른 암복호화 코어(도 13에서 제1 암복호화 코어(230_1) 및 제2 암복호화 코어(230_2))에서 다른 플레인 텍스트의 암호화를 시작할 수 있다. 따라서 파이프 라인 동작이 가능하다.
도 14는 본 발명의 다른 몇몇 실시예에 따른 암복호화 장치를 나타내는 블록도이다. 이하에서는 도 3에 도시된 암복호화 장치(10)와의 차이점이 중점적으로 설명될 것이다.
도 14를 참조하면, 암복호화 장치(20)는 입력부(600), 멀티 코어부(700), 출력부(800), 및 트윅 코어부(900)를 포함할 수 있다. 출력부(800)와 트윅 코어부(900)는 각각 도 3의 출력부(300), 트윅 코어부(500)와 동일하거나 유사할 수 있다.
입력부(600)는 입력 레지스터(610)를 포함할 수 있다. 입력 레지스터(610)의 동작에 대해서는 후술한다.
멀티 코어부(700)는 암복호화 코어 제어부(710), 및 복수의 암복호화 코어(730)를 포함할 수 있다.
암복호화 코어 제어부(710)는 키 제어부(711), 상태 제어부(713)를 포함할 수 있다. 키 제어부(711)는 입력부(600)로부터 키(KEY)를 제공받아 키(KEY)를 기초로 하여 라운드 키를 생성할 수 있다. 키 제어부(711)의 라운드 키 생성 과정은 도 3의 키 제어부(211)와 동일하거나 유사할 수 있다.
복수의 암복호화 코어(730) 각각은 상태 제어부(713)의 제어에 따라 플레인 블록(P-BLK)들을 암호화할 수 있다. 각각의 암복호화 코어(730)는 상태 제어부(713)의 제어에 기초하여 서로 동기화되어 동시에 암호화를 시작할 수 있다. 또한, 복수의 암복호화 코어(730)중 어느 하나는 CTS 플레인 블록(CTS-P-BLK)을 암호화할 수 있다. 복수의 암복호화 코어(730)중 어느 하나는 CTS 플레인 블록(CTS-P-BLK)을 암호화하는 것을 제외하면, 암복호화 코어(730)들은 도 3의 암복호화 코어(230)들과 각각 동일하거나 유사할 수 있다.
도 15 및 16은 본 발명의 다른 몇몇 실시예에 따른 암호화 과정을 설명하기 위한 도면이다. 이하에서는 도 4 및 5a 와의 차이점이 중점적으로 설명될 것이다.
도 14 및 15를 참조하면, 제1 플레인 블록(P-BLK_1)과 제2 플레인 블록(P-BLK_2)이 각각 제1 암복호화 코어(730_1)와 제2 암복호화 코어(730_2)에서 암호화되어 제1 사이퍼 블록(C-BLK_1)과 제2 사이퍼 블록(C-BLK_2)으로 출력된다. 제1 사이퍼 블록(C-BLK_1)과 제2 사이퍼 블록(C-BLK_2)은 도 14의 출력 레지스터(810)에 저장된다.
도 16을 참조하면, 제1 암복호화 코어(730_1)와 제2 암복호화 코어(730_2)에서 제1 플레인 블록(P-BLK_1)과 제2 플레인 블록(P-BLK_2)을 암호화하는 과정은 다수의 라운드를 거쳐 수행될 수 있다. 도 16의 각 라운드는 도 5a의 각 라운드와 동일하거나 유사할 수 있다. 즉, Mix-column, Sub Bytes, Shift Row, 및 Add Round key의 4가지 연산은 각각 Mix-column 모듈(731), Sub Bytes 모듈(733), Shift Row 모듈(735), 및 Add Round key 모듈(737)에 의해 수행될 수 있다. 또는, Mix-column, Sub Bytes, Shift Row, 및 Add Round key의 4가지 연산은 소프트웨어로서 각각 구현될 수도 있다.
계속해서, 도 14 및 15를 참조하면, 제3 플레인 블록(P-BLK_3)이 제3 암복호화 코어(730_3)에서 암호화되어 제3 사이퍼 블록(C-BLK_3)으로 출력된다. 제3 사이퍼 블록(C-BLK_3)은 제3 사이퍼 블록 헤드(C-BLK_3_h)와 제3 사이퍼 블록 테일(C-BLK_3_t)로 분할된다. 제3 사이퍼 블록 헤드(C-BLK_3_h)는 도 14의 출력 레지스터(810)에 저장된다. 제3 사이퍼 블록 테일(C-BLK_3_t)은 플레인 텍스트 테일(P-TXT_t)과 가산 연산되어(즉, CTS 연산되어) CTS 플레인 블록(CTS-P-BLK)으로 출력된다. CTS 플레인 블록(CTS-P-BLK)은 다시 제3 암복호화 코어(730_3)에서 암호화되어 CTS 사이퍼 블록(CTS-C-BLK)으로 출력된다. CTS 사이퍼 블록(CTS-C-BLK)은 도 14의 출력 레지스터(810)에 저장된다. 출력 레지스터(810)는 제1 사이퍼 블록(C-BLK_1), 제2 사이퍼 블록(C-BLK_2), CTS 사이퍼 블록(CTS-C-BLK), 제3 사이퍼 블록 헤드(C-BLK_3_h)을 제공받아 이를 순서대로 가산 연산하여 사이퍼 텍스트(C-TXT)로 출력한다. 전술한 CTS 연산은 도 3의 암복호화 장치(10)와는 달리, 도 14의 멀티 코어부(700)에서 수행될 수 있다.
도 17은 도 14의 암복호화 장치에서 제1 및 제2 플레인 텍스트(P-TXT_1, P-TXT_2)를 암호화하는 동작을 설명하기 위한 도면이다. 도 17에서는, 도 14의 멀티 코어부(700)가 2개의 암복호화 코어, 즉 제1 암복호화 코어(730_1)와 제2 암복호화 코어(730_2)만을 포함하는 것을 예시로 들어 설명한다. 그러나, 이는 예시적인 것이고, 본 발명은 이에 한정되지 않는다.
도 14 및 17을 참조하면, t1 시점 이전에, 제1 플레인 텍스트(P-TXT_1)는 제1 내지 제4 플레인 블록(P-BLK1, P-BLK2, P-BLK3, P-BLK4)과 제1 플레인 텍스트 테일(P-TXT_1_t)로 분할되어 도 14의 입력 레지스터(610)에 저장된다. t1 시점에서, 제1 암복호화 코어(730_1)가 제1 플레인 블록(P-BLK_1)의 암호화를 시작하고(ENCRYPTION 1), 제2 암복호화 코어(230_2)가 제1 암복호화 코어(230_1)에 동기화되어 제2 플레인 블록(P-BLK_2)의 암호화를 시작한다(ENCRYPTION 2). t1 ~ t2 구간에서, 즉, 제1 플레인 블록(P-BLK_1)과 제2 플레인 블록(P-BLK_2)이 암호화되는 동안, 제3 플레인 블록(P-BLK_3)과 제4 플레인 블록(P-BLK_4)은 도 14의 입력 레지스터(610)에 저장되어 있다.
t2 시점에서, 제1 플레인 블록(P-BLK_1)과 제2 플레인 블록(P-BLK_2)의 암호화가 완료되면, 생성된 제1 사이퍼 블록(C-BLK_1)과 제2 사이퍼 블록(C-BLK_2)은 도 14의 출력 레지스터(810)로 전달되고, 출력 레지스터(810)는 제1 사이퍼 블록(C-BLK_1)과 제2 사이퍼 블록(C-BLK_2)을 저장한다. 제1 암복호화 코어(730_1)는 제3 플레인 블록(P-BLK_3)의 암호화를 시작하고(ENCRYPTION 3), 제2 암복호화 코어(730_2)는 제4 플레인 블록(P-BLK_4)의 암호화를 시작한다(ENCRYPTION 4). 즉, 입력 레지스터(610)는, t2 시점에서, 제1 암복호화 코어(730_1) 및 제2 암복호화 코어(730_2)에 각각 제3 플레인 블록(P-BLK_3) 및 제4 플레인 블록(P-BLK_4)을 제공한다.
t3 시점에서, 제3 플레인 블록(P-BLK_3)과 제4 플레인 블록(P-BLK_4)의 암호화가 완료되면, 생성된 제3 사이퍼 블록(C-BLK_3)은 도 3의 출력 레지스터(310)로 전달되고, 출력 레지스터(810)는 제3 사이퍼 블록(C-BLK_3)을 저장한다. 제4 사이퍼 블록(C-BLK_4)은 제4 사이퍼 블록 헤드(C-BLK_4_h)와 제4 사이퍼 블록 테일(C-BLK_4_t)로 분할된다. 제1 플레인 텍스트 테일(P-TXT_1_t)과 제4 사이퍼 블록 테일(C-BLK_4_t)은 가산 연산되어 제1 CTS 플레인 블록(CTS-P-BLK_1)으로 생성된다. 제2 암복호화 코어(730_2)는 제1 CTS 플레인 블록(CTS-P-BLK_1)을 제공받아, t3 시점에서, 제1 CTS 플레인 블록(CTS-P-BLK_1)의 암호화를 시작한다(CTS MODE).
t4 시점에서, 제1 CTS 플레인 블록(CTS-P-BLK_1)의 암호화가 완료되면, 즉, CTS MODE가 종료되면, 생성된 제1 CTS 사이퍼 블록(CTS-C-BLK_1)은 도 14의 출력 레지스터(810)로 전달된다.
출력 레지스터(310)는 제공받은 제1 내지 제3 사이퍼 블록(C-BLK_1, C-BLK_2, C-BLK_3)과, 제4 사이퍼 블록 헤드(C-BLK_4_h), 및 제1 CTS 사이퍼 블록(CTS-C-BLK_1)을 가산 연산하여 제1 사이퍼 텍스트(C-TXT_1)를 출력한다.
t1 ~ t4 구간에서 제1 플레인 텍스트(P-TXT_1)에 대한 암복호화 장치(20)의 동작은, t4 ~ t7 구간에서 제2 플레인 텍스트(P-TXT_2)에 대한 암복호화 장치(20)의 동작과 동일하거나 유사할 수 있다. 즉, 암복호화 장치(20)는 제1 플레인 텍스트(P-TXT_1)을 암호화한 것과 동일한 방식으로 제2 플레인 텍스트(P-TXT_2)를 암호화할 수 있다.
전술한 바와 같이, 제1 및 제2 암복호화 코어(730_1, 730_2)는 16 바이트 크기를 가지는 제1 및 제2 플레인 블록(P-BLK_1, P-BLK_2)을 동시에 암호화할 수 있다. 만약 32 바이트보다 큰 플레인 텍스트(P-TXT)가 입력되더라도, 플레인 텍스트(P-TXT)를 블록 단위로 분할한 후, 각각의 암복호화 코어(730_1, 730_2)에 제공되기 전에 도 14의 입력 레지스터(610)에서 임시로 저장할 수 있다. 따라서 효율적인 데이터 암호화가 가능하다.
도 14의 입력 레지스터(610)은 도 3의 입력 레지스터(111)과 동일하거나 유사할 수 있다. 따라서, 플레인 텍스트(P-TXT)를 분할하여 임시 저장하는 것은 도 3의 암복호화 장치(10)와 도 14의 암복호화 장치(20)에 모두 적용될 수 있다.
본 명세서에서는 플레인 텍스트(P-TXT)를 사이퍼 텍스트(C-TXT)로 암호화하는 과정에 대해서만 설명하였으나, 본 발명의 기술적 사상은 암호화 과정뿐 아니라 암호화된 데이터를 복호화하는 과정에도 동일하게 적용될 수 있다. 즉, 사이퍼 텍스트(C-TXT)를 플레인 텍스트(P-TXT)로 복호화하는 과정에도 본 발명이 적용될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100 : 입력부
110 : 멀티 코어 제어부
111 : 입력 레지스터
120 : CTS 제어부
130 : 분배기
200 : 멀티 코어부
210 : 암복호화 코어 제어부
211 : 키 제어부
213 : 상태 제어부
230 : 암복호화 코어
300 : 출력부
310 : 출력 레지스터
400 : CTS 코어부
410 : CTS 코어 제어부
411 : CTS 키 제어부
413 : CTS 상태 제어부
430 : CTS 코어
플레인 텍스트(P-TXT)
사이퍼 텍스트(C-TXT)
플레인 블록(P-BLK)
사이퍼 블록(C-BLK)
CTS 플레인 블록(CTS-P-BLK)
CTS 사이퍼 블록(CTS-C-BLK

Claims (10)

  1. 플레인(plain) 텍스트를 제공받고 플레인 블록들과 CTS(Cipher Text Stealing) 플레인 블록을 출력하는 입력부;
    암복호화 코어 제어부의 제어에 따라, 상기 입력부로부터 제공받은 상기 플레인 블록들을 각각 암호화하여 사이퍼(Cipher) 블록들을 출력하는 복수의 암복호화 코어를 포함하는 멀티 코어부;
    상기 입력부로부터 제공받은 상기 CTS 플레인 블록을 CTS 사이퍼 블록으로 암호화하는 CTS 코어를 포함하는 CTS 코어부; 및
    상기 사이퍼 블록들 및 상기 CTS 사이퍼 블록을 제공받아 사이퍼 텍스트를 출력하는 출력부를 포함하되,
    상기 CTS 플레인 블록은 상기 플레인 텍스트를 기초로 CTS 연산을 통해 생성되는 데이터 블록인 메모리 장치.
  2. 제 1항에 있어서,
    상기 입력부는 분배기를 포함하고,
    상기 분배기는,
    상기 플레인 텍스트를 플레인 텍스트 바디와 플레인 텍스트 테일로 분할하되,
    상기 플레인 텍스트 테일은 상기 CTS 플레인 블록을 생성하는데 이용되는 데이터로, 상기 플레인 텍스트를 상기 블록 단위로 나누었을 때의 나머지에 해당하는 데이터이고,
    상기 플레인 텍스트 바디는 상기 플레인 텍스트에서 상기 플레인 텍스트 테일을 제외한 데이터인 메모리 장치.
  3. 제 2항에 있어서,
    상기 입력부는 멀티 코어 제어부를 더 포함하고,
    상기 멀티 코어 제어부는,
    상기 플레인 텍스트 바디를 제공받아 상기 복수의 암복호화 코어 각각에 상기 블록 단위로 분할하여 제공하는 메모리 장치.
  4. 제 2항에 있어서,
    상기 입력부는 CTS 제어부를 더 포함하고,
    상기 CTS 제어부는 상기 멀티 코어부로부터 상기 사이퍼 블록들 중 어느 하나의 사이퍼 블록을 수신하는 메모리 장치.
  5. 제 4항에 있어서,
    상기 CTS 제어부는,
    상기 플레인 텍스트 테일과, 상기 사이퍼 블록들 중 어느 하나의 사이퍼 블록 중 일부를 가산 연산하여 상기 블록 단위의 상기 CTS 플레인 블록을 생성하는 메모리 장치.
  6. 제 1항에 있어서,
    상기 CTS 코어부는 상기 암복호화 코어 제어부와 별도로 구성되어 상기 CTS 코어를 제어하는 CTS 코어 제어부를 더 포함하는 메모리 장치.
  7. 플레인 텍스트를 제공받아 상기 플레인 텍스트를 분할하여 제1 내지 제4 플레인 블록을 출력하는 입력부;
    상기 입력부로부터 상기 제1 내지 제4 플레인 블록을 제공받아 상기 제1 내지 제4 플레인 블록을 암호화하여 제1 내지 제4 사이퍼 블록으로 출력하는 멀티 코어부; 및
    상기 멀티 코어부로부터 상기 제1 내지 제4 사이퍼 블록을 제공받고, 사이퍼 텍스트를 출력하는 출력부를 포함하되,
    상기 멀티 코어부는,
    제1 암복호화 코어와, 상기 제1 암복호화 코어와 다른 제2 암복호화 코어, 및 상기 제1 암복호화 코어와 상기 제2 암복호화 코어를 제어하는 암복호화 코어 제어부를 포함하고,
    상기 제1 암복호화 코어는, 상기 제1 플레인 블록을 암호화하여 제1 사이퍼 블록을 생성한 후, 상기 제3 플레인 블록을 암호화하여 제3 사이퍼 블록을 생성하고,
    상기 제2 암복호화 코어는, 상기 제2 플레인 블록을 암호화하여 제2 사이퍼 블록을 생성한 후, 상기 제4 플레인 블록을 암호화하여 제4 사이퍼 블록을 생성하고,
    상기 입력부는 입력 레지스터를 포함하고,
    상기 입력 레지스터는, 상기 제1 내지 제4 플레인 블록을 저장하고, 상기 제1 및 제2 암복호화 코어에서 상기 제1 및 제2 사이퍼 블록이 각각 생성된 후, 상기 제1 및 제2 암복호화 코어 각각에 상기 제3 및 제4 플레인 블록을 제공하는 메모리 장치.
  8. 제 7항에 있어서,
    상기 출력부는 출력 레지스터를 더 포함하고,
    상기 출력 레지스터는 상기 제1 내지 제2 사이퍼 블록을 상기 사이퍼 텍스트로 출력하기 전에, 상기 제3 내지 제4 플레인 블록이 암호화되는 동안 상기 제1 내지 제2 사이퍼 블록을 저장하는 메모리 장치.
  9. 제 7항에 있어서,
    상기 입력부는 모드 신호를 수신하고,
    상기 모드 신호는,
    상기 플레인 텍스트가 블록 단위의 배수가 아닌 경우, 상기 입력부에서 CTS 연산을 통해 CTS 플레인 블록을 생성하도록 제어하고,
    상기 CTS 플레인 블록은,
    상기 플레인 텍스트를 블록 단위로 나누었을 때의 나머지에 해당하는 데이터와, 상기 제1 사이퍼 블록의 일부를 가산 연산하여 생성되는 상기 블록 단위의 데이터 블록이고,
    상기 암복호화 코어 제어부와 다른 CTS 코어 제어부의 제어에 따라 CTS 플레인 블록을 CTS 사이퍼 블록으로 암호화하는 CTS 코어를 포함하는 CTS 코어부를 더 포함하는 메모리 장치.
  10. 제1 암복호화 코어에서 제1 플레인 블록을 암호화하여 제1 사이퍼 블록을 생성하고, 제2 암복호화 코어에서 상기 제1 암복호화 코어와 동기화되어 제2 플레인 블록을 암호화하여 제2 사이퍼 블록을 생성하고,
    상기 제2 사이퍼 블록을 제2 사이퍼 블록 헤드와 제2 사이퍼 블록 테일로 분할하고,
    상기 제2 사이퍼 블록 테일과 플레인 텍스트 테일을 가산 연산하여 CTS 플레인 블록을 생성하고,
    CTS 코어에서 상기 CTS 플레인 블록을 CTS 사이퍼 블록으로 암호화하는 것을 시작하고,
    상기 CTS 코어에서 상기 CTS 플레인 블록을 상기 CTS 사이퍼 블록으로 암호화하는 동안, 상기 제1 암복호화 코어에서 제3 플레인 블록을 암호화하여 제3 사이퍼 블록을 생성하는 것을 시작하고,
    상기 CTS 코어에서 상기 CTS 플레인 블록을 상기 CTS 사이퍼 블록으로 암호화하는 동안, 상기 제2 암복호화 코어에서 제4 플레인 블록을 암호화하여 제4 사이퍼 블록을 생성하는 것을 시작하는 것을 포함하는 메모리 장치의 데이터 암복호화 방법.
KR1020210115254A 2021-08-31 2021-08-31 메모리 장치 및 메모리 장치의 데이터 암복호화 방법 KR20230032429A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020210115254A KR20230032429A (ko) 2021-08-31 2021-08-31 메모리 장치 및 메모리 장치의 데이터 암복호화 방법
US17/698,639 US20230068302A1 (en) 2021-08-31 2022-03-18 Memory device and method for data encryption/decryption of memory device
CN202210866899.XA CN115733648A (zh) 2021-08-31 2022-07-22 存储器装置和用于该存储器装置的数据加密/解密的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210115254A KR20230032429A (ko) 2021-08-31 2021-08-31 메모리 장치 및 메모리 장치의 데이터 암복호화 방법

Publications (1)

Publication Number Publication Date
KR20230032429A true KR20230032429A (ko) 2023-03-07

Family

ID=85286023

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210115254A KR20230032429A (ko) 2021-08-31 2021-08-31 메모리 장치 및 메모리 장치의 데이터 암복호화 방법

Country Status (3)

Country Link
US (1) US20230068302A1 (ko)
KR (1) KR20230032429A (ko)
CN (1) CN115733648A (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110255689A1 (en) * 2010-04-15 2011-10-20 Lsi Corporation Multiple-mode cryptographic module usable with memory controllers
JP5017439B2 (ja) * 2010-09-22 2012-09-05 株式会社東芝 暗号演算装置及びメモリシステム
US9893881B2 (en) * 2015-06-29 2018-02-13 Intel Corporation Efficient sharing of hardware encryption pipeline for multiple security solutions
US10951393B2 (en) * 2018-10-11 2021-03-16 Fungible, Inc. Multimode cryptographic processor

Also Published As

Publication number Publication date
US20230068302A1 (en) 2023-03-02
CN115733648A (zh) 2023-03-03

Similar Documents

Publication Publication Date Title
US8666064B2 (en) Endecryptor capable of performing parallel processing and encryption/decryption method thereof
CN105279439B (zh) 用于就地执行的存储器的加密方法
KR101975027B1 (ko) 시스템 온 칩, 이의 동작 방법, 이를 포함하는 장치들
EP2803012B1 (en) Using storage controller bus interfaces to secure data transfer between storage devices and hosts
US8054972B2 (en) Encryption processor of memory card and method for writing and reading data using the same
US9910790B2 (en) Using a memory address to form a tweak key to use to encrypt and decrypt data
KR102488636B1 (ko) 데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치
US10749672B2 (en) Computing system having an on-the-fly encryptor and an operating method thereof
WO2008031109A2 (en) System and method for encrypting data
CN112887077B (zh) 一种ssd主控芯片随机缓存保密方法和电路
US11907120B2 (en) Computing device for transceiving information via plurality of buses, and operating method of the computing device
US9979541B2 (en) Content management system, host device and content key access method
US11909855B2 (en) Cryptographic data communication apparatus
IL276538B2 (en) A cryptographic device for data communication
KR20230032429A (ko) 메모리 장치 및 메모리 장치의 데이터 암복호화 방법
CN115017556A (zh) 具有加密功能的存储设备
US9058295B2 (en) Encrypt data of storage device
TW202011248A (zh) 資料儲存裝置以及其操作方法
TWI804439B (zh) 資料加密的錯誤偵測裝置及方法
US20240220667A1 (en) Storage device and computing device including the same
US20230144135A1 (en) Trusted computing device and operating method thereof
US20230044214A1 (en) Storage device, host device and data transfer method thereof
TW202420088A (zh) 資料加密的錯誤偵測裝置
TW202403773A (zh) 半導體裝置及用以管理其之安全操作的系統與方法
KR20220124923A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법