KR101968382B1 - Tpm 기반의 사용자 장치 및 이를 이용한 부팅 방법 - Google Patents

Tpm 기반의 사용자 장치 및 이를 이용한 부팅 방법 Download PDF

Info

Publication number
KR101968382B1
KR101968382B1 KR1020160089481A KR20160089481A KR101968382B1 KR 101968382 B1 KR101968382 B1 KR 101968382B1 KR 1020160089481 A KR1020160089481 A KR 1020160089481A KR 20160089481 A KR20160089481 A KR 20160089481A KR 101968382 B1 KR101968382 B1 KR 101968382B1
Authority
KR
South Korea
Prior art keywords
image
integrity verification
hash value
boot
integrity
Prior art date
Application number
KR1020160089481A
Other languages
English (en)
Other versions
KR20180007922A (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 KR1020160089481A priority Critical patent/KR101968382B1/ko
Publication of KR20180007922A publication Critical patent/KR20180007922A/ko
Application granted granted Critical
Publication of KR101968382B1 publication Critical patent/KR101968382B1/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
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • 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
    • 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/033Test or assess software

Landscapes

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

Abstract

본 발명은 TPM 기반의 사용자 장치 및 이를 이용한 부팅방법에 관한 것이다.
이러한 본 명세서는 부트로더와 운영체제의 커널을 실행하도록 구성되고, 상기 실행된 부트로더의 이미지와 상기 실행된 커널의 이미지를 기반으로 적어도 하나의 무결성 검증을 수행하는 보안 부트 프로세서, 및 무결한 부트로더의 이미지와 무결한 커널의 이미지에 관한 서명, 상기 사용자 장치에 관한 암호화 키를 저장하는 TPM을 포함하는 사용자 장치를 게시한다. 모바일 디바이스나 PC등을 대상으로 하는 Root of Turst 기반의 보안 부트, 그리고 Verified U-Boot 기반의 저사양 범용 IoT 디바이스의 보안 취약점을 보완할 수 있다.

Description

TPM 기반의 사용자 장치 및 이를 이용한 부팅 방법{USER APPARATUS BASED ON TRUSTED PLATFORM MODULE AND BOOTING METHOD USING THE SAME}
본 발명은 사용자 장치에서의 안전한 부팅에 관한 것으로서, 보다 상세하게는 TPM 기반의 사용자 장치 및 이를 이용한 부팅 방법에 관한 것이다.
범용(COTS; Commercial Off-The-Shelf) IoT(Internet of Things) 디바이스는 오픈소스(Open source) 기반의 인터넷에 연결 가능한 하드웨어 플랫폼을 제공한다. 범용 IoT 디바이스는 시중에서 쉽게 구매될 수 있기 때문에, 사용자는 범용 IoT 디바이스에 다양한 기능을 탑재하는 방식으로 손쉽게 제품을 개발하거나 사용할 수 있다. 범용 IoT 디바이스로서 라즈베리파이, 아두이노, 비글 본 블랙, 에디슨 등이 출시되어 있으며 여러 분야에서 사용되고 있다.
일반적으로 고성능 모바일 디바이스의 시스템 부트 과정에서 보안의 취약점을 해결하고자 도입된 기술로서 보안 부트(Secure boot)가 있다. 이와 관련하여, 공개특허 제10-2012-0092222호는 보안 부팅 방법 및 보안 부트 이미지 생성 방법을 게시하고 있다. 보안 부트는 각 부트 단계에 로드되는 이미지의 무결성을 단계적으로 검증(Trust Chain)할 수 있다. 하지만, 보안 부트는 디바이스 제조사에 의해 프로그래밍 되는 ROM BIOS(Basic Input Output System)를 기반으로 부트로더(boot loader)와 커널 이미지(kernel image)에 대한 무결성 검증을 순차적으로 수행하는 것이고, 범용 IoT 디바이스가 아닌 스마트폰 등 고성능 모바일 디바이스 등에서 활용하기 위한 것이다.
범용 IoT 디바이스에도 보안을 적용하기 위한 기술로서 Verified U-Boot과 TPM(Trusted Platform Module)이 있다. Verified U-Boot은 Root of Trust을 수행하지 않고 부트로더 실행 단계에서 커널만을 검증하기 때문에 펌웨어 교체 공격에 여전히 취약한 문제가 있다. 한편, TPM은 Trusted Computing Group(TCG)에서 소프트웨어 기반의 키 관리의 보안성을 강화하기 위한 목적으로 고안된 하드웨어 디바이스 모듈로서, 암호화 키, 암호화된 데이터, 암호화 방식 등을 제공하며 주로 개인용 컴퓨터(PC)의 주기판에 부착된다.
TPM을 탑재한 사용자 장치(범용 IoT 디바이스를 포함)에서도 여전히 Root of Trust가 제공되지 않을 경우, 부트로더 및 커널 이미지의 임의적 변조/교체를 통해 플랫폼에서 관리되는 SRK 암호가 유출될 가능성이 여전히 존재한다. 그리고 해커는 TPM을 사용하여 암호화 키, 데이터 등을 사용할 가능성이 있다. 따라서, TPM 기반의 사용자 장치에서 안전한 부팅 방법이 요구된다.
본 발명의 기술적 과제는 TPM(Trusted Platform Module)과 같은 보안 하드웨어 모듈을 포함하는 보안 장치 플랫폼에서, 부트로더(BootLoader), 운영체제 커널(OS Kernel), 또는 루트 파일 시스템(Root File System) 이미지에 대한 불법 변조 또는 교체를 통한 TPM의 악의적 활용을 방지하는, 신뢰성 있는 부팅 방법 및 장치를 제공함에 있다.
본 발명의 다른 기술적 과제는 TPM을 포함하는 디바이스 플랫폼의 부팅 과정에서 변조된 부트 이미지가 실행되었을 경우, TPM 사용을 차단하기 위한 신뢰 부트 방법을 제공함에 있다.
본 발명의 또 다른 기술적 과제는 이미지의 불법 변조와 같은 공격이 실행되어 디바이스의 제어권이 탈취되는 경우 디바이스에 저장된 SRK 등의 암호화 키들이 유출되지 않도록 제어함으로써, 암호를 안전하게 생성하고 보관하는 방법 및 장치를 제공함에 있다.
본 발명의 일 양태에 따르면 TPM(Trusted Platform Module) 기반의 사용자 장치를 제공한다. 상기 장치는 부트로더(bootloader)와 운영체제의 커널(kernel)을 실행하도록 구성되고, 상기 실행된 부트로더의 이미지(image)와 상기 실행된 커널의 이미지를 기반으로 적어도 하나의 무결성 검증(integrigy verification)을 수행하는 보안 부트 프로세서, 및 무결한 부트로더의 이미지와 무결한 커널의 이미지에 관한 서명, 상기 사용자 장치에 관한 암호화 키를 저장하는 TPM을 포함한다. 여기서, 상기 보안 부트 프로세서는 상기 무결성 검증에 기반하여 상기 TPM의 저장공간에 접근하기 위한 SRK(storage root key) 암호를 생성할 수 있다.
일 측면에서, 상기 보안 부트 프로세서는, 시스템 레벨(system level)에서 상기 실행된 커널의 이미지(bootloader image)를 기반으로 제1 무결성 검증을 수행하고, 상기 제1 무결성 검증이 성공으로 판단되면 사용자 레벨(user level)에서 보안 부트 데몬을 실행하고 상기 실행된 부트로더의 이미지를 기반으로 제2 무결성 검증을 수행할 수 있다.
다른 측면에서, 상기 보안 부트 프로세서는, 상기 실행된 커널의 이미지를 기반으로 제1 무결성 검증을 수행하고, 상기 실행된 부트로더의 이미지와 상기 실행된 커널의 이미지, 그리고 상기 무결한 부트로더의 이미지와 무결한 커널의 이미지에 관한 서명을 기반으로 제2 무결성 검증을 수행할 수 있다.
또 다른 측면에서, 상기 보안 부트 프로세서는, 상기 실행된 커널의 이미지의 제1 해쉬값(hash value)과 상기 무결한 커널의 이미지에 관한 제2 해쉬값를 사용하여 제1 무결성 검증을 수행하고, 상기 실행된 부트로더의 이미지와 상기 실행된 커널의 이미지에 관한 제3 해쉬값, 그리고 상기 무결한 부트로더의 이미지와 무결한 커널의 이미지에 관한 제4 해쉬값을 사용하여 제2 무결성 검증을 수행할 수 있다.
여기서, 상기 보안 부트 프로세서는, 상기 제1 무결성 검증에 실패하는 경우, 부트 절차를 중단할 수 있다.
또는 상기 보안 부트 프로세서는, 상기 제1 무결성 검증에 성공하는 경우 상기 제2 무결성 검증을 수행하고, 상기 제2 무결성 검증에 실패하는 경우, 부트 절차를 중단할 수 있다.
또는 상기 보안 부트 프로세서는, 상기 제1 무결성 검증에 성공하는 경우 상기 제2 무결성 검증을 수행하고, 상기 제2 무결성 검증에 성공하는 경우, 상기 SRK 암호를 생성할 수 있다.
또는, 상기 보안 부트 프로세서는, 상기 제1 해쉬값과 상기 제2 해쉬값이 같을 경우 상기 제1 무결성 검증을 성공한 것으로 판단하고, 상기 제1 해쉬값과 상기 제2 해쉬값이 다를 경우 상기 제1 무결성 검증을 실패한 것으로 판단하며, 상기 제3 해쉬값과 상기 제4 해쉬값이 같을 경우 상기 제2 무결성 검증을 성공한 것으로 판단하고, 상기 제3 해쉬값과 상기 제4 해쉬값이 다를 경우 상기 제2 무결성 검증을 실패한 것으로 판단할 수 있다.
본 발명의 다른 양태에 따르면 TPM(Trusted Platform Module) 기반의 보안 부트 방법을 제공한다. 상기 방법은 부트로더(bootloader)와 운영체제의 커널(kernel)을 실행하는 단계, 상기 실행된 부트로더의 이미지(image)와 상기 실행된 커널의 이미지를 기반으로 적어도 하나의 무결성 검증(integrigy verification)을 수행하는 단계, 및 상기 무결성 검증에 기반하여 상기 TPM의 저장공간에 접근하기 위한 SRK(storage root key) 암호를 생성하는 단계를 포함한다.
일 측면에서, 상기 적어도 하나의 무결성 검증을 수행하는 단계는, 시스템 레벨(system level)에서 상기 실행된 커널의 이미지(bootloader image)를 기반으로 제1 무결성 검증을 수행하고, 상기 제1 무결성 검증이 성공으로 판단되면 사용자 레벨(user level)에서 보안 부트 데몬을 실행하고 상기 실행된 부트로더의 이미지를 기반으로 제2 무결성 검증을 수행함을 포함할 수 있다.
다른 측면에서, 상기 적어도 하나의 무결성 검증을 수행하는 단계는, 상기 실행된 커널의 이미지를 기반으로 제1 무결성 검증을 수행하고, 상기 실행된 부트로더의 이미지와 상기 실행된 커널의 이미지, 그리고 상기 TPM의 저장공간에 보관된 무결한 부트로더의 이미지와 무결한 커널의 이미지에 관한 서명을 기반으로 제2 무결성 검증을 수행함을 포함할 수 있다.
또 다른 측면에서, 상기 적어도 하나의 무결성 검증을 수행하는 단계는, 상기 실행된 커널의 이미지의 제1 해쉬값(hash value)과 상기 무결한 커널의 이미지에 관한 제2 해쉬값를 사용하여 제1 무결성 검증을 수행하고, 상기 실행된 부트로더의 이미지와 상기 실행된 커널의 이미지에 관한 제3 해쉬값, 그리고 상기 무결한 부트로더의 이미지와 무결한 커널의 이미지에 관한 제4 해쉬값을 사용하여 제2 무결성 검증을 수행함을 포함할 수 있다.
여기서, 상기 방법은 상기 제1 무결성 검증에 실패하는 경우, 부트 절차를 중단하는 단계를 더 포함할 수 있다.
또는 상기 방법은 상기 제1 무결성 검증에 성공하는 경우 상기 제2 무결성 검증을 수행하고, 상기 제2 무결성 검증에 실패하는 경우, 부트 절차를 중단하는 단계를 더 포함할 수 있다.
또 다른 측면에서, 상기 제1 무결성 검증에 성공하는 경우 상기 제2 무결성 검증이 수행되고, 상기 제2 무결성 검증에 성공하는 경우, 상기 SRK 암호를 생성하는 단계가 수행될 수 있다.
또 다른 측면에서, 상기 제1 해쉬값과 상기 제2 해쉬값이 같을 경우 상기 제1 무결성 검증이 성공한 것으로 판단되고, 상기 제1 해쉬값과 상기 제2 해쉬값이 다를 경우 상기 제1 무결성 검증이 실패한 것으로 판단되며, 상기 제3 해쉬값과 상기 제4 해쉬값이 같을 경우 상기 제2 무결성 검증이 성공한 것으로 판단되고, 상기 제3 해쉬값과 상기 제4 해쉬값이 다를 경우 상기 제2 무결성 검증이 실패한 것으로 판단될 수 있다.
본 발명에 따른 사용자 장치 및 보안 부트의 수행방법은 모바일 디바이스나 PC등을 대상으로 하는 Root of Turst 기반의 보안 부트, 그리고 Verified U-Boot 기반의 저사양 범용 IoT 디바이스의 보안 취약점을 보완할 수 있다. 또한 불법적인 방법으로는 사용자 장치에 저장되어 있는 암호화된 데이터에 접근할 수 없기 때문에 본 발명은 범용 IoT 디바이스를 사용하는 모든 분야에서 디바이스 및 데이터를 보호하는 목적으로 널리 활용될 수 있다.
도 1은 본 발명의 실시예에 따른 TPM을 포함하는 사용자 장치의 블록도이다.
도 2는 일 실시예에 따라 제1 및 제2 무결성 검증을 순차적으로 수행하는 방법을 개념적으로 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 보안 부트를 수행하는 구체적인 방법과 알고리즘을 도시한 순서도이다.
도 4는 제1 무결성 검증을 수행하는 방법을 도시한 순서도이다.
도 5는 제2 무결성 검증을 수행하는 방법을 도시한 순서도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "~부" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
범용 IoT 디바이스는 보편적으로 소형화 및 저사양으로 제작되기 때문에 일반 PC 환경과는 다르게 보안요소 탑재에 제약이 있고, 해킹 등 다양한 위협에 대한 취약점을 가진다. 보안을 위협하는 예로서 펌웨어 교체(firmware replacement) 및 실행 공격이 있다. 이것은 범용 IoT 디바이스가 시스템 부트(boot) 단계에서 순차적으로 실행되는 부트로더(boot loader), 커널(kernel) 이미지의 무결성(integrity)을 보장하지 않는 취약점을 이용하여, 변조된 이미지로 교체 및 실행하여 시스템 제어권을 탈취하는 것이다. 이 경우 범용 IoT 디바이스는 디바이스 내 저장된 암호화 키 교체/삭제/유출, 타 IoT 디바이스 공격을 위한 진입점으로 악용될 수 있다.
따라서, 본 실시예에 따른 사용자 장치는 소프트웨어 기반의 키 관리의 보안성을 강화하기 위해 TPM을 포함하며, TPM 기반하에서 RooT of Trust의 부재로 인한 SRK 암호 유출을 방지하기 위해 추가적인 보안 방법을 수행한다.
도 1은 본 발명의 실시예에 따른 TPM을 포함하는 사용자 장치의 블록도이다. TPM을 포함하는 사용자 장치는 TPM 기반의 범용 IoT 디바이스를 포함할 수 있으며, TPM 기반의 사용자 플랫폼, TPM 기반의 IoT 디바이스 플랫폼, TPM 기반의 범용 IoT 디바이스 플랫폼 또는 단순히 사용자 장치나 범용 IoT 디바이스라 불릴 수도 있다.
도 1을 참조하면, 사용자 장치(user apparatus, 1000)는 보안 부트 프로세서(1010), 운영 체제(1020), 부트로더(1030), TPM(1040)을 포함한다. 사용자 장치(1000)는 메모리(memory) 또는 저장기기(storage device)를 더 포함할 수 있다(도면에 미도시). 상기 메모리 또는 저장기기는 운영 체제(1020), 부트로더(1030) 및 보안 부트 데몬(daemon) 중 적어도 하나를 저장할 수 있다. 보안 부트 프로세서(1010)는 보안 부트 데몬 그 자체일 수도 있다.
보안 부트 프로세서(1010)는 부트로더(1030)로부터 부트로더의 해쉬값 #부트로더(1014), 운영 체제(1020)로부터 운영체제의 해쉬값 #OS(1016)를 계산 또는 처리하고, #부트로더(1014)와 #OS(1016)(또는 커널)의 진위를 식별하는 고유값을 이용하여 SRK 암호(1012)를 추출한다. 고유값은 해쉬값(Hash value)이라 불릴 수 있으며, 이하에서 해쉬값으로 통칭하도록 한다. 보안 부트 프로세서(1010)는 시스템 레벨(system level)에서의 커널 이미지의 제1 무결성 검증과, 사용자 레벨(user level)에서의 부트로더 이미지(1014)의 제2 무결성 검증을 수행하고, 상기 제1 및 제2 무결성 검증을 기반으로 SRK 암호(1012)를 생성한다. 이때, SRK 암호(1012)를 생성 또는 추출하는 연산과정은 제조사, 제품별로 상이하게 설정함으로써 보안성을 높일 수 있다.
TPM(1040)은 암호화 작업부(1042), 저장공간(storage space, 1050)을 포함한다. TPM(1040)은 사용자 장치(1000)의 부팅 단계에서부터 시스템의 무결성 검증을 수행하기 위한 정보를 보안 부트 프로세서(1010)에 제공한다.
암호화 작업부(1042)는 암호화 키를 생성하는 동작과 같은 암호화 작업을 수행하며, CRYPTO 엔진(Engine)이라 불릴 수도 있다.
저장 공간(1050)은 부팅에 사용된 부트로더 및/또는 커널 이미지의 무결성 검증을 위한 서명, 암호화 키, 암호화된 데이터 중 적어도 하나를 보관한다. 일례로서, 부팅에 사용된 부트로더 및/또는 커널 이미지의 무결성 검증을 위한 서명은 비공개키를 사용하여 제작된 부트로더(1030)와 커널 이미지의 해쉬값에 대한 서명(Sign(PRTPM, H(ImgBL + ImgKN)))을 포함할 수 있다. 여기서, H(A)란 이미지 A의 해쉬값을 의미한다. 다른 예로서, 암호화 키 또는 암호화된 데이터는 서명 생성을 위한 비공개키(PRTPM)와, 서명 검증을 위한 공개키(PUTPM)를 포함할 수 있다. 여기서, 저장 공간(1050)에 보관된 암호화 키를 사용하기 위해서는 SRK(storage root key) 암호(Password)가 필요하며 이는 보안 부트 프로세서(1010)에 의해 획득된다. 한편 저장 공간(1050)은 NV(Non-Volatile) 타입의 저장소일 수 있다.
도 2는 일 실시예에 따라 제1 및 제2 무결성 검증을 순차적으로 수행하는 방법을 개념적으로 도시한 도면이다.
도 2를 참조하면, 사용자 장치(1000)는 부트로더를 실행한 뒤(S200), 제1 무결성 검증을 수행한다(S210). 여기서, 제1 무결성 검증은 커널 이미지의 무결성 검증을 소프트웨어적으로 수행하는 단계로서 부트로더(1030)에 의해 수행될 수 있다. 만약 커널 이미지의 무결성 검증(integrity verification)이 실패하면, 사용자 장치(1000) 또는 부트로더(1030)는 부팅을 더 이상 진행하지 않는다.
만약, 커널 이미지의 무결성 검증(integrity verification)이 성공하면, 사용자 장치(1000)는 OS 커널을 로드 및 실행하고(S220), 제2 무결성 검증을 수행한다(S230). 여기서, 제2 무결성 검증은 단계 S200에서 실행된 부트로더 이미지의 무결성 검증을 소프트웨어적으로 수행하는 단계로서 보안 부트 프로세서(1010) 또는 보안 부트 데몬에 의해 수행될 수 있다. 만약 부트로더 이미지의 무결성 검증(integrity verification)이 실패하면, 사용자 장치(1000) 또는 보안 부트 프로세서(1010)는 부팅을 더 이상 진행하지 않고, SRK 암호도 생성하지 않는다. 만약 부트로더 이미지의 무결성 검증(integrity verification)이 성공하면, 사용자 장치(1000) 또는 보안 부트 프로세서(1010)는 부팅을 계속 진행하며, SRK 암호를 생성하고 TPM(1040)을 정상적으로 사용할 수 있다.
도 3은 본 발명의 일 실시예에 따른 보안 부트를 수행하는 구체적인 방법과 알고리즘을 도시한 순서도이다.
먼저 보안 부트의 수행방법에서 사용되는 기술적 용어를 정리하면 다음과 같다.
용어 설명
PRa a의 비공개키
PUa a의 공개키
Certa a의 인증서
H(X) X의 해쉬값
Sign(PRa, H(X)) 비공개키와 해쉬를 이용한 서명
D(PUa, H(X)) 공개키를 이용한 서명 복호화
Img 이미지 파일
ImgKN _Cur 부트로더에서 로드한 현재 커널 이미지
ImgBL _Cur 현재 부트로더 이미지
H(ImgBL) TPM에 저장된 부트로더 이미지의 해쉬값
H(ImgKL) TPM에 저장된 커널 이미지의 해쉬값
도 3을 참조하면, 사용자 장치(1000)는 부팅을 시작한다(S300). 부팅이 시작되면, 사용자 장치(1000)의 부트로더(1030)에서 현재 커널 이미지(ImgKN _Cur)를 검색 및 로드(search and load)하고 부팅에 사용된 현재 커널 이미지에 대한 무결성 검증(즉, 제1 무결성 검증)을 수행한다(S305).
일례로서, 제1 무결성 검증은 현재 커널 이미지의 해쉬값을 기반으로 수행될 수 있다. 이 경우 단계 S305는 도 4와 같이 현재 커널 이미지(ImgKN _Cur)에 대한 제1 해쉬값(H(ImgKN_Cur))을 계산(measure)하는 단계(S400), 무결한 커널 이미지의 제작자 서명(Sign(PRDev, H(ImgVrf)))과 제작자의 인증서(CertDev)를 사용하여 제2 해쉬값(H(ImgVrf))를 계산하는 단계(S410), 그리고 제1 해쉬값과 제2 해쉬값을 비교하는 단계(H(ImgKN_Cur)== H(ImgVrf))(S420)를 포함한다. 단계 S410에서 제2 해쉬값 H(ImgVrf)는 다음의 수학식에 기반하여 얻어질 수 있다.
Figure 112016068459407-pat00001
만약, 제1 해쉬값=제2 해쉬값이면, 사용자 장치(1000)는 제1 무결성 검증을 성공(success)으로 판단한다. 반면 만약, 제1 해쉬값≠제2 해쉬값이면, 사용자 장치(1000)는 제1 무결성 검증을 실패(failure)로 판단한다.
다시 도 3을 참조하여, 예를 들어 위와 같은 기준에 의해, 사용자 장치(1000)는 현재 커널 이미지가 무결성을 만족하는지 판단한다(S310). 만약, 현재 커널 이미지가 무결성을 만족하지 않으면, 사용자 장치(1000)는 부팅을 더 이상 진행하지 않고 절차를 중단한다(S315).
단계 S305에 따른 제1 무결성 검증이 성공으로 판단되면, 사용자 장치(1000)는 운영체제(1020)를 실행한다(S310). 단계 S300부터 단계 S320까지는 시스템 레벨에서의 보안 부트 동작에 해당하고, 단계 S325부터는 사용자 레벨에서의 보안 부트 동작에 해당한다.
사용자 장치(1000)는 보안 부트 프로세서(1010)를 이용하여(또는 운영체제(1020)는 보안 부트 데몬을 실행하여) 부팅에 사용된 현재 부트로더의 해쉬값 (#부트로더(1014))에 대한 무결성 검증(즉, 제2 무결성 검증)을 수행한다(S325).
일례로서, 제2 무결성 검증은 현재 부트로더 이미지의 해쉬값을 기반으로 수행될 수 있다. 이 경우 단계 S325는 도 5와 같이 현재 부트로더 이미지와 현재 커널 이미지에 대한 제3 해쉬값(H(ImgBL _Cur+ImgKN _Cur))을 계산하는 단계(S500), TPM(1040)의 저장공간(1050)에 보관된 펌웨어 이미지의 서명(Sign(PRTPM, H(ImgBL + ImgKN)))과 복호화 키 PUTPM을 사용하여 무결한 부트로더의 이미지와 커널 이미지에 대한 제4 해쉬값(H(ImgBL + ImgKN))을 계산하는 단계(S510), 제3 해쉬값과 제4 해쉬값을 비교하는 단계(H(ImgBL _Cur+ImgKN _Cur)==H(ImgBL + ImgKN))(S520)를 포함한다. 단계 S510에서 제4 해쉬값 H(ImgBL + ImgKN)는 다음의 수학식에 기반하여 얻어질 수 있다.
Figure 112016068459407-pat00002
만약, 제3 해쉬값=제4 해쉬값이면, 사용자 장치(1000)는 제2 무결성 검증을 성공(success)으로 판단한다. 반면 만약, 제3 해쉬값≠제4 해쉬값이면, 사용자 장치(1000)는 제2 무결성 검증을 실패(failure)로 판단한다.
예를 들어 위와 같은 기준에 의해, 사용자 장치(1000)는 현재 커널 이미지가 무결성을 만족하는지 판단한다(S330). 만약, 현재 커널 이미지가 무결성을 만족하지 않으면, 사용자 장치(1000)는 부팅을 더 이상 진행하지 않고 절차를 중단하거나, SRK 암호를 생성하지 않고 절차를 중단한다(S315). 이 경우, 사용자 장치(1000)는 TPM(1040)에 의해 보호되는 암호화 키들을 사용할 수 없다. 반면, 만약, 현재 커널 이미지가 무결성을 만족하면, 사용자 장치(1000)는 무결한 부트로더 이미지의 해쉬값 H(ImgBL)과 무결한 커널 이미지의 해쉬값 H(ImgKN)을 사용하여 SRK 암호(1012)를 생성하고 부팅절차를 완료한다(S340). 따라서 사용자 장치(1000)는 TPM(1040)에 의해 보호되는 암호화 키들을 사용할 수 있다.
이러한 본 실시예에 따른 사용자 장치(1000) 및 보안 부트의 수행방법은 펌웨어 이미지 교체 공격에 대해 다음의 4가지 측면에서 강화된 보안성을 제공할 수 있다.
첫째, 커널 이미지 변조 및 교체 공격이 발생하면, 커널이 변경된다. 이 경우 변경된 커널에 따른 해쉬값은 제작자의 서명과 인증서에 기반하여 계산된 해쉬값과 다르기 때문에 제1 무결성 검증 단계에서 무결성을 만족하지 않고, 결국 부팅에 실패한다. 따라서 해커가 TPM을 사용하는 보안상 취약점을 해결한다.
둘째, 부트로더 이미지 변조 및 교체 공격이 발생하면, 부트로더가 변경된다. 이 경우 변경된 부트로더의 해쉬값은 TPM에 저장된 서명을 복호화한 값과 다르기 때문에 제2 무결성 검증 단계에서 무결성을 만족하지 않고, 결국 TPM의 SRK 암호의 생성을 차단함으로써 해커가 TPM을 사용하는 보안상 취약점을 해결한다. 이는 운영체제가 실행되고 보안 부트 데몬이 실행되었을 때, 부팅에 사용된 부트로더와 커널 이미지에 관한 해쉬값과 TPM에 저장된 서명을 이용하여 무결성 검증을 수행하기 때문이다.
셋째, 부트로더 이미지와 커널 이미지의 변조 및 교체 공격이 발생하면, 커널을 검증하는 과정이 생략되고 사용자 장치(1000)는 부팅된다. 이 경우, 변경된 부트로더 이미지와 커널 이미지에 관한 해쉬값은 TPM에 저장된 부트로더/커널의 서명을 비교하는 제2 무결성 검증 단계에서 무결성을 만족하지 않고, 결국 TPM의 SRK 암호의 생성을 차단함으로써 해커가 TPM을 사용하는 보안상 취약점을 해결한다. 이는 사용자 레벨에서 보안 부트 데몬에 의해 2차적 무결성 검증 단계가 실행되기 때문이다.
넷째, 해커가 보안 부트 데몬이 실행이 되지 않도록 파일 시스템을 변경하였을 경우에도 TPM의 SRK 암호가 생성되지 않아 TPM을 사용할 수 없다.
이와 같이 본 발명에 따른 사용자 장치(1000) 및 보안 부트의 수행방법은 보안 부트 데몬에서 부트로더를 검증하는 단계를 수행하고, 이를 기반으로 TPM에 접근할 수 있는 SRK 암호를 생성하기 때문에 키 보호 및 안전한 부팅이 가능하다. 따라서, 본 발명에 따른 사용자 장치(1000) 및 보안 부트의 수행방법은 모바일 디바이스나 PC등을 대상으로 하는 Root of Turst 기반의 보안 부트, 그리고 Verified U-Boot 기반의 저사양 범용 IoT 디바이스의 보안 취약점을 보완할 수 있다.
본 발명에 따를 때, 불법적인 방법으로는 사용자 장치(1000)에 저장되어 있는 암호화된 데이터에 접근할 수 없기 때문에 본 발명은 범용 IoT 디바이스를 사용하는 모든 분야에서 디바이스 및 데이터를 보호하는 목적으로 활용될 수 있다.
상술한 예시적인 시스템에서, 방법들은 일련의 단계 또는 블록으로써 순서도를 기초로 설명되고 있지만, 본 발명은 단계들의 순서에 한정되는 것은 아니며, 어떤 단계는 상술한 바와 다른 단계와 다른 순서로 또는 동시에 발생할 수 있다. 또한, 당업자라면 순서도에 나타낸 단계들이 배타적이지 않고, 다른 단계가 포함되거나 순서도의 하나 또는 그 이상의 단계가 본 발명의 범위에 영향을 미치지 않고 삭제될 수 있음을 이해할 수 있을 것이다.

Claims (16)

  1. TPM(Trusted Platform Module) 기반의 사용자 장치로서,
    부트로더(bootloader)와 운영체제의 커널(kernel)을 실행하도록 구성되고, 상기 실행된 부트로더의 이미지(image)인 제1 이미지와 상기 실행된 커널의 이미지인 제2 이미지를 기반으로 적어도 하나의 무결성 검증(integrigy verification)을 수행하는 보안 부트 프로세서; 및
    무결한 부트로더의 이미지인 제3 이미지에 관한 서명, 무결한 커널의 이미지인 제4 이미지에 관한 서명, 상기 사용자 장치에 관한 암호화 키를 저장하는 TPM을 포함하되,
    상기 보안 부트 프로세서는 상기 적어도 하나의 무결성 검증 결과 무결성을 모두 만족하는 경우, 상기 제3 이미지의 해쉬값과 상기 제4 이미지의 해쉬값을 사용하여 상기 TPM의 저장공간에 접근하기 위한 SRK(storage root key) 암호를 생성하는 것을 특징으로 하는, 사용자 장치.
  2. 제 1 항에 있어서, 상기 보안 부트 프로세서는,
    시스템 레벨(system level)에서 상기 제2 이미지를 기반으로 제1 무결성 검증을 수행하고,
    상기 제1 무결성 검증이 성공으로 판단되면 사용자 레벨(user level)에서 보안 부트 데몬을 실행하고 상기 제1 이미지를 기반으로 제2 무결성 검증을 수행하는 것을 특징으로 하는, 사용자 장치.
  3. 제 1 항에 있어서, 상기 보안 부트 프로세서는,
    상기 제2 이미지를 기반으로 제1 무결성 검증을 수행하고,
    상기 제1 이미지와 상기 제2 이미지, 그리고 상기 제3 이미지와 제4 이미지에 관한 서명을 기반으로 제2 무결성 검증을 수행하는 것을 특징으로 하는, 사용자 장치.
  4. 제 1 항에 있어서, 상기 보안 부트 프로세서는,
    상기 제2 이미지의 제1 해쉬값(hash value)과 상기 제4 이미지에 관한 제2 해쉬값를 사용하여 제1 무결성 검증을 수행하고,
    상기 제1 이미지와 상기 제2 이미지에 관한 제3 해쉬값, 그리고 제3 이미지와 제4 이미지에 관한 제4 해쉬값을 사용하여 제2 무결성 검증을 수행함을 특징으로 하는, 사용자 장치.
  5. 제 3 항 및 제 4 항 중 어느 한 항에 있어서, 상기 보안 부트 프로세서는,
    상기 제1 무결성 검증에 실패하는 경우, 부트 절차를 중단하는 것을 특징으로 하는, 사용자 장치.
  6. 제 3 항 및 제 4 항 중 어느 한 항에 있어서, 상기 보안 부트 프로세서는,
    상기 제1 무결성 검증에 성공하는 경우 상기 제2 무결성 검증을 수행하고,
    상기 제2 무결성 검증에 실패하는 경우, 부트 절차를 중단하는 것을 특징으로 하는, 사용자 장치.
  7. 제 3 항 및 제 4 항 중 어느 한 항에 있어서, 상기 보안 부트 프로세서는,
    상기 제1 무결성 검증에 성공하는 경우 상기 제2 무결성 검증을 수행하고,
    상기 제2 무결성 검증에 성공하는 경우, 상기 SRK 암호를 생성하는 것을 특징으로 하는, 사용자 장치.
  8. 제 4 항에 있어서, 상기 보안 부트 프로세서는,
    상기 제1 해쉬값과 상기 제2 해쉬값이 같을 경우 상기 제1 무결성 검증을 성공한 것으로 판단하고, 상기 제1 해쉬값과 상기 제2 해쉬값이 다를 경우 상기 제1 무결성 검증을 실패한 것으로 판단하며,
    상기 제3 해쉬값과 상기 제4 해쉬값이 같을 경우 상기 제2 무결성 검증을 성공한 것으로 판단하고, 상기 제3 해쉬값과 상기 제4 해쉬값이 다를 경우 상기 제2 무결성 검증을 실패한 것으로 판단하는, 사용자 장치.
  9. TPM(Trusted Platform Module) 기반의 보안 부트 방법으로서,
    부트로더(bootloader)와 운영체제의 커널(kernel)을 실행하는 단계;
    상기 실행된 부트로더의 이미지(image)인 제1 이미지와 상기 실행된 커널의 이미지인 제2 이미지를 기반으로 적어도 하나의 무결성 검증(integrigy verification)을 수행하는 단계; 및
    상기 적어도 하나의 무결성 검증 결과 무결성을 모두 만족하는 경우, 무결한 부트로더 이미지인 제3 이미지의 해쉬값과 무결한 커널 이미지인 제4 이미지의 해쉬값을 사용하여 상기 TPM의 저장공간에 접근하기 위한 SRK(storage root key) 암호를 생성하는 단계를 포함함을 특징으로 하는 보안 부트 방법.
  10. 제 9 항에 있어서, 상기 적어도 하나의 무결성 검증을 수행하는 단계는,
    시스템 레벨(system level)에서 상기 제2 이미지를 기반으로 제1 무결성 검증을 수행하고,
    상기 제1 무결성 검증이 성공으로 판단되면 사용자 레벨(user level)에서 보안 부트 데몬을 실행하고 상기 제1 이미지를 기반으로 제2 무결성 검증을 수행함을 포함하는 것을 특징으로 하는, 보안 부트 방법.
  11. 제 9 항에 있어서, 상기 적어도 하나의 무결성 검증을 수행하는 단계는,
    상기 제2 이미지를 기반으로 제1 무결성 검증을 수행하고,
    상기 제1 이미지와 상기 제2 이미지, 그리고 상기 TPM의 저장공간에 보관된 제3 이미지와 제4 이미지에 관한 서명을 기반으로 제2 무결성 검증을 수행함을 포함하는 것을 특징으로 하는, 보안 부트 방법.
  12. 제 9 항에 있어서, 상기 적어도 하나의 무결성 검증을 수행하는 단계는,
    상기 제2 이미지의 제1 해쉬값(hash value)과 상기 제4 이미지에 관한 제2 해쉬값를 사용하여 제1 무결성 검증을 수행하고,
    상기 제1 이미지와 상기 제2 이미지에 관한 제3 해쉬값, 그리고 상기 제3 이미지와 제4 이미지에 관한 제4 해쉬값을 사용하여 제2 무결성 검증을 수행함을 포함하는 것을 특징으로 하는, 보안 부트 방법.
  13. 제 11 항 및 제 12 항 중 어느 한 항에 있어서,
    상기 제1 무결성 검증에 실패하는 경우, 부트 절차를 중단하는 단계를 더 포함함을 특징으로 하는, 보안 부트 방법.
  14. 제 11 항 및 제 12 항 중 어느 한 항에 있어서,
    상기 제1 무결성 검증에 성공하는 경우 상기 제2 무결성 검증을 수행하고,
    상기 제2 무결성 검증에 실패하는 경우, 부트 절차를 중단하는 단계를 더 포함함을 특징으로 하는, 보안 부트 방법.
  15. 제 11 항 및 제 12 항 중 어느 한 항에 있어서,
    상기 제1 무결성 검증에 성공하는 경우 상기 제2 무결성 검증이 수행되고,
    상기 제2 무결성 검증에 성공하는 경우, 상기 SRK 암호를 생성하는 단계가 수행됨 특징으로 하는, 보안 부트 방법.
  16. 제 12 항에 있어서,
    상기 제1 해쉬값과 상기 제2 해쉬값이 같을 경우 상기 제1 무결성 검증이 성공한 것으로 판단되고, 상기 제1 해쉬값과 상기 제2 해쉬값이 다를 경우 상기 제1 무결성 검증이 실패한 것으로 판단되며,
    상기 제3 해쉬값과 상기 제4 해쉬값이 같을 경우 상기 제2 무결성 검증이 성공한 것으로 판단되고, 상기 제3 해쉬값과 상기 제4 해쉬값이 다를 경우 상기 제2 무결성 검증이 실패한 것으로 판단되는, 보안 부트 방법.

KR1020160089481A 2016-07-14 2016-07-14 Tpm 기반의 사용자 장치 및 이를 이용한 부팅 방법 KR101968382B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160089481A KR101968382B1 (ko) 2016-07-14 2016-07-14 Tpm 기반의 사용자 장치 및 이를 이용한 부팅 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160089481A KR101968382B1 (ko) 2016-07-14 2016-07-14 Tpm 기반의 사용자 장치 및 이를 이용한 부팅 방법

Publications (2)

Publication Number Publication Date
KR20180007922A KR20180007922A (ko) 2018-01-24
KR101968382B1 true KR101968382B1 (ko) 2019-04-11

Family

ID=61029446

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160089481A KR101968382B1 (ko) 2016-07-14 2016-07-14 Tpm 기반의 사용자 장치 및 이를 이용한 부팅 방법

Country Status (1)

Country Link
KR (1) KR101968382B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220059866A (ko) * 2020-11-03 2022-05-10 유비벨록스(주) 보안 부트 검증 방법 및 이를 위한 보안 칩
US11874928B2 (en) 2020-01-30 2024-01-16 Samsung Electronics Co., Ltd. Security device, electronic device, secure boot management system, method for generating boot image, and method for executing boot chain

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102286794B1 (ko) * 2018-08-16 2021-08-06 경희대학교 산학협력단 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법
CN113536387B (zh) * 2020-04-15 2024-06-04 青岛海信移动通信技术有限公司 一种检测内核数据完整性的终端和方法
CN115357908B (zh) * 2022-10-19 2022-12-23 中国人民解放军军事科学院系统工程研究院 一种网络设备内核可信度量与自动修复方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007102791A (ja) 2005-09-30 2007-04-19 Fiinikkusu Technologies Ltd 無許可のブートローダの実行を防止することによって安全性を高めた実行環境
JP2015008005A (ja) 2011-08-16 2015-01-15 グーグル インコーポレイテッド セキュア・リカバリ装置及び方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100746012B1 (ko) * 2005-11-07 2007-08-06 삼성전자주식회사 코드 이미지를 안전하게 갱신하고 부팅하는 방법 및 장치
KR100872175B1 (ko) * 2006-12-01 2008-12-09 한국전자통신연구원 Tpm을 이용한 모바일 플랫폼의 보안 부팅 장치 및 방법
KR20120092222A (ko) * 2011-02-11 2012-08-21 삼성전자주식회사 보안 부팅 방법 및 보안 부트 이미지 생성 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007102791A (ja) 2005-09-30 2007-04-19 Fiinikkusu Technologies Ltd 無許可のブートローダの実行を防止することによって安全性を高めた実行環境
JP2015008005A (ja) 2011-08-16 2015-01-15 グーグル インコーポレイテッド セキュア・リカバリ装置及び方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11874928B2 (en) 2020-01-30 2024-01-16 Samsung Electronics Co., Ltd. Security device, electronic device, secure boot management system, method for generating boot image, and method for executing boot chain
KR20220059866A (ko) * 2020-11-03 2022-05-10 유비벨록스(주) 보안 부트 검증 방법 및 이를 위한 보안 칩
KR102387685B1 (ko) * 2020-11-03 2022-05-30 유비벨록스(주) 보안 부트 검증 방법 및 이를 위한 보안 칩

Also Published As

Publication number Publication date
KR20180007922A (ko) 2018-01-24

Similar Documents

Publication Publication Date Title
CN109313690B (zh) 自包含的加密引导策略验证
US10142104B2 (en) Securely recovering a computing device
CN107077574B (zh) 用于客户端设备的信任服务
US8417962B2 (en) Device booting with an initial protection component
US8230412B2 (en) Compatible trust in a computing device
KR101968382B1 (ko) Tpm 기반의 사용자 장치 및 이를 이용한 부팅 방법
US8254568B2 (en) Secure booting a computing device
US7694121B2 (en) System and method for protected operating system boot using state validation
US8826405B2 (en) Trusting an unverified code image in a computing device
KR101805310B1 (ko) Tpm 기반의 사용자 장치 및 이를 이용한 펌웨어 갱신 방법
Löhr et al. Patterns for secure boot and secure storage in computer systems
US9749141B2 (en) Secure boot devices, systems, and methods
US9710658B2 (en) Computing entities, platforms and methods operable to perform operations selectively using different cryptographic algorithms
WO2016045458A1 (zh) 一种安全控制方法及网络设备
KR102286794B1 (ko) 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법
KR20130114703A (ko) 보안 상태 전환을 관리하기 위한 방법 및 장치
Muñoz et al. TPM, a pattern for an architecture for trusted computing
Galanou et al. Matee: Multimodal attestation for trusted execution environments
Jagannathan et al. Self-authentication in medical device software: An approach to include cybersecurity in legacy medical devices
Surendrababu System Integrity–A Cautionary Tale

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)