KR102186609B1 - 무결성 검증 장치를 포함하는 전자 시스템 - Google Patents
무결성 검증 장치를 포함하는 전자 시스템 Download PDFInfo
- Publication number
- KR102186609B1 KR102186609B1 KR1020140026914A KR20140026914A KR102186609B1 KR 102186609 B1 KR102186609 B1 KR 102186609B1 KR 1020140026914 A KR1020140026914 A KR 1020140026914A KR 20140026914 A KR20140026914 A KR 20140026914A KR 102186609 B1 KR102186609 B1 KR 102186609B1
- Authority
- KR
- South Korea
- Prior art keywords
- verification
- descriptor
- hash value
- hash
- memory device
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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/79—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2139—Recurrent verification
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
전자 시스템은 메모리 장치, CPU 및 무결성 검증 장치를 포함한다. 메모리 장치는 복수의 검증 데이터들을 저장한다. CPU는 복수의 검증 데이터들 각각에 상응하는 시작 주소, 길이 정보 및 기준 해시값을 포함하는 복수의 설정 레코드들을 제공한다. 무결성 검증 장치는 CPU로부터 수신되는 복수의 설정 레코드들을 저장하고, 복수의 설정 레코드들 각각을 순환하여 선택하고, 선택된 설정 레코드에 포함되는 시작 주소 및 길이 정보에 기초하여 메모리 장치에 직접 접근하여 메모리 장치로부터 선택된 설정 레코드에 상응하는 검증 데이터를 독출하고, 검증 데이터에 대해 해시 연산을 수행하여 검증 해시값을 생성하고, 검증 해시값과 선택된 설정 레코드에 포함되는 기준 해시값에 기초하여 인터럽트 신호를 생성한다.
Description
본 발명은 데이터의 보안에 관한 것으로, 보다 상세하게는 무결성(integrity) 검증 장치를 포함하는 전자 시스템에 관한 것이다.
최근 모바일 디바이스(mobile device)와 같은 전자 시스템에 다양한 기능이 탐재됨에 따라, 전자 시스템에서 개인 정보, 암호키(cryptographic key) 등과 같은 주요 데이터(sensitive data)를 처리하는 빈도가 증가하고 있다.
따라서 전자 시스템은 주요 데이터를 저장하고 있는 메모리 영역이 외부로부터 공격을 받아 주요 데이터가 변경되었는지 여부를 실시간으로 탐지하고, 외부로부터의 공격이 탐지된 경우 그에 따른 적절한 조치를 신속히 취하는 것이 필요하다.
그러나 소프트웨어(software)를 사용하여 외부로부터의 공격을 탐지하는 경우, 중앙 처리 장치(Central Processing Unit; CPU)의 부하가 증가하여 전자 시스템의 성능(performance)이 저하되고 소비 전력이 증가하는 문제점이 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은 하드웨어(hardware)로 구현되는 무결성 검증 장치를 사용하여 메모리에 로드(load)된 주요 데이터가 변경되었는지 여부를 효과적으로 탐지할 수 있는 전자 시스템을 제공하는 것이다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 전자 시스템은 메모리 장치, 중앙 처리 장치(Central Processing Unit; CPU) 및 무결성 검증 장치를 포함한다. 상기 메모리 장치는 복수의 검증 데이터들을 저장한다. 상기 CPU는 상기 복수의 검증 데이터들 각각에 상응하는 시작 주소, 길이 정보 및 기준 해시값을 포함하는 복수의 설정 레코드들을 제공한다. 상기 무결성 검증 장치는 상기 CPU로부터 수신되는 상기 복수의 설정 레코드들을 저장하고, 상기 복수의 설정 레코드들 각각을 순환하여 선택하고, 상기 선택된 설정 레코드에 포함되는 상기 시작 주소 및 상기 길이 정보에 기초하여 상기 메모리 장치에 직접 접근(direct access)하여 상기 메모리 장치로부터 상기 선택된 설정 레코드에 상응하는 검증 데이터를 독출하고, 상기 검증 데이터에 대해 해시 연산을 수행하여 검증 해시값을 생성하고, 상기 검증 해시값과 상기 선택된 설정 레코드에 포함되는 상기 기준 해시값에 기초하여 인터럽트 신호를 생성한다.
일 실시예에 있어서, 상기 무결성 검증 장치는, 상기 복수의 설정 레코드들을 저장하고, 상기 복수의 설정 레코드들 각각을 순환하여 선택하고, 상기 선택된 설정 레코드에 포함되는 상기 시작 주소 및 상기 길이 정보를 출력하는 제어부, FIFO(First Input First Output) 저장부, 상기 메모리 장치로부터 상기 시작 주소 및 상기 길이 정보에 상응하는 검증 데이터를 독출하여 상기 FIFO 저장부에 저장하는 직접 메모리 액세스(Direct Memory Access; DMA)부, 및 상기 길이 정보에 기초하여 상기 FIFO 저장부에 저장된 상기 검증 데이터에 대해 해시(hash) 연산을 수행하여 상기 검증 해시값을 생성하는 해시 엔진(hash engine)을 포함하고, 상기 제어부는 상기 검증 해시값과 상기 기준 해시값이 서로 상이한 경우 상기 인터럽트 신호를 생성할 수 있다.
상기 CPU는 상기 복수의 검증 데이터들 각각에 대해 복수의 해시 연산들 중의 하나를 수행하여 상기 기준 해시값을 생성하고, 상기 복수의 설정 레코드들 각각은 상기 수행된 해시 연산의 종류를 나타내는 해시 타입 정보를 더 포함하고, 상기 제어부는 상기 선택된 설정 레코드에 포함되는 상기 해시 타입 정보를 상기 해시 엔진에 제공하고, 상기 해시 엔진은 상기 검증 데이터에 대해 상기 해시 타입 정보에 상응하는 해시 연산을 수행하여 상기 검증 해시값을 생성할 수 있다.
상기 무결성 검증 장치는, 문턱 시간 간격으로 독출 시작 신호를 생성하는 타이머를 더 포함하고, 상기 DMA부는 상기 독출 시작 신호를 수신할 때마다 상기 메모리 장치에 대해 버스트 독출 동작(burst read operation)을 일 회 수행하여 상기 검증 데이터를 독출할 수 있다.
상기 CPU는 상기 문턱 시간을 상기 제어부에 제공하고, 상기 제어부는 상기 CPU로부터 제공되는 상기 문턱 시간을 상기 타이머에 제공할 수 있다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 전자 시스템은 메모리 장치, 중앙 처리 장치(Central Processing Unit; CPU) 및 무결성 검증 장치를 포함한다. 상기 메모리 장치는 복수의 검증 데이터들을 저장한다. 상기 CPU는 상기 복수의 검증 데이터들 각각에 상응하는 시작 주소, 길이 정보 및 기준 해시값을 갖는 복수의 설정 레코드들을 포함하는 디스크립터(descriptor) 테이블을 생성하여 상기 메모리 장치에 저장하고, 상기 디스크립터 테이블에 상응하는 디스크립터 시작 주소, 디스크립터 길이 정보 및 디스크립터 기준 해시값을 포함하는 디스크립터 레코드를 제공한다. 상기 무결성 검증 장치는 상기 CPU로부터 수신되는 상기 디스크립터 레코드를 저장하고, 상기 디스크립터 시작 주소 및 상기 디스크립터 길이 정보에 기초하여 상기 메모리 장치에 직접 접근하여 상기 메모리 장치로부터 상기 디스크립터 테이블을 독출하고, 상기 디스크립터 테이블에 대해 해시 연산을 수행하여 디스크립터 검증 해시값을 생성하고, 상기 디스크립터 검증 해시값과 상기 디스크립터 기준 해시값을 비교함으로써 상기 디스크립터 테이블에 대해 무결성 검증 동작을 수행하고, 상기 디스크립터 검증 해시값과 상기 디스크립터 기준 해시값이 일치하는 경우 상기 디스크립터 테이블에 포함되는 상기 복수의 설정 레코드들에 기초하여 상기 메모리 장치에 저장된 상기 복수의 검증 데이터들에 대해 무결성 검증 동작을 수행하여 인터럽트 신호를 생성한다.
일 실시예에 있어서, 상기 디스크립터 검증 해시값과 상기 디스크립터 기준 해시값이 서로 상이한 경우, 상기 무결성 검증 장치는 상기 인터럽트 신호를 생성할 수 있다.
일 실시예에 있어서, 상기 디스크립터 검증 해시값과 상기 디스크립터 기준 해시값이 일치하는 경우, 상기 무결성 검증 장치는 상기 디스크립터 테이블에 포함되는 상기 복수의 설정 레코드들 중의 하나를 선택하고, 상기 선택된 설정 레코드에 포함되는 상기 시작 주소 및 상기 길이 정보에 기초하여 상기 메모리 장치에 직접 접근하여 상기 메모리 장치로부터 상기 선택된 설정 레코드에 상응하는 검증 데이터를 독출하고, 상기 검증 데이터에 대해 해시 연산을 수행하여 검증 해시값을 생성하고, 상기 검증 해시값과 상기 선택된 설정 레코드에 포함되는 상기 기준 해시값이 서로 상이한 경우 상기 인터럽트 신호를 생성할 수 있다.
일 실시예에 있어서, 상기 무결성 검증 장치는, 상기 디스크립터 레코드를 저장하고, 상기 디스크립터 시작 주소 및 상기 디스크립터 길이 정보를 출력하는 제어부, FIFO(First Input First Output) 저장부, 상기 디스크립터 시작 주소 및 상기 디스크립터 길이 정보에 기초하여 상기 메모리 장치로부터 상기 디스크립터 테이블을 독출하여 상기 FIFO 저장부 및 상기 제어부에 제공하는 직접 메모리 액세스(Direct Memory Access; DMA)부, 및 상기 디스크립터 길이 정보에 기초하여 상기 FIFO 저장부에 저장된 상기 디스크립터 테이블에 대해 해시 연산을 수행하여 디스크립터 검증 해시값을 생성하는 해시 엔진(hash engine)을 포함하고, 상기 제어부는 상기 디스크립터 검증 해시값과 상기 디스크립터 기준 해시값이 서로 상이한 경우 상기 인터럽트 신호를 생성할 수 있다.
상기 CPU는 상기 디스크립터 테이블에 대해 복수의 해시 연산들 중의 하나를 수행하여 상기 디스크립터 기준 해시값을 생성하고, 상기 디스크립터 레코드는 상기 수행된 해시 연산의 종류를 나타내는 디스크립터 해시 타입 정보를 더 포함하고, 상기 제어부는 상기 디스크립터 레코드에 포함되는 상기 디스크립터 해시 타입 정보를 상기 해시 엔진에 제공하고, 상기 해시 엔진은 상기 디스크립터 테이블에 대해 상기 디스크립터 해시 타입 정보에 상응하는 해시 연산을 수행하여 상기 디스크립터 검증 해시값을 생성할 수 있다.
상기 제어부는 상기 디스크립터 검증 해시값과 상기 디스크립터 기준 해시값이 일치하는 경우, 상기 디스크립터 테이블에 포함되는 상기 복수의 설정 레코드들 중의 하나를 선택하고, 상기 선택된 설정 레코드에 포함되는 상기 시작 주소 및 상기 길이 정보를 출력하고, 상기 DMA부는 상기 메모리 장치로부터 상기 시작 주소 및 상기 길이 정보에 상응하는 검증 데이터를 독출하여 상기 FIFO 저장부에 저장하고, 상기 해시 엔진은 상기 길이 정보에 기초하여 상기 FIFO 저장부에 저장된 상기 검증 데이터에 대해 해시 연산을 수행하여 검증 해시값을 생성하고, 상기 제어부는 상기 검증 해시값과 상기 선택된 설정 레코드에 포함되는 상기 기준 해시값이 서로 상이한 경우 상기 인터럽트 신호를 생성할 수 있다.
상기 검증 해시값과 상기 선택된 설정 레코드에 포함되는 상기 기준 해시값이 일치하는 경우, 상기 무결성 검증 장치는 상기 디스크립터 테이블에 대해 상기 무결성 검증 동작을 다시 수행하고, 상기 디스크립터 검증 해시값과 상기 디스크립터 기준 해시값이 일치하는 경우 상기 디스크립터 테이블에 포함되는 상기 복수의 설정 레코드들 중의 다른 하나를 선택하고, 상기 메모리 장치에 저장된 상기 복수의 검증 데이터들 중에서 상기 선택된 설정 레코드에 상응하는 검증 데이터에 대해 상기 무결성 검증 동작을 수행할 수 있다.
상기 검증 데이터는 m(m은 2 이상의 정수)개의 블록 검증 데이터들로 분산되어 상기 메모리 장치에 저장되고, 상기 설정 레코드에 포함되는 상기 시작 주소는 상기 m개의 블록 검증 데이터들 각각에 상응하는 제1 내지 제m 시작 주소들을 포함하고, 상기 설정 레코드에 포함되는 상기 길이 정보는 상기 m개의 블록 검증 데이터들 각각에 상응하는 제1 내지 제m 길이 정보들을 포함할 수 있다.
상기 제어부는 상기 선택된 설정 레코드에 포함되는 상기 제1 내지 제m 시작 주소들 각각 및 상기 제1 내지 제m 길이 정보들 각각의 쌍들을 순차적으로 출력하고, 상기 DMA부는 상기 메모리 장치로부터 상기 제1 내지 제m 시작 주소들 각각 및 상기 제1 내지 제m 길이 정보들 각각의 쌍들에 상응하는 제1 내지 제m 블록 검증 데이터들을 순차적으로 독출하여 상기 FIFO 저장부에 저장하고, 상기 해시 엔진은 상기 제1 블록 검증 데이터 및 상기 제1 길이 정보에 기초하여 제1 중간 해시 데이터를 생성하고, 제p(p는 m 미만의 양의 정수) 블록 검증 데이터, 제1 내지 제p 길이 정보들 및 제(p-1) 중간 해시 데이터에 기초하여 제p 중간 해시 데이터를 생성하고, 상기 제m 블록 검증 데이터, 상기 제1 내지 제m 길이 정보들 및 상기 제(m-1) 중간 해시 데이터에 기초하여 상기 검증 해시값을 생성할 수 있다.
상기 무결성 검증 장치는, 문턱 시간 간격으로 독출 시작 신호를 생성하는 타이머를 더 포함하고, 상기 DMA부는 상기 독출 시작 신호를 수신할 때마다 상기 메모리 장치에 대해 버스트 독출 동작(burst read operation)을 일 회 수행하여 상기 검증 데이터를 독출할 수 있다.
상기 CPU는 상기 문턱 시간을 상기 제어부에 제공하고, 상기 제어부는 상기 CPU로부터 제공되는 상기 문턱 시간을 상기 타이머에 제공할 수 있다.
본 발명의 실시예들에 따른 전자 시스템은 하드웨어로 구현되는 무결성 검증 장치를 통해 전자 시스템의 구동 중에 백그라운드(background)에서 지속적으로 메모리에 저장된 데이터들에 대해 무결성 검증 동작을 수행하므로 메모리에 저장된 데이터의 훼손 여부를 효과적으로 탐지할 수 있다.
도 1은 본 발명의 일 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 2는 도 1의 전자 시스템에 포함되는 무결성 검증 장치의 일 예를 나타내는 블록도이다.
도 3은 도 2의 무결성 검증 장치에 포함되는 제어부의 일 예를 나타내는 블록도이다.
도 4는 도 3의 제어부에 포함되는 설정 테이블의 일 예를 나타내는 도면이다.
도 5는 도 3의 제어부에 포함되는 해시 레지스터의 일 예를 나타내는 도면이다.
도 6은 도 1의 전자 시스템의 동작을 나타내는 순서도이다.
도 7은 도 1의 전자 시스템에 포함되는 무결성 검증 장치의 다른 예를 나타내는 블록도이다.
도 8은 도 7의 무결성 검증 장치에 포함되는 직접 메모리 액세스(Direct Memory Access; DMA)부의 동작을 설명하기 위한 타이밍도이다.
도 9는 본 발명의 다른 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 10은 도 9의 메모리 장치에 저장되는 디스크립터 테이블의 일 예를 나타내는 도면이다.
도 11은 도 9의 전자 시스템에 포함되는 무결성 검증 장치의 일 예를 나타내는 블록도이다.
도 12는 도 11의 무결성 검증 장치에 포함되는 제어부의 일 예를 나타내는 블록도이다.
도 13 내지 15는 도 9의 전자 시스템의 동작을 나타내는 순서도들이다.
도 16은 도 9의 메모리 장치에 저장되는 디스크립터 테이블의 다른 예를 나타내는 도면이다.
도 17은 도 9의 전자 시스템에 포함되는 무결성 검증 장치의 다른 예를 나타내는 블록도이다.
도 18은 본 발명의 또 다른 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 19는 도 18의 전자 시스템에 포함되는 무결성 검증 장치의 일 예를 나타내는 블록도이다.
도 20은 도 19의 무결성 검증 장치에 포함되는 제어부의 일 예를 나타내는 블록도이다.
도 21은 도 18의 전자 시스템에 포함되는 무결성 검증 장치의 다른 예를 나타내는 블록도이다.
도 22는 본 발명의 일 실시예에 따른 모바일 시스템을 나타내는 블록도이다.
도 2는 도 1의 전자 시스템에 포함되는 무결성 검증 장치의 일 예를 나타내는 블록도이다.
도 3은 도 2의 무결성 검증 장치에 포함되는 제어부의 일 예를 나타내는 블록도이다.
도 4는 도 3의 제어부에 포함되는 설정 테이블의 일 예를 나타내는 도면이다.
도 5는 도 3의 제어부에 포함되는 해시 레지스터의 일 예를 나타내는 도면이다.
도 6은 도 1의 전자 시스템의 동작을 나타내는 순서도이다.
도 7은 도 1의 전자 시스템에 포함되는 무결성 검증 장치의 다른 예를 나타내는 블록도이다.
도 8은 도 7의 무결성 검증 장치에 포함되는 직접 메모리 액세스(Direct Memory Access; DMA)부의 동작을 설명하기 위한 타이밍도이다.
도 9는 본 발명의 다른 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 10은 도 9의 메모리 장치에 저장되는 디스크립터 테이블의 일 예를 나타내는 도면이다.
도 11은 도 9의 전자 시스템에 포함되는 무결성 검증 장치의 일 예를 나타내는 블록도이다.
도 12는 도 11의 무결성 검증 장치에 포함되는 제어부의 일 예를 나타내는 블록도이다.
도 13 내지 15는 도 9의 전자 시스템의 동작을 나타내는 순서도들이다.
도 16은 도 9의 메모리 장치에 저장되는 디스크립터 테이블의 다른 예를 나타내는 도면이다.
도 17은 도 9의 전자 시스템에 포함되는 무결성 검증 장치의 다른 예를 나타내는 블록도이다.
도 18은 본 발명의 또 다른 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 19는 도 18의 전자 시스템에 포함되는 무결성 검증 장치의 일 예를 나타내는 블록도이다.
도 20은 도 19의 무결성 검증 장치에 포함되는 제어부의 일 예를 나타내는 블록도이다.
도 21은 도 18의 전자 시스템에 포함되는 무결성 검증 장치의 다른 예를 나타내는 블록도이다.
도 22는 본 발명의 일 실시예에 따른 모바일 시스템을 나타내는 블록도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 1을 참조하면, 전자 시스템(10)은 중앙 처리 장치(Central Processing Unit; CPU)(100), 메모리 장치(200) 및 무결성(integrity) 검증 장치(300)를 포함한다.
CPU(100), 메모리 장치(200) 및 무결성 검증 장치(300)는 내부 버스(11)를 통해 서로 전기적으로 연결되어 통신을 수행한다.
메모리 장치(200)는 CPU(100) 및 무결성 검증 장치(300)와 데이터를 송수신하기 위한 메모리 컨트롤러를 포함할 수 있다.
메모리 장치(200)는 복수의 검증 데이터들(VD1, VD2, ..., VDn)을 저장한다. 여기서 n은 2 이상의 정수를 나타낸다. 일 실시예에 있어서, 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각은 개인 정보, 암호키(cryptographic key) 등과 같은 보안 데이터일 수 있다. 다른 실시예에 있어서, 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각은 응용 소프트웨어의 실행 코드일 수 있다.
일 실시예에 있어서, 복수의 검증 데이터들(VD1, VD2, ..., VDn)은 CPU(100)에 의해 메모리 장치(200)에 로드(load)될 수 있다. 일 실시예에 있어서, 메모리 장치(200)는 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR(Low Power Double Data Rate) SDRAM, GDDR(Graphics Double Data Rate) SDRAM, RDRAM(Rambus Dynamic Random Access Memory) 등과 같은 동적 랜덤 액세스 메모리(Dynamic Random Access Memory; DRAM) 일 수 있다.
CPU(100)는 메모리 장치(200)에 저장된 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 대해 해시(hash) 연산을 수행하여 기준 해시값(RHASH)을 생성한다. CPU(100)는 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각의 메모리 장치(200)에서의 위치를 나타내는 시작 주소(SADDR) 및 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각의 크기를 나타내는 길이 정보(LENG)를 생성한다. CPU(100)는 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 상응하는 시작 주소(SADDR), 길이 정보(LENG) 및 기준 해시값(RHASH)을 포함하는 복수의 설정 레코드들(CR1~CRn)을 생성하고, 복수의 설정 레코드들(CR1~CRn)을 무결성 검증 장치(300)에 제공한다.
무결성 검증 장치(300)는 CPU(100)로부터 수신되는 복수의 설정 레코드들(CR1~CRn)을 내부적으로 저장한다. 이후, 무결성 검증 장치(300)는 복수의 설정 레코드들(CR1~CRn) 각각을 순환하여 선택한다. 예를 들어, 무결성 검증 장치(300)는 제1 설정 레코드(CR1)부터 제n 설정 레코드(CRn)의 순서로 복수의 설정 레코드들(CR1~CRn) 각각을 순환하여 선택할 수 있다.
무결성 검증 장치(300)는 선택된 설정 레코드(CRk)에 포함되는 시작 주소(SADDR) 및 길이 정보(LENG)에 기초하여 메모리 장치(200)로부터 선택된 설정 레코드(CRk)에 상응하는 검증 데이터(VDk)를 독출한다. 이 때, 무결성 검증 장치(300)는 CPU(100)의 개입(intervention) 없이 메모리 장치(200)에 직접 접근(direct access)하여 선택된 설정 레코드(CRk)에 상응하는 검증 데이터(VDk)를 독출한다. 여기서, k는 n 이하의 양의 정수를 나타낸다.
무결성 검증 장치(300)는 하드웨어(hardware)를 사용하여 검증 데이터(VDk)에 대해 해시 연산을 수행하여 검증 해시값을 생성하고, 상기 검증 해시값과 선택된 설정 레코드(CRk)에 포함되는 기준 해시값(RHASH)에 기초하여 인터럽트 신호(INT)를 생성한다.
예를 들어, 상기 검증 해시값과 선택된 설정 레코드(CRk)에 포함되는 기준 해시값(RHASH)이 일치하는 경우, 무결성 검증 장치(300)는 검증 데이터(VDk)가 무결성을 갖는 것으로 판단하고, 복수의 설정 레코드들(CR1~CRn) 중에서 다음 순서의 설정 레코드를 선택하여 상술한 동작을 반복할 수 있다.
한편, 상기 검증 해시값과 선택된 설정 레코드(CRk)에 포함되는 기준 해시값(RHASH)이 서로 상이한 경우, 무결성 검증 장치(300)는 검증 데이터(VDk)가 무결성을 갖지 않는 것으로 판단하고, CPU(100)에 인터럽트 신호(INT)를 제공할 수 있다. 일 실시예에 있어서, CPU(100)는 무결성 검증 장치(300)로부터 인터럽트 신호(INT)를 수신하는 경우, 메모리 장치(200)에 저장된 검증 데이터(VDk)가 외부로부터의 공격에 의해 변경된 것으로 판단하고, 메모리 장치(200)에 저장된 검증 데이터(VDk)를 삭제하거나 외부로부터의 공격 탐지 사실을 사용자에게 알리는 등의 조치를 취할 수 있다.
일 실시예에 있어서, CPU(100)는 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 대해 복수의 해시 연산들 중의 하나를 수행하여 기준 해시값(RHASH)을 생성할 수 있다. 예를 들어, CPU(100)는 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 대해 SHA(Secure Hash Algorithm)-1, SHA-256, SHA-384, SHA-512 중의 하나에 상응하는 해시 연산을 수행하여 기준 해시값(RHASH)을 생성할 수 있다. SHA-1이 사용되는 경우 기준 해시값(RHASH)은 160비트의 크기를 갖고, SHA-256이 사용되는 경우 기준 해시값(RHASH)은 256비트의 크기를 갖고, SHA-384이 사용되는 경우 기준 해시값(RHASH)은 384비트의 크기를 갖고, SHA-512이 사용되는 경우 기준 해시값(RHASH)은 512비트의 크기를 가질 수 있다. 이 경우, CPU(100)가 무결성 검증 장치(300)에 제공하는 복수의 설정 레코드들(CR1~CRn) 각각은 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 대해 상기 수행된 해시 연산의 종류를 나타내는 해시 타입 정보(HTYPE)를 더 포함할 수 있고, 무결성 검증 장치(300)는 검증 데이터(VDk)에 대해 선택된 설정 레코드(CRk)에 포함되는 해시 타입 정보(HTYPE)에 상응하는 해시 연산을 수행하여 상기 검증 해시값을 생성할 수 있다.
도 2는 도 1의 전자 시스템에 포함되는 무결성 검증 장치의 일 예를 나타내는 블록도이다.
도 2를 참조하면, 무결성 검증 장치(300a)는 제어부(310), 직접 메모리 액세스(Direct Memory Access; DMA)부(320), FIFO(First Input First Output) 저장부(330) 및 해시 엔진(hash engine)(340)을 포함할 수 있다.
제어부(310)는 CPU(100)로부터 제공되는 복수의 설정 레코드들(CR1~CRn)을 내부적으로 저장할 수 있다. 이후, 제어부(310)는 복수의 설정 레코드들(CR1~CRn) 각각을 순환하여 선택하고, 선택된 설정 레코드(CRk)에 포함되는 시작 주소(SADDR) 및 길이 정보(LENG)를 DMA부(320)에 제공하고, 선택된 설정 레코드(CRk)에 포함되는 길이 정보(LENG) 및 해시 타입 정보(HTYPE)를 해시 엔진(340)에 제공할 수 있다.
DMA부(320)는 제어부(310)로부터 시작 주소(SADDR) 및 길이 정보(LENG)를 수신할 수 있다. DMA부(320)는 메모리 장치(200)로부터 시작 주소(SADDR) 및 길이 정보(LENG)에 상응하는 검증 데이터(VDk)를 독출하여 FIFO 저장부(330)에 저장할 수 있다. 이 때, DMA부(320)는 CPU(100)의 개입 없이 메모리 장치(200)에 직접 접근(direct access)하여 시작 주소(SADDR) 및 길이 정보(LENG)에 상응하는 검증 데이터(VDk)를 독출할 수 있다.
해시 엔진(340)은 다양한 종류의 해시 연산을 수행할 수 있는 하드웨어 구조를 가질 수 있다. 해시 엔진(340)은 제어부(310)로부터 길이 정보(LENG) 및 해시 타입 정보(HTYPE)를 수신할 수 있다. 해시 엔진(340)은 길이 정보(LENG)에 기초하여 FIFO 저장부(330)에 저장된 검증 데이터(VDk)에 대해 해시 타입 정보(HTYPE)에 상응하는 해시 연산을 수행하여 검증 해시값(VHASH)을 생성할 수 있다.
제어부(310)는 해시 엔진(340)으로부터 수신되는 검증 해시값(VHASH)과 선택된 설정 레코드(CRk)에 포함되는 기준 해시값(RHASH)을 비교하여 검증 데이터(VDk)가 무결성을 갖는지 여부를 판단할 수 있다.
예를 들어, 검증 해시값(VHASH)과 선택된 설정 레코드(CRk)에 포함되는 기준 해시값(RHASH)이 일치하는 경우, 제어부(310)는 검증 데이터(VDk)가 무결성을 갖는 것으로 판단할 수 있다. 이 경우, 제어부(310)는 복수의 설정 레코드들(CR1~CRn) 중에서 다음 순서의 설정 레코드(CR(k+1))를 선택하고, 선택된 설정 레코드(CR(k+1))에 포함되는 시작 주소(SADDR) 및 길이 정보(LENG)를 DMA부(320)에 제공하고, 선택된 설정 레코드(CR(k+1))에 포함되는 길이 정보(LENG) 및 해시 타입 정보(HTYPE)를 해시 엔진(340)에 제공할 수 있다.
한편, 검증 해시값(VHASH)과 선택된 설정 레코드(CRk)에 포함되는 기준 해시값(RHASH)이 서로 상이한 경우, 제어부(310)는 검증 데이터(VDk)가 무결성을 갖지 않는 것으로 판단하고, CPU(100)에 인터럽트 신호(INT)를 제공할 수 있다.
도 3은 도 2의 무결성 검증 장치에 포함되는 제어부의 일 예를 나타내는 블록도이다.
도 3을 참조하면, 제어부(310)는 제어 회로(311), 설정 테이블(312), 해시 레지스터(313), 비교기(COMP)(314) 및 인터럽트 생성기(315)를 포함할 수 있다.
제어 회로(311)는 CPU(100)로부터 복수의 설정 레코드들(CR1~CRn)을 수신하고, 복수의 설정 레코드들(CR1~CRn)에 포함되는 시작 주소(SADDR), 길이 정보(LENG) 및 해시 타입 정보(HTYPE)를 설정 테이블(312)에 저장하고, 복수의 설정 레코드들(CR1~CRn)에 포함되는 기준 해시값(RHASH)을 해시 레지스터(313)에 저장할 수 있다.
도 4는 도 3의 제어부에 포함되는 설정 테이블의 일 예를 나타내는 도면이다.
도 4를 참조하면, 설정 테이블(312)은 인에이블 필드(EN_F), 시작 주소 필드(SADDR_F), 길이 정보 필드(LENG_F) 및 해시 타입 정보 필드(HTYPE_F)를 포함할 수 있다.
도 4에 도시된 바와 같이, 제어 회로(311)는 복수의 설정 레코드들(CR1~CRn)에 포함되는 시작 주소(SADDR), 길이 정보(LENG) 및 해시 타입 정보(HTYPE)를 각각 시작 주소 필드(SADDR_F), 길이 정보 필드(LENG_F) 및 해시 타입 정보 필드(HTYPE_F)에 저장할 수 있다. 동작 초기에, 제어 회로(311)는 인에이블 필드(EN_F)에 논리 하이 레벨의 값을 저장할 수 있다.
인에이블 필드(EN_F)는 각각의 엔트리에 상응하는 검증 데이터(VDk)에 대해 무결성 검증 동작을 수행할지 여부를 나타낼 수 있다.
도 5는 도 3의 제어부에 포함되는 해시 레지스터의 일 예를 나타내는 도면이다.
도 5를 참조하면, 해시 레지스터(313)는 기준 해시값 필드(RHASH_F)를 포함할 수 있다.
도 5에 도시된 바와 같이, 제어 회로(311)는 복수의 설정 레코드들(CR1~CRn)에 포함되는 기준 해시값(RHASH)을 기준 해시값 필드(RHASH_F)에 저장할 수 있다.
도 4의 설정 테이블(312)에 저장된 시작 주소(SADDR), 길이 정보(LENG) 및 해시 타입 정보(HTYPE)와 도 5의 해시 레지스터(313)에 저장된 기준 해시값(RHASH)은 일련 번호 필드(NO)를 통해 서로 연관될 수 있다.
해시 타입 정보(HTYPE)가 나타내는 해시 연산의 종류에 따라 기준 해시값(RHASH)은 상이한 크기를 가질 수 있다.
예를 들어, 도 4 및 5에 도시된 바와 같이, 제1 설정 레코드(CR1) 및 제2 설정 레코드(CR2)에 포함되는 해시 타입 정보(HTYPE)는 SHA-1 해시 연산을 나타내고, 제n 설정 레코드(CRn)에 포함되는 해시 타입 정보(HTYPE)는 SHA-256 해시 연산을 나타내는 경우, 제1 설정 레코드(CR1) 및 제2 설정 레코드(CR2)에 포함되는 기준 해시값(RHASH1, RHASH2)은 160비트의 크기를 갖고 제n 설정 레코드(CRn)에 포함되는 기준 해시값(RHASHn)은 256비트의 크기를 가질 수 있다.
상술한 바와 같이, 무결성 검증 장치(300)는 하드웨어로 구현되므로, 무결성 검증 장치(300) 내부에 포함되는 저장 공간의 크기는 제한될 수 있다. 즉, 해시 레지스터(313)는 고정된 크기를 가질 수 있다. 따라서 해시 레지스터(313)에 저장될 수 있는 기준 해시값(RHASH)의 개수는 복수의 설정 레코드들(CR1~CRn) 각각에 포함되는 해시 타입 정보(HTYPE)에 기초하여 결정될 수 있다. 예를 들어, 해시 레지스터(313)의 크기가 800비트인 경우, SHA-1 해시 연산에 기초하여 생성되는 다섯 개의 기준 해시값(RHASH)이 해시 레지스터(313)에 저장될 수 있고, SHA-1 해시 연산에 기초하여 생성되는 세 개의 기준 해시값(RHASH) 및 SHA-256 해시 연산에 기초하여 생성되는 하나의 기준 해시값(RHASH)이 해시 레지스터(313)에 저장될 수 있고, SHA-1 해시 연산에 기초하여 생성되는 하나의 기준 해시값(RHASH) 및 SHA-256 해시 연산에 기초하여 생성되는 두 개의 기준 해시값(RHASH)이 해시 레지스터(313)에 저장될 수 있고, SHA-256 해시 연산에 기초하여 생성되는 세 개의 기준 해시값(RHASH)이 해시 레지스터(313)에 저장될 수 있다. 따라서 제어부(310)가 저장할 수 있는 복수의 설정 레코드들(CR1~CRn)의 개수는 해시 레지스터(313)의 크기 및 복수의 설정 레코드들(CR1~CRn) 각각에 포함되는 해시 타입 정보(HTYPE)에 기초하여 결정될 수 있다.
도 3 내지 5를 참조하면, 제어 회로(311)는 설정 테이블(312)에서 인에이블 필드(EN_F)에 논리 하이 레벨의 값이 저장된 엔트리들을 순환하여 선택하고, 상기 선택된 엔트리에 포함되는 시작 주소(SADDR), 길이 정보(LENG) 및 해시 타입 정보(HTYPE)와 해시 레지스터(313)에 저장된 상기 선택된 엔트리에 상응하는 기준 해시값(RHASH)을 출력할 수 있다. 도 2를 참조하여 상술한 바와 같이, 제어 회로(311)로부터 출력되는 시작 주소(SADDR) 및 길이 정보(LENG)는 DMA부(320)에 제공되고, 제어 회로(311)로부터 출력되는 길이 정보(LENG) 및 해시 타입 정보(HTYPE)는 해시 엔진(340)에 제공될 수 있다. 한편, 제어 회로(311)로부터 출력되는 기준 해시값(RHASH)은 비교기(314)에 제공될 수 있다.
비교기(314)는 제어 회로(311)로부터 기준 해시값(RHASH)을 수신하고 해시 엔진(340)으로부터 검증 해시값(VHASH)을 수신할 수 있다. 비교기(314)는 기준 해시값(RHASH)과 검증 해시값(VHASH)을 비교하여 비교 신호(CMP)를 생성할 수 있다. 예를 들어, 비교기(314)는 기준 해시값(RHASH)과 검증 해시값(VHASH)이 일치하는 경우 제1 논리 레벨을 갖는 비교 신호(CMP)를 생성하고, 기준 해시값(RHASH)과 검증 해시값(VHASH)이 서로 상이한 경우 제2 논리 레벨을 갖는 비교 신호(CMP)를 생성할 수 있다. 일 실시예에 있어서, 상기 제1 논리 레벨은 논리 로우 레벨이고 상기 제2 논리 레벨은 논리 하이 레벨일 수 있다. 다른 실시예에 있어서, 상기 제1 논리 레벨은 논리 하이 레벨이고 상기 제2 논리 레벨은 논리 로우 레벨일 수 있다.
제어 회로(311)는 비교기(314)로부터 상기 제1 논리 레벨을 갖는 비교 신호(CMP)를 수신하는 경우 설정 테이블(312)에서 인에이블 필드(EN_F)에 논리 하이 레벨의 값이 저장된 엔트리들 중에서 다음 순서의 엔트리를 선택하고, 상기 선택된 엔트리에 포함되는 시작 주소(SADDR), 길이 정보(LENG) 및 해시 타입 정보(HTYPE)와 해시 레지스터(313)에 저장된 상기 선택된 엔트리에 상응하는 기준 해시값(RHASH)을 출력할 수 있다.
인터럽트 생성기(315)는 비교기(314)로부터 상기 제2 논리 레벨을 갖는 비교 신호(CMP)를 수신하는 경우 CPU(100)에 인터럽트 신호(INT)를 제공할 수 있다.
일 실시예에 있어서, 무결성 검증 장치(300)가 동작하는 도중에, CPU(100)는 복수의 설정 레코드들(CR1~CRn) 중의 적어도 하나에 상응하는 디스에이블 신호를 무결성 검증 장치(300)에 제공할 수 있다. 제어 회로(311)는 CPU(100)로부터 상기 디스에이블 신호를 수신하는 경우, 설정 테이블(312)에서 상기 디스에이블 신호에 상응하는 엔트리의 인에이블 필드(EN_F)에 논리 로우 레벨의 값을 저장할 수 있다. 상술한 바와 같이, 제어 회로(311)는 설정 테이블(312)에서 인에이블 필드(EN_F)에 논리 하이 레벨의 값이 저장된 엔트리들을 순환하여 선택하므로, 무결성 검증 장치(300)는 상기 디스에이블 신호에 상응하는 검증 데이터에 대해서는 무결성 검증 동작을 수행하지 않을 수 있다.
도 6은 도 1의 전자 시스템의 동작을 나타내는 순서도이다.
도 1 내지 6을 참조하면, CPU(100)는 메모리 장치(200)에 저장된 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 상응하는 시작 주소(SADDR), 길이 정보(LENG), 기준 해시값(RHASH) 및 해시 타입 정보(HTYPE)를 포함하는 복수의 설정 레코드들(CR1~CRn)을 생성하고, 복수의 설정 레코드들(CR1~CRn)을 무결성 검증 장치(300)에 제공한다(단계 S110).
무결성 검증 장치(300)는 CPU(100)로부터 수신되는 복수의 설정 레코드들(CR1~CRn)을 내부적으로 저장한 후, 복수의 설정 레코드들(CR1~CRn) 중의 하나를 선택하고(단계 S120), 선택된 설정 레코드(CRk)에 포함되는 시작 주소(SADDR) 및 길이 정보(LENG)에 기초하여 메모리 장치(200)에 직접 접근하여 메모리 장치(200)로부터 선택된 설정 레코드(CRk)에 상응하는 검증 데이터(VDk)를 독출한다(단계 S130).
무결성 검증 장치(300)는 검증 데이터(VDk)에 대해 선택된 설정 레코드(CRk)에 포함되는 해시 타입 정보(HTYPE)에 상응하는 해시 연산을 수행하여 검증 해시값(VHASH)을 생성하고(단계 S140), 검증 해시값(VHASH)과 선택된 설정 레코드(CRk)에 포함되는 기준 해시값(RHASH)을 비교한다(단계 S150).
검증 해시값(VHASH)과 선택된 설정 레코드(CRk)에 포함되는 기준 해시값(RHASH)이 일치하는 경우(단계 S150; 예), 무결성 검증 장치(300)는 복수의 설정 레코드들(CR1~CRn) 중에서 다음 순서의 설정 레코드(CR(k+1))를 선택하고(단계 S120), 선택된 설정 레코드(CR(k+1))에 상응하는 검증 데이터(VD(k+1))를 독출하고(단계 S130), 검증 데이터(VD(k+1))에 대해 해시 연산을 수행하여 검증 해시값(VHASH)을 생성하고(단계 S140), 검증 해시값(VHASH)과 기준 해시값(RHASH)을 비교하는 과정(단계 S150)을 반복적으로 수행할 수 있다.
한편, 검증 해시값(VHASH)과 선택된 설정 레코드(CRk)에 포함되는 기준 해시값(RHASH)이 일치하지 않는 경우(단계 S150; 아니오), 무결성 검증 장치(300)는 CPU(100)에 인터럽트 신호(INT)를 제공한다(단계 S160).
소프트웨어(software)를 사용하여 메모리에 저장된 데이터가 외부로부터의 공격에 의해 변경되었는지 여부를 탐지하는 경우, CPU의 부하가 증가하여 전자 시스템의 성능(performance)이 저하되고 소비 전력이 증가하는 문제점이 있다. 또한, 소프트웨어(software)를 사용하여 메모리에 저장된 데이터가 외부로부터의 공격에 의해 변경되었는지 여부를 탐지하는 경우, 데이터 변경 여부 판단의 기준이 되는 기준 해시값 역시 외부로부터의 공격에 노출되는 문제점이 있다.
그러나, 도 1 내지 6을 참조하여 상술한 바와 같이, 본 발명의 실시예들에 따른 전자 시스템(10)에 포함되는 CPU(100)는 메모리 장치(200)에 저장된 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 상응하는 시작 주소(SADDR), 길이 정보(LENG) 및 기준 해시값(RHASH)을 포함하는 복수의 설정 레코드들(CR1~CRn)을 하드웨어로 구현되는 무결성 검증 장치(300)에 제공하고, 무결성 검증 장치(300)는 CPU(100)로부터 제공되는 복수의 설정 레코드들(CR1~CRn)을 내부 레지스터에 저장한 후, 전자 시스템(10)의 구동 중에 백그라운드(background)에서 지속적으로 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 대해 무결성 검증 동작을 수행하고, 외부로부터의 공격을 탐지하는 경우 인터럽트 신호(INT)를 CPU(100)에 제공한다. 따라서 전자 시스템(10)은 메모리 장치(200)에 저장된 데이터의 훼손 여부를 효과적으로 탐지할 수 있다.
도 7은 도 1의 전자 시스템에 포함되는 무결성 검증 장치의 다른 예를 나타내는 블록도이다.
도 7을 참조하면, 무결성 검증 장치(300b)는 제어부(310), DMA부(320), FIFO 저장부(330), 해시 엔진(340) 및 타이머(350)를 포함할 수 있다.
도 7에 도시된 무결성 검증 장치(300b)는 도 2에 도시된 무결성 검증 장치(300a)에서 타이머(350)를 더 포함한다는 사항을 제외하고는 도 2에 도시된 무결성 검증 장치(300a)와 동일하다. 따라서 여기서는 타이머(350)와 관련된 설명 이외의 중복되는 설명은 생략한다.
타이머(350)는 문턱 시간(TH_TIME) 간격으로 독출 시작 신호(RSS)를 생성할 수 있다.
DMA부(320)는 독출 시작 신호(RSS)를 수신할 때마다 메모리 장치(200)에 대해 버스트 독출 동작(burst read operation)을 일 회 수행하여 검증 데이터(VDk)를 독출할 수 있다.
도 8은 도 7의 무결성 검증 장치에 포함되는 DMA부의 동작을 설명하기 위한 타이밍도이다.
도 8에서 클럭 신호(CLK)는 DMA부(320)가 메모리 장치(200)에 대해 독출 동작을 수행하기 위해 사용되는 신호를 나타낸다.
도 7 및 8을 참조하면, 제1 시각(t1)에 DMA부(320)는 타이머(350)로부터 독출 시작 신호(RSS)를 수신할 수 있다. 따라서 DMA부(320)는 제1 시각(t1)에 DMA 전송 시작 신호와 함께 버스트 독출 동작을 수행하고 제2 시각(t2)에 DMA 전송 종료 신호와 함께 버스트 독출 동작을 종료할 수 있다. 이후, DMA부(320)는 타이머(350)로부터 독출 시작 신호(RSS)를 다시 수신할 때까지 메모리 장치(200)에 대해 독출 동작을 수행하지 않고 대기할 수 있다. 제3 시각(t3)에 DMA부(320)는 타이머(350)로부터 독출 시작 신호(RSS)를 다시 수신하고, DMA부(320)는 제3 시각(t3)에 상기 DMA 전송 시작 신호와 함께 버스트 독출 동작을 수행하고 제4 시각(t4)에 상기 DMA 전송 종료 신호와 함께 버스트 독출 동작을 종료할 수 있다.
이와 같이, DMA부(320)는 독출 시작 신호(RSS)를 수신할 때마다 메모리 장치(200)에 대해 버스트 독출 동작을 일 회 수행하여 검증 데이터(VDk)를 독출하므로, DMA부(320)가 메모리 장치(200)에 접근하는 빈도는 문턱 시간(TH_TIME)에 기초하여 조절될 수 있다.
일 실시예에 있어서, CPU(100)는 제어부(310)에 문턱 시간(TH_TIME)을 제공하고, 제어부(310)는 문턱 시간(TH_TIME)을 타이머(350)에 제공할 수 있다. 따라서 CPU(100)는 문턱 시간(TH_TIME)의 길이를 조절함으로써 무결성 검증 장치(300)가 무결성 검증 동작을 수행하기 위해 메모리 장치(200)에 접근하는 빈도를 제어할 수 있다. 따라서 CPU(100)는 문턱 시간(TH_TIME)을 감소시킴으로써 전자 시스템(10)의 보안 레벨을 높일 수 있고, 문턱 시간(TH_TIME)을 증가시킴으로써 전자 시스템(10)의 소비 전력을 감소시킬 수 있다.
이상, 도 1 내지 9를 참조하여 메모리 장치(200)가 복수의 검증 데이터들(VD1, VD2, ..., VDn)을 저장하는 경우에 대한 전자 시스템(10)의 동작에 대해 설명하였으나, 본 발명은 이에 한정되지 않고, 메모리 장치(200)는 하나의 검증 데이터를 포함할 수도 있다. 이 경우, 전자 시스템(10)은 상술한 바와 동일한 방식으로 상기 하나의 검증 데이터에 대해 반복적으로 무결성 검증 동작을 수행하고, 외부로부터의 공격을 탐지하는 경우 인터럽트 신호(INT)를 생성할 수 있다.
도 9는 본 발명의 다른 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 9를 참조하면, 전자 시스템(20)은 CPU(400), 메모리 장치(500) 및 무결성 검증 장치(600)를 포함한다.
CPU(400), 메모리 장치(500) 및 무결성 검증 장치(600)는 내부 버스(21)를 통해 서로 전기적으로 연결되어 통신을 수행한다.
메모리 장치(500)는 CPU(400) 및 무결성 검증 장치(600)와 데이터를 송수신하기 위한 메모리 컨트롤러를 포함할 수 있다.
메모리 장치(500)는 복수의 검증 데이터들(VD1, VD2, ..., VDn)을 저장한다. 여기서 n은 2 이상의 정수를 나타낸다. 일 실시예에 있어서, 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각은 개인 정보, 암호키(cryptographic key) 등과 같은 보안 데이터일 수 있다. 다른 실시예에 있어서, 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각은 응용 소프트웨어의 실행 코드일 수 있다.
일 실시예에 있어서, 복수의 검증 데이터들(VD1, VD2, ..., VDn)은 CPU(400)에 의해 메모리 장치(500)에 로드(load)될 수 있다. 일 실시예에 있어서, 메모리 장치(500)는 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR(Low Power Double Data Rate) SDRAM, GDDR(Graphics Double Data Rate) SDRAM, RDRAM(Rambus Dynamic Random Access Memory) 등과 같은 동적 랜덤 액세스 메모리(Dynamic Random Access Memory; DRAM) 일 수 있다.
CPU(400)는 메모리 장치(500)에 저장된 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 대해 해시 연산을 수행하여 기준 해시값을 생성한다. CPU(400)는 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각의 메모리 장치(500)에서의 위치를 나타내는 시작 주소 및 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각의 크기를 나타내는 길이 정보를 생성한다. CPU(400)는 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 상응하는 상기 시작 주소, 상기 길이 정보 및 상기 기준 해시값을 포함하는 복수의 설정 레코드들을 생성하고, 상기 복수의 설정 레코드들을 포함하는 디스크립터 테이블(descriptor table)(510)을 메모리 장치(500)에 저장한다.
일 실시예에 있어서, CPU(400)는 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 대해 복수의 해시 연산들 중의 하나를 수행하여 상기 기준 해시값을 생성할 수 있다. 예를 들어, CPU(400)는 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 대해 SHA-1, SHA-256, SHA-384, SHA-512 중의 하나에 상응하는 해시 연산을 수행하여 상기 기준 해시값을 생성할 수 있다. SHA-1이 사용되는 경우 상기 기준 해시값은 160비트의 크기를 갖고, SHA-256이 사용되는 경우 상기 기준 해시값은 256비트의 크기를 갖고, SHA-384이 사용되는 경우 상기 기준 해시값은 384비트의 크기를 갖고, SHA-512이 사용되는 경우 상기 기준 해시값은 512비트의 크기를 가질 수 있다. 이 경우, 디스크립터 테이블(510)에 포함되는 상기 복수의 설정 레코드들 각각은 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 대해 상기 수행된 해시 연산의 종류를 나타내는 해시 타입 정보를 더 포함할 수 있다.
도 10은 도 9의 메모리 장치에 저장되는 디스크립터 테이블의 일 예를 나타내는 도면이다.
도 10을 참조하면, 디스크립터 테이블(510a)은 제1 검증 데이터(VD1)에 상응하는 시작 주소(SADDR1), 길이 정보(LENG1), 기준 해시값(RHASH1) 및 해시 타입 정보(HTYPE1)를 포함하는 제1 설정 레코드, 제2 검증 데이터(VD2)에 상응하는 시작 주소(SADDR2), 길이 정보(LENG2), 기준 해시값(RHASH2) 및 해시 타입 정보(HTYPE2)를 포함하는 제2 설정 레코드, 및 제n 검증 데이터(VDn)에 상응하는 시작 주소(SADDRn), 길이 정보(LENGn), 기준 해시값(RHASHn) 및 해시 타입 정보(HTYPEn)를 포함하는 제n 설정 레코드를 순차적으로 저장할 수 있다.
다시 도 9를 참조하면, CPU(400)는 디스크립터 테이블(510)에 대해 해시 연산을 수행하여 디스크립터 기준 해시값(D_RHASH)을 생성하고, 디스크립터 테이블(510)의 메모리 장치(500)에서의 위치를 나타내는 디스크립터 시작 주소(D_SADDR) 및 디스크립터 테이블(510)의 크기를 나타내는 디스크립터 길이 정보(D_LENG)를 생성한다. CPU(400)는 디스크립터 시작 주소(D_SADDR), 디스크립터 길이 정보(D_LENG) 및 디스크립터 기준 해시값(D_RHASH)을 포함하는 디스크립터 레코드(DR)를 생성하고, 디스크립터 레코드(DR)를 무결성 검증 장치(600)에 제공한다.
무결성 검증 장치(600)는 CPU(400)로부터 수신되는 디스크립터 레코드(DR)를 내부적으로 저장한다. 이후, 무결성 검증 장치(600)는 디스크립터 레코드(DR)에 포함되는 디스크립터 시작 주소(D_SADDR) 및 디스크립터 길이 정보(D_LENG)에 기초하여 메모리 장치(500)로부터 디스크립터 테이블(510)을 독출한다. 이 때, 무결성 검증 장치(600)는 CPU(400)의 개입(intervention) 없이 메모리 장치(500)에 직접 접근(direct access)하여 디스크립터 테이블(510)을 독출한다.
무결성 검증 장치(600)는 하드웨어(hardware)를 사용하여 디스크립터 테이블(510)에 대해 해시 연산을 수행하여 디스크립터 검증 해시값을 생성한다.
일 실시예에 있어서, CPU(400)는 디스크립터 테이블(510)에 대해 복수의 해시 연산들 중의 하나를 수행하여 디스크립터 기준 해시값(D_RHASH)을 생성할 수 있다. 예를 들어, CPU(400)는 디스크립터 테이블(510)에 대해 SHA-1, SHA-256, SHA-384, SHA-512 중의 하나에 상응하는 해시 연산을 수행하여 디스크립터 기준 해시값(D_RHASH)을 생성할 수 있다. 이 경우, CPU(400)가 무결성 검증 장치(600)에 제공하는 디스크립터 레코드(DR)는 디스크립터 테이블(510)에 대해 상기 수행된 해시 연산의 종류를 나타내는 디스크립터 해시 타입 정보(D_HTYPE)를 더 포함할 수 있고, 무결성 검증 장치(600)는 디스크립터 테이블(510)에 대해 디스크립터 레코드(DR)에 포함되는 디스크립터 해시 타입 정보(D_HTYPE)에 상응하는 해시 연산을 수행하여 상기 디스크립터 검증 해시값을 생성할 수 있다.
무결성 검증 장치(600)는 상기 디스크립터 검증 해시값과 디스크립터 레코드(DR)에 포함되는 디스크립터 기준 해시값(D_RHASH)을 비교함으로써 디스크립터 테이블(510)에 대해 무결성 검증 동작을 수행한다.
상기 디스크립터 검증 해시값과 디스크립터 레코드(DR)에 포함되는 디스크립터 기준 해시값(D_RHASH)이 서로 상이한 경우, 무결성 검증 장치(600)는 디스크립터 테이블(510)이 무결성을 갖지 않는 것으로 판단하고, CPU(400)에 인터럽트 신호(INT)를 제공할 수 있다. 일 실시예에 있어서, CPU(400)는 무결성 검증 장치(600)로부터 인터럽트 신호(INT)를 수신하는 경우, 메모리 장치(500)에 저장된 디스크립터 테이블(510)이 외부로부터의 공격에 의해 변경된 것으로 판단하고, 메모리 장치(500)에 저장된 디스크립터 테이블(510)을 삭제하거나 외부로부터의 공격 탐지 사실을 사용자에게 알리는 등의 조치를 취할 수 있다.
한편, 상기 디스크립터 검증 해시값과 디스크립터 레코드(DR)에 포함되는 디스크립터 기준 해시값(D_RHASH)이 일치하는 경우, 무결성 검증 장치(600)는 디스크립터 테이블(510)이 무결성을 갖는 것으로 판단하고, 디스크립터 테이블(510)에 포함되는 상기 복수의 설정 레코드들에 기초하여 메모리 장치(500)에 저장된 복수의 검증 데이터들(VD1, VD2, ..., VDn)에 대해 무결성 검증 동작을 수행하여 인터럽트 신호(INT)를 생성한다. 무결성 검증 장치(600)로부터 생성되는 인터럽트 신호(INT)는 CPU(400)에 제공될 수 있다.
일 실시예에 있어서, 상기 디스크립터 검증 해시값과 디스크립터 레코드(DR)에 포함되는 디스크립터 기준 해시값(D_RHASH)이 일치하는 경우, 무결성 검증 장치(600)는 디스크립터 테이블(510)에 포함되는 상기 복수의 설정 레코드들 중의 하나를 선택하고, 상기 선택된 설정 레코드에 포함되는 상기 시작 주소 및 상기 길이 정보에 기초하여 메모리 장치(500)로부터 상기 선택된 설정 레코드에 상응하는 검증 데이터를 독출할 수 있다. 이 때, 무결성 검증 장치(600)는 CPU(400)의 개입(intervention) 없이 메모리 장치(500)에 직접 접근하여 상기 선택된 설정 레코드에 상응하는 상기 검증 데이터를 독출할 수 있다. 이후, 무결성 검증 장치(600)는 상기 검증 데이터에 대해 상기 선택된 설정 레코드에 포함되는 상기 해시 타입 정보에 상응하는 해시 연산을 수행하여 검증 해시값을 생성하고, 상기 검증 해시값과 상기 선택된 설정 레코드에 포함되는 상기 기준 해시값을 비교함으로써 상기 검증 데이터에 대해 무결성 검증 동작을 수행할 수 있다.
예를 들어, 상기 검증 해시값과 상기 선택된 설정 레코드에 포함되는 상기 기준 해시값이 일치하는 경우, 무결성 검증 장치(600)는 상기 검증 데이터가 무결성을 갖는 것으로 판단하고, 디스크립터 테이블(510)에 포함되는 상기 복수의 설정 레코드들 중에서 다음 순서의 설정 레코드를 선택하여 상술한 동작을 반복할 수 있다.
한편, 상기 검증 해시값과 상기 선택된 설정 레코드에 포함되는 상기 기준 해시값이 서로 상이한 경우, 무결성 검증 장치(600)는 상기 검증 데이터가 무결성을 갖지 않는 것으로 판단하고, CPU(400)에 인터럽트 신호(INT)를 제공할 수 있다. 일 실시예에 있어서, CPU(400)는 무결성 검증 장치(600)로부터 인터럽트 신호(INT)를 수신하는 경우, 메모리 장치(500)에 저장된 상기 검증 데이터가 외부로부터의 공격에 의해 변경된 것으로 판단하고, 메모리 장치(500)에 저장된 상기 검증 데이터를 삭제하거나 외부로부터의 공격 탐지 사실을 사용자에게 알리는 등의 조치를 취할 수 있다.
도 11은 도 9의 전자 시스템에 포함되는 무결성 검증 장치의 일 예를 나타내는 블록도이다.
도 11을 참조하면, 무결성 검증 장치(600a)는 제어부(610), DMA부(620), FIFO 저장부(630) 및 해시 엔진(640)을 포함할 수 있다.
제어부(610)는 CPU(400)로부터 제공되는 디스크립터 레코드(DR)를 내부 레지스터에 저장할 수 있다. 이후, 제어부(610)는 디스크립터 레코드(DR)에 포함되는 디스크립터 시작 주소(D_SADDR) 및 디스크립터 길이 정보(D_LENG)를 DMA부(620)에 제공하고, 디스크립터 레코드(DR)에 포함되는 디스크립터 길이 정보(D_LENG) 및 디스크립터 해시 타입 정보(D_HTYPE)를 해시 엔진(640)에 제공할 수 있다.
DMA부(620)는 제어부(610)로부터 디스크립터 시작 주소(D_SADDR) 및 디스크립터 길이 정보(D_LENG)를 수신할 수 있다. DMA부(620)는 디스크립터 시작 주소(D_SADDR) 및 디스크립터 길이 정보(D_LENG)에 기초하여 메모리 장치(500)로부터 디스크립터 테이블(DT)을 독출하여 FIFO 저장부(630) 및 제어부(610)에 제공할 수 있다. 이 때, DMA부(620)는 CPU(400)의 개입(intervention) 없이 메모리 장치(500)에 직접 접근(direct access)하여 디스크립터 테이블(510)을 독출할 수 있다.
제어부(610)는 DMA부(620)로부터 디스크립터 테이블(DT)을 수신하는 경우 디스크립터 테이블(DT)에 포함되는 상기 복수의 설정 레코드들 중의 하나를 선택하고, 상기 선택된 설정 레코드를 내부 레지스터에 저장할 수 있다. 일 실시예에 있어서, 제어부(610)는 DMA부(620)로부터 디스크립터 테이블(DT)을 수신할 때마다 디스크립터 테이블(DT)에 포함되는 상기 복수의 설정 레코드들 각각을 순환하여 선택하고, 상기 선택된 설정 레코드를 상기 내부 레지스터에 저장할 수 있다.
해시 엔진(640)은 다양한 종류의 해시 연산을 수행할 수 있는 하드웨어 구조를 가질 수 있다. 해시 엔진(640)은 제어부(610)로부터 디스크립터 길이 정보(D_LENG) 및 디스크립터 해시 타입 정보(D_HTYPE)를 수신할 수 있다. 해시 엔진(640)은 디스크립터 길이 정보(D_LENG)에 기초하여 FIFO 저장부(630)에 저장된 디스크립터 테이블(DT)에 대해 디스크립터 해시 타입 정보(D_HTYPE)에 상응하는 해시 연산을 수행하여 디스크립터 검증 해시값(D_VHASH)을 생성할 수 있다.
제어부(610)는 해시 엔진(640)으로부터 수신되는 디스크립터 검증 해시값(D_VHASH)과 디스크립터 레코드(DR)에 포함되는 디스크립터 기준 해시값(D_RHASH)을 비교하여 디스크립터 테이블(DT)이 무결성을 갖는지 여부를 판단할 수 있다.
디스크립터 검증 해시값(D_VHASH)과 디스크립터 기준 해시값(D_RHASH)이 서로 상이한 경우, 제어부(610)는 디스크립터 테이블(DT)이 무결성을 갖지 않는 것으로 판단하고, CPU(400)에 인터럽트 신호(INT)를 제공할 수 있다.
디스크립터 검증 해시값(D_VHASH)과 디스크립터 기준 해시값(D_RHASH)이 일치하는 경우, 제어부(610)는 상기 내부 레지스터에 저장된 상기 선택된 설정 레코드에 기초하여 메모리 장치(500)에 저장된 상기 선택된 설정 레코드에 상응하는 검증 데이터에 대해 무결성 검증 동작을 수행할 수 있다. 이후, 제어부(610)는 디스크립터 테이블(510)에 대한 무결성 검증 동작을 다시 수행하고, 디스크립터 검증 해시값(D_VHASH)과 디스크립터 기준 해시값(D_RHASH)이 일치하는 경우 디스크립터 테이블(DT)에 포함되는 상기 복수의 설정 레코드들 중의 다른 하나를 선택하고, 메모리 장치(500)에 저장된 상기 선택된 설정 레코드에 상응하는 검증 데이터에 대해 무결성 검증 동작을 수행할 수 있다.
도 12는 도 11의 무결성 검증 장치에 포함되는 제어부의 일 예를 나타내는 블록도이다.
도 12를 참조하면, 제어부(610)는 제어 회로(611), 비교기(COMP)(614) 및 인터럽트 생성기(615)를 포함할 수 있다.
제어 회로(611)는 디스크립터 레코드 레지스터(DR_REG)(616) 및 설정 레코드 레지스터(CR_REG)(617)를 포함할 수 있다.
이하, 도 11 및 12를 참조하여 무결성 검증 장치(600a)의 동작에 대해 상세히 설명한다.
제어 회로(611)는 CPU(400)로부터 디스크립터 레코드(DR)를 수신하고, 디스크립터 레코드(DR)를 디스크립터 레코드 레지스터(616)에 저장할 수 있다. 이후, 제어 회로(611)는 디스크립터 레코드(DR)에 포함되는 디스크립터 시작 주소(D_SADDR), 디스크립터 길이 정보(D_LENG), 디스크립터 기준 해시값(D_RHASH) 및 디스크립터 해시 타입 정보(D_HTYPE)를 출력할 수 있다. 도 11을 참조하여 상술한 바와 같이, 제어 회로(611)로부터 출력되는 디스크립터 시작 주소(D_SADDR) 및 디스크립터 길이 정보(D_LENG)는 DMA부(620)에 제공되고, 제어 회로(611)로부터 출력되는 디스크립터 길이 정보(D_LENG) 및 디스크립터 해시 타입 정보(D_HTYPE)는 해시 엔진(640)에 제공될 수 있다. 한편, 제어 회로(611)로부터 출력되는 디스크립터 기준 해시값(D_RHASH)은 비교기(614)에 제공될 수 있다.
DMA부(620)는 디스크립터 시작 주소(D_SADDR) 및 디스크립터 길이 정보(D_LENG)에 기초하여 메모리 장치(500)로부터 디스크립터 테이블(DT)을 독출하여 FIFO 저장부(630) 및 제어부(610)에 제공할 수 있다.
상술한 바와 같이, 무결성 검증 장치(600a)는 하드웨어로 구현되므로, 제어 회로(611)에 포함되는 설정 레코드 레지스터(617)의 크기는 제한될 수 있다. 따라서 제어 회로(611)는 DMA부(620)로부터 디스크립터 테이블(DT)을 수신하는 경우 디스크립터 테이블(DT)에 포함되는 상기 복수의 설정 레코드들 중의 하나를 선택하고, 상기 선택된 설정 레코드를 설정 레코드 레지스터(617)에 저장할 수 있다. 예를 들어, 제어 회로(611)는 DMA부(620)로부터 디스크립터 테이블(DT)을 수신할 때마다 디스크립터 테이블(DT)에 포함되는 상기 복수의 설정 레코드들 각각을 순환하여 선택하고, 상기 선택된 설정 레코드를 설정 레코드 레지스터(617)에 저장할 수 있다.
해시 엔진(640)은 디스크립터 길이 정보(D_LENG)에 기초하여 FIFO 저장부(630)에 저장된 디스크립터 테이블(DT)에 대해 디스크립터 해시 타입 정보(D_HTYPE)에 상응하는 해시 연산을 수행하여 디스크립터 검증 해시값(D_VHASH)을 생성할 수 있다.
비교기(614)는 제어 회로(611)로부터 디스크립터 기준 해시값(D_RHASH)을 수신하고 해시 엔진(640)으로부터 디스크립터 검증 해시값(D_VHASH)을 수신할 수 있다. 비교기(614)는 디스크립터 기준 해시값(D_RHASH)과 디스크립터 검증 해시값(D_VHASH)을 비교하여 비교 신호(CMP)를 생성할 수 있다. 예를 들어, 비교기(614)는 디스크립터 기준 해시값(D_RHASH)과 디스크립터 검증 해시값(D_VHASH)이 일치하는 경우 제1 논리 레벨을 갖는 비교 신호(CMP)를 생성하고, 디스크립터 기준 해시값(D_RHASH)과 디스크립터 검증 해시값(D_VHASH)이 서로 상이한 경우 제2 논리 레벨을 갖는 비교 신호(CMP)를 생성할 수 있다. 일 실시예에 있어서, 상기 제1 논리 레벨은 논리 로우 레벨이고 상기 제2 논리 레벨은 논리 하이 레벨일 수 있다. 다른 실시예에 있어서, 상기 제1 논리 레벨은 논리 하이 레벨이고 상기 제2 논리 레벨은 논리 로우 레벨일 수 있다.
인터럽트 생성기(615)는 비교기(614)로부터 상기 제2 논리 레벨을 갖는 비교 신호(CMP)를 수신하는 경우, CPU(400)에 인터럽트 신호(INT)를 제공할 수 있다.
제어 회로(611)는 비교기(614)로부터 상기 제1 논리 레벨을 갖는 비교 신호(CMP)를 수신하는 경우, 디스크립터 테이블(DT)이 무결성을 갖는 것으로 판단할 수 있다. 이 경우, 제어 회로(611)는 설정 레코드 레지스터(617)에 저장된 상기 선택된 설정 레코드에 포함되는 시작 주소(SADDR), 길이 정보(LENG), 기준 해시값(RHASH) 및 해시 타입 정보(HTYPE)를 출력할 수 있다. 제어 회로(611)로부터 출력되는 시작 주소(SADDR) 및 길이 정보(LENG)는 DMA부(620)에 제공되고, 제어 회로(611)로부터 출력되는 길이 정보(LENG) 및 해시 타입 정보(HTYPE)는 해시 엔진(640)에 제공될 수 있다. 한편, 제어 회로(611)로부터 출력되는 기준 해시값(RHASH)은 비교기(614)에 제공될 수 있다.
DMA부(620)는 제어부(610)로부터 상기 선택된 설정 레코드에 포함되는 시작 주소(SADDR) 및 길이 정보(LENG)를 수신할 수 있다. DMA부(620)는 시작 주소(SADDR) 및 길이 정보(LENG)에 기초하여 메모리 장치(500)로부터 상기 선택된 설정 레코드에 상응하는 검증 데이터(VDk)를 독출하여 FIFO 저장부(630)에 저장할 수 있다. 이 때, DMA부(620)는 CPU(400)의 개입(intervention) 없이 메모리 장치(500)에 직접 접근(direct access)하여 시작 주소(SADDR) 및 길이 정보(LENG)에 상응하는 검증 데이터(VDk)를 독출할 수 있다.
해시 엔진(640)은 제어부(610)로부터 상기 선택된 설정 레코드에 포함되는 길이 정보(LENG) 및 해시 타입 정보(HTYPE)를 수신할 수 있다. 해시 엔진(640)은 길이 정보(LENG)에 기초하여 FIFO 저장부(630)에 저장된 검증 데이터(VDk)에 대해 해시 타입 정보(HTYPE)에 상응하는 해시 연산을 수행하여 검증 해시값(VHASH)을 생성할 수 있다.
비교기(614)는 제어 회로(611)로부터 상기 선택된 설정 레코드에 포함되는 기준 해시값(RHASH)을 수신하고 해시 엔진(640)으로부터 검증 해시값(VHASH)을 수신할 수 있다. 비교기(614)는 기준 해시값(RHASH)과 검증 해시값(VHASH)을 비교하여 비교 신호(CMP)를 생성할 수 있다. 예를 들어, 비교기(614)는 기준 해시값(RHASH)과 검증 해시값(VHASH)이 일치하는 경우 상기 제1 논리 레벨을 갖는 비교 신호(CMP)를 생성하고, 기준 해시값(RHASH)과 검증 해시값(VHASH)이 서로 상이한 경우 상기 제2 논리 레벨을 갖는 비교 신호(CMP)를 생성할 수 있다.
인터럽트 생성기(615)는 비교기(614)로부터 상기 제2 논리 레벨을 갖는 비교 신호(CMP)를 수신하는 경우, CPU(400)에 인터럽트 신호(INT)를 제공할 수 있다.
제어 회로(611)는 비교기(614)로부터 상기 제1 논리 레벨을 갖는 비교 신호(CMP)를 수신하는 경우, 검증 데이터(VDk)는 무결성을 갖는 것으로 판단할 수 있다. 이 경우, 제어 회로(611)는 디스크립터 레코드(DR)에 포함되는 디스크립터 시작 주소(D_SADDR), 디스크립터 길이 정보(D_LENG), 디스크립터 기준 해시값(D_RHASH) 및 디스크립터 해시 타입 정보(D_HTYPE)를 다시 출력할 수 있다.
도 11 및 12를 참조하여 상술한 바와 같이, 무결성 검증 장치(600a)는 디스크립터 테이블(510)에 대한 무결성 검증 동작 및 디스크립터 테이블(510)에 포함되는 상기 복수의 설정 레코드들 중의 하나에 대한 무결성 검증 동작을 교번하여 반복적으로 수행할 수 있다.
도 13 내지 15는 도 9의 전자 시스템의 동작을 나타내는 순서도들이다.
도 13 내지 15를 참조하면, CPU(400)는 메모리 장치(500)에 저장된 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 상응하는 시작 주소(SADDR), 길이 정보(LENG), 기준 해시값(RHASH) 및 해시 타입 정보(HTYPE)를 포함하는 상기 복수의 설정 레코드들을 생성하고, 상기 복수의 설정 레코드들을 포함하는 디스크립터 테이블(510)을 메모리 장치(500)에 저장한다.(단계 S210).
또한, CPU(400)는 디스크립터 테이블(510)에 대해 해시 연산을 수행하여 디스크립터 기준 해시값(D_RHASH)을 생성하고, 디스크립터 테이블(510)의 메모리 장치(500)에서의 위치를 나타내는 디스크립터 시작 주소(D_SADDR), 디스크립터 테이블(510)의 크기를 나타내는 디스크립터 길이 정보(D_LENG), 디스크립터 기준 해시값(D_RHASH) 및 디스크립터 해시 타입 정보(D_HTYPE)를 포함하는 디스크립터 레코드(DR)를 생성하고, 디스크립터 레코드(DR)를 무결성 검증 장치(600)에 제공한다(단계 S220).
무결성 검증 장치(600)는 CPU(400)로부터 제공되는 디스크립터 레코드(DR)에 기초하여 메모리 장치(500)에 저장된 디스크립터 테이블(510)에 대해 무결성 검증 동작을 수행한다(단계 S230).
도 14는 도 13의 디스크립터 테이블(510)에 대해 무결성 검증 동작을 수행하는 단계(S230)의 일 예를 나타내는 순서도이다.
도 14를 참조하면, 무결성 검증 장치(600)는 디스크립터 레코드(DR)에 포함되는 디스크립터 시작 주소(D_SADDR) 및 디스크립터 길이 정보(D_LENG)에 기초하여 메모리 장치(500)로부터 디스크립터 테이블(510)을 독출할 수 있다(단계 S231). 이 때, 무결성 검증 장치(600)는 CPU(400)의 개입(intervention) 없이 메모리 장치(500)에 직접 접근(direct access)하여 디스크립터 테이블(510)을 독출할 수 있다.
무결성 검증 장치(600)는 하드웨어(hardware)를 사용하여 디스크립터 테이블(510)에 대해 디스크립터 해시 타입 정보(D_HTYPE)에 상응하는 해시 연산을 수행하여 디스크립터 검증 해시값(D_VHASH)을 생성할 수 있다(단계S232).
무결성 검증 장치(600)는 디스크립터 검증 해시값(D_VHASH)과 디스크립터 레코드(DR)에 포함되는 디스크립터 기준 해시값(D_RHASH)이 서로 상이한 경우 디스크립터 테이블(510)은 무결성을 갖지 않는 것으로 판단하고, 디스크립터 검증 해시값(D_VHASH)과 디스크립터 레코드(DR)에 포함되는 디스크립터 기준 해시값(D_RHASH)이 일치하는 경우 디스크립터 테이블(510)은 무결성을 갖는 것으로 판단할 수 있다(단계 S233).
다시 도 13을 참조하면, 디스크립터 테이블(510)이 무결성을 갖지 않는 것으로 판단되는 경우, 무결성 검증 장치(600)는 CPU(400)에 인터럽트 신호(INT)를 제공한다(단계 S260). 일 실시예에 있어서, CPU(400)는 무결성 검증 장치(600)로부터 인터럽트 신호(INT)를 수신하는 경우, 메모리 장치(500)에 저장된 디스크립터 테이블(510)이 외부로부터의 공격에 의해 변경된 것으로 판단하고, 메모리 장치(500)에 저장된 디스크립터 테이블(510)을 삭제하거나 외부로부터의 공격 탐지 사실을 사용자에게 알리는 등의 조치를 취할 수 있다.
한편, 디스크립터 테이블(510)이 무결성을 갖는 것으로 판단되는 경우, 무결성 검증 장치(600)는 디스크립터 테이블(510)에 포함되는 상기 복수의 설정 레코드들 중의 하나에 기초하여 메모리 장치(500)에 저장된 복수의 검증 데이터들(VD1, VD2, ..., VDn) 중의 하나에 대해 무결성 검증 동작을 수행할 수 있다(단계 S250).
도 15는 도 13의 복수의 검증 데이터들(VD1, VD2, ..., VDn) 중의 하나에 대해 무결성 검증 동작을 수행하는 단계(S250)의 일 예를 나타내는 순서도이다.
도 15를 참조하면, 무결성 검증 장치(600)는 디스크립터 테이블(510)에 포함되는 상기 복수의 설정 레코드들 중의 하나를 선택하고(단계 S251), 상기 선택된 설정 레코드에 포함되는 시작 주소(SADDR) 및 길이 정보(LENG)에 기초하여 메모리 장치(500)로부터 상기 선택된 설정 레코드에 상응하는 검증 데이터(VDk)를 독출할 수 있다(단계 S252). 이 때, 무결성 검증 장치(600)는 CPU(400)의 개입(intervention) 없이 메모리 장치(500)에 직접 접근(direct access)하여 상기 선택된 설정 레코드에 상응하는 검증 데이터(VDk)를 독출할 수 있다.
무결성 검증 장치(600)는 하드웨어(hardware)를 사용하여 검증 데이터(VDk)에 대해 상기 선택된 설정 레코드에 포함되는 해시 타입 정보(HTYPE)에 상응하는 해시 연산을 수행하여 검증 해시값(VHASH)을 생성할 수 있다(단계S253).
무결성 검증 장치(600)는 검증 해시값(VHASH)과 상기 선택된 설정 레코드에 포함되는 기준 해시값(RHASH)이 서로 상이한 경우 검증 데이터(VDk)는 무결성을 갖지 않는 것으로 판단하고, 검증 해시값(VHASH)과 상기 선택된 설정 레코드에 포함되는 기준 해시값(RHASH)이 일치하는 경우 검증 데이터(VDk)는 무결성을 갖는 것으로 판단할 수 있다(단계 S254).
다시 도 13을 참조하면, 검증 데이터(VDk)가 무결성을 갖지 않는 것으로 판단되는 경우, 무결성 검증 장치(600)는 CPU(400)에 인터럽트 신호(INT)를 제공한다(단계 S260). 일 실시예에 있어서, CPU(400)는 무결성 검증 장치(600)로부터 인터럽트 신호(INT)를 수신하는 경우, 메모리 장치(500)에 저장된 검증 데이터(VDk)가 외부로부터의 공격에 의해 변경된 것으로 판단하고, 메모리 장치(500)에 저장된 검증 데이터(VDk)를 삭제하거나 외부로부터의 공격 탐지 사실을 사용자에게 알리는 등의 조치를 취할 수 있다.
한편, 검증 데이터(VDk)가 무결성을 갖는 것으로 판단되는 경우, 무결성 검증 장치(600)는 디스크립터 테이블(510)에 대한 무결성 검증 동작(단계 S230) 및 복수의 검증 데이터들(VD1, VD2, ..., VDn) 중의 하나에 대한 무결성 검증 동작(단계 S250)을 교번하여 반복적으로 수행할 수 있다.
도 16은 도 9의 메모리 장치에 저장되는 디스크립터 테이블의 다른 예를 나타내는 도면이다.
일 실시예에 있어서, 메모리 장치(500)에 저장되는 복수의 검증 데이터들(VD1, VD2, ..., VDn) 중에서 적어도 하나의 검증 데이터(VD1)는 m(m은 2 이상의 정수)개의 블록 검증 데이터들(VD1-1, VD1-2, ..., VD1-m)로 분산되어 메모리 장치(500)에 저장되고, 검증 데이터(VD1)에 상응하는 설정 레코드에 포함되는 시작 주소(SADDR)는 m개의 블록 검증 데이터들(VD1-1, VD1-2, ..., VD1-m) 각각에 상응하는 제1 내지 제m 시작 주소들(SADDR1-1, SADDR1-2, ..., SADDR1-m)을 포함하고, 상기 설정 레코드에 포함되는 길이 정보(LENG)는 m개의 블록 검증 데이터들(VD1-1, VD1-2, ..., VD1-m) 각각에 상응하는 제1 내지 제m 길이 정보들(LENG1-1, LENG1-2, ..., LENG1-m)을 포함할 수 있다.
이 경우, 도 16에 도시된 바와 같이, 디스크립터 테이블(510b)에 저장되는 검증 데이터(VD1)에 상응하는 설정 레코드는 해시 타입 정보(HTYPE1), 제1 블록 검증 데이터(VD1-1)에 상응하는 제1 시작 주소(SADDR1-1) 및 제1 길이 정보(LENG1-1), 제2 블록 검증 데이터(VD1-2)에 상응하는 제2 시작 주소(SADDR1-2) 및 제2 길이 정보(LENG1-2), 제m 블록 검증 데이터(VD1-m)에 상응하는 제m 시작 주소(SADDR1-m) 및 제m 길이 정보(LENG1-m) 및 검증 데이터(VD1)에 상응하는 기준 해시값(RHASH1)을 순차적으로 저장할 수 있다.
이 경우, 제어부(610)는 설정 레코드 레지스터(617)에 저장된 상기 선택된 설정 레코드에 포함되는 제1 내지 제m 시작 주소들(SADDR1-1, SADDR1-2, ..., SADDR1-m) 각각 및 제1 내지 제m 길이 정보들(LENG1-1, LENG1-2, ..., LENG1-m) 각각의 쌍들을 순차적으로 출력하고, DMA부(620)는 메모리 장치(500)로부터 제1 내지 제m 시작 주소들(SADDR1-1, SADDR1-2, ..., SADDR1-m) 각각 및 제1 내지 제m 길이 정보들(LENG1-1, LENG1-2, ..., LENG1-m) 각각의 쌍들에 상응하는 제1 내지 제m 블록 검증 데이터들(VD1-1, VD1-2, ..., VD1-m)을 순차적으로 독출하여 FIFO 저장부(630)에 저장할 수 있다. 해시 엔진(640)은 FIFO 저장부(630)에 저장된 제1 내지 제m 블록 검증 데이터들(VD1-1, VD1-2, ..., VD1-m)에 대해 해시 타입 정보(HTYPE1)에 상응하는 해시 연산을 순차적으로 수행하여 검증 해시값(VHASH)을 생성할 수 있다. 구체적으로, 해시 엔진(640)은 제1 블록 검증 데이터(VD1-1) 및 제1 길이 정보(LENG1-1)에 기초하여 제1 중간 해시 데이터를 생성하고, 제p(p는 m 미만의 양의 정수) 블록 검증 데이터(VD1-p), 제1 내지 제p 길이 정보들(LENG1~LENGp) 및 제(p-1) 중간 해시 데이터에 기초하여 제p 중간 해시 데이터를 생성하고, 상기 제m 블록 검증 데이터(VD1-m), 제1 내지 제m 길이 정보들(LENG1~LENGm) 및 제(m-1) 중간 해시 데이터에 기초하여 검증 데이터(VD1)에 상응하는 최종 해시값을 나타내는 검증 해시값(VHASH)을 생성할 수 있다.
상술한 바와 같이, 검증 데이터(VD1)가 복수의 블록 검증 데이터들(VD1-1, VD1-2, ..., VD1-m)로 분산되어 메모리 장치(500)에 저장되는 경우에도, 디스크립터 테이블(510b)은 복수의 블록 검증 데이터들(VD1-1, VD1-2, ..., VD1-m) 각각의 기준 해시값을 저장하지 않고 검증 데이터(VD1)에 상응하는 기준 해시값(VHASH)만을 저장하므로, 디스크립터 테이블(510b)의 크기는 감소될 수 있다.
도 9 내지 16을 참조하여 상술한 바와 같이, 본 발명의 실시예들에 따른 전자 시스템(20)에 포함되는 CPU(400)는 메모리 장치(200)에 저장된 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 상응하는 복수의 설정 레코드들을 포함하는 디스크립터 테이블(510)을 생성하여 메모리 장치(500)에 저장하고, 디스크립터 테이블(510)에 상응하는 디스크립터 레코드(DR)를 하드웨어로 구현되는 무결성 검증 장치(600)에 제공한다. 무결성 검증 장치(600)는 CPU(400)로부터 제공되는 디스크립터 레코드(DR)를 내부 레지스터에 저장한 후, 전자 시스템(20)의 구동 중에 백그라운드(background)에서 지속적으로 디스크립터 테이블(510)에 대한 무결성 검증 동작 및 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 대한 무결성 검증 동작을 교번하여 수행하고, 외부로부터의 공격을 탐지하는 경우 인터럽트 신호(INT)를 CPU(400)에 제공한다. 따라서 전자 시스템(20)은 메모리 장치(500)에 저장된 데이터의 훼손 여부를 효과적으로 탐지할 수 있다.
도 17은 도 9의 전자 시스템에 포함되는 무결성 검증 장치의 다른 예를 나타내는 블록도이다.
도 17을 참조하면, 무결성 검증 장치(600b)는 제어부(610), DMA부(620), FIFO 저장부(630), 해시 엔진(640) 및 타이머(650)를 포함할 수 있다.
도 17에 도시된 무결성 검증 장치(600b)는 도 11에 도시된 무결성 검증 장치(600a)에서 타이머(650)를 더 포함한다는 사항을 제외하고는 도 11에 도시된 무결성 검증 장치(600a)와 동일하다. 따라서 여기서는 타이머(650)와 관련된 설명 이외의 중복되는 설명은 생략한다.
타이머(650)는 문턱 시간(TH_TIME) 간격으로 독출 시작 신호(RSS)를 생성할 수 있다.
DMA부(620)는 독출 시작 신호(RSS)를 수신할 때마다 메모리 장치(500)에 대해 버스트 독출 동작(burst read operation)을 일 회 수행하여 디스크립터 테이블(510) 또는 검증 데이터(VDk)를 독출할 수 있다.
예를 들어, DMA부(620)는 도 8에 도시된 타이밍도에 따라 독출 시작 신호(RSS)에 기초하여 메모리 장치(500)에 대해 버스트 독출 동작을 수행할 수 있다.
도 8에 도시된 바와 같이, DMA부(620)는 독출 시작 신호(RSS)를 수신할 때마다 메모리 장치(500)에 대해 버스트 독출 동작을 일 회 수행하여 디스크립터 테이블(510) 또는 검증 데이터(VDk)를 독출하므로, DMA부(620)가 메모리 장치(500)에 접근하는 빈도는 문턱 시간(TH_TIME)에 기초하여 조절될 수 있다.
일 실시예에 있어서, CPU(400)는 제어부(610)에 문턱 시간(TH_TIME)을 제공하고, 제어부(610)는 문턱 시간(TH_TIME)을 타이머(650)에 제공할 수 있다. 따라서 CPU(400)는 문턱 시간(TH_TIME)의 길이를 조절함으로써 무결성 검증 장치(600)가 무결성 검증 동작을 수행하기 위해 메모리 장치(500)에 접근하는 빈도를 제어할 수 있다. 따라서 CPU(400)는 문턱 시간(TH_TIME)을 감소시킴으로써 전자 시스템(20)의 보안 레벨을 높일 수 있고, 문턱 시간(TH_TIME)을 증가시킴으로써 전자 시스템(20)의 소비 전력을 감소시킬 수 있다.
이상, 도 9 내지 17을 참조하여 메모리 장치(500)가 복수의 검증 데이터들(VD1, VD2, ..., VDn)을 저장하는 경우에 대한 전자 시스템(20)의 동작에 대해 설명하였으나, 본 발명은 이에 한정되지 않고, 메모리 장치(500)는 하나의 검증 데이터를 포함할 수도 있다. 이 경우, 전자 시스템(20)은 상술한 바와 동일한 방식으로 상기 하나의 검증 데이터에 대해 반복적으로 무결성 검증 동작을 수행하고, 외부로부터의 공격을 탐지하는 경우 인터럽트 신호(INT)를 생성할 수 있다.
도 18은 본 발명의 또 다른 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 18에 도시된 전자 시스템(30)은 도 1에 도시된 전자 시스템(10) 및 도 9에 도시된 전자 시스템(20)을 조합(combination)한 것에 상응한다.
도 18을 참조하면, 전자 시스템(30)은 CPU(700), 메모리 장치(800) 및 무결성 검증 장치(900)를 포함한다.
CPU(700), 메모리 장치(800) 및 무결성 검증 장치(900)는 내부 버스(31)를 통해 서로 전기적으로 연결되어 통신을 수행한다.
메모리 장치(800)는 CPU(700) 및 무결성 검증 장치(900)와 데이터를 송수신하기 위한 메모리 컨트롤러를 포함할 수 있다.
메모리 장치(800)는 복수의 검증 데이터들(VD1, VD2, ..., VDn, VD(n+1), VD(n+2), ..., VD(n+s))을 저장한다. 여기서 n 및 s는 2 이상의 정수를 나타낸다.
CPU(700)는 메모리 장치(800)에 저장된 복수의 검증 데이터들(VD1, VD2, ..., VDn, VD(n+1), VD(n+2), ..., VD(n+s)) 각각에 상응하는 시작 주소(SADDR), 길이 정보(LENG), 기준 해시값(RHASH) 및 해시 타입 정보(THASH)를 포함하는 복수의 설정 레코드들(CR1~CR(n+s))을 생성한다.
CPU(700)는 복수의 설정 레코드들(CR1~CR(n+s)) 중의 일부인 복수의 설정 레코드들(CR1~CRn)을 무결성 검증 장치(900)에 제공한다.
한편, CPU(700)는 복수의 설정 레코드들(CR(n+1)~CR(n+s))을 포함하는 디스크립터 테이블(810)을 메모리 장치(800)에 저장하고, 디스크립터 테이블(810)에 상응하는 디스크립터 시작 주소(D_SADDR), 디스크립터 길이 정보(D_LENG), 디스크립터 기준 해시값(D_RHASH) 및 디스크립터 해시 타입 정보(D_HTYPE)를 포함하는 디스크립터 레코드(DR)를 생성하고, 디스크립터 레코드(DR)를 무결성 검증 장치(900)에 제공한다.
무결성 검증 장치(900)는 CPU(700)로부터 수신되는 복수의 설정 레코드들(CR1~CRn) 및 디스크립터 레코드(DR)를 내부적으로 저장한다.
이후, 무결성 검증 장치(900)는 복수의 설정 레코드들(CR1~CRn) 각각을 순차적으로 선택하고, 선택된 설정 레코드(CRk)에 상응하는 검증 데이터(VDk)에 대해 무결성 검증 동작을 수행하고, 상기 무결성 검증 결과에 기초하여 CPU(700)에 인터럽트 신호(INT)를 제공한다. 무결성 검증 장치(900)가 CPU(700)로부터 수신되는 복수의 설정 레코드들(CR1~CRn)에 기초하여 복수의 검증 데이터들(VD1, VD2, ..., VDn) 각각에 대해 순차적으로 무결성 검증 동작을 수행하는 과정은 도 1의 전자 시스템(10)에 포함되는 무결성 검증 장치(300)의 동작과 실질적으로 동일할 수 있다.
무결성 검증 장치(900)는 복수의 설정 레코드들(CR1~CRn)에 기초하여 복수의 검증 데이터들(VD1, VD2, ..., VDn)에 대해 상기 무결성 검증 동작을 완료한 이후, 디스크립터 레코드(DR)에 기초하여 디스크립터 테이블(810)에 대해 무결성을 검증하는 동작 및 디스크립터 테이블(810)에 포함되는 복수의 설정 레코드들(CR(n+1)~CR(n+s)) 중의 하나에 상응하는 검증 데이터에 대해 무결성을 검증하는 동작을 교번하여 반복적으로 수행하고, 상기 무결성 검증 결과에 기초하여 CPU(700)에 인터럽트 신호(INT)를 제공한다. 무결성 검증 장치(900)가 CPU(700)로부터 수신되는 디스크립터 레코드(DR)에 기초하여 디스크립터 테이블(810) 및 복수의 검증 데이터들(VD(n+1), VD(n+2), ..., VD(n+s)) 각각에 대해 교번하여 무결성 검증 동작을 수행하는 과정은 도 9의 전자 시스템(20)에 포함되는 무결성 검증 장치(600)의 동작과 실질적으로 동일할 수 있다.
무결성 검증 장치(900)는 디스크립터 레코드(DR)에 기초하여 복수의 검증 데이터들(VD(n+1), VD(n+2), ..., VD(n+s))에 대해 상기 무결성 검증 동작을 완료한 이후, 복수의 설정 레코드들(CR1~CRn)에 기초하여 복수의 검증 데이터들(VD1, VD2, ..., VDn)에 대해 상기 무결성 검증 동작을 다시 수행할 수 있다.
상술한 바와 같이, 무결성 검증 장치(900)는 복수의 설정 레코드들(CR1~CRn)에 기초하여 복수의 검증 데이터들(VD1, VD2, ..., VDn)에 대해 무결성을 검증하는 동작 및 디스크립터 레코드(DR)에 기초하여 복수의 검증 데이터들(VD(n+1), VD(n+2), ..., VD(n+s))에 대해 무결성을 검증하는 동작을 교번하여 반복적으로 수행한다.
도 19는 도 18의 전자 시스템에 포함되는 무결성 검증 장치의 일 예를 나타내는 블록도이고, 도 20은 도 19의 무결성 검증 장치에 포함되는 제어부의 일 예를 나타내는 블록도이다.
도 19 및 20을 참조하면, 무결성 검증 장치(900a)는 제어부(910), DMA부(920), FIFO 저장부(930) 및 해시 엔진(940)을 포함할 수 있다.
제어부(910)는 제어 회로(911), 설정 테이블(912), 해시 레지스터(913), 비교기(COMP)(914) 및 인터럽트 생성기(915)를 포함할 수 있고, 제어 회로(911)는 디스크립터 레코드 레지스터(DR_REG)(916) 및 설정 레코드 레지스터(CR_REG)(917)를 포함할 수 있다.
무결성 검증 장치(900a)에 포함되는 설정 테이블(912) 및 해시 레지스터(913)는 각각 무결성 검증 장치(300a)에 포함되는 설정 테이블(312) 및 해시 레지스터(313)와 실질적으로 동일하고, 무결성 검증 장치(900a)에 포함되는 디스크립터 레코드 레지스터(916) 및 설정 레코드 레지스터(917)는 각각 무결성 검증 장치(600a)에 포함되는 디스크립터 레코드 레지스터(616) 및 설정 레코드 레지스터(617)와 실질적으로 동일할 수 있다.
또한, 무결성 검증 장치(900a)에 포함되는 제어 회로(911)는 무결성 검증 장치(300a)에 포함되는 제어 회로(311) 및 무결성 검증 장치(600a)에 포함되는 제어 회로(611)의 조합에 상응하고, 무결성 검증 장치(900a)에 포함되는 비교기(914)는 무결성 검증 장치(300a)에 포함되는 비교기(314)및 무결성 검증 장치(600a)에 포함되는 비교기(614)의 조합에 상응하고, 무결성 검증 장치(900a)에 포함되는 인터럽트 생성기(915)는 무결성 검증 장치(300a)에 포함되는 인터럽트 생성기(315)및 무결성 검증 장치(600a)에 포함되는 인터럽트 생성기(615)의 조합에 상응할 수 있다.
따라서 무결성 검증 장치(900a)에 포함되는 제어부(910)는 무결성 검증 장치(300a)에 포함되는 제어부(310) 및 무결성 검증 장치(600a)에 포함되는 제어부(610)의 조합에 상응하고, 무결성 검증 장치(900a)에 포함되는 DMA부(920)는 무결성 검증 장치(300a)에 포함되는 DMA부(320) 및 무결성 검증 장치(600a)에 포함되는 DMA부(620)의 조합에 상응하고, 무결성 검증 장치(900a)에 포함되는 FIFO 저장부(930)는 무결성 검증 장치(300a)에 포함되는 FIFO 저장부(330) 및 무결성 검증 장치(600a)에 포함되는 FIFO 저장부(630)의 조합에 상응하고, 무결성 검증 장치(900a)에 포함되는 해시 엔진(940)은 무결성 검증 장치(300a)에 포함되는 해시 엔진(340) 및 무결성 검증 장치(600a)에 포함되는 해시 엔진(640)의 조합에 상응할 수 있다.
도 1의 전자 시스템(10) 및 도 9의 전자 시스템(20)의 구성 및 동작에 대해서는 도 1 내지 17을 참조하여 상술하였으므로, 여기서는 전자 시스템(30)에 관한 상세한 설명은 생략한다.
도 1 내지 20을 참조하여 상술한 바와 같이, 전자 시스템(30)에 포함되는 무결성 검증 장치(900)는 하드웨어로 구현되므로, 무결성 검증 장치(900) 내부에 포함되는 레지스터의 크기는 제한될 수 있다. 따라서 무결성 검증 장치(900)에 저장될 수 있는 복수의 설정 레코드들(CR1~CRn)의 개수는 제한될 수 있다. 그러나 전자 시스템(30)에 따르면, 메모리 장치(800)에 저장되는 복수의 검증 데이터들(VD1, VD2, ..., VDn, VD(n+1), VD(n+2), ..., VD(n+s)) 중에서 복수의 검증 데이터들(VD1, VD2, ..., VDn)에 상응하는 수의 설정 레코드들(CR1~CRn)은 무결성 검증 장치(900)의 내부 레지스터에 저장되고, 복수의 검증 데이터들(VD(n+1), VD(n+2), ..., VD(n+s))에 상응하는 복수의 설정 레코드들(CR(n+1)~CR(n+s))은 디스크립터 테이블(810)로서 메모리 장치(800)에 저장되고, 디스크립터 테이블(810)에 상응하는 디스크립터 레코드(DR)만이 무결성 검증 장치(900)의 내부 레지스터에 저장된다. 따라서 전자 시스템(30)이 무결성 검증 동작을 수행하는 검증 데이터들의 개수는 무결성 검증 장치(900)에 포함되는 내부 레지스터의 크기에 제한되지 않을 수 있다.
도 21은 도 18의 전자 시스템에 포함되는 무결성 검증 장치의 다른 예를 나타내는 블록도이다.
도 21을 참조하면, 무결성 검증 장치(900b)는 제어부(910), DMA부(920), FIFO 저장부(930), 해시 엔진(940) 및 타이머(950)를 포함할 수 있다.
도 21에 도시된 무결성 검증 장치(900b)는 도 19에 도시된 무결성 검증 장치(900a)에서 타이머(950)를 더 포함한다는 사항을 제외하고는 도 19에 도시된 무결성 검증 장치(900a)와 동일하다. 따라서 여기서는 타이머(950)와 관련된 설명 이외의 중복되는 설명은 생략한다.
타이머(950)는 문턱 시간(TH_TIME) 간격으로 독출 시작 신호(RSS)를 생성할 수 있다.
DMA부(920)는 독출 시작 신호(RSS)를 수신할 때마다 메모리 장치(800)에 대해 버스트 독출 동작(burst read operation)을 일 회 수행하여 디스크립터 테이블(910) 또는 검증 데이터(VDk)를 독출할 수 있다.
예를 들어, DMA부(920)는 도 8에 도시된 타이밍도에 따라 독출 시작 신호(RSS)에 기초하여 메모리 장치(800)에 대해 버스트 독출 동작을 수행할 수 있다.
도 8에 도시된 바와 같이, DMA부(920)는 독출 시작 신호(RSS)를 수신할 때마다 메모리 장치(800)에 대해 버스트 독출 동작을 일 회 수행하여 디스크립터 테이블(810) 또는 검증 데이터(VDk)를 독출하므로, DMA부(920)가 메모리 장치(800)에 접근하는 빈도는 문턱 시간(TH_TIME)에 기초하여 조절될 수 있다.
일 실시예에 있어서, CPU(700)는 제어부(910)에 문턱 시간(TH_TIME)을 제공하고, 제어부(910)는 문턱 시간(TH_TIME)을 타이머(950)에 제공할 수 있다. 따라서 CPU(700)는 문턱 시간(TH_TIME)의 길이를 조절함으로써 무결성 검증 장치(900)가 무결성 검증 동작을 수행하기 위해 메모리 장치(800)에 접근하는 빈도를 제어할 수 있다. 따라서 CPU(700)는 문턱 시간(TH_TIME)을 감소시킴으로써 전자 시스템(30)의 보안 레벨을 높일 수 있고, 문턱 시간(TH_TIME)을 증가시킴으로써 전자 시스템(30)의 소비 전력을 감소시킬 수 있다.
이상, 도 18 내지 21을 참조하여 메모리 장치(800)가 복수의 검증 데이터들(VD1, VD2, ..., VDn) 및 복수의 검증 데이터들(VD(n+1), VD(n+2), ..., VD(n+s))을 저장하는 경우에 대한 전자 시스템(30)의 동작에 대해 설명하였으나, 본 발명은 이에 한정되지 않고, n 및 s는 1일 수도 있다. 즉, 메모리 장치(800)는 두 개의 검증 데이터를 포함할 수 있다. 이 경우, 전자 시스템(20)은 상술한 바와 동일한 방식으로 상기 두 개의 검증 데이터들에 대해 교번하여 반복적으로 무결성 검증 동작을 수행하고, 외부로부터의 공격을 탐지하는 경우 인터럽트 신호(INT)를 생성할 수 있다.
도 22는 본 발명의 일 실시예에 따른 모바일 시스템을 나타내는 블록도이다.
도 22를 참조하면, 모바일 시스템(1000)은 어플리케이션 프로세서(1100), 메모리 장치(1200), 통신(Connectivity)부(1300), 비휘발성 메모리 장치(NVM)(1400), 사용자 인퍼페이스(1500) 및 파워 서플라이(1600)를 포함한다. 실시예에 따라, 모바일 시스템(1000)은 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 개인 정보 단말기(Personal Digital Assistant; PDA), 휴대형 멀티미디어 플레이어(Portable Multimedia Player; PMP), 디지털 카메라(Digital Camera), 음악 재생기(Music Player), 휴대용 게임 콘솔(Portable Game Console), 네비게이션(Navigation) 시스템 등과 같은 임의의 모바일 시스템일 수 있다.
어플리케이션 프로세서(1100)는 인터넷 브라우저, 게임, 동영상 등을 제공하는 어플리케이션들을 실행할 수 있다. 실시예에 따라, 어플리케이션 프로세서(1100)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 예를 들어, 어플리케이션 프로세서(1100)는 듀얼 코어(Dual-Core), 쿼드 코어(Quad-Core), 헥사 코어(Hexa-Core) 등의 멀티 코어(Multi-Core)를 포함할 수 있다. 또한, 실시예에 따라, 어플리케이션 프로세서(1100)는 내부 또는 외부에 위치한 캐시 메모리(Cache Memory)를 더 포함할 수 있다.
메모리 장치(1200)는 어플리케이션 프로세서(1100)에 의해 처리되는 데이터를 저장하거나, 동작 메모리(Working Memory)로서 작동할 수 있다.
어플리케이션 프로세서(1100)는 CPU(1110) 및 무결성 검증 장치(1120)를 포함한다. 무결성 검증 장치(1120)는 하드웨어로 구현된다. CPU(1110)는 메모리 장치(1200)에 저장된 데이터들 중에서 무결성 검증을 실시할 데이터들을 검증 데이터들로서 결정하고, 상기 검증 데이터들 각각의 주소 및 해시값에 관한 정보를 무결성 검증 장치(1120)에 제공한다. 무결성 검증 장치(1120)는 CPU(1110)로부터 제공되는 상기 검증 데이터들 각각의 주소 및 해시값에 관한 정보에 기초하여 메모리 장치(1200)에 직접 접근(direct access)하여 메모리 장치(1200)에 저장된 상기 검증 데이터들을 독출하고, 하드웨어를 사용하여 상기 검증 데이터들에 대해 해시 연산을 수행함으로써 상기 검증 데이터들의 무결성을 검증하고, 무결성 검증 결과에 기초하여 CPU(1110)에 인터럽트 신호를 제공한다.
CPU(1110), 무결성 검증 장치(1120) 및 메모리 장치(1200)는 도 1에 도시된 전자 시스템(10), 도 9에 도시된 전자 시스템(20) 및 도 18에 도시된 전자 시스템(30) 중의 하나로 구현될 수 있다. 도 1에 도시된 전자 시스템(10), 도 9에 도시된 전자 시스템(20) 및 도 18에 도시된 전자 시스템(30)의 구성 및 동작에 대해서는 도 1 내지 21을 참조하여 상세히 설명하였으므로, 여기서는 CPU(1110), 무결성 검증 장치(1120) 및 메모리 장치(1200)에 대한 상세한 설명은 생략한다.
통신부(1300)는 외부 장치와 무선 통신 또는 유선 통신을 수행할 수 있다. 예를 들어, 통신부(1300)는 이더넷(Ethernet) 통신, 근거리 자기장 통신(Near Field Communication; NFC), 무선 식별(Radio Frequency Identification; RFID) 통신, 이동 통신(Mobile Telecommunication), 메모리 카드 통신, 범용 직렬 버스(Universal Serial Bus; USB) 통신 등을 수행할 수 있다. 예를 들어, 통신부(1300)는 베이스밴드 칩 셋(Baseband Chipset)을 포함할 수 있고, GSM, GPRS, WCDMA, HSxPA 등의 통신을 지원할 수 있다.
비휘발성 메모리 장치(1400)는 모바일 시스템(1000)을 부팅하기 위한 부트 이미지를 저장할 수 있다. 예를 들어, 비휘발성 메모리 장치(1400)는EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(Flash Memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 또는 이와 유사한 메모리로 구현될 수 있다.
사용자 인터페이스(1500)는 키패드, 터치 스크린과 같은 하나 이상의 입력 장치, 및/또는 스피커, 디스플레이 장치와 같은 하나 이상의 출력 장치를 포함할 수 있다. 파워 서플라이(1600)는 모바일 시스템(1000)의 동작 전압을 공급할 수 있다.
또한, 실시예에 따라, 모바일 시스템(1000)은 이미지 프로세서를 더 포함할 수 있고, 메모리 카드(Memory Card), 솔리드 스테이트 드라이브(Solid State Drive; SSD) 등과 같은 저장 장치를 더 포함할 수 있다.
모바일 시스템(1000) 또는 모바일 시스템(1000)의 구성요소들은 다양한 형태들의 패키지를 이용하여 실장될 수 있는데, 예를 들어, PoP(Package on Package), BGAs(Ball grid arrays), CSPs(Chip scale packages), PLCC(PlasticLeaded 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(Plastic Metric Quad Flat Pack), TQFP(Thin Quad Flat-Pack), SOIC(Small Outline Integrated Circuit), SSOP(Shrink Small Outline Package), TSOP(Thin Small Outline Package), TQFP(Thin Quad Flat-Pack), SIP(System In Package), MCP(Multi Chip Package), WFP(Wafer-level Fabricated Package), WSP(Wafer-Level Processed Stack Package) 등과 같은 패키지들을 이용하여 실장될 수 있다.
본 발명은 메모리 영역에 대한 무결성 검증 기능을 구비하는 임의의 전자 장치에 유용하게 이용될 수 있다. 예를 들어, 본 발명은 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 개인 정보 단말기(personal digital assistant; PDA), 휴대형 멀티미디어 플레이어(portable multimedia player; PMP), 디지털 카메라(Digital Camera), 개인용 컴퓨터(Personal Computer; PC), 서버 컴퓨터(Server Computer), 워크스테이션(Workstation), 노트북(Laptop), 디지털 TV(Digital Television), 셋-탑 박스(Set-Top Box), 음악 재생기(Music Player), 휴대용 게임 콘솔(Portable Game Console), 네비게이션(Navigation) 시스템, 랩톱 컴퓨터(laptop computer) 등에 적용될 수 있다.
상술한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
Claims (10)
- 복수의 검증 데이터들을 저장하는 메모리 장치;
상기 복수의 검증 데이터들 각각에 상응하는 시작 주소, 길이 정보 및 기준 해시값을 포함하는 복수의 설정 레코드들을 제공하는 중앙 처리 장치(Central Processing Unit; CPU); 및
상기 CPU로부터 수신되는 상기 복수의 설정 레코드들을 저장하고, 상기 복수의 설정 레코드들 각각을 순환하여 선택하고, 상기 선택된 설정 레코드에 포함되는 상기 시작 주소 및 상기 길이 정보에 기초하여 상기 메모리 장치에 직접 접근(direct access)하여 상기 메모리 장치로부터 상기 선택된 설정 레코드에 상응하는 검증 데이터를 독출하고, 상기 검증 데이터에 대해 해시 연산을 수행하여 검증 해시값을 생성하고, 상기 검증 해시값과 상기 선택된 설정 레코드에 포함되는 상기 기준 해시값에 기초하여 인터럽트 신호를 생성하는 무결성 검증 장치를 포함하고,
상기 무결성 검증 장치는,
상기 복수의 설정 레코드들을 저장하고, 상기 복수의 설정 레코드들 각각을 순환하여 선택하고, 상기 선택된 설정 레코드에 포함되는 상기 시작 주소 및 상기 길이 정보를 출력하는 제어부;
FIFO(First Input First Output) 저장부;
상기 메모리 장치로부터 상기 시작 주소 및 상기 길이 정보에 상응하는 검증 데이터를 독출하여 상기 FIFO 저장부에 저장하는 직접 메모리 액세스(Direct Memory Access; DMA)부; 및
상기 길이 정보에 기초하여 상기 FIFO 저장부에 저장된 상기 검증 데이터에 대해 해시(hash) 연산을 수행하여 상기 검증 해시값을 생성하는 해시 엔진(hash engine)을 포함하고,
상기 제어부는 상기 검증 해시값과 상기 기준 해시값이 서로 상이한 경우 상기 인터럽트 신호를 생성하는 전자 시스템. - 삭제
- 제1 항에 있어서, 상기 무결성 검증 장치는,
문턱 시간 간격으로 독출 시작 신호를 생성하는 타이머를 더 포함하고,
상기 DMA부는 상기 독출 시작 신호를 수신할 때마다 상기 메모리 장치에 대해 버스트 독출 동작(burst read operation)을 일 회 수행하여 상기 검증 데이터를 독출하고,
상기 CPU는 상기 문턱 시간을 상기 제어부에 제공하고,
상기 제어부는 상기 CPU로부터 제공되는 상기 문턱 시간을 상기 타이머에 제공하는 것을 특징으로 하는 전자 시스템. - 복수의 검증 데이터들을 저장하는 메모리 장치;
상기 복수의 검증 데이터들 각각에 상응하는 시작 주소, 길이 정보 및 기준 해시값을 갖는 복수의 설정 레코드들을 포함하는 디스크립터(descriptor) 테이블을 생성하여 상기 메모리 장치에 저장하고, 상기 디스크립터 테이블에 상응하는 디스크립터 시작 주소, 디스크립터 길이 정보 및 디스크립터 기준 해시값을 포함하는 디스크립터 레코드를 제공하는 CPU; 및
상기 CPU로부터 수신되는 상기 디스크립터 레코드를 저장하고, 상기 디스크립터 시작 주소 및 상기 디스크립터 길이 정보에 기초하여 상기 메모리 장치에 직접 접근하여 상기 메모리 장치로부터 상기 디스크립터 테이블을 독출하고, 상기 디스크립터 테이블에 대해 해시 연산을 수행하여 디스크립터 검증 해시값을 생성하고, 상기 디스크립터 검증 해시값과 상기 디스크립터 기준 해시값을 비교함으로써 상기 디스크립터 테이블에 대해 무결성 검증 동작을 수행하고, 상기 디스크립터 검증 해시값과 상기 디스크립터 기준 해시값이 일치하는 경우 상기 디스크립터 테이블에 포함되는 상기 복수의 설정 레코드들에 기초하여 상기 메모리 장치에 저장된 상기 복수의 검증 데이터들에 대해 무결성 검증 동작을 수행하여 인터럽트 신호를 생성하는 무결성 검증 장치를 포함하는 전자 시스템. - 제4 항에 있어서, 상기 디스크립터 검증 해시값과 상기 디스크립터 기준 해시값이 일치하는 경우, 상기 무결성 검증 장치는 상기 디스크립터 테이블에 포함되는 상기 복수의 설정 레코드들 중의 하나를 선택하고, 상기 선택된 설정 레코드에 포함되는 상기 시작 주소 및 상기 길이 정보에 기초하여 상기 메모리 장치에 직접 접근하여 상기 메모리 장치로부터 상기 선택된 설정 레코드에 상응하는 검증 데이터를 독출하고, 상기 검증 데이터에 대해 해시 연산을 수행하여 검증 해시값을 생성하고, 상기 검증 해시값과 상기 선택된 설정 레코드에 포함되는 상기 기준 해시값이 서로 상이한 경우 상기 인터럽트 신호를 생성하는 것을 특징으로 하는 전자 시스템.
- 제4 항에 있어서, 상기 무결성 검증 장치는,
상기 디스크립터 레코드를 저장하고, 상기 디스크립터 시작 주소 및 상기 디스크립터 길이 정보를 출력하는 제어부;
FIFO(First Input First Output) 저장부;
상기 디스크립터 시작 주소 및 상기 디스크립터 길이 정보에 기초하여 상기 메모리 장치로부터 상기 디스크립터 테이블을 독출하여 상기 FIFO 저장부 및 상기 제어부에 제공하는 직접 메모리 액세스(Direct Memory Access; DMA)부; 및
상기 디스크립터 길이 정보에 기초하여 상기 FIFO 저장부에 저장된 상기 디스크립터 테이블에 대해 해시 연산을 수행하여 디스크립터 검증 해시값을 생성하는 해시 엔진(hash engine)을 포함하고,
상기 제어부는 상기 디스크립터 검증 해시값과 상기 디스크립터 기준 해시값이 서로 상이한 경우 상기 인터럽트 신호를 생성하는 것을 특징으로 하는 전자 시스템. - 제6 항에 있어서, 상기 제어부는 상기 디스크립터 검증 해시값과 상기 디스크립터 기준 해시값이 일치하는 경우, 상기 디스크립터 테이블에 포함되는 상기 복수의 설정 레코드들 중의 하나를 선택하고, 상기 선택된 설정 레코드에 포함되는 상기 시작 주소 및 상기 길이 정보를 출력하고,
상기 DMA부는 상기 메모리 장치로부터 상기 시작 주소 및 상기 길이 정보에 상응하는 검증 데이터를 독출하여 상기 FIFO 저장부에 저장하고,
상기 해시 엔진은 상기 길이 정보에 기초하여 상기 FIFO 저장부에 저장된 상기 검증 데이터에 대해 해시 연산을 수행하여 검증 해시값을 생성하고,
상기 제어부는 상기 검증 해시값과 상기 선택된 설정 레코드에 포함되는 상기 기준 해시값이 서로 상이한 경우 상기 인터럽트 신호를 생성하는 것을 특징으로 하는 전자 시스템. - 제7 항에 있어서, 상기 검증 해시값과 상기 선택된 설정 레코드에 포함되는 상기 기준 해시값이 일치하는 경우, 상기 무결성 검증 장치는 상기 디스크립터 테이블에 대해 상기 무결성 검증 동작을 다시 수행하고, 상기 디스크립터 검증 해시값과 상기 디스크립터 기준 해시값이 일치하는 경우 상기 디스크립터 테이블에 포함되는 상기 복수의 설정 레코드들 중의 다른 하나를 선택하고, 상기 메모리 장치에 저장된 상기 복수의 검증 데이터들 중에서 상기 선택된 설정 레코드에 상응하는 검증 데이터에 대해 상기 무결성 검증 동작을 수행하는 것을 특징으로 하는 전자 시스템.
- 제7 항에 있어서, 상기 검증 데이터는 m(m은 3 이상의 정수)개의 블록 검증 데이터들로 분산되어 상기 메모리 장치에 저장되고, 상기 설정 레코드에 포함되는 상기 시작 주소는 상기 m개의 블록 검증 데이터들 각각에 상응하는 제1 내지 제m 시작 주소들을 포함하고, 상기 설정 레코드에 포함되는 상기 길이 정보는 상기 m개의 블록 검증 데이터들 각각에 상응하는 제1 내지 제m 길이 정보들을 포함하는 것을 특징으로 하는 전자 시스템.
- 제9 항에 있어서, 상기 제어부는 상기 선택된 설정 레코드에 포함되는 상기 제1 내지 제m 시작 주소들 각각 및 상기 제1 내지 제m 길이 정보들 각각의 쌍들을 순차적으로 출력하고,
상기 DMA부는 상기 메모리 장치로부터 상기 제1 내지 제m 시작 주소들 각각 및 상기 제1 내지 제m 길이 정보들 각각의 쌍들에 상응하는 제1 내지 제m 블록 검증 데이터들을 순차적으로 독출하여 상기 FIFO 저장부에 저장하고,
상기 해시 엔진은 상기 제1 블록 검증 데이터 및 상기 제1 길이 정보에 기초하여 제1 중간 해시 데이터를 생성하고, 제p(p는 m 미만의 양의 정수) 블록 검증 데이터, 제1 내지 제p 길이 정보들 및 제(p-1) 중간 해시 데이터에 기초하여 제p 중간 해시 데이터를 생성하고, 상기 제m 블록 검증 데이터, 상기 제1 내지 제m 길이 정보들 및 상기 제(m-1) 중간 해시 데이터에 기초하여 상기 검증 해시값을 생성하는 것을 특징으로 하는 전자 시스템.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140026914A KR102186609B1 (ko) | 2014-03-07 | 2014-03-07 | 무결성 검증 장치를 포함하는 전자 시스템 |
US14/638,862 US9703960B2 (en) | 2014-03-07 | 2015-03-04 | Electronic system having integrity verification device |
US15/636,814 US10289849B2 (en) | 2014-03-07 | 2017-06-29 | Electronic system having integrity verification device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140026914A KR102186609B1 (ko) | 2014-03-07 | 2014-03-07 | 무결성 검증 장치를 포함하는 전자 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150104924A KR20150104924A (ko) | 2015-09-16 |
KR102186609B1 true KR102186609B1 (ko) | 2020-12-03 |
Family
ID=54017636
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140026914A KR102186609B1 (ko) | 2014-03-07 | 2014-03-07 | 무결성 검증 장치를 포함하는 전자 시스템 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9703960B2 (ko) |
KR (1) | KR102186609B1 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10331613B2 (en) * | 2015-10-30 | 2019-06-25 | Netapp, Inc. | Methods for enabling direct memory access (DMA) capable devices for remote DMA (RDMA) usage and devices therof |
KR102580820B1 (ko) * | 2016-03-10 | 2023-09-20 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
DE102016106871A1 (de) * | 2016-04-13 | 2017-10-19 | Infineon Technologies Ag | Steuervorrichtung und Verfahren zum Sichern von Daten |
CN106776105B (zh) * | 2016-11-15 | 2020-02-21 | 惠州Tcl移动通信有限公司 | 一种***启动文件的校验及编译方法 |
US20190196984A1 (en) * | 2017-12-27 | 2019-06-27 | Qualcomm Incorporated | Method, apparatus, and system for dynamic management of integrity-protected memory |
US11683180B1 (en) | 2018-05-24 | 2023-06-20 | Swear Inc. | Protecting digital media with nested hashing techniques |
US10560261B1 (en) | 2018-05-24 | 2020-02-11 | DeepTruth, LLC | Systems and techniques for capture of trusted media data |
JP7278753B2 (ja) * | 2018-11-19 | 2023-05-22 | キヤノン株式会社 | ソフトウェアの改ざんを検知することが可能な情報処理装置 |
US11757875B2 (en) * | 2019-05-29 | 2023-09-12 | Johnson Controls Tyco IP Holdings LLP | System and method for checking default configuration settings of device on a network |
CN114006733B (zh) * | 2021-10-08 | 2023-10-20 | 北卡科技有限公司 | 一种验证数据传输完整性的方法及*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060047955A1 (en) | 2004-08-30 | 2006-03-02 | Axalto Inc. | Application code integrity check during virtual machine runtime |
US20100169967A1 (en) | 2008-12-30 | 2010-07-01 | Khosravi Hormuzd M | Apparatus and method for runtime integrity verification |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6564326B2 (en) | 1999-07-06 | 2003-05-13 | Walter A. Helbig, Sr. | Method and apparatus for enhancing computer system security |
KR100880185B1 (ko) | 2001-06-29 | 2009-01-28 | 시큐어 시스템스 리미티드 | 컴퓨터용 보안 시스템 및 그 방법 |
JP4501349B2 (ja) | 2003-03-13 | 2010-07-14 | ソニー株式会社 | システムモジュール実行装置 |
US7725703B2 (en) | 2005-01-07 | 2010-05-25 | Microsoft Corporation | Systems and methods for securely booting a computer with a trusted processing module |
JP4093494B2 (ja) | 2005-09-08 | 2008-06-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 秘密情報へのアクセスを制御するシステムおよびその方法 |
US8966284B2 (en) | 2005-09-14 | 2015-02-24 | Sandisk Technologies Inc. | Hardware driver integrity check of memory card controller firmware |
KR20070071983A (ko) * | 2005-12-30 | 2007-07-04 | 삼성전자주식회사 | 해쉬 엔진 인터페이스 장치 및 방법 |
JP4769608B2 (ja) | 2006-03-22 | 2011-09-07 | 富士通株式会社 | 起動検証機能を有する情報処理装置 |
US7841010B2 (en) * | 2007-01-08 | 2010-11-23 | Apple Inc. | Software or other information integrity verification using variable block length and selection |
JP5036406B2 (ja) * | 2007-05-30 | 2012-09-26 | エイチジーエスティーネザーランドビーブイ | コンテンツデータ管理システム及び方法 |
KR101532363B1 (ko) | 2009-06-25 | 2015-06-30 | 삼성전자주식회사 | 다중 액세스 레벨을 갖는 반도체 장치 및 그것의 액세스 제어 방법 |
TWI489825B (zh) * | 2010-08-24 | 2015-06-21 | Gemtek Technolog Co Ltd | 路由設備及其網路封包處理方法 |
US9262631B2 (en) * | 2011-11-15 | 2016-02-16 | Mstar Semiconductor, Inc. | Embedded device and control method thereof |
US9819727B2 (en) * | 2013-02-28 | 2017-11-14 | Amazon Technologies, Inc. | Computing infrastructure for configurable-quality random data |
US9049232B2 (en) * | 2013-02-28 | 2015-06-02 | Amazon Technologies, Inc. | Configurable-quality random data service |
-
2014
- 2014-03-07 KR KR1020140026914A patent/KR102186609B1/ko active IP Right Grant
-
2015
- 2015-03-04 US US14/638,862 patent/US9703960B2/en active Active
-
2017
- 2017-06-29 US US15/636,814 patent/US10289849B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060047955A1 (en) | 2004-08-30 | 2006-03-02 | Axalto Inc. | Application code integrity check during virtual machine runtime |
US20100169967A1 (en) | 2008-12-30 | 2010-07-01 | Khosravi Hormuzd M | Apparatus and method for runtime integrity verification |
Non-Patent Citations (1)
Title |
---|
G. Edward Suh et al, "Hardware Mechanisms for Memory Integrity Checking"(2002.12.)* |
Also Published As
Publication number | Publication date |
---|---|
US10289849B2 (en) | 2019-05-14 |
US9703960B2 (en) | 2017-07-11 |
KR20150104924A (ko) | 2015-09-16 |
US20170308703A1 (en) | 2017-10-26 |
US20150254458A1 (en) | 2015-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102186609B1 (ko) | 무결성 검증 장치를 포함하는 전자 시스템 | |
KR101846427B1 (ko) | 컴퓨팅 장치의 보안 부팅 기법 | |
KR101755541B1 (ko) | 단일 데이터 버퍼의 병렬 처리 | |
US10146680B2 (en) | Data processing system and method of operating the same | |
US20180183577A1 (en) | Techniques for secure message authentication with unified hardware acceleration | |
JP7101318B2 (ja) | メモリ内のデータアテステーション | |
US10999057B2 (en) | Providing access to a hardware resource based on a canary value | |
US20220382874A1 (en) | Secure computation environment | |
US20200104531A1 (en) | Preemption of a container in a secure computation environmen | |
US10891396B2 (en) | Electronic circuit performing encryption/decryption operation to prevent side- channel analysis attack, and electronic device including the same | |
US20150161401A1 (en) | Processor having a variable pipeline, and system-on-chip | |
US20240111545A1 (en) | Concurrent image measurement and execution | |
JP6246239B2 (ja) | 素数生成のための方法およびデバイス | |
KR20150068264A (ko) | 가변 파이프라인을 가지는 프로세서, 및 시스템-온-칩 | |
CN116136744A (zh) | 存储设备和存储设备的操作方法 |
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 |