KR20120092222A - 보안 부팅 방법 및 보안 부트 이미지 생성 방법 - Google Patents

보안 부팅 방법 및 보안 부트 이미지 생성 방법 Download PDF

Info

Publication number
KR20120092222A
KR20120092222A KR1020110012119A KR20110012119A KR20120092222A KR 20120092222 A KR20120092222 A KR 20120092222A KR 1020110012119 A KR1020110012119 A KR 1020110012119A KR 20110012119 A KR20110012119 A KR 20110012119A KR 20120092222 A KR20120092222 A KR 20120092222A
Authority
KR
South Korea
Prior art keywords
boot loader
boot
image
authentication code
message authentication
Prior art date
Application number
KR1020110012119A
Other languages
English (en)
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 KR1020110012119A priority Critical patent/KR20120092222A/ko
Priority to US13/279,512 priority patent/US8914627B2/en
Publication of KR20120092222A publication Critical patent/KR20120092222A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • 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
    • 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

Abstract

인증되지 않은 부트 이미지를 통한 부팅을 방지할 수 있는 보안 부팅 방법에서, 초기 부트 로더가 공개 키를 이용하여 제1 부트 로더에 포함된 제1 디지털 서명을 검증한다. 제1 디지털 서명이 유효한 경우, 제1 부트 로더가 실행된다. 제1 부트 로더가 고유 키를 이용하여 제2 부트 로더에 포함된 제1 메시지 인증 코드를 검증한다. 제1 메시지 인증 코드가 유효한 경우, 제2 부트 로더가 실행된다.

Description

보안 부팅 방법 및 보안 부트 이미지 생성 방법{SECURE BOOT METHOD AND METHOD OF GENERATING A SECURE BOOT IMAGE}
본 발명은 부팅 방법에 관한 것으로서, 더욱 상세하게는 보안 부팅 방법 및 보안 부트 이미지 생성 방법에 관한 것이다.
컴퓨팅 시스템은 부트 이미지를 실행하여 장치들을 초기화하고, 운영 체제(Operating System; OS) 또는 커널을 로딩하는 부팅 동작을 수행한다. 인증되지 않은 부트 이미지에 의해 상기 부팅 동작이 수행되는 경우, 컴퓨팅 시스템에서 불법 소프트웨어들이 실행될 수 있고, 컴퓨팅 시스템이 용이하게 복제될 수 있다.
본 발명의 일 목적은 인증되지 않은 부트 이미지를 통한 부팅을 방지할 수 있는 보안 부팅 방법을 제공하는 것이다.
본 발명의 다른 목적은 보안 부팅을 수행하는 복수의 시스템들을 양산할 수 있는 보안 부트 이미지 생성 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 보안 부팅 방법에서, 초기 부트 로더가 공개 키를 이용하여 제1 부트 로더에 포함된 제1 디지털 서명을 검증한다. 상기 제1 디지털 서명이 유효한 경우, 상기 제1 부트 로더가 실행된다. 상기 제1 부트 로더가 고유 키를 이용하여 상기 제2 부트 로더에 포함된 제1 메시지 인증 코드를 검증한다. 상기 제1 메시지 인증 코드가 유효한 경우, 상기 제2 부트 로더가 실행된다.
일 실시예에서, 상기 제1 디지털 서명을 검증하도록, 공개 키 저장부로부터 상기 공개 키가 독출되고, 상기 독출된 공개 키를 이용하여 상기 제1 디지털 서명을 검증함으로써 상기 제1 부트 로더에 포함된 실행 이미지의 무결성이 확인될 수 있다.
일 실시예에서, 상기 제1 메시지 인증 코드를 검증하도록, 고유 키 저장부로부터 상기 고유 키가 독출되고, 상기 독출된 고유 키 및 상기 제2 부트 로더에 포함된 실행 이미지를 이용하여 메시지 인증 코드가 생성되며, 상기 제1 메시지 인증 코드와 상기 생성된 메시지 인증 코드가 비교될 수 있다.
일 실시예에서, 상기 고유 키는, 상기 고유 키 저장부로부터 고유 키 방화벽을 통하여 독출되고, 상기 고유 키 방화벽은, 부팅이 완료된 후 상기 고유 키 저장부로의 접근을 차단할 수 있다.
일 실시예에서, 상기 고유 키 저장부는, 보안 보조 장치로 설정되어 부팅이 완료된 후 접근되지 않을 수 있다.
일 실시예에서, 상기 고유 키 저장부의 물리적 주소는, 메모리 관리 유닛에 의해 관리되는 매핑 정보에 포함되지 않을 수 있다.
일 실시예에서, 공개 키 저장부로부터 상기 공개 키가 독출되고, 상기 독출된 공개 키를 이용하여 상기 제2 부트 로더에 포함된 제2 디지털 서명이 검증되며, 상기 제2 부트 로더는, 상기 제1 메시지 인증 코드 및 상기 제2 디지털 서명이 유효한 경우, 실행될 수 있다.
일 실시예에서, 상기 제1 부트 로더에 포함된 공개 키를 이용하여 상기 제2 부트 로더에 포함된 제2 디지털 서명이 검증되고, 상기 제2 부트 로더는, 상기 제1 메시지 인증 코드 및 상기 제2 디지털 서명이 유효한 경우, 실행될 수 있다.
일 실시예에서, 상기 제2 부트 로더가 상기 제1 부트 로더에 포함된 제1 용도 정보와 상기 제2 부트 로더에 포함된 제2 용도 정보를 비교하고, 상기 제1 용도 정보와 상기 제2 용도 정보가 일치하지 않는 경우, 부팅이 종료될 수 있다.
일 실시예에서, 비휘발성 메모리에 저장된 상기 제2 부트 로더에 포함된 제1 빌드 넘버와 휘발성 메모리에 저장된 업데이트 부트 로더에 포함된 제2 빌드 넘버가 비교되고, 상기 제2 빌드 넘버가 상기 제1 빌드 넘버보다 높은 경우, 상기 비휘발성 메모리에 상기 제2 부트 로더가 저장된 위치에 상기 업데이트 부트 로더가 중복 기입(overwrite)되며, 상기 고유 키 및 상기 업데이트 부트 로더에 포함된 실행 이미지를 이용하여 메시지 인증 코드가 생성되고, 상기 생성된 메시지 인증 코드가 상기 제1 메시지 인증 코드로서 상기 비휘발성 메모리에 저장된 상기 업데이트 부트 로더에 기입될 수 있다.
일 실시예에서, 상기 제2 부트 로더가 상기 고유 키를 이용하여 커널에 포함된 제2 메시지 인증 코드를 검증하고, 상기 제2 메시지 인증 코드가 유효한 경우, 상기 커널이 실행될 수 있다.
일 실시예에서, 공개 키 저장부로부터 상기 공개 키가 독출되고, 상기 독출된 공개 키를 이용하여 상기 커널에 포함된 제2 디지털 서명이 검증되며, 상기 커널은, 상기 제2 메시지 인증 코드 및 상기 제2 디지털 서명이 유효한 경우, 실행될 수 있다.
일 실시예에서, 상기 제2 부트 로더에 포함된 공개 키를 이용하여 상기 커널에 포함된 제2 디지털 서명이 검증되고, 상기 커널은, 상기 제2 메시지 인증 코드 및 상기 제2 디지털 서명이 유효한 경우, 실행될 수 있다.
상기 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 보안 부팅을 수행하는 시스템의 보안 부트 이미지 생성 방법에서, 상기 시스템에 포함된 비휘발성 메모리에 양산용 부트 이미지 및 예비 부트 이미지가 기입된다. 초기 부트 로더가 공개 키를 이용하여 상기 양산용 부트 이미지에 포함된 디지털 서명을 검증한다. 상기 디지털 서명이 유효한 경우, 상기 양산용 부트 이미지가 실행된다. 상기 양산용 부트 이미지가 인증을 요청한다. 상기 인증이 성공한 경우, 고유 키를 이용하여 생성된 메시지 인증 코드 및 상기 예비 부트 이미지에 기초하여 실행용 부트 이미지가 생성된다.
일 실시예에서, 상기 인증을 요청하도록, 제1 패스워드가 입력되고, 상기 제1 패스워드가 상기 양산용 부트 이미지에 포함된 제2 패스워드와 비교될 수 있다.
일 실시예에서, 상기 인증을 요청하도록, 상기 양산용 부트 이미지에 포함된 인증용 공개 키를 이용하여 원본 메시지를 암호화하여 암호화된 메시지가 생성되고, 상기 인증용 공개 키에 상응하는 인증용 개인 키를 이용하여 상기 암호화된 메시지를 복호화하여 응답 메시지가 생성되며, 상기 원본 메시지와 상기 응답 메시지가 비교될 수 있다.
일 실시예에서, 상기 예비 부트 이미지는 제1 예비 부트 로더, 제2 예비 부트 로더 및 예비 커널을 포함하고, 상기 실행용 부트 이미지를 생성하도록, 상기 비휘발성 메모리에서 상기 양산용 부트 이미지가 삭제되고, 상기 제1 예비 부트 로더, 상기 제2 예비 부트 로더 및 상기 예비 커널이 제1 부트 로더, 제2 부트 로더 및 커널로서 상기 제1 부트 로더, 상기 제2 부트 로더 및 상기 커널에 상응하는 위치들에 각각 기입되며, 상기 제2 부트 로더 및 상기 커널에 제1 메시지 인증 코드 및 제2 메시지 인증 코드가 각각 기입될 수 있다.
일 실시예에서, 상기 제1 메시지 인증 코드 및 상기 제2 메시지 인증 코드를 각각 기입하도록, 상기 고유 키 및 상기 제2 부트 로더에 포함된 실행 이미지를 이용하여 상기 제1 메시지 인증 코드가 생성되고, 상기 제2 부트 로더에 상기 제1 메시지 인증 코드가 기입되며, 상기 고유 키 및 상기 커널에 포함된 실행 이미지를 이용하여 상기 제2 메시지 인증 코드가 생성되고, 상기 커널에 상기 제2 메시지 인증 코드가 기입될 수 있다.
본 발명의 실시예들에 따른 보안 부팅 방법 및 보안 부트 이미지 생성 방법은 시스템 마다 고유한 고유 키를 이용하여 부트 이미지를 인증함으로써 인증된 부트 이미지를 통한 보안 부팅을 수행할 수 있다.
또한, 본 발명의 실시예들에 따른 보안 부팅 방법 및 보안 부트 이미지 생성 방법은 시스템 마다 고유한 고유 키를 가지는 복수의 시스템들을 양산할 수 있다.
도 1은 본 발명의 일 실시예에 따른 보안 부팅을 수행하는 시스템을 나타내는 블록도이다.
도 2a 및 도 2b는 본 발명의 일 실시예에 따른 보안 부팅 방법을 나타내는 순서도이다.
도 3은 도 1의 시스템에 포함된 개인 키를 보호하는 방법의 일 예를 설명하기 위한 도면이다.
도 4는 도 1의 시스템에 포함된 개인 키를 보호하는 방법의 다른 예를 설명하기 위한 도면이다.
도 5는 도 1의 시스템에 포함된 개인 키를 보호하는 방법의 또 다른 예를 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 부트 이미지를 업데이트하는 방법의 일 예를 설명하기 위한 블록도이다.
도 7은 본 발명의 일 실시예에 따른 보안 부팅을 수행하는 시스템의 보안 부트 이미지 생성 방법을 나타내는 순서도이다.
도 8은 도 7의 보안 부트 이미지 생성 방법을 설명하기 위한 도면이다.
도 9는 도 7의 보안 부트 이미지 생성 방법에서 수행되는 인증 단계의 일 예를 설명하기 위한 도면이다.
도 10은 도 7의 보안 부트 이미지 생성 방법에서 수행되는 인증 단계의 다른 예를 설명하기 위한 도면이다.
도 11은 본 발명의 다른 실시예에 따른 보안 부팅을 수행하는 시스템을 나타내는 블록도이다.
도 12a 및 도 12b는 본 발명의 다른 실시예에 따른 보안 부팅 방법을 나타내는 순서도이다.
도 13은 본 발명의 다른 실시예에 따른 부트 이미지를 업데이트하는 방법의 일 예를 설명하기 위한 블록도이다.
도 14는 본 발명의 또 다른 실시예에 따른 보안 부팅을 수행하는 시스템을 나타내는 블록도이다.
도 15a 및 도 15b는 본 발명의 또 다른 실시예에 따른 보안 부팅 방법을 나타내는 순서도이다.
도 16은 본 발명의 또 다른 실시예에 따른 보안 부팅을 수행하는 시스템을 나타내는 블록도이다.
도 17은 본 발명의 또 다른 실시예에 따른 부트 이미지를 업데이트하는 방법을 설명하기 위한 블록도이다.
도 18은 본 발명이 모바일 시스템에 응용된 예를 나타내는 도면이다.
도 19는 본 발명이 컴퓨팅 시스템에 응용된 예를 나타내는 도면이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성 요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제 2 구성 요소도 제1 구성 요소로 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 실시예들을 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성 요소에 대해서는 동일하거나 유사한 참조 부호를 사용한다.
도 1은 본 발명의 일 실시예에 따른 보안 부팅을 수행하는 시스템을 나타내는 블록도이다.
도 1을 참조하면, 시스템(100a)은 집적 회로(110), 외부 휘발성 메모리(130) 및 외부 비휘발성 메모리(140a)를 포함한다.
집적 회로(110)는 프로세서 코어(111), 고유 키 저장부(112), 공개 키 저장부(113), 휘발성 메모리 컨트롤러(114), 비휘발성 메모리 컨트롤러(115), 내부 휘발성 메모리(116) 및 내부 비휘발성 메모리(120)를 포함한다. 프로세서 코어(111)는 명령어(Instruction) 또는 데이터를 페치하고, 페치된 명령어 또는 데이터를 처리할 수 있다. 실시예에 따라, 집적 회로(110)는 어플리케이션 프로세서(Application Processor; AP), 마이크로프로세서, 중앙 처리 장치(Central Processing Unit; CPU), 또는 이와 유사한 장치일 수 있다.
고유 키 저장부(112)는 각 시스템(100a)에 대하여 고유한 고유 키를 저장한다. 상기 고유 키는 장치 고유 비밀 키(Device Unique Secret Key; DUSK)라 불릴 수 있다. 실시예에 따라, 부팅 동작 시, 상기 고유 키는 직접 사용되거나, 상기 고유 키로부터 키 도출 함수(Key Derivation Function; KDF)를 통하여 도출된 키가 사용될 수 있다. 예를 들어, 고유 키 저장부(112)는 OTP(One-Time Programmable) 메모리, 마스크(Mask) ROM(Read-Only Memory), PROM(Programmable Read-Only Memory), EPROM(Erasable Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Memory), 플래시 메모리(Flash Memory) 등으로 구현될 수 있다.
일 실시예에서, 공개 키 저장부(113)는 디지털 서명(148a, 158a, 168a)에 대한 인증을 위한 공개 키를 저장할 수 있다. 다른 실시예에서, 공개 키 저장부(113)는 상기 공개 키와 관련된 정보를 저장하고, 상기 공개 키는 부팅 동작 시 상기 정보를 이용하여 집적 회로(110) 외부의 장치로부터 제공될 수 있다. 예를 들어, 공개 키 저장부(113)는 OTP 메모리, 마스크 ROM, PROM, EPROM, EEPROM, 플래시 메모리 등으로 구현될 수 있다.
휘발성 메모리 컨트롤러(114)는 외부 휘발성 메모리(130)의 동작을 제어하고, 비휘발성 메모리 컨트롤러(115)는 외부 비휘발성 메모리(140a)의 동작을 제어할 수 있다. 예를 들어, 휘발성 메모리 컨트롤러(114)는 외부 휘발성 메모리(130)가 독출 동작 또는 기입 동작을 수행하도록 외부 휘발성 메모리(130)를 제어하고, 비휘발성 메모리 컨트롤러(115)는 외부 비휘발성 메모리(140a)가 독출 동작 또는 기입 동작을 수행하도록 외부 비휘발성 메모리(140a)를 제어할 수 있다.
내부 휘발성 메모리(116)는 프로세서 코어(111)에 대한 캐시 메모리(Cache Memory) 또는 작업 메모리(Working Memory)로 동작할 수 있다. 예를 들어, 내부 휘발성 메모리(116)는 정적 랜덤 액세스 메모리(Static Random Access Memory; SRAM), 내장 동적 랜덤 액세스 메모리(Embedded Dynamic Random Access Memory; EDRAM) 등과 같은 랜덤 액세스 메모리로 구현될 수 있다.
내부 비휘발성 메모리(120)는 시스템(100a)에 전원이 공급될 때 실질적으로 가장 먼저 실행되는 초기 부트 로더(121)를 저장한다. 예를 들어, 내부 비휘발성 메모리(120)는 OTP 메모리, 마스크 ROM, PROM, EPROM, EEPROM, 플래시 메모리 등으로 구현될 수 있다. 초기 부트 로더(121)는 제1 부트 로더(141a)에 포함된 제1 디지털 서명(148a)을 검증하는 서명 검증 코드를 포함할 수 있다. 또한, 초기 부트 로더(121)는 비휘발성 메모리 컨트롤러(115) 및/또는 휘발성 메모리 컨트롤러(114)를 초기화하고, 제1 부트 로더(141a)를 외부 비휘발성 메모리(140a)로부터 내부 휘발성 메모리(116) 또는 외부 휘발성 메모리(130)에 로딩할 수 있다. 실시예에 따라, 고유 키 저장부(112), 공개 키 저장부(113) 및 내부 비휘발성 메모리(120)는 각각 분리된 비휘발성 메모리들로 구현되거나, 고유 키 저장부(112), 공개 키 저장부(113) 또는 내부 비휘발성 메모리(120) 중 2 이상의 구성요소들이 하나의 비휘발성 메모리로 구현될 수 있다.
외부 휘발성 메모리(130)는 시스템(100a)의 메인 메모리(main memory)의 역할을 할 수 있다. 예를 들어, 외부 휘발성 메모리(130)는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), 모바일 DRAM 또는 이와 유사한 메모리로 구현될 수 있다.
외부 비휘발성 메모리(140a)는 제1 부트 로더(141a), 제2 부트 로더(151a) 및 커널(161a)을 포함하는 부트 이미지를 저장할 수 있다. 예를 들어, 외부 비휘발성 메모리(140a)는 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) 또는 이와 유사한 메모리로 구현될 수 있다.
제1 부트 로더(141a)는 제1 실행 이미지(142a) 및 제1 디지털 서명(148a)을 포함할 수 있다. 제1 실행 이미지(142a)는 시스템(100a)에 포함된 적어도 하나의 장치에 대한 초기화 코드, 제2 부트 로더(151a)를 내부 휘발성 메모리(116) 또는 외부 휘발성 메모리(130)에 로딩하기 위한 코드, 제2 부트 로더(151a)에 포함된 제2 디지털 서명(158a)을 검증하는 서명 검증 코드(143a), 및 제2 부트 로더(151a)에 포함된 제1 메시지 인증 코드(Message Authentication Code; MAC, 159a)를 검증하는 MAC 검증 코드(144a)를 포함할 수 있다. 제1 디지털 서명(148a)은 상기 공개 키에 상응하는 개인 키를 이용하여 제1 실행 이미지(142a)에 대하여 서명함으로써 생성될 수 있다. 한편, 제1 실행 이미지(142a)가 변경된 경우, 제1 부트 로더(141a)가 실행되지 않을 수 있다. 따라서, 초기 부트 로더(121)가 제1 부트 로더(141a)에 포함된 제1 디지털 서명(148a)을 검증함으로써, 제1 부트 로더(141a)에 포함된 제1 실행 이미지(142a)의 무결성(integrity)이 확보될 수 있다.
제2 부트 로더(151a)는 제2 실행 이미지(152a), 제2 디지털 서명(158a) 및 제1 메시지 인증 코드(159a)를 포함할 수 있다. 제2 실행 이미지(152a)는 시스템(100a)에 포함된 적어도 하나의 장치에 대한 초기화 코드, 커널(161a)을 외부 휘발성 메모리(130)에 로딩하기 위한 코드, 커널(161a)에 포함된 제3 디지털 서명(168a)을 검증하는 서명 검증 코드(153a), 및 커널(161a)에 포함된 제2 메시지 인증 코드(169a)를 검증하는 MAC 검증 코드(154a)를 포함할 수 있다. 제2 디지털 서명(158a)은 상기 공개 키에 상응하는 상기 개인 키를 이용하여 제2 실행 이미지(152a)에 대하여 서명함으로써 생성될 수 있다. 이에 따라, 제1 부트 로더(141a)가 제2 부트 로더(151a)에 포함된 제2 디지털 서명(158a)을 검증함으로써, 제2 부트 로더(151a)에 포함된 제2 실행 이미지(152a)의 무결성이 확보될 수 있다.
제1 메시지 인증 코드(159a)는 고유 키 저장부(112)에 저장된 상기 고유 키 또는 상기 고유 키로부터 키 도출 함수를 통하여 도출된 키와 함께 제2 실행 이미지(152a)를 이용하여 생성될 수 있다. 즉, 제1 메시지 인증 코드(159a)는, 비밀 키 입력으로서 상기 고유 키 또는 상기 도출된 키를 수신하고, 메시지 입력으로서 제2 실행 이미지(152a)를 수신하는 MAC 알고리즘에 의해 생성될 수 있다. 상기 MAC 알고리즘은, 암호화 해시 함수(Cryptographic Hash Function), 블록 암호 알고리즘(Block Cipher Algorithm), 유니버설 해싱(Universal Hashing) 등을 이용할 수 있다. 예를 들어, 상기 MAC 알고리즘은 유니버설 해싱 기반 메시지 인증 코드(Message Authentication Code based on Universal hashing; UMAC) 알고리즘, 해시 기반 메시지 인증 코드(Hash-based Message Authentication Code; HMAC) 알고리즘, 암호 기반 메시지 인증 코드(Cipher-based Message Authentication Code; CMAC) 알고리즘, 유니버설 해시를 이용한 블록 암호 기반 메시지 인증 코드(VMAC) 알고리즘, 또는 이와 유사한 알고리즘일 수 있다. 제1 부트 로더(141a)가 제2 부트 로더(151a)에 포함된 제1 메시지 인증 코드(159a)를 검증함으로써, 제2 부트 로더(151a)의 비밀성(confidentiality) 및 무결성이 유지될 수 있다.
커널(161a)은 제3 실행 이미지(162a), 제3 디지털 서명(168a) 및 제2 메시지 인증 코드(169a)를 포함할 수 있다. 제3 실행 이미지(162a)는 메인 메모리인 외부 휘발성 메모리(130)에 로드되어 시스템(100a)을 구동할 수 있다. 제3 디지털 서명(168a)은 상기 공개 키에 상응하는 상기 개인 키를 이용하여 제3 실행 이미지(162a)에 대하여 서명함으로써 생성될 수 있다. 이에 따라, 제2 부트 로더(151a)가 커널(161a)에 포함된 제3 디지털 서명(168a)을 검증함으로써, 커널(161a)에 포함된 제3 실행 이미지(162a)의 무결성이 확보될 수 있다. 제2 메시지 인증 코드(169a)는 고유 키 저장부(112)에 저장된 상기 고유 키 또는 상기 고유 키로부터 키 도출 함수를 통하여 도출된 키와 함께 제3 실행 이미지(162a)를 이용하여 생성될 수 있다. 제2 부트 로더(151a)가 커널(161a)에 포함된 제2 메시지 인증 코드(169a)를 검증함으로써, 커널(161a)의 비밀성 및 무결성이 유지될 수 있다.
상술한 바와 같이, 본 발명의 실시예들에 따른 시스템(100a)은 각 시스템마다 고유한 상기 고유 키를 이용하여 상기 부트 이미지에 포함된 메시지 인증 코드를 검증함으로써, 인증된 부트 이미지를 통한 보안 부팅을 수행할 수 있다. 예를 들어, 인증되지 않은 부트 이미지 또는 다른 시스템의 부트 이미지가 외부 비휘발성 메모리(140a)에 복제되더라도, 시스템(100a)은 상기 복제된 부트 이미지에 포함된 메시지 인증 코드를 검증함으로써 상기 복제된 부트 이미지에 의한 부팅을 방지할 수 있다.
도 1에는 외부 비휘발성 메모리(140a)에 두 개의 부트 로더들(151a, 161a)이 저장된 예가 도시되어 있으나, 실시예에 따라, 외부 비휘발성 메모리(140a)에는 하나 이상의 부트 로더가 저장될 수 있다. 예를 들어, 초기 부트 로더(121)가 하나의 부트 로더를 로딩하고, 상기 하나의 부트 로더가 커널(161a)을 바로 로딩할 수 있다. 다른 예에서, 초기 부트 로더(121) 및 외부 비휘발성 메모리(140a)에 저장된 세 개의 부트 로더들이 순차적으로 로딩되고, 그 후, 커널(161a)이 로딩될 수 있다.
도 2a 및 도 2b는 본 발명의 일 실시예에 따른 보안 부팅 방법을 나타내는 순서도이다.
도 1, 도 2a 및 도 2b를 참조하면, 프로세서 코어(111)는 내부 비휘발성 메모리(120)에 저장된 초기 부트 로더(121)를 실행한다(S210). 초기 부트 로더(121)는 외부 비휘발성 메모리(140a)에 저장된 제1 부트 로더(141a)를 내부 휘발성 메모리(116) 또는 외부 휘발성 메모리(130)에 로딩하고, 공개 키 저장부(113)에 저장된 공개 키를 이용하여 제1 부트 로더(141a)에 포함된 제1 디지털 서명(148a)을 검증한다(S211). 예를 들어, 초기 부트 로더(121)는, 공개 키 저장부(113)로부터 상기 공개 키를 독출하고, 상기 독출된 공개 키, 제1 실행 이미지(142a) 및 제1 디지털 서명(148a)에 기초하여 서명 검증 알고리즘을 실행함으로써 제1 실행 이미지(142a)의 무결성을 확인할 수 있다. 제1 디지털 서명(148a)이 유효하지 않은 경우(S212: 아니오), 보안 부팅이 더 이상 진행되지 않고 시스템(100a)이 종료된다(S250).
제1 디지털 서명(148a)이 유효한 경우(S212: 예), 프로세서 코어(111)는 제1 부트 로더(141a)를 실행한다(S220). 제1 부트 로더(141a)는, 제2 부트 로더(151a)를 내부 휘발성 메모리(116) 또는 외부 휘발성 메모리(130)에 로딩하고, 고유 키 저장부(112)에 저장된 고유 키를 이용하여 제2 부트 로더(151a)에 포함된 제1 메시지 인증 코드(159a)를 검증한다(S221). 예를 들어, 제1 실행 이미지(142a)에 포함된 MAC 검증 코드(144a)는, 고유 키 저장부(112)로부터 상기 고유 키를 독출하고, 상기 독출된 고유 키 및 제2 부트 로더(151a)에 포함된 제2 실행 이미지(152a)에 기초하여 MAC 알고리즘을 실행함으로써 메시지 인증 코드를 생성한다. 그 후, MAC 검증 코드(144a)는 상기 생성된 메시지 인증 코드와 제1 메시지 인증 코드(159a)를 비교함으로써 제2 부트 로더(151a)의 비밀성 및 무결성을 확인할 수 있다. 상기 생성된 메시지 인증 코드와 제1 메시지 인증 코드(159a)가 일치하지 않는 경우, 제1 메시지 인증 코드(159a)는 유효하지 않고(S222: 아니오), 보안 부팅 및 시스템(100a)이 종료된다(S250).
상기 생성된 메시지 인증 코드와 제1 메시지 인증 코드(159a)가 실질적으로 일치하는 경우, 즉 제1 메시지 인증 코드(159a)가 유효한 경우(S222: 예), 제1 부트 로더(141a)는 상기 공개 키를 이용하여 제2 부트 로더(151a)에 포함된 제2 디지털 서명(158a)을 검증한다(S223). 예를 들어, 제1 실행 이미지(142a)에 포함된 서명 검증 코드(143a)는, 상기 공개 키, 제2 실행 이미지(152a) 및 제2 디지털 서명(158a)에 기초하여 서명 검증 알고리즘을 실행함으로써 제2 실행 이미지(152a)의 무결성을 확인할 수 있다. 제2 부트 로더(151a)에 포함된 제2 실행 이미지(152a) 또는 제2 디지털 서명(158a)이 의도하지 않게 변경된 경우, 제2 디지털 서명(158a)은 유효하지 않고(S224: 아니오), 보안 부팅 및 시스템(100a)이 종료된다(S250).
제2 디지털 서명(158a)이 유효한 경우(S224: 예), 프로세서 코어(111)는 제2 부트 로더(151a)를 실행한다(S230). 제2 부트 로더(151a)는 커널(161a)을 외부 휘발성 메모리(130)에 로딩하고, 상기 고유 키를 이용하여 커널(161a)에 포함된 제2 메시지 인증 코드(169a)를 검증한다(S231). 예를 들어, 제2 실행 이미지(152a)에 포함된 MAC 검증 코드(154a)는 상기 고유 키 및 커널(161a)에 포함된 제3 실행 이미지(162a)에 기초하여 MAC 알고리즘을 실행함으로써 메시지 인증 코드를 생성한다. 그 후, MAC 검증 코드(154a)는 상기 생성된 메시지 인증 코드와 제2 메시지 인증 코드(169a)를 비교함으로써 커널(161a)의 비밀성 및 무결성을 확인할 수 있다. 상기 생성된 메시지 인증 코드와 제2 메시지 인증 코드(169a)가 일치하지 않는 경우, 제2 메시지 인증 코드(169a)는 유효하지 않고(S232: 아니오), 보안 부팅 및 시스템(100a)이 종료된다(S250).
상기 생성된 메시지 인증 코드와 제2 메시지 인증 코드(169a)가 실질적으로 일치하는 경우, 즉 제2 메시지 인증 코드(169a)가 유효한 경우(S232: 예), 제2 부트 로더(151a)는 상기 공개 키를 이용하여 커널(161a)에 포함된 제3 디지털 서명(168a)을 검증한다(S233). 예를 들어, 제2 실행 이미지(152a)에 포함된 서명 검증 코드(153a)는, 상기 공개 키, 제3 실행 이미지(162a) 및 제3 디지털 서명(168a)에 기초하여 서명 검증 알고리즘을 실행함으로써 제3 실행 이미지(162a)의 무결성을 확인할 수 있다. 커널(161a)에 포함된 제3 실행 이미지(162a) 또는 제3 디지털 서명(168a)이 의도하지 않게 변경된 경우, 제3 디지털 서명(168a)은 유효하지 않고(S234: 아니오), 보안 부팅 및 시스템(100a)이 종료된다(S250).
제3 디지털 서명(168a)이 유효한 경우(S234: 예), 프로세서 코어(111)는 커널(161a)을 실행한다(S240). 프로세서 코어(111)가 커널(161a)을 실행함으로써, 보안 부팅이 완료되고, 시스템(100a)이 정상적으로 구동할 수 있다.
상술한 바와 같이, 본 발명의 일 실시예에 따른 보안 부팅 방법에서, 제2 부트 로더(151a)에 포함된 제1 메시지 인증 코드(159a) 및 커널(161a)에 포함된 제2 메시지 인증 코드(169a)가 각 시스템마다 고유한 상기 고유 키를 이용하여 검증된다. 이에 따라, 본 발명의 실시예들에 따른 보안 부팅 방법은 인증되지 않거나 복제된 부트 이미지에 의한 부팅을 방지할 수 있다.
도 3은 도 1의 시스템에 포함된 개인 키를 보호하는 방법의 일 예를 설명하기 위한 도면이다.
도 3을 참조하면, 고유 키 저장부(112a)는 OTP 메모리(171), 고유 키 방화벽(172) 및 제어 회로(173)를 포함한다.
OTP 메모리(171)에는, 집적 회로(110)의 제조 시, 각 집적 회로마다 고유한 고유 키가 기입될 수 있다. 실시예에 따라, 고유 키 저장부(112a)는 OTP 메모리(171) 대신에 상기 고유 키를 저장하는 마스크 ROM, PROM, EPROM, EEPROM, 플래시 메모리 등을 포함할 수 있다.
고유 키 방화벽(172)은, 보안 부팅 시 OTP 메모리(171)에 저장된 상기 고유 키를 출력하고, 보안 부팅 후 OTP 메모리(171)로의 접근을 차단할 수 있다. 예를 들어, 도 1의 프로세서 코어(111)는, 보안 부팅이 수행되는 동안, 고유 키 방화벽(172)을 통하여 OTP 메모리(171)로부터 상기 고유 키를 출력할 수 있다. 상기 보안 부팅이 완료된 후, 도 1의 프로세서 코어(111)는 제어 회로(173)에 보안 부팅이 완료되었음을 나타내는 신호를 송신하고, 제어 회로(173)는 상기 신호에 응답하여 상기 고유 키를 출력하지 않도록 고유 키 방화벽(172)을 제어할 수 있다.
이에 따라, OTP 메모리(171)가 부팅 완료 후 고유 키 방화벽(172)에 의해 접근되지 않음으로써, 상기 고유 키에 대한 보안이 유지될 수 있다. 따라서, 해커에 의한 상기 고유 키 및 부트 이미지에 대한 해킹이 방지될 수 있다.
도 4는 도 1의 시스템에 포함된 개인 키를 보호하는 방법의 다른 예를 설명하기 위한 도면이다.
도 4를 참조하면, 프로세서 코어(111a)는 일반 도메인에서 일반 커널(181)을 실행하고, 보안 도메인에서 보안 커널(182)을 실행할 수 있다. 고유 키 저장부(112)는 상기 보안 도메인에 속하는 보안 보조 장치(secure peripheral)로 설정된다. 또한, 도 1의 초기 부트 로더(121), 제1 부트 로더(141a) 및 제2 부트 로더(151a)는 상기 보안 도메인에서 실행되도록 설정되고, 도 1의 커널(161a)의 적어도 일부는 상기 일반 도메인에서 실행되도록 설정될 수 있다. 이에 따라, 고유 키 저장부(112)는 보안 부팅 동안 접근될 수 있고, 보안 부팅 완료 후 접근되지 않을 수 있다. 또한, 프로세서 코어(111a)는 상기 일반 도메인과 상기 보안 도메인 사이의 데이터 또는 컨텍스트(Context) 교환을 위한 모니터(183)를 실행할 수 있다. 한편, 이와 같은 보안 유지 기술은 트러스트존(TrustZone) 기술로 불릴 수 있다.
상술한 바와 같이, 상기 보안 부팅 완료 후 고유 키 저장부(112)가 접근되지 않음으로써, 고유 키 저장부(112)에 저장된 고유 키에 대한 보안이 유지될 수 있다.
도 5는 도 1의 시스템에 포함된 개인 키를 보호하는 방법의 또 다른 예를 설명하기 위한 도면이다.
도 5를 참조하면, 프로세서 코어(111b)는, 보안 부팅이 완료된 후, 커널(161a)에 포함된 메모리 관리 유닛(Memory Management Unit; MMU, 190)을 이용하여 외부 휘발성 메모리(130) 및 외부 비휘발성 메모리(140a)에 접근할 수 있다. 메모리 관리 유닛(190)은 프로세서 코어(111b)로부터 제공된 논리적 주소(LA)를 외부 휘발성 메모리(130) 및 외부 비휘발성 메모리(140a)에 대한 물리적 주소들(PA1, PA2)로 변환할 수 있다. 또한, 메모리 관리 유닛(190)은 외부 휘발성 메모리(130) 및 외부 비휘발성 메모리(140a)에 대한 물리적 주소들(PA1, PA2)을 포함하는 매핑 정보를 관리할 수 있다. 한편, 메모리 관리 유닛(190)에 의해 관리되는 상기 매핑 정보는 고유 키 저장부(112)의 물리적 주소를 포함하지 않을 수 있다. 이에 따라, 상기 보안 부팅이 완료된 후, 프로세서 코어(111b)로부터 제공된 논리적 주소(LA)가 메모리 관리 유닛(190)에 의해 고유 키 저장부(112)의 물리적 주소로 변환되지 않음으로써, 고유 키 저장부(112)에 저장된 고유 키에 대한 보안이 유지될 수 있다.
도 6은 본 발명의 일 실시예에 따른 부트 이미지를 업데이트하는 방법의 일 예를 설명하기 위한 블록도이다.
도 6에는 부트 이미지 중 제2 부트 로더(151a)가 업데이트되는 예가 도시되어 있다. 도 6을 참조하면, 호스트(미도시)로부터 외부 휘발성 메모리(130)에 업데이트 부트 로더(251a)가 다운로드 될 수 있다. 예를 들어, 집적 회로(110)를 포함하는 시스템이 범용 직렬 버스(Universal Serial Bus; USB)를 통하여 상기 호스트에 연결되고, 상기 USB를 통하여 외부 휘발성 메모리(130)에 업데이트 부트 로더(251a)가 기입될 수 있다. 다른 예에서, 업데이트 부트 로더(251a)는 이더넷(Ethernet) 또는 3G 망을 통하여 원격 호스트로부터 유선 또는 무선으로 다운로드 될 수 있다.
업데이트 부트 로더(251a)는 실행 이미지(252a) 및 디지털 서명(258a)을 포함하고, 메시지 인증 코드(159a)가 기입될 위치에는 무의미한 데이터(259a)(예를 들어, 모든 값이 “0”)가 저장될 수 있다. 업데이트 부트 로더(251a)에 포함된 디지털 서명(258a)은 공개 키 저장부(113)에 저장된 공개 키를 이용하여 검증된다. 디지털 서명(258a)이 유효한 경우, 외부 휘발성 메모리(130)에 저장된 업데이트 부트 로더(251a)가 외부 비휘발성 메모리(140a)에 기입된다. 예를 들어, 업데이트 부트 로더(251a)는 제2 부트 로더(151a)가 저장된 위치에 중복 기입(overwrite)될 수 있다. 업데이트 부트 로더(251a)가 외부 비휘발성 메모리(140a)에 저장된 후, 고유 키 저장부(112)에 저장된 고유 키 및 업데이트 부트 로더(251a)의 실행 이미지(252a)를 이용하여 메시지 인증 코드(159a)가 생성된다. 생성된 메시지 인증 코드(159a)는 외부 비휘발성 메모리(140a)에 저장된 업데이트 부트 로더(251a), 즉 제2 부트 로더(151a)에 기입된다. 이에 따라, 시스템 마다 고유한 고유 키를 이용하여 검증되는 부트 이미지가 업데이트될 수 있다.
한편, 이와 같은 부트 이미지 업데이트 동작은, 보안 부팅 동작 동안 부트 로더들 중 하나에 의해 수행되거나, 보안 부팅 동작 후 커널에 의해 수행될 수 있다.
도 7은 본 발명의 일 실시예에 따른 보안 부팅을 수행하는 시스템의 보안 부트 이미지 생성 방법을 나타내는 순서도이고, 도 8은 도 7의 보안 부트 이미지 생성 방법을 설명하기 위한 도면이다.
도 1, 도 7 및 도 8을 참조하면, 갱 라이터(Gang Writer, 400)는 복수의 시스템들에 대한 복수의 외부 비휘발성 메모리들(140a, 140a_1, 140a_2)에 실질적으로 동일한 양산용 부트 이미지(410) 및 예비 부트 이미지(420a)를 기입한다(S300). 양산용 부트 이미지(410)는 실행 이미지(411) 및 디지털 서명(412)을 포함하고, 예비 부트 이미지(420a)는 제1 예비 부트 로더(421a), 제2 예비 부트 로더(431a) 및 예비 커널(441a)를 포함할 수 있다. 양산용 부트 이미지(410)의 실행 이미지(411)는 외부 비휘발성 메모리(140a)로부터 양산용 부트 이미지(410)를 삭제하는 코드, 및 외부 비휘발성 메모리(140a)에서 제1 예비 부트 로더(421a), 제2 예비 부트 로더(431a) 및 예비 커널(441a)을 제1 부트 로더(141a), 제2 부트 로더(151a) 및 커널(169a)로서 상응하는 위치들로 이동시키는 코드를 포함할 수 있다. 제1 예비 부트 로더(421a), 제2 예비 부트 로더(431a) 및 예비 커널(441a)은 실행 코드들(422a, 432a, 442a) 및 디지털 서명들(428a, 438a, 448a)을 각각 포함할 수 있다.
외부 비휘발성 메모리(140a)에 양산용 부트 이미지(410) 및 예비 부트 이미지(420a)이 기입된 후 시스템(100a)이 최초로 부팅될 때, 내부 비휘발성 메모리(120)에 저장된 초기 부트 로더(121)가 실행된다(S310). 초기 부트 로더(121)는 외부 비휘발성 메모리(140a)에 저장된 양산용 부트 이미지(410)를 내부 휘발성 메모리(116) 또는 외부 휘발성 메모리(130)에 로딩하며, 공개 키 저장부(113)에 저장된 공개 키를 이용하여 양산용 부트 이미지(410)에 포함된 디지털 서명(412)을 검증한다(S311). 양산용 부트 이미지(410)의 디지털 서명(412)이 유효하지 않은 경우(S312: 아니오), 부팅 및 시스템(100a)이 종료된다(S340).
양산용 부트 이미지(410)의 디지털 서명(412)이 유효한 경우(S312: 예), 양산용 부트 이미지(410)가 실행된다(S320). 양산용 부트 이미지(410)는 인증을 요청한다(S321). 일 실시예에서, 양산용 부트 이미지(410)는 사용자로부터 제1 패스워드를 입력 받고, 상기 제1 패스워드를 양산용 부트 이미지(410)에 포함된 제2 패스워드와 비교하며, 상기 제1 패스워드와 상기 제2 패스워드가 일치하는 경우, 상기 인증이 성공한 것으로 판단할 수 있다. 다른 실시예에서, 양산용 부트 이미지(410)는 시도-응답(challenge-response) 방식을 이용하여 상기 인증을 요청할 수 있다. 예를 들어, 양산용 부트 이미지(410)는 양산용 부트 이미지(410)에 포함된 인증용 공개 키를 이용하여 원본 메시지를 암호화하여 암호화된 메시지를 생성하고, 외부 호스트에서 상기 인증용 공개 키에 상응하는 인증용 개인 키를 이용하여 상기 암호화된 메시지를 복호화하여 응답 메시지를 생성하며, 양산용 부트 이미지(410)는 상기 응답 메시지가 상기 원본 메시지에 상응하는 경우, 상기 인증이 성공한 것으로 판단할 수 있다. 상기 인증이 실패한 경우(S322: 아니오), 부팅 및 시스템(100a)이 종료된다(S340).
상기 인증이 성공한 경우(S322: 예), 양산용 부트 이미지(410)의 실행 이미지(411)는 외부 비휘발성 메모리(140a)로부터 양산용 부트 이미지(410)를 삭제하고(S323), 제1 예비 부트 로더(421a), 제2 예비 부트 로더(431a) 및 예비 커널(441a)을 제1 부트 로더(141a), 제2 부트 로더(151a) 및 커널(169a)로서 상응하는 위치들에 각각 기입함으로써 실행용 부트 이미지(450a)를 생성한다(S324). 예를 들어, 제1 예비 부트 로더(421a)를 양산용 부트 이미지(410)의 위치에 기입함으로써, 다음 부팅 동작 시 제1 부트 로더(141a)로서 제1 예비 부트 로더(421a)가 초기 부트 로더(121)에 의해 실행되도록 할 수 있다. 또한, 양산용 부트 이미지(410)의 실행 이미지(411)는 고유 키 저장부(112)에 저장된 고유 키를 이용하여 제2 부트 로더(151a) 및 커널(161a)에 제1 메시지 인증 코드(159a) 및 제2 메시지 인증 코드(169a)를 각각 기입한다(S325). 예를 들어, 양산용 부트 이미지(410)의 실행 이미지(411)는 상기 고유 키, 및 제2 예비 부트 로더(431a)의 실행 이미지(432a), 즉 제2 부트 로더(151a)의 실행 이미지(152a)을 이용하여 제1 메시지 인증 코드(159a)를 생성하고, 생성된 제1 메시지 인증 코드(159a)를 제2 부트 로더(151a)에 기입할 수 있다. 또한, 양산용 부트 이미지(410)의 실행 이미지(411)는 상기 고유 키, 및 예비 커널(441a)의 실행 이미지(442a), 즉 커널(161a)의 실행 이미지(162a)을 이용하여 제2 메시지 인증 코드(169a)를 생성하고, 생성된 제2 메시지 인증 코드(169a)를 커널(161a)에 기입할 수 있다.
제1 및 제2 메시지 인증 코드(159a, 169a)들을 포함하는 실행용 부트 이미지(450a)가 생성된 후, 시스템이 재부팅된다(S330). 상기 시스템의 재부팅 시 본 발명의 실시예들에 따른 보안 부팅 방법이 수행될 수 있다.
상술한 바와 같이, 복수의 시스템들에 대하여 실질적으로 동일한 양산용 부트 이미지(410) 및 예비 부트 이미지(420a)가 기입되더라도, 각 시스템마다 고유한 메시지 인증 코드(159a, 169a)를 포함하는 실행용 부트 이미지(450a)가 생성될 수 있다. 이에 따라, 보안 부팅을 수행하는 복수의 시스템들이 용이하게 양산될 수 있다.
도 9는 도 7의 보안 부트 이미지 생성 방법에서 수행되는 인증 단계의 일 예를 설명하기 위한 도면이다.
도 9를 참조하면, 모바일 폰과 같은 시스템(500)은 키 패드 또는 터치 스크린과 같은 입력 장치(510)를 통하여 사용자로부터 패스워드를 입력 받는다. 예를 들어, 시스템(500)의 제조사가 시스템(500)의 조립 후 상기 패스워드를 입력할 수 있다. 시스템(500)에 포함된 양산용 부트 이미지는 입력 장치(510)를 초기화하는 코드를 포함할 수 있다.
시스템(500)은 상기 입력 받은 패스워드를 상기 양산용 부트 이미지에 포함된 패스워드와 비교하고, 상기 패스워드들이 일치하는 경우, 시스템(500)은 실행용 부트 이미지를 생성할 수 있다. 이에 따라, 상기 양산용 부트 이미지가 유출되더라도 상기 실행용 부트 이미지가 생성되는 것을 방지할 수 있다. 즉, 이미지 롤백 공격 또는 디바이스 복제 공격이 방지될 수 있다.
도 10은 도 7의 보안 부트 이미지 생성 방법에서 수행되는 인증 단계의 다른 예를 설명하기 위한 도면이다.
도 10을 참조하면, 모바일 폰과 같은 시스템(610)은 시도-응답 방식을 이용하여 인증을 요청할 수 있다. 예를 들어, 시스템(610)에 포함된 양산용 부트 이미지가 상기 양산용 부트 이미지에 포함된 인증용 공개 키를 이용하여 원본 메시지를 암호화하여 암호화된 메시지를 생성하고, 상기 암호화된 메시지를 외부 호스트(620)에 제공할 수 있다. 외부 호스트(620)는 상기 인증용 공개 키에 상응하는 인증용 개인 키를 이용하여 상기 암호화된 메시지를 복호화하여 응답 메시지를 생성하고, 상기 응답 메시지를 시스템(610)에 제공할 수 있다. 시스템(610)의 상기 양산용 부트 이미지는 상기 응답 메시지와 상기 원본 메시지를 비교하고, 상기 응답 메시지가 상기 원본 메시지에 상응하는 경우 인증이 성공한 것으로 판단할 수 있다. 일 실시예에서, 상기 암호화된 메시지에는 상기 암호화된 메시지의 유효성을 확인할 수 있는 데이터 구조체가 포함되고, 시스템(610)은, 상기 암호화된 메시지가 유효한 경우에만, 상기 응답 메시지를 생성할 수 있다.
일 예에서, 시스템(610)의 제조사가, 시스템(610)의 조립 후, USB를 통하여 시스템(610)을 상기 인증용 개인 키를 저장하는 컴퓨터와 같은 외부 호스트(620)에 연결함으로써 상기 인증을 수행할 수 있다. 다른 예에서, 조립된 시스템(610)이 고객에게 전달되고, 시스템(610)이 상기 암호화된 메시지를 표시할 수 있다. 상기 고객은 상기 표시된 메시지를 제조사에 알리고, 상기 제조사는 상기 표시된 메시지에 상응하는 응답 메시지를 고객에게 알림으로써 상기 인증이 수행될 수 있다. 또 다른 예에서, 조립된 시스템(610)이 고객에게 전달되고, 상기 고객이 시스템(610)을 처음으로 부팅할 때 시스템(610)이 제조사에 위치한 외부 호스트(620)에 이더넷 또는 3G 망을 통하여 연결됨으로써 상기 인증이 자동으로 수행될 수 있다.
도 11은 본 발명의 다른 실시예에 따른 보안 부팅을 수행하는 시스템을 나타내는 블록도이고, 도 12a 및 도 12b는 본 발명의 다른 실시예에 따른 보안 부팅 방법을 나타내는 순서도이다.
도 11, 도 12a 및 도 12b를 참조하면, 시스템(100b)은 집적 회로(110) 및 외부 비휘발성 메모리(140b)를 포함한다. 외부 비휘발성 메모리(140b)에 저장된 제1 부트 로더(141b) 및 제2 부트 로더(151b)는, 도 1의 제1 부트 로더(141a) 및 제2 부트 로더(151a)에 비하여, 공개 키들(145b, 155b)을 각각 더 포함할 수 있다.
보안 부팅 방법에서, 내부 비휘발성 메모리(120)에 저장된 초기 부트 로더(121)가 실행된다(S710). 초기 부트 로더(121)는 외부 비휘발성 메모리(140b)에 저장된 제1 부트 로더(141b)를 로딩하고, 공개 키 저장부(113)에 저장된 공개 키를 이용하여 제1 부트 로더(141b)에 포함된 제1 디지털 서명(148b)을 검증한다(S711). 제1 디지털 서명(148b)이 유효하지 않은 경우(S712: 아니오), 보안 부팅 및 시스템(100b)이 종료된다(S750).
제1 디지털 서명(148b)이 유효한 경우(S712: 예), 제1 부트 로더(141b)가 실행된다(S720). 제1 부트 로더(141b)의 제1 실행 이미지(142b)는 제2 부트 로더(151b)를 로딩하고, 제1 실행 이미지(142b)에 포함된 MAC 검증 코드(144b)는 고유 키 저장부(112)에 저장된 고유 키를 이용하여 제2 부트 로더(151b)에 포함된 제1 메시지 인증 코드(159b)를 검증한다(S721). 제1 메시지 인증 코드(159b)가 유효하지 않은 경우(S722: 아니오), 보안 부팅 및 시스템(100b)이 종료된다(S750).
제1 메시지 인증 코드(159b)가 유효한 경우(S722: 예), 제1 실행 이미지(142b)에 포함된 서명 검증 코드(143b)는 제1 실행 이미지(142b)에 공개 키(145b)가 포함되었는지 여부에 따라 제1 부트 로더(141b)에 포함된 공개 키(145b) 또는 공개 키 저장부(113)에 저장된 공개 키를 선택적으로 이용하여 제2 부트 로더(151b)에 포함된 제2 디지털 서명(158b)을 검증한다. 즉, 제1 부트 로더(141b)에 공개 키(145b)가 존재하지 않는 경우(S723: 아니오)(예를 들어, 제1 부트 로더(141b)의 공개 키 영역에 “0” 값들이 기재된 경우), 제2 디지털 서명(158b)이 공개 키 저장부(113)에 저장된 공개 키를 이용하여 검증된다(S724). 또한, 제1 부트 로더(141b)에 공개 키(145b)가 존재하는 경우(S723: 예), 제2 디지털 서명(158b)이 제1 부트 로더(141b)에 포함된 공개 키(145b)를 이용하여 검증된다(S725). 제2 디지털 서명(158b)이 유효하지 않은 경우(S726: 아니오), 보안 부팅 및 시스템(100b)이 종료된다(S750).
제2 디지털 서명(158b)이 유효한 경우(S726: 예), 제2 부트 로더(151b)가 실행된다(S730). 제2 부트 로더(151b)의 제2 실행 이미지(152b)는 커널(161b)을 로딩하고, 제2 실행 이미지(152b)에 포함된 MAC 검증 코드(154b)는 상기 고유 키를 이용하여 커널(161b)에 포함된 제2 메시지 인증 코드(169b)를 검증한다(S731). 제2 메시지 인증 코드(169b)가 유효하지 않은 경우(S732: 아니오), 보안 부팅 및 시스템(100b)이 종료된다(S750).
제2 메시지 인증 코드(169b)가 유효하고(S732: 예), 제2 부트 로더(151b)에 공개 키(155b)가 존재하지 않는 경우(S733: 아니오), 제2 실행 이미지(152b)에 포함된 서명 검증 코드(153b)는 제2 디지털 서명(158b)의 검증에 이용된 공개 키를 이용하여 커널(161b)에 포함된 제3 디지털 서명(168b)을 검증한다(S734). 예를 들어, 제2 디지털 서명(158b)이 제1 부트 로더(141b)에 포함된 공개 키(145b)를 이용하여 검증된 경우, 제3 디지털 서명(168b) 또한 제1 부트 로더(141b)에 포함된 공개 키(145b)를 이용하여 검증될 수 있다. 또한, 제2 디지털 서명(158b)이 공개 키 저장부(113)에 저장된 공개 키를 이용하여 검증된 경우, 제3 디지털 서명(168b) 또한 공개 키 저장부(113)에 저장된 공개 키를 이용하여 검증될 수 있다.
제2 메시지 인증 코드(169b)가 유효하고(S732: 예), 제2 부트 로더(151b)에 공개 키(155b)가 존재하는 경우(S733: 예), 제2 실행 이미지(152b)에 포함된 서명 검증 코드(153b)는 제2 부트 로더(151b)에 포함된 공개 키(155b)를 이용하여 커널(161b)에 포함된 제3 디지털 서명(168b)을 검증한다(S735). 제3 디지털 서명(168b)이 유효하지 않은 경우(S736: 아니오), 보안 부팅 및 시스템(100b)이 종료된다(S750).
제3 디지털 서명(168b)이 유효한 경우(S736: 예), 커널(161b)이 실행되고(S740), 보안 부팅이 완료되며, 시스템(100b)이 정상적으로 구동할 수 있다.
상술한 바와 같이, 본 발명의 다른 실시예에 따른 보안 부팅 방법은, 메시지 인증 코드(159b, 169b)가 각 시스템마다 고유한 고유 키를 이용하여 검증됨으로써, 인증되지 않거나 복제된 부트 이미지에 의한 부팅을 방지할 수 있다. 또한, 본 발명의 다른 실시예에 따른 보안 부팅 방법에서, 부트 로더(141b, 151b)에 공개 키(145b, 155b)가 존재하는지 여부에 따라 부트 로더(141b, 151b)에 공개 키(145b, 155b) 또는 공개 키 저장부(113)에 저장된 공개 키가 선택적으로 이용됨으로써, 공개 키가 용이하고 안전하게 업데이트될 수 있다.
도 13은 본 발명의 다른 실시예에 따른 부트 이미지를 업데이트하는 방법의 일 예를 설명하기 위한 블록도이다.
도 13에는 부트 이미지 중 제1 부트 로더(141b) 및 제2 부트 로더(151b)가 업데이트되고, 제2 부트 로더(151b)의 디지털 서명(158b)을 검증하기 위한 공개 키(145b)가 업데이트되는 예가 도시되어 있다. 도 13을 참조하면, 호스트(미도시)로부터 외부 휘발성 메모리(130)에 제1 업데이트 부트 로더(751b) 및 제2 업데이트 부트 로더(761b)가 다운로드 될 수 있다. 예를 들어, 제1 업데이트 부트 로더(751b) 및 제2 업데이트 부트 로더(761b)는 USB, 이더넷 망, 또는 3G 망을 통하여 다운로드 될 수 있다.
제1 업데이트 부트 로더(751b)는 실행 이미지(752b), 업데이트된 공개 키(755b) 및 디지털 서명(758b)을 포함하고, 제2 업데이트 부트 로더(761b)는 실행 이미지(762b), 업데이트된 디지털 서명(768b), 및 메시지 인증 코드(159b)가 기입될 위치에 무의미한 데이터(769a)를 포함할 수 있다. 제1 업데이트 부트 로더(751b)에 포함된 디지털 서명(758b)은 공개 키 저장부(113)에 저장된 공개 키를 이용하여 검증된다. 디지털 서명(758b)이 유효한 경우, 제1 업데이트 부트 로더(751b)는 제1 부트 로더(141b)가 저장된 위치에 중복 기입될 수 있다.
제2 업데이트 부트 로더(761b)에 포함된 업데이트된 디지털 서명(768b)은 업데이트된 공개 키(755b), 즉 제1 부트 로더(141b)의 공개 키(145b)를 이용하여 검증될 수 있다. 디지털 서명(768b)이 유효한 경우, 제2 업데이트 부트 로더(761b)는 제2 부트 로더(151b)가 저장된 위치에 중복 기입될 수 있다. 제2 업데이트 부트 로더(761b)가 외부 비휘발성 메모리(140b)에 저장된 후, 고유 키 저장부(112)에 저장된 고유 키 및 제2 업데이트 부트 로더(761b)의 실행 이미지(762b)를 이용하여 메시지 인증 코드(159b)가 생성된다. 생성된 메시지 인증 코드(159b)는 외부 비휘발성 메모리(140b)에 저장된 제2 업데이트 부트 로더(761b), 즉 제2 부트 로더(151b)에 기입된다. 이에 따라, 시스템 마다 고유한 고유 키를 이용하여 검증되는 부트 이미지가 업데이트될 수 있고, 공개 키(145b) 및 디지털 서명(158b)이 용이하고 안전하게 업데이트될 수 있다.
도 14는 본 발명의 또 다른 실시예에 따른 보안 부팅을 수행하는 시스템을 나타내는 블록도이고, 도 15a 및 도 15b는 본 발명의 또 다른 실시예에 따른 보안 부팅 방법을 나타내는 순서도이다.
도 14, 도 15a 및 도 15b를 참조하면, 시스템(100c)은 집적 회로(110) 및 외부 비휘발성 메모리(140c)를 포함한다. 외부 비휘발성 메모리(140c)에 저장된 부트 이미지는, 도 1의 부트 이미지에 비하여, 용도 정보들(146c, 156c, 166c) 및 용도 검증 코드들(157c, 167c)를 더 포함할 수 있다.
보안 부팅 방법에서, 내부 비휘발성 메모리(120)에 저장된 초기 부트 로더(121)가 실행된다(S810). 초기 부트 로더(121)는 외부 비휘발성 메모리(140c)에 저장된 제1 부트 로더(141c)를 로딩하고, 공개 키 저장부(113)에 저장된 공개 키를 이용하여 제1 부트 로더(141c)에 포함된 제1 디지털 서명(148c)을 검증한다(S811). 제1 디지털 서명(148c)이 유효하지 않은 경우(S812: 아니오), 보안 부팅 및 시스템(100c)이 종료된다(S850).
제1 디지털 서명(148c)이 유효한 경우(S812: 예), 제1 부트 로더(141c)가 실행된다(S820). 제1 부트 로더(141c)의 제1 실행 이미지(142c)는 제2 부트 로더(151c)를 로딩하고, 제1 실행 이미지(142c)에 포함된 MAC 검증 코드(144c)는 고유 키 저장부(112)에 저장된 고유 키를 이용하여 제2 부트 로더(151c)에 포함된 제1 메시지 인증 코드(159c)를 검증한다(S821). 제1 메시지 인증 코드(159c)가 유효하지 않은 경우(S822: 아니오), 보안 부팅 및 시스템(100c)이 종료된다(S850). 또한, 제1 메시지 인증 코드(159c)가 유효한 경우(S822: 예), 제1 실행 이미지(142c)에 포함된 서명 검증 코드(143c)는 상기 공개 키를 이용하여 제2 부트 로더(151c)에 포함된 제2 디지털 서명(158c)을 검증한다(S823). 제2 디지털 서명(158c)이 유효하지 않은 경우(S824: 아니오), 보안 부팅 및 시스템(100c)이 종료된다(S850).
제2 디지털 서명(158c)이 유효한 경우(S824: 예), 제2 부트 로더(151c)가 실행된다(S830). 제2 실행 이미지(152c)에 포함된 용도 검증 코드(157c)는 제1 부트 로더(141c)에 포함된 제1 용도 정보(146c)와 제2 부트 로더(151c)에 포함된 제2 용도 정보(156c)를 비교한다(S831). 예를 들어, 용도 정보들(146c, 156c, 166c) 각각은 부트 로더(141c, 151c) 또는 커널(161c)이 개발용, 양산용 또는 실행용 중 어느 용도인지를 나타내는 정보를 포함할 수 있다. 제1 용도 정보(146c)와 제2 용도 정보(156c)가 일치하지 않는 경우(S832: 아니오), 보안 부팅 및 시스템(100c)이 종료된다(S850).
제1 용도 정보(146c)와 제2 용도 정보(156c)가 일치하는 경우(S832: 예), 제2 부트 로더(151c)의 제2 실행 이미지(152c)는 커널(161c)을 로딩하고, 제2 실행 이미지(152c)에 포함된 MAC 검증 코드(154c)는 상기 고유 키를 이용하여 커널(161c)에 포함된 제2 메시지 인증 코드(169c)를 검증한다(S833). 제2 메시지 인증 코드(169c)가 유효하지 않은 경우(S834: 아니오), 보안 부팅 및 시스템(100c)이 종료된다(S850). 또한, 제2 메시지 인증 코드(169c)가 유효한 경우(S834: 예), 제2 실행 이미지(152c)에 포함된 서명 검증 코드(153c)는 상기 공개 키를 이용하여 커널(161c)에 포함된 제3 디지털 서명(168c)을 검증한다(S835). 제3 디지털 서명(168c)이 유효하지 않은 경우(S836: 아니오), 보안 부팅 및 시스템(100c)이 종료된다(S850).
제3 디지털 서명(168c)이 유효한 경우(S836: 예), 커널(161c)이 실행된다(S840). 제3 실행 이미지(162c)에 포함된 용도 검증 코드(167c)는 제2 부트 로더(151c)에 포함된 제2 용도 정보(156c)와 커널(161c)에 포함된 제3 용도 정보(166c)를 비교한다(S841). 제2 용도 정보(156c)와 제3 용도 정보(166c)가 일치하지 않는 경우(S842: 아니오), 보안 부팅 및 시스템(100c)이 종료된다(S850). 제2 용도 정보(156c)와 제3 용도 정보(166c)가 일치하는 경우(S842: 예), 커널(161c)이 계속하여 실행되고, 보안 부팅이 완료되며, 시스템(100c)이 정상적으로 구동할 수 있다.
상술한 바와 같이, 본 발명의 또 다른 실시예에 따른 보안 부팅 방법은, 메시지 인증 코드(159c, 169c)가 각 시스템마다 고유한 고유 키를 이용하여 검증됨으로써, 인증되지 않거나 복제된 부트 이미지에 의한 부팅을 방지할 수 있다. 또한, 본 발명의 또 다른 실시예에 따른 보안 부팅 방법에서, 부트 이미지에 포함된 부트 로더들(141c, 151c) 및 커널(161c)의 용도 정보들(146c, 157c, 167c)이 일치하는 경우 보안 부팅이 수행됨으로써, 개발용 또는 양산용 부트 이미지의 일부 또는 전부가 유출되더라도 유출된 부트 이미지에 의한 부팅을 방지할 수 있다.
도 16은 본 발명의 또 다른 실시예에 따른 보안 부팅을 수행하는 시스템을 나타내는 블록도이다.
도 16을 참조하면, 시스템(100d)은 집적 회로(110) 및 외부 비휘발성 메모리(140d)를 포함한다. 외부 비휘발성 메모리(140d)에 저장된 부트 이미지는, 도 1의 부트 이미지에 비하여, 빌드 넘버들(150d, 160d, 170d)을 더 포함할 수 있다.
제1 부트 로더(141d)는 제1 실행 이미지(142d) 및 제1 디지털 서명(148d)를 포함하고, 제1 실행 이미지(142d)는 서명 검증 코드(143d), MAC 검증 코드(144d) 및 제1 부트 로더(141d)의 버전 정보를 나타내는 제1 빌드 넘버(150d)를 포함한다. 제2 부트 로더(151d)는 제2 실행 이미지(152d), 제2 디지털 서명(158d), 및 제1 메시지 인증 코드(159d)를 포함하고, 제2 실행 이미지(152d)는 서명 검증 코드(153d), MAC 검증 코드(154d) 및 제2 부트 로더(151d)의 버전 정보를 나타내는 제2 빌드 넘버(160d)를 포함한다. 커널(161d)은 제3 실행 이미지(162d), 제3 디지털 서명(168d), 및 제2 메시지 인증 코드(169d)를 포함하고, 제3 실행 이미지(162d)는 커널(161d)의 버전 정보를 나타내는 제3 빌드 넘버(170d)를 포함한다.
본 발명의 또 다른 실시예에 따른 시스템(100d)에서, 제1 부트 로더(141d), 제2 부트 로더(151d) 및 커널(161d)은 제1 빌드 넘버(150d), 제2 빌드 넘버(160d) 및 제3 빌드 넘버(170d)를 각각 이용하여 업데이트될 수 있다. 이에 따라, 이전 버전의 부트 이미지로 업데이트되는 것이 방지될 수 있다.
도 17은 본 발명의 또 다른 실시예에 따른 부트 이미지를 업데이트하는 방법을 설명하기 위한 블록도이다.
도 17에는 부트 이미지 중 제2 부트 로더(151d)가 업데이트되는 예가 도시되어 있다. 도 17을 참조하면, 호스트(미도시)로부터 외부 휘발성 메모리(130)에 업데이트 부트 로더(251d)가 다운로드 될 수 있다. 예를 들어, 업데이트 부트 로더(251d)는 USB, 이더넷 망, 또는 3G 망을 통하여 다운로드 될 수 있다.
업데이트 부트 로더(251d)는 실행 이미지(252d), 업데이트 부트 로더(251d)의 버전 정보를 나타내는 빌드 넘버(260d), 디지털 서명(258d), 및 메시지 인증 코드(159d)가 기입될 위치에 무의미한 데이터(259d)를 포함할 수 있다. 업데이트 부트 로더(251d)에 포함된 디지털 서명(258d)은 공개 키 저장부(113)에 저장된 공개 키를 이용하여 검증된다. 디지털 서명(258d)이 유효한 경우, 업데이트 부트 로더(251d)에 포함된 빌드 넘버(260d)가 외부 비휘발성 메모리(140d)에 저장된 제2 부트 로더(152d)에 포함된 빌드 넘버(160d)와 비교된다. 업데이트 부트 로더(251d)에 포함된 빌드 넘버(260d)가 제2 부트 로더(152d)에 포함된 빌드 넘버(160d) 보다 높은 경우, 외부 휘발성 메모리(130)에 저장된 업데이트 부트 로더(251d)가 외부 비휘발성 메모리(140d)에 제2 부트 로더(151d)가 저장된 위치에 중복 기입될 수 있다. 업데이트 부트 로더(251d)가 외부 비휘발성 메모리(140d)에 저장된 후, 고유 키 저장부(112)에 저장된 고유 키 및 업데이트 부트 로더(251d)의 실행 이미지(252d)를 이용하여 생성된 메시지 인증 코드(159d)가 외부 비휘발성 메모리(140d)에 저장된 업데이트 부트 로더(251d), 즉 제2 부트 로더(151d)에 기입된다. 이에 따라, 부트 이미지가 버전 정보를 이용하여 안전하게 업데이트될 수 있다.
도 18은 본 발명이 모바일 시스템에 응용된 예를 나타내는 도면이다.
도 18을 참조하면, 모바일 시스템(900)은 어플리케이션 프로세서(910), 연결(connectivity)부(920), 휘발성 메모리(930), 비휘발성 메모리(940), 사용자 인터페이스(950) 및 파워 서플라이(960)를 포함한다. 실시예에 따라, 모바일 시스템(900)은 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 개인 정보 단말기(Personal Digital Assistant; PDA), 휴대형 멀티미디어 플레이어(Portable Multimedia Player; PMP), 디지털 카메라(Digital Camera), 음악 재생기(Music Player), 휴대용 게임 콘솔(Portable Game Console), 네비게이션(Navigation) 시스템 등과 같은 임의의 모바일 시스템일 수 있다.
어플리케이션 프로세서(910)는 인터넷 브라우저, 게임, 동영상 등을 제공하는 어플리케이션들을 실행할 수 있다. 어플리케이션 프로세서(910)는 각 모바일 시스템마다 고유한 고유 키(911)를 저장한다. 또한, 어플리케이션 프로세서(910)는, 비휘발성 메모리(940)에 저장된 부트 이미지를 실행할 때, 고유 키(911)를 이용하여 상기 부트 이미지에 포함된 메시지 인증 코드를 검증한다. 이에 따라, 상기 부트 이미지의 비밀성 및 무결성이 확보되고, 모바일 시스템(900)은 인증된 부트 이미지를 통한 보안 부팅을 수행할 수 있다. 실시예에 따라, 어플리케이션 프로세서(910)는 내부 및/또는 외부에 위치한 캐시 메모리(Cache Memory)와 연결될 수 있다.
연결부(920)는 외부 장치와 통신을 수행할 수 있다. 예를 들어, 연결부(920)는 범용 직렬 버스(Universal Serial Bus; USB) 통신, 이더넷(Ethernet) 통신, 근거리 자기장 통신(Near Field Communication; NFC), 무선 식별(Radio Frequency Identification; RFID) 통신, 이동 통신(Mobile Telecommunication), 메모리 카드 통신 등을 수행할 수 있다.
휘발성 메모리(930)는 어플리케이션 프로세서(910)에 의해 처리되는 데이터를 저장하거나, 동작 메모리(Working Memory)로서 작동할 수 있다. 예를 들어, 휘발성 메모리(930)는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), 모바일 DRAM 또는 이와 유사한 메모리로 구현될 수 있다.
비휘발성 메모리(940)는 모바일 시스템(900)을 부팅하기 위한 부트 이미지를 저장할 수 있다. 상기 부트 이미지는 디지털 서명뿐만 아니라 메시지 인증 코드를 포함할 수 있다. 상기 디지털 서명은 공개 키를 이용하여 검증되고, 상기 메시지 인증 코드는 고유 키(911)를 이용하여 검증될 수 있다. 실시예에 따라, 상기 부트 이미지는 상기 공개 키의 용이한 업데이트를 위한 업데이트된 공개 키, 유출된 개발용 또는 양산용 부트 이미지에 의한 부팅 방지를 위한 용도 정보, 및/또는 이전 버전으로의 업데이트 방지를 위한 빌드 넘버를 더 포함할 수 있다. 예를 들어, 비휘발성 메모리(940)는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(Flash Memory), 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) 또는 이와 유사한 메모리로 구현될 수 있다.
사용자 인터페이스(950)는 키패드, 터치 스크린과 같은 하나 이상의 입력 장치, 및/또는 스피커, 디스플레이 장치와 같은 하나 이상의 출력 장치를 포함할 수 있다. 파워 서플라이(960)는 모바일 시스템(900)의 동작 전압을 공급할 수 있다. 또한, 실시예에 따라, 모바일 시스템(900)은 카메라 이미지 프로세서(Camera Image Processor; CIS), 베이스밴드 칩 셋(baseband chipset)과 같은 모뎀 등을 더 포함할 수 있다. 예를 들어, 상기 모뎀은 GSM, GPRS, WCDMA, HSxPA 등의 통신을 지원하는 모뎀 프로세서일 수 있다.
모바일 시스템(900) 또는 모바일 시스템(900)의 구성요소들은 다양한 형태들의 패키지를 이용하여 실장될 수 있는데, 예를 들어, PoP(Package on Package), BGAs(Ball grid arrays), CSPs(Chip scale packages), PLCC(Plastic Leaded Chip Carrier), PDIP(Plastic Dual In-Line Package), Die in Waffle Pack, Die in Wafer Form, COB(Chip On Board), CERDIP(Ceramic Dual In-Line Package), MQFP(Plastic Metric Quad Flat Pack), TQFP(Thin Quad Flat-Pack), SOIC(Small Outline Integrated Circuit), SSOP(Shrink Small Outline Package), TSOP(Thin Small Outline Package), TQFP(Thin Quad Flat-Pack), SIP(System In Package), MCP(Multi Chip Package), WFP(Wafer-level Fabricated Package), WSP(Wafer-Level Processed Stack Package) 등과 같은 패키지들을 이용하여 실장될 수 있다.
도 19는 본 발명이 컴퓨팅 시스템에 응용된 예를 나타내는 도면이다.
도 19를 참조하면, 컴퓨팅 시스템(1000)은 프로세서(1010), 입출력 허브(1020), 입출력 컨트롤러 허브(1030), 적어도 하나의 메모리 모듈(1040), 그래픽 카드(1050) 및 바이오스(Basic Input Output System; BIOS) 메모리(1060)를 포함한다. 실시예에 따라, 컴퓨팅 시스템(1000)은 개인용 컴퓨터(Personal Computer; PC), 서버 컴퓨터(Server Computer), 워크스테이션(Workstation), 노트북(Laptop), 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 개인 정보 단말기(personal digital assistant; PDA), 휴대형 멀티미디어 플레이어(portable multimedia player; PMP), 디지털 카메라(Digital Camera), 디지털 TV(Digital Television), 셋-탑 박스(Set-Top Box), 음악 재생기(Music Player), 휴대용 게임 콘솔(portable game console), 네비게이션(Navigation) 시스템 등과 같은 임의의 컴퓨팅 시스템일 수 있다.
프로세서(1010)는 특정 계산들 또는 태스크들을 실행하는 특정 소프트웨어를 실행하는 것과 같이 다양한 컴퓨팅 기능들을 실행할 수 있다. 예를 들어, 프로세서(1010)는 마이크로프로세서 또는 중앙 처리 장치(Central Processing Unit; CPU)일 수 있다. 프로세서(1010)는 각 컴퓨팅 시스템마다 고유한 고유 키(1011)를 저장한다. 또한, 프로세서(1010)는, 바이오스 메모리(1060)에 저장된 부트 이미지를 실행할 때, 고유 키(1011)를 이용하여 상기 부트 이미지에 포함된 메시지 인증 코드를 검증한다. 이에 따라, 상기 부트 이미지의 비밀성 및 무결성이 확보되고, 컴퓨팅 시스템(1000)은 인증된 부트 이미지를 통한 보안 부팅을 수행할 수 있다. 실시예에 따라, 프로세서(1010)는 하나의 프로세서 코어를 포함하거나, 복수의 프로세서 코어들을 포함할 수 있다. 예를 들어, 프로세서(1010)는 듀얼 코어(Dual-Core), 쿼드 코어(Quad-Core), 헥사 코어(Hexa-Core) 등의 멀티 코어(Multi-Core)를 포함할 수 있다. 또한, 도 19에는 하나의 프로세서(1010)를 포함하는 컴퓨팅 시스템(1000)이 도시되어 있으나, 실시예에 따라, 컴퓨팅 시스템(1000)은 복수의 프로세서들을 포함할 수 있다.
프로세서(1010)는 메모리 모듈(1040)의 동작을 제어하는 메모리 컨트롤러(미도시)를 포함할 수 있다. 프로세서(1010)에 포함된 메모리 컨트롤러는 집적 메모리 컨트롤러(Integrated Memory Controller; IMC)라 불릴 수 있다. 상기 메모리 컨트롤러와 메모리 모듈(1040) 사이의 메모리 인터페이스는 복수의 신호선들을 포함하는 하나의 채널로 구현되거나, 복수의 채널들로 구현될 수 있다. 또한, 각 채널에는 하나 이상의 메모리 모듈(1040)이 연결될 수 있다. 실시예에 따라, 메모리 컨트롤러는 입출력 허브(1020) 내에 위치할 수 있다. 상기 메모리 컨트롤러를 포함하는 입출력 허브(1020)는 메모리 컨트롤러 허브(Memory Controller Hub; MCH)라 불릴 수 있다.
입출력 허브(1020)는 그래픽 카드(1050)와 같은 장치들과 프로세서(1010) 사이의 데이터 전송을 관리할 수 있다. 입출력 허브(1020)는 다양한 방식의 인터페이스를 통하여 프로세서(1010)에 연결될 수 있다. 예를 들어, 입출력 허브(1020)와 프로세서(1010)는, 프론트 사이드 버스(Front Side Bus; FSB), 시스템 버스(System Bus), 하이퍼트랜스포트(HyperTransport), 라이트닝 데이터 트랜스포트(Lightning Data Transport; LDT), 퀵패스 인터커넥트(QuickPath Interconnect; QPI), 공통 시스템 인터페이스(Common System Interface; CSI) 등의 다양한 표준의 인터페이스로 연결될 수 있다. 도 19에는 하나의 입출력 허브(1020)를 포함하는 컴퓨팅 시스템(1000)이 도시되어 있으나, 실시예에 따라, 컴퓨팅 시스템(1000)은 복수의 입출력 허브들을 포함할 수 있다.
입출력 허브(1020)는 장치들과의 다양한 인터페이스들을 제공할 수 있다. 예를 들어, 입출력 허브(1020)는 가속 그래픽 포트(Accelerated Graphics Port; AGP) 인터페이스, 주변 구성요소 인터페이스-익스프레스(Peripheral Component Interface-Express; PCIe), 통신 스트리밍 구조(Communications Streaming Architecture; CSA) 인터페이스 등을 제공할 수 있다.
그래픽 카드(1050)는 AGP 또는 PCIe를 통하여 입출력 허브(1020)와 연결될 수 있다. 그래픽 카드(1050)는 영상을 표시하기 위한 디스플레이 장치(미도시)를 제어할 수 있다. 그래픽 카드(1050)는 이미지 데이터 처리를 위한 내부 프로세서 및 메모리를 포함할 수 있다. 실시예에 따라, 입출력 허브(1020)는, 입출력 허브(1020)의 외부에 위치한 그래픽 카드(1050)와 함께, 또는 그래픽 카드(1050) 대신에 입출력 허브(1020)의 내부에 그래픽 장치를 포함할 수 있다. 입출력 허브(1020)에 포함된 그래픽 장치는 집적 그래픽(Integrated Graphics)이라 불릴 수 있다. 또한, 메모리 컨트롤러 및 그래픽 장치를 포함하는 입출력 허브(1020)는 그래픽 및 메모리 컨트롤러 허브(Graphics and Memory Controller Hub; GMCH)라 불릴 수 있다.
입출력 컨트롤러 허브(1030)는 다양한 시스템 인터페이스들이 효율적으로 동작하도록 데이터 버퍼링 및 인터페이스 중재를 수행할 수 있다. 입출력 컨트롤러 허브(1030)는 내부 버스를 통하여 입출력 허브(1020)와 연결될 수 있다. 예를 들어, 입출력 허브(1020)와 입출력 컨트롤러 허브(1030)는 다이렉트 미디어 인터페이스(Direct Media Interface; DMI), 허브 인터페이스, 엔터프라이즈 사우스브릿지 인터페이스(Enterprise Southbridge Interface; ESI), PCIe 등을 통하여 연결될 수 있다.
입출력 컨트롤러 허브(1030)는 주변 장치들과의 다양한 인터페이스들을 제공할 수 있다. 예를 들어, 입출력 컨트롤러 허브(1030)는 범용 직렬 버스(Universal Serial Bus; USB) 포트, 직렬 ATA(Serial Advanced Technology Attachment; SATA) 포트, 범용 입출력(General Purpose Input/Output; GPIO), 로우 핀 카운트(Low Pin Count; LPC) 버스, 직렬 주변 인터페이스(Serial Peripheral Interface; SPI), PCI, PCIe 등을 제공할 수 있다.
바이오스 메모리(1060)는 직렬 주변 인터페이스(SPI) 또는 상기 LPC 버스를 통하여 입출력 컨트롤러 허브(1030)와 연결될 수 있다. 바이오스 메모리(1060)는 컴퓨팅 시스템(1000)을 부팅하기 위한 부트 이미지를 저장할 수 있다. 상기 부트 이미지는 디지털 서명뿐만 아니라 메시지 인증 코드를 포함할 수 있다. 상기 디지털 서명은 공개 키를 이용하여 검증되고, 상기 메시지 인증 코드는 고유 키(1011)를 이용하여 검증될 수 있다. 실시예에 따라, 상기 부트 이미지는 상기 공개 키의 용이한 업데이트를 위한 업데이트된 공개 키, 유출된 개발용 또는 양산용 부트 이미지에 의한 부팅 방지를 위한 용도 정보, 및/또는 이전 버전으로의 업데이트 방지를 위한 빌드 넘버를 더 포함할 수 있다.
실시예에 따라, 프로세서(1010), 입출력 허브(1020) 및 입출력 컨트롤러 허브(1030)는 각각 분리된 칩셋들 또는 집적 회로들로 구현되거나, 프로세서(1010), 입출력 허브(1020) 또는 입출력 컨트롤러 허브(1030) 중 2 이상의 구성요소들이 하나의 칩셋으로 구현될 수 있다.
본 발명은 임의의 모바일 시스템 또는 컴퓨팅 시스템에 적용될 수 있다. 예를 들어, 본 발명은 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 개인 정보 단말기(personal digital assistant; PDA), 휴대형 멀티미디어 플레이어(portable multimedia player; PMP), 디지털 카메라(Digital Camera), 개인용 컴퓨터(Personal Computer; PC), 서버 컴퓨터(Server Computer), 워크스테이션(Workstation), 노트북(Laptop), 디지털 TV(Digital Television), 셋-탑 박스(Set-Top Box), 음악 재생기(Music Player), 휴대용 게임 콘솔(Portable Game Console), 네비게이션(Navigation) 시스템 등에 적용될 수 있다.
상기에서는 본 발명의 실시예들을 참조하여 설명하였지만, 해당 기술분야에서 통상의 지식을 가진 자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.
100a, 100b, 100c, 100d: 시스템
110: 집적 회로
112: 고유 키 저장부
113: 공개 키 저장부
120: 내부 비휘발성 메모리
121: 초기 부트 로더
140a, 140b, 140c, 140d: 외부 비휘발성 메모리
141a, 141b, 141c, 141d: 제1 부트 로더
151a, 151b, 151c, 151d: 제2 부트 로더
161a, 161b, 161c, 161d: 커널

Claims (10)

  1. 초기 부트 로더가 공개 키를 이용하여 제1 부트 로더에 포함된 제1 디지털 서명을 검증하는 단계;
    상기 제1 디지털 서명이 유효한 경우, 상기 제1 부트 로더를 실행하는 단계;
    상기 제1 부트 로더가 고유 키를 이용하여 상기 제2 부트 로더에 포함된 제1 메시지 인증 코드를 검증하는 단계; 및
    상기 제1 메시지 인증 코드가 유효한 경우, 상기 제2 부트 로더를 실행하는 단계를 포함하는 보안 부팅 방법.
  2. 제1 항에 있어서, 상기 제1 디지털 서명을 검증하는 단계는,
    공개 키 저장부로부터 상기 공개 키를 독출하는 단계; 및
    상기 독출된 공개 키를 이용하여 상기 제1 디지털 서명을 검증함으로써 상기 제1 부트 로더에 포함된 실행 이미지의 무결성을 확인하는 단계를 포함하는 것을 특징으로 하는 보안 부팅 방법.
  3. 제1 항에 있어서, 상기 제1 메시지 인증 코드를 검증하는 단계는,
    고유 키 저장부로부터 상기 고유 키를 독출하는 단계;
    상기 독출된 고유 키 및 상기 제2 부트 로더에 포함된 실행 이미지를 이용하여 메시지 인증 코드를 생성하는 단계; 및
    상기 제1 메시지 인증 코드와 상기 생성된 메시지 인증 코드를 비교하는 단계를 포함하는 보안 부팅 방법.
  4. 제1 항에 있어서,
    공개 키 저장부로부터 상기 공개 키를 독출하는 단계; 및
    상기 독출된 공개 키를 이용하여 상기 제2 부트 로더에 포함된 제2 디지털 서명을 검증하는 단계를 더 포함하고,
    상기 제2 부트 로더는, 상기 제1 메시지 인증 코드 및 상기 제2 디지털 서명이 유효한 경우, 실행되는 것을 특징으로 하는 보안 부팅 방법.
  5. 제1 항에 있어서,
    상기 제1 부트 로더에 포함된 공개 키를 이용하여 상기 제2 부트 로더에 포함된 제2 디지털 서명을 검증하는 단계를 더 포함하고,
    상기 제2 부트 로더는, 상기 제1 메시지 인증 코드 및 상기 제2 디지털 서명이 유효한 경우, 실행되는 것을 특징으로 하는 보안 부팅 방법.
  6. 제1 항에 있어서,
    상기 제2 부트 로더가 상기 제1 부트 로더에 포함된 제1 용도 정보와 상기 제2 부트 로더에 포함된 제2 용도 정보를 비교하는 단계; 및
    상기 제1 용도 정보와 상기 제2 용도 정보가 일치하지 않는 경우, 부팅을 종료하는 단계를 더 포함하는 것을 특징으로 하는 보안 부팅 방법.
  7. 제1 항에 있어서,
    비휘발성 메모리에 저장된 상기 제2 부트 로더에 포함된 제1 빌드 넘버와 휘발성 메모리에 저장된 업데이트 부트 로더에 포함된 제2 빌드 넘버를 비교하는 단계;
    상기 제2 빌드 넘버가 상기 제1 빌드 넘버보다 높은 경우, 상기 비휘발성 메모리에 상기 제2 부트 로더가 저장된 위치에 상기 업데이트 부트 로더를 중복 기입(overwrite)하는 단계;
    상기 고유 키 및 상기 업데이트 부트 로더에 포함된 실행 이미지를 이용하여 메시지 인증 코드를 생성하는 단계; 및
    상기 생성된 메시지 인증 코드를 상기 제1 메시지 인증 코드로서 상기 비휘발성 메모리에 저장된 상기 업데이트 부트 로더에 기입하는 단계를 포함하는 것을 특징으로 하는 보안 부팅 방법.
  8. 제1 항에 있어서,
    상기 제2 부트 로더가 상기 고유 키를 이용하여 커널에 포함된 제2 메시지 인증 코드를 검증하는 단계; 및
    상기 제2 메시지 인증 코드가 유효한 경우, 상기 커널을 실행하는 단계를 더 포함하는 것을 특징으로 하는 보안 부팅 방법.
  9. 보안 부팅을 수행하는 시스템의 보안 부트 이미지 생성 방법에 있어서,
    상기 시스템에 포함된 비휘발성 메모리에 양산용 부트 이미지 및 예비 부트 이미지를 기입하는 단계;
    초기 부트 로더가 공개 키를 이용하여 상기 양산용 부트 이미지에 포함된 디지털 서명을 검증하는 단계;
    상기 디지털 서명이 유효한 경우, 상기 양산용 부트 이미지를 실행하는 단계;
    상기 양산용 부트 이미지가 인증을 요청하는 단계; 및
    상기 인증이 성공한 경우, 고유 키를 이용하여 생성된 메시지 인증 코드 및 상기 예비 부트 이미지에 기초하여 실행용 부트 이미지를 생성하는 단계를 포함하는 보안 부트 이미지 생성 방법.
  10. 제9 항에 있어서, 상기 예비 부트 이미지는 제1 예비 부트 로더, 제2 예비 부트 로더 및 예비 커널을 포함하고, 상기 실행용 부트 이미지를 생성하는 단계는,
    상기 비휘발성 메모리에서 상기 양산용 부트 이미지를 삭제하는 단계;
    상기 제1 예비 부트 로더, 상기 제2 예비 부트 로더 및 상기 예비 커널을 제1 부트 로더, 제2 부트 로더 및 커널로서 상기 제1 부트 로더, 상기 제2 부트 로더 및 상기 커널에 상응하는 위치들에 각각 기입하는 단계; 및
    상기 제2 부트 로더 및 상기 커널에 제1 메시지 인증 코드 및 제2 메시지 인증 코드를 각각 기입하는 단계를 포함하는 것을 특징으로 하는 보안 부트 이미지 생성 방법.
KR1020110012119A 2011-02-11 2011-02-11 보안 부팅 방법 및 보안 부트 이미지 생성 방법 KR20120092222A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110012119A KR20120092222A (ko) 2011-02-11 2011-02-11 보안 부팅 방법 및 보안 부트 이미지 생성 방법
US13/279,512 US8914627B2 (en) 2011-02-11 2011-10-24 Method for generating a secured boot image including an update boot loader for a secured update of the version information

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110012119A KR20120092222A (ko) 2011-02-11 2011-02-11 보안 부팅 방법 및 보안 부트 이미지 생성 방법

Publications (1)

Publication Number Publication Date
KR20120092222A true KR20120092222A (ko) 2012-08-21

Family

ID=46637818

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110012119A KR20120092222A (ko) 2011-02-11 2011-02-11 보안 부팅 방법 및 보안 부트 이미지 생성 방법

Country Status (2)

Country Link
US (1) US8914627B2 (ko)
KR (1) KR20120092222A (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101678793B1 (ko) * 2015-10-07 2016-11-22 (주)에이티솔루션즈 보안운영체제를 통한 앱 무결성 검증 방법
KR20180007922A (ko) * 2016-07-14 2018-01-24 경희대학교 산학협력단 Tpm 기반의 사용자 장치 및 이를 이용한 부팅 방법
WO2018084434A1 (ko) * 2016-11-03 2018-05-11 시큐리티플랫폼 주식회사 서명된 공개 키를 이용한 시큐어 부트 방법
KR20190036779A (ko) 2017-09-28 2019-04-05 경희대학교 산학협력단 보안 펌웨어 업데이트 방법 및 시스템
KR20200068345A (ko) * 2018-12-05 2020-06-15 삼성전자주식회사 임베디드 시스템의 부트 롬 업데이트 방법 및 부팅 방법
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 (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8464038B2 (en) 2009-10-13 2013-06-11 Google Inc. Computing device with developer mode
US10394570B2 (en) 2010-02-26 2019-08-27 Hp Printing Korea Co., Ltd. Method of generating boot image for fast booting and image forming apparatus for performing the method, and method of performing fast booting and image forming apparatus for performing the method
US9064118B1 (en) * 2012-03-16 2015-06-23 Google Inc. Indicating whether a system has booted up from an untrusted image
CN103427987B (zh) * 2012-05-25 2016-05-18 纬创资通股份有限公司 数据加密的方法、数据验证方法及电子装置
KR101959359B1 (ko) * 2012-11-06 2019-03-18 에이치피프린팅코리아 유한회사 빠른 부팅을 위한 부트 이미지를 업데이트하는 방법 및 이를 수행하는 화상형성장치
US9323932B2 (en) * 2012-12-19 2016-04-26 Advanced Micro Devices, Inc. Protecting memory contents during boot process
US9230112B1 (en) 2013-02-23 2016-01-05 Xilinx, Inc. Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis
WO2014160375A1 (en) * 2013-03-14 2014-10-02 Microchip Technology Incorporated Boot sequencing for multi boot devices
US9336010B2 (en) 2013-03-15 2016-05-10 Xilinx, Inc. Multi-boot or fallback boot of a system-on-chip using a file-based boot device
US9165143B1 (en) 2013-03-15 2015-10-20 Xilinx, Inc. Image file generation and loading
WO2014178814A2 (en) * 2013-04-29 2014-11-06 Hewlett-Packard Development Company, L.P. Non-volatile memory to store resettable data
WO2014190486A1 (zh) * 2013-05-28 2014-12-04 华为技术有限公司 支持多核架构下资源隔离的方法及系统
US9953166B2 (en) * 2013-07-04 2018-04-24 Microsemi SoC Corporation Method for securely booting target processor in target system using a secure root of trust to verify a returned message authentication code recreated by the target processor
KR20150008546A (ko) * 2013-07-15 2015-01-23 삼성전자주식회사 보안 다운로드 및 기능 실행방법 및 장치
US9152794B1 (en) * 2013-09-05 2015-10-06 Xilinx, Inc. Secure key handling for authentication of software for a system-on-chip
FR3010553B1 (fr) * 2013-09-10 2015-09-04 Sagemcom Broadband Sas Procede de mise a jour d'un logiciel de demarrage d'un dispositif multiprocesseur
US9411688B1 (en) 2013-12-11 2016-08-09 Xilinx, Inc. System and method for searching multiple boot devices for boot images
US9755831B2 (en) 2014-01-22 2017-09-05 Qualcomm Incorporated Key extraction during secure boot
US20150242620A1 (en) 2014-02-27 2015-08-27 Microsemi SoC Corporation Methods for controlling the use of intellectual property in individual integrated circuit devices
US20150286823A1 (en) * 2014-04-07 2015-10-08 Qualcomm Incorporated System and method for boot sequence modification using chip-restricted instructions residing on an external memory device
US9438581B2 (en) * 2014-04-15 2016-09-06 GM Global Technology Operations LLC Authenticating data at a microcontroller using message authentication codes
CN114692167A (zh) 2014-04-15 2022-07-01 麦利尔亚洲新加坡私人有限公司 可信根
US10114369B2 (en) 2014-06-24 2018-10-30 Microsemi SoC Corporation Identifying integrated circuit origin using tooling signature
US9569297B2 (en) 2014-07-16 2017-02-14 Dell Products, Lp Seamless method for booting from a degraded software raid volume on a UEFI system
US10783250B2 (en) 2014-07-24 2020-09-22 Nuvoton Technology Corporation Secured master-mediated transactions between slave devices using bus monitoring
US10353638B2 (en) 2014-11-18 2019-07-16 Microsemi SoC Corporation Security method and apparatus to prevent replay of external memory data to integrated circuits having only one-time programmable non-volatile memory
US10691807B2 (en) * 2015-06-08 2020-06-23 Nuvoton Technology Corporation Secure system boot monitor
US10776527B2 (en) 2015-06-08 2020-09-15 Nuvoton Technology Corporation Security monitoring of SPI flash
US9971659B1 (en) * 2015-06-24 2018-05-15 Western Digital Technologies, Inc. Memory programming providing corruption protection
US9959125B2 (en) * 2015-08-05 2018-05-01 Samsung Electronics Co., Ltd. Field update of boot loader using regular device firmware update procedure
US10191811B2 (en) * 2015-08-13 2019-01-29 Quanta Computer Inc. Dual boot computer system
US9894061B2 (en) 2015-10-16 2018-02-13 International Business Machines Corporation Method for booting and dumping a confidential image on a trusted computer system
KR101703826B1 (ko) * 2015-10-23 2017-02-08 한국전자통신연구원 스마트 기기 대상 비인가 행위 기반 플래시 메모리 내부의 데이터 보호 장치 및 방법
TW201720172A (zh) * 2015-11-30 2017-06-01 Chunghwa Telecom Co Ltd 分散式機上盒更新系統與方法
US9898326B2 (en) 2016-02-23 2018-02-20 Red Hat Israel, Ltd. Securing code loading in a virtual environment
US20170249155A1 (en) * 2016-02-26 2017-08-31 Sandisk Technologies Inc. Memory System and Method for Fast Firmware Download
US10467016B2 (en) * 2016-06-30 2019-11-05 General Electric Company Managing an image boot
KR20180066601A (ko) * 2016-12-09 2018-06-19 삼성전자주식회사 메모리 시스템의 구동 방법
US10992482B2 (en) 2017-01-12 2021-04-27 Google Llc Verified boot and key rotation
US20180204007A1 (en) * 2017-01-13 2018-07-19 Vormetric, Inc. Bootloader level encryption for system boot data
US10747882B2 (en) 2017-03-23 2020-08-18 Dell Products, L.P. System and method for secure boot of an information handling system using verification signature and including verifying applications
WO2018176125A1 (en) * 2017-03-28 2018-10-04 Sierra Wireless, Inc. Method and apparatus for secure computing device start up
EP3382590B1 (en) * 2017-03-31 2019-10-16 OMRON Corporation Method for initializing a computerized system and computerized system against rollback attacks
US10747883B2 (en) * 2017-05-11 2020-08-18 Qualcomm Incorporated Collated multi-image check in system-on-chips
CN108347332A (zh) * 2017-06-06 2018-07-31 清华大学 验证固件签名的方法及装置
US10482010B2 (en) * 2017-06-29 2019-11-19 Intel Corporation Persistent host memory buffer
JP6773000B2 (ja) * 2017-10-26 2020-10-21 京セラドキュメントソリューションズ株式会社 情報処理装置、改ざん検出方法
US10984107B2 (en) * 2018-04-24 2021-04-20 Mellanox Technologies, Ltd. Secure boot
DE102018006208A1 (de) * 2018-08-06 2019-10-02 Giesecke+Devrient Mobile Security Gmbh Chipset, für Endgerät, mit aktualisierbarem Programm
KR102126931B1 (ko) * 2018-11-07 2020-06-25 시큐리티플랫폼 주식회사 시큐어 부팅 장치 및 방법
US11057240B2 (en) 2018-12-20 2021-07-06 Rolls-Royce North American Technologies Inc. Method and process for securing an executable image
TWI756156B (zh) * 2019-04-07 2022-02-21 新唐科技股份有限公司 監控系統開機之安全裝置及其方法
US11170109B2 (en) 2019-04-16 2021-11-09 Nxp Usa, Inc. Boot ROM gating circuit
KR20200130539A (ko) * 2019-05-08 2020-11-19 삼성전자주식회사 강력한 보안 기능을 제공하는 스토리지 장치 및 그 스토리지 장치를 포함하는 전자 장치
US11397816B2 (en) * 2019-07-08 2022-07-26 Dell Products L.P. Authenticated boot to protect storage system data by restricting image deployment
US11436315B2 (en) 2019-08-15 2022-09-06 Nuvoton Technology Corporation Forced self authentication
US20210097184A1 (en) * 2019-09-27 2021-04-01 Advanced Micro Devices, Inc. Secure buffer for bootloader
WO2021087221A1 (en) * 2019-10-30 2021-05-06 Nix John A Secure and flexible boot firmware update for devices with a primary platform
JP7367471B2 (ja) * 2019-11-07 2023-10-24 株式会社リコー 情報処理装置、ファイル保証方法、及びファイル保証プログラム
KR20210089485A (ko) 2020-01-08 2021-07-16 삼성전자주식회사 소프트웨어의 인증을 위한 장치 및 방법
CN113708920A (zh) * 2020-05-22 2021-11-26 华为技术有限公司 一种基于冗余密码算法进行安全启动的方法及设备
US11520940B2 (en) 2020-06-21 2022-12-06 Nuvoton Technology Corporation Secured communication by monitoring bus transactions using selectively delayed clock signal
KR20220026079A (ko) 2020-08-25 2022-03-04 삼성전자주식회사 스토리지 장치
US11741232B2 (en) 2021-02-01 2023-08-29 Mellanox Technologies, Ltd. Secure in-service firmware update
US11720683B2 (en) * 2021-03-04 2023-08-08 Arm Limited Secure boot process for a computer system
US11698971B2 (en) 2021-04-15 2023-07-11 Honeywell International Inc. Secure boot device
DE102021212994B3 (de) * 2021-11-18 2023-04-20 Continental Automotive Technologies GmbH Verfahren zur Erkennung von auf eine Manipulation hindeutenden Anomalien während eines sicheren Startvorgangs einer softwaregesteuerten Vorrichtung
US11570180B1 (en) * 2021-12-23 2023-01-31 Eque Corporation Systems configured for validation with a dynamic cryptographic code and methods thereof
KR20230107044A (ko) * 2022-01-07 2023-07-14 삼성전자주식회사 스토리지 컨트롤러, 스토리지 시스템 및 스토리지 장치의 동작 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5608801A (en) * 1995-11-16 1997-03-04 Bell Communications Research, Inc. Efficient cryptographic hash functions and methods for amplifying the security of hash functions and pseudo-random functions
US6907522B2 (en) 2002-06-07 2005-06-14 Microsoft Corporation Use of hashing in a secure boot loader
JP2005165417A (ja) 2003-11-28 2005-06-23 Toshiba Corp コンピュータ装置の製造方法
TWI263939B (en) * 2004-09-22 2006-10-11 Lite On Technology Corp Dynamic boot system and method, machine readable medium thereof, and construction method for an operating system image
US8554686B2 (en) 2005-06-30 2013-10-08 Advanced Micro Devices, Inc. Anti-hack protection to restrict installation of operating systems and other software
US8254568B2 (en) * 2007-01-07 2012-08-28 Apple Inc. Secure booting a computing device
KR101393307B1 (ko) 2007-07-13 2014-05-12 삼성전자주식회사 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템
US20100122076A1 (en) * 2008-09-30 2010-05-13 Aristocrat Technologies Australia Pty Limited Security method
US8417962B2 (en) * 2010-06-11 2013-04-09 Microsoft Corporation Device booting with an initial protection component

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101678793B1 (ko) * 2015-10-07 2016-11-22 (주)에이티솔루션즈 보안운영체제를 통한 앱 무결성 검증 방법
KR20180007922A (ko) * 2016-07-14 2018-01-24 경희대학교 산학협력단 Tpm 기반의 사용자 장치 및 이를 이용한 부팅 방법
WO2018084434A1 (ko) * 2016-11-03 2018-05-11 시큐리티플랫폼 주식회사 서명된 공개 키를 이용한 시큐어 부트 방법
KR20190036779A (ko) 2017-09-28 2019-04-05 경희대학교 산학협력단 보안 펌웨어 업데이트 방법 및 시스템
KR20200068345A (ko) * 2018-12-05 2020-06-15 삼성전자주식회사 임베디드 시스템의 부트 롬 업데이트 방법 및 부팅 방법
US11755315B2 (en) 2018-12-05 2023-09-12 Samsung Electronics Co., Ltd. Boot ROM update method and boot-up method of embedded system
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

Also Published As

Publication number Publication date
US8914627B2 (en) 2014-12-16
US20120210115A1 (en) 2012-08-16

Similar Documents

Publication Publication Date Title
KR20120092222A (ko) 보안 부팅 방법 및 보안 부트 이미지 생성 방법
US9094190B2 (en) Method of managing key for secure storage of data and apparatus therefor
US11809544B2 (en) Remote attestation for multi-core processor
US10877806B2 (en) Method and apparatus for securely binding a first processor to a second processor
TWI576698B (zh) 跨電源週期維持安全處理環境
TWI447583B (zh) 資料保護方法、記憶體控制器與記憶體儲存裝置
US10943013B2 (en) Maintaining keys for trusted boot code
US10917237B2 (en) Attestable and destructible device identity
JP2014086089A (ja) セキュリティ管理ユニットとそれを含むホストコントローラインターフェース及びその動作方法、並びにホストコントローラインターフェースを含むコンピュータシステム
US20150078550A1 (en) Security processing unit with configurable access control
EP3646224B1 (en) Secure key storage for multi-core processor
TW201818258A (zh) 晶片中非易失性儲存空間的資料儲存方法和可信晶片
US11068599B2 (en) Secure initialization using embedded controller (EC) root of trust
US20230059382A1 (en) Electronic device
JP2018523930A (ja) セキュア計算環境
JP2013037417A (ja) メモリシステム、情報処理装置、メモリ装置、およびメモリシステムの動作方法
US20230188326A1 (en) System on chip, security system, and method of performing authentication
WO2023230834A1 (en) Confidential compute architecture for silicon initialization for ip protection and assurance
EP3797373B1 (en) Ex post facto platform configuration attestation
CN111357003A (zh) 预操作系统环境中的数据保护
KR20230090210A (ko) 시스템 온 칩, 보안 시스템 및 인증을 수행하는 방법

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination