KR101305627B1 - 암호 연산 장치 및 메모리 시스템 - Google Patents

암호 연산 장치 및 메모리 시스템 Download PDF

Info

Publication number
KR101305627B1
KR101305627B1 KR1020110087178A KR20110087178A KR101305627B1 KR 101305627 B1 KR101305627 B1 KR 101305627B1 KR 1020110087178 A KR1020110087178 A KR 1020110087178A KR 20110087178 A KR20110087178 A KR 20110087178A KR 101305627 B1 KR101305627 B1 KR 101305627B1
Authority
KR
South Korea
Prior art keywords
data
cryptographic
input data
input
cts
Prior art date
Application number
KR1020110087178A
Other languages
English (en)
Other versions
KR20120031123A (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 가부시끼가이샤 도시바
Publication of KR20120031123A publication Critical patent/KR20120031123A/ko
Application granted granted Critical
Publication of KR101305627B1 publication Critical patent/KR101305627B1/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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

Landscapes

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

Abstract

일 실시형태에 따르면, 암호 연산 장치는 암호 코어("코어")와, 할당 유닛과, 연접 유닛과, 출력 제어 유닛을 포함한다. 각각의 암호 코어는 CTS 플래그가 온으로 설정되어 있는 경우, 대칭 키를 이용하면서, CTS를 사용한 대칭 키 암호 알고리즘을 이용하여 암호화한다. 할당 유닛은 CTS 신호의 입력을 수신하는 경우에, 제1 입력 데이터를 미리 정해진 코어에 할당하고, 그 CTS 플래그를 온으로 설정한다. 연접 유닛은 제1 입력 데이터를 암호화하는 과정에서 생성된 연산 데이터를 그 제1 입력 데이터 직후에 입력되는 제2 입력 데이터와 연접시켜 연접 데이터를 생성한다. 출력 제어 유닛은 연접 데이터를 미리 정해진 코어에 출력하는 것과, 연접 데이터를 암호화하여 얻은 제1 암호화 데이터를 출력하는 것과, 제1 입력 데이터를 암호화하여 얻은 제2 암호화 데이터를 출력하는 것을 제어하고, 또 미리 정해진 코어의 CTS 플래그를 오프로 설정한다.

Description

암호 연산 장치 및 메모리 시스템{CRYPTOGRAPHIC APPARATUS AND MEMORY SYSTEM}
<관련 출원과의 상호 참조>
본 출원은 2010년 9월 22일에 출원한 일본 특허 출원 제2010-211727호에 기초한 것으로서, 이에 대한 우선권을 주장하며, 이 특허문헌의 전체 내용은 인용에 의해 본 명세서에 원용된다.
여기에 기재하는 실시형태들은 개괄적으로 암호 연산 장치 및 메모리 시스템에 관한 것이다.
대칭 블록 암호(symmetric block cipher)는 전자 데이터를 보호하기 위한 목적으로 설계된 것이다. 블록 암호에 의해 암호의 블록 길이의 단일 데이터 블록의 암호화가 가능하다. 데이터 길이가 블록 길이보다 길 경우, 그 데이터는 개별 암호 블록으로 분할되어야 한다. 그렇기 때문에, 블록 길이보다 길이가 긴 데이터를, 대칭 블록 암호의 암호화 알고리즘을 이용하여 은닉화할 수 있는 암호화 방법과, 원래의 데이터의 위조(tampering)를 검출하는데 이용될 수 있는 인증 코드를 생성하기 위한 암호화 방법이 개발되고 있다. 대칭 블록 암호를 기본으로 하며 다양한 용도에 유용한 이러한 암호화 방법을 "블록 암호 이용 모드(Block Cipher Mode of Operation)"라고 한다.
저장 장치에 저장된 데이터에 적용되는 블록 암호 이용 모드 "XTS"는 IEEE(Institute of Electrical and Electronic Engineers)의 출판물 P1619-Std-2007에 개시되어 있다. 또한, IEEE P1619-Std-2007에 개시된 블록 암호 이용 모드는 이 블록 암호 이용 모드를 정의한 미국 정부 FIPS(Federal Information Processing Standards) PUB SP800-38 시리즈에서 SP-800-38E(XTS mode(the Xor-Encrypt-Xor[=XEX]-based Tweaked CodeBook mode with CTS))로서 채택된다.
대칭 키 암호는 블록 길이의 데이터에 대해 연산하여 그 데이터를 암호화하도록 설계된 것이다. 이에, 암호화 대상 데이터를 각각 블록 길이를 갖는 부분으로 분할하여 얻은 입력 데이터의 각각의 블록에 대해 암호화가 이루어진다. 대상 데이터의 길이가 블록 길이의 정수배가 아닐 경우, 분할된 데이터의 최후 블록의 길이는 블록 길이보다 짧다. XTS 모드에서는, RFC(Request For Comments) 2040에서 제안된 CTS(CipherText Stealing)라고 불리는 연산 방식을 사용하여 블록 길이 미만의 최후 데이터를 암호화한다.
그러나, CTS의 연산에 따르면, 블록 길이 미만의 데이터의 연산과, 그 블록 길이 미만의 데이터 직전에 이루어진 연산과의 사이에 의존 관계가 생긴다. 그렇기 때문에, 블록 길이의 데이터의 암호화가 완료되지 않는다면, 블록 길이 미만의 데이터에 대한 다음 연산은 시작될 수 없다.
그 결과, 복수의 암호 코어(cryptographic core)를 이용하면서 블록 단위의 입력 데이터를 병렬로 암호화할 경우, 블록 길이 미만의 데이터가 할당되는 암호 코어는, 블록 데이터가 할당되는 암호 코어의 프로세스가 CTS의 미리 정해진 단계에서 종료될 때까지, 대기 상태에 있게 될 것이다. 이 경우에는 암호화가 병렬로 이루어지지 않고 성능이 저하된다.
실시형태의 목적은 암호화 프로세스의 속도를 고속화할 수 있는 암호 연산 장치 및 메모리 시스템을 제공하는 것이다.
일반적으로, 일 실시형태에 따르면, 암호 연산 장치는 복수의 암호 코어와, 할당 유닛과, 연접 유닛과, 출력 제어 유닛을 포함한다. 복수의 암호 코어의 각각은 CTS(CipherText Stealing)가 수행된다는 것을 나타내는 CTS 플래그를 내부에 저장하기 위한 플래그 저장 유닛을 포함한다. 그 CTS 플래그가 온으로 설정되어 있는 경우, 각각의 암호 코어는 대칭 키를 이용하면서, CTS를 사용한 대칭 키 암호 알고리즘을 이용하여 암호화한다. 블록 길이를 갖는 제1 입력 데이터 직후에 입력되는 제2 입력 데이터가 블록 길이 미만인 것을 나타내는 CTS 신호의 입력을 수신한 경우, 할당 유닛은 상기 제1 입력 데이터를 상기 복수의 암호 코어 중 하나에 할당하고, 그 제1 입력 데이터가 할당되는 하나의 암호 코어의 CTS 플래그를 온으로 설정한다. 연접 유닛은 상기 하나의 암호 코어에서 상기 제1 입력 데이터를 암호화하는 과정에서 생성된 연산 데이터를 상기 제2 입력 데이터와 연접시켜 연접 데이터를 생성한다. 출력 제어 유닛은 상기 연접 데이터를 상기 하나의 암호 코어에 출력하는 것을 제어하고, 상기 하나의 암호 코어에서 상기 연접 데이터를 암호화하여 얻은 제1 암호화 데이터를 출력하는 것을 제어하며, 상기 하나의 암호 코어에서 상기 제1 입력 데이터를 암호화하여 얻은 제2 암호화 데이터를 출력하는 것을 제어하고, 상기 하나의 암호 코어의 CTS 플래그를 오프로 설정한다.
전술한 암호 연산 장치에 따르면, 암호화 프로세스의 속도를 고속화할 수 있다.
도 1은 일 실시형태의 메모리 시스템의 예시적인 구성을 나타내는 블록도이다.
도 2는 본 실시형태에 따른 암호 연산 장치의 예시적인 구성을 나타내는 블록도이다.
도 3은 본 실시형태에 따른 할당 프로세스예의 흐름도이다.
도 4는 본 실시형태에 따른 통상의 대칭 키 암호 알고리즘을 이용한 연산예의 흐름도이다.
도 5는 본 실시형태에 따라 CTS를 사용한 대칭 키 암호 알고리즘을 이용하는 전단 연산예의 흐름도이다.
도 6은 본 실시형태에 따른 출력 제어 프로세스 및 연접 프로세스의 예의 흐름도이다.
도 7은 본 실시형태에 따라 CTS를 사용한 대칭 키 암호 알고리즘을 이용하는 후단 연산예의 흐름도이다.
도 8은 본 실시형태에 따라 입력 데이터 블록이 암호 코어 및 레지스터에 할당되는 예를 나타내는 도면이다.
도 9는 본 실시형태에 따라 암호 코어 및 레지스터로부터 암호화 데이터 블록이 출력되는 예를 나타내는 도면이다.
도 10은 입력 데이터 블록이 암호 코어에 할당되는 비교예를 나타내는 도면이다.
도 11은 암호 코어로부터 암호화 데이터 블록이 출력되는 비교예를 나타내는 도면이다.
일 실시형태에 따른 암호 연산 장치를 포함하는 메모리 시스템의 구성에 관해서 설명한다.
도 1은 본 실시형태에 따른 메모리 시스템(1)의 예시적인 구성을 나타내는 블록도이다. 메모리 시스템(1)은 호스트 장치(2)로부터의 기록 요구에 응답해서 기록 대상 데이터를 암호화하고 그 암호화된 기록 대상 데이터를 저장하도록, 그리고 호스트 장치(2)로부터의 판독 요구에 응답해서, 암호화되어 저장된 판독 대상 데이터를 복호화하여 판독하도록 구성된다. 메모리 시스템(1)은, 예컨대 NAND형 반도체 메모리 장치 등으로서 구현될 수 있다. 메모리 시스템(1)은 도 1에 도시하는 바와 같이, 암호 연산 장치(10)와, 메모리(50)와, 인터페이스 유닛(60)을 포함한다. 호스트 장치(2)는 내장형 메모리 시스템(1) 또는 외장형 메모리 시스템(1)을 구비하는 컴퓨터이다. 메모리 시스템(1)에 대한 기록 요구 및 판독 요구는 호스트 장치(2)에 설치된 OS(Operating System)에 의해 발행된다.
암호 연산 장치(10)는 호스트 장치(2)가 제공한 기록 대상 데이터를 암호화하도록, 그리고 메모리(50)에 암호화되어 저장된 판독 대상 데이터를 복호화하도록 구성되는 회로이다. 본 실시형태에 따르면, 기록 대상 데이터 및 판독 대상 데이터는 각각 블록 단위로 암호 연산 장치(10)에 입력된다. 암호 연산 장치(10)는 블록 단위로 기록 대상 데이터를 암호화하고 판독 대상 데이터를 복호화하도록 구성된다. 1 블록 사이즈가 128 비트라는 전제 하에 본 실시형태에 대해서 설명하지만, 블록 사이즈는 이 예에 한정되지 않는다. 암호 연산 장치(10)에 대해서 이하에 상세하게 설명한다.
메모리(50)는 암호 연산 장치(10)에 의해 암호화된 데이터를 내부에 저장하는 비휘발성 메모리이다. 예컨대, 메모리(50)는 NAND형 플래시 메모리로 구현될 수 있다.
인터페이스 유닛(60)은 호스트 장치(2)로부터 요구에 응답하여 메모리 시스템(1)에 포함된 기능 유닛들을 제어하는 회로이다. 구체적으로, 인터페이스 유닛(60)은 호스트 장치(2)로부터, 기록 대상 데이터가 기록될 것을 요구하는 기록 요구를 수신한 경우, 그 기록 대상 데이터를 분할하고, 그 분할 프로세스에서 분리되는 블록 데이터를 암호 연산 장치(10)에 순차로 출력하여 입력 데이터 블록을 암호화시킨다. 그런 다음, 인터페이스 유닛(60)은 암호 연산 장치(10)로부터, 입력 데이터 블록을 암호화하여 얻은 암호화 데이터를 순차 수신하고, 수신된 암호화 데이터 블록을 메모리(50)에 출력하여 암호화 데이터를 그 내부에 저장시킨다. 또한, 인터페이스 유닛(60)은 호스트 장치(2)로부터 판독 요구를 수신하면, 메모리(50)로부터 판독 대상 데이터 블록을 판독하고, 그 판독 대상 데이터 블록을 암호 연산 장치(10)에 순차로 보내어 암호 연산 장치(10)로 하여금 판독 대상 데이터 블록을 복호화하게 한다. 그 후, 인터페이스 유닛(60)은 암호 연산 장치(10)로부터 복호화된 판독 대상 데이터 블록의 입력을 순차 수신하고, 복호화된 판독 대상 데이터 블록을 호스트 장치(2)에 반환한다.
도 2는 본 실시형태에 따른 암호 연산 장치(10)의 예시적인 구성요소의 블록도이다. 도 2에 도시하는 바와 같이, 암호 연산 장치(10)는 암호 코어(20-1∼20-4)와, 암호 연산 제어 유닛(30)을 포함한다. 본 실시형태에서는 암호 코어의 수가 4개인 예를 이용하여 설명하지만, 암호 코어의 수는 2 이상의 임의의 수일 수 있다. 또한, 이하에서는 암호 코어(20-1∼20-4)를 서로 구별할 필요가 없는 경우에는 암호 코어(20-1∼20-4)를 암호 코어(20)라고 간단하게 표기하기로 한다. 또한, 도 2에 도시하는 예에서는 암호 연산 장치(10)의 기능 유닛들에 접속되는 선은 데이터 신호가 통과하는 데이터선을 나타낸다. 제어 신호가 통과하는 제어선은 도면에서 생략되어 있다.
암호 코어(20-l∼20-4) 각각은 키 데이터 신호선(41)을 통해 입력되는 키 데이터를 이용하면서, 암호 연산 제어 유닛(30)에 의해 입력되는 입력 데이터에 대해 대칭 키 암호 알고리즘의 연산을 실행한다. 또한, 암호 코어(20-1∼20-4) 각각은 암호 텍스트를 출력하도록 설계된 것이다. 이 경우에, 암호 코어(20-1∼20-4)는 암호 연산 제어 유닛(30)에 의해 순차 입력되는 복수의 입력 데이터 블록을 병렬로 암호화하는 것이다. 암호 코어(20)가 사용한 암호화 방식이 XTS 모드인 반면, 암호 코어(20)에 의한 암호 연산에 사용된 대칭 키 암호 알고리즘은 AES(Advanced Encryption Standard)인 예를 이용하여 본 실시형태를 설명하지만, 본 실시형태는 이것에 한정되지 않는다. 키 데이터 신호선(41)은 인터페이스 유닛(60)에 접속된다. 다시 말해, 키 데이터는 인터페이스 유닛(60)으로부터 키 데이터 신호선(41)을 통해 암호 코어(20-1∼20-4) 각각에 입력된다.
암호 코어(20-1∼20-4) 각각은 CTS(CipherText Stealing) 연산이 수행되는지의 여부를 나타내는 CTS 플래그를 각각 내부에 저장하는 플래그 저장 유닛(22-1∼22-4)을 포함한다. 암호 코어(20-1∼20-4) 각각은 자신의 CTS 플래그가 오프로 설정되어 있는 경우, 통상의 대칭 키 암호 알고리즘을 이용하여 연산한다. 반면, 암호 코어(20-1∼20-4) 각각은 자신의 CTS 플래그가 온으로 설정되어 있는 경우, CTS를 사용한 대칭 키 암호 알고리즘을 이용하여 연산한다.
암호 연산 제어 유닛(30)은 암호 코어(20-1∼20-4)를 제어하도록 그리고 그 암호 코어(20-1∼20-4)에 의한 연산 결과의 출력을 제어하도록 구성되는 회로이다. 암호 연산 제어 유닛(30)은 셀렉터(31)와, 레지스터(32)와, 연접 유닛(33)과, 다른 셀렉터(34)와, 또 다른 셀렉터(35)와, 할당 유닛(36)과, 출력 제어 유닛(37)을 포함한다.
셀렉터(31)는 할당 유닛(36) 및 출력 제어 유닛(37)에 의해 제어된다. 셀렉터(31)는 입력 데이터 신호선(42)을 통해 입력된 입력 데이터, 및 암호 코어(20-1∼20-4) 중 어느 것으로부터 입력된 연산 결과의 출력처를, 레지스터(32), 연접 유닛(33) 및 셀렉터(35) 중에서 선택하도록 구성된다. 또한, 셀렉터(31)는 입력된 입력 데이터와 연산 결과를 선택된 출력처에 출력한다. 입력 데이터 신호선(42)은 인터페이스 유닛(60)에 접속된다. 다시 말해, 입력 데이터는 인터페이스 유닛(60)으로부터 입력 데이터 신호선(42)을 통해 셀렉터(31)에 입력된다. 입력 데이터 신호선(42)을 통해 입력된 입력 데이터는 블록 길이 또는 블록 길이 미만의 길이를 갖는 데이터이다.
레지스터(32)는 셀렉터(31)에 의해 입력된 입력 데이터와 연산 결과를 내부에 저장하도록 구현된다.
연접 유닛(33)은 할당 유닛(36) 및 출력 제어 유닛(37)에 의해 제어되는 회로이다. 연접 유닛(33)은 셀렉터(31)에 의해 입력되는 연산 결과를, 레지스터(32)에 저장된 입력 데이터와 연접시켜 연접 데이터를 생성하도록 설계된 것이다.
셀렉터(34)는 할당 유닛(36) 또는 출력 제어 유닛(37)에 의해 제어된다. 셀렉터(34)는 입력 데이터 신호선(42)을 통해 입력된 입력 데이터, 및 연접 유닛(33)에 의해 입력된 연접 데이터의 출력처를 암호 코어(20-1∼20-4) 중에서 선택하도록 설계된 것이다. 그런 다음, 셀렉터(34)는 입력된 입력 데이터 및 연접 데이터를 선택된 출력처에 출력한다.
셀렉터(35)는 출력 제어 유닛(37)에 의해 제어된다. 셀렉터(35)는 셀렉터(31)로부터 입력되는 연산 결과와, 레지스터(32)로부터 입력되는 연산 결과인 암호화 데이터를 출력 데이터 신호선(43)을 통해 출력하도록 구성된다. 출력 데이터 신호선(43)은 인터페이스 유닛(60)에 접속된다. 다시 말해, 암호화된 데이터는 셀렉터(35)로부터 출력 데이터 신호선(43)을 통해 인터페이스 유닛(60)에 출력된다.
할당 유닛(36)은 입력 데이터 신호선(42)을 통해 입력되는 입력 데이터를 암호 코어(20-1∼20-4) 중 하나에 할당하도록 설계된 회로이다. 또한, 할당 유닛(36)은 셀렉터(34)를 제어하여, 입력 데이터가 할당된 암호 코어(20-1∼20-4) 중 하나에 그 입력 데이터를 출력시킨다. 이 경우에, 할당 유닛(36)은 라운드 로빈 방식으로 입력 데이터 블록을 암호 코어(20-1∼20-4)에 순서대로 할당한다.
또한, 할당 유닛(36)은 블록 길이를 갖는 입력 데이터 블록(즉, 제1 입력 데이터의 일례) 직후에 입력 데이터 신호선(42)을 통해 입력된 다음 입력 데이터 블록(즉, 제2 입력 데이터의 일례)이 블록 길이 미만인 것을 나타내는 CTS 신호의 입력을 CTS 신호선(44)을 통해 수신한 경우, 다음 입력 데이터 블록에 앞서 입력 데이터 신호선(42)을 통해 입력된 블록 길이의 입력 데이터를 암호 코어(20-1∼20-4) 중 하나에 할당한다. 그 후, 할당 유닛(36)은 그 입력 데이터 블록이 할당되어 있는 암호 코어 중 하나의 CTS 플래그를 온으로 설정한다. 또한, 할당 유닛(36)은 입력 데이터 신호선(42)을 통해 입력되는 다음 입력 데이터 블록을 레지스터(32)에 저장하고, 데이터 길이 신호선(45)을 통해 입력되는 다음 입력 데이터 블록의 데이터 길이를 연접 유닛(33)에 출력하며, 셀렉터(34)를 제어하여 다음 입력 데이터 블록의 데이터 길이가 그 암호 코어 중 하나에 출력되게 한다. CTS 신호선(44)과 데이터 길이 신호선(45)은 인터페이스 유닛(60)에 접속된다. 다시 말해, CTS 신호는 인터페이스 유닛(60)으로부터 CTS 신호선(44)을 통해 할당 유닛(36)에 입력된다. 다음 입력 데이터 블록의 데이터 길이는 인터페이스 유닛(60)으로부터 데이터 길이 신호선(45)을 통해 할당 유닛(36)에 입력된다.
출력 제어 유닛(37)은, 예컨대 암호 코어(20) 중 임의의 것으로부터 입력된 연산 결과를 출력하는 것을 제어하도록 설계된 회로이다. 출력 제어 유닛(37)은 연산 결과인 암호화 데이터 블록이, CTS 플래그가 오프로 설정되어 있는 임의의 암호 코어(20)로부터 암호 연산 제어 유닛(30)에 입력되는 경우, 셀렉터(31)를 제어해서 입력된 암호화 데이터 블록을 셀렉터(35)에 출력시켜, 출력 데이터 신호선(43)을 통해 출력시킨다. 임의의 암호 코어(20)에 의한 처리가 종료될 경우, 그 암호 코어(20)로부터 출력 제어 유닛(37)에 종료 신호가 출력된다. 그렇기 때문에, 출력 제어 유닛(37)은 종료 신호가 출력되는 암호 코어(20)의 CTS 플래그를 확인함으로써, 그것이 CTS 플래그가 오프로 설정되어 있는 암호 코어(20)로부터의 입력인지의 여부를 확인한다.
또한, 출력 제어 유닛(37)은 입력 데이터를 암호화하는 과정에서 생성된 연산 데이터가, 전술한 CTS 플래그가 오프로 설정되어 있는 그 하나의 암호 코어로부터 암호 연산 제어 유닛(30)에 입력되는 경우, 셀렉터(31)를 제어해서 입력된 연산 데이터를 연접 유닛(33)에 출력시키고, 또 레지스터(32)에 저장되어 있는 다음 입력 데이터 블록을 연접 유닛(33)에 출력시킨다. 그런 다음, 출력 제어 유닛(37)은 연접 유닛(33)에 의해 생성된 연접 데이터를 그 암호 코어에 출력시킨다.
또, 입력 데이터를 연산하여 얻은 암호화 데이터(제2 암호화 데이터의 일례)가 하나의 암호 코어(20)로부터 암호 연산 제어 유닛(30)에 입력되는 경우, 출력 제어 유닛(37)은 셀렉터(31)를 제어하여 입력된 암호화 데이터가 레지스터(32)에 출력되어 그 내부에 저장되게 한다.
또한, 연접 데이터를 연산하여 얻은 암호화 데이터(제1 암호화 데이터의 일례)가 그 하나의 암호 코어로부터 암호 연산 제어 유닛(30)에 입력되는 경우, 출력 제어 유닛(37)은 셀렉터(31)를 제어하여, 입력된 암호화 데이터가 셀렉터(35)에 출력되어 출력 데이터 신호선(43)을 통해 출력되게 한다. 그 후, 출력 제어 유닛(37)은 레지스터(32)에 저장된 암호화 데이터가 셀렉터(35)에 출력되어, 출력 데이터 신호선(43)을 통해 출력되게 한다. 그리고, 출력 제어 유닛(37)은 그 암호 코어의 CTS 플래그를 오프로 설정한다.
다음으로, 본 실시형태에 따른 암호 연산 장치의 동작에 관해서 설명한다.
이하에서는, 호스트 장치(2)로부터 기록 요구가 발행되는 기록 대상 데이터가 인터페이스 유닛(60)에 의해 블록 길이를 갖는 m+1개의 입력 데이터 블록 Pj(0≤j≤m)로 분할되어, 입력 데이터 신호선(42)을 통해 입력 데이터 블록 Pj가 암호 연산 장치(10)에 순차 입력되는 것을 상정한다. 또한, 최후 입력 데이터 블록 Pm은 블록 길이 미만인 것으로 상정한다.
도 3은 본 실시형태에 따른 할당 유닛(36)에 의해 수행되는 할당 프로세스의 순서예의 흐름도이다.
먼저, 할당 유닛(36)은 CTS 신호선(44)을 통해 CTS 신호가 입력되지 않은 경우, 입력 데이터 신호선(42)을 통해 입력될 다음 데이터인, Pj +1(0≤j≤m-2)로서 표현하는 다음 입력 데이터 블록이 블록 길이를 갖는 것인지 판정한다(단계 S100: No). 이 경우, 할당 유닛(36)은 다음 입력 데이터 블록 Pj+1 이전에 입력된, Pj로서 표현하는 입력 데이터 블록을 라운드 로빈 방식으로 암호 코어(20-1∼20-4) 중 하나에 할당한다(단계 S102). 그리고, 프로세스는 단계 S100에 되돌아간다.
한편, 할당 유닛(36)은 CTS 신호선(44)을 통해 CTS 신호가 입력되는 경우, 입력 데이터 신호선(42)을 통해 입력될 다음 데이터인, Pm로서 표현하는 다음 입력 데이터 블록이 블록 길이 미만인 것인지 판정한다(단계 S100: Yes). 이 경우에, 할당 유닛(36)은 다음 입력 데이터 블록 Pm 이전에 입력된, Pm-1로서 표현하는 입력 데이터 블록을 라운드 로빈 방식으로 암호 코어(20-1∼20-4) 중 하나에 할당하고, 그 입력 데이터 블록 Pm-1이 할당되는 암호 코어 중 하나의 CTS 플래그를 온으로 설정한다(단계 S104). 본 예에서는, 할당 유닛(36)이 입력 데이터 블록 Pm-1을 암호 코어(20-2)에 할당하는 것으로 한다. 다시 말해, "암호 코어 중 하나"가 "암호 코어(20-2)"인 것으로 한다.
계속해서, 할당 유닛(36)은 입력 데이터 신호선(42)을 통해 입력되는 다음 입력 데이터 블록 Pm을 레지스터(32)에 저장하고, 또 데이터 길이 신호선(45)을 통해 입력되는 다음 입력 데이터 블록 Pm의 데이터 길이를 연접 유닛(33)에 출력한다(단계 S106). 또한, 할당 유닛(36)은 셀렉터(34)를 제어하여 다음 입력 데이터 블록 Pm의 데이터 길이가 암호 코어(20-2)에도 출력되게 한다. 그 후, 할당 유닛(36)은 프로세스를 종료한다.
인터페이스 유닛(60)이 호스트 장치(2)로부터 새로운 기록 요구를 수신하면, 입력 데이터 신호선(42)을 통해 새로운 입력 데이터 블록이 입력된다. 따라서, 할당 유닛(36)은 단계 S100에서부터 처리를 재개한다.
도 4는 본 실시형태에 따라 임의의 암호 코어(20)에 의해 수행되는 통상의 대칭 키 암호 알고리즘을 이용한 연산, 즉 CTS를 사용하지 않는 대칭 키 암호 알고리즘을 이용한 연산의 순서예의 흐름도이다. 도 4에 나타내는 프로세스는 도 3에 나타낸 단계 S102에서 할당 유닛(36)에 의해 입력 데이터가 할당되는 임의의 암호 코어(20)에 의해 수행된다.
먼저, 암호 코어(20)는 j(0≤j≤m-2)번째 블록에서 Pj로서 표현되는 입력 데이터 블록과 마스크값 Tj과의 배타적 논리합 PP를 산출한다(단계 S200). 이 경우에, "j=0"이 충족될 경우 마스크값 Tj은 대칭 키 Key2 및 섹터 번호 i(Teak Value)를 이하에 나타내는 수식 (1)에 대입함으로써 산출된다. "1≤j≤m-2"가 충족될 경우, 이하에 나타내는 수식 (2)에 의해 마스크값 Tj가 산출된다. 이하의 수식에 있어서, αj는 갈로아 필드(Galois field)의 기본 원소를 나타낸다.
T0 = AESenc(Key2,i)×α0 (1)
Tj = Tj -1×αj-1 (2)
계속해서, 암호 코어(20)는 산출된 배타적 논리합 PP와 대칭 키 Key1을 이하의 수식 (3)에 대입하여, 암호화된 값 CC를 산출한다(단계 S202).
CC = AESenc(Key1,PP) (3)
그 후, 암호 코어(20)는 산출된 암호화값 CC와 마스크값 Tj와의 배타적 논리합인 암호화 데이터 Cj를 산출하여, 그 암호화 데이터 Cj를 암호 연산 제어 유닛(30)에 출력한다(단계 S204).
도 4에 나타내는 프로세스는 암호 코어(20-1∼20-4)에서 병렬로 수행된다.
도 5는 본 실시형태에 따라 암호 코어(20-2)에 의해 수행되는 CTS를 사용한 대칭 키 암호 알고리즘을 이용하는 전단 연산예의 흐름도이다. 도 5에 나타내는 프로세스는 도 3에 나타낸 단계 S104에서 할당 유닛(36)에 의해 입력 데이터가 할당되는 암호 코어(20-2)에 의해 수행된다.
먼저, 암호 코어(20-2)는 m-1번째 블록에서 Pm -1로서 표현되는 입력 데이터 블록과 마스크값 Tm -1과의 배타적 논리합 PP를 산출한다(단계 S210). 이 경우에, 마스크값 Tm -1은 이하에 나타내는 수식 (4)를 이용해 산출된다.
Tm -1 = Tm -2×αm-2 (4)
계속해서, 암호 코어(20-2)는 산출되는 배타적 논리합 PP와 대칭 키 Key1을 상기 수식 (3)에 대입하여, 암호화된 값 CC를 산출하고, 그 암호화값 CC를 암호 연산 제어 유닛(30)에 출력한다(단계 S212).
그 후, 암호화 데이터 Cm를 구하기 위하여, 암호 코어(20-2)는 산출된 암호화값 CC와 마스크값 Tm -1과의 배타적 논리합의 상위 비트를, 다음 입력 데이터 블록 Pm의 데이터 길이만큼 다수 산출하여, 그 암호화 데이터 Cm을 암호 연산 제어 유닛(30)에 출력한다(단계 S214).
이어지는 후단 프로세스에 대해서는 후술한다.
도 6은 본 실시형태에 따른 출력 제어 유닛(37)에 의해 수행되는 출력 제어 프로세스 및 연접 유닛(33)에 의해 수행되는 연접 프로세스의 순서예의 흐름도이다.
먼저, 출력 제어 유닛(37)은 입력 데이터 Pj(0≤j≤m-2)에 대해 수행된 연산 결과인 암호화 데이터 Cj가, CTS 플래그가 오프로 설정되어 있는 암호 코어(20) 중 하나로부터 암호 연산 제어 유닛(30)에 입력되는 경우(단계 S300: No), 셀렉터(31)를 제어해서, 입력된 암호화 데이터 Cj를 셀렉터(35)에 출력시켜, 출력 데이터 신호선(43)을 통해 출력시킨다(단계 S302). 그리고, 프로세스는 단계 S300에 되돌아간다.
한편, 출력 제어 유닛(37)은 입력 데이터 Pm -1에 대해 수행된 연산 프로세스 과정에서 생성된 연산 데이터인 암호화값 CC가, CTS 플래그가 온으로 설정되어 있는 암호 코어(20-2)로부터 암호 연산 제어 유닛(30)에 입력되는 경우(단계 S300: Yes), 셀렉터(31)를 제어하여, 입력된 암호화값 CC를 연접 유닛(33)에 출력시키고, 또 레지스터(32)에 저장되어 있는 다음 입력 데이터 블록 Pm을 연접 유닛(33)에 출력시킨다. 그리고 연접 유닛(33)은 블록 길이로부터 다음 입력 데이터 블록 Pm의 데이터 길이를 감산하여 얻은 데이터 길이를 갖는, 암호화값 CC와 마스크값 Tm -1과의 배타적 논리합의 일부와, 다음 입력 데이터 블록 Pm을 연접시킨다. 또한, 연접 유닛(33)은 연접 프로세스의 결과인 데이터와 마스크값 Tm과의 배타적 논리합 PP를 산출한다(단계 S304). 이 경우에, 마스크값 Tm은 이하에 나타내는 수식 (5)을 이용하여 산출된다.
Tm = Tm×αm (5)
계속해서, 출력 제어 유닛(37)은 연접 유닛(33)에 의해 산출된 배타적 논리합 PP를 CTS 플래그가 온으로 설정되어 있는 암호 코어(20-2)에 출력한다. 또, 출력 제어 유닛(37)은 입력 데이터 Pm -1에 대해 수행된 연산 결과인 암호화 데이터 Cm이 암호 코어(20-2)로부터 암호 연산 제어 유닛(30)에 입력되면, 셀렉터(31)를 제어해서, 입력된 암호화 데이터 Cm을 레지스터(32)에 출력시켜, 그 내부에 저장시킨다(단계 S306).
그 후, 출력 제어 유닛(37)은 배타적 논리합 PP(다음 입력 데이터 블록 Pm)에 대해 수행된 연산 결과인 암호화 데이터 Cm -1이, CTS 플래그가 온으로 설정되어 있는 암호 코어(20-2)로부터 암호 연산 제어 유닛(30)에 입력되면, 셀렉터(31)를 제어해서, 입력된 암호화 데이터 Cm -1을 셀렉터(35)에 출력시켜, 출력 데이터 신호선(43)을 통해 출력시킨다(단계 S308).
계속해서, 출력 제어 유닛(37)은 레지스터(32)에 저장되어 있는 암호화 데이터 Cm을 셀렉터(35)에 출력하여, 그 암호화 데이터 Cm을 출력 데이터 신호선(43)을 통해 출력시킨다. 그 후, 출력 제어 유닛(37)은 암호 코어(20-2)의 CTS 플래그를 오프로 설정한다(단계 S310).
도 7은 본 실시형태에 따라 암호 코어(20-2)에 의해 수행되는 CTS를 사용한 대칭 키 암호 알고리즘을 이용하는 후단 연산의 순서예의 흐름도이다. 도 7에 도시하는 프로세스는 도 6의 단계 S306에서의 프로세스 이후, 단계 S308에서의 프로세스 이전에 수행된다.
먼저, 암호 코어(20-2)는 암호 연산 제어 유닛(30)으로부터 입력된 배타적 논리합 PP와 대칭 키 Key1을 수식 (3)에 대입하여, 암호화값 CC를 산출한다(단계 S220).
계속해서, 암호 코어(20-2)는 산출된 암호화값 CC와 마스크값 Tm과의 배타적 논리합인 암호화 데이터 Cm-1을 산출하고, 그 산출된 암호화 데이터 Cm-1을 암호 연산 제어 유닛(30)에 출력한다(단계 S222). 그리고, 출력 제어 유닛(37)은 프로세스를 종료한다.
인터페이스 유닛(60)이 호스트 장치(2)로부터 새로운 기록 요구를 수신하면, 다음 입력 데이터 블록이 입력 데이터 신호선(42)을 통해 입력되고, 그 결과, 할당 유닛(36)에 의한 할당 프로세스가 재개된다. 따라서, 출력 제어 유닛(37)도 단계 S300에서부터 프로세스를 재개한다.
도 8은 할당 유닛(36)에 의해 수행되는 할당 프로세스의 결과로서, 암호 코어(20-1∼20-4) 및 레지스터(32)에 할당되는 입력 데이터 블록 Pj의 예를 도시하는 도면이다. 도 9는 출력 제어 유닛(37)에 의해 실행된 출력 제어의 결과로서, 암호 코어(20-1∼20-4) 및 레지스터(32)로부터 출력되는 암호화 데이터 블록 Cj의 예를 도시하는 도면이다.
도 8에 도시하는 예에 있어서, 할당 유닛(36)에 의해 수행되는 도 3에 도시한 할당 프로세스의 결과로서, 암호 코어(20-1), 암호 코어(20-2), 레지스터(32), 암호 코어(20-3), 및 암호 코어(20-4)의 순서로 각각에 입력 데이터 Pm-2, 입력 데이터 Pm-1, 입력 데이터 Pm, 입력 데이터 Q0, 및 입력 데이터 Q1이 할당된다.
또한, 출력 제어 유닛(37)에 의해 수행되는 도 7에 도시한 출력 제어의 결과로서, 암호 코어(20-1), 암호 코어(20-2), 레지스터(32), 암호 코어(20-3), 및 암호 코어(20-4)의 순서로 각각으로부터, 입력 데이터 Pm -2로부터 도출된 암호화 데이터 Cm-2, 입력 데이터 Pm로부터 도출된 암호화 데이터 Cm-1, 입력 데이터 Pm-1로부터 도출된 암호화 데이터 Cm, 입력 데이터 Q0으로부터 도출된 암호화 데이터 CQ0, 및 입력 데이터 Q1로부터 도출된 암호화 데이터 CQ가 출력된다.
본 명세서에 기재하는 바와 같이, 본 실시형태에 따른 암호 연산 장치(10)는, CTS에 의해 의존 관계가 생기는 입력 데이터 Pm -1과 입력 데이터 Pm에 대해 수행되는 연산이 암호 코어(20-2), 레지스터(32) 및 연접 유닛(33)을 채용하여 이루어지는 식으로 되어 있다. 다시 말해, 본 실시형태에 따른 암호 연산 장치(10)는 의존 관계가 생기는 입력 데이터 Pm -1과 입력 데이터 Pm에 대해 수행되는 연산이, 복수의 암호 코어를 이용하는 것 대신에 레지스터(32)와 연접 유닛(33)을 이용하면서, 단일의 암호 코어에 의해 이루어지도록 구성된다. 그 결과, 본 실시형태에 따른 암호 연산 장치(10)를 이용할 경우, CTS를 사용한 연산이 이루어질지라도, 암호 코어 중 임의의 것이 대기 상태에 있게 되는 일 없이 암호화 프로세스를 병렬로 수행하는 것이 가능한다. 따라서, 암호화 프로세스의 속도를 고속화할 수 있다.
또, 본 실시형태에 따른 암호 연산 장치(10)는 대응하는 입력 데이터 블록 Pj이 입력되는 순서로 암호화 데이터 블록 Cj를 출력하는 것이 가능하다. 그 결과, 암호화 데이터 블록 Cj에 대해 실행되는 출력 제어를 간소화할 수 있다.
다음으로, 비교예로서, 본 실시형태에 따른 암호 연산 장치(10)를 이용하는 일 없이, 입력 데이터 블록 Pj가 암호 코어(20-1'∼20-4')에 할당되어, 암호화 데이터 블록 Cj가 출력되는 예를 도 10과 도 11에 도시한다.
도 10에 도시하는 예에서는, 암호 코어(20-1'), 암호 코어(20-2'), 암호 코어(20-3'), 및 암호 코어(20-4')의 순서로 각각에, 입력 데이터 Pm-2, 입력 데이터 Pm-1, 입력 데이터 Pm, 및 입력 데이터 Q0이 할당된다. 이 경우, 암호 코어(20-3')는 암호 코어(20-2')에 의해 수행되는 연산 프로세스 과정에서 생성된 암호화값 CC를 이용하여 입력 데이터 Pm에 대해 암호화 프로세스를 실행한다. 그렇기 때문에, 암호 코어(20-3')는 암호 코어(20-2')에 의해 암호화값 CC가 생성될 때까지 대기 상태가 되기 때문에, 프로세스가 병렬로 수행되는 것이 불가능하다.
또, 도 11에 도시하는 바와 같이, 암호 코어(20-1'), 암호 코어(20-2'), 암호 코어(20-3'), 및 암호 코어(20-4')의 순서로 각각으로부터, 입력 데이터 Pm-2로부터 도출된 암호화 데이터 Cm-2, 입력 데이터 Pm-1로부터 도출된 암호화 데이터 Cm, 입력 데이터 Pm로부터 도출된 암호화 데이터 Cm-1, 및 입력 데이터 Q0으로부터 도출된 암호화 데이터 CQ0이 출력된다. 이 경우, 대응하는 입력 데이터 블록(즉, 입력 데이터 Pm-1과 입력 데이터 Pm)이 입력되는 순서로 암호화 데이터 Cm과 암호화 데이터 Cm-1이 입력된다. 그 결과, 암호화 데이터 블록 Cj에 대해 실행되는 출력 제어가 복잡하다.
전술한 바와 같이, 본 실시형태에 따르면, 암호화 속도를 고속화할 수 있다.
전술한 예시적인 실시형태에서는 예컨대 NAND 반도체 메모리 장치로 구성되는 메모리 시스템에 암호 연산 장치가 적용되는 예에 대해 설명하였지만, 암호 연산 장치는 자기 디스크 장치 등에 적용되는 것도 가능하다. 다시 말해, 예시적인 실시형태에서 설명한 암호 연산 장치가 적용되는 저장 장치가 사용하는 저장 방법은 임의의 특정 저장 방법에 한정되지 않는다.
또, 전술한 예시적인 실시형태에서는 예로서 암호화를 이용하여 설명하였지만, 복호화 프로세스에도 같은 방식을 적용할 수 있다.
전술한 적어도 하나의 실시형태의 암호 연산 장치에 따르면, 복수의 연산 코어 각각은 CTS(CipherText Stealing)가 수행되는지를 나타내는 CTS 플래그를 내부에 저장하기 위한 플래그 저장 유닛을 포함한다. 그 CTS 플래그가 온으로 설정되어 있는 경우, 암호 코어 각각은 대칭 키를 이용하면서, CTS를 사용한 대칭 키 암호 알고리즘을 이용하여 암호화한다. 블록 길이를 갖는 제1 입력 데이터 직후에 입력되는 제2 입력 데이터가 블록 길이 미만인 것을 나타내는 CTS 신호의 입력을 수신한 경우, 할당 유닛은 그 제1 입력 데이터를 복수의 암호 코어 중 하나에 할당하고 그 제1 입력 데이터가 할당되는 하나의 암호 코어의 CTS 플래그를 온으로 설정한다. 연접 유닛은 제1 입력 데이터를 암호화하는 과정에서 생성된 연산 데이터를 제2 입력 데이터와 연접시켜 연접 데이터를 생성한다. 출력 제어 유닛은 연접 데이터를 상기 하나의 암호 코어에 출력하는 것을 제어하고, 상기 하나의 암호 코어에서 연접 데이터를 암호화하여 얻은 제1 암호화 데이터를 출력하는 것을 제어하며, 암호 코어 중 하나에서 제1 입력 데이터를 암호화하여 얻은 제2 암호화 데이터를 출력하는 것을 제어하고, 상기 하나의 암호 코어의 CTS 플래그를 오프로 설정한다. 이에, 암호화 프로세스의 속도를 고속화할 수 있다.
소정의 실시형태들에 대해 설명했지만, 이들 실시형태는 예시일 뿐이며, 본 발명의 범위를 한정하는 것이 아니다. 사실상, 본 명세서에서 설명한 신규 실시형태들은 다양한 다른 형태로 구현될 수 있고, 또 본 발명의 사상에서 이탈하는 일 없이 본 명세서에 기재한 실시형태의 구성에 다양한 생략, 교체 및 변경이 이루어질 수 있다. 이어지는 특허청구범위 및 그 동류는 본 발명의 범위와 사상 내에 있는 그러한 구성 또는 변형을 망라하는 것이다.
1: 메모리 시스템 2: 호스트 장치
10: 암호 연산 장치 20-1∼20-4: 암호 코어
22-1∼22-4: 플래그 저장 유닛 30: 암호 연산 제어 유닛
31, 34, 35: 셀렉터 32: 레지스터
33: 연접 유닛 36: 할당 유닛
37: 출력 제어 유닛 42: 입력 데이터 신호선
43: 출력 데이터 신호선 44: CTS 신호선
45: 데이터 길이 신호선 50: 메모리
60: 인터페이스 유닛

Claims (5)

  1. CTS(CipherText Stealing)를 사용한 암호화가 수행되는지의 여부를 나타내는 CTS 플래그를 내부에 저장하는 플래그 저장 유닛을 각각 포함하고, 그 CTS 플래그가 온으로 설정되어 있는 경우에, 대칭 키를 이용하면서, CTS를 사용한 대칭 키 암호 알고리즘을 이용하여 암호화를 각각 수행하는 복수의 암호 코어와,
    블록 길이를 갖는 제1 입력 데이터 직후에 입력되는 제2 입력 데이터가 블록 길이 미만인 것을 나타내는 CTS 신호의 입력을 수신한 경우에, 상기 제1 입력 데이터를 상기 복수의 암호 코어 중 하나에 할당하고, 그 제1 입력 데이터가 할당되는 하나의 암호 코어의 CTS 플래그를 온으로 설정하는 할당 유닛과,
    상기 하나의 암호 코어에서 상기 제1 입력 데이터를 암호화하는 과정에서 생성된 연산 데이터를 상기 제2 입력 데이터와 연접시켜, 연접 데이터를 생성하는 연접 유닛과,
    상기 연접 데이터를 상기 연접 유닛으로부터 상기 하나의 암호 코어에 출력하는 것을 제어하고, 상기 하나의 암호 코어에서 상기 제1 입력 데이터를 암호화한 후에 실행되는 연접 데이터의 암호화에 의해 얻은 제1 암호화 데이터를 출력하는 것을 제어하며, 상기 하나의 암호 코어에서 상기 제1 입력 데이터를 암호화하여 얻은 제2 암호화 데이터를 출력하는 것을 제어하고, 상기 하나의 암호 코어의 CTS 플래그를 오프로 설정하는 출력 제어 유닛
    을 포함하는 암호 연산 장치.
  2. 제1항에 있어서, 레지스터를 더 포함하고,
    상기 할당 유닛은 상기 제2 입력 데이터를 상기 레지스터에 저장하며,
    상기 하나의 암호 코어는 상기 제1 입력 데이터에 대해, 상기 CTS를 사용한 대칭 키 암호 알고리즘을 이용해 암호화하여 연산 데이터 및 제2 암호화 데이터를 생성하고,
    상기 출력 제어 유닛은 상기 연산 데이터, 및 상기 레지스터에 저장된 제2 입력 데이터를 상기 연접 유닛에 출력하는 것을 제어하며,
    상기 하나의 암호 코어는 상기 연접 데이터에 대해, 상기 CTS를 사용한 대칭 키 암호 알고리즘을 이용해 암호화하여 제1 암호화 데이터를 생성하는 것인 암호 연산 장치.
  3. 제2항에 있어서, 상기 출력 제어 유닛은 상기 제2 암호화 데이터를, 상기 제2 입력 데이터가 출력되는 상기 레지스터에 저장하고, 상기 제1 암호화 데이터를 출력하는 것을 제어한 후에, 상기 레지스터에 저장된 제2 암호화 데이터를 출력하는 것을 제어하는 것인 암호 연산 장치.
  4. 제1항에 있어서, 상기 할당 유닛은 상기 제2 입력 데이터의 데이터 길이를 상기 연접 유닛에 출력하고,
    상기 연접 유닛은 그 데이터 길이에 따라 상기 연산 데이터를 상기 제2 입력 데이터와 연접시키는 것인 암호 연산 장치.
  5. CTS(CipherText Stealing)를 사용한 암호화가 수행되는지의 여부를 나타내는 CTS 플래그를 내부에 저장하는 플래그 저장 유닛을 각각 포함하고, 그 CTS 플래그가 온으로 설정되어 있는 경우에, 대칭 키를 이용하면서, CTS를 사용한 대칭 키 암호 알고리즘을 이용하여 암호화를 각각 수행하는 복수의 암호 코어와,
    블록 길이를 갖는 제1 입력 데이터 직후에 입력되는 제2 입력 데이터가 블록 길이 미만인 것을 나타내는 CTS 신호의 입력을 수신한 경우에, 상기 제1 입력 데이터를 상기 복수의 암호 코어 중 하나에 할당하고, 그 제1 입력 데이터가 할당되는 하나의 암호 코어의 CTS 플래그를 온으로 설정하는 할당 유닛과,
    상기 하나의 암호 코어에서 상기 제1 입력 데이터를 암호화하는 과정에서 생성된 연산 데이터를 상기 제2 입력 데이터와 연접시켜, 연접 데이터를 생성하는 연접 유닛과,
    상기 연접 데이터를 상기 연접 유닛으로부터 상기 하나의 암호 코어에 출력하는 것을 제어하고, 상기 하나의 암호 코어에서 상기 제1 입력 데이터를 암호화한 후에 실행되는 연접 데이터의 암호화에 의해 얻은 제1 암호화 데이터를 출력하는 것을 제어하며, 상기 하나의 암호 코어에서 상기 제1 입력 데이터를 암호화하여 얻은 제2 암호화 데이터를 출력하는 것을 제어하고, 상기 하나의 암호 코어의 CTS 플래그를 오프로 설정하는 출력 제어 유닛
    을 포함하는 암호 연산 장치와,
    상기 장치로부터 출력되는 암호화 데이터를 내부에 저장하는 메모리
    를 포함하는 메모리 시스템.
KR1020110087178A 2010-09-22 2011-08-30 암호 연산 장치 및 메모리 시스템 KR101305627B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2010-211727 2010-09-22
JP2010211727A JP5017439B2 (ja) 2010-09-22 2010-09-22 暗号演算装置及びメモリシステム

Publications (2)

Publication Number Publication Date
KR20120031123A KR20120031123A (ko) 2012-03-30
KR101305627B1 true KR101305627B1 (ko) 2013-09-09

Family

ID=44582352

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110087178A KR101305627B1 (ko) 2010-09-22 2011-08-30 암호 연산 장치 및 메모리 시스템

Country Status (6)

Country Link
US (1) US8908859B2 (ko)
EP (1) EP2434682A1 (ko)
JP (1) JP5017439B2 (ko)
KR (1) KR101305627B1 (ko)
CN (1) CN102411694B (ko)
TW (1) TWI424384B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101612518B1 (ko) * 2009-11-26 2016-04-15 삼성전자주식회사 병렬 처리 가능한 암복호화기 및 그것의 암복호 방법
JP2014178871A (ja) * 2013-03-14 2014-09-25 Toshiba Corp 情報処理装置及びそのコンテンツファイル変換処理方法
JP6552184B2 (ja) * 2014-01-14 2019-07-31 キヤノン株式会社 情報処理装置およびその方法
KR102376506B1 (ko) * 2014-10-20 2022-03-18 삼성전자주식회사 암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법
US10009169B2 (en) * 2014-12-02 2018-06-26 Zettaset, Inc. Format-preserving cipher
KR102447476B1 (ko) 2015-08-20 2022-09-27 삼성전자주식회사 암복호 장치, 그것을 포함하는 저장 장치 및 그것의 암복호 방법
CN110276208B (zh) * 2016-09-29 2022-06-17 北京忆芯科技有限公司 加密电路、解密电路及其方法
CN110650008B (zh) * 2019-08-30 2023-05-19 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) 多端口fc加密方法及装置
CN114025347B (zh) * 2021-11-03 2023-12-01 苏州欧清电子有限公司 一种蓝牙设备的加密方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11161162A (ja) * 1997-11-27 1999-06-18 Hitachi Ltd 暗号化方法または復号化方法およびそれを用いた装置
JP2003263106A (ja) 2002-03-11 2003-09-19 Toyo Commun Equip Co Ltd パディング方式
JP2006292921A (ja) 2005-04-08 2006-10-26 Canon Inc 暗号処理装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4731843A (en) * 1985-12-30 1988-03-15 Paradyne Corporation Method and device of increasing the execution speed of cipher feedback mode of the DES by an arbitrary multiplier
US6125182A (en) * 1994-11-09 2000-09-26 Channel One Communications, Inc. Cryptographic engine using logic and base conversions
US7809138B2 (en) * 1999-03-16 2010-10-05 Intertrust Technologies Corporation Methods and apparatus for persistent control and protection of content
FR2784829B1 (fr) * 1998-10-16 2000-12-29 Gemplus Card Int Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete
WO2000057290A1 (fr) * 1999-03-19 2000-09-28 Hitachi, Ltd. Processeur d'informations
CN1357182A (zh) * 1999-04-27 2002-07-03 V·A·米什克 用于加密信息的方法以及用于实现该方法的设备
TW545023B (en) * 1999-12-10 2003-08-01 Koninkl Philips Electronics Nv Synchronization of session keys
US7392398B1 (en) * 2000-06-05 2008-06-24 Ati International Srl Method and apparatus for protection of computer assets from unauthorized access
US20020114451A1 (en) * 2000-07-06 2002-08-22 Richard Satterfield Variable width block cipher
EP1376922B1 (en) * 2001-04-03 2014-09-03 Mitsubishi Denki Kabushiki Kaisha Encrypting device
US8068610B2 (en) * 2001-11-21 2011-11-29 General Instrument Corporation Method and system for providing security within multiple set-top boxes assigned for a single customer
US20030223581A1 (en) * 2002-05-30 2003-12-04 Bedros Hanounik Cipher block chaining unit for use with multiple encryption cores
KR100583635B1 (ko) * 2003-01-24 2006-05-26 삼성전자주식회사 다수의 동작 모드들을 지원하는 암호화 장치
JP3984206B2 (ja) * 2003-09-02 2007-10-03 株式会社東芝 マイクロプロセッサー及び映像音声システム
US20060078107A1 (en) * 2004-10-12 2006-04-13 Chiou-Haun Lee Diffused data encryption/decryption processing method
JP4119882B2 (ja) * 2004-11-19 2008-07-16 株式会社メガチップス メモリ情報保護システム、メモリ情報の保護方法、および半導体メモリ
US20060242429A1 (en) * 2004-12-21 2006-10-26 Michael Holtzman In stream data encryption / decryption method
CN101124545B (zh) * 2004-12-21 2012-05-16 桑迪士克股份有限公司 带有流中数据加密/解密和纠错的存储器系统
US7702099B2 (en) * 2005-06-30 2010-04-20 Chiou-Haun Lee Multipoint synchronous diffused encryption/decryption method
US8155308B1 (en) * 2006-10-10 2012-04-10 Marvell International Ltd. Advanced encryption system hardware architecture
US20080107275A1 (en) * 2006-11-08 2008-05-08 Mehdi Asnaashari Method and system for encryption of information stored in an external nonvolatile memory
US8300805B1 (en) * 2007-01-04 2012-10-30 Altera Corporation AES core with independent inputs and outputs
KR101612518B1 (ko) * 2009-11-26 2016-04-15 삼성전자주식회사 병렬 처리 가능한 암복호화기 및 그것의 암복호 방법
US20110255689A1 (en) * 2010-04-15 2011-10-20 Lsi Corporation Multiple-mode cryptographic module usable with memory controllers

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11161162A (ja) * 1997-11-27 1999-06-18 Hitachi Ltd 暗号化方法または復号化方法およびそれを用いた装置
JP2003263106A (ja) 2002-03-11 2003-09-19 Toyo Commun Equip Co Ltd パディング方式
JP2006292921A (ja) 2005-04-08 2006-10-26 Canon Inc 暗号処理装置

Also Published As

Publication number Publication date
JP5017439B2 (ja) 2012-09-05
EP2434682A1 (en) 2012-03-28
KR20120031123A (ko) 2012-03-30
US20120069993A1 (en) 2012-03-22
JP2012068351A (ja) 2012-04-05
US8908859B2 (en) 2014-12-09
TWI424384B (zh) 2014-01-21
CN102411694A (zh) 2012-04-11
CN102411694B (zh) 2015-09-16
TW201229811A (en) 2012-07-16

Similar Documents

Publication Publication Date Title
KR101305627B1 (ko) 암호 연산 장치 및 메모리 시스템
CN108449172B (zh) 加密/解密方法和计算设备的集成电路
US8223972B2 (en) Method and device for speeding up key use in key management software with tree structure
TWI496024B (zh) An encryption calculation means, a memory means, and an encryption calculation method
EP2352251A1 (en) Content decoding apparatus, content decoding method and integrated circuit
CN101120349A (zh) 带有流中数据加密/解密的存储器系统
KR102397579B1 (ko) 부채널 분석 방지를 위한 화이트박스 암호 방법 및 장치
KR101825838B1 (ko) 데이터의 부분 암호화 방법, 데이터의 부분 복호화 방법 및 부분 암호화된 데이터를 복호화하는 프로그램을 저장하는 저장매체
CN111008407A (zh) 用于执行虚拟加密操作的加密电路
JP5080908B2 (ja) 機密情報処理機器、機密情報処理装置、及び機密情報処理方法
CN112416243A (zh) 用于执行安全命令的存储器装置及方法
US20150058639A1 (en) Encryption processing device and storage device
JP6273226B2 (ja) 暗号化システム、認証システム、暗号化装置、復号装置、認証子生成装置、検証装置、暗号化方法、認証方法
US20230139104A1 (en) Authenticated encryption apparatus, authenticated decryption apparatus, authenticated encryption system, method, and computer readable medium
KR101947871B1 (ko) 내적 값을 출력하는 함수 암호화 시스템 및 방법
KR101687492B1 (ko) 분산적으로 데이터를 저장하는 방법 및 암호학적 정보 처리 장치
US9058507B2 (en) Signal processor with an encrypting or decrypting device in a memory system
US20230132163A1 (en) Memory processing apparatus, memory verification apparatus, memory updating apparatus, memory protection system, method, and computer readable medium
KR20080112082A (ko) 데이터 암호화방법, 암호화데이터 재생방법
JP6203387B2 (ja) 暗号装置及び記憶システム及び復号装置及び暗号方法及び復号方法及び暗号プログラム及び復号プログラム
JP6356687B2 (ja) メッセージへの全単射アルゴリズムの適用によるコードの真正性を制御するための制御方法およびデバイス
US11061996B2 (en) Intrinsic authentication of program code
KR102066487B1 (ko) 하드웨어 인증칩 기반의 경량 암호 알고리즘 보안 장치
JP2007158967A (ja) 情報処理装置、耐タンパーデバイス、暗号処理方法及びコンピュータプログラム
JP2023130311A (ja) サイドチャネル攻撃から電子コンピュータを保護する方法及び電子コンピュータ

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160727

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170804

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180730

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190729

Year of fee payment: 7