KR20150089694A - 보안 코어 기반의 메모리 보호 장치 및 그 방법 - Google Patents

보안 코어 기반의 메모리 보호 장치 및 그 방법 Download PDF

Info

Publication number
KR20150089694A
KR20150089694A KR1020140010606A KR20140010606A KR20150089694A KR 20150089694 A KR20150089694 A KR 20150089694A KR 1020140010606 A KR1020140010606 A KR 1020140010606A KR 20140010606 A KR20140010606 A KR 20140010606A KR 20150089694 A KR20150089694 A KR 20150089694A
Authority
KR
South Korea
Prior art keywords
memory
core
security
access
application program
Prior art date
Application number
KR1020140010606A
Other languages
English (en)
Inventor
문용혁
김정녀
정보흥
한진희
김대원
문화신
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020140010606A priority Critical patent/KR20150089694A/ko
Publication of KR20150089694A publication Critical patent/KR20150089694A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 멀티 코어가 탑재된 호스트 디바이스 상에서 실행되는 멀티 코어 응용 프로그램이 보다 검증된 체계에 따라 메모리 디바이스의 보안 메모리 영역으로 접근할 수 있도록 한 보안 코어 기반의 메모리 보호 장치 및 그 방법에 관한 것으로, 상기 방법은 멀티 코어 중 일부를 별도의 보안 코어로 설정하고, 메모리의 보안 메모리 영역 상으로 접근하는 응용 프로그램의 쓰레드가 보안 코어 상에서만 동작하도록 강제화하는 단계; 보안 접근 코드를 포함하는 쓰레드를 독립적으로 실행하는 단계; 일반 코어 및 보안 코어에서 동작하는 개별 쓰레드에 대해서 상이한 가상 메모리 접근 절차를 제공하기 위해 차등화된 가상 메모리 테이블을 제공하는 단계; 및 상기 응용 프로그램에 대한 무결성 검증을 수행하여 무결성 검증에 따라 메모리 디바이스 접근 I/O 개방 여부를 결정하는 단계를 포함한다.

Description

보안 코어 기반의 메모리 보호 장치 및 그 방법{Apparatus and method for protecting memory based secure core}
본 발명은 보안 코어 기반의 메모리 보호 장치 및 그 방법에 관한 것으로서, 특히 멀티 코어가 탑재된 호스트 디바이스 상에서 실행되는 멀티 코어 응용 프로그램이 보다 검증된 체계에 따라 메모리 디바이스의 보안 메모리 영역으로 접근할 수 있도록 한 보안 코어 기반의 메모리 보호 장치 및 그 방법에 관한 것이다.
최근 멀티 코어 CPU 탑재는 PC(Personal Computer) 랩탑(Laptop)을 비롯하여 탭(Tab), 태플릿(Tablet), 스마트폰 등의 거의 모든 호스트 디바이스에서 지원되고 있다.
이와 같은 환경에서는 응용 프로그램을 개별 쓰레드(Thread)로 분리 작성하여 독립된 CPU상에 적재시킬 수 있어 병렬 처리를 통한 높은 성능향상을 기대할 수 있다.
또한, 기기 외부에 탈부착 가능한 메모리 디바이스의 I/O 속도 개선 및 용량 역시 크게 개선되어 있어 그 사용의 빈도가 매우 높은 편에 속한다.
한편, 메모리 디바이스는 통상적으로 사적 영역과 공용 영역으로 분리되는데, 공용 영역의 경우 여러 응용 프로그램의 데이터 접근을 허용하는 구조이므로 데이터 기밀성을 유지하기 어려운 특성이 있다.
이는 기술적으로 모든 코어가 동일한 가상 메모리 테이블에 접근할 수 있는 구조적 특징을 갖고 있기 때문에 발생할 수 있는 문제점으로 이해될 수 있다.
또한, 기밀 데이터 보호를 위한 종래 기법의 경우 단일 암호화 키를 이용하여 메모리 디바이스의 공용 영역에 속하는 데이터의 일부 또는 전체를 암호화하는 기법을 이용하고 있어 암호화 키 노출시 모든 데이터가 그대로 유출될 가능성이 매우 크다.
따라서, 메모리 디바이스의 공용 영역에 대한 접근 제어를 제공하기 위해서는 특정 코어에게만 해당 보안 영역에 대한 가상 메모리 테이블 정보를 제공하는 등의 기술적 진보의 노력이 필요하며, 더불어 공용 메모리 영역 중 보안 영역 접근을 요구하는 응용 프로그램별로 개별적인 암호화 키 생성 및 관리가 필요한 실정이다.
이에, 임의의 응용 프로그램이 메모리 디바이스의 보안 영역의 데이터에 신뢰된 방법에 기반하여 접근할 수 있도록 응용 프로그램의 무결성 검증 결과를 기반으로 개별 암호화 키 생성 및 메모리 디바이스 개방 여부를 결정하고, 보안 영역에 접근과 관련된 코드를 별도의 보안 코어 상에 적재하여 독립적으로 실행할 수 있는 방법이 필요하게 된다.
따라서, 본 발명은 상기한 종래 기술의 문제점을 해결하기 위한 것으로 본 발명의 목적은, 멀티 코어가 탑재된 호스트 디바이스 상에서 실행되는 멀티 코어 응용 프로그램이 보다 검증된 체계에 따라 메모리 디바이스의 보안 메모리 영역으로 접근할 수 있도록 한 보안 코어 기반의 메모리 보호 장치 및 그 방법을 제공함에 있다.
특히, 본 발명은 하나의 멀티 코어 응용 프로그램이 보안 메모리 영역과 비 보안 메모리 영역 상에 존재하는 데이터의 동시 접근이 가능하도록 지원하며, 멀티 코어 중 일부를 별도의 보안 코어로 설정하고, 보안 메모리 영역으로 접근하는 응용 프로그램의 쓰레드는 보안 코어 상에서만 동작하도록 강제화하여 보안 메모리 영역 접근 코드를 포함한 쓰레드의 독립된 실행을 보장하도록 한 것이다.
또한, 본 발명은 일반 코어 및 보안 코어에서 동작하는 개별 쓰레드에 대해서 상이한 가상 메모리 접근 절차를 제공하기 위해 차등화된 가상 메모리 테이블을 제공하며, 응용 프로그램 무결성 정보의 정확성에 근거하여 메모리 디바이스 접근 I/O 개방 여부를 결정하는 과정을 순차적으로 수행하도록 한 것이다.
상기 목적을 달성하기 위한 본 발명에 따른 보안 코어 기반의 메모리 보호 방법은, 멀티 코어 중 일부를 별도의 보안 코어로 설정하고, 메모리의 보안 메모리 영역 상으로 접근하는 응용 프로그램의 쓰레드가 보안 코어 상에서만 동작하도록 강제화하는 단계; 보안 접근 코드를 포함하는 쓰레드를 독립적으로 실행하는 단계; 일반 코어 및 보안 코어에서 동작하는 개별 쓰레드에 대해서 상이한 가상 메모리 접근 절차를 제공하기 위해 차등화된 가상 메모리 테이블을 제공하는 단계; 및 상기 응용 프로그램에 대한 무결성 검증을 수행하여 무결성 검증에 따라 메모리 디바이스 접근 I/O 개방 여부를 결정하는 단계를 포함한다.
본 발명에 따른 보안 코어 기반의 메모리 보호 장치 및 그 방법은 코어 ID 및 응용 프로그램의 무결성 검증정보를 이용하여 ID가 변경된 코어 또는 무결성이 훼손된 응용 프로그램의 보안 영역 접근을 통제할 수 있다.
또한, 본 발명에 따르면, 보안 메모리 영역 접근 코드 즉, 쓰레드의 물리적 고립화를 위해 별도의 보안 코어를 사용함으로써, 일반 영역 접근과 보안 영역 접근을 모두 보장하면서 접근 경로를 명확하게 분리할 수 있는 효과를 가진다.
또한, 본 발명에 따르면, 코어 종류에 따라 상이한 가상 메모리 페이지를 제공하기 위하여 차등적 가상 메모리 테이블을 통해 선별 제어가 가능한 장점을 가진다.
도 1은 본 발명에 따른 보안 코어 기반의 메모리 보호 장치에 대한 블록 구성을 나타낸 도면.
도 2는 본 발명에 따른 보안 코어 기반의 메모리 보호 방법에 있어서, 호스트 디바이스 부팅 시 도 1에 도시된 하드웨어 기반 무결성 관리부에 의해 수행되는 개별 코어의 무결성 검증 및 보안 코어를 선정하는 절차를 나타낸 동작 플로우챠트.
도 3은 본 발명에 따른 보안 코어 기반의 메모리 보호 방법에 있어서, 응용 프로그램 설치시 이를 감지하여 무결성 값을 도 1에 도시된 하드웨어 기반 무결성 관리부에 저장하고, 메모리 디바이스 부착 시 I/O 제어부로 무결성 값 및 보안 코어 ID를 전달한 뒤, 데이터 암호화 키를 생성하는 과정을 나타낸 동작 플로우챠트.
도 4는 본 발명에 따른 보안 코어 기반의 메모리 보호 방법에 있어서, 응용 프로그램이 다수의 코어로 분기 되어 실행될 때, 개별 쓰레드의 보안 영역 접근 여부 및 해당 쓰레드 실행 코어의 종류를 판별하여 가상 메모리 테이블의 제공 및 차단을 선별적으로 제어하는 과정을 나타낸 동작 플로우챠트.
도 5는 본 발명에 따른 보안 코어 기반의 메모리 보호 방법에 있어서, 응용 프로그램의 메모리 접근을 통제하기 위한 메모리 디바이스에서 수행되는 데이터 접근 제어, 데이터 암호화, 가상 메모리 테이블 업데이트 및 오류 보고 과정을 나타낸 동작 플로우챠트.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시 예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 ”연결되어” 있다거나 ”접속되어” 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 ”직접 연결되어” 있다거나 ”직접 접속되어” 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서"포함하다” 또는 ”가지다” 등의 용어는 명세서상에 기재된 특정, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시 예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
이하에서는 첨부된 도면을 참조하여 본 발명에 따른 보안 코어 기반의 메모리 보호 장치 및 그 방법에 대한 바람직한 실시 예를 상세히 설명한다.
도 1은 본 발명에 따른 보안 코어 기반의 메모리 보호 장치에 대한 블록 구성을 나타낸 도면이다.
도 1에 도시된 바와 같이, 본 발명에 따른 보안 코어 기반의 메모리 보호장치는, 호스트 디바이스(100)와 메모리 디바이스(200)를 포함한다.
호스트 디바이스(100)는 통상적인 시스템 프로그램 또는 사용자 응용 프로그램의 구동시 이를 프로세스 또는 인스턴스 형태로 메모리 디바이스(200)에 저장하고, CPU 코어를 통해 프로세스 구동에 필요한 명령어를 처리할 수 있도록 한 것으로, 일예로 PC, Tab, Tablet, 스마트 폰 등을 포함할 수 있다.
메모리 디바이스(200)는 상기 호스트 디바이스(100)에 탈,부착이 가능한 저장매체(예를 들어, SD 카드, 마이크로 SD 카드, MMC 등)를 의미하며, 저장 공간 및 하드웨어 로직을 처리할 수 있는 별도의 프로세스 등을 포함한다. 상기 메모리 디바이스(200)를 호스트 디바이스(100)에 장착시 호스트 디바이스(100)와의 상호 인증 절차가 통해 인증이 완료된 후, 이후 프로세스를 진행한다.
상기한 호스트 디바이스(100)는 멀티코어 응용 프로그램(110), 다수의 코어(120, 120-1,..120-N), 차등적 가상 메모리 관리부(130), 시스템 이벤트 감지부(140) 및 하드웨어 기반 무결성 관리부(150)를 포함한다.
그리고 메모리 디바이스(200)는 I/O 제어부(210), 메모리(220), 암호화 관리부(230)를 포함하고, 메모리(220)는 사설 메모리 영역(221), 다수의 영역 타입을 갖는 공용 메모리 영역(222, 223, 224, 225)을 포함한다.
멀티 코어 응용 프로그램(110)은 호스트 디바이스(100) 상에서 운용되는 통상의 사용자 응용 프로그램을 의미하는 것으로, 멀티코어 프로세싱을 모두 지원하는 응용 프로그램을 나타낸다. 해당 프로그램은 POSIX, Windows 쓰레드를 이용하거나, OpenMP 등의 처리를 통해 다수의 각 코어(120, 120-1, 120-N)로 병렬화 처리가 가능하도록 작성되며 공유 자원에 대한 동기화 및 쓰레드 스케쥴링을 지원한다.
다수의 코어(120, 120-1, 120-N)는 상기 멀티 코어 응용 프로그램(110)으로부터 병렬 처리되어 제공되는 응용 프로그램에 따라 동작하는 CPU 코어를 의미하며, 구조적으로 단일 칩 또는 서로 다른 칩 상에 구현된 멀티 코어 프로세스를 포함한다. 전자의 경우 L2 또는 L3 캐시(Cache)를 이용하여 코어(120, 120-1, 120-N)간 통신이 가능하며, 후자의 경우 메모리 또는 캐시 일관성 프로토콜(Cache Coherent Protocol)을 통한 캐시 통신을 기반으로 운용된다. 또한, 다수의 코어(120, 120-1, 120-N)는 NUMA(Non-Uniformed Memory Architecture)구조를 기반으로 개별 메모리 관리 로직 및 캐시 메모리를 포함한다. 여기서, 개별 코어는 일반 코어 및 보안 코어로 분류된다.
호스트 디바이스(100)의 차등적 가상 메모리 관리부(130)는 개별 CPU 코어(120, 120-1, 120-N)가 물리 메모리 페이지의 형태와 접근 방식에 대한 논리적 뷰(View)를 제공하기 위해 가상 메모리 테이블을 유지 관리한다.
해당 가상 메모리 테이블은 일반 코어 및 보안 코어의 분리된 접근 방법을 제공하기 위하여 단일 가상 메모리 테이블 내에 기술되거나, 상이한 가상 메모리 테이블로 생성되어 관리될 수 있다.
또한, 다중 코어(120, 120-1, 120-N)간의 공유 메모리 지원을 위한 별도의 가상 메모리 관리기능을 지원하며 보안 코어의 가상 메모리 영역은 공유 메모리 영역에 포함되지 않는다.
한편, 차등적 가상 메모리 관리부(130)는 소프트웨어 형태의 구현 및 운용으로 국한되지 않으며 상기 하드웨어기반 무결성 관리부(150)에 통합되어 하드웨어 기반으로 운용될 수 있다.
상기 호스트 디바이스(100)의 시스템 이벤트 감지부(140)는 상기 하드웨어 무결성 관리부(150)와 관련된 주요 시스템 이벤트 예를 들면, 응용 프로그램 설치, 호스트 디바이스 부팅 등의 이벤트를 감지하고, 하드웨어 기반 무결성 관리부(150)가 요청한 정보를 해당 시스템 이벤트가 발생한 블록으로부터 획득하여 하드웨어 기반 무결성 관리부(150)로 제공한다.
호스트 디바이스(100)의 하드웨어 기반 무결성 관리부(150)는 호스트 디바이스(100) 부팅 시 개별 코어 ID를 차등적 가상 메모리 관리부(130)로 요청하여 수신하고, 이를 저장된 기존의 개별 코어 ID와 비교하여 이상 유무를 차등적 가상 메모리 관리부(130)에 보고한다. 본 발명에서 개별 코어 ID는 호스트 디바이스(100) 제조 과정에서 부여되는 식별자이며, 모든 코어 ID의 해시(Hash) 값은 하드웨어 기반 무결성 관리부(150) 제조 시 저장된다.
또한, 하드웨어 기반 무결성 관리부(150)는 신규 설치되는 멀티 코어 응용 프로그램을 대상으로 무결성 검사를 수행하고, 수행된 무결성 검사 결과를 하드웨어 칩에 저장한다. 또한, 메모리 디바이스(200)의 메모리 암호화 관리부(230)로 보안 코어 ID 및 특정 멀티 코어 응용 프로그램의 무결성 검사 결과를 제공한다.
메모리 디바이스(200)의 I/O 제어부(210)는 메모리(220)에 접근하기 위해 메모리 디바이스(200) 상의 입출력을 제어하는데, 가상 메모리를 물리 메모리로 매핑(Mapping) 하는 기능 및 물리 메모리 관리 기능을 수행한다.
그리고 메모리 디바이스(200)의 메모리(220)는 데이터를 저장 및 삭제하기 위해 물리적인 상태로서 보존할 수 있다. 이러한 메모리(200)는 사설 메모리 영역(221)과 다수의 영역 타입을 갖는 공용 메모리 영역(222-225)으로 구분되며, 공용 메모리 영역은 4개의 영역 타입(222-225)으로 분류된다.
또한, 메모리(220)는 물리 메모리 페이지를 관리하고 이를 호스트 디바이스(100)의 차등적 가상 메모리 관리부(130)가 관리하는 가상 메모리 테이블과 매핑시키는 기능을 추가로 수행할 수 있다.
상기한 메모리(220)의 사설 메모리 영역(221)은 운영 체제 부트 로더 코드(Boot Loader Code)를 포함하고 있는 메모리 영역으로서, 일반적으로 호스트 디바이스(100)의 ROM으로부터 부팅 시작 명령을 메모리 디바이스(200)의 I/O 제어부(210)를 통해 수신하고, 이후 메모리 디바이스(200)는 사설 메모리 영역(221)상의 부트 로더 코드를 호스트 디바이스(100)의 RAM으로 저장하는 절차를 수행한다.
따라서, 일반 프로그램에 의한 접근은 불가능하며, 본 발명에서는 사설 메모리 영역(221)은 항상 신뢰할 수 있으며 훼손되지 않는 것이다. 또한, 사설 메모리 영역(221)을 제외한 나머지 영역은 모두 공용 메모리 영역(222-225)으로 분류할 수 있으며, 공용 메모리 영역(222-225)은 물리적으로 여러 종류의 영역 타입으로 분리되어 관리된다.
공용 메모리 영역은 도 1에 도시된 바와 같이 서로 다른 영역 타입(222-225)을 가지는 것으로 영역 타입 0(222)은 오직 암호화 관리부(230)만 접근할 수 있는 공용 메모리 영역이다. 따라서, 응용 프로그램이 I/O 제어부(210)를 통해서 접근할 수 없다. 영역 타입 0(222)에는 메모리 디바이스(200)의 메모리 마스터 키(MMK : Memory Master Key)가 포함되어 있다. 메모리 마스터 키는 메모리 디바이스(200)의 제조시 부여되며 변경되지 않는다.
공용 영역 메모리 영역의 영역 타입 1(223)은 코어 종류에 무관하게 모든 코어의 접근이 허용되는 공용 메모리 영역이다. 따라서, 영역 타입 1(223)은 중요도 또는 기밀도가 높지 않은 데이터를 포함하므로 데이터는 암호화되지 않은 상태로 저장된다.
공용 메모리 영역의 영역 타입 2(224)는 암호화된 데이터만 저장되며, 보안 코어에게도 오직 읽기 모드 접근만을 허용하는 공용 메모리 영역으로 영역 타입 2(224)에 저장되는 모든 데이터는 암호화되어 있다. 다만 암호화 관리부(230)는 메모리 마스터 키에 의해 암호화된 데이터 암호화 키(DEK : Data Encryption Key)들을 저장한 후 관리한다.
공용 메모리 영역의 영역 타입 3(225)은 암호화된 데이터만 저장되며, 보안 코어에게 읽기 및 쓰기 접근을 모두 허용하는 공용 메모리 영역으로 저장되는 모든 데이터는 암호화되어 있다.
메모리 디바이스(200)의 암호화 관리부(230)는 암호화 엔진(231) 및 키 처리 엔진(232)을 포함하는 것으로, 보안 영역 즉, 공용 메모리 영역의 영역 타입 2(224) 및 영역 타입 3(225)에 저장되는 데이터를 암호화 및 복호화하기 위한 일련의 기능을 수행한다. 특히 데이터 암호화 키의 기밀성을 유지하기 위해서 영역 타입 2(224)에 MMK로 암호화된 DEK를 저장하며, 영역 타입 2(224) 및 영역 타입 3(225)에 저장될 데이터를 DEK로 암호화하는 기능을 수행한다.
상기 암호화 관리부(230)의 암호화 엔진(231)은 MMK 접근과 데이터 암호화 및 복호화를 수행하고, 키 처리 엔진(232)은 특정 멀티 코어 응용 프로그램을 위한 DEK 생성 및 관리를 수행한다.
이와 같은 구성을 갖는 본 발명에 따른 보안 코어 기반의 메모리 보호 장치의 동작과 상응하는 방법에 대하여 첨부한 도 2 내지 도 5를 참조하여 단계적으로 설명해 보기로 하자.
도 2는 도 1에 도시된 호스트 디바이스 부팅시 하드웨어 기반 무결성 관리부에 의해 수행되는 개별 코어의 무결성 검증 및 보안 코어를 선정하는 절차를 나타낸 동작 플로우챠트이다.
도 2에 도시된 바와 같이 먼저, 전원이 연결되었거나, 배터리 성능이 유효한 호스트 디바이스(100)의 부팅 동작이 시작되면, 호스트 디바이스(100)의 시스템 이벤트 감지부(140)에서 이를 감지한다(S400).
이어, 호스트 디바이스(100)의 하드웨어 기반 무결성 관리부(150)에서는 부팅 진행중 또는 부팅이 완료된 이후 즉시 개별 코어의 ID 정보를 시스템 이벤트 감지부(140)에 요청하여 수신한다(S410).
하드웨어 기반 무결성 관리부(150)는 시스템 이벤트 감지부(140)로부터 수신한 모든 코어 ID에 해시(Hash) 함수를 적용하여 각각의 해시값을 생성한다(S420).
그리고, 하드웨어 기반 무결성 관리부(150)는 하드웨어 칩에 제조과정 시 저장된 개별 코어 ID의 해시 값과 상기 S420단계에서 생성된 해시 값을 비교하여 해시값이 상호 동일한지를 판단한다(S430, S440)).
비교 결과, 하드웨어 칩에 제조과정 시 저장된 개별 코어 ID의 해시 값과 상기 S420 단계에서 생성된 해시 값이 동일한 경우, 하드웨어 기반 무결성 관리부(150)는 모든 코어가 정상임을 차등적 가상 메모리 관리부(130)에 통보한다(S450).
그리고, 하드웨어 기반 무결성 관리부(450)는 멀티 코어 중 일부를 보안 코어로 선정하고, 해당 코어의 ID를 저장한다(S460). 이때, 보안 코어의 선정방법은 호스트 디바이스(100)의 부팅 시마다 매번 임의로 지정하여 응용 프로그램에 의한 추측이 어렵도록 구성한다.
한편, 호스트 디바이스(100)의 차등적 가상 메모리 관리부(130)는 각 코어에게 허용된 메모리 페이지만을 제공할 수 있도록 상이한 정보를 가상 메모리 테이블에 저장한다. 이를 위해 차등적 가상 메모리 관리부(130)는 메모리 디바이스(200)의 I/O 제어부(210)를 통해 메모리(220)의 물리적 메모리 구성을 확인하고 이를 매핑하는 작업을 수행한다(S470).
상기 S450 단계에서 하드웨어 칩에 제조과정 시 저장된 개별 코어 ID의 해시 값과 상기 S420단계에서 생성된 해시 값의 비교 결과, 하드웨어 칩에 제조과정 시 저장된 개별 코어 ID의 해시 값과 상기 S420단계에서 생성된 해시 값이 동일하지 않은 경우 하드웨어 기반 무결성 관리부(150)는 차등적 가상 메모리 관리부(130)에 무결성이 훼손된 코어 ID를 보고한다(S480).
이어, 차등적 가상 메모리 관리부(130)는 무결성이 훼손된 코어 ID를 확인하고 해당 코어를 위한 가상 메모리 테이블을 생성하거나 제공하지 않는 것이다(S490).
도 3은 본 발명에 따른 보안 코어 기반의 메모리 보호 방법에 있어서, 응용 프로그램 설치 시 이를 감지하여 무결성 값을 도 1에 도시된 하드웨어 기반 무결성 관리부(150)에 저장하고, 메모리 디바이스 부착시 I/O 제어부로 무결성 값 및 보안 코어 ID를 전달한 뒤, 데이터 암호화 키를 생성하는 과정을 나타낸 동작 플로우챠트이다.
도 3에 도시된 바와 같이, 호스트 디바이스(100)의 시스템 이벤트 감지부(140)는 신규 응용 프로그램 설치를 감지하고, 이를 하드웨어 기반 무결성 관리부(150)로 통보한다(S600).
신규 응용 프로그램 설치를 감지한 하드웨어 기반 무결성 관리부(150)는 해당 응용 프로그램의 무결성 값을 생성한다(S610).
호스트 디바이스(100)의 하드웨어 기반 무결성 관리부(150)는 생성된 무결성 값을 저장한다(S620).
그리고, 상기 무결성 값을 저장한 후, 시스템 이벤트 감지부(140)는 메모리 디바이스(200)가 호스트 디바이스(100)에 부착되었는지를 판단한다(S630).
판단 결과, 메모리 디바이스(200)가 호스트 디바이스(100)에 부착된 경우, 호스트 디바이스(100)의 하드웨어 기반 무결성 관리부(150)는 메모리 디바이스(200)의 암호화 관리부(230)로 저장된 응용 프로그램의 무결성 값 및 보안 코어 ID를 전달한다(S640).
그리고, 메모리 디바이스(200)의 암호화 관리부(230)는 호스트 디바이스(100)의 하드웨어 기반 무결성 관리부(150)로부터 제공되는 응용 프로그램의 무결성 값 및 보안 코어 ID를 메모리(220)의 공용 메모리 영역인 영역 타입 0(222)에 저장한다(S650).
그리고 암호화 관리부(230)의 키 처리 엔진(232)은 상기 영역 타입 0(222)에 저장된 무결성 값과 보안 코어 ID를 이용하여 해당 응용 프로그램의 데이터 암호화 키를 생성한다(S660).
그리고 암호화 관리부(230)의 암호화 엔진(231)은 상기 S660 단계에서 키 처리 엔진(232)에 의해 생성된 암호화 키를 메모리(220)의 영역 타입 0(222)에 존재하는 메모리 마스터 키를 이용하여 암호화하고, 이를 영역 타입 2(224)에 저장하는 것이다.
도 4는 본 발명에 따른 보안 코어 기반의 메모리 보호 방법에 있어서, 응용 프로그램이 다수의 코어로 분기 되어 실행될 때, 개별 쓰레드의 보안 영역 접근 여부 및 해당 쓰레드 실행 코어의 종류를 판별하여 가상 메모리 테이블의 제공 및 차단을 선별적으로 제어하는 과정을 나타낸 동작 플로우챠트이다.
도 4에 도시된 바와 같이, 설치된 응용 프로그램이 멀티 코어 환경에서 각각 분기되어 실행된다(S700).
호스트 디바이스(100)의 차등적 가상 메모리 관리부(130)는 실행중인 쓰레드의 접근 메모리 영역을 감지한다(S710).
이어, 차등적 가상 메모리 관리부(130)는 각 실행중인 쓰레드가 보안 영역 접근을 요청하는지를 판단한다(S720).
판단결과, 임의 실행중인 쓰레드가 보안 영역의 접근을 요청하는 경우, 해당 쓰레드가 보안 코어에 의해 실행되고 있는지 판단한다(S730).
그러나, S720 단계에서 임의 실행중인 쓰레드가 일반 영역의 접근을 요청하는 경우, 차등적 가상 메모리 관리부(130)는 해당 쓰레드를 위한 가상 메모리 테이블을 제공한다(S740).
한편, 상기 S730 단계에서 임의 쓰레드가 보안 코어에 의해 실행되고 있다고 판단되는 경우, 차등적 가상 메모리 관리부(130)는 메모리 디바이스(200)의 메모리(200)의 공용 메모리 영역인 영역 타입 2(224) 및 영역 타입 3(225)에 대한 가상 메모리 테이블을 제공한다(S750).
이어, 호스트 디바이스(100)의 차등적 가상 메모리 관리부(130)는 메모리 디바이스(200)의 I/O 제어부(210)를 통해 메모리(220)의 보안 영역 데이터 접근을 중계한다(S760).
그러나, S730 단계에서 임의 쓰레드가 일반 코어에 의해 실행되고 있다고 판단되는 경우 차등적 가상 메모리 관리부(130)는 공용 메모리 영역인 영역 타입 2(224) 및 영역 타입 3(225)에 대한 가상 메모리 테이블을 제공하지않으며 이에 대한 접근도 차단한다(S770).
그리고, 상기 S720 및 S730 단계에서 보안 영역 접근을 요청하거나 일반 코어에 의해 실행되는 쓰레드로 판단되는 경우. 해당 쓰레드가 보안 코어에 의해 실행될 수 있도록 적재한다(S780).
이어, 차등적 가상 메모리 관리부(130)는 메모리 디바이스(200)의 I/O 제어부(210)를 통해 메모리(220)의 일반 영역 데이터 접근을 중계하고(S790), 상기 S760 및 S790 단계가 종료되면 S700 단계로 이동하여 상기한 모든 단계를 반복 수행하는 것이다.
도 5는 본 발명에 따른 보안 코어 기반의 메모리 보호 방법에 있어서, 응용 프로그램의 메모리 접근을 통제하기 위한 메모리 디바이스에서 수행되는 데이터 접근 제어, 데이터 암호화, 가상 메모리 테이블 업데이트 및 오류 보고 과정을 나타낸 동작 플로우챠트이다.
도 5에 도시된 바와 같이, 메모리 디바이스(200)의 I/O 제어부(210)는 호스트 디바이스(100)의 차등적 가상 메모리 관리부(130)에 의해 메모리 디바이스(200)의 접근을 수신하고, 관련 메모리(220)로의 접근을 시도한다(S800).
상기 I/O 제어부(210)의 메모리(220) 접근 시도가 일반 영역에 대한 접근시도인지 판단한다(S810).
판단 결과, 일반 영역 접근에 대한 시도인 경우, I/O 제어부(210)는 메모리(220)의 공용 메모리 영역의 영역 타입 1(222) 상에 저장된 특정 데이터로 접근한다.
한편, 상기 S810 단계에서의 판단 결과, 일반 영역 접근의 시도가 아닌 보안 영역에 대한 접근 시도인 경우, I/O 제어부(210)는 암호화 관리부(230)로 접근 시도에 대한 요청을 제공하고, 암호화 관리부(230)는 영역 타입 0(222)에 저장된 메모리 마스터 키를 이용하여 보안 영역 접근을 요청한 해당 응용 프로그램의 데이터 암호화 키를 영역 타입 1(223)로부터 복호화하여 획득한다(S830).
상기 S830 단계를 통해 해당 응용 프로그램에 적합한 데이터 암호화 키가 존재하는지를 판단한다(S840).
판단 결과, 해당 응용 프로그램에 적합한 암호화 키가 존재하는 경우 데이터 요청의 종류가 "읽기" 또는 "쓰기"인지를 판단한다(S850).
상기 S850 단계에서 데이터 요청 종류가 메모리에 대한 접근 요청이 데이터 읽기로 판별된 경우, 암호화 관리부(230)는 영역 타입 2(224) 또는 영역 타입 3(225)에 접근하여 해당 데이터를 데이터 암호화 키로 복호화하여 원본 데이터를 획득한다(S860).
그리고, 메모리 디바이스(200)의 메모리(220)는 각 코어에게 허용된 가상 메모리 페이지를 업데이트한다(S870).
한편, 메모리 디바이스(200)의 I/O 제어부(210)는 물리 메모리 변경 사항을 차등적 가상 메모리 관리부(130)로 통보하여 가상 메모리 테이블이 업데이트 될 수 있도록 한다(S880).
그러나, 상기 S850 단계에서 메모리에 대한 접근 요청이 데이터 쓰기로 판단되는 경우, 신규 데이터를 해당 응용 프로그램의 데이터 암호화 키로 암호화하고, 영역 타입 2(224) 또는 영역 타입 3(225)에 저장한다(S890).
그리고, 상기 S840 단계에서 적합한 데이터 암호화 키가 존재하지 않은 경우 암호화 관리부(230)는 I/O 제어부(210)로 응용 프로그램의 접근 오류(예를 들어, 무결성 훼손, 불법 접근 등) 발생을 보고한다(S900).
이어, I/O 제어부(210)는 하드웨어 기반 무결성 관리부(150)에 응용 프로그램의 접근 오류를 보고하고(S910), 하드웨어 기반 무결성 관리부(150)는 해당 응용 프로그램응 실행중인 보안 코어로 적재 오류 신호를 발생한다(S920).
따라서, 보안 코어는 해당 응용 프로그램을 비정상적으로 종료시키는 것이다(S930).
상기한 본 발명에 따른 보안 코어 기반의 메모리 보호 장치 및 그 방법에 대하여 정리하면, 응용 프로그램의 메모리 디바이스의 특정 보안 영역에 존재하는 데이터로의 접근을 선별적으로 허용하기 위해 응용 프로그램의 무결성 정보를 검증하여 하드웨어 기반 칩 상에 저장하고, 검증된 응용 프로그램에 한하여 메모리 디바이스의 보안 영역과 비 보안 영역의 메모리 접근 코드를 각기 일반 코어와 보안 코어에 개별 적재하여 독립 실행을 보장하는 것이다.
그리고, 본 발명에 따르면, 각 메모리 접근 코드에 대하여 상이한 가상 메모리 테이블을 제공하기 위해 차등적 가상 메모리 테이블을 생성하고 정상적인 무결성 정보를 제공하는 응용 프로그램에 한하여 메모리 영역을 개방하는 것이다.
따라서, 본 발명은 하나의 응용 프로그램에 대해서 일반 메모리 영역과 보안 메모리 영역의 상이한 접근 체계를 지원하기 위해 메모리 접근의 차등적 메모리 보안성을 달성할 수 있는 것이다.
100 : 호스트 디바이스
110 : 멀티 코어 응용 프로그램
120, 120-1,,,120-N : 코어
130 : 차등적 가상 메모리 관리부
140 : 시스템 이벤트 감지부
150 : 하드웨어 기반 무결성 관리부
200 : 메모리 디바이스
210 : I/O 제어부
220 : 메모리
221 : 사설 메모리 영역
222-225 : 공용 메모리 영역의 영역 타입 0-3
230 : 암호화 관리부
231 : 암호화 엔진
232 : 키 처리 엔진

Claims (1)

  1. 보안 코어 기반의 메모리 보호 방법에 있어서,
    멀티 코어 중 일부를 별도의 보안 코어로 설정하고, 메모리의 보안 메모리 영역 상으로 접근하는 응용 프로그램의 쓰레드가 보안 코어 상에서만 동작하도록 강제화하는 단계;
    보안 접근 코드를 포함하는 쓰레드를 독립적으로 실행하는 단계;
    일반 코어 및 보안 코어에서 동작하는 개별 쓰레드에 대해서 상이한 가상 메모리 접근 절차를 제공하기 위해 차등화된 가상 메모리 테이블을 제공하는 단계; 및
    상기 응용 프로그램에 대한 무결성 검증을 수행하여 무결성 검증에 따라 메모리 디바이스 접근 I/O 개방 여부를 결정하는 단계;
    를 포함하는 보안 코어 기반의 메모리 보호 방법.
KR1020140010606A 2014-01-28 2014-01-28 보안 코어 기반의 메모리 보호 장치 및 그 방법 KR20150089694A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140010606A KR20150089694A (ko) 2014-01-28 2014-01-28 보안 코어 기반의 메모리 보호 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140010606A KR20150089694A (ko) 2014-01-28 2014-01-28 보안 코어 기반의 메모리 보호 장치 및 그 방법

Publications (1)

Publication Number Publication Date
KR20150089694A true KR20150089694A (ko) 2015-08-05

Family

ID=53886086

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140010606A KR20150089694A (ko) 2014-01-28 2014-01-28 보안 코어 기반의 메모리 보호 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR20150089694A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220164442A1 (en) * 2019-08-12 2022-05-26 Hewlett-Packard Development Company, L.P. Thread mapping

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220164442A1 (en) * 2019-08-12 2022-05-26 Hewlett-Packard Development Company, L.P. Thread mapping

Similar Documents

Publication Publication Date Title
EP3120291B1 (en) Rapid data protection for storage devices
US8572410B1 (en) Virtualized protected storage
US8332604B2 (en) Methods to securely bind an encryption key to a storage device
JP4982825B2 (ja) コンピュータおよび共有パスワードの管理方法
RU2557756C2 (ru) Администрирование защищенными устройствами
US20090046858A1 (en) System and Method of Data Encryption and Data Access of a Set of Storage Devices via a Hardware Key
US8566603B2 (en) Managing security operating modes
US20100058066A1 (en) Method and system for protecting data
US20120102564A1 (en) Creating distinct user spaces through mountable file systems
US20080181406A1 (en) System and Method of Storage Device Data Encryption and Data Access Via a Hardware Key
US8266449B2 (en) Security for storage devices
US20210216616A1 (en) Memory controller and storage device including the same
US10372628B2 (en) Cross-domain security in cryptographically partitioned cloud
US10032038B2 (en) File system support for rolling keys
TWI703469B (zh) 安全輸入/輸出裝置管理設備、方法及系統
US20130031376A1 (en) Removable storage device data protection
KR20090078551A (ko) 이동 저장 장치에서 호스트 인증 방법, 호스트 인증을 위한정보 제공 방법, 장치, 및 기록매체
EP1953668A2 (en) System and method of data encryption and data access of a set of storage devices via a hardware key
US20090327757A1 (en) Computer system for managing storage area state of a storage system
US20090307451A1 (en) Dynamic logical unit number creation and protection for a transient storage device
EP3757838B1 (en) Warm boot attack mitigations for non-volatile memory modules
US20150227755A1 (en) Encryption and decryption methods of a mobile storage on a file-by-file basis
US11941264B2 (en) Data storage apparatus with variable computer file system
US11977492B2 (en) Internal storage in cloud disk to support encrypted hard drive and other stateful features
US10592663B2 (en) Technologies for USB controller state integrity protection

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination