KR20190059528A - 데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치 - Google Patents

데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치 Download PDF

Info

Publication number
KR20190059528A
KR20190059528A KR1020170157210A KR20170157210A KR20190059528A KR 20190059528 A KR20190059528 A KR 20190059528A KR 1020170157210 A KR1020170157210 A KR 1020170157210A KR 20170157210 A KR20170157210 A KR 20170157210A KR 20190059528 A KR20190059528 A KR 20190059528A
Authority
KR
South Korea
Prior art keywords
data
timestamp
time stamp
encryption
encrypted data
Prior art date
Application number
KR1020170157210A
Other languages
English (en)
Other versions
KR102488636B1 (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 KR1020170157210A priority Critical patent/KR102488636B1/ko
Priority to US16/013,993 priority patent/US11354453B2/en
Priority to CN201811403347.5A priority patent/CN109829316A/zh
Publication of KR20190059528A publication Critical patent/KR20190059528A/ko
Application granted granted Critical
Publication of KR102488636B1 publication Critical patent/KR102488636B1/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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • 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
    • 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/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3297Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2151Time stamp

Landscapes

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

Abstract

본 발명의 실시 예에 따른 암호화 장치는, 제 1 시점에 대한 제 1 타임스탬프를 생성하도록 구성되는 카운터, 보안 데이터 및 제 1 타임스탬프를 병합하여 암호화 데이터로 암호화하고, 암호화 데이터를 메모리 장치로 전송하고, 그리고 메모리 장치에서 전송된 읽기 데이터를 복호화 데이터로 복호화하도록 구성되는 암호화 및 복호화부, 카운터가 제 2 시점에 대한 제 2 타임스탬프를 생성하도록 그리고 암호화 및 복호화부가 읽기 데이터를 복호화 데이터로 복호화하도록, 카운터 및 암호화 및 복호화부로 제 1 시점에서 제 2 시점으로 시간이 경과됨을 알리도록 구성되는 타이머, 및 복호화 데이터의 복호화 타임스탬프가 제 1 타임스탬프와 일치하는지 여부를 확인하도록 구성되는 체킹 로직을 포함할 수 있다.

Description

데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치{ENCRYPTION DEVICE ENCRYPTING DATA AND TIMESTAMP, SYSTEM ON CHIP INCLUDING THE SAME, AND ELECTRONIC DEVICE}
본 발명은 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치에 관한 것으로, 좀 더 자세하게는 데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치에 관한 것이다.
어플리케이션 프로세서(application processor; AP)는 시스템 온 칩(System on Chip; 이하 SoC라고 칭함)의 형태로 구현될 수 있다. SoC는 다양한 시스템들이 집적되는 하나의 칩을 나타낼 수 있다. SoC는 다양한 시스템들을 집적하므로, SoC의 내부 메모리(예를 들면, SRAM(static random access memory))의 용량은 제한적일 수 있다. 내부 메모리의 제한적인 용량으로 인해, SoC는 외부 메모리 장치와 통신할 수 있다.
SoC와 외부 메모리 장치가 외부로 노출될 수 있는 물리적인 라인들 및 핀들을 통해 통신하는 경우, 공격자가 SoC와 외부 메모리 장치간에 전송되는 데이터를 프루빙(probing)할 수 있는 위험이 존재한다. 이러한 위험을 방어하기 위해, SoC는 암호화된 형태를 갖는 데이터를 메모리 장치로 전송할 수 있고 메모리 장치에는 암호화 데이터가 저장될 수 있다. 그럼에도 불구하고, 공격자는 암호화 데이터를 관찰하고 누적하여 메모리 장치 및 SoC를 공격할 수 있다. 따라서, 다양한 형태의 공격을 방어할 수 있는 보안 기술이 필요하다.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치를 제공할 수 있다.
본 발명의 실시 예에 따른 암호화 장치는, 제 1 시점에 대한 제 1 타임스탬프를 생성하도록 구성되는 카운터, 보안 데이터 및 제 1 타임스탬프를 병합하여 암호화 데이터로 암호화하고, 암호화 데이터를 메모리 장치로 전송하고, 그리고 메모리 장치에서 전송된 읽기 데이터를 복호화 데이터로 복호화하도록 구성되는 암호화 및 복호화부, 카운터가 제 2 시점에 대한 제 2 타임스탬프를 생성하도록 그리고 암호화 및 복호화부가 읽기 데이터를 복호화 데이터로 복호화하도록, 카운터 및 암호화 및 복호화부로 제 1 시점에서 제 2 시점으로 시간이 경과됨을 알리도록 구성되는 타이머, 및 복호화 데이터의 복호화 타임스탬프가 제 1 타임스탬프와 일치하는지 여부를 확인하도록 구성되는 체킹 로직을 포함할 수 있다.
본 발명의 실시 예에 따른 시스템 온 칩은, 보안 데이터를 생성하도록 구성되는 프로세서, 보안 데이터에 병합되는 타임스탬프를 생성하도록 구성되는 카운터, 타임스탬프의 업데이트를 주기적으로 요청하도록 구성되는 타이머, 보안 데이터를 메모리 장치에 저장하기 위한 프로세서의 쓰기 명령에 응답하여 보안 데이터 및 타임스탬프를 병합하여 암호화 데이터로 암호화하고, 암호화 데이터를 메모리 장치로 전송하고, 그리고 타이머의 요청 또는 프로세서의 요청에 응답하여 메모리 장치에서 전송된 읽기 데이터를 복호화 데이터로 복호화하도록 구성되는 암호화 및 복호화부, 및 복호화 데이터의 복호화 타임스탬프가 유효한지 여부를 확인하도록 구성되는 체킹 로직을 포함할 수 있다.
본 발명의 실시 예에 따른 전자 장치는, 제 1 보안 데이터 및 제 1 타임스탬프가 암호화된 제 1 암호화 데이터를 저장하도록 구성되는 메모리 장치 및 메모리 장치에 저장된 제 1 암호화 데이터를 복호화하여 제 1 타임스탬프가 유효한지 확인하고 그리고 확인 결과에 기초하여 제 1 보안 데이터 및 제 1 타임스탬프와 다른 제 2 타임스탬프가 암호화된 제 2 암호화 데이터를 제 1 암호화 데이터 대신에 메모리 장치에 저장하도록 구성되는 시스템 온 칩을 포함할 수 있다.
본 발명의 실시 예에 따르면, 암호화 장치는 보안 데이터 및 타임스탬프를 암호화하여 메모리 장치에 저장하고, 메모리 장치에 저장된 타임스탬프를 주기적으로 업데이트할 수 있다. 암호화 장치는 메모리 장치에 저장된 타임스탬프가 메모리 장치에 대한 공격에 의해 변경되었는지 여부를 판별할 수 있다. 따라서, 암호화 장치는 메모리 장치에 대한 공격을 방어할 수 있다.
도 1은 본 발명의 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도이다.
도 2는 도 1의 암호화기를 좀 더 상세하게 보여주는 블록도이다.
도 3은 도 1의 암호화기에 의해 수행되는 타임스탬프의 업데이트를 예시적으로 보여주는 도면이다.
도 4는 도 1의 암호화 데이터 영역에 저장되는 암호화 데이터들을 예시적으로 보여주는 도면이다.
도 5는 다른 실시 예에 따라, 도 1의 암호화기에 의해 수행되는 타임스탬프의 업데이트를 예시적으로 보여주는 도면이다.
도 6은 도 5의 암호화기에 의해 도 1의 암호화 데이터 영역에 저장되는 암호화 데이터들을 예시적으로 보여주는 도면이다.
도 7은 도 5의 체킹 로직을 좀 더 상세하게 보여주는 블록도이다.
도 8은 도 1의 프로세서가 암호화 데이터 영역에 저장된 데이터를 요청하는 경우를 예시적으로 보여주는 도면이다.
도 9는 도 8에서 설명된 프로세서의 읽기 명령을 처리하는 암호화기의 동작을 예시적으로 보여주는 도면이다.
도 10은 도 1의 프로세서가 암호화 데이터 영역에 저장된 데이터를 요청하는 경우를 예시적으로 보여주는 도면이다.
도 11은 도 10에서 설명된 프로세서의 읽기 명령을 처리하는 암호화기의 동작을 예시적으로 보여주는 도면이다.
도 12는 도 1의 암호화기에 의해 메모리 장치에 저장된 타임스탬프가 업데이트되는 동작을 예시적으로 보여주는 도면이다.
도 13은 도 1의 프로세서, 암호화기, 및 메모리 장치간의 동작을 예시적으로 보여주는 순서도이다.
도 14는 도 1의 프로세서, 암호화기, 및 메모리 장치간의 동작을 예시적으로 보여주는 순서도이다.
도 15는 본 발명의 실시 예에 따른 암호화기의 동작을 예시적으로 보여주는 순서도이다.
도 16은 본 발명의 다른 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도이다.
도 17은 본 발명의 또 다른 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도이다.
도 18은 본 발명의 또 다른 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도이다.
도 19는 도 18의 프로세서의 어드레스 공간을 예시적으로 보여주는 도면이다.
도 20은 본 발명의 또 다른 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도이다.
도 21은 본 발명의 또 다른 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도이다.
아래에서는, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도이다. 전자 장치(100)는 시스템 온 칩(system on chip; 이하 SoC, 110) 및 메모리 장치(160)를 포함할 수 있다.
SoC(110)는 운영 체제(operating system)를 구동하여 전자 장치(100)의 전반적인 동작을 제어하도록 구성될 수 있다. SoC(110)는 어플리케이션 프로세서(application processor; AP)로서 전자 장치(100)가 지원하는 다양한 어플리케이션들을 실행할 수 있다. 이를 위해, SoC(110)는 다양한 연산들을 수행하는 프로세서(120)를 포함할 수 있다. 예를 들어, 프로세서(120)는 CPU(central processing unit), ISP(image signal processing unit), DSP(digital signal processing unit), GPU(graphics processing unit), VPU(vision processing unit), 및 NPU(neural processing unit) 중 하나일 수 있다. 도 1에서, 프로세서(120)는 단지 하나만 도시되었으나, SoC(110)는 적어도 하나 이상의 프로세서들을 포함할 수 있다.
SoC(110)는 메모리 장치(160)에 저장되는 데이터를 암호화하기 위한 암호화기(130)를 포함할 수 있다. 암호화기(130)는 암호화 장치 또는 암호화 회로로 지칭될 수 있다. 암호화기(130)는 암호화 알고리즘에 따라 프로세서(120)로부터 전송된 보안 데이터에 대해 암호화 연산을 수행하도록 구현될 수 있다. 암호화기(130)는 메모리 장치(160)로부터 전송된 암호화 데이터에 대해 복호화 연산을 수행하도록 구성될 수 있다.
메모리 장치(160)는 SoC(110)의 요청에 응답하여 데이터를 저장하거나 저장된 데이터를 SoC(110)로 전송할 수 있다. 예를 들어, 메모리 장치(160)는 SoC(110)가 빠르게 접근할 수 있는 메인 메모리로서 동작할 수 있고, DRAM(dynamic random access memory) 장치일 수 있다. 메모리 장치(160)는 저장 용량, SoC(110)의 제한적인 면적 등으로 인해 SoC(110) 외부에 배치될 수 있다. 도 1을 참조하면, 공격자(attacker)는 SoC(110)와 메모리 장치(160)간의 데이터를 프루빙(probing)하거나 관찰할 수 있다.
실시 예에 있어서, 공격자의 공격을 방어하기 위해, SoC(110)는 메모리 장치(160)로 암호화 데이터를 전송할 수 있고, 메모리 장치(160)는 암호화 데이터를 저장하기 위한 암호화 데이터 영역(161)을 포함할 수 있다. 메모리 장치(160)는 암호화 데이터 영역(161)에 저장된 암호화 데이터를 SoC(110)로 전송할 수 있다. 따라서, 공격자는 암호화 데이터만을 획득할 수 있고 암호화 이전의 데이터는 알 수 없다.
공격자는 SoC(110)와 메모리 장치(160)가 서로 주고받는 암호화 데이터를 오랜 시간 동안 관찰하고 누적할 수 있다. 공격자는 임의의 암호화 데이터가 메모리 장치(160)에 저장되면 SoC(110)가 수행하는 동작, 실행하는 어플리케이션 등을 관찰할 수 있다. SoC(110)와 메모리 장치(160)가 서로 암호화 데이터를 주고 받아도, 공격자는 관찰을 통해 획득한 암호화 데이터를 공격을 위해 사용할 수 있다. 공격자의 이러한 공격을 리플레이 공격(replay attack)이라 지칭할 수 있다.
공격자의 리플레이 공격을 방어하기 위한 SoC(110)에 대해 좀 더 구체적으로 설명한다. 프로세서(120)는 보안 데이터를 암호화기(130)로 전송할 수 있다. 여기서, 보안 데이터는 공격자의 다양한 공격들로부터 보호될 수 있어야 한다. 프로세서(120) 및 암호화기(130)는 모두 SoC(110) 내부에서 구현되므로, 프로세서(120)에서 암호화기(130)로 전송되는 보안 데이터는 암호화된 형태가 아닐 수 있다. 유사하게, 암호화기(130)에서 프로세서(120)로 전송되는 보안 데이터도 암호화된 형태가 아닐 수 있다.
암호화기(130)는 보안 데이터 및 타임스탬프를 병합하고 병합된 데이터를 암호화 데이터로 암호화할 수 있다. 타임스탬프는 연도, 월, 요일, 시, 분, 또는 초와 관련된 값을 포함하거나 또는 동작 시점과 관련된 값을 포함할 수 있다. 동작 시점은, 예를 들어, 프로세서(120)가 보안 데이터를 메모리 장치(160)로 쓰기 위한 명령을 발행한 시점, 암호화기(130)가 보안 데이터를 수신한 시점, 암호화 연산이 수행된 시점, 암호화기(130) 내부적으로 사전에 결정된 시점 등을 포함할 수 있다.
도 1에서, 암호화 데이터가 보안 데이터와 타임스탬프가 단순하게 병합된 형태로 도시되었으나, 암호화 연산에 의해 보안 데이터와 타임스탬프는 서로 섞일 수 있고, 암호화 데이터는 암호화된 형태를 가질 수 있다. 공격자는 암호화 데이터의 어느 부분이 타임스탬프에 해당하는지 확인할 수 없다. 이하, 암호화기(130)에 대해 상세하게 설명한다.
도 2는 도 1의 암호화기를 좀 더 상세하게 보여주는 블록도이다. 도 2는 도 1을 참조하여 설명될 것이다. 공격자의 리플레이 공격을 방어하기 위해, 암호화기(130)는 도 1의 메모리 장치(160)에 저장되는 타임스탬프를 주기적으로 업데이트할 수 있다. 이를 위해, 암호화기(130)는 타이머(131) 및 카운터(132)를 포함할 수 있다. 그리고, 암호화기(130)는 암호화 및 복호화부(133)도 포함할 수 있다.
타이머(131)는 타임스탬프의 업데이트 주기를 계산할 수 있다. 타임스탬프는 보안 데이터에 병합되고 암호화될 수 있다. 타이머(131)는 업데이트 주기만큼 시간이 경과하면, 타임스탬프의 업데이트를 카운터(132) 및 암호화 및 복호화부(133)로 요청할 수 있다. 좀 더 구체적으로, 타이머(131)는 타임스탬프의 업데이트를 위한 업데이트 신호를 생성할 수 있다.
실시 예에 있어서, 업데이트 주기는 사전에 결정된 값일 수 있다. 업데이트 주기가 짧을수록 보안은 향상될 수 있으나, 메모리 장치(160)를 접근하는 주기도 짧아질 수 있다. 업데이트 주기는 보안 및 메모리 장치(160)의 접근이 모두 고려되어 결정될 수 있다.
다른 실시 예에 있어서, 업데이트 주기는 도 1의 프로세서(120)의 요청 또는 유저의 요청에 따라 변경되는 값일 수 있다. 프로세서(120) 또는 유저는 보안 데이터에 따라 업데이트 주기의 변경을 암호화기(130)로 요청할 수 있다. 프로세서(120) 또는 유저는 특정한 보안 데이터가 메모리 장치(160)에 저장되면, 업데이트 주기와 관계없이 곧바로 타임스탬프의 업데이트를 암호화기(130)로 요청할 수 있다.
카운터(132)는 타이머(131)의 요청에 응답하여 타임스탬프를 생성할 수 있고 암호화 및 복호화부(133)로 전송할 수 있다. 카운터(132)는 다수의 플립 플롭들(flip flops)을 포함할 수 있다. 카운터(132)의 출력은 타임스탬프로서 이용될 수 있다. 카운터(132)의 출력은 SoC(110)의 클럭에 동기되어 증가하거나, 감소하거나, 또는 랜덤하게 변경될 수 있다. 예를 들어, 타이머(131)의 요청이 발생하였을 때의 카운터(132)의 출력이 타임스탬프로서 결정될 수 있다.
암호화 및 복호화부(133)는 도 1의 프로세서(120)로부터 보안 데이터를 그리고 카운터(132)로부터 타임스탬프를 수신할 수 있다. 암호화 및 복호화부(133)는 보안 데이터 및 타임스탬프를 병합하고, 병합된 데이터를 암호화 데이터로 암호화하고, 암호화 데이터를 메모리 장치(160)로 전송할 수 있다.
실시 예에 있어서, 암호화 및 복호화부(133)는 암호화 알고리즘에 따라 병합된 데이터에 대해 암호화 연산을 수행할 수 있다. 예를 들어, 암호화 알고리즘은 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) 모드 등일 수 있다.
실시 예에 있어서, 보안 데이터의 사이즈는 암호화 및 복호화부(133)의 암호화 연산 단위와 일치할 수 있다. 예를 들어, 암호화 연산 단위는 128 비트일 수 있다. 타임스탬프의 사이즈는 암호화 연산 단위와 일치할 수 있다. 도 2에서 도시된 바와 달리, 보안 데이터 및 타임스탬프를 합친 사이즈가 암호화 연산 단위와 일치할 수 있다.
도 2를 참조하면, 암호화 데이터의 타임스탬프가 제 1 타임스탬프인 경우에 대해 도시되어 있다. 이하, 타임스탬프의 업데이트를 위한 타이머(131)의 요청에 따른 암호화기(130)의 동작을 도 3을 참조하여 설명한다.
도 3은 도 1의 암호화기에 의해 수행되는 타임스탬프의 업데이트를 예시적으로 보여주는 도면이다. 도 3은 도 1 및 도 2를 참조하여 설명될 것이다. 암호화기(130)는 체킹 로직(checking logic, 134)을 더 포함할 수 있다.
도 3에서, 제 1 타임스탬프를 포함하는 암호화 데이터가 메모리 장치(160)에 저장된 후 타이머(131)가 제 1 타임스탬프의 업데이트를 요청한 것으로 가정한다. 그리고, 도 1의 메모리 장치(160)에 대한 공격은 없는 것으로 가정한다.
카운터(132)는 타이머(131)의 요청에 응답하여 제 1 타임스탬프를 제 2 타임스탬프로 업데이트할 수 있다. 제 2 타임스탬프 및 제 1 타임스탬프는 서로 다를 수 있다. 카운터(132)는 제 2 타임스탬프를 암호화 및 복호화부(133)로 전송할 수 있다.
암호화 및 복호화부(133)는 타이머(131)의 요청에 응답하여, 메모리 장치(160)로 읽기 명령을 전송할 수 있다. 암호화 및 복호화부(133)는 읽기 명령을 통해 제 1 타임스탬프를 포함하는 암호화 데이터(또는 읽기 데이터)를 수신할 수 있다. 암호화 및 복호화부(133)는 암호화 데이터를 복호화 데이터로 복호화할 수 있다. 암호화 및 복호화부(133)는 복호화 타임스탬프를 체킹 로직(134)으로 전송할 수 있다. 공격이 없는 것으로 가정하였으므로, 복호화 타임스탬프는 제 1 타임스탬프이다.
체킹 로직(134)은 제 1 타임스탬프가 유효한지 여부를 판별 혹은 확인할 수 있다. 제 1 타임스탬프가 유효하지 않으면, 메모리 장치가 공격받은 것을 나타내는 에러를 SoC(110) 내부의 구성 요소들(예를 들면, 프로세서(120))로 출력할 수 있다.
실시 예에 있어서, 체킹 로직(134)은 타이머(131)의 요청이 발생하기 전에, 미리 제 1 타임스탬프를 저장할 수 있다. 다른 실시 예에 있어서, 타이머(131)의 요청이 발생하면, 체킹 로직(134)은 카운터(132)로부터 제 1 타임스탬프를 수신하고 저장할 수도 있다. 체킹 로직(134)은 제 1 타임스탬프를 저장하기 위한 레지스터를 포함할 수 있다. 카운터(132)에서 전송되고 체킹 로직(134) 내부에 저장되는 제 1 타임스탬프는 SoC(110) 내부에서 존재하므로 유효할 수 있다. 체킹 로직(134)은 내부에 저장된 제 1 타임스탬프와 암호화 및 복호화부(133)에서 전송된 복호화 타임스탬프를 비교할 수 있고, 비교 결과에 기초하여 복호화 타임스탬프가 유효한지 여부를 판별 혹은 확인할 수 있다.
도 3에서, 공격이 없는 것으로 가정하였으므로, 체킹 로직(134)은 복호화 타임스탬프가 유효한 것으로 판별 혹은 확인할 수 있고, 에러를 출력하지 않을 수 있다.
암호화 및 복호화부(133)는 판별 결과 혹은 확인 결과에 기초하여, 제 1 타임스탬프를 제 2 타임스탬프로 변경하는 타임스탬프의 업데이트(혹은 재암호화)를 수행할 수 있다. 타임스탬프의 업데이트는 도 2에서 전술한 암호화 및 복호화부(133)의 동작이 반복될 수 있다. 여기서, 카운터(132)에서 전송되는 타임스탬프는 제 1 타임스탬프가 아닌 제 2 타임스탬프이다. 좀 더 구체적으로, 암호화 및 복호화부(133)는 복호화 타임스탬프가 체킹 로직(134) 내부에 저장된 제 1 타임스탬프와 일치하면, 복호화 데이터의 보안 데이터 및 제 2 타임스탬프를 병합하여 새로운 암호화 데이터로 암호화하고, 새로운 암호화 데이터를 메모리 장치(160)로 전송할 수 있다.
도 4는 도 1의 암호화 데이터 영역에 저장되는 암호화 데이터들을 예시적으로 보여주는 도면이다. 도 4는 도 1 및 도 3을 참조하여 설명될 것이다. 도 4에서, 타임스탬프의 업데이트에 따라, 암호화 데이터들의 타임스탬프는 제 1 타임스탬프에서 제 2 타임스탬프로 업데이트 된다고 가정한다.
제 1 보안 데이터(Security Data[1]) 및 제 2 타임스탬프가 제 1 암호화 데이터로서 도 1의 메모리 장치(160)의 암호화 데이터 영역(161)에 저장될 수 있다. 제 2 내지 제 9 보안 데이터들(Security Data[2]~Security Data[9])도 제 1 보안 데이터(Security Data[1])와 유사하게 제 2 내지 제 9 암호화 데이터들로서 암호화 데이터 영역(161)에 각각 저장될 수 있다. 도 4에서, 하나의 행은 암호화 데이터를 나타낼 수 있고, 제 1 내지 제 9 암호화 데이터는 제 1 내지 제 9 어드레스들(Address[1]~Address[9])에 대응하는 데이터 영역들에 각각 저장될 수 있다. 도 4에서, 보안 데이터 및 타임스탬프가 구분되어 도시되었으나, 보안 데이터 및 타임스탬프는 암호화된 형태로 암호화 데이터 영역(161)에 저장될 수 있다. 어드레스들의 수 및 암호화 데이터들의 수는 도시된 것에 한정되지 않는다.
공격자는 제 4 어드레스(Address[4])에 대응하는 영역에 저장되는 제 4 암호화 데이터를 관찰할 수 있다. 공격자의 관찰은 제 2 타임스탬프가 업데이트되기 전일 수 있다. 제 2 타임스탬프가 업데이트된 이후 이전에 관찰하였던 제 4 암호화 데이터를 암호화 데이터 영역(161)에 쓸 수 있다(즉, 제 1 공격(Attack 1)). 이 경우, 공격자에 의해 암호화 데이터 영역(161)에 쓰여진 제 4 암호화 데이터의 타임스탬프는 제 2 타임스탬프보다 오래된 것이다.
제 1 공격에 대해, 타이머(131)의 요청에 응답하여, 암호화 및 복호화부(133)는 제 4 암호화 데이터를 복호화 데이터로 복호화하고, 체킹 로직(134)은 복호화 타임스탬프가 유효한지 판별 혹은 확인할 수 있다. 복호화 타임스탬프는 제 1 공격에 의해 암호화 데이터 영역(161)에 저장된 것이다. 복호화 타임스탬프는 체킹 로직(134) 내부에 저장된 제 2 타임스탬프와 일치하지 않으므로, 체킹 로직(134)은 암호화 데이터 영역(161)가 공격받은 것을 나타내는 에러를 출력할 수 있다. 즉, 암호화기(130)는 제 1 공격을 방어할 수 있다.
본 발명의 실시 예에 따르면, 암호화기(130)는 암호화 데이터 영역(161)에 저장되는 타임스탬프를 주기적으로 업데이트할 수 있다. 따라서, 암호화기(130)는 이전 타임스탬프를 이용하는 제 1 공격을 방어할 수 있다.
공격자는 제 8 어드레스(Address[8])에 저장된 제 8 암호화 데이터를 제 6 어드레스(Address[6])에 대응하는 데이터 영역으로 쓰거나 복사할 수 있다(즉, 제 2 공격(Attack 2)). 여기서, 공격자가 접근하는 어드레스는 예시적인 것에 불과하다. 제 2 공격에 의해, 제 6 암호화 데이터의 제 6 보안 데이터(Security Data[6])가 제 8 보안 데이터(Security Data[8])로 변경될 수 있다. 만약, 제 2 공격이 암호화기(130)의 타임스탬프의 업데이트 주기 내에서 수행되는 경우, 제 2 공격에 의해 제 2 타임스탬프가 변경되지 않으므로, 암호화기(130)는 제 2 공격을 방어할 수 없다. 제 2 공격을 방어하기 위해, 암호화기(130)는 보안 데이터에 타임스탬프뿐만 아니라 보안 데이터에 대한 어드레스를 더 병합하고 암호화 데이터를 생성할 수 있다. 이하, 도 5에서, 보안 데이터에 어드레스를 더 병합하는 경우가 설명될 것이다.
도 5는 다른 실시 예에 따라, 도 1의 암호화기에 의해 수행되는 타임스탬프의 업데이트를 예시적으로 보여주는 도면이다. 도 5에서, 도 5의 암호화기(130)와 도 3의 암호화기(130)간의 차이점이 설명될 것이다.
암호화 및 복호화부(133)는 보안 데이터에 타임스탬프뿐만 아니라 어드레스를 더 병합할 수 있다. 프로세서(120)는 보안 데이터가 암호화 데이터 영역(161)에 저장되는 위치를 나타내는 어드레스를 암호화기(130)로 전송할 수 있다. 보안 데이터에 병합되는 데이터는 태그(tag)로 지칭될 수 있다. 도 2 내지 도 3에서, 태그는 타임스탬프만을 포함하였으나, 도 5에서, 태그는 어드레스를 더 포함할 수 있다. 암호화 및 복호화부(133)는 병합된 데이터를 암호화할 수 있다. 즉, 암호화 데이터는 암호화된 어드레스를 더 포함할 수 있다. 암호화 및 복호화부(133)는 복호화 연산을 수행하고, 복호화 데이터의 복호화 어드레스 및 복호화 타임스탬프를 체킹 로직(134)으로 전송할 수 있다.
실시 예에 있어서, 보안 데이터의 사이즈는 암호화 및 복호화부(133)의 암호화 연산 단위와 일치할 수 있다. 어드레스 및 타임스탬프를 합친 사이즈는 암호화 및 복호화부(133)의 암호화 연산 단위와 일치하지 않고 그보다 작을 수 있다. 또는, 어드레스 및 타임스탬프를 합친 사이즈는 암호화 및 복호화부(133)의 암호화 연산 단위와 일치할 수 있다. 어드레스 및 타임스탬프를 합친 사이즈가 암호화 연산 단위와 일치하도록, 타임스탬프의 사이즈가 사전에 설정될 수 있다.
다른 실시 예에 있어서, 보안 데이터, 어드레스, 및 타임스탬프를 모두 합친 사이즈가 암호화 및 복호화부(133)의 암호화 연산 단위와 일치할 수 있다. 이 경우도, 보안 데이터, 어드레스 및 타임스탬프를 합친 사이즈가 암호화 연산 단위와 일치하도록, 타임스탬프의 사이즈가 사전에 설정될 수 있다.
체킹 로직(134)은 복호화 어드레스 및 복호화 타임스탬프가 각각 유효한지 여부를 판별 혹은 확인할 수 있다. 이 경우, 체킹 로직(134)은 복호화 어드레스가 유효하지 않거나 또는 복호화 타임스탬프가 유효하지 않으면, 에러를 SoC(110) 내부의 구성 요소들로 출력할 수 있다.
체킹 로직(134)은 메모리 장치(160)의 어드레스를 사전에 저장할 수 있고, 어드레스의 저장을 위한 레지스터(미도시)를 포함할 수 있다. 암호화기(130)는 메모리 장치(160)의 암호화 데이터 영역(161)을 접근하기 위한 어드레스를 생성하는 어드레스 발생기(139)를 더 포함할 수 있다. 예를 들어, 어드레스 발생기(139)는 카운터를 이용하여 구현될 수 있다.
어드레스 발생기(139)에서 생성된 어드레스는 순차적으로 증가하거나, 감소하거나, 또는 랜덤하게 변경될 수 있다. 타이머(131)의 요청에 응답하여 어드레스 발생기(139)는 암호화 데이터 영역(161) 전체를 접근하기 위한 어드레스를 생성할 수 있다. 암호화 및 복호화부(133)는 프로세서(120)의 요청이 없어도, 타이머(131)의 요청에 응답하여, 암호화 데이터 영역(161) 전체를 접근할 수 있다. 어드레스 발생기(139)는 어드레스를 암호화 및 복호화부(133)로 전송할 수 있고, 암호화 데이터 영역(161)으로의 접근을 위해, 암호화 및 복호화부(133)는 어드레스 발생기(139)에서 생성된 어드레스를 사용할 수 있다. 물론, 어드레스 발생기(139)는 도 3의 암호화기(130)에서도 사용될 수 있다.
어드레스 발생기(139)에서 생성된 어드레스는 체킹 로직(134)에 의해 사용될 수 있다. 어드레스 발생기(139)에서 생성된 어드레스는 SoC(110) 내부에서 존재하므로 유효할 수 있고, 프로세서(120)에 의해 전송된 어드레스와 일치할 수 있다. 체킹 로직(134)은 어드레스 발생기(139)의 어드레스(즉, 보안 데이터에 대한 어드레스)와 암호화 및 복호화부(133)에서 전송된 복호화 어드레스를 비교할 수 있고, 비교 결과에 기초하여 복호화 어드레스가 유효한지 여부를 판별 혹은 확인할 수 있다.
암호화 및 복호화부(133)는 복호화 어드레스가 어드레스 발생기(139)의 어드레스(즉, 보안 데이터에 대한 어드레스)와 일치하고 그리고 복호화 타임스탬프가 체킹 로직(134) 내부에 저장된 제 1 타임스탬프와 일치하면, 복호화 데이터의 보안 데이터, 복호화 어드레스, 및 제 2 타임스탬프를 병합하여 새로운 암호화 데이터로 암호화하고, 새로운 암호화 데이터를 메모리 장치(160)로 전송할 수 있다.
도 6은 도 5의 암호화기에 의해 도 1의 암호화 데이터 영역에 저장되는 암호화 데이터들을 예시적으로 보여주는 도면이다. 도 6은 도 4 및 도 5를 참조하여 설명될 것이다. 도 4에서는 암호화 데이터에 암호화된 어드레스가 포함되지 않았으나, 도 6에서는 암호화 데이터에 암호화된 어드레스가 포함될 수 있다. 도 4는 도 3의 암호화기(130)에 의해 저장되는 암호화 데이터를 도시하고 도 6은 도 5의 암호화기(130)에 의해 저장되는 암호화 데이터를 도시한다.
도 4의 경우와 유사하게, 도 5의 암호화기(130)는 공격자의 제 1 공격을 방어할 수 있다. 도 4의 경우와 달리, 도 5의 암호화기(130)는 공격자의 제 2 공격도 방어할 수 있다. 제 2 공격에 의해, 제 6 암호화 데이터의 제 2 타임스탬프는 변경되지 않지만 제 6 어드레스(Address[6])는 제 8 어드레스(Address[8])로 변경된다. 제 2 공격에 대해, 암호화 및 복호화부(133)는 제 6 암호화 데이터를 복호화 데이터로 복호화하고, 체킹 로직(134)은 복호화 타임스탬프 및 어드레스가 각각 유효한지 여부를 판별 혹은 확인할 수 있다. 여기서, 복호화 어드레스(즉, 제 8 어드레스(Address[8])는 제 2 공격에 의해 변경되었으므로, 복호화 어드레스는 SoC(110) 내부의 어드레스 발생기(139)의 어드레스와 일치하지 않는다. 따라서, 체킹 로직(134)은 에러를 출력할 수 있고, 암호화기(130)는 제 2 공격을 방어할 수 있다.
도 7은 도 5의 체킹 로직을 좀 더 상세하게 보여주는 블록도이다. 도 7은 도 1 및 도 5를 참조하여 설명될 것이다. 도 5의 체킹 로직(134)은 타임스탬프 비교기(136), 어드레스 비교기(137), 및 에러 발생기(138)를 포함할 수 있다.
타임스탬프 비교기(136)는 메모리 장치(160)로부터 전송되고 암호화 및 복호화부(133)에 의해 복호화된 타임스탬프와 SoC(110) 내부의 타임스탬프(즉, 카운터(132)에 의해 생성된 타임스탬프)를 비교할 수 있다. SoC(110) 내부의 타임스탬프는 카운터(132)에 의해 생성되고 SoC(110) 외부로 출력되지 않은 타임스탬프이다. 타임스탬프 비교기(136)는 비교 결과를 에러 발생기(138)로 전송할 수 있다.
어드레스 비교기(137)는 메모리 장치(160)로부터 전송되고 복호화된 어드레스와 SoC(110) 내부의 어드레스를 비교할 수 있다. SoC(110) 내부의 어드레스는 어드레스 발생기(139)에 의해 생성되고 SoC(110) 외부로 출력되지 않은 어드레스이다. 어드레스 비교기(137)는 비교 결과를 에러 발생기(138)로 전송할 수 있다.
에러 발생기(138)는 타임스탬프 비교기(136) 및 어드레스 비교기(137)의 비교 결과들에 기초하여 에러를 출력할 수 있다. 에러 발생기(138)는, 타임스탬프 비교기(136)의 비교 결과가 복호화 타임스탬프가 유효하지 않음을 나타내거나 또는 어드레스 비교기(137)의 비교 결과가 복호화 어드레스가 유효하지 않음을 나타내면, 에러를 출력할 수 있다.
실시 예에 있어서, 에러는 프로세서(120)로 전송될 수 있다. 에러는 프로세서(120)와 암호화기(130)간에 할당된 전용 핀을 통해 출력될 수 있다. 에러는 프로세서(120)와 암호화기(130)간의 인터페이스에 따라 동작하는 버스(미도시)를 통해 출력될 수 있다. 에러가 버스를 통해 출력되는 경우, 에러 발생기(138)가 출력하는 에러 응답의 형태는 프로세서(120)와 암호화기(130)간의 규약에 따라 사전에 정의될 수 있다.
다른 실시 예에 있어서, 에러는 전자 장치(100)의 다른 구성 요소(미도시)로 전송될 수 있다. 예를 들어, 에러는 유저가 에러를 확인할 수 있도록 DSI(display serial interface) 장치(미도시)로 전송될 수 있다. 에러는 SoC(110)와 다른 구성 요소간에 할당된 전용 핀을 통해 또는 SoC(110)와 다른 구성 요소간의 인터페이스 동작에 따라 동작하는 버스를 통해 출력될 수 있다.
도 8은 도 1의 프로세서가 암호화 데이터 영역에 저장된 데이터를 요청하는 경우를 예시적으로 보여주는 도면이다. 도 8은 도 1 및 도 6을 참조하여 설명될 것이다. 도 8에서는, 도 6과 유사하게, 암호화 데이터 영역(161)에 제 1 내지 제 9 암호화 데이터들이 저장될 수 있다. 암호화 데이터들의 수는 도시된 것에 한정되지 않는다. 제 1 내지 제 9 암호화 데이터들의 타임스탬프들은 제 N 타임스탬프에서 제 N+1 타임스탬프로 업데이트될 수 있다. 도 8에서, 제 1 내지 제 3 암호화 데이터들의 타임스탬프들은 제 N+1 타임스탬프로 각각 업데이트가 완료되었다고 가정하고, 제 4 내지 제 9 암호화 데이터들의 타임스탬프들은 제 N+1 타임스탬프로 아직 업데이트가 완료되지 않았다고 가정한다.
프로세서(120)는 제 4 보안 데이터에 대한 읽기 명령을 암호화기(130)로 전송할 수 있다. 암호화기(130)는 프로세서(120)의 읽기 명령에 응답하여 메모리 장치(160)에 제 4 보안 데이터를 포함하는 제 4 암호화 데이터를 요청할 수 있다. 전술한 가정에 따라, 제 4 암호화 데이터에 포함된 타임스탬프는 제 N 타임스탬프이다. 이하, 프로세서(120)의 읽기 명령이 처리되는 동작을 설명한다.
도 9는 도 8에서 설명된 프로세서의 읽기 명령을 처리하는 암호화기의 동작을 예시적으로 보여주는 도면이다. 도 9는 도 1, 도 5, 및 도 8을 참조하여 설명될 것이고, 도 9의 암호화기(130)와 도 5의 암호화기(130)간의 차이점 그리고 도 1의 프로세서(120)의 읽기 명령을 처리하는 동작이 설명될 것이다.
타이머(131)는 타임스탬프의 업데이트 주기만큼 시간이 경과하면, 암호화 데이터 영역(161)에 저장된 암호화 데이터의 타임스탬프가 제 N 타임스탬프에서 제 N+1 타임스탬프로 업데이트되도록, 타임스탬프의 업데이트를 카운터(132) 및 암호화 및 복호화부(133)로 요청할 수 있다. 카운터(132)는 타이머(131)의 요청에 응답하여 제 N+1 타임스탬프를 암호화 및 복호화부(133)로 전송할 수 있다.
실시 예에 있어서, 체킹 로직(134)은 제 N 및 제 N+1 타임스탬프들을 모두 내부적으로 저장할 수 있다. 암호화 데이터의 타임스탬프가 업데이트되는 중이면, 도 8에서 도시된 것과 같이, 암호화 데이터 영역(161)의 타임스탬프들 각각은 제 N 타임스탬프 또는 제 N+1 타임스탬프일 수 있다. 따라서, 체킹 로직(134)은 복호화 타임스탬프가 제 N 타임스탬프 및 제 N+1 타임스탬프 중 어느 하나와 일치하면 복호화 데이터는 유효한 것으로 판별 혹은 확인할 수 있다. 이를 위해, 체킹 로직(134)은 두 개의 타임스탬프들(즉, 제 N 타임스탬프 및 제 N+1 타임스탬프)에 대해 비교 동작을 각각 수행할 수 있다.
도 9를 참조하면, 암호화 및 복호화부(133)는 제 4 암호화 데이터를 복호화 데이터로 복호화하고, 복호화 어드레스 및 제 N 타임스탬프를 체킹 로직(134)으로 전송할 수 있다. 체킹 로직(134)은 복호화 어드레스 및 제 N 타임스탬프가 각각 유효한지 여부를 판별 혹은 확인할 수 있다.
실시 예에 있어서, 체킹 로직(134)은 복호화 어드레스가 프로세서(120)로부터 읽기 명령과 함께 전송된 어드레스와 일치하는지 여부를 판별할 수 있다. 즉, 프로세서(120)의 읽기 명령에 응답하여, 체킹 로직(134)이 동작하는 경우, 어드레스 발생기(139)에서 생성되는 어드레스가 체킹 로직(134)의 비교 동작에 사용되지 않을 수 있다. 반면에, 타이머(131)의 타임스탬프의 요청에 응답하여, 체킹 로직(134)이 동작하는 경우, 어드레스 발생기(139)에서 생성되는 어드레스가 체킹 로직(134)의 비교 동작에 사용될 수 있다.
체킹 로직(134)은 복호화 어드레스 및 제 N 타임스탬프가 모두 유효하면, 에러를 출력하지 않을 수 있다. 암호화 및 복호화부(133)는 체킹 로직(134)의 판별 결과 혹은 확인 결과에 기초하여 제 4 보안 데이터(Security Data[4])를 프로세서(120)로 출력할 수 있다. 즉, 프로세서(120)의 읽기 명령이 처리될 수 있다.
도 10은 도 1의 프로세서가 암호화 데이터 영역에 저장된 데이터를 요청하는 경우를 예시적으로 보여주는 도면이다. 도 10은 도 1 및 도 8을 참조하여 설명될 것이다. 도 10에서는, 도 8과 달리, 제 1 내지 제 5 암호화 데이터들의 타임스탬프들은 제 N+1 타임스탬프로 각각 업데이트가 완료되었다고 가정하고, 제 6 내지 제 9 암호화 데이터들의 타임스탬프들은 제 N+1 타임스탬프로 아직 업데이트가 완료되지 않았다고 가정한다. 도 8과 유사하게, 도 1의 프로세서(120)는 제 4 보안 데이터에 대한 읽기 명령을 암호화기(130)로 전송할 수 있다. 암호화기(130)는 프로세서(120)의 읽기 명령에 응답하여 메모리 장치(160)에 제 4 보안 데이터를 포함하는 제 4 암호화 데이터를 요청할 수 있다.
도 11은 도 10에서 설명된 프로세서의 읽기 명령을 처리하는 암호화기의 동작을 예시적으로 보여주는 도면이다. 도 11은 도 9 및 도 10을 참조하여 설명될 것이고, 도 11의 암호화기(130)와 도 9의 암호화기(130)간의 차이점이 설명될 것이다.
암호화 및 복호화부(133)는 제 4 암호화 데이터를 복호화 데이터로 복호화하고, 복호화 어드레스 및 제 N+1 타임스탬프를 체킹 로직(134)으로 전송할 수 있다. 메모리 장치(160)에 공격이 없는 경우, 체킹 로직(134)은 어드레스 및 제 N+1 타임스탬프를 각각 유효한 것으로 판별 혹은 확인할 수 있고 에러를 출력하지 않을 수 있다. 암호화 및 복호화부(133)는 체킹 로직(134)의 판별 결과 또는 확인 결과에 기초하여 제 4 보안 데이터(Security Data[4])를 프로세서(120)로 출력할 수 있다.
도 12는 도 1의 암호화기에 의해 메모리 장치에 저장된 타임스탬프가 업데이트되는 동작을 예시적으로 보여주는 도면이다. 도 12는 도 1 내지 도 3을 참조하여 설명될 것이다. 도 12에서, 제 1 내지 제 3 암호화 데이터들은 암호화 데이터 영역(161)에 저장된 것으로 가정한다. 여기서, 제 1 내지 제 3 암호화 데이터들의 수는 도시된 것에 한정되지 않고, 제 1 내지 제 3 암호화 데이터들에는 암호화 및 복호화부(133)에 의해 암호화된 제 1 내지 제 3 어드레스들(미도시)이 더 포함될 수도 있다.
T1 시점은 암호화기(130)에 의해 제 1 내지 제 3 암호화 데이터들의 타임스탬프들이 모두 제 N 타임스탬프로 업데이트가 완료된 시점을 나타낼 수 있다. T1 시점 내지 T2 시점 동안, 제 1 내지 제 3 암호화 데이터들의 타임스탬프들은 제 N 타임스탬프일 수 있다. 제 N 타임스탬프는 유효한 타임스탬프로서 체킹 로직(134) 내부에 저장될 수 있다. T1 시점 내지 T2 시점 동안, 프로세서(120)가 읽기 명령을 발행하면, 암호화기(130)는 읽기 요청에 따른 암호화 데이터의 타임스탬프가 제 N 타임스탬프와 일치하는지 판별 혹은 확인할 수 있다.
T2 시점에서, 암호화기(130)는 제 1 내지 제 3 암호화 데이터들의 타임스탬프들을 모두 제 N+1 타임스탬프로 업데이트하는 동작을 시작할 수 있다. T2 시점 내지 T3 시점 동안, 암호화기(130)는 제 1 내지 제 3 암호화 데이터들의 타임스탬프들을 제 N+1 타임스탬프로 순차적으로 업데이트할 수 있다. 다만, 도시된 바와 달리, 암호화기(130)는 제 1 내지 제 3 암호화 데이터들의 타임스탬프들을 제 N+1 타임스탬프로 랜덤하게 업데이트할 수 있다.
T2 시점 내지 T3 시점간의 간격은 업데이트 주기가 아닌 업데이트가 수행되는 간격에 대응할 수 있다. 즉, 도 12에서는 T1 시점 내지 T2 시점간의 간격과 T2 시점 내지 T3 시점간의 간격이 동일한 것으로 도시되었으나, T2 시점 내지 T3 시점간의 간격은 T1 시점 내지 T2 시점간의 간격보다 짧을 수 있다.
T2 시점 내지 T3 시점 동안, 제 N 타임스탬프 및 제 N+1 타임스탬프는 유효한 타임스탬프로서 체킹 로직(134) 내부에 각각 저장될 수 있다. T2 시점 내지 T3 시점 동안, 프로세서(120)가 읽기 명령을 발행하면, 암호화기(130)는 읽기 요청에 따른 암호화 데이터의 타임스탬프가 제 N 타임스탬프 또는 제 N+1 타임스탬프와 일치하는지 여부를 판별 혹은 확인할 수 있다.
T3 시점은 암호화기(130)에 의해 제 1 내지 제 3 암호화 데이터들의 타임스탬프들이 모두 제 N+1 타임스탬프로 업데이트가 완료된 시점을 나타낼 수 있다. T3 시점 내지 T4 시점 동안의 암호화기(130)의 동작은 T1 시점 내지 T2 시점간의 암호화기(130)의 동작과 유사할 수 있다. 또한, T4 시점 이후의 암호화기(130)의 동작은 T2 시점 이후의 암호화기(130)의 동작과 유사할 수 있다.
실시 예에 있어서, T2 시점 내지 T4 시점간의 간격은 타임스탬프의 업데이트 주기와 일치할 수 있다. 예를 들어, 타이머(131)는 카운터(132) 및 암호화 및 복호화부(133)로 T2 시점에서 T4 시점으로 시간이 경과됨을 알리고 타임스탬프의 업데이트를 요청하도록 구성될 수 있다.
도 13은 도 1의 프로세서, 암호화기, 및 메모리 장치간의 동작을 예시적으로 보여주는 순서도이다. 도 13은 도 1 내지 도 12를 참조하여 설명될 것이다.
S110 단계에서, 프로세서(120)는 보안 데이터 및 보안 데이터에 대한 어드레스를 암호화기(130)로 전송할 수 있다. 여기서, 어드레스는 보안 데이터가 저장되는 메모리 장치(160)의 어드레스로서 도 1의 암호화 데이터 영역(161) 중 특정한 위치를 접근하는데 사용될 수 있다.
S115 단계에서, 암호화기(130)는 보안 데이터, 어드레스, 및 타임스탬프를 병합하고 병합된 데이터를 암호화 데이터로 암호화할 수 있다. 실시 예에 있어서, 암호화기(130)는 보안 데이터 및 타임스탬프를 병합하고 어드레스는 병합하지 않을 수도 있다.
S120 단계에서, 암호화기(130)는 암호화 데이터를 메모리 장치(160)로 전송할 수 있다. 암호화 데이터는 메모리 장치(160)의 암호화 데이터 영역(161)에 저장될 수 있다. S120 단계 이후에, 암호화기(130)는 공격자의 다양한 공격들을 방어하기 위해, 암호화 데이터 영역(161)에 저장된 타임스탬프를 주기적으로 업데이트할 수 있다.
S125 단계에서, 암호화기(130)는 타임스탬프의 업데이트 주기만큼 시간이 경과하였는지 판별할 수 있다. 경과된 경우, S135 단계가 수행될 수 있고, 경과되지 않은 경우, S130 단계가 수행될 수 있다.
S130 단계에서, 암호화기(130)는 프로세서(120)의 업데이트 요청이 있는지 확인할 수 있다. 실시 예에 있어서, 프로세서(120)는 암호화기(130)의 타임스탬프의 업데이트 주기와 관계없이 암호화기(130)로 타임스탬프의 업데이트를 요청할 수 있다. 프로세서(120)의 업데이트 요청은 유저의 요청에 따라 발생할 수 있다. 또는, 프로세서(120)의 업데이트 요청은 S110 단계에서 전송된 보안 데이터의 중요도 혹은 메모리 장치(160)에 이미 저장된 보안 데이터의 중요도에 따라 발생할 수 있다.
프로세서(120)의 업데이트 요청이 없으면, S125 단계가 다시 수행될 수 있다. 이 경우, 암호화기(130)는 프로세서(120)의 쓰기 명령 또는 읽기 명령 등과 같은 다양한 명령들을 처리할 수 있다. 예를 들어, 프로세서(120)가 쓰기 명령을 발행하면, S110 단계 내지 S120 단계의 동작들이 반복될 수도 있다.
타임스탬프의 업데이트 주기만큼 시간이 경과되거나 또는 프로세서(120)의 업데이트 요청이 있는 경우, S135 단계가 수행될 수 있다. S135 단계에서, 암호화기(130)는 메모리 장치(160)로 암호화 데이터를 요청할 수 있다. 예를 들어, 암호화기(130)는 메모리 장치(160)로 암호화 데이터를 읽기 위한 읽기 명령을 전송할 수 있다. S140 단계에서, 메모리 장치(160)는 암호화기(130)의 요청에 응답하여, 암호화 데이터를 암호화기(130)로 전송할 수 있다.
S145 단계에서, 암호화기(130)는 메모리 장치(160)에서 전송된 암호화 데이터를 복호화 데이터로 복호화할 수 있다. S150 단계에서, 암호화기(130)는 복호화 어드레스 및 복호화 타임스탬프가 각각 유효한지 여부를 판별 혹은 확인할 수 있다. 실시 예에 있어서, 암호화기(130)는 복호화 타임스탬프만 유효한지 여부를 판별 혹은 확인할 수도 있다. 복호화 어드레스 및 복호화 타임스탬프가 각각 유효한 것으로 판별되면, S155 단계 및 S160 단계가 수행될 수 있고, 그렇지 않으면, S165 단계가 수행될 수 있다.
S155 단계에서, 암호화기(130)는 보안 데이터, 어드레스, 및 새로운 타임스탬프를 병합하고 병합된 데이터를 암호화 데이터로 암호화할 수 있다. S155 단계는 S115 단계와 유사할 수 있으나, S155 단계의 타임스탬프와 S115 단계의 타임스탬프는 서로 상이하다. 즉, 보안 데이터에 대한 타임스탬프가 업데이트될 수 있다. S160 단계에서, 암호화기(130)는 암호화 데이터를 메모리 장치(160)로 전송할 수 있다.
S165 단계에서, 암호화기(130)는 프로세서(120)로 에러를 전송할 수 있다. 에러는 메모리 장치(160)가 공격받은 것을 나타낼 수 있다. S170 단계에서, 프로세서(170)는 에러를 감지하고 방어할 수 있다. 예를 들어, 프로세서(170)는 전자 장치(100)의 재부팅을 수행하거나, 메모리 장치(160)에 보안 데이터를 다시 쓰거나, 또는 에러에 대한 로그 파일을 생성하고 저장할 수 있다. 로그 파일은 공격들을 분석하고 방어하기 위해 사용될 수 있다.
실시 예에 있어서, S135 단계 내지 S170 단계의 동작들은 메모리 장치(160)의 암호화 데이터 영역(161)에 할당된 모든 어드레스들에 대해 수행될 수 있다. 따라서, 암호화 데이터 영역(161)에 저장된 암호화 데이터들에 대한 타임스탬프들이 모두 새로운 타임스탬프로 업데이트될 수 있다.
도 14는 도 1의 프로세서, 암호화기, 및 메모리 장치간의 동작을 예시적으로 보여주는 순서도이다. 도 14는 프로세서(120)가 읽기 명령을 발행한 경우에 관한 것이다. 도 14는 도 1 내지 도 13을 참조하여 설명될 것이다
S210 단계에서, 프로세서(120)는 보안 데이터에 대한 읽기 명령을 암호화기(130)로 전송할 수 있다. 프로세서(120)는 보안 데이터를 요청할 수 있다. 프로세서(120)는 보안 데이터에 대한 메모리 장치(160)의 어드레스도 암호화기(130)로 전송할 수 있다.
실시 예에 있어서, 프로세서(120)는 암호화기(130)가 메모리 장치(160)의 타임스탬프들을 업데이트하는 동안에 읽기 명령을 암호화기(130)로 전송할 수 있다. 읽기 명령의 전송 시점은, 예를 들어, 도 12의 T2 시점 내지 T3 시점간에 있을 수 있다. 암호화기(130)는 두 개의 타임스탬프들(즉, 메모리 장치(160)로 전송되고 암호화기(130) 내부에 저장된 타임스탬프 및 업데이트를 위해 암호화기(130)에서 생성된 새로운 타임스탬프)을 모두 유효한 것으로 판별 혹은 확인할 수 있다. 암호화기(130)는 메모리 장치(160)의 타임스탬프들을 업데이트하는 동안에도, 프로세서(120)에서 전송된 명령을 처리할 수 있다.
다른 실시 예에 있어서, 프로세서(120)는 암호화기(130)가 메모리 장치(160)의 타임스탬프들을 업데이트하지 않는 동안에 읽기 명령을 암호화기(130)로 전송할 수도 있다. 읽기 명령의 전송 시점은, 예를 들어, 도 12의 T1 시점 내지 T2 시점간에 또는 T3 시점 내지 T4 시점간에 있을 수 있다. 이 경우, 암호화기(130)는 하나의 타임스탬프(즉, 메모리 장치(160)로 전송되고 암호화기(130) 내부에 저장된 타임스탬프)만을 유효한 것으로 판별 혹은 확인할 수 있다.
S215 단계 내지 S240 단계들의 동작들은 도 13의 S135 단계 내지 S150 단계, S165 단계, 그리고 S170 단계들의 동작들과 유사할 수 있다. 다만, S230 단계에서 체킹 로직(134)이 비교 동작을 위해 사용하는 어드레스와 도 13의 S150 단계에서 체킹 로직(134)이 비교 동작을 위해 사용하는 어드레스는 서로 다를 수 있다. S230 단계에서 체킹 로직(134)이 비교 동작을 위해 사용하는 어드레스는 S210 단계에서 프로세서(120)로부터 전송된 읽기 명령에 대한 어드레스일 수 있다. 반면에, 도 13의 S150 단계에서 체킹 로직(134)이 비교 동작을 위해 사용하는 어드레스는 타임스탬프의 업데이트 요청에 응답하여 어드레스 발생기(139)에서 생성된 어드레스일 수 있다.
S245 단계에서, 암호화기(130)는 복호화 어드레스 및 복호화 타임스탬프가 모두 유효한 것으로 판별 혹은 확인하고, 보안 데이터를 프로세서(120)로 전송할 수 있다. 프로세서(120)는 보안 데이터를 수신하고 처리할 수 있다.
도 15는 본 발명의 실시 예에 따른 암호화기의 동작을 예시적으로 보여주는 순서도이다. 도 15는 도 1 내지 도 14를 참조하여 설명될 것이다.
S310 단계에서, 암호화기(130)는 타임스탬프의 업데이트 주기만큼 시간이 경과하였는지 여부를 판별할 수 있다. S310 단계는 암호화기(130)의 타이머(131)에 의해 수행될 수 있고, 도 13의 S125 단계와 대응할 수 있다.
S320 단계에서, 암호화기(130)는 업데이트를 위해 새로운 타임스탬프를 생성할 수 있다. S320 단계는 암호화기(130)의 카운터(132)에 의해 수행될 수 있다.
S330 단계에서, 암호화기(130)는 메모리 장치(160)의 암호화 데이터를 읽을 수 있다. 암호화기(130)는 메모리 장치(160)로부터 암호화 데이터(혹은 읽기 데이터)를 수신할 수 있다. S340 단계에서, 암호화기(130)는 암호화 데이터를 복호화할 수 있다. 실시 예에 있어서, S320 단계는 S330 단계 및 S340 단계와 함께 수행되거나 또는 S330 단계 및 S340 단계가 수행된 다음에 수행될 수도 있다.
S350 단계에서, 암호화기(130)는 복호화 어드레스 및 복호화 타임스탬프가 각각 유효한지 여부를 판별 혹은 확인할 수 있다. 좀 더 구체적으로, 암호화기(130)는 복호화 어드레스가 어드레스 발생기(139)의 어드레스와 일치하는지 여부를 판별 혹은 확인할 수 있고, 복호화 타임스탬프가 체킹 로직(134) 내부에 저장된 타임스탬프와 일치하는지 여부를 판별 혹은 확인할 수 있다. 복호화 어드레스 및 복호화 타임스탬프가 모두 유효하면, S360 단계가 수행될 수 있고, 그렇지 않으면, S380 단계가 수행될 수 있다.
S360 단계에서, 암호화기(130)는 복호화 데이터의 보안 데이터, 복호화 어드레스, 및 S320 단계에서 생성된 새로운 타임스탬프를 병합하고 병합된 데이터를 암호화할 수 있다. S370 단계에서, 암호화기(130)는 타임스탬프가 업데이트된 암호화 데이터를 메모리 장치(160)에 쓸 수 있다. S380 단계에서, 암호화기(130)는 에러를 전송할 수 있다.
도시되진 않았지만, 암호화기(130)는 S370 단계 또는 S380 단계 이후에 S320 단계 내지 S380 단계를 반복적으로 수행할 수 있다. S320 단계 내지 S380 단계는 암호화 데이터 영역(161)의 모든 타임스탬프들이 업데이트될 때까지 반복될 수 있다.
S390 단계에서, 암호화기(130)는 프로세서(120)의 명령을 처리할 수 있다. 프로세서(120)가 메모리 장치(160)의 암호화 데이터 영역(161)에 저장된 보안 데이터를 접근하는 경우, 암호화기(130)는 암호화 데이터 영역(161)에 저장된 타임스탬프가 유효한지 여부를 판별 혹은 확인하여 메모리 장치(160)가 공격 받았는지 여부를 판별할 수 있다.
도 16은 본 발명의 다른 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도이다. 도 16은 도 1 내지 도 15를 참조하여 설명될 것이다. 전자 장치(200)는 SoC(210) 및 제 1 내지 제 4 메모리 장치들(261~264)을 포함할 수 있다. SoC(210)는 프로세서(220), 암호화기(230), 및 제 1 내지 제 4 메모리 컨트롤러들(241~244)을 포함할 수 있다. 프로세서(220)는 도 1 내지 도 14에서 전술한 프로세서(120)와 실질적으로 동일할 수 있다.
암호화기(230)는 도 1 내지 도 15에서 전술한 암호화기(130)와 실질적으로 동일할 수 있다. 암호화기(230)는 프로세서(220)에서 버스(250)를 통해 전송된 보안 데이터를 암호화하거나 또는 제 1 내지 제 4 메모리 컨트롤러들(241~244) 중 적어도 하나로부터 전송된 암호화 데이터를 복호화할 수 있다. 예를 들어, 암호화기(230)는 프로세서(220)에 대해 슬레이브(slave) 장치일 수 있고, 제 1 내지 제 4 메모리 컨트롤러들(241~244)에 대해 마스터(master) 장치일 수 있다.
암호화기(230)는 보안 메모리로서 동작할 수 있고, 프로세서(220)로부터 어드레스 공간을 제공받을 수 있다. 프로세서(220)는 암호화기(230)로 할당된 어드레스를 이용하여 버스(250)를 통해 보안 데이터에 대한 쓰기 명령을 암호화기(230)로 전송할 수 있다(제 1 경로). 암호화기(230)는 쓰기 명령에 따라 보안 데이터와 타임스탬프를 병합하고, 병합된 데이터를 암호화하고, 암호화 데이터를 버스(250)를 통해 제 1 내지 제 4 메모리 컨트롤러들(241~244) 중 적어도 하나로 전송할 수 있다(제 2 경로). 제 1 내지 제 4 메모리 컨트롤러들(241~244) 중 적어도 하나는 전송된 암호화 데이터를 제 1 내지 제 4 메모리 장치들(261~264) 중 적어도 하나에 저장할 수 있다.
여기서, 암호화 데이터가 암호화기(230)에 저장되지 않고, 제 1 내지 제 4 메모리 장치들(261~264)의 암호화 데이터 영역들에 저장되므로, 암호화기(230)는 온 더 플라이(on-the-fly) 암호화기로 지칭될 수 있다.
암호화기(230)는 제 1 내지 제 4 메모리 장치들(261~264)의 암호화 데이터 영역들에 저장된 타임스탬프를 업데이트할 수 있다. 암호화기(230)는 제 1 내지 제 4 메모리 컨트롤러들(241~244)로부터 암호화 데이터를 읽을 수 있다. 암호화기(230)는 제 1 내지 제 4 메모리 장치들(261~264)의 암호화 데이터 영역들을 순서대로 접근하거나 혹은 랜덤하게 접근할 수 있다. 암호화기(230)는 인터리빙(interleaving) 방식으로 1 내지 제 4 메모리 장치들(261~264)의 암호화 데이터 영역들을 접근할 수 있다.
암호화기(230)는 암호화 데이터를 복호화하고, 복호화 타임스탬프가 유효한지 확인할 수 있다. 이후, 암호화기(230)는 버스(250)를 통해 제 1 내지 제 4 메모리 컨트롤러들(241~244)로 새로운 타임스탬프가 암호화된 암호화 데이터를 전송할 수 있다. 이후, 새로운 타임스탬프가 제 1 내지 제 4 메모리 장치들(261~264)의 암호화 데이터 영역들에 저장될 수 있다. 즉, 하나의 암호화기(230)는 제 1 내지 제 4 메모리 장치들(261~264)의 타임스탬프를 관리할 수 있고, 제 1 내지 제 4 메모리 장치들(261~264)에 의해 공유될 수 있다.
프로세서(220)는 암호화기(230)로 할당된 어드레스를 이용하여 버스(250)를 통해 보안 데이터에 대한 읽기 명령을 암호화기(230)로 전송할 수 있다(제 1 경로). 암호화기(230)는 읽기 명령에 제 1 내지 제 4 메모리 컨트롤러들(241~244) 중 적어도 하나로부터 암호화 데이터를 수신할 수 있다(제 2 경로). 암호화기(230)는 암호화 데이터를 복호화하고, 복호화 타임스탬프 및 어드레스가 각각 유효한지 여부를 판별할 수 있다. 암호화기(230)는 복호화 타임스탬프 및 어드레스가 각각 유효하면, 보안 데이터를 버스(250)를 통해 프로세서(220)로 전송할 수 있다(제 1 경로).
실시 예에 있어서, 도시된 바와 달리, SoC(210)는 제 1 내지 제 4 메모리 장치들(261~264)의 수와 동일한 암호화기들을 포함할 수 있다. 이 경우, 암호화기들은 제 1 내지 제 4 메모리 장치들(261~264)을 각각 접근할 수 있다. 예를 들어, 도시된 암호화기(230)는 제 1 메모리 장치(261)의 암호화 데이터 영역(261_1)의 타임스탬프만을 업데이트할 수 있고, 제 2 내지 제 4 메모리 장치들(262~264)로는 접근하지 않을 수 있다.
제 1 내지 제 4 메모리 컨트롤러들(241~244)은 프로세서(220) 또는 암호화기(230)의 요청들에 따라 제 1 내지 제 4 메모리 장치들(261~264)을 각각 제어할 수 있다. 제 1 내지 제 4 메모리 컨트롤러들(241~244)은 SoC(210)와 제 1 내지 제 4 메모리 장치들(261~264)간의 통신을 위한 인터페이스를 제공할 수 있다. 제 1 내지 제 4 메모리 컨트롤러들(241~244)은 프로세서(220) 또는 암호화기(230)의 요청들에 따라 데이터를 제 1 내지 제 4 메모리 장치들(261~264)로 각각 전송하거나 또는 제 1 내지 제 4 메모리 장치들(261~264)에서 각각 전송된 데이터를 프로세서(220) 또는 암호화기(230)로 제공할 수 있다.
실시 예에 있어서, 제 1 내지 제 4 메모리 컨트롤러들(241~244)은 DDR(double date rate)과 관련된 인터페이스 규약에 따라 동작할 수 있다. 다른 실시 예에 있어서, 제 1 내지 제 4 메모리 컨트롤러들(241~244)은 USB(universal serial bus), SCSI(small computer system interface), PCIe(peripheral component interconnect express), M-PCIe(mobile PCIe), ATA(advanced technology attachment), PATA(parallel ATA), SATA(serial ATA), SAS(serial attached SCSI), IDE(integrated drive electronics), UFS(universal flash storage) 등 제 1 내지 제 4 메모리 장치들(261~264)과 관련된 다양한 인터페이스 규약들 중 하나 이상에 따라 동작할 수 있다.
버스(250)는 프로세서(220), 암호화기(230), 및 제 1 내지 제 4 메모리 컨트롤러들(241~244)간의 데이터 입출력 경로 또는 명령 입출력 경로 등을 제공할 수 있다. 예를 들어, 버스(250)는 AMBA(advanced microcontroller bus architecture), AHB(advanced high-performance bus), APB(advanced peripheral bus), AXI(advanced eXtensible interface), ASB(advanced system bus), ACE(AXI coherency extensions), 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
제 1 내지 제 4 메모리 장치들(261~264)은 제 1 내지 제 4 메모리 컨트롤러들(241~244)의 제어들에 따라 각각 동작할 수 있다. 도 16에 도시된 제 1 내지 제 4 메모리 장치들(261~264)의 수는 예시적인 것에 불과하고, 메모리 장치들을 제어하는 메모리 컨트롤러의 수도 도시된 것에 한정되지 않는다.
제 1 메모리 장치(261)는 암호화 데이터 영역(261_1)을 포함할 수 있다. 예를 들어, SoC(210)의 요청에 따라 제 1 메모리 장치(261)의 모든 데이터 영역이 암호화 데이터 영역(261_1)으로 사전에 설정될 수 있다.
실시 예에 있어서, 제 1 메모리 장치(261)는 DDR SDRAM(double data rate synchronous dynamic random access memory), DDR2 SDRAM, DDR3 SDRAM, DDR4 SDRAM, DDR5 SDRAM, LPDDR(low power double data rate) SDRAM, LPDDR2 SDRAM, LPDDR3 SDRAM, LPDDR4 SDRAM, LPDDR4X SDRAM, LPDDR5 SDRAM, GDDR(graphics double data rate) SDRAM, GDDR2 SDRAM, GDDR3 SDRAM, GDDR4 SDRAM, GDDR5 SDRAM, GDDR6 SDRAM 등과 같은 다양한 DRAM 장치들 중 어느 하나 혹은 조합일 수 있다. 또한, 제 1 메모리 장치(261)는 HBM(high bandwidth memory), HBM2, HBM3 등과 같이 DRAM 다이들(dies)이 쌓여진(stacked) 메모리 장치일 수 있다. 또한, 제 1 메모리 장치(261)는 SRAM(static random access memory) 장치 NAND 플래시 메모리(NAND flash memory) 장치, NOR 플래시 메모리(NOR flash memory) 장치, RRAM(resistive random access memory) 장치, FRAM(ferroelectric random access memory) 장치, PRAM(phase change random access memory) 장치, TRAM(thyristor random access memory) 장치, MRAM(magnetic random access memory) 장치 등일 수 있다.
제 2 내지 제 4 메모리 장치들(262~264)은 제 1 메모리 장치(261)와 동일하게 구현될 수도 있고 그렇지 않을 수도 있다. 제 1 내지 제 4 메모리 장치들(261~264) 중 어느 하나는 다른 메모리 장치들과 상이할 수 있다. 예를 들어, 제 1 내지 제 3 메모리 장치들(261~263)은 범용 DRAM 장치일 수 있고, 제 4 메모리 장치(264)는 그래픽용 DRAM 장치이거나 고대역폭을 위한 HBM 장치일 수 있다. 본 발명의 실시 예에 따른 암호화기(230)는 제 1 내지 제 4 메모리 장치들(261~264)의 종류와 관계없이, 제 1 내지 제 4 메모리 장치들(261~264)의 암호화 데이터 영역에 암호화 데이터와 함께 타임스탬프를 저장할 수 있고 저장된 타임스탬프를 주기적으로 업데이트할 수 있다.
다른 실시 예에 있어서, 제 1 내지 제 4 메모리 장치들(261~264)은 JEDEC(joint electron device engineering council) 표준을 따르는 DIMM(dual in-line memory module)을 구성할 수 있다. 또는, 제 1 내지 제 4 메모리 장치들(261~264)은 RDIMM(registered DIMM), LRDIMM(load reduced DIMM), UDIMM(unbuffered DIMM), FB-DIMM(fully buffered DIMM), SO-DIMM(small outline DIMM), 또는 다른 메모리 모듈(예를 들면, SIMM(single in-line memory module)을 구성할 수도 있다.
또 다른 실시 예에 있어서, 제 1 메모리 장치(261)는 다양한 반도체 패키지를 이용하여 구현될 수 있다. 예를 들어, 반도체 패키지는 PoP(package on package), BGAs(ball grid arrays), CSPs(chip scale packages), PLCC(plastic leaded chip carrier), PDIP(plastic dual in-line package), Die in Waffle Pack, Die in Wafer Form, COB(chip on board), CERDIP(ceramic dual in-line package), MQFP(metric quad flat pack), TQFP(thin quad flat pack), SOIC(small outline integrated circuit), SSOP(shrink small outline package), TSOP(thin small outline package), SIP(system in package), MCP(multi chip package), WFP(wafer-level fabricated package), WSP(wafer-level processed stack package) 등을 포함할 수 있다. 제 2 내지 제 4 메모리 장치들(262~264)도 위와 같은 다양한 반도체 패키지를 이용하여 각각 구현될 수 있다. 제 1 내지 제 4 메모리 장치들(261~264) 각각은 메모리 다이일 수 있고, 하나의 패키지에 모두 포함될 수 있다. SoC(210)도 위와 같은 다양한 반도체 패키지를 이용하여 구현될 수 있다.
도 17은 본 발명의 또 다른 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도이다. 도 17에서, 전자 장치(300)와 도 16의 전자 장치(200)간의 차이점을 위주로 설명할 것이다.
SoC(310)는 도 16의 SoC(210)와 실질적으로 동일하게 구현될 수 있다. 다만, SoC(310)는 제 1 및 제 2 메모리 장치들(361, 362)의 데이터 영역들은 비암호화 데이터 영역으로 설정할 수 있고, 제 3 및 제 4 메모리 장치들(363, 364)의 데이터 영역들은 암호화 데이터 영역으로 설정할 수 있다. SoC(310)가 제 3 및 제 4 메모리 장치들(363, 364)을 접근하는 동작은 도 16의 SoC(210)가 제 1 내지 제 4 메모리 장치들(261~264)을 접근하는 동작과 실질적으로 동일할 수 있다.
프로세서(320)는 보안 데이터가 아닌 노멀(normal) 데이터를 제 1 및 제 2 메모리 장치들(361, 362)에 저장하거나 또는 제 1 및 제 2 메모리 장치들(361, 362)로부터 노멀 데이터를 읽을 수 있다(제 3 경로). 즉, 노멀 데이터의 경우, 프로세서(320)는 암호화기(330)를 사용하지 않고 곧바로 제 1 및 제 2 메모리 컨트롤러들(341, 342)을 사용할 수 있다. 따라서, 노멀 데이터의 입출력 경로(제 4 경로)와 보안 데이터의 입출력 경로(제 4 및 제 5 경로들)가 분리될 수 있다. 즉, 노멀 데이터의 데이터 입출력에는 암호화기(330)로 인한 지연이 존재하지 않는다.
도 18은 본 발명의 또 다른 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도이다. 도 18에서, 전자 장치(400)와 도 16 및 도 17의 전자 장치들(200, 300)간의 차이점을 위주로 설명할 것이다.
SoC(410)는 도 16의 SoC(210)와 실질적으로 동일하게 구현될 수 있다. 다만, SoC(410)는 제 1 내지 제 4 메모리 장치들(461~464) 각각에서 데이터 영역 중 일부를 암호화 데이터 영역으로 설정하고 나머지를 비암호화 데이터 영역으로 설정할 수 있다. 제 1 내지 제 4 메모리 장치들(461~464)은 도 16의 제 1 내지 제 4 메모리 장치들(261~264)과 동일하게 구현될 수 있으나, SoC(410)의 설정에 따라 메모리 장치의 데이터 영역은 다르게 설정될 수 있다.
SoC(410)의 설정에 따라, 제 1 메모리 장치(461)의 데이터 영역은 암호화 데이터 영역(461_1) 및 비암호화 데이터 영역(461_2)으로 나누어질 수 있다. 제 2 내지 제 4 메모리 장치들(462~464)의 데이터 영역들도 제 1 메모리 장치(461)의 데이터 영역과 유사하게 설정될 수 있다. 다만, 제 1 내지 제 4 메모리 장치들(461~464)의 암호화 데이터 영역들의 사이즈들은 서로 같거나 상이할 수 있고, 비암호화 데이터 영역들의 사이즈들도 서로 같거나 상이할 수 있다.
실시 예에 있어서, SoC(410)가 제 1 내지 제 4 메모리 장치들(461~464)의 암호화 데이터 영역들을 접근하는 동작은 도 16의 SoC(210)가 제 1 내지 제 4 메모리 장치들(261~264)을 접근하는 동작과 실질적으로 동일할 수 있다. SoC(410)가 제 1 내지 제 4 메모리 장치들(461~464)의 비암호화 데이터 영역들을 접근하는 동작은 도 17의 SoC(310)가 제 1 및 제 2 메모리 장치들(361, 362)을 접근하는 동작과 실질적으로 동일할 수 있다.
도 19는 도 18의 프로세서의 어드레스 공간을 예시적으로 보여주는 도면이다. 도 19는 도 18을 참조하여 설명될 것이다. 프로세서의 어드레스 공간(500)은 프로세서(420)가 접근하는 논리 어드레스 공간일 수 있다. 프로세서의 어드레스 공간(500)은 암호화기의 어드레스 공간(510) 및 제 1 내지 제 4 메모리 장치들(461~464)의 어드레스 공간(520)를 포함할 수 있다.
암호화기의 어드레스 공간(510)은 프로세서(420)에 의해 제 1 내지 제 4 메모리 장치들(461~464)의 어드레스 공간처럼 인식될 수 있다. 제 1 내지 제 4 메모리 장치들(461~464)의 어드레스 공간(520)은 제 1 내지 제 4 메모리 장치들(461~464)의 데이터 영역들의 일부들이 서로 인터리빙하면서 형성될 수 있다. 제 1 내지 제 4 메모리 장치들(461~464)의 어드레스 공간의 하나의 행은 암호화 데이터가 저장될 수 있는 공간을 나타낼 수 있다. 예를 들어, 하나의 행의 크기는 128 비트, 256 비트 등과 같이 전술한 암호화 및 복호화부(133)의 암호화 연산 단위에 대응할 수 있다.
제 1 내지 제 4 메모리 장치들(461~464)의 어드레스 공간(520)은 암호화 데이터 영역의 어드레스 공간(521) 및 비암호화 데이터 영역의 어드레스 공간(522)을 포함할 수 있다. 예를 들어, 암호화 데이터 영역의 어드레스 공간(521)의 크기는 암호화기의 어드레스 공간(510)의 크기와 일치할 수 있다.
도 20은 본 발명의 또 다른 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도이다. 전자 장치(600)는 SoC(610) 및 메모리 장치(660)를 포함할 수 있다. 도 20에서, 전자 장치(600)와 도 16 내지 도 18의 전자 장치들(200~400)간의 차이점을 위주로 설명할 것이다.
SoC(610)는 프로세서(620) 및 제 1 내지 제 4 암호화기들(631~634)을 포함할 수 있다. 프로세서(620) 및 제 1 내지 제 4 암호화기들(631~634)은 버스(650)를 통해 서로 통신할 수 있다.
제 1 내지 제 4 암호화기들(631~634) 각각은 도 1 내지 도 15에서 설명된 암호화기(130)와 실질적으로 동일하게 구현될 수 있다. 도 16 내지 도 18에서, 암호화기들(230~430)은 하나 이상의 메모리 장치들의 암호화 데이터 영역들의 타임스탬프들을 관리하였다. 그러나, 도 20에서, 제 1 내지 제 4 암호화기들(631~634) 각각은 제 1 내지 제 4 암호화 데이터 영역들(661~664) 각각의 타임스탬프를 관리할 수 있다. 따라서, 메모리 장치(660) 내 유효한 타임스탬프들의 수는 하나 이상일 수 있고, 제 1 내지 제 4 암호화 데이터 영역들(661~664)의 타임스탬프들은 제 1 내지 제 4 암호화기들(631~634)에 의해 독립적으로 업데이트될 수 있다.
실시 예에 있어서, 도시되진 않았지만, 전자 장치(600)가 네 개의 메모리 장치들을 포함하면, 제 1 내지 제 4 암호화기들(631~634) 각각은 네 개의 메모리 장치들 각각의 암호화 데이터 영역의 타임스탬프를 관리할 수 있다. 그리고, 암호화기들의 수, 암호화 데이터 영역들의 수, 및 메모리 장치들의 수는 도 20에서 도시된 것으로 한정되지 않는다.
도 21은 본 발명의 또 다른 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도이다. 전자 장치(1000)는 MIPI(mobile industry processor interface) 연합(alliance)에 의해 제안된 인터페이스들을 이용하거나 지원할 수 있는 전자 장치로 구현될 수 있다. 예를 들어, 전자 장치(1000)는 서버, 컴퓨터, 스마트폰, 태블릿(tablet), PDA(personal digital assistant), 디지털 카메라(digital camera), PMP(portable multimedia player), 웨어러블(wearable) 장치, 사물 인터넷(internet of things; IoT) 장치 등 중 하나일 수 있으나, 이에 한정되지 않는다.
전자 장치(1000)는 SoC(1100) 및 메모리 장치(1600)를 포함할 수 있다. SoC(1100)는 프로세서(1120) 및 암호화기(1130)를 포함할 수 있고, 도 1 내지 도 20에서 전술한 SoC들(110, 210, 310, 410, 610)과 실질적으로 동일하게 구현될 수 있다. 메모리 장치(1600)는 암호화 데이터 영역(1610) 및 비암호화 데이터 영역(1620)을 포함할 수 있고, 도 1 내지 도 20에서 전술한 메모리 장치들(160, 261~264, 361~364, 461~464, 660)과 실질적으로 동일하게 구현될 수 있다.
전자 장치(1000)는 SoC(1100)와 통신하는 디스플레이(1710)를 포함할 수 있다. SoC(1100)는 DSI(display serial interface)에 따라 DSI 장치(1715)와 통신할 수 있다. 예를 들어, DSI 장치(1715)에는 광 디시리얼라이저(DES)가 구현될 수 있다.
전자 장치(1000)는 SoC(1100)와 통신하는 이미지 센서(1720)를 포함할 수 있다. SoC(1100)는 CSI(camera serial interface)에 따라 CSI 장치(1725)와 통신할 수 있다. 예를 들어, CSI 장치(1725)에는 광 시리얼라이저(SER)가 구현될 수 있다.
전자 장치(1000)는 SoC(1100)와 통신하는 RF(radio frequency) 칩(1730)을 더 포함할 수 있다. RF 칩(1730)은 물리 계층(1731), DigRF 슬레이브(1732), 및 안테나(1733)를 포함할 수 있다. 예를 들어, RF 칩(1730)의 물리 계층(1731)과 SoC(1100)는 MIPI 연합에 의해 제안된 DigRF 인터페이스에 의해 서로 데이터를 교환할 수 있다.
전자 장치(1000)는 임베디드/카드 스토리지(1740)를 더 포함할 수 있다. 임베디드/카드 스토리지(1740)는 SoC(1100)로부터 제공된 데이터를 저장할 수 있고, 메모리 장치(1600)로부터 제공된 데이터를 영구적으로 저장할 수 있다. 전자 장치(1000)는 WiMax(worldwide interoperability for microwave access, 1750), WLAN(wireless local area network, 1760), UWB(ultra wide band, 1770) 등을 통해 외부 시스템과 통신할 수 있다.
전자 장치(1000)에는 도 21에서 도시된 구성 요소들 이외에 다른 구성 요소들(예를 들면, 스피커, 마이크, GPS, 등)을 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 전자 장치(1000)에서, 보안 데이터는 메모리 장치(1600)의 암호화 데이터 영역(1610)에 저장될 수 있다. 암호화기(1130)는 보안 데이터에 대한 타임스탬프를 주기적으로 업데이트할 수 있고, 암호화 데이터 영역(1610)에 저장된 타임스탬프가 공격에 의해 변경되었는지 여부를 판별할 수 있다. 따라서, 전자 장치(1000)는 메모리 장치(1600)에 대한 공격을 방어할 수 있다.
위에서 설명한 내용은 본 발명을 실시하기 위한 구체적인 예들이다. 본 발명에는 위에서 설명한 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명에는 상술한 실시 예들을 이용하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.
100: 전자 장치;
110: SoC;
120: 프로세서;
130: 암호화기;
160: 메모리 장치;
161: 암호화 데이터 영역;

Claims (20)

  1. 제 1 시점에 대한 제 1 타임스탬프를 생성하도록 구성되는 카운터;
    보안 데이터 및 상기 제 1 타임스탬프를 병합하여 암호화 데이터로 암호화하고, 상기 암호화 데이터를 메모리 장치로 전송하고, 그리고 상기 메모리 장치에서 전송된 읽기 데이터를 복호화 데이터로 복호화하도록 구성되는 암호화 및 복호화부;
    상기 카운터가 제 2 시점에 대한 제 2 타임스탬프를 생성하도록 그리고 상기 암호화 및 복호화부가 상기 읽기 데이터를 상기 복호화 데이터로 복호화하도록, 상기 카운터 및 상기 암호화 및 복호화부로 상기 제 1 시점에서 상기 제 2 시점으로 시간이 경과됨을 알리도록 구성되는 타이머; 및
    상기 복호화 데이터의 복호화 타임스탬프가 상기 제 1 타임스탬프와 일치하는지 여부를 확인하도록 구성되는 체킹 로직을 포함하는 암호화 장치.
  2. 제 1 항에 있어서,
    상기 보안 데이터의 사이즈 및 상기 제 1 타임스탬프의 사이즈는 상기 암호화 및 복호화부의 암호화 연산 단위와 각각 일치하는 암호화 장치.
  3. 제 1 항에 있어서,
    상기 체킹 로직은, 상기 복호화 타임스탬프가 상기 제 1 타임스탬프와 일치하지 않으면, 상기 메모리 장치가 공격받은 것을 나타내는 에러를 출력하도록 더 구성되는 암호화 장치.
  4. 제 1 항에 있어서,
    상기 암호화 및 복호화부는, 상기 복호화 타임스탬프가 상기 제 1 타임스탬프와 일치하면, 상기 복호화 데이터의 보안 데이터 및 상기 제 2 타임스탬프를 병합하여 새로운 암호화 데이터로 암호화하고, 상기 새로운 암호화 데이터를 상기 메모리 장치로 전송하도록 더 구성되는 암호화 장치.
  5. 제 1 항에 있어서,
    상기 암호화 및 복호화부는 상기 보안 데이터 및 상기 제 1 타임스탬프가 병합된 데이터에 상기 보안 데이터에 대한 어드레스를 더 병합하여 상기 암호화 데이터로 암호화하도록 더 구성되는 암호화 장치.
  6. 제 5 항에 있어서,
    상기 보안 데이터의 사이즈 그리고 상기 제 1 타임스탬프와 상기 보안 데이터에 대한 상기 어드레스를 합친 사이즈는 상기 암호화 및 복호화부의 암호화 연산 단위와 각각 일치하는 암호화 장치.
  7. 제 5 항에 있어서,
    상기 체킹 로직은, 상기 복호화 타임스탬프가 상기 제 1 타임스탬프와 일치하지 않거나 또는 상기 복호화 데이터의 복호화 어드레스가 상기 보안 데이터에 대한 상기 어드레스와 일치하지 않으면, 상기 메모리 장치가 공격받은 것을 나타내는 에러를 출력하도록 더 구성되는 암호화 장치.
  8. 제 5 항에 있어서,
    상기 암호화 및 복호화부는, 상기 복호화 타임스탬프가 상기 제 1 타임스탬프와 일치하고 그리고 상기 복호화 데이터의 복호화 어드레스가 상기 보안 데이터에 대한 상기 어드레스와 일치하면, 상기 복호화 데이터의 보안 데이터, 상기 복호화 어드레스, 및 상기 제 2 타임스탬프를 병합하여 새로운 암호화 데이터로 암호화하고, 상기 새로운 암호화 데이터를 상기 메모리 장치로 전송하도록 더 구성되는 암호화 장치.
  9. 보안 데이터를 생성하도록 구성되는 프로세서;
    상기 보안 데이터에 병합되는 타임스탬프를 생성하도록 구성되는 카운터;
    상기 타임스탬프의 업데이트를 주기적으로 요청하도록 구성되는 타이머;
    상기 보안 데이터를 메모리 장치에 저장하기 위한 상기 프로세서의 쓰기 명령에 응답하여 상기 보안 데이터 및 상기 타임스탬프를 병합하여 암호화 데이터로 암호화하고, 상기 암호화 데이터를 상기 메모리 장치로 전송하고, 그리고 상기 타이머의 요청 또는 상기 프로세서의 요청에 응답하여 상기 메모리 장치에서 전송된 읽기 데이터를 복호화 데이터로 복호화하도록 구성되는 암호화 및 복호화부; 및
    상기 복호화 데이터의 복호화 타임스탬프가 유효한지 여부를 확인하도록 구성되는 체킹 로직을 포함하는 시스템 온 칩(system on chip).
  10. 제 9 항에 있어서,
    상기 타임스탬프에 대한 업데이트 주기는 사전에 결정된 값이거나 또는 상기 프로세서의 상기 요청에 의해 변경되는 값인 시스템 온 칩.
  11. 제 9 항에 있어서,
    상기 카운터는 상기 업데이트 주기마다 상기 타임스탬프의 값을 증가시키거나 또는 감소시키도록 더 구성되는 시스템 온 칩.
  12. 제 9 항에 있어서,
    상기 체킹 로직은, 상기 복호화 타임스탬프가 유효하지 않으면, 상기 프로세서로 상기 메모리 장치가 공격받은 것을 나타내는 에러를 출력하도록 더 구성되는 시스템 온 칩.
  13. 제 9 항에 있어서,
    상기 암호화 및 복호화부는, 상기 체킹 로직에 의해 상기 복호화 타임스탬프가 유효한 것으로 확인되면, 상기 타이머의 상기 요청에 응답하여, 상기 복호화 데이터의 보안 데이터 및 상기 카운터에 의해 업데이트된 새로운 타임스탬프를 병합하여 새로운 암호화 데이터로 암호화하고, 상기 새로운 암호화 데이터를 상기 메모리 장치로 전송하도록 더 구성되는 시스템 온 칩.
  14. 제 13 항에 있어서,
    상기 체킹 로직은 상기 카운터에 의해 업데이트된 상기 새로운 타임스탬프와 상기 복호화 타임스탬프를 비교하도록 더 구성되는 시스템 온 칩.
  15. 제 1 보안 데이터 및 제 1 타임스탬프가 암호화된 제 1 암호화 데이터를 저장하도록 구성되는 메모리 장치; 및
    상기 메모리 장치에 저장된 상기 제 1 암호화 데이터를 복호화하여 상기 제 1 타임스탬프가 유효한지 확인하고 그리고 확인 결과에 기초하여 상기 제 1 보안 데이터 및 상기 제 1 타임스탬프와 다른 제 2 타임스탬프가 암호화된 제 2 암호화 데이터를 상기 제 1 암호화 데이터 대신에 상기 메모리 장치에 저장하도록 구성되는 시스템 온 칩(system on chip)을 포함하는 전자 장치.
  16. 제 15 항에 있어서,
    상기 시스템 온 칩은:
    제 2 시점을 나타내는 상기 제 2 타임스탬프 및 상기 제 1 암호화 데이터가 상기 메모리 장치에 저장되는 제 1 시점을 나타내는 제 3 타임스탬프를 생성하도록 구성되는 카운터;
    상기 제 1 시점에서 상기 제 2 시점으로 시간이 경과됨에 따라 상기 제 1 타임스탬프의 업데이트를 요청하도록 구성되는 타이머; 및
    상기 타이머의 요청에 응답하여, 상기 확인 결과에 기초하여, 상기 제 1 보안 데이터 및 상기 제 2 타임스탬프를 병합하여 상기 제 2 암호화 데이터로 암호화하고 상기 제 2 암호화 데이터를 상기 메모리 장치로 전송하도록 구성되는 암호화 및 복호화부를 포함하는 전자 장치.
  17. 제 16 항에 있어서,
    상기 시스템 온 칩은, 상기 제 1 타임스탬프가 상기 제 3 타임스탬프와 일치하는지 여부를 확인하도록 구성되는 체킹 로직을 더 포함하는 전자 장치.
  18. 제 16 항에 있어서,
    상기 시스템 온 칩은, 상기 제 1 타임스탬프가 상기 제 3 타임스탬프 또는 상기 제 2 타임스탬프와 일치하는지 여부를 확인하도록 구성되는 체킹 로직을 더 포함하는 전자 장치.
  19. 제 16 항에 있어서,
    상기 시스템 온 칩은, 상기 메모리 장치에 저장된 상기 제 1 암호화 데이터의 상기 제 1 보안 데이터를 요청하는 프로세서를 더 포함하는 전자 장치.
  20. 제 19 항에 있어서,
    상기 암호화 및 복호화부는, 상기 프로세서의 요청에 응답하여, 상기 제 1 타임스탬프가 유효하면, 상기 제 1 보안 데이터를 상기 프로세서로 출력하도록 더 구성되는 전자 장치.
KR1020170157210A 2017-11-23 2017-11-23 데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치 KR102488636B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170157210A KR102488636B1 (ko) 2017-11-23 2017-11-23 데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치
US16/013,993 US11354453B2 (en) 2017-11-23 2018-06-21 Encryption device for encrypting data and timestamp, system on chip including the same, and electronic device
CN201811403347.5A CN109829316A (zh) 2017-11-23 2018-11-22 加密设备、包括所述加密设备的片上系统以及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170157210A KR102488636B1 (ko) 2017-11-23 2017-11-23 데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치

Publications (2)

Publication Number Publication Date
KR20190059528A true KR20190059528A (ko) 2019-05-31
KR102488636B1 KR102488636B1 (ko) 2023-01-17

Family

ID=66533963

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170157210A KR102488636B1 (ko) 2017-11-23 2017-11-23 데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치

Country Status (3)

Country Link
US (1) US11354453B2 (ko)
KR (1) KR102488636B1 (ko)
CN (1) CN109829316A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102613632B1 (ko) * 2022-11-04 2023-12-13 이동휘 스마트팜용 통신 제어 장치 및 그 방법

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10956068B2 (en) * 2018-05-11 2021-03-23 Seagate Technology Llc Time-stamped data in a data storage device
KR20200129776A (ko) * 2019-05-10 2020-11-18 삼성전자주식회사 재전송 공격에 대한 방어책을 포함하는 메모리 시스템의 구동 방법 및 이를 수행하는 메모리 시스템
CN110519412B (zh) * 2019-09-09 2022-04-22 新华三信息安全技术有限公司 一种物联网模块上线方法及装置
CN111125224B (zh) * 2019-12-21 2021-07-16 广州鲁邦通物联网科技有限公司 一种在Java程序中实现数据库数据自动加密解密的方法和系统
EP4049404A1 (en) * 2020-01-24 2022-08-31 Via Science, Inc. Secure data processing
CN114969847B (zh) * 2021-02-26 2024-04-30 南京大学 一种基于数据地址混合加密的存储器加密电路
TW202244760A (zh) * 2021-05-03 2022-11-16 智慧生醫電子股份有限公司 加密方法和加密系統

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010052071A1 (en) * 1997-08-22 2001-12-13 Michiharu Kudo Encryption system with time-dependent decryption
US20070169181A1 (en) * 2002-02-26 2007-07-19 James Roskind Simple, secure login with multiple authentication providers
US20130007471A1 (en) * 2011-06-29 2013-01-03 Rovi Corp. Systems and methods for securing cryptographic data using timestamps
US8364682B1 (en) * 2011-05-05 2013-01-29 Google Inc. Identifier mapping from joined data
US20130198525A1 (en) * 2012-01-30 2013-08-01 Terence Spies Systems for structured encryption using embedded information in data strings
US20130268764A1 (en) * 2012-04-09 2013-10-10 Juan Valdes Data event authentication and verification system
WO2017048221A1 (en) * 2015-09-14 2017-03-23 Hewlett Packard Enterprise Development Lp Secure memory systems
KR20170091599A (ko) * 2014-12-03 2017-08-09 나그라비젼 에스에이 메시지 부호화 및 복호화를 위한 블록 암호화 방법 및 이 방법을 구현하기 위한 암호화 장치

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7228437B2 (en) * 1998-08-13 2007-06-05 International Business Machines Corporation Method and system for securing local database file of local content stored on end-user system
EP1104960B1 (en) 1999-12-02 2009-08-26 Sony Deutschland GmbH Message authentication
US8037152B2 (en) * 2000-06-20 2011-10-11 At&T Intellectual Property Ii, L.P. Active requesting of information for psuedo-live performance
US8140859B1 (en) * 2000-07-21 2012-03-20 The Directv Group, Inc. Secure storage and replay of media programs using a hard-paired receiver and storage device
ATE265117T1 (de) * 2001-04-04 2004-05-15 Swisscom Ag Verfahren und system zum abfragen von zertifikatsinformationen unter verwendung von dynamischen zertifikatsreferenzen
US7325130B2 (en) * 2003-03-21 2008-01-29 International Business Machines Corporation Method for guaranteeing freshness of results for queries against a non-secure data store
CN1304915C (zh) * 2004-01-16 2007-03-14 西北工业大学 计算机硬盘数据加密方法及其装置
US7796649B2 (en) * 2004-02-18 2010-09-14 Texas Instruments Incorporated System and method for providing additional channels to an existing communications device
JP4698982B2 (ja) * 2004-04-06 2011-06-08 株式会社日立製作所 暗号処理を行うストレージシステム
EP1870814B1 (en) * 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
US20060045009A1 (en) * 2004-08-30 2006-03-02 Ken Madison Device and method for managing oversubsription in a network
US7673135B2 (en) * 2005-12-08 2010-03-02 Microsoft Corporation Request authentication token
JP4742189B2 (ja) * 2006-08-22 2011-08-10 セイコープレシジョン株式会社 タイムスタンプ付加装置、タイムスタンプ付加方法、電子メール中継サーバ及びコンピュータプログラム
CN100452074C (zh) * 2007-01-17 2009-01-14 北京大学 一种数字内容按时间控制的版权保护方法及系统
KR101424971B1 (ko) * 2007-04-06 2014-08-13 삼성전자주식회사 Ums 기기의 컨텐츠를 시간 정보를 이용하여 보호하는방법 및 이를 위한 장치
US8705348B2 (en) 2007-04-18 2014-04-22 Cisco Technology, Inc. Use of metadata for time based anti-replay
JP5483563B2 (ja) * 2010-03-17 2014-05-07 株式会社野村総合研究所 認証管理装置
US8468365B2 (en) 2010-09-24 2013-06-18 Intel Corporation Tweakable encryption mode for memory encryption with protection against replay attacks
US20120110343A1 (en) * 2010-10-29 2012-05-03 Bandic Zvonimir Z Trustworthy timestamps on data storage devices
JP5595965B2 (ja) * 2011-04-08 2014-09-24 株式会社東芝 記憶装置、保護方法及び電子機器
KR101577886B1 (ko) 2011-06-29 2015-12-15 인텔 코포레이션 무결성 검사 및 리플레이 공격들에 대한 보호를 이용하는 메모리 암호화를 위한 방법 및 장치
US9269418B2 (en) 2012-02-06 2016-02-23 Arm Limited Apparatus and method for controlling refreshing of data in a DRAM
KR102013841B1 (ko) * 2012-08-06 2019-08-23 삼성전자주식회사 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치
KR101416685B1 (ko) 2013-01-18 2014-07-09 어보브반도체 주식회사 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치
KR102088848B1 (ko) * 2014-01-13 2020-03-13 삼성전자 주식회사 이동 통신에서 ProSe그룹 통신 또는 공공 안전을 지원하기 위한 보안 방안 및 시스템
US9690922B2 (en) 2014-07-28 2017-06-27 Avago Technologies General Ip (Singapore) Pte. Ltd. System, apparatus, and method for anti-replay protection of data stored in a non-volatile memory device
EP3252651A1 (en) 2016-05-30 2017-12-06 Samsung Electronics Co., Ltd Computing system having an on-the-fly encryptor and an operating method thereof
KR102588733B1 (ko) 2016-05-30 2023-10-17 삼성전자주식회사 온-더-플라이 인크립터를 갖는 집적회로, 그것을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010052071A1 (en) * 1997-08-22 2001-12-13 Michiharu Kudo Encryption system with time-dependent decryption
US20070169181A1 (en) * 2002-02-26 2007-07-19 James Roskind Simple, secure login with multiple authentication providers
US8364682B1 (en) * 2011-05-05 2013-01-29 Google Inc. Identifier mapping from joined data
US20130007471A1 (en) * 2011-06-29 2013-01-03 Rovi Corp. Systems and methods for securing cryptographic data using timestamps
US20130198525A1 (en) * 2012-01-30 2013-08-01 Terence Spies Systems for structured encryption using embedded information in data strings
US20130268764A1 (en) * 2012-04-09 2013-10-10 Juan Valdes Data event authentication and verification system
KR20170091599A (ko) * 2014-12-03 2017-08-09 나그라비젼 에스에이 메시지 부호화 및 복호화를 위한 블록 암호화 방법 및 이 방법을 구현하기 위한 암호화 장치
WO2017048221A1 (en) * 2015-09-14 2017-03-23 Hewlett Packard Enterprise Development Lp Secure memory systems

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102613632B1 (ko) * 2022-11-04 2023-12-13 이동휘 스마트팜용 통신 제어 장치 및 그 방법

Also Published As

Publication number Publication date
CN109829316A (zh) 2019-05-31
US20190156069A1 (en) 2019-05-23
KR102488636B1 (ko) 2023-01-17
US11354453B2 (en) 2022-06-07

Similar Documents

Publication Publication Date Title
KR102488636B1 (ko) 데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치
EP3274848B1 (en) Providing enhanced replay protection for a memory
KR101880075B1 (ko) 중복 제거 기반 데이터 보안
TWI493951B (zh) 保護對稱加密鑰的系統及方法
JP6067757B2 (ja) ストレージ装置とホスト間でデータ伝送を保護するためのストレージ・コントローラ・バス・インターフェースの使用
US10749672B2 (en) Computing system having an on-the-fly encryptor and an operating method thereof
TWI609289B (zh) 用於提供記憶體機密性、完整性及重播保護的低負擔密碼方法、系統及處理器
US9678894B2 (en) Cache-less split tracker architecture for replay protection trees
US10671546B2 (en) Cryptographic-based initialization of memory content
US20170093823A1 (en) Encrypting Observable Address Information
WO2017112243A1 (en) End-to-end protection scheme involving encrypted memory and storage
TWI736000B (zh) 資料儲存裝置以及其操作方法
KR102588733B1 (ko) 온-더-플라이 인크립터를 갖는 집적회로, 그것을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법
US11816228B2 (en) Metadata tweak for channel encryption differentiation
CN115510506A (zh) 具有动态产生的密钥的安全数据存储
KR20170138412A (ko) 장치의 시스템 온 칩의 보안 모듈로의 복수의 액세스를 관리하기 위한 디바이스
TWI835604B (zh) 資料加解密系統及資料加解密方法
US20220398349A1 (en) System on chip including secure processor and semiconductor system including the same
US20240004801A1 (en) Data encryption suitable for use in systems with processing-in-memory
KR20230032429A (ko) 메모리 장치 및 메모리 장치의 데이터 암복호화 방법

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