KR101977772B1 - 데이터 처리 장치 및 이를 포함하는 보안 메모리 장치 - Google Patents

데이터 처리 장치 및 이를 포함하는 보안 메모리 장치 Download PDF

Info

Publication number
KR101977772B1
KR101977772B1 KR1020120076146A KR20120076146A KR101977772B1 KR 101977772 B1 KR101977772 B1 KR 101977772B1 KR 1020120076146 A KR1020120076146 A KR 1020120076146A KR 20120076146 A KR20120076146 A KR 20120076146A KR 101977772 B1 KR101977772 B1 KR 101977772B1
Authority
KR
South Korea
Prior art keywords
data
error
code
mode
data processing
Prior art date
Application number
KR1020120076146A
Other languages
English (en)
Other versions
KR20140008839A (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 KR1020120076146A priority Critical patent/KR101977772B1/ko
Priority to US13/938,610 priority patent/US9104890B2/en
Publication of KR20140008839A publication Critical patent/KR20140008839A/ko
Application granted granted Critical
Publication of KR101977772B1 publication Critical patent/KR101977772B1/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
    • 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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • 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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)

Abstract

데이터 처리 장치는 제1 레지스터부, 제2 레지스터부 및 데이터 처리부를 포함한다. 제1 레지스터부는 제1 제어 신호에 기초하여 외부 저장 장치에 저장된 제1 데이터의 저장 위치를 지시하는 어드레스 신호를 발생한다. 제2 레지스터부는 어드레스 신호에 기초하여 외부 저장 장치로부터 출력된 제1 데이터를 수신하고, 제2 제어 신호에 기초하여 제1 데이터를 제2 데이터로 변환하며, 제1 데이터에 오류가 주입된 경우에 동작 모드에 따라서 제2 데이터 내에 검출 가능한 에러를 선택적으로 생성한다. 데이터 처리부는 검출 가능한 에러의 생성 여부에 따라서 제2 데이터를 선택적으로 실행한다.

Description

데이터 처리 장치 및 이를 포함하는 보안 메모리 장치{DATA PROCESSING DEVICE AND SECURE MEMORY DEVICE INCLUDING THE SAME}
본 발명은 데이터의 보안에 관한 것으로서, 더욱 상세하게는 데이터 처리 장치 및 이를 포함하는 보안 메모리 장치에 관한 것이다.
스마트 카드와 같은 보안 메모리 장치는 암호키(cryptographic key), 주요 데이터(sensitive data), 주요 코드 등의 보안이 필요한 데이터를 처리할 수 있으며, 외부로부터의 불온한 공격에 의하여 상기 보안이 필요한 데이터에 에러가 발생할 수 있다. 예를 들어, 레이저나 엑스레이 등을 이용하여 오류가 반복적으로 주입되는 오류 기반 공격(fault attack) 등에 의하여 보안 메모리 장치에 저장된 데이터가 유출되거나 변질될 수 있다.
본 발명의 일 목적은 보안이 필요한 데이터에 오류가 주입된 경우에 이를 빠르고 정확하게 검출할 수 있는 데이터 처리 장치를 제공하는 것이다.
본 발명의 다른 목적은 보안이 필요한 데이터에 오류가 주입된 경우에 이를 빠르고 정확하게 검출할 수 있는 데이터 처리 장치를 포함하는 보안 메모리 카드를 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 일 실시예에 따른 데이터 처리 장치는 제1 레지스터부, 제2 레지스터부 및 데이터 처리부를 포함한다. 상기 제1 레지스터부는 제1 제어 신호에 기초하여 외부 저장 장치에 저장된 제1 데이터의 저장 위치를 지시하는 어드레스 신호를 발생한다. 상기 제2 레지스터부는 상기 어드레스 신호에 기초하여 상기 외부 저장 장치로부터 출력된 상기 제1 데이터를 수신하고, 제2 제어 신호에 기초하여 상기 제1 데이터를 제2 데이터로 변환하며, 상기 제1 데이터에 오류가 주입된 경우에 동작 모드에 따라서 상기 제2 데이터 내에 검출 가능한 에러를 선택적으로 생성한다. 상기 데이터 처리부는 상기 검출 가능한 에러의 생성 여부에 따라서 상기 제2 데이터를 선택적으로 실행한다.
상기 동작 모드는 일반 모드 및 보안 모드를 포함할 수 있다. 상기 제2 레지스터부는 상기 보안 모드에서 상기 제1 데이터에 주입된 오류에 상응하는 상기 제2 데이터 내의 오류를 증가시켜 상기 검출 가능한 에러를 생성하고, 상기 일반 모드에서 상기 제2 데이터 내에 상기 검출 가능한 에러를 생성하지 않을 수 있다.
상기 제2 데이터는 상기 데이터 처리 장치에서 순차적으로 실행되는 명령어들에 상응하는 일반 코드이며, 상기 제1 데이터는 상기 보안 모드에서 상기 일반 코드가 암호화된 보안 코드이고 상기 일반 모드에서 상기 일반 코드와 동일한 코드일 수 있다. 상기 보안 모드에서 상기 제1 데이터에 상기 오류가 주입된 경우에, 상기 명령어들이 순차적으로 실행됨에 따라 상기 제2 데이터의 에러 비트의 개수가 증가할 수 있다.
상기 보안 모드에서 상기 제2 데이터가 유효하지 않은 것으로 판단된 경우에, 상기 데이터 처리 장치의 동작을 종료시키거나 데이터의 보호를 위한 보안 인터럽트를 수행할 수 있다.
상기 제1 레지스터부는 프로그램 카운터 블록을 포함할 수 있다. 상기 프로그램 카운터 블록은 상기 제1 제어 신호에 기초하여 순차적으로 증가되는 상기 어드레스 신호를 발생할 수 있다.
상기 제2 레지스터부는 프로그램 카운터 블록, 모드 선택 블록 및 연산 블록을 포함할 수 있다. 상기 프로그램 카운터 블록은 미리 저장된 변환 테이블에 기초하여 상기 제2 데이터를 제3 데이터로 변환할 수 있다. 상기 모드 선택 블록은 상기 제3 데이터 및 모드 선택 신호에 기초하여 제4 데이터를 발생할 수 있다. 상기 연산 블록은 상기 제1 데이터 및 상기 제4 데이터에 기초하여 상기 제2 데이터를 발생할 수 있다.
상기 모드 선택 블록은 AND 게이트를 포함할 수 있다. 상기 AND 게이트는 상기 제3 데이터 및 상기 모드 선택 신호에 대한 AND 연산을 수행하여 상기 제4 데이터를 발생할 수 있다.
상기 동작 모드는 일반 모드 및 보안 모드를 포함할 수 있다. 상기 제4 데이터는 상기 일반 모드에서 상기 제3 데이터와 상이하고, 상기 보안 모드에서 상기 제3 데이터와 동일할 수 있다.
상기 연산 블록은 XOR 게이트를 포함할 수 있다. 상기 XOR 게이트는 상기 제1 데이터 및 상기 제4 데이터에 대한 XOR 연산을 수행하여 상기 제2 데이터를 발생할 수 있다.
상기 동작 모드는 일반 모드 및 보안 모드를 포함할 수 있다. 상기 제2 데이터는 상기 일반 모드에서 상기 제1 데이터와 동일하고, 상기 보안 모드에서 상기 제1 데이터와 상이할 수 있다.
상기 데이터 처리 장치는 제어부를 더 포함할 수 있다. 상기 제어부는 상기 제1 제어 신호 및 상기 제2 제어 신호를 발생할 수 있다.
상기 데이터 처리 장치는 마이크로프로세서 또는 중앙 처리 장치(Central Processing Unit; CPU)일 수 있다.
상기 데이터 처리부는 CPU 상태 머신(CPU state machine) 또는 ALU(Arithmetic and Logic Unit)를 포함할 수 있다.
상기 일 목적을 달성하기 위해, 본 발명의 일 실시예에 따른 보안 메모리 장치는 데이터 저장 장치 및 데이터 처리 장치를 포함한다. 상기 데이터 저장 장치는 제1 데이터를 저장한다. 상기 데이터 처리 장치는 상기 제1 데이터의 저장 위치를 지시하는 어드레스 신호를 발생하고, 상기 저장 장치로부터 수신된 상기 제1 데이터에 상응하는 제2 데이터를 실행한다. 상기 데이터 처리 장치는 제1 레지스터부, 제2 레지스터부 및 데이터 처리부를 포함한다. 상기 제1 레지스터부는 제1 제어 신호에 기초하여 상기 어드레스 신호를 발생한다. 상기 제2 레지스터부는 상기 어드레스 신호에 기초하여 상기 데이터 저장 장치로부터 출력된 상기 제1 데이터를 수신하고, 제2 제어 신호에 기초하여 상기 제1 데이터를 상기 제2 데이터로 변환하며, 상기 제1 데이터에 오류가 주입된 경우에 동작 모드에 따라서 상기 제2 데이터 내에 검출 가능한 에러를 선택적으로 생성한다. 상기 데이터 처리부는 상기 검출 가능한 에러의 생성 여부에 따라서 상기 제2 데이터를 선택적으로 실행한다.
상기 동작 모드는 일반 모드 및 보안 모드를 포함하고, 상기 제1 데이터는 상기 일반 모드에 상응하는 일반 데이터 및 상기 보안 모드에 상응하는 보안 데이터를 포함할 수 있다. 상기 데이터 저장 장치는 제1 저장 영역 및 제2 저장 영역을 포함할 수 있다. 상기 제1 저장 영역은 상기 보안 데이터를 저장할 수 있다. 상기 제2 저장 영역은 상기 일반 데이터를 저장할 수 있다.
상기와 같은 본 발명의 실시예들에 따른 데이터 처리 장치는 외부로부터의 공격이나 오류를 자체적으로 체크하여 후속 조치를 취하는 셀프-체크 기능을 가질 수 있다. 즉, 데이터 처리 장치는, 보안 모드에서 외부 저장 장치로부터 수신된 제1 데이터를 제2 데이터로 변환하여 상기 제2 데이터를 실행하며, 상기 제1 데이터에 오류가 주입된 경우에 상기 제1 데이터에 주입된 오류에 상응하는 제2 데이터 내의 오류를 증가시켜 검출 가능한 에러를 생성할 수 있다. 따라서 동작 속도의 감소 및/또는 성능 저하 없이 외부로부터의 공격이나 오류를 자체적으로 검출하고 효율적으로 후속 조치를 취할 수 있다. 또한 상기 데이터 처리 장치를 이용하여 크기 및 전력 소모가 감소된 보안 메모리 장치를 구현할 수 있다.
도 1은 본 발명의 실시예들에 따른 데이터 처리 장치를 포함하는 집적 회로를 나타내는 블록도이다.
도 2는 도 1의 집적 회로에 포함되는 데이터 처리 장치의 일 예를 나타내는 도면이다.
도 3은 도 1의 집적 회로에 포함되는 데이터 저장 장치의 일 예를 나타내는 도면이다.
도 4, 5 및 6은 도 2의 데이터 처리 장치의 동작을 설명하기 위한 도면들이다.
도 7은 도 1의 집적 회로에 포함되는 데이터 처리 장치의 다른 예를 나타내는 도면이다.
도 8 및 9는 도 7의 데이터 처리 장치의 동작을 설명하기 위한 도면들이다.
도 10은 본 발명의 실시예들에 따른 데이터 처리 방법을 나타내는 순서도이다.
도 11은 도 10의 데이터 처리 방법의 일 예를 나타내는 순서도이다.
도 12는 도 10의 데이터 처리 방법의 다른 예를 나타내는 순서도이다.
도 13은 본 발명의 실시예들에 따른 보안 메모리 장치를 포함하는 시스템을 나타내는 블록도이다.
도 14는 본 발명의 실시예들에 따른 보안 메모리 장치를 모바일 기기에 응용한 예를 나타내는 도면이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 어떤 실시예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 데이터 처리 장치를 포함하는 집적 회로를 나타내는 블록도이다.
도 1을 참조하면, 집적 회로(100)는 데이터 처리 장치(200) 및 데이터 저장 장치(300)를 포함한다.
데이터 처리 장치(200)는 데이터 저장 장치(300)에 저장된 데이터를 수신하고 상기 수신된 데이터를 처리하는 장치이다. 본 발명의 실시예들에 따른 데이터 처리 장치(200)의 동작 모드는 제1 동작 모드(예를 들어, 일반 모드) 및 제2 동작 모드(예를 들어, 보안 모드)를 포함할 수 있다. 데이터 처리 장치(200)는 상기 일반 모드에서 암호화되지 않은 일반 데이터를 수신하여 처리할 수 있다. 데이터 처리 장치(200)는 상기 보안 모드에서 암호화된 보안 데이터를 수신하고, 상기 보안 데이터를 복호화하여 일반 데이터를 발생하며, 상기 일반 데이터를 처리할 수 있다. 상기 일반 모드에서 데이터 처리 장치(200)의 동작은 일반적인 데이터 처리 장치의 동작과 실질적으로 동일할 수 있다. 이하, 본 명세서에서는 상기 보안 모드에서 데이터 처리 장치(200)의 동작을 중심으로 본 발명의 실시예들을 설명한다.
데이터 처리 장치(200)는 제1 레지스터부(210), 제2 레지스터부(220) 및 데이터 처리부(230)를 포함한다. 데이터 처리 장치(200)는 제어부(240)를 더 포함할 수 있다.
제1 레지스터부(210)는 제1 제어 신호(CON1)에 기초하여 어드레스 신호(AS)를 발생하며, 어드레스 신호(AS)를 데이터 저장 장치(300)에 제공한다. 데이터 저장 장치(300)는 제1 데이터(DAT1)를 저장하며, 어드레스 신호(AS)는 데이터 저장 장치(300)에서 제1 데이터(DAT1)가 저장된 위치를 지시한다. 데이터 저장 장치(300)는 어드레스 신호(AS)를 수신하여 어드레스 신호(AS)에 상응하는 제1 데이터(DAT1)를 출력한다.
제2 레지스터부(220)는 데이터 저장 장치(300)로부터 출력된 제1 데이터(DAT1)를 수신하고, 제2 제어 신호(CON2)에 기초하여 제1 데이터(DAT1)를 제2 데이터(DAT2)로 변환한다. 상기 보안 모드에서 제1 데이터(DAT1)와 제2 데이터(DAT2)는 서로 상이(예를 들어, 제2 데이터(DAT2)는 일반 데이터이고, 제1 데이터(DAT1)는 상기 일반 데이터에 상응하는 보안 데이터)할 수 있고, 상기 일반 모드에서 제1 데이터(DAT1)와 제2 데이터(DAT2)는 실질적으로 동일(예를 들어, 제1 및 제2 데이터(DAT1, DAT2)는 모두 일반 데이터)할 수 있다.
제2 레지스터부(220)는 제1 데이터(DAT1)에 오류가 주입된 경우에 상기 동작 모드에 따라서 제2 데이터(DAT2) 내에 검출 가능한 에러를 선택적으로 생성한다. 상기 검출 가능한 에러의 비트 수는 상기 제1 데이터(DAT1)에 주입된 오류의 비트 수보다 클 수 있다. 예를 들어, 상기 보안 모드에서 제1 데이터(DAT1)에 오류가 주입된 경우에, 제2 레지스터부(220)는 상기 제1 데이터(DAT1)에 주입된 오류에 상응하는 제2 데이터(DAT2) 내의 오류를 증가시켜 상기 검출 가능한 에러를 생성할 수 있다. 다시 말하면, 제1 데이터(DAT1)에 1비트의 오류가 주입된 경우에, 동작 초기에는 제2 데이터(DAT2) 내에도 1비트의 오류가 존재하지만, 제2 데이터(DAT2)가 반복적으로 처리됨에 따라 제2 데이터(DAT2) 내의 오류 비트 수가 계속 증가할 수 있으며, 이에 따라 제2 데이터(DAT2) 내에 상기 검출 가능한 에러가 생성될 수 있다. 한편, 상기 일반 모드에서 제1 데이터(DAT1)에 오류가 주입되더라도, 제2 레지스터부(220)는 제2 데이터(DAT2) 내에 상기 검출 가능한 에러를 생성하지 않을 수 있다.
도 2를 참조하여 후술하는 것처럼, 제1 레지스터부(210)는 제1 프로그램 카운터 블록을 포함하여 구현되고, 제2 레지스터부(220)는 제2 프로그램 카운터 블록을 포함하여 구현될 수 있다. 상기 제1 프로그램 카운터 블록은 일반적인 프로그램 카운터와 마찬가지로, 현재의 데이터(예를 들어, 명령어)가 실행될 때마다 순차적으로 증가하는 값을 출력할 수 있다. 상기 제2 프로그램 카운터 블록은 일반적인 프로그램 카운터와 다르게, 현재의 데이터(예를 들어, 명령어)가 실행될 때마다 미리 저장된 변환 테이블에 기초하여 갱신되는 값을 출력할 수 있다.
데이터 처리부(230)는 상기 검출 가능한 에러의 생성 여부에 따라서 제2 데이터(DAT2)를 선택적으로 실행한다. 예를 들어, 상기 검출 가능한 에러가 생성되지 않아 제2 데이터(DAT2)가 유효한 것으로 판단된 경우에, 데이터 처리부(230)는 제2 데이터(DAT2)를 실행할 수 있다. 상기 검출 가능한 에러가 생성되어 제2 데이터(DAT2)가 유효하지 않은 것으로 판단된 경우에, 데이터 처리부(230)는 제2 데이터(DAT2)를 실행하지 않으며, 데이터 처리 동작을 중지하거나 저장된 데이터를 삭제하는 것과 같이 데이터 처리 장치(200)의 동작을 종료시키거나, 상기 저장된 데이터의 보호를 위한 보안 인터럽트를 수행할 수 있다.
제어부(240)는 제1 제어 신호(CON1) 및 제2 제어 신호(CON2)를 발생한다. 실시예에 따라서, 제어부(240)는 데이터 처리 장치(200)의 전반적인 동작을 제어할 수도 있다.
일 실시예에서, 데이터 처리 장치(200)는 마이크로프로세서 또는 중앙 처리 장치(Central Processing Unit; CPU)일 수 있다. 이 경우, 데이터 처리부(230)는 CPU 상태 머신(CPU state machine) 또는 ALU(Arithmetic and Logic Unit)를 포함할 수 있다.
스마트 카드와 같은 보안 메모리 장치는 보안이 필요한 데이터(즉, 보안 데이터)를 저장하는 데이터 저장 장치 및 상기 보안 데이터를 처리하는 데이터 처리 장치를 포함한다. 보안 메모리 장치는 해커들에 의해 다양한 공격을 받기 쉽다. 예를 들어, 보안 메모리 장치는 레이저나 엑스레이 등을 이용하여 오류가 반복적으로 주입되는 오류 기반 공격을 받을 수 있다. 이러한 오류 기반 공격은 보안 데이터를 유출시키거나 변질시킬 수 있으므로, 보안 메모리 장치는 외부로부터의 공격이나 오류를 방지할 수 있는 수단 및 이미 발생한 데이터의 오류를 검출하여 후속 조치(예를 들어, 데이터 처리의 중지 또는 데이터의 삭제)를 취할 수 있는 수단을 구비할 필요가 있다.
종래에는 외부로부터의 공격이나 오류를 검출하기 위한 별도의 검출 수단이 데이터 처리 장치의 외부에 위치하였으며, 이에 따라 보안 메모리 장치의 크기가 증가하며 전력 소모가 증가하는 문제가 있었다. 또한 종래의 보안 메모리 장치에 포함되는 데이터 처리 장치에서는, 주입되는 오류의 양과 실제 데이터 내에 생성되는 에러의 양이 실질적으로 동일하기 때문에, 미세한 양의 오류가 주입되어 보안 데이터가 미세하게 변질되는 경우에 이를 검출하는 것이 어려울 수 있으며, 이에 따라 데이터 처리 장치의 동작 속도가 감소하고 성능이 저하되는 문제가 있었다.
본 발명의 실시예들에 따른 데이터 처리 장치(200)는 외부로부터의 공격이나 오류를 자체적으로 체크하여 후속 조치를 취하는 셀프-체크 기능을 가질 수 있다. 예를 들어, 데이터 처리 장치(200)는 어드레스 신호(AS)를 발생하는 제1 레지스터부(210) 및 상기 보안 모드에서 어드레스 신호(AS)에 상응하는 제1 데이터(DAT1, 즉 보안 데이터)를 제2 데이터(DAT2, 즉 일반 데이터)로 변환하는 제2 레지스터부(220)를 포함한다. 상기 보안 모드에서 제1 데이터(DAT1)에 오류가 주입된 경우에, 제2 레지스터부(220)는 상기 제1 데이터(DAT1)에 주입된 오류에 상응하는 제2 데이터(DAT2) 내의 오류를 증가시켜 상기 검출 가능한 에러를 생성할 수 있으며, 상기 검출 가능한 에러가 생성되어 제2 데이터(DAT2)가 유효하지 않은 것으로 판단된 경우에 데이터 처리 장치(200)의 동작이 종료되거나 보안 인터럽트가 수행될 수 있다. 따라서, 데이터 처리 장치(200)는 동작 속도의 감소 및/또는 성능 저하 없이 외부로부터의 공격이나 오류를 자체적으로 검출하고 효율적으로 후속 조치를 취할 수 있다. 또한 데이터 처리 장치(200)를 이용하여 크기 및 전력 소모가 감소된 보안 메모리 장치를 구현할 수 있다.
도 2는 도 1의 집적 회로에 포함되는 데이터 처리 장치의 일 예를 나타내는 도면이다. 도 3은 도 1의 집적 회로에 포함되는 데이터 저장 장치의 일 예를 나타내는 도면이다.
도 2 및 도 3을 참조하면, 데이터 처리 장치(200a)는 제1 레지스터부(210), 제2 레지스터부(220a) 및 데이터 처리부(230)를 포함하며, 제어부(240)를 더 포함할 수 있다.
제1 레지스터부(210)는 제1 프로그램 카운터 블록(212) 및 업 카운팅 블록(214)을 포함할 수 있다.
제1 프로그램 카운터 블록(212)은 제1 프로그램 카운터 제어 신호(PCCON1) 및 업 카운팅 블록(214)에 기초하여 순차적으로 증가되는 어드레스 신호(AS)를 발생할 수 있다. 예를 들어, 어드레스 신호(AS)는 동작 초기에 '0'으로 초기화되고, 데이터 처리 동작이 수행됨에 따라 '1', '2', '3', ...과 같이 1씩 증가될 수 있다. 즉, 제1 프로그램 카운터 블록(212)은 일반적인 프로그램 카운터와 유사한 방식으로 동작할 수 있다. 제1 프로그램 카운터 제어 신호(PCCON1)는 도 1의 제1 제어 신호(CON1)에 상응할 수 있다.
데이터 저장 장치(300)는 제1 저장 영역(310) 및 제2 저장 영역(320)을 포함할 수 있다. 제1 저장 영역(310)은 제1 데이터(DAT1) 중에서 상기 보안 모드에 상응하는 보안 데이터(SDAT)를 저장하고, 제2 저장 영역(320)은 제1 데이터(DAT1) 중에서 상기 일반 모드에 상응하는 일반 데이터(NDAT)를 저장할 수 있다. 예를 들어, 보안 데이터(SDAT)는 일반 데이터(NDAT)를 암호화하여 생성될 수 있다. 데이터 저장 장치(300)는 상기 보안 모드에서 어드레스 신호(AS)에 상응하는 보안 데이터(SDAT)를 제공하고, 상기 일반 모드에서 어드레스 신호(AS)에 상응하는 일반 데이터(NDAT)를 제공할 수 있다.
제2 레지스터부(220a)는 제2 프로그램 카운터 블록(222), 모드 선택 블록(224a), 연산 블록(226a) 및 대체 박스(substitution box; SBOX) 블록(228)을 포함할 수 있다.
제2 프로그램 카운터 블록(222)은 제2 프로그램 카운터 제어 신호(PCCON2) 및 대체 박스 블록(228)에 저장된 변환 테이블에 기초하여 제2 데이터(DAT2)를 제3 데이터(DAT3)로 변환할 수 있다. 예를 들어, 제3 데이터(DAT3)는 동작 초기에 미리 정해진 초기값으로 초기화되고, 데이터 처리 동작이 수행됨에 따라 상기 미리 정해진 변환 테이블에 기초하여 갱신될 수 있다. 즉, 제2 프로그램 카운터 블록(222)은 일반적인 프로그램 카운터와 다른 방식으로 동작할 수 있다.
모드 선택 블록(224a)은 제3 데이터(DAT3) 및 모드 선택 신호(MS)에 기초하여 제4 데이터(DAT4)를 발생할 수 있다. 이 경우, 제4 데이터(DAT4)는 상기 일반 모드에서 제3 데이터(DAT3)와 상이하고, 상기 보안 모드에서 제3 데이터(DAT3)와 실질적으로 동일할 수 있다. 제2 프로그램 카운터 제어 신호(PCCON2) 및 모드 선택 신호(MS)는 도 1의 제2 제어 신호(CON2)에 상응할 수 있다.
연산 블록(226a)은 제1 데이터(DAT1) 및 제4 데이터(DAT4)에 기초하여 제2 데이터(DAT2)를 발생할 수 있다. 이 경우, 제2 데이터(DAT2)는 상기 일반 모드에서 제1 데이터(DAT1)와 실질적으로 동일하고, 상기 보안 모드에서 제1 데이터(DAT1)와 상이할 수 있다.
일 실시예에서, 모드 선택 블록(224a)은 제3 데이터(DAT3) 및 모드 선택 신호(MS)에 대한 AND 연산을 수행하여 제4 데이터(DAT4)를 발생하는 AND 게이트(AND1)를 포함할 수 있고, 연산 블록(226a)은 제1 데이터(DAT1) 및 제4 데이터(DAT4)에 대한 XOR 연산을 수행하여 제2 데이터(DAT2)를 발생하는 XOR 게이트(XOR1)를 포함할 수 있다. 이 경우, 모드 선택 신호(MS)는 상기 일반 모드에서 '0'의 값을 가지고 상기 보안 모드에서 '1'의 값을 가질 수 있다. 즉, 상기 일반 모드에서, AND 게이트(AND1)는 제3 데이터(DAT3)의 각 비트와 '0'의 값을 가지는 모드 선택 신호(MS)에 대한 AND 연산을 수행하여 '0'에 상응하는 값을 가지는(즉, 제3 데이터(DAT3)와 상이한 값을 가지는) 제4 데이터(DAT4)를 발생할 수 있고, XOR 게이트(XOR1)는 '0'에 상응하는 값을 가지는 제4 데이터(DAT4)와 제1 데이터(DAT1)에 대한 XOR 연산을 수행하여 제1 데이터(DAT1)와 실질적으로 동일한 값을 가지는 제2 데이터(DAT2)를 발생할 수 있다. 상기 보안 모드에서, AND 게이트(AND1)는 제3 데이터(DAT3)의 각 비트와 '1'의 값을 가지는 모드 선택 신호(MS)에 대한 AND 연산을 수행하여 제3 데이터(DAT3)와 실질적으로 동일한 값을 가지는 제4 데이터(DAT4)를 발생할 수 있고, XOR 게이트(XOR1)는 제4 데이터(DAT4)와 제1 데이터(DAT1)에 대한 XOR 연산을 수행하여 제1 데이터(DAT1)와 상이한 값을 가지는 제2 데이터(DAT2)를 발생할 수 있다.
도 1을 참조하여 상술한 것처럼, 데이터 처리부(230)는 제2 데이터(DAT2)를 선택적으로 실행하며, 제어부(240)는 제1 프로그램 카운터 제어 신호(PCCON1), 제2 프로그램 카운터 제어 신호(PCCON2) 및 모드 선택 신호(MS)를 발생할 수 있다.
일 실시예에서, 제2 데이터(DAT2)는 데이터 처리 장치(200a)에서 순차적으로 실행되는 명령어(instruction)들에 상응하는 일반 코드일 수 있다. 제1 데이터(DAT1)는 상기 보안 모드에서 상기 일반 코드가 암호화된 보안 코드이고 상기 일반 모드에서 상기 일반 코드와 실질적으로 동일한 코드일 수 있다. 데이터 처리 장치(200a)가 마이크로프로세서 또는 CPU인 경우에, 데이터 처리 장치(200a)는 어드레스 신호(AS)의 업데이트에 따라서 상기 명령어들에 상응하는 코드들을 데이터 저장 장치(300)로부터 순차적으로 독출하고, 독출된 코드들에 상응하는 명령어들을 순차적으로 실행할 수 있다. 이 때, 데이터 처리 장치(200a)는 상기 일반 모드에서 상기 명령어들에 상응하는 일반 코드를 그대로 수신하고 상기 일반 코드에 상응하는 명령어들을 순차적으로 실행하며, 상기 보안 모드에서 상기 보안 코드를 수신하고 상기 보안 코드를 상기 일반 코드로 변환한 후에 상기 일반 코드에 상응하는 명령어들을 순차적으로 실행할 수 있다. 즉, 데이터 처리 장치(200a)는 상기 일반 모드에서 어드레스 신호(AS)와 상기 일반 코드가 매칭되는 1차원 어드레스 공간으로 구현되며, 상기 보안 모드에서 어드레스 신호(AS)와 상기 보안 코드가 매칭되고 상기 보안 코드와 상기 일반 코드가 매칭되는 2차원 어드레스 공간으로 구현될 수 있다.
도 4, 5 및 6은 도 2의 데이터 처리 장치의 동작을 설명하기 위한 도면들이다. 도 4는 도 2의 대체 박스 블록(228)에 저장된 변환 테이블의 일 예를 나타내는 표이다. 도 5는 상기 보안 모드에서 제1 데이터(즉, 보안 코드)에 오류가 주입되지 않은 경우에 데이터 처리 장치(200a)의 동작을 나타내며, 도 6은 상기 보안 모드에서 상기 제1 데이터에 오류가 주입된 경우에 데이터 처리 장치(200a)의 동작을 나타낸다. 도 4, 5 및 6에서, 보안 코드 및 일반 코드는 4비트의 데이터 코드인 것으로 가정한다.
도 2 및 4를 참조하면, 변환 테이블은 대체 박스 블록(228)의 입력인 일반 코드(즉, 제2 데이터(DAT2))와 제2 프로그램 카운터 블록(222)의 출력(즉, 제3 데이터(DAT3))을 1:1로 맵핑시킬 수 있다. 예를 들어, 상기 변환 테이블은 CPU 프로그래밍 모델(CPU programming model)에 의해 미리 설정될 수 있으며, 제1 데이터(DAT1)에 오류가 주입된 경우에 상기 제1 데이터(DAT1)에 주입된 오류에 상응하는 제2 데이터(DAT2) 내의 오류가 증가되도록 설정될 수 있다.
도 2 및 5를 참조하면, 데이터 처리 장치(200a)는 상기 보안 모드에서 제1 명령어(#1), 제2 명령어(#2), 제3 명령어(#3), 제4 명령어(#4) ... 의 순서로 명령어를 실행하도록 설계될 수 있다. 어드레스 신호(AS)는 명령어가 실행됨에 따라 1씩 증가될 수 있으며, 일반 코드(즉, 제2 데이터(DAT2)) 역시 명령어가 실행됨에 따라 1씩 증가하도록 설정될 수 있다. 예를 들어, 제1 명령어(#1)는 일반 코드 '0000'에 상응할 수 있다. 마찬가지로, 제2 내지 제4 명령어들(#2, #3, #4)은 각각 일반 코드 '0001', '0010', '0011'에 상응할 수 있다.
제2 프로그램 카운터 블록(222)의 출력인 변환 코드(즉, 제3 데이터(DAT3))의 값은 이전에 실행된 명령어에 상응하는 이전의 일반 코드(DAT2) 및 대체 박스 블록(228)에 저장된 도 4의 변환 테이블에 기초하여 결정될 수 있다. 다만, 동작 초기에는 이전에 실행된 명령어가 존재하지 않으므로, 제1 명령어(#1)에 상응하는 일반 코드 '0000'을 발생하기 위한 변환 코드의 초기값은 상기 CPU 프로그래밍 모델에 의해 미리 설정될 수 있으며, 도 5의 예에서는 변환 코드의 초기값이 '0101'로 설정되었다. 제2 명령어(#2)에 상응하는 일반 코드 '0001'을 발생하기 위한 변환 코드의 값은 이전의 제1 명령어(#1)에 상응하는 일반 코드 '0000' 및 도 4의 변환 테이블에 기초하여 '0011'로 결정될 수 있다. 마찬가지로, 제3 명령어(#3)에 상응하는 일반 코드 '0010'을 발생하기 위한 변환 코드의 값은 '0110'으로 결정되며, 제4 명령어(#4)에 상응하는 일반 코드 '0011'을 발생하기 위한 변환 코드의 값은 '1001'로 결정될 수 있다.
보안 코드(즉, 제1 데이터(DAT1))는 제3 데이터(DAT3)와의 XOR 연산을 통하여 일반 코드(DAT2)를 발생할 수 있도록 상기 CPU 프로그래밍 모델에 의해 미리 설정되어 데이터 저장 장치(300)에 저장될 수 있다. 예를 들어, 변환 코드의 초기값인 '0101'과의 XOR 연산을 통하여 제1 명령어(#1)에 상응하는 일반 코드 '0000'을 발생하는 보안 코드 '0101'은 데이터 저장 장치(300) 내의 어드레스 '0'에 상응하는 위치에 저장될 수 있다. 마찬가지로, 변환 코드 '0011', '0110', '0101'과의 XOR 연산을 통하여 제2 명령어(#2), 제3 명령어(#3), 제4 명령어(#4)에 상응하는 일반 코드 '0001', '0010', '0011'을 발생하는 보안 코드 '0010', '0100', '1010'은 각각 데이터 저장 장치(300) 내의 어드레스 '1', '2', '3'에 상응하는 위치에 저장되어 있다.
보안 코드(즉, 제1 데이터(DAT1))에 오류가 주입되지 않은 정상 동작에서, 제1 레지스터부(210)는 동작 초기에 어드레스 신호(AS)를 '0'으로 초기화하고, 상기 초기화된 어드레스 신호(AS)를 데이터 저장 장치(300)에 제공한다. 제2 레지스터부(220a)는 데이터 저장 장치(300)의 어드레스 '0'에 저장된 보안 코드 '0101'을 수신하며, 변환 코드의 초기값인 '0101'과 수신된 보안 코드 '0101'에 대한 XOR 연산을 수행하여 제1 명령어(#1)에 상응하는 일반 코드 '0000'을 발생한다. 데이터 처리부(230)는 일반 코드 '0000'에 기초하여 제1 명령어(#1)를 실행한다.
제1 명령어(#1)가 실행된 후에, 변환 테이블에 기초하여 변환 코드가 '0011'로 업데이트된다. 또한 다음에 실행될 제2 명령어(#2)에 상응하는 보안 코드 '0010'을 독출하기 위하여 제1 레지스터부(210)는 어드레스 신호(AS)를 '1'로 업데이트한다. 제2 레지스터부(220a)는 데이터 저장 장치(300)의 어드레스 '1'에 저장된 보안 코드 '0010'을 수신하며, 업데이트된 변환 코드 '0011'과 수신된 보안 코드 '0010'에 대한 XOR 연산을 수행하여 제2 명령어(#2)에 상응하는 일반 코드 '0001'을 발생한다. 데이터 처리부(230)는 일반 코드 '0001'에 기초하여 제2 명령어(#2)를 실행한다.
마찬가지로, 제2 명령어(#2)가 실행된 후에, 변환 코드가 '0110'으로 업데이트되고, 어드레스 신호(AS)가 '2'로 업데이트된다. 제2 레지스터부(220a)는 업데이트된 변환 코드 '0110'과 어드레스 '2'에 상응하는 수신된 보안 코드 '0100'에 대한 XOR 연산을 수행하여 일반 코드 '0010'을 발생하며, 데이터 처리부(230)는 일반 코드 '0010'에 기초하여 제3 명령어(#3)를 실행한다. 제3 명령어(#3)가 실행된 후에, 변환 코드가 '1001'로 업데이트되고, 어드레스 신호(AS)가 '3'으로 업데이트된다. 제2 레지스터부(220a)는 업데이트된 변환 코드 '1001'과 어드레스 '3'에 상응하는 수신된 보안 코드 '1010'에 대한 XOR 연산을 수행하여 일반 코드 '0011'을 발생하며, 데이터 처리부(230)는 일반 코드 '0011'에 기초하여 제4 명령어(#4)를 실행한다.
도 2 및 6을 참조하면, 보안 코드(즉, 제1 데이터(DAT1))에 오류가 주입된 비정상 동작에서, 제1 레지스터부(210)는 동작 초기에 어드레스 신호(AS)를 '0'으로 초기화하고, 상기 초기화된 어드레스 신호(AS)를 데이터 저장 장치(300)에 제공한다. 제2 레지스터부(220a)는 데이터 저장 장치(300)의 어드레스 '0'에 저장된 보안 코드를 수신한다. 이 때, 보안 코드(예를 들어, 보안 코드의 차하위 비트)에 1비트의 오류가 주입되어 도 5의 예와는 다른 보안 코드인 '0111'이 수신된다. 제2 레지스터부(220a)는 변환 코드의 초기값인 '0101'과 수신된 보안 코드 '0111'에 대한 XOR 연산을 수행하여 일반 코드 '0010'을 발생한다. 즉, 도 5의 예와 비교하였을 때, 제1 명령어(#1)에 상응하는 일반 코드에 1비트의 오류가 발생된다.
일반 코드 '0010' 및 변환 테이블에 기초하여 변환 코드가 '1001'로 업데이트되며, 다음에 실행될 제2 명령어(#2)를 독출하기 위하여 제1 레지스터부(210)는 어드레스 신호(AS)를 '1'로 업데이트한다. 제2 레지스터부(220a)는 데이터 저장 장치(300)의 어드레스 '1'에 저장된 보안 코드 '0010'을 수신하며, 업데이트된 변환 코드 '1001'과 수신된 보안 코드 '0010'에 대한 XOR 연산을 수행하여 일반 코드 '1011'을 발생한다. 즉, 도 5의 예와 비교하였을 때, 제2 명령어(#2)에 상응하는 일반 코드에 2비트의 오류가 발생된다.
마찬가지로, 일반 코드 '1011' 및 변환 테이블에 기초하여 변환 코드가 '1100'으로 업데이트되며, 어드레스 신호(AS)가 '2'로 업데이트된다. 제2 레지스터부(220a)는 업데이트된 변환 코드 '1100'과 어드레스 '2'에 상응하는 수신된 보안 코드 '0100'에 대한 XOR 연산을 수행하여 일반 코드 '1000'을 발생한다. 도 5의 예와 비교하였을 때, 제3 명령어(#3)에 상응하는 일반 코드에 2비트의 오류가 발생된다. 또한 일반 코드 '1000' 및 변환 테이블에 기초하여 변환 코드가 '0111'로 업데이트되고, 어드레스 신호(AS)가 '3'으로 업데이트된다. 제2 레지스터부(220a)는 업데이트된 변환 코드 '0111'과 어드레스 '3'에 상응하는 수신된 보안 코드 '1010'에 대한 XOR 연산을 수행하여 일반 코드 '1101'을 발생한다. 도 5의 예와 비교하였을 때, 제4 명령어(#4)에 상응하는 일반 코드에 3비트의 오류가 발생된다.
일 실시예에서, 데이터 처리 장치(200a)는 명령어들에 상응하는 일반 코드가 유효한지 여부를 판단하고, 상기 판단 결과에 기초하여 명령어들을 선택적으로 실행할 수 있다. 예를 들어, 데이터 처리 장치(200a)는 기준 오류 비트 수 및 상기 일반 코드 내의 오류 비트 수에 기초하여 상기 일반 코드가 유효한지 여부를 판단할 수 있다. 도 6의 예에서, 상기 기준 오류 비트 수를 3이라고 가정하면, 일반 코드 '0010', '1011', '1000'에 대해서는 각각 1비트, 2비트, 2비트의 오류가 발생되었으므로 일반 코드 '0010', '1011', '1000'은 유효한 것으로 판단될 수 있으며, 일반 코드 '1101'에 대해서는 3비트의 오류가 발생되었으므로 일반 코드 '1101'은 유효하지 않은 것으로 판단될 수 있다. 상기 일반 코드가 유효한 것으로 판단된 경우에는 상기 일반 코드에 상응하는 명령어들이 실행될 수 있다. 상기 일반 코드가 유효하지 않은 것으로 판단된 경우에는, 어드레스 신호(AS) 및 변환 코드(DAT3)가 CPU 프로그래밍 모델이나 링커(linker)에 의해 미리 정해진 값으로 로딩되며, 상기 로딩된 어드레스 신호(AS) 및 변환 코드(DAT3)에 기초하여 리셋 동작, 인터럽트 동작, 및/또는 점프 동작이 수행되어 데이터 처리 장치(200a)의 동작이 종료되거나 보안 인터럽트가 수행될 수 있다.
보안 코드를 이용하지 않고 일반 코드만을 이용하는 종래의 데이터 처리 장치에서는, 보안 모드에서 명령어들을 순차적으로 실행하는 도중에 현재 명령어에 상응하는 일반 코드에 오류가 주입되더라도, 다음 명령어에 상응하는 일반 코드 내의 오류 비트 수가 증가하지 않는다. 따라서 종래의 데이터 처리 장치에서는 일반 코드에 미세한 오류(예를 들어, 1비트의 오류)가 주입되는 경우에 이를 검출하는 것이 어렵다.
본 발명의 실시예들에 따른 데이터 처리 장치(200a)는, 어드레스 신호(AS)에 기초하여 보안 코드를 수신하고 상기 보안 코드에 기초하여 일반 코드를 생성하며 상기 일반 코드에 상응하는 명령어들을 실행하는 2차원 어드레스 공간으로 구현될 수 있다. 또한 도 6에 도시된 것처럼, 현재 명령어(예를 들어, 제1 명령어(#1))에 상응하는 일반 코드에 미세한 오류(예를 들어, 1비트의 오류)가 주입되는 경우에, 다음 명령어들(예를 들어, 제2 내지 제4 명령어들(#2, #3, #4))에 상응하는 일반 코드 내의 오류 비트 수가 점점 증가할 수 있다. 즉, 데이터 처리 장치(200a)는 일반 코드 내의 오류를 증가시켜 상기 검출 가능한 에러를 생성할 수 있으며, 따라서 동작 속도의 감소 및/또는 성능 저하 없이 외부로부터의 공격이나 오류를 자체적으로 검출하고 효율적으로 후속 조치를 취할 수 있다.
다시 말하면, 본 발명의 실시예들에 따른 데이터 처리 장치(200a)는, 상기 보안 모드에서 소프트웨어에 포함된 명령어들이 미리 정해진 순서에 따라 정확하게 페치되고 실행되는지 여부를 지속적으로 체크할 수 있다. 명령어들의 실행 도중에 오류가 주입되어 명령어가 변질된 경우에, 상기 명령어의 변질이 빠르게 전파되고 확산된다. 이에 따라, 데이터 처리 장치(200a)는 유효하지 않은 어드레스를 액세스하거나 유효하지 않은 명령어를 실행하는 의사 랜덤 코드(pseudo random code)를 실행할 수 있으며, 오류 주입 여부를 상대적으로 빠르게 판단할 수 있다. 따라서, 소프트웨어 실행의 무결성(integrity)이 향상될 수 있다. 한편, 일반적으로 데이터 처리 장치의 성능과 보안 레벨은 서로 트레이드 오프(trade off) 관계이나, 본 발명의 실시예들에 따른 데이터 처리 장치(200a)는 보안이 필요한 데이터 및/또는 명령어에 대해서만 보안 코드를 설정하여 성능의 과도한 열화 없이 보안 레벨을 향상시킬 수 있다.
도 7은 도 1의 집적 회로에 포함되는 데이터 처리 장치의 다른 예를 나타내는 도면이다.
도 7을 참조하면, 데이터 처리 장치(200b)는 제1 레지스터부(210), 제2 레지스터부(220b) 및 데이터 처리부(230)를 포함하며, 제어부(240)를 더 포함할 수 있다.
도 7의 제1 레지스터부(210), 데이터 처리부(230) 및 제어부(240)는 도 2의 제1 레지스터부(210), 데이터 처리부(230) 및 제어부(240)와 각각 실질적으로 동일할 수 있다. 즉, 제1 레지스터부(210)는 제1 프로그램 카운터 블록(212) 및 업 카운팅 블록(214)을 포함하며, 제1 프로그램 카운터 블록(212)은 제1 프로그램 카운터 제어 신호(PCCON1) 및 업 카운팅 블록(214)에 기초하여 순차적으로 증가되는 어드레스 신호(AS)를 발생할 수 있다. 데이터 처리부(230)는 제2 데이터(DAT2)를 선택적으로 실행하며, 제어부(240)는 제1 프로그램 카운터 제어 신호(PCCON1), 제2 프로그램 카운터 제어 신호(PCCON2) 및 모드 선택 신호(MS)를 발생할 수 있다.
제2 레지스터부(220b)는 제2 프로그램 카운터 블록(222), 모드 선택 블록(224b), 연산 블록(226b) 및 대체 박스 블록(228)을 포함할 수 있다.
제2 프로그램 카운터 블록(222)은 제2 프로그램 카운터 제어 신호(PCCON2) 및 대체 박스 블록(228)에 저장된 변환 테이블에 기초하여 제2 데이터(DAT2)를 제3 데이터(DAT3)로 변환할 수 있다. 모드 선택 블록(224b)은 제3 데이터(DAT3) 및 모드 선택 신호(MS)에 기초하여 제4 데이터(DAT4)를 발생할 수 있다. 연산 블록(226b)은 제1 데이터(DAT1) 및 제4 데이터(DAT4)에 기초하여 제2 데이터(DAT2)를 발생할 수 있다.
일 실시예에서, 모드 선택 블록(224b)은 제3 데이터(DAT3) 및 모드 선택 신호(MS)에 대한 OR 연산을 수행하여 제4 데이터(DAT4)를 발생하는 OR 게이트(OR1)를 포함할 수 있고, 연산 블록(226b)은 제1 데이터(DAT1) 및 제4 데이터(DAT4)에 대한 XNOR 연산을 수행하여 제2 데이터(DAT2)를 발생하는 XNOR 게이트(XNOR1)를 포함할 수 있다. 이 경우, 모드 선택 신호(MS)는 상기 일반 모드에서 '1'의 값을 가지고 상기 보안 모드에서 '0'의 값을 가질 수 있다. 즉, 상기 일반 모드에서, OR 게이트(OR1)는 제3 데이터(DAT3)의 각 비트와 '1'의 값을 가지는 모드 선택 신호(MS)에 대한 OR 연산을 수행하여 '1'에 상응하는 값을 가지는(즉, 제3 데이터(DAT3)와 상이한 값을 가지는) 제4 데이터(DAT4)를 발생할 수 있고, XNOR 게이트(XNOR1)는 '1'에 상응하는 값을 가지는 제4 데이터(DAT4)와 제1 데이터(DAT1)에 대한 XNOR 연산을 수행하여 제1 데이터(DAT1)와 실질적으로 동일한 값을 가지는 제2 데이터(DAT2)를 발생할 수 있다. 상기 보안 모드에서, OR 게이트(OR1)는 제3 데이터(DAT3)의 각 비트와 '0'의 값을 가지는 모드 선택 신호(MS)에 대한 OR 연산을 수행하여 제3 데이터(DAT3)와 실질적으로 동일한 값을 가지는 제4 데이터(DAT4)를 발생할 수 있고, XNOR 게이트(XNOR1)는 제4 데이터(DAT4)와 제1 데이터(DAT1)에 대한 XNOR 연산을 수행하여 제1 데이터(DAT1)와 상이한 값을 가지는 제2 데이터(DAT2)를 발생할 수 있다.
도 8 및 9는 도 7의 데이터 처리 장치의 동작을 설명하기 위한 도면들이다. 도 8은 상기 보안 모드에서 제1 데이터(즉, 보안 코드)에 오류가 주입되지 않은 경우에 데이터 처리 장치(200b)의 동작을 나타내며, 도 9는 상기 보안 모드에서 상기 제1 데이터에 오류가 주입된 경우에 데이터 처리 장치(200b)의 동작을 나타낸다. 도 4, 5 및 6에서, 보안 코드 및 일반 코드는 4비트의 데이터 코드인 것으로 가정한다.
도 7 및 8을 참조하면, 데이터 처리 장치(200b)는 상기 보안 모드에서 제1 명령어(#1), 제2 명령어(#2), 제3 명령어(#3), 제4 명령어(#4) ... 의 순서로 명령어를 실행하도록 설계될 수 있다. 어드레스 신호(AS)는 명령어가 실행됨에 따라 1씩 증가될 수 있으며, 일반 코드(즉, 제2 데이터(DAT2)) 역시 명령어가 실행됨에 따라 1씩 증가하도록 설정될 수 있다. 예를 들어, 제1 명령어(#1)는 일반 코드 '0000'에 상응할 수 있다. 마찬가지로, 제2 내지 제4 명령어들(#2, #3, #4)은 각각 일반 코드 '0001', '0010', '0011'에 상응할 수 있다.
제2 프로그램 카운터 블록(222)의 출력인 변환 코드(즉, 제3 데이터(DAT3))의 값은 이전에 실행된 명령어에 상응하는 이전의 일반 코드(DAT2) 및 대체 박스 블록(228)에 저장된 도 4의 변환 테이블에 기초하여 결정될 수 있다. 도 8의 예에서는 변환 코드의 초기값이 '1011'로 설정되었다. 제2 명령어(#2)에 상응하는 일반 코드 '0001'을 발생하기 위한 변환 코드의 값은 '0011'로 결정되고, 제3 명령어(#3)에 상응하는 일반 코드 '0010'을 발생하기 위한 변환 코드의 값은 '0110'으로 결정되며, 제4 명령어(#4)에 상응하는 일반 코드 '0011'을 발생하기 위한 변환 코드의 값은 '1001'로 결정될 수 있다.
보안 코드(즉, 제1 데이터(DAT1))는 제3 데이터(DAT3)와의 XNOR 연산을 통하여 일반 코드(DAT2)를 발생할 수 있도록 상기 CPU 프로그래밍 모델에 의해 미리 설정되어 데이터 저장 장치(300)에 저장될 수 있다. 예를 들어, 변환 코드의 초기값인 '1011'과의 XNOR 연산을 통하여 제1 명령어(#1)에 상응하는 일반 코드 '0000'을 발생하는 보안 코드 '0100'은 데이터 저장 장치(300) 내의 어드레스 '0'에 상응하는 위치에 저장될 수 있다. 마찬가지로, 변환 코드 '0011', '0110', '0101'과의 XNOR 연산을 통하여 제2 명령어(#2), 제3 명령어(#3), 제4 명령어(#4)에 상응하는 일반 코드 '0001', '0010', '0011'을 발생하는 보안 코드 '1101', '1011', '0101'은 각각 데이터 저장 장치(300) 내의 어드레스 '1', '2', '3'에 상응하는 위치에 저장되어 있다.
보안 코드(즉, 제1 데이터(DAT1))에 오류가 주입되지 않은 정상 동작에서, 제1 레지스터부(210)는 동작 초기에 어드레스 신호(AS)를 '0'으로 초기화하고, 상기 초기화된 어드레스 신호(AS)를 데이터 저장 장치(300)에 제공한다. 제2 레지스터부(220b)는 데이터 저장 장치(300)의 어드레스 '0'에 저장된 보안 코드 '0100'을 수신하며, 변환 코드의 초기값인 '1011'과 수신된 보안 코드 '0100'에 대한 XNOR 연산을 수행하여 제1 명령어(#1)에 상응하는 일반 코드 '0000'을 발생한다. 데이터 처리부(230)는 일반 코드 '0000'에 기초하여 제1 명령어(#1)를 실행한다.
제1 명령어(#1)가 실행된 후에, 변환 테이블에 기초하여 변환 코드가 '0011'로 업데이트된다. 또한 다음에 실행될 제2 명령어(#2)에 상응하는 보안 코드 '1101'을 독출하기 위하여 제1 레지스터부(210)는 어드레스 신호(AS)를 '1'로 업데이트한다. 제2 레지스터부(220b)는 데이터 저장 장치(300)의 어드레스 '1'에 저장된 보안 코드 '1101'을 수신하며, 업데이트된 변환 코드 '0011'과 수신된 보안 코드 '1101'에 대한 XNOR 연산을 수행하여 제2 명령어(#2)에 상응하는 일반 코드 '0001'을 발생한다. 데이터 처리부(230)는 일반 코드 '0001'에 기초하여 제2 명령어(#2)를 실행한다.
마찬가지로, 제2 명령어(#2)가 실행된 후에, 변환 코드가 '0110'으로 업데이트되고, 어드레스 신호(AS)가 '2'로 업데이트된다. 제2 레지스터부(220b)는 업데이트된 변환 코드 '0110'과 어드레스 '2'에 상응하는 수신된 보안 코드 '1011'에 대한 XNOR 연산을 수행하여 일반 코드 '0010'을 발생하며, 데이터 처리부(230)는 일반 코드 '0010'에 기초하여 제3 명령어(#3)를 실행한다. 제3 명령어(#3)가 실행된 후에, 변환 코드가 '1001'로 업데이트되고, 어드레스 신호(AS)가 '3'으로 업데이트된다. 제2 레지스터부(220b)는 업데이트된 변환 코드 '1001'과 어드레스 '3'에 상응하는 수신된 보안 코드 '0101'에 대한 XNOR 연산을 수행하여 일반 코드 '0011'을 발생하며, 데이터 처리부(230)는 일반 코드 '0011'에 기초하여 제4 명령어(#4)를 실행한다.
도 7 및 9를 참조하면, 보안 코드(즉, 제1 데이터(DAT1))에 오류가 주입된 비정상 동작에서, 제1 레지스터부(210)는 동작 초기에 어드레스 신호(AS)를 '0'으로 초기화하고, 상기 초기화된 어드레스 신호(AS)를 데이터 저장 장치(300)에 제공한다. 제2 레지스터부(220b)는 데이터 저장 장치(300)의 어드레스 '0'에 저장된 보안 코드를 수신한다. 이 때, 보안 코드(예를 들어, 보안 코드의 최하위 비트)에 1비트의 오류가 주입되어 도 8의 예와는 다른 보안 코드인 '0101'이 수신된다. 제2 레지스터부(220b)는 변환 코드의 초기값인 '1011'과 수신된 보안 코드 '0101'에 대한 XNOR 연산을 수행하여 일반 코드 '0001'을 발생한다. 즉, 도 8의 예와 비교하였을 때, 제1 명령어(#1)에 상응하는 일반 코드에 1비트의 오류가 발생된다.
일반 코드 '0001' 및 변환 테이블에 기초하여 변환 코드가 '0110'으로 업데이트되며, 다음에 실행될 제2 명령어(#2)를 독출하기 위하여 제1 레지스터부(210)는 어드레스 신호(AS)를 '1'로 업데이트한다. 제2 레지스터부(220b)는 데이터 저장 장치(300)의 어드레스 '1'에 저장된 보안 코드 '1101'을 수신하며, 업데이트된 변환 코드 '0110'과 수신된 보안 코드 '1101'에 대한 XNOR 연산을 수행하여 일반 코드 '0100'을 발생한다. 즉, 도 8의 예와 비교하였을 때, 제2 명령어(#2)에 상응하는 일반 코드에 2비트의 오류가 발생된다.
마찬가지로, 일반 코드 '0100' 및 변환 테이블에 기초하여 변환 코드가 '0101'로 업데이트되며, 어드레스 신호(AS)가 '2'로 업데이트된다. 제2 레지스터부(220b)는 업데이트된 변환 코드 '0101'과 어드레스 '2'에 상응하는 수신된 보안 코드 '1011'에 대한 XNOR 연산을 수행하여 일반 코드 '0001'을 발생한다. 도 8의 예와 비교하였을 때, 제3 명령어(#3)에 상응하는 일반 코드에 2비트의 오류가 발생된다. 또한 일반 코드 '0001' 및 변환 테이블에 기초하여 변환 코드가 '0110'으로 업데이트되고, 어드레스 신호(AS)가 '3'으로 업데이트된다. 제2 레지스터부(220b)는 업데이트된 변환 코드 '0110'과 어드레스 '3'에 상응하는 수신된 보안 코드 '0101'에 대한 XNOR 연산을 수행하여 일반 코드 '1100'을 발생한다. 도 8의 예와 비교하였을 때, 제4 명령어(#4)에 상응하는 일반 코드에 4비트의 오류가 발생된다.
일 실시예에서, 데이터 처리 장치(200b)는 명령어들에 상응하는 일반 코드가 유효한지 여부를 판단하고, 상기 판단 결과에 기초하여 명령어들을 선택적으로 실행할 수 있다. 예를 들어, 데이터 처리 장치(200b)는 기준 오류 비트 수 및 상기 일반 코드 내의 오류 비트 수에 기초하여 상기 일반 코드가 유효한지 여부를 판단할 수 있다. 도 9의 예에서, 상기 기준 오류 비트 수를 3이라고 가정하면, 일반 코드 '0001', '0100', '0001'에 대해서는 각각 1비트, 2비트, 2비트의 오류가 발생되었으므로 일반 코드 '0001', '0100', '0001'은 유효한 것으로 판단될 수 있으며, 일반 코드 '1100'에 대해서는 4비트의 오류가 발생되었으므로 일반 코드 '1100'은 유효하지 않은 것으로 판단될 수 있다. 상기 일반 코드가 유효한 것으로 판단된 경우에는 상기 일반 코드에 상응하는 명령어들이 실행될 수 있고, 상기 일반 코드가 유효하지 않은 것으로 판단된 경우에는 데이터 처리 장치(200b)의 동작이 종료되거나 보안 인터럽트가 수행될 수 있다.
도 10은 본 발명의 실시예들에 따른 데이터 처리 방법을 나타내는 순서도이다.
도 1 및 10을 참조하면, 본 발명의 실시예들에 따른 데이터 처리 방법에서, 제1 제어 신호(CON1)에 기초하여 어드레스 신호(AS)를 발생하고(단계 S100), 어드레스 신호(AS)에 기초하여 외부 저장 장치(즉, 데이터 저장 장치(300))로부터 출력된 제1 데이터(DAT1)를 수신하고(단계 S200), 제2 제어 신호(CON2)에 기초하여 제1 데이터(DAT1)를 제2 데이터(DAT2)로 변환하고 제1 데이터(DAT1)에 오류가 주입된 경우에 동작 모드에 따라서 제2 데이터(DAT2) 내에 검출 가능한 에러를 선택적으로 생성하며(단계 S300), 상기 검출 가능한 에러의 생성 여부에 따라서 제2 데이터(DAT2)를 선택적으로 실행한다(단계 S400). 예를 들어, 상기 동작 모드는 일반 모드 및 보안 모드를 포함할 수 있다. 상기 보안 모드에서 제1 데이터(DAT1)에 오류가 주입된 경우에, 상기 제1 데이터(DAT1)에 주입된 오류에 상응하는 제2 데이터(DAT2) 내의 오류를 증가시켜 상기 검출 가능한 에러가 생성될 수 있다. 상기 일반 모드에서 제1 데이터(DAT1)에 오류가 주입되더라도, 제2 데이터(DAT2) 내에 상기 검출 가능한 에러가 생성되지 않을 수 있다.
일 실시예에서, 제2 데이터(DAT2)는 데이터 처리 장치(200)에서 순차적으로 실행되는 명령어(instruction)들에 상응하는 일반 코드일 수 있다. 제1 데이터(DAT1)는 상기 보안 모드에서 상기 일반 코드가 암호화된 보안 코드이고 상기 일반 모드에서 상기 일반 코드와 실질적으로 동일한 코드일 수 있다.
도 11은 도 10의 데이터 처리 방법의 일 예를 나타내는 순서도이다. 도 11은 상기 보안 모드에서의 데이터 처리 방법을 나타낸다.
도 2, 3 및 도 11을 참조하면, 제1 레지스터부(210)는 제1 제어 신호(예를 들어, 제1 프로그램 카운터 제어 신호(PCCON1))에 기초하여 어드레스 신호(AS)를 발생할 수 있다(단계 S100). 어드레스 신호(AS)는 외부 저장 장치(즉, 데이터 저장 장치(300))에서 제1 데이터(DAT1)가 저장된 위치를 지시하며, 갱신 동작(단계 S150)에 의해 순차적으로 증가할 수 있다.
제2 레지스터부(220a)는 어드레스 신호(AS)에 기초하여 데이터 저장 장치(300)로부터 출력된 보안 코드(즉, 제1 데이터(DAT1))를 수신할 수 있고(단계 S210), 제2 제어 신호(예를 들어, 제2 프로그램 카운터 제어 신호(PCCON2) 및 모드 선택 신호(MS))에 기초하여 상기 보안 코드를 일반 코드(즉, 제2 데이터(DAT2))로 변환할 수 있다(단계 S310).
데이터 처리부(230)는 상기 일반 코드가 유효한지 여부를 판단할 수 있다(단계 S410). 예를 들어, 기준 오류 비트 수 및 상기 일반 코드 내의 오류 비트 수에 기초하여 상기 일반 코드가 유효한지 여부를 판단할 수 있다.
상기 일반 코드가 유효한 것으로 판단된 경우에(단계 S410: 예), 상기 일반 코드에 상응하는 명령어를 실행하고(단계 S420), 어드레스 신호(AS)를 갱신할 수 있다(단계 S150). 상기 갱신된 어드레스에 기초하여 단계 S210, S310, S410이 반복될 수 있다. 예를 들어, 도 5에 도시된 것처럼, 상기 보안 코드 및 상기 일반 코드가 순차적으로 갱신되며, 상기 일반 코드에 상응하는 명령어들이 순차적으로 실행될 수 있다.
상기 일반 코드가 유효하지 않은 것으로 판단된 경우에(단계 S410: 아니오), 데이터 처리 장치(200a)의 동작을 종료시키거나 보안 인터럽트를 수행할 수 있다(단계 S430). 예를 들어, 도 6에 도시된 것처럼, 상기 보안 코드에 오류가 주입된 경우에, 상기 보안 코드에 주입된 오류에 상응하는 상기 일반 코드 내의 오류 비트 수가 점점 증가할 수 있으며, 상기 일반 코드 내의 오류 비트 수가 상기 기준 오류 비트 수 이상인 경우에 상기 일반 코드가 유효하지 않은 것(즉, 상기 검출 가능한 에러가 생성된 것)으로 판단될 수 있다. 이 경우, 데이터의 보호를 위한 후속 조치로서, 데이터 처리 장치(200a)의 동작을 종료시키거나 보안 인터럽트를 수행할 수 있다.
도 12는 도 10의 데이터 처리 방법의 다른 예를 나타내는 순서도이다. 도 12는 상기 보안 모드에서의 데이터 처리 방법을 나타낸다.
도 2, 3 및 도 12를 참조하면, 제1 레지스터부(210)는 제1 제어 신호(예를 들어, 제1 프로그램 카운터 제어 신호(PCCON1))에 기초하여 어드레스 신호(AS)를 발생할 수 있다(단계 S100). 데이터 처리부(230)는 어드레스 신호(AS)가 유효한지 여부를 판단할 수 있다(단계 S110).
어드레스 신호(AS)가 유효한 것으로 판단된 경우에(단계 S110: 예), 제2 레지스터부(220a)는 어드레스 신호(AS)에 기초하여 데이터 저장 장치(300)로부터 출력된 보안 코드(즉, 제1 데이터(DAT1))를 수신할 수 있고(단계 S210), 제2 제어 신호(예를 들어, 제2 프로그램 카운터 제어 신호(PCCON2) 및 모드 선택 신호(MS))에 기초하여 상기 보안 코드를 일반 코드(즉, 제2 데이터(DAT2))로 변환할 수 있다(단계 S310).
데이터 처리부(230)는 상기 일반 코드가 유효한지 여부를 판단할 수 있다(단계 S410). 상기 일반 코드가 유효한 것으로 판단된 경우에(단계 S410: 예), 상기 일반 코드에 상응하는 명령어를 실행하고(단계 S420), 어드레스 신호(AS)를 갱신할 수 있다(단계 S150).
어드레스 신호(AS)가 유효하지 않은 것으로 판단된 경우에(단계 S110: 아니오), 또는 상기 일반 코드가 유효하지 않은 것으로 판단된 경우에(단계 S410: 아니오), 데이터 처리 장치(200a)의 동작을 종료시키거나 보안 인터럽트를 수행할 수 있다(단계 S430).
도 12의 데이터 처리 방법은 단계 S110을 더 포함하는 것을 제외하면 도 11의 데이터 처리 방법과 실질적으로 동일할 수 있다.
도 13은 본 발명의 실시예들에 따른 보안 메모리 장치를 포함하는 시스템을 나타내는 블록도이다.
도 13을 참조하면, 시스템(400)은 호스트(500) 및 보안 메모리 장치(600)를 포함한다.
보안 메모리 장치(600)는 호스트 인터페이스(610), 주프로세서(620), 보안 프로세서(630), 휘발성 메모리(640) 및 비휘발성 메모리(650)를 포함한다. 상기 구성요소들은 내부 버스(601)를 통하여 서로 전기적으로 연결되어 신호들을 주고받을 수 있다. 예를 들어, 보안 메모리 장치(600)는 스마트 카드일 수 있다.
호스트 인터페이스(610)는 호스트(500)와 연결된다. 주프로세서(620)는 호스트 인터페이스(610)를 통하여 호스트(500)와 통신할 수 있다. 예를 들어, 호스트 인터페이스(610)는 USB(Universal Serial Bus), MMC(Multi-Media Card), PCI-E(Peripheral Component Interconnect-Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(200)와 통신하도록 구성될 수 있다.
주프로세서(620)는 보안 메모리 장치(600)의 전반적인 동작을 제어한다. 예를 들어, 주프로세서(620)는 휘발성 메모리(640) 및 비휘발성 메모리(650) 등의 동작을 제어하고, 명령어 또는 데이터를 페치하고 페치된 명령어 또는 데이터를 처리할 수 있으며, 특정 계산들 또는 태스크들과 같은 다양한 기능들을 실행할 수 있다. 주프로세서(620)는 마이크로프로세서 또는 중앙 처리 장치(Central Processing Unit; CPU)일 수 있다.
주프로세서(620)는 도 1의 집적 회로(100)에 포함되는 데이터 처리 장치(200)일 수 있다. 주프로세서(620)는 어드레스 신호(AS)를 발생하는 제1 레지스터부(622) 및 어드레스 신호(AS)에 상응하는 제1 데이터(DAT1)를 제2 데이터(DAT2)로 변환하는 제2 레지스터부(624)를 포함한다. 제1 레지스터부(622)는 제1 프로그램 카운터 블록을 포함하여 구현되고, 제2 레지스터부(624)는 제2 프로그램 카운터 블록을 포함하여 구현될 수 있다. 보안 모드에서 제1 데이터(DAT1)에 오류가 주입된 경우에, 제2 레지스터부(624)는 상기 제1 데이터(DAT1)에 주입된 오류에 상응하는 제2 데이터(DAT2) 내의 오류를 증가시켜 상기 검출 가능한 에러를 생성할 수 있으며, 상기 검출 가능한 에러가 생성되어 제2 데이터(DAT2)가 유효하지 않은 것으로 판단된 경우에 주프로세서(620)의 동작이 종료되거나 보안 인터럽트가 수행될 수 있다. 따라서, 주프로세서(620)는 동작 속도의 감소 및/또는 성능 저하 없이 외부로부터의 공격이나 오류를 자체적으로 검출하고 효율적으로 후속 조치를 취하는 셀프-체크 기능을 가질 수 있으며, 보안 메모리 장치(600)의 크기 및 전력 소모가 감소될 수 있다.
보안 프로세서(630)는 마이크로프로빙(Microprobing), 소프트웨어 공격(Software Attack), 도청(Eavesdropping), 오류 주입(Fault Injection) 등과 같은 부정 조작(Tampering) 공격으로부터 보호되도록 부정 조작 방지(Tamper-Resistant) 기능을 가질 수 있다. 예를 들어, 보안 프로세서(630)는 오류 검출기(Fault Detector), 파워 글리치 검출기(Power Glitch Detector), 레이저 검출기(Laser Detector), 비정상 조건 검출기(Abnormal Condition Detector), 리셋 검출기(Reset Detector), 메탈 쉴드(Metal Shield), 데이터 경로 암호화(Data Path Encryption), 실난수 발생 장치(True Random Number Generator), 또는 이와 유사한 장치를 포함할 수 있다. 일 실시예에서, 주프로세서(620) 및 보안 프로세서(630)는 서로 다른 집적 회로들 또는 칩들로 구현될 수 있다. 다른 실시예에서, 보안 프로세서(630)는 주프로세서(620)의 프로세싱 블록으로서 주프로세서(620) 내에 집적될 수 있다. 실시예에 따라서, 주프로세서(620)가 상술한 셀프-체크 기능을 가지는 경우에, 보안 프로세서(630)는 생략될 수 있다.
휘발성 메모리(640)는 주프로세서(620)에 대한 캐시 메모리(Cache Memory) 또는 작업 메모리(Working Memory)로 동작할 수 있다. 예를 들어, 휘발성 메모리(640)는 정적 랜덤 액세스 메모리(Static Random Access Memory; SRAM), 동적 랜덤 액세스 메모리(Dynamic Random Access Memory; DRAM) 등과 같은 랜덤 액세스 메모리로 구현될 수 있다.
비휘발성 메모리(650)는 보안 메모리 장치(600)에 전원이 공급될 때 실질적으로 가장 먼저 실행되는 부트 이미지를 저장하거나, 보안 데이터 및/또는 그 밖의 일반 데이터를 저장할 수 있다. 예를 들어, 비휘발성 메모리(650)는 OTP 메모리, 마스크 ROM, PROM, EPROM, EEPROM, 플래시 메모리 등으로 구현될 수 있다.
휘발성 메모리(640) 및/또는 비휘발성 메모리(650)는 제1 데이터(DAT1)를 저장할 수 있으며, 주프로세서(620)에서 발생되는 어드레스 신호(AS)에 기초하여 제1 데이터(DAT1)를 제공할 수 있다.
한편, 도시하지는 않았지만, 보안 메모리 장치(600)는 휘발성 메모리(640) 및 비휘발성 메모리(650)를 제어하기 위한 별도의 메모리 컨트롤러를 더 포함할 수 있다.
도 14는 본 발명의 실시예들에 따른 보안 메모리 장치를 모바일 기기에 응용한 예를 나타내는 도면이다.
도 14를 참조하면, 시스템은 모바일 기기(700) 및 보안 메모리 장치(800)를 포함한다.
보안 메모리 장치(800)는 복수의 접속 핀들(810) 및 주프로세서(820)를 포함한다. 도시하지는 않았지만, 보안 메모리 장치(800)는 내부 버스, 호스트 인터페이스, 보안 프로세서, 휘발성 메모리 및 비휘발성 메모리를 더 포함할 수 있다.
모바일 기기(700)와 보안 메모리 장치(800) 사이에 신호들이 송수신되도록 복수의 접속 핀들(810)은 모바일 기기(700)에 연결될 수 있다. 복수의 접속 핀들(810)은 클럭 핀, 커맨드 핀, 데이터 핀 및/또는 리셋 핀을 포함할 수 있다.
주프로세서(820)는 도 1의 집적 회로(100)에 포함되는 데이터 처리 장치(200)일 수 있다. 주프로세서(820)는 어드레스 신호(AS)를 발생하는 제1 레지스터부(822) 및 어드레스 신호(AS)에 상응하는 제1 데이터(DAT1)를 제2 데이터(DAT2)로 변환하는 제2 레지스터부(824)를 포함한다. 제1 레지스터부(822)는 제1 프로그램 카운터 블록을 포함하여 구현되고, 제2 레지스터부(824)는 제2 프로그램 카운터 블록을 포함하여 구현될 수 있다. 보안 모드에서 제1 데이터(DAT1)에 오류가 주입된 경우에, 제2 레지스터부(824)는 상기 제1 데이터(DAT1)에 주입된 오류에 상응하는 제2 데이터(DAT2) 내의 오류를 증가시켜 상기 검출 가능한 에러를 생성할 수 있으며, 상기 검출 가능한 에러가 생성되어 제2 데이터(DAT2)가 유효하지 않은 것으로 판단된 경우에 주프로세서(820)의 동작이 종료되거나 보안 인터럽트가 수행될 수 있다. 따라서, 주프로세서(820)는 동작 속도의 감소 및/또는 성능 저하 없이 외부로부터의 공격이나 오류를 자체적으로 검출하고 효율적으로 후속 조치를 취하는 셀프-체크 기능을 가질 수 있으며, 보안 메모리 장치(800)의 크기 및 전력 소모가 감소될 수 있다.
보안 메모리 장치(800)는 멀티미디어 카드(MultiMedia Card; MMC), 임베디드 멀티미디어 카드(embedded MultiMedia Card; eMMC), 하이브리드 임베디드 멀티미디어 카드(hybrid embedded MultiMedia Card; hybrid eMMC), SD(Secure Digital) 카드, 마이크로 SD 카드, 메모리 스틱(Memory Stick), ID 카드, PCMCIA(Personal Computer Memory Card International Association) 카드, 칩 카드(Chip Card), USB 카드, 스마트 카드(Smart Card), CF 카드(Compact Flash Card)등과 같은 다양한 형태의 메모리 카드로 구현될 수 있다.
실시예에 따라서, 모바일 기기(700)는 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 태블릿(Tablet) PC, 노트북(Laptop Computer), 개인 정보 단말기(personal digital assistant; PDA), 휴대형 멀티미디어 플레이어(portable multimedia player; PMP), 디지털 카메라(Digital Camera), 음악 재생기(Music Player), 휴대용 게임 콘솔(portable game console), 네비게이션(Navigation) 등과 같은 임의의 모바일 기기일 수 있다.
본 발명은 보안 데이터를 처리하고 보안이 요구되는 다양한 장치 및 시스템에 적용될 수 있다. 예를 들어, 본 발명은 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 태블릿(Tablet) PC, 노트북(Laptop Computer), 개인 정보 단말기(personal digital assistant; PDA), 휴대형 멀티미디어 플레이어(portable multimedia player; PMP), 디지털 카메라(Digital Camera), 음악 재생기(Music Player), 휴대용 게임 콘솔(portable game console), 네비게이션(Navigation) 등과 같은 임의의 모바일 기기에 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 제1 제어 신호에 기초하여 외부 저장 장치에 저장된 제1 데이터의 저장 위치를 지시하는 어드레스 신호를 발생하는 제1 레지스터부;
    상기 어드레스 신호에 기초하여 상기 외부 저장 장치로부터 출력된 상기 제1 데이터를 수신하고, 제2 제어 신호에 기초하여 상기 제1 데이터를 제2 데이터로 변환하며, 상기 제1 데이터에 오류가 주입된 경우에 동작 모드에 따라서 상기 제2 데이터 내에 검출 가능한 에러를 선택적으로 생성하는 제2 레지스터부; 및
    상기 검출 가능한 에러의 생성 여부에 따라서 상기 제2 데이터를 선택적으로 실행하는 데이터 처리부를 포함하고,
    상기 동작 모드는 일반 모드 및 보안 모드를 포함하며,
    상기 제2 레지스터부는 상기 보안 모드에서 상기 제1 데이터에 주입된 오류에 상응하는 상기 제2 데이터 내의 오류를 증가시켜 상기 검출 가능한 에러를 생성하고, 상기 일반 모드에서 상기 제2 데이터 내에 상기 검출 가능한 에러를 생성하지 않으며,
    상기 제2 데이터는 데이터 처리 장치에서 순차적으로 실행되는 명령어들에 상응하는 일반 코드이며, 상기 제1 데이터는 상기 보안 모드에서 상기 일반 코드가 암호화된 보안 코드이고 상기 일반 모드에서 상기 일반 코드와 동일한 코드이며,
    상기 보안 모드에서 상기 제1 데이터에 상기 오류가 주입된 경우에, 상기 명령어들이 순차적으로 실행됨에 따라 상기 제2 데이터의 에러 비트의 개수가 증가하는 데이터 처리 장치.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서,
    상기 보안 모드에서 상기 제2 데이터가 유효하지 않은 것으로 판단된 경우에, 상기 데이터 처리 장치의 동작을 종료시키거나 데이터의 보호를 위한 보안 인터럽트를 수행하는 것을 특징으로 하는 데이터 처리 장치.
  5. 제 1 항에 있어서, 상기 제1 레지스터부는,
    상기 제1 제어 신호에 기초하여 순차적으로 증가되는 상기 어드레스 신호를 발생하는 프로그램 카운터 블록을 포함하는 것을 특징으로 하는 데이터 처리 장치.
  6. 제1 제어 신호에 기초하여 외부 저장 장치에 저장된 제1 데이터의 저장 위치를 지시하는 어드레스 신호를 발생하는 제1 레지스터부;
    상기 어드레스 신호에 기초하여 상기 외부 저장 장치로부터 출력된 상기 제1 데이터를 수신하고, 제2 제어 신호에 기초하여 상기 제1 데이터를 제2 데이터로 변환하며, 상기 제1 데이터에 오류가 주입된 경우에 동작 모드에 따라서 상기 제2 데이터 내에 검출 가능한 에러를 선택적으로 생성하는 제2 레지스터부; 및
    상기 검출 가능한 에러의 생성 여부에 따라서 상기 제2 데이터를 선택적으로 실행하는 데이터 처리부를 포함하고,
    상기 제2 레지스터부는,
    미리 저장된 변환 테이블에 기초하여 상기 제2 데이터를 제3 데이터로 변환하는 프로그램 카운터 블록;
    상기 제3 데이터 및 모드 선택 신호에 기초하여 제4 데이터를 발생하는 모드 선택 블록; 및
    상기 제1 데이터 및 상기 제4 데이터에 기초하여 상기 제2 데이터를 발생하는 연산 블록을 포함하는 것을 특징으로 하는 데이터 처리 장치.
  7. 제 6 항에 있어서, 상기 모드 선택 블록은,
    상기 제3 데이터 및 상기 모드 선택 신호에 대한 AND 연산을 수행하여 상기 제4 데이터를 발생하는 AND 게이트를 포함하는 것을 특징으로 하는 데이터 처리 장치.
  8. 제 6 항에 있어서, 상기 연산 블록은,
    상기 제1 데이터 및 상기 제4 데이터에 대한 XOR 연산을 수행하여 상기 제2 데이터를 발생하는 XOR 게이트를 포함하는 것을 특징으로 하는 데이터 처리 장치.
  9. 제 1 항에 있어서,
    상기 제1 제어 신호 및 상기 제2 제어 신호를 발생하는 제어부를 더 포함하는 것을 특징으로 하는 데이터 처리 장치.
  10. 제1 데이터를 저장하는 데이터 저장 장치; 및
    상기 제1 데이터의 저장 위치를 지시하는 어드레스 신호를 발생하고, 상기 데이터 저장 장치로부터 수신된 상기 제1 데이터에 상응하는 제2 데이터를 실행하는 데이터 처리 장치를 포함하고,
    상기 데이터 처리 장치는,
    제1 제어 신호에 기초하여 상기 어드레스 신호를 발생하는 제1 레지스터부;
    상기 어드레스 신호에 기초하여 상기 데이터 저장 장치로부터 출력된 상기 제1 데이터를 수신하고, 제2 제어 신호에 기초하여 상기 제1 데이터를 상기 제2 데이터로 변환하며, 상기 제1 데이터에 오류가 주입된 경우에 동작 모드에 따라서 상기 제2 데이터 내에 검출 가능한 에러를 선택적으로 생성하는 제2 레지스터부; 및
    상기 검출 가능한 에러의 생성 여부에 따라서 상기 제2 데이터를 선택적으로 실행하는 데이터 처리부를 포함하고,
    상기 동작 모드는 일반 모드 및 보안 모드를 포함하며,
    상기 제2 레지스터부는 상기 보안 모드에서 상기 제1 데이터에 주입된 오류에 상응하는 상기 제2 데이터 내의 오류를 증가시켜 상기 검출 가능한 에러를 생성하고, 상기 일반 모드에서 상기 제2 데이터 내에 상기 검출 가능한 에러를 생성하지 않으며,
    상기 제2 데이터는 상기 데이터 처리 장치에서 순차적으로 실행되는 명령어들에 상응하는 일반 코드이며, 상기 제1 데이터는 상기 보안 모드에서 상기 일반 코드가 암호화된 보안 코드이고 상기 일반 모드에서 상기 일반 코드와 동일한 코드이며,
    상기 보안 모드에서 상기 제1 데이터에 상기 오류가 주입된 경우에, 상기 명령어들이 순차적으로 실행됨에 따라 상기 제2 데이터의 에러 비트의 개수가 증가하는 보안 메모리 장치.
KR1020120076146A 2012-07-12 2012-07-12 데이터 처리 장치 및 이를 포함하는 보안 메모리 장치 KR101977772B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120076146A KR101977772B1 (ko) 2012-07-12 2012-07-12 데이터 처리 장치 및 이를 포함하는 보안 메모리 장치
US13/938,610 US9104890B2 (en) 2012-07-12 2013-07-10 Data processing device and a secure memory device including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120076146A KR101977772B1 (ko) 2012-07-12 2012-07-12 데이터 처리 장치 및 이를 포함하는 보안 메모리 장치

Publications (2)

Publication Number Publication Date
KR20140008839A KR20140008839A (ko) 2014-01-22
KR101977772B1 true KR101977772B1 (ko) 2019-05-13

Family

ID=49915210

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120076146A KR101977772B1 (ko) 2012-07-12 2012-07-12 데이터 처리 장치 및 이를 포함하는 보안 메모리 장치

Country Status (2)

Country Link
US (1) US9104890B2 (ko)
KR (1) KR101977772B1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150088485A (ko) 2014-01-24 2015-08-03 한국전자통신연구원 방송 시스템을 이용한 재해 조기경보 방법 및 시스템
JP6573482B2 (ja) * 2015-05-28 2019-09-11 日本板硝子株式会社 酸化亜鉛含有複合粒子、酸化亜鉛含有複合粒子の製造方法、紫外線遮蔽用組成物、及び化粧料
US9929858B2 (en) 2015-09-21 2018-03-27 Nxp B.V. Method and system for detecting fault attacks
KR102004505B1 (ko) 2017-04-13 2019-07-26 양보륜 사용자 행위분석에 의해 컴퓨터 저장장치를 실시간 보호하는 시스템의 제어방법
KR102510451B1 (ko) 2018-05-09 2023-03-16 삼성전자주식회사 집적 회로 장치 및 집적 회로 장치의 동작 방법
CN108733032B (zh) * 2018-06-05 2021-02-05 北京智行者科技有限公司 车辆的自检方法
US11556326B2 (en) * 2018-09-06 2023-01-17 Arm Limited Methods for performing a rollback-capable software update at a device
CN111641948B (zh) * 2020-04-30 2023-07-18 深圳精匠云创科技有限公司 边缘计算接入时的注册方法及边缘计算节点装置
CN111651353B (zh) * 2020-05-29 2023-07-18 北京百度网讯科技有限公司 故障注入的方法、装置、电子设备和存储介质
CN111817918B (zh) * 2020-07-08 2021-12-10 中国人民解放军32181部队 一种通信分机加解密模块的故障检测方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009129070A (ja) * 2007-11-21 2009-06-11 Hitachi Ltd フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム
US20100082927A1 (en) * 2008-10-01 2010-04-01 Sebastien Riou Secure memory interface

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100392199B1 (ko) 2001-01-30 2003-07-22 주식회사 텔레게이트 휴대용 데이터 저장 장치
JP4041076B2 (ja) * 2004-02-27 2008-01-30 株式会社東芝 データ記憶システム
FR2877118B1 (fr) 2004-10-22 2007-01-19 Oberthur Card Syst Sa Protection contre les attaques par generation de fautes sur les instructions de saut
US8005209B2 (en) * 2005-01-06 2011-08-23 Polytechnic University Invariance based concurrent error detection for the advanced encryption standard
KR100725169B1 (ko) * 2005-01-27 2007-06-04 삼성전자주식회사 전력 분석 공격에 안전한 논리 연산 장치 및 방법
FR2884000A1 (fr) 2005-04-05 2006-10-06 St Microelectronics Sa Coprocesseur securise comprenant des moyens pour empecher l'acces a un organe du coprocesseur
JP2008197810A (ja) 2007-02-09 2008-08-28 Toshiba Corp 情報処理装置およびicカード装置
FR2935503A1 (fr) * 2008-08-28 2010-03-05 St Microelectronics Rousset Protection d'un algorithme de chiffrement

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009129070A (ja) * 2007-11-21 2009-06-11 Hitachi Ltd フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム
US20100082927A1 (en) * 2008-10-01 2010-04-01 Sebastien Riou Secure memory interface

Also Published As

Publication number Publication date
US9104890B2 (en) 2015-08-11
KR20140008839A (ko) 2014-01-22
US20140020095A1 (en) 2014-01-16

Similar Documents

Publication Publication Date Title
KR101977772B1 (ko) 데이터 처리 장치 및 이를 포함하는 보안 메모리 장치
KR101977733B1 (ko) 오류 기반 공격의 검출 방법
US9547767B2 (en) Event-based apparatus and method for securing bios in a trusted computing system during execution
US9183394B2 (en) Secure BIOS tamper protection mechanism
EP2874091B1 (en) Partition-based apparatus and method for securing bios in a trusted computing system during execution
EP3198399B1 (en) Detecting a change to system management mode bios code
EP2874092B1 (en) Recurrent BIOS verification with embedded encrypted hash
US8751817B2 (en) Data processing apparatus and validity verification method
EP2088529A2 (en) System and method for securing and executing a flash routine
US10223117B2 (en) Execution flow protection in microcontrollers
US20060219796A1 (en) Integrated circuit chip card capable of determining external attack
CN102968392A (zh) 防止存储器转储的微处理器
US11847209B2 (en) Memory device and system
EP3454216B1 (en) Method for protecting unauthorized data access from a memory
US10049217B2 (en) Event-based apparatus and method for securing bios in a trusted computing system during execution
US9779242B2 (en) Programmable secure bios mechanism in a trusted computing system
US9798880B2 (en) Fuse-enabled secure bios mechanism with override feature
JP4766285B2 (ja) 永久データハードウェアインテグリティ
US20170046516A1 (en) Fuse-enabled secure bios mechanism in a trusted computing system
US10055588B2 (en) Event-based apparatus and method for securing BIOS in a trusted computing system during execution
EP3316168A1 (en) Fuse-enabled secure bios mechanism in a trusted computing system
US8528081B2 (en) Memory system
EP3316167A1 (en) Programmable secure bios mechanism in a trusted computing system
US20170046515A1 (en) Jtag-based secure bios mechanism in a trusted computing system
JP2011232801A (ja) 情報処理装置及びicカード

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