KR102588733B1 - 온-더-플라이 인크립터를 갖는 집적회로, 그것을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법 - Google Patents

온-더-플라이 인크립터를 갖는 집적회로, 그것을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102588733B1
KR102588733B1 KR1020160144663A KR20160144663A KR102588733B1 KR 102588733 B1 KR102588733 B1 KR 102588733B1 KR 1020160144663 A KR1020160144663 A KR 1020160144663A KR 20160144663 A KR20160144663 A KR 20160144663A KR 102588733 B1 KR102588733 B1 KR 102588733B1
Authority
KR
South Korea
Prior art keywords
data
fly
encryptor
address
memory
Prior art date
Application number
KR1020160144663A
Other languages
English (en)
Other versions
KR20170136409A (ko
Inventor
이헌수
박재철
신종훈
정영진
최홍묵
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to EP17167222.3A priority Critical patent/EP3252651A1/en
Priority to US15/585,253 priority patent/US10749672B2/en
Priority to CN201710345730.9A priority patent/CN107451072B/zh
Publication of KR20170136409A publication Critical patent/KR20170136409A/ko
Application granted granted Critical
Publication of KR102588733B1 publication Critical patent/KR102588733B1/ko

Links

Images

Classifications

    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data

Abstract

본 발명의 컴퓨팅 시스템은 성능 저하를 최소로 하기 위해, 암호화되는 Data와 암호화되지 않는 데이터의 이동 경로를 완전히 분리하고, 이를 위해, 주소 공간 상에 가상의 보안 메모리를 만들고 CPU가 그 가상 보안 메모리에 데이터를 쓰면 하드웨어가 자동으로 데이터를 암호화하여 DRAM의 지정된 영역에 저장하고, CPU가 데이터를 읽으면 자동으로 DRAM의 지정된 영역에서 읽어서 복호화하여 CPU에 전달할 수 있다. 이로써, 전체 시스템 성능에는 영향을 주지 않으면서, 일부 데이터만 암호화로 보호할 수 있다.

Description

온-더-플라이 인크립터를 갖는 집적회로, 그것을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법{INTEGRATED CIRCUIT HAVING ON-THE-FLY ENCRYPTOR, COMPUTING SYSTEM HAVING THE SAME AND OPERATING METHOD THEREOF}
본 발명은 온-더-플라이 인크립터를 갖는 집적회로, 그것을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법에 관한 것이다.
DRAM(dynamic random access memory)은 시스템의 메인 메모리로써, 시스템 전체의 성능에 영향을 준다. DRAM에 읽기/쓰기 데이터를 프루빙(Probing)으로부터 보호하기 위해서, 물리적으로 프루빙을 어렵게 CPU와 DRAM을 하나의 실리콘(silicon)으로 만들거나, CPU와 DRAM을 TSV(through silicon via) 등으로 하나의 다이(Die)처럼 붙이는 방법도 시도되고 있다. 하지만 이러한 방법은 구현하는데 많은 비용이 든다. 또한, DRAM의 일부 중요 데이터를 암호화하고자 하는 시도가 있다. 하지만, 암호 로직(encryption logic)을 CPU(central processing unit)와 DRAM 사이에 배치하면, 시스템의 전체의 속도가 느려진다.
본 발명의 목적은 시스템의 성능 저하를 방지하면서 저렴하게 DRAM을 암호화하는 집적회로, 그것을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템의 동작 방법은, 온-더-플라이 인크립터에서 중앙 처리 장치로부터 의사 보안 메모리에 대한 접근을 위한 어드레스 및 데이터를 수신하는 단계, 상기 온-더-플라이 인크립터에서 상기 어드레스를 메인 메모리에 대한 접근을 위한 메모리 어드레스로 변환하는 단계, 상기 온-더-플라이 인크립터에서 상기 데이터를 암호 알고리즘에 의거하여 암호화시키는 단계, 및 메모리 제어기에서 상기 메모리 어드레스에 대응하는 메인 메모리에 상기 암호화된 데이터를 저장시키는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 집적회로의 동작 방법은, 제 1 계층 버스에 연결된 중앙 처리 장치에서, 상기 제 1 계층 버스에 연결된 멀티 계층 버스를 통하여 온-더-플라이 인크립터로 읽기 트랜잭션들을 발행하는 단계, 상기 온-더-플라이 인크립터에서, 상기 멀티 계층 버스 혹은 다른 멀티 계층 버스를 통하여 상기 제 1 계층 버스에 연결된 메모리 제어기들로 대응하는 읽기 트랜잭션을 발행하는 단계, 상기 온-더-플라이 인크립터에서, 상기 멀티 계층 버스를 통해 상기 메모리 제어기들로부터 상기 읽기 트랜잭션들에 대응하는 데이터를 수신하는 단계, 상기 온-더-플라이 인크립터에서, 상기 수신된 데이터를 복호화하는 단계, 및 상기 온-더-플라이 인크립터에서, 상기 복호화된 데이터를 상기 멀티 계층 버스 및 상기 제 1 계층 버스를 경유하여 상기 중앙 처리 장치로 전송하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 집적회로의 동작 방법은, 제 1 계층 버스에 연결된 중앙 처리 장치에서, 보안 데이터를 상기 제 1 계층 버스에 연결된 제 2 계층 버스를 경유하여 온-더-플라이 인크립터로 전송하는 단계, 상기 온-더-플라이 인크립터에서, 상기 보안 데이터를 암호화시키는 단계, 상기 온-더-플라이 인크립터에서, 상기 암호화된 데이터를 상기 제 2 계층 버스 혹은 다른 제 2 계층 버스를 경유하여 상기 제 1 계층 버스에 연결된 제 1 메모리 제어기로 전송하는 단계, 상기 제 1 메모리 제어기에 연결된 제 1 메모리의 암호화 데이터 영역에 상기 암호화된 데이터를 저장하는 단계, 상기 중앙 처리 장치에서, 비보안 데이터를 상기 제 1 계층 버스에 연결된 제 2 메모리 제어기로 전송하는 단계, 및 상기 제 2 메모리 제어기에 연결된 제 2 메모리의 비암호화 데이터 영역에 상기 비보안 데이터를 저장하는 단계를 포함하고, 상기 제 1 및 제 2 메모리 제어기들은 동일하거나 혹은 서로 다를 수 있다.
본 발명의 실시 예에 따른 집적회로는, 제 1 계층 버스, 상기 제 1 계층 버스에 연결된 제 2 계층 제어 버스, 상기 제 2 계층 제어 버스에 연결된 제 3 계층 제어 버스, 상기 제 1 계층 버스에 연결된 제 2 계층 데이터 버스, 상기 제 2 계층 데이터 버스에 연결된 제 3 계층 데이터 버스, 상기 제 1 계층 버스에 연결된 중앙 처리 장치, 상기 제 1 계층 버스에 연결된 적어도 하나의 메모리 제어기, 및 상기 제 2 및 상기 제 3 계층 제어 버스들을 통하여 쓰기 트랜잭션 혹은 읽기 트랜잭션을 수신하고, 의사 보안 메모리(pseudo secure memory) 기능을 수행하는 온-더-플라이 인크립터를 포함하고, 상기 온-더-플라이 인크립터는, 상기 의사 보안 메모리의 쓰기 동작시 상기 쓰기 트랜잭션에 응답하여 상기 중앙 처리 장치로부터 전송된 데이터를 암호화하고, 상기 암호화된 데이터를 상기 제 2 및 상기 제 3 계층 데이터 버스들을 경유하여 상기 적어도 하나의 메모리 제어기로 전송하거나, 상기 의사 보안 메모리의 읽기 동작시 상기 읽기 트랜잭션에 응답하여 상기 적어도 하나의 메모리 제어기로부터 전송된 암호화 데이터를 수신하고, 상기 수신된 암호화 데이터를 복호화할 수 있다.
본 발명의 실시 예에 따른 집적회로의 동작 방법은, 중앙 처리 장치에서 온-더-플라이 인크립터(on-the-fly encryptor)로 데이터에 대한 쓰기 요청을 전송하는 단계, 상기 쓰기 요청에 응답하여 상기 온-더-플라이 인크립터에서 상기 데이터를 암호화시키고, 상기 데이터는 상기 중앙 처리 장치에서 출력되고, 버스를 경유하여 상기 온-더-플라이 인크립터에서 수신되는 단계, 상기 암호화 데이터를 상기 버스를 경유하여 대응하는 메모리 제어기로 전송하는 단계, 및 상기 메모리 제어기에 연결된 메모리에 상기 암호화 데이터를 저장하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 집적회로 및 그것을 포함하는 컴퓨팅 시스템은, CPU와 메인 메모리 사이의 암호화 데이터의 전송 경로와 비암호화 데이터의 전송 경로를 분리함으로써, 성능 저하를 최소화시킬 수 있다.
또한, 본 발명의 실시 예에 따른 집적회로는 암호화 데이터를 비암호화 데이터와 다른 경로로 전송함으로써, 비암호화 데이터의 전송 관련한 추가적인 레이턴시를 발생하지 않을 수 있다.
또한, 본 발명의 실시 예에 따른 집적회로는 인터리빙 기능을 지원하면서 데이터를 암호화시키기 위해 단지 하나의 온-더-플라이 인크립터를 사용함으로써, 일반적인 그것과 비교하여 상대적인 칩 사이즈를 줄일 수 있다.
또한, 본 발명의 실시 예에 따른 집적회로 및 그것을 포함하는 컴퓨팅 시스템은 전체적인 성능에 영향을 주지 않으면서 일부 데이터에 대한 암호화를 진행함으로써, 데이터 관련 보안 기능을 향상시킬 수 있다.
도 1은 본 발명의 개념을 설명하기 위한 컴퓨팅 시스템을 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 컴퓨팅 시스템의 어드레스 공간에 대한 실시 예를 보여주는 도면이다.
도 3은 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 보안을 필요로 하는 보안 데이터(secure data)를 쓰는 과정을 예시적으로 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 보안 데이터를 읽는 과정을 예시적으로 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 온-더-플라이 인크립터에서 어드레스 변환 과정에 대한 실시 예를 보여주는 도면이다.
도 6은 본 발명의 실시 예에 따른 온-더-플라이 인크립터에서 어드레스 변환 과정에 필요한 베이스 어드레스를 예시적으로 보여주는 도면이다.
도 7은 본 발명의 실시 예에 따른 온-더-플라이 인크립터에서 어드레스 변환 과정에 대한 다른 실시 예를 보여주는 도면이다.
도 8은 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 도면이다.
도 9는 본 발명의 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 도면이다.
도 10은 도 9의 컴퓨팅 시스템에서 시스템 어드레스 공간을 예시적으로 보여주는 도면이다.
도 11은 도 9의 컴퓨팅 시스템에서 암호화 데이터 영역에 암호화 데이터를 쓰는 과정을 예시적으로 보여주는 도면이다.
도 12는 도 9의 컴퓨팅 시스템에서 암호화 데이터 영역으로부터 암호화 데이터를 읽는 과정을 예시적으로 보여주는 도면이다.
도 13은 도 9의 컴퓨팅 시스템에서 베이스 어드레스 개념을 적용한 실시 예를 예시적으로 보여주는 도면이다.
도 14는 도 9의 컴퓨팅 시스템에서 온-더-플라이 DRAM 암호 하드웨어의 어드레스 변환을 예시적으로 보여주는 도면이다.
도 15는 본 발명의 실시 예에 따른 컴퓨팅 시스템의 데이터 경로를 예시적으로 보여주는 도면이다.
도 16은 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 스크램블 기능을 추가한 데이터 경로를 예시적으로 보여주는 도면이다.
도 17은 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 보안/노멀 데이터 의 쓰기 경로를 예시적으로 보여주는 도면이다.
도 18은 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 보안/노멀 데이터 의 읽기 경로를 예시적으로 보여주는 도면이다.
도 19는 본 발명의 실시 예에 따른 컴퓨팅 시스템의 어드레스 할당 방법을 예시적으로 보여주는 도면이다.
도 20은 본 발명의 실시 예에 따른 컴퓨팅 시스템의 보안 OS(operating system) 구동 방법을 예시적으로 보여주는 흐름도이다.
도 21은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 패키지를 예시적으로 보여준 도면이다.
도 22는 본 발명의 실시 예 따른 모바일 장치를 예시적으로 보여주는 도면이다.
도 23은 마스터 장치의 슬레이브 장치 접근 관점에서 본 발명의 컴퓨팅 시스템을 설명하기 위한 도면이다.
도 24는 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 도면이다.
도 25는 본 발명의 또 다른 실시 예에 따른 컴퓨팅 시스템(70)을 예시적으로 보여주는 도면이다.
도 26은 도 25에 도시된 온-더-플라이 인크립터에 대한 실시 예를 예시적으로 보여주는 도면이다.
도 27은 본 발명의 실시 예에 따른 암복호 과정을 예시적으로 보여주는 도면이다.
도 28은 도 25에 도시된 온-더-플라이 인크립터에 대한 다른 실시 예를 예시적으로 보여주는 도면이다.
도 29는 본 발명의 실시 예에 따른 시스템 온 칩을 예시적으로 보여주는 도면이다.
도 30은 본 발명의 실시 예에 따른 멀티 계층 버스 구조의 집적회로를 갖는 컴퓨팅 시스템을 예시적으로 보여주는 도면이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
도 1은 본 발명의 개념을 설명하기 위한 컴퓨팅 시스템을 예시적으로 보여주는 도면이다. 도 1을 참조하면, 컴퓨팅 시스템(10)은 집적회로(integrated circuit, IC; 100) 및 그것에 연결된 복수의 메모리들(MEM1, MEM2, MEM3, MEM4; 210, 220, 230, 240)를 포함할 수 있다. 도 1에서는 설명의 편의를 위하여 4개의 메모리들(210 ~ 240)을 도시하지만, 본 발명의 메모리들의 개수가 여기에 제한되지 않는다고 이해되어야 할 것이다.
집적회로(100)는 CPU(central processing unit, 110), 버스(101)에 공통으로 연결된 온-더-플라이 인크립터(on-the-fly encryptor, 120), 복수의 메모리 제어기들(MC1, MC2, MC3, MC4; 131, 132, 133, 134) 를 포함할 수 있다. 실시 예에 있어서, 집적회로(100)는 SoC(system-on-chip)으로 구현될 수 있다.
CPU(110)는 운영 체제(operating system)를 구동함으로써, 집적회로(100)의 동작을 제어하도록 구현될 수 있다. CPU(110)는 인스트럭션에 따라 산술 논리 연산을 수행하거나 데이터 처리를 실행하도록 구현될 수 있다. CPU(110)는, 도시되지 않았지만, 프로그램 카운터, ALU(arithmetic logic unit), 레지스터, 등을 포함할 수 있다.
온-더-플라이 인크립터(120)는 CPU(100)로부터 버스(101)를 통하여 전송된 데이터를 암호화시키거나, 적어도 하나의 메모리 제어기(131/132/133/134)로부터 버스(101)를 통해 전송된 암호화된 데이터를 복호화 시키도록 구현될 수 있다. 실시 예에 있어서, 온-더-플라이 인크립터(120)는 암호(encryption) 알고리즘에 의해 구현될 수 있다.
예를 들어, 암호 알고리즘은 AES(advanced encryption standard), DES(data encryption standard), Triple DES, SEED, HIGHT(HIGh security and light weigHT), ARIA, LEA(Lightweight Encryption Algorithm), 혹은 그와 같은 것 일 수 있다. 실시 예에 있어서, 암호 알고리즘은 블록 암호 모드로 암복호 동작을 수행할 수 있다. 여기서 블록 암호 모드는, ECB(electronic code book) 모드, CBC(cipher block chaining) 모드, CTR 모드, PCBC(propagating cipher block chaining) 모드, 또는 CFB(cipher feedback) 모드, 혹은 그와 같은 것일 수 있다.
실시 예에 있어서, 온-더-플라이 인크립터(120)는 CPU(110)에 대하여 슬레이브(slave) 장치일 수 있다.
실시 예에 있어서, 온-더-플라이 인크립터(120)는 메모리 제어기들(131 ~ 134)에 대하여 마스터(master) 장치일 수 있다.
본 발명의 온-더-플라이 인크립터(120)는 CPU(110)에서 일종의 보안 메모리(secure memory)처럼 인식될 수 있다. 온-더-플라이 인크립터(120)는 보안 메모리 기능을 수행할 수 있는 충분한 어드레스 공간을 할당 받을 수 있다. 이에, 온-더-플라이 인크립터(120)는 의사 보안 메모리(pseudo secure memory)로 지칭될 수 있다.
또한, CPU(110)가 의사 보안 메모리로 기능을 수행하는 온-더-플라이 인크립터(120)에 쓰기 동작을 수행하는 과정은 다음과 같다. CPU(110)는 온-더-플라이 인크립터(120)에 할당된 어드레스를 이용하여 데이터 쓰기 요청을 온-더-플라이 인크립터(120)에 버스(101)를 경유하여 전송할 수 있다. 온-더-플라이 인크립터(120)는 쓰기 요청에 응답하여 데이터를 암호화시키고, 암호화된 데이터(encrypted data)를 대응하는 메모리 제어기에 버스(101)를 경유하여 전송할 수 있다. 암호화된 데이터는 대응하는 메모리의 암호화 데이터 영역(214)에 저장될 수 있다. 한편, 암호화된 데이터가 온-더-플라이 인크립터(120)에 저장되지 않고, 곧바로 메모리의 암호화 데이터 영역(214)에 저장된다는 의미에서, 온-더-플라이(on-the-fly) 라는 용어가 사용되었다는 것이 이해되어야 할 것이다.
또한, CPU(110)가 의사 보안 메모리로 기능을 수행하는 온-더-플라이 인크립터(120)에 읽기 동작을 수행하는 과정은 다음과 같다. CPU(110)는 온-더-플라이 인크립터(120)에 할당된 어드레스를 이용하여 데이터 읽기 요청을 온-더-플라이 인크립터(120)에 버스(101)를 경유하여 전송할 수 있다. 온-더-플라이 인크립터(120)는 읽기 요청에 응답하여 대응하는 메모리 제어기에 메모리 읽기 요청을 전송할 수 있다. 메모리 제어기는 메모리 읽기 요청에 응답하여 암호화 데이터 영역(214)에 저장된 암호화된 데이터를 읽고, 읽혀진 암호화된 데이터를 온-더-플라이 인크립터(120)에 버스(101)를 경유하여 전송할 수 있다. 온-더-플라이 인크립터(120)는 암호화된 데이터를 복호화하고, 복호화된 데이터를 CPU(110)에 버스(101)를 통하여 전송할 수 있다.
한편, CPU(110)의 메모리들(210 ~ 240)에 대한 읽기/쓰기 요청은, 온-더-플라이 인크립터(120)를 경유하지 않고, 대응하는 메모리 제어기들(131 ~ 134)의 제어에 따라 메모리의 비암호화 데이터 영역(212)에 곧바로 수행될 수 있다.
메모리들(210 ~ 240)의 각각은 대응하는 메모리 제어기들(131 ~ 134)에 연결될 수 있다. 실시 예에 있어서, 메모리들(210 ~ 240)과 메모리 제어기들(131 ~ 134)는 DDR(double data rate) 인터페이스에 의해 연결될 수 있다. 한편, 메모리들(210 ~240)과 메모리 제어기들(131 134)의 사이의 연결이 DDR 인터페이스에 한정되지 않는다고 이해되어야 할 것이다.
메모리들(210 ~ 240)의 각각은 CPU(110)의 동작에 필요한 데이터(암호화된 데이터, 비암호화된 데이터)를 저장하도록 구현될 수 있다. 실시 예에 있어서, 메모리들(210 ~ 240)의 각각은 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) 등으로 구현될 수 있다.
실시 예에 있어서, 메모리들(210 ~ 240)의 각각은, 비암호화 데이터를 저장하는 비암호화 데이터 영역(212) 및 암호화 데이터를 저장하는 암호화 데이터 영역(214)을 포함할 수 있다. 실시 예에 있어서, 비암호화 데이터 영역(212) 및 암호화 데이터 영역(214)은 고정될 수 있다. 다른 실시 예에 있어서, 비암호화 데이터 영역(212) 및 암호화 데이터 영역(214)은 가변 될 수 있다.
실시 예에 있어서, 메모리들(210 ~ 240)에 저장되는 데이터는 인터리빙 방식에 의거하여 저장될 수 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템(10)은, CPU(110)과 메인 메모리(200) 사이의 암호화 데이터의 전송 경로와 비암호화 데이터의 전송 경로를 분리함으로써, 성능 저하를 최소화시킬 수 있다.
또한, 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)은 암호화 데이터를 비암호화 데이터와 다른 경로로 전송함으로써, 비암호화 데이터의 전송 관련한 추가적인 레이턴시(latency)를 발생하지 않을 수 있다.
또한, 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)은 인터리빙 기능을 지원하면서 데이터를 암호화시키기 위해 단지 하나의 온-더-플라이 인크립터(120)를 사용함으로써, 일반적인 그것과 비교하여 상대적인 칩 사이즈를 줄일 수 있다.
또한, 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)은 전체적인 성능에 영향을 주지 않으면서 일부 데이터에 대한 암호화를 진행함으로써, 데이터 관련 보안 기능을 향상시킬 수 있다.
도 2는 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)의 어드레스 공간에 대한 실시 예를 보여주는 도면이다. 도 2를 참조하면, 시스템 어드레스 공간(300)은, 의사 보안 메모리(pseudo secure memory; PSM) 어드레스 공간(310) 및 인터리빙된 메모리 어드레스 공간(320)을 포함할 수 있다. 실시 예에 있어서, 시스템 어드레스 공간(300)은 CPU(110, 도 1 참조)가 바라보는 논리 어드레스(logical address) 공간일 수 있다.
의사 보안 메모리 어드레스 공간(310)은 온-더-플라이 인크립터 영역(312)을 포함할 수 있다. 의사 보안 메모리 어드레스 공간(310)은 온-더-플라이 인크립터(120, 도 1 참조)에 할당된 어드레스 공간으로써, CPU(110, 도 1 참조)에 의해 메모리 공간처럼 인식될 수 있다.
인터리빙된 메모리 어드레스 공간(320)은, 비암호화 데이터 영역(322) 및 암호화 데이터 영역(324)을 포함할 수 있다. 실시 예에 있어서, 인터리빙된 메모리 어드레스 공간(320)에 대응하는 어드레스들은, 메모리들(MEM1 ~ MEM4)을 인터리빙 시키도록 할당될 수 있다.
실시 예에 있어서, 암호화 데이터 영역(324)의 크기는 온-더-플라이 인크립터 영역(312)의 크기에 대응하도록 설정될 수 있다. 예를 들어, 암호화 데이터 영역(324)의 크기는 온-더-플라이 인크립터 영역(312)의 크기와 동일할 수 있다.
실시 예에 있어서, 암호화 데이터 영역(324)은 고정되거나 혹은 가변 될 수 있다.
도 3은 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)에서 보안을 필요로 하는 데이터(이하, 보안 데이터(secure data))를 쓰는 과정을 예시적으로 보여주는 도면이다. 도 1 내지 도 3을 참조하면, 보안 데이터는 다음과 같은 과정을 통하여 쓰여 진다.
CPU(110)은 의사 보안 메모리에 비암호화 데이터를 쓰도록 쓰기 요청을 온-더-플라이 인크립터(120)에 전송할 수 있다. 여기서 쓰기 요청과 함께 전송된 어드레스는 온-더-플라이 인크립터 영역(312) 내의 어드레스이다. 온-더-플라이 인크립터(120)는 CPU(110)로부터 쓰기 요청, 어드레스, 비암호화 데이터를 입력 받고, 암호 알고리즘에 따라 비암호화 데이터를 암호화시키고, 어드레스를 암호화 데이터 영역(324)의 어드레스로 변환시킬 수 있다. 메모리(MEM1, 도 1 참조)는 온-더-플라이 인크립터(120)의 쓰기 요청에 따라 대응하는 공간에 암호화된 데이터를 저장할 수 있다.
도 4는 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)에서 보안 데이터를 읽는 과정을 예시적으로 보여주는 도면이다. 도 1 내지 도 4를 참조하면, 보안 데이터는 다음과 같은 과정을 통하여 읽혀진다.
CPU(110)은 의사 보안 메모리로부터 비암호화 데이터를 읽도록 읽기 요청을 온-더-플라이 인크립터(120)에 전송할 수 있다. 여기서 읽기 요청과 함께 전송된 어드레스는 온-더-플라이 인크립터 영역(312) 내의 어드레스이다. 온-더-플라이 인크립터(120)는 CPU(110)로부터 읽기 요청, 및 어드레스를 입력 받고, 어드레스를 암호화 데이터 영역(324)의 어드레스로 변환시킬 수 있다. 설명의 편의를 위하여 변환된 어드레스가 암호화 데이터 영역(324)의 제 1 메모리(MEM1)를 지시한다고 가정하겠다. 제 1 메모리(MEM1)는 읽기 요청에 응답하여 암호화 데이터를 읽고, 온-더-플라이 인크립터(120)로 전송할 수 있다. 온-더-플라이 인크립터(120)는 암호화 데이터를 입력 받고, 암호 알고리즘에 따라 암호화 데이터를 복호화시킬 수 있다. 복호화된 데이터, 즉, 비암호화 데이터는 CPU(110)으로 전송될 수 있다.
도 5는 본 발명의 실시 예에 따른 온-더-플라이 인크립터(120)에서 어드레스 변환 과정에 대한 실시 예를 보여주는 도면이다. 도 5를 참조하면, 온-더-플라이 인크립터(120)는 온-더-플라이 인크립터 어드레스에 옵셋 어드레스를 더함으로써, 암호화 데이터 어드레스를 발생할 수 있다. 여기서 온-더-플라이 인크립터 어드레스는 CPU(110)으로부터 온-더-플라이 인크립터(120)에 접근하는데 필요한 어드레스이다. 또한, 암호화 데이터 어드레스는 도 2 내지 도 5에 도시된 메모리들(MEM1 ~ MEM4)에 의해 구성된 암호화 데이터 영역(324)에 포함된 어드레스이다.
실시 예에 있어서, 옵셋 어드레스(offset address)는 칩 제조자에 의해 고정될 수 있다. 다른 실시 예에 있어서, 옵셋 어드레스는 소프트웨어에 의해 가변 될 수 있다.
한편, 본 발명의 온-더-플라이 인크립터(120)의 어드레스 변환 동작에 여기에 제한되지 않을 것이다. 본 발명의 온-더-플라이 인크립터(120)는 베이스 어드레스 개념을 이용하여 어드레스 변환을 수행할 수 있다.
도 6은 본 발명의 실시 예에 따른 온-더-플라이 인크립터(120)에서 어드레스 변환 과정에 필요한 베이스 어드레스(base address)를 예시적으로 보여주는 도면이다. 도 6을 참조하면, 언맵핑 영역들(311) 사이에 위치한 온-더-플라이 인크립터 영역(312)이 존재하고, 온-더-플라이 인크립터 영역(312)을 시작하는 어드레스가 온-더-플라이 인크립터 베이스 어드레스이다. 또한, 비암호화 데이터 영역(322)과 언맵핑 영역(301) 사이의 암호화 데이터 영역(324)이 존재하고, 암호화 데이터 영역(324)을 시작하는 어드레스가 암호화 데이터 베이스 어드레스이다.
도 7은 본 발명의 실시 예에 따른 온-더-플라이 인크립터(120)에서 어드레스 변환 과정에 대한 다른 실시 예를 보여주는 도면이다. 도 7를 참조하면, 온-더-플라이 인크립터(120)는 온-더-플라이 인크립터 어드레스에 온-더-플라이 인크립터 베이스 어드레스를 빼고, 이렇게 뺀 어드레스에 암호화 데이터 베이스 어드레스를 더함으로써, 암호화 데이터 어드레스를 발생할 수 있다.
한편, 본 발명의 실시 예에 따른 컴퓨팅 시스템은 암호화 데이터 영역의 접근을 제어하는 접근 제어 로직(access control logic)을 더 포함할 수 있다.
도 8은 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템(20)을 예시적으로 보여주는 도면이다. 도 8을 참조하면, 컴퓨팅 시스템(20)은 도 1의 그것과 비교하여 접근 제어 로직들(141 ~ 144)을 더 포함하는 집적회로(100a)로 구현될 수 있다.
접근 제어 로직들(141 ~ 144)의 각각은 대응하는 메모리들(MEM1 ~ MEM4; 210, 220, 230, 240)의 암호화 데이터 영역에 대한 CPU(110)의 접근을 제어할 수 있다. 예를 들어, 접근 제어 로직들(141 ~ 144) 각각은 암호화 데이터 영역에 대한 CPU(110)의 직접적인 접근을 차단하도록 구현될 수 있다. 접근 제어 로직(141 ~144) 각각은 암호화 데이터 영역에 대하여 온-더-플라이 인크립터(120a)의 접근만을 허용하도록 구현될 수 있다.
실시 예에 있어서, 접근 제어 로직들(141 ~ 144) 각각은 ARM의 TZASC 제품으로 구현될 수 있다.
한편, 도 8에 도시된 접근 제어 로직들(141 ~144)의 개수는 메모리들(210, 220, 230, 240)에 연결된 메모리 제어기들(MC1 ~ MC4; 131 ~ 134)의 개수이다. 하지만, 본 발명의 접근 제어 로직의 개수가 여기에 제한될 필요는 없다. 본 발명의 컴퓨팅 시스템(20)은 하나의 접근 제어 로직에 연결된 복수의 메모리 제어기들을 포함하도록 구현될 수 있다.
한편, 도 8에 도시된 접근 제어 로직들(141 ~144)은 대응하는 메모리 제어기들(131 ~ 134)의 전단에 배치된다. 하지만, 본 발명이 여기에 제한될 필요는 없다. 접근 제어 로직들의 각각은 대응하는 메모리 제어기들의 내부에 존재할 수도 있다.
한편, 도 1 내지 도 8에 컴퓨팅 시스템은 복수의 메모리 제어기들(MC1 ~ MC4; 131 ~134)을 도시한다. 하지만, 본 발명의 컴퓨팅 시스템이 여기에 제한될 필요는 없다. 본 발명의 컴퓨팅 시스템은 하나의 메모리 제어기에 연결된 복수의 메모리들(MEM1 ~ MEM4)을 포함하도록 구현될 수 있다.
한편, 본 발명의 컴퓨팅 시스템은 다양한 기능을 수행하는 IP들(intellectual properties)을 더 포함할 수 있다.
도 9는 본 발명의 실시 예에 따른 컴퓨팅 시스템(30)을 예시적으로 보여주는 도면이다. 도 9를 참조하면, 컴퓨팅 시스템(30)은, 버스(101b)에 연결된 CPU(110b), 온-더-플라이 DRAM 하드웨어(120b), DRAM 제어기들(131b ~ 134b), 내부 SRAM(iRAM; 141), 내부 ROM(iROM, 142), GPU(graphic processing unit; 143), 멀티미디어 칩(144), DMA(direct memory access) 칩(145), 모뎀(146), GNSS(global navigation satellite system) 칩(147) 등을 포함하는 SOC(system-on-chip; 100b) 및 복수의 DRAM들(210b, 220b, 230b, 240b)을 포함할 수 있다.
버스(101b)에 연결된 CPU(110b), 온-더-플라이 DRAM 하드웨어(120b), DRAM 제어기들(131b ~ 134b), DRAM들(210b, 220b, 230b, 240b)의 각각은, 도 1에 도시된 CPU(110), 온-더-플라이 인크립터(120), 메모리 제어기들(131 ~ 134), 및 메모리들(210, 220, 230, 240)과 동일하게 구현될 수 있다. 따라서 이것들에 대한 자세한 설명은 생략 하겠다.
SOC(110b)는 다양한 기능을 수행하는 IP들, 즉, 내부 RAM(iRAM, 141), 내부 ROM(iROM, 142), GPU(143), 멀티미디어 칩(144), DMA 칩(145), 모뎀(146), GNSS 칩(147) 등을 포함할 수 있다.
내부 RAM(141)는 CPU(110b)의 동작시 필요한 데이터를 임시로 저장하도록 구현될 수 있다. 예를 들어, 내부 RAM(141)은 SRAM(synchronous random access memory)로 구현될 수 있다. 내부 ROM(142)은 CPU(110b)의 운영 시스템/프로그램 관련 코드(인스트럭션) 등을 저장하도록 구현될 수 있다. 예를 들어, 내부 ROM(142)는 비휘발성 메모리로 구현될 수 있다. GPU(143)은 그래픽 전용으로 처리하기 위한 칩일 수 있다. 멀티미디어 칩(144)은 멀티미디어 데이터를 전용으로 처리하기 위한 칩일 수 있다. DMA 칩(145)은 CPU(110b)을 경유하지 않고, 직접 DRAM들(210b, 220b, 230b. 240b)을 접근하도록 구현될 수 있다. 모뎀(146)은 외부와 유무선 통신을 수행하도록 구현될 수 있다. GNSS 칩(147)은 위성 항법 데이터를 수신하고, 컴퓨팅 시스템(30)의 위치를 판별하도록 구현될 수 있다. 한편, 본 발명의 SOC(110b)는 도 9에 도시된 IP들 중 적어도 어느 하나를 제거하거나, 도 9에 도시되지 않은 적어도 하나의 IP를 추가할 수도 있다고 이해되어야 할 것이다. 한편, 본 발명의 SOC(110b)는 도 9에 도시된 IP들 중 적어도 2개가 하나의 칩으로 구현될 수 있다고 이해되어야 할 것이다.
도 10은 도 9의 컴퓨팅 시스템(30)에서 시스템 어드레스 공간을 예시적으로 보여주는 도면이다. 도 10을 참조하면, 시스템 어드레스 공간(400)은, 언맵핑 영역(401), 내부 ROM 어드레스 공간(402), 내부 RAM 어드레스 공간(404), 의사 보안 메모리 어드레스 공간(410), 및 인터리빙된 DRAM 어드레스 공간(420)을 포함할 수 있다.
인터리빙된 DRAM 어드레스 공간(420)은 암호화 데이터 영역(424)을 포함할 수 있다. 여기서 암호화 데이터 영역(424)의 크기는 의사 보안 메모리 어드레스 공간(410)의 크기에 대응할 수 있다.
도 10에 도시된 바와 같이, 시스템 어드레스 공간(400)은 복수의 IPs 각각에 할당된 어드레스들을 포함할 수 있다. 여기서 할당된 어드레스의 최소 크기는 캐쉬(cache) 단위일 수 있다. 실시 예에 있어서, 캐쉬 단위는 64 바이트일 수 있다. 한편, 본 발명의 캐쉬 단위가 여기에 제한되지 않는다고 이해되어야 할 것이다.
도 11은 도 9의 컴퓨팅 시스템(30)에서 암호화 데이터 영역(424)에 암호화 데이터를 쓰는 과정을 예시적으로 보여주는 도면이다. 도 9 내지 도 11을 참조하면, 암호화 데이터를 쓰는 과정은 다음과 같이 진행될 수 있다.
CPU(110b)는 의사 보안 메모리에 대한 데이터 쓰기 요청을 발행할 수 있다. 이때 발행된 쓰기 요청 및 쓰기 데이터는 버스(101b)를 경유하여 온-더-플라이 DRAM 암호 하드웨어(120b)에 전송될 수 있다. 여기서 쓰기 데이터는 비암호화 데이터이다. 온-더-플라이 DRAM 암호 하드웨어(120b)는 비암호화 데이터(혹은 평문 데이터(plain data))를 입력 받고, 비암호화 데이터를 암호 알고리즘에 따라 암호화 시키고, 암호화 데이터를 암호화 데이터 영역(424)에 저장하도록 대응하는 DRAM에 대한 쓰기 요청 및 쓰기 어드레스를 발생할 수 있다. 여기서 쓰기 어드레스는 암호화 데이터 영역(424)을 지시하는 어드레스이다. 대응하는 DRAM은 쓰기 요청 및 쓰기 어드레스를 입력 받고, 암호화 데이터를 저장할 수 있다.
도 12는 도 9의 컴퓨팅 시스템(30)에서 암호화 데이터 영역(424)으로부터 암호화 데이터를 읽는 과정을 예시적으로 보여주는 도면이다. 도 9 내지 도 12를 참조하면, 암호화 데이터를 읽는 과정은 다음과 같이 진행될 수 있다.
CPU(110b)는 의사 보안 메모리에 대한 데이터 읽기 요청을 발행할 수 있다. 온-더-플라이 DRAM 암호 하드웨어(120b)는 읽기 요청을 입력 받고, 암호화 데이터를 암호화 데이터 영역(424)으로부터 읽도록 대응하는 DRAM에 대한 읽기 요청 및 읽기 어드레스를 발생할 수 있다. 여기서 읽기 어드레스는 암호화 데이터를 저장하는 암호화 데이터 영역(424)을 지시하는 어드레스이다. 대응하는 DRAM은 읽기 요청 및 읽기 어드레스를 입력 받고, 암호화 데이터를 읽고, 읽혀진 데이터를 버스(101b)를 경유하여 온-더-플라이 DRAM 암호 하드웨어(120b)로 전송할 수 있다. 온-더-플라이 DRAM 암호 하드웨어(120b)는 암호화 데이터를 입력 받고, 암호화 데이터를 암호 알고리즘에 다라 복호화시키고, 복호화된 데이터, 즉 비암호화 데이터를 버스(101b)를 경유하여 CPU(110b)로 전송할 수 있다.
도 13은 도 9의 컴퓨팅 시스템(30)에서 베이스 어드레스 개념을 적용한 실시 예를 예시적으로 보여주는 도면이다. 도 13을 참조하면, 시스템 어드레스 공간(400)은 내부 RAM 어드레스 공간(404), 의사 보안 메모리 어드레스 공간(410), 암호화 데이터 영역(424), 나머지 DRAM 영역(426)을 포함할 수 있다.
의사 보안 메모리 어드레스 공간(410)과 암호화 데이터 영역(424) 사이에서 암호화 데이터 및 비암호화 데이터가 서로 교환 될 수 있다. 즉, 의사 보안 메모리 어드레스 공간(410)에 저장된 비암호화 데이터는 온-더-플라이 DRAM 암호 하드웨어(120b)에 의해 암호화되고, 암호화 데이터는 암호화 데이터 영역(424)에 저장될 수 있다. 또한, 암호화 데이터 영역(424)에 저장된 암호화 데이터는 온-더-플라이 DRAM 암호 하드웨어(120b)에 의해 복호화되어, 복호화된 데이터, 즉 비암호화 데이터는 의사 보안 메모리 어드레스 공간(410)에 저장될 수 있다.
한편, 의사 보안 메모리 어드레스 공간(410)과 암호화 데이터 영역(424)의 어드레스 맵핑 관계는, 온-더-플라이 DRAM 암호 하드웨어(120b)의 어드레스 변환 동작에 의해 결정될 수 있다. 도 13에 도시된 바와 같이, 의사 보안 메모리 어드레스 공간(410)을 시작하는 어드레스는 의사 보안 메모리 베이스 어드레스이고, 암호화 데이터 영역(424)을 시작하는 어드레스는 암호화 데이터 베이스 어드레스이다. 어드레스 변환 동작은 의사 보안 메모리 베이스 어드레스와 암호화 베이스 어드레스를 이용하여 수행될 수 있다.
도 14는 도 9의 컴퓨팅 시스템(30)에서 온-더-플라이 DRAM 암호 하드웨어(120b)의 어드레스 변환을 예시적으로 보여주는 도면이다. 도 9 내지 도 14를 참조하면, 온-더-플라이 DRAM 암호 하드웨어(120b)는, 암호화 데이터 어드레스는 의사 보안 메모리 어드레스에서 의사 보안 메모리 베이스 어드레스를 빼고, 이렇게 빼진 어드레스에 암호화 데이터 베이스 어드레스를 더함으로써, 암호화 데이터 어드레스를 발생할 수 있다. 한편, 본 발명의 온-더-플라이 DRAM 암호 하드웨어(120b)의 어드레스 변환이 여기에 제한되지 않는다고 이해되어야 할 것이다.
한편, 본 발명의 컴퓨팅 시스템은 데이터의 경로(path) 관점에서 아래와 같이 설명될 수 있다.
도 15는 본 발명의 실시 예에 따른 컴퓨팅 시스템(40)의 데이터 경로를 예시적으로 보여주는 도면이다. 도 15를 참조하면, 컴퓨팅 시스템(40)은 CPU (41)로부터 출력된 비암호화 데이터를 그대로 전송하는 제 1 경로와 CPU(41)로부터 출력된 비암호화 데이터를 암호화시킨 암호화 데이터를 전송하는 제 2 경로를 분리하도록 구현될 수 있다.
제 1 경로에서, CPU(41)은 제 1 마스터이고, 메모리 제어기(MC; 44)는 제 1 슬레이브 이다. 메모리 제어기(44)는 CPU(41)의 제어에 따라 비암호화 데이터를 메모리(MEM; 46)의 비암호화 데이터 영역(46-2)에 저장시키거나, 비암호화 데이터 영역(46-2)로부터 비암호화 데이터를 읽을 수 있다. 실시 예에 있어서, CPU(41)과 메모리 제어기(44) 사이에서 시스템 버스를 경유하여 비암호화 데이터가 입출력 될 수 있다.
제 2 경로에서, CPU(41)는 제 1 마스터이고, 온-더-플라이 인크립터(42)는 제 2 슬레이브이면서 동시에 제 2 마스터이고, 메모리 제어기(44)는 제 3 슬레이브일 수 있다. 온-더-플라이 인크립터(42)는 CPU(41)의 제어에 따라 비암호화 데이터를 암호화시키거나, 암호화 데이터를 복호화시킬 수 있다. 또한, 메모리 제어기(44)는 온-더-플라이 인크립터(42)의 제어에 따라 암호화 데이터를 메모리(46)의 암호화 데이터 영역(46-4)에 저장시키거나 암호화 데이터 영역(46-4)으로부터 암호화 데이터를 읽을 수 있다. 실시 예에 있어서, CPU(41)과 온-더-플라이 인크립터(42) 사이에서 시스템 버스를 경유하여 비암호화 데이터가 입출력 되거나, 온-더-플라이 인크립터(42)와 메모리 제어기(44) 사이에서 시스템 버스를 경유하여 암호화 데이터가 입출력
한편, 본 발명의 컴퓨팅 시스템은 데이터 경로에 스크램블 기능을 추가할 수 있다.
도 16은 본 발명의 실시 예에 따른 컴퓨팅 시스템(50)에서 스크램블 기능을 추가한 데이터 경로를 예시적으로 보여주는 도면이다. 도 16을 참조하면, 컴퓨팅 시스템(50)은 비암호화 데이터를 스크램블하여 전송하는 경로와 암호화 데이터를 전송하는 경로를 분리하도록 구현될 수 있다.
실시 예에 있어서, 비암호화 데이터는 메모리 제어기(MC; 54)의 스크램블/디스크램블 로직(54-1)에 의해 스크램블 될 수 있다. 스크램블된 데이터는 메모리(MEM; 56)의 비암호화 데이터 영역(56-2)에 저장될 수 있다. 또한, 비암호화 데이터 영역(56-2)에 저장된 스크램블 데이터는 스크램블/디스크램블 로직(54-1)에 의해 디스크램블 될 수 있다. 디스크램블 데이터는 비암호화 데이터로 CPU로 출력될 수 있다.
한편, 암호화 데이터의 경로는 도 15의 그것과 동일할 수 있다. 여기서는 자세한 설명을 생략하겠다.
한편, 본 발명의 컴퓨팅 시스템은 버스를 개입시켜 노멀 데이터(normal data, 혹은 “unsecure data”)/보안 데이터(secure data)의 경로 관점에서 아래와 같이 설명할 수 있다. 여기서 노멀 데이터는 암호화가 불필요한 데이터이고, 보안 데이터는 암호화가 필요한 데이터이다.
도 17은 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 노멀/ 보안 데이터의 쓰기 경로를 예시적으로 보여주는 도면이다. 도 17을 참조하면, 컴퓨팅 시스템은 노멀 데이터를 쓰기 위한 경로와 보안 데이터를 쓰기 위한 경로를 분리할 수 있다.
우선, 노멀 데이터의 쓰기 경로는 다음과 같다. CPU에서 출력된 노멀 데이터는 버스를 경유하여 메모리 제어기(MC)로 전송될 수 있다. 메모리 제어기(MC)는 노멀 데이터를 대응하는 메모리(MEM)의 노멀 데이터 영역에 저장시킬 수 있다.
다음으로, 보안 데이터의 쓰기 경로는 다음과 같다. CPU에서 출력된 보안 데이터는 버스를 경유하여 온-더-플라이 인크립터에 전송될 수 있다. 여기서 노멀 데이터는 온-더-플라이 인크립터는 보안 데이터를 암호 알고리즘에 따라 암호화시킬 수 있다. 암호화 데이터는 버스를 경유하여 메모리 제어기(MC)에 전송될 수 있다. 메모리 제어기(MC)는 암호화 데이터를 대응하는 메모리(MEM)의 암호화 데이터 영역에 저장시킬 수 있다.
도 18은 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 노멀/보안 데이터의 읽기 경로를 예시적으로 보여주는 도면이다. 도 18을 참조하면, 컴퓨팅 시스템은 보안 데이터를 읽기 위한 경로와 노멀 데이터를 읽기 위한 경로를 분리할 수 있다.
우선, 노멀 데이터의 읽기 경로는 다음과 같다. 메모리 제어기(MC)는 노멀 데이터에 대한 읽기 요청에 응답하여 메모리(MEM)의 노멀 데이터 영역에 저장된 노멀 데이터를 읽고, 읽혀진 데이터를 버스를 경유하여 CPU로 전송할 수 있다. 여기서 읽기 요청은 CPU로부터 버스를 경유하여 수신될 수 있다.
다음으로, 보안 데이터의 읽기 경로는 다음과 같다. 온-더-플라이 인크립터는 보안 데이터에 대한 읽기 요청에 응답하여, 메모리 읽기 요청을 버스를 경유하여 메모리 제어기(MC)에 전송할 수 있다. 메모리 제어기(MC)는 메모리 읽기 요청에 응답하여 메모리(MEM)의 암호화 데이터 영역에 저장된 암호화 데이터를 읽고, 읽혀진 암호화 데이터를 버스를 경유하여 온-더-플라이 인크립터에 전송할 수 있다. 온-더-플라이 인크립터는 암호화 데이터를 암호 알고리즘에 따라 복호화시키고, 복호화된 데이터, 즉 보안 데이터를 버스를 경유하여 CPU로 전송할 수 있다.
도 19는 본 발명의 실시 예에 따른 컴퓨팅 시스템의 어드레스 할당 방법을 예시적으로 보여주는 도면이다. 도 19를 참조하면, 어드레스 할당 방법은, 온-더-플라이 인크립터 어드레스를 할당하는 단계(S110), 및 온-더-플라이 인크립터 어드레스에 대응하는 암호화 데이터 어드레스를 할당하는 단계(S120)를 포함할 수 있다. 여기서 암호화 데이터 어드레스는 칩 제조자에 의해 고정되거나 칩 사용자에 의해 가변 될 수 있다.
도 20은 본 발명의 실시 예에 따른 컴퓨팅 시스템의 보안 OS(operating system) 구동 방법을 예시적으로 보여주는 흐름도이다. 도 20을 참조하면, 보안 OS 구동 방법은 다음과 같다. 내부의 ROM(iROM)에 저장된 보안 OS가 읽혀질 수 있다(S210). 읽혀진 보안 OS는 온-더-플라이 인크립터 어드레스를 이용하여 메인 메모리(MEM)의 암호화 데이터 영역에 로딩될 수 있다(S220). CPU는 온-더-플라이 인크립터 어드레스를 이용하여 암호화 데이터 영역의 보안 OS를 실행할 수 있다(S230).
한편, 본 발명의 컴퓨팅 시스템은 POP(package on package) 형태로 구현될 수 있다.
도 21은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 패키지를 예시적으로 보여준 도면이다. 도 21을 참조하면, 컴퓨팅 시스템 패키지(1000)는 SOC(1100), 및 SOC(1100)의 상부에 차례로 스택된 DRAM 칩들(1210, 1220, 1230, 1240)을 포함할 수 있다. 여기서 SOC(1100)는 도 9에 도시된 SOC(100b)와 동일하게 구현될 수 있다. 또한, 스택된 DRAM 칩들(1210, 1220, 1230, 1240)은 각각 도 9에 도시된 DRAM들(210b, 220b, 230b, 240b)에 동일하게 구현될 수 있다.
한편, 본 발명의 컴퓨팅 시스템은 모바일 장치에 적용 가능하다.
도 22는 본 발명의 실시 예 따른 모바일 장치(2000)를 예시적으로 보여주는 도면이다. 도 22를 참조하면, 모바일 장치(2000)는 프로세서(AP/ModAP, 2100), 버퍼 메모리(2200), 디스플레이/터치 모듈(2300) 및 저장 장치(2400)를 포함할 수 있다.
프로세서(2100)는 모바일 장치(2000)의 전반적인 동작 및 외부와의 유선/무선 통신을 제어하도록 구현될 수 있다. 예를 들어, 프로세서(2100)는 어플리케이션 프로세서(AP, application processor), 통합 모뎀 어플리케이션 프로세서(ModAP) 등 일 수 있다.
프로세서(2100)는 보안 칩(2120) 및 접근 제어 로직(2140)을 포함할 수 있다.
보안 칩(2120)은, 소프트웨어 및/혹 변조 방지 하드웨어(tamper resistant hardware)로 구성되고, 높은 수준의 보안을 허용하고, 프로세서(2100)의 TEE(trusted execution environment)에 협력하여 작업할 수 있다.
보안 칩(2120)은 운영 체제인 Native OS(operation system), 내부의 데이터 저장소인 보안 저장 장치, 보안 칩(1020)에 접근권을 제어하는 접근 제어 블록, 오너십 관리(ownership management), 키 관리(key management), 디지털 서명(digital signature), 암호/복호 등을 수행하는 보안 기능 블록과 보안 칩의 펌웨어를 업데이트하기 위한 펌웨어 업데이트 블록을 포함할 수 있다. 보안 칩(2120)은, 예를 들어, UICC(universal IC card, 예, USIM, CSIM, ISIM), SIM(subscriber identity module) 카드, eSE(embedded secure elements), MicroSD, Stickers 등 일 수 있다.
접근 제어 로직(2140)은 버퍼 메모리(2200)의 암호화 데이터 영역에 대한 접근을 제어하도록 구현될 수 있다. 접근 제어 로직(2140)은 도 8에 도시된 접근 제어 로직(141 ~ 144)과 동일한 기능을 수행하거나 동일한 구성으로 구현될 수 있다.
버퍼 메모리(2200)는 모바일 장치(2000)의 처리 동작 시 필요한 데이터를 임시로 저장하도록 구현될 수 있다. 실시 예에 있어서, 버퍼 메모리(2200)는 DRAM, SDRAM, MRAM 등으로 구현될 수 있다. 버퍼 메모리(2200)는 비암호화 데이터 영역과 암호화 데이터 영역을 포함할 수 있다. 여기서 암호화 데이터 영역은 보안 칩(2120)에 의해 암호화된 데이터를 저장할 수 있다.
디스플레이/터치 모듈(2300)은 프로세서(2100)에서 처리된 데이터를 디스플레이 하거나, 터치 패널로부터 데이터를 입력 받도록 구현될 수 있다.
저장 장치(2400)는 사용자의 데이터를 저장하도록 구현될 수 있다. 저장 장치(2400)는 eMMC(embedded multimedia card), SSD(solid state drive), UFS(universal flash storage) 등 일 수 있다. 저장 장치(2400)는 적어도 하나의 비휘발성 메모리 장치를 포함할 수 있다.
비휘발성 메모리 장치는, 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND; VNAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory: RRAM), 상변화 메모리(Phase-Change Memory: PRAM), 자기저항 메모리(Magnetoresistive Random Access Memory: MRAM), 강유전체 메모리(Ferroelectric Random Access Memory: FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory: STT-RAM) 등이 될 수 있다.
또한, 비휘발성 메모리 장치는 3차원 어레이 구조(three-dimensional array structure)로 구현될 수 있다. 본 발명의 실시 예로서, 3차원 메모리 어레이는, 실리콘 기판 및 메모리 셀들의 동작에 연관된 회로의 위에 배치되는 활성 영역을 갖는 메모리 셀들의 어레이들의 하나 또는 그 이상의 물리 레벨들에 모놀리식으로(monolithically) 형성될 수 있다. 메모리 셀들의 동작에 연관된 회로는 기판 내에 또는 기판 위에 위치할 수 있다. 모놀리식(monolithical)이란 용어는, 3차원 어레이의 각 레벨의 층들이 3차원 어레이의 하위 레벨의 층들 위에 직접 증착 됨을 의미한다.
본 발명의 개념에 따른 실시 예로서, 3차원 메모리 어레이는 수직의 방향성을 가져, 적어도 하나의 메모리 셀이 다른 하나의 메모리 셀 위에 위치하는 수직 NAND 스트링들을 포함한다. 적어도 하나의 메모리 셀은 전하 트랩 층을 포함한다. 각각의 수직 NAND 스트링은 메모리 셀들 위에 위치하는 적어도 하나의 선택 트랜지스터를 포함할 수 있다. 적어도 하나의 선택 트랜지스터는 메모리 셀들과 동일한 구조를 갖고, 메모리 셀들과 함께 모놀리식으로 형성될 수 있다.
3차원 메모리 어레이가 복수의 레벨들로 구성되고, 레벨들 사이에 공유된 워드 라인들 또는 비트 라인들을 갖는다. 3차원 메모리 어레이에 적합한 구성은, 삼성전자에서 출원하였으며, 이 출원의 참고문헌으로 결합된 US 7,679,133, US 8,553,466, US 8,654,587, US 8,559,235, 및 US 2011/0233648에 설명될 것이다. 본 발명의 비휘발성 메모리 장치(NVM)는 전하 저장층이 전도성 부유 게이트로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(charge trap flash; CTF)에도 모두 적용 가능하다.
본 발명의 실시 예에 따른 모바일 장치(2000)는 보안/노멀 데이터 경로를 분리함으로써, 전체적인 성능을 유지하면서, 보안 기능을 크게 향상시킬 수 있다.
한편, 본 발명의 컴퓨팅 시스템은 마스터의 접근 관점에서 아래와 같이 설명할 수 있다.
도 23은 마스터 장치의 슬레이브 장치 접근 관점에서 본 발명의 컴퓨팅 시스템을 설명하기 위한 도면이다. 도 23을 참조하면, CPU는 온-더-플라이 인크립터와 메모리 메모리에 마스터이고, 온-더-플라이 인크립터는 CPU에 대하여 슬레이브이면서 동시에 메인 메모리에 마스터이고, 메인 메모리는 CPU 및 온-더-플라이 인크립터에 대하여 슬레이브이다.
CPU는 의사 보안 메모리 어드레스(ADDR_PSM)를 이용하여 온-더-플라이 인크립터에 접근하도록 구현될 수 있다. 의사 보안 메모리 어드레스(ADDR_PSM) 공간에 보안 데이터가 저장되는 것처럼 보일 수 있다. 여기서 의사 보안 메모리 어드레스 공간은 메인 메모리의 보안 영역에 대응할 수 있다.
또한, CPU는 노멀 어드레스(ADDR)를 이용하여 메인 메모리의 비암호화 데이터 영역, 즉 비보안 영역에 접근하도록 구현될 수 있다.
온-더-플라이 인크립터는 메인 메모리 어드레스(ADDR_MM)를 이용하여 메인 메모리의 암호화 데이터 영역, 즉 보안 영역에 접근하도록 구현될 수 있다. 의사 보안 메모리 어드레스 공간에 저장된 비암호화 데이터는 온-더-플라이 인크립터에 의해 암호화되고, 암호화 데이터는 메인 메모리의 암호화 데이터 영역에 저장될 수 있다.
한편, 도 1 내지 도 23에서 암호화 기능을 수행하는 온-더-플라이 인크립터는 CPU의 외부에 존재하였다. 하지만, 본 발명이 여기에 제한된 필요는 없다. 온-더-플라이 인크립터는 CPU 내부에 존재할 수도 있다.
도 24는 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템(60)을 예시적으로 보여주는 도면이다. 도 24를 참조하면, 컴퓨팅 시스템(60)은 CPU(61) 및 메인 메모리(62)를 포함할 수 있다. CPU(61)는 실시간으로 데이터를 암호화시키거나 복호화시키는 온-더-플라이 인크립터(61-2)를 포함할 수 있다. 온-더-플라이 인크립터(61-2)는 내부적으로 의사 보안 메모리로 바라보도록 설계될 수 있다. 보안이 필요한 데이터는 온-더-플라이 인크립터(61-2)에 의해 암호화/복호화 되어 메인 메모리(62)와 입출력될 수 있다. 그 밖의 노멀 데이터는 정상적으로 메인 메모리(62)와 입출력될 수 있다.
실시 예에 있어서, 온-더-플라이 인크립터(61-2)는 전용 데이터 패스를 통하여 메인 메모리(62)에 연결될 수 있다. 실시 예에 있어서, 온-더-플라이 인크립터(61-2)는 메모리 제어기(미도시)를 경유하여 메인 메모리(62)에 데이터를 저장하거나 메인 메모리로부터 데이터를 읽을 수 있다.
본 발명은 성능 저하를 최소로 하기 위해, 암호화되는 Data와 암호화되지 않는 데이터의 이동 경로를 완전히 분리하고, 이를 위해, 주소 공간 상에 가상의 보안 메모리를 만들고 CPU가 그 가상 보안 메모리에 데이터를 쓰면 하드웨어가 자동으로 데이터를 암호화하여 DRAM의 지정된 영역에 저장하고, CPU가 데이터를 읽으면 자동으로 DRAM의 지정된 영역에서 읽어서 복호화하여 CPU에 전달할 수 있다. 이로써, 전체 시스템 성능에는 영향을 주지 않으면서, 일부 데이터만 암호화로 보호할 수 있다.
한편, 본 발명의 실시 예에 따른 컴퓨팅 시스템은 트랜잭션들(transactions)을 처리하는 온-더-플라이 인크립터로 구현될 수 있다.
도 25는 본 발명의 또 다른 실시 예에 따른 컴퓨팅 시스템(70)을 예시적으로 보여주는 도면이다. 도 25를 참조하면, 컴퓨팅 시스템(70)은 CPU(71), 온-더-플라이 인크립터(72), 및 복수의 DRAMs(74)을 포함할 수 있다. 온-더-플라이(72)는 CPU(71)/DRAMs(74)로부터의 트랜잭션들(암호화/복호화 동작들)을 처리하도록 구현될 수 있다. 여기서 트랜잭션들은 CPU(71)에서 발행될 수 있다. 실시 예에 있어서, 트랜잭션들의 각각은 쓰기 트랜잭션들 혹은 읽기 트랜잭션들일 수 있다. 여기서 쓰기 트랜잭션들의 경우 데이터 암호화 동작들이 수행될 수 있고, 읽기 트랜잭션들의 경우 데이터 복호화 동작들이 수행될 수 잇다.
실시 예에 있어서, 트랜잭션들은 온-더-플라이 인크립터(72)에서 동시에 처리될 수 있다. 다른 실시 예에 있어서, 트랜잭션들은 온-더-플라이 인크립터(72)에서 병렬로 처리될 수 있다.
도 25에서는 6개의 트랜잭션들을 도시하였지만, 본 발명의 트랜잭션들의 개수는 제한되지 않을 것이다.
실시 예에 있어서, 온-더-플라이 인크립터(72)는 CPU(71)로부터 트랜잭션들을 수신하고, DRAMs(74)을 위한 대응하는 DRAM용 트랜잭션들을 발행할 수 있다.
실시 예에 있어서, DRAMs(74)에 입출력되는 데이터는 인터리빙될 수 있다. 다른 실시 예에 있어서, DRAM(74)에 입출력되는 데이터는 인터리빙 되지 않을 수도 있다.
도 26은 도 25에 도시된 온-더-플라이 인크립터(72)에 대한 실시 예를 예시적으로 보여주는 도면이다. 도 26을 참조하면, 온-더-플라이 인크립터(72)는, 어드레스 변환기(721), 암호 회로(AES, 722), 디-멀티플렉서(723), 리오더 버퍼들(724), 멀티플렉서(725), 카운터(726), 및 XOR 연산기(727)를 포함할 수 있다.
어드레스 변환기(721)는 CPU(71)로부터 어드레스(ARADDR)을 수신하고, DRAM 전용 어드레스(ARADDR_DRAM)로 변환하도록 구현될 수 있다. 또한, 어드레스 변환기(721)는 트랜잭션에 포함된 어드레스(ARADDR)를 이용하여 어드레스 시퀀스를 발생하도록 구현될 수 있다. 실시 예에 있어서, 어드레스 시퀀스의 각각의 크기는 64 비트 일 수 있다. 하지만, 본 발명의 어드레스 시퀀스의 각각의 크기가 여기에 제한되지 않을 것이다.
암호 회로(722)는 어드레스 변환기(721)로부터 어드레스 시퀀스를 수신하고, 암호 알고리즘에 따라 어드레스에 대응하는 키 스트림을 발생하도록 구현될 수 있다. 실시 예에 있어서, 암호 알고리즘은 AES(advanced encryption standard) 알고리즘을 포함할 수 있다. 하지만, 본 발명의 암호 알고리즘이 여기에 제한되지 않을 것이다. 실시 예에 있어서, 키 스트림의 키 값의 크기는 128 비트일 수 있다. 하지만, 본 발명의 키 값의 크기가 여기에 제한되지 않을 것이다.
멀티플렉서(723)는 DRAMs(74)으로부터 수신된 데이터를 수신하고, 읽기 아이디(RID)에 응답하여 데이터에 포함된 태그 값에 대응하는 리오더 버퍼들(724)로 수신된 데이터를 전송하도록 구현될 수 있다. 여기서 읽기 아이디(RID)는 수신된 데이터를 전송한 DRAM의 식별 번호일 수 있다. 실시 예에 있어서, 읽기 아이디(RID)의 크기는 3 비트일 수 있다. 하지만 본 발명의 읽기 아이디(RID)의 크기가 여기에 제한되지 않을 것이다.
DRAMs(74)으로부터 암호화 순서가 바뀐 상태로 데이터(RDATA_ENC)가 전송되더라도, 디-멀티플렉서(726)의 선택 동작에 따라 수신된 데이터(RDATA_ENC)는 대응하는 리오더 버퍼들(724)로 정렬 및 전송될 수 있다. 여기서 리오더 버퍼들(724)의 각각은 암호화 순서에 맞게 멀티플렉서(725)에 연결될 수 있다.
멀티플렉서(725)는 리오더 버퍼들(724)에 저장된 값들을 카운트 값에 응답하여 암호화 순서에 맞게 차례로 선택하도록 구현될 수 있다. 여기서 카운트 값은 카운터(726)에서 발생될 수 있다. 실시 예에 있어서, 카운트 값의 크기는 3 비트일 수 있다. 하지만, 본 발명의 카운트 값의 크기가 여기에 제한되지 않을 것이다.
XOR 연산기(727)는 암호 회로(722)로부터 키 값과 멀티플렉서(725)의 출력 값을 XOR 연산함으로써, 복호화 동작을 수행하도록 구현될 수 있다. 복호화된 데이터(RDATA)는 CPU(71)로부터 읽기 데이터로 전송될 수 있다.
도 27은 본 발명의 실시 예에 따른 암복호 과정을 예시적으로 보여주는 도면이다. 도 27을 참조하면, 암호 회로(722)는 128 비트의 난스(nonce) 및 어드레스(Address), 및 128 비트의 키(Key)을 수신하고, 암호 알고리즘에 따라 128 비트의 키 스트림을 발생하도록 구현될 수 있다. 여기서, 난스(nonce) 및 키(Key)는 사전에 결정될 값일 수 있다.
실시 예에 있어서, 어드레스는 수신된 어드레스(예, 도 68, ARADDR)의 전부 혹은 일부일 수 있다.
XOR 연산기(727)는 암호 회로(722)로부터 출력된 128 비트의 키 스트림과 입128 비트의 입력 데이터(DIN)을 XOR 연산함으로써, 128 비트의 출력 데이터(DOUT)를 발생하도록 구현될 수 있다.
한편, 도 17에서 연산 과정에 필요한 데이터(난스 및 어드레스, 키, 키 스트림, 입력 데이터, 출력 데이터)의 크기가 128 비트이지만, 본 발명이 여기에 제한되지 않을 것이다.
한편, 도 26에서 온-더-플라이 인크립터(72)는 암호 동작의 순서를 맞추기 위해서 데이터의 리오더링을 데이터 수신단에서 수행하였다. 하지만, 본 발명이 여기에 제한되지 않을 것이다. 본 발명은 수신된 데이터에 대응하는 키 스트림이 암호화 동작의 순서에 맞게 출력될 수도 있다.
도 28은 도 25에 도시된 온-더-플라이 인크립터(72a)에 대한 다른 실시 예를 예시적으로 보여주는 도면이다. 도 28을 참조하면, 온-더-플라이 인크립터(72a)는, 어드레스 변환기(721a), 암호 회로(AES, 722a), 디-멀티플렉서(723a), 카운터(724a), 버퍼들(725a), 멀티플렉서(726a), 및 XOR 연산기(727a)를 포함할 수 있다.
어드레스 변환기(721a) 및 암호 회로(722a)는, 도 26에 도시된 어드레스 변환기(721) 및 암호 회로(722)와 동일하게 구현될 수 있다.
디-멀티플렉서(723a)는 카운트 값에 응답하여 암호 회로(722a)로부터 출력된 키 스트림들에 대응하는 버퍼들(723a)을 선택하도록 구현될 수 있다. 선택된 버퍼(723a)에 암복호에 이용될 키 값이 저장될 수 있다. 여기서 카운트 값은 카운터(724a)에서 발생될 수 있다.
멀티플렉서(726a)는 읽기 아이디(RID) 응답하여 버퍼들(725a) 중 어느 하나에 저장된 키 값을 XOR 연산기(727a)로 출력하도록 구현될 수 있다.
XOR 연산기(727a)는 멀티플렉서(726a)로부터 키 값과 DRAMs(74)로부터의 데이터(RDATA)를 XOR 연산함으로써, 복호화 동작을 수행하도록 구현될 수 있다.
한편, 본 발명의 실시 예에 따른 온-더-플라이 인크립터는 멀티 계층 버스(multi layer bus, 혹은 multi level bus) 구조의 시스템-온-칩(system-on-chip, SOC)에 적용 가능하다.
도 29는 본 발명의 실시 예에 따른 시스템 온 칩(800)을 예시적으로 보여주는 도면이다. 도 29를 참조하면, 시스템 온 칩(800)은 제 1 계층 버스, 즉 백본(backbone) 버스(801)에 연결된 CPU(810), 및 적어도 하나의 DRAM 제어기(820), 제 1 계층 버스(801)에 연결된 제 2 계층 제어 버스(802-1), 제 1 계층 버스(801)에 연결된 제 2 계층 데이터 버스(802-2), 제 2 계층 제어 버스(802-1)에 연결된 제 3 계층 제어 버스들(803-1), 제 2 계층 데이터 버스(802-2)에 연결된 제 3 계층 데이터 버스(803-2), 제 3 계층 제어 버스(803-1) 및 제 3 데이터 버스(803-2)에 연결된 온-더-플라이 인크립터(830), 및 내부 SRAM(840)를 포함할 수 있다.
실시 예에 있어서, 제어 버스들(802-1, 803-1)은, 도 29에서 2 개의 층들로 도시되지만, 제어 버스들의 계층은 3 개 이상으로 구현될 수 있다고 이해되어야 할 것이다. 실시 예에 있어서, 데이터 버스들(802-2, 803-2)은, 도 29에서 2 개의 층들로 도시되지만, 데이터 버스들의 계층은 3 개 이상으로 구현될 수 있다고 이해되어야 할 것이다.
실시 예에 있어서, 온-더-플라이 인크립터(830)는 제 1 계층 버스(801), 제 2 계층 제어 버스(802-1), 및 제 3 계층 제어 버스(803-1)를 경유하여 중앙 처리 장치(810)으로부터 트랜잭션을 수신할 수 있다. 실시 예에 있어서, 온-더-플라이 인크립터(830)는 수신된 트랜잭션에 대응하는 DRAM용 트랜잭션을 제 3 계층 제어 버스(803-1), 제 2 계층 제어 버스(802-1), 및 제 1 계층 버스(801)를 경유하여 DRAM 제어기(820)로 전송할 수 있다. 다른 실시 예에 있어서, 온-더-플라이 인크립터(803-1)는 수신된 트랜잭션에 대응하는 DRAM용 트랜잭션을 도 29에 도시되지 않은 계층 제어 버스를 경유하여 DRAM 제어기(820)로 전송할 수 있다.
실시 예에 있어서, 온-더-플라이 인크립터(830)는 제 1 계층 버스(801), 제 2 계층 데이터 버스(802-2), 및 제 3 계층 데이터 버스(803-1)를 경유하여 중앙 처리 장치(810)로부터 쓰기 데이터를 수신할 수 있다. 실시 예에 있어서, 온-더-플라이 인크립터(830)는 쓰기 데이터를 암호화시키고, 암호화된 데이터를 제 3 계층 데이터 버스(803-2), 제 2 계층 데이터 버스(802-2), 및 제 1 계층 버스(801)를 경유하여 DRAM 제어기(820)로 전송할 수 있다. 다른 실시 예에 있어서, 온-더-플라이 인크립터(803-1)는 암호화된 데이터를 도 29에 도시되지 않은 계층 데이터 버스를 경유하여 DRAM 제어기(820)로 전송할 수 있다. 읽기 동작의 데이터 패스도 상술된 쓰기 동작의 데이터 패스와 유사하게 구현될 수 있다.
도 29에 도시된 바와 같이, CPU(810)과 적어도 하나의 DRAM(s)(200a) 사이에는 두 종류의 데이터 패스들이 존재할 수 있다. 제 1 데이터 패스는, 제 1 계층 버스(801)를 통하여 CPU(810)와 DRAM 제어기(820)에 사이에서 데이터가 직접 입출력되는 패스이다. 제 2 데이터 패스는, 제 1 계층 버스(801), 제 2 계층 버스들(802-1, 802-2), 및 제 3 계층 버스들(803-1, 082-2)을 통하여 CPU(810)과 DRAM 제어기(820) 사이에 온-더-플라이 인크립터(830)을 경유하는 패스이다.
도 30은 본 발명의 실시 예에 따른 멀티 계층 버스 구조의 집적회로(900)를 갖는 컴퓨팅 시스템(90)을 예시적으로 보여주는 도면이다. 도 30을 참조하면, 컴퓨팅 시스템(90)은 집적회로(900) 및 복수의 메모리 장치들(210, 220, 230, 240)을 포함할 수 있다.
집적회로(900)는, 도 1에 도시된 집적회로(100)와 비교하여, 멀티 계층 버스(902)에 연결된 온-더-플라이 인크립터(920)를 도시하고 있다. 멀티 계층 버스(902)는 제 1 계층 버스(901)에 연결될 수 있다. 도 30에 도시된 멀티 계층 버스(902)는 하나이지만, 2 개 이상으로 이해되어야 할 것이다. 제 1 계층 버스(901)에 CPU(910)과 복수의 메모리 제어기들(931, 932, 934, 934)이 연결될 수 있다.
한편, 본 발명의 온-더-플라이 인크립터는 어플리케이션 프로세서(application processor)에 간단하게 TEE(trusted execution environment)을 구현하는데 적용 가능하다.
본 발명의 컴퓨팅 시스템은 성능 저하를 최소로 하기 위해, 암호화되는 Data와 암호화되지 않는 데이터의 이동 경로를 완전히 분리하고, 이를 위해, 주소 공간 상에 가상의 보안 메모리를 만들고 CPU가 그 가상 보안 메모리에 데이터를 쓰면 하드웨어가 자동으로 데이터를 암호화하여 DRAM의 지정된 영역에 저장하고, CPU가 데이터를 읽으면 자동으로 DRAM의 지정된 영역에서 읽어서 복호화하여 CPU에 전달할 수 있다. 이로써, 전체 시스템 성능에는 영향을 주지 않으면서, 일부 데이터만 암호화로 보호할 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
10: 컴퓨팅 시스템
110: CPU
120: 온-더-플라이 인크립터
200: 메인 메모리
210, 220, 230, 240: 메모리
101: 버스
231, 232, 233, 234: 메모리 제어기
800, 900: 집적회로

Claims (20)

  1. 컴퓨팅 시스템의 동작 방법에 있어서:
    온-더-플라이 인크립터에서 중앙 처리 장치로부터 의사 보안 메모리에 대한 접근을 위한 어드레스 및 데이터를 수신하는 단계;
    상기 온-더-플라이 인크립터에서 상기 어드레스를 메인 메모리에 대한 접근을 위한 메모리 어드레스로 변환하는 단계;
    상기 온-더-플라이 인크립터에서 상기 데이터를 암호 알고리즘에 의거하여 암호화시키는 단계; 및
    메모리 제어기에서 상기 메모리 어드레스에 대응하는 메인 메모리에 상기 암호화된 데이터를 저장시키는 단계를 포함하고,
    상기 메모리 어드레스로 변환하는 단계는,
    상기 어드레스에 사전에 결정된 값을 더함으로써 상기 메모리 어드레스로 변환하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 컴퓨팅 시스템의 초기화 동작시 상기 의사 보안 메모리를 위한 어드레스 공간을 설정하는 단계를 더 포함하는 방법.
  3. 제 1 항에 있어서,
    상기 어드레스 및 상기 데이터는 상기 중앙 처리 장치와 상기 온-더-플라이 인크립터 사이에 시스템 버스를 경유하는 상기 온-더-플라이 인크립터로 수신되는 방법.
  4. 제 3 항에 있어서,
    상기 시스템 버스와 상기 온-더-플라이 인크립터 사이에 적어도 하나의 버스 계층이 더 포함되는 방법.
  5. 제 4 항에 있어서,
    상기 적어도 하나의 버스 계층은,
    상기 어드레스를 전송하는 적어도 하나의 제어 버스 계층; 및
    상기 데이터를 전송하는 적어도 하나의 데이터 버스 계층을 포함하는 방법.
  6. 삭제
  7. 제 1 항에 있어서,
    상기 메모리 어드레스로 변환하는 단계는,
    상기 어드레스에서 온-더-플라이 인크립터 베이스 어드레스를 빼는 단계; 및
    상기 빼어진 어드레스에서 상기 사전에 결정된 값인 메모리 베이스 어드레스를 더하는 단계를 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 온-더-플라이 인크립터에서 상기 중앙 처리 장치로부터 읽기 어드레스를 수신하는 단계;
    상기 온-더-플라이 인크립터에서 상기 읽기 어드레스를 읽기 메모리 어드레스로 변환하는 단계;
    상기 메모리 제어기에서 상기 메인 메모리로부터 상기 읽기 메모리 어드레스에 대응하는 데이터를 읽는 단계;
    상기 온-더-플라이 인크립터에서 상기 읽혀진 데이터를 상기 암호 알고리즘에 의거하여 복호화시키는 단계; 및
    상기 온-더-플라이 인크립터에서 상기 복호화된 데이터를 상기 중앙 처리 장치로 전송하는 단계를 포함하는 방법.
  9. 제 1 항에 있어서,
    상기 중앙 처리 장치에서 내부 ROM(read only memory)로부터 보안 OS(secure operating system)을 읽는 단계;
    상기 온-더-플라이 인크립터를 이용하여 상기 메인 메모리에 상기 읽혀진 보안 OS를 로딩하는 단계; 및
    상기 온-더-플라이 인크립터를 이용하여 상기 로딩된 보안 OS를 실행하는 단계를 포함하는 방법.
  10. 제 1 항에 있어서,
    상기 온-더-플라이 인크립터는 상기 중앙 처리 장치로부터 복수의 트랜잭션들을 동시에 처리하는 방법.
  11. 집적회로의 동작 방법에 있어서:
    제 1 계층 버스에 연결된 중앙 처리 장치에서, 상기 제 1 계층 버스에 연결된 멀티 계층 버스를 통하여 온-더-플라이 인크립터로 제1 읽기 트랜잭션들을 발행하는 단계;
    상기 온-더-플라이 인크립터에서, 상기 멀티 계층 버스 혹은 다른 멀티 계층 버스를 통하여 상기 제 1 계층 버스에 연결된 메모리 제어기들로 대응하는 제2 읽기 트랜잭션을 발행하는 단계;
    상기 온-더-플라이 인크립터에서, 상기 멀티 계층 버스를 통해 상기 메모리 제어기들로부터 상기 제2 읽기 트랜잭션들에 대응하는 데이터를 수신하는 단계;
    상기 온-더-플라이 인크립터에서, 상기 수신된 데이터를 복호화하는 단계; 및
    상기 온-더-플라이 인크립터에서, 상기 복호화된 데이터를 상기 멀티 계층 버스 및 상기 제 1 계층 버스를 경유하여 상기 중앙 처리 장치로 전송하는 단계를 포함하는 방법.
  12. 제 11 항에 있어서,
    상기 제2 읽기 트랜잭션들에 대응하는 메모리 제어기들이 서로 인터리빙 되는 방법.
  13. 제 12 항에 있어서,
    상기 온-더-플라이 인크립터에서, 상기 제2 읽기 트랜잭션들에 대응하는 상기 수신된 데이터를 리오더링하는 단계를 더 포함하는 방법.
  14. 제 12 항에 있어서,
    상기 수신된 데이터를 복호화하는 단계는,
    상기 제2 읽기 트랜잭션들에 대응하는 어드레스를 수신하는 단계;
    상기 어드레스를 이용하여, 암호 알고리즘에 따라 키 스트림을 발생하는 단계; 및
    상기 키 스트림과 리오더링된 데이터를 XOR 연산하는 단계를 포함하는 방법.
  15. 제 12 항에 있어서,
    상기 수신된 데이터를 복호화하는 단계는,
    상기 제2 읽기 트랜잭션들에 대응하는 어드레스를 수신하는 단계;
    상기 어드레스, 난스, 및 키 값을 수신하고, 암호 알고리즘에 의거하여 키 스트림을 발생하는 단계;
    상기 제2 읽기 트랜잭션들 중 어느 하나에 대응하는 데이터를 수신하는 단계;
    상기 수신된 데이터 및 상기 키 스트림 중 상기 어느 하나의 제2 읽기 트랜잭션에 대응하는 키 스트림 값을 XOR 연산하는 단계를 포함하는 방법.
  16. 제 11 항에 있어서,
    상기 온-더-플라이 인크립터에서 상기 중앙 처리 장치에서 입력된 어드레스에 옵셋 어드레스를 더함으로써 메인 메모리에 접근하기 위한 메모리 어드레스를 발생하는 단계를 더 포함하는 방법.
  17. 제 11 항에 있어서,
    상기 온-더-플라이 인크립터에서 상기 중앙 처리 장치로부터 입력된 어드레스에서 온-더-플라이 인크립터 베이스 어드레스를 빼고, 상기 빼어진 어드레스에서 메모리 베이스 어드레스를 더함으로써, 메인 메모리에 접근하기 위한 메모리 어드레스를 발생하는 단계를 더 포함하는 방법
  18. 제 11 항에 있어서,
    상기 온-더-플라이 인크립터에서 매인 메모리에 접근하기 위한 메모리 어드레스를 발생하는 단계; 및
    상기 중앙 처리 장치에서 상기 메모리 어드레스를 이용하여 상기 메인 메모리에 직접 접근하는 것을 차단하는 단계를 더 포함하는 방법.
  19. 제 11 항에 있어서,
    상기 중앙 처리 장치에서, 상기 제1 읽기 트랜잭션들과 다른 제3 읽기 트랜잭션들을 발행하는 단계;
    복수의 메모리 제어기들에서, 상기 제3 읽기 트랜잭션들에 대응하는 데이터를 수신하는 단계;
    상기 복수의 메모리 제어기들에서, 상기 수신된 데이터를 디스크램블링 하는 단계; 및
    상기 복수의 메모리 제어기들에서, 상기 디스크램블링된 데이터를 상기 제 1 계층 버스를 경유하여 상기 중앙 처리 장치에 전송하는 단계를 포함하는 방법.
  20. 제 1 계층 버스;
    상기 제 1 계층 버스에 연결된 제 2 계층 제어 버스;
    상기 제 2 계층 제어 버스에 연결된 제 3 계층 제어 버스;
    상기 제 1 계층 버스에 연결된 제 2 계층 데이터 버스;
    상기 제 2 계층 데이터 버스에 연결된 제 3 계층 데이터 버스;
    상기 제 1 계층 버스에 연결된 중앙 처리 장치;
    상기 제 1 계층 버스에 연결된 적어도 하나의 메모리 제어기; 및
    상기 제 2 및 상기 제 3 계층 제어 버스들을 통하여 쓰기 트랜잭션 혹은 읽기 트랜잭션을 수신하고, 의사 보안 메모리(pseudo secure memory) 기능을 수행하는 온-더-플라이 인크립터를 포함하고,
    상기 온-더-플라이 인크립터는,
    상기 의사 보안 메모리의 쓰기 동작시 상기 쓰기 트랜잭션에 응답하여 상기 중앙 처리 장치로부터 전송된 데이터를 암호화하고, 상기 암호화된 데이터를 상기 제 2 및 상기 제 3 계층 데이터 버스들을 경유하여 상기 적어도 하나의 메모리 제어기로 전송하거나,
    상기 의사 보안 메모리의 읽기 동작시 상기 읽기 트랜잭션에 응답하여 상기 적어도 하나의 메모리 제어기로부터 전송된 암호화 데이터를 수신하고, 상기 수신된 암호화 데이터를 복호화하는 집적회로.
KR1020160144663A 2016-05-30 2016-11-01 온-더-플라이 인크립터를 갖는 집적회로, 그것을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법 KR102588733B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP17167222.3A EP3252651A1 (en) 2016-05-30 2017-04-20 Computing system having an on-the-fly encryptor and an operating method thereof
US15/585,253 US10749672B2 (en) 2016-05-30 2017-05-03 Computing system having an on-the-fly encryptor and an operating method thereof
CN201710345730.9A CN107451072B (zh) 2016-05-30 2017-05-16 具有即时加密器的计算系统及其操作方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20160066143 2016-05-30
KR1020160066143 2016-05-30
KR1020160093582 2016-07-22
KR20160093582 2016-07-22

Publications (2)

Publication Number Publication Date
KR20170136409A KR20170136409A (ko) 2017-12-11
KR102588733B1 true KR102588733B1 (ko) 2023-10-17

Family

ID=60943597

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160144663A KR102588733B1 (ko) 2016-05-30 2016-11-01 온-더-플라이 인크립터를 갖는 집적회로, 그것을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법

Country Status (1)

Country Link
KR (1) KR102588733B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102488636B1 (ko) 2017-11-23 2023-01-17 삼성전자주식회사 데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226736B1 (en) 1997-03-10 2001-05-01 Philips Semiconductors, Inc. Microprocessor configuration arrangement for selecting an external bus width
US20100057823A1 (en) 2008-08-28 2010-03-04 Filseth Paul G Alternate galois field advanced encryption standard round
US20110161677A1 (en) * 2009-12-31 2011-06-30 Savagaonkar Uday R Seamlessly encrypting memory regions to protect against hardware-based attacks
CN105279439A (zh) * 2014-06-20 2016-01-27 赛普拉斯半导体公司 用于就地执行的存储器的加密方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226736B1 (en) 1997-03-10 2001-05-01 Philips Semiconductors, Inc. Microprocessor configuration arrangement for selecting an external bus width
US20100057823A1 (en) 2008-08-28 2010-03-04 Filseth Paul G Alternate galois field advanced encryption standard round
US20110161677A1 (en) * 2009-12-31 2011-06-30 Savagaonkar Uday R Seamlessly encrypting memory regions to protect against hardware-based attacks
CN105279439A (zh) * 2014-06-20 2016-01-27 赛普拉斯半导体公司 用于就地执行的存储器的加密方法

Also Published As

Publication number Publication date
KR20170136409A (ko) 2017-12-11

Similar Documents

Publication Publication Date Title
US10749672B2 (en) Computing system having an on-the-fly encryptor and an operating method thereof
US11010310B2 (en) Convolutional memory integrity
US11088846B2 (en) Key rotating trees with split counters for efficient hardware replay protection
US10423541B1 (en) Using encryption within a computing system
CN107851163B (zh) 用于i/o数据的完整性、防重放和真实性保证的技术
US9954681B2 (en) Systems and methods for data encryption
CN105279439B (zh) 用于就地执行的存储器的加密方法
US7774622B2 (en) CRPTO envelope around a CPU with DRAM for image protection
TWI679554B (zh) 資料儲存裝置以及其操作方法
US10303621B1 (en) Data protection through address modification
US20170185539A1 (en) Method and device for protecting dynamic random access memory
US20190215160A1 (en) Managing a set of cryptographic keys in an encrypted system
US20180137062A1 (en) Cryptographic-based initialization of memory content
KR20190059528A (ko) 데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치
CN116648688A (zh) 包含使用认证逻辑产生用于存储器区的存取代码的实例的存储器系统和装置
US20200042746A1 (en) Dynamic cryptographic key expansion
US10970232B2 (en) Virtual root of trust for data storage device
KR102588733B1 (ko) 온-더-플라이 인크립터를 갖는 집적회로, 그것을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법
TWI736000B (zh) 資料儲存裝置以及其操作方法
US20230325326A1 (en) Memory encryption
CN107533516B (zh) 用于管理对在装置的芯片上的系统的安全模块的多次访问的设备
US20180307626A1 (en) Hardware-assisted memory encryption circuit
US8010802B2 (en) Cryptographic device having session memory bus
US20100211801A1 (en) Data storage device and data management method thereof
Pei et al. Efficient Split Counter Mode Encryption for NVM

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