KR102617354B1 - 보안 부트 시퀀서 및 보안 부트 장치 - Google Patents
보안 부트 시퀀서 및 보안 부트 장치 Download PDFInfo
- Publication number
- KR102617354B1 KR102617354B1 KR1020170002028A KR20170002028A KR102617354B1 KR 102617354 B1 KR102617354 B1 KR 102617354B1 KR 1020170002028 A KR1020170002028 A KR 1020170002028A KR 20170002028 A KR20170002028 A KR 20170002028A KR 102617354 B1 KR102617354 B1 KR 102617354B1
- Authority
- KR
- South Korea
- Prior art keywords
- function block
- interface function
- external memory
- accelerator
- secure boot
- Prior art date
Links
- 239000004065 semiconductor Substances 0.000 claims abstract description 45
- 230000006870 function Effects 0.000 claims description 142
- 238000012795 verification Methods 0.000 claims description 17
- 238000000034 method Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 12
- 239000008280 blood Substances 0.000 description 2
- 210000004369 blood Anatomy 0.000 description 2
- 238000013478 data encryption standard Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000036760 body temperature Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003862 health status Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 210000000707 wrist Anatomy 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/16—Constructional details or arrangements
- G06F1/1613—Constructional details or arrangements for portable computers
- G06F1/163—Wearable computers, e.g. on a belt
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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/3239—Cryptographic 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 non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
반도체 시스템의 보안 부팅 동작을 수행하는 보안 부트 장치는 외부 메모리 인터페이스, 제1 내부 메모리, 제2 내부 메모리, 보안 가속기 및 보안 부트 시퀀서를 포함한다. 외부 메모리 인터페이스는 외부 메모리와 인터페이스를 제공한다. 제1 내부 메모리는 외부 메모리에 저장된 부트 이미지를 저장한다. 제2 내부 메모리는 제1 공개키의 해시를 저장한다. 보안 가속기는 제1 공개키의 해시를 이용하여 부트 이미지에 대한 검증을 수행한다. 보안 부트 시퀀서는 복수의 상태들 및 복수의 동작들을 포함하되, 복수의 상태들 간 상태 변환시 복수의 동작들 중 적어도 하나의 동작을 이용하여 외부 메모리 인터페이스, 제1 내부 메모리, 제2 내부 메모리 및 보안 가속기를 제어한다.
Description
본 발명은 반도체 시스템의 부팅 장치에 관한 것이다. 보다 상세하게는, 본 발명은 반도체 시스템의 보안 부팅을 수행하는 보안 부트 시퀀서 및 이를 포함하는 보안 부트 장치에 관한 것이다.
반도체 시스템은 부트 이미지를 실행하여 내부 장치들을 초기화하고, 운영 체제(Operating System; OS)를 로딩하는 부팅 동작을 수행한다. 부팅 이미지의 변조(또는, 인증되지 않은 부트 이미지) 또는 외부로부터의 공격에 의한 비정상적인 부팅을 방지하기 위해, 반도체 시스템은 보안 부팅 동작을 수행할 수 있다. 예를 들어, 반도체 시스템은 시스템 온 칩(System on Chip; SoC) 내부의 프로세서를 이용하여 부트 이미지를 검증하고, 검증에 성공한 경우 반도체 시스템이 부팅 동작을 수행하도록 할 수 있다. 다만, 보안 부팅 동작은 프로세서의 연산 작업을 통해 수행되므로, 과도한 연산 시간이 요구되거나 프로세서 자체의 보안이 요구될 수 있다. 한편, 사물 인터넷(Internet of Things; IoT) 시대가 도래하면서, 사물 인터넷을 구성하기 위한 반도체 시스템의 사용도가 높아지고 있다. 사물 인터넷 장치의 오동작은 사용자의 신체, 생명 등의 피해를 발생시킬 수 있으므로, 반도체 시스템에 대한 보다 높은 보안 수준이 요구된다. 또한, 사물에 삽입되기 위해, 반도체 시스템의 소형화가 요구된다.
본 발명의 일 목적은 반도체 시스템에 대해 보다 높은 보안 수준을 제공하는 보안 부트 장치를 제공하는 것이다.
본 발명의 다른 목적은 반도체 시스템의 소형화를 가능하게 하는 소형화된 보안 부트 시퀀서를 제공하는 것이다.
본 발명의 일 목적을 달성하기 위하여, 본 발명의 실시예들에 따른 보안 부트 장치는 외부 메모리와 인터페이스를 제공하는 외부 메모리 인터페이스, 상기 외부 메모리에 저장된 부트 이미지를 저장하는 제1 내부 메모리, 제1 공개키의 해시를 저장하는 제2 내부 메모리, 상기 제1 공개키의 상기 해시를 이용하여 상기 부트 이미지에 대한 검증을 수행하는 보안 가속기, 및 복수의 상태들 및 복수의 동작들을 포함하되, 복수의 상태들 간 상태 변환시 복수의 동작들 중 적어도 하나의 동작을 이용하여 상기 외부 메모리 인터페이스, 상기 제1 내부 메모리, 상기 제2 내부 메모리 및 상기 보안 가속기를 제어하는 보안 부트 시퀀서를 포함할 수 있다.
본 발명의 다른 목적을 달성하기 위하여, 본 발명의 실시예들에 따른 보안 부트 시퀀서는 버스를 통해 외부 메모리 인터페이스 및 보안 가속기에 연결 될 수 있다. 보안 부트 시퀀서는 상기 외부 메모리 인터페이스를 통해 외부 메모리와 인터페이스 하는 외부 메모리 인터페이스 기능 블록, 상기 보안 가속기를 순차적으로 동작시키는 보안 가속기 인터페이스 기능 블록, 및 상기 외부 메모리 인터페이스 기능 블록과 상기 보안 가속기 인터페이스 기능 블록이 상기 버스를 통해 상호 간에 인터페이스 하도록 하는 버스 인터페이스 기능 블록을 포함할 수 있다. 이 때, 상기 외부 메모리 인터페이스 기능 블록, 상기 보안 가속기 인터페이스 기능 블록 및 상기 버스 인터페이스 기능 블록 각각은 유한 상태 기계로 구현될 수 있다.
본 발명의 실시예들에 따른 보안 부트 장치는 프로세서 대신 유한 상태 기계(finite state machine; FSM)(또는, 하드웨어)로 구현된 보안 부트 시퀀서를 포함함으로써, 프로세서 자체의 보안 위협을 해소할 수 있다.
본 발명의 실시예들에 따른 보안 부트 시퀀스는 프로세서의 동작 주파수를 가변시키는 위상 고정 루프(phase lock loop; PLL)를 배제시킴으로써, 반도체 시스템(예를 들어, 사물 인터넷 장치 등)의 소형화를 가능하게 할 수 있다.
도 1은 본 발명의 실시예들에 따른 보안 부트 장치를 나타내는 블록도이다.
도 2는 도 1의 보안 부트 장치에서 이용되는 부트 이미지의 일 예를 나타내는 도면이다.
도 3은 도 1의 보안 부트 장치에 포함된 보안 부트 시퀀서의 동작의 일 예를 나타내는 도면이다.
도 4는 도 1의 보안 부트 장치에 포함된 보안 부트 시퀀서의 일 예를 나타내는 도면이다.
도 5는 도 4의 보안 부트 시퀀서의 일 예를 나타내는 도면이다.
도 6은 도 1의 보안 부트 장치의 보안 부팅 방법을 나타내는 순서도이다.
도 7a 및 도 7b는 도 1의 보안 부트 장치가 적용된 전자 장치의 일 예를 나타내는 도면이다.
도 2는 도 1의 보안 부트 장치에서 이용되는 부트 이미지의 일 예를 나타내는 도면이다.
도 3은 도 1의 보안 부트 장치에 포함된 보안 부트 시퀀서의 동작의 일 예를 나타내는 도면이다.
도 4는 도 1의 보안 부트 장치에 포함된 보안 부트 시퀀서의 일 예를 나타내는 도면이다.
도 5는 도 4의 보안 부트 시퀀서의 일 예를 나타내는 도면이다.
도 6은 도 1의 보안 부트 장치의 보안 부팅 방법을 나타내는 순서도이다.
도 7a 및 도 7b는 도 1의 보안 부트 장치가 적용된 전자 장치의 일 예를 나타내는 도면이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 보안 부트 장치를 나타내는 블록도이고, 도 2는 도 1의 보안 부트 장치에서 이용되는 부트 이미지의 일 예를 나타내는 도면이다.
도 1 및 도 2를 참조하면, 반도체 시스템(10)은 외부 메모리(11), 프로세서(12), 하드웨어 장치(13) 및 보안 부트 장치(100)를 포함할 수 있다.
외부 메모리(11)는 부트 이미지(200)를 포함할 수 있다. 외부 메모리(11)는 낸드 플래시 메모리(NAND flash memory), eMMC(embedded multi media card) 또는 UFS(universal flash storage)로 구현될 수 있다.
부트 이미지(200)는 반도체 시스템(10)의 부팅에 필요한 명령어 코드(CODE), 공개키(PBK), 서명정보(SIG)를 포함할 수 있다.
명령어 코드(CODE)는 반도체 시스템(10)의 운영 체제를 시동시키기 위한 프로그램일 수 있다.
공개키(PBK)는 비대칭 암호 방식(asymmetric cryptosystem)에서 사용되는 키이고, 서명한 서명자의 개인키(private key)(또는, 비밀키)와 한 쌍을 이루며, 인증기관에 의해 제공(또는, 공개)될 수 있다.
서명정보(SIG)는 명령어 코드(CODE)를 해싱(hashing)한 값을 서명자의 개인키를 이용하여 암호화한 값일 수 있다.
보안 부트 장치(100)는 부트 이미지(200)를 검증하여 반도체 시스템(10)의 보안 부팅을 수행할 수 있다. 예를 들어, 보안 부트 장치(100)는 부트 이미지(200)에 포함된 공개키를 이용하여 서명정보(SIG)(또는, 명령어 코드(CODE)의 무결성(integrity))를 검증할 수 있다.
보안 부트 장치(100)는 외부 메모리 인터페이스(110), 제1 내부 메모리(120), 제2 내부 메모리(130), 보안 가속기(140) 및 보안 부트 시퀀서(sequencer)(150)(또는, 보안 부트 하드웨어)를 포함할 수 있다. 외부 메모리 인터페이스(110), 제1 내부 메모리(120), 보안 가속기(140) 및 보안 부트 시퀀서(150)(또는, 보안 부트 하드웨어)는 버스(bus)를 통해 상호 연결될 수 있다. 제2 내부 메모리(130)는 보안 부트 장치(100)를 통해 버스에 연결될 수 있다.
외부 메모리 인터페이스(110)는 외부 메모리(11)와 버스 간에 인터페이스를 제공할 수 있다.
제1 내부 메모리(120)는 외부 메모리(11)로부터 외부 메모리 인터페이스(110) 및 버스를 통해 제공되는 부트 이미지(200)를 저장할 수 있다. 제1 내부 메모리(120)는 정적 랜덤 액세스 메모리(Static Random Access Memory; SRAM), 내장 동적 랜덤 액세스 메모리(Embedded Dynamic Random Access Memory; EDRAM) 등과 같은 랜덤 액세스 메모리로 구현될 수 있다.
제2 내부 메모리(130)는 공개키(PBK)의 검증에 이용되는 공개키(PBK)의 해시(hash)를 저장할 수 있다. 여기서, 공개키(PBK)의 해시는 공개키(PBK)를 해싱한 값이고, AES(advanced encryption standard), SHA(secure hash algorithm), SHS(secure hash standard) 등과 같은 암호화/해시 알고리즘을 이용하여 생성될 수 있다. 공개키(PBK)의 해시는 보안 부트 장치(100)의 제조 단계에서 제2 내부 메모리(130)에 저장될 수 있다. 제2 내부 메모리(130)는 공개키(PBK) 대신 공개키(PBK)의 해시를 저장하므로, 제2 내부 메모리(130)의 크기는 공개키(PBK)를 저장하는 메모리의 크기에 비해 감소될 수 있다.
제2 내부 메모리(130)는 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) 등으로 구현될 수 있다.
보안 가속기(140)는 하드웨어 장치로 구현되고, 보안 연산을 수행할 수 있다. 보안 가속기(140)는 공개키(PBK)의 해싱 연산, 명령어 코드(CODE)에 대한 해싱 연산, 공개키(PBK)를 이용한 서명정보(SIG)의 복호화 연산 등을 수행할 수 있다. 보안 가속기(140)는 128bit/192bit/256bit AES, SHA-1/-2(Secure Hash Algorithm), RSA(Rivest, Shamir and Adleman) 암호법, ECC(elliptic curve cryptography) 연산, DES(Data Encryption Standard), 3DES, RC4(Rivest Cipher 4), 1024bit/2048bit/3072bit 모듈식 지수함수(modular exponentiation) 및 이와 유사한 보안 알고리즘들 중 적어도 하나를 구현하도록 구성되거나, 상기 알고리즘들을 각각 구현한 가속기들(예를 들어, RSA 가속기, SHA 가속기, 인증 가속기(public key accelerator; PKA) 등)의 조합으로 구현될 수 있다.
보안 부트 시퀀서(150)는 외부 메모리 인터페이스(110), 제1 내부 메모리(120), 제2 내부 메모리(130) 및 보안 가속기(140)를 제어할 수 있다. 시퀀서는 하나의 동작이 종료됐다는 신호에 기초하여 다음 동작을 시작하도록 설정된 장치(또는, 하드웨어)이고, 보안 부트 시퀀서(150)는 기 설정된 보안 부트 순서에 따라 외부 메모리 인터페이스(110), 제1 내부 메모리(120), 제2 내부 메모리(130) 및 보안 가속기(140)에 명령어를 순차적으로 출력할 수 있다. 예를 들어, 보안 부트 시퀀서(150)는 복수의 상태들 및 복수의 동작들을 포함하되, 복수의 상태들 간 상태 변환시 복수의 동작들 중 하나의 동작을 이용하여 외부 메모리 인터페이스(110), 제1 내부 메모리(120), 제2 내부 메모리(130) 및 보안 가속기(140)를 제어할 수 있다.
실시예들에서, 보안 부트 시퀀서(150)는 유한 상태 기계(finite state machine)로 구현될 수 있다. 여기서, 유한 상태 기계는 존재 가능한 상태의 수가 유한한 기계이거나, 유한 개의 상태와 각 상태에서 유한 개의 입력 기호를 만났을 때 상태를 바꾸는 상태 전이 함수가 정의되어 있는 기계(또는, 장치, 하드웨어)일 수 있다. 보안 부트 시퀀서(150)는 설계 가능 논리 소자, 프로그래머블 로직 컨트롤러, 논리 회로, 플립플롭 등을 이용하여 구현되어 반도체 소자에 구현될 수 있다. 즉, 보안 부트 시퀀서(150)는 프로세서를 포함하지 않고, 하드웨어만으로 구현되며, 기 설정된 보안 부트 순서에 따라 상태를 변환하면서 명령어를 출력할 수 있다.
보안 부트 장치(100)가 보안 부트 시퀀서(150)와 보안 가속기(140) 대신 별도의 프로세서를 이용하여 보안 부팅 동작을 수행할 수 있다. 다만, 일반적인 기준 주파수(예를 들어, 약 26MHz)를 가지는 기준 클럭에 기초하여 프로세서가 동작하는 경우, 보안 부팅 시간이 과도하게 요구될 수 있다. 한편, 기준 주파수를 가변하는(예를 들어, 기준 주파수를 300MHz로 조정하는) 위상 고정 루프(phase lock loop; PLL)를 이용함으로써 상기 보안 부팅 시간이 단축될 수 있으나, 아날로그 소자로 구현되는 위상 고정 루프에 의해 보안 부트 장치(100)의 소형화에 제약이 발생할 수 있다.
따라서, 보안 부트 장치(100)는 프로세서 대신 유한 상태 기계(또는, 하드웨어)로 구현된 보안 부트 시퀀서(150)를 포함함으로써, 프로세서 자체의 보안 위협을 해소하고, 보안 부트 장치(100)를 포함하는 반도체 시스템(10)(예를 들어, 사물 인터넷 장치 등)의 소형화를 가능하게 할 수 있다.
도 3은 도 1의 보안 부트 장치에 포함된 보안 부트 시퀀서의 동작의 일 예를 나타내는 도면이다.
도 3을 참조하면, 유한 상태 기계로 구현된 보안 부트 시퀀서(150)는 제1 상태, 제2 상태, 제3 상태 및 제4 상태를 포함하고, 제1 상태와 제2 상태 간의 제1 동작, 제2 상태와 제3 상태 간의 제2 동작, 제3 상태와 제1 상태 간의 제3 동작 및 제3 상태와 제4 상태 간의 제4 동작을 포함할 수 있다.
예를 들어, 보안 부트 시퀀서(150)는 반도체 시스템(10)에 전원이 공급되지 않는 경우 제1 상태일 수 있다. 반도체 시스템(10)에 전원이 인가된 경우, 보안 부트 시퀀서(150)는 전원 공급 신호에 기초하여 제1 내부 메모리(120)에 외부 메모리(11)의 부트 이미지(200)에 대한 복사 명령을 출력하는 제1 동작을 수행하고, 보안 부트 시퀀서(150)의 상태는 제1 상태에서 제2 상태로 변환될 수 있다.
제1 내부 메모리(120)에서 복사 동작이 완료되는 경우, 보안 부트 시퀀서(150)는 제1 내부 메모리(120)에 부트 이미지(200)에 대한 독출 명령, 제2 내부 메모리(130)에 공개키(PBK)의 해시에 대한 독출 명령 및 보안 가속기(140)에 부트 이미지(200)에 대한 검증 명령을 출력하는 제2 동작을 수행하고, 보안 부트 시퀀서(150)의 상태는 제2 상태에서 제3 상태로 변환될 수 있다.
이후, 보안 가속기(140)에서 제1 검증 결과(즉, 검증이 성공하였음을 나타내는 결과)가 출력되는 경우, 보안 부트 시퀀서(150)는 프로세서(12)를 동작시키는 명령을 출력하는 제3 동작을 수행하고, 보안 부트 시퀀서(150)의 상태는 제3 상태에서 제1 상태로 변환될 수 있다.
이와 달리, 보안 가속기(140)에서 제2 검증 결과(즉, 검증이 실패하였음을 나타내는 결과)가 출력되는 경우, 보안 부트 시퀀서(150)는 프로세서(12)를 정지시키는 명령을 출력하는 제4 동작을 수행하고, 보안 부트 시퀀서(150)의 상태는 제3 상태는 제4 상태로 변환될 수 있다.
한편, 도 3에서는 보안 부트 시퀀스(150)가 4개의 상태들을 가지는 것으로 설명하였으나, 이것은 예시적인 것으로서, 보안 부트 시퀀스(150)가 그에 한정되는 것은 아니다. 예를 들어, 보안 부트 시퀀스(150)는 5개 이상의 상태들을 가질 수 있고, 그에 따라, 5개 이상의 동작들을 포함할 수 있다.
도 4는 도 1의 보안 부트 장치에 포함된 보안 부트 시퀀서의 일 예를 나타내는 도면이다.
도 4를 참조하면, 보안 부트 시퀀서(150)는 외부 메모리 인터페이스 기능 블록(410), 보안 가속기 인터페이스 기능 블록(420) 및 버스 인터페이스 기능 블록(430)을 포함할 수 있다. 외부 메모리 인터페이스 기능 블록(410), 보안 가속기 인터페이스 기능 블록(420) 및 버스 인터페이스 기능 블록(430)은 기 설정된 공통 인터페이스를 이용할 수 있다.
외부 메모리 인터페이스 기능 블록(410)은 부트 이미지(200)를 저장하는 외부 메모리(11)와 인터페이스 하는 유한 상태 기계로 구성될 수 있다.
외부 메모리 인터페이스 기능 블록(410)은 외부 메모리(11)로부터 버스 인터페이스 기능 블록(430)을 통해 제1 내부 메모리(120)에 부트 이미지(200)를 복사하도록 제어할 수 있다.
일 실시예에서, 외부 메모리 인터페이스 기능 블록(410)은 낸드 플래시 인터페이스, SPI(serial peripheral interface; 직렬 주변기기 인터페이스) 플래시 인터페이스, EMMC 인터페이스 등과 같은 메모리 인터페이스들 중 하나를 이용하여 외부 메모리 인터페이스를 구성할 수 있다. 예를 들어, 외부 메모리 인터페이스 기능 블록(410)은 부트 이미지(200)에 대한 읽기 명령, 쓰기 명령, 어드레스 정보 등을 EMMC 인터페이스를 이용하여 출력할 수 있다.
반도체 시스템(10)의 설계 단계에서 외부 메모리(11)의 타입에 기초하여 낸드 플래시 인터페이스, SPI 플래시 인터페이스, EMMC 인터페이스 등과 같은 메모리 인터페이스들 중 하나가 결정되고, 외부 메모리 인터페이스 기능 블록(410)은 결정된 메모리 인터페이스를 이용하여 구현될 수 있다.
보안 가속기 인터페이스 기능 블록(420)은 보안 가속기(140)를 순차적으로 동작시키는 유한 상태 기계로 구성될 수 있다.
일 실시예에서, 보안 가속기 인터페이스 기능 블록(420)은 상술한 RSA 알고리즘, ECDSA 알고리즘 등과 같은 보안 알고리즘들 중 적어도 하나를 보안 가속기 인터페이스로 구성할 수 있다. 예를 들어, 보안 가속기 인터페이스 기능 블록(420)은 RSA 알고리즘에서 이용되는 인터페이스를 이용하여 보안 가속기(140)에 대한 명령을 출력할 수 있다.
버스 인터페이스 기능 블록(430)은 외부 메모리 인터페이스 기능 블록(410) 및 보안 가속기 인터페이스 기능 블록(420)이 버스를 통해 상호 인터페이스를 가능하게 하는 유한 상태 기계로 구성될 수 있다.
일 실시예에서, 버스 인터페이스 기능 블록(430)은 ARM AXI 64bit 버스 인터페이스, ARM AXI 32bit 버스 인터페이스, ARM AHB 32bit 버스 인터페이스 등과 같은 버스 인터페이스들 중 하나를 보안 부트 장치(100)의 버스 인터페이스로 구성할 수 있다.
도 4를 참조하여 설명한 바와 같이, 보안 부트 시퀀스(150)는 외부 메모리 인터페이스 기능 블록(410), 보안 가속기 인터페이스 기능 블록(420) 및 버스 인터페이스 기능 블록(430)을 포함할 수 있다. 즉, 보안 부트 시퀀스(150)는 단위 기능(예를 들어, 외부 메모리(11)와의 인터페이스 기능, 보안 가속기(140)와의 인터페이스 기능, 버스 인터페이스 기능 등)을 수행하는 기능 블록들로 구성될 수 있다. 상기 기능 블록들은 반도체 시스템(10)의 설계 단계에서 용이하게 변경 및 조합될 수 있다. 따라서, 보안 부트 시퀀스(150)는 반도체 시스템(10)의 다양한 설계 요구에 대응할 수 있다.
도 5는 도 4의 보안 부트 시퀀서의 일 예를 나타내는 도면이다.
도 4 및 도 5를 참조하면, 외부 메모리 인터페이스 기능 블록(410)은 제1 외부 메모리 인터페이스 기능 블록(511) 및 제2 외부 메모리 인터페이스 기능 블록(512)을 포함할 수 있다. 제1 외부 메모리 인터페이스 기능 블록(511)은 제2 외부 메모리 인터페이스 기능 블록(512)에서 이용되는 인터페이스와 다른 인터페이스를 이용하여 구성될 수 있다.
제1 외부 메모리 인터페이스 기능 블록(511) 및 제2 외부 메모리 인터페이스 기능 블록(512) 각각은 상술한 낸드 플래시 인터페이스, SPI 플래시 인터페이스, EMMC 인터페이스 등과 같은 메모리 인터페이스들 중 하나를 이용하여 외부 메모리 인터페이스를 구성할 수 있다. 예를 들어, 제1 외부 메모리 인터페이스 기능 블록(511)은 낸드 플래시 인터페이스를 이용하여 구성되고, 제2 외부 메모리 인터페이스 기능 블록(512)은 SPI 인터페이스를 이용하여 구성될 수 있다.
일 실시예에서, 보안 부트 시퀀스(150)(또는, 보안 부트 장치(100))는 제1 모드 설정 신호에 기초하여 제1 외부 메모리 인터페이스 기능 블록(511) 및 제2 외부 메모리 인터페이스 기능 블록(512) 중 하나를 선택할 수 있다. 즉, 모드 설정을 통해 제1 외부 메모리 인터페이스 기능 블록(511) 및 제2 외부 메모리 인터페이스 기능 블록(512) 중 하나가 선택될 수 있다. 예를 들어, 보안 부트 시퀀서(150)는 반도체 시스템(10)의 설계 단계 또는 반도체 시스템(10)의 설정 단계에서(또는, 초기 부팅시) 토글 키 등을 통해 제1 모드 설정 신호를 수신하고, 제1 모드 설정 신호에 기초하여 제1 외부 메모리 인터페이스 기능 블록(511)을 선택할 수 있다. 이후, 보안 부트 시퀀스(150)는 제1 외부 메모리 인터페이스 기능 블록(511)을 이용하여 외부 메모리(11)와 인터페이스 할 수 있다.
한편, 도 5에서는 외부 메모리 인터페이스 기능 블록(410)이 2개의 외부 메모리 인터페이스 기능 블록들(또는, 하위 기능 블록들)을 포함하는 것으로 도시되어 있으나, 이것은 예시적인 것으로서, 외부 메모리 인터페이스 기능 블록(410)이 그에 한정되는 것은 아니다. 예를 들어, 외부 메모리 인터페이스 기능 블록(410)은 반도체 시스템(10)의 크기를 고려하여 3개 이상의 외부 메모리 인터페이스 기능 블록들을 포함할 수 있다.
한편, 보안 가속기 인터페이스 기능 블록(420)은 제1 보안 가속기 인터페이스 기능 블록(521) 및 제2 보안 가속기 인터페이스 기능 블록(522)을 포함할 수 있다. 제1 보안 가속기 인터페이스 기능 블록(521)은 제2 보안 가속기 인터페이스 기능 블록(522)에서 이용되는 인터페이스와 다른 인터페이스를 이용하여 구성될 수 있다.
제1 보안 가속기 인터페이스 기능 블록(521) 및 제2 보안 가속기 인터페이스 기능 블록(522) 각각은 상술한 RSA 알고리즘, ECDSA 알고리즘 등과 같은 보안 알고리즘들 중 하나를 보안 가속기 인터페이스를 이용하여 구성될 수 있다. 예를 들어, 제1 보안 가속기 인터페이스 기능 블록(521)은 RSA 알고리즘을 이용하여 구성되고, 제2 보안 가속기 인터페이스 기능 블록(522)은 ECDSA 알고리즘을 이용하여 구성될 수 있다.
일 실시예에서, 보안 부트 시퀀스(150)(또는, 보안 부트 장치(100))는 제2 모드 설정 신호에 기초하여 제1 보안 가속기 인터페이스 기능 블록(521) 및 제2 보안 가속기 인터페이스 기능 블록(522) 중 하나를 선택할 수 있다. 즉, 모드 설정을 통해 제1 보안 가속기 인터페이스 기능 블록(521) 및 제2 보안 가속기 인터페이스 기능 블록(522) 중 하나가 선택될 수 있다. 예를 들어, 보안 부트 시퀀서(150)는 반도체 시스템(10)의 설계 단계 또는 반도체 시스템(10)의 설정 단계에서(또는, 초기 부팅시) 토글 키 등을 통해 제2 모드 설정 신호를 수신하고, 제2 모드 설정 신호에 기초하여 제1 보안 가속기 인터페이스 기능 블록(521)을 선택할 수 있다. 상기 설정 이후, 보안 부트 시퀀스(150)는 제1 보안 가속기 인터페이스 기능 블록(521)을 이용하여 보안 가속기(140)를 순차적으로 동작시킬 수 있다.
일 실시예에서, 보안 부트 시퀀스(150)는 제1 보안 가속기 인터페이스 기능 블록(521) 및 제2 보안 가속기 인터페이스 기능 블록(522)을 이용할 수 있다. 예를 들어, 보안 가속기(140)는 RSA 가속기, SHA 가속기, 인증 가속기(public key accelerator; PKA) 등의 조합으로 구현될 수 있다. 이 경우, 보안 부트 시퀀스(150)는 제1 보안 가속기 인터페이스 기능 블록(521)을 이용하여 RSA 가속기를 동작시키고, 제2 보안 가속기 인터페이스 기능 블록(522)을 이용하여 SHA 가속기를 동작시킬 수 있다.
한편, 도 5에서는 보안 가속기 인터페이스 기능 블록(420)이 2개의 보안 가속기 인터페이스 기능 블록들(또는, 하위 기능 블록들)을 포함하는 것으로 도시되어 있으나, 이것은 예시적인 것으로서, 보안 가속기 인터페이스 기능 블록(420)이 그에 한정되는 것은 아니다. 예를 들어, 보안 가속기 인터페이스 기능 블록(420)은 3개 이상의 보안 가속기 인터페이스 기능 블록들을 포함할 수 있다.
한편, 버스 인터페이스 기능 블록(430)은, 도 3을 참조하여 설명한 버스 인터페이스 기능 블록(430)과 실질적으로 동일할 수 있다. 따라서, 그에 대한 중복되는 설명은 생략하기로 한다.
보안 부트 장치(100), 프로세서(12) 및 하드웨어 장치(13) 간에 이용되는 버스 인터페이스는 반도체 시스템(10)의 설계 단계에서 결정되므로, 버스 인터페이스 기능 블록(430)은 하나의 버스 인터페이스를 이용하여 구성될 수 있다.
도 5를 참조하여 설명한 바와 같이, 보안 부트 시퀀스(150)는 복수의 외부 메모리 인터페이스 기능 블록들(511, 512), 복수의 보안 가속기 인터페이스 기능 블록들(521, 522)을 포함할 수 있다. 보안 부트 시퀀스(150)는 반도체 시스템(10)의 설계 단계 또는 설정 단계에서(또는, 초기 부팅시) 상기 기능 블록들 중 적어도 일부를 선택할 수 있다. 즉, 기능 블록들은 반도체 시스템(10)의 설계 단계 또는 설정 단계에서 용이하게 변경 및 조합될 수 있다. 따라서, 보안 부트 시퀀스(150)는 반도체 시스템(10)의 다양한 설계 요구에 대응할 수 있다.
도 6은 도 1의 보안 부트 장치의 보안 부팅 방법을 나타내는 순서도이다.
도 1, 도 4 및 도 6을 참조하면, 반도체 시스템(10)의 리셋(reset)이 해제되거나(release), 반도체 시스템(10)에 전원이 공급되는 경우, 외부 메모리 인터페이스 기능 블록(410)은 외부 메모리(11)로부터 버스 인터페이스 기능 블록(430)을 통해 제1 내부 메모리(120)에 부트 이미지(200)를 복사(S610)할 수 있다.
제1 내부 메모리(120)에 부트 이미지(200)의 복사가 완료되는 경우, 보안 가속기 인터페이스 기능 블록(420)은 버스 인터페이스 기능 블록(430)을 통해 보안 가속기(140)를 동작(S620)시킬 수 있다. 이 경우, 보안 가속기(140)는 제2 내부 메모리(130)에 저장된 공개키(PBK)의 해시에 기초하여 부트 이미지(200)를 검증(S630)할 수 있다.
일 실시예에서, 보안 가속기 인터페이스 기능 블록(420)은 버스 인터페이스 기능 블록(430)을 통해 보안 가속기(140)가 공개키(PBK)를 검증하도록 할 수 있다. 이 경우, 보안 가속기(140)는 부트 이미지(200)의 공개키(PBK)를 해싱하여 제1 해시를 산출하고, 제2 내부 메모리(130)에 저장된 공개키(PBK)의 해시와 산출된 제1 해시를 비교(S640)할 수 있다.
상기 비교 결과, 해시의 값과 제1 해시의 값이 동일한 경우, 보안 부트 장치(100)는 공개키(PBK)가 인증기관으로부터 제공된 공개키(PBK)와 동일한 것으로 판단할 수 있다. 즉, 공개키(PBK)의 무결성이 인증될 수 있다.
일 실시예에서, 공개키(PBK)의 검증에 성공하면, 보안 가속기 인터페이스 기능 블록(420)은 버스 인터페이스 기능 블록(430)을 통해 보안 가속기(140)가 서명정보(SIG)를 검증하도록 할 수 있다. 이 경우, 보안 가속기(140)는 부트 이미지(200)의 명령어 코드(CODE)를 해싱하여 제2 해시를 산출하고, 서명정보(SIG)를 공개키(PBK)를 이용하여 복호화하여 제3 해시를 산출하며, 제2 해시와 제3 해시를 비교(S650)할 수 있다. 여기서, 명령어 코드(CODE)는 보안 부트 장치(100)에 독립적인 프로세서(12)를 위한 명령어이며, 명령어 코드(CODE)는 보안 부트 장치(100)의 동작에 영향을 미치지 않는다.
상기 비교 결과, 제2 해시의 값과 제3 해시의 값이 동일한 경우, 보안 부트 장치(100)는 명령어 코드(CODE)는 서명자에 의해 생성된 명령어 코드인 것으로 판단할 수 있다. 즉, 명령어 코드(CODE)의 무결성이 인증될 수 있다.
부트 이미지(200)에 대한 검증이 성공하면, 보안 부트 장치(100)는 버스 인터페이스 기능 블록(430)을 통해 부트 이미지(200)의 명령어 코드(CODE)를 프로세서(12)에 제공하여 프로세서(12)를 동작(S660)시킬 수 있다. 예를 들어, 서명(SIG)에 대한 검증이 성공하면, 보안 부트 장치(100)는 버스 인터페이스 기능 블록(430)을 통해 부트 이미지(200)의 명령어 코드(CODE)를 프로세서(12)에 제공하여 프로세서(12)를 동작시킬 수 있다. 이 경우, 프로세서(12)는 부팅 동작을 수행하고, 하드웨어 장치(13)(예를 들어, 모뎀 등)를 동작시킬 수 있다. 또한, 보안 부트 장치(100)는 버스 인터페이스 기능 블록(430)을 통해 보안 부트 장치(100) 및 프로세스(12) 간의 버스 인터페이스를 차단할 수 있다. 이 경우, 반도체 시스템(10)에 대한 외부의 접근이 차단될 수 있다.
한편, 부트 이미지(200)의 검증에 실패하면(또는, 공캐키(PBK)의 검증에 실패하거나, 서명정보(SIG)의 검증에 실패하면), 보안 부트 장치(100)는 보안 부팅 동작을 중단(S670)하고, 버스 인터페이스 기능 블록(430)을 통해 프로세서(12)의 동작을 정지시킬 수 있다. 예를 들어, 공캐키(PBK)의 검증에 실패하거나, 서명정보(SIG)의 검증에 실패하면, 보안 부트 장치(100)는 보안 부팅 동작을 중단하고, 버스 인터페이스 기능 블록(430)을 통해 프로세서(12)의 동작을 정지시킬 수 있다. 또한, 보안 부트 장치(100)는 제1 내부 메모리(120)에 저장된 부트 이미지(200)를 삭제하고, 반도체 시스템(10)을 초기화시킬 수 있다.
상술한 바와 같이, 보안 부트 장치(100)는 부트 이미지(200)의 무결성을 검증하고, 부트 이미지(200)의 무결성이 검증된 경우 반도체 시스템(10)이 부팅을 진행하도록 제어하며, 부트 이미지(200)의 무결성이 검증되지 않는 경우 부팅 동작을 종료할 수 있다.
도 7a 및 도 7b는 도 1의 보안 부트 장치가 적용된 전자 장치의 일 예를 나타내는 도면이다.
도 1, 도 7a 및 도 7b를 참조하면, 전자 장치(700)는 보안 부트 장치(100)를 포함할 수 있다. 전자 장치(700)는 웨어러블(wearable) 디바이스 또는 웨어러블 사물 인터넷 장치로 구현될 수 있다.
도 7a에 도시된 바와 같이, 전자 장치(700)는 스마트 글래스(smart glass; 711), 이어폰(712), 심전도 측정기(ECG/PPG)(713), 허리띠(714), 시계(또는, 밴드)(715), 혈당 측정기(716), 온도 조절 옷(717), 신발(718), 및 목걸이(719)로 구현되고, 사용자(USER)의 건강 상태, 주변 환경를 감지하는 센서를 포함할 수 있다.
도 7b에 도시된 바와 같이, 전자 장치(700)는 시계(715) 예를 들어, 스마트 와치로 구현되고, 사용자의 몸에 두르거나 손목에 부착하여 사용되며, 다양한 센서들을 통해 사용자의 신체 정보(예를 들어, 사용자의 홍체 정보, 지문 정보, 심박 정보, 체온 정보, 혈당 정보 등)와 사용자의 주변 환경 정보(예를 들어, 사용자의 위치 정보, 사용자 주변의 온도 정보 등)를 획득할 수 있다.
전자 장치(700)(예를 들어, 스마트 와치로 구현된 사물 인터넷 장치)에 내장된 보안 부트 장치(100)는 프로세서 대신 유한 상태 기계로 구현되고, 전자 장치(700)의 프로세서를 보안 부팅시키므로, 전자 장치(700)의 프로세서 자체의 보안 위협을 해소하고, 사용자의 신체 정보, 사용자의 주변 환경 정보가 외부로 유출되는 것을 방지할 수 있다.
본 발명은 반도체 시스템의 보안 부팅을 수행하는 보안 부트 시퀀서 및 이를 포함하는 보안 부트 장치에 적용될 수 있다. 따라서, 본 발명은 보안 부팅이 요구되는 반도체 장치 및/또는 반도체 시스템 등에 다양하게 적용될 수 있다.
이상에서는 본 발명의 실시예들을 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
10: 반도체 시스템 11: 외부 메모리
12: 프로세서 13: 하드웨어 장치
100: 보안 부트 장치 110: 외부 메모리 인터페이스
120: 제1 내부 메모리 130: 제2 내부 메모리
140: 보안 가속기 150: 보안 부트 시퀀서
200: 부트 이미지
410: 외부 메모리 인터페이스 기능 블록
420: 보안 가속기 인터페이스 기능 블록
430: 버스 인터페이스 기능 블록
511: 제1 외부 메모리 인터페이스 기능 블록
512: 제2 외부 메모리 인터페이스 기능 블록
521: 제1 보안 가속기 인터페이스 기능 블록
522: 제2 보안 가속기 인터페이스 기능 블록
530: 버스 인터페이스 기능 블록
700: 전자 장치
12: 프로세서 13: 하드웨어 장치
100: 보안 부트 장치 110: 외부 메모리 인터페이스
120: 제1 내부 메모리 130: 제2 내부 메모리
140: 보안 가속기 150: 보안 부트 시퀀서
200: 부트 이미지
410: 외부 메모리 인터페이스 기능 블록
420: 보안 가속기 인터페이스 기능 블록
430: 버스 인터페이스 기능 블록
511: 제1 외부 메모리 인터페이스 기능 블록
512: 제2 외부 메모리 인터페이스 기능 블록
521: 제1 보안 가속기 인터페이스 기능 블록
522: 제2 보안 가속기 인터페이스 기능 블록
530: 버스 인터페이스 기능 블록
700: 전자 장치
Claims (10)
- 반도체 시스템의 보안 부팅 동작을 수행하는 보안 부트 장치에 있어서,
외부 메모리와 인터페이스를 제공하는 외부 메모리 인터페이스;
상기 외부 메모리에 저장된 부트 이미지를 저장하는 제1 내부 메모리;
제1 공개키의 해시(hash)를 저장하는 제2 내부 메모리;
상기 제1 공개키의 상기 해시를 이용하여 상기 부트 이미지에 대한 검증을 수행하는 보안 가속기; 및
복수의 상태들 및 복수의 동작들을 포함하되, 상기 상태들 간 상태 변환시 상기 동작들 중 적어도 하나의 동작을 이용하여 상기 외부 메모리 인터페이스, 상기 제1 내부 메모리, 상기 제2 내부 메모리 및 상기 보안 가속기를 제어하는 보안 부트 시퀀서를 포함하고,
상기 부트 이미지는 명령어 코드, 제2 공개키 및 서명 정보를 포함하며,
상기 보안 가속기는 상기 제1 공개키의 상기 해시에 기초하여 상기 제2 공개키를 검증하고, 상기 제2 공개키의 검증이 성공했을 때 상기 제2 공개키 및 상기 명령어 코드에 기초하여 상기 서명 정보를 검증하는 보안 부트 장치. - 제 1 항에 있어서, 상기 보안 부트 시퀀서는,
상기 외부 메모리와 인터페이스하는 외부 메모리 인터페이스 기능 블록;
상기 보안 가속기를 순차적으로 동작시키는 보안 가속기 인터페이스 기능 블록; 및
상기 외부 메모리 인터페이스 기능 블록과 상기 보안 가속기 인터페이스 기능 블록이 버스를 통해 상호 간에 인터페이스하도록 하는 버스 인터페이스 기능 블록을 포함하는 보안 부트 장치. - 제 2 항에 있어서, 상기 외부 메모리 인터페이스 기능 블록, 상기 보안 가속기 인터페이스 기능 블록 및 상기 버스 인터페이스 기능 블록 각각은 유한 상태 기계(finite state machine; FSM)로 구현되는 보안 부트 장치.
- 제 2 항에 있어서, 상기 외부 메모리 인터페이스 기능 블록은 제1 외부 메모리 인터페이스 기능 블록 및 제2 외부 메모리 인터페이스 기능 블록을 포함하고, 상기 제2 외부 메모리 인터페이스 기능 블록은 상기 제1 외부 메모리 인터페이스 기능 블록의 인터페이스와 다른 인터페이스를 이용하여 구성되며,
상기 외부 메모리 인터페이스 기능 블록은 제1 모드 설정 신호에 기초하여 상기 제1 외부 메모리 인터페이스 기능 블록과 상기 제2 외부 메모리 인터페이스 기능 블록 중 하나를 선택하고, 상기 제1 외부 메모리 인터페이스 기능 블록과 상기 제2 외부 메모리 인터페이스 기능 블록 중 선택된 하나를 이용하여 상기 외부 메모리와 인터페이스를 구성하는 보안 부트 장치. - 제 2 항에 있어서, 상기 보안 가속기 인터페이스 기능 블록은 제1 보안 가속기 인터페이스 기능 블록 및 제2 보안 가속기 인터페이스 기능 블록을 포함하는 보안 부트 장치.
- 제 5 항에 있어서, 상기 보안 가속기 인터페이스 기능 블록은 제2 모드 설정 신호에 기초하여 상기 제1 보안 가속기 인터페이스 기능 블록과 상기 제2 보안 가속기 인터페이스 기능 블록 중 하나를 선택하고, 상기 제1 보안 가속기 인터페이스 기능 블록과 상기 제2 보안 가속기 인터페이스 기능 블록 중 선택된 하나를 이용하여 상기 보안 가속기를 동작시키는 보안 부트 장치.
- 제 5 항에 있어서, 상기 보안 가속기는 제1 보안 가속기 및 제2 보안 가속기를 포함하고,
상기 보안 가속기 인터페이스 기능 블록은, 상기 제1 보안 가속기 인터페이스 기능 블록을 이용하여 상기 제1 보안 가속기를 동작시키고, 상기 제2 보안 가속기 인터페이스 기능 블록을 이용하여 상기 제2 보안 가속기를 동작시키는 보안 부트 장치. - 제 2 항에 있어서, 상기 반도체 시스템에 전원이 공급되는 경우, 상기 외부 메모리 인터페이스 기능 블록은 상기 외부 메모리로부터 상기 버스 인터페이스 기능 블록을 통해 상기 제1 내부 메모리에 상기 부트 이미지를 복사하고,
상기 부트 이미지의 복사가 완료되는 경우, 상기 보안 가속기 인터페이스 기능 블록은 상기 버스 인터페이스 기능 블록을 통해 상기 보안 가속기를 동작시키는 보안 부트 장치. - 제 1 항에 있어서, 상기 반도체 시스템은 웨어러블 디바이스로 구현된 사물 인터넷 장치인 보안 부트 장치.
- 버스를 통해 외부 메모리 인터페이스 및 보안 가속기에 연결되는 보안 부트 시퀀서에 있어서,
상기 외부 메모리 인터페이스를 통해 외부 메모리와 인터페이스하는 외부 메모리 인터페이스 기능 블록;
상기 보안 가속기를 순차적으로 동작시키는 보안 가속기 인터페이스 기능 블록; 및
상기 외부 메모리 인터페이스 기능 블록과 상기 보안 가속기 인터페이스 기능 블록이 상기 버스를 통해 상호 간에 인터페이스하도록 하는 버스 인터페이스 기능 블록을 포함하고,
상기 외부 메모리 인터페이스 기능 블록, 상기 보안 가속기 인터페이스 기능 블록 및 상기 버스 인터페이스 기능 블록 각각은 유한 상태 기계(finite state machine; FSM)로 구현되며,
상기 외부 메모리 인터페이스 기능 블록은 상기 버스 인터페이스 기능 블록을 이용하여 부트 이미지를 상기 외부 메모리로부터 제1 내부 메모리로 복사하고,
상기 보안 가속기는 제2 내부 메모리에 저장된 제1 공개키의 해시(hash)를 이용하여 상기 부트 이미지에 대한 검증을 수행하며,
상기 부트 이미지는 명령어 코드, 제2 공개키 및 서명 정보를 포함하고,
상기 보안 가속기는 상기 제1 공개키의 상기 해시에 기초하여 상기 제2 공개키를 검증하고, 상기 제2 공개키의 검증이 성공했을 때 상기 제2 공개키 및 상기 명령어 코드에 기초하여 상기 서명 정보를 검증하는 보안 부트 시퀀서.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170002028A KR102617354B1 (ko) | 2017-01-05 | 2017-01-05 | 보안 부트 시퀀서 및 보안 부트 장치 |
US15/792,371 US10699016B2 (en) | 2017-01-05 | 2017-10-24 | Secure boot sequencer and secure boot device |
CN201711499226.0A CN108280035B (zh) | 2017-01-05 | 2017-12-29 | 安全引导定序器和安全引导设备 |
US16/894,513 US11354416B2 (en) | 2017-01-05 | 2020-06-05 | Secure boot sequencer and secure boot device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170002028A KR102617354B1 (ko) | 2017-01-05 | 2017-01-05 | 보안 부트 시퀀서 및 보안 부트 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180080912A KR20180080912A (ko) | 2018-07-13 |
KR102617354B1 true KR102617354B1 (ko) | 2023-12-26 |
Family
ID=62712419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170002028A KR102617354B1 (ko) | 2017-01-05 | 2017-01-05 | 보안 부트 시퀀서 및 보안 부트 장치 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10699016B2 (ko) |
KR (1) | KR102617354B1 (ko) |
CN (1) | CN108280035B (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102617354B1 (ko) | 2017-01-05 | 2023-12-26 | 삼성전자주식회사 | 보안 부트 시퀀서 및 보안 부트 장치 |
US11258772B2 (en) * | 2018-06-19 | 2022-02-22 | Cypress Semiconductor Corporation | Secured communication from within non-volatile memory device |
CN111095213B (zh) * | 2018-08-23 | 2024-04-30 | 深圳市汇顶科技股份有限公司 | 嵌入式程序的安全引导方法、装置、设备及存储介质 |
KR102126931B1 (ko) * | 2018-11-07 | 2020-06-25 | 시큐리티플랫폼 주식회사 | 시큐어 부팅 장치 및 방법 |
CN112262545B (zh) * | 2019-01-04 | 2023-09-15 | 百度时代网络技术(北京)有限公司 | 主机***与数据处理加速器之间的证明协议 |
CN109814934B (zh) * | 2019-01-31 | 2022-05-06 | 安谋科技(中国)有限公司 | 数据处理方法、装置、可读介质和*** |
US11456877B2 (en) * | 2019-06-28 | 2022-09-27 | Intel Corporation | Unified accelerator for classical and post-quantum digital signature schemes in computing environments |
KR20210041932A (ko) * | 2019-10-08 | 2021-04-16 | 한화테크윈 주식회사 | 보안 부팅 장치 및 그 동작 방법 |
US20220284088A1 (en) * | 2019-10-24 | 2022-09-08 | Hewlett-Packard Development Company, L.P. | Authentication of write requests |
US11204781B2 (en) * | 2019-12-11 | 2021-12-21 | Qualcomm Incorporated | Optimizing power, memory and load time of a computing system during image loading based on image segmentation |
US11314867B2 (en) * | 2020-03-26 | 2022-04-26 | Hewlett Packard Enterprise Development Lp | Determinations of compromise of controller code images |
CN117909980A (zh) * | 2022-10-10 | 2024-04-19 | 华为技术有限公司 | 一种启动验证方法及相关装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100095106A1 (en) * | 2008-10-15 | 2010-04-15 | Icera Inc. | Boot algorithm |
US20120072734A1 (en) * | 2010-09-22 | 2012-03-22 | Wishman Allen R | Platform firmware armoring technology |
US20120159183A1 (en) * | 2010-12-16 | 2012-06-21 | Research In Motion Limited | Method and apparatus for securing a computing device |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7594104B2 (en) | 2006-06-09 | 2009-09-22 | International Business Machines Corporation | System and method for masking a hardware boot sequence |
US8560823B1 (en) * | 2007-04-24 | 2013-10-15 | Marvell International Ltd. | Trusted modular firmware update using digital certificate |
KR101393307B1 (ko) | 2007-07-13 | 2014-05-12 | 삼성전자주식회사 | 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템 |
US8683213B2 (en) * | 2007-10-26 | 2014-03-25 | Qualcomm Incorporated | Progressive boot for a wireless device |
KR20090128672A (ko) | 2008-06-11 | 2009-12-16 | 삼성전자주식회사 | 다중 부팅 모드를 지원하는 장치 및 방법 |
KR101485468B1 (ko) | 2008-11-18 | 2015-01-26 | 삼성전자주식회사 | 휴대 장치의 해킹 방지를 위한 부팅 장치 및 방법 |
WO2012025728A1 (en) * | 2010-08-27 | 2012-03-01 | Fxi Technologies As | Electronics Device |
US8904190B2 (en) | 2010-10-20 | 2014-12-02 | Advanced Micro Devices, Inc. | Method and apparatus including architecture for protecting sensitive code and data |
US9881161B2 (en) | 2012-12-06 | 2018-01-30 | S-Printing Solution Co., Ltd. | System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof |
KR20140073384A (ko) * | 2012-12-06 | 2014-06-16 | 삼성전자주식회사 | 보안 부팅을 수행하는 칩 시스템과 이를 이용하는 화상형성장치 및 그 보안 부팅 방법 |
CN103886246B (zh) * | 2012-12-22 | 2018-08-31 | 三星电子株式会社 | 支持认证装置安全引导的动态改变的方法和设备 |
CN103914658B (zh) * | 2013-01-05 | 2017-02-22 | 展讯通信(上海)有限公司 | 终端设备的安全启动方法及终端设备 |
WO2014160375A1 (en) | 2013-03-14 | 2014-10-02 | Microchip Technology Incorporated | Boot sequencing for multi boot devices |
KR20140121233A (ko) | 2013-04-05 | 2014-10-15 | 삼성전자주식회사 | 부트로더에 의한 운영 체제 부팅 기능의 전자 장치, 방법 및 저장 매체 |
US9471785B2 (en) | 2013-08-30 | 2016-10-18 | Freescale Semiconductor, Inc. | Systems and methods for secure boot ROM patch |
US9152794B1 (en) * | 2013-09-05 | 2015-10-06 | Xilinx, Inc. | Secure key handling for authentication of software for a system-on-chip |
JP6244759B2 (ja) | 2013-09-10 | 2017-12-13 | 株式会社ソシオネクスト | セキュアブート方法、半導体装置、及び、セキュアブートプログラム |
KR102617354B1 (ko) | 2017-01-05 | 2023-12-26 | 삼성전자주식회사 | 보안 부트 시퀀서 및 보안 부트 장치 |
-
2017
- 2017-01-05 KR KR1020170002028A patent/KR102617354B1/ko active IP Right Grant
- 2017-10-24 US US15/792,371 patent/US10699016B2/en active Active
- 2017-12-29 CN CN201711499226.0A patent/CN108280035B/zh active Active
-
2020
- 2020-06-05 US US16/894,513 patent/US11354416B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100095106A1 (en) * | 2008-10-15 | 2010-04-15 | Icera Inc. | Boot algorithm |
US20120072734A1 (en) * | 2010-09-22 | 2012-03-22 | Wishman Allen R | Platform firmware armoring technology |
US20120159183A1 (en) * | 2010-12-16 | 2012-06-21 | Research In Motion Limited | Method and apparatus for securing a computing device |
Also Published As
Publication number | Publication date |
---|---|
KR20180080912A (ko) | 2018-07-13 |
CN108280035A (zh) | 2018-07-13 |
US10699016B2 (en) | 2020-06-30 |
US20200302063A1 (en) | 2020-09-24 |
US20180189495A1 (en) | 2018-07-05 |
CN108280035B (zh) | 2023-07-18 |
US11354416B2 (en) | 2022-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102617354B1 (ko) | 보안 부트 시퀀서 및 보안 부트 장치 | |
CN111095213B (zh) | 嵌入式程序的安全引导方法、装置、设备及存储介质 | |
US8732445B2 (en) | Information processing device, information processing method, information processing program, and integrated circuit | |
Zhao et al. | Providing root of trust for ARM TrustZone using on-chip SRAM | |
TWI632483B (zh) | 安全裝置及在其內提供安全服務至主機的方法、安全設備以及電腦軟體產品 | |
JP6103169B1 (ja) | セキュリティ装置、及びセキュリティ方法 | |
CN112784280A (zh) | 一种SoC芯片安全设计方法及硬件平台 | |
US10956619B2 (en) | Devices and method of operation thereof | |
CN110730159B (zh) | 一种基于TrustZone的安全和可信混合***启动方法 | |
US20230273977A1 (en) | Managing ownership of an electronic device | |
US20230351056A1 (en) | Sram physically unclonable function (puf) memory for generating keys based on device owner | |
TWI760752B (zh) | 應用加速驗證映像檔方法的系統 | |
US20240073033A1 (en) | Method of updating device certificate and device for driving the method | |
US11874928B2 (en) | Security device, electronic device, secure boot management system, method for generating boot image, and method for executing boot chain | |
US20230315913A1 (en) | Multi-chip secure and programmable systems and methods | |
ES2755041T3 (es) | Obtención de una clave criptográfica específica de un aparato a partir de una clave intersistemas para un aparato | |
US20240111853A1 (en) | Certificate update method and certificate update system of device driving the same | |
CN115361132A (zh) | 密钥生成方法、装置、片上***、设备及存储介质 | |
TW202343231A (zh) | 管理電子設備的所有權 | |
WO2024013554A1 (en) | Hardware-entangled key generation | |
CN104881345A (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 |