KR20220093664A - 크립토 장치, 그것을 갖는 집적 회로 및 컴퓨팅 장치, 및 그것의 쓰기 방법 - Google Patents

크립토 장치, 그것을 갖는 집적 회로 및 컴퓨팅 장치, 및 그것의 쓰기 방법 Download PDF

Info

Publication number
KR20220093664A
KR20220093664A KR1020200184616A KR20200184616A KR20220093664A KR 20220093664 A KR20220093664 A KR 20220093664A KR 1020200184616 A KR1020200184616 A KR 1020200184616A KR 20200184616 A KR20200184616 A KR 20200184616A KR 20220093664 A KR20220093664 A KR 20220093664A
Authority
KR
South Korea
Prior art keywords
data
write
address
version count
read
Prior art date
Application number
KR1020200184616A
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 KR1020200184616A priority Critical patent/KR20220093664A/ko
Priority to US17/473,137 priority patent/US11886624B2/en
Publication of KR20220093664A publication Critical patent/KR20220093664A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • G06F21/79Protecting 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 in semiconductor storage media, e.g. directly-addressable memories
    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/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
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/122Hardware reduction or efficient architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명에 따른 크립토 장치의 쓰기 방법은, 중앙 처리 장치로부터 쓰기 요청을 수신하는 단계, 상기 쓰기 요청의 쓰기 동작 속성을 판별하는 단계, 및 상기 쓰기 동작 속성에 따라 부분 쓰기 동작 및 전체 쓰기 동작 중에서 어느 하나를 수행하는 단계를 포함하고, 상기 전체 쓰기 동작은, 버전 카운트를 위한 난수를 발생하고, 상기 버전 카운트를 이용하여 키 스트림을 발생하고, 상기 키 스트림과 쓰기 데이터를 논리 연산함으로써 암호화하고, 상기 암호화된 데이터 및 상기 버전 카운트를 메모리 장치에 저장하는 것을 특징으로 한다.

Description

크립토 장치, 그것을 갖는 집적 회로 및 컴퓨팅 장치, 및 그것의 쓰기 방법{CRYPTO DEVICE, INTEGRATED CIRCUIT AND COMPUTING DEVICE HAVING THE SAME, AND WRITING METHOD THEREOF}
본 발명은 크립토 장치, 그것을 갖는 집적 회로 및 컴퓨팅 장치 및 그것의 쓰기 방법에 관한 것이다.
일반적으로, SoC(System on Chip)는 다양한 시스템들이 집적되는 하나의 칩을 나타낼 수 있다. SoC는 다양한 시스템들을 집적하므로, SoC의 내부 메모리(예를 들면, SRAM(Static Random Access Memory))의 용량은 제한적일 수 있다. 내부 메모리의 제한적인 용량으로 인해, SoC는 외부 메모리 장치와 통신할 수 있다. SoC와 외부 메모리 장치가 외부로 노출될 수 있는 물리적인 라인들 및 핀들을 통해 통신하는 경우, 공격자가 SoC와 외부 메모리 장치간에 전송되는 데이터를 프루빙(probing)할 수 있는 위험이 존재한다.
본 발명의 목적은 부분 쓰기 동작을 지원하는 크립토 장치, 그것을 갖는 집적 회로 및 컴퓨팅 장치, 및 그것의 쓰기 방법을 제공하는 데 있다.
본 발명의 목적은, 부분 쓰기 동작을 지원하면서 성능을 개선하는 크립토 장치, 그것을 갖는 집적 회로 및 컴퓨팅 장치, 및 그것의 쓰기 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 크립토 장치의 쓰기 방법은, 중앙 처리 장치로부터 쓰기 요청을 수신하는 단계; 상기 쓰기 요청의 쓰기 동작 속성을 판별하는 단계; 및 상기 쓰기 동작 속성에 따라 부분 쓰기 동작 및 전체 쓰기 동작 중에서 어느 하나를 수행하는 단계를 포함하고, 상기 전체 쓰기 동작은, 버전 카운트를 위한 난수를 발생하고, 상기 버전 카운트를 이용하여 키 스트림을 발생하고, 상기 키 스트림과 쓰기 데이터를 논리 연산함으로써 암호화하고, 상기 암호화된 데이터 및 상기 버전 카운트를 메모리 장치에 저장하는 것을 특징으로 한다.
본 발명의 실시 예에 따른 집적 회로는, 상기 집적 회로의 전반적인 동작을 제어하는 중앙 처리 장치; 상기 중앙 처리 장치로부터 쓰기 요청을 수신하고, 쓰기 데이터를 암호화하거나, 상기 중앙 처리 장치로부터 읽기 요청을 수신하고 메모리 장치로부터 수신된 읽기 데이터를 복호화하는 크립토 장치; 및 상기 크립토 장치의 요청에 따라 상기 메모리 장치에 상기 암호화된 데이터를 쓰거나, 상기 메모리 장치로부터 상기 읽기 데이터를 읽는 메모리 제어기를 포함하고, 상기 크립토 장치는, 상기 중앙 처리 장치로부터 상기 쓰기 요청을 수신하고, 상기 쓰기 요청의 쓰기 동작 속성을 판별하고, 상기 쓰기 동작 속성에 따라 부분 쓰기 동작 및 전체 쓰기 동작 중에서 어느 하나를 수행하고, 상기 전체 쓰기 동작은, 버전 카운트를 위한 난수를 발생하고, 상기 버전 카운트를 이용하여 키 스트림을 발생하고, 상기 키 스트림과 상기 쓰기 데이터를 논리 연산함으로써 암호화하고, 상기 암호화된 데이터 및 상기 버전 카운트를 상기 메모리 장치에 저장하는 것을 특징으로 한다.
본 발명의 실시 예에 따른 컴퓨팅 장치는, SoC(System-on-Chip); 및 제 1 영역 및 제 2 영역을 갖는 적어도 하나의 메모리 장치를 포함하고, 상기 SoC는, 적어도 하나의 중앙 처리 장치; 상기 적어도 하나의 중앙 처리 장치의 쓰기 요청에 응답하여 쓰기 데이터를 암호화하고, 상기 쓰기 요청에 대응하는 버전 카운트를 발생하는 크립토 장치; 및 상기 버전 카운트를 상기 제 1 영역에 저장하고, 상기 암호화된 데이터를 상기 제 2 영역에 저장하도록 상기 적어도 하나의 메모리 장치를 제어하는 메모리 제어기를 포함하고, 상기 버전 카운트는 전체 쓰기 동작시 난수에 의해 발생되는 것을 특징으로 한다.
본 발명의 실시 예에 따른 크립토 장치는, 중앙 처리 장치로부터 쓰기 요청을 수신하고, 쓰기 데이터를 위한 제 1 어드레스 및 제 1 제어 신호를 출력하고, 상기 쓰기 요청의 쓰기 동작 속성을 분석하여 RMW(Read-Modify-Write) 활성화 신호를 출력하는 쓰기 속성 분석기; 상기 제 1 어드레스 및 상기 제 1 제어 신호를 수신하고, 버전 카운트를 위한 제 2 어드레스 및 제 2 제어 신호를 출력하는 어드레스 발생기; 상기 쓰기 속성 분석기로부터 상기 제 1 어드레스 및 상기 제 1 제어 신호를 수신하고, 상기 어드레스 발생기로부터 상기 제 2 어드레스 및 상기 제 2 제어 신호를 수신하고, RMW 활성화 신호에 따라 부분 쓰기 동작 혹은 전체 쓰기 동작에 대응하는 읽기 요청 혹은 쓰기 요청을 메모리 제어기로 출력하는 어드레스-데이터 스케쥴러; 상기 RMW 활성화 신호가 비활성 상태를 지시할 때, 새로운 버전 카운트를 위한 난수를 발생하는 난수 발생기; 상기 쓰기 속성 분석기로부터 상기 쓰기 데이터를 수신하고, 상기 버전 카운트에 대응하는 키 스트림을 발생하고, 상기 키 스트림과 상기 쓰기 데이터를 논리 연산함으로써 암호화시키고, 상기 암호화된 데이터 및 상기 버전 카운트를 상기 어드레스-데이터 스케쥴러로 출력하는 암호화 모듈; 상기 어드레스-데이터 스케쥴러로부터 암호화된 리드 데이터 및 이전 버전 카운트를 수신하고, 상기 이전 버전 카운트에 대응하는 이전 키 스트림을 발생하고, 상기 이전 키 스트림과 상기 암호화된 리드 데이터를 상기 논리 연산함으로써 복호화하는 복호화 모듈; 및 상기 쓰기 속성 분석기, 상기 어드레스 발생기, 상기 어드레스-데이터 스케쥴러, 상기 난수 발생기를 제어하는 메인 제어기를 포함할 수 있다.
본 발명의 실시 예에 따른 크립토 장치, 그것을 갖는 집적 회로 및 컴퓨팅 장치, 및 그것의 쓰기 방법은, 쓰기 동작 속성을 판별하고, 쓰기 동작 속성에 따라 서로 다른 방식으로 버전 카운트를 발생함으로써, 메모리 장치의 접근을 최소화시킬 수 있다. 이로써, 본 발명의 크립토 장치, 그것을 갖는 시스템-온-칩, 및 그것의 쓰기 방법은 부분 쓰기 동작을 지원하면서 최적의 성능을 발휘할 수 있다.
이하에 첨부되는 도면들은 본 실시 예에 관한 이해를 돕기 위한 것으로, 상세한 설명과 함께 실시 예들을 제공한다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 장치(10)를 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 크립토 장치(120)를 예시적으로 보여주는 도면이다.
도 3은 본 발명의 실시 예에 따른 크립토 장치(120)의 데이터를 암호화하는 과정을 예시적으로 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 메모리 장치(200)의 데이터 저장을 예시적으로 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 집적 회로(100)의 쓰기 동작을 예시적으로 보여주는 흐름도이다.
도 6은 본 발명의 실시 예에 따른 부분 쓰기 동작(S140)을 예시적으로 보여주는 흐름도이다.
도 7은 본 발명의 실시 예에 따른 전체 쓰기 동작(S150)을 예시적으로 보여주는 흐름도이다.
도 8a 및 도 8b는 본 발명의 실시 예에 따른 크립토 장치(120)의 데이터 및 메타 데이터의 전송 요청 방식들을 예시적으로 보여주는 도면들이다.
도 9는 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)의 쓰기 동작에 대한 래더 다이어그램을 예시적으로 보여주는 도면이다.
도 10은 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템(10)의 쓰기 동작에 대한 래더 다이어그램을 예시적으로 보여주는 도면이다.
도 11은 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)의 읽기 동작에 대한 래더 다이어그램을 예시적으로 보여주는 도면이다.
도 12는 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)의 크립토 장치(120)의 암호화 과정을 예시적으로 보여주는 도면이다.
도 13은 본 발명의 실시 예에 따른 크립토 장치(500)를 예시적으로 보여주는 도면이다.
도 14는 본 발명의 또 다른 실시 예에 따른 크립토 장치(600)를 예시적으로 보여주는 도면이다.
도 15는 본 발명의 다른 실시 예에 따른 컴퓨팅 장치(20)를 예시적으로 보여주는 도면이다.
도 16는 본 발명의 또 다른 실시 예에 따른 컴퓨팅 장치(30)를 예시적으로 보여주는 도면이다.
도 17은 본 발명의 또 다른 실시 예에 따른 컴퓨팅 장치(40)를 예시적으로 보여 주는 도면이다.
도 18은 본 발명의 또 다른 실시 예에 따른 컴퓨팅 장치(50)를 예시적으로 보여주는 도면이다.
도 19는 본 발명의 실시 예에 따른 컴퓨팅 시스템(1000)을 예시적으로 보여주는 도면이다.
도 20는 본 발명의 실시 예에 따른 차량용 제어 시스템(2000)을 예시적으로 보여주는 블록도이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시 할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 장치(10)를 예시적으로 보여주는 도면이다. 도 1을 참조하면, 컴퓨팅 장치(10)는 집적 회로(100; SoC) 및 메모리 장치(200)를 포함할 수 있다.
집적 회로(100; SoC)는 컴퓨팅 장치(10)의 전반적인 동작을 제어하도록 구현될 수 있다. 집적 회로(100)는 적어도 하나의 중앙 처리 장치(110, CPU), 적어도 하나의 크립토 장치(120), 및 적어도 하나의 메모리 제어기(130, MEM CNTL)를 포함할 수 있다.
중앙 처리 장치(110)는 운영 체제(operating system)를 구동함으로써, 집적 회로(100)의 동작을 제어하도록 구현될 수 있다. CPU(110)는 적어도 하나의 인스트럭션에 따라 산술 논리 연산을 수행하거나 데이터 처리를 실행하도록 구현될 수 있다. CPU(110)는, 도시되지 않았지만, 프로그램 카운터, ALU(arithmetic logic unit), 레지스터, 등을 포함할 수 있다.
크립토 장치(120)는 CPU(100)로부터 버스(101)를 통하여 전송된 데이터를 암호암호알고리즘을 이용하여 화시키거나, 메모리 제어기(130)로부터 버스(102)를 통해 전송된 암호화된 데이터를 암호 알고리즘을 이용하여 복호화 시키도록 구현될 수 있다. 실시 예에 있어서, 암호 알고리즘은 AES(Advanced Encryption Standard), DES(Data Encryption Standard), TripleDES, SEED, HIGHT(HIGh security and light weigHT), ARIA, LEA(Lightweight Encryption Algorithm), 혹은 그와 같은 것 일 수 있다. 실시 예에 있어서, 암호 알고리즘은 블록 암호 모드로 암복호 동작을 수행할 수 있다. 여기서 블록 암호 모드는 CTR(counter) 모드일 수 있다. 한편, 본 발명의 블록 암호 모드가 여기에 제한되지 않는다고 이해되어야 할 것아.
또한, 크립토 장치(120)는 중앙 처리 장치(110)의 쓰기 요청에 응답하여 버전 카운트(Version Count; VCNT)를 발생하고, 발생된 버전 카운트(VCNT)를 이용하여 스트림 키를 발생하고, 스트림 키를 이용하여 데이터(WD)를 암호화 할 수 있다. 또한, 크립토 장치(120)는 암호화된 데이터(EWD)와 버전 카운트(VCNT)를 메모리 제어기(130)로 출력할 수 있다. 또한, 크립토 장치(120)는 암호화된 데이터(EWD)에 대응하는 제 1 어드레스 및 버전 카운트(VCNT)에 대응하는 제 2 어드레스를 메모리 제어기(130)로 출력 할 수 있다. 여기서 제 1 어드레스는 메모리 장치(200)의 암호화 데이터 영역(212, 혹은 '제 2 메모리 영역')을 지시하고, 제 2 어드레스는 메모리 장치(200)의 플레인 데이터 영역(211, 혹은 '제 1 메모리 영역')을 지시할 수 있다.
또한, 크립토 장치(120)는 파일 속성에 따라 서로 다른 방식으로 버전 카운트(VCNT)를 발생할 수 있다. 예를 들어, 파일 속성이 부분 쓰기 동작(partial write operation)을 지시할 때(예를 들어, RMW(Read-Modify-Write) 동작), 버전 카운트(VCNT)는 이전의 버전 카운트를 메모리 장치(200)로부터 먼저 읽은 후에, 카운터에 의해 증가될 수 있다. 반면에, 파일 속성이 전체 쓰기 동작(full write operation)을 지시할 때, 버전 카운트(VCNT)는 난수(random number)에 의해 발생될 수 있다.
또한, 크립토 장치(120)는 중앙 처리 장치(110)의 읽기 요청에 응답하여 버전 카운트(VCNT) 및 암호화된 데이터(EWD)를 수신하고, 버전 카운트에 응답하여 스트림 키를 발생하고, 스트림 키를 이용하여 암호화된 데이터(EWD)를 복호화 할 수 있다.
메모리 제어기(130)는 메모리 장치(200)를 제어하도록 구현될 수 있다. 메모리 제어기(130)는 중앙 처리 장치(110)로부터 쓰기 요청을 수신하고, 메모리 장치(200)의 플레인 데이터 영역(211)에 데이터(WD)를 쓸 수 있다. 메모리 제어기(130)는 중앙 처리 장치(110)로부터 읽기 요청을 수신하고, 메모리 장치(200)의 플레인 데이터 영역(211)에 접근함으로써 데이터를 읽을 수 있다.
또한, 메모리 제어기(130)는 크립토 장치(120)로부터 암호화된 데이터(EWD)에 대한 쓰기 요청을 수신하고, 메모리 장치(200)의 암호화된 데이터 영역(212)에 암호화된 데이터(EWD)를 쓸 수 있다. 또한, 메모리 제어기(130)는 크립토 장치(120)로부터 버전 카운트(VCNT)에 대한 쓰기 요청을 수신하고, 메모리 장치(200)의 플레인 데이터 영역(211)에 버전 카운트(VCNT)를 쓸 수 있다.
또한, 메모리 제어기(130)는 크립토 장치(120)로부터 읽기 요청을 수신하고, 메모리 장치(200)의 암호화된 데이터 영역(212)로부터 암호화된 데이터(EWD)를 읽을 수 있다. 또한, 메모리 제어기(130)는 크립토 장치(120)로부터 버전 카운트(VCNT)에 대한 읽기 요청을 수신하고, 메모리 장치(200)의 플레인 데이터 영역(211)로부터 버전 카운트(VCNT)를 읽을 수 있다.
메모리 장치(200)는 데이터를 저장하도록 구현될 수 있다. 여기서 데이터는 암호화된 데이터(EWD) 및 플레인 데이터를 포함할 수 있다.
메모리 장치(200)는 플레이 데이터 영역(211) 및 암호화된 데이터 영역(212)을 포함할 수 있다. 실시 예에 있어서, 메모리 장치(200)는 DRAM(dynamic random access memory), SDRAM(Synchronous DRAM), DDR SDRAM (double data rate synchronous dynamic random access memory), LPDDR(low power double data rate) SDRAM, RDRAM(Rambus DRAM), DIMM(dual in-line memory module), NVDIMM(nonvolatile DIMM), PRAM(phase change random access memory) 등으로 구현될 수 있다.
일반적인 컴퓨팅 장치는, 쓰기 동작마다 버전 카운트(Version Count)를 갖는 메타 데이터를 메모리 장치로부터 읽은 후에, 버전 카운트를 1만큼 증가시켜 키 스트림(Key Stream)을 발생하고, 키 스트림과 쓰기 데이터를 논리 연산함으로써 암호화하여 메모리 장치에 저장하고 있다. 이러한 쓰기 동작을 위해서 일반적인 컴퓨팅 장치는 쓰기 동작시 항상 메모리 장치의 메타 데이터를 우선적으로 읽고, 증가시킨 버전 카운트를 메모리 장치에 저장해야 한다. 이는 쓰기 동작을 수행하면서 읽기 동작을 항상 요구함으로써, 메모리 접근 횟수를 증가시키고 있다.
반면에, 본 발명의 실시 예에 따른 컴퓨팅 장치(10)는, 종래의 부분 쓰기 동작을 허용하면서도, 동시에 전체 쓰기 동작시 난수를 이용하여 버전 카운트를 발생함으로써 메모리 장치(200)의 불필요한 접근을 제거할 수 있다. 이로써, 본 발명의 컴퓨팅 장치(10)는 시스템 성능 및 효율 향상을 기대할 수 있다.
도 2는 본 발명의 실시 예에 따른 크립토 장치(120)를 예시적으로 보여주는 도면이다. 도 2를 참조하면, 크립토 장치(120)는 메인 제어기(121), 어드레스-데이터 스케쥴러(122), 암호화 엔진(123), 쓰기 데이터 핸들러(124), 복호화 엔진(125), 읽기 데이터 핸들러(126), 쓰기 속성 분석기(127), 어드레스 발생기(128), 및 난수 발생기(129)를 포함할 수 있다.
메인 제어기(121)는 크립토 장치(120)의 전반적인 동작을 제어하도록 구현될 수 있다. 메인 제어기(121)는 쓰기 데이터(WD)에 대한 제 1 어드레스(ADD1) 및 제 1 제어 신호(CTR1)를 수신할 수 있다. 또한, 메인 제어기(121)는 쓰기 속성 분석기(127)로부터 RMW(Read-Modify-Write) 활성화 신호(RMW EN)를 수신하고, RMW 활성화 신호(RMW EN)을 어드레스-데이터 스케쥴러(122)로 출력할 수 있다.
또한, 메인 제어기(121)는 RMW 활성화 신호(RMW EN)에 응답하여 이전 버전 카운트(previous VCNT)을 메모리 장치(200, 도 1 참조)로부터 읽고, 이전 버전 카운트를 카운트-업함으로써, 현재 버전 카운트(current VCNT)를 발생할 수 있다. 이때 현재 버전 카운트(current VCNT)는 암호화 엔진(123) 및 쓰기 데이터 핸들러(124)에 제공될 수 있다. 또한, 메인 제어기(121)는 읽기 데이터 핸들러(126)으로부터 이전 버전 카운트(previous VCNT)를 수신할 수 있다.
어드레스-데이터 스케쥴러(122)는 메모리 동작(쓰기/읽기 동작)에 관련한 버스 트랜잭션을 스케쥴링 하도록 구현될 수 있다. 어드레스-데이터 스케쥴러(122)는 복수의 암호화 데이터들 및 이에 대응하는 메타 데이터(예, 버전 카운트)를 메모리 장치(200)에 쓰거나, 메모리 장치(200)로부터 암호화 데이터 및 메타 데이터(예, 버전 카운트)를 읽도록 스케쥴링 할 수 있다.
어드레스-데이터 스케쥴러(122)는 쓰기 동작에서 쓰기 속성 분석기(127)로부터 쓰기 데이터에 대한 제 1 어드레스(ADD1) 및 제 1 제어 신호(CTR1)를 수신하고, 어드레스 발생기(128)로부터 버전 카운트(VCNT)에 대한 제 2 어드레스(ADD2) 및 제 2 제어 신호(CTR2)를 수신할 수 있다.
실시 예에 있어서, 어드레스-데이터 스케쥴러(122)는 메인 제어기(121)로부터 RMW 활성화 신호(RMW EN)를 수신함으로써 쓰기 동작에 대한 스케쥴링을 수행할 수 있다. 이후에, 어드레스-데이터 스케쥴러(122)는 RMW 활성화 신호(RMW EN)에 응답하여 제 1 어드레스(ADD1)에 대응하는 메모리 장치(200)의 영역(212, 도 1 참조)에서 이전에 암호화된 데이터를 읽고, RMW 활성화 신호(RMW EN)에 응답하여 제 2 어드레스(ADD2)에 대응하는 메모리 장치(200)의 영역(211, 도 1 참조)에서 이전 버전 카운트(previous VCNT)를 읽도록, 메모리 제어기(130)에 읽기 요청들을 출력할 수 있다. 이후에, 어드레스-데이터 스케쥴러(122)는 쓰기 데이터 핸들러(124)로부터 암호화된 데이터(EWD) 및 현재 버전 카운트(current VCNT)를 수신할 수 있다. 이후에, 어드레스-데이터 스케쥴러(122)는 제 1 어드레스(ADD1)에 대응하는 메모리 장치(200)의 영역(212)에서 암호화된 데이터(EWD)를 쓰고, 제 2 어드레스(ADD2)에 대응하는 메모리 장치(200)의 영역(211)에서 현재 버전 카운트(current VCNT)를 쓰도록, 메모리 제어기(130)에 쓰기 요청들을 출력할 수 있다.
다른 실시 예에 있어서, 어드레스-데이터 스케쥴러(122)는 메인 제어기(121)로부터 RMW 활성화 신호(RMW EN)를 수신하지 않고 쓰기 동작에 대한 스케쥴링을 수행할 수 있다. 이때, 어드레스-데이터 스케쥴러(122)는 이전 데이터 및 이전 버전 카운트를 앍기 위한 메모리 장치(200)의 접근 없이 곧바로 쓰기 동작을 수행하도록 스케쥴링을 수행할 수 있다. 예를 들어, 어드레스-데이터 스케쥴러(122)는 쓰기 데이터 핸들러(124)로부터 암호화된 데이터(EWD) 및 현재 버전 카운트(current VCNT)를 수신할 수 있다. 여기서 현재 버전 카운트(current VCNT)는 난수 발생기(129)에서 발생된 값이다. 이후에, 어드레스-데이터 스케쥴러(122)는 제 1 어드레스(ADD1)에 대응하는 메모리 장치(200)의 영역(212)에서 암호화된 데이터(EWD)를 쓰고, 제 2 어드레스(ADD2)에 대응하는 메모리 장치(200)의 영역(211)에서 현재 버전 카운트(current VCNT)를 쓰도록, 메모리 제어기(130)에 쓰기 요청들을 출력할 수 있다.
정리하면, 어드레스-데이터 스케쥴러(122)는 제 1 어드레스(ADD1)에 대응하는 메모리 장치(200)의 영역(212)에서 암호화된 데이터(EWD)를 쓰고, 제 2 어드레스(ADD2)에 대응하는 메모리 장치(200)의 영역(211)에서 현재 버전 카운트(current VCNT)를 쓰도록, 메모리 제어기(130)에 쓰기 요청들을 출력할 수 있다.
또한, 어드레스-데이터 스케쥴러(122)는 쓰기 동작시 데이터/버전 카운트를 위한 어드레스 및 제어 신호와 대응하는 암호화된 데이터(EWD)/버전 카운트(VCNT)를 메모리 제어기(130)로 출력할 수 있다. 또한, 어드레스-데이터 스케쥴러(122)는 읽기 동작시 데이터/버전 카운트를 위한 어드레스 및 제어 신호와 대응하는 암호화된 읽기 데이터(ERD)/버전 카운트(VCNT)를 메모리 제어기(130)로부터 수신할 수 있다.
암호화 엔진(123)은 암호 알고리즘에 의거하여 버전 카운트(VCNT)에 대응하는 키 스트림을 발생하고, 키 스트림과 쓰기 데이터(WD)을 논리 연산함으로써 암호화 데이터(EWD)를 발생하도록 구현될 수 있다. 여기서 암호 알고리즘은 AES 알고리즘이고, 논리 연산은 XOR 연산일 수 있다.
쓰기 데이터 핸들러(124)는 쓰기 동작시 암호화된 데이터(EWD) 및 현재 버전 카운트(VCNT)를 어드레스-데이터 스케쥴러(122)에 전송하도록 구현될 수 있다. 여기서 현재 버전 카운트(VCNT)는 쓰기 동작의 속성에 따라 이전 버전 카운트에서 카운트-업 된 값 및 난수 발생기(129)에서 발생된 값 중에서 어느 하나 일 수 있다. 한편, 암호화 엔진(123) 및 쓰기 데이터 핸들러(124)를 통칭하여 암호화 모듈로 불리 수 있다.
복호화 엔진(125)은 암호 알고리즘에 의거하여 이전 버전 카운트(VCNT)에 대응하는 키 스트림을 발생하고, 키 스트림과 암호화된 읽기 데이터(ERD)을 논리 연산함으로써 암호화된 읽기 데이터(ERD)를 복호화 하도록 구현될 수 있다. 여기서 암호 알고리즘은 AES 알고리즘이고, 논리 연산은 XOR 연산일 수 있다.
읽기 데이터 핸들러(126)는 읽기 동작시 암호화된 읽기 데이터(ERD) 및 이전 버전 카운트(VCNT)를 어드레스-데이터 스케쥴러(122)로부터 수신하도록 구현될 수 있다. 실시 예에 있어서, 읽기 데이터 핸들러(126)은 부분 쓰기 동작시 이전 버전 카운트(previous VCNT)를 메인 제어기(121)로 전송할 수 있다. 한편, 복호화 엔진(125) 및 읽기 데이터 핸들러(126)을 통칭하여 복호화 모듈로 불릴 수 있다.
쓰기 속성 분석기(127)는 쓰기 요청을 수신하고, 데이터를 위한 제 1 어드레스(ADD1) 및 제 1 제어 신호를 출력하고, 쓰기 동작 속성을 분석하도록 구현될 수 있다. 여기서 쓰기 요청은 쓰기 데이터(WD), 어드레스(ADD), 제어 신호(CTR)를 포함할 수 있다. 여기서 어드레스(ADD)는 메모리 장치(200)의 암호화된 데이터 영역(212)에 대응하는 어드레스일 수 있다. 여기서 제어 신호(CTR)는 라이트 스트로브 신호(Write Strobe; WSTRB)를 포함할 수 있다.
라이트 스트로브 신호(WSRTB)는 데이터를 전송할 때마다 유효한 쓰기 데이터의 바이트를 지시하는 데 이용될 수 있다. 예를 들어, 32 비트의 데이터 버스에서 쓰기 트랜잭션을 수행할 때, 4 비트의 라이트 스트로브 신호(WSTRB)가 발생할 수 있다. 이때 라이트 스트로브 신호(WSTRB)의 '1' 혹은 '0'에 따라서, 4개의 바이트들의 각각의 유효 여부가 결정될 수 있다. 예를 들어, 쓰기 속성 분석기(127)는 쓰기 데이터(WD)와 함께 전송된 라이트 스트로브 신호(WSTRB)를 분석함으로써, 부분 쓰기 동작 인 지, 전체 쓰기 동작인 지를 결정할 수 있다.
또한, 쓰기 속성 분석기(127)는 쓰기 동작 속성에 따라 RMW(Read-Modify-Write) 활성화 신호를 발생할 수 있다. 예를 들어, 라이트 스트로브 신호(WSTRB)가 부분 쓰기 동작을 지시할 때, RMW 활성화 신호는 활성화 상태를 지시할 수 있다.
어드레스 발생기(128)는 쓰기 데이터(WD)를 위한 제 1 어드레스(ADD1) 및 제 1 제어 신호(CTR1)를 수신하고, 버전 카운트(VCNT)를 위한 제 2 어드레스(ADD2) 및 제 2 제어 신호(CTR2)발생 하도록 구현될 수 있다. 여기서 제 2 어드레스(ADD2)는 크립토 장치(120)에 할당된 메모리 영역일 수 있다.
난수 발생기(129)는 메인 제어기(121)의 제어에 따라 버전 카운트(VCNT)를 발생하기 위하여 난수를 발생하도록 구현될 수 있다. 실시 예에 있어서, 난수는 열적 노이즈(thermal noise), 샷 노이즈(shot noise), 혹은 링 오실레이터의 준안정성(meta-stability)를 이용하여 발생될 수 있다.
본 발명의 실시 예에 따른 크립토 장치(120)는 버스로부터 요구되는 쓰기Write 동작의 속성(Attribute)에 따라 RMW 동작 및 버전 카운트에 대한 읽기 동작을 필요성을 판단하고, 판단 결과에 따라 RMW 동작 및 읽기 동작을 수행할 수 있다. 예를 들어, 크립토 장치(120)는 쓰기 동작의 속성을 판단하여 RMW 동작의 수행 여부를 결정할 수 있다. 또한, 크립토 장치(120)는 RMW 동작이 비활성화는 전체 쓰기 동작의 경우 난수 발생을 통해 버전 카운트에 대한 읽기 동작 없이 쓰기 동작만으로 데이터 암호화를 수행할 수 있다.
도 3은 본 발명의 실시 예에 따른 크립토 장치(120)의 데이터를 암호화하는 과정을 예시적으로 보여주는 도면이다.
크립토 장치(120)는 난스(nonce), 어드레스, 버전 카운트(VCNT)를 이용하여 데이터에 대한 키 스트림을 발생할 수 있다. 실시 예에 있어서, 난스의 크기는 64 비트일 수 있다. 실시 예에 있어서, 어드레스의 크기는 32 비트일 수 있다. 실시 예에 있어서, 버전 카운트(VCNT)는 32 비트일 수 있다. 실시 예에 있어서, 버전 카운트(VCNT)는 이전 버전 카운트에 카운트-업 됨으로써 발생되거나, 난수에 의해 발생될 수 있다. 실시 예에 있어서, 키 스트림의 크기는 128 비트일 수 있다. 실시 예에 있어서, 키 스트림은 키 값과 AES 알고리즘에 의거하여 발생될 수 있다. 여기서 키 값의 크기는 128 비트일 수 있다.
도 3에 도시된 바와 같이, 복수의 플레인텍스트들(Planetexts)은 키 스트림과 XOR 연산함으로써, 복수의 사이퍼텍스트들(Ciphertexts, 암호화 데이터)가 발생될 수 있다. 실시 예에 있어서, 복수의 플레인텍스트들의 각각의 크기는 128 비트일 수 있다. 실시 예에 있어서, 사이퍼텍스트들의 각각의 크기는 128 비트일 수 있다.
한편, 도 3에 도시된, 난스, 어드레스, 버전 카운트(VCNT), 키 스트림, 키 값, 플레인텍스트, 및 사이퍼텍스트의 크기들은 실시 예에 불과하다고 이해되어야 할 것이다.
도 4는 본 발명의 실시 예에 따른 메모리 장치(200)의 데이터 저장을 예시적으로 보여주는 도면이다. 도 4를 참조하면, 암호화된 데이터는 캐쉬 라인 별로 암호화된 데이터 영역(212)에 저장될 수 있다. 예를 들어, 128 비트의 사이퍼텍스트(ciphertext)는 암호화된 데이터 영역(212)에 저장될 수 있다. 버전 카운트(VCNT)는 플레인 데이터 영역(211)에 저장될 수 있다. 예를 들어, 27 비트의 버전 카운트는 플레인 데이터 영역(211)에 저장될 수 있다.
도 5는 본 발명의 실시 예에 따른 집적 회로(100)의 쓰기 동작을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 5를 참조하면, 집적 회로(100)의 쓰기 동작은 다음과 같이 진행될 수 있다.
중앙 처리 장치(110, 도 1참조)는 쓰기 요청을 암호화 장치(120)로 전송할 수 있다. 여기서 쓰기 요청은 쓰기 데이터 및 어드레스를 포함할 수 있다. 크립토 장치(120)는 중앙 처리 장치(110)으로부터 쓰기 요청을 수신할 수 있다(S110). 크립토 장치(120)는 쓰기 요청의 쓰기 동작 속성을 분석할 수 있다(S120). 이러한 쓰기 동작 속성 분석의 결과로써, 크립토 장치(120)는 RMW 동작이 활성화되는 지를 판별할 수 있다(S130). 만일, RMW 동작이 활성화될 때, 집적 회로(100)는 부분 쓰기 동작을 수행할 수 있다(S140). 반면에, RMW 동작이 비활성화 때, 집적 회로(100)는 전체 쓰기 동작을 수행할 수 있다(S150).
실시 예에 있어서, 쓰기 요청은 쓰기 데이터, 제 1 어드레스, 및 적어도 하나의 제어 신호를 포함하고, 적어도 하나의 제어 신호는 유효한 쓰기 데이터의 바이트를 지시하는 라이트 스트로브 신호(WSTRB)를 포함할 수 있다. 실시 에에 있어서, 라이트 스트로브 신호(WSTRB)를 분석함으로써 쓰기 동작 속성이 판별될 수 있다.
실시 예에 있어서, 버전 카운트(VCNT)를 메모리 장치(200)에 저장하기 위한 제 2 어드레스가 발생될 수 있다. 실시 예에 있어서, 암호화된 데이터(EWD)는 메모리 장치(200)의 암호화된 데이터 영역(212)에 저장되고, 버전 카운트(VCNT)는 메모리 장치(200)의 플레인 데이터 영역(211)에 저장될 수 있다.
실시 예에 있어서, 부분 쓰기 동작은, 이전 버전 카운트 및 이전 데이터를 메모리 장치(200)로부터 읽고, 이전 버전 카운트를 이용하여 이전 키 스트림을 발생하고, 이전 키 스트림과 이전 데이터를 논리 연산(예를 들어, XOR 연산)함으로써 복호화하고, 이전 버전 카운트를 카운트-업함으로써 새로운 버전 카운트를 발생하고, 새로운 버전 카운트를 이용하여 새로운 키 스트림을 발생하고, 복호화된 데이터를 쓰기 데이터를 이용하여 변조하고, 새로운 키 스트림과 변조된 데이터를 논리 연산함으로써 암호화하고, 암호화된 데이터 및 새로운 버전 카운트를 메모리 장치(200)에 저장할 수 있다.
실시 예에 있어서, 부분 쓰기 동작시, 메모리 장치(200)로 버전 카운트를 갖는 메타 데이터 및 데이터에 대한 읽기 요청이 전송될 수 있다. 이후에, 메모리 장치(200)로부터 읽기 요청에 대응하는 메타 데이터 및 연속한 복수의 데이터가 수신될 수 있다. 실시 예에 있어서, 어드레스-데이터 스케쥴러(122)는 버스의 효율적인 이용을 위하여 메타 데이터에 대한 병합 전송을 요청할 수 있다.
도 6은 본 발명의 실시 예에 따른 부분 쓰기 동작(S140)을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 6를 참조하면, 부분 쓰기 동작은 다음과 같이 진행될 수 있다. 쓰기 속성에 따라 부분 쓰기 동작의 경우, 크립토 장치(120)는 부분 쓰기 동작을 위하여 이전 버전 카운트를 메모리 장치(200)로부터 읽을 수 있다(S141). 크립토 장치(120)는 이전 버전 카운트를 이용하여 이전 스트림 키를 발생할 수 있다(S142). 크립토 장치(120)는 메모리 장치(200)로부터 쓰기 어드레스에 대응하는 데이터를 읽을 수 있다(S143). 크립토 장치(120)는 읽혀진 데이터를 이전 스트림 키를 이용하여 복호화 할 수 있다(S144). 크립토 장치(120)는 복호화된 데이터를 쓰기 데이터로 변조할 수 있다(S145). 이후에, 버전 카운트(VCNT)는 증가될 수 있다(S146). 즉, 이전 버전 카운트에서 카운트-업 될 수 있다. 이후에, 크립토 장치(120)는 증가된 버전 카운트(VCNT)를 이용하여 스트림 키를 발생할 수 있다(S147). 크립토 장치(120)는 발생된 스트림 키를 이용하여 변조된 데이터를 암호화 할 수 있다(S148). 이후에, 크립토 장치(120)는 암호화된 데이터 및 발생된 버전 카운트(VCNT)를 메모리 장치(200)에 저장하도록 메모리 제어기(130)에 요청할 수 있다.
도 7은 본 발명의 실시 예에 따른 전체 쓰기 동작(S150)을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 7를 참조하면, 전체 쓰기 동작은 다음과 같이 진행될 수 있다.
쓰기 속성에 따라 전체 쓰기 동작의 경우, 크립토 장치(120)는 버전 카운트를 발생하기 위한 난수를 발생할 수 있다(S151). 크립토 장치(120)는 난수에 대응하는 버전 카운트(VCNT)를 이용하여 키 스트림을 발생할 수 있다(S152). 크립토 장치(120)는 발생된 키 스트림을 이용하여 쓰기 데이터(WD)를 암호화 할 수 있다(S153). 크립토 장치(120)는 암호화된 데이터 및 버전 카운트(VCNT)를 메모리 장치(200)에 저장하도록 메모리 제어기(130)에 요청할 수 있다(S154).
도 8a 및 도 8b는 본 발명의 실시 예에 따른 크립토 장치(120)의 데이터 및 메타 데이터의 전송 요청 방식들을 예시적으로 보여주는 도면들이다.
도 8a를 참조하면, 크립토 장치(120)의 어드레스-데이터 스케쥴러(122)는 하나의 연속 데이터에 대응하는 하나의 메타-데이터에 대한 제 1 읽기 요청을 할 수 있다. 이러한 제 1 읽기 요청에 따라, 메모리 장치(200)는 하나의 메타 데이터 및 대응하는 연속한 데이터들을 출력할 수 있다.
도 8b를 참조하면, 크립토 장치(120)의 어드레스-데이터 스케쥴러(122)는 복수의 연속 데이터에 대응하는 복수의 메타-데이터에 대한 제 2 읽기 요청을 할 수 있다. 이러한 제 2 읽기 요청에 다라, 메모리 장치(200)는 복수의 메타 데이터 및 대응하는 연속한 데이터들을 출력할 수 있다. 이로써, 어드레스-데이터 스케쥴러(122)는 버스를 효율적으로 이용하기 위하여 메타-데이터에 대한 병합 전송 요청을 메모리 제어기(120)로 전송할 수 있다.
도 9는 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)의 쓰기 동작에 대한 래더 다이어그램을 예시적으로 보여주는 도면이다. 도 1 내지 도 9를 참조하면, 컴퓨팅 시스템의 쓰기 동작은 다음과 같이 진행될 수 있다.
중앙 처리 장치(CPU)는 크립토 장치(120)에 부분 쓰기 동작에 대한 쓰기 요청을 전송할 수 있다(S10). 여기서 부분 쓰기 동작의 수행 여부는 쓰기 데이터(WD)와 함께 전송된 라이트 스트로브 신호(WSTB)를 확인함으로써 알 수 있다.
쓰기 요청이 부분 쓰기 동작(곧, RMR 동작) 일 때, 크립토 장치(120)는 이전버전 카운트(previous VCNT)를 메모리 제어기(MEM CNTL)에 요청할 수 있다(S11-1). 메모리 제어기(MEM CNTL)는 어드레스(ADD2)를 이용하여 메모리 장치(MEM)에 이전 버전 카운트(previous VCNT)를 요청할 수 있다(S11-2). 여기서 어드레스(ADD2)는 크립토 장치(120)의 어드레스-데이터 스케쥴러(122)로부터 수신될 수 있다.
메모리 장치(MEM)는 어드레스(ADD2)에 대응하는 메모리 영역(211)에 접근함으로써 이전 버전 카운트(previous VCNT)를 읽고, 읽혀진 이전 버전 카운트(previous VCNT)를 메모리 제어기(MEM CNTL)로 출력할 수 있다(S12-1). 메모리 제어기(MEM CNTL)는 이전 버전 카운트(previous VCNT)를 크립토 장치(120)로 전송할 수 있다(S12-2).
크립토 장치(120)는 이전 버전 카운트(previous VCNT)를 수신하고, 암호 알고리즘을 이용하여 키 스트림을 발생할 수 있다(S13). 이후에, 크립토 장치(120)는 이전 암호화된 데이터(ERD)에 대한 읽기 요청을 메모리 제어기(MEM CNTL)로 전송하고(S14-1), 메모리 제어기(MEM CNTL)는 어드레스(ADD1)에 대응하는 메모리 영역(212)에 접근하는 이전 암호화된 데이터(ERD)에 대한 읽기 요청을 메모리 장치(MEM)에 전송할 수 있다(S14-2). 메모리 장치(MEM)는 어드레스(ADD1)에 대응하는 메모리 영역(212)에 접근함으로써 이전 암호화된 데이터(ERD)을 읽고, 읽혀진 이전 암호화된 데이터(ERD)를 메모리 제어기(MEM CNTL)로 출력할 수 있다(S15-1). 메모리 제어기(MEM CNTL)는 이전 암호화된 데이터(ERD)를 크립토 장치(120)로 전송할 수 있다(S15-2).
크립토 장치(120)는 이전 스트림 키를 이용하여 이전 암호화된 데이터(ERD)를 복호화 할 수 있다(S16-1). 크립토 장치(120)는 복호화된 데이터(RD)를 쓰기 데이터(WD)를 이용하여 일부 변조 할 수 있다(S16-2). 이후에, 크립토 장치(120)는 이전 버전 카운트(previous VCNT)를 카운트-업 함으로써 현재 버전 카운트(current VCNT)를 발생할 수 있다(S16-3). 크립토 장치(120)는 현재 버전 카운트(current VCNT)를 이용하여 키 스트림을 발생할 수 있다(S16-4). 이후에, 크립토 장치(120)는 변조된 데이터와 키 스트림을 논리 연산(예를 들어, XOR 연산)함으로써 변조된 데이터를 암호화시킬 수 있다(S16-5).
크립토 장치(120)는 암호화된 데이터(EWD)와 현재 버전 카운트(current VCNT)를 메모리 제어기(MEM CNTL)로 전송할 수 있다(S17). 메모리 제어기(MEM CNTL)는 제 1 어드레스(ADD1)에 대응하는 메모리 영역(212)에 암호화된 데이터를(EWD)를 쓰도록 메모리 장치(MEM)에 제 1 쓰기 요청을 전송할 수 있다(S18-1). 또한, 메모리 제어기(MEM CNTL)는 제 2 어드레스(ADD2)에 대응하는 메모리 영역(211)에 버전 카운트를 갖는 메타-데이터를 쓰도록 메모리 장치(MEM)에 제 2 쓰기 요청을 전송할 수 있다(S18-2). 한편, 제 1 쓰기 요청을 전송한 후에 제 2 쓰기 요청이 전송된다고 도시되지만, 본 발명이 여기에 제한되지 않는다고 이해되어야 할 것이다.
메모리 장치(MEM)는 제 1 및 제 2 쓰기 요청들을 수신하여, 대응하는 영역들(212, 211)의 각각에 암호화된 데이터(EWD) 및 대응하는 현재 버전 카운트(current VCNT)을 저장할 수 있다.
도 10은 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템(10)의 쓰기 동작에 대한 래더 다이어그램을 예시적으로 보여주는 도면이다. 도 1 내지 도 10을 참조하면, 컴퓨팅 시스템(10)의 쓰기 동작은 다음과 같이 진행될 수 있다.
중앙 처리 장치(CPU)는 쓰기 요청을 크립토 장치(120)에 전송할 수 있다(S20). 여기서 쓰기 요청은 전체 쓰기 동작을 지시하는 정보를 포함할 수 있다. 크립토 장치(120)는 쓰기 요청을 수신하여 쓰기 동작의 속성을 분석하고, 분석 결과로써 전체 쓰기 동작을 지시할 때, 난수 발생기(129)에 난수 발생을 요청할 수 있다(S21). 난수 발생기(129)는 암호화 동작을 위한 버전 카운트(VCNT)를 위하여 난수를 발생할 수 있다. 실시 예에 있어서, 발생된 난수가 버전 카운트(VCNT)일 수 있다. 다른 실시 예에 있어서, 발생된 난수를 이용하여 버전 카운트(VCNT)가 발생될 수도 있다.
크립토 장치(120)는 버전 카운트(VCNT)를 이용하여 키 스트림을 발생하고, 발생된 키 스트림을 이용하여 쓰기 데이터를 논리 연산함으로써 암호화할 수 있다(S22). 크립토 장치(120)는 암호화된 데이터(EWD) 및 대응하는 버전 카운트(VCNT)를 메모리 제어기(MEM CNTL)로 전송할 수 있다(S23). 메모리 제어기(MEM CNTL)는 제 1 어드레스(ADD1)에 대응하는 메모리 영역(212)에 암호화된 데이터를(EWD)를 쓰도록 메모리 장치(MEM)에 제 1 쓰기 요청을 전송할 수 있다(S24-1). 또한, 메모리 제어기(MEM CNTL)는 제 2 어드레스(ADD2)에 대응하는 메모리 영역(211)에 버전 카운트(VCNT)를 갖는 메타-데이터를 쓰도록 메모리 장치(MEM)에 제 2 쓰기 요청을 전송할 수 있다(S24-2).
도 10에 도시된 크립토 장치(120)의 쓰기 동작은 전체 쓰기 동작의 경우에 메모리 장치(MEM)의 리드 요청 없이, 곧바로 난수를 이용한 버전 카운트(VCNT)를 발생하고, 발생된 버전 카운트(VCNT)를 이용하여 키 스트림을 발생하고, 발생된 키 스트림을 이용하여 암호화된 데이터(WD)와 버전 카운트(VCNT)를 메모리 장치(MEM)에 쓸 수 있다.
도 11은 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)의 읽기 동작에 대한 래더 다이어그램을 예시적으로 보여주는 도면이다. 도 1 내지 도 11을 참조하면, 컴퓨팅 시스템(10)의 읽기 동작은 다음과 같이 진행될 수 있다.
중앙 처리 장치(CPU)는 크립토 장치(120)에 읽기 요청을 전송할 수 있다(S30). 여기서 읽기 요청은 읽혀진 데이터를 저장하고 있는 영역에 대한 어드레스(ADD)를 포함할 수 있다.
크립토 장치(120)는 버전 카운트(VCNT)를 메모리 제어기(MEM CNTL)에 요청할 수 있다(S31-1). 메모리 제어기(MEM CNTL)는 어드레스(ADD)에 대응하는 제 2 어드레스(ADD2)를 이용하여 메모리 장치(MEM)에 버전 카운트(VCNT)를 요청할 수 있다(S31-2). 여기서 제 2 어드레스(ADD2)는 어드레스(ADD)에 대응하고, 크립토 장치(120)의 어드레스 발생기(128)로부터 발생될 수 있다.
메모리 장치(MEM)는 제 2 어드레스(ADD2)에 대응하는 메모리 영역(211)에 접근함으로써 버전 카운트(VCNT)를 읽고, 읽혀진 버전 카운트(VCNT)를 메모리 제어기(MEM CNTL)로 출력할 수 있다(S32-1). 메모리 제어기(MEM CNTL)는 버전 카운트(VCNT)를 크립토 장치(120)로 전송할 수 있다(S32-2).
크립토 장치(120)는 버전 카운트(VCNT)를 수신하고, 암호 알고리즘을 이용하여 키 스트림을 발생할 수 있다(S33). 이후에, 크립토 장치(120)는 암호화된 데이터(ERD)에 대한 읽기 요청을 메모리 제어기(MEM CNTL)로 전송하고(S34-1), 메모리 제어기(MEM CNTL)는 어드레스(ADD)에 대응하는 제 1 어드레스(ADD1)을 이용하여 메모리 영역(212)에 접근하기 위하여 암호화된 데이터(ERD)에 대한 읽기 요청을 메모리 장치(MEM)에 전송할 수 있다(S34-2).
메모리 장치(MEM)는 제 1 어드레스(ADD1)에 대응하는 메모리 영역(212)에 접근함으로써 암호화된 데이터(ERD)을 읽고, 읽혀진 암호화된 데이터(ERD)를 메모리 제어기(MEM CNTL)로 출력할 수 있다(S35-1). 메모리 제어기(MEM CNTL)는 암호화된 데이터(ERD)를 크립토 장치(120)로 전송할 수 있다(S35-2).
크립토 장치(120)는 스트림 키를 이용하여 암호화된 데이터(ERD)를 복호화 할 수 있다(S36). 크립토 장치(120)는 복호화된 데이터(RD)를 중앙 처리 장치(CPU)에 전송할 수 있다(S37).
한편, 본 발명의 실시 예에 따른 크립토 장치는 데이터의 신뢰성 향상을 위하여 에러 정정 코드(Error Correction Code; ECC) 인코딩/디코딩 동작을 수행할 수도 있다.
도 12는 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)의 크립토 장치(120)의 암호화 과정을 예시적으로 보여주는 도면이다. 도 12를 참조하면, 데이터를 암호화하여 메모리 장치(200)에 저장할 때, 도 3에 도시된 바와 같이 메모리 장치(200)에 저장된 이전 버전 카운트를 읽을 필요가 있다. 저장된 암호화 데이터에 대한 메타 데이터 및 ECC 데이터에 대한 읽기 동작이 수행될 수 있다.
또한, 69 비트의 난스, 32 비트의 어드레스 및 27 비트의 버전 카운트를 이용하여 데이터에 대한 암호화 동작(예를 들어, AES 알고리즘을 이용한 암호화 동작)에 이용되는 128 비트의 키 스트림을 발생할 수 있다. 128 비트의 원본 데이터(Plaintext)와 128 비트의 키 스트림을 이용한 논리 연산(예를 들어, XOR 연산)을 통해 암호화 데이터(Ciphertext)가 발생될 수 있다.
또한, 27 비트의 버전 카운트에 대한 9 비트의 ECC 데이터와 함께, 128 비트의 암호화 데이터(Ciphertext)에 대한 36 비트의 ECC 데이터가 발생될 수 있다.
또한, 128 비트의 암호화 데이터(Ciphertext)와 MAC(Message Authentication Code) 키를 통한 연산에 의해 56 비트 MAC이 발생될 수 있다.
크립토 장치의 암호화 동작 및 ECC 인코딩 동작은 다음과 같이 진행될 수 있다. 예를 들어, 제 1 내지 제 4 데이터의 암호화 동작을 설명하겠다. 메타 데이터 및 ECC 데이터가 메모리 장치(200)로부터 읽혀질 수 있다. ECC 디코딩 동작을 통해 메타 데이터가 추출될 수 있다. 메타 데이터는 버전 카운트 및 ECC 데이터를 포함할 수 있다. 이후, 버전 카운트를 이용하여 키 스트림 발생 동작이 수행될 수 있다. 또한, 키 스트림을 이용한 암호화 동작이 수행될 수 있다. 제 1 암호화 데이터에 대한 ECC 인코딩 동작이 수행되고, 제 1 암호화 데이터가 메모리 장치(200)에 저장될 수 있다. 유사하게, 제 2 암호화 데이터에 대한 ECC 인코딩 동작 및 제 2 암호화 데이터가 메모리 장치(200)에 저장될 수 있다. 유사하게, 제 3 암호화 데이터에 대한 ECC 인코딩 동작 및 제 3 암호화 데이터가 메모리 장치(200)에 저장될 수 있다. 유사하게, 제 4 암호화 데이터에 대한 ECC 인코딩 동작 및 제 4 암호화 데이터가 메모리 장치(200)에 저장될 수 있다.
실시 예에 있어서, 암호화 데이터를 이용한 MAC 연산을 통해 MAC이 발생될 수 있다. 버전 카운트 및 MAC을 포함하는 메타 데이터에 대한 ECC 인코딩 동작이 수행될 수 있다. 발생된 메타 데이터와 ECC 데이터가 메모리 장치(200)에 저장될 수 있다.
도 13은 본 발명의 실시 예에 따른 크립토 장치(500)를 예시적으로 보여주는 도면이다. 도 13을 참조하면, 크립토 장치(500)는, 난수 발생기(501), 메인 제어기(510), 어드레스 발생기(520), 암호화 및 ECC 인코딩 모듈(530) 및 어드레스-데이터 스케줄러(540)를 포함할 수 있다.
난수 발생기(501)는 도 1 내지 도 12에서 설명된 바와 같이 RMW 동작을 수행하지 않을 때 버전 카운트(VCNT)를 위한 난수를 발생하도록 구현될 수 있다.
메인 제어기(510)는 크립토 장치(500)의 전반적인 동작을 제어할 수 있다. 암호화 및 ECC 인코딩 모듈(530)은 암호화 엔진(531), MAC 발생기(532) 및ECC 인코더(533)를 포함할 수 있다. 데이터를 메모리 장치(200, 도 1 참조)에 저장할 때, 데이터에 대한 암호화 처리 여부는 크립토 장치(500)가 판단하거나, 크립토 장치(500)를 포함하는 시스템 온 칩(SoC)가 판단할 수 있다. 만일, 시스템 온 칩(SoC)이 암호화 여부를 판단할 때, 데이터에 대한 쓰기 동작에 있어서 암호화 여부를 나타내는 정보(Info_EN)가 메인 제어기(510)로 제공될 수 있다. 메인 제어기(510)는 정보(Info_EN)에 기반하여 암호화 및 ECC 인코딩 모듈(530)의 동작을 제어할 수 있다.
실시 예에 있어서, 제 1 데이터(DATA1)에 대해서는 암호화 동작이 수행되고, 제 2 데이터(DATA2)에 대해서는 암호화 동작이 수행되지 않는 경우, 암호화 엔진(531)은 제 1 데이터(DATA1)에 대해 암호화 동작을 수행하고, 암호화 데이터를 MAC 발생기(532)로 제공함과 함께, 암호화 데이터 및 메타 데이터(예컨대, 버전 카운트)를 ECC 인코더(533)로 제공할 수 있다. 또한, MAC 발생기(532)로부터의 MAC은 메타 데이터로서 ECC 인코더(533)로 제공될 수 있다. ECC 인코더(533)는 암호화 데이터에 대한 제 1 ECC 데이터 및 메타 데이터에 대한 제 2 ECC 데이터를 발생할 수 있다. 한편, 제 2 데이터(DATA2)에 대해서는 암호화 동작이 수행됨이 없이 ECC 인코더(533)가 제 2 데이터(DATA2)에 대한 ECC 데이터를 발생할 수 있다.
메인 제어기(510)는 정보(Info_EN)에 기반하여 어드레스 발생기(520)의 동작을 제어할 수 있다. 어드레스 발생기(520)는 제 1 및 제 2 데이터들(DATA1, DATA2)의 저장에 관련된 어드레스를 이용하여 제 2 어드레스를 산출할 수 있다. 또한, 어드레스 발생기(520)는 제 1 데이터(DATA1)에 관련하여 메타 데이터 및 ECC 데이터의 저장을 위한 제 2 어드레스(ADD2_1)를 산출할 수 있다. 또한, 어드레스 발생기(520)는 제 2 데이터(DATA2)에 관련한 ECC 데이터의 저장을 위한 제 2 어드레스(ADD2_2)를 산출할 수 있다. 상술된 바와 같이 발생된 데이터 및 어드레스는 어드레스-데이터 스케줄러(540)로 제공될 수 있다.
어드레스 발생기(520)는 제 1 데이터(DATA1)에 관련된 제 2 어드레스(ADD2_1) 를 발생할 때 더 많은 데이터의 저장을 위한 정보를 갖도록 어드레스 발생 동작을 수행할 수 있다. 반면에, 어드레스 발생기(520)는 제 2 데이터(DATA2)에 관련된 제 2 어드레스(ADD2_2)를 발생하는 경우에 상대적으로 작은 데이터의 저장을 위한 정보를 갖도록 어드레스 발생 동작을 수행할 수 있다. 이에 따라, 암호화 동작이 수행되지 않는 경우에는 더 많은 데이터들에 관련된 ECC 데이터가 메모리의 동일 로우 또는 동일 칼럼에 저장될 수 있다.
어드레스-데이터 스케줄러(540)는 어드레스 혹은 데이터의 출력의 순서를 조절할 수 있다. 암호화 동작이 수행되지 않는 경우에, 어드레스-데이터 스케쥴러(540)는 상대적으로 많은 수의 데이터들 및 이에 대응하는 어드레스를 출력한 후,복수의 데이터들에 관련된 ECC 데이터들이 일괄적으로 메모리로 함께 제공될 수 있도록 스케줄링을 수행할 수 있다.
도 14는 본 발명의 또 다른 실시 예에 따른 크립토 장치(600)를 예시적으로 보여주는 도면이다. 도 14를 참조하면, 크립토 장치(600)는, 난수 발생기(601), 메인 제어기(610), 어드레스 발생기(620), 암호화 및 ECC 인코딩 모듈(630) 및 복호화 및 ECC 디코딩 모듈(630)를 구비할 수 있다.
난수 발생기(601)는 도 1 내지 도 12에서 설명된 바와 같이 RMW 동작을 수행하지 않을 때 버전 카운트(VCNT)를 위한 난수를 발생하도록 구현될 수 있다.
메인 제어기(610)는 크립토 장치(600)의 전반적인 동작을 제어할 수 있다.
실시 예에 있어서, 크립토 장치(600) 혹은 크립토 장치(600)를 포함하는 시스템 온 칩의 제어에 기반하여 암/복호화 동작에 이용되는 알고리즘 및 ECC 동작에 이용되는 알고리즘이 선택될 수 있다. 실시 예에 있어서, 암/복호화 동작에 이용되는 알고리즘 및 ECC 동작에 이용되는 알고리즘에 따라 메타 데이터의 사이즈가 변동될 수 있다. 실시 예에 있어서, ECC 데이터의 사이즈가 변동될 수 있다.
메인 제어기(610)의 제어에 기반하여 상기 알고리즘의 종류가 선택됨에 따라, 메인 제어기(610)는 암호화 및 ECC 인코딩 모듈(630)로 암호화 알고리즘 정보(Algo_EN)와 ECC 인코딩 알고리즘 정보(Algo_ECC_E)를 제공할 수 있다. 또한, 메인 제어기(610)는 복호화 및 ECC 디코딩 모듈(630)로 복호화 알고리즘 정보(Algo_DE)와 ECC 디코딩 알고리즘 정보(Algo_ECC_D)를 제공할 수 있다. 또한, 메인 제어기(610)는 선택된 알고리즘에 따라 암호화 동작 및 ECC 동작에서 발생되는 부가 데이터의 사이즈에 관련된 정보(Info_size)를 어드레스 발생기(620)로 제공할 수 있다.
어드레스 발생기(620)는 제 2 어드레스를 발생함에 있어서 상기 정보(Info_size)를 더 참조할 수 있다. 만일, 제 1 데이터에 대해 상대적으로 많은 제 1 사이즈를 갖는 부가 데이터가 발생되고, 제 2 데이터에 대해 상대적으로 작은 제 2 사이즈를 갖는 부가 데이터가 발생되는 경우, 어드레스 발생기(620)는 서로 다른 사이즈의 부가 데이터를 발생하기 위한 제 2 어드레스들(ADD2_1, ADD2_2)을 각각 발생할 수 있다. 예를 들어, 부가 데이터의 사이즈가 작은 경우에, 메타 데이터 및 ECC 데이터가 상대적으로 적은 개수의 로우 또는 칼럼에 저장될 수 있다.
또한 더 많은 데이터들에 관련된 부가 데이터(메타 데이터 및 ECC 데이터)가 메모리의 동일 로우 또는 동일 칼럼에 저장될 수 있다. 또한, 실시 예에 있어서, 부가 데이터의 사이즈에 기반하여 어드레스-데이터 스케줄러의 스케줄링 동작이 변동될 수도 있다.
한편, 본 발명의 실시 예에 따른 컴퓨팅 장치는 복수의 메모리 채널들을 구비할 수 있다.
도 15는 본 발명의 다른 실시 예에 따른 컴퓨팅 장치(20)를 예시적으로 보여주는 도면이다. 도 15를 참조하면, 컴퓨팅 장치(20)는 도 1에 도시된 컴퓨팅 장치(10)의 비교하여, 복수의 메모리 채널들(예를 들어, 4개의 채널들)을 통하여 메모리 장치들에 연결된 SoC를 포함할 수 있다.
한편, 도 1 및 도 15에서 크립토 장치는 버스를 통하여 대응하는 메모리 제어기(MEM CNTL)에 연결되고 있다. 하지만, 본 발명이 여기에 제한될 필요는 없다. 본 발명의 크립토 장치는 버스와 메모리 제어기에 사이에 배치될 수도 있다.
도 16는 본 발명의 또 다른 실시 예에 따른 컴퓨팅 장치(30)를 예시적으로 보여주는 도면이다. 도 16을 참조하면 컴퓨팅 장치(30)는 도 15에 도시된 그것과 비교하여 버스와 메모리 제어기(MEM CNTL) 사이에 배치된 크립토 장치를 구비하고 있다.
한편, 도 1 내지 도 16에서는 SoC 내부에 2개의 버스들이 도시되고 있다. 하지만, 본 발명의 버스의 개수가 여기에 제한되지 않을 것이다. 본 발명의 SoC는 하나의 버스로 구현될 수도 있다.
도 17은 본 발명의 또 다른 실시 예에 따른 컴퓨팅 장치(40)를 예시적으로 보여 주는 도면이다. 도 17를 참조하면, 컴퓨팅 장치(40)는 하나의 버스에 연결된 복수의 IPs(Intellectual Properties) 및 크립토 장치를 포함할 수 있다. 크립토 장치는 온-더 플라이 방식으로 암호화 동작 혹은 복호화 동작을 제공할 수 있다. 크립토 장치는 도 1 내지 도 14에서 설명된 바와 같이, 쓰기 동작의 속성에 따라 서로 다른 방식으로 버전 카운트를 발생함으로써, 암호화 동작의 성능을 개선할 수 있다.
한편, 도 17에서는 하나의 크립토 장치가 하나의 버스에 연결된 구조가 도시되고 있다. 본 발명의 구조가 여기에 제한되지 않을 것이다. 메모리 채널들의 각각에 대응하는 크립토 장치가 하나의 버스에 연결될 수 있다.
도 18은 본 발명의 또 다른 실시 예에 따른 컴퓨팅 장치(50)를 예시적으로 보여주는 도면이다. 도 18를 참조하면, 컴퓨팅 장치(50)는 도 17에 도시된 그것과 비교하여 크립토 장치들이 버스와 DRAM 제어기 사이에 배치되고 있다.
한편, 본 발명의 컴퓨팅 시스템은 다양한 기능을 수행하는 IP들(Intellectual Properties)을 더 포함할 수 있다.
도 19는 본 발명의 실시 예에 따른 컴퓨팅 시스템(1000)을 예시적으로 보여주는 도면이다. 도 19를 참조하면, 컴퓨팅 시스템(1000)은, SOC(System-on-Chip) 및 복수의 DRAM들을 포함할 수 있다.
SoC는 버스에 연결된 CPU, 크립토 장치, DRAM 하드웨어, DRAM 제어기들, 내부 SRAM(iRAM), 내부 ROM(iROM), GPU(Graphic Processing Unit), 멀티미디어 칩, DMA(Direct Memory Access) 칩, 모뎀, GNSS(Global Navigation Satellite System) 칩을 포함할 수 있다.
내부 RAM는 CPU의 동작시 필요한 데이터를 임시로 저장하도록 구현될 수 있다. 예를 들어, 내부 RAM은 SRAM(Synchronous Random Access Memory)로 구현될 수 있다. 내부 ROM은 CPU의 운영 시스템/프로그램 관련 코드(인스트럭션) 등을 저장하도록 구현될 수 있다. 예를 들어, 내부 ROM는 비휘발성 메모리로 구현될 수 있다. GPU은 그래픽 전용으로 처리하기 위한 칩일 수 있다. 멀티미디어 칩은 멀티미디어 데이터를 전용으로 처리하기 위한 칩일 수 있다. DMA 칩은 CPU을 경유하지 않고, 직접 DRAM들을 접근하도록 구현될 수 있다. 모뎀은 외부와 유무선 통신을 수행하도록 구현될 수 있다. GNSS 칩은 위성 항법 데이터를 수신하고, 컴퓨팅 시스템의 위치를 판별하도록 구현될 수 있다.
한편, 본 발명의 SOC는 도 19에 도시된 IP들 중 적어도 어느 하나를 제거하거나, 도 19에 도시되지 않은 적어도 하나의 IP를 추가할 수도 있다고 이해되어야 할 것이다. 한편, 본 발명의 SOC는 도 19에 도시된 IP들 중 적어도 2개가 하나의 칩으로 구현될 수 있다고 이해되어야 할 것이다.
도 20는 본 발명의 실시 예에 따른 차량용 제어 시스템(2000)을 예시적으로 보여주는 블록도이다. 도 20을 참조하면, 자율 주행을 위한 차량용 제어 시스템(2000)은 센서 정보 수집장치(2100), 네비게이션 정보 수집장치(2200), 자율 주행을 위한 전자 제어 유닛(2300, ECU), 중앙 처리 장치(2400) 및 메모리 장치(2500)를 포함할 수 있다. 또한, 자율 주행을 위한 전자 제어 유닛(2300)은 뉴럴 네트워크 장치(2310) 및 크립토 장치(2320)를 포함할 수 있다. 크립토 장치(2320)는 도 1 내지 도 14에서 설명된 크립토 장치로 구현 될 수 있다.
뉴럴 네트워크 장치(2310)는 각종 영상 정보 및 음성 정보를 이용한 뉴럴 네트워크 동작을 수행하고, 수행 결과를 기초로 영상 인식 결과 및 음성 인식 결과 등의 정보 신호를 발생할 수 있다.
센서 정보 수집장치(2100)는 카메라나 마이크 등의 각종 영상 정보 및 음성 정보를 수집할 수 있는 장치들을 포함하고, 이를 자율주행을 위한 전자 제어 유닛(2300)로 제공할 수 있다.
네비게이션 정보 수집장치(2200)는 자동차 운행과 관련된 각종 정보(예컨대, 위치 정보 등)를 자율 주행을 위한 전자 제어 유닛(2300)로 제공할 수 있다. 뉴럴 네트워크 장치(2310)는 센서 정보 수집장치(2100) 혹은 네비게이션 정보 수집장치(2200)로부터의 정보를 입력으로 하여, 다양한 종류의 뉴럴 네트워크 모델을 실행함으로써 정보 신호를 발생할 수 있다.
센서 정보 수집장치(2100)가 카메라나 마이크를 포함할 때, 자율 주행 모듈(2300)의 크립토 장치(2320)는 센서 정보 수집장치(2100)로부터의 음성 데이터나 이미지 데이터에 대한 보안 처리로써 암/복호화 동작 및 ECC 동작을 수행할 수 있다. 상술 된 바와 같이, 크립토 장치(2320)는 암호화 데이터, 메타 데이터/ECC 데이터를 메모리 장치(2500)에 저장할 수 있다.
도 20에서는 자율 주행 시스템에 본 발명의 실시 예가 적용된 예가 설명되었으나, 본 발명의 실시 예들은 IoT, 감시카메라, 등 카메라 센서에 보안 기능이 필요한 제품들에 적용이 가능하다.
종래 기술은 Write 시마다 Version Count Metadata를 Memory로부터 읽은 뒤, 이를 1만큼 증가시키고 Key Stream을 생성하여 Write Data와 XOR 한 뒤 저장한다. 이러한 동작을 위해서 Write 시에 항상 Metadata Read를 선행하여야 하고, 증가한 Version Count Metadata를 Memory에 저장하여야 한다. 따라서 Write 동작을 하는 경우에 Read 동작이 항상 요구됨으로써 Memory 접근 횟수를 증가시킨다.
또한 종래 기술은 이러한 Memory Data의 보호가 CPU가 사용하는 Memory 영역만을 가정하고 있다. 따라서 항상 Cache Line (CL) 단위의 Read와 Write만을 가정하므로, CL보다 작은 크기의 쓰기 동작이 가능한 DMA 혹은 Device와 같은 Bus Master에 대해서는 Data 보호가 고려되지 않는다. CL 단위의 Read/Write를 Version Counter와 연동하여 관리할 경우, CL 크기 내의 Data 중 일부만을 선택적으로 Write하는 경우라 하더라도, CL 크기 Data 전체를 모두 Update 해야 한다. 이에 따라, 이러한 Partial Write는 Read-Modify-Write(RMW)를 요구하므로, 이를 위한 기법에 대한 고려가 필요하다.
일반적으로 Version Count 값을 증가시키는 것은 Confidentiality 관점에서는 매 Write시마다 다른 Key Stream을 생성하기 위함이고, Replay Attack 대응책 관점에서는 Write가 수행된 시점을 기록하기 위함이다. 하지만 Replay Attack 대응책까지 고려하지 않아도 되는 환경에서는 Version Count가 반드시 순증(monotonic increase)하는 값이어야 할 필요는 없고, 매 Write시마다 바뀌는 값이라면 보안상 문제가 없다. 따라서 Confidentiality 만을 고려하는 System에서는 Write시 Version Count를 Memory에서 읽을 필요 없이, 암호화 장치와 연동된 난수 생성기 (Random Number Generator)를 통해 난수를 하나 생성 한 뒤, 이를 이용하여 Key Stream을 생성하면 Version Counter와 동일한 효과를 얻을 수 있다.
한편, CL(Cache Line) 크기 이하의 Write를 하는 Partial Write 시에는, Write되지 않고 유지되어야 하는 Data를 새로운 Key Stream을 통해 다시 암호한 뒤 Write를 해줘야 하는 요구사항이 있다. 이 때문에 기존 Version Count 값을 이용한 RMW를 해야 하므로, 상술된 방법을 그대로 적용할 수 없다. 따라서, Write 동작시마다 상술 된 쓰기 방식을 적용할 수 있는 경우인지, RMW를 적용해야 하는 경우인지를 판단하고, 선택적으로 쓰기 방식을 이용하는 판단 기법 및 이를 수행할 장치가 필요하다. ARM 제품의 Standard인 AXI AMBA Protocol의 예를 들면, 이는 Write Transaction시 Write Data Channel에서의 Write Strobe 신호(WSTRB)의 구성을 통해 판단이 필요하다.
본 발명에서 제안하는 기법 및 장치는, Data Confidentiality의 중요성으로 인해 Write 동작 시마다 매번 다른 Encryption 결과가 필요한 환경에서, RMW 동작의 필요 유무에 따라 Version Count 값에 대한 Read 동작 발생을 선택적으로 수행할 수 있다. 이로 인하여 64B 또는 임의의 크기의 CL 단위 Write 동작에서 전체 Data가 Write되는 경우에 한해, Version Count 확보를 위한 Read 동작 없이 Write 동작만으로 동일한 수준의 보안성을 확보하면서도 성능 향상이 가능하다.
한편, 상술된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용 할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함 할 것이다.
10: 컴퓨팅 시스템
100: 집적 회로
110: 중앙 처리 장치
120: 크립토 장치
130: 메모리 제어기
200: 메모리 장치
127: 쓰기 속성 분석기
128: 어드레스 발생기
122: 어드레스-데이터 스케쥴러
VCNT: 버전 카운트
WD: 쓰기 데이터
EWD: 암호화된 쓰기 데이터
RD: 읽기 데이터
ERD: 암호화된 읽기 데이터

Claims (20)

  1. 크립토 장치의 쓰기 방법에 있어서,
    중앙 처리 장치로부터 쓰기 요청을 수신하는 단계;
    상기 쓰기 요청의 쓰기 동작 속성을 판별하는 단계; 및
    상기 쓰기 동작 속성에 따라 부분 쓰기 동작 및 전체 쓰기 동작 중에서 어느 하나를 수행하는 단계를 포함하고,
    상기 전체 쓰기 동작은, 버전 카운트를 위한 난수를 발생하고, 상기 버전 카운트를 이용하여 키 스트림을 발생하고, 상기 키 스트림과 쓰기 데이터를 논리 연산함으로써 암호화하고, 상기 암호화된 데이터 및 상기 버전 카운트를 메모리 장치에 저장하는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서,
    상기 쓰기 요청은 쓰기 데이터, 제 1 어드레스, 및 적어도 하나의 제어 신호를 포함하는 방법.
  3. 제 2 항에 있어서,
    상기 적어도 하나의 제어 신호는 유효한 쓰기 데이터의 바이트를 지시하는 라이트 스트로브 신호를 포함하고,
    상기 쓰기 동작 속성을 판별하는 단계는,
    상기 라이트 스트로브 신호를 분석함으로써 상기 쓰기 동작 속성을 판별하는 단계를 포함하는 하는 방법.
  4. 제 2 항에 있어서,
    상기 버전 카운트를 상기 메모리 장치에 저장하기 위한 제 2 어드레스를 발생하는 단계를 더 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 암호화된 데이터는 상기 메모리 장치의 암호화된 데이터 영역에 저장되고,
    상기 버전 카운트는 상기 메모리 장치의 플레인 데이터 영역에 저장되는 것을 특징으로 하는 방법.
  6. 제 1 항에 있어서,
    상기 부분 쓰기 동작은, 이전 버전 카운트 및 이전 데이터를 상기 메모리 장치로부터 읽고, 상기 이전 버전 카운트를 이용하여 이전 키 스트림을 발생하고, 상기 이전 키 스트림과 상기 이전 데이터를 상기 논리 연산함으로써 복호화하고, 상기 이전 버전 카운트를 카운트-업함으로써 새로운 버전 카운트를 발생하고, 상기 새로운 버전 카운트를 이용하여 새로운 키 스트림을 발생하고, 상기 복호화된 데이터를 상기 쓰기 데이터를 이용하여 변조하고, 상기 새로운 키 스트림과 상기 변조된 데이터를 상기 논리 연산함으로써 암호화하고, 상기 암호화된 데이터 및 상기 새로운 버전 카운트를 상기 메모리 장치에 저장하는 것을 특징으로 하는 방법.
  7. 제 1 항에 있어서,
    상기 논리 연산은 XOR 연산이고,
    상기 키 스트림은 AES(Advanced Encryption Standard) 알고리즘에 의거하여 발생되는 것을 특징으로 하는 방법.
  8. 제 1 항에 있어서,
    상기 부분 쓰기 동작시, 상기 메모리 장치로 버전 카운트를 갖는 메타 데이터 및 데이터에 대한 읽기 요청하는 단계를 더 포함하는 방법.
  9. 제 8 항에 있어서,
    상기 읽기 요청에 대응하는 상기 메타 데이터 및 연속한 복수의 데이터를 수신하는 단계를 더 포함하는 방법.
  10. 제 8 항에 있어서,
    상기 읽기 요청하는 단계는,
    버스의 효율적인 이용을 위하여 상기 메타 데이터에 대한 병합 전송을 요청하는 단계를 더 포함하는 방법.
  11. 집적 회로에 있어서,
    상기 집적 회로의 전반적인 동작을 제어하는 중앙 처리 장치;
    상기 중앙 처리 장치로부터 쓰기 요청을 수신하고, 쓰기 데이터를 암호화하거나, 상기 중앙 처리 장치로부터 읽기 요청을 수신하고 메모리 장치로부터 수신된 읽기 데이터를 복호화하는 크립토 장치; 및
    상기 크립토 장치의 요청에 따라 상기 메모리 장치에 상기 암호화된 데이터를 쓰거나, 상기 메모리 장치로부터 상기 읽기 데이터를 읽는 메모리 제어기를 포함하고,
    상기 크립토 장치는, 상기 중앙 처리 장치로부터 상기 쓰기 요청을 수신하고, 상기 쓰기 요청의 쓰기 동작 속성을 판별하고, 상기 쓰기 동작 속성에 따라 부분 쓰기 동작 및 전체 쓰기 동작 중에서 어느 하나를 수행하고,
    상기 전체 쓰기 동작은, 버전 카운트를 위한 난수를 발생하고, 상기 버전 카운트를 이용하여 키 스트림을 발생하고, 상기 키 스트림과 상기 쓰기 데이터를 논리 연산함으로써 암호화하고, 상기 암호화된 데이터 및 상기 버전 카운트를 상기 메모리 장치에 저장하는 것을 특징으로 하는 집적 회로.
  12. 제 11 항에 있어서,
    상기 쓰기 요청을 수신하고, 데이터를 위한 제 1 어드레스 및 제 1 제어 신호를 출력하고, 상기 쓰기 동작 속성을 판별함으로써 RMW(Read-Modify-Write) 활성화 신호를 발생하는 쓰기 속성 분석기를 더 포함하는 것을 특징으로 하는 집적 회로.
  13. 제 12 항에 있어서,
    상기 RMW 활성화 신호가 비활성화 상태를 지시할 때, 상기 난수를 발생하는 난수 발생기를 더 포함하는 것을 특징으로 하는 집적 회로.
  14. 제 12 항에 있어서,
    상기 제 1 어드레스 및 제 1 제어 신호를 수신하고, 버전 카운트를 위한 제 2 어드레스 및 제 2 제어 신호를 발생하는 어드레스 발생기를 더 포함하는 것을 특징으로 하는 집적 회로.
  15. 제 14 항에 있어서,
    상기 쓰기 속성 분석기로부터 상기 제 1 어드레스 및 상기 제 1 제어 신호를 수신하고, 상기 어드레스 발생기로부터 상기 제 2 어드레스 및 상기 제 2 제어 신호를 수신하고, 상기 RMW 활성화 신호가 활성화 상태를 지시할 때 상기 메모리 장치로부터 상기 제 1 어드레스에 대응하는 메모리 영역으로부터 이전 데이터를 읽고, 상기 제 2 어드레스에 대응하는 메모리 영역으로부터 이전 버전 카운트를 읽도록 상기 메모리 제어기에 읽기 요청하는 어드레스-데이터 스케쥴러를 더 포함하는 것을 특징으로 하는 집적 회로.
  16. SoC(System-on-Chip); 및
    제 1 영역 및 제 2 영역을 갖는 적어도 하나의 메모리 장치를 포함하고,
    상기 SoC는,
    적어도 하나의 중앙 처리 장치;
    상기 적어도 하나의 중앙 처리 장치의 쓰기 요청에 응답하여 쓰기 데이터를 암호화하고, 상기 쓰기 요청에 대응하는 버전 카운트를 발생하는 크립토 장치; 및
    상기 버전 카운트를 상기 제 1 영역에 저장하고, 상기 암호화된 데이터를 상기 제 2 영역에 저장하도록 상기 적어도 하나의 메모리 장치를 제어하는 메모리 제어기를 포함하고,
    상기 버전 카운트는 전체 쓰기 동작시 난수에 의해 발생되는 것을 특징으로 하는 컴퓨팅 장치.
  17. 제 16 항에 있어서,
    상기 크립토 장치는,
    상기 쓰기 요청을 수신하고, 상기 쓰기 데이터를 위한 제 1 어드레스 및 제 1 제어 신호를 출력하고, 상기 쓰기 요청의 쓰기 동작 속성을 분석하여 RMW(Read-Modify-Write) 활성화 신호를 출력하는 쓰기 속성 분석기;
    상기 제 1 어드레스 및 상기 제 1 제어 신호를 수신하고, 상기 버전 카운트를 위한 제 2 어드레스 및 제 2 제어 신호를 출력하는 어드레스 발생기;
    상기 쓰기 속성 분석기로부터 상기 제 1 어드레스 및 상기 제 1 제어 신호를 수신하고, 상기 어드레스 발생기로부터 상기 제 2 어드레스 및 상기 제 2 제어 신호를 수신하고, RMW 활성화 신호에 따라 부분 쓰기 동작 혹은 전체 쓰기 동작에 대응하는 읽기 요청 혹은 쓰기 요청을 상기 메모리 제어기로 출력하는 어드레스-데이터 스케쥴러;
    상기 RMW 활성화 신호가 비활성 상태를 지시할 때, 상기 난수를 발생하는 난수 발생기;
    상기 쓰기 속성 분석기로부터 상기 쓰기 데이터를 수신하고, 상기 버전 카운트에 대응하는 키 스트림을 발생하고, 상기 키 스트림과 상기 쓰기 데이터를 논리 연산함으로써 암호화시키고, 상기 암호화된 데이터 및 상기 버전 카운트를 상기 어드레스-데이터 스케쥴러로 출력하는 암호화 모듈;
    상기 어드레스-데이터 스케쥴러로부터 암호화된 리드 데이터 및 이전 버전 카운트를 수신하고, 상기 이전 버전 카운트에 대응하는 이전 키 스트림을 발생하고, 상기 이전 키 스트림과 상기 암호화된 리드 데이터를 상기 논리 연산함으로써 복호화하는 복호화 모듈; 및
    상기 쓰기 속성 분석기, 상기 어드레스 발생기, 상기 어드레스-데이터 스케쥴러, 상기 난수 발생기를 제어하는 메인 제어기를 포함하는 컴퓨팅 장치.
  18. 제 17 항에 있어서,
    상기 암호화 모듈은,
    상기 쓰기 속성 분석기로부터 상기 쓰기 데이터를 수신하고, 상기 메인 제어기 혹은 상기 난수 발생기로부터 상기 버전 카운트를 수신하고, 암호 알고리즘에 의거하여 상기 쓰기 데이터를 암호화시킴으로써, 상기 암호화된 데이터를 발생하는 암호화 엔진; 및
    상기 암호화 엔진으로부터 상기 암호화된 데이터를 수신하고, 상기 메인 제어기 혹은 상기 난수 발생기로부터 상기 버전 카운트를 수신하고, 상기 암호화된 데이터 및 상기 버전 카운트를 상기 어드레스-데이터 스케쥴러로 출력하는 쓰기 데이터 핸들러를 포함하는 컴퓨팅 장치.
  19. 제 17 항에 있어서,
    상기 복호화 모듈은,
    상기 암호화된 읽기 데이터 및 이전 버전 카운트를 수신하고, 암호 알고리즘에 의거하여 상기 암호화된 읽기 데이터를 복호화하고 복호화 엔진; 및
    상기 어드레스-데이터 스케쥴러부터 상기 암호화된 읽기 데이터 및 상기 이전 버전 카운트를 수신하고, 상기 암호화된 읽기 데이터 및 상기 이전 버전 카운트를 상기 복호화 모듈로 출력하고, 상기 이전 버전 카운트를 상기 메모리 제어기로 출력하는 읽기 데이터 핸들러를 포함하는 컴퓨팅 장치.
  20. 제 17 항에 있어서,
    상기 어드레스-데이터 스케쥴러는 버스의 효율적 이용을 위하여 메타 데이터를 병합 전송하는 것을 특징으로 하는 컴퓨팅 장치.

KR1020200184616A 2020-12-28 2020-12-28 크립토 장치, 그것을 갖는 집적 회로 및 컴퓨팅 장치, 및 그것의 쓰기 방법 KR20220093664A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200184616A KR20220093664A (ko) 2020-12-28 2020-12-28 크립토 장치, 그것을 갖는 집적 회로 및 컴퓨팅 장치, 및 그것의 쓰기 방법
US17/473,137 US11886624B2 (en) 2020-12-28 2021-09-13 Crypto device, integrated circuit and computing device having the same, and writing method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200184616A KR20220093664A (ko) 2020-12-28 2020-12-28 크립토 장치, 그것을 갖는 집적 회로 및 컴퓨팅 장치, 및 그것의 쓰기 방법

Publications (1)

Publication Number Publication Date
KR20220093664A true KR20220093664A (ko) 2022-07-05

Family

ID=82119347

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200184616A KR20220093664A (ko) 2020-12-28 2020-12-28 크립토 장치, 그것을 갖는 집적 회로 및 컴퓨팅 장치, 및 그것의 쓰기 방법

Country Status (2)

Country Link
US (1) US11886624B2 (ko)
KR (1) KR20220093664A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11677541B2 (en) * 2021-10-12 2023-06-13 Nxp B.V. Method and device for secure code execution from external memory

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1850256B1 (en) 2006-04-24 2010-06-09 Telefonaktiebolaget LM Ericsson (publ) Authorisation of the installation of a software version
JP5167374B2 (ja) 2011-01-21 2013-03-21 シャープ株式会社 データ暗号化装置、及び、メモリカード
KR101577886B1 (ko) 2011-06-29 2015-12-15 인텔 코포레이션 무결성 검사 및 리플레이 공격들에 대한 보호를 이용하는 메모리 암호화를 위한 방법 및 장치
JP2013167740A (ja) 2012-02-15 2013-08-29 Nec Corp 暗号化装置、暗号化方法および暗号化プログラム
US9614666B2 (en) * 2014-12-23 2017-04-04 Intel Corporation Encryption interface
US9954681B2 (en) * 2015-06-10 2018-04-24 Nxp Usa, Inc. Systems and methods for data encryption
US10108557B2 (en) 2015-06-25 2018-10-23 Intel Corporation Technologies for memory confidentiality, integrity, and replay protection
US9904805B2 (en) 2015-09-23 2018-02-27 Intel Corporation Cryptographic cache lines for a trusted execution environment
CN107516047A (zh) 2017-08-08 2017-12-26 杭州中天微系统有限公司 一种存储数据加解密装置及方法
US11139959B2 (en) 2018-02-01 2021-10-05 The University Of Chicago Stream ciphers for digital storage encryption
US11269786B2 (en) * 2018-07-25 2022-03-08 Intel Corporation Memory data protection based on authenticated encryption

Also Published As

Publication number Publication date
US11886624B2 (en) 2024-01-30
US20220207192A1 (en) 2022-06-30

Similar Documents

Publication Publication Date Title
TWI822783B (zh) 包括具有改善記憶體使用效率的安全處理器的系統晶片與記憶體系統以及操作系統晶片的方法
US11088846B2 (en) Key rotating trees with split counters for efficient hardware replay protection
US7472285B2 (en) Apparatus and method for memory encryption with reduced decryption latency
EP3355232B1 (en) Input/output data encryption
US9710675B2 (en) Providing enhanced replay protection for a memory
WO2019109967A1 (en) Storage apparatus and method for address scrambling
US11658808B2 (en) Re-encryption following an OTP update event
US11387980B2 (en) Hardware multiple cipher engine
JP2006277411A (ja) プロセッサ、メモリ、コンピュータシステムおよびデータ転送方法
WO2017045484A1 (zh) 一种基于xts-sm4的存储加解密方法及装置
US11429751B2 (en) Method and apparatus for encrypting and decrypting data on an integrated circuit
WO2017143744A1 (zh) 一种总线分级加密系统
CN112887077B (zh) 一种ssd主控芯片随机缓存保密方法和电路
WO2019229192A1 (en) Memory-efficient hardware cryptographic engine
US20210006391A1 (en) Data processing method, circuit, terminal device and storage medium
CN116011041B (zh) 密钥管理方法、数据保护方法、系统、芯片及计算机设备
US11886624B2 (en) Crypto device, integrated circuit and computing device having the same, and writing method thereof
WO2020027984A1 (en) Dynamic cryptographic key expansion
JP4960456B2 (ja) 単一および多重aes動作をサポートする二重モードaesインプリメンテーション
US10019584B2 (en) Performance of image forming functions based on encrypted data stored in volatile memory
US20230208821A1 (en) Method and device for protecting and managing keys
CN112906071B (zh) 一种基于页温动态冷热切换的数据保护方法和装置
EP1460797B1 (en) Secure access and processing of an encryption/decryption key
TW202403576A (zh) 密碼裝置及其密碼方法
CN114139188A (zh) 一种SoC系统和基于PRINCE算法的实时加解密方法

Legal Events

Date Code Title Description
A201 Request for examination