KR102183852B1 - 전자 장치의 무결성 검증을 위한 방법, 저장 매체 및 전자 장치 - Google Patents

전자 장치의 무결성 검증을 위한 방법, 저장 매체 및 전자 장치 Download PDF

Info

Publication number
KR102183852B1
KR102183852B1 KR1020130143323A KR20130143323A KR102183852B1 KR 102183852 B1 KR102183852 B1 KR 102183852B1 KR 1020130143323 A KR1020130143323 A KR 1020130143323A KR 20130143323 A KR20130143323 A KR 20130143323A KR 102183852 B1 KR102183852 B1 KR 102183852B1
Authority
KR
South Korea
Prior art keywords
virtual processor
electronic device
integrity
normal world
world virtual
Prior art date
Application number
KR1020130143323A
Other languages
English (en)
Other versions
KR20150059564A (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 KR1020130143323A priority Critical patent/KR102183852B1/ko
Priority to US14/536,940 priority patent/US9507941B2/en
Publication of KR20150059564A publication Critical patent/KR20150059564A/ko
Application granted granted Critical
Publication of KR102183852B1 publication Critical patent/KR102183852B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems

Abstract

본 발명의 실시 예에 따른 전자 장치의 무결성 검증 방법은, 전자 장치에 대한 노멀 월드(normal world) 가상 프로세서 및 시큐어 월드(secure world) 가상 프로세서를 인스턴스화하는 단계; 상기 시큐어 월드 가상 프로세서로 무결성 검증 에이전트를 실행하는 단계; 상기 노멀 월드 가상 프로세서로 시도되는 커널 모듈과 관련된 하나 이상의 미리 결정된 연산들을 상기 시큐어 월드 가상 프로세서로 트래핑(trapping)하는 단계; 및 상기 무결성 검증 에이전트를 사용하여 상기 트래핑된 연산의 실행 결과를 판정하는 단계를 포함한다.

Description

전자 장치의 무결성 검증을 위한 방법, 저장 매체 및 전자 장치{METHOD FOR INTEGRITY VERIFICATION OF ELECTRONIC DEVICE, MACHINE-READABLE STORAGE MEDIUM AND ELECTRONIC DEVICE}
본 발명은 전자 장치의 소프트웨어 시스템 보안에 관한 것이다.
공격과 보안 침해에 의해 야기된 피해와 손실은 이동형 및 임베디드 시스템들을 포함하는, 컴퓨터 플랫폼들에 대한 보안 및 신뢰 시스템을 개발하도록 관심을 집중시켰다.
컴퓨터 공격 및 보안 침해는 타겟 시스템 내부에서 구동되는, 사용자 프로세스들 또는 시스템 관리 데몬들(daemons)과 같은 주요 프로그램들 또는 운영 시스템(OS) 커널에 대한 비인가된 변경(unauthorized modification)을 수행하는 것에 의해 타겟 디바이스들에게 심각한 영향을 줄 수 있다. 특히, OS 커널의 변경은 악성 공격자들로 하여금 전체 시스템에 자유롭게 액세스(unlimited access) 가능하게 할 수 있다.
이러한 문제점들은 구동 OS로부터 잘 분리되어 있지만 커널을 포함하는 타겟 시스템을 능동적으로 모니터링할 수 있는 비전형적인 해결책들을 개발할 필요성을 제공하며, 또한 필요한 메모리 보호를 제공함으로써 그것의 무결성을 보장할 필요가 있다.
본 발명의 적어도 하나의 실시 예는 종래 기술과 관련된 문제점들 및/또는 단점들 중의 적어도 하나를 적어도 부분적으로 해결, 경감 또는 제거한다.
본 발명의 적어도 하나의 실시 예는 커널을 포함하는 타겟 시스템을 능동적으로 모니터링하고, 메모리 보호를 제공하며, 그것의 무결성을 보장한다.
본 발명의 실시 예에 따른 전자 장치의 무결성 검증 방법은, 전자 장치에 대한 노멀 월드(normal world) 가상 프로세서 및 시큐어 월드(secure world) 가상 프로세서를 인스턴스화하는 단계; 상기 시큐어 월드 가상 프로세서로 무결성 검증 에이전트를 실행하는 단계; 상기 노멀 월드 가상 프로세서로 시도되는 커널 모듈과 관련된 하나 이상의 미리 결정된 연산들을 상기 시큐어 월드 가상 프로세서로 트래핑(trapping)하는 단계; 및 상기 무결성 검증 에이전트를 사용하여 상기 트래핑된 연산의 실행 결과를 판정하는 단계를 포함한다.
본 발명의 실시 예에 따른 무결성 검증을 수행하는 전자 장치는, 전자 장치에 대해 실행되도록 구성된 노멀 월드 가상 프로세서 및 시큐어 월드 가상 프로세서: 상기 시큐어 월드 가상 프로세서로 실행하도록 구성된 무결성 검증 에이전트; 및 상기 노멀 월드 가상 프로세서로 실행하도록 구성된 노멀 월드 운영 시스템을 포함하고, 상기 노멀 월드 가상 프로세서는 상기 노멀 월드 가상 프로세서에 대해 시도되는 커널 모듈과 관련된 하나 이상의 미리 결정된 연산들을 상기 시큐어 월드 가상 프로세서로 트래핑하도록 구성되고, 상기 시큐어 월드 가상 프로세서는 상기 무결성 검증 에이전트를 사용하여 상기 타겟 디바이스에 대한 상기 트래핑된 연산들의 실행 결과를 판정하도록 구성된다.
타겟 장치들의 능동 모니터링, 메모리 보호 및 무결성 검증을 위한 본 발명은 하드웨어, 소프트웨어, 펌웨어, 또는 그 조합으로 구현될 수 있다. 그러므로, 여기서 사용되는 용어들 "기능" 또는 "모듈"은 기술된 특징을 구현하기 위한 하드웨어, 소프트웨어, 및/또는 펌웨어를 지칭한다. 예시적 일 구현에서, 본 발명은 컴퓨터의 프로세서에 의해 실행될 시에 상기 컴퓨터를 제어하여 단계들을 수행하도록 하는, 컴퓨터 실행 가능한 인스트럭션들(instructions)을 저장한 컴퓨터 판독 가능한 매체를 사용하여 구현될 수 있다. 본 발명을 구현하는데 적합한 예시적 컴퓨터 판독 가능한 매체는 비-일시적 컴퓨터-판독가능 매체, 예컨대 디스크 메모리 디바이스, 칩 메모리 디바이스, 프로그래머블 로직 디바이스, 및/또는 특정 용도의 집적회로(application specific integrated circuit)를 포함한다. 또한, 본 발명을 구현하는 컴퓨터 판독 가능한 매체는 단일의 디바이스 또는 컴퓨팅 플랫폼에 위치되거나 복수의 디바이스들 또는 컴퓨팅 플랫폼들에 걸쳐 분산될 수 있다.
본 발명의 적어도 하나의 실시 예는 커널을 포함하는 타겟 시스템을 능동적으로 모니터링하고, 메모리 보호를 제공하며, 그것의 무결성을 보장한다.
도 1은 본 발명의 일 실시예에 따른 전자 장치를 도시한다.
도 2는 프로세서의 소프트웨어 구성을 나타낸다.
도 3은 ARM v7 아키텍처에서 CP 레지스터에 대해 기록하는데 사용되는 MCR 인스트럭션들의 샘플 인코딩을 나타낸다.
도 4는 페이지 테이블을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시 예에 따른 무결성 검증 방법을 설명하기 위한 흐름도이다.
도 6은 본 발명의 다른 실시 예에 따른 무결성 검증 방법을 설명하기 위한 흐름도이다.
도 7은 본 발명의 또 다른 실시 예에 따른 무결성 검증 방법을 설명하기 위한 흐름도이다.
도 8은 본 발명의 또 다른 실시 예에 따른 무결성 검증 방법을 설명하기 위한 흐름도이다.
도 9 및 10은 도 8을 설명하기 위한 도면들이다.
도 11은 본 발명의 또 다른 실시 예에 따른 무결성 검증 방법을 설명하기 위한 흐름도이다.
도 12는 페이지 테이블 및 검증 테이블의 일 예를 나타낸다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시 예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하여 상세하게 설명한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 발명에 따른 전자 장치는, 통신 기능이 포함된 장치일 수 있다. 예를 들면, 전자 장치는 스마트 폰(smartphone), 태블릿 PC(tablet personal computer), 이동 전화기(mobile phone), 화상 전화기, 전자북 리더기(e-book reader), 데스크탑 PC(desktop personal computer), 랩탑 PC(laptop personal computer), 넷북 컴퓨터(netbook computer), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라(camera), 웨어러블 장치(wearable device)(예: 전자 안경과 같은 HMD(head-mounted-device), 전자 의복, 전자 팔찌, 전자 목걸이, 전자 앱세서리(appcessory), 또는 스마트 와치(smart watch) 중의 적어도 하나를 포함할 수 있다.
전자 장치는 통신 기능을 갖춘 스마트 가전 제품(smart home appliance)일 수 있다. 스마트 가전 제품은, 예를 들자면, 텔레비전, DVD(digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자 레인지, 세탁기, 공기 청정기, 셋톱 박스(set-top box), TV 박스(예를 들면, 삼성 HomeSyncTM, 애플TVTM, 또는 구글 TVTM), 게임 콘솔(game consoles), 전자 사전, 전자 키, 캠코더(camcorder), 또는 전자 액자 중의 적어도 하나를 포함할 수 있다.
전자 장치는 각종 의료기기(예: MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 초음파기), 네비게이션(navigation) 장치, GPS 수신기(global positioning system receiver), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트(infotainment) 장치, 선박용 전자 장비(예: 선박용 항법 장치 및 자이로 콤파스 등), 항공 전자기기(avionics), 또는 보안 기기 중의 적어도 하나를 포함할 수 있다.
전자 장치는, 통신 기능을 포함한 가구(furniture) 또는 건물/구조물의 일부, 전자 보드(electronic board), 전자 사인 입력 장치(electronic signature receiving device), 프로젝터(projector), 또는 각종 계측 기기(예: 수도, 전기, 가스, 또는 전파 등) 중의 적어도 하나를 포함할 수 있다.
전자 장치는 전술한 다양한 장치들 중 하나 또는 그 이상의 조합일 수 있다.
도 1은 본 발명의 일 실시예에 따른 전자 장치를 도시한다.
전자 장치(100)는 버스(110), 프로세서(120), 메모리(130), 입출력 인터페이스(140), 표시부(150), 통신부(160), DMA 컨트롤러(Direct Memory Access controller, 170) 및 저장부(180)를 포함할 수 있다.
버스(110)는 전술한 구성 요소들을 서로 연결하고, 전술한 구성 요소들 간의 통신(예: 제어 메시지)을 전달하는 회로일 수 있다.
프로세서(120)는 버스(110)를 통해 다른 구성 요소로부터 데이터 또는 신호를 수신하여, 수신된 데이터 또는 신호를 해독하고, 해독된 데이터 또는 신호에 따른 연산이나 데이터 처리를 실행할 수 있다.
프로세서(120)는 MMU(Memory Management Unit, 122)를 포함할 수 있으며, MMU(122)는 가상 주소를 물리적 주소로 변환하며, 메모리 보호, 캐시 관리, 버스 중재 등의 역할을 담당할 수 있다.
메모리(130)는, 상기 프로세서(120) 또는 다른 구성 요소로부터 수신되거나 프로세서(120) 또는 다른 구성 요소에 의해 생성된 신호 또는 데이터를 저장할 수 있다. 메모리(130)는, 예를 들면, 커널, 적어도 하나의 어플리케이션 등의 프로그래밍 모듈들을 포함할 수 있다. 각 프로그래밍 모듈은 소프트웨어, 펌웨어, 하드웨어 또는 이들 중 적어도 둘 이상의 조합으로 구성될 수 있다.
입출력 인터페이스(140)는, 예를 들면, 사용자로부터 명령 또는 데이터를 수신하고, 버스(110)를 통해 프로세서(120) 또는 메모리(130)에 전달할 수 있다.
표시부(150)는 사용자에게 영상 또는 데이터 등을 표시할 수 있다.
통신부(160)는 다른 전자 장치(102, 104) 또는 서버(164)와 전자 장치(100) 간의 통신을 연결할 수 있다.
통신부(160)는 다른 전자 장치(102)와의 소정의 근거리 유무선 통신(예: Wifi(wireless fidelity), BT(Bluetooth) 또는 NFC(near field communication) 등)을 지원할 수 있다. 통신부(160)는 유무선 통신망(162)을 통한 다른 전자 장치(104) 또는 서버(164)와의 소정의 네트워크 통신(예: 인터넷(Internet), LAN(local area network), WAN(wire area network), 텔레커뮤니케이션 네트워크(telecommunication network), 셀룰러 네트워크(cellular network), 위성 네트워크(satellite network), USB(universal serial bus), RS-232(recommended standard 232) 또는 POTS(plain old telephone service) 등) 등을 지원할 수 있다.
다른 전자 장치(102, 104)의 각각은 전자 장치(100)와 동일한 장치(예: 같은 타입 및/또는 구성의 장치)이거나 다른 장치(예: 다른 타입 및/또는 구성의 장치)일 수 있다.
DMA(170)는 주변 장치들(입출력 인터페이스(140), 통신부(160) 등)이 프로세서의 개입 없이 메모리(130)에 직접 접근하여 읽거나 쓸 수 있도록 한다.
메모리(130)는 프로세서(120)에 의해 실행되는 프로그래밍 모듈들을 임시적으로 저장하는데 사용되고, 저장부(180)는 프로그래밍 모듈들을 영구적으로 저장하는데 사용될 수 있다. 예를 들어, 메모리(130)는 RAM(random access memory) 등의 휘발성 메모리이고, 저장부(180)는 하드디스크 등의 비휘발성 메모리일 수 있다.
도 2는 프로세서의 소프트웨어 구성을 나타낸다.
프로세서(120)는 노멀 월드 가상 프로세서(200)(또는 노멀 월드) 및 시큐어 월드 가상 프로세서(250)(또는 시큐어 월드)를 포함하고, 노멀 월드 가상 프로세서(200)는 노멀 월드 커널(220)을 포함하는 보호될 노멀 월드 운영 시스템(210) 및 노멀 월드 어플리케이션(230)을 포함하고, 시큐어 월드 프로세서(250)는 시큐어 월드 커널(270)을 포함하는 시큐어 월드 운영 시스템(260), 시큐어 월드 어플리케이션(280) 및 무결성 검증 에이전트(290)를 포함한다.
노멀 월드 가상 프로세서(200)와 시큐어 월드 가상 프로세서(250) 사이의 하드웨어-기반 분리가 제공할 수 있다. ARM(Advanced RISC Machines) Holdings plc에 의해 제공된 ARM 아키텍처와 같은 프로세서 아키텍처들은 이러한 분리를 제공한다. ARM에서, 이러한 특징은 ARM 트러스트 존 기술로 알려져 있다. ARM의 트러스트 존 기술은 2개의 영역들, 즉 "시큐어 월드(secure world)" 및 "노멀 월드(normal world)"(또는 "비-시큐어 월드")로 단일의 물리적 프로세서 코어 상의 코드 실행을 분리시키는 하드웨어-기반 분리를 가능하게 한다. 시큐어 월드 가상 프로세서는 보안 감지 연산을 위한 것으로 의도되고, 노멀 월드 가상 프로세서는 다른 연산들을 위한 것으로 의도된다.
노멀 월드 가상 프로세서(200)에는 노멀 월드 커널을 포함하는 보호될 노멀 월드 운영 시스템(210)이 배치되고, 시큐어 월드 가상 프로세서(250) 내에는 시큐어 월드 커널을 포함하는 신뢰성 있는 시큐어 월드 운영 시스템(260) 및 신뢰성 있는 컴포넌트들(예: 무결성 검증 에이전트(290))이 배치된다. 이러한 배치는 다양한 아키텍처들로 구현될 수 있다. 본 예에서는 ARM 트러스트 존(TrustZone) 아키텍처를 사용하지만, 본 발명에 기술된 방법들 및 기술들은 현재 알려져 있거나 후에 개발될, 다른 프로세서로 구현될 수도 있다.
노멀 월드 운영 시스템(210)은 원칙적으로 안드로이드, 임베디드 리눅스, NetBSD와 같은 임의의 운영 시스템이거나, 또는 현재 알려져 있거나 후에 개발될 임의의 다른 운영 시스템일 수 있다. 노멀 월드 커널(220)은 장치 리소스들의 관리를 담당할 수 있다. 노멀 월드 커널(220)의 코드는 "특권 모드(privileged mode)"에서 실행될 수 있으며, 노멀 월드 커널(220)은 특권 인스트럭션들 및 보안 주요 연산들을 실행하도록 허락될 수 있다.
노멀 월드 가상 프로세서(200)는 비특권의 "사용자 모드"에서 실행되는 적어도 하나의 노멀 월드 어플리케이션(230)(예: 복수의 사용자 프로세스들 및/또는 데몬들)을 구비할 수 있으며, 노멀 월드 어플리케이션(230)은 특권 인스트럭션들 및 보안 주요 연산들을 실행하도록 허락되지 않을 수 있다.
이와 유사하게, 시큐어 월드 커널(270)의 코드는 특권 모드에서 실행될 수 있으며, 시큐어 월드 가상 프로세서(250)는 비특권의 사용자 모드에서 실행되는 적어도 하나의 시큐어 월드 어플리케이션(280)(예: 복수의 사용자 프로세스들 및/또는 데몬들)을 구비할 수 있다.
노멀 월드 가상 프로세서(200)로 시도되는 하나 이상의 미리 결정된 연산들, 예컨대 보안 주요 연산들 및 특권 인스트럭션들은 시큐어 월드 가상 프로세서(250)로 트래핑(trapping)된다. 예를 들어, 보안 주요 연산 또는 특권 인스트럭션의 트래핑은 노멀 월드 가상 프로세서(200)로부터 시큐어 월드 가상 프로세서(250)로 실행 컨텍스트(execution context)를 스위칭하는 것을 포함할 수 있다. 보안 주요 연산 또는 특권 인스트럭션은 노멀 월드 가상 프로세서(200)에서 구동되는 노멀 월드 커널이 아닌 시큐어 월드 가상 프로세서(250)에서 구동되는 무결성 검증 에이전트(290)에 의해 실행될 수 있다.
무결성 검증 에이전트(290)는 트래핑된 연산들의 실행 효과를 결정할 수 있다.
노멀 월드 가상 프로세서(200)로 구동되는 노멀 월드 커널(220)은 시큐어 월드 가상 프로세서(250)로 구동되는 무결성 검증 에이전트(290)로 미리 결정된 연산들 또는 인스트럭션들이 트래핑되지 않는다면, 미리 결정된 보안 주요 연산들 또는 특권 인스트럭션들을 실행할 수 없도록 변경될 수 있다. 예를 들어, 노멀 월드 커널(220)은 모든 특권 인스트럭션들이 메모리에 저장된 그것의 실행 가능한 바이너리로부터 제거되도록 변경될 수 있다. 예를 들어, 보안 특권 인스트럭션들은 MMU(Memory Management Unit)를 제어하는 인스트럭션들을 포함하며, 이에 한정되지 않는다.
변경된 실행 가능한 바이너리는 잠재적으로 악성인 변경, 예컨대 바이너리 내에 특권 인스트럭션들을 부가하는 비인가된 인스트럭션을 방지하여 판독 전용으로 마킹될 수 있다.
비특권 프로그램들인 노멀 월드 어플리케이션들(230)(예: 사용자 프로세스들)은 "특권-실행 네버(privileged-execute never)"로 메모리 매핑되어 있으며, 이에 따라 그들이 악성으로 변경되지 않는다면 특권 인스트럭션들을 실행하도록 허락되지 않는다.
노멀 월드 커널(220)의 변경은 그것의 소스 코드를 직접 변경하거나 그것의 실행 가능한 바이너리를 변경하는 공지의 기술들 중의 어느 것을 사용하거나, 또는 바이너리 변환(binary translation)을 사용하여 행해질 수 있다.
노멀 월드 커널(220)이 보안 주요 연산들을 실행하기 위하여 요구되는 메모리 액세스를 얻는 것이 방지될 수 있다. 예를 들어, 보안 주요 연산들은 메모리 매핑을 정의하는 페이지 테이블들을 변경하거나 DMA(Direct Memory Access) 컨트롤러(170)를 변경하는 것을 포함할 수 있으며, 이에 한정되지 않는다. DMA 컨트롤러(170)는 어떤 메모리(130) 또는 메모리(130)의 어떤 영역이 주변 장치들에 의해 액세스될 수 있는지를 결정할 수 있다. 공격들은 주변 장치들을 사용하여 노멀 월드 가상 프로세서(200)의 데이터 또는 코드를 변경하도록 하기 위해 DMA 컨트롤러(170)를 활용하는 것을 시도할 수 있다.
미리 결정된 정책을 위반하는 보안 주요 연산 또는 특권 인스트럭션을 실행하는 시도를 무결성 검증 에이전트(290)가 검출하는 경우, 노멀 월드 커널(220)의 무결성 위반을 검출하는 것을 포함할 수 있다. 예를 들어, 상기 정책은 노멀 월드 커널(220)의 실행 가능한 바이너리들에 대한 변경들을 허용하지 않는 것, 노멀 월드 커널(220)의 메모리 액세스 보호를 디스에이블링(disabling)하는 것, 또는 노멀 월드 커널(220)의 주요 데이터 구조들을 판독 전용으로 변경하는 것을 포함할 수 있으며, 이에 한정되지 않는다.
본 발명의 적어도 하나의 실시 예는 노멀 월드 커널(220) 또는 그 일부를 변경하는 것을 시도하는 보안 공격들을 방지한다.
본 발명의 적어도 하나의 실시 예는 노멀 월드 커널(220)의 무결성 상태에 관한 최신 레포트를 생성하는 것에 의해 악성 공격들을 검출하는 기술들 및/또는 방법들을 포함할 수 있다.
본 발명의 적어도 하나의 실시 예는 그들이 실행되기 이전에 노멀 월드 커널(220)의 무결성을 손상시키는 것을 야기할 수 있는 인스트럭션들 및/또는 연산들을 방지하는 것을 포함할 수 있는 기술들 및/또는 방법들을 포함할 수 있다.
본 발명의 적어도 하나의 실시 예는 악성 공격들의 검출 또는 방지나 양쪽 모두의 조합에 관한 기술들 및/또는 방법들을 포함할 수 있다.
본 발명의 적어도 하나의 실시 예는 다음의 능력들 중의 하나 이상을 포함하는 방법들, 모듈들, 및/또는 장치들을 제공할 수 있다.
1) 보안 주요 연산들 및 특권 인스트럭션들을 포함한 노멀 월드 주요 이벤트들의 능동 모니터링과, 노멀 월드 운영 시스템(210)의 상태에 대한 그들의 영향을 인식하는 것.
2) 검증된 노멀 월드 어플리케이션들(230) 또는 프로그램들은 그것이 로딩된 이후에 조작될 수 없다는 것과 비검증된 노멀 월드 어플리케이션들(230)은 특권 인스트럭션들 또는 보안 주요 연산들을 실행할 수 없다는 것을 시큐어 월드 가상 프로세서(250)가 확인할 수 있도록 하는 노멀 월드 메모리 레이아웃에 대한 완전한 제어. 이러한 능력은 "메모리 보호"라고 기재된다.
3) 미리 결정된 보안 정책에 기초할 수 있는 무결성 검증. 하나 이상의 보안 정책이 위반되었는지를 검증하기 위해 사용되는 입력 이벤트들은 전술한 능동 모니터링 및/또는 메모리 보호에 기인할 수 있다.
무결성 검증(또는 측정) 에이전트(290)는 시큐어 월드 가상 프로세서(250)의 일부로서 실행될 수 있고, 노멀 월드 운영 시스템(200)은 노멀 월드에서 구동 또는 실행된다.
시큐어 월드 가상 프로세서(250)는 메모리(130)에 로딩된 바이너리의 체크섬(checksum)을 계산하는 것을 통하여 노멀 월드 커널(220)의 로드-시간(load-time) 검증을 행할 수 있다(이 프로세스는 정적 측정(static measurement)이라고 할 수 있다).
또한 로드-시간 검증은 그 바이너리들로부터 모든 특권 인스트럭션들을 제거하는 것에 의해 노멀 월드 커널(220)이 의도된 보호를 위해 적절히 변경되는 것을 검증하는 것으로 확대될 수 있다.
범용 시스템을 검증하기 위하여 분리되거나 보호된 컴포넌트를 사용하는 아이디어는 Grafinkel 등에 의한 "Terra: A Virtual Machine-Based Platform for Trusted Computing", SOSP (2003)에 기술되어 있으며, 이 내용은 참조에 의해 그 전체가 본 명세서에 포함된다. 직관적으로, 정적 측정은 부팅 프로세스(boot-up process) 동안의 노멀 월드 커널(220)의 무결성만을 보장하며, 노멀 월드 운영 시스템(210)이 부팅되어 잠재적 공격자들과의 상호작용을 개시한 이후의 노멀 월드 커널의 무결성을 보장할 수는 없다.
노멀 월드 커널(220)은 노멀 월드 가상 프로세서(200)로 특권 인스트럭션들을 실행하는 유일한 소프트웨어(또는 어플리케이션 내지 프로그램)이다. 또한, 노멀 월드 커널(220)은 혼합된 기록 가능 및 실행 가능 페이지들에 의존하지 않을 수 있다. 실험적 평가를 통해, 다수의 최근 버전의 운영 시스템 커널들(예: 안드로이드 및 리눅스)이 기록 가능한 데이터로부터 실행 가능한 코드를 분리시키는 것에 의해 이 가정을 따른다는 것을 발견하였다.
본 발명의 적어도 하나의 실시 예는 노멀 월드 운영 시스템(210) 내부의 코드를 은밀하게 실행하는 것을 목적으로 하는 모든 공격들을 고려한다. 이와 관련하여, 은밀하다는 것은 시큐어 월드 가상 프로세서(250)에서 구동되는 무결성 검증 에이전트를 업데이트하는 것(즉, 무결성 검증 에이전트의 실행) 없이도 코드가 실행되는 것을 의미한다. 이러한 공격들은 신규의 검증되지 않은 코드 바이너리들을 로딩하거나 또는 그에 앞서 맵핑되어 이미 메모리에 존재하는 코드 바이너리들을 변경하는 것에 의해 행해질 수 있다. 본 발명의 적어도 하나의 실시 예는 양쪽 모두의 경우들을 처리하도록 설계된다.
본 발명의 적어도 하나의 실시 예는 노멀 월드 운영 시스템(210) 내부의 보안 주요 데이터를 변경하는 것을 목적으로 하는 모든 공격들을 또한 고려할 수 있다. 이와 관련하여, 보안 주요 데이터는 무결성 검증 에이전트(290)가 그것의 변경을 모니터링하도록 미리 정의되어야 한다.
공격자들은 그들이 노멀 월드 커널을 제어할 수 있게 하는 커널 취약점들을 포함하는, 기존의 시스템 취약점을 사용하여 노멀 월드 운영 시스템(210)에 침투할 수 있다. 그것들이 신규의 코드를 로딩하는 것 또는 기존 코드를 변경하는 것을 포함하고 있다는 것을 고려하여, 본 발명의 적어도 하나의 실시 예는 이들 취약점들의 임의의 것을 검출 및/또는 방지하는 것을 보장한다.
그럼에도 불구하고, 코드를 변경하거나 로딩하는 것을 필요로 하지 않는 특수한 타입의 공격들이 존재하는데, 이것은 리턴-오리엔티드(return-oriented) 공격이다. 이러한 공격들은 오로지 데이터 취약점들에 의존하기 때문에, 본 발명의 적어도 하나의 실시 예는 리턴-오리엔티드 공격들을 검출할 수 없지만, 이러한 공격들이 시큐어 월드에서 무결성 측정 에이전트에 의해 측정됨 없이 새로운 어플리케이션들(예컨대, 악성 앱)을 로딩함으로써 능동 모니터링과 메모리 보호 프레임워크를 무너뜨리지 못할 것이라는 것을 보장한다.
본 발명의 적어도 하나의 실시 예는 ARM 트러스트 존에 기초하고 있다. 이것이 더 강한 하드웨어-기반 보호를 제공한다는 사실에도 불구하고, 그것은 측정 타겟(노멀 월드 운영 시스템)을 밀접하게 제어하는 능력을 제한하게 된다. 이하, ARM 트러스트 존 기반의 무결성 모니터링을 사용하는 실시 예들에서 능동 모니터링 및 메모리 보호를 구현하는 것에서 직면하는 주된 문제들 및 제한 사항들을 논의한다.
1) 트러스트 존에 의해 제공된 메모리 보호: 트러스트 존 기술의 주된 목적은 보안 주요 애셋들(시큐어 월드에 속하는 메모리 영역들 및 주변 기기)이 노멀 월드에 의해 액세스되는 것을 방지하는 하드웨어 분리 환경을 생성하는 것이다. 그러나, 이러한 분리는 원칙적으로 두 월드들 중의 하나에게 그 자신의 리소스들에 대한 완전한 제어를 부여하게 된다. 따라서, 노멀 월드 커널은 자신에게 할당된 물리적 메모리에 대한 완전한 제어를 가지게 되고, 이것은 MMU(Memory Management Unit)를 완전하게 구성하는 것과 자신의 맵핑된 메모리 페이지들에 대한 액세스 허용들(예컨대, 판독 전용, 기록 가능, 실행 가능)을 할당하는 것을 포함한다. 직관적으로, 이러한 아키텍처는 시큐어 월드 컴포넌트들이 노멀 월드에 속하는 주요 메모리 영역들을 모니터링하고 보호하는데 문제들을 야기한다.
2) 트러스트 존에서의 인터럽트들 및 익셉션(exception): 트러스트 존은 시큐어 월드 가상 프로세서로 하여금 시큐어 월드 가상 프로세서에 의해 처리될 일련의 이벤트들을 선택할 수 있게 하지만, 이들 이벤트들은 외부의 인터럽트들(IRQ들 또는 FIQ들) 및 특정 타입의 익셉션들(예컨대, 외부 데이터 어보트들(aborts))로 제한된다. 그러나, 다른 타입의 익셉션들 및 주요 이벤트들(예: 정규 데이터 어보트 익셉션들, 또는 시스템 호출들을 위해 사용되는 감시 모드 호출들)은 시큐어 월드 가상 프로세서로 트래핑되도록 구성될 수 없으며, 노멀 월드 가상 프로세서에 의해 직접 처리된다. 직관적으로, 이러한 이벤트들은 노멀 월드의 무결성 상태에 영향을 미칠 수 있다. 이들 이벤트들이 시큐어 월드 가상 프로세서에 의해 트래핑되지 않는 경우, 이러한 무결성에 대한 영향은 무결성 검증 에이전트에 의해 간과될 수 있다.
본 발명의 적어도 하나의 실시 예는 주요 이벤트들을 시큐어 월드 가상 프로세서(250)로 트래핑하는 것에 의해 노멀 월드 가상 프로세서(200)의 능동 모니터링을 허용한다. 또한, 이 능동 모니터링 기술을 사용하여 노멀 월드 가상 프로세서(200)의 가상 메모리 맵핑에 대한 제어를 가짐으로써, 가상 메모리 액세스 허용 플래그들을 사용하는 노멀 월드 메모리 영역의 완전한 보호를 제공할 수 있도록 한다.
ARM v7 아키텍처를 기반으로 하는 본 발명의 적어도 하나의 실시예와 관련하여, ARM v7 프로세서의 3개의 아키텍처 원리들에 대한 배경 기술을 짧게 언급하도록 한다. 전술한 바와 같이, 본 발명의 방법들 및 기술들은 본 예에서 사용된 ARM v7 이외에 현재 알려져 있거나 후에 개발될 임의의 프로세서 아키텍처들에 구현될 수 있다는 것이 이해될 것이다.
1) ARM 코프로세서 지원: ARM v7 아키텍처는 ARM v7 프로세서의 기능을 확장하기 위해 코프로세서들을 지원한다. 코프로세서 인스트럭션들은 16개의 코프로세서들(0 내지 15)에 대한 액세스를 제공한다. 코프로세서 15(124, CP15)는 대부분의 프로세서 및 메모리 시스템 특징들(예컨대, MMU, 인터럽트 벡터 핸들러, 캐싱(caching), 수행 모델들)을 제어하는 시스템 제어 레지스터들을 제공한다.
2) CP15 코프로세서(124)에 대한 제어된 액세스(Controlled access): 판독 및 기록을 위한 ARM v7 CP15(124)로의 액세스는 특수 인스트럭션들(예컨대, MCR(Move from register to coprocessor) 및 LDC)을 통해 행해질 수 있다. 이것은 특권 소프트웨어 또는 어플리케이션(예: 커널 코드)로부터만 일어나도록 제한된다. 또한, ARM v7 가상 메모리 시스템 아키텍처는 규정된 세트의 메모리 페이지들만이 PXN(Privileged Non eXecute) 액세스 허용을 사용하여 특권 모드에서 실행되도록 허용된다.
3) 정렬(Aligned) 네이티브 코드: ARM 인스트럭션 세트(썸(thumb) 또는 암(arm))는 32-비트 또는 16-비트 정렬된 단일 바이너리 인스트럭션들의 시퀀스로 이루어진 네이티브 코드로 구성된다. 각 바이너리 인스트럭션은 하나의 32-비트 또는 16-비트 바이너리 워드의 오피코드(opcode) 및 오퍼랜드(operand)들을 포함한다.
능동 모니터링은 다음의 기본 원리들로 요약될 수 있다:
노멀 월드는 특정 메모리 영역들만이(가상 메모리 액세스 제어에 의해 규정된) 특권 코드를 실행할 수 있도록 초기화된다. 이것은 신뢰적으로 미리 구성된 노멀 월드 운영 시스템(210)의 초기 이미지를 로딩하는 것에 의해 행해질 수 있다.
이들 특권 메모리 페이지들은 비-기록 가능으로 마킹되고, 특정 특권 연산들(예를 들어, ARM v7 아키텍처의 CP15(124)의 주요 레지스터들을 변경하는 인스트럭션들)을 행하는 어떠한 단일 인스트럭션도 포함하지 않도록 면밀히 점검되며, 노멀 월드 가상 프로세서(200)가 이러한 인스트럭션들을 구동하는 것은 불가능하게 된다. 따라서, 노멀 월드 커널(220)은 이들 인스트럭션들에 의해 제어되는 프로세서 기능들(예: ARM v7 아키텍처의 특정한 주요 CP15 레지스터들에 의해 제어되는 기능들)을 변경할 수 없게 된다.
이들 주요 인스트럭션들은 전체적으로 노멀 월드 가상 프로세서(200)의 가상 메모리 액세스 제어를 제어하는 유일한 방법일 수 있다.
능동 모니터링 및 메모리 보호 프레임워크의 예시적 구현은 다음 스텝들 중의 하나 이상을 사용하여 구현된다.
1) 전자 장치(100)를 초기화한 이후에, 노멀 월드의 가상 메모리 맵은 인터럽트들 및 익셉션들 처리 벡터들을 포함하는 특권 코드 페이지들이 비-기록 가능으로 마킹되도록(노멀 월드 가상 프로세서 또는 시큐어 월드 가상 프로세서에 의해) 구성될 수 있다.
2) 커널 또는 사용자 프로세스들에 속하는 모든 다른 노멀 월드 맵핑된 페이지는 그 후 변경되더라도 노멀 월드의 상태를 변경하는 특권 인스트럭션들(예를 들어, ARM v7 CP15(124)의 특정한 보안 주요 레지스터들에 액세스하는 것)을 실행하는 것이 허용되지 않도록 PXN 페이지들로 마킹될 수 있다.
3) 노멀 월드 메모리 레이아웃 및 액세스 제어를 정의하기 위해 사용되는, 모든 페이지 테이블들은 비-기록 가능으로 마킹될 수 있다. 따라서, 페이지 테이블들에 대한 임의의 변경들은 데이터 어보트 익셉션을 야기하게 될 것이다. 이들 페이지 테이블들은 ARM v7 CP15 변환 테이블 베이스 레지스터들(TTBRs), 또는 다른 아키텍처들에 대한 유사한 기능을 가진 임의의 다른 레지스터에 의해 지시될 수 있다.
4) 비-기록 가능한 커널 페이지들은 시큐어 월드 가상 프로세서(250)에 대한 호출(예: SMC(Secure Monitor Call) 인스트럭션)이 보안 주요 연산들 및 특권 인스트럭션들(예: 데이터 어보트 익셉션 핸들러, 인스트럭션 어보트 핸들러, 페이지 테이블에 대한 기록들, 및 CP15 레지스터 기록들)을 대체하도록 변경될 수 있다. 따라서, 모든 이들 보안 주요 연산들 및 특권 인스트럭션들은 시큐어 월드 가상 프로세서(250)에 의해 처리되게 된다.
5) 시큐어 월드는 주요 이벤트들을 점검하고 그들을 무결성 검증 에이전트로 전달함으로써 시스템의 무결성 상태에 대한 그들의 영향을 평가할 수 있다. 트래핑된 이벤트가 페이지 테이블 기록인 경우, 시큐어 월드는 그것이 미리 결정된 보안 정책을 위반하지 않거나, 또는 스텝들 1-4에 의해 정의된 연산들 중의 임의 연산으로 돌아가지 않는다는 것을 확인한 이후에, 노멀 월드 커널(220)을 대신하여 필요로 하는 페이지 테이블 변경을 행하게 된다(미리 결정된 보안 정책은 원래의 커널 페이지들 또는 임의 페이지 테이블들에 대한 기록 액세스를 제공하는 것을 금지하는 것을 포함할 수 있다. 그것은 또한 특권 실행 가능한 페이지들의 맵핑을 방지할 수도 있다).
6) 무결성 검증 에이전트(290)는 노멀 월드 메모리 맵 및/또는 필요한 보안 정책의 상태에 관한 정보를 저장하기 위해 컴퓨터 판독 가능한 매체(예를 들어, 휘발성 또는 비휘발성 메모리)를 사용할 수 있다. 예시적 구현에서, 무결성 검증 에이전트는 이 페이지에 대한 아이디 기록들(또는 대응하는 페이지 테이블 항목들에서의 메모리 맵핑을 변경하는 것)이 보안 정책을 위반했는지의 여부를 검출할 수 있도록 하기 위해 노멀 월드의 매 페이지의 상태를 마킹한 비트맵을 저장할 수 있다.
이들 스텝들은 노멀 월드 커널(220)의 능동 모니터링과 커널 메모리 보호 모두를 달성할 수 있게 한다. 스텝들 1 및 2는 메모리(130)의 인스트럭션들을 맵핑하는 것에 의해 또는 특권을 가진 이미-맵핑된 인스트럭션들 중의 어느 것을 변경하는 것에 의해, 노멀 월드 내부에서 구동되는 잠재적인 악성 소프트웨어가 특권 인스트럭션을 실행하는 것을 방지한다. ARM 네이티브 코드가 32-비트 또는 16-비트 인스트럭션들로만 이루어진다는 사실은 워드 바이 워드로 실행 가능한 특권 페이지들을 스캔하고 인스트럭션들 중의 어느 것도 주요 레지스터에 액세스하지 않음을 확인하는 것을 실현 가능하게 한다.
도 3은 ARM v7 아키텍처에서 CP 레지스터에 대해 기록하는데 사용되는 MCR 인스트럭션들의 샘플 인코딩을 나타낸다. CP 레지스터들은 CP 넘버 및 4개의 다른 파라미터들, 즉 CRn, CRm, opc1, 및 opc2에 의해 정의된다. opc1 및 opc2는 op 코드들을 나타내고, CRn 및 CRm은 코프로세서 레지스터들을 나타내고, Rt는 ARM 소스 레지스터들을 나타내고, coproc는 코프로세서의 이름을 나타내고, cond는 선택적 조건 코드(optional condition code)를 나타낸다.
어떤 인스트럭션도 이 특정 레지스터에 대한 MCR을 매칭하지 않도록 하기 위해 특권 실행 가능한 페이지들의 모든 32-비트(정렬된) 값들이 점검되는 경우, 이 레지스터가 노멀 월드 프로세서(200)에 의해 절대 변경되지 않는다는 것을 보장할 수 있다. 본 발명의 적어도 하나의 실시 예에서 타겟으로 하는 주요 레지스터들은 특히 MMU를 디스에이블링하고, 인터럽트 벡터 핸들러를 재배치하고, 가상 처리 변환 테이블들의 베이스 어드레스를 재배치하는 것들이다.
스텝 3는 메모리 보호를 보장한다. ARM v7 아키텍처에서, 페이지 테이블들의 베이스를 지시하는 TTBR들은 CP15(124)의 일부이다. TTBR들은 (스텝 2에서 기술된 바와 같이) 노멀 월드 커널에 의해 변경되는 것이 금지되는 그들 레지스터들 사이에서 마킹된다. 따라서, 노멀 월드는 페이지 테이블들로서 특정 물리적 메모리를 사용하는 것으로 제한되게 된다. 초기화 코드는 이 물리적 메모리(페이지 테이블들)를 비-기록가능한 것으로 맵핑하게 된다. 이에 따라 임의의 페이지 테이블 업데이트들은 데이터 어보트를 야기하게 된다. 모든 데이터 어보트 익셉션들은 (스텝 4에 논의되는 바와 같이) 시큐어 월드 가상 프로세서(250)로 트래핑되기 때문에, 모든 페이지 테이블 변경들은 실제로 노멀 월드에서 발생하기 이전에 시큐어 월드에 의해 점검된다.
스텝 4는 필요로 하는 능동 모니터링을 보장한다. ARM v7 아키텍처에서, TTBR 값을 사용자 프로세스들 사이의 컨텍스트 스위치로 변경하는 것과 같은 주요 이벤트들은 노멀 월드 프로세서(200)에서 실행되는 것이 불가능하게 될 것이다. 따라서, 이 기능을 정확하게 실행시키는 유일한 방법은 노멀 월드 커널(220)이 "SMC" 인스트럭션을 호출하여 주요 연산이 시큐어 월드 프로세서(250)에 의해 처리되게 하는 것이다. 이 연산의 보안은 CP 레지스터 기록들 및 "SMC" 호출들 모두가 단일의 인스트럭션으로 구성된 원자적 연산들이라는 사실에 의해 지원된다. 동시에, 모든 무결성 체크들(예컨대, 신규 페이지 테이블들이 기록 가능한 특권 페이지들을 갖지 않음을 검증)은 노멀 월드의 영향이 미치지 않는 시큐어 월드에 의해 행해진다. 리턴-오리엔티드 공격에 의해 침범된 커널이라도 복합 코드의 중간을 통해 점핑하고 잠재적 노멀 월드 무결성 검증을 스킵하는 것에 의해 주요 상태들을 변경하지 않을 수 있다.
마지막으로, 스텝 5의 구현은 시큐어 월드는 능동 모니터링 능력들이 시스템의 수명동안 효력을 유지하는 것을 보장하는 무결성 검증의 단일 포인트가 된다는 것을 의미한다. 특권 연산들에 대한 적절한 무결성 체크들을 구현하는 것, 예컨대, 새롭게 맵핑된 프로세서들의 페이지 테이블들을 검증하고 MMU 또는 가상의 페이지 액세스 제어 보호들이 디스에이블되지 않았다는 것을 검증하는 것에 의해 시큐어 월드는 메모리 보호와 능동 모니터링 양쪽 모두가 노멀 월드를 위해 사용되고 있다는 것을 보장한다.
노멀 월드 가상 프로세서(200) 및 시큐어 월드 가상 프로세서(250)의 각각은 "ARM Security Technology, Building a Secure System using TrustZone Technology, ARM Whitepaper, ARM Limited (2009)"에 기술된 ARM 트러스트존 가상 프로세서들일 수 있으며, 이것의 내용은 참조에 의해 그 전체가 본 명세서에 포함된다. 전자 장치(100)는 노멀 월드 가상 프로세서(200) 및 시큐어 월드 가상 프로세서(250)를 사용하여 분리가 이루어질 수 있는 임의의 컴퓨팅 플랫폼일 수 있다. 이런 컴퓨팅 플랫폼들의 예들로는 서버, 데스크탑 컴퓨터, 스마트폰, PDA, 또는 태블릿 컴퓨터와 같은 이동 디바이스, 또는 전력 또는 수도 미터와 같은 가정용 또는 산업용 디바이스에 임베디드된 프로세서 및 관련 메모리를 포함할 수 있는 임베디드 시스템을 포함한다.
전술한 바와 같이, 노멀 월드 운영 시스템(210)은 노멀 월드 가상 프로세서(200)로 실행되고, 무결성 검증 에이전트(290)는 시큐어 월드 가상 프로세서(250)로 실행된다. 일정한 주요 연산들의 실행은 시큐어 월드 가상 프로세서(250)로 트래핑된다. 트래핑된 연산들의 예들로는 정규 데이터 어보트 익셉션 또는 시스템 호출들을 위해 사용된 감독 모드 호출들을 포함한다. 트래핑된 연산들은 시큐어 월드 가상 프로세서(250)로 실행된다. 무결성 검증 에이전트(290)는 시큐어 월드 가상 프로세서(250)로 트래핑된 연산들의 실행을 모니터링하여 전자 장치(100)의 무결성에 대한 트래핑된 연산들의 실행 결과들을 평가한다.
예를 들어, 전자 장치(100)는 스마트폰일 수 있으며, 사용자는 음성 호와 이메일 애플리케이션 사이에서 스위칭할 수 있다. 이러한 상황에서, 노멀 운영 시스템(210)은 CP15(124)에 대한 신규 값을 기록하여 프로세스들 사이를 스위칭할 수 있다. 전술한 바와 같이, CP15(124)에 대해 시도된 기록들은 검증을 위해 무결성 검증 에이전트(290)로 트래핑되어 전달된다. 무결성 검증 에이전트(290)는 CP15(124)에 기록된 값을 검토할 수 있다. 본 예에서, 상기 값은 프로세스 ID 또는 이메일 애플리케이션에 대한 메모리 위치일 수 있다. 프로세스 ID를 검증하기 위해, 무결성 검증 에이전트(290)는 허용된 프로세스들의 리스트를 서치하여 이메일 애플리케이션이 실행 허용되는지의 여부를 확인한다. 본 예에서, 이메일 애플리케이션이 실행 허용되는 것으로 가정되는 경우, 시큐어 월드 가상 프로세서(250)는 이메일 애플리케이션이 실행되게 할 수 있다.
다른 예에서, CP15(124)에 기록되기를 시도하는 프로세스 ID 또는 메모리 위치는 허용된 애플리케이션들의 리스트에 존재하지 않는 멀웨어(malware)에 대응할 수 있다. 이러한 상황에서, 시큐어 월드 가상 프로세서(250)는 멀웨어가 실행되는 것을 방지할 수 있다. 또한, 무결성 검증 에이전트(290)는 예를 들어 애플리케이션의 암호 서명을 사용하여 그 애플리케이션 또는 프로세스를 검증하기 위하여 외부 시스템과 협의할 수 있음에 유의해야 한다.
도 4는 페이지 테이블을 설명하기 위한 도면이다.
도 4의 (a)는 L1 메모리 맵핑을 나타내며, 전체 물리적 메모리(130)는 1MB 단위의 페이지들(132)로 나누어지고, 페이지 테이블(410)은 메모리(130)의 페이지들(132)을 가리키는 항목들(412)을 포함한다. 각 테이블 항목(412)은 해당 메모리 페이지(132)의 식별 정보(예: 메모리 페이지(132)의 물리적 주소의 일부 또는 전체, 메모리 페이지 번호 또는 ID 등)와 부가 정보(기록 가능 여부 등)를 포함할 수 있다.
도 4의 (b)는 L2 메모리 맵핑을 나타내며, 전체 물리적 메모리(130)는 16K나 4K 단위의 페이지들(134)로 나누어지고, 제2 페이지 테이블(430)은 메모리의 페이지들(134)을 가리키는 항목들(432)을 포함하고. 제1 페이지 테이블(420)은 제2 페이지 테이블(430)의 항목들(432)을 가리키는 항목들(422)을 포함한다. 제2 페이지 테이블(430)의 각 항목(432)은 해당 메모리 페이지(134)의 식별 정보(예: 메모리 페이지의 물리적 주소의 일부 또는 전체, 메모리 페이지 번호 또는 ID 등)와 부가 정보(기록 가능 여부 등)를 포함할 수 있다. 제1 페이지 테이블(420)의 각 항목(422)은 제2 페이지 테이블(430)의 해당 항목(432)의 식별 정보(예: 물리적 주소의 일부 또는 전체, 항목 번호 또는 ID 등)와 부가 정보(기록 가능 여부 등)를 포함할 수 있다.
도 5는 본 발명의 일 실시 예에 따른 무결성 검증 방법을 설명하기 위한 흐름도이다.
S110 단계는 타겟 장치인 전자 장치(100)에 대한 노멀 월드 가상 프로세서(200) 및 시큐어 월드 가상 프로세서(250)를 인스턴스화하는 단계이다. 이러한 인스턴스화는 시큐어 월드 운영 시스템(260) 및 노멀 월드 운영 시스템(210)의 순차적 부팅에 해당할 수 있다. 시큐어 월드 가상 프로세서(250)는 노멀 월드 가상 프로세서(200)로부터 분리되어 보호된다. 시큐어 월드 가상 프로세서(250)의 데이터 및 코드는 노멀 월드 가상 프로세서(200)에 의해 액세스 가능하지 않다. 노멀 월드 가상 프로세서(200)의 데이터 및 코드는 시큐어 월드 가상 프로세서(250)에 의해 액세스 가능하다.
노멀 월드 가상 프로세서(200)를 인스턴스화하는 것은 특권 코드 페이지들의 메모리 액세스 보호를 "기록 불가능"으로 정의하는 노멀 월드 가상 프로세서(200)의 가상 메모리 맵(virtual memory map)을 생성하는 것을 포함할 수 있다. 특권 코드 페이지는 벡터를 처리하는 인터럽트 또는 벡터를 처리하는 익셉션들을 포함할 수 있다.
노멀 월드 가상 프로세서(200)의 가상 메모리 맵은 비특권 코드 페이지들의 메모리 액세스 보호를 "PXN(rivileged execute never)"으로 정의함으로써 하나 이상의 비특권 코드 페이지들이 특권 코드 페이지에 의해 실행 가능한 보안 주요 연산 또는 특권 인스트럭션을 실행하는 것이 금지되도록 할 수 있다.
S120 단계는 노멀 월드 가상 프로세서(200)로 타겟 운영 시스템인 노멀 월드 운영 시스템(210)을 실행하는 단계이다.
S130 단계는 시큐어 월드 가상 프로세서(250)로 무결성 검증 에이전트(290)를 실행하는 단계이다.
S140 단계는 노멀 월드 가상 프로세서(200)로 시도되는 하나 이상의 미리 결정된 타입의 연산을 시큐어 월드 가상 프로세서(250)로 트래핑(trapping)하는 단계이다. 트래핑된 하나 이상의 미리 결정된 타입의 연산은 보안 주요 연산, 특권 인스트럭션, 노멀 월드 가상 프로세서(200)의 MMU에 의해 제공되는 가상 메모리 액세스 보호를 디스에이블하거나 변경하도록 작동 가능한 인스트럭션, 전자 장치(100)의 프로세서 또는 코프로세서와 연관된 하나 이상의 미리 결정된 레지스터들을 변경하도록 작동 가능한 인스트럭션, 전자 장치(100)와 연관된 코드 또는 주요 판독 전용 데이터(critical read-only data)를 변경하도록 작동 가능한 인스트럭션, 전자 장치와 연관된 DMA(Direct Memory Access) 컨트롤러(170)를 변경하도록 작동 가능한 인스트럭션, 정규 데이터 어보트 익셉션(regular data abort exception), 또는 시스템 호출들을 위해 사용된 감독 모드 호출을 포함할 수 있다. 트래핑된 하나 이상의 미리 결정된 연산들은 무결성 검증 에이전트를 디스에이블하거나, 변경하거나, 완화하도록 작동 가능한 인스트럭션을 포함할 수 있다.
하나 이상의 미리 결정된 연산들을 시큐어 월드 가상 프로세서(250)로 트래핑하는 것은 실행 컨텍스트를 노멀 월드 가상 프로세서(200)로부터 상기 시큐어 월드 가상 프로세서(250)로 스위칭함으로써 상기 연산이 노멀 월드에서 구동되는 운영 시스템이 아닌 시큐어 월드에서 구동되는 운영 시스템 또는 무결성 검증 에이전트(290)에 의해 실행되도록 할 수 있다.
노멀 월드 가상 프로세서(200)의 노멀 월드 운영 시스템(210)을 변경함으로써 상기 하나 이상의 미리결정된 연산들이 시큐어 월드 가상 프로세서(250)로 트래핑하는 호출들로 대체되고, 보안 주요 연산들을 트래핑하는 것은 시도된 기록들을 특권 코드 페이지로 트래핑하는 것일 수 있다.
노멀 월드 가상 프로세서(200)의 노멀 운영 시스템(210)은 그것의 소스 코드를 변경하는 것, 그것의 실행가능한 바이너리를 변경하는 것, 또는 바이너리 변환을 통해 변경될 수 있다.
S150 단계는 무결성 검증 에이전트를 사용하여 트래핑된 연산의 실행 결과를 판정하는 단계이다. 무결성 검증 에이전트(290)는 노멀 운영 시스템(210)의 정적 무결성 체크를 수행할 수 있다. 무결성 검증 에이전트(290)를 사용하여 트래핑된 연산의 실행 결과를 판정하는 것은 완화 조치(mitigation action)를 수행하는 것을 포함할 수 있다. 이러한 완화 조치는 트래핑된 연산의 실행을 거부하는 것, 보안 경고를 발행하는 것, 또는 상기 전자 장치(100)를 셧 다운시키는 것을 포함할 수 있다. 무결성 검증 에이전트(290)는 보안 정책을 사용하며, 완화 조치를 수행하는 것은 보안 정책을 위반하도록 작동할 수 있는 트래핑된 연산에 대한 응답으로 발생할 수 있다.
도 6은 본 발명의 다른 실시 예에 따른 무결성 검증 방법을 설명하기 위한 흐름도이다.
S210 단계는 시큐어 월드 운영 시스템(260)의 부팅 단계로서, 전자 장치(100)가 파워 온되면, 프로세서(120)는 시큐어 월드 운영 시스템(260)을 부팅할 수 있다.
S220 단계는 노멀 월드 운영 시스템(210)의 부팅 단계로서, 시큐어 월드 운영 시스템(260)의 부팅이 완료되면, 프로세서(120)는 노멀 월드 운영 시스템(210)을 부팅할 수 있다.
S230 단계는 메모리 페이지 마킹 단계로서, 노멀 월드 운영 시스템(210)의 부팅 동안 또는 그 이후에 프로세서(120)는 노멀 월드 운영 시스템(210)의 특정 메모리 페이지들을 그 액세스가 제한되도록 마킹한다. 예를 들어, 노멀 월드 운영 시스템(210)의 특정 메모리 페이지는 비-기록 가능, 노멀 월드의 상태를 변경하는 특권 인스트럭션들의 실행 금지 등으로 마킹될 수 있다. 이러한 마킹 또는 액세스 제한 정보는 노멀 월드 운영 시스템(210)에 대한 페이지 테이블 항목의 부가 정보에 기록되거나, 별도의 테이블 또는 가상 메모리 맵으로서 기록될 수 있다. 상기 별도의 테이블의 각 항목은 해당 페이지 테이블 항목에 대한 식별 정보와 액세스 제한 정보를 포함할 수 있다.
S240 단계는 액세스가 제한된 메모리 페이지의 액세스 확인 단계로서, 노멀 월드 운영 시스템(210)은 액세스가 제한된 메모리 페이지에 대한 연산(또는 인스트럭션)이 시도된 경우, 상기 연산을 무결성 검증 에이전트(290)로 트래핑한다.
S250 단계는 무결성 검증 에이전트(290)를 사용하여 트래핑된 연산을 검증하는 단계이다. 무결성 검증 에이전트(290)를 사용하여 트래핑된 연산의 실행 결과를 판정하는 것은 완화 조치를 수행하는 것을 포함할 수 있다.
도 7은 본 발명의 또 다른 실시 예에 따른 무결성 검증 방법을 설명하기 위한 흐름도이다.
S310 단계는 검증 테이블 생성 단계로서, 노멀 월드 운영 시스템(210)의 부팅 동안 또는 커널 모듈의 로딩 시도 이전에 프로세서(120)는 노멀 월드 운영 시스템(210)의 커널 모듈에 대한 검증 테이블을 생성한다. 예를 들어, 검증 테이블은 커널 모듈의 빌드 시 또는 그 이후에 생성될 수 있다.
검증 테이블의 각 항목은 해당 커널 모듈에 대한 식별 정보(예: 해당 메모리 페이지의 물리적 주소의 일부 또는 전체, 메모리 페이지 번호 또는 ID, 커널 모듈의 번호 또는 ID 등)와 해당 커널 모듈의 해쉬 값(즉, 검증 값)을 포함할 수 있다. 본 예에서는, 검증 값의 대표적인 예로서 해쉬 값을 예시하고 있으나, 검증 값은 해당 커널 모듈의 적어도 일부를 나타내는 데이터, 이러한 데이터를 미리 설정된 함수 또는 알고리즘을 이용하여 연산하거나 암호화한 값 등이 될 수 있다.
S320 단계는 노멀 월드 커널 모듈의 액세스 확인 단계로서, 노멀 월드 운영 시스템(210)은 커널 모듈의 로딩을 위한 연산이 시도된 경우, 상기 연산을 무결성 검증 에이전트(290)로 트래핑한다.
S330 단계는 무결성 검증 에이전트(290)를 사용하여 트래핑된 연산을 검증하는 단계이다. 무결성 검증 에이전트(290)는 노멀 월드 커널 모듈의 해쉬 값을 산출하고, 산출된 해쉬 값을 검증 테이블의 해당 해쉬 값과 비교한다. 무결성 검증 에이전트(290)는 노멀 월드 커널 모듈의 적어도 일부 데이터, 이러한 데이터를 미리 설정된 함수 또는 알고리즘를 이용하여 연산하거나 암호화한 값과 검증 테이블의 검증 값을 비교할 수 있다.
S340 단계는 검증 확인 단계이며, 트래핑된 연산의 검증이 성공한 경우 S350 단계에서 노멀 월드 커널 모듈이 로딩되고, 트래핑된 연산의 검증이 실패한 경우 S360 단계에서 전술한 완화 조치(예: 보안 경고의 발생)가 수행된다. 예를 들어, 무결성 검증 에이전트(290)는 표시부(150)에 경고 또는 커널 모듈의 로딩 실패를 알리는 메시지를 표시할 수 있다.
도 8은 본 발명의 또 다른 실시 예에 따른 무결성 검증 방법을 설명하기 위한 흐름도이고, 도 9 및 10은 도 8을 설명하기 위한 도면들이다.
S410 단계는 A 커널 모듈(520)의 로딩 시도 단계로서, 노멀 월드 커널(220) 또는 노멀 월드 어플리케이션(230)에 의해 A 커널 모듈(520)의 로딩이 시도된다. 예를 들어, 노멀 월드 커널(220)의 insmod 명령이 수행될 수 있다. insmod 명령은 커널 모듈의 로딩을 지시하는데 사용되며, A 커널 모듈(520)의 식별 정보 또는 A 커널 모듈(520)의 코드를 포함할 수 있다.
S420 단계는 커널 모듈 인증 기능을 실행하는 단계로서, A 커널 모듈(520)의 로딩이 시도됨(예: insmod 명령)에 따라 커널 모듈의 로딩을 담당하는 로드 모듈(Load_module, 540)이 실행되며, 로드 모듈(540)은 시큐어 월드 가상 프로세서(250)와의 연동을 위한 제1 커널 모듈 인증 기능(530)(예: lkmauth 함수)을 실행한다. 로드 모듈(540)은 제1 커널 모듈 인증 기능(530)에 따라 A 커널 모듈(520)의 식별 정보 또는 A 커널 모듈(520)의 코드를 시큐어 월드 가상 프로세서(250)의 무결성 검증 에이전트(290)로 전달한다.
S430 단계는 해쉬 값 비교 단계이며, 무결성 검증 에이전트(290)는 A 커널 모듈(520)의 식별 정보 또는 A 커널 모듈(520)의 코드를 수신함에 따라 제2 커널 모듈 인증 기능(535)(예: lkmauth 함수)을 실행한다. 무결성 검증 에이전트(290)는 제2 커널 모듈 인증 기능(535)에 따라 A 커널 모듈(520)의 해쉬 값을 산출하고, 산출된 해쉬 값과 검증 테이블의 해쉬 값을 비교한다. 본 예에서는, 검증 값의 대표적인 예로서 해쉬 값을 예시하고 있으나, 검증 값은 A 커널 모듈(520)의 적어도 일부를 나타내는 데이터, 이러한 데이터를 미리 설정된 함수 또는 알고리즘을 이용하여 연산하거나 암호화한 값 등이 될 수 있다.
S440 단계는 검증 성공 여부를 확인하는 단계이며, 무결성 검증 에이전트(290)는 산출된 해쉬 값과 검증 테이블의 해쉬 값이 동일한 경우에 검증이 성공한 것으로 결정하고 S450 단계를 수행하고, 검증이 실패한 경우에 S470 단계를 수행한다.
S450 단계에서 무결성 검증 에이전트(290)는 로드 모듈(540)에 검증 성공을 통지하고, S460 단계에서 로드 모듈(540)은 검증 성공의 통지를 수신함에 따라 A 커널 모듈(520)을 메모리(130)에 로딩한다. 도 9를 참조하면, 메모리(130)는 커널 코드가 저장되는 영역(510)과, 커널 데이터가 저장되는 영역(512)과, A 커널 모듈 코드가 저장되는 영역(514)과, A 커널 모듈 데이터가 저장되는 영역(516)을 포함한다. A 커널 모듈 코드가 저장되는 영역(514)은 RO(read only)의 속성을 가질 수 있고, A 커널 모듈 데이터가 저장되는 영역(516)은 RW(read-write)의 속성을 가질 수 있다.
S470 단계에서 무결성 검증 에이전트(290)는 완화 조치를 수행한다. 도 10을 참조하면, 무결성 검증 에이전트(290)는 로드 모듈(540)에 검증 실패를 통지할 수 있고, 로드 모듈(540)은 A 커널 모듈의 로딩을 거부하고, 표시부(150)를 통해 A 커널 모듈(520)의 로딩 실패를 사용자에게 표시하는 등의 완화 조치를 수행할 수 있다.
도 11은 본 발명의 또 다른 실시 예에 따른 무결성 검증 방법을 설명하기 위한 흐름도이다.
S510 단계는 검증 테이블 생성 단계로서, 노멀 월드 운영 시스템(210)의 부팅 동안 또는 커널 모듈의 로딩 시도 이전에 프로세서는 노멀 월드 운영 시스템(210)의 커널 모듈에 대한 검증 테이블을 생성한다. 검증 테이블의 각 항목은 해당 커널 모듈에 대한 식별 정보(예: 해당 커널 모듈 페이지의 물리적 주소의 일부 또는 전체, 커널 모듈 페이지 번호 또는 ID, 커널 모듈의 번호 또는 ID 등)와 해당 커널 모듈의 해쉬 값을 포함할 수 있다. 본 예에서는, 검증 값의 대표적인 예로서 해쉬 값(즉, 검증 값)을 예시하고 있으나, 검증 값은 해당 커널 모듈의 적어도 일부를 나타내는 데이터, 이러한 데이터를 미리 설정된 함수 또는 알고리즘을 이용하여 연산하거나 암호화한 값 등이 될 수 있다.
도 12는 페이지 테이블 및 검증 테이블의 일 예를 나타낸다.
페이지 테이블(610)은 복수의 항목들(620)을 포함하며, 각 테이블 항목(620)은 해당 커널 모듈 페이지(660)의 식별 정보(622)(예: 커널 모듈 페이지의 물리적 주소의 일부 또는 전체, 커널 모듈 페이지 번호 또는 ID 등)와 부가 정보(624)(기록 가능 여부 등)를 포함할 수 있다.
검증 테이블(650)은 복수의 항목들(660)을 포함하며, 각 테이블 항목(660)은 해당 커널 모듈 페이지(620)의 식별 정보(662)(예: 커널 모듈 페이지의 물리적 주소의 일부 또는 전체, 커널 모듈 페이지(또는 페이지 테이블 항목)의 번호 또는 ID, 커널 모듈의 번호 또는 ID 등)와 해당 커널 모듈 페이지의 해쉬 값(664)을 포함할 수 있다.
S520 단계는 검증 주기 확인 단계로서, 무결성 검증 에이전트(290)는 미리 설정된 검증 주기가 도래했는지의 여부를 확인한다. 무결성 검증 에이전트(290)는 주기적으로 커널 모듈 페이지를 검증할 수 있다. 또한, 검증 주기는 전자 장치의 파워 레벨 상태(활성(active), 대기(stanby), 슬립(sleep) 등)에 따라 달라질 수 있으며(예: 활성(active), 대기(stanby), 슬립(sleep)에 5분, 15분, 60분이 각각 할당됨), 각 검증 주기에서 검증되는 페이지의 수 또는 양은 임의로 설정될 수 있다.
무결성 검증 에이전트(290)는 검증 주기가 도래한 경우 S530 단계를 수행하고, 검증 주기가 도래하지 않은 경우 검증 주기의 도래 여부를 계속 모니터링할 수 있다.
S530 단계는 무결성 검증 에이전트(290)를 사용하여 커널 모듈 페이지를 검증하는 단계이다. 무결성 검증 에이전트(290)는 노멀 월드 커널 모듈 페이지의 해쉬 값을 산출하고, 산출된 해쉬 값을 검증 테이블의 해당 해쉬 값과 비교한다. 무결성 검증 에이전트(290)는 노멀 월드 커널 모듈의 적어도 일부 데이터, 이러한 데이터를 미리 설정된 함수 또는 알고리즘를 이용하여 연산하거나 암호화한 값과 검증 테이블의 검증 값을 비교할 수 있다.
S540 단계는 검증 확인 단계이며, 커널 모듈 페이지의 검증이 성공한 경우 S520 단계를 반복 수행하고, 커널 모듈 페이지의 검증이 실패한 경우 S550 단계에서 전술한 완화 조치(예: 보안 경고의 발생)가 수행된다. 예를 들어, 무결성 검증 에이전트(290)는 표시부(150)에 경고 또는 커널 모듈의 인증 실패를 알리는 메시지를 표시할 수 있다.
본 예에서, 메모리 페이지의 일 예로 커널 모듈 페이지를 예시하고 있으나, 커널 모듈 페이지가 아닌 다른 종류의 메모리 페이지에 대해서도 본 예가 적용될 수 있다.
본 발명의 실시 예들은 하드웨어, 소프트웨어 또는 하드웨어 및 소프트웨어의 조합의 형태로 실현 가능하다는 것을 알 수 있을 것이다. 예를 들어, 도 1에 도시된 전자 장치에서 메모리, 통신부, 프로세서 등의 각 구성 소자는 장치로 구성될 수 있다. 소프트웨어는 예를 들어, 삭제 가능 또는 재기록 가능 여부와 상관없이, ROM 등의 저장 장치와 같은 휘발성 또는 비휘발성 저장 장치, 또는 예를 들어, RAM, 메모리 칩, 장치 또는 집적 회로와 같은 메모리, 또는 예를 들어 CD, DVD, 자기 디스크 또는 자기 테이프 등과 같은 광학 또는 자기적으로 기록 가능함과 동시에 기계(예를 들어, 컴퓨터)로 읽을 수 있는 저장 매체에 저장될 수 있다. 전자 장치 내에 포함될 수 있는 메모리 또는 저장부는 본 발명의 실시 예들을 구현하는 지시들을 포함하는 프로그램 또는 프로그램들을 저장하기에 적합한 기계로 읽을 수 있는 저장 매체의 한 예임을 알 수 있을 것이다. 따라서, 본 발명은 본 명세서의 임의의 청구항에 기재된 장치 또는 방법을 구현하기 위한 코드를 포함하는 프로그램 및 이러한 프로그램을 저장하는 기계로 읽을 수 있는 저장 매체를 포함한다. 또한, 이러한 프로그램은 유선 또는 무선 연결을 통해 전달되는 통신 신호와 같은 임의의 매체를 통해 전자적으로 이송될 수 있고, 본 발명은 이와 균등한 것을 적절하게 포함한다.
또한, 상기 전자 장치는 유선 또는 무선으로 연결되는 프로그램 제공 장치로부터 상기 프로그램을 수신하여 저장할 수 있다. 상기 프로그램 제공 장치는 상기 전자 장치가 전자 장치의 무결성 검증 방법을 수행하도록 하는 지시들을 포함하는 프로그램, 전자 장치의 무결성 검증 방법에 필요한 정보 등을 저장하기 위한 메모리와, 상기 전자 장치와의 유선 또는 무선 통신을 수행하기 위한 통신부와, 상기 전자 장치의 요청 또는 자동으로 해당 프로그램을 상기 전자 장치로 전송하는 제어부를 포함할 수 있다.
상술한 본 발명의 설명에서는 구체적인 실시 예에 관해 설명하였으나, 여러 가지 변형이 본 발명의 범위에서 벗어나지 않고 실시할 수 있다. 따라서 본 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위와 특허청구범위의 균등한 것에 의해 정해져야 한다.
125: 프로세서, 200: 노멀 월드 프로세서, 210: 노멀 월드 운영 시스템, 220: 노멀 월드 커널, 230: 제1 어플리케이션, 250: 시큐어 월드 프로세서, 260: 시큐어 월드 운영 시스템, 270: 시큐어 월드 커널, 280: 제2 어플리케이션, 290: 무결성 검증 에이전트

Claims (20)

  1. 전자 장치의 무결성 검증 방법에 있어서,
    전자 장치에 포함된 프로세서에 대한 노멀 월드(normal world) 가상 프로세서 및 시큐어 월드(secure world) 가상 프로세서를 인스턴스화하는 단계;
    상기 시큐어 월드 가상 프로세서를 이용하여 무결성 검증 에이전트를 실행하는 단계;
    상기 노멀 월드 가상 프로세서를 이용하여 커널 모듈에 대한 로딩이 시도되는 경우, 상기 커널 모듈에 대한 로딩과 관련된 하나 이상의 미리 결정된 연산들을 상기 시큐어 월드 가상 프로세서로 트래핑(trapping)하는 단계; 및
    상기 시큐어 월드 가상 프로세서를 이용하여 실행된 상기 무결성 검증 에이전트를 이용하여, 상기 트래핑된 하나 이상의 미리 결정된 연산들이 상기 무결성 검증 에이전트가 이용하는 보안 정책을 위반하는 것으로 판정되는 경우, 완화 조치(mitigation action)를 수행하는 단계;를 포함하는,
    전자 장치의 무결성 검증 방법.
  2. 제 1 항에 있어서, 상기 트래핑된 하나 이상의 미리 결정된 연산들은 보안 주요 연산, 특권 인스트럭션, 상기 노멀 월드 가상 프로세서의 MMU(Memory Management Unit)에 의해 제공되는 가상 메모리 액세스 보호를 디스에이블하거나 변경하도록 작동 가능한 인스트럭션, 상기 전자 장치의 상기 프로세서 또는 코프로세서와 연관된 하나 이상의 미리 결정된 레지스터들을 변경하도록 작동 가능한 인스트럭션, 상기 전자 장치와 연관된 코드 또는 주요 판독전용 데이터(critical read-only data)를 작동 가능한 인스트럭션, 노멀 월드 운영 시스템과 연관된 DMA(Direct Memory Access) 컨트롤러를 변경하도록 작동 가능한 인스트럭션, 정규 데이터 어보트 익셉션(regular data abort exception), 또는 시스템 호출들을 위해 사용된 감독 모드 호출을 위한 인스트럭션을 포함하는, 전자 장치의 무결성 검증 방법.
  3. 제 1 항에 있어서, 상기 트래핑된 하나 이상의 미리 결정된 연산들은 상기 무결성 검증 에이전트를 디스에이블하거나, 변경하거나, 완화하도록 작동 가능한 인스트럭션을 포함하는, 전자 장치의 무결성 검증 방법.
  4. 제 1 항에 있어서, 상기 시큐어 월드 가상 프로세서는 상기 노멀 월드 가상 프로세서로부터 분리되어 보호되는, 전자 장치의 무결성 검증 방법.
  5. 제 1 항에 있어서, 상기 시큐어 월드 가상 프로세서의 데이터 및 코드는 상기 노멀 월드 가상 프로세서에 의해 액세스 가능하지 않은, 전자 장치의 무결성 검증 방법.
  6. 제 1 항에 있어서, 상기 노멀 월드 가상 프로세서의 데이터 및 코드는 상기 시큐어 월드 가상 프로세서에 의해 액세스 가능한, 전자 장치의 무결성 검증 방법.
  7. 제 1 항에 있어서, 상기 노멀 월드 가상 프로세서를 인스턴스화하는 단계는 특권 코드 페이지들의 메모리 액세스 보호를 기록 불가능으로 정의하는 상기 노멀 월드 가상 프로세서의 가상 메모리 맵(virtual memory map)을 생성하는 단계;를 포함하는, 전자 장치의 무결성 검증 방법.
  8. 제 7 항에 있어서, 상기 특권 코드 페이지는 벡터를 처리하는 인터럽트 또는 벡터를 처리하는 익셉션들을 포함하는, 전자 장치의 무결성 검증 방법.
  9. 제 7 항에 있어서, 상기 노멀 월드 가상 프로세서의 가상 메모리 맵은 비특권 코드 페이지들의 메모리 액세스 보호를 PXN(rivileged execute never)으로 정의함으로써 상기 하나 이상의 비특권 코드 페이지들은 상기 특권 코드 페이지에 의해 실행 가능한 보안 주요 연산 또는 특권 인스트럭션을 실행하는 것이 금지되도록 하는, 전자 장치의 무결성 검증 방법.
  10. 제 1 항에 있어서, 상기 하나 이상의 미리 결정된 연산들을 상기 시큐어 월드 가상 프로세서로 트래핑하는 단계는 실행 컨텍스트를 상기 노멀 월드 가상 프로세서로부터 상기 시큐어 월드 가상 프로세서로 스위칭함으로써 상기 트래핑된 하나 이상의 미리 결정된 연산들이 상기 무결성 검증 에이전트에 의해 실행되도록 하는 단계;를 포함하는, 전자 장치의 무결성 검증 방법.
  11. 제 1 항에 있어서, 상기 노멀 월드 가상 프로세서의 노멀 월드 운영 시스템을 변경함으로써 상기 하나 이상의 미리 결정된 연산들이 상기 시큐어 월드 가상 프로세서로 트래핑되는 호출들로 대체되고, 상기 하나 이상의 미리 결정된 연산들을 트래핑하는 것은 시도된 기록들을 특권 코드 페이지로 트래핑하는 것을 포함하는, 전자 장치의 무결성 검증 방법.
  12. 제 11 항에 있어서, 상기 노멀 월드 가상 프로세서의 상기 노멀 월드 운영 시스템의 변경은 그것의 소스 코드를 변경하는 것, 그것의 실행 가능한 바이너리를 변경하는 것, 또는 바이너리 변환을 포함하는, 전자 장치의 무결성 검증 방법.
  13. 제 1 항에 있어서, 상기 노멀 월드 가상 프로세서의 노멀 월드 운영 시스템의 정적 무결성 체크를 수행하는 단계;를 더 포함하는, 전자 장치의 무결성 검증 방법.
  14. 삭제
  15. 제 1 항에 있어서, 상기 완화 조치는 상기 트래핑된 하나 이상의 미리 결정된 연산들의 실행을 거부하는 것, 보안 경고를 발행하는 것, 또는 상기 전자 장치를 셧 다운시키는 것을 포함하는, 전자 장치의 무결성 검증 방법.
  16. 삭제
  17. 제 1 항에 있어서,
    상기 커널 모듈에 대한 검증 테이블을 획득하는 단계; 및
    상기 트래핑된 하나 이상의 미리 결정된 연산들이 상기 무결성 검증 에이전트가 이용하는 상기 보안 정책을 위반하는 것을 판단하기 위해 상기 커널 모듈의 연산 값과 상기 검증 테이블의 상기 연산 값에 대응하는 검증 값을 비교하는 단계;를 더 포함하는, 전자 장치의 무결성 검증 방법.
  18. 제 17 항에 있어서,
    상기 커널 모듈의 연산 값과 상기 검증 테이블의 상기 검증 값이 동일한 경우에 상기 커널 모듈을 로딩하는 단계;를 더 포함하는, 전자 장치의 무결성 검증 방법.
  19. 제 1 항 내지 제 13 항, 제 15 항, 제 17 항, 및 제 18 항 중 어느 한 항에 따른 전자 장치의 무결성 검증 방법을 실행하기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능 저장 매체.
  20. 무결성 검증을 수행하는 전자 장치에 있어서,
    메모리; 및
    프로세서;를 포함하고,
    상기 프로세서에 대해서 노멀 월드 가상 프로세서 및 시큐어 월드 가상 프로세서가 인스턴스화되고, 상기 프로세서는:
    상기 시큐어 월드 가상 프로세서를 이용하여 무결성 검증 에이전트를 실행하고,
    상기 노멀 월드 가상 프로세서를 이용하여 커널 모듈에 대한 로딩이 시도되는 경우, 상기 커널 모듈에 대한 로딩과 관련된 하나 이상의 미리 결정된 연산들을 상기 시큐어 월드 가상 프로세서로 트래핑(trapping)하고,
    상기 시큐어 월드 가상 프로세서를 이용하여 실행된 상기 무결성 검증 에이전트를 이용하여, 상기 트래핑된 하나 이상의 미리 결정된 연산들이 상기 무결성 검증 에이전트가 이용하는 보안 정책을 위반하는 것으로 판정되는 경우, 완화 조치(mitigation action)를 수행하도록 설정된,
    전자 장치.
KR1020130143323A 2013-11-22 2013-11-22 전자 장치의 무결성 검증을 위한 방법, 저장 매체 및 전자 장치 KR102183852B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130143323A KR102183852B1 (ko) 2013-11-22 2013-11-22 전자 장치의 무결성 검증을 위한 방법, 저장 매체 및 전자 장치
US14/536,940 US9507941B2 (en) 2013-11-22 2014-11-10 Method of verifying integrity of electronic device, storage medium, and electronic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130143323A KR102183852B1 (ko) 2013-11-22 2013-11-22 전자 장치의 무결성 검증을 위한 방법, 저장 매체 및 전자 장치

Publications (2)

Publication Number Publication Date
KR20150059564A KR20150059564A (ko) 2015-06-01
KR102183852B1 true KR102183852B1 (ko) 2020-11-30

Family

ID=53183873

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130143323A KR102183852B1 (ko) 2013-11-22 2013-11-22 전자 장치의 무결성 검증을 위한 방법, 저장 매체 및 전자 장치

Country Status (2)

Country Link
US (1) US9507941B2 (ko)
KR (1) KR102183852B1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10025925B2 (en) * 2015-06-23 2018-07-17 Adventium Enterprises, Llc Dynamically measuring the integrity of a computing apparatus
US10320786B2 (en) 2015-09-14 2019-06-11 Samsung Electronics Co., Ltd. Electronic apparatus and method for controlling the same
US10289842B2 (en) * 2015-11-12 2019-05-14 Samsung Electronics Co., Ltd. Method and apparatus for protecting kernel control-flow integrity using static binary instrumentation
SG10201602449PA (en) * 2016-03-29 2017-10-30 Huawei Int Pte Ltd System and method for verifying integrity of an electronic device
CN108959916B (zh) * 2017-05-22 2022-01-14 华为技术有限公司 用于访问安全世界的方法、装置和系统
KR102416501B1 (ko) * 2017-09-20 2022-07-05 삼성전자주식회사 전자 장치 및 그의 제어 방법
CN109753788B (zh) * 2017-11-03 2024-04-19 厦门雅迅网络股份有限公司 内核运行时的完整性校验方法及计算机可读存储介质
US11138315B2 (en) * 2018-01-17 2021-10-05 Hewlett Packard Enterprise Development Lp Data structure measurement comparison
CN108491727B (zh) * 2018-04-08 2021-03-16 成都三零嘉微电子有限公司 一种融合通用计算、可信计算、密码计算的安全处理器
US11714910B2 (en) * 2018-06-13 2023-08-01 Hewlett Packard Enterprise Development Lp Measuring integrity of computing system
KR102579861B1 (ko) * 2018-10-12 2023-09-18 현대자동차주식회사 차량용 소프트웨어 업데이트 장치 및 그 제어 방법
JP2022522863A (ja) * 2019-03-05 2022-04-20 シー2エー‐セック,リミテッド リターン指向プログラミング攻撃保護
US20210200873A1 (en) * 2019-12-31 2021-07-01 Renesas Electronics America Inc. Method and system for continuously verifying integrity of secure instructions during runtime
CN112329005A (zh) * 2020-11-06 2021-02-05 中国电子信息产业集团有限公司 操作系统启动的引导度量方法、装置、电子设备和介质
CN113220225B (zh) * 2021-04-06 2022-04-12 浙江大学 Risc-v处理器的内存数据读写方法及装置、处理器、存储介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100244836B1 (ko) * 1995-11-02 2000-02-15 포만 제프리 엘 컴퓨터시스템 및 다수의 기능카드 중 한개의 기능카드를 격리하는 방법
US5915124A (en) * 1997-01-03 1999-06-22 Ncr Corporation Method and apparatus for a first device accessing computer memory and a second device detecting the access and responding by performing sequence of actions
IL126149A (en) * 1997-09-09 2003-07-31 Sanctum Ltd Method and system for protecting operations of trusted internal networks
FR2810426B1 (fr) * 2000-06-16 2006-01-27 Canon Kk Dispositif et procede de controle d'acces de peripherique informatique
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US20030037237A1 (en) * 2001-04-09 2003-02-20 Jean-Paul Abgrall Systems and methods for computer device authentication
US7657419B2 (en) * 2001-06-19 2010-02-02 International Business Machines Corporation Analytical virtual machine
US7149862B2 (en) 2002-11-18 2006-12-12 Arm Limited Access control in a data processing apparatus
KR100872175B1 (ko) * 2006-12-01 2008-12-09 한국전자통신연구원 Tpm을 이용한 모바일 플랫폼의 보안 부팅 장치 및 방법
US8108856B2 (en) * 2007-03-30 2012-01-31 Intel Corporation Method and apparatus for adaptive integrity measurement of computer software
KR100932274B1 (ko) * 2007-12-18 2009-12-16 한국전자통신연구원 이동 단말기의 소프트웨어 무결성 검증 장치 및 그 방법
US8522015B2 (en) * 2008-06-27 2013-08-27 Microsoft Corporation Authentication of binaries in memory with proxy code execution
US8578483B2 (en) 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
GB2464966B (en) * 2008-10-31 2012-08-29 Hewlett Packard Development Co Policy enforcement in trusted platforms
GB2466071B (en) * 2008-12-15 2013-11-13 Hewlett Packard Development Co Associating a signing key with a software component of a computing platform
GB2482652B (en) * 2010-05-21 2016-08-24 Hewlett Packard Development Co Lp Extending integrity measurements in a trusted device using a policy register
US9118666B2 (en) * 2010-06-30 2015-08-25 Google Inc. Computing device integrity verification
US9483635B2 (en) * 2012-08-03 2016-11-01 North Carolina State University Methods, systems, and computer readable medium for active monitoring, memory protection and integrity verification of target devices
WO2014185893A1 (en) * 2013-05-14 2014-11-20 Hewlett-Packard Development Company, L.P. Detection of a security event
US9626205B2 (en) * 2013-08-14 2017-04-18 Bank Of America Corporation Hypervisor driven embedded endpoint security monitoring
US10198572B2 (en) * 2013-09-17 2019-02-05 Microsoft Technology Licensing, Llc Virtual machine manager facilitated selective code integrity enforcement
US9652631B2 (en) * 2014-05-05 2017-05-16 Microsoft Technology Licensing, Llc Secure transport of encrypted virtual machines with continuous owner access

Also Published As

Publication number Publication date
US9507941B2 (en) 2016-11-29
KR20150059564A (ko) 2015-06-01
US20150150127A1 (en) 2015-05-28

Similar Documents

Publication Publication Date Title
KR102183852B1 (ko) 전자 장치의 무결성 검증을 위한 방법, 저장 매체 및 전자 장치
AU2013297064B2 (en) Methods, systems, and computer readable medium for active monitoring, memory protection and integrity verification of target devices
RU2703156C2 (ru) Системы и способы обеспечения компьютерной безопасности, использующие исключения асинхронной интроспекции
EP3103056B1 (en) Methods and apparatus for protecting operating system data
US9489512B2 (en) Trustzone-based integrity measurements and verification using a software-based trusted platform module
CN104335220B (zh) 用于防止和检测安全威胁的方法和系统
EP3198399B1 (en) Detecting a change to system management mode bios code
CN110348252A (zh) 基于信任区的操作系统和方法
US20070016832A1 (en) System, device and method of verifying that a code is executed by a processor
US20170289193A1 (en) Secure smart terminal and an information processing method
CN104520872A (zh) 在低功率状态期间保护存储器区的方法和装置
WO2017099922A1 (en) System management mode disabling and verification techniques
US20170168902A1 (en) Processor state integrity protection using hash verification
US11256589B2 (en) Detecting a change to system management mode bios code
US11366685B2 (en) Access filter for security subsystem
Ma et al. Booting IoT Terminal Device Securely with eMMC

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