KR102324336B1 - 사용자 장치 및 그것에 대한 무결성 검증 방법 - Google Patents

사용자 장치 및 그것에 대한 무결성 검증 방법 Download PDF

Info

Publication number
KR102324336B1
KR102324336B1 KR1020150039016A KR20150039016A KR102324336B1 KR 102324336 B1 KR102324336 B1 KR 102324336B1 KR 1020150039016 A KR1020150039016 A KR 1020150039016A KR 20150039016 A KR20150039016 A KR 20150039016A KR 102324336 B1 KR102324336 B1 KR 102324336B1
Authority
KR
South Korea
Prior art keywords
integrity
verification
policy
system component
application
Prior art date
Application number
KR1020150039016A
Other languages
English (en)
Other versions
KR20160112757A (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 KR1020150039016A priority Critical patent/KR102324336B1/ko
Priority to US15/068,111 priority patent/US10180842B2/en
Publication of KR20160112757A publication Critical patent/KR20160112757A/ko
Application granted granted Critical
Publication of KR102324336B1 publication Critical patent/KR102324336B1/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
    • 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/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Multimedia (AREA)

Abstract

본 발명의 실시 예에 따른 사용자 장치에 대한 무결성 검증 방법은 부트-로더를 실행하는 동안, 제1 무결성 검증 방식을 기반으로 제1 검증 대상의 무결성을 검증하는 단계, 제1 검증 대상에 대한 무결성 검증 결과에 따라 커널 이미지의 압축을 해제하고, 커널 이미지의 압축이 해제되는 동안 제2 무결성 검증 방식을 기반으로 제2 검증 대상의 무결성을 검증하는 단계, 및 제2 검증 대상에 대한 무결성 검증 결과에 따라 운영 체제를 구동하고, 운영 체제가 구동되는 동안 제3 무결성 검증 방식을 기반으로 제3 검증 대상의 무결성을 검증하는 단계를 포함한다.

Description

사용자 장치 및 그것에 대한 무결성 검증 방법{USER DEVICE AND INTEGRITY VERIFICATION METHOD FOR THE SAME}
본 발명은 모바일 시스템에 관한 것으로, 더욱 상세하게는 사용자 장치 및 그것에 대한 무결성 검증 방법에 관한 것이다.
스마트폰, 태블릿 PC와 같은 모바일 단말기들은 그것들의 확장성 및 휴대성 때문에 많은 사용자들에게 사용된다. 이러한 모바일 단말기들은 사용자의 선택에 따라 다양한 애플리케이션을 설치할 수 있다. 모바일 단말기들은 설치된 애플리케이션을 기반으로 데이터의 이동, 편집, 복사, 삭제 등과 같은 다양한 데이터 처리 동작을 수행할 수 있다. 그러나, 상술된 모바일 단말기의 데이터 처리에 대한 자유도는 해커들에게 다양한 공격 기회를 제공할 수 있다. 특히, 안드로이드(Android)와 같은 오픈 소스를 기반으로 운용되는 모바일 단말기의 경우, 상술된 문제점이 더욱 심각하게 발생할 수 있다.
구체적으로, 종래의 모바일 플랫폼은 애플리케이션 각각의 신뢰성 여부를 구분할 수 없으며, 모든 애플리케이션을 동일한 대상으로 취급한다. 특히, 안드로이드와 같은 오픈 소스 기반의 운영 체제는 구조적으로 플랫폼의 임의 변경이 가능하다. 이로 인하여, 사용자 단말기에 포함된 보안 장치 및 보안 수단들이 임의로 변경될 수 있다. 일 예로서, 안드로이드를 기반으로 하는 사용자 단말기에서, 모든 애플리케이션들은 달빅 가상 머신(Dalvik Virtual Machine)에 의해 실행된다. 그러나, 종래의 무결성 검증 프로그램은 가상 머신을 하나의 실행 파일로써 간주하고, 가상 머신에 의해 시스템 내부적으로 수행되는 시스템 자원의 상태에 대한 검증을 수행하지 않는다.
또한, 중요 시스템 컴포넌트의 일부가 훼손된 모바일 단말기는 거래정보 유출에 따른 금융사고 및 개인정보 불법 취득에 따른 사회적 위협의 주된 도구로 활용될 수 있다. 따라서 사용자 또는 사업자 입장에서는 모바일 단말에 대해 신뢰적으로 검증할 수단이 필요하다.
한편, 모바일 단말은 종래의 데스크탑 PC와 달리 자원 제약적 특징을 갖고 있다. 최근, 멀티 코어 및 대용량의 플래시 메모리 등과 같은 전자 기술의 발달로 인하여 자원 사용의 제약이 다소 해소되었다. 그러나 보다 빠른 계산능력과 입출력 속도를 지원하기 위해 높은 클럭 주파수(Clock Frequency)를 기반으로 프로세서 및 메모리가 동작되고 있고, 최근 개발되는 애플리케이션들은 빠른 계산속도(Computational Cycle)와 많은 저장 공간(Storage Space)을 요구한다. 이러한 요구들에 의해 모바일 단말기의 전력 소모가 증가하는 문제점이 있다.
종래의 무결성 검증 기법들은 상시 보안 모니터링이 제공하는 장점을 갖고 있으나, 보안의 신뢰성을 높이기 위해서 짧은 주기를 기반으로 동작한다. 짧은 주기의 검증 동작은 모바일 단말기의 성능 하락 및 전력 소모 가속화의 주요 원인으로 작용하기 때문에, 모바일 단말 플랫폼의 신뢰 상태 검증을 위한 검증 방법으로 부적절하다. 또한, 기존의 TPM (Trusted Platform Module) 또는 MTM (Mobile Trusted Module) 규격은 소프트웨어적으로 구현 복잡도가 매우 높아, 모바일 단말 상에서 상대적으로 많은 전력 소모를 유발하는 문제점이 있다.
본 발명의 목적은 자원 제약형 모바일 단말의 플랫폼, 사용자 애플리케이션 및 사용자 애플리케이션 실행환경에 대한 무결성을 효과적으로 검증함으로써, 향상된 신뢰성 및 향상된 성능을 갖는 사용자 장치 및 그것에 대한 무결성 검증 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 사용자 장치에 대한 무결성 검증 방법은 부트-로더를 실행하는 동안, 제1 무결성 검증 방식을 기반으로 제1 검증 대상의 무결성을 검증하는 단계; 상기 제1 검증 대상에 대한 상기 무결성 검증 결과에 따라 커널 이미지의 압축을 해제하고, 상기 커널 이미지의 압축이 해제되는 동안 제2 무결성 검증 방식을 기반으로 제2 검증 대상의 무결성을 검증하는 단계; 및 상기 제2 검증 대상에 대한 상기 무결성 검증 결과에 따라 운영 체제를 구동하고, 상기 운영 체제가 구동되는 동안 제3 무결성 검증 방식을 기반으로 제3 검증 대상의 무결성을 검증하는 단계를 포함하고, 상기 제1 검증 대상은 상기 부트-로더 및 상기 커널 이미지를 포함하고, 상기 제2 검증 대상은 시스템 컴포넌트 및 미리 설치된 애플리케이션과 관련된 파일들을 포함하고, 상기 제3 검증 대상은 상기 시스템 컴포넌트 및 실행될 애플리케이션과 관련된 파일들을 포함하고, 상기 제1 내지 제3 무결성 검증 방식들 각각은 상기 제1 내지 제3 검증 대상들에 따라 정적 검증 방식 또는 동적 검증 방식이다.
실시 예로서, 상기 부트-로더가 실행되기 이전에 부트 제어 코드를 실행하여 초기화를 수행하는 단계를 더 포함한다.
실시 예로서, 상기 제1 무결성 검증 방식을 기반으로 제1 검증 대상의 무결성을 검증하는 단계는 상기 부트-로더 및 상기 커널 이미지의 무결성 값들을 추출하는 단계; 상기 무결성 값들을 기반으로 상기 부트-로더 및 상기 커널 이미지의 무결성을 검증하는 단계; 및 상기 부트-로더 및 상기 커널 이미지의 무결성이 훼손된 경우, 상기 부트-로더의 실행을 중단하는 단계를 포함한다.
실시 예로서, 상기 제1 무결성 검증 방식은 상기 정적 검증 방식이되, 상기 부트-로더가 실행될 때마다 무결성 검증이 수행되는 상기 정적 검증 방식이다.
실시 예로서, 상기 제2 무결성 검증 방식을 기반으로 제2 검증 대상의 무결성을 검증하는 단계는 상기 시스템 컴포넌트에 대한 이벤트를 감지하는 단계; 상기 이벤트가 상기 메모리로의 적재 이벤트인 경우, 미리 설정된 부팅전 시스템 컴포넌트 검증 정책을 기반으로 상기 시스템 컴포넌트의 무결성을 검증하는 단계; 및 상기 시스템 컴포넌트의 무결성이 보장되는 경우 상기 시스템 컴포넌트에 대한 상기 이벤트를 수행하고, 상기 시스템 컴포넌트의 무결성이 훼손된 경우 상기 시스템 컴포넌트에 대한 상기 이벤트를 수행하지 않고 로그 메시지를 기록하는 단계를 포함한다.
실시 예로서, 상기 미리 설정된 부팅 전 시스템 컴포넌트 검증 정책은 제1 내지 제4 검증 정책들 중 적어도 어느 하나를 포함하고, 상기 제1 검증 정책은 상기 시스템 컴포넌트 전체에 대한 무결성을 검증하는 정책을 가리키고, 상기 제2 검증 정책은 상기 시스템 컴포넌트 중 중요 시스템 컴포넌트에 대한 무결성을 검증하는 정책을 가리키고, 상기 제3 검증 정책은 상기 시스템 컴포넌트를 집단화하여 무결성을 검증하는 정책을 가리키고, 상기 제4 검증 정책은 누적된 단방향 해시 함수를 기반으로 상기 시스템 컴포넌트의 무결성을 검증하는 정책을 가리킨다.
실시 예로서, 상기 제2 무결성 검증 방식을 기반으로 제2 검증 대상의 무결성을 검증하는 단계는, 상기 미리 설치된 애플리케이션과 관련된 파일들의 무결성을 검증하는 단계를 더 포함한다.
실시 예로서, 상기 제2 무결성 검증 방식은 상기 시스템 컴포넌트의 이벤트 발생 유무에 따라 무결성 검증이 수행되는 상기 동적 검증 방식 및 상기 미리 설치된 애플리케이션과 관련된 파일들에 대한 무결성 검증이 수행되는 상기 정적 검증 방식을 포함한다.
실시 예로서, 상기 제3 검증 방식을 기반으로 상기 제3 검증 대상의 무결성을 검증하는 단계는 상기 시스템 컴포넌트에 대한 이벤트를 감지하는 단계; 상기 이벤트가 상기 메모리로의 적재 이벤트인지 판별하는 단계; 상기 이벤트가 상기 적재 이벤트인 경우, 상기 시스템 컴포넌트의 바이너리 파일을 읽고, 상기 이벤트가 상기 적재 이벤트가 아닌 경우, 상기 메모리에 저장된 상기 시스템 컴포넌트를 읽는 단계; 미리 정해진 시스템 컴포넌트 검증 정책을 기반으로 상기 읽은 시스템 컴포넌트의 무결성을 검증하는 단계; 상기 읽은 시스템 컴포넌트의 무결성이 보장되는 경우 상기 이벤트를 수행하고, 상기 읽은 시스템 컴포넌트의 무결성이 훼손된 경우 상기 이벤트를 수행하지 않고, 로그 메시지를 기록하는 단계를 포함한다.
실시 예로서, 상기 제3 검증 방식을 기반으로 상기 제3 검증 대상의 무결성을 검증하는 단계는 상기 실행될 애플리케이션의 설치 파일의 무결성을 검증하는 단계; 및 상기 실행될 애플리케이션의 설치 파일의 무결성이 훼손된 경우 상기 실행될 애플리케이션의 실행을 중단하고, 로그 메시지를 기록하는 단계를 더 포함한다.
실시 예로서, 상기 제3 검증 방식을 기반으로 상기 제3 검증 대상의 무결성을 검증하는 단계는 상기 실행될 애플리케이션의 설치 파일의 무결성이 보장된 경우, 상기 실행될 애플리케이션과 연관된 시스템 클래스에 대한 이벤트를 감지하는 단계; 미리 정해진 애플리케이션 검증 정책을 기반으로 상기 시스템 클래스의 무결성을 검증하는 단계; 및 상기 시스템 클래스의 무결성이 훼손된 경우, 상기 실행될 애플리케이션을 강제 종료하는 단계를 더 포함한다.
본 발명의 다른 실시 예에 따른 사용자 장치는 단말기 초기화 단계, 부트-로더 실행 단계, 커널 실행 단계, 및 운영 체제 구동 단계를 포함하는 부팅 동작을 수행하는 응용 프로세서; 상기 응용 프로세서의 제어에 따라 시스템 컴포넌트 및 애플리케이션 관련 파일들을 적재하는 메모리; 상기 부팅 동작의 각 단계들에 따라 상기 시스템 컴포넌트 또는 상기 애플리케이션 관련 파일들의 무결성 값을 추출하는 단말기 무결성 검증부; 상기 추출된 무결성 값을 기반으로 상기 검증 대상의 무결성을 검증하는 보안 장치를 포함하되, 상기 단말기 무결성 검증부는 상기 보안 장치로부터 상기 검증 결과를 수신하고, 상기 수신된 검증 결과에 따라 상기 시스템 컴포넌트 또는 상기 애플리케이션 관련 파일들에 대한 동작을 중단하여 상기 부팅 동작을 종료한다.
실시 예로서, 상기 보안 장치는 상기 단말기 무결성 검증부와 암호화된 시리얼 통신을 수행하는 통신부; 상기 시스템 컴포넌트 및 상기 애플리케이션 관련 파일들 각각에 대한 무결성 검증 관련 데이터 및 키 값을 저장하는 차폐 메모리; 및 상기 추출된 무결성 값을 기반으로 상기 무결성 검증을 수행하는 프로세서를 포함하되, 상기 보안 장치는 상기 키 값을 기반으로 상기 단말기 무결성 검증부와 암호 통신을 수행한다.
실시 예로서, 상기 단말기 무결성 검증부는 상기 응용 프로세서의 제어에 따라 구동된다.
본 발명에 따르면, 사용자 장치의 각 운용 단계(예를 들어, 초기화, 부트-로더 실행, 커널 실행, 운영 체제 실행 등) 및 각 운용 단계의 검증 대상에 따라 서로 다른 무결성 검증 방식을 적용함으로써, 사용자 장치의 성능이 향상되고, 전력 소모가 감소된다. 또한, 사용자 장치의 프로그램 코드(예를 들어, 애플리케이션, 프로세스 등) 뿐만 아니라, 각 운용 단계에서, 시스템 컴포넌트에 대하여 무결성 검증을 수행함으로써, 사용자 장치의 전 계층에 대한 신뢰성이 향상된다. 또한, 보안 장치의 구성을 최소화함으로써, 무결성 검증을 위한 추가적인 하드웨어 사용에 따른 오버헤드가 감소된다.
따라서, 향상된 성능, 향상된 신뢰성, 및 감소된 전력 소모를 갖는 사용자 장치 및 그것에 대한 무결성 검증 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 사용자 장치를 보여주는 블록도이다.
도 2는 도 1의 보안 장치를 상세하게 보여주는 블록도이다.
도 3은 도 1의 사용자 장치의 동작을 보여주는 순서도이다.
도 4는 도 1의 사용자 장치의 소프트웨어 계층을 상세하게 보여주는 도면이다.
도 5는 도 3의 S100 단계 및 S210 단계를 상세하게 보여주는 순서도이다.
도 6은 도 3의 S220 단계를 상세하게 보여주는 순서도이다.
도 7은 도 3의 S220 단계의 다른 동작을 보여주는 순서도이다.
도 8은 도 3의 S300 단계를 상세하게 보여주는 순서도이다.
도 9는 도 3의 S300 단계의 다른 동작을 보여주는 순서도이다.
도 10은 본 발명의 실시 예 따른 사용자 시스템을 예시적으로 보여주는 도면이다.
이하에서, 본 발명이 속하는 기술 분야에서 통상의 기술을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세하게 설명하기 위하여 본 발명의 실시 예들을 첨부된 도면들을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 사용자 장치를 보여주는 블록도이다. 도 1을 참조하면, 사용자 장치(100)는 응용 프로세서(110, AP; Application Processor), 보안 장치(120), 메모리(130), 스토리지(140), ROM(150), 사용자 인터페이스(160), 장치들(170)을 포함한다. 예시적으로, 사용자 장치(100)는 컴퓨터, 휴대용 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA, 포터블(portable) 컴퓨터, 웹 태블릿(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), 디지털 카메라(digital camera), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 컴퓨팅 시스템들 중 적어도 하나를 포함할 수 있다.
응용 프로세서(110)는 사용자 장치(100)의 제반 동작을 제어할 수 있다. 예를 들어, 응용 프로세서(110)는 사용자 장치(100)의 부팅, 무결성 검증, 애플리케이션 실행 등과 같은 동작들을 위한 연산 동작을 수행할 수 있다.
예시적으로, 응용 프로세서(110)는 단말기 무결성 검증부(DIV; Device Integrity Verifier)를 포함할 수 있다. 단말기 무결성 검증부(DIV)는 메모리(130)로 적재(load)되거나 또는 메모리(130)로부터 엑세스(access)되는 시스템 컴포넌트들, 응용 프로세서(110)에 의해 실행되는 애플리케이션 파일들, 애플리케이션을 실행하는데 요구되는 시스템 클래스들의 무결성 값을 추출하여 보안 장치(120)로 전송할 수 있다. 더욱 상세한 예로서, 단말기 무결성 검증부(DIV)는 실행 파일들, 라이브러리 파일들, 시스템 모듈, 시스템 데몬 등의 무결성 값을 추출할 수 있다. 예시적으로, 단말기 무결성 검증부(DIV)는 검증 대상 파일들의 바이트 값을 해시(hash)하여 무결성 값을 추출할 수 있다. 예시적으로, 단말기 무결성 검증부(DIV)는 사용자 장치(100)의 부팅 단계 또는 실행 단계에 따라 또는 검증 대상에 따라 다른 검증 정책을 기반으로 무결성 검증 동작을 수행할 수 있다.
예시적으로, 단말기 무결성 검증부(DIV)는 소프트웨어 형태, 하드웨어 형태, 또는 그것들의 조합의 형태로 구현될 수 있다. 예시적으로, 하드웨어는 전기/전자 회로, 프로세서, 컴퓨터, 집적 회로, 집적회로 코어들, 멤즈((MEMS; microelectromechanical system), 수동 소자들, 또는 그것들의 조합일 수 있다. 예시적으로, 소프트웨어는 기계 코드, 프로그램 명령어, 펌웨어, 임베디드 코드, 애플리케이션 소프트웨어, 또는 그것들의 조합일 수 있다. 예시적으로, 소프트웨어 형태로 구현되는 단말기 무결성 검증부(DIV)는 응용 프로세서(110) 내의 캐시 메모리에 저장되고, 응용 프로세서(110)에 의해 구동될 수 있다.
보안 장치(120)는 응용 프로세서(110)의 단말기 무결성 검증부(DIV)로부터 무결성 값을 수신하고, 수신된 무결성 값에 대한 무결성 검증을 수행할 수 있다. 예를 들어, 보안 장치(120)는 사용자 장치(100)에서 사용되는 검증 대상(예를 들어, 시스템 컴포넌트, 애플리케이션, 시스템 클래스 등) 각각에 대한 무결성 관련 데이터 또는 키 값을 포함할 수 있다. 보안 장치(120)는 단말기 무결성 검증부(DIV)의 요청에 따라 무결성 값을 수신하고, 수신된 무결성 값 및 관련 데이터를 기반으로 무결성 검증 동작을 수행한다. 보안 장치(120)는 검증 결과를 단말기 무결성 검증부(DIV)로 전송할 수 있다.
예시적으로, 보안 장치(120) 및 응용 프로세서(110)는 신뢰성이 보장되는 통신 채널 또는 보안 채널(Secure Channel)을 기반으로 통신할 수 있다. 예시적으로, 통신 채널은 암호화된 시리얼 통신 채널일 수 있다. 예시적으로, 보안 장치(120)는 시스템-온-칩(SoC; System on Chip) 형태로 제공될 수 있다. 보안 장치(120)는 하나의 집적 회로에 내장되어 하나의 칩, 하나의 모듈, 또는 하나의 카드 형태로 구현될 수 있다. 예시적으로, 보안 장치(120)는 응용 프로세서(110) 내에 포함될 수 있다.
예시적으로, 보안 장치(120)는 무결성 검증에 필요한 최소한의 하드웨어 및 소프트웨어의 조합으로 구현될 수 있다. 예를 들어, 보안 장치(120)는 무결성 검증에 필요한 암호화, 복호화, 키 관리, 해시 등과 같은 알고리즘을 수행하기 위한 계산용 프로세서로 구현될 수 있다.
메모리(130)는 사용자 장치(100) 또는 응용 프로세서(110)의 동작 메모리, 주 메모리, 버퍼 메모리, 또는 캐시 메모리로써 사용될 수 있다. 예시적으로, 메모리(130)는 SRAM, DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM, SRAM, PRAM, RRAM, MRAM 등과 같은 랜덤 액세스 메모리 장치들을 포함할 수 있다. 예시적으로, 응용 프로세서(110)에 의해 사용되는 파일들은 메모리(130)에 로드되고, 메모리(130)에 저장된 파일들은 응용 프로세서(110)에 의해 엑세스될 수 있다. 예시적으로, 메모리(130)는 응용 프로세서(110)의 캐시 메모리일 수 있다.
스토리지(140)는 사용자 장치(100)에서 사용되는 정보, 데이터, 또는 파일들을 저장할 수 있다. 예를 들어, 스토리지(140)는 사용자 장치(100)에서 사용되는 애플리케이션 실행 파일, 부트-로더, 커널 이미지, 운영 체제 구동 파일 등과 같은 다양한 데이터를 저장할 수 있다. 예시적으로, 스토리지(140)는 하드 디스크, 플래시 메모리와 같은 대용량의 불휘발성 메모리 장치들을 포함할 수 있다.
ROM(150)은 사용자 장치(100)가 동작하는데 요구되는 다양한 정보 또는 프로그램 코드들을 펌웨어 형태로 저장할 수 있다. 예를 들어, ROM(150)은 사용자 장치(100)가 부팅하는데 요구되는 부팅 제어 코드를 포함할 수 있다. 예시적으로, ROM(150)에 저장된 데이터 또는 프로그램 코드는 변경 불가능한 데이터 또는 프로그램 코드이며, 무결성이 검증된 데이터 또는 프로그램 코드일 수 있다.
사용자 인터페이스(160)는 응용 프로세서(110)에 데이터 또는 명령어를 입력하거나 또는 외부 장치로 데이터를 출력하는 인터페이스들을 포함할 수 있다. 예시적으로, 사용자 인터페이스(160)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 압전 소자 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(160)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
장치들(170)은 사용자 장치(100)에서 사용되는 다양한 장치들을 포함할 수 있다. 예를 들어, 장치들(150)은 그래픽 연산부(GPU), GPS, 심박 센서, 카메라, 통신 모듈 등과 같은 장치들을 포함할 수 있다.
도 2는 도 1의 보안 장치를 상세하게 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 보안 장치(120)는 통신부(121), 프로세서(122), 차폐 메모리(123), 및 인코딩 및 디코딩 모듈(124)을 포함한다.
통신부(121)는 응용 프로세서(110)와 보안 장치(120) 사이의 통신 인터페이스를 제공할 수 있다. 예시적으로, 응용 프로세서(110)와 보안 장치(120) 사이의 통신 인터페이스는 신뢰성이 보장되는 암호화된 시리얼 통신 인터페이스일 수 있다.
프로세서(122)는 보안 장치(120)의 제반 동작 및 연산 동작을 제어할 수 있다. 예를 들어, 프로세서(122)는 단말기 무결성 검증부(DIV)로부터 수신된 무결성 값의 무결성을 검증하기 위한 암호화, 복호화, 해시, 키 생성 또는 키 폐기 등과 같은 연산 동작을 수행할 수 있다.
차폐 메모리(123)는 무결성 검증을 위한 데이터 또는 키 값을 저장할 수 있다. 차폐 메모리(123)는 외부 공격에 의해 임의의 데이터 변경 및 데이터 유출이 불가능한 메모리를 가리킨다. 즉, 차폐 메모리(123)에 저장된 무결성 검증을 위한 데이터 또는 키 값은 외부 공격에 의해 변경되거나 유출되지 않을 것이다.
인코딩 및 디코딩 모듈(124)은 통신부(121)를 통해 수신된 신호를 복호화하거나 또는 통신부(121)를 통해 전송될 신호를 암호화할 수 있다. 예시적으로, 인코딩 및 디코딩 모듈(124)은 소프트웨어 또는 하드웨어 형태로 제공될 수 있다. 소프트웨어 형태의 인코딩 및 디코딩 모듈(124)은 프로세서(122)에 의해 실행될 수 있다.
즉, 프로세서(122)는 인코딩 및 디코딩 모듈(124)을 통해 검증 결과를 암호화하여 단말기 무결성 검증부(DIV)로 전송할 수 있다.
예시적으로, 보안 장치(120)는 키 값을 기반으로 단말기 검증부(DIV)와 신뢰적 암호 통신을 수행할 수 있다.
도 3은 도 1의 사용자 장치의 동작을 보여주는 순서도이다. 이하에서, 다르게 정의되지 않는 한 각 동작 단계들은 응용 프로세서(110)에 의해 구현되는 소프트웨어 형태의 동작 단계들인 것으로 가정한다. 단, 무결성 검증 동작은 단말기 무결성 검증부(DIV)에 의해 추출된 무결성 값을 기반으로 보안 장치(120)에 의해 수행되는 것으로 가정한다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니다.
S100 단계에서, 사용자 장치(100)는 단말기 초기화를 수행할 수 있다. 예를 들어, 사용자 장치(100)가 파워-온 될 때, 사용자 장치(100)의 ROM(150)에 저장된 부팅 제어 코드는 메모리(130)의 특정 주소로 적재(load)될 수 있다. 응용 프로세서(110)는 메모리(130)의 특정 주소로 접근하여 부팅 제어 코드를 실행할 수 있다. 예시적으로, 부팅 제어 코드는 사용자 장치(100)에 포함된 다양한 하드웨어 장치들의 이상 유무 검사, 초기화와 같은 파워-온 셀프 테스트(POST; Power-On Self-Test)를 수행하기 위한 프로그램 코드를 포함할 수 있다. 예시적으로, 부팅 제어 코드는 ROM(150)에 저장되고, 무결성이 보장되는 프로그램 코드일 수 있다. 즉, 부팅 제어 코드에 대한 별도의 무결성 검증 동작을 수행되지 않을 수 있다.
S200 단계에서, 사용자 장치(100)는 부팅 동작을 수행할 수 있다. 예를 들어, S200 단계는 S210 단계 및 S220 단계를 포함한다. S210 단계에서, 사용자 장치(100)는 부트-로더를 로딩하고, 실행할 수 있다. 예시적으로, 부트-로더는 운영 체제가 구동되기 이전에 미리 실행되어 커널이 정상적으로 구동되기 위해 요구되는 작업을 수행하는 프로그램을 가리킨다. 예를 들어, 부트-로더가 메모리(130)의 일부 영역에 적재될 수 있다. 응용 프로세서(110)는 메모리(130)의 일부 영역에 접근하여 부트-로더를 실행하여 사용자 장치(100)의 하드웨어(예를 들어, 메모리, CPU 클럭, GPIO, 시리얼, MAC 주소 등)에 대한 초기화 설정을 수행할 수 있다. 예시적으로, S210 단계에서, 사용자 장치(100)는 부트-로더 및 커널 이미지에 대한 무결성 검증을 수행할 수 있다. 예를 들어, 단말기 무결성 검증부(DIV)는 부트-로더 및 커널 이미지에 대한 무결성 값을 추출하고, 추출된 무결성 값을 보안 장치(120)로 전송할 수 있다. 보안 장치(120)는 추출된 무결성 값을 기반으로 부트-로더 및 커널 이미지에 대한 무결성 검증을 수행하고, 검증 결과를 단말기 무결성 검증부(DIV)로 전송할 수 있다. 예시적으로, 부트-로더 또는 커널 이미지의 무결성이 검증되지 않은 경우, (즉, 부트-로더 또는 커널 이미지가 변형된 경우) 사용자 장치(100)는 로그 메시지를 기록하고, 부팅 동작을 종료할 수 있다. 예시적으로, 부트-로더 및 커널 이미지에 대한 무결성 검증 동작은 정적 검증일 수 있다. 정적 검증은 특정 이벤트 발생 시점과 무관하게 특정 코드 실행 단계에서 미리 정의된 구성 요소에 대한 무결성 검증을 가리킨다. 예시적으로, 커널 이미지는 커널 및 커널과 관련된 정보가 압축된 형태의 데이터를 가리킨다.
S220 단계에서, 사용자 장치(100)는 커널을 로딩 및 실행할 수 있다. 즉, 사용자 장치(100)는 커널 부팅을 수행할 수 있다. 예를 들어, 커널을 구성하는 다양한 시스템 컴포넌트들이 메모리(130)에 적재될 수 있다. 예시적으로, 사용자 장치(100)는 메모리(130)에 적재되는 시스템 컴포넌트들 각각에 대하여 무결성 검증을 수행할 수 있다. 예를 들어, 사용자 장치(100)는 시스템 컴포넌트가 메모리(130)에 적재되는 이벤트를 감지하고, 감지된 이벤트에 응답하여 적재될 시스템 컴포넌트의 무결성을 검증할 수 있다. 무결성 검증 동작은 S210 단계를 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다. 예시적으로, 시스템 컴포넌트들에 대한 무결성 검증 동작은 동적 검증일 수 있다. 동적 검증은 특정 이벤트 발생 시점에 수행되는 대응하는 구성 요소에 대한 무결성 검증을 가리킨다. 예시적으로, 커널은 사용자 장치(100)에 포함된 구성 요소들(예를 들어, 메모리, 스토리지 등)에 대한 제어권을 갖는 프로그램을 가리킨다. 커널은 메모리로의 엑세스를 관리하고, 하드웨어 자원을 관리할 수 있다.
예시적으로, S220 단계에서, 사용자 장치(100)는 사용자 장치(100)에 설치된 애플리케이션 및 관련된 사용자 프로세스들에 대한 무결성을 검증할 수 있다. 이 때, 애플리케이션 및 관련된 사용자 프로세스들에 대한 무결성 검증 동작은 이벤트 발생과 무관하게 정적으로 수행될 수 있다.
예시적으로, S220 단계의 무결성 검증 결과에 따라 무결성이 보장되지 않는 경우,(즉, 무결성이 훼손된 경우) 사용자 장치(100)는 부팅동작을 종료할 수 있다.
S300 단계에서, 사용자 장치(100)는 포스트-부팅 동작을 수행할 수 있다. 예를 들어, 사용자 장치(100)는 S100 단계 내지 S220 단계를 수행하여 커널 부팅을 완료할 수 있다. 사용자 장치(100)는 운영 체제(OS; Operating System)을 실행하고, 운영 체제 하에서 다양한 애플리케이션을 실행할 수 있다. 예시적으로, S300 단계에서, 사용자 장치(100)는 운영 체제가 구동되는 환경에서, 시스템 컴포넌트가 적재된 메모리(130)로 접근하는 이벤트가 발생하거나, 또는 애플리케이션 및 관련 실행 요소가 메모리(130)에 적재되거나, 또는 사용자 프로세서가 실행되는 이벤트를 감지하고, 감지된 이벤트에 응답하여 대응하는 구성 요소들에 대한 무결성 검증을 수행할 수 있다. 즉, S300 단계에서의 무결성 검증은 동적 검증일 수 있다.
예시적으로, 상술된 각 부팅 단계들에서의 무결성 검증은 서로 다른 검증 정책을 기반으로 수행될 수 있다. 예를 들어, S220 단계 및 S300 단계에서, 시스템 컴포넌트들에 대한 무결성 검증 동작들 각각은 표 1에 도시된 검증 정책들 중 어느 하나를 기반으로 수행될 수 있다.
시스템 컴포넌트 검증 정책 내용
제1 시스템 컴포넌트 검증 정책 모든 시스템 컴포넌트 개별 검증
제2 시스템 컴포넌트 검증 정책 중요 시스템 컴포넌트 개별 검증
제3 시스템 컴포넌트 검증 정책 그룹 단위 검증
제4 시스템 컴포넌트 검증 정책 누적된 단방향 해시 적용
표 1을 참조하면, 시스템 컴포넌트들에 대한 무결성 검증 동작은 제1 내지 제4 시스템 컴포넌트 검증 정책들 중 어느 하나를 기반으로 수행될 수 있다. 제1 시스템 컴포넌트 검증 정책은 모든 시스템 컴포넌트들 각각에 대하여 무결성 검증을 수행하는 정책을 가리킨다. 제2 시스템 컴포넌트 정책은 시스템 컴포넌트들 중 중요 시스템 컴포넌트만 선별하여 무결성 검증을 수행하는 정책을 가리킨다. 제3 시스템 컴포넌트 검증 정책은 시스템 컴포넌트들을 그룹화하여 무결성 검증을 수행하는 정책을 가리킨다. 제4 시스템 컴포넌트 검증 정책은 누적된 단방향 해시(Accumulated One-Way Hash) 함수를 사용하여 모든 시스템 컴포넌트들에 대하여 포괄적으로 무결성 검증을 수행하는 정책을 가리킨다. 예시적으로, 제4 시스템 컴포넌트 검증 정책의 누적된 단방향 해시 함수의 특성에 따라 시스템 컴포넌트들의 순서와 무관하게 누적 해시를 수행하여 항상 동일한 값을 도출할 수 있다. 즉, 무결성 측정 및 검증이 용이해질 수 있다.
예시적으로, 제1, 제2, 제3, 및 제4 시스템 컴포넌트 검증 정책들 순으로 낮은 검증 레벨을 갖는다. 즉, 제1 시스템 컴포넌트 검증 정책은 제2 시스템 컴포넌트 검증 정책보다 높은 신뢰성을 갖고, 제2 시스템 컴포넌트 검증 정책은 제3 시스템 컴포넌트 검증 정책보다 높은 신뢰성을 갖고, 제3 시스템 컴포넌트 검증 정책은 제4 시스템 컴포넌트 검증 정책보다 높은 신뢰성을 갖는다.
예시적으로, 제1 시스템 컴포넌트 검증 정책은 제2 시스템 컴포넌트 검증 정책보다 많은 연산 및 시간이 요구된다. 즉, 제1, 제2, 제3, 및 제4 시스템 컴포넌트 검증 정책들 순으로 높은 자원 사용 효율성을 갖는다. 즉, 제1 시스템 컴포넌트 검증 정책의 자원 사용 효율성은3 제2 시스템 컴포넌트 검증 정책의 자원 사용 효율성보다 낮고, 제2 시스템 컴포넌트 검증 정책의 자원 사용 효율성은 제3 시스템 컴포넌트 검증 정책의 자원 사용 효율성보다 낮고, 제3 시스템 컴포넌트 검증 정책의 자원 사용 효율성은 제4 시스템 컴포넌트 검증 정책의 자원 사용 효율성보다 낮다.
예시적으로, 상술된 S300 단계에서, 애플리케이션에 대한 동적 무결성 검증 정책은 표 2에 도시된 검증 정책들 중 어느 하나를 기반으로 수행될 수 있다.
애플리케이션 검증 정책 내용
제1 애플리케이션 검증 정책 애플리케이션 설치 파일 및 시스템 클래스들의 모든 부분을 검증
제2 애플리케이션 검증 정책 애플리케이션 설치 파일 및 시스템 클래스들의 실행 코드 영역만 검증
제3 애플리케이션 검증 정책 애플리케이션 설치 파일만 검증
표 2를 참조하면, 애플리케이션에 대한 동적 무결성 검증 정책은 제1 내지 제3 애플리케이션 검증 정책들 중 어느 하나를 기반으로 수행될 수 있다. 제1 애플리케이션 검증 정책은 애플리케이션 설치 파일 및 시스템 컴포넌트들에 의해 획득된 시스템 클래스들의 모든 부분에 대하여 무결성 검증을 수행하는 정책을 가리킨다. 제2 애플리케이션 검증 정책은 애플리케이션 설치 파일 및 시스템 컴포넌트들에 의해 획득된 시스템 클래스들의 실행 코드 영역에 대하여 무결성 검증을 수행하는 정책을 가리킨다. 제3 애플리케이션 검증 정책은 애플리케이션 설치 파일에 대하여 무결성 검증을 수행하는 정책을 가리킨다.
예시적으로, 표 1을 참조하여 설명된 바와 마찬가지로, 제1, 제2, 및 제3 애플리케이션 검증 정책들 순으로 낮은 검증 레벨 및 높은 자원 사용 효율성을 갖는다.
상술된 바와 같이, 본 발명의 실시 예에 따른 사용자 장치(100)는 부팅 단계 각각에서 메모리(130)에 적재될 시스템 컴포넌트, 메모리에(130)에 적재된 시스템 컴포넌트, 애플리케이션 파일 등에 대하여 전주기적으로 무결성 검증을 수행한다. 따라서, 향상된 신뢰성을 갖는 사용자 장치(100) 및 그것에 대한 무결성 검증 방법이 제공된다.
또한, 사용자 장치(100)는 보안 장치(120)를 통해 무결성 검증 동작을 수행하고, 부팅 단계들 각각에 대하여 서로 다른 검증 정책을 사용함으로써 무결성 검증에 따른 오버헤드를 최소화할 수 있다. 따라서, 향상된 성능을 갖는 사용자 장치 및 그것에 대한 무결성 검증 방법이 제공된다.
도 4는 도 1의 사용자 장치의 소프트웨어 계층을 상세하게 보여주는 도면이다. 예시적으로, 도 4에 도시된 구성 요소들 또는 구성 요소들의 일부는 소프트웨어 형태로 구현되며, 도 1의 응용 프로세서(110)에 의해 구동될 수 있다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 도 4의 구성 요소들 각각은 소프트웨어 또는 하드웨어 형태로 구현될 수 있다.
도 4를 참조하면, 사용자 장치(100)(또는 사용자 장치(100)의 소프트웨어 계층)은 사용자 영역(User Area), 실행 영역(Execution Area), 및 시스템 영역(System Area)을 포함한다. 사용자 영역(User Area)은 애플리케이션(111), 사용자 프로세스(112), 및 무결성 보고 모듈(118)을 포함한다. 예시적으로, 실행 영역(Execution Area) 및 시스템 영역(System Area)은 사용자 장치(100)의 커널 영역에 포함될 수 있다. 또한, 도 4에 도시된 구성 요소들은 서로 직접 통신하거나 또는 시스템 콜 인터페이스(SCI; System Call Interface)를 통해 통신할 수 있다. 시스템 콜 인터페이스(SCI)는 사용자 영역(User Area)에 포함된 구성 요소가 커널 영역(즉, 실행 영역(Execution Area) 또는 시스템 영역(System Area))의 정보 또는 하드웨어에 접근하기 위한 통신 채널을 제공한다.
애플리케이션(111)은 사용자 장치(100)에 설치되어 실행되는 프로그램을 가리킨다. 사용자 프로세스(112)는 사용자 장치(100)에서 지원하는 네이티브 언어(예를 들어, C/C++ 등)로 구현된 사용자 프로그램을 가리킨다. 예시적으로, 애플리케이션(111)은 사용자 프로세스(112) 중 유저와 상호 작용을 기반으로 동작하는 응용 프로그램일 수 있다. 예시적으로, 사용자 프로세스(111)는 실행 영역(Execution Area)의 지원 없이 시스템 콜 인터페이스를 통해 시스템 영역(System Area)으로 접근할 수 있다.
무결성 보고 모듈(118)은 단말기 무결성 검증부(DIV)로부터 검증 대상에 대한 무결성 검증 결과를 수신하고, 수신된 검증 결과를 외부 장치(예를 들어, 모니터링 서버)로 전송할 수 있다.
실행 영역(Execution Area)은 애플리케이션 패키지 관리자(113) 및 애플리케이션 실행자(114)를 포함한다. 애플리케이션 패키지 관리자(113)는 애플리케이션(111)의 설치를 수행한다. 애플리케이션 패키지 관리자(113)는 애플리케이션(111)과 관련된 설치 경로, 버전 정보, 사용 권한, 데이터 저장 위치 등과 같은 메타 데이터를 관리한다. 애플리케이션 패키지 관리자(113)는 애플리케이션(111)을 실행할 수 있다.
애플리케이션 실행자(114)는 애플리케이션(111)이 실행되는데 요구되는 시스템 컴포넌트(예를 들어, 시스템 라이브러리, 시스템 데몬, 시스템 모듈 등)를 시스템 콜 인터페이스(SCI)를 통해 호출할 수 있다.
시스템 영역(System Area)은 단말기 무결성 검증 모듈(DIV), 시스템 컴포넌트(115), 보안 장치 드라이버(116), 및 메모리 관리자(117)를 포함한다. 단말기 무결성 검증 모듈(DIV)은 시스템 콜 인터페이스(SCI)를 통해 시스템 컴포넌트(115)의 메모리(130) 적재 또는 시스템 컴포넌트가 적재된 메모리(130)로의 엑세스에 대한 이벤트를 감지할 수 있다. 단말기 무결성 검증 모듈(DIV)은 감지된 이벤트에 응답하여 대응하는 시스템 컴포넌트에 대한 무결성 값을 추출할 수 있다. 예를 들어, 시스템 컴포넌트(115)의 메모리(130)로 적재가 사용자 프로세스(112)에 의해 시스템 콜 인터페이스(SCI)를 통해 요청될 수 있다. 이 경우, 단말기 무결성 검증부(DIV)는 시스템 컴포넌트(115)의 무결성 값을 추출하고, 추출된 무결성 값을 보안 장치 드라이버(116)를 통해 보안 장치(120)로 전송한다. 보안 장치(120)는 수신된 무결성 값을 기반으로 시스템 컴포넌트(115)에 대한 무결성 검증 동작을 수행하고, 검증 결과를 단말기 무결성 검증부(DIV)로 전송한다. 단말기 무결성 검증부(DIV)는 검증 결과에 대한 로그 메시지를 무결성 보고 모듈로 전송할 수 있다.
예시적으로, 단말기 무결성 검증부(DIV)는 애플리케이션 패키지 관리자(113)에 의해 설치되거나 또는 실행되는 애플리케이션(111)에 대한 무결성 검증 동작 및 애플리케이션(111) 실행에 요구되는 시스템 컴포넌트들에 대한 무결성 검증 동작을 수행할 수 있다. 예를 들어, 애플리케이션 패키지 관리자(113)에 의해 애플리케이션(111)이 실행되는 경우, 애플리케이션 패키지 관리자(113)는 시스템 콜 인터페이스(SCI)를 통해 애플리케이션(111)이 실행되는데 요구되는 시스템 컴포넌트(115)를 메모리(130)에 적재하거나 또는 시스템 컴포넌트가 적재된 메모리(130)의 영역으로 접근할 수 있다. 단말기 무결성 검증부(DIV)는 상술된 이벤트를 감지하고, 대응하는 시스템 컴포넌트에 대한 무결성 검증을 수행할 수 있다.
예시적으로, 단말기 무결성 검증부(DIV)는 부팅 단계에 따라 또는 표 1 및 표 2를 참조하여 설명된 검증 정책들에 따라 선택적으로 무결성 검증 동작을 수행할 수 있다.
시스템 컴포넌트(115)는 사용자 장치(100)의 커널 상에 포함된 커널 모듈, 커널 프로세스, 시스템 라이브러리와 같은 구성 요소들을 포함할 수 있다. 예시적으로, 사용자 영역(User Area)의 애플리케이션(111) 및 사용자 프로세스(112)는 시스템 컴포넌트(115)를 통해 커널 메모리 영역에 접근하거나 또는 사용자 장치(100)에 포함된 다른 장치들로 접근할 수 있다.
보안 장치 드라이버(116)는 단말기 무결성 검증부(DIV) 및 보안 장치(120) 사이의 인터페이싱을 제공한다. 예시적으로, 보안 장치 드라이버(116)는 단말기 무결성 검증부(DIV) 및 보안 장치(120) 사이에서 메시지 전달 및 스케쥴링을 지원하며, 무결성 값 또는 검증 결과에 대한 데이터의 열람을 지원하지 않을 수 있다. 즉, 보안 장치 드라이버(116)를 통해 데이터가 유출되지 않을 것이다.
메모리 관리자(117)는 시스템 콜 인터페이스(SCI)를 통한 요청에 따라 시스템 컴포넌트(115)를 메모리(130)에 적재하거나 또는 메모리(130)로의 엑세스를 관리할 수 있다. 예시적으로, 메모리 관리자(117)는 단말기 무결성 검증부(DIV)의 제어에 따라 메모리(130) 적재 및 엑세스를 관리할 수 있다.
도 5 내지 도 9는 도 3의 사용자 장치의 동작을 상세하게 보여주는 순서도들이다. 예시적으로, 도 5는 도 3의 S100 단계 및 S210 단계를 상세하게 보여주는 순서도이다. 도 6은 도 3의 S220 단계를 상세하게 보여주는 순서도이다. 도 7은 도 3의 S220 단계의 다른 동작을 보여주는 순서도이다. 도 8은 도 3의 S300 단계를 상세하게 보여주는 순서도이다. 도 9는 도 3의 S300 단계의 다른 동작을 보여주는 순서도이다.
이하에서, 도 5 내지 도 9를 참조하여, 사용자 장치(100)의 부팅 동작의 단계들 및 무결성 검증 동작이 상세하게 설명된다. 간결한 설명을 위하여, 이하의 각 동작 단계들은 사용자 장치(100)가 수행하는 것으로 설명된다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 각 동작 단계들은 사용자 장치(100)의 응용 프로세서(110), 단말기 무결성 검증부(DIV), 보안 장치(120), 별도의 소프트웨어, 또는 별도의 하드웨어에 의해 수행될 수 있다.
먼저, 도 1 및 도 5를 참조하면, S100 단계에서, 사용자 장치(100)는 단말기 초기화를 수행할 수 있다. S100 단계는 도 3을 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
S211 단계에서, 사용자 장치(100)는 부트-로더를 로딩한다. 예시적으로, 부트-로더는 메모리(130)의 특정 영역에 적재된다.
S212 단계에서, 사용자 장치(100)는 부트-로더 및 커널 이미지에 대한 무결성 검증을 수행한다. 예를 들어, 단말기 무결성 검증부(DIV)는 부트-로더 및 커널 이미지에 대한 무결성 값을 생성하고, 생성된 무결성 값을 보안 장치(120)로 전송한다. 보안 장치(120)는 수신된 무결성 값을 기반으로, 부트-로더 및 커널 이미지에 대한 무결성 검증을 수행할 수 있다. 검증 결과는 단말기 무결성 검증부(DIV)로 전송된다. 예시적으로, S212 단계의 무결성 검증은 정적 검증일 수 있다. 정적 검증은 특정 이벤트 발생 시점과 무관하게 특정 코드 실행 단계에서 미리 정의된 구성 요소에 대한 무결성 검증을 가리킨다.
S213 단계에서, 사용자 장치(100)는 무결성이 보장되는지 판별할 수 있다. 좀 더 상세한 예로서, 사용자 장치(100)는 S212 단계의 무결성 검증 결과에 따라 부트-로더 및 커널 이미지의 무결성이 보장되는지 판별할 수 있다.
무결성이 보장되지 않는 경우, (즉, 부트-로더 또는 커널 이미지가 변형된 경우 또는 무결성이 훼손된 경우) S214 단계에서, 사용자 장치(100)는 로그 메시지를 기록한다. 예시적으로, 로그 메시지는 검증 대상, 무결성 값, 검증 결과, 및 검증 시간에 대한 정보를 포함할 수 있다. 예시적으로, 기록된 로그 메시지는 무결성 보고 모듈(118, 도 4 참조)을 통해 외부 장치로 전송될 수 있다.
이 후, S215 단계에서, 사용자 장치(100)는 부트-로더의 적재를 중단한다. 즉, 사용자 장치(100)는 부팅 동작을 종료한다.
무결성이 보장되는 경우, S216 단계에서, 사용자 장치(100)는 부팅 시퀀스를 계속해서 수행한다. 예를 들어, 사용자 장치(100)는 부트-로더를 메모리(130)에 적재하고, 부트-로더를 실행하여 커널 이미지를 메모리(130)에 적재할 수 있다. 이후, S220 단계가 수행될 수 있다.
다음으로, 도 1 및 도 6을 참조하면, S216 단계가 수행된 이후에, 사용자 장치(100)는 S220 단계를 수행한다. S220 단계는 S221 단계 내지 S22c 단계를 포함한다. 먼저, 도 1 및 도 6을 참조하여 S221 단계 내지 S22b 단계가 설명된다.
S221 단계에서, 사용자 장치(100)는 커널 이미지의 로딩을 시작한다. 예를 들어, 메모리(130)에 적재된 커널 이미지의 압축이 해제되면서 커널이 메모리(130)에 적재될 수 있다.
S222 단계에서, 사용자 장치(100)는 부팅시 시스템 컴포넌트 검증 정책(VP_SCB; verification policy of system component on booting)을 확인할 수 있다. 예를 들어, 부팅시 시스템 컴포넌트 검증 정책은 표 1을 참조하여 설명된 제1 내지 제4 시스템 컴포넌트 검증 정책들 중 어느 하나로 미리 설정될 수 있다. 사용자 장치(100)는 미리 설정된 부팅시 시스템 컴포넌트 검증 정책(VP_SCB)을 확인할 수 있다.
S223 단계에서, 사용자 장치(100)는 시스템 컴포넌트 이벤트를 감지할 수 있다. 예를 들어, 커널이 로딩되는 도중에 시스템 컴포넌트들이 메모리(130)로 적재되는 이벤트가 발생할 수 있다. 단말기 무결성 검증부(DIV)는 시스템 콜 인터페이스(SCI)를 통해 시스템 컴포넌트들이 메모리(130)로 적재되는 이벤트를 감지할 수 있다. 예시적으로, 단말기 무결성 검증부(DIV)는 이벤트에 대응하는 시스템 콜에 대하여 후킹을 수행하고, 제어권을 획득할 수 있다. 즉, 이후에는 단말기 무결성 검증부(DIV)의 제어에 따라 관련 이벤트가 수행될 수 있다.
S224 단계에서, 사용자 장치(100)는 감지된 이벤트가 적재 이벤트인지 판별할 수 있다. 예를 들어, 감지된 이벤트는 시스템 컴포넌트가 메모리(130)로 적재되는 이벤트이거나 또는 시스템 컴포넌트가 적재된 메모리(130)로 접근하는 이벤트일 수 있다. 감지된 이벤트가 시스템 컴포넌트가 적재된 메모리(130)로 접근하는 이벤트인 경우, 사용자 장치(100)는 S223 단계의 동작을 다시 수행한다.
감지된 이벤트가 적재 이벤트인 경우, S225 단계에서, 사용자 장치(100)는 부팅시 시스템 컴포넌트 검증 정책(VP_SCB)을 기반으로 무결성 검증을 수행할 수 있다. 예를 들어, 감지된 이벤트가 적재 이벤트인 경우, 사용자 장치(100)는 대응하는 시스템 컴포넌트의 바이너리 파일을 읽고, 읽은 바이너리 파일에 대하여 무결성 검증을 수행할 수 있다. 예시적으로, 시스템 컴포넌트의 바이너리 파일은 사용자 장치(100)의 커널 영역에 포함된 정보일 수 있다. 이 때, 사용자 장치는 부팅시 시스템 컴포넌트 검증 정책(VP_SCB)을 기반으로 무결성 검증을 수행한다. 일 예로서, 부팅시 시스템 컴포넌트 검증 정책(VP_SCB)이 제1 시스템 컴포넌트 검증 정책(표 1 참조)인 경우, 사용자 장치(100)는 읽은 개별 바이너리 파일 에 대하여 무결성 검증을 수행할 수 있다. 마찬가지로, 부팅시 시스템 컴포넌트 검증 정책(VP_SCB)이 제2 내지 제4 시스템 컴포넌트 검증 정책들(표 1 참조) 중 어느 하나인 경우, 사용자 장치(100)는 대응하는 검증 정책에 따라 무결성 검증 동작을 수행할 것이다.
S226 단계에서, 사용자 장치(100)는 무결성 검증이 완료되었는지 판별할 수 있다. 예를 들어, 사용자 장치(100)는 부팅시 시스템 컴포넌트 검증 정책(VP_SCB)에 따라 검증 대상(즉, 적재될 시스템 컴포넌트들)에 대하여 무결성 검증이 완료되었는지 판별할 수 있다.
무결성 검증이 완료되지 않은 경우, 사용자 장치(100)는 S223 단계를 재수행하여 새로운 이벤트를 감지한다.
무결성 검증이 완료된 경우, S227 단계에서, 사용자 장치(100)는 검증 대상들의 무결성이 보장되는지 판별할 수 있다. 예를 들어, 단말기 무결성 검증부(DIV)는 보안 장치(120)로부터 무결성 검증 결과를 수신할 수 있다.
무결성이 보장되지 않는 경우, S228 단계에서, 사용자 장치(100)는 메모리(130)로의 접근 및 적재를 차단하고, 로그 메시지를 기록한다. 예시적으로, 기록된 로그 메시지는 무결성 보고 모듈(118)을 통해 외부 장치로 전송될 수 있다. 이 후, S229 단계에서, 사용자 장치(100)는 커널 로딩을 중단한다. 즉, 사용자 장치(100)는 부팅 동작을 종료한다.
무결성이 보장되는 경우, S22a 단계에서, 사용자 장치(100)는 메모리(130)로의 적재 및 접근을 허용한다. 예시적으로, S22a 단계에서, 사용자 장치(100)는 무결성 검증 결과에 대한 로그 메시지를 기록할 수 있다.
이 후, S22b 단계에서, 사용자 장치(100)는 커널 로딩이 완료되었는지 판별할 수 있다. 커널 로딩이 완료되지 않은 경우, 사용자 장치(100)는 S223 단계를 재수행하여 새로운 이벤트를 감지한다. 커널 로딩이 완료된 경우, 사용자 장치(100)는 S300 단계를 수행할 수 있다.
다음으로, 도 1 및 도 7을 참조하면, 커널 로딩시 사용자 장치(100)는 도 6을 참조하여 설명된 시스템 컴포넌트의 무결성 검증과 함께 애플리케이션에 대한 무결성 검증을 수행할 수 있다. 즉, 도 7에 도시된 바와 같이, 사용자 장치(100)는 S221 단계 및 S222 단계를 수행한 이후에, S22c 단계를 수행할 수 있다. S22c 단계에서, 사용자 장치(100)는 미리 설치된 애플리케이션, 관련 실행 환경 파일, 및 사용자 프로세스에 대한 무결성 검증을 수행할 수 있다. 예시적으로, S22c 단계의 동작은 도 6을 참조하여 설명된 시스템 컴포넌트에 대한 무결성 검증과 병행하여 수행될 수 있다. 예시적으로, S22c 단계의 무결성 검증 동작은 정적 검증일 수 있다.
이 후에 사용자 장치(100)는 S227 단계 내지 S22b 단계의 동작들을 수행할 수 있다. S227 단계 내지 S22b 단계의 동작들은 도 6을 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
다음으로, 도 1 및 도 8을 참조하면, S22c 단계 이후에 사용자 장치(100)는 S300 단계를 수행할 수 있다. S300 단계는 S311 단계 내지 S31d 단계를 포함한다. 예시적으로, S311 단계 내지 S31d 단계는 운영 체제 하에서의 시스템 컴포넌트에 대한 무결성 검증 동작이다.
S311 단계에서, 사용자 장치(100)는 운영 체제를 실행할 수 있다. 예시적으로, S22c 단계가 완료된 경우, 사용자 장치(100)의 단말 플랫폼 부팅 과정이 완료된 것을 의미한다. 즉, S311 단계에서, 사용자 장치(100)는 운영 체제를 실행하고, 사용자 장치(100)는 운영 체제 하에서 사용자에 의해 데이터 또는 명령어 입력 또는 하드웨어 제어 등이 가능한 상태일 것이다.
S312 단계에서, 사용자 장치(100)는 부팅 후 시스템 컴포넌트 검증 정책(VP_SCAB; verification policy of system component after booting)을 확인할 수 있다. 예시적으로, 부팅 후 시스템 컴포넌트 검증 정책(VP_SCAB)은 표 1을 참조하여 설명된 제1 내지 제4 시스템 컴포넌트 검증 정책들 중 어느 하나로 미리 설정될 수 있다.
S313 단계에서, 사용자 장치(100)는 시스템 컴포넌트 이벤트를 감지할 수 있다. 예를 들어, 사용자 프로세스(112)에 의해 시스템 컴포넌트에 대한 적재 요청 또는 메모리(130)로의 접근 요청이 발생할 수 있다. 단말기 무결성 검증부(DIV)는 시스템 콜 인터페이스(SCI)를 통해 적재 요청 또는 접근 요청에 대한 이벤트를 감지할 수 있다. 예시적으로, 단말기 무결성 검증부(DIV)는 적재 요청 또는 접근 요청의 시스템 콜에 대하여 후킹을 수행하고, 제어권을 획득할 수 있다.
S314 단계에서, 사용자 장치(100)는 감지된 이벤트가 적재 이벤트인지 판별할 수 있다.
감지된 이벤트가 적재 이벤트인 경우, S315 단계에서, 사용자 장치(100)는 대응하는 시스템 컴포넌트의 바이너리 파일을 읽는다. 감지된 이벤트가 적재 이벤트가 아닌 경우, (즉, 접근 이벤트인 경우) S316 단계에서, 사용자 장치(100)는 메모리(130)에 적재된 대응하는 시스템 컴포넌트를 엑세스한다.
S317 단계에서, 사용자 장치(100)는 부팅 후 시스템 컴포넌트 검증 정책(VP_SCAB)을 기반으로 대응하는 시스템 컴포넌트에 대한 무결성 검증을 수행한다. S317 단계의 동작은 표 1 및 도 6의 S225 단계와 유사하므로 이에 대한 상세한 설명은 생략된다.
S318 단계에서, 사용자 장치(100)는 검증 대상의 무결성이 보장되는지 판별할 수 있다.
무결성이 보정되는 경우, S319 단계에서, 사용자 장치(100)는 메모리(130)로의 엑세스 또는 적재를 허용한다. 즉, 사용자 장치(100)는 감지된 이벤트에 대응하는 동작을 수행할 수 있다. S31a 단계에서, 사용자 장치(100)는 로그 메시지를 기록하고, 리포팅할 수 있다. 이 후, S31d 단계에서, 사용자 장치(100)는 단말기 종료 상태인지 판별할 수 있다. 판별 결과에 따라 종료되지 않은 경우, 사용자 장치(100)는 S313 단계를 재수행하여 새로운 이벤트를 감지할 수 있다.
S318 단계의 판별 결과에 따라 무결성이 보장되지 않는 경우, S31b 단계에서, 사용자 장치(100)는 메모리(130)로부터 시스템 컴포넌트를 해제하고, 원본 시스템 컴포넌트를 재적재한다. 예시적으로, 사용자 장치(100)는 시스템 컴포넌트가 메모리(130)로 적재되는 것을 차단할 수 있다.
S31c 단계에서, 사용자 장치(110)은 로그 메시지를 기록하고 리포팅할 수 있다. 이 후, 사용자 장치(100)는 S31d 단계를 수행할 수 있다.
다음으로, 도 1 및 도 9를 참조하면, S22c 단계 이후에 사용자 장치(100)는 S300 단계를 수행할 수 있다. S300 단계는 S321 단계 내지 S32b 단계를 더 포함할 수 있다. 예시적으로, 도 8을 참조하여 설명된 S311 단계 내지 S31d 단계 및 도 9를 참조하여 설명되는 S321 단계 내지 S32b 단계는 서로 병행하여 수행될 수 있다.
앞서 설명된 바와 같이, S22c 단계가 완료된 경우, 사용자 장치(100)의 단말 플랫폼 부팅 과정이 완료된 것을 의미한다. 즉, S311 단계에서, 사용자 장치(100)는 운영 체제를 실행하고, 사용자 장치(100)는 운영 체제 하에서 사용자에 의해 데이터 또는 명령어 입력 또는 하드웨어 제어 등이 가능한 상태일 것이다.
S321 단계에서, 사용자 장치(100)는 애플리케이션(111)을 실행할 수 있다. 예를 들어, 애플리케이션 패키지 관리자(113)는 유저의 요청에 따라 애플리케이션(111)을 실행할 수 있다.
S322 단계에서, 사용자 장치(100)는 애플리케이션(111)(특히, 애플리케이션의 설치 파일)에 대한 무결성 검증을 수행한다. 예를 들어, 단말기 무결성 관리자(DIV)는 애플리케이션(111)의 설치 파일에 대하여 무결성 검증 동작을 수행한다.
S323 단계에서, 사용자 장치(100)는 실행될 애플리케이션(111)의 무결성이 보장되는지 판별할 수 있다.
무결성이 보장되지 않는 경우, S324 단계에서, 사용자 장치(100)는 애플리케이션(111)의 실행을 중단한다. 예를 들어, 단말기 무결성 검증부(DIV)는 애플리케이션 패키지 관리자(113)로 애플리케이션(111)의 실행 중단을 요청할 수 있다.
이 후, S325 단계에서, 사용자 장치(100)는 로그 메시지를 기록하고 리포팅할 수 있다.
S323 단계의 판별 결과에 따라, 무결성이 보장되는 경우, S326 단계에서, 사용자 장치(100)는 이벤트를 감지할 수 있다. 예를 들어, 단말기 무결성 검증부(DIV)는 애플리케이션 패키지 관리자(113)에 의해 요청되는 메모리(130)로의 시스템 클래스 적재 요청 또는 실행 요청을 시스템 콜 인터페이스를 통해 감지할 수 있다. 예시적으로, 시스템 클래스는 애플리케이션(111)의 실행에 요구되는 다양한 정보를 포함한다.
S327 단계에서, 사용자 장치(100)는 미리 정해진 애플리케이션 검증 정책(VP_APP; Verification Policy of Application)을 기반으로 시스템 클래스에 대한 무결성 검증을 수행한다. 예를 들어, 미리 정해진 애플리케이션 검증 정책(VP_APP)은 표 2를 참조하여 설명된 제1 내지 제3 애플리케이션 검증 정책들 중 어느 하나로 미리 설정될 수 있다. 표 2를 참조하여 설명된 바와 같이, 단말기 무결성 검증부(DIV)는 미리 정해진 애플리케이션 검증 정책(VP_APP)을 기반으로 시스템 클래스에 대하여 무결성 검증을 수행할 수 있다.
S328 단계에서, 사용자 장치(100)는 시스템 클래스의 무결성이 보장되는지 판별할 수 있다.
시스템 클래스의 무결성이 보장되지 않는 경우, S329 단계에서, 사용자 장치(100)는 애플리케이션(111)을 강제 종료시킨다. 예를 들어, 단말기 무결성 검증부(DIV)는 애플리케이션 패키지 관리자(113) 또는 애플리케이션 실행자(114)로 애플리케이션(111)이 강제 종료를 요청할 수 있다.
시스템 클래스의 무결성이 보장되는 경우, S32a 단계에서, 사용자 장치(100)는 애플리케이션(111)이 종료되는지 판별할 수 있다. 애플리케이션이 종료되는 경우, S32b 단계에서, 사용자 장치(100)는 애플리케이션(111)을 정상 종료한다. 예를 들어, 단말기 무결성 검증부(DIV)는 애플리케이션 패키지 관리자(113)로 정상 종료를 요청할 수 있다.
애플리케이션이 종료되지 않은 경우, 사용자 장치(100)는 S326 단계를 재수행하여 새로운 시스템 클래스 이벤트를 감지할 수 있다.
예시적으로, 도 9를 참조하여 설명된 애플리케이션(111) 실행 과정에서, 시스템 컴포넌트에 대한 적재 요청 또는 접근 요청이 발생할 수 있다. 이 경우, 도 8을 참조하여 설명된 시스템 컴포넌트에 대한 무결성 검증이 수행될 것이다. 즉, 사용자 장치(100)가 정상 부팅되어 운영 체제를 구동하는 도중에, 사용자 장치(100)는 도 8 및 도 9를 참조하여 설명된 시스템 컴포넌트, 애플리케이션, 시스템 클래스 등에 대한 무결성 검증 동작은 연쇄적 또는 병렬적으로 수행될 수 있다.
예시적으로, 도 1 내지 도 9를 참조하여 설명된 본 발명의 실시 예들에서는 단말기 무결성 검증부(DIV)가 시스템 컴포넌트, 애플리케이션 파일, 시스템 클래스 등에 대한 무결성 검증을 수행하는 것으로 설명되었으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 본 발명의 기술적 사상에 따른 단말기 무결성 검증부(DIV)는 사용자 장치(100)의 동작 단계(예를 들어, 부트-로더 로딩, 커널 로딩, 운영 체제 실행 등)에 따라 별도의 단말기 무결성 검증부들로 구현될 수 있다. 예를 들어, 부트-로더 로딩 단계에서는 부트-로더 상에 구현된 단말기 무결성 검증부에 의해 무결성 검증 동작이 수행될 수 있고, 커널 로딩 단계에서는 커널 상에 구현된 단말기 무결성 검증부에 의해 무결성 검증 동작이 수행될 수 있다.
또한, 단말기 무결성 검증부(DIV)는 검증 대상에 따라 별도의 단말기 무결성 검증부들로 구현될 수 있다. 예를 들어, 단말기 무결성 검증부(DIV)는 시스템 컴포넌트 무결성 검증부 및 애플리케이션 무결성 검증부를 포함할 수 있다. 시스템 컴포넌트 무결성 검증부는 사용자 장치(100)의 시스템 영역 상에 구현되어 시스템 컴포넌트에 대한 무결성 검증을 수행할 수 있다. 애플리케이션 무결성 검증부는 사용자 장치(100)의 실행 영역 상에 구현되어 애플리케이션 파일 및 시스템 클래스에 대한 무결성 검증을 수행할 수 있다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 본 발명의 기술적 사상에 따른 단말기 무결성 검증부(DIV)는 다양하게 변형될 수 있음은 잘 이해될 것이다.
도 10은 본 발명의 실시 예 따른 사용자 시스템을 예시적으로 보여주는 도면이다. 설명 및 도면의 간결성을 위하여, 도 10의 사용자 시스템을 설명하는데 불필요한 구성요소들 및 중복되는 구성 요소들은 생략된다.
도 10을 참조하면, 사용자 시스템(1000)은 사용자 장치(100) 및 모니터링 서버(1100)를 포함한다. 사용자 장치(100)는 단말기 무결성 검증부(DIV), 보안 장치(120), 및 무결성 보고 모듈(118)을 포함한다. 예시적으로, 사용자 장치(100)는 도 1 내지 도 9를 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다.
예시적으로, 사용자 장치(100)는 무결성 검증 결과(또는 로그 메시지)를 모니터링 서버(1100)로 전송할 수 있다. 예를 들어, 무결성 보고 모듈(118)은 단말기 무결성 검증부(DIV) 및 보안 장치(120)의 무결성 검증에 대한 검증 결과가 포함된 로그 메시지를 모니터링 서버(1100)로 전송할 수 있다. 모니터링 서버(1100)는 수신된 로그 메시지를 저장하고, 저장된 로그 메시지를 기반으로 다양한 사용자 장치들에 대한 신뢰성 판별 작업을 수행할 수 있다. 예시적으로, 무결성 보고 모듈(118)은 사용자 인터페이스(160, 도 1 참조)(예를 들어, 디스플레이)를 통해 유저(USER)에게 로그 메시지를 제공할 수 있다. 예시적으로, 무결성 보고 모듈(118)에 의해 전송되는 로그 메시지는 검증 대상(예를 들어, 시스템 컴포넌트 또는 시스템 클래스), 추출된 무결성 값, 검증 결과, 및 검증 시간에 대한 정보를 포함할 수 있다.
상술된 본 발명의 실시 예에 따른 사용자 장치(100)는 단말 초기화, 부트-로더 로딩, 커널 로딩, 운영 체제 실행 등과 같은 각 운용 단계에 따라 또는 검증 대상에 따라 별도의 검증 기법(예를 들어, 동적 검증, 정적 검증, 또는 별도의 검증 정책)을 사용하여 사용자 장치(100)의 무결성을 검증할 수 있다. 따라서, 종래의 무결성 검증 방법들에 비해 사용자 장치(100)의 성능 하락 및 전력 소모에 최소한의 영향을 미치게 된다.
또한, 사용자 장치(100)의 무결성 검증 동작에 요구되는 최소한의 연산 프로세서 및 검증을 위한 정보(예를 들어, 무결성 검증 관련 데이터)를 기반으로 보안 장치(120)를 구현함으로써, 보안 장치(120)의 운용에 따른 오버헤드(예를 들어, 전력 소모 증가, 연산 시간 증가 등)가 감소된다.
또한, 사용자 장치(100)가 사용자 영역의 애플리케이션뿐만 아니라, 애플리케이션과 연관된 시스템 클래스 및 시스템 컴포넌트들에 대하여 무결성 검증을 수행함으로써, 사용자 장치(100)를 구성하는 사용자 영역 및 시스템 영역에 대한 계층적 신뢰성이 보장된다.
본 발명의 상세한 설명에서는 구체적인 실시 예들에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100 : 사용자 장치
110 : 응용 프로세서
120 : 보안 장치
121 : 통신부
122 : 프로세서
123 : 차폐 메모리
124 : 인코딩 및 디코딩 모듈
130 : 메모리
140 : 스토리지
150 : 롬
160 : 사용자 인터페이스
170 : 장치들
DIV : 단말기 무결성 검증부

Claims (14)

  1. 사용자 장치에 대한 무결성 검증 방법에 있어서,
    부트-로더를 실행하는 동안, 부팅시 시스템 컴포넌트 검증 정책(VP_SCB; verification policy of system component on booting)을 기반으로 제1 검증 대상의 무결성을 검증하는 단계;
    상기 제1 검증 대상에 대한 상기 무결성 검증 결과에 따라 커널 이미지를 압축 해제하는 단계;
    상기 커널 이미지가 압축 해제된 이후에, 부팅 후 시스템 컴포넌트 검증 정책(VP_SCAB; verification policy of system component after booting)을 기반으로 제2 검증 대상의 무결성을 검증하는 단계; 및
    상기 제2 검증 대상에 대한 상기 무결성 검증 결과에 따라 운영 체제를 구동하고, 상기 운영 체제가 구동되는 동안, 애플리케이션 검증 정책(VP_APP; Verification Policy of Application)을 기반으로 제3 검증 대상의 무결성을 검증하는 단계를 포함하고,
    상기 제1 검증 대상은 상기 부트-로더 및 상기 커널 이미지를 포함하고, 상기 제2 검증 대상은 제1 시스템 컴포넌트 및 미리 설치된 애플리케이션과 관련된 파일들을 포함하고, 상기 제3 검증 대상은 제2 시스템 컴포넌트 및 실행될 애플리케이션과 관련된 파일들을 포함하고,
    상기 VP_SCB, 상기 VP_SCAB, 및 상기 VP_APP 각각은 상기 제1, 제2, 및 제3 검증 대상들에 따라 정적 검증 방식 또는 동적 검증 방식을 포함하고,
    상기 VP_SCB는 모든 시스템 컴포넌트들에 대한 무결성을 검증하는 정책, 상기 시스템 컴포넌트들 중 선택된 시스템 컴포넌트에 대한 무결성 검증하는 정책, 상기 시스템 컴포넌트들을 그룹화하여 무결성을 검증하는 정책, 및 누적된 단방향 해쉬를 기반으로 상기 시스템 컴포넌트의 무결성을 검증하는 정책을 포함하는 제1 정책 그룹 중 선택된 적어도 하나의 제1 정책을 포함하고,
    상기 VP_SCAB는 상기 제1 정책 그룹들 중 선택된 적어도 하나의 제2 정책을 포함하고,
    상기 VP_APP은 애플리케이션 설치 파일들 및 상기 제2 시스템 컴포넌트에 의해 획득된 시스템 클래스들의 모든 부분을 검증하는 정책, 상기 애플리케이션 파일들 및 상기 제2 시스템 컴포넌트에 의해 획득된 시스템 클래스들 중 실행 코드 영역만 검증하는 정책, 및 상기 애플리케이션 설치 파일들만 검증하는 정책을 포함하는 제2 정책 그룹들 중 선택된 적어도 하나의 제3 정책을 포함하고,
    상기 사용자 장치는 자원-제약형 장치인 무결성 검증 방법.
  2. 제 1 항에 있어서,
    상기 부트-로더가 실행되기 이전에 부트 제어 코드를 실행하여 초기화를 수행하는 단계를 더 포함하는 무결성 검증 방법.
  3. 제 1 항에 있어서,
    상기 제1 검증 대상의 무결성을 검증하는 단계는:
    상기 부트-로더 및 상기 커널 이미지의 무결성 값들을 추출하는 단계;
    상기 무결성 값들을 기반으로 상기 부트-로더 및 상기 커널 이미지의 무결성을 검증하는 단계; 및
    상기 부트-로더 및 상기 커널 이미지의 무결성이 훼손된 경우, 상기 부트-로더의 실행을 중단하는 단계를 포함하는 무결성 검증 방법.
  4. 제 3 항에 있어서,
    상기 VP_SCB는 상기 부트-로더가 실행될 때마다 무결성 검증이 수행되는 상기 정적 검증 방식인 무결성 검증 방법.
  5. 제 1 항에 있어서,
    상기 제2 검증 대상의 무결성을 검증하는 단계는:
    상기 제1 시스템 컴포넌트에 대한 이벤트를 감지하는 단계;
    상기 이벤트가 메모리로의 적재 이벤트인 경우, 부팅 이전에, 상기 VP_SCB를 기반으로 상기 제1 시스템 컴포넌트의 무결성을 검증하는 단계; 및
    상기 제1 시스템 컴포넌트의 무결성이 보장되는 경우 상기 제1 시스템 컴포넌트에 대한 상기 이벤트를 수행하고, 상기 제1 시스템 컴포넌트의 무결성이 훼손된 경우 상기 제1 시스템 컴포넌트에 대한 상기 이벤트를 수행하지 않고 로그 메시지를 기록하는 단계를 포함하는 무결성 검증 방법.
  6. 제 5 항에 있어서,
    부팅 이전에, 상기 VP_SCB가 상기 제1 정책 그룹으로부터 상기 선택된 제1 정책을 포함하도록 설정하는 단계를 더 포함하고,
    상기 사용자 장치는 상기 제1 정책 그룹에 포함된 상기 정책들 각각을 수행하는 무결성 검증 방법.
  7. 제 5 항에 있어서,
    상기 제2 검증 대상의 무결성을 검증하는 단계는 상기 미리 설치된 애플리케이션과 연관된 파일들의 무결성을 검증하는 단계를 더 포함하는 무결성 검증 방법.
  8. 제 7 항에 있어서
    상기 VP_SCAB는 상기 시스템 컴포넌트의 이벤트 발생 유무에 따라 무결성 검증이 수행되는 상기 동적 검증 방식 및 상기 미리 설치된 애플리케이션과 관련된 파일들에 대한 무결성 검증이 수행되는 상기 정적 검증 방식을 포함하는 무결성 검증 방법.
  9. 제 1 항에 있어서,
    상기 제3 검증 대상의 무결성을 검증하는 단계는:
    상기 제2 시스템 컴포넌트에 대한 이벤트를 감지하는 단계;
    상기 이벤트가 메모리로의 적재 이벤트인지 판별하는 단계;
    상기 이벤트가 상기 적재 이벤트인 경우, 상기 제2 시스템 컴포넌트의 바이너리 파일을 읽고, 상기 이벤트가 상기 적재 이벤트가 아닌 경우, 상기 메모리에 저장된 상기 시스템 컴포넌트를 읽는 단계;
    상기 VP_APP을 기반으로 상기 읽은 제2 시스템 컴포넌트의 무결성을 검증하는 단계; 및
    상기 읽은 제2 시스템 컴포넌트의 무결성이 보장되는 경우 상기 이벤트를 수행하고, 상기 읽은 제2 시스템 컴포넌트의 무결성이 훼손된 경우 상기 이벤트를 수행하지 않고, 로그 메시지를 기록하는 단계를 포함하는 무결성 검증 방법.
  10. 제 9 항에 있어서,
    상기 제3 검증 대상의 무결성을 검증하는 단계는:
    상기 실행될 애플리케이션의 설치 파일의 무결성을 검증하는 단계; 및
    상기 실행될 애플리케이션의 설치 파일의 무결성이 훼손된 경우 상기 실행될 애플리케이션의 실행을 중단하고, 로그 메시지를 기록하는 단계를 더 포함하는 무결성 검증 방법.
  11. 제 10 항에 있어서,
    상기 제3 검증 대상의 무결성을 검증하는 단계는:
    상기 실행될 애플리케이션의 설치 파일의 무결성이 보장된 경우, 상기 실행될 애플리케이션과 연관된 시스템 클래스에 대한 이벤트를 감지하는 단계;
    상기 VP_APP을 기반으로 상기 시스템 클래스의 무결성을 검증하는 단계; 및
    상기 시스템 클래스의 무결성이 훼손된 경우, 상기 실행될 애플리케이션을 강제 종료하는 단계를 더 포함하는 무결성 검증 방법.
  12. 사용자 장치에 있어서,
    단말기 초기화 단계, 부트-로더 실행 단계, 커널 실행 단계, 및 운영 체제 구동 단계를 포함하는 부팅 동작을 수행하도록 구성된 응용 프로세서;
    상기 응용 프로세서의 제어에 따라 시스템 컴포넌트 및 애플리케이션 관련 파일들을 적재하는 메모리;
    상기 부팅 동작의 각 단뎨에 따라 상기 시스템 컴포넌트 또는 상기 애플리케이션 관련 파일들의 무결성 값을 추출하도록 구성된 장치 무결성 검증부;
    상기 추출된 무결성 값들을 기반으로 검증 대상의 무결성을 검증하도록 구성된 보안 장치를 포함하고,
    상기 장치 무결성 검증부는:
    상기 부트-로더 실행 단계 동안, 상기 보안 장치로부터 부팅시 시스템 컴포넌트 검증 정책(VP_SCB; verification policy of system component on booting)에 따른 제1 검증 대상의 제1 검증 결과를 수신하고;
    상기 제1 검증 결과에 따라 동작을 중단하여 상기 부팅 동작을 종료하고;
    상기 제1 검증 결과에 따라 커널 이미지를 압축해제하고;
    상기 커널 이미지가 압축 해제된 이후에 그리고 상기 운영 체제 구동 단계 이전에, 상기 보안 장치로부터 부팅 후 시스템 컴포넌트 검증 정책(VP_SCAB; verification policy of system component after booting)에 따른 제2 검증 대상의 제2 검증 결과를 수신하고;
    상기 제2 검증 결과에 따라 상기 시스템 컴포넌트 또는 상기 애플리케이션 관련 파일들에 대한 동작을 중단하여 상기 부팅 동작을 종료하고;
    상기 제2 검증 결과에 따라 운영 체제를 구동하고;
    상기 운영 체제가 구동되는 동안 상기 보안 장치로부터 애플리케이션 검증 정책(VP_APP; Verification Policy of Application)에 따른 제3 검증 대상의 제3 검증 결과를 수신하도록 구성되고,
    상기 제1 검증 대상은 상기 부트-로더 및 상기 커널 이미지를 포함하고, 상기 제2 검증 대상은 제1 시스템 컴포넌트 및 미리 설치된 애플리케이션과 관련된 파일들을 포함하고, 상기 제3 검증 대상은 제2 시스템 컴포넌트 및 실행될 애플리케이션과 관련된 파일들을 포함하고,
    상기 VP_SCB, 상기 VP_SCAB, 및 상기 VP_APP 각각은 상기 제1, 제2, 및 제3 검증 대상들에 따라 정적 검증 방식 또는 동적 검증 방식을 포함하고,
    상기 VP_SCB는 모든 시스템 컴포넌트들에 대한 무결성을 검증하는 정책, 상기 시스템 컴포넌트들 중 선택된 시스템 컴포넌트에 대한 무결성 검증하는 정책, 상기 시스템 컴포넌트들을 그룹화하여 무결성을 검증하는 정책, 및 누적된 단방향 해쉬를 기반으로 상기 시스템 컴포넌트의 무결성을 검증하는 정책을 포함하는 제1 정책 그룹 중 선택된 적어도 하나의 제1 정책을 포함하고,
    상기 VP_SCAB는 상기 제1 정책 그룹들 중 선택된 적어도 하나의 제2 정책을 포함하고,
    상기 VP_APP은 애플리케이션 설치 파일들 및 상기 제2 시스템 컴포넌트에 의해 획득된 시스템 클래스들의 모든 부분을 검증하는 정책, 상기 애플리케이션 파일들 및 상기 제2 시스템 컴포넌트에 의해 획득된 시스템 클래스들 중 실행 코드 영역만 검증하는 정책, 및 상기 애플리케이션 설치 파일들만 검증하는 정책을 포함하는 제2 정책 그룹들 중 선택된 적어도 하나의 제3 정책을 포함하고,
    상기 사용자 장치는 자원-제약형 장치인 사용자 장치.
  13. 제 12 항에 있어서,
    상기 보안 장치는
    상기 장치 무결성 검증부와 암호화된 시리얼 통신을 수행하는 통신부;
    상기 시스템 컴포넌트 및 상기 애플리케이션 관련 파일들 각각에 대한 무결성 검증 관련 데이터 및 키 값을 저장하는 차폐 메모리; 및
    상기 추출된 무결성 값을 기반으로 상기 무결성 검증을 수행하는 프로세서를 포함하되,
    상기 보안 장치는 상기 키 값을 기반으로 상기 단말기 무결성 검증부와 암호 통신을 수행하는 사용자 장치.
  14. 제 12 항에 있어서,
    상기 단말기 무결성 검증부는 상기 응용 프로세서의 제어에 따라 구동되는 사용자 장치.
KR1020150039016A 2015-03-20 2015-03-20 사용자 장치 및 그것에 대한 무결성 검증 방법 KR102324336B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150039016A KR102324336B1 (ko) 2015-03-20 2015-03-20 사용자 장치 및 그것에 대한 무결성 검증 방법
US15/068,111 US10180842B2 (en) 2015-03-20 2016-03-11 User device and integrity verification method of the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150039016A KR102324336B1 (ko) 2015-03-20 2015-03-20 사용자 장치 및 그것에 대한 무결성 검증 방법

Publications (2)

Publication Number Publication Date
KR20160112757A KR20160112757A (ko) 2016-09-28
KR102324336B1 true KR102324336B1 (ko) 2021-11-11

Family

ID=56925204

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150039016A KR102324336B1 (ko) 2015-03-20 2015-03-20 사용자 장치 및 그것에 대한 무결성 검증 방법

Country Status (2)

Country Link
US (1) US10180842B2 (ko)
KR (1) KR102324336B1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10789371B2 (en) * 2016-06-20 2020-09-29 Intel Corporation Technologies for trusted I/O with a channel identifier filter and processor-based cryptographic engine
KR101946346B1 (ko) * 2016-12-02 2019-02-11 충남대학교산학협력단 패치 자동 설치 시스템 및 방법
KR20180080519A (ko) * 2017-01-04 2018-07-12 에이치피프린팅코리아 주식회사 애플리케이션을 백업하기 위한 화상 형성 장치 및 그 동작 방법
KR102434444B1 (ko) 2017-11-29 2022-08-19 한국전자통신연구원 가상 트러스트 컴퓨팅 베이스를 이용한 기기 보안성 검증 방법 및 장치
US10719606B2 (en) * 2018-02-23 2020-07-21 Infineon Technologies Ag Security processor for an embedded system
JP6706278B2 (ja) * 2018-03-27 2020-06-03 キヤノン株式会社 情報処理装置、及び情報処理方法
US11615188B2 (en) * 2018-05-02 2023-03-28 Hewlett-Packard Development Company, L.P. Executing software
KR102286794B1 (ko) * 2018-08-16 2021-08-06 경희대학교 산학협력단 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법
US11055105B2 (en) * 2018-08-31 2021-07-06 Micron Technology, Inc. Concurrent image measurement and execution
DE102018215011A1 (de) * 2018-09-04 2020-03-05 Audi Ag Verfahren zum Installieren eines Programmcodepakets in ein Gerät sowie Gerät und Kraftfahrzeug
US11790119B2 (en) * 2018-11-16 2023-10-17 Apple Inc. Application integrity attestation
KR102205779B1 (ko) * 2019-01-30 2021-01-21 순천향대학교 산학협력단 적은 자원을 활용한 무결성 상호 검증 방법 및 시스템
KR102310766B1 (ko) 2019-12-10 2021-10-12 재단법인대구경북과학기술원 어플리케이션의 무결성 검사방법
US20230261875A1 (en) * 2020-05-19 2023-08-17 Mitsubishi Electric Corporation Apparatus, network apparatus, and command execution method
CN114625443A (zh) * 2022-03-23 2022-06-14 珠海雷酷互动科技有限公司 一种安卓系统虚拟环境运行方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100011200A1 (en) * 2006-05-24 2010-01-14 Rosenan Avner Method and system for defending security application in a user's computer
KR101064164B1 (ko) * 2011-03-02 2011-09-15 (주)아이넷캅 리눅스 커널 기반 스마트 플랫폼 내에서의 커널 무결성 검사 및 변조된 커널 데이터 복구 방법
US20120272296A1 (en) * 2006-04-27 2012-10-25 Edin Hodzic Method and system for protecting against the execution of unauthorized software

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6973305B2 (en) 2003-09-10 2005-12-06 Qualcomm Inc Methods and apparatus for determining device integrity
KR101229521B1 (ko) 2005-12-28 2013-02-05 삼성전자주식회사 디바이스 메모리의 무결성 확인 방법 및 장치
US8904190B2 (en) * 2010-10-20 2014-12-02 Advanced Micro Devices, Inc. Method and apparatus including architecture for protecting sensitive code and data
ES2741176T3 (es) * 2010-12-30 2020-02-10 Cellcrypt Inc Método de establecimiento de grupos seguros de contactos de confianza con derechos de acceso en un sistema de comunicación segura
KR20130101648A (ko) 2012-02-22 2013-09-16 한국전자통신연구원 가상화를 위한 보안 제공 장치 및 방법
KR101740256B1 (ko) 2012-11-26 2017-06-09 한국전자통신연구원 모바일 앱 무결성 보증 장치 및 방법
KR20150007034A (ko) 2013-07-10 2015-01-20 삼성전자주식회사 휴대형 전자장치의 어플리케이션 보안 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120272296A1 (en) * 2006-04-27 2012-10-25 Edin Hodzic Method and system for protecting against the execution of unauthorized software
US20100011200A1 (en) * 2006-05-24 2010-01-14 Rosenan Avner Method and system for defending security application in a user's computer
KR101064164B1 (ko) * 2011-03-02 2011-09-15 (주)아이넷캅 리눅스 커널 기반 스마트 플랫폼 내에서의 커널 무결성 검사 및 변조된 커널 데이터 복구 방법

Also Published As

Publication number Publication date
KR20160112757A (ko) 2016-09-28
US20160274918A1 (en) 2016-09-22
US10180842B2 (en) 2019-01-15

Similar Documents

Publication Publication Date Title
KR102324336B1 (ko) 사용자 장치 및 그것에 대한 무결성 검증 방법
KR102546601B1 (ko) 정적 바이너리 계측을 사용하여 커널 제어-흐름 무결성을 보호하기 위한 방법 및 장치
Sun et al. TrustOTP: Transforming smartphones into secure one-time password tokens
US9811479B2 (en) Cryptographic pointer address encoding
US10635821B2 (en) Method and apparatus for launching a device
CN108475217B (zh) 用于审计虚拟机的系统及方法
KR102102090B1 (ko) Arm® trustzone™ 구현을 위한 펌웨어 기반 신뢰 플랫폼 모듈
KR101402542B1 (ko) 지속형 보안 시스템 및 지속형 보안 방법
CN110457894B (zh) root权限的分配方法、装置、存储介质及终端设备
JP5346608B2 (ja) 情報処理装置およびファイル検証システム
US11762987B2 (en) Systems and methods for hardening security systems using data randomization
US9870472B2 (en) Detecting malign code in unused firmware memory
US11663017B2 (en) Kernel space measurement
CN114402295A (zh) 安全运行时系统和方法
US11636209B2 (en) Data structure measurement comparison
EP3048550B1 (en) Measurement method, electronic device and measurement system
CN113569246A (zh) 漏洞检测方法、装置、计算机设备和存储介质
US11886350B2 (en) System memory context determination for integrity monitoring and related techniques
US10019577B2 (en) Hardware hardened advanced threat protection
CN107844362B (zh) 虚拟化tpm设备的系统、方法、虚拟机及可读存储介质
US10754931B2 (en) Methods for configuring security restrictions of a data processing system
US20180218132A1 (en) Application portability via application(s) installed on a portable storage device
US11822663B2 (en) Supervisor-based firmware hardening
US20230059261A1 (en) Information handling systems and methods to provide a secure platform control point for cloud-native applications
CN113420340A (zh) 信息记录装置、计算机设备及信息记录方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right