KR20210089485A - 소프트웨어의 인증을 위한 장치 및 방법 - Google Patents

소프트웨어의 인증을 위한 장치 및 방법 Download PDF

Info

Publication number
KR20210089485A
KR20210089485A KR1020200002691A KR20200002691A KR20210089485A KR 20210089485 A KR20210089485 A KR 20210089485A KR 1020200002691 A KR1020200002691 A KR 1020200002691A KR 20200002691 A KR20200002691 A KR 20200002691A KR 20210089485 A KR20210089485 A KR 20210089485A
Authority
KR
South Korea
Prior art keywords
key
image
software
software image
processor
Prior art date
Application number
KR1020200002691A
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 KR1020200002691A priority Critical patent/KR20210089485A/ko
Priority to DE102020121075.2A priority patent/DE102020121075A1/de
Priority to CN202010919976.4A priority patent/CN113094690A/zh
Priority to US17/018,237 priority patent/US11829464B2/en
Priority to TW109133260A priority patent/TW202127283A/zh
Publication of KR20210089485A publication Critical patent/KR20210089485A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using certificates
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

시스템은, 본 개시의 예시적 실시예에 따라, 프로세서, 및 프로세서에 의해서 실행되는 프로그램 이미지 및 적어도 하나의 소프트 키를 포함하는 키체인(keychain) 이미지를 포함하는, 소프트웨어 이미지들이 로딩되는 시스템 메모리를 포함할 수 있고, 프로세서는, 소프트웨어 이미지에 포함된 키 정보에 기초하여 적어도 하나의 소프트 키 중 하나의 소프트 키를 획득하고, 획득된 소프트 키에 기초하여 소프트웨어 이미지를 인증할 수 있다.

Description

소프트웨어의 인증을 위한 장치 및 방법{APPARATUS AND METHOD FOR AUTHENTICATION OF SOFTWARE}
본 개시의 기술적 사상은 시스템 보안에 관한 것으로서, 구체적으로는 소프트웨어의 인증을 위한 장치 및 방법에 관한 것이다.
소프트웨어 및 하드웨어를 포함하는 시스템에 대한 공격은 다양한 방식으로 시도될 수 있다. 예를 들면, 공격자들은 시스템을 해체하고, 해체된 시스템으로부터 필요한 정보를 추출할 수 있다. 또한, 공격자들은 시스템의 소프트웨어 중 적어도 일부를 변경함으로써, 공격자들이 의도한 동작을 시스템이 수행하게 할 수 있다. 고도화된(advanced) 공격으로부터 시스템 또는 시스템에 저장된 데이터 등을 보호하기 위하여 다양한 유형의 시스템 보안 기법이 채용될 수 있으나, 시스템 보안 기법은 시스템의 제조, 동작, 확장, 비용 등에 오버헤드를 유발할 수 있다. 따라서, 오버헤드를 최소화하면서도 고도화된 공격으로부터 시스템을 보호할 수 있는 시스템 보안 기법이 요구될 수 있다.
본 개시의 기술적 사상은, 시스템의 소프트웨어를 안전하게 그리고 효율적으로 인증하기 위한 장치 및 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 시스템은, 프로세서, 및 프로세서에 의해서 실행되는 프로그램 이미지 및 적어도 하나의 소프트 키를 포함하는 키체인(keychain) 이미지를 포함하는, 소프트웨어 이미지들이 로딩되는 시스템 메모리를 포함할 수 있고, 프로세서는, 소프트웨어 이미지에 포함된 키 정보에 기초하여 적어도 하나의 소프트 키 중 하나의 소프트 키를 획득하고, 획득된 소프트 키에 기초하여 소프트웨어 이미지를 인증할 수 있다.
본 개시의 기술적 사상의 일측면에 따라 시스템 메모리에 로딩된 소프트웨어 이미지들을 인증하기 위하여 프로세서에 의해서 수행되는 방법은, 제1 키 정보및 적어도 하나의 소프트 키를 포함하는 제1 소프트웨어 이미지를 인증하는 단계, 및 제2 키 정보를 포함하는 제2 소프트웨어 이미지를 인증하는 단계를 포함할 수 있고, 제2 소프트웨어 이미지를 인증하는 단계는, 제2 소프트웨어 이미지로부터 제2 키 정보를 획득하는 단계, 제2 키 정보에 기초하여, 인증된 제1 소프트웨어 이미지로부터 제1 소프트 키를 획득하는 단계, 및 제1 소프트 키에 기초하여, 제2 소프트웨어 이미지의 디지털 서명을 검증하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따라 시스템에서 실행되는 소프트웨어 인증을 위하여, 서명된 소프트웨어 이미지를 생성하는 방법은, 서명된 소프트웨어 이미지로서, 시스템에서 실행될 프로그램 이미지를 생성하는 단계, 및 서명된 소프트웨어 이미지로서, 적어도 하나의 소프트 키를 포함하는 키체인(keychain) 이미지를 생성하는 단계를 포함할 수 있고, 프로그램 이미지를 생성하는 단계는, 시스템에서 실행되는 명령어들을 포함하는 제1 바이너리 이미지를 획득하는 단계, 제1 소프트 키에 의해서 검증되는 제1 서명을 생성하는 단계, 및 제1 바이너리 이미지 및 제1 서명을 포함하는 제1 서명된 프로그램 이미지를 생성하는 단계를 포함할 수 있다.
본 개시의 예시적 실시예에 따른 장치 및 방법에 의하면, 시스템에서 실행되는 다양한 소프트웨어가 안전하게 인증될 수 있고, 이에 따라 시스템은 높은 신뢰성을 가질 수 있다.
또한, 본 개시의 예시적 실시예에 따른 장치 및 방법에 의하면, 시스템에서 실행되는 인증된 소프트웨어가 용이하게 확장될 수 있고, 이에 따라 시스템의 개발, 제조, 공급, 유지(maintenance) 등에 있어서 현저하게 향상된 효율성이 달성될 수 있다.
본 개시의 예시적 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 아니하며, 언급되지 아니한 다른 효과들은 이하의 기재로부터 본 개시의 예시적 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 도출되고 이해될 수 있다. 즉, 본 개시의 예시적 실시예들을 실시함에 따른 의도하지 아니한 효과들 역시 본 개시의 예시적 실시예들로부터 당해 기술분야의 통상의 지식을 가진 자에 의해 도출될 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 시스템의 예시를 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시예에 따라 소프트웨어 이미지를 저장하는 시스템 메모리의 예시를 나타낸다.
도 3은 본 개시의 예시적 실시예에 따른 키체인 이미지의 구조의 예시를 나타내는 도면이다.
도 4는 본 개시의 예시적 실시예에 따른 소프트웨어 인증을 위한 방법의 예시를 나타내는 순서도이다.
도 5는 본 개시의 예시적 실시예에 따른 소프트웨어 인증을 위한 방법의 예시를 나타내는 순서도이다.
도 6a 및 도 6b는 본 개시의 예시적 실시예들에 따라 하드 키를 획득하는 동작의 예시들을 설명하기 위한 블록도들이다.
도 7은 본 개시의 예시적 실시예에 따른 소프트웨어 인증을 위한 방법의 예시를 나타내는 순서도이다.
도 8은 본 개시의 예시적 실시예에 따라 소프트웨어 이미지들을 인증하는 동작의 예시를 나타내는 도면이다.
도 9는 본 개시의 예시적 실시예에 따라 소프트웨어 이미지들을 인증하는 동작의 예시를 나타내는 도면이다.
도 10은 본 개시의 예시적 실시예에 따라 소프트웨어 이미지들을 인증하는 동작의 예시를 나타내는 도면이다.
도 11은 본 개시의 예시적 실시예에 따른 이미지 서명 시스템의 예시를 나타내는 블록도이다.
도 12는 본 개시의 예시적 실시예에 따른 소프트웨어 인증을 위한 방법의 예시를 나타내는 순서도이다.
도 13은 본 개시의 예시적 실시예에 따른 소프트웨어 인증을 위한 방법을 나타내는 순서도이다.
도 14는 본 개시의 예시적 실시예에 따른 소프트웨어 인증을 위한 방법을 나타내는 순서도이다.
도 1은 본 개시의 예시적 실시예에 따른 시스템의 예시를 나타내는 블록도이다. 일부 실시예들에서, 시스템(10)은, 비제한적인 예시로서 서버(server), 데스크탑 컴퓨터, 키오스크(kiosk) 등과 같은 고정형(stationary) 컴퓨팅 시스템 또는 그것의 서브시스템일 수 있다. 일부 실시예들에서, 시스템(10)은, 비제한적인 예시로서 모바일 폰, 웨어러블 기기, 랩탑 컴퓨터 등과 같은 휴대용(portable) 컴퓨팅 시스템 또는 그것의 서브시스템일 수 있다. 일부 실시예들에서, 시스템(10)은, 비제한적인 예시로서 가전, 산업기기, 운송수단 등과 같이, 독립형 컴퓨팅 시스템과 상이한 임의의 시스템에 포함되는 서브시스템일 수도 있다.
도 1을 참조하면, 시스템(10)은 프로세서(12), 시스템 메모리(14) 및 시스템 스토리지(16)를 포함할 수 있다. 일부 실시예들에서, 프로세서(12), 시스템 메모리(14) 및 시스템 스토리지(16) 각각은 반도체 공정에 의해서 제조될 수 있고, 프로세서(12), 시스템 메모리(14) 및 시스템 스토리지(16) 중 적어도 2개는 동일한 패키지에 포함될 수 있다. 또한, 일부 실시예들에서, 프로세서(12), 시스템 메모리(14) 및 시스템 스토리지(16)는 보드에 실장될 수 있고, 보드에 형성된 패턴들을 통해서 상호연결될 수 있다.
프로세서(12)는 적어도 하나의 코어(12_1), RAM(Random Access Memory)(12_2), ROM(Read Only Memory), 보안 메모리(12_4), 메모리 컨트롤러(12_5) 및 스토리지 컨트롤러(12_6)를 포함할 수 있고, 시스템 메모리(14)에 액세스하기 위한 인터페이스를 제공하는 메모리 컨트롤러(12_5)를 통해서 시스템 메모리(14)에 액세스할 수 있고, 시스템 스토리지(16)에 액세스하기 위한 인터페이스를 제공하는 스토리지 컨트롤러(12_6)에 의해서 시스템 스토리지(16)에 액세스할 수 있다. 일부 실시예들에서, 프로세서(12)는 적어도 하나의 코어(12_1), RAM(Random Access Memory)(12_2), ROM(Read Only Memory), 보안 메모리(12_4), 메모리 컨트롤러(12_5) 및 스토리지 컨트롤러(12_6)가 연결된 버스를 더 포함할 수 있다. 또한, 일부 실시예들에서, 프로세서(12)는 미리 정의된 동작을 고속으로 수행하도록 설계된 하드웨어 가속기, 프로세서(12)의 외부 구성요소와의 통신 채널을 제공하는 입출력(I/O) 인터페이스 등을 더 포함할 수도 있다. 일부 실시예들에서, 프로세서(12)의 구성요소들은 단일 칩 또는 단일 다이(die)에 집적될 수 있고, 프로세서(12)는 시스템-온-칩(System-on-Chip; SoC)으로서 지칭될 수 있다. 일부 실시예들에서, 프로세서(12)의 구성요소들은 하나의 패키지에 포함된 2이상의 칩들에 집적될 수 있고, 프로세서(12)는 시스템-인-패키지(System-in-Package; SiP)로서 지칭될 수도 있다. 일부 실시예들에서, 프로세서(12)는 어플리케이션 프로세서로서 지칭될 수도 있다.
적어도 하나의 코어(12_1)는 명령어들 실행하도록 구성된 임의의 프로세싱 엘리먼트를 지칭할 수 있다. 일부 실시예들에서, 적어도 하나의 코어(12_1)는 시스템 메모리(14)에 저장된 소프트웨어 이미지로서 프로그램 이미지에 포함된 명령어들을 실행할 수 있다. 예를 들면, 시스템 메모리(14)에 저장된 프로그램 이미지에 포함된 명령어들의 적어도 일부가 프로세서(12)의 메모리, 예컨대 RAM(12_2) 또는 적어도 하나의 코어(12_1)에 포함된 캐시(cache)에 복사될 수 있고, 적어도 하나의 코어(12_1)는 복사된 명령어들을 실행할 수 있다. 일부 실시예들에서, 적어도 하나의 코어(12_1)는, 대칭적인(homogeneous) 복수의 코어들 및/또는 비대칭적인(heterogeneous) 복수의 코어들을 포함할 수 있고, 복수의 코어들 각각은 독립적으로 명령어들을 실행할 수 있다. 예를 들면, 복수의 코어들은 저성능 프로세서 및/또는 고성능 프로세서를 포함하거나 비보안(non-security) 프로세서 및/또는 보안(security) 프로세서를 포함할 수 있다.
RAM(12_2)은 적어도 하나의 코어(12_1) 또는 프로세서(12)의 다른 구성요소에 의해서 사용되는 데이터를 일시적으로 저장할 수 있다. 예를 들면, RAM(12_2)은 시스템 메모리(14) 및/또는 시스템 스토리지(16)로부터 독출된 데이터를 일시적으로 저장할 수도 있고, 시스템 메모리(14) 및/또는 시스템 스토리지(16)에 기입할 데이터를 일시적으로 저장할 수도 있다. 또한, RAM(12_2)은 적어도 하나의 코어(12_1)에 의해서 실행되는 명령어들을 일시적으로 저장할 수도 있다. 일부 실시예들에서, RAM(12_2)은 SRAM(Static Random Access Memory)과 같이 상대적으로 빠른 동작 속도를 제공하는 휘발성 메모리를 포함할 수 있다.
ROM(12_3)은 적어도 하나의 코어(12_1)에 의해서 실행되는 프로그램 이미지를 비휘발적으로 저장할 수 있다. 예를 들면, 도 1에 도시된 바와 같이, ROM(12_3)은 프로세서(12)에 전력 공급이 개시되거나 프로세서(12)가 리셋되는 경우, 적어도 하나의 코어(12_1)가 가장 먼저 실행하는 명령어들을 포함하는 부트로더(bootloader)(IMG0)를 저장할 수 있고, 부트 ROM으로서 지칭될 수 있다. 일부 실시예들에서, ROM(12_3)은 적어도 하나의 코어(12_1)가 명령어들을 실행시 참조하는 불변의 데이터를 더 저장할 수도 있다.
보안 메모리(12_4)는 프로세서(12)의 고유한 데이터를 비휘발적으로 저장할 수 있다. 일부 실시예들에서, 보안 메모리(12_4)는, 프로세서(12)에서 데이터의 암호화 및 복호화에 사용되고 프로세서(12)의 고유한 값을 가지는, 적어도 하나의 하드웨어 키 또는 (예컨대, 키를 검증하는데 사용되는) 그것의 다이제스트(digest)를 저장할 수 있다. 본 명세서에서, 다이제스트는, 소스 정보를 검증하기 위하여 소스 정보로부터 암호학적으로 검증된 알고리즘에 기초하여 도출된 정보를 지칭할 수 있고, 상이한 소스 정보에 대응하는 다이제스트들 역시 상이할 수 있다. 예를 들면, 하드웨어 키의 다이제스트는, 예컨대 SHA(Secure Hash Algorithm)과 같이 해시(hash) 알고리즘에 기초하여 하드웨어 키로부터 도출된 해시를 지칭할 수 있다. 또한, 일부 실시예들에서, 보안 메모리(12_4)는, 시스템 메모리(14)에 로딩된 소프트웨어 이미지를 인증(authentication)하는데 사용되는 정보를 저장할 수 있다. 예를 들면, 보안 메모리(12_4)는, 도 6a를 참조하여 후술되는 바와 같이, 소프트웨어 이미지에 포함된 서명을 검증하는데 사용되는 키 또는 키의 다이제스트(예컨대, 해시)를 저장할 수 있다. 본 명세서에서, 프로세서(12) 내부에 저장되고, 소프트웨어 이미지에 포함된 서명을 검증하는데 사용되는, 키 또는 그것의 다이제스트는 하드 키(hard key) 또는 디바이스 키(device key)로서 지칭될 수 있고, 프로세서(12)는 하드 키를 포함하는 것으로 지칭될 수 있다. 일부 실시예들에서, 보안 메모리(12_4)는 안티-퓨즈(anti-fuse) 어레이와 같은 OTP(One-Time-Programmable) 메모리를 포함할 수 있다. 일부 실시예들에서, 전술된 하드 키는 ROM(12_3)에 저장될 수도 있다. 예를 들면, 하드 키는, 도 6b를 참조하여 후술되는 바와 같이, 부트로더(IMG0)에 포함될 수도 있고, ROM(12_3)에서 부트로더(IMG0)와 상이한 영역에 독립적으로 저장될 수도 있다.
시스템 메모리(14)는 적어도 하나의 소프트웨어 이미지를 저장할 수 있다. 일부 실시예들에서, 시스템 메모리(14)는, 비제한적인 예시로서 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory) 등과 같은 휘발성 메모리 장치를 포함할 수 있다. 일부 실시예들에서, 시스템 메모리(14)는, 비제한적인 예시로서 플래시 메모리, EEPROM(Electrically Erasable Programmable Read Only Memory), SONOS(Silicon-Oxide-Nitride-Oxide-Silicon) 메모리, 폴리머(polymer) 메모리, MRAM(Magnetic Random Access Memory), PRAM(Phase-change Random Access Memory), RRAM(Resistive Random Access Memory) 등과 같은 비휘발성 메모리 장치를 포함할 수 있다.
프로세서(12)는 ROM(12_3)에 저장된 소프트웨어 이미지에 포함된 프로그램코드를 수행하거나 또는 시스템 스토리지(16)에 저장된 소프트웨어 이미지를 시스템 메모리(14)에 로딩하여 로딩된 프로그램 코드를 수행할 수 있다. 예를 들면, ROM(12_3)에 저장된 부트로더(IMG0)는, 적어도 하나의 코어(12_1)에 의해서 실행됨으로써, 시스템 메모리(14)에 제1 소프트웨어 이미지(IMG1)를 시스템 스토리지(16)로부터 로딩할 수 있다. 또한, 제1 소프트웨어 이미지(IMG1)(즉, 이에 포함된 명령어들)는, 적어도 하나의 코어(12_1)에 의해서 실행됨으로써, 시스템 메모리(14)에 제2 소프트웨어 이미지(IMG2)를 시스템 스토리지(16)로부터 로딩할 수 있다. 유사하게, 제3 소프트웨어 이미지(IMG3)가 시스템 메모리(14)에 로딩될 수 있다. 일부 실시예들에서, 부트로더(IMG0)에 후속하여 시스템 메모리(14)에 로딩되는 적어도 하나의 소프트웨어 이미지, 예컨대 제1 소프트웨어 이미지(IMG1) 및 제2 소프트웨어 이미지(IMG2) 역시 부트로더로서 지칭될 수 있다. 본 명세서에서, 적어도 하나의 코어(12_1)가 소프트웨어 이미지에 포함된 명령어들을 실행함으로써 동작을 수행하는 것은, 프로세서(12)가 소프트웨어 이미지를 실행함으로써 해당 동작을 수행하는 것으로 지칭될 수도 있고, 소프트웨어 이미지 또는 프로세서(12)가 해당 동작을 수행하는 것으로 단순하게 지칭될 수도 있다.
공격자들은 시스템 메모리(14)에 로딩되는 소프트웨어 이미지를 변경하거나, 변경된 소프트웨어 이미지를 시스템 메모리(14)에 로딩함으로써, 시스템(10)의 해킹을 시도할 수 있다. 이에 따라, 시스템(10)은 시스템 메모리(14)에 로딩된 소프트웨어 이미지를 사용하기 전에 소프트웨어 이미지를 인증할 수 있고, 인증된 소프트웨어 이미지를 사용할 수 있다. 소프트웨어 이미지의 인증은 소프트웨어 이미지의 진정성(authenticity)을 판정하는 것으로서, 소프트웨어 이미지가 인증된(authenticated) 자에 의해서 생성된 것임을 판정하는 것을 지칭할 수 있다. 이에 따라, 시스템(10)에서 인증된 소프트웨어 이미지는 신뢰할 수 있는 소프트웨어 이미지를 지칭할 수 있다. 예를 들면, 부트로더(IMG0)는 시스템 메모리(14)에 제1 소프트웨어 이미지(IMG1)를 로딩한 후, 제1 소프트웨어 이미지(IMG1)를 인증할 수 있고, 프로세서(12)는 인증된 제1 소프트웨어 이미지(IMG1)를 실행할 수 있다. 유사하게, 인증된 제1 소프트웨어 이미지(IMG1)는 제2 소프트웨어 이미지(IMG2)를 인증할 수 있고, 인증된 제2 소프트웨어 이미지(IMG2)는 제3 소프트웨어 이미지(IMG3)를 인증할 수 있다. 일부 실시예들에서, 부트로더(IMG0)가 제2 소프트웨어 이미지(IMG2) 또는 제3 소프트웨어 이미지(IMG3)를 인증할 수도 있고, 인증된 제1 소프트웨어 이미지(IMG1)가 제3 소프트웨어 이미지(IMG3)를 인증할 수도 있다. 이와 같이, 소프트웨어 이미지를 로딩하고 인증한 후 실행하는 절차는, 보안 부트(secure boot)로서 지칭될 수 있다. 일부 실시예들에서, 인증에 실패한 소프트웨어 이미지는 시스템(10)에서 실행되지 아니할 수 있다.
전술된 바와 같이, 소프트웨어 이미지의 인증에 사용되는 정보로서 하드 키가 사용될 수 있다. 시스템(10)에서 사용되는 소프트웨어 이미지들, 즉 프로세서(12)가 실행하는 소프트웨어 이미지들은 다양할 수 있고, 다수의 주체들이 생성할 수 있다. 예를 들면, 프로세서(12)의 제조자, 시스템(10)의 제조자, 시스템(10)의 공급자, 시스템(10)의 관리자, 소프트웨어 공급자 등이 소프트웨어 이미지들을 생성할 수 있다. 이와 같이 다수의 주체들이 생성하는 다양한 소프트웨어 이미지들을 프로세서(12)에 포함된 하드 키를 사용하여 인증하는 것은, 다양한 주체들에 의한 소프트웨어 이미지들의 생성을 제한할 수 있을 뿐만 아니라 하드 키(또는 하드 키가 유도된 개인 키)의 노출을 유발할 수 있다. 또한, 프로세서(12)는 제한된 수의 하드 키들을 포함할 수 있고, 보안 메모리(12_4) 및/또는 ROM(12_3)에 저장된 하드 키를 사후에 수정하는 것은 용이하지 아니할 수 있다. 또한, 시스템(10)의 유지(maintenance)에서 시스템(10)에 업데이트되는 소프트웨어 이미지들을 제한된 하드 키를 사용하여 지속적으로 인증하는 것은 하드 키가 유도된 개인 키를 지속적으로 관리하는 것을 요구할 수 있을 뿐만 아니라 하드 키의 노출을 유발할 수 있다.
이하에서 도면들을 참조하여 후술되는 바와 같이, 시스템 메모리(14)에 로딩되는 소프트웨어 이미지는, 프로세서(12)에 의해서 실행되는 명령어들을 포함하는 프로그램 이미지뿐만 아니라, 소프트웨어 이미지를 인증하는데 사용되는 적어도 하나의 키(또는 그것의 다이제스트)를 포함하는 키체인(keychain) 이미지를 포함할 수 있다. 일부 실시예들에서, 키체인 이미지는 키 스토리지(key storage) 이미지로서 지칭될 수도 있다. 프로그램 이미지뿐만 아니라 키체인 이미지 역시 시스템(10)에서 인증될 수 있고, 이에 따라 인증된 키체인 이미지에 의해서 소프트웨어 이미지를 인증하기 위한 키들이 안전하게 확장될 수 있으며, 결과적으로 소프트웨어 이미지의 인증이 하드 키에 제한되어 발생하는 문제들이 해소될 수 있다. 본 명세서에서, 키체인 이미지에 포함되고 소프트웨어 이미지를 인증하는데 사용되는 키 또는 그것의 다이제스트는, 소프트 키(soft key)로서 지칭될 수 있고, 키체인 이미지는 적어도 하나의 소프트 키를 포함하는 것으로 지칭될 수 있다. 프로그램 이미지 및 키체인(keychain) 이미지는 도 2 등을 참조하여 후술될 것이다.
시스템 스토리지(16)는 전력의 공급이 차단되어도 저장된 데이터를 소실하지 아니할 수 있다. 예를 들면, 시스템 스토리지(16)는, 비휘발성 메모리 장치를 포함할 수도 있고, 테이프, 자기디스크, 광학디스크와 같은 저장 매체를 포함할 수도 있다. 프로세서(12)는 시스템 스토리지(16)에 저장된 데이터를 처리할 수도 있고, 데이터를 생성하여 시스템 스토리지(16)에 저장할 수도 있으며, 시스템 스토리지(16)에 저장된 소프트웨어 이미지를 시스템 메모리(14)로 로딩할 수도 있다.
도 2는 본 개시의 예시적 실시예에 따라 소프트웨어 이미지를 저장하는 시스템 메모리의 예시를 나타낸다. 도 2에 도시된 바와 같이, 시스템 메모리(20)는 제1 소프트웨어 이미지(IMG1) 및 제2 소프트웨어 이미지(IMG2)를 저장할 수 있다. 시스템 메모리(20)에 저장된 소프트웨어 이미지들은 동적으로 변동할 수 있고, 도 2는 특정 시점에서 시스템 메모리(20)의 상태를 나타낸다. 예를 들면, 시스템 메모리(20)는 2개 이상의 소프트웨어 이미지들을 동시에 저장할 수도 있고, 제1 소프트웨어 이미지(IMG1) 및 제2 소프트웨어 이미지(IMG2)의 적어도 하나는 새로운 소프트웨어 이미지의 로딩에 의해서 시스템 메모리(20)로부터 교체 또는 무효화될(invalidate) 수도 있다. 이하에서, 도 2는 도 1을 참조하여 설명될 것이다.
시스템 메모리(20)는 소프트웨어 이미지로서 프로그램 이미지 및 키체인 이미지를 저장할 수 있다. 예를 들면, 도 2에 도시된 바와 같이, 제1 소프트웨어 이미지(IMG1)는 프로그램 이미지로서, 바이너리 이미지(BIN), 제1 키 정보(KNF1) 및 제1 디지털 서명(SIG1)을 포함할 수 있다. 또한, 제2 소프트웨어 이미지(IMG2)는 키체인 이미지로서, 키체인(KCH), 제2 키 정보(KNF2) 및 제2 디지털 서명(SIG2)을 포함할 수 있다. 일부 실시예들에서, 도 2에 도시된 바와 같이, 프로그램 이미지 및 키체인 이미지는 동일한 구조를 가질 수 있고, 도 11을 참조하여 후술되는 바와 같이, 공통의 시스템으로부터 생성될 수 있다.
제1 소프트웨어 이미지(IMG1)에 포함된 바이너리 이미지(BIN)는 적어도 하나의 코어(12_1)에 의해서 실행되는 일련의 명령어들을 포함할 수 있다. 예를 들면, 바이너리 이미지(BIN)는 프로그래밍 언어로 작성된 소스 코드를 컴파일(compile)함으로써 생성될 수 있다. 일부 실시예들에서, 바이너리 이미지(BIN)는 명령어들뿐만 아니라 명령어들에 의해서 참조되는 데이터를 포함할 수 있다. 바이너리 이미지(BIN)는, 바이너리 데이터, 바이너리 코드, 바이너리 코드 이미지 등으로 지칭될 수도 있다.
제2 소프트웨어 이미지(IMG2)에 포함된 키체인(KCH)은 적어도 하나의 소프트 키를 포함할 수 있다. 예를 들면, 키체인(KCH)은 제2 소프트웨어 이미지(IMG2)와 상이한 소프트웨어 이미지들을 인증하는데 사용되는 복수의 소프트 키들 또는 그것들의 다이제스트들을 포함할 수 있다. 키체인(KCH)의 예시는 도 3을 참조하여 후술될 것이다.
프로그램 이미지 및 키체인 이미지는 키 정보를 공통적으로 포함할 수 있다. 키 정보는 소프트웨어 이미지의 인증에 사용되는 키에 대한 정보로서, 예컨대 제1 키 정보(KNF1)는 제1 소프트웨어 이미지(IMG1)의 인증에 사용되는 키에 대한 정보를 나타내고, 제2 키 정보(KNF2)는 제2 소프트웨어 이미지(IMG2)의 인증에 사용되는 키에 대한 정보를 나타낸다. 키 정보는 하드 키 또는 소프트 키를 나타내는 값을 포함할 수 있고, 복수의 하드 키들 또는 복수의 소프트 키들 중 하나를 식별하기 위한 키 인덱스를 더 포함할 수 있다.
프로그램 이미지 및 키체인 이미지는 디지털 서명을 공통적으로 포함할 수 있다. 디지털 서명은 소프트웨어 이미지를 인증, 즉 소프트웨어 이미지의 진정성을 증명하기 위한 것으로서, 키에 의해서 검증될 수 있고, 검증이 성공한 소프트웨어 이미지는 인증된 소프트웨어 이미지로서 지칭될 수 있다. 예를 들면, 제1 소프트웨어 이미지(IMG1)에 포함된 제1 디지털 서명(SIG1)은 제1 키 정보(KNF1)에 따라 하드 키 또는 소프트 키에 의해서 검증될 수 있다. 또한, 제2 소프트웨어 이미지(IMG2)에 포함된 제2 디지털 서명(SIG2)은 제2 키 정보(KNF2)에 따라 하드 키 또는 소프트 키에 의해서 검증될 수 있다. 제1 소프트웨어 이미지(IMG1) 및 제2 소프트웨어 이미지(IMG2)와 같이, 서명을 포함하는 소프트웨어 이미지는 서명된(signed) 소프트웨어 이미지로서 지칭될 수 있고, 본 명세서에서 서명된 소프트웨어 이미지는 소프트웨어 이미지로서 단순하게 지칭될 수 있다. 도 11 내지 도 14를 참조하여, 소프트웨어 이미지를 생성하는 방법의 예시들이 후술될 것이다.
도 3은 본 개시의 예시적 실시예에 따른 키체인 이미지의 구조의 예시를 나타내는 도면이다. 키체인 이미지(30)는, 도 2를 참조하여 전술된 바와 같이, 키체인(KCH), 키 정보(KNF) 및 디지털 서명(SIG)을 포함할 수 있고, 헤더(HEA)를 더 포함할 수 있다. 일부 실시예들에서, 키체인 이미지는 구성요소들이 도 3에 도시된 바와 상이하게 배치된 구조를 가질 수도 있고, 도 3에 도시된 구성요소들 중 일부만을 포함할 수도 있으며, 도 3에 도시되지 아니한 추가적인 구성요소를 더 포함할 수도 있다. 이하에서 도 3에 대한 설명 중 도 2에 대한 설명과 중복되는 내용은 생략될 것이다.
헤더(HEA)는 키체인 이미지(30)에 대한 정보를 포함할 수 있다. 예를 들면, 헤더(HEA)는, 비제한적인 예시로서 키체인 이미지(30)를 나타내는 식별자, 키체인 이미지(30)의 버전, 헤더(HEA)의 길이, 키체인(KCH)에 포함된 소프트 키들의 수, 키체인 이미지(30)의 생성 정보(예컨대, 생성 일자 및/또는 생성자), 키체인(KCH)에 포함된 유효한 데이터(예컨대, 메타 영역(META) 및 키 영역(KEYS))의 길이 중 적어도 하나를 포함할 수 있다. 프로세서(12) 및/또는 소프트웨어 개발자는, 헤더(HEA)에 포함된 정보에 기초하여 키체인 이미지(30)를 식별할 수 있다.
키체인(KCH)은 메타 영역(META), 키 영역(KEYS) 및 제로 패딩 영역(ZPD)을 포함할 수 있다. 메타 영역(META)은 키 영역(KEYS)에 포함된 소프트 키들의 메타 데이터를 포함할 수 있다. 예를 들면, 도 3에 도시된 바와 같이, 메타 영역(META)은 키 영역(KEYS)에 포함된 제1 내지 제n 소프트 키(KEY1S 내지 KEYnS)에 대응하는 제1 내지 제n 메타 데이터(MET1 내지 METn)를 포함할 수 있다(n은 0보다 큰 정수). 메타 데이터는 대응하는 소프트 키에 대한 정보를 포함할 수 있다. 예를 들면, 메타 데이터는, 비제한적인 예시로서 소프트 키의 명칭, 소프트 키가 속하는 그룹 정보, 소프트 키에 의해서 인증될 소프트웨어 이미지에 대한 정보, 소프트 키의 식별자 중 적어도 하나를 포함할 수 있다. 키 영역(KEYS)은 적어도 하나의 소프트 키를 포함할 수 있다. 예를 들면, 도 3에 도시된 바와 같이, 키 영역(KEYS)은 제1 내지 제n 소프트 키(KEY1S 내지 KEYnS)를 포함할 수 있다. 전술된 바와 같이, 키 영역(KEYS)에 포함된 소프트 키는 소프트웨어 이미지에 포함된 디지털 서명을 검증하는데 사용될 수 있고, 일부 실시예들에서, 개인 키(private key)와 함께 생성된 공개 키(public key) 또는 공개 키의 다이제스트(예컨대, 해시)일 수 있다. 제로 패딩 영역(ZPD)은 키체인(KCH)에 포함된 소프트 키들의 개수에 따라 가변적인 길이를 가질 수 있고, 임의의 데이터(예컨대, 모두 영인 데이터)를 포함할 수 있다.
키 정보(KNF)는, 도 2를 참조하여 전술된 바와 같이, 키체인 이미지(30)를 인증하는데 사용되는, 즉 디지털 서명(SIG)을 검증하는데 사용되는 키에 대한 정보를 포함할 수 있다. 또한, 디지털 서명(SIG)은, 도 2를 참조하여 전술된 바와 같이, 키 정보(KNF)에 의해서 특정되는 키에 의해서 검증될 수 있고, 디지털 서명(SIG)의 검증이 성공한 경우 키체인 이미지(30)는 인증될 수 있다.
도 4는 본 개시의 예시적 실시예에 따른 소프트웨어 인증을 위한 방법의 예시를 나타내는 순서도이다. 구체적으로, 도 4의 순서도는 소프트웨어 이미지를 인증하는 방법을 나타낸다. 일부 실시예들에서, 도 4는 도 1의 시스템(10)에서 수행될 수 있고, 예컨대, 소프트웨어 이미지 인증은 부트로더(IMG0) 또는 이미 인증된 소프트웨어 이미지(즉, 프로그램 이미지)에 의해서 수행될 수 있다. 소프트웨어 이미지를 인증하는 방법은, 도 4에 도시된 바와 같이 복수의 단계들(S50, S70, S90)을 포함할 수 있고, 도 1의 프로세서(12)에 의해서 수행되는 것으로 가정되며, 도 1을 참조하여 설명될 것이다.
일부 실시예들에서, 도 4의 소프트웨어 이미지를 인증하는 방법은, 보안 프로세서에 의해서 수행될 수 있다. 예를 들면, 동일한 출원인에 의해서 본 출원과 동일자에 출원되고 본 명세서에 전체로서 참조되어 포함되는, 명칭 '키를 안전하게 관리하기 위한 장치 및 방법(APPARATUS AND METHOD FOR SECURELY MANAGING KEYS)'의 한국 특허 출원에서 개시된 보안 프로세서 및 비보안 프로세서를 포함하는 집적 회로와 같이, 도 1의 프로세서(12)는 보안 프로세서 및 비보안 프로세서를 포함할 수 있고, 도 4의 소프트웨어 이미지를 인증하는 방법은 프로세서(12)에 포함된 보안 프로세서에 의해서 수행될 수 있다.
단계 S50에서, 소프트웨어 이미지의 키 정보 및 디지털 서명을 획득하는 동작이 수행될 수 있다. 예를 들면, 프로세서(12)는 소프트웨어 이미지에 포함된 키 정보 및 디지털 서명을 시스템 메모리(14)로부터 독출할 수 있다. 일부 실시예들에서, 도 4에 도시된 바와 상이하게, 디지털 서명의 획득은 단계 S70에 후속하여 수행될 수도 있다.
단계 S70에서, 하드 키 또는 소프트 키를 획득하는 동작이 수행될 수 있다. 예를 들면, 프로세서(12)는 단계 S50에서 획득된 키 정보에 기초하여 소프트웨어 이미지를 인증하는데 사용되는 키가 하드 키인지 또는 소프트 키인지를 판정할 수 있고, 판정 결과에 따라 하드 키 또는 소프트 키를 획득할 수 있다. 단계 S70의 예시는 도 5를 참조하여 후술될 것이다.
단계 S90에서, 디지털 서명을 검증하는 동작이 수행될 수 있다. 예를 들면, 프로세서(12)는 단계 S50에서 획득된 디지털 서명을, 단계 S70에서 획득된 키를 사용하여 검증할 수 있다. 일부 실시예들에서, 단계 S70에서 획득된 키(하드 키 또는 소프트 키)는 개인 키 및 공개 키로 구성된 키 페어(key pair)에서 공개 키(또는 공개 키의 다이제스트)에 대응할 수 있고, 디지털 서명은 개인 키로부터 유도될 수 있다. 이에 따라, 소프트웨어 이미지가 인증된 자에 의해서 생성된 경우, 하드 키 또는 소프트 키에 기초한 디지털 서명의 검증이 성공할 수 있다.
도 5는 본 개시의 예시적 실시예에 따른 소프트웨어 인증을 위한 방법의 예시를 나타내는 순서도이다. 구체적으로, 도 5의 순서도는 도 4의 단계 S70의 예시를 나타낸다. 도 4를 참조하여 전술된 바와 같이, 도 5의 단계 S70'에서 하드 키 또는 소프트 키를 획득하는 동작이 수행될 수 있다. 도 5에 도시된 바와 같이, 단계 S70'은 복수의 단계들(S72, S74, S76)을 포함할 수 있고, 이하에서 도 5는 도 1을 참조하여 설명될 것이다.
단계 S72에서, 키 유형을 판정하는 동작이 수행될 수 있다. 예를 들면, 프로세서(12)는 키 정보에 포함된, 키 유형을 나타내는 값에 기초하여 하드 키 또는 소프트 키를 판정할 수 있다. 도 5에 도시된 바와 같이, 키 정보가 하드 키를 나타내는 값을 포함하는 경우 단계 S74에서 하드 키를 획득하는 동작이 수행될 수 있다. 일부 실시예들에서, 키 정보는 키 유형 필드를 포함할 수 있고, 키 유형 필드는 하드 키 또는 소프트 키를 나타내는 값을 포함할 수 있다. 일부 실시예들에서, 프로세서(12)는 복수의 하드 키들을 포함할 수 있고, 키 정보는 복수의 하드 키들 중 하나의 하드 키를 식별하기 위한 키 인덱스를 포함할 수 있으며, 프로세서(12)는 키 인덱스에 기초하여 복수의 하드 키들 중 하나의 하드 키를 획득할 수도 있다. 단계 S74에서 하드 키를 획득하는 동작의 예시들은 도 6a 및 도 6b를 참조하여 후술될 것이다.
키 정보가 소프트 키를 나타내는 값을 포함하는 경우, 단계 S76에서, 키 인덱스에 대응하는 소프트 키를 획득하는 동작이 수행될 수 있다. 예를 들면, 프로세서(12)는 키 정보에 포함된 키 인덱스를 추출할 수 있고, 키체인 이미지에 포함된 소프트 키들 중 키 인덱스에 대응하는 소프트 키를 획득할 수 있다. 키 인덱스는 키체인 이미지에서 소프트 키를 식별할 수 있는 임의의 정보를 포함할 수 있다. 예를 들면, 키 인덱스는, 키체인 이미지(또는 도 3의 키체인(KCH))에서 소프트 키가 저장된 영역의 주소 오프셋을 포함할 수도 있고, 소프트 키를 식별할 수 있는 식별자, 예컨대 소프트 키의 CRC(Cyclic Redundancy Check), 체크섬(checksum), 비암호학적 해시, 임의의 검색 키 생성 알고리즘에 의해서 생성된 검색 키 등을 포함할 수도 있다. 단계 S76의 예시가 도 7을 참조하여 후술될 것이다.
도 6a 및 도 6b는 본 개시의 예시적 실시예들에 따라 하드 키를 획득하는 동작의 예시들을 설명하기 위한 블록도들이다. 도 5를 참조하여 전술된 바와 같이, 도 1의 프로세서(12)는 소프트웨어 이미지에 포함된 키 정보가 하드 키를 나타내는 값을 포함하는 경우, 하드 키(KEYH)를 획득할 수 있다. 도 6a 및 도 6b에 대한 설명 중 도면들을 참조하여 전술된 바와 중복되는 내용은 생략될 것이다.
도 6a를 참조하면, 하드 키(KEYH)는 보안 메모리(64a)에 저장될 수 있다. 예를 들면, 도 6a에 도시된 바와 같이, 프로세서(60a)는 적어도 하나의 코어(62a) 및 보안 메모리(64a)를 포함할 수 있고, 보안 메모리(64a)는 하드 키(KEYH)를 저장할 수 있다. 적어도 하나의 코어(62a), 즉 적어도 하나의 코어(62a)에 의해서 실행됨으로써 소프트웨어 인증을 수행하는 프로그램 이미지는 보안 메모리(64a)에 액세스함으로써 하드 키(KEYH)를 획득할 수 있다. 일부 실시예들에서, 하드 키(KEYH)는 프로세서(60a)의 제조 과정에서, 보안 메모리(64a)에 포함된 재기입이 불가능한 비휘발성 메모리에 프로그램될 수 있다. 일부 실시예들에서, 보안 메모리(64a)는 하드 키(KEYH)를 포함하는 복수의 하드 키들을 저장할 수 있다.
도 6b를 참조하면, 하드 키(KEYH)는 프로그램 이미지에 포함될 수 있다. 예를 들면, 도 6b에 도시된 바와 같이, 프로그램 이미지로서, 바이너리 이미지(BIN), 키 정보(KNF) 및 디지털 서명(SIG)을 포함하는 부트로더(BL)가 시스템 메모리(60b)에 로딩될 수 있다. 하드 키(KEYH)는 부트로더(BL)의 바이너리 이미지(BIN)에 포함될 수 있고, 이에 따라 프로세서(예컨대, 도 1의 12), 즉 프로세서에 의해서 실행됨으로써 소프트웨어 인증을 수행하는 프로그램 이미지는 시스템 메모리(60b)에 저장된 부트로더(BL)에 액세스함으로써 하드 키(KEYH)를 획득할 수 있다.
도 7은 본 개시의 예시적 실시예에 따른 소프트웨어 인증을 위한 방법의 예시를 나타내는 순서도이다. 구체적으로, 도 7의 순서도는 도 5의 단계 S76의 예시를 나타낸다. 도 5를 참조하여 전술된 바와 같이, 도 7의 단계 S76'에서 키 인덱스에 대응하는 소프트 키를 획득하는 동작이 수행될 수 있다. 도 7에 도시된 바와 같이, 단계 S76'은 단계 S76_2 및 단계 S76_4를 포함할 수 있다. 이하에서, 도 7에 대한 설명에서 도 3의 키체인 이미지(30)에 포함된 제1 내지 제n 소프트 키(KEY1S 내지 KEYnS) 중 하나의 소프트 키가 획득되는 것으로 가정되고, 도 7은 도 1 및 도 3을 참조하여 설명될 것이다.
단계 S76_2에서, 키체인에 포함된 소프트 키들의 식별자들을 획득하는 동작이 수행될 수 있다. 예를 들면, 프로세서(12)는 키체인 이미지(30)의 키체인(KCH)에 포함된 제1 내지 제n 소프트 키(KEY1S 내지 KEYnS)의 식별자들을 획득할 수 있다. 일부 실시예들에서, 제1 내지 제n 메타데이터(MET1 내지 METn)는 제1 내지 제n 소프트 키(KEY1S 내지 KEYnS)의 식별자들을 각각 포함할 수 있고, 프로세서(12)는 제1 내지 제n 메타데이터(MET1 내지 METn)로부터 식별자들을 획득할 수 있다. 일부 실시예들에서, 프로세서(12)는 제1 내지 제n 소프트 키(KEY1S 내지 KEYnS)로부터 식별자들을 생성할 수도 있다. 일부 실시예들에서, 도 10을 참조하여 후술되는 바와 같이, 프로세서(12)는 복수의 키체인 이미지들에 포함된 소프트 키들의 식별자들을 획득할 수도 있다.
단계 S76_4에서, 키 인덱스와 일치하는 식별자에 대응하는 소프트 키를 획득하는 동작이 수행될 수 있다. 예를 들면, 키 정보에 포함된 키 인덱스는 소프트 키의 식별자일 수 있고, 프로세서(12)는 단계 S76_2에서 획득된 식별자들 중 키 인덱스와 일치하는 식별자를 판정할 수 있고, 판정된 식별자에 대응하는 소프트 키를 획득할 수 있다.
도 8은 본 개시의 예시적 실시예에 따라 소프트웨어 이미지들을 인증하는 동작의 예시를 나타내는 도면이다. 구체적으로, 도 8은 소프트웨어 이미지들이 인증되는 과정에서 도 1의 시스템 메모리(14)의 상태들(81 내지 85)을 나타낸다. 이하에서, 도 8은 도 1을 참조하여 설명될 것이다.
제1 상태(81)에서, 시스템 메모리(14)는 인증된 프로그램 이미지로서 제1 소프트웨어 이미지(IMG1)를 저장할 수 있다. 예를 들면, 제1 소프트웨어 이미지(IMG1)는 제1 소프트웨어 이미지(IMG1)가 로딩되기 전 시스템 메모리에 로딩된 프로그램 이미지에 의해서 인증될 수도 있고, ROM(12_3)에 저장된 부트로더(IMG0)에 의해서 인증될 수도 있다.
제2 상태(82)에서, 시스템 메모리(14)에 프로그램 이미지로서 제2 소프트웨어 이미지(IMG2)가 로딩될 수 있다. 예를 들면, 인증된 제1 소프트웨어 이미지(IMG1)는 시스템 스토리지(16)로부터 시스템 메모리(14)에 제2 소프트웨어 이미지(IMG2)를 로딩할 수 있고, 로딩된 제2 소프트웨어 이미지(IMG2)의 인증을 시도할 수 있다.
제3 상태(83)에서, 제2 소프트웨어 이미지(IMG2)가 인증될 수 있고, 시스템 메모리(14)에 키체인 이미지로서 제3 소프트웨어 이미지(IMG3)가 로딩될 수 있다. 예를 들면, 제2 소프트웨어 이미지(IMG2)는 키 정보에 따라 하드 키를 사용하여 인증될 수 있다. 또한, 인증된 제1 소프트웨어 이미지(IMG1) 또는 인증된 제2 소프트웨어 이미지(IMG2)는, 시스템 스토리지(16)로부터 시스템 메모리(14)에 제3 소프트웨어 이미지(IMG3)를 로딩할 수 있고, 로딩된 제3 소프트웨어 이미지(IMG3)의 인증을 시도할 수 있다.
제4 상태(84)에서, 제3 소프트웨어 이미지(IMG3)가 인증될 수 있고, 시스템 메모리(14)에 프로그램 이미지로서 제4 소프트웨어 이미지(IMG4)가 로딩될 수 있다. 예를 들면, 제3 소프트웨어 이미지(IMG3)는 키 정보에 따라 하드 키를 사용하여 인증될 수 있다. 또한, 인증된 제1 소프트웨어 이미지(IMG1) 또는 인증된 제2 소프트웨어 이미지(IMG2)는, 시스템 스토리지(16)로부터 시스템 메모리(14)에 제4 소프트웨어 이미지(IMG4)를 로딩할 수 있고, 로딩된 제4 소프트웨어 이미지(IMG4)의 인증을 시도할 수 있다.
제5 상태(85)에서, 제4 소프트웨어 이미지(IMG4)가 인증될 수 있다. 예를 들면, 제4 소프트웨어 이미지(IMG4)는 키 정보에 따라 하드 키 또는 제3 소프트웨어 이미지(IMG3)에 포함된 소프트 키를 사용하여 인증될 수 있다. 이에 따라, 시스템 메모리(14)는 순차적으로 인증된 소프트웨어 이미지들을 저장할 수 있고, 프로세서(12)는 저장된 소프트웨어 이미지들 중 프로그램 이미지들을 실행할 수 있다.
도 9는 본 개시의 예시적 실시예에 따라 소프트웨어 이미지들을 인증하는 동작의 예시를 나타내는 도면이다. 구체적으로, 도 9는 소프트웨어 이미지들이 인증되는 과정에서 도 1의 시스템 메모리(14)의 상태들(91 내지 95)을 나타낸다. 이하에서, 도 9는 도 1을 참조하여 설명될 것이다.
도 9를 참조하면, 제1 상태(91)에서, 시스템 메모리(14)는 인증된 프로그램 이미지로서 제1 소프트웨어 이미지(IMG1)를 저장할 수 있다. 예를 들면, 제1 소프트웨어 이미지(IMG1)는 제1 소프트웨어 이미지(IMG1)가 로딩되기 전 시스템 메모리에 로딩된 프로그램 이미지에 의해서 인증될 수도 있고, ROM(12_3)에 저장된 부트로더(IMG0)에 의해서 인증될 수도 있다.
제2 상태(92)에서, 시스템 메모리(14)에 키체인 이미지로서 제2 소프트웨어 이미지(IMG2)가 로딩될 수 있다. 예를 들면, 인증된 제1 소프트웨어 이미지(IMG1)는 시스템 스토리지(16)로부터 시스템 메모리(14)에 제2 소프트웨어 이미지(IMG2)를 로딩할 수 있고, 로딩된 제2 소프트웨어 이미지(IMG2)의 인증을 시도할 수 있다.
제3 상태(93)에서, 제2 소프트웨어 이미지(IMG2)가 인증될 수 있고, 시스템 메모리(14)에 프로그램 이미지로서 제3 소프트웨어 이미지(IMG3)가 로딩될 수 있다. 예를 들면, 제2 소프트웨어 이미지(IMG2)는 키 정보에 따라 하드 키를 사용하여 인증될 수 있다. 또한, 인증된 제1 소프트웨어 이미지(IMG1)는, 시스템 스토리지(16)로부터 시스템 메모리(14)에 프로그램 이미지로서 제3 소프트웨어 이미지(IMG3)를 로딩할 수 있고, 로딩된 제3 소프트웨어 이미지(IMG3)의 인증을 시도할 수 있다.
제4 상태(94)에서, 제3 소프트웨어 이미지(IMG3)가 인증될 수 있고, 시스템 메모리(14)에 키체인 이미지로서 제4 소프트웨어 이미지(IMG4)가 로딩될 수 있다. 예를 들면, 제3 소프트웨어 이미지(IMG3)는 키 정보에 따라 하드 키 또는 소프트 키를 사용하여 인증될 수 있다. 제3 소프트웨어 이미지(IMG3)의 키 정보가 소프트 키를 나타내는 경우, 제2 소프트웨어 이미지(IMG2)에 포함된 소프트 키가 식별될 수 있고, 제3 소프트웨어 이미지(IMG3)는 식별된 소프트 키를 사용하여 인증될 수 있다. 또한, 인증된 제1 소프트웨어 이미지(IMG1) 또는 인증된 제3 소프트웨어 이미지(IMG3)는, 시스템 스토리지(16)로부터 시스템 메모리(14)에 키체인 이미지로서 제4 소프트웨어 이미지(IMG4)를 로딩할 수 있고, 로딩된 제4 소프트웨어 이미지(IMG4)의 인증을 시도할 수 있다.
제5 상태(95)에서, 제4 소프트웨어 이미지(IMG4)가 인증될 수 있다. 예를 들면, 제4 소프트웨어 이미지(IMG4)는 키 정보에 따라 하드 키 또는 소프트 키를 사용하여 인증될 수 있다. 제4 소프트웨어 이미지(IMG4)의 키 정보가 소프트 키를 나타내는 경우, 제2 소프트웨어 이미지(IMG2)에 포함된 소프트 키가 식별될 수 있고, 제4 소프트웨어 이미지(IMG4)는 식별된 소프트 키를 사용하여 인증될 수 있다.
도 10은 본 개시의 예시적 실시예에 따라 소프트웨어 이미지들을 인증하는 동작의 예시를 나타내는 도면이다. 구체적으로, 도 10은 소프트웨어 이미지들을 인증하는 과정에서 도 1의 시스템 메모리(14)의 상태들(101 내지 103)을 나타낸다. 이하에서, 도 10은 도 1을 참조하여 설명될 것이다.
도 10을 참조하면, 제1 상태(101)에서, 시스템 메모리(14)는, 인증된 키체인 이미지로서 제1 소프트웨어 이미지(IMG1), 인증된 키체인 이미지로서 제2 소프트웨어 이미지(IMG2) 및 인증된 프로그램 이미지로서 제3 프로그램 이미지(IMG3)를 저장할 수 있다.
제2 상태(102)에서, 시스템 메모리(14)에 프로그램 이미지로서 제4 소프트웨어 이미지(IMG4)가 로딩될 수 있다. 예를 들면, 인증된 제3 소프트웨어 이미지(IMG3)는 시스템 스토리지(16)로부터 시스템 메모리(14)에 제4 소프트웨어 이미지(IMG4)를 로딩할 수 있고, 로딩된 제4 소프트웨어 이미지(IMG4)의 인증을 시도할 수 있다. 제4 소프트웨어 이미지(IMG4)는 키 정보에 따라 소프트 키를 사용하여 인증이 시도될 수 있다. 즉, 제4 소프트웨어 이미지(IMG4)의 키 정보는 소프트 키를 나타내는 값을 포함할 수 있다. 일부 실시예들에서, 프로세서(12)는 제4 소프트웨어 이미지(IMG4)의 키 정보에 포함된 키 인덱스에 기초하여, 제1 소프트웨어 이미지(IMG1) 및 제2 소프트웨어 이미지(IMG2)에 포함된 소프트 키들 중 하나의 소프트 키를 식별할 수 있고, 식별된 소프트 키를 사용하여 제4 소프트웨어 이미지(IMG4)의 인증을 시도할 수 있다. 예를 들면, 프로세서(12)는 제1 소프트웨어 이미지(IMG1) 및 제2 소프트웨어 이미지(IMG2)를 순차적으로(또는 반대의 순서로) 액세스함으로써 소프트 키들의 식별자들을 획득할 수 있고, 키 인덱스와 일치하는 식별자에 대응하는 소프트 키를 판정할 수 있다.
제3 상태(103)에서, 제4 소프트웨어 이미지(IMG4)가 인증될 수 있다. 예를 들면, 제1 소프트웨어 이미지(IMG1)는, 제4 소프트웨어 이미지(IMG4)의 키 정보에 포함된 키 인덱스에 대응하는 소프트 키를 포함할 수 있고, 해당 소프트 키를 사용하여 제4 소프트웨어 이미지(IMG4)에 포함된 디지털 서명의 검증이 성공할 수 있다.
도 11은 본 개시의 예시적 실시예에 따른 이미지 서명 시스템의 예시를 나타내는 블록도이다. 도 11에 도시된 바와 같이, 이미지 서명 시스템(110)은 소프트웨어 이미지(IMG)를 생성할 수 있고, 소프트웨어 이미지(IMG)는 도 1의 시스템 스토리지(16)에 저장될 수 있다.
이미지 서명 시스템(110)은 임의의 컴퓨팅 시스템으로 구현될 수 있다. 예를 들면, 이미지 서명 시스템(110)의 구성요소들 각각은, 논리 합성을 통해서 설계되는 하드웨어 모듈, 적어도 하나의 코어에 의해서 실행되는 소프트웨어 모듈, 적어도 하나의 코어 및 소프트웨어 모듈을 포함하는 프로세싱 유닛 및 전술된 것들의 조합에 의해서 구현될 수 있다. 이미지 서명 시스템(110)은 이미지 생성 정보(GEN)를 수신할 수 있다. 예를 들면, 이미지 생성 정보(GEN)는 소프트웨어 이미지(IMG)의 유형(즉, 프로그램 이미지 또는 키체인 이미지), 소프트웨어 이미지(IMG)의 인증에 사용되는 키의 유형 등을 포함할 수 있다. 이미지 생성 정보(GEN)는 이미지 서명 시스템(110)의 포함된 구성요소들에 제공될 수 있다. 도 11에 도시되 바와 같이, 이미지 서명 시스템(110)은 키 생성기(112), 버퍼(114), 서명 생성기(116) 및 서명된 이미지 생성기(118)를 포함할 수 있다.
키 생성기(112)는 개인 키 및 공개 키로 구성된 키 페어를 생성할 수 있다. 예를 들면, 키 생성기(112)는 난수 생성기를 포함할 수 있고, 난수에 기초하여 키 페어를 생성할 수 있다. 도 11에 도시된 바와 같이, 키 생성기(112)는 키 페어의 공개 키에 대응하는 소프트 키(KEYS)를 버퍼(114)에 제공할 수 있고, 키 페어의 개인 키에 대응하는 소프트 개인 키(PRVS)를 서명 생성기(116)에 제공할 수 있다. 일부 실시예들에서, 도 11에서 점선으로 표시된 바와 같이, 키 생성기(112)는, 소프트 키(KEYS)뿐만 아니라 키 페어에서 공개 키에 대응하는 하드 키(KEYH)를 생성할 수도 있고, 하드 키에 대응하는 하드 개인 키(PRVH)를 서명 생성기(116)에 제공할 수도 있다. 일부 실시예들에서, 키 생성기(112)가 생략될 수 있고, 이미지 서명 시스템(110)은 외부로부터 키 페어를 수신할 수도 있다.
버퍼(114)는 키 생성기(112)로부터 소프트 키(KEYS)를 수신할 수 있다. 버퍼(114)는 메모리를 포함할 수 있고, 소프트 키(KEYS)를 수집함으로써 키체인(KCH)을 생성하여 서명된 이미지 생성기(118)에 제공할 수 있다. 일부 실시예들에서, 버퍼(114)는 이미지 생성 정보(GEN)에 기초하여 헤더(HEA)를 생성할 수 있고, 키체인(KCH)과 함께 헤더(HEA)를 서명된 이미지 생성기(118)에 제공할 수 있다. 일부 실시예들에서, 키 생성기(112)와 함께 버퍼(114)가 생략될 수 있고, 이미지 서명 시스템(110)은 외부로부터 키체인(KCH)을 수신할 수도 있다.
서명 생성기(116)는 키 생성기(112)로부터 소프트 개인 키(PRVS)를 수신할 수 있고, 소프트 개인 키(PRVS)로부터 유도되는 디지털 서명(SIG)을 생성할 수 있다. 이에 따라, 디지털 서명(SIG)은, 디지털 서명(SIG)이 유도된 소프트 개인 키(PRVS)와 키 페어를 구성하는 소프트 키(KEYS)에 의해서 검증될 수 있다. 디지털 서명(SIG)은 임의의 서명 알고리즘에 기초하여 생성될 수 있고, 예컨대 타원곡선 디지털 서명 알고리즘(Elliptic Curve Digital Signature Algorithm; ECDSA)에 기초하여 소프트 개인 키(PRVS)로부터 생성될 수 있다. 또한, 서명 생성기(116)는, 도 11에 도시된 바와 같이, 하드 개인 키(PRVH)를 수신할 수 있고, 소프트 키(KEYS)에 의해서 검증되는 디지털 서명(SIG)뿐만 아니라 하드 키(KEYH)에 의해서 검증되는 디지털 서명(SIG)을 생성할 수도 있다.
서명된 이미지 생성기(118)는 바이너리 이미지(BIN), 키체인(KCH) 및 디지털 서명(SIG)을 수신할 수 있고, 소프트웨어 이미지(IMG)를 생성할 수 있다. 예를 들면, 서명된 이미지 생성기(118)는, 이미지 생성 정보(GEN)에 기초하여, 키 정보를 생성할 수 있고, 바이너리 이미지(BIN), 디지털 서명(SIG) 및 키 정보를 포함하는 소프트웨어 이미지(IMG)를 프로그램 이미지로서 생성할 수 있다. 또한, 서명된 이미지 생성기(118)는, 이미지 생성 정보(GEN)에 기초하여, 키 정보를 생성할 수 있고, 키체인(KCH), 디지털 서명(SIG) 및 키 정보를 포함하는 소프트웨어 이미지(IMG)를 키체인 이미지로서 생성할 수도 있다. 서명된 이미지 생성기(118)는 소프트웨어 이미지(IMG)에 포함된 데이터가 바이너리 이미지(BIN) 또는 키체인(KCH)인 점을 제외하고, 프로그램 이미지 및 키체인 이미지를 동일한 방식으로 생성할 수 있다.
도 12는 본 개시의 예시적 실시예에 따른 소프트웨어 인증을 위한 방법의 예시를 나타내는 순서도이다. 구체적으로, 도 12의 순서도는 서명된 소프트웨어 이미지를 생성하는 방법의 예시를 나타낸다. 일부 실시예들에서, 도 12의 방법은 도 11의 이미지 서명 시스템(110)에 의해서 수행될 수 있다. 도 12에 도시된 바와 같이, 서명된 소프트웨어 이미지를 생성하는 방법은 단계 S10 및 단계 S30을 포함할 수 있고, 일부 실시예들에서 단계 S10 및 단계 S30은 도 12에 도시된 바와 상이한 순서로 또는 병렬적으로 수행될 수도 있다. 이하에서, 도 12는 도 11을 참조하여 설명될 것이다.
일부 실시예들에서, 도 12의 방법은 각 단계에 대응하는 명령어들을 포함하는 프로그램 코드를 실행하는 적어도 하나의 프로세서에 의해 수행될 수 있다. 명령어들은 메모리에 저장될 수 있다. "프로세서"는 프로그램에 포함된 명령어들 및/또는 코드로 표현되는 동작들을 포함하는 소정의 동작들을 실행하기 위하여, 물리적으로 구조화된 회로를 포함하는 하드웨어적으로 구현된(hardware-implemented) 데이터 처리 장치를 지칭할 수 있다. 일부 실시예들에서, 하드웨어적으로 구현된 데이터 처리 장치는, 비제한적인 예시로서 마이크로프로세서, CPU(Central Processing Unit), 프로세서 코어, 멀티-코어 프로세서, 멀티 프로세서, ASIC(Application-Specific Integrated Circuit) 및 FPGA(Field Programmable Gate Array)를 포함할 수 있다.
단계 S10에서, 서명된 프로그램 이미지를 생성하는 동작이 수행될 수 있다. 예를 들면, 이미지 서명 시스템(110)은 바이너리 이미지(BIN)를 포함하는 서명된 프로그램 이미지를 생성할 수 있다. 단계 S10의 예시가 도 13을 참조하여 후술될 것이다.
단계 S30에서, 서명된 키 체인 이미지를 생성하는 동작이 수행될 수 있다. 예를 들면, 이미지 서명 시스템(110)은 적어도 하나의 소프트 키를 포함하는 키체인(KCH)을 포함하는 서명된 프로그램 이미지를 생성할 수 있다. 단계 S30의 예시가 도 14를 참조하여 후술될 것이다.
도 13은 본 개시의 예시적 실시예에 따른 소프트웨어 인증을 위한 방법을 나타내는 순서도이다. 구체적으로, 도 13의 순서도는 도 12의 단계 S10의 예시를 나타낸다. 도 12를 참조하여 전술된 바와 같이, 도 13의 단계 S10'에서 서명된 프로그램 이미지를 생성하는 동작이 수행될 수 있다. 도 13에 도시된 바와 같이, 단계 S10'은 복수의 단계들(S11 내지 S17)을 포함할 수 있고, 이하에서 도 13은 도 11을 참조하여 설명될 것이다.
단계 S11에서, 바이너리 이미지를 획득하는 동작이 수행될 수 있다. 예를 들면, 이미지 서명 시스템(110)은 일련의 명령어들을 포함하는 바이너리 이미지(BIN)를 외부로부터 수신할 수 있다.
단계 S12에서, 키 유형을 판정하는 동작이 수행될 수 있다. 예를 들면, 이미지 서명 시스템(110)은 이미지 생성 정보(GEN)에 기초하여 키 유형을 판정할 수 있다. 도 13에 도시된 바와 같이, 키 유형이 하드 키인 경우 단계 S13이 후속하여 수행될 수 있는 한편, 키 유형이 소프트 키인 경우 단계 S15가 후속하여 수행될 수 있다.
키 유형이 하드 키인 경우, 단계 S13에서 하드 키에 의해서 검증되는 서명을 생성하는 동작이 수행될 수 있다. 예를 들면, 서명 생성기(116)는 이미지 생성 정보(GEN)에 기초하여, 하드 키(KEYH)에 대응하는 하드 개인 키(PRVH)를 수신할 수 있고, 하드 키(KEYH)에 의해서 검증되는 디지털 서명(SIG)을 생성할 수 있다. 그 다음에 단계 S14에서, 하드 키를 나타내는 값을 포함하는 키 정보를 생성하는 동작이 수행될 수 있다. 예를 들면, 서명된 이미지 생성기(118)는 이미지 생성 정보(GEN)에 기초하여, 하드 키를 나타내는 값을 포함하는 키 정보를 생성할 수 있다. 일부 실시예들에서, 2이상의 하드 키들이 소프트웨어 이미지의 인증에 사용되는 경우, 하드 키를 나타내는 값뿐만 아니라 하드 키를 식별하기 위한 키 인덱스를 포함하는 키 정보가 생성될 수도 있다.
키 유형이 소프트 키인 경우, 단계 S15에서 소프트 키에 의해서 검증되는 서명을 생성하는 동작이 수행될 수 있다. 예를 들면, 서명 생성기(116)는 이미지 생성 정보(GEN)에 기초하여, 키 생성기(112) 또는 이미지 서명 시스템(110)의 외부로부터 소프트 키(KEYS)에 대응하는 소프트 개인 키(PRVS)를 수신할 수 있고, 소프트 키(KEYS)에 의해서 검증되는 디지털 서명(SIG)을 생성할 수 있다. 그 다음에 단계 S16에서, 소프트 키를 나타내는 값 및 소프트 키의 인덱스를 포함하는 키 정보를 생성하는 동작이 수행될 수 있다. 예를 들면, 서명된 이미지 생성기(118)는 이미지 생성 정보(GEN)에 기초하여, 소프트 키를 나타내는 값을 포함하고 소프트 키가 포함된 키체인 이미지에서 소프트 키를 식별할 수 있는 인덱스를 포함하는, 키 정보를 생성할 수 있다.
단계 S17에서, 서명된 프로그램 이미지를 생성하는 동작이 수행될 수 있다. 예를 들면, 서명된 이미지 생성기(118)는 바이너리 이미지(BIN), 키 정보 및 디지털 서명(SIG)을 포함하는 서명된 프로그램 이미지를 생성할 수 있다.
도 14는 본 개시의 예시적 실시예에 따른 소프트웨어 인증을 위한 방법을 나타내는 순서도이다. 구체적으로, 도 14의 순서도는 도 12의 단계 S30의 예시를 나타낸다. 도 12를 참조하여 전술된 바와 같이, 도 14의 단계 S30'에서 서명된 키체인 이미지를 생성하는 동작이 수행될 수 있다. 도 14에 도시된 바와 같이, 단계 S30'은 복수의 단계들(S31 내지 S37)을 포함할 수 있고, 이하에서 도 13은 도 11을 참조하여 설명될 것이며, 도 14에 대한 설명 중 도 13에 대한 설명과 중복되는 내용은 생략될 것이다.
단계 S31에서, 키체인을 획득하는 동작이 수행될 수 있다. 예를 들면, 이미지 서명 시스템(110)은, 도 11에 도시된 바와 같이, 적어도 하나의 소프트 키를 포함하는 키체인(KCH)을 내부에서 생성할 수도 있고, 이미지 서명 시스템(110)의 외부로부터 수신할 수도 있다.
일부 실시예들에서, 도 14의 단계 S32 내지 단계 S36은, 도 13의 단계 S12 내지 단계 S16과 각각 동일할 수 있다. 이에 따라, 프로그램 이미지 및 키체인 이미지는 포함되는 데이터, 즉 바이너리 이미지(BIN) 또는 키체인(KCH)만이 상이할 뿐 동일한 구조를 가질 수 있다.
단계 S37에서, 서명된 키체인 이미지를 생성하는 동작이 수행될 수 있다. 예를 들면, 서명된 이미지 생성기(118)는 키체인(KCH), 키 정보 및 디지털 서명(SIG)을 포함하는 서명된 키체인 이미지를 생성할 수 있다.
도면들을 참조하여 전술된 방법들의 다양한 동작들은 동작들을 수행할 수 있는 임의의 적절한 수단, 예를 들면 다양한 하드웨어 및/또는 소프트웨어 컴포넌트(들), 회로들 및/또는 모듈(들)에 의해서 수행될 수 있다. 소프트웨어는 논리적 기능들을 구현하기 위한 일련의 실행 가능 명령어들을 포함할 수 있고, 명령어 실행 시스템, 장치 또는 디바이스, 예컨대 싱글 또는 멀티-코어 프로세서 또는 프로세서-포함 시스템에 의해 사용되거나 관련된 임의의 "프로세서-독출 가능 매체"에 구현될 수 있다.
본 개시의 예시적 실시예들과 관련하여 설명된 방법 또는 알고리즘 및 기능들의 단계들 및 블록들은 하드웨어, 프로세서에 의해 실행되는 소프트웨어 모듈, 또는 이들의 조합으로 직접 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 유형의 비일시적인 컴퓨터 독출 가능 매체 상에 하나 이상의 명령어들 또는 코드로서 저장되거나 전송될 수 있다. 소프트웨어 모듈은 임의의 유형의 저장매체에 있을 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 프로세서; 및
    상기 프로세서에 의해서 실행되는 프로그램 이미지 및 적어도 하나의 소프트 키를 포함하는 키체인(keychain) 이미지를 포함하는, 소프트웨어 이미지들이 로딩되도록 구성된 시스템 메모리를 포함하고,
    상기 프로세서는, 소프트웨어 이미지에 포함된 키 정보에 기초하여 상기 적어도 하나의 소프트 키 중 하나의 소프트 키를 획득하고, 획득된 상기 소프트 키에 기초하여 상기 소프트웨어 이미지를 인증하도록 구성된 것을 특징으로 하는 시스템.
  2. 청구항 1에 있어서,
    상기 프로세서는, 적어도 하나의 하드 키를 포함하는 것을 특징으로 하는 시스템.
  3. 청구항 2에 있어서,
    상기 프로세서는, 상기 적어도 하나의 하드 키에 기초하여 상기 키체인 이미지를 인증하도록 구성된 것을 특징으로 하는 시스템.
  4. 청구항 2에 있어서,
    상기 프로세서는, 상기 적어도 하나의 하드 키를 저장하는 보안 메모리를 포함하는 것을 특징으로 하는 시스템.
  5. 청구항 2에 있어서,
    상기 프로세서는, 상기 시스템 메모리에 로딩된 소프트웨어 이미지로부터 상기 적어도 하나의 하드 키를 획득하도록 구성된 것을 특징으로 하는 시스템.
  6. 청구항 2에 있어서,
    상기 프로세서는, 상기 소프트웨어 이미지에 포함된 키 정보에 기초하여 상기 적어도 하나의 하드 키 중 하나의 하드 키를 식별하고, 식별된 상기 하드 키에 기초하여 상기 소프트웨어 이미지를 인증하도록 구성된 것을 특징으로 하는 시스템.
  7. 청구항 1에 있어서,
    상기 프로세서는, 상기 획득된 소프트 키에 기초하여 상기 소프트웨어 이미지에 포함된 디지털 서명을 검증함으로써 상기 소프트웨어 이미지를 인증하도록 구성된 것을 특징으로 하는 시스템.
  8. 청구항 1에 있어서,
    상기 프로세서는, 상기 키 정보에 포함된 키 인덱스에 기초하여 상기 키체인 이미지에서 소프트 키를 식별하도록 구성된 것을 특징으로 하는 시스템.
  9. 청구항 1에 있어서,
    상기 시스템 메모리는, 복수의 키체인 이미지들을 저장하도록 구성되고,
    상기 프로세서는, 상기 키 정보에 기초하여, 상기 복수의 키체인 이미지들에 포함된 소프트 키들 중 하나의 소프트 키를 획득하도록 구성된 것을 특징으로 하는 시스템.
  10. 청구항 1에 있어서,
    복수의 소프트웨어 이미지들을 저장하는 시스템 스토리지를 더 포함하고,
    상기 프로세서는, 상기 시스템 스토리지로부터 상기 시스템 메모리에 상기 소프트웨어 이미지를 로딩하도록 구성된 것을 특징으로 하는 시스템.
  11. 시스템 메모리에 로딩된 소프트웨어 이미지들을 인증하기 위하여 프로세서에 의해서 수행되는 방법으로서,
    제1 키 정보 및 적어도 하나의 소프트 키를 포함하는 제1 소프트웨어 이미지를 인증하는 단계; 및
    제2 키 정보를 포함하는 제2 소프트웨어 이미지를 인증하는 단계를 포함하고,
    상기 제2 소프트웨어 이미지를 인증하는 단계는,
    상기 제2 소프트웨어 이미지로부터 상기 제2 키 정보를 획득하는 단계;
    상기 제2 키 정보에 기초하여, 인증된 상기 제1 소프트웨어 이미지로부터 제1 소프트 키를 획득하는 단계; 및
    상기 제1 소프트 키에 기초하여, 상기 제2 소프트웨어 이미지의 디지털 서명을 검증하는 단계를 포함하는 방법.
  12. 청구항 11에 있어서,
    상기 제1 소프트웨어 이미지를 인증하는 단계는,
    상기 제1 소프트웨어 이미지로부터 상기 제1 키 정보를 획득하는 단계;
    상기 제1 키 정보에 기초하여, 상기 프로세서에 포함된 하드 키를 획득하는 단계; 및
    상기 하드 키에 기초하여, 상기 제1 소프트웨어 이미지의 디지털 서명을 검증하는 단계를 포함하는 것을 특징으로 하는 방법.
  13. 청구항 11에 있어서,
    상기 제2 키 정보와 상이한 제3 키 정보를 포함하는 제3 소프트웨어 이미지를 인증하는 단계를 더 포함하고,
    상기 제3 소프트웨어 이미지를 인증하는 단계는,
    상기 제3 소프트웨어 이미지로부터 상기 제3 키 정보를 획득하는 단계;
    상기 제3 키 정보에 기초하여, 상기 제1 소프트웨어 이미지로부터 상기 제1 소프트 키와 상이한 제2 소프트 키를 획득하는 단계; 및
    상기 제2 소프트 키에 기초하여, 상기 제3 소프트웨어 이미지의 디지털 서명을 검증하는 단계를 포함하는 방법.
  14. 청구항 11에 있어서,
    제4 키 정보를 포함하는 제4 소프트웨어 이미지를 인증하는 단계를 포함하고,
    상기 제4 소프트웨어 이미지를 인증하는 단계는,
    상기 제4 소프트웨어 이미지로부터 상기 제4 키 정보를 획득하는 단계;
    상기 제4 키 정보에 기초하여, 인증된 상기 제2 소프트웨어 이미지로부터 제3 소프트 키를 획득하는 단계; 및
    상기 제3 소프트 키에 기초하여, 상기 제4 소프트웨어 이미지의 디지털 서명을 검증하는 단계를 포함하는 방법.
  15. 청구항 11에 있어서,
    상기 제2 키 정보는, 상기 제1 소프트웨어 이미지에 포함된 소프트 키들 중 상기 제1 소프트 키를 식별하기 위한 키 인덱스를 포함하는 것을 특징으로 하는 방법.
  16. 시스템에서 실행되는 소프트웨어 인증을 위하여, 서명된 소프트웨어 이미지를 생성하는 방법으로서,
    상기 서명된 소프트웨어 이미지로서, 상기 시스템에서 실행될 프로그램 이미지를 생성하는 단계; 및
    상기 서명된 소프트웨어 이미지로서, 적어도 하나의 소프트 키를 포함하는 키체인(keychain) 이미지를 생성하는 단계를 포함하고,
    상기 프로그램 이미지를 생성하는 단계는,
    상기 시스템에서 실행되는 명령어들을 포함하는 제1 바이너리 이미지를 획득하는 단계;
    제1 소프트 키에 의해서 검증되는 제1 서명을 생성하는 단계; 및
    상기 제1 바이너리 이미지 및 상기 제1 서명을 포함하는 제1 서명된 프로그램 이미지를 생성하는 단계를 포함하는 것을 특징으로 하는 서명된 소프트웨어 이미지를 생성하는 방법.
  17. 청구항 16에 있어서,
    상기 제1 서명된 프로그램 이미지를 생성하는 단계는, 소프트 키를 나타내는 값 및 상기 제1 소프트 키의 인덱스를 포함하는 키 정보를 생성하는 단계를 포함하는 것을 특징으로 하는 서명된 소프트웨어 이미지를 생성하는 방법.
  18. 청구항 16에 있어서,
    상기 키체인 이미지를 생성하는 단계는,
    상기 시스템에 포함되는 하드 키를 획득하는 단계;
    상기 제1 소프트 키를 포함하는 제1 키체인을 획득하는 단계;
    상기 하드 키에 의해서 검증되는 제2 서명을 생성하는 단계; 및
    상기 제1 키체인 및 상기 제2 서명을 포함하는, 제1 서명된 키체인 이미지를 생성하는 단계를 포함하는 것을 특징으로 하는 서명된 소프트웨어 이미지를 생성하는 방법.
  19. 청구항 16에 있어서,
    상기 프로그램 이미지를 생성하는 단계는,
    상기 시스템에 포함되는 하드 키를 획득하는 단계;
    상기 시스템에서 실행되는 명령어들을 포함하는 제2 바이너리 이미지를 획득하는 단계;
    상기 하드 키에 의해서 검증되는 제3 서명을 생성하는 단계; 및
    상기 제2 바이너리 이미지 및 상기 제3 서명을 포함하는 제2 서명된 프로그램 이미지를 생성하는 단계를 포함하는 것을 특징으로 하는 서명된 소프트웨어 이미지를 생성하는 방법.
  20. 청구항 16에 있어서,
    상기 키체인 이미지를 생성하는 단계는,
    제2 소프트 키를 획득하는 단계;
    적어도 하나의 소프트 키를 포함하는 제2 키체인을 획득하는 단계;
    상기 제2 소프트 키에 의해서 검증되는 제4 서명을 생성하는 단계; 및
    상기 제2 키체인 및 상기 제4 서명을 포함하는, 제2 서명된 키체인 이미지를 생성하는 단계를 포함하는 것을 특징으로 하는, 서명된 소프트웨어 이미지를 생성하는 방법.
KR1020200002691A 2020-01-08 2020-01-08 소프트웨어의 인증을 위한 장치 및 방법 KR20210089485A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020200002691A KR20210089485A (ko) 2020-01-08 2020-01-08 소프트웨어의 인증을 위한 장치 및 방법
DE102020121075.2A DE102020121075A1 (de) 2020-01-08 2020-08-11 Einrichtung und Verfahren zur Authentifizierung von Software
CN202010919976.4A CN113094690A (zh) 2020-01-08 2020-09-04 用于软件的认证的系统和方法
US17/018,237 US11829464B2 (en) 2020-01-08 2020-09-11 Apparatus and method for authentication of software
TW109133260A TW202127283A (zh) 2020-01-08 2020-09-25 用於認證軟體映像檔的系統和方法以及用於產生經簽章的軟體映像檔的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200002691A KR20210089485A (ko) 2020-01-08 2020-01-08 소프트웨어의 인증을 위한 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20210089485A true KR20210089485A (ko) 2021-07-16

Family

ID=76432442

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200002691A KR20210089485A (ko) 2020-01-08 2020-01-08 소프트웨어의 인증을 위한 장치 및 방법

Country Status (5)

Country Link
US (1) US11829464B2 (ko)
KR (1) KR20210089485A (ko)
CN (1) CN113094690A (ko)
DE (1) DE102020121075A1 (ko)
TW (1) TW202127283A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210089486A (ko) 2020-01-08 2021-07-16 삼성전자주식회사 키를 안전하게 관리하기 위한 장치 및 방법
US11811948B2 (en) * 2021-04-08 2023-11-07 Micron Technology, Inc. Flexible security enclave for protecting data at rest and in motion
TWI826287B (zh) * 2023-03-10 2023-12-11 神雲科技股份有限公司 管理平台系統及其映像檔修復與除錯方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7530065B1 (en) * 2004-08-13 2009-05-05 Apple Inc. Mechanism for determining applicability of software packages for installation
KR101393307B1 (ko) 2007-07-13 2014-05-12 삼성전자주식회사 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템
KR20090037712A (ko) 2007-10-12 2009-04-16 삼성전자주식회사 보안 부트-업되는 전자 장치, 그것의 해쉬값 계산 방법 및부트-업 방법
US8150039B2 (en) * 2008-04-15 2012-04-03 Apple Inc. Single security model in booting a computing device
KR20120092222A (ko) 2011-02-11 2012-08-21 삼성전자주식회사 보안 부팅 방법 및 보안 부트 이미지 생성 방법
US9141802B2 (en) 2012-09-25 2015-09-22 Intel Corporation Computing device boot software authentication
US9152794B1 (en) 2013-09-05 2015-10-06 Xilinx, Inc. Secure key handling for authentication of software for a system-on-chip
US9887848B2 (en) * 2015-07-02 2018-02-06 Gn Hearing A/S Client device with certificate and related method
US20170286665A1 (en) * 2016-03-30 2017-10-05 Qualcomm Incorporated Devices and methods for facilitating software signing by more than one signing authority
KR101782378B1 (ko) 2016-11-03 2017-09-27 시큐리티플랫폼 주식회사 서명된 공개 키를 이용한 시큐어 부트 방법
EP3382590B1 (en) 2017-03-31 2019-10-16 OMRON Corporation Method for initializing a computerized system and computerized system against rollback attacks
KR20200002692A (ko) 2018-06-29 2020-01-08 나노시스, 인크. 도펀트들로서 In3+ 염들을 이용한 ZnSe 양자 도트들의 파장 튜닝
US11011614B2 (en) 2018-06-29 2021-05-18 Taiwan Semiconductor Manufacturing Company, Ltd. High electron mobility transistor (HEMT) device and method of forming same

Also Published As

Publication number Publication date
US11829464B2 (en) 2023-11-28
DE102020121075A1 (de) 2021-07-08
US20210209219A1 (en) 2021-07-08
TW202127283A (zh) 2021-07-16
CN113094690A (zh) 2021-07-09

Similar Documents

Publication Publication Date Title
CN109313690B (zh) 自包含的加密引导策略验证
US10419216B2 (en) Keying infrastructure
US10511598B2 (en) Technologies for dynamic loading of integrity protected modules into secure enclaves
KR101393307B1 (ko) 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템
US11829464B2 (en) Apparatus and method for authentication of software
CN115048652A (zh) 针对运行已验证软件的硬件的端到端安全性
US20220108018A1 (en) Identity and Root Keys Derivation Scheme for Embedded Devices
WO2021249359A1 (zh) 数据完整性保护的方法和装置
US20220382874A1 (en) Secure computation environment
KR20210089486A (ko) 키를 안전하게 관리하기 위한 장치 및 방법
US20240086081A1 (en) External memory data integrity validation
CN117561699A (zh) 安全计算机制
CN115062330B (zh) 基于tpm的智能密码钥匙密码应用接口的实现方法
US20240152284A1 (en) Storage controller and method of providing firmware image
US20230222219A1 (en) Storage controller, storage system, and method of operating storage device
US12026561B2 (en) Dynamic authentication and authorization of a containerized process
US20240078315A1 (en) Secure booting system and operation method thereof
US20240064130A1 (en) Authenticating key-value data pairs for protecting node related data
US20240193275A1 (en) Electronic device and secure booting method thereof
US20220066845A1 (en) Dynamic authenticatication an authorization of a containerized process
WO2024097428A1 (en) Owner revocation emulation container
CN117997544A (zh) 存储控制器和提供固件映像的方法
CN117150496A (zh) 装置标识符组合引擎3层架构
CN118210567A (zh) 一种座舱域多核异构SoC的防降级安全启动方法及系统