KR20210089486A - 키를 안전하게 관리하기 위한 장치 및 방법 - Google Patents

키를 안전하게 관리하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR20210089486A
KR20210089486A KR1020200002692A KR20200002692A KR20210089486A KR 20210089486 A KR20210089486 A KR 20210089486A KR 1020200002692 A KR1020200002692 A KR 1020200002692A KR 20200002692 A KR20200002692 A KR 20200002692A KR 20210089486 A KR20210089486 A KR 20210089486A
Authority
KR
South Korea
Prior art keywords
processor
key
program image
secure
secure processor
Prior art date
Application number
KR1020200002692A
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 KR1020200002692A priority Critical patent/KR20210089486A/ko
Priority to US16/929,917 priority patent/US11533172B2/en
Priority to DE102020119389.0A priority patent/DE102020119389A1/de
Priority to CN202010979618.2A priority patent/CN113094720A/zh
Priority to TW109132804A priority patent/TW202147100A/zh
Publication of KR20210089486A publication Critical patent/KR20210089486A/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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/76Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/86Secure or tamper-resistant housings
    • G06F21/87Secure or tamper-resistant housings by means of encapsulation, e.g. for integrated circuits
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0827Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving distinctive intermediate devices or communication paths
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • H04L9/0833Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
    • H04L9/0836Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key using tree structure or hierarchical structure
    • 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
    • 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
    • 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/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen
    • 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/12Details relating to cryptographic hardware or logic circuitry

Abstract

집적 회로는, 본 개시의 예시적 실시예에 따라, 보안 동작을 수행하기 위하여, 시스템 메모리에 저장된 제1 프로그램 이미지를 실행하는 제1 프로세서, 시스템 메모리에 저장된 제2 프로그램 이미지의 적어도 일부를 독출하고, 제2 프로그램 이미지의 적어도 일부에 기초하여 키를 생성하는 제2 프로세서, 및 제1 프로세서 및 제2 프로세서 사이 통신을 위한 전용의 통신 채널을 포함할 수 있고, 제1 프로세서는, 전용의 통신 채널을 통해서 키를 수신하고 키에 기초하여 보안 동작을 수행할 수 있다.

Description

키를 안전하게 관리하기 위한 장치 및 방법{APPARATUS AND METHOD FOR SECURELY MANAGING KEYS}
본 개시의 기술적 사상은 데이터 보안에 관한 것으로서, 구체적으로는 데이터 보안에 사용되는 키를 안전하게 관리하기 위한 장치 및 방법에 관한 것이다.
외부의 부적절한 공격으로부터 데이터를 보호하기 위한 데이터 보안은, 고도화된(advanced) 공격으로부터 데이터를 보호하기 위하여 소프트웨어 및 하드웨어를 함께 활용할 수 있다. 데이터 보안에서 키(key)는 데이터를 암호화(encryption)하거나 복호화(decryption)하는데 사용될 수 있고, 정당한 키, 즉 암호화에 사용된 키와 상이한 키를 사용하여 데이터를 복호화하는 것은 용이하지 아니할 수 있다. 이에 따라, 외부 공격으로부터 키를 안전하게 관리하는 것은 데이터 보안에서 중대할 수 있다.
본 개시의 기술적 사상은, 보안 프로세서를 사용함으로써 데이터 보안에 사용되는 키를 외부 공격으로부터 안전하게 관리하기 위한 장치 및 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 집적 회로는, 보안 동작을 수행하기 위하여, 시스템 메모리에 저장된 제1 프로그램 이미지를 실행하는 제1 프로세서, 시스템 메모리에 저장된 제2 프로그램 이미지의 적어도 일부를 독출하고, 제2 프로그램 이미지의 적어도 일부에 기초하여 키를 생성하는 제2 프로세서, 및 제1 프로세서 및 제2 프로세서 사이 통신을 위한 전용의 통신 채널을 포함할 수 있고, 제1 프로세서는, 통신 채널을 통해서 키를 수신하고 키에 기초하여 보안 동작을 수행할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 시스템은, 전용의 통신 채널을 통해서 상호 통신하는 제1 프로세서 및 제2 프로세서를 포함하는 집적 회로, 제1 프로세서에 의해서 실행가능한 프로그램 이미지를 저장하는 시스템 메모리; 및 제2 프로세서에 의해서 배타적으로 액세스 가능하고, 프로그램 이미지의 로딩 정보를 저장하는 비휘발성 메모리를 포함할 수 있고, 제2 프로세서는, 로딩 정보에 기초하여 시스템 메모리로부터 프로그램 이미지의 적어도 일부를 독출하고, 프로그램 이미지의 적어도 일부에 기초하여 키를 생성하고, 키를 제1 프로세서에 제공할 수 있고, 제1 프로세서는, 상기 키에 기초하여 보안 동작을 수행할 수 있다.
본 개시의 기술적 사상의 일측면에 따라 제1 프로세서 및 제2 프로세서를 포함하는 집적 회로에 의해서 수행되는 방법은, 제2 프로세서에 의해서, 시스템 메모리로부터 제1 프로세서에 의해서 실행 가능한 프로그램 이미지의 적어도 일부를 독출하는 단계, 제2 프로세서에 의해서, 프로그램 이미지의 적어도 일부에 기초하여 키를 생성하는 단계, 및 제1 프로세서에 의해서, 키에 기초하여 보안 동작을 수행하는 단계를 포함할 수 있다.
본 개시의 예시적 실시예에 따른 장치 및 방법에 의하면, 키 바인딩(binding)에 사용되는 정보가 보안 프로세서 내부에서 생성될 수 있고, 보안 프로세서 외부로 노출되지 아니할 수 있다.
또한, 본 개시의 예시적 실시예에 따른 장치 및 방법에 의하면, 향상된 보안을 제공하는 키 바인딩(binding)에 기인하여, 강화된 데이터 보안이 달성될 수 있다.
본 개시의 예시적 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 아니하며, 언급되지 아니한 다른 효과들은 이하의 기재로부터 본 개시의 예시적 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 도출되고 이해될 수 있다. 즉, 본 개시의 예시적 실시예들을 실시함에 따른 의도하지 아니한 효과들 역시 본 개시의 예시적 실시예들로부터 당해 기술분야의 통상의 지식을 가진 자에 의해 도출될 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 시스템의 예시를 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시예에 따라 키를 안전하게 관리하기 위한 방법의 예시를 나타내는 도면이다.
도 3은 본 개시의 예시적 실시예에 따른 보안 프로세서의 예시를 나타내는 블록도이다.
도 4는 본 개시의 예시적 실시예에 따라 프로그램 이미지를 저장하는 시스템 메모리의 예시를 나타낸다.
도 5a 및 도 5b는 본 개시의 예시적 실시예들에 따라 키 생성에 사용되는 정보의 예시들을 나타내는 도면들이다.
도 6a 및 도 6b는 본 개시의 예시적 실시예들에 따라 키를 안전하게 관리하기 위한 방법의 예시들을 나타내는 순서도들이다.
도 7a 및 도 7b는 본 개시의 예시적 실시예들에 따라 키를 안전하게 관리하는 방법의 예시들을 나타내는 순서도들이다.
도 8은 본 개시의 예시적 실시예에 따라 키를 안전하게 관리하기 위한 방법의 예시를 나타내는 도면이다.
도 9는 본 개시의 예시적 실시예에 따른 집적 회로의 예시를 나타내는 블록도이다.
도 10은 본 개시의 예시적 실시예에 따른 집적 회로의 예시를 나타내는 블록도이다.
도 11은 본 개시의 예시적 실시예에 따라 키를 안전하게 관리하기 위한 방법의 예시를 나타내는 순서도이다.
도 12는 본 개시의 예시적 실시예에 따른 시스템의 예시를 나타내는 블록도이다.
도 1은 본 개시의 예시적 실시예에 따른 시스템의 예시를 나타내는 블록도이다. 일부 실시예들에서, 시스템(10)은, 비제한적인 예시로서 서버(server), 데스크탑 컴퓨터, 키오스크(kiosk) 등과 같은 고정형(stationary) 컴퓨팅 시스템 또는 그것의 서브시스템일 수 있다. 일부 실시예들에서, 시스템(10)은, 비제한적인 예시로서 모바일 폰, 웨어러블 기기, 랩탑 컴퓨터 등과 같은 휴대용(portable) 컴퓨팅 시스템 또는 그것의 서브시스템일 수 있다. 일부 실시예들에서, 시스템(10)은, 비제한적인 예시로서 가전, 산업기기, 운송수단 등과 같이, 독립형 컴퓨팅 시스템과 상이한 시스템에 포함되는 서브시스템일 수도 있다. 도 1에 도시된 바와 같이, 시스템(10)은 집적 회로(12), 시스템 메모리(14), 보안 비휘발성 메모리(16) 및 시스템 스토리지(18)를 포함할 수 있다.
집적 회로(12)는 비보안(non-security) 프로세서(12_2) 및 보안(security) 프로세서(12_4)를 포함할 수 있다. 본 명세서에서, 비보안 프로세서(12_2)는 제1 프로세서로 지칭될 수 있고, 보안 프로세서(12_4)는 제2 프로세서로서 지칭될 수 있다. 집적 회로(12)는 반도체 공정에 의해서 제조될 수 있고, 일부 실시예들에서 비보안 프로세서(12_2) 및 보안 프로세서(12_4)는 단일 칩 또는 다이(die)에 집적될 수 있다. 일부 실시예들에서, 집적 회로(12)는 시스템(10)의 다른 구성요소들, 즉 시스템 메모리(14), 보안 비휘발성 메모리(16) 및 시스템 스토리지(18) 중 적어도 하나와 동일한 패키지에 포함될 수 있다. 또한, 일부 실시예들에서, 집적 회로(12)는 보드에 실장될 수 있고, 보드에 실장된 다른 구성요소들, 즉 시스템 메모리(14), 보안 비휘발성 메모리(16) 및 시스템 스토리지(18) 중 적어도 하나와 보드에 형성된 패턴들을 통해서 통신할 수 있다.
비보안 프로세서(12_2)는 시스템 메모리(14)와 통신할 수 있고, 시스템 메모리(14)에 저장된 프로그램 이미지, 즉 프로그램 이미지에 포함된 일련의 명령어들(instructions)을 실행할 수 있다. 예를 들면, 집적 회로(12)는 시스템 메모리(14)에 대한 액세스를 제공하는 구성요소(예컨대, 도 12의 122_5)를 포함할 수 있고, 비보안 프로세서(12_2)는 명령어들을 실행할 수 있는 적어도 하나의 코어를 포함할 수 있다. 본 명세서에서, 비보안 프로세서(12_2)가 프로그램 이미지에 포함된 명령어들을 실행함으로써 동작을 수행하는 것은, 비보안 프로세서(12_2) 또는 프로그램 이미지가 동작을 수행하는 것으로 단순하게 지칭될 수 있다.
보안 프로세서(12_4)는 데이터 보안을 위하여 비보안 프로세서(12_2)와 함께 집적 회로(12)에 포함될 수 있다. 시스템(10)은 다양한 목적들을 위하여 보안이 요구되는 데이터를 처리할 수 있다. 예를 들면, 시스템(10)은 시스템(10)의 사용자와 관계된 고유 정보를 안전하게 처리할 수 있고, 시스템(10)의 제조자 또는 정당한 공급자와 관계된 고유 정보를 안전하게 처리할 수도 있다. 보안이 요구되는 데이터는 키를 사용하여 암호화될 수 있고, 암호화된 데이터는 키를 사용하여 복호화되어 사용된 후 다시 암호화될 수 있다. 데이터는 임의의 암호 알고리즘(cryptographic algorithm)에 기초하여 암호화되고 복호화될 수 있다. 일부 실시예들에서, 데이터는 DES(Data Encryption Standard), AES(Advanced Encryption Standard) 등과 같은 대칭키 암호 알고리즘, RSA(Rivest-Shamir-Adleman), 타원 곡선 기법(elliptic curve technique) 등과 같은 공개키 암호 알고리즘에 의해서 암호화되고 복호화될 수 있다.
보안 프로세서(12_4)는 보안이 요구되는 데이터 및/또는 암호 알고리즘에 사용되는 키(또는 비밀키)에 대한 보안을 강화하기 위하여, 집적 회로(12)의 다른 구성요소들, 예컨대 비보안 프로세서(12_2)와 물리적으로 격리된 영역에 형성될 수 있다. 보안 프로세서(12_4)는 집적 회로(12)의 다른 구성요소들로부터 액세스가 불가능한 구성요소들을 포함할 수 있고, 독립적으로 동작을 수행할 수 있다. 예를 들면, 비보안 프로세서(12_2)에 의해서 실행되는 보안 프로그램(또는 보안 소프트웨어)도 보안 프로세서(12_4)에 포함된 구성요소들에 대한 접근이 제한될 수 있다. 이에 따라, 보안 프로세서(12_4)는 시스템(10)의 보안 레벨을 크게 향상 시킬 수 있다. 도 1에 도시된 바와 같이, 보안 프로세서(12_4)는 전용의 통신 채널로서 전용의 물리적 버스(12_6)를 통해서 비보안 프로세서(12_2)와 통신할 수 있고, 보안 비휘발성 메모리(16)에 배타적으로 액세스할 수 있다. 또한, 도 1에 도시된 바와 같이, 보안 프로세서(12_4)는 시스템 메모리(14)에 저장된 데이터, 예컨대 프로그램 이미지를 독출할 수 있다. 일부 실시예들에서, 보안 프로세서(12_4)는, 비보안 프로세서(12_2)와 유사하게, 일련의 명령어들을 실행할 수 있는 적어도 하나의 코어를 포함할 수 있다. 보안 프로세서(12_4)의 예시는 도 3을 참조하여 후술될 것이다.
보안 프로세서(12_4)는 비보안 프로세서(12_2)에 의해서 실행되는 프로그램 이미지에 의해서 사용되는 키를 생성하여 비보안 프로세서(12_2)에 제공할 수 있다. 예를 들면, 보안 프로세서(12_4)는, 시스템(10)의 사용자를 식별하기 위한 사용자 식별 정보의 암호화 또는 복호화를 위하여 사용되는 키를 생성하여 비보안 프로세서(12_2)에 제공할 수 있다. 또한, 보안 프로세서(12_4)는, 시스템(10)의 소프트웨어 업데이트를 위한 시스템 식별 정보의 암호화 또는 복호화를 위하여 사용되는 키를 생성하여 비보안 프로세서(12_2)에 제공할 수도 있다. 본 명세서에서, 데이터 보안을 위하여 키를 사용하는 동작은 보안 동작으로 지칭될 수 있고, 보안 동작의 수행을 위하여 비보안 프로세서(12_2)에 의해서 실행되는 프로그램 이미지는, 보안 프로그램, 보안 어플리케이션, 보안 소프트웨어로 지칭될 수 있다.
보안 프로세서(12_4)는, 비보안 프로세서(12_2)에 제공되는 키를 바인딩(binding)할 수 있다. 바인딩은 키가 특정 조건, 즉 바인딩 정보에 종속하도록 하는 것을 지칭할 수 있고, 상이한 바인딩 정보에 기초하여 생성된 키들은 상이할 수 있다. 이에 따라, 고유한 바인딩 정보에 종속하도록 생성된 키는 데이터 보안을 강화할 수 있다. 바인딩 정보로서 시스템(10) 또는 집적 회로(12)에 고유한 정보(예컨대, 도 9의 KEYHW)에 기초하여 키를 생성할 경우 시스템(10)에서 암호화된 데이터가 다른 시스템에서 복호화되는 것을 방지할 수 있으나, 시스템(10)에서 실행되는 해킹 프로그램에 의해서 바인딩된 키가 재사용될 수 있는 위험이 있을 수 있다. 이에 따라, 바인딩 정보는, 키를 사용하는 엔티티, 즉 비보안 프로세서(12_2)에 의해서 실행되는 보안 프로그램에 고유한 정보를 포함하는 것이 요구될 수 있다.
이하에서 도면들을 참조하여 후술되는 바와 같이, 보안 프로세서(12_4)는 시스템 메모리(14)로부터 프로그램 이미지의 적어도 일부를 독출할 수 있고, 독출된 프로그램 이미지의 적어도 일부에 기초하여 키를 생성할 수 있다. 즉, 보안 프로세서(12_4)는 시스템 메모리(14)에 저장된 프로그램 이미지의 적어도 일부에 기초하여 바인딩 정보를 직접 생성할 수 있다. 이에 따라, 비보안 프로세서(12_2)가 바인딩 정보를 획득하거나 생성하는 동안 또는 비보안 프로세서(12_2)가 바인딩 정보를 보안 프로세서(12_4)에 제공하는 동안, 바인딩 정보가 노출될 수 있는 위험이 제거될 수 있다. 또한, 해킹 프로그램과 같이 부적절한 시도에 의해서 프로그램 이미지의 적어도 일부가 변경되는 경우, 보안 프로세서(12_4)는 변경된 바인딩 정보를 생성할 수 있고, 이에 따라 상이한 키가 생성됨으로써 데이터 보안은 유지될 수 있다.
시스템 메모리(14)는 비보안 프로세서(12_2)에 의해서 실행될 수 있는 적어도 하나의 프로그램 이미지를 저장할 수 있다. 일부 실시예들에서, 시스템 메모리(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_2)에 의해서 실행가능한(executable) 일련의 명령어들을 각각 포함할 수 있다. 예를 들면, 도 1에 도시된 바와 같이, 시스템 메모리(14)는 프로그램 이미지로서, 부트로더(bootloader)(BL), 운영 체제(operating system)(OS), 어플리케이션들(APP1, APP2) 등을 저장할 수 있다. 부트로더(BL)는 비보안 프로세서(12_2)에 의해서 실행됨으로써, 후속하여 수행될 프로그램 이미지(예컨대, OS)를 시스템 메모리(14)에 로딩할 수 있다. 운영 체제(OS)는 시스템(10)에 포함된 하드웨어의 드라이버들을 제공할 수 있고, 어플리케이션들(APP1, APP2)을 관리, 예컨대 설치, 삭제, 스케줄링할 수 있다. 프로그램 이미지는 소프트웨어 이미지, 이진 이미지, 이진 프로그램 이미지로 지칭될 수도 있고, 프로그램 이미지의 예시적인 구조들이 도 4를 참조하여 후술될 것이다.
보안 비휘발성 메모리(16)는 보안 프로세서(12_4)에 의해서 배타적으로 액세스될 수 있고, 보안 비휘발성 메모리(16) 및 보안 프로세서(12_4)는 보안 채널을 통해서 상호 통신할 수 있다. 일부 실시예들에서, 보안 프로세서(12_4)는 내부에서 암호화된 데이터를 보안 비휘발성 메모리(16)에 기입할 수 있고, 비휘발성 메모리(16)로부터 독출된 데이터를 복호화할 수 있다. 일부 실시예들에서, 보안 비휘발성 메모리(16)는 보안 프로세서(12_4)에 의해서 실행되는 프로그램 이미지를 저장할 수 있다. 일부 실시예들에서, 보안 비휘발성 메모리(16)는 보안 프로세서(12_4)가 키를 생성하는데 필요한 정보를 저장할 수 있다. 보안 비휘발성 메모리(16)는 적어도 하나의 비휘발성 메모리 장치를 포함할 수 있고, 보안 비휘발성 메모리(16)의 예시는 도 5a를 참조하여 후술될 것이다.
시스템 스토리지(18)는 전력의 공급이 차단되어도 저장된 데이터를 소실하지 아니할 수 있다. 예를 들면, 시스템 스토리지(18)는, 비휘발성 메모리 장치를 포함할 수도 있고, 테이프, 자기디스크, 광학디스크와 같은 저장 매체를 포함할 수도 있다. 시스템 스토리지(18)는 비보안 프로세서(12_2)와 통신할 수 있고, 집적 회로(12)는 시스템 스토리지(18)에 대한 액세스를 제공하는 구성요소(예컨대, 도 12의 122_6)를 포함할 수 있다. 예를 들면, 비보안 프로세서(12_2)는 시스템 스토리지(18)에 저장된 데이터를 처리할 수도 있고, 데이터를 시스템 스토리지(18)에 저장할 수도 있으며, 시스템 스토리지(18)에 저장된 프로그램 이미지를 시스템 메모리(14)로 로딩할 수도 있다.
도 2는 본 개시의 예시적 실시예에 따라 키를 안전하게 관리하기 위한 방법의 예시를 나타내는 도면이다. 구체적으로, 도 2는 비보안 프로세서(22) 및 보안 프로세서(24)의 동작들을 시간의 흐름에 따라 나타낸다.
단계 S10에서, 비보안 프로세서(22)는 제1 프로그램 이미지에 액세스할 수 있다. 예를 들면, 비보안 프로세서(22)는 제1 프로그램 이미지를 저장하는 시스템 메모리(26)에 액세스할 수 있고, 제1 프로그램 이미지에 포함된 명령어들 중 적어도 일부를 비보안 프로세서(22)에 포함된 메모리, 예컨대 캐시(cache)에 복사할 수 있다. 제1 프로그램 이미지는, 비보안 프로세서(22)에 의해서 실행됨으로써 데이터 보안을 위하여 키를 사용하는 보안 동작을 수행하는, 프로그램 이미지일 수 있고 보안 프로그램, 보안 어플리케이션, 보안 소프트웨어로서 지칭될 수 있다.
단계 S20에서, 비보안 프로세서(22)는 제1 프로그램 이미지를 실행할 수 있다. 예를 들면, 비보안 프로세서(22)는 캐시에 복사된 일련의 명령어들을 실행할 수 있고, 이에 따라 제1 프로그램 이미지의 실행이 개시될 수 있다.
단계 S30에서, 비보안 프로세서(22)는 보안 프로세서(24)에 키를 요청할 수 있다. 예를 들면, 비보안 프로세서(22)는 제1 프로그램 이미지의 실행 중 데이터의 암호화 및/또는 복호화 등을 위하여 키가 필요할 수 있고, 이에 따라 전용의 물리적 버스 또는 메일박스(mailbox)(예컨대, 도 1의 12_6)를 통해서 보안 프로세서(24)에 키를 요청할 수 있다. 일부 실시예들에서, 비보안 프로세서(22)가 보안 프로세서(24)에 제공하는 요청은, 후속하는 단계 S40에서 보안 프로세서(24)에 의해서 시스템 메모리(26)로부터 독출될 제2 프로그램 이미지의 식별자를 포함할 수 있고, 보안 프로세서(24)는 제2 프로그램 이미지의 식별자에 기초하여 제2 프로그램 이미지가 시스템 메모리(26)에 로딩되는 영역에 관한, 로딩 정보를 획득할 수 있다. 또한, 일부 실시예들에서, 비보안 프로세서(22)가 보안 프로세서(24)에 제공하는 요청은, 키 식별자(예컨대, 도 9의 IDKEY)를 포함할 수 있다. 예를 들면, 제1 프로그램 이미지는 복수의 키들을 사용할 수 있고, 이에 따라 비보안 프로세서(22)는 복수의 키들을 구별하기 위하여 키 식별자를 요청에 포함시킬 수 있고, 보안 프로세서(24)는 키 식별자에 종속하는 키를 생성할 수 있다.
단계 S40에서, 보안 프로세서(24)는 제2 프로그램 이미지의 적어도 일부를 시스템 메모리(26)로부터 독출할 수 있다. 예를 들면, 보안 프로세서(24)는 비보안 프로세서(22)의 요청에 응답하여 제2 프로그램 이미지의 로딩 정보를 획득할 수 있고, 로딩 정보에 기초하여 시스템 메모리(26)에 액세스함으로써 제2 프로그램 이미지의 적어도 일부를 독출할 수 있다. 제2 프로그램 이미지는, 일부 실시예들에서 키를 요청한 프로그램 이미지, 즉 제1 프로그램 이미지와 일치할 수도 있고, 일부 실시예들에서 제1 프로그램 이미지와 상이할 수도 있다. 단계 S40의 예시들이 도 6a 및 도 6b를 참조하여 후술될 것이다.
단계 S50에서, 보안 프로세서(24)는 키를 생성할 수 있다. 예를 들면, 보안 프로세서(24)는 시스템 메모리(26)로부터 독출된 제2 프로그램 이미지의 적어도 일부에 기초하여 키를 생성할 수 있다. 일부 실시예들에서, 보안 프로세서(24)는 키 유도 함수(Key Derivation Function; KDF)를 구현할 수 있고, 제2 프로그램 이미지의 적어도 일부로부터 생성된 바인딩 정보를 키 유도 함수에 입력함으로써 키를 생성할 수 있다. 일부 실시예들에서, 보안 프로세서(24)는 제2 프로그램 이미지의 적어도 일부에 기초하여 생성된 바인딩 정보뿐만 아니라 추가적인 정보를 키 유도 함수에 입력할 수 있다. 예를 들면, 보안 프로세서(24)는 보안 프로세서(24)에 고유한 하드웨어 키(예컨대, 도 9의 KEYHW), 키 식별자(예컨대, 도 9의 IDKEY), 제2 프로그램 이미지의 식별자 중 적어도 하나를 키 유도 함수에 입력할 수 있다. 일부 실시예들에서, 보안 프로세서(24)는 키 유도 함수가 출력한 키를 암호화함으로써 키를 생성할 수도 있다. 단계 S50의 예시들이 도 7a 및 도 7b를 참조하여 후술될 것이다.
단계 S60에서, 보안 프로세서(24)는 비보안 프로세서(22)에 키를 제공할 수 있다. 예를 들면, 보안 프로세서(24)는 전용의 물리적 버스 또는 메일박스(mailbox)(예컨대, 도 1의 12_6)를 통해서 비보안 프로세서(22)에 키를 제공할 수 있다. 그 다음에, 단계 S70에서 비보안 프로세서(22)는 키를 사용하여 보안 동작을 수행할 수 있다. 예를 들면, 비보안 프로세서(22)는 키를 사용하여 데이터를 암호화하거나 복호화할 수 있다.
전술된 바와 같이, 보안 프로세서(24)는 시스템 메모리(26)로부터 직접 독출한 제2 프로그램 이미지의 적어도 일부에 종속되는 키를 생성할 수 있다. 이에 따라, 제2 프로그램 이미지의 적어도 일부가 수정되는 경우, 오리지널 제2 프로그램 이미지에 기초하여 생성된 키와 상이한 키가 생성될 수 있고, 오리지널 키에 의해서 암호화된 데이터는, 수정된 제2 프로그램 이미지에 기초하여 생성된 키에 의해서 정상적으로 복호화되지 아니할 수 있다.
도 3은 본 개시의 예시적 실시예에 따른 보안 프로세서의 예시를 나타내는 블록도이다. 구체적으로, 도 3의 블록도는 시스템 메모리(34), 보안 비휘발성 메모리(36) 및 비보안 프로세서(38)를 보안 프로세서(32)와 함께 나타낸다. 도 1을 참조하여 전술된 바와 같이, 보안 프로세서(32) 및 비보안 프로세서(38)는 단일 집적 회로에 포함될 수 있다. 이하에서 도 3에 대한 설명 중 도 1에 대한 설명과 중복되는 내용은 생략될 것이다.
도 3을 참조하면, 보안 프로세서(32)는 적어도 하나의 레지스터(32_1), 적어도 하나의 코어(32_2), DMA 컨트롤러(32_3), 하드웨어 가속기(32_4), 내부 메모리(32_5) 및 비휘발성 메모리 컨트롤러(32_6)를 포함할 수 있다. 일부 실시예들에서, 보안 프로세서(32)는 적어도 하나의 레지스터(32_1), 적어도 하나의 코어(32_2), DMA 컨트롤러(32_3), 하드웨어 가속기(32_4), 내부 메모리(32_5) 및 비휘발성 메모리 컨트롤러(32_6)에 연결된 버스를 포함할 수 있다. 일부 실시예들에서, 보안 프로세서(32)는 키 페어(key pair) 등을 생성하기 위한 난수 생성기(random number generator), 하드웨어 키(예컨대, 도 9의 KEYHW)를 제공하는 구성요소 등을 더 포함할 수 있다. 도 3에 도시된 바와 같이, 보안 프로세서(32)는 집적 회로의 다른 구성요소, 예컨대 비보안 프로세서(38)에 독립적으로 동작을 수행하기 위한 전용의 구성요소들을 포함할 수 있다. 본 명세서에서, 보안 프로세서(32)에 포함된 구성요소들 각각에 의해서 수행되는 동작은 보안 프로세서(32)에 의해서 수행되는 것으로 지칭될 수 있다.
적어도 하나의 레지스터(32_1)는 비보안 프로세서(38)에 의해서 액세스될 수 있다. 예를 들면, 보안 프로세서(32)는 적어도 하나의 레지스터(32_1)를 통해서 비보안 프로세서(38)로부터의 키에 대한 요청을 수신할 수 있다. 또한, 보안 프로세서(32)는 생성된 키를 적어도 하나의 레지스터(32_1)에 저장함으로써 비보안 프로세서(38)에 키를 제공할 수 있다. 일부 실시예들에서, 적어도 하나의 레지스터(32_1)는 메일박스(mailbox) 또는 메일박스 하드웨어로서 지칭될 수 있다. 또한, 적어도 하나의 레지스터(32_1)는, 비보안 프로세서(38)와 통신을 위한 전용의 물리적 버스에 포함된 것으로 지칭될 수도 있다.
적어도 하나의 코어(32_2)는 명령어를 실행하도록 구성된 임의의 프로세싱 엘리먼트(processing element)를 지칭할 수 있다. 예를 들면, 적어도 하나의 코어(32_2)는 내부 메모리(32_5)에 저장된 일련의 명령어들을 실행함으로써 키를 생성하기 위한 동작의 적어도 일부를 수행할 수 있다. 본 명세서에서, 보안 프로세서(32)에 포함된 적어도 하나의 코어(32_2)에 의해서 실행되는 명령어들을 포함하는 프로그램 이미지는 보안 펌웨어(firmware) 또는 보안 펌웨어 이미지로서 지칭될 수 있다.
DMA 컨트롤러(32_3)는 시스템 메모리(34)에 대한 직접 메모리 액세스(Direct Memory Access; DMA)를 제공할 수 있다. DMA 컨트롤러(32_3)를 통해서 시스템 메모리(34)에 저장된 프로그램 이미지(예컨대, 도 2의 제2 프로그램 이미지)의 적어도 일부가 독출될 수 있다. DMA 컨트롤러(32_3)는, 일부 실시예들에서 집적 회로에 포함된 시스템 메모리 컨트롤러(예컨대, 도 12의 122_5)를 통해서 프로그램 이미지를 독출할 수 있다. 일부 실시예들에서, DMA 컨트롤러(32_3)는 시스템 메모리(34)를 독출하는 동작만을 수행하도록 구성될 수 있고, 시스템 메모리(34)에 데이터를 기입하는 동작을 지원하지 아니할 수 있다.
하드웨어 가속기(32_4)는 미리 정의된 동작을 고속으로 수행하도록 설계된 하드웨어를 지칭할 수 있고, 키를 생성하기 위한 동작의 적어도 일부를 수행할 수 있다. 일부 실시예들에서, 하드웨어 가속기(32_4)는 암호 엔진(crypto engine)을 포함할 수 있다. 예를 들면, 암호 엔진은 시스템 메모리(34)로부터 독출된 프로그램 이미지의 적어도 일부의 해시(hash)를 생성하는 해시 함수를 구현할 수도 있고, 데이터의 암호화 및/또는 복호화를 수행할 수도 있으며, 후술되는 프로그램 이미지의 디지털 서명을 검증할 수도 있다.
내부 메모리(32_5)는 보안 프로세서(32)의 동작에 필요한 데이터를 저장할 수 있다. 일부 실시예들에서, 내부 메모리(32_5)는 적어도 하나의 코어(32_2)에 의해서 실행될 수 있는 명령어들을 저장하는 ROM(Read Only Memory)을 포함할 수 있다. 또한, 일부 실시예들에서, 내부 메모리(32_5)는, 보안 펌웨어 이미지가 로딩되거나 적어도 하나의 코어(32_2)에 의해서 처리되는 데이터를 저장하는, RAM(Random Access Memory)를 포함할 수도 있다. 또한, 내부 메모리(32_5)는 DMA 컨트롤러(32_3)에 의해서 독출된 프로그램 이미지의 적어도 일부를 저장할 수도 있고, 하드웨어 가속기(32_4)에 제공되거나 하드웨어 가속기(32_4)에 의해서 처리된 데이터를 저장할 수도 있다.
비휘발성 메모리 컨트롤러(32_6)는 보안 비휘발성 메모리(36)에 대한 액세스를 제공할 수 있다. 예를 들면, 보안 비휘발성 메모리(36)는 플래시 메모리 장치를 포함할 수 있고, 비휘발성 메모리 컨트롤러(32_6)는 플래시 메모리 인터페이스를 제공하는 플래시 컨트롤러를 포함할 수 있다. 또한, 보안 비휘발성 메모리(36)는 시리얼 인터페이스를 지원할 수 있고, 비휘발성 메모리 컨트롤러(32_6)는, 예컨대 I2C(Inter-Integrated Circuit), SPI(Serial Peripheral Interface) 등과 같은 USI(Universal Serial Interface)를 제공하는 컨트롤러를 포함할 수도 있다. 도 1을 참조하여 전술된 바와 같이, 비휘발성 메모리 컨트롤러(32_6) 및 보안 비휘발성 메모리(36)는 보안 채널을 통해서 통신할 수 있다.
도 4는 본 개시의 예시적 실시예에 따라 프로그램 이미지를 저장하는 시스템 메모리의 예시를 나타낸다. 도 4에 도시된 바와 같이, 시스템 메모리(40)는 제1 프로그램 이미지(IMG1), 제2 프로그램 이미지(IMG2) 및 제3 프로그램 이미지(IMG3)를 저장할 수 있다. 시스템 메모리(40)에 저장된 프로그램 이미지들은 동적으로 변동할 수 있고, 도 4는 특정 시점에서 시스템 메모리(40)의 상태를 나타낸다. 예를 들면, 시스템 메모리(40)는 3개 이상의 프로그램 이미지들을 동시에 저장할 수도 있고, 제1 프로그램 이미지(IMG1), 제2 프로그램 이미지(IMG2) 및 제3 프로그램 이미지(IMG3)의 적어도 일부는 새로운 프로그램 이미지의 로딩에 의해서 시스템 메모리(40)로부터 무효화될(invalidate) 수도 있다. 이하에서, 도 4는 도 1을 참조하여 설명될 것이다.
프로그램 이미지는 이진(binary) 데이터를 포함할 수 있다. 예를 들면, 도 4에 도시된 바와 같이, 제1 프로그램 이미지(IMG1) 및 제2 프로그램 이미지(IMG2)는 이진 데이터(41, 43)를 각각 포함할 수 있고, 제3 프로그램 이미지(IMG3)는 이진 데이터(45)만을 포함할 수 있다. 이진 데이터는 비보안 프로세서(12_2)에 의해서 실행되는 명령어들로 구성될 수 있고, 예컨대 프로그래밍 언어로 작성된 소스 코드를 컴파일(compile)함으로써 생성될 수 있다. 일부 실시예들에서, 이진 데이터는 명령어들뿐만 아니라 명령어들에 의해서 참조되는 데이터를 포함할 수도 있다. 이진 데이터는, 이진 이미지, 이진 코드, 이진 코드 이미지로 지칭될 수도 있다.
일부 실시예들에서, 프로그램 이미지는 디지털 서명을 포함할 수 있다. 예를 들면, 도 4에 도시된 바와 같이, 제1 프로그램 이미지(IMG1) 및 제1 프로그램 이미지(IMG2)는 디지털 서명들(42, 44)을 각각 포함할 수 있다. 디지털 서명(또는 전자 서명)은 프로그램 이미지의 진정성(authenticity), 즉 프로그램 이미지가 인증된(authenticated) 자에 의해 생성된 것임을 판정하는데 사용될 수 있다. 예를 들면, 디지털 서명(42)은 제1 프로그램 이미지(IMG1)의 진정성을 판정하는데 사용될 수 있고, 디지털 서명(44)은 제2 프로그램 이미지(IMG2)의 진정성을 판정하는데 사용될 수 있다. 공통의 소스로부터 생성된 다이제스트(digest)들로서, 디지털 서명 및 검증 정보가 생성될 수 있고, 디지털 서명은 검증 정보에 의해서 검증될 수 있다. 예를 들면, 개인 키(private key) 및 공개 키(public key)로 구성된 키 페어(key pair)가 생성될 수 있고, 디지털 서명은 개인 키로부터 생성될 수 있으며, 검증 정보로서 공개 키(public key)에 의해서 수학적 알고리즘에 기초하여 디지털 서명이 검증될 수 있다.
보안 프로세서(12_4)는 디지털 서명을 검증함으로써 프로그램 이미지의 진정성을 판정할 수 있다. 이를 위하여, 보안 프로세서(12_4)는 검증 정보를 획득할 수 있고, 검증 정보에 기초하여 디지털 서명을 검증할 수 있다. 일부 실시예들에서, 집적 회로(12) 및/또는 시스템(10)의 제조과정에서, 검증 정보로서 공개 키 및/또는 공개 키의 다이제스트가 보안 프로세서(12_4)에 주입(provisioning)될 수 있고, 보안 프로세서(12_4)는 주입된 공개 키 및/또는 공개 키의 다이제스트에 기초하여 디지털 서명을 검증할 수 있다. 또한, 일부 실시예들에서, 동일한 출원인에 의해서 본 출원과 동일자에 출원되고 본 명세서에 전체로서 참조되어 포함되는, 명칭 '소프트웨어의 인증을 위한 장치 및 방법(APPARATUS AND METHOD FOR AUTHENTICATION OF SOFTWARE)'의 한국 특허 출원에서 개시된 키체인(keychain) 이미지와 같이, 적어도 하나의 키를 포함하고 시스템 메모리(40)에 로딩되는 소프트웨어 이미지에 포함된 공개 키 및/또는 공개 키의 다이제스트에 기초하여, 보안 프로세서(12_4)는 디지털 서명을 검증할 수도 있다. 검증을 통과한 디지털 서명을 포함하는 프로그램 이미지, 즉 인증된(authenticated) 프로그램 이미지는 신뢰할 수 있고, 비보안 프로세서(12_2)는 인증된 프로그램 이미지를 실행할 수 있다. 일부 실시예들에서, 도 8 등을 참조하여 후술되는 바와 같이, 보안 프로세서(12_4)는 시스템 메모리(40)로부터 디지털 서명을 독출할 수 있고, 디지털 서명에 기초하여 키를 생성할 수 있다. 예를 들면, 보안 프로세서(12_4)는 키를 요청한 프로그램 이미지에 포함된 디지털 서명에 기초하여 키를 생성할 수도 있고, 키를 요청한 프로그램 이미지와 상이한 프로그램 이미지에 포함된 디지털 서명에 기초하여 키를 생성할 수도 있다.
일부 실시예들에서, 프로그램 이미지는 디지털 서명의 검증에 사용되는 검증 정보에 대한 정보로서 키 정보를 디지털 서명과 함께 포함할 수 있다. 예를 들면, 명칭 '소프트웨어의 인증을 위한 장치 및 방법(APPARATUS AND METHOD FOR UTHENTICATION OF SOFTWARE)'의 한국 특허 출원에 개시된 바와 같이, 프로그램 이미지의 디지털 서명은 보안 프로세서(12_4)에 포함된 공개 키뿐만 아니라 시스템 메모리(40)에 로딩되는 소프트웨어 이미지에 포함된 공개 키에 의해서 검증될 수 있고, 키 정보는, 자신과 함께 프로그램 이미지에 포함된 디지털 서명의 검증을 위한 공개 키에 대한 정보를 포함할 수 있다.
도 5a 및 도 5b는 본 개시의 예시적 실시예들에 따라 키 생성에 사용되는 정보의 예시들을 나타내는 도면들이다. 구체적으로, 도 5a 및 도 5b는 프로그램 이미지의 로딩 정보 및 디지털 서명의 검증 정보의 예시들을 나타낸다. 이하에서, 도 5a 및 도 5b는 도 1을 참조하여 설명될 것이며, 도 5a 및 도 5b에 대한 설명 중 상호 중복되는 내용은 생략될 것이다.
도 5a를 참조하면, 보안 비휘발성 메모리(50a)는 프로그램 이미지의 로딩 정보(52a) 및 디지털 서명의 검증 정보(54a)를 저장할 수 있다. 일부 실시예들에서, 도 5a에 도시된 바와 상이하게, 보안 비휘발성 메모리(50a)는 로딩 정보(52a) 및 검증 정보(54a) 중 하나만을 저장할 수도 있다.
로딩 정보(52a)는 프로그램 이미지의 식별자 및 이에 대응하는 어드레스 및 크기를 포함할 수 있다. 예를 들면, 도 5a에 도시된 바와 같이, 로딩 정보(52a)는 제1 프로그램 이미지의 식별자(ID1) 및 이에 대응하는 제1 어드레스(ADDR1) 및 제1 크기(SIZE1)를 포함할 수 있고, 제1 프로그램 이미지는 시스템 메모리(14)에서 제1 어드레스(ADDR1)에서 시작하고 제1 크기(SIZE1)에 대응하는 영역에 저장될 수 있다. 일부 실시예들에서, 제1 크기(SIZE1)는 제1 어드레스(ADDR1)로부터 제1 프로그램 이미지의 종료(end) 어드레스까지의 어드레스 오프셋일 수 있다. 일부 실시예들에서, 로딩 정보(52a)는 제1 크기(SIZE1) 대신 제1 프로그램 이미지의 종료 어드레스를 포함할 수도 있다. 유사하게, 로딩 정보(52a)는 제2 프로그램 이미지의 식별자(ID2) 및 이에 대응하는 제2 어드레스(ADDR2) 및 제2 크기(SIZE2)를 포함할 수 있다. 보안 프로세서(12_4)는 보안 비휘발성 메모리(50a)로부터, 비보안 프로세서(12_2)로부터 제공된 프로그램 이미지의 식별자에 대응하는 어드레스 및 크기를 획득할 수 있다.
검증 정보(54a)는 프로그램 이미지의 식별자 및 이에 대응하는 공개 키를 포함할 수 있다. 예를 들면, 도 5a에 도시된 바와 같이, 검증 정보(54a)는 제1 프로그램 이미지의 식별자(ID1) 및 이에 대응하는 제1 공개 키(KEY1PUB)를 포함할 수 있고, 제1 프로그램 이미지에 포함된 디지털 서명은 제1 공개 키(KEY1PUB)에 의해서 검증될 수 있다. 유사하게, 검증 정보(54a)는 제2 프로그램 이미지의 식별자(ID2) 및 이에 대응하는 제2 공개 키(KEY2PUB)를 포함할 수 있고, 제2 프로그램 이미지에 포함된 디지털 서명은 제2 공개 키(KEY2PUB)에 의해서 검증될 수 있다. 보안 프로세서(12_4)는 비보안 프로세서(12_2)로부터 프로그램 이미지의 식별자를 제공받을 수 있고, 제공된 식별자에 대응하는 공개 키를 보안 비휘발성 메모리(50a)로부터 획득할 수 있다.
일부 실시예들에서, 보안 프로세서(12_4)는 로딩 정보(52a) 및/또는 검증 정보(54a)를 비보안 프로세서(12_2)로부터 획득할 수 있고, 보안 비휘발성 메모리(50a)에 로딩 정보(52a) 및/또는 검증 정보(54a)를 기입할 수 있다. 예를 들면, 보안 프로세서(12_4)는, 시스템(10)의 제조 과정에 포함되는 초기 설정에 응답하여 로딩 정보(52a) 및/또는 검증 정보(54a)를 보안 비휘발성 메모리(50a)에 기입할 수 있다. 다른 예시로서, 보안 프로세서(12_4)는, 시스템(10)의 마스터 리셋(master reset)(또는 팩토리 리셋)에 응답하여 로딩 정보(52a) 및/또는 검증 정보(54a)를 보안 비휘발성 메모리(50a)를 기입할 수 있다. 다른 예시로서, 보안 프로세서(12_4)는, 운영 체제 상에서 어플리케이션의 설치에 응답하여, 어플리케이션의 프로그램 이미지에 대응하는 로딩 정보(52a) 및/또는 검증 정보(54a)를 보안 비휘발성 메모리(50a)에 기입할 수 있다. 이에 따라, 보안 비휘발성 메모리(50a)는 프로그램 이미지의 로딩 정보(52b) 및 디지털 서명의 검증 정보(54b)를 포함하는 보안 펌웨어 이미지(50b)를 저장할 수 있다.
도 5b를 참조하면, 프로그램 이미지의 로딩 정보(52b) 및 디지털 서명의 검증 정보(54b)는, 보안 프로세서(12_4)에 의해서 실행되는 보안 펌웨어 이미지(50b)에 내장될 수 있다. 보안 펌웨어 이미지(50b)는 보안 비휘발성 메모리(36)로부터 보안 프로세서(12_4)의 내부 메모리(예컨대, 도 3의 32_5)에 로딩될 수 있다. 일부 실시예들에서, 도 5b에 도시된 바와 상이하게, 보안 펌웨어 이미지(50b)는 로딩 정보(52b) 및 검증 정보(54b) 중 하나만을 내장할 수도 있다. 보안 프로세서(12_4)는 , 비보안 프로세서(12_2)로부터 프로그램 이미지의 식별자를 제공받을 수 있고, 제공된 식별자에 대응하는 어드레스 및 크기를 보안 펌웨어 이미지(50b)로부터 획득할 수 있다. 또한, 보안 프로세서(12_4)는, 비보안 프로세서(12_2)로부터 프로그램 이미지의 식별자를 제공받을 수 있고, 제공된 식별자에 대응하는 공개 키를 보안 펌웨어 이미지(50b)로부터 획득할 수 있다.
도 6a 및 도 6b는 본 개시의 예시적 실시예들에 따라 키를 안전하게 관리하기 위한 방법의 예시들을 나타내는 순서도들이다. 구체적으로, 도 6a 및 도 6b의 순서도들은 도 2의 단계 S40의 예시들을 각각 나타낸다. 도 2를 참조하여 전술된 바와 같이, 도 6a의 단계 S40a 및 도 6b의 단계 S40b에서, 보안 프로세서가 프로그램 이미지의 적어도 일부를 시스템 메모리로부터 독출하는 동작이 수행될 수 있다. 일부 실시예들에서, 도 6a의 단계 S40a 및 도 6b의 단계 S40b는 도 1의 보안 프로세서(12_4)에 의해서 수행될 수 있고, 이하에서 도 6a 및 도 6b는 도 1을 참조하여 설명될 것이며, 도 6a 및 도 6b에 대한 설명 중 상호 중복되는 내용은 생략될 것이다.
도 6a를 참조하면, 단계 S40a는 단계 S42a 및 도 단계 S44a를 포함할 수 있다. 단계 S42a에서, 프로그램 이미지의 로딩 정보를 획득하는 동작이 수행될 수 있다. 예를 들면, 보안 프로세서(12_4)는 시스템 메모리(14)로부터 독출될 프로그램 이미지의 식별자를 획득할 수 있고, 획득된 식별자에 대응하는 로딩 정보를 보안 비휘발성 메모리(16) 및/또는 보안 펌웨어 이미지로부터 획득할 수 있다.
단계 S44a에서, 프로그램 이미지의 적어도 일부를 시스템 메모리(14)로부터 독출하는 동작이 수행될 수 있다. 예를 들면, 보안 프로세서(12_4)는 단계 S42a에서 획득된 로딩 정보에 기초하여 시스템 메모리(14)로부터 프로그램 이미지의 적어도 일부를 독출할 수 있다. 일부 실시예들에서, 보안 프로세서(12_4)는 프로그램 이미지 전체를 독출할 수도 있고, 프로그램 이미지의 일부를 독출할 수도 있다. 또한, 보안 프로세서(12_4)는 프로그램 이미지에 포함된 디지털 서명을 독출할 수도 있다.
도 6b를 참조하면, 단계 S40b는, 도 6a의 단계 S40a와 유사하게, 단계 S42b 및 단계 S44b를 포함할 수 있는 한편, 단계 S44b의 전후에 각각 수행되는 단계 S43b 및 단계 S45b를 더 포함할 수 있다. 일부 실시예들에서, 단계 S43b는 단계 S42b가 수행되기 전에 수행될 수도 있다.
단계 S42b에서, 프로그램 이미지의 로딩 정보를 회득하는 동작이 수행될 수 있다. 그 다음에 단계 S453b에서, 프로그램 이미지에 대한 액세스를 잠그는 동작이 수행될 수 있다. 예를 들면, 보안 프로세서(12_4)는 시스템 메모리(14)로부터 독출하는 동안 프로그램 이미지가 변경되지 아니하도록, 프로그램 이미지에 대한 액세스를 잠그는 동작이 수행될 수 있다. 일부 실시예들에서, 보안 프로세서(12_4)는 시스템 메모리(14)에 대한 비보안 프로세서(12_2)의 액세스를 차단할 수 있다. 일부 실시예들에서, 보안 프로세서(12_4)는 독출될 프로그램 이미지에 대한 비보안 프로세서(12_2)의 액세스를 차단할 수도 있다. 그 다음에, 단계 S45b에서 프로그램 이미지의 적어도 일부를 시스템 메모리(14)로부터 독출하는 동작이 수행될 수 있다.
단계 S45b에서, 프로그램 이미지에 대한 액세스를 허용하는 동작이 수행될 수 있다. 일부 실시예들에서, 보안 프로세서(12_4)는 시스템 메모리(14)에 대한 비보안 프로세서(12_2)의 액세스를 잠금 해제(unlock)할 수 있다. 일부 실시예들에서, 보안 프로세서(12_4)는 프로그램 이미지에 대한 비보안 프로세서(12_2)의 액세스를 잠금 해제할 수도 있다.
도 7a 및 도 7b는 본 개시의 예시적 실시예들에 따라 키를 안전하게 관리하는 방법의 예시들을 나타내는 순서도들이다. 구체적으로, 도 7a 및 도 7b의 순서도들은 도 2의 단계 S50의 예시들을 각각 나타낸다. 일부 실시예들에서, 도 2의 단계 S50은 도 7a의 단계 S50a 및 도 7b의 단계 S50b를 모두 포함할 수도 있다. 도 2를 참조하여 전술된 바와 같이, 도 7a의 단계 S50a 및 도 7b의 단계 S50b에서, 키를 생성하는 동작이 수행될 수 있다. 일부 실시예들에서, 도 7a 의 단계 S50a 및 도 7b의 단계 S50b는 도 1의 보안 프로세서(12_4)에 의해서 수행될 수 있고, 이하에서 도 7a 및 도 7b는 도 1을 참조하여 설명될 것이며, 도 7a 및 도 7b에 대한 설명 중 상호 중복되는 내용은 생략될 것이다.
도 7a를 참조하면, 단계 S50a는 단계 S51 및 단계 S52를 포함할 수 있다. 단계 S51에서, 프로그램 이미지의 적어도 일부의 해시(hash)를 생성하는 동작이 수행될 수 있다. 해시는 해시 함수의 결과로서, 해시 값, 해시 코드, 해시 체크섬(checksum) 등으로 지칭될 수 있다. 해시 함수는 임의의 길이를 가지는 데이터를 고정된 길이의 데이터로 맵핑하는 함수를 지칭할 수 있다. 보안 프로세서(12_4)는 해시 함수를 구현할 수 있고, 시스템 메모리(14)로부터 독출된 프로그램 이미지의 적어도 일부에 대해 해시를 생성할 수 있다. 이에 따라, 변경된 프로그램 이미지의 해시는, 오리지널 프로그램 이미지의 해시와 상이할 수 있다.
단계 S52에서, 해시에 기초하여 키를 생성하는 동작이 수행될 수 있다. 예를 들면, 보안 프로세서(12_4)는 해시를 키 유도 함수에 입력할 수 있다. 즉, 프로그램 이미지의 적어도 일부의 해시가 바인딩 정보로서 사용될 수 있다.
도 7b를 참조하면, 단계 S50b는 복수의 단계들(S53 내지 S55)을 포함할 수 있다. 단계 S53에서, 디지털 서명의 검증 정보를 획득하는 동작이 수행될 수 있다. 예를 들면, 보안 프로세서(12_4)는, 도 5a를 참조하여 전술된 바와 같이 보안 비휘발성 메모리(50a)로부터 검증 정보를 획득할 수도 있고, 도 5b를 참조하여 전술된 바와 같이 보안 펌웨어 이미지(50b)로부터 검증 정보를 획득할 수도 있다.
단계 S54에서, 디지털 서명을 검증하는 동작이 수행될 수 있다. 예를 들면, 보안 프로세서(12_4)는, 단계 S53에서 검증 정보로서 공개 키를 획득할 수 있고, 공개 키를 사용하여 디지털 서명을 검증할 수 있다. 이에 따라, 디지털 서명의 검증은, 프로그램 이미지의 진정성에 따라 성공하거나 실패할 수 있다.
단계 S55에서, 검증 결과에 기초하여 키를 생성하는 동작이 수행될 수 있다. 예를 들면, 보안 프로세서(12_4)는 단계 S54의 검증 결과를 키 유도 함수에 입력할 수 있다. 이에 따라, 검증이 성공한 경우 생성되는 키 및 검증이 실패한 경우 생성되는 키는 상이할 수 있다.
도 8은 본 개시의 예시적 실시예에 따라 키를 안전하게 관리하기 위한 방법의 예시를 나타내는 도면이다. 구체적으로, 도 8은 비보안 프로세서(82) 및 보안 프로세서(84)의 동작들을 시간의 흐름에 따라 나타낸다. 일부 실시예들에서, 보안 프로세서(84)는 프로그램 이미지의 검증 결과를 다른 프로그램 이미지, 즉 보안 프로그램이 요청한 키를 생성하는데 사용할 수 있다. 이하 도 8에 대한 설명 중 도면들을 참조하여 전술된 내용과 중복되는 내용은 생략될 것이다.
단계 S81에서, 비보안 프로세서(82)는 부트로더를 실행할 수 있다. 부트로더는, 비보안 프로세서(82), 보안 프로세서(84) 및 시스템 메모리(86)를 포함하는 시스템이 전력을 공급받거나 리셋되는 경우와 같이, 시스템의 초기화 과정에서 실행될 수 있다. 부트로더는, 일부 실시예들에서 비보안 프로세서(82)에 포함된 ROM(예컨대, 도 12의 122_2)에 저장될 수 있고, 시스템 메모리(86)에 로딩된 후 비보안 프로세서(82)에 의해서 실행될 수 있다. 단계 S82에서, 비보안 프로세서(82)는 프로그램 이미지의 로딩을 제어할 수 있다. 예를 들면, 부트로더는 비보안 프로세서(82)에 의해서 실행됨으로써, 적어도 하나의 프로그램 이미지, 예컨대 운영체제, 커널(kernel) 등을 시스템 메모리(86)에 로딩할 수 있다. 단계 S83에서, 비보안 프로세서(82)는 보안 프로세서(84)에 디지털 서명의 검증을 요청할 수 있다. 부트로더에 의해서 로딩되는 적어도 하나의 프로그램 이미지는 디지털 서명을 포함할 수 있고, 부트로더는 비보안 프로세서(82)에 의해서 실행됨으로써 시스템 메모리(86)에 로딩된 프로그램 이미지에 포함된 디지털 서명의 검증을 요청할 수 있다.
단계 S84에서, 보안 프로세서(84)는 시스템 메모리(86)로부터 프로그램 이미지의 적어도 일부를 독출할 수 있다. 예를 들면, 보안 프로세서(84)는 시스템 메모리(86)에 저장된 프로그램 이미지에서 디지털 서명을 독출할 수 있다. 단계 S85에서, 보안 프로세서(84)는 디지털 서명을 검증할 수 있고 검증 결과를 저장할 수 있다. 예를 들면, 보안 프로세서(84)는 내부 메모리(예컨대, 도 3의 32_5)에 디지털 서명의 검증 결과를 저장할 수 있다. 단계 S86에서, 보안 프로세서(84)는 검증 결과를 비보안 프로세서(82)에 제공할 수 있다.
단계 S87에서, 비보안 프로세서(82)는 보안 프로그램을 실행할 수 있다. 예를 들면, 보안 프로그램의 프로그램 이미지가 시스템 메모리(86)에 로딩될 수 있고, 비보안 프로세서(82)는 로딩된 프로그램 이미지의 실행을 개시할 수 있다. 단계 S88에서, 비보안 프로세서(82)는 보안 프로세서(84)에 키를 요청할 수 있다. 예를 들면, 보안 프로그램은 비보안 프로세서(82)에 의해서 실행됨으로써 키를 보안 프로세서(84)에 요청할 수 있다.
단계 S89에서, 보안 프로세서(84)는 디지털 서명의 검증 결과에 기초하여 키를 생성할 수 있다. 예를 들면, 보안 프로세서(84)는 단계 S85에서 생성된 검증 결과를 키 유도 함수에 입력할 수 있다. 이에 따라, 키는 부트로더에 의해서 검증이 요청된 디지털 서명의 검증 결과에 의존할 수 있다. 일부 실시예들에서, 보안 프로세서(84)는 검증 결과뿐만 아니라, 시스템 메모리(86)로부터 독출된 보안 프로그램의 프로그램 이미지의 적어도 일부에 더 기초하여 키를 생성할 수도 있다. 단계 S90에서, 보안 프로세서(84)는 비보안 프로세서(82)에 키를 제공할 수 있다.
도 9는 본 개시의 예시적 실시예에 따른 집적 회로의 예시를 나타내는 블록도이다. 구체적으로, 도 9의 블록도는 보안 프로세서(94)가 키를 생성하는 동작의 예시를 나타낸다. 도 9에 도시된 바와 같이, 집적 회로(90)는 비보안 프로세서(92) 및 보안 프로세서(94)를 포함할 수 있고, 보안 프로세서(94)는 키 유도 함수 모듈(94_2) 및 암호화 모듈(94_4)을 포함할 수 있다.
키 유도 함수 모듈(94_2)은 이미지 정보(INFOIMG), 키 식별자(IDKEY) 및 하드웨어 키(KEYHW)를 수신할 수 있고, 이미지 정보(INFOIMG), 키 식별자(IDKEY) 및 하드웨어 키(KEYHW)에 종속하는 내부 키(KEYINT)를 생성할 수 있다. 일부 실시예들에서, 키 유도 함수 모듈(94_2)의 적어도 일부는, 보안 프로세서(94)에 포함된 적어도 하나의 코어(예컨대, 도 3의 32_2) 및 적어도 하나의 코어에 의해서 실행되는 일련의 명령어들로 구현될 수 있다. 또한, 일부 실시예들에서, 키 유도 함수 모듈(94_2)의 적어도 일부는, 보안 프로세서(94)에 포함된 하드웨어 가속기(예컨대, 도 3의 32_4)에 의해서 구현될 수도 있다.
이미지 정보(INFOIMG)는 보안 프로세서(94)가 시스템 메모리(예컨대, 도 1의 14)로부터 독출한 프로그램 이미지의 적어도 일부로부터 생성된 바인딩 정보를 지칭할 수 있다. 예를 들면, 이미지 정보(INFOIMG)는, 프로그램 이미지의 해시일 수도 있고, 프로그램 이미지에 포함된 디지털 서명(또는 그것의 해시)일 수도 있으며, 디지털 서명의 검증 결과일 수도 있다. 도면들을 참조하여 전술된 바와 같이, 이미지 정보(INFOIMG)는 보안 프로세서(94)에 의해서 직접 독출된 프로그램 이미지로부터 보안 프로세서(94)의 내부에서 생성됨으로써 보안 프로세서(94)의 외부에 노출되지 아니할 수 있다. 이에 따라, 향상된 보안을 제공하는 키 바인딩이 달성될 수 있다.
키 식별자(IDKEY)는, 도 9에 도시된 바와 같이, 비보안 프로세서(92)로부터 제공될 수 있다. 예를 들면, 비보안 프로세서(92)에 의해서 실행되는 보안 프로그램은 복수의 키들을 사용할 수 있고, 키 식별자(IDKEY)를 통해서 복수의 키들을 식별하고 관리할 수 있다. 키 식별자(IDKEY)는 전용의 물리적 버스(도 1의 12_6)를 통해서 비보안 프로세서(92)로부터 보안 프로세서(94)로 전달될 수 있다. 일부 실시예들에서, 키 식별자(IDKEY)는 비보안 프로세서(92)로부터 보안 프로세서(94)에 제공되는, 키에 대한 요청에 포함될 수 있다.
하드웨어 키(KEYHW)는, 보안 프로세서(94)(또는 집적 회로(90))에 고유한 값을 가질 수 있고, 루트(root) 키로서 지칭될 수 있다. 하드웨어 키(KEYHW)는 보안 프로세서(94)의 외부로 노출되지 아니할 수 있다. 일부 실시예들에서, 보안 프로세서(94)는, 안티-퓨즈 어레이와 같은 OTP(One-Time-Programmable) 메모리를 포함할 수 있고, 하드웨어 키(KEYHW)는 집적 회로(90) 제조시 OTP 메모리에 프로그램될 수 있다. 일부 실시예들에서, 보안 프로세서(94)는 물리적 복제방지 기능(Physically Unclonable Function; PUF) 블록을 포함할 수 있고, 하드웨어 키(KEYHW)는 물리적 복제불가 기능 블록의 출력에 기초할 수 있다. 물리적 복제방지 기능(PUF)은 하드웨어의 본질적인(intrinsic) 특성에 기초하여 하드웨어에 대응하는 고유한(unique) 값을 제공하는 기능을 지칭할 수 있다. 예를 들면, 반도체 칩들과 같은 복수의 하드웨어들이 동일한 공정에 의해서 제조될지라도, 복수의 하드웨어들 각각은 물리적으로 완전히 일치하지 아니할 수 있고, 복수의 하드웨어들에서 미약한 변동(variation), 즉 공정 변동(process variation)이 발생할 수 있다. 이러한 변동들에 기초하여, 하드웨어의 고유한 값이 추출될 수 있고, 추출된 값은 보안이 필요한 동작, 예컨대 보안 통신, 보안 데이터 처리, 사용자 식별, 펌웨어(firmware) 업데이트 등에 사용될 수 있다. 물리적 복제방지 기능 블록은, 비제한적인 예시로서 SRAM 셀에 저장된 값에 기초한 SRAM 구조, 주파수 변동에 기초한 링 오실레이터 구조, 누설 전류 등에 기초한 누설 기반 구조, 신호의 경로가 임의로 결정되는 아비터(arbiter) 구조, 로직 게이트들의 문턱 레벨들의 차이에 기초한 구조 중 적어도 하나를 가질 수 있다.
암호화 모듈(94_4)은 키 유도 함수 모듈(94_2)로부터 내부 키(KEYINT)를 수신할 수 있고, 내부 키(KEYINT)에 기초하여 암호화 및/또는 복호화를 수행할 수 있다. 예를 들면, 도 9에 도시된 바와 같이, 암호화 모듈(94_4)은 비보안 프로세서(92)로부터 복호화된 데이터(DEC)를 수신할 수 있고, 복호화된 데이터(DEC)를 내부 키(KEYINT)를 사용하여 암호화함으로써, 암호화된 데이터(ENC)를 비보안 프로세서(92)에 제공할 수 있다. 또한, 도 9에 도시된 바와 같이, 암호화 모듈(94_4)은 비보안 프로세서(92)로부터 암호화된 데이터(ENC)를 수신할 수 있고, 암호화된 데이터(ENC)를 내부 키(KEYINT)를 사용하여 복호화함으로써, 복호화된 데이터(DEC)를 비보안 프로세서(92)에 제공할 수 있다. 이에 따라, 비보안 프로세서(92)는 보안이 요구되는 데이터를 보안 프로세서(94)로 하여금 암호화하게 할 수 있다. 예를 들면, 비보안 프로세서(92)는, 자신이 생성하거나 사용한 DEK(Data Encryption Key)의 보안을 유지하기 위하여, DEK를 보안 프로세서(94)에 제공할 수 있고, 내부 키(KEYINT)를 사용하여 암호화된, 암호화된 DEK를 보안 프로세서(94)로부터 수신할 수 있으며, 암호화된 DEK를 시스템 스토리지(예컨대, 도 1의 18)에 저장할 수 있다. 즉, 비보안 프로세서(92)는 보안 프로세서(94)로부터 제공되는 키로서 암호화된 DEK를 수신할 수 있고, 내부 키(KEYINT)에 기인하여, 암호화된 DEK 역시 바인딩될 수 있다. 또한, 비보안 프로세서(92)는 DEK에 기초한 보안 동작을 위하여, 시스템 스토리지로부터 암호화된 DEK를 독출할 수 있고, 암호화된 DEK를 보안 프로세서(94)에 제공할 수 있으며, 내부 키(KEYINT)를 사용하여 복호화된, DEK를 보안 프로세서(94)로부터 수신할 수 있다. 일부 실시예들에서, 도 9에서 점선으로 도시된 바와 같이, 키 유도 함수 모듈(94_2)에 의해서 생성된 내부 키(KEYINT)가 비보안 프로세서(92)의 요청에 응답하여 비보안 프로세서(92)에 제공될 수도 있다.
도 10은 본 개시의 예시적 실시예에 따른 집적 회로의 예시를 나타내는 블록도이다. 도 10에 도시된 바와 같이, 집적 회로(100)는 비보안 프로세서(102) 및 보안 프로세서(104)를 포함할 수 있고, 외부로부터의 공격을 감지하는 센서(106)를 더 포함할 수 있다. 도 10에 대한 설명 중 도면들을 참조하여 전술된 내용과 중복되는 내용은 생략될 것이다.
센서(106)는 집적 회로(100)의 외부로부터 보안 프로세서(104)에 대한 공격을 감지할 수 있다. 공격자들은 보안 프로세서(104)로부터 정보를 추출하기 위하여 물리적인 공격을 집적 회로(100)에 가할 수 있다. 예를 들면, 공격자들은 집적 회로(100)를 해체할 수 있고, 해체된 집적 회로(100)에 전력을 공급하고, 프로빙(probing)을 통해서 정보의 추출을 시도할 수 있다. 집적 회로(100)는 이와 같은 침습성(invasive) 공격을 검출하기 위하여 센서(106)를 포함할 수 있다.
센서(106)는 보안 프로세서(104)에 대한 침습성 공격을 검출하기 위한 임의의 구조를 가질 수 있다. 일부 실시예들에서, 센서(106)는 광 감지 소자, 예컨대 포토다이오드를 포함할 수 있고, 집적 회로(100)의 해체에 기인하는 빛의 유입을 감지할 수 있다. 또한, 일부 실시예들에서, 센서(106)는, 복수의 도전 패턴들을 포함하고 보안 프로세서(104)를 커버하는, 쉴드(shield)를 포함할 수 있고, 집적 회로(100)의 해체에 기인하는 쉴드의 특성(예컨대, 정전용량(capacitance), 저항치(resistance))의 변화나 쉴드를 통과하는 신호들의 변화를 감지할 수 있다. 일부 실시예들에서, 센서(106)는, 도 10에 도시된 바와 상이하게, 보안 프로세서(104)뿐만 아니라 비보안 프로세서(102)에 대한 침습성 공격을 검출할 수도 있다. 센서(106)에 의해서 감지된 공격에 응답하여 수행되는 동작의 예시들이 도 11을 참조하여 후술될 것이다.
도 11은 본 개시의 예시적 실시예에 따라 키를 안전하게 관리하기 위한 방법의 예시를 나타내는 순서도이다. 구체적으로, 도 11의 순서도는, 도 10의 센서(106)에 의해서 보안 프로세서(104)에 대한 침습성 공격이 감지되는 경우, 보안 프로세서(104)에 의해서 수행되는 동작의 예시를 나타낸다. 이하에서, 도 11은 도 10을 참조하여 설명될 것이다.
단계 S120에서, 공격의 발생 여부가 판정될 수 있다. 예를 들면, 보안 프로세서(104)는 센서(106)의 출력 신호를 수신할 수 있고, 출력 신호에 기초하여 공격의 발생 여부를 판정할 수 있다. 도 11에 도시된 바와 같이, 공격이 발생한 경우, 단계 S140에서 공격으로부터의 보호를 위한 동작이 수행될 수 있다. 단계 S140은, 일부 실시예들에서 도 11에 도시된 바와 같이 복수의 단계들(S142, S144, S146)을 포함할 수도 있고, 일부 실시예들에서 도 11에 도시된 바와 상이하게 복수의 단계들(S142, S144, S146) 중 일부만을 포함할 수도 있다. 일부 실시예들에서, 복수의 단계들(S142, S144, S146) 중 적어도 2개는 병렬적으로 수행될 수 있다. 보안 프로세서(104)가 공격 발생에 응답하여 수행하는 동작은 도 11의 예시들에 제한되지 아니하는 점이 유의된다.
단계 S142에서, 수행 중인 동작이 종료될 수 있다. 예를 들면, 보안 프로세서(104)는 도면들을 참조하여 전술된 키를 안전하게 관리하기 위한 동작을 종료할 수 있고, 이에 따라 프로빙에 의한 보안 프로세서(104)의 동작 추정이 방지될 수 있다. 단계 S144에서, 적어도 하나의 소자를 비가역적인(irreversible) 상태로 천이시키는 동작이 수행될 수 있다. 예를 들면, 보안 프로세서(104)는 미세한 패턴에 강한 전기적 신호를 인가함으로써 패턴을 개방(short)시킬 수 있고, 개방된 패턴을 통해서 신호가 전달되는 것을 차단할 수 있다. 또한, 보안 프로세서(104)는 OTP 메모리에서 프로그램되지 아니한 셀을 프로그램함으로써 비가역적 상태로 천이시킬 수도 있다. 단계 S146에서, 데이터를 완전삭제(sanitization)하는 동작이 수행될 수 있다. 예를 들면, 보안 프로세서(104)는 내부 메모리(예컨대, 도 3의 32_5) 및/또는 보안 메모리(예컨대, 도 3의 38)에 임의의 데이터(예컨대, 모드 영인 데이터)를 재기입(overwrite)함으로써 데이터를 완전삭제할 수 있다.
도 12는 본 개시의 예시적 실시예에 따른 시스템의 예시를 나타내는 블록도이다. 도 12에 도시된 바와 같이, 시스템(120)은 시스템-온-칩(122), DRAM(124), 스토리지(128) 및 보안 비휘발성 메모리(126)를 포함할 수 있다. 도 12의 시스템(120)에서, DRAM(124)은 시스템 메모리로서 기능할 수 있고, 스토리지(128)는 시스템 스토리지로 기능할 수 있다. 이하에서 도 12에 대한 설명 중 도 1에 대한 설명과 중복되는 내용은 생략될 것이다.
시스템-온-칩(122)은, 반도체 공정에 의해서 제조되고 다양한 하드웨어 블록들이 집적된, 집적 회로를 지칭할 수 있다. 도 12에 도시된 바와 같이, 시스템-온-칩(122)은, 적어도 하나의 코어(122_1), ROM(122_2), 주변기기들(122_3), DRAM 액세스 컨트롤러(122_4), 스토리지 컨트롤러(122_6) 및 보안 프로세서(122_7)를 포함할 수 있다. 도면들을 참조하여 전술된 비보안 프로세서는, 적어도 하나의 코어(122_1)를 포함할 수 있고, 일부 실시예들에서, 보안 프로세서(122_7)를 제외한 다른 구성요소를 더 포함할 수도 있다. 일부 실시예들에서, 시스템-온-칩(122)은, 적어도 하나의 코어(122_1), ROM(122_2), 주변기기들(122_3), DRAM 액세스 컨트롤러(122_4) 및 스토리지 컨트롤러(122_6)가 연결된 버스를 더 포함할 수 있다.
적어도 하나의 코어(122_1)는 ROM(122_2)에 저장된 명령어들 및/또는 DRAM(124)에 저장된 명령어들을 실행할 수 있다. 예를 들면, 적어도 하나의 코어(122_1)는 캐시를 포함할 수 있고, ROM(122_2) 및/또는 DRAM(124)에 포함된 명령어들을 캐시에 복사할 수 있고, 캐시에 저장된 명령어들을 실행할 수 있다. 일부 실시예들에서, 적어도 하나의 코어(122_1)는 대칭적이거나 비대칭적인 복수의 코어들로 구성될 수 있다.
ROM(122_2)은 적어도 하나의 코어(122_1)에 의해서 실행되는 명령어들을 저장할 수 있다. 예를 들면, ROM(122_2)은 부트로더를 저장할 수 있고, 적어도 하나의 코어(122_1)는 시스템(120)의 초기화 과정 개시시 ROM(122_2)에 저장된 명령어들, 즉 부트로더를 가장 먼저 실행할 수 있다. 이를 위하여, 일부 실시예들에서, 부트로더의 적어도 일부는 DRAM(124)에 로딩될 수 있다. 또한, 일부 실시예들에서, ROM(122_2)은 명령어들뿐만 아니라 적어도 하나의 코어(122_1)가 명령어들을 실행시 참조하는 불변의 데이터를 더 저장할 수도 있다.
주변기기들(122_3)은 다양한 기능의 하드웨어 블록들을 포함할 수 있다. 예를 들면, 주변기기들(122_3)은, 시스템-온-칩(122) 외부의 장치와 통신 채널을 제공하는 입출력(I/O) 인터페이스 블록을 포함할 수도 있고, 데이터 인코딩/디코딩 등과 같은 동작을 고속으로 수행하도록 설계된 하드웨어 가속기를 포함할 수도 있다.
DRAM 액세스 컨트롤러(122_4)는 DRAM 컨트롤러(122_5)를 통한 DRAM(124)에 대한 액세스를 제어할 수 있다. 예를 들면, 시스템 메모리로서 DRAM(124)은 보안 영역 및 비보안 영역으로 분할될 수 있고, DRAM 액세스 컨트롤러(122_4)는 DRAM(124)의 보안 영역에 대한 액세스를 제한할 수 있다. 일부 실시예들에서, 보안 프로세서(122_7)는, 키 생성을 위하여 DRAM(124)에 저장된 프로그램 이미지의 적어도 일부를 독출하는 동안 DRAM 액세스 컨트롤러(122_4)를 통해서, 시스템-온-칩(122)의 다른 구성요소들의 프로그램 이미지에 대한 액세스를 잠글 수 있고, 프로그램 이미지의 적어도 일부에 대한 독출을 완료한 후 DRAM 액세스 컨트롤러(122_4)를 통해서 프로그램 이미지에 대한 액세스를 잠금 해제할 수 있다.
DRAM 컨트롤러(122_5)는 DRAM(124)에 액세스하기 위한 인터페이스를 제공할 수 있다. 또한, 스토리지 컨트롤러(122_6)는 스토리지(128)에 액세스하기 위한 인터페이스를 제공할 수 있다. 예를 들면, 스토리지(128)는 플래시 메모리 장치를 포함할 수 있고, 스토리지 컨트롤러(122_6)는 플래시 메모리의 인터페이스를 제공할 수 있다.
보안 프로세서(122_7)는 전용의 물리적 버스를 통해서 비보안 프로세서, 예컨대 적어도 하나의 코어(122_1)와 통신할 수 있고, 이를 위하여 적어도 하나의 레지스터(예컨대, 도 3의 32_1)를 포함할 수 있다. 또한, 보안 프로세서(122_7)는 보안 비휘발성 메모리(126)에 배타적으로 액세스할 수 있고, 이를 위하여 비휘발성 메모리 컨트롤러(예컨대, 도 3의 32_6)를 포함할 수 있다. 보안 프로세서(122_7)는 DRAM 컨트롤러(122_5)를 통해서 DRAM(124)에 저장된 프로그램 이미지의 적어도 일부를 직접 독출할 수 있고, 독출된 프로그램 이미지의 적어도 일부에 기초하여 바인딩 정보를 생성할 수 있다. 보안 프로세서(122_7)는 내부에서 생성된 바인딩 정보에 기초하여 키를 생성할 수 있고, 이에 따라 키 생성에 사용되는 바인딩 정보의 노출이 방지될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 보안 동작을 수행하기 위하여, 시스템 메모리에 저장된 제1 프로그램 이미지를 실행하도록 구성된 제1 프로세서;
    상기 시스템 메모리에 저장된 제2 프로그램 이미지의 적어도 일부를 독출하고, 상기 제2 프로그램 이미지의 상기 적어도 일부에 기초하여 키를 생성하도록 구성된 제2 프로세서; 및
    상기 제1 프로세서 및 상기 제2 프로세서 사이 통신을 위한 전용의 통신채널을 포함하고,
    상기 제1 프로세서는, 상기 전용의 통신 채널을 통해서 상기 키를 수신하고, 상기 키에 기초하여 상기 보안 동작을 수행하도록 구성된 것을 특징으로 하는 집적 회로.
  2. 청구항 1에 있어서,
    상기 제2 프로세서는, 상기 제2 프로그램 이미지의 상기 적어도 일부의 해시(hash)를 생성하고, 상기 해시에 기초하여 상기 키를 생성하도록 구성된 것을 특징으로 하는 집적 회로.
  3. 청구항 1에 있어서,
    상기 제2 프로그램 이미지의 상기 적어도 일부는, 디지털 서명을 포함하고,
    상기 제2 프로세서는, 상기 디지털 서명에 기초하여 상기 키를 생성하도록 구성된 것을 특징으로 하는 집적 회로.
  4. 청구항 3에 있어서,
    상기 제2 프로세서는, 상기 디지털 서명을 검증하기 위한 검증 정보에 기초하여 상기 디지털 서명을 검증하고, 검증 결과에 기초하여 상기 키를 생성하도록 구성된 것을 특징으로 하는 집적 회로.
  5. 청구항 4에 있어서,
    상기 제2 프로세서는, 배타적으로 액세스 가능한 비휘발성 메모리 및 상기 제2 프로세서에 의해서 실행되는 프로그램 이미지 중 적어도 하나로부터 상기 검증 정보를 획득하도록 구성된 것을 특징으로 하는 집적 회로.
  6. 청구항 1에 있어서,
    상기 제2 프로세서가 상기 제2 프로그램 이미지의 상기 적어도 일부를 독출하는 동안, 상기 제2 프로그램 이미지에 대한 상기 제1 프로세서의 액세스는 차단되는 것을 특징으로 하는 집적 회로.
  7. 청구항 1에 있어서,
    상기 제2 프로세서는, 상기 제1 프로그램 이미지를 실행하는 상기 제1 프로세서의 요청에 응답하여, 상기 키를 생성하도록 구성되고,
    상기 요청은, 상기 전용의 통신 채널을 통해 상기 제1 프로세서로부터 상기 제2 프로세서로 전달되는 것을 특징으로 하는 집적 회로.
  8. 청구항 7에 있어서,
    상기 요청은, 상기 제2 프로그램 이미지의 식별자를 포함하고,
    상기 제2 프로세서는, 상기 식별자에 기초하여 배타적으로 액세스 가능한 비휘발성 메모리로부터 상기 제2 프로그램 이미지의 로딩 정보를 획득하도록 구성된 것을 특징으로 하는 집적 회로.
  9. 청구항 7에 있어서,
    상기 요청은, 키 식별자를 포함하고,
    상기 제2 프로세서는, 상기 키 식별자에 더 기초하여 상기 키를 생성하도록 구성된 것을 특징으로 하는 집적 회로.
  10. 청구항 1에 있어서,
    상기 제1 프로세서는, 상기 전용의 통신 채널을 통해서 상기 제2 프로세서에 데이터를 제공하도록 구성되고,
    상기 제2 프로세서는, 상기 제2 프로그램 이미지의 상기 적어도 일부에 기초하여 내부 키를 생성하고, 상기 내부 키에 기초하여 상기 데이터를 복호화하거나 암호화함으로써 상기 키를 생성하도록 구성된 것을 특징으로 하는 집적 회로.
  11. 청구항 1에 있어서,
    상기 제1 프로그램 이미지 및 상기 제2 프로그램 이미지는, 동일한 것을 특징으로 하는 집적 회로.
  12. 청구항 1에 있어서,
    상기 제2 프로세서는, 상기 제1 프로세서로부터 상기 제2 프로그램 이미지의 식별자 및 로딩 정보를 상기 전용의 통신 채널을 통해서 수신하고, 상기 식별자 및 상기 로딩 정보를 배타적으로 액세스 가능한 비휘발성 메모리에 기입하도록 구성된 것을 특징으로 하는 집적 회로.
  13. 청구항 1에 있어서,
    상기 제2 프로세서는, 내부에서 하드웨어 키를 획득하고, 상기 하드웨어 키에 더 기초하여 상기 키를 생성하도록 구성된 것을 특징으로 하는 집적 회로.
  14. 청구항 1에 있어서,
    상기 제2 프로세서는, 상기 시스템 메모리로부터 상기 제2 프로그램 이미지의 상기 적어도 일부를 독출하도록 구성된 DMA(Direct Memory Access) 컨트롤러를 포함하는 것을 특징으로 하는 집적 회로.
  15. 청구항 1에 있어서,
    상기 제2 프로세서에 대한 물리적 공격을 감지하도록 구성된 센서를 더 포함하는 집적 회로.
  16. 전용의 통신 채널을 통해서 상호 통신하도록 구성된 제1 프로세서 및 제2 프로세서를 포함하는 집적 회로;
    상기 제1 프로세서에 의해서 실행가능한 프로그램 이미지를 저장하도록 구성된 시스템 메모리; 및
    상기 제2 프로세서에 의해서 배타적으로 액세스 가능하고, 상기 프로그램 이미지의 로딩 정보를 저장하는 비휘발성 메모리를 포함하고,
    상기 제2 프로세서는, 상기 로딩 정보에 기초하여 상기 시스템 메모리로부터 상기 프로그램 이미지의 적어도 일부를 독출하고, 상기 프로그램 이미지의 상기 적어도 일부에 기초하여 키를 생성하고, 상기 키를 상기 제1 프로세서에 제공하도록 구성되고,
    상기 제1 프로세서는, 상기 키에 기초하여 보안 동작을 수행하도록 구성된 것을 특징으로 하는 시스템.
  17. 청구항 16에 있어서,
    상기 프로그램 이미지의 상기 적어도 일부는, 디지털 서명을 포함하고,
    상기 제2 프로세서는, 상기 디지털 서명에 기초하여 상기 키를 생성하도록 구성된 것을 특징으로 하는 시스템.
  18. 청구항 17에 있어서,
    상기 비휘발성 메모리는, 상기 디지털 서명을 검증하기 위한 검증 정보를 더 저장하고,
    상기 제2 프로세서는, 상기 검증 정보에 기초하여 상기 디지털 서명을 검증하고, 검증 결과에 기초하여 상기 키를 생성하도록 구성된 것을 특징으로 하는 시스템.
  19. 청구항 16에 있어서,
    상기 제2 프로세서는, 상기 시스템의 제조 과정에 포함되는 초기 설정, 상기 시스템의 마스터 리셋, 상기 제1 프로세서에 의해서 실행되는 운영 체제 상에 상기 프로그램 이미지에 대응하는 어플리케이션의 설치 중 적어도 하나에 응답하여, 상기 로딩 정보를 상기 비휘발성 메모리에 기입하도록 구성된 것을 특징으로 하는 집적 회로.
  20. 제1 프로세서 및 제2 프로세서를 포함하는 집적 회로에 의해서 수행되는 방법으로서,
    상기 제2 프로세서에 의해서, 시스템 메모리로부터 상기 제1 프로세서에 의해서 실행 가능한 프로그램 이미지의 적어도 일부를 독출하는 단계;
    상기 제2 프로세서에 의해서, 상기 프로그램 이미지의 적어도 일부에 기초하여 키를 생성하는 단계; 및
    상기 제1 프로세서에 의해서, 상기 키에 기초하여 보안 동작을 수행하는 단계를 포함하는 방법.
KR1020200002692A 2020-01-08 2020-01-08 키를 안전하게 관리하기 위한 장치 및 방법 KR20210089486A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020200002692A KR20210089486A (ko) 2020-01-08 2020-01-08 키를 안전하게 관리하기 위한 장치 및 방법
US16/929,917 US11533172B2 (en) 2020-01-08 2020-07-15 Apparatus and method for securely managing keys
DE102020119389.0A DE102020119389A1 (de) 2020-01-08 2020-07-22 Vorrichtung und Verfahren zum sicheren Verwalten von Schlüsseln
CN202010979618.2A CN113094720A (zh) 2020-01-08 2020-09-17 安全地管理密钥的设备和方法
TW109132804A TW202147100A (zh) 2020-01-08 2020-09-23 積體電路、用於安全地管理用於資料安全的多個密鑰的系統以及由積體電路執行的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200002692A KR20210089486A (ko) 2020-01-08 2020-01-08 키를 안전하게 관리하기 위한 장치 및 방법

Publications (1)

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

Family

ID=76432389

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200002692A KR20210089486A (ko) 2020-01-08 2020-01-08 키를 안전하게 관리하기 위한 장치 및 방법

Country Status (5)

Country Link
US (1) US11533172B2 (ko)
KR (1) KR20210089486A (ko)
CN (1) CN113094720A (ko)
DE (1) DE102020119389A1 (ko)
TW (1) TW202147100A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018127330A1 (de) * 2018-11-01 2020-05-07 Infineon Technologies Ag System-on-Chip und Verfahren zum Betreiben eines System-on-Chip
CN114996725B (zh) * 2022-05-06 2023-07-28 北京中科昊芯科技有限公司 一种保护开发程序的方法以及处理器

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2903202A4 (en) * 2012-09-28 2015-11-04 Fujitsu Ltd INFORMATION PROCESSING DEVICE AND SEMICONDUCTOR DEVICE
US9008304B2 (en) 2012-12-28 2015-04-14 Intel Corporation Content protection key management
JP6099418B2 (ja) * 2013-02-01 2017-03-22 ルネサスエレクトロニクス株式会社 半導体装置及びそのデータ処理方法
KR101508439B1 (ko) 2013-10-28 2015-04-08 포항공과대학교 산학협력단 데이터 기밀성 보장 방법, 이를 이용하는 데이터 공유 방법 및 시스템
US9686077B2 (en) 2014-03-06 2017-06-20 Microsoft Technology Licensing, Llc Secure hardware for cross-device trusted applications
EP2955872B1 (en) 2014-06-12 2016-10-12 Nxp B.V. Method for configuring a secure element, key derivation program, computer program product and configurable secure element
KR20160058375A (ko) 2014-11-14 2016-05-25 삼성전자주식회사 단말 내장형 보안 요소와의 안전한 통신
JP6357091B2 (ja) 2014-12-03 2018-07-11 Kddi株式会社 情報処理装置、及びコンピュータプログラム
US9621342B2 (en) 2015-04-06 2017-04-11 Qualcomm Incorporated System and method for hierarchical cryptographic key generation using biometric data
US10482036B2 (en) 2016-09-18 2019-11-19 Winbond Electronics Corporation Securely binding between memory chip and host
US10776522B1 (en) * 2018-02-20 2020-09-15 Xilinx, Inc. Asymmetric protection of circuit designs
JP7009270B2 (ja) * 2018-03-14 2022-01-25 キヤノン株式会社 情報処理装置及びプログラムの検証方法
US11011614B2 (en) 2018-06-29 2021-05-18 Taiwan Semiconductor Manufacturing Company, Ltd. High electron mobility transistor (HEMT) device and method of forming same
CN110655922B (zh) 2018-06-29 2024-02-27 昭荣化学工业株式会社 使用In3+盐作为掺杂剂的ZnSe量子点的波长调谐
US11055105B2 (en) * 2018-08-31 2021-07-06 Micron Technology, Inc. Concurrent image measurement and execution
IT201900005020A1 (it) * 2019-04-03 2020-10-03 Stmicroelectronics Application Gmbh Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
KR20210089485A (ko) 2020-01-08 2021-07-16 삼성전자주식회사 소프트웨어의 인증을 위한 장치 및 방법

Also Published As

Publication number Publication date
US11533172B2 (en) 2022-12-20
CN113094720A (zh) 2021-07-09
DE102020119389A1 (de) 2021-07-08
TW202147100A (zh) 2021-12-16
US20210211281A1 (en) 2021-07-08

Similar Documents

Publication Publication Date Title
KR100792287B1 (ko) 자체 생성한 암호화키를 이용한 보안방법 및 이를 적용한보안장치
US11416605B2 (en) Trusted execution environment instances licenses management
CN109313690B (zh) 自包含的加密引导策略验证
TWI489308B (zh) 未知安全金鑰下開機影像之安全更新
KR101735023B1 (ko) 민감한 코드와 데이터를 보호하는 아키텍처를 포함하는 방법 및 장치
TWI581630B (zh) 保全金鑰產生裝置和方法、主機元件以及儲存元件
EP2989741B1 (en) Generation of working security key based on security parameters
US20080205651A1 (en) Secure processor system without need for manufacturer and user to know encryption information of each other
KR20110020800A (ko) 보안 소프트웨어 이미지를 갖는 집적 회로 및 그 방법
JP2007512787A (ja) トラステッド・モバイル・プラットフォーム・アーキテクチャ
TW200937249A (en) Handling of secure storage key in always on domain
KR20140043135A (ko) 인증장치, 피인증장치, 및 인증 방법
CN113434853A (zh) 一种将固件烧录至存储设备的方法及控制器
WO2022126644A1 (zh) 模型保护装置及方法、计算装置
KR102068485B1 (ko) 불 휘발성 메모리 모듈 및 그것의 동작 방법
JP2007310688A (ja) マイクロコンピュータおよびそのソフトウェア改竄防止方法
US11533172B2 (en) Apparatus and method for securely managing keys
KR102324328B1 (ko) 보안 요소
US11704442B2 (en) Instance handling of a trusted execution environment
US11874928B2 (en) Security device, electronic device, secure boot management system, method for generating boot image, and method for executing boot chain
US10452565B2 (en) Secure electronic device
KR20210134053A (ko) 오버-디-에어 업데이트 유효성 확인 방법
CN114600102A (zh) 用于保护共享对象的装置和方法
CN114816549B (zh) 一种保护bootloader及其环境变量的方法及系统
CN111357003A (zh) 预操作系统环境中的数据保护