KR20240034588A - 보안 부팅 시스템 및 그것의 동작 방법 - Google Patents
보안 부팅 시스템 및 그것의 동작 방법 Download PDFInfo
- Publication number
- KR20240034588A KR20240034588A KR1020220113807A KR20220113807A KR20240034588A KR 20240034588 A KR20240034588 A KR 20240034588A KR 1020220113807 A KR1020220113807 A KR 1020220113807A KR 20220113807 A KR20220113807 A KR 20220113807A KR 20240034588 A KR20240034588 A KR 20240034588A
- Authority
- KR
- South Korea
- Prior art keywords
- value
- boot
- host
- code
- firmware
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 17
- 238000012795 verification Methods 0.000 claims description 114
- 238000011156 evaluation Methods 0.000 description 35
- 230000015654 memory Effects 0.000 description 29
- 238000005259 measurement Methods 0.000 description 26
- 238000010586 diagram Methods 0.000 description 18
- 238000012790 confirmation Methods 0.000 description 9
- 101100042683 Arabidopsis thaliana SLAC1 gene Proteins 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000005034 decoration Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 101000641224 Homo sapiens Vimentin-type intermediate filament-associated coiled-coil protein Proteins 0.000 description 1
- 102100034331 Vimentin-type intermediate filament-associated coiled-coil protein Human genes 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
본 발명은 보안 부팅 시스템 및 보안 부팅 시스템의 동작 방법에 대한 것이다. 본 발명의 실시 예에 따른 보안 부팅 시스템은 호스트 및 상기 호스트가 설정한 비밀 값에 기초하여 보안 부팅 동작을 수행하는 전자 장치를 포함하며, 상기 전자 장치는 상기 호스트가 설정한 비밀 값을 저장하는 제1 저장 유닛, 부트 로더 코드, 그리고 제1 및 제2 펌웨어 코드를 저장하는 제2 저장 유닛 및 부팅 동작 시에 실행되는 롬 코드를 저장하는 롬을 포함한다. 상기 롬 코드는 상기 호스트가 설정한 비밀 값 및 상기 부트 로더 코드에 대한 해시 값에 기초하여 제1 부팅 값을 생성하고, 상기 부트 로더 코드는 상기 제1 부팅 값 및 상기 제1 펌웨어 코드에 대한 해시 값에 기초하여 제2 부팅 값을 생성하며, 상기 제1 펌웨어 코드는 상기 제2 부팅 값 및 상기 제2 펌웨어 코드에 대한 해시 값에 기초하여 제3 부팅 값을 생성하고, 상기 전자 장치는 보안 부팅의 성공 여부를 확인하기 위해 상기 제1 내지 제3 부팅 값 중 적어도 하나를 상기 호스트로 전송한다. 이에 따라, 빠른 속도로 보안 부팅 동작이 수행될 수 있다.
Description
본 발명은 보안 부팅 시스템 및 보안 부팅 시스템의 동작 방법에 대한 것이다.
일반적으로, 전자 장치들은 부팅 동작을 수행할 때에 부트 로더(Boot Loader)또는 펌웨어(Firmware)에 대한 검증 동작을 수행하고, 검증 통과 시에 부트 로더 또는 펌웨어를 로드(load)하고 실행(execution)한다. 예를 들어, 롬(ROM)에 저장된 롬 코드(ROM Code)는 부트 로더의 실행 전에 부트 로더에 포함된 디지털 서명을 롬에 저장된 공개키로 검증하고, 검증 통과 시에 부트 로더가 로드되고 실행된다. 또한, 부트 로더에 저장된 부트 로더 코드(Boot Loader Code)는 펌웨어의 실행 전에 펌웨어에 포함된 디지털 서명을 부트 로더에 저장된 공개키로 검증하고, 검증 통과 시에 펌웨어가 로드되고 실행된다. 이러한 부팅 동작은 공개키 기반 보안 부팅이라 칭해질 수 있다. 공개키 기반 보안 부팅은 부팅 동작에 전자 서명 검증 과정에서 오랜 시간이 소요되기 때문에 알고리즘의 가속을 위한 하드웨어 가속기를 구비하는 것이 일반적이다. 그러나, 전자 장치들 중 eMMC 및 UFS와 같은 장치는 크기 및 비용 상의 이유로 이러한 하드웨어 가속기를 구비하기 어렵다. 따라서, 하드웨어 가속기를 구비하지 않으면서도, 보안 부팅을 빠르게 수행할 수 있는 기술이 필요한 실정이다.
본 발명의 목적은 하드웨어 가속기를 구비하지 않고도 보안 부팅 동작을 빠르게 수행할 수 있는 보안 부팅 방법 및 보안 부팅 시스템을 제공하는데 있다.
본 발명의 실시 예에 따른 보안 부팅 시스템은 호스트; 및 상기 호스트가 설정한 비밀 값에 기초하여 보안 부팅 동작을 수행하는 전자 장치를 포함하며, 상기 전자 장치는, 상기 호스트가 설정한 비밀 값을 저장하는 제1 저장 유닛; 부트 로더 코드, 그리고 제1 및 제2 펌웨어 코드를 저장하는 제2 저장 유닛; 및 부팅 동작 시에 실행되는 롬 코드를 저장하는 롬을 포함하며, 상기 롬 코드는 상기 호스트가 설정한 비밀 값 및 상기 부트 로더 코드에 대한 해시 값에 기초하여 제1 부팅 값을 생성하고, 상기 부트 로더 코드는 상기 제1 부팅 값 및 상기 제1 펌웨어 코드에 대한 해시 값에 기초하여 제2 부팅 값을 생성하며, 상기 제1 펌웨어 코드는 상기 제2 부팅 값 및 상기 제2 펌웨어 코드에 대한 해시 값에 기초하여 제3 부팅 값을 생성하고, 상기 전자 장치는 보안 부팅의 성공 여부를 확인하기 위해 상기 제1 내지 제3 부팅 값 중 적어도 하나를 상기 호스트로 전송한다.
본 발명의 실시 예에 따른 보안 부팅을 지원하는 전자 장치는, 호스트가 설정한 비밀 값을 저장하는 제1 저장 유닛; 부트 로더 코드, 그리고 제1 및 제2 펌웨어 코드를 저장하는 제2 저장 유닛; 및 부팅 동작 시에 실행되는 롬 코드를 저장하는 롬을 포함하며, 상기 롬 코드는 상기 호스트가 설정한 비밀 값 및 상기 부트 로더 코드에 대한 해시 값에 기초하여 제1 부팅 값을 생성하고, 상기 부트 로더 코드는 상기 제1 부팅 값 및 상기 제1 펌웨어 코드에 대한 해시 값에 기초하여 제2 부팅 값을 생성하며, 상기 제1 펌웨어 코드는 상기 제2 부팅 값 및 상기 제2 펌웨어 코드에 대한 해시 값에 기초하여 제3 부팅 값을 생성한다.
본 발명의 실시 예에 따른 보안 부팅 방법은 롬 코드가, 부트 로더 코드에 대한 제1 해시 값을 생성하는 단계; 상기 롬 코드가, 상기 제1 해시 값 및 미리 설정된 비밀 값을 이용하여 제1 부팅 값을 생성하는 단계; 상기 부트 로더 코드를 실행하는 단계; 상기 부트 로더 코드가, 제1 펌웨어 코드에 대한 제2 해시 값을 생성하는 단계; 상기 부트 로더 코드가, 상기 제2 해시 값 및 상기 제1부팅 값을 이용하여 제2 부팅 값을 생성하는 단계; 상기 제1 펌웨어 코드를 실행하는 단계; 상기 제1 펌웨어 코드가, 제2 펌웨어 코드에 대한 제3 해시 값을 생성하는 단계; 상기 제1 펌웨어 코드가, 상기 제3 해시 값 및 상기 제2 부팅 값을 이용하여 제3 부팅 값을 생성하는 단계; 및 상기 제1 내지 제3 부팅 값 중 적어도 하나를 보안 부팅의 성공 여부 확인을 위해 호스트로 전송하는 단계를 포함한다.
본 발명의 실시 예에 따른 보안 부팅 시스템은 빠른 속도로 보안 부팅을 수행할 수 있다.
도 1은 본 발명의 실시 예에 따른 보안 부팅 시스템(1000)을 보여주는 블록도이다.
도 2는 본 발명에 따른 보안 부팅 시스템(1000A)의 일 예를 좀 더 자세히 보여주는 블록도이다.
도 3a는 호스트(1100)에서 생성된 HPS 값을 전자 장치(1200)에 안전하게 저장하기 위한 프로토콜의 일 예를 보여주는 순서도이다.
도 3b는 HPS 값이 유효한지 여부에 따른 전자 장치(1200)의 동작 방법의 일 예를 좀 더 자세히 보여주는 순서도이다.
도 4는 외부의 펌웨어 릴리즈 서버가 HPS 값에 기초하여 검증 값을 생성하는 일 예를 보여주는 도면이다.
도 5a 및 도 5b는 호스트(1100)이 검증 값 저장 유닛(1140)에 저장된 검증 값의 일 예를 보여주는 도면이다.
도 6은 도 2의 전자 장치(1200)의 보안 부팅 동작의 일 예를 보여주는 순서도이다.
도 7은 대칭키 기반의 HMAC 알고리즘에 의하여 부팅 값이 생성되는 일 예를 보여주는 도면이다.
도 8a 및 도 8b는 호스트(1100)의 보안 부팅 검증 모듈(1130)의 동작의 일 예를 보여주는 순서도이다.
도 9a는 전자 장치(1200)가 부팅 결과를 호스트(1100)에 보고하는 프로토콜의 일 예를 보여주는 순서도이다.
도 9b는 전자 장치(1200)가 부팅 결과를 호스트(1100)에 보고하는 프로토콜의 다른 예를 보여주는 순서도이다.
도 10은 본 발명에 따른 보안 부팅 시스템(1000B)의 일 예를 보여주는 블록도이다.
도 11은 도 10의 보안 부팅 시스템(1000B)의 부팅 값 생성 동작의 일 예를 보여주는 도면이다.
도 12는 본 발명에 따른 보안 부팅 시스템(1000C)의 일 예를 보여주는 블록도이다.
도 13은 도 12의 보안 부팅 시스템(1000C)의 검증 값 생성 동작의 일 예를 보여주는 도면이다.
도 2는 본 발명에 따른 보안 부팅 시스템(1000A)의 일 예를 좀 더 자세히 보여주는 블록도이다.
도 3a는 호스트(1100)에서 생성된 HPS 값을 전자 장치(1200)에 안전하게 저장하기 위한 프로토콜의 일 예를 보여주는 순서도이다.
도 3b는 HPS 값이 유효한지 여부에 따른 전자 장치(1200)의 동작 방법의 일 예를 좀 더 자세히 보여주는 순서도이다.
도 4는 외부의 펌웨어 릴리즈 서버가 HPS 값에 기초하여 검증 값을 생성하는 일 예를 보여주는 도면이다.
도 5a 및 도 5b는 호스트(1100)이 검증 값 저장 유닛(1140)에 저장된 검증 값의 일 예를 보여주는 도면이다.
도 6은 도 2의 전자 장치(1200)의 보안 부팅 동작의 일 예를 보여주는 순서도이다.
도 7은 대칭키 기반의 HMAC 알고리즘에 의하여 부팅 값이 생성되는 일 예를 보여주는 도면이다.
도 8a 및 도 8b는 호스트(1100)의 보안 부팅 검증 모듈(1130)의 동작의 일 예를 보여주는 순서도이다.
도 9a는 전자 장치(1200)가 부팅 결과를 호스트(1100)에 보고하는 프로토콜의 일 예를 보여주는 순서도이다.
도 9b는 전자 장치(1200)가 부팅 결과를 호스트(1100)에 보고하는 프로토콜의 다른 예를 보여주는 순서도이다.
도 10은 본 발명에 따른 보안 부팅 시스템(1000B)의 일 예를 보여주는 블록도이다.
도 11은 도 10의 보안 부팅 시스템(1000B)의 부팅 값 생성 동작의 일 예를 보여주는 도면이다.
도 12는 본 발명에 따른 보안 부팅 시스템(1000C)의 일 예를 보여주는 블록도이다.
도 13은 도 12의 보안 부팅 시스템(1000C)의 검증 값 생성 동작의 일 예를 보여주는 도면이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 보안 부팅 시스템(1000)을 보여주는 블록도이다. 도 1을 참조하면, 보안 부팅 시스템(1000)은 호스트(1100) 및 전자 장치(1200)를 포함한다.
호스트(1100)와 전자 장치(1200)는 HPS(Host Pre-installed Secret) 값을 공유할 수 있다. 예를 들어, 호스트(1100)는 HPS 값을 생성하고, 생성된 HPS 값을 전자 장치(1200)에 제공할 수 있다. 호스트(1100)와 전자 장치(1200)가 공유하는 HPS 값은 보안 부팅 시스템(1000)의 보안 부팅 동작에 사용될 수 있다. 여기서, 보안 부팅 동작이란 전자 장치(1200)의 부트 로더 코드 또는 펌웨어 코드의 변조 여부를 확인하고, 비정상 부트 로더 코드 또는 비정상 펌웨어 코드가 확인된 경우에는 그 실행을 중지하거나 치유하는 부팅 방법을 지칭할 수 있다. 예를 들어, 전자 장치(1200)는 HPS 값을 이용하여 부팅 값(booting value)을 생성하고, 호스트(1100)는 전자 장치(1200)로부터 수신한 부팅 값을 HPS 값에 기초한 검증 값(verification value)과 비교함으로써 부트 로더 코드 또는 펌웨어 코드의 변조 여부를 확인할 수 있다.
호스트(1100)는 HPS 생성 모듈(1110), 저장 유닛(1120), 보안 부팅 검증 모듈(1130) 및 검증 값 저장 유닛(1140)을 포함할 수 있다.
HPS 생성 모듈(1110)은 HPS 값을 생성할 수 있다. 예를 들어, HPS 생성 모듈(1110)은 임의의 HPS 값을 생성하고, 생성된 HPS 값을 암호화하여 전자 장치(1200)에 제공할 수 있다. 예를 들어, HPS 생성 모듈(1110)은 RSA 알고리즘에 기초하여 HPS 값을 암호화할 수 있다. 이 경우, 전자 장치(1200)의 제조 과정에서 미리 저장된 설정 키(Provisioning Key)가 RSA 알고리즘의 키(Key)로 제공될 수 있다. 한편, HPS 값은 비밀 값, 고유 값, 장치 고유 값, 고유키 등 다양한 명칭으로 명명될 수 있다.
HPS 저장 유닛(1120)은 HPS 값을 저장할 수 있다. HPS 저장 유닛(1120)은 HPS 값을 안전하게 보관하기 위하여 OTP 메모리 또는 eFuse (electronic Fuse) 메모리로 구현될 수 있다. 다만, 이는 예시적인 것이며, HPS 저장 유닛(1120)은 마스크(Mask) ROM(Read-Only Memory), PROM(Programmable Read-Only Memory), EPROM(Erasable Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Memory), 플래시 메모리(Flash Memory) 등으로 구현될 수 있다.
보안 부팅 검증 모듈(1130)은 전자 장치(1200)로부터 부팅 값을 수신할 수 있다. 여기서, 부팅 값은 전자 장치(1200)로부터 수신한 장치 식별자 값(CDI) 또는 평가 값(Measurement value)을 포함할 수 있다. 예를 들어, 장치 식별자 값(CDI) 또는 평가 값은 HPS 값에 기초하여 생성될 수 있다.
또한, 보안 부팅 검증 모듈(1130)은 검증 값(verification)을 수신할 수 있다. 여기서, 검증 값은 외부의 펌웨어 릴리즈 서버(Firmware Release Server)로부터 수신되거나 또는 호스트(1100)에서 생성한 보증 값(Endorsement value) 또는 해시 값(Hash value)을 포함할 수 있다. 예를 들어, 보증 값 또는 해시 값은 HPS 값에 기초하여 생성될 수 있다.
보안 부팅 검증 모듈(1130)은 부팅 값과 검증 값에 기초하여, 전자 장치(1200)의 부트 로더 코드 또는 펌웨어 코드의 변조 여부를 확인할 수 있다. 만약 부트 로더 코드 또는 펌웨어 코드가 변조되었다면, 장치 식별자 값(CDI) 또는 평가 값은 정상적으로 생성되지 않는다. 따라서, 보안 부팅 검증 모듈(1130)은 부팅 값과 검증 값을 비교함으로써 부트 로더 코드 또는 펌웨어 코드의 변조 여부를 확인할 수 있다.
검증 값 저장 유닛(1140)은 부트 로더 코드 또는 펌웨어 코드의 변조 여부를 확인하는데 사용되는 검증 값을 저장할 수 있다. 예를 들어, 검증 값 저장 유닛(1140)은 외부의 펌웨어 릴리즈 서버로부터 보증 값 또는 해시 값을 수신하고, 이를 저장할 수 있다. 또는, 검증 값 저장 유닛(1140)은 호스트(1100)에서 생성한 보증 값 또는 해시 값을 저장할 수 있다. 일 실시 예에 있어서, 검증 값 저장 유닛(1140)은 OTP 메모리, 마스크 ROM, PROM, EPROM, EEPROM, 플래시 메모리 등으로도 구현될 수 있다. 일 실시 예에 있어서, 검증 값 저장 유닛(1140)은 HPS 저장 유닛(1110)과 함께 하나의 저장 유닛으로 구현될 수도 있다.
전자 장치(1200)는 부팅 시에 부팅 동작에 대한 부팅 값을 생성하고, 생성된 부팅 값을 호스트(1100)에 제공할 수 있다. 전자 장치(1200)는 HPS 저장 유닛(1220), ROM(1230), 부트 로더(1250), 그리고 제1 및 제2 펌웨어(1260, 1270)를 포함할 수 있다.
HPS 저장 유닛(1220)은 호스트(1100)에 저장된 HPS 값과 동일한 PDS 값을 저장할 수 있다. HPS 저장 유닛(1220)은 OTP 메모리 또는 eFuse (electronic Fuse) 메모리로 구현될 수 있으나, 이에 한정되는 것은 아니다. 예를 들어, HPS 저장 유닛(1220)은 마스크 ROM, PROM, EPROM, EEPROM, 플래시 메모리 등으로도 구현될 수 있다.
ROM(1230)은 전자 장치(1200)에 전원이 공급될 때에 가장 먼저 실행되는 롬 코드(ROM Code)를 저장할 수 있다. 롬 코드는 HPS 저장 유닛(1220)으로부터 HPS 값을 수신하고, 부트 로더(1250)로부터 부트 로더 코드를 수신할 수 있다. 롬 코드는 HPS 값 및 부트 로더 코드에 기초하여 제1 장치 식별자 값을 생성할 수 있다.
부트 로더(1250)는 부트 로더 코드를 포함할 수 있다. 부트 로더 코드는 ROM(1230)으로부터 제1 장치 식별자 값을 수신하고, 제1 펌웨어(1260)로부터 제1 펌웨어 코드(Firmware Code1)를 수신할 수 있다. 부트 로더 코드는 제1 장치 식별자 값 및 제1 펌웨어 코드에 기초하여 제2 장치 식별자 값을 생성할 수 있다.
제1 펌웨어(1260)는 제1 펌웨어 코드를 포함할 수 있다. 제1 펌웨어 코드는 부트 로더(1250)로부터 제2 장치 식별자 값을 수신하고, 제2 펌웨어(1270)로부터 제2 펌웨어 코드(Firmware Code2)를 수신할 수 있다. 제1 펌웨어 코드는 제2 장치 식별자 값 및 제2 펌웨어 코드에 기초하여 제3 장치 식별자 값을 생성할 수 있다.
본 발명의 일 실시 예에 있어서, 전자 장치(1200)는 제1 내지 제3 장치 식별자 값 중 적어도 하나를 부팅 값으로써 호스트(1100)에 제공할 수 있다. 호스트(1100)는 부팅 값과 검증 값을 비교함으로써, 부트 로더 코드, 제1 펌웨어 코드 및/또는 제2 펌웨어 코드의 변조 여부를 확인할 수 있다.
좀 더 자세히 설명하면, 제1 장치 식별자 값은 부트 로더 코드에 기초하여 생성된다. 이에 따라, 만약 부트 로더 코드가 변조되었다면, 제1 장식 식별자 값은 정상적으로 생성되지 않는다. 따라서, 제1 장치 식별자 값이 대응하는 검증 값과 다른 경우, 호스트(1100)의 보안 부팅 검증 모듈(1130)은 부트 로더 코드가 변조되었다고 판단할 수 있다.
또한, 제2 장치 식별자 값은 제1 장치 식별자 값 및 제1 펌웨어 코드에 기초하여 생성된다. 이에 따라, 만약 부트 로더 코드 또는 제1 펌웨어 코드가 변조되었다면, 제2 장식 식별자 값은 정상적으로 생성되지 않는다. 따라서, 제2 장치 식별자 값이 대응하는 검증 값과 다른 경우, 호스트(1100)의 보안 부팅 검증 모듈(1130)은 부트 로더 코드 또는 제1 펌웨어 코드 중 적어도 하나가 변조되었다고 판단할 수 있다.
또한, 제3 장치 식별자 값은 제2 장치 식별자 값 및 제2 펌웨어 코드에 기초하여 생성된다. 이에 따라, 만약 부트 로더 코드, 제1 펌웨어 코드 또는 제2 펌웨어 코드가 변조되었다면, 제3 장식 식별자 값은 정상적으로 생성되지 않는다. 따라서, 제3 장치 식별자 값이 대응하는 검증 값과 다른 경우, 호스트(1100)의 보안 부팅 검증 모듈(1130)은 부트 로더 코드, 제1 펌웨어 코드 및 제2 펌웨어 코드 중 적어도 하나가 변조되었다고 판단할 수 있다.
이상에서 살펴본 바와 같이, 본 발명의 실시 예에 따른 보안 부팅 시스템(1000)은 호스트(1100)와 전자 장치(1200)가 HPS 값을 공유하며, HPS 값에 기초하여 보안 부팅 동작을 수행한다. 즉, 보안 시스템(1000)은 대칭키(symmetric-key) 기반 보안 부팅을 지원하며, 이에 따라 하드웨어 가속기 없이 빠르게 부팅 동작이 수행될 수 있다. 또한, 보안 부팅 시에, 전자 장치(1200)는 HPS 값을 이용하여 부팅 값을 생성하고, 호스트(1100)는 부팅 값을 검증 값과 비교함으로써 부트 로더 코드 또는 펌웨어 코드의 변조 여부를 확인할 수 있다. 따라서, 부트 로더 코드 및 펌웨어 코드의 무결성이 보장될 수 있다.
도 2는 본 발명에 따른 보안 부팅 시스템(1000A)의 일 예를 좀 더 자세히 보여주는 블록도이다. 도 2에서는, 예시적으로, 외부의 펌웨어 릴리즈 서버에 의하여 생성된 검증 값에 기초하여 보안 부팅 동작을 수행하는 보안 부팅 시스템(1000A)dl 도시되어 있다. 도 2의 보안 부팅 시스템(1000A)은 도 1의 보안 부팅 시스템(1000)과 유사하다. 따라서, 동일하거나 유사한 구성은 동일하거나 유사한 참조번호로 표기되었으며, 중복되는 설명은 이하 생략될 것이다.
도 2를 참조하면, 보안 부팅 시스템(1000A)은 호스트(1100) 및 전자 장치(1200)를 포함한다.
호스트(1100)는 외부의 펌웨어 릴리즈 서버에 HPS 값을 전송할 수 있다. 펌웨어 릴리즈 서버는 호스트(1100)로부터 수신한 HPS 값에 기초하여 검증 값을 생성할 수 있다. 호스트(1100)는 펌웨어 릴리즈 서버로부터 검증 값을 수신할 수 있다. 호스트(1100)는 펌웨어 릴리즈 서버로부터 수신된 검증 값과 전자 장치(1200)로부터 수신된 부팅 값을 비교함으로써, 부트 로더 코드 또는 펌웨어 코드의 변조 여부를 확인할 수 있다. 이를 위해, 호스트(1100)는 HPS 생성 모듈(1110), 저장 유닛(1120), 보안 부팅 검증 모듈(1130) 및 검증 값 저장 유닛(1140)을 포함할 수 있다.
HPS 생성 모듈(1110)은 HPS 값을 생성하고, 이를 HPS 저장 유닛(1120)에 저장할 수 있다. 또한, HPS 생성 모듈(1110)은 HPS 값을 외부의 펌웨어 릴리즈 서버에 전송할 수 있다.
검증 값 저장 유닛(1140)은 펌웨어 릴리즈 서버로부터 검증 값을 수신하고, 이를 저장할 수 있다.
보안 부팅 검증 모듈(1130)은 검증 값 저장 유닛(1140)으로부터 검증 값을 수신하고, 전자 장치(1200)로부터 부팅 값을 수신할 수 있다. 보안 부팅 검증 모듈(1130)은 부팅 값과 검증 값의 비교 결과에 기초하여, 전자 장치(1200)의 부트 로더 코드 또는 펌웨어 코드의 변조 여부를 확인할 수 있다.
전자 장치(1200)는 부팅 시에 부팅 동작에 대한 부팅 값을 생성하고, 생성된 부팅 값을 호스트(1100)에 제공할 수 있다. 이를 위해, 설정 키 저장 유닛(1210), HPS 저장 유닛(1220), ROM(1230), 저장 유닛(1240), 부트 로더(1250), 제1 및 제2 펌웨어(1260, 1270), 메인 메모리(1280) 및 컨트롤러(1290)를 포함할 수 있다.
설정 키 저장 유닛(1210)은 전자 장치(1200) 고유의 설정 키(Provisioning Key)를 저장할 수 있다. 예를 들어, 설정 키는 전자 장치(1200)의 제조 과정에서 생성되어 설정 키 저장 유닛(1210)에 저장될 수 있다. 설정 키 저장 유닛(1210)에 저장된 설정 키는 공개키 기반 암호화 기법인 RSA 알고리즘의 키로 사용될 수 있으며, 특히 호스트(1100)에서 생성된 HPS 값을 전자 장치(1200)에 저장할 때에 사용될 수 있다. 일 실시 예에 있어서, 설정 키 저장 유닛(1210)은 OTP 메모리, 마스크 ROM, PROM, EPROM, EEPROM, 플래시 메모리 등으로도 구현될 수 있다.
HPS 저장 유닛(1220)은 호스트(1100)에서 생성된 HPS 값을 저장할 수 있다. HPS 저장 유닛(1220)은 OTP 메모리 또는 eFuse (electronic Fuse) 메모리로 구현될 수 있으나, 이에 한정되는 것은 아니다. 일 실시 예에 있어서, HPS 저장 유닛(1220)은 설정 키 저장 유닛(1210)과 함께 하나의 저장 유닛으로 구현될 수도 있다.
ROM(1230)은 롬 코드(ROM Code)를 저장할 수 있으며, 롬 코드는 HPS 저장 유닛(1220)으로부터 HPS 값을 수신하고, 부트 로더(1250)로부터 부트 로더 코드를 수신할 수 있다. 롬 코드는 HPS 값 및 부트 로더 코드에 기초하여 제1 장치 식별자 값을 생성할 수 있다.
저장 유닛(1250)은 부트 로더(1260) 및 펌웨어(1270)를 저장할 수 있다. 저장 유닛(1250)은 비휘발성 메모리로 구현될 수 있으며, 예를 들어, EEPROM, 플래시 메모리, PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 또는 이와 유사한 메모리로 구현될 수 있다.
부트 로더(1250)는 부트 로더 코드를 포함하며, 부트 로더 코드는 ROM(1230)으로부터 수신된 제1 장치 식별자 값과 제1 펌웨어(1260)로부터 수신된 제1 펌웨어 코드에 기초하여 제2 장치 식별자 값을 생성할 수 있다.
제1 펌웨어(1260)는 제1 펌웨어 코드를 포함하며, 제1 펌웨어 코드는 부트 로더(1250)로부터 수신된 제2 장치 식별자 값과 제2 펌웨어(1270)로부터 수신된 제2 펌웨어 코드에 기초하여 제3 장치 식별자 값을 생성할 수 있다.
본 발명의 일 실시 예에 있어서, 전자 장치(1200)의 부팅 동작 시에 생성된 제1 내지 제3 장치 식별자 값 중 적어도 하나는 부팅 값으로써 호스트(1100)에 제공할 수 있다. 호스트(1100)는 전자 장치(1200)로부터 수신된 부팅 값과 펌웨어 릴리즈 서버로부터 수신된 검증 값의 비교 결과에 기초하여, 전자 장치(1200)의 부트 로더 코드 또는 제1 및 제2 펌웨어 코드의 변조 여부를 확인할 수 있다.
계속해서 도 2를 참조하면, 메인 메모리(1280)는 휘발성 메모리로써, 전자 장치(1200)의 워킹 메모리(working memory)로 제공될 수 있다. 예를 들어, 메인 메모리(1280)는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), 모바일 DRAM 또는 이와 유사한 메모리로 구현될 수 있다. 다만, 이는 예시적인 것이며, 메인 메모리(1280)는 비휘발성 메모리로 구현될 수도 있다.
컨트롤러(1290)는 적어도 하나의 프로세서를 포함할 수 있으며, 전자 장치(1200)의 전반적인 동작을 제어할 수 있다.
이상에서 살펴본 바와 같이, 본 발명의 실시 예에 따른 보안 부팅 시스템(1000A)은 호스트(1100)에서 생성한 HPS 값을 전자 장치(1200)에 저장할 때에 공개키 기반의 암호화 기법을 사용할 수 있다. 따라서, HPS 값에 대한 기밀성(confidentiality)이 보장될 수 있다. 또한, 보안 부팅 시스템(1000A)은 보안 부팅 동작을 수행할 때에는 HPS 값에 기초하여 생성된 부팅 값 및 검증 값에 기초하여 부트 로더 코드 및 펌웨어 코드의 변조 여부를 확인할 수 있다. 따라서, 하드웨어 가속기를 구비하지 않고도 빠른 부팅 동작이 가능할 뿐만 아니라, 부트 로더 코드 및 펌웨어 코드의 무결성이 보장될 수 있다.
이하에서는, 본 발명의 실시 예에 따른 보안 부팅 시스템(1000A)의 동작 방법이 좀 더 자세히 설명될 것이다.
도 3a는 호스트(1100)에서 생성된 HPS 값을 전자 장치(1200)에 안전하게 저장하기 위한 프로토콜의 일 예를 보여주는 순서도이다. 도 3b는 HPS 값이 유효한지 여부에 따른 전자 장치(1200)의 동작 방법의 일 예를 좀 더 자세히 보여주는 순서도이다.
도 3a를 참조하면, S110 단계에서, 호스트(1100)는 전자 장치(1200) 공개키 요청 메세지(GET_PUB_KEY)를 전송할 수 있다. 예를 들어, 호스트(1100)는 RSA 알고리즘의 공개키를 전자 장치(1200)에 요청할 수 있다.
S120 단계에서, 전자 장치(1200)는 호스트(1100)에 공개 키를 회신할 수 있다. 예를 들어, 전자 장치(1200)의 설정 키 저장 유닛(1220)은 고유 키로써 공개 키(Prov_PK) 및 개인 키(Prov_SK)를 저장할 수 있으며, 전자 장치(1200)는 공개 키(Prov_PK)를 호스트(1100)에 회신할 수 있다. 이 경우, 공개 키(Prov_PK)의 엑스포넌트(exponent) 값으로는, 일반적인 경우와 마찬가지로, “0x10001”이 사용될 수 있다. 따라서, 전자 장치(1200)는 공개 키(Prov_PK)의 모듈러스(modulus) 값만을 호스트(1100)에 회신할 수 있다.
S130 단계에서, 호스트(1100)는 전자 장치(1200)에 키 프로그램 메세지(SET_KEY_PRGRAMMING)를 전송할 수 있다. 즉, 호스트(1100)는 전자 장치(1200)에 HPS 값을 저장할 것을 요청할 수 있다. 이 경우, 키 프로그램 메세지(SET_KEY_PRGRAMMING)는 파라미터로 'Rand_H' 및 'RSA-Enc{Prov_PK, HPS}'를 포함할 수 있다. 여기서, 'Rand_H'는 호스트(1100)가 임의로 생성한 랜덤 값이며, HPS는 호스트(1100)가 설정하기 원하는 HPS 값일 수 있다. 호스트(1100)는 전자 장치(1200)로부터 수신된 공개키(Prov_PK)로 HPS 값을 암호화하여 전자 장치(1200)에 전송할 수 있다.
S140 단계에서, 전자 장치(1200)는 호스트(1100)에 키 프로그램 회신 메세지(KEY_PROGRAMMING_RES)를 전송할 수 있다. 이 경우, 키 프로그램 회신 메세지(KEY_PRGRAMMING_RES)는 파라미터로 'Rand_D' 및 'HMAC{HPS, Rand_H}'를 포함할 수 있다. 여기서, 'Rand_D'는 전자 장치(1200)가 임의로 생성한 랜덤 값일 수 있고, 'HMAC{HPS, Rand_H}'는 HPS 및 Rand_H에 대해 HMAC 알고리즘을 적용하여 생성된 HMAC 값일 수 있다. 호스트(1100)는 전자 장치(1200)로부터 수신된 HMAC 값을 검증(verify)함으로써, 전자 장치(1200)가 HPS 값을 정상적으로 수신하였는지 여부를 확인할 수 있다.
S150 단계에서, 호스트(1100)는 전자 장치(1200)에 컨펌 키 메세지(CONFIRM_KEY)를 전송할 수 있다. 여기서, 컨펌 키 메세지(CONFIRM_KEY)는 HPS 값이 정상적으로 전자 장치(1200)에 전달되었음을 확인하기 위한 메세지일 수 있다. 컨펌 키 메세지(CONFIRM_KEY)는 파라미터로 'HMAC{HPS, Rand_D}'를 포함하며, 'HMAC{HPS, Rand_H}'는 HPS 및 Rand_D에 대해 HMAC 알고리즘을 적용하여 생성된 HMAC 값일 수 있다.
S160 단계에서, 전자 장치(1200)는 HMAC 값에 기초하여 호스트(1100)가 전송한 HPS 값이 정상적인 HPS 값인지 여부를 확인할 수 있다. 만약, HPS 값이 정상적인 HPS 값이라면, 전자 장치(1200)는 HPS 값을 HPS 저장 유닛(1220)에 저장할 수 있다.
도 3b를 참조하여 좀 더 자세히 설명하면, S161 단계에서, 전자 장치(1200)는 HMAC 값에 기초하여 HPS 값의 변조 여부를 확인할 수 있다. 만약 HMAC 값이 유효한 값이라면, 전자 장치(1200)는 HPS 값을 HPS 저장 유닛(1220)에 저장할 수 있다(S162 단계). 이후, 전자 장치(1200)는 호스트(1100)에 전송할 파라미터인 'Prov_Result'가 성공(Success) 메세지를 포함하도록 설정할 수 있다. 만약 HMAC 값이 유효하지 않다면, 전자 장치(1200)는 HPS 값을 HPS 저장 유닛(1220)에 저장하지 않으며, 'Prov_Result'가 실패(Fail) 메세지를 포함하도록 설정할 수 있다.
다시 도 3a를 참조하면, S170 단계에서, 전자 장치(1200)는 호스트(1100)에 컨펌 키 회신 메세지(CONFIRM_KEY_RES)를 회신할 수 있다. 컨펌 키 회신 메세지(CONFIRM_KEY_RES)는 파라미터로 'Prov_Result'를 포함할 수 있다. 만약 정상적인 HPS 값이 전자 장치(1200)에 저장되었다면, 'Prov_Result'는 성공 메세지(Success)를 포함할 수 있다. 만약 정상적인 HPS 값이 전자 장치(1200)에 전송되지 않았다면, 'Prov_Result'는 실패 메세지(Fail)를 포함할 수 있다.
이상에서 설명된 바와 같이, 호스트(1100)에서 생성된 HPS 값은 공개키 기반의 암호화 알고리즘에 기초하여 안전하게 전자 장치(1200)에 저장될 수 있다.
도 4는 외부의 펌웨어 릴리즈 서버가 HPS 값에 기초하여 검증 값을 생성하는 일 예를 보여주는 도면이며, 도 5a 및 도 5b는 호스트(1100)이 검증 값 저장 유닛(1140)에 저장된 검증 값의 일 예를 보여주는 도면이다.
먼저 도 4를 참조하면, 펌웨어 릴리즈 서버는 HMAC 알고리즘을 통하여 검증 값을 생성할 수 있다.
구체적으로, Hash 알고리즘(110)은 부트 로더 이미지(Boot Loader Image)를 수신하고, 이에 대응하는 제1 해시 값(L1 Hash)을 생성할 수 있다.
HMAC 알고리즘(120)은 호스트(1100)로부터 HPS 값을 수신하고, HPS 값 및 제1 해시 값(L1 Hash)에 기초하여 제1 보증 값(L1 Endorsement value)를 생성할 수 있다. 즉, HMAC 알고리즘(120)은 HPS 값을 HMAC(Hash-based Message Authentication Code) 함수의 입력 키(input key)로 사용하고, 제1 해시 값을 HMAC 함수의 입력 데이터(input data)로 사용하여, HMAC 값으로 제1 보증 값을 출력할 수 있다.
Hash 알고리즘(130)은 제1 펌웨어 이미지(Firmware Image1)를 수신하고, 이에 대응하는 제2 해시 값(L2 Hash)을 생성할 수 있다.
HMAC 알고리즘(140)은 HMAC 알고리즘(120)으로부터 수신된 제1 보증 값 및 Hash 알고리즘(130)으로부터 출력된 제2 해시 값(L2 Hash)에 기초하여 제2 보증 값(L2 Endorsement value)를 생성할 수 있다.
Hash 알고리즘(150)은 제2 펌웨어 이미지(Firmware Image2)를 수신하고, 이에 대응하는 제3 해시 값(L3 Hash)을 생성할 수 있다.
HMAC 알고리즘(160)은 HMAC 알고리즘(140)으로부터 수신된 제2 보증 값 및 Hash 알고리즘(150)으로부터 출력된 제3 해시 값(L3 Hash)에 기초하여 제3 보증 값(L3 Endorsement value)를 생성할 수 있다.
일 실시 예에 있어서, 제1 내지 제3 보증 값들(L1 Endorsement~L3 Endorsement)은 검증 값으로 사용될 수 있다. 이 경우, 도 5a에 도시된 바와 같이, 제1 내지 제3 보증 값들은 호스트(1100)에 전송되며, 호스트(1100)는 검증 값 저장 유닛(1140)에 이를 저장할 수 있다.
일 실시 예에 있어서, 제1 내지 제3 해시 값들(L1 Hash value~L3 Hash value)이 검증 값으로 사용될 수 있다. 이 경우, 도 5b에 도시된 바와 같이, 제1 내지 제3 해시 값들은 호스트(1100)에 전송되며, 호스트(1100)는 검증 값 저장 유닛(1140)에 이를 저장할 수 있다.
다만, 이는 예시적인 것이며, 제1 내지 제3 보증 값들 및 제1 내지 제3 해시 값들 모두가 검증 값으로 사용될 수 있으며, 제1 내지 제3 보증 값들 및 제1 내지 제3 해시 값들 중 일부만이 검증 값으로 사용될 수도 있다.
이상에서 살펴본 바와 같이, 펌웨어 릴리즈 서버는 HPS 값에 기초하여 검증 값을 생성할 수 있으며, 호스트(1100)는 이를 저장할 수 있다.
한편, 도 4에서, HMAC 알고리즘들(120, 140, 160)은 실질적으로 동일한 알고리즘일 수 있으며, Hash 알고리즘들(110, 130, 150)도 실질적으로 동일한 알고리즘일 수 있다. 또한, HMAC 알고리즘을 대신하여, 유니버설 해싱 기반 메세지 인증 코드(Message Authentication Code based on Universal hashing; UMAC) 알고리즘, 암호 기반 메세지 인증 코드(Cipher-based Message Authentication Code; CMAC) 알고리즘, 유니버설 해시를 이용한 블록 암호 기반 메세지 인증 코드(VMAC) 알고리즘, 또는 이와 유사한 알고리즘이 사용될 수도 있다.
도 6 및 도 7은 도 2의 전자 장치(1200)의 부팅 동작을 좀 더 자세히 설명하기 위한 도면이다. 구체적으로, 도 6은 도 2의 전자 장치(1200)의 보안 부팅 동작의 일 예를 보여주는 순서도이고, 도 7은 대칭키 기반의 HMAC 알고리즘에 의하여 부팅 값이 생성되는 일 예를 보여주는 도면이다. 도 6 및 도 7에서, ROM(1230), 부트 로더(1250), 제1 펌웨어(1260) 및 제2 펌웨어(1270)는 각각 RoT(Root of Trust), 제1 레이어(Layer1), 제2 레이어(Layer2) 및 제3 레이어(Layer3)의 계층 구조를 형성할 수 있다. 또한, 설명의 편의상, 롬 코드는 Hash 알고리즘(210) 및 HMAC 알고리즘(220)을 포함하고, 부트 로더 코드는 Hash 알고리즘(230) 및 HMAC 알고리즘(240)을 포함하며, 제1 펌웨어 코드는 Hash 알고리즘(260) 및 HMAC 알고리즘(270)을 포함한다고 가정된다.
도 6 및 도 7을 참조하면, S210 단계에서, RoT(Root of Trust)인 ROM(1230)에 저장된 롬 코드가 실행될 수 있다. 롬 코드에 포함된 Hash 알고리즘(210)은 부트 로더(1250)의 부트 로더 코드에 대응하는 BL 평가 값(BL Measurement value)을 생성할 수 있다.
S220 단계에서, 롬 코드에 포함된 HMAC 알고리즘(220)은 HPS 저장 유닛(1220)으로부터 수신된 HPS 값 및 Hash 알고리즘(210)으로부터 출력된 BL 평가 값에 기초하여 제1 장치 식별자 값(CDI1)을 생성할 수 있다.
S230 단계에서, 제1 레이어인 부트 로더(1250)가 실행될 수 있다.
S240 단계에서, 제1 레이어인 부트 로더 코드에 포함된 Hash 알고리즘(230)은 제1 펌웨어 코드에 대응하는 제1 펌웨어 평가 값(FW1 Measurement value)을 생성할 수 있다.
S250 단계에서, 부트 로더 코드에 포함된 HMAC 알고리즘(240)은 ROM(1240)으로부터 수신된 제1 장치 식별자 값(CDI1) 및 Hash 알고리즘(230)으로부터 출력된 제1 펌웨어 평가 값에 기초하여 제2 장치 식별자 값(CDI2)을 생성할 수 있다.
S260 단계에서, 제2 레이어인 제1 펌웨어(1270)가 실행될 수 있다.
S270 단계에서, 제2 레이어인 부트 로더 코드에 포함된 Hash 알고리즘(260)은 제2 펌웨어 코드에 대응하는 제2 펌웨어 평가 값(FW2 Measurement value)을 생성할 수 있다.
S280 단계에서, 제1 펌웨어 코드에 포함된 증명 키 알고리즘(250)은 제2 장치 식별자 값(CDI2)을 증명 키(Attestation Key)로 설정하고, HMAC 알고리즘(270)은 증명 키 및 Hash 알고리즘(260)으로부터 출력된 제2 펌웨어 평가 값에 기초하여 제3 장치 식별자 값(CDI3)을 생성할 수 있다.
S290 단계에서, 전자 장치(1200)는 호스트(1100)에 부팅 결과를 보고할 수 있다. 예를 들어, 전자 장치(1200)는 제1 내지 제3 장치 식별자 값(CDI1~CDI3)을 부팅 값으로 하여 호스트(1100)에 부팅 결과를 보고할 수 있다. 다른 예로, 전자 장치(1200)는 제1 내지 제3 펌웨어 평가 값(FW1 Measurement value~FW3 Measurement value)을 부팅 값으로 하여 호스트(1100)에 부팅 결과를 보고할 수 있다. 다만, 이는 예시적인 것이며, 부팅 값은 제1 내지 제3 장치 식별자 값 및 제1 내지 제3 펌웨어 평가 값 모두를 포함할 수도 있으며, 또는 제1 내지 제3 장치 식별자 값 및 제1 내지 제3 펌웨어 평가 값 중 일부만을 포함할 수도 있다.
도 8a 및 도 8b는 호스트(1100)의 보안 부팅 검증 모듈(1130)의 동작의 일 예를 보여주는 순서도이다. 예시적으로, 도 8a에서는 부팅 값 및 검증 값으로 각각 장치 식별자 값(CDI) 및 보증 값(Endorsement value)을 사용하여 검증 동작을 수행하는 예가 도시되어 있으며, 도 8b에서는 부팅 값 및 검증 값으로 각각 펌웨어 평가 값(FW Measurement value) 및 해시 값(Hash value)을 사용하여 검증 동작을 수행하는 예가 도시되어 있다. 설명의 편의상, 도 8a에서는 도 5a와 같이 검증 값 저장 유닛(1140)에 제1 내지 제3 보증 값(L1 Endorsement value~L3 Endorsement value)이 저장되어 있다고 가정되고, 도 8b에서는 도 5b와 같이 검증 값 저장 유닛(1140)에 제1 내지 제3 해시 값(L1 Hash value~L3 Hash value)이 저장되어 있다고 가정될 것이다.
먼저, 도 8a를 참조하면, S291 단계에서, 호스트(1100)의 보안 부팅 검증 모듈(1130)은 부팅 값으로 장치 식별자 값(CDI)을 수신하고, 장치 식별자 값(CDI)이 검증 값 저장 유닛(1140)에 저장된 보증 값(Endorsement value)과 동일한지 판단할 수 있다.
일 실시 예에 있어서, 호스트(1100)의 보안 부팅 검증 모듈(1130)은 제1 장치 식별자 값(CDI1)을 수신할 수 있다. 제1 장치 식별자 값(CDI1)은 부트 로더 코드에 기초하여 생성되기 때문에, 만약 부트 로더 코드가 변조되었다면, 제1 장식 식별자 값(CDI1)은 제1 보증 값(L1 Endorsement value)과 다를 수 있다. 따라서, 제1 장치 식별자 값(CDI1)이 제1 보증 값(L1 Endorsement value)과 다른 경우, 보안 부팅 검증 모듈(1130)은 부트 로더 코드가 변조되었다고 판단할 수 있다.
일 실시 예에 있어서, 호스트(1100)의 보안 부팅 검증 모듈(1130)은 제2 장치 식별자 값(CDI2)을 수신할 수 있다. 제2 장치 식별자 값(CDI2)은 제1 장치 식별자 값(CDI1) 및 제1 펌웨어 코드에 기초하여 생성되기 때문에, 만약 부트 로더 코드 또는 제1 펌웨어 코드가 변조되었다면, 제2 장식 식별자 값(CDI2)은 제2 보증 값(L2 Endorsement value)과 다를 수 있다. 따라서, 제2 장치 식별자 값(CDI2)이 제2 보증 값(L2 Endorsement value)과 다른 경우, 보안 부팅 검증 모듈(1130)은 부트 로더 코드 또는 제1 펌웨어 코드가 변조되었다고 판단할 수 있다.
일 실시 예에 있어서, 호스트(1100)의 보안 부팅 검증 모듈(1130)은 제3 장치 식별자 값(CDI3)을 수신할 수 있다. 제3 장치 식별자 값(CDI3)은 제2 장치 식별자 값(CDI2) 및 제2 펌웨어 코드에 기초하여 생성되기 때문에, 만약 부트 로더 코드, 제1 펌웨어 코드 또는 제2 펌웨어 코드가 변조되었다면, 제3 장식 식별자 값(CDI3)은 제3 보증 값(L3 Endorsement value)과 다를 수 있다. 따라서, 제3 장치 식별자 값(CDI3)이 제3 보증 값(L3 Endorsement value)과 다른 경우, 보안 부팅 검증 모듈(1130)은 부트 로더 코드, 제1 펌웨어 코드 또는 제2 펌웨어 코드 중 적어도 하나가 변조되었다고 판단할 수 있다.
만약 부트 로더 코드, 제1 펌웨어 코드 또는 제2 펌웨어 코드 중 적어도 하나가 변조되었다고 판단되었다면, 호스트(1100)는 전자 장치(1200)의 부팅 동작을 실패(Fail)로 설정할 수 있다(S293 단계). 이 경우, 호스트(1100)는 전자 장치(1200)의 부팅 동작을 중지하고, 부트 로더 코드, 제1 펌웨어 코드 또는 제2 펌웨어 코드에 대한 리커버리 동작을 수행할 수 있다(S294 단계). 다만, 이는 예시적인 것이며, 호스트(1100)는 전자 장치(1200)의 파워를 오프하거나 전자 장치(1200)를 리셋할 수도 있다.
만약 부트 로더 코드, 제1 펌웨어 코드 또는 제2 펌웨어 코드 모두 안전하다고 판단되었다면, 호스트(1100)는 전자 장치(1200)의 부팅 동작을 성공(Success)으로 설정할 수 있다(S293 단계).
한편, 도 8a에서는, 부팅 값으로 장치 식별자 값(CDI)을 사용하고, 검증 값으로 보증 값(Endorsement value)을 사용하여, 전자 장치(1200)의 부트 로더 코드 또는 펌웨어 코드의 변조 여부가 판단되었다. 다만, 이는 예시적인 것이며, 부팅 값으로는 평가 값(Measurement value)를 사용하고, 검증 값으로 해시 값(Hash value)을 사용할 수도 있다.
도 8b를 사용하여 좀 더 자세히 설명하면, S294 단계에서, 호스트(1100)의 보안 부팅 검증 모듈(1130)은 부팅 값으로 평가 값(Measurement value)을 수신하고, 평가 값이 검증 값 저장 유닛(1140)에 저장된 해시 값(Hash value)과 동일한지 판단할 수 있다.
일 실시 예에 있어서, 호스트(1100)의 보안 부팅 검증 모듈(1130)은 BL 평가 값(BL Measurement value)을 수신할 수 있다. BL 평가 값은 부트 로더 코드에 기초하여 생성되기 때문에, 만약 부트 로더 코드가 변조되었다면, BL 평가 값은 제1 해시 값(L1 Hash value)과 다를 수 있다. 따라서, BL 평가 값이 제1 해시 값(L1 Hash value)과 다른 경우, 보안 부팅 검증 모듈(1130)은 부트 로더 코드가 변조되었다고 판단할 수 있다.
일 실시 예에 있어서, 호스트(1100)의 보안 부팅 검증 모듈(1130)은 제1 펌웨어 평가 값(FW1 Measurement value)을 수신할 수 있다. 제1 펌웨어 평가 값은 제1 펌웨어 코드에 기초하여 생성되기 때문에, 만약 제1 펌웨어 코드가 변조되었다면, 제1 펌웨어 평가 값은 제2 해시 값(L2 Hash value)과 다를 수 있다. 따라서, 제1 펌웨어 평가 값이 제2 해시 값(L2 Hash value)과 다른 경우, 보안 부팅 검증 모듈(1130)은 제1 펌웨어 코드가 변조되었다고 판단할 수 있다. 이와 유사하게, 호스트(1100)의 보안 부팅 검증 모듈(1130)은 제2 펌웨어 평가 값(FW2 Measurement value)을 수신할 수 있다. 제2 펌웨어 평가 값이 제3 해시 값(L3 Hash value)과 다르다면, 보안 부팅 검증 모듈(1130)은 제2 펌웨어 코드가 변조되었다고 판단할 수 있다.
만약 부트 로더 코드, 제1 펌웨어 코드 또는 제2 펌웨어 코드 중 적어도 하나가 변조되었다고 판단되었다면, 호스트(1100)는 전자 장치(1200)의 부팅 동작을 실패(Fail)로 설정하고(S297 단계), 리커버리 동작을 수행할 수 있다(S298 단계).
만약 부트 로더 코드, 제1 펌웨어 코드 또는 제2 펌웨어 코드 모두 안전하다고 판단되었다면, 호스트(1100)는 전자 장치(1200)의 부팅 동작을 성공(Success)으로 설정할 수 있다(S296 단계).
이상에서 살펴본 바와 같이, 본 발명의 실시 예에 따른 보안 부팅 시스템(1000A)은 호스트(1100)와 전자 장치(1200)가 HPS 값을 공유하며, HPS 값에 기초하여 생성된 부팅 값 및 검증 값에 기초하여 보안 부팅 동작을 수행한다. 대칭키 기반 보안 부팅을 지원하기 때문에, 보안 부팅 시스템(1000A)은 하드웨어 가속기 없이 빠르게 부팅 동작을 수행할 수 있을 뿐만 아니라, 부트 로더 코드 및 펌웨어 코드의 무결성도 보장할 수 있다.
한편, 전자 장치(1200)에서 생성된 부팅 값을 호스트(1100)에 보고하기 위한 동작은 정해진 프로토콜을 통하여 수행될 수 있다. 이하의 도 9에서는 부팅 값을 호스트(1100)에 보고하기 위한 프로토콜의 일 예가 좀 더 자세히 설명될 것이다.
도 9a는 전자 장치(1200)가 부팅 결과를 호스트(1100)에 보고하는 프로토콜의 일 예를 보여주는 순서도이다. 도 9a에서는, 부팅 값으로 장치 식별자 값(CDI)이 보고된다고 가정된다.
도 9a를 참조하면, S310 단계에서, 호스트(1100)는 전자 장치(1200)에 프로토콜의 버전을 확인하기 위한 버전 확인 메세지(GET_VERSION)를 전송할 수 있다. 예를 들어, 프로토콜의 버전은 1.0부터 시작할 수 있다.
S320 단계에서, 전자 장치(1200)는 호스트(1100)에 지원 가능한 프로토콜 버전에 대한 버전 회신 메세지(VERSION)를 회신할 수 있다.
S330 단계에서, 호스트(1100)는 전자 장치(1200)에 지원 가능한 기능(Capabilities)을 확인하기 위한 기능 확인 메세지(GET_CAPABILITIES)를 전송할 수 있다.
S340 단계에서, 전자 장치(1200)는 호스트(1100)에 지원 가능한 기능에 대한 정보를 포함하는 기능 회신 메세지(CAPABILITIES)를 회신할 수 있다.
S350 단계에서, 호스트(1100)는 전자 장치(1200)를 인증하기 위한 인증 메세지(CHALLENGE)를 전송할 수 있다. 이때, 호스트(1100)는 암호화 통신에서 재전송 공격 방지 등의 용도로 사용되는 임시 값인 제1 넌스 값(Nonce_C)을 전자 장치(1200)에 전송할 수 있다.
S360 단계에서, 전자 장치(1200)는 호스트(1100)에 인증 회신 메세지(CHALLENGE_AUTH)를 회신할 수 있다. 이때, 전자 장치(1200)는 호스트(1100)에 인증 데이터(Auth_Data)를 함께 회신할 수 있다. 여기서, 인증 데이터(Auth_Data)는 장치 식별자 요약 값(CDI_Summary), 그리고 제1 넌스 및 장치 식별자 요약 값(CDI_Summary)에 대한 HMAC 값을 포함할 수 있다. 장치 식별자 요약 값(CDI_Summary)은, 예를 들어, 복수의 장치 식별자 값들(CDI1~CDIn)에 대한 해시 값일 수 있다.
S370 단계에서, 호스트(1100)는 전자 장치(1200)에 부팅 결과에 대한 상세한 내용을 요청하는 결과 요청 메세지(GET_CDI)를 전송할 수 있다. 이때, 호스트(1100)는 임시 값인 제2 넌스 값(Nonce_M)을 전자 장치(1200)에 전송할 수 있다.
S380 단계에서, 전자 장치(1200)는 호스트(1100)에 부팅 결과에 대한 상세한 내용을 포함하는 부팅 결과 메세지(CDI)를 회신할 수 있다. 이때, 전자 장치(1200)는 호스트(1100)에 장치 식별자 데이터(CDI_Data)를 함께 회신할 수 있다. 여기서, 장치 식별자 데이터(CDI_Data)는 장치 식별자 값들 값(CDIs), 그리고 제2 넌스 및 장치 식별자 값들(CDIs)에 대한 HMAC 값을 포함할 수 있다. 이후, 호스트(1100)는 장치 식별자 값(CDI)을 보증 값(Endorsement value)과 비교함으로써, 부트 로더 코드 또는 펌웨어 코드의 변조 여부를 확인할 수 있다.
도 9b는 전자 장치(1200)가 부팅 결과를 호스트(1100)에 보고하는 프로토콜의 다른 예를 보여주는 순서도이다. 설명의 편의상, 도 9b에서는, 부팅 값으로 평가 값(Measurement value)이 보고된다고 가정된다. 도 9b의 프로토콜은 도 9a의 프로토콜과 유사하다. 따라서, 간략한 설명을 위하여, 중복되는 내용은 이하 생략될 것이다.
도 9b를 참조하면, S410 단계에서 호스트(1100)는 전자 장치(1200)에 버전 확인 메세지(GET_VERSION)를 전송하고, S420 단계에서 전자 장치(1200)는 버전 회신 메세지(VERSION)를 회신할 수 있다.
S430 단계에서 호스트(1100)는 전자 장치(1200)에 기능 확인 메세지(GET_CAPABILITIES)를 전송하고, S440 단계에서 전자 장치(1200)는 호스트(1100)에 기능 회신 메세지(CAPABILITIES)를 회신할 수 있다.
S450 단계에서, 호스트(1100)는 전자 장치(1200)에 인증 메세지(CHALLENGE)를 전송할 수 있다.
S460 단계에서 전자 장치(1200)는 호스트(1100)에 인증 회신 메세지(CHALLENGE_AUTH)를 회신할 수 있다. 이때, 전자 장치(1200)는 호스트(1100)에 인증 데이터(Auth_Data)를 함께 회신할 수 있다. 여기서, 인증 데이터(Auth_Data)는 평가 요약 값(Measurement_Summary), 그리고 제1 넌스 및 평가 요약 값(Measurement_Summary)에 대한 HMAC 값을 포함할 수 있다. 평가 요약 값(Measurement_Summary)은, 예를 들어, 복수의 평가 값들(BL Measurement value, FW1 Measurement value, FW2 Measurement value ~ FWn Measurement value)에 대한 해시 값일 수 있다.
S470 단계에서, 호스트(1100)는 전자 장치(1200)에 결과 요청 메세지(GET_MEASUREMENT)를 전송할 수 있다. 이때, 호스트(1100)는 임시 값인 제2 넌스 값(Nonce_M)을 전자 장치(1200)에 전송할 수 있다.
S480 단계에서, 전자 장치(1200)는 호스트(1100)에 부팅 결과 메세지(MEASUEMENT)를 회신할 수 있다. 이때, 전자 장치(1200)는 호스트(1100)에 평가 데이터(Measurement_Data)를 함께 회신할 수 있다. 여기서, 평가 데이터(Measurement_Data)는 평가 값들(Measurements), 그리고 제2 넌스 및 평가 값들(Measurements)에 대한 HMAC 값을 포함할 수 있다. 이후, 호스트(1100)는 평가 값(Measurement value)을 해시 값(Hash value)과 비교함으로써, 부트 로더 코드 또는 펌웨어 코드의 변조 여부를 확인할 수 있다.
이상의 도 2 내지 도 9에서 살펴본 바와 같이, 본 발명의 실시 예에 따른 보안 부팅 시스템(1000A)은 HPS 값을 공유할 때에는 공개키 기반의 암호화 기법을 사용하여 동작하고, 부팅 동작 시에는 대칭키 기반의 보안 부팅 기법에 기초하여 동작할 수 있다. 특히, 부팅 동작 시에는 HPS 값에 기초한 부팅 값과 검증 값을 비교함으로써, 부트 로더 코드 또는 펌웨어 코드의 변조 여부가 확인될 수 있다.
한편, 상술한 설명은 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다. 이하에서는, 본 발명의 다양한 변형 예들이 좀 더 자세히 설명될 것이다.
도 10은 본 발명에 따른 보안 부팅 시스템(1000B)의 일 예를 보여주는 블록도이다. 도 11은 도 10의 보안 부팅 시스템(1000B)의 부팅 값 생성 동작의 일 예를 보여주는 도면이다. 도 10 및 도 11의 보안 부팅 시스템(1000B)의 구성 및 동작은 도 2의 보안 부팅 시스템(1000A)과 유사하다. 따라서, 동일하거나 유사한 구성은 동일하거나 유사한 참조번호로 표기되며, 중복되는 설명은 이하 생략될 것이다.
도 10을 참조하면, 보안 부팅 시스템(1000B)은 계층 구조를 형성하는 복수의 펌웨어를 포함할 수 있다. 하나의 펌웨어가 하나의 레이어에 대응하는 도 2의 보안 부팅 시스템(1000A)과 달리, 도 10의 보안 부팅 시스템(1000B)은 하나의 레이어에 복수의 펌웨어들이 대응할 수 있다.
예를 들어, 부트 로더(1250)는 제1 레이어(Layer1)를 형성하고, 제1 펌웨어(1260)는 제2 레이어(Layer2)를 형성하며, 제2 내지 제k 펌웨어들(1270_1~1270_k-1)은 제3 레이어(Layer3)를 형성할 수 있다. 즉, 제3 레이어(Layer3)에는 복수의 펌웨어들이 대응할 수 있다. 이 경우, 제2 펌웨어 평가 값(FW2 Measurement value)은 제3 레이어(Layer3)의 펌웨어 코드들 전체에 대한 해시 값일 수 있다.
도 11을 참조하여 좀 더 자세히 설명하면, RoT에 해당하는 롬 코드는 부트 로더 코드에 대응하는 BL 평가 값 및 HPS 값에 기초하여 제1 장치 식별자 값(CDI1)을 생성할 수 있다. 제1 레이어(Layer1)에 속하는 부트 로더 코드는 제1 펌웨어 코드(Firmware Code1)에 대응하는 제1 펌웨어 평가 값(FW1 Measurement value) 및 제1 장치 식별자 값(CDI1)에 기초하여 제2 장치 식별자 값(CDI2)을 생성할 수 있다.
제3 레이어(Layer3)에는 제2 내지 제k 펌웨어 코드들(Firmware Code2~Firmware Code k)이 속할 수 있다. 이 경우, 제2 레이어(Layer2)에 속하는 제1 펌웨어 코드는 제3 레이어(Layer3)에 속하는 펌웨어 코드들 전체에 기초하여 하나의 제2 펌웨어 평가 값(FW2 Measurement value)을 생성할 수 있다. 예를 들어, 제1 펌웨어 코드의 해시 알고리즘(260)은 제2 내지 제k 펌웨어 코드들(Firmware Code2~Firmware Code k)에 대한 해시 값을 제2 펌웨어 평가 값으로 출력할 수 있다. 이후, HMAC 알고리즘(270)은 제2 펌웨어 평가 값 및 제2 장치 식별자 값(CDI2)에 기초하여 제3 장치 식별자 값(CDI3)을 생성할 수 있다.
이 경우, 제3 레이어(Layer3)에 속하는 펌웨어들 중 어느 하나의 펌웨어가 변조된다면, 이에 대응하는 제2 펌웨어 평가 값(FW2 Measurement value) 및 제3 장치 식별자 값(CDI3)은 정상적으로 생성되지 않는다. 이와 같이, 복수의 펌웨어들이 제3 레이어(Layer3)에 속하도록 설정함으로써, 복수의 펌웨어들 중 변조된 펌웨어가 존재하는지 여부가 빠르게 확인될 수 있다.
도 12는 본 발명에 따른 보안 부팅 시스템(1000C)의 일 예를 보여주는 블록도이다. 도 13은 도 12의 보안 부팅 시스템(1000C)의 검증 값 생성 동작의 일 예를 보여주는 도면이다. 도 12 및 도 13의 보안 부팅 시스템(1000C)의 구성 및 동작은 도 2 및 도 4와 유사하다. 따라서, 동일하거나 유사한 구성은 동일하거나 유사한 참조번호로 표기되며, 중복되는 설명은 이하 생략될 것이다.
도 12를 참조하면, 외부의 펌웨어 릴리즈 서버에서 생성된 검증 값을 수신하는 도 2의 보안 부팅 시스템(1000A)과 달리, 도 12의 보안 부팅 시스템(1000C)은 호스트(1100)에서 검증 값을 생성할 수 있다. 이를 위해, 호스트(1100)는 검증 값 생성 모듈(1150)을 더 포함할 수 있다.
도 13을 참조하여 좀 더 자세히 설명하면, 검증 값 생성 모듈(1150)은 HMAC 알고리즘을 통하여 검증 값을 생성할 수 있다. 예를 들어, 검증 값 생성 모듈(1150)은 해시 알고리즘들(310, 330, 350) 및 HMAC 알고리즘들(320, 340, 360)을 포함할 수 있다. 검증 값 생성 모듈(1150)은 HPS 값, 부트 로더 이미지, 그리고 펌웨어 이미지들에 기초하여 제1 내지 제3 보증 값들(L1 Endorsement value~L3 Endorsement value) 또는 제1 내지 제3 해시 값들(L1 Hash value~L3 Hash value)를 생성할 수 있다.
한편, 상술한 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술한 실시 예들 이외에도, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술한 실시 예들에 국한되어 정해져서는 안되며, 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
1000, 1000A, 1000B, 1000C: 보안 부팅 시스템
1100: 호스트
1110: HPS 생성 모듈
1120: HPS 저장 유닛
1130: 보안 부팅 검증 모듈
1140: 검증 값 저장 유닛
1200: 전자 장치
1210: 설정 키 저장 유닛
1220: HPS 저장 유닛
1230: ROM
1240: 저장 유닛
1250: 부트 로더
1260, 1270: 펌웨어
1280: 메인 메모리
1290: 컨트롤러
1100: 호스트
1110: HPS 생성 모듈
1120: HPS 저장 유닛
1130: 보안 부팅 검증 모듈
1140: 검증 값 저장 유닛
1200: 전자 장치
1210: 설정 키 저장 유닛
1220: HPS 저장 유닛
1230: ROM
1240: 저장 유닛
1250: 부트 로더
1260, 1270: 펌웨어
1280: 메인 메모리
1290: 컨트롤러
Claims (10)
- 호스트; 및
상기 호스트가 설정한 비밀 값에 기초하여 보안 부팅 동작을 수행하는 전자 장치를 포함하며,
상기 전자 장치는,
상기 호스트가 설정한 비밀 값을 저장하는 제1 저장 유닛;
부트 로더 코드, 그리고 제1 및 제2 펌웨어 코드를 저장하는 제2 저장 유닛; 및
부팅 동작 시에 실행되는 롬 코드를 저장하는 롬을 포함하며,
상기 롬 코드는 상기 호스트가 설정한 비밀 값 및 상기 부트 로더 코드에 대한 해시 값에 기초하여 제1 부팅 값을 생성하고,
상기 부트 로더 코드는 상기 제1 부팅 값 및 상기 제1 펌웨어 코드에 대한 해시 값에 기초하여 제2 부팅 값을 생성하며,
상기 제1 펌웨어 코드는 상기 제2 부팅 값 및 상기 제2 펌웨어 코드에 대한 해시 값에 기초하여 제3 부팅 값을 생성하고,
상기 전자 장치는 보안 부팅의 성공 여부를 확인하기 위해 상기 제1 내지 제3 부팅 값 중 적어도 하나를 상기 호스트로 전송하는, 보안 부팅 시스템. - 제1 항에 있어서,
상기 호스트는
상기 호스트가 설정한 비밀 값을 생성하는 HPS 생성 모듈;
상기 호스트가 설정한 비밀 값을 저장하는 제3 저장 유닛;
상기 호스트가 설정한 비밀 값에 기초하여 생성된 적어도 하나의 검증 값을 저장하는 검증 값 저장 모듈; 및
상기 제1 내지 제3 부팅 값 중 적어도 하나의 부팅 값과 상기 적어도 하나의 검증 값에 기초하여 보안 부팅의 성공 여부를 확인하는 보안 부팅 검증 모듈을 포함하는, 보안 부팅 시스템. - 제2 항에 있어서,
상기 적어도 하나의 검증 값은
상기 호스트가 설정한 비밀 값 및 부트 로더 이미지의 해시 값에 기초하여 생성된 제1 검증 값;
상기 제1 검증 값 및 제1 펌웨어 이미지의 해시 값에 기초하여 생성된 제2 검증 값; 및
상기 제2 검증 값 및 제2 펌웨어 이미지의 해시 값에 기초하여 생성된 제3 검증 값을 포함하는, 보안 부팅 시스템. - 제3 항에 있어서,
상기 제1 부팅 값과 상기 제1 검증 값이 서로 다른 경우, 상기 보안 부팅 검증 모듈은 상기 부트 로더 코드가 변조된 것으로 판단하는, 보안 부팅 시스템. - 제3 항에 있어서,
상기 제2 부팅 값과 상기 제2 검증 값이 서로 다른 경우, 상기 보안 부팅 검증 모듈은 상기 부트 로더 코드 및 상기 제1 펌웨어 코드 중 적어도 하나가 변조된 것으로 판단하는, 보안 부팅 시스템. - 제3 항에 있어서,
상기 제3 부팅 값과 상기 제3 검증 값이 서로 다른 경우, 상기 보안 부팅 검증 모듈은 상기 부트 로더 코드, 상기 제1 펌웨어 코드 및 상기 제2 펌웨어 코드 중 적어도 하나가 변조된 것으로 판단하는, 보안 부팅 시스템. - 롬 코드가, 부트 로더 코드에 대한 제1 해시 값을 생성하는 단계;
상기 롬 코드가, 상기 제1 해시 값 및 미리 설정된 비밀 값을 이용하여 제1 부팅 값을 생성하는 단계;
상기 부트 로더 코드를 실행하는 단계;
상기 부트 로더 코드가, 제1 펌웨어 코드에 대한 제2 해시 값을 생성하는 단계;
상기 부트 로더 코드가, 상기 제2 해시 값 및 상기 제1부팅 값을 이용하여 제2 부팅 값을 생성하는 단계;
상기 제1 펌웨어 코드를 실행하는 단계;
상기 제1 펌웨어 코드가, 제2 펌웨어 코드에 대한 제3 해시 값을 생성하는 단계;
상기 제1 펌웨어 코드가, 상기 제3 해시 값 및 상기 제2 부팅 값을 이용하여 제3 부팅 값을 생성하는 단계; 및
상기 제1 내지 제3 부팅 값 중 적어도 하나를 보안 부팅의 성공 여부 확인을 위해 호스트로 전송하는 단계를 포함하는, 전자 장치의 보안 부팅 방법. - 제7 항에 있어서,
상기 제1 내지 제3 부팅 값을 상기 호스트로 전송하기 전에, 상기 제1 내지 제3 부팅 값에 대한 해시 값을 상기 호스트로 전송하는 단계를 더 포함하는, 전자 장치의 보안 부팅 방법. - 제8 항에 있어서,
상기 호스트로부터 제1 넌스 값을 수신하는 단계를 더 포함하며,
상기 제1 내지 제3 부팅 값에 대한 해시 값은 제1 HMAC 값과 함께 상기 호스트로 전송되며,
상기 제1 HMAC 값은 상기 제1 넌스 값, 상기 미리 설정된 비밀 값, 그리고 상기 제1 내지 제3 부팅 값에 대한 해시 값을 입력 값으로 하는 HMAC 알고리즘의 출력 값인, 전자 장치의 부팅 방법. - 제9 항에 있어서,
상기 호스트로부터 제2 넌스 값을 수신하는 단계를 더 포함하며,
상기 제1 내지 제3 부팅 값 중 적어도 하나의 부팅 값은 제2 HMAC 값과 함께 상기 호스트로 전송되며,
상기 제2 HMAC 값은 상기 제2 넌스 값, 상기 미리 설정된 비밀 값, 그리고 상기 제1 내지 제3 부팅 값을 입력 값으로 하는 HMAC 알고리즘의 출력 값인, 전자 장치의 부팅 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220113807A KR20240034588A (ko) | 2022-09-07 | 2022-09-07 | 보안 부팅 시스템 및 그것의 동작 방법 |
US18/205,866 US20240078316A1 (en) | 2022-09-07 | 2023-06-05 | Secure booting system and operation method thereof |
CN202311056143.XA CN117668849A (zh) | 2022-09-07 | 2023-08-21 | 安全引导系统及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220113807A KR20240034588A (ko) | 2022-09-07 | 2022-09-07 | 보안 부팅 시스템 및 그것의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20240034588A true KR20240034588A (ko) | 2024-03-14 |
Family
ID=90060916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220113807A KR20240034588A (ko) | 2022-09-07 | 2022-09-07 | 보안 부팅 시스템 및 그것의 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240078316A1 (ko) |
KR (1) | KR20240034588A (ko) |
CN (1) | CN117668849A (ko) |
-
2022
- 2022-09-07 KR KR1020220113807A patent/KR20240034588A/ko unknown
-
2023
- 2023-06-05 US US18/205,866 patent/US20240078316A1/en active Pending
- 2023-08-21 CN CN202311056143.XA patent/CN117668849A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN117668849A (zh) | 2024-03-08 |
US20240078316A1 (en) | 2024-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101318524B1 (ko) | 보안 가상 머신 호스팅 프로세서 및 보안 가상 머신 설정 방법 | |
US11722300B2 (en) | Chip, private key generation method, and trusted certification method | |
US9830456B2 (en) | Trust transference from a trusted processor to an untrusted processor | |
US8161285B2 (en) | Protocol-Independent remote attestation and sealing | |
US10482255B2 (en) | Controlled secure code authentication | |
US20170235957A1 (en) | Controlled secure code authentication | |
US9697340B2 (en) | System and methods with assured one-time, replay-resistant passwords | |
TW201516733A (zh) | 用以核對uefi認證變量變化之系統及方法 | |
US20220224546A1 (en) | Software integrity protection method and apparatus, and software integrity verification method and apparatus | |
WO2012174726A1 (zh) | 芯片及芯片的安全保护方法 | |
CN109814934B (zh) | 数据处理方法、装置、可读介质和系统 | |
CN112637156B (zh) | 密钥分配方法、装置、计算机设备和存储介质 | |
CN113946375A (zh) | 嵌入式系统快速安全启动方法、装置及电子设备 | |
US20230273977A1 (en) | Managing ownership of an electronic device | |
WO2023212178A1 (en) | Sram physically unclonable function (puf) memory for generating keys based on device owner | |
US20220182248A1 (en) | Secure startup method, controller, and control system | |
CN111737769A (zh) | 用于连接的管芯之间的安全通信的多芯片封装及方法 | |
US11861182B2 (en) | Integrated circuit device with an authentication module | |
US20170180392A1 (en) | Method and device for transmitting software | |
KR20240034588A (ko) | 보안 부팅 시스템 및 그것의 동작 방법 | |
US20220209946A1 (en) | Key revocation for edge devices | |
US20240078315A1 (en) | Secure booting system and operation method thereof | |
CN114024702A (zh) | 信息安全保护的方法以及计算设备 | |
CN117353920B (zh) | 一种密钥派生方法、处理器和相关设备 | |
JP2020150310A (ja) | 情報処理装置、暗号化データの復号方法及び電子機器 |