KR20200020627A - 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법 - Google Patents

통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법 Download PDF

Info

Publication number
KR20200020627A
KR20200020627A KR1020190100044A KR20190100044A KR20200020627A KR 20200020627 A KR20200020627 A KR 20200020627A KR 1020190100044 A KR1020190100044 A KR 1020190100044A KR 20190100044 A KR20190100044 A KR 20190100044A KR 20200020627 A KR20200020627 A KR 20200020627A
Authority
KR
South Korea
Prior art keywords
boot loader
firmware
hash
authentication tag
block
Prior art date
Application number
KR1020190100044A
Other languages
English (en)
Other versions
KR102286794B1 (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 경희대학교 산학협력단
Publication of KR20200020627A publication Critical patent/KR20200020627A/ko
Application granted granted Critical
Publication of KR102286794B1 publication Critical patent/KR102286794B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using certificates
    • 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
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (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

본 발명은 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법에 관한 것으로, 통합 보안 SoC 기반의 IoT 디바이스 보안 플랫폼을 활용하여 IoT 디바이스를 안전하게 부팅하는 것을 일 목적으로 한다. 이를 달성하기 위한 본 발명은 IoT 디바이스는 제1 부트로더를 로드하여 시스템 제어권을 부여하는 단계, 제1 부트로더는 제2 부트로더 바이너리를 로드하고, 상기 제2 부트로더 바이너리를 이용하여 암호 블록을 생성하는 단계, 제1 부트로더는 상기 암호 블록과 상기 디바이스의 고유 식별키를 이용하여 상기 암호 블록을 암호화하여 제2 부트로더의 제1 인증 태그로 설정하는 단계, 제1 부트로더는 상기 제1 인증 태그를 이용하여 제2 부트로더를 검증하고, 검증이 완료되면 제2 부트로더에 시스템 제어권을 전달하는 단계, 제2 부트로더는 메모리에 저장된 펌웨어 해시의 서명 값을 이용하여 펌웨어를 검증하는 단계 및 제2 부트로더는 펌웨어의 검증이 완료되면 상기 펌웨어에 시스템 제어권을 전달하는 단계를 포함하는 것을 특징으로 한다.

Description

통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법{SECURE BOOT METHOD OF IoT DEVICE USING AN INTEGRATED SECURITY SoC}
본 발명은 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법에 관한 것으로, 보다 자세하게는 IoT 디바이스의 부트로더 및 펌웨어 바이너리가 변조 또는 교체되어 악의적 목적으로 활용되는 것을 차단하기 위한 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법에 관한 것이다.
기술과 인터넷의 발전으로 다양한 임베디드 플랫폼과 센서의 개발이 진행되었고, 그에 따라 IoT(사물 인터넷, Internet of Things) 사회가 도래하였다. 여러 단체와 기업은 IoT 서비스를 위한 오픈소스 기반의 하드웨어 플랫폼을 범용 IoT 디바이스로 개발하였다. 대표적인 범용 IoT 디바이스 플랫폼은 라즈베리 파이, 아두이노, 비글 본 블랙, 인텔 에디슨 등이 있으며, 사용자 또는 서비스의 목적에 따라 폭넓게 활용될 수 있도록 저전력, 가격 제약, 소형화의 특징을 갖는다.
최근에는 이를 기반으로 다양한 IoT 서비스가 출시되고 있으나 대다수 기업은 IoT 디바이스의 취약점과 그에 따른 보안 기술의 필요성을 인식하지 못하는 경우가 대부분이다. 그로 인해 IoT 디바이스의 보안에 대한 우려가 높아지고 있으나, 성능에 제약이 있는 IoT 디바이스는 이를 적용하는 것에 문제가 있다.
이를 해결하기 위하여 국가 표준 단체인 oneM2M에서는 IoT 디바이스를 위한 보안 솔루션으로 하드웨어 보안 모듈을 제시하였으나, 하드웨어 보안 모듈이 단독으로 동작함에 따라 호스트 프로세서와 데이터를 주고받는 과정에서 데이터가 노출될 수 있으며, 또한 호스트 프로세서와 하드웨어 보안 모듈 사이에 악의적인 디바이스를 추가하여 전송된 데이터를 가로채는 하드웨어 트로이 공격에 당할 수 있다는 치명적인 단점이 있다.
본 발명은 전술한 문제점을 해결하기 위한 것으로서, 통합 보안 SoC 기반의 IoT 디바이스 보안 플랫폼을 활용하여 IoT 디바이스를 안전하게 부팅하는 것을 일 목적으로 한다.
또한 본 발명은 통합 보안 SoC의 암호화 기능과 안전한 펌웨어 저장소를 사용함으로써 2차 부트로더와 펌웨어의 변조 여부를 확인하는 것을 일 목적으로 한다.
이러한 목적을 달성하기 위한 본 발명은 IoT 디바이스는 제1 부트로더를 로드하여 시스템 제어권을 부여하는 단계, 제1 부트로더는 제2 부트로더 바이너리를 로드하고, 상기 제2 부트로더 바이너리를 이용하여 암호 블록을 생성하는 단계, 제1 부트로더는 상기 암호 블록과 상기 디바이스의 고유 식별키를 이용하여 상기 암호 블록을 암호화하여 제2 부트로더의 제1 인증 태그로 설정하는 단계, 제1 부트로더는 상기 제1 인증 태그를 이용하여 제2 부트로더를 검증하고, 검증이 완료되면 제2 부트로더에 시스템 제어권을 전달하는 단계, 제2 부트로더는 메모리에 저장된 펌웨어 해시의 서명 값을 이용하여 펌웨어를 검증하는 단계 및 제2 부트로더는 펌웨어의 검증이 완료되면 상기 펌웨어에 시스템 제어권을 전달하는 단계를 포함하는 것을 일 특징으로 한다.
또한 상기 암호 블록을 생성하는 단계는, 상기 제2 부트로더에 블록 암호 알고리즘을 적용하여 적어도 하나의 암호 블록으로 구분하고, 각 암호 블록을 암호화하는 단계를 더 포함하는 것을 일 특징으로 한다.
나아가 상기 제2 부트로더를 검증하는 단계는, 상기 제1 인증 태그와 메모리에 기 저장된 제2 부트로더의 제2 인증 태그를 비교하여 동일성을 판단하는 것을 일 특징으로 한다.
또한 펌웨어를 검증하는 단계는, 상기 펌웨어 해시의 서명 값을 펌웨어 제작자의 공개키로 복호화하여 펌웨어 해시인 제1 해시를 추출하는 단계, 상기 펌웨어의 해시 값을 연산하여 제2 해시를 생성하는 단계 및 상기 제1 및 제2 해시를 비교 검증하는 단계를 더 포함하는 것을 일 특징으로 한다.
나아가 본 발명은 시스템 제어권을 부여받아 제2 부트로더를 로드하고, 상기 제2 부트로더를 이용하여 암호 블록을 생성하며, 디바이스의 고유 식별키를 이용하여 상기 암호 블록을 암호화하여 제2 부트로더의 제1 인증 태그로 설정하고, 상기 제1 인증 태그를 이용하여 상기 제2 부트로더를 검증하여 시스템 제어권을 전달하는 제1 부트로더, 메모리에 저장된 펌웨어 해시의 서명 값을 이용하여 펌웨어를 검증하고, 상기 펌웨어의 검증이 완료되면 상기 펌웨어에 시스템 제어권을 전달하는 제2 부트로더를 포함하는 것을 일 특징으로 한다.
또한 상기 제1 부트로더는 상기 제2 부트로더에 블록 암호 알고리즘을 적용하여 적어도 하나의 블록으로 구분하고, 각 블록을 암호화하여 제2 부트로더의 제1 인증 태그로 설정하는 것을 일 특징으로 한다.
나아가 상기 제1 부트로더는 상기 제1 인증 태그와 메모리에 기 저장된 제2 부트로더의 제2 인증 태그를 비교하여 동일성을 판단하는 것을 일 특징으로 한다.
또한 상기 제2 부트로더는, 상기 펌웨어 해시의 서명 값을 기 수신한 펌웨어 제작자의 공개키로 복호화하여 펌웨어의 해시인 제1 해시를 추출하고, 상기 펌웨어의 해시 값을 연산하여 제2 해시를 생성하여 상기 제1 및 제2 해시를 비교 검증하는 것을 일 특징으로 한다.
전술한 바와 같은 본 발명에 의하면, 통합 보안 SoC 기반의 IoT 디바이스 보안 플랫폼을 활용하여 IoT 디바이스를 안전하게 부팅할 수 있다.
또한 본 발명은 통합 보안 SoC의 암호화 기능과 안전한 펌웨어 저장소를 사용함으로써 2차 부트로더와 펌웨어의 변조 여부를 확인할 수 있다.
도 1은 본 발명의 일 실시 예에 의한 디바이스 제조 시 통합 보안 SoC에 민감 데이터를 전송하는 방법을 설명하기 위한 순서도이다.
도 2는 본 발명의 일 실시 예에 의한 펌웨어 제작자가 통합 보안 SoC에 펌웨어를 주입하는 방법을 설명하기 위한 순서도이다.
도 3은 본 발명의 일 실시 예에 의한 통합 보안 SoC의 메모리의 구성을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시 예에 의한 통합 보안 SoC를 통한 IoT 디바이스의 부팅 방법을 설명하기 위한 순서도이다.
도 5는 본 발명의 일 실시 예에 의한 2차 부트로더 교체 공격이 발생한 경우에 시스템 부트 과정을 중단하는 방법을 설명하기 위한 순서도이다.
도 6은 본 발명의 일 실시 예에 의한 펌웨어 교체 공격이 발생한 경우에 시스템 부트 과정을 중단하는 방법을 설명하기 위한 순서도이다.
전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되며, 이에 따라 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 상세한 설명을 생략한다.
도면에서 동일한 참조부호는 동일 또는 유사한 구성요소를 가리키는 것으로 사용되며, 명세서 및 특허청구의 범위에 기재된 모든 조합은 임의의 방식으로 조합될 수 있다. 그리고 다른 식으로 규정하지 않는 한, 단수에 대한 언급은 하나 이상을 포함할 수 있고, 단수 표현에 대한 언급은 또한 복수 표현을 포함할 수 있음이 이해되어야 한다.
본 명세서에서 사용되는 용어는 단지 특정 예시적 실시 예들을 설명할 목적을 가지고 있으며 한정할 의도로 사용되는 것이 아니다. 본 명세서에서 사용된 바와 같은 단수적 표현들은 또한, 해당 문장에서 명확하게 달리 표시하지 않는 한, 복수의 의미를 포함하도록 의도될 수 있다. 용어 "및/또는," "그리고/또는"은 그 관련되어 나열되는 항목들의 모든 조합들 및 어느 하나를 포함한다. 용어 "포함한다", "포함하는", "포함하고 있는", "구비하는", "갖는", "가지고 있는" 등은 내포적 의미를 갖는 바, 이에 따라 이러한 용어들은 그 기재된 특징, 정수, 단계, 동작, 요소, 및/또는 컴포넌트를 특정하며, 하나 이상의 다른 특징, 정수, 단계, 동작, 요소, 컴포넌트, 및/또는 이들의 그룹의 존재 혹은 추가를 배제하지 않는다. 본 명세서에서 설명되는 방법의 단계들, 프로세스들, 동작들은, 구체적으로 그 수행 순서가 확정되는 경우가 아니라면, 이들의 수행을 논의된 혹은 예시된 그러한 특정 순서로 반드시 해야 하는 것으로 해석돼서는 안 된다. 추가적인 혹은 대안적인 단계들이 사용될 수 있음을 또한 이해해야 한다.
또한, 각각의 구성요소는 각각 하드웨어 프로세서로 구현될 수 있고, 위 구성요소들이 통합되어 하나의 하드웨어 프로세서로 구현될 수 있으며, 또는 위 구성요소들이 서로 조합되어 복수 개의 하드웨어 프로세서로 구현될 수도 있다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하기로 한다.
일반적으로 IoT 디바이스의 부팅 과정은 메인 프로세서가 reset 신호를 받거나 전원이 인가된 상태이면 bootROM에 저장된 1차 부트로더가 시스템 제어권을 받아 동작하며, 주변 장치(메모리, GPIO, UART, 이더넷 장치 등)에 대한 점검과 초기화 과정을 수행할 수 있다. 이후 1차 부트로더는 플래시 메모리에 저장된 2차 부트로더에 시스템 제어권을 넘길 수 있다. 1차 부트로더로부터 시스템 제어권을 받은 제2 부트로더는 플래시 메모리에 저장된 펌웨어 이미지를 시스템 메모리(SDRAM)에 로드하고, 펌웨어에 시스템 제어권을 넘길 수 있다. 시스템 제어권을 받은 펌웨어는 IoT 디바이스의 전원이 중단될 때까지 시스템의 서비스를 수행한다. 이러한 기존의 IoT 디바이스 부팅 과정은 공격자가 부트 컴포넌트(2차 부트로더, 펌웨어 바이너리/운영체제)들을 손쉽게 변경 가능하여 시스템 제어권을 획득할 수 있어 서비스 운영에 악영향을 미칠 수 있다는 치명적인 단점이 있다.
이러한 문제점을 해결하기 위한 본 발명의 통합 보안 SoC는 부트 과정에서 부트로더 및 펌웨어 바이너리가 변조 또는 교체되어 악의적 목적으로 활용되는 것을 차단할 수 있다. 통합 보안 SoC는 물리적 복제 방지 기술(PUF, Physical Unclonable Function)을 통해 디바이스 고유 식별키를 제공함으로써 IoT 디바이스의 불법 복제와 수정을 차단할 수 있으며, IoT 디바이스 제조 과정을 제외한 전 과정에서 접근 불가능한 암호화 펌웨어 저장소에 민감 데이터를 저장하여 안전하게 보호할 수 있고 또한 하드웨어로 구현된 대칭/비대칭 보안 가속기를 사용화여 암호화키를 생성할 수 있다.
먼저 도 1을 이용하여 디바이스 제조 시 통합 보안 SoC에 민감 데이터인 암호화 키, 부트로더, 플랫폼 키를 전송하는 방법을 설명한다. 도 1을 참조하면 통합 보안 SoC에 민감 데이터를 주입하는 단계는 제조사와 펌웨어 제작자가 참여하나, 펌웨어 제작자는 통합 보안 SoC에 직접적으로 데이터 주입을 할 수 없기 때문에 제조사를 통하여 펌웨어 관련 데이터를 통합 보안 SoC에 전송할 수 있다.
먼저 IoT 디바이스를 제조하는 제조사는 IoT 디바이스가 제조될 때마다 IoT 디바이스의 고유 식별 정보를 생성(S10)하여 통합 보안 SoC에 전송할 수 있다(S15). 이 때 고유 식별 정보는 디바이스의 고유 식별 키와 고유 식별 ID를 포함할 수 있다. 이후 펌웨어 제작자는 플랫폼 키와 2차 부트로더를 생성(S20)하여 제조사에 전송(S25)하면, 펌웨어 제작자로부터 플랫폼 키와 2차 부트로더를 수신한 제조사는 플랫폼 키를 이용하여 2차 부트로더의 인증 태그를 생성할 수 있다(S30). 제조사는 2차 부트로더의 인증 태그를 생성하면 2차 부트로더의 인증 태그를 포함하는 1차 부트로더를 생성(S40)할 수 있다. 1차 부트로더의 생성을 완료한 제조사는 1차 부트로더, 2차 부트로더, 플랫폼 키를 통합 보안 SoC에 전송할 수 있다(S45).
도 2는 펌웨어 제작자가 통합 보안 SoC에 펌웨어를 주입하는 방법을 설명하기 위한 것으로, 도 2를 참조하면, 펌웨어 제작자는 한 쌍의 비대칭키인 공개키와 개인키를 생성(S50)하여 그 중 공개키를 제조사에 전송(S25)하면, 펌웨어 제작자로부터 공개키를 수신한 제조사는 통합 보안 SoC에 공개키를 전송(S29)할 수 있다. 펌웨어 제작자의 공개키를 통합 보안 SoC에 전송하는 단계는 최초 한 번만 진행될 수 있다. 이후 펌웨어 제작자는 펌웨어를 생성(S60)하고, 펌웨어의 해시 값을 생성(S70)할 수 있다. 펌웨어 제작자는 펌웨어의 해시 값에 개인키를 첨부하여 펌웨어의 디지털 서명 값을 생성(S80)할 수 있다. 펌웨어 제작자는 펌웨어의 서명 값을 생성하면 제조사에 전송(S85)하고, 제조사는 통합 보안 SoC에 펌웨어의 서명 값을 전송(S89)할 수 있다.
이 과정에서 펌웨어 제작자는 펌웨어의 해시 값을 생성하기 위하여 펌웨어에 SHA 알고리즘을 적용할 수 있다. SHA 알고리즘은 임의의 길이의 데이터를 입력 값으로 하여 고정된 길이의 해시 값으로 출력하는 것으로, 데이터의 오류나 변조를 탐지할 수 있는 무결성을 제공할 수 있다. SHA 알고리즘은 입력 값의 최대 길이를 256 바이트로 제한하고 있으나, 복수 개의 명령을 연결하여 실행함으로써 256 바이트보다 큰 데이터를 입력 값으로 사용할 수 있다.
또한 본 발명에서 사용되는 전자 서명은 인증서 형태로 발급되는 자신만의 디지털 인감으로 어떤 사람이 데이터를 생성했다는 것을 증명하는 방법이다. 전자 서명은 주로 서명하고자 하는 데이터의 해시 값을 개인키로 암호화하여 상대방에 전송하고, 상대방은 공개키를 이용하여 서명 값을 복호화하여 해시 값을 획득하는 과정을 통해 서명한 사람을 확인할 수 있다.
먼저 도 3을 참조하여 본 발명의 통합 보안 SoC의 메모리의 구성을 설명한다. 도 3을 참조하면, 통합 보안 SoC의 메모리는 bootROM, 플래시 메모리(Flash Memory), 그리고 eFuse로 구분될 수 있다. bootROM은 1차 부트로더를 저장하고 있으며, 1차 부트로더는 비공개 형태로 개발되며, 신뢰할 수 있는 디바이스의 근본(RoT, Root of Trust)로 주변 장치를 초기화하며 2차 부트로더의 제1 인증 태그를 포함하고 있다.
플래시 메모리는 시스템 부트 컴포넌트가 저장된 Public Section과 IoT 디바이스 인증 및 암호화에 사용되는 데이터가 저장된 Private Section으로 더 구분될 수 있다. Public Section에는 2차 부트로더와 IoT 서비스 어플리케이션 수행을 위한 펌웨어가 저장되어 있으며, Private Section에는 디바이스 고유 식별 ID, 펌웨어 제작자의 공개키, 펌웨어 해시의 서명 값이 저장되어 있다. 펌웨어 해시의 서명 값은 2차 부트로더가 펌웨어를 검증할 때 사용될 수 있다.
eFuse는 OTP(One-Time Programmable)의 특징을 갖는 비휘발성 메모리로, 암호화 키를 안전하게 저장하며 암호화 키를 통해 인증과 데이터 암호화를 수행할 수 있다. 또한 eFuse에 저장된 암호화 키는 IoT 디바이스의 제조 단계에서 비공개 형태로 개발되며, 재작성 될 수 없다는 특징을 가질 수 있다. 또한 eFuse는 하드웨어 암호화 가속기의 DMA(Direct Memory Access) 기능을 이용하여 접근 가능하여 eFuse에 저장된 암호화 키의 탈취 위협에 안전할 수 있다. eFuse에 저장된 암호화 키는 플랫폼 키, 디바이스 고유 식별키를 포함할 수 있다. 플랫폼 키는 2차 부트로더의 인증을 목적으로 하여 AES-GCM(Galois Counter Model) 128 알고리즘의 대칭 키로 사용되어 2차 부트로더의 인증 태그를 생성하는 데 사용될 수 있다. 디바이스 고유 식별키는 AES-CBC(Cipher Block Chaining) 128 알고리즘의 대칭 키로 사용되며, 데이터의 각 블록을 암호화 또는 복호화할 때 사용될 수 있다.
이하에서는 도 4를 참조하여 IoT 디바이스의 부팅 방법을 설명한다. 도 4를 참조하면, 통합 보안 SoC의 부팅 과정은 통합 보안 SoC에 저장된 1차 부트로더, 2차 부트로더, 펌웨어를 통해 진행될 수 있다. 통합 보안 SoC는 메인 프로세서에 reset 신호가 수신되면 bootROM에 저장된 1차 부트로더를 로드하여 시스템 제어권을 부여할 수 있다.
제1 부트로더는 주변 장치를 초기화하고 플래시 메모리에서 제2 부트로더 바이너리를 로드할 수 있다(S100). 이때 주변 장치는 UART, SPI, I2C, WDT, Timer, RTC, 및 PMU를 포함한다.
1차 부트로더는 2차 부트로더 바이너리에 AES-GCM 128 알고리즘을 적용하여 적어도 하나의 암호 블록으로 분할할 수 있다. AES-GCM 128 알고리즘은 블록 암호 알고리즘으로, 데이터 암호화 또는 복호화 시 데이터를 블록 단위로 처리하기 때문에 2차 부트로더의 바이너리를 분할하는 과정이 필수적이다.
1차 부트로더는 분할된 적어도 하나의 암호 블록과 eFuse에 저장된 플랫폼 키를 이용하여 2차 부트로더의 해시 값을 생성할 수 있다. 1차 부트로더는 생성된 해시 값을 2차 부트로더의 제2 인증 태그로 설정할 수 있다(S200).
1차 부트로더는 기 저장된 2차 부트로더의 제1 인증 태그와 새로 설정된 제2 인증 태그를 비교하여 2차 부트로더를 검증할 수 있다(S300). 보다 구체적으로 1차 부트로더는 제1 인증 태그와 제2 인증 태그가 동일하면 제2 부트로더가 무결하다고 판단하여 시스템 제어권을 2차 부트로더에 전달하고, 그렇지 않으면 시스템 부트를 종료할 수 있다. 통합 보안 SoC는 2차 부트로더의 검증 과정을 통해 공격자가 부트로더를 교체한 경우를 식별하여 시스템 부트 과정을 중단할 수 있다.
예를 들어 설명하면, 도 5는 2차 부트로더 교체 공격이 발생한 경우에 시스템 부트 과정을 중단하는 방법을 나타낸 순서도이다. 도 5를 참조하면, 공격자가 2차 부트로더를 변조시킨 경우, 1차 부트로더는 2차 부트로더의 제2 인증 태그와 1차 부트로더 바이너리에 포함된 제1 인증 태그를 비교하여 두 인증 태그가 서로 상이하다고 판단하여 2차 부트로더의 검증을 실패하여 시스템 부트를 중단할 수 있다.
1차 부트로더로부터 시스템 제어권을 전달받은 2차 부트로더는 플래시 메모리에 저장된 펌웨어 해시의 서명 값을 로드할 수 있다(S400). 2차 부트로더는 펌웨어 해시의 서명 값에 플래시 메모리에 저장된 펌웨어 제작자의 공개키를 적용하여 펌웨어의 제1 해시를 추출할 수 있다(S500). 2차 부트로더는 펌웨어 해시의 서명 값을 공개키를 이용하여 복호화 함으로써 제1 해시를 추출할 수 있다.
2차 부트로더는 플래시 메모리에 저장된 펌웨어를 로드(S600)하여, 펌웨어에 해시 알고리즘을 적용하여 펌웨어의 제2 해시를 생성할 수 있다(S700). 제1 및 제2 해시를 모두 생성한 2차 부트로더는 제1 해시와 제2 해시를 비교하여 플래시 메모리에 저장된 펌웨어를 검증할 수 있다(S800). 2차 부트로더는 제1 해시와 제2 해시가 서로 상이하면 시스템 부트를 종료하고, 제1 해시와 제2 해시가 서로 동일하면 펌웨어가 정상이라고 판단하고 펌웨어 바이너리를 SRAM에 로드하여 시스템 제어권을 펌웨어 바이너리에 전달(S809)할 수 있다. 통합 보안 SoC는 펌웨어의 검증 과정을 통해 공격자가 펌웨어를 변조한 경우를 식별하여 시스템 부트 과정을 중단할 수 있다.
예를 들어 설명하면, 도 6은 펌웨어 교체 공격이 발생한 경우에 시스템 부트 과정을 중단하는 방법을 나타낸 순서도이다. 도 6을 참조하면, 공격자가 펌웨어 저장소를 탈취하여 펌웨어를 변조시킨 경우, 2차 부트로더는 펌웨어 저장소로부터 수신한 펌웨어를 통해 생성한 제2 해시가 제1 해시와 서로 상이하다고 판단하여 펌웨어 검증을 실패하여 시스템 부트를 중단할 수 있다.
본 명세서와 도면에 개시된 본 발명의 실시 예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.

Claims (8)

  1. IoT 디바이스는 제1 부트로더를 로드하여 시스템 제어권을 부여하는 단계;
    제1 부트로더는 제2 부트로더 바이너리를 로드하고, 상기 제2 부트로더 바이너리를 이용하여 암호 블록을 생성하는 단계;
    제1 부트로더는 상기 암호 블록과 상기 디바이스의 고유 식별키를 이용하여 상기 암호 블록을 암호화하여 제2 부트로더의 제1 인증 태그로 설정하는 단계;
    제1 부트로더는 상기 제1 인증 태그를 이용하여 제2 부트로더를 검증하고, 검증이 완료되면 제2 부트로더에 시스템 제어권을 전달하는 단계;
    제2 부트로더는 메모리에 저장된 펌웨어 해시의 서명 값을 이용하여 펌웨어를 검증하는 단계; 및
    제2 부트로더는 펌웨어의 검증이 완료되면 상기 펌웨어에 시스템 제어권을 전달하는 단계를 포함하는 것을 특징으로 하는 디바이스 부팅 방법.
  2. 제1항에 있어서,
    상기 암호 블록을 생성하는 단계는,
    상기 제2 부트로더에 블록 암호 알고리즘을 적용하여 적어도 하나의 암호 블록으로 구분하고, 각 암호 블록을 암호화하는 단계를 더 포함하는 것을 특징으로 하는 디바이스 부팅 방법.
  3. 제1항에 있어서,
    상기 제2 부트로더를 검증하는 단계는,
    상기 제1 인증 태그와 메모리에 기 저장된 제2 부트로더의 제2 인증 태그를 비교하여 동일성을 판단하는 것을 특징으로 하는 디바이스 부팅 방법.
  4. 제1항에 있어서,
    펌웨어를 검증하는 단계는,
    상기 펌웨어 해시의 서명 값을 펌웨어 제작자의 공개키로 복호화하여 펌웨어 해시인 제1 해시를 추출하는 단계;
    상기 펌웨어의 해시 값을 연산하여 제2 해시를 생성하는 단계; 및
    상기 제1 및 제2 해시를 비교 검증하는 단계를 더 포함하는 것을 특징으로 하는 디바이스 부팅 방법.
  5. 시스템 제어권을 부여받아 제2 부트로더를 로드하고, 상기 제2 부트로더를 이용하여 암호 블록을 생성하며, 디바이스의 고유 식별키를 이용하여 상기 암호 블록을 암호화하여 제2 부트로더의 제1 인증 태그로 설정하고, 상기 제1 인증 태그를 이용하여 상기 제2 부트로더를 검증하여 시스템 제어권을 전달하는 제1 부트로더;
    메모리에 저장된 펌웨어 해시의 서명 값을 이용하여 펌웨어를 검증하고, 상기 펌웨어의 검증이 완료되면 상기 펌웨어에 시스템 제어권을 전달하는 제2 부트로더를 포함하는 것을 특징으로 하는 디바이스 부팅 장치.
  6. 제5항에 있어서,
    상기 제1 부트로더는 상기 제2 부트로더에 블록 암호 알고리즘을 적용하여 적어도 하나의 블록으로 구분하고, 각 블록을 암호화하여 제2 부트로더의 제1 인증 태그로 설정하는 것을 특징으로 하는 디바이스 부팅 방법.
  7. 제5항에 있어서,
    상기 제1 부트로더는 상기 제1 인증 태그와 메모리에 기 저장된 제2 부트로더의 제2 인증 태그를 비교하여 동일성을 판단하는 것을 특징으로 하는 디바이스 부팅 방법.
  8. 제5항에 있어서,
    상기 제2 부트로더는, 상기 펌웨어 해시의 서명 값을 기 수신한 펌웨어 제작자의 공개키로 복호화하여 펌웨어의 해시인 제1 해시를 추출하고, 상기 펌웨어의 해시 값을 연산하여 제2 해시를 생성하여 상기 제1 및 제2 해시를 비교 검증하는 것을 특징으로 하는 디바이스 부팅 방법.
KR1020190100044A 2018-08-16 2019-08-16 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법 KR102286794B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180095296 2018-08-16
KR20180095296 2018-08-16

Publications (2)

Publication Number Publication Date
KR20200020627A true KR20200020627A (ko) 2020-02-26
KR102286794B1 KR102286794B1 (ko) 2021-08-06

Family

ID=69637899

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190100044A KR102286794B1 (ko) 2018-08-16 2019-08-16 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법

Country Status (1)

Country Link
KR (1) KR102286794B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112596749A (zh) * 2020-12-28 2021-04-02 厦门亿联网络技术股份有限公司 一种系统开机自检和自修复的方法、装置
CN114065218A (zh) * 2021-11-19 2022-02-18 山东方寸微电子科技有限公司 一种SoC系统芯片安全启动方法
KR20220050290A (ko) 2020-10-15 2022-04-25 한국전자통신연구원 부트 메모리 버스의 경로 절체 기능을 이용한 시큐어 부팅 방법 및 이를 이용한 장치
KR102386614B1 (ko) * 2020-12-24 2022-05-09 유비벨록스(주) IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080045708A (ko) * 2005-09-14 2008-05-23 쌘디스크 코포레이션 메모리 카드 제어기 펌웨어의 하드웨어 드라이버 무결성체크
KR20130096239A (ko) * 2010-08-10 2013-08-29 샌디스크 아이엘 엘티디 저장장치로부터 로딩된 운영 시스템 코드로 호스트 장치를 보안적으로 부팅하기 위한 호스트 장치 및 방법
KR20160112757A (ko) * 2015-03-20 2016-09-28 한국전자통신연구원 사용자 장치 및 그것에 대한 무결성 검증 방법
KR20160126067A (ko) * 2014-04-28 2016-11-01 인텔 코포레이션 컴퓨팅 장치의 보안 부팅 기법
KR20180007922A (ko) * 2016-07-14 2018-01-24 경희대학교 산학협력단 Tpm 기반의 사용자 장치 및 이를 이용한 부팅 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080045708A (ko) * 2005-09-14 2008-05-23 쌘디스크 코포레이션 메모리 카드 제어기 펌웨어의 하드웨어 드라이버 무결성체크
KR20130096239A (ko) * 2010-08-10 2013-08-29 샌디스크 아이엘 엘티디 저장장치로부터 로딩된 운영 시스템 코드로 호스트 장치를 보안적으로 부팅하기 위한 호스트 장치 및 방법
KR20160126067A (ko) * 2014-04-28 2016-11-01 인텔 코포레이션 컴퓨팅 장치의 보안 부팅 기법
KR20160112757A (ko) * 2015-03-20 2016-09-28 한국전자통신연구원 사용자 장치 및 그것에 대한 무결성 검증 방법
KR20180007922A (ko) * 2016-07-14 2018-01-24 경희대학교 산학협력단 Tpm 기반의 사용자 장치 및 이를 이용한 부팅 방법

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220050290A (ko) 2020-10-15 2022-04-25 한국전자통신연구원 부트 메모리 버스의 경로 절체 기능을 이용한 시큐어 부팅 방법 및 이를 이용한 장치
US11556651B2 (en) 2020-10-15 2023-01-17 Electronics And Telecommunications Research Institute Method for secure booting using route switchover function for boot memory bus and apparatus using the same
KR102386614B1 (ko) * 2020-12-24 2022-05-09 유비벨록스(주) IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법
CN112596749A (zh) * 2020-12-28 2021-04-02 厦门亿联网络技术股份有限公司 一种系统开机自检和自修复的方法、装置
CN114065218A (zh) * 2021-11-19 2022-02-18 山东方寸微电子科技有限公司 一种SoC系统芯片安全启动方法
CN114065218B (zh) * 2021-11-19 2024-04-12 山东方寸微电子科技有限公司 一种SoC系统芯片安全启动方法

Also Published As

Publication number Publication date
KR102286794B1 (ko) 2021-08-06

Similar Documents

Publication Publication Date Title
CN109313690B (zh) 自包含的加密引导策略验证
KR101795457B1 (ko) 보안 기능이 강화된 디바이스의 초기화 방법 및 디바이스의 펌웨어 업데이트 방법
US7305553B2 (en) Manifest-based trusted agent management in a trusted operating system environment
US7243230B2 (en) Transferring application secrets in a trusted operating system environment
US8832457B2 (en) Methods and apparatus for authenticating components of processing systems
KR102286794B1 (ko) 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법
US9768951B2 (en) Symmetric keying and chain of trust
US20210117534A1 (en) Trusted execution environment instances licenses management
US7159240B2 (en) Operating system upgrades in a trusted operating system environment
US7457960B2 (en) Programmable processor supporting secure mode
US9015454B2 (en) Binding data to computers using cryptographic co-processor and machine-specific and platform-specific keys
CN101199159A (zh) 安全引导
KR20030082485A (ko) 대칭 키 암호화에 기초한 데이터의 저장 및 검색
KR20030082484A (ko) 공개 키 암호화에 기초한 데이터의 저장 및 검색
KR20040094724A (ko) 멀티-토큰 실 및 실 해제
CN113656086A (zh) 安全存储及加载固件的方法及电子装置
KR101968382B1 (ko) Tpm 기반의 사용자 장치 및 이를 이용한 부팅 방법
KR102256249B1 (ko) 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 펌웨어 업데이트 방법
US10192047B2 (en) Provisioning of identity information
Futral et al. Fundamental principles of intel® txt
EP3525391A1 (en) Device and method for key provisioning
RU2812867C1 (ru) Защита двоичных файлов типовых коммерческих программ от пиратства с использованием аппаратных анклавов
CN111357003A (zh) 预操作系统环境中的数据保护
TWI841919B (zh) 在一開蓋竄改事件中使一安全啟動失敗的電腦系統
CN110059489B (zh) 安全电子设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant