KR20240045160A - 신뢰 루트(Root-of-Trust) 기반의 보안을 갖는 암호화되고 인증된 펌웨어 제공 방법 및 시스템 - Google Patents

신뢰 루트(Root-of-Trust) 기반의 보안을 갖는 암호화되고 인증된 펌웨어 제공 방법 및 시스템 Download PDF

Info

Publication number
KR20240045160A
KR20240045160A KR1020237034822A KR20237034822A KR20240045160A KR 20240045160 A KR20240045160 A KR 20240045160A KR 1020237034822 A KR1020237034822 A KR 1020237034822A KR 20237034822 A KR20237034822 A KR 20237034822A KR 20240045160 A KR20240045160 A KR 20240045160A
Authority
KR
South Korea
Prior art keywords
firmware
key
electronic device
server
authority
Prior art date
Application number
KR1020237034822A
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 크립토 퀀티크 리미티드
Publication of KR20240045160A publication Critical patent/KR20240045160A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3234Cryptographic 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 additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • 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/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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • H04L9/3073Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
    • 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/321Cryptographic 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 a third party or a trusted authority
    • 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/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/3271Cryptographic 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 challenge-response
    • H04L9/3278Cryptographic 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 challenge-response using physically unclonable functions [PUF]
    • 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/80Wireless
    • H04L2209/805Lightweight hardware, e.g. radio-frequency identification [RFID] or sensor

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Power Engineering (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

펌웨어 암호화와 관련한 방법들, 장치들, 디바이스들 및 컴퓨터 판독가능한 매체가 제공된다. 일 예로서, 전자 장치에 펌웨어를 제공하는 방법이 제공된다. 상기 전자 장치는 물리적 복제방지 기능(physical unclonable function: PUF)을 갖는 보안 모듈을 포함하고, 상기 보안 모듈은, 상기 PUF에 대한 제1 도전과 응답에 기초하여, 펌웨어 키 쌍(FPK, FSK)을 설정하도록 구성되고, 상기 펌웨어 키 쌍은 펌웨어 공개 키(FPK) 및 펌웨어 비밀 키(FSK)를 포함한다. 상기 방법은 해시를 통해 서명을 획득하기 위해 키 쌍의 비밀 키를 사용하여 펌웨어의 해시가 서명되도록 야기하는 동작을 포함하며, 상기 키 쌍은 공개 키와 비밀 키를 포함하며, 상기 공개 키는 전자 장치에 안전하게 내장되어 있다. 상기 방법은 서버 암호화 키를 사용하여 해시를 통해 펌웨어 및 서명을 암호화하는 동작을 더 포함한다. 상기 방법은 상기 FSK를 사용하여, 암호화된 펌웨어 및 암호화된 서명을 복호화하기 위한 서버 복호화 키를 암호화하는 동작을 더 포함한다. 상기 방법은 상기 암호화된 펌웨어, 상기 암호화된 서명, 및 상기 암호화된 서버 복호화 키를 전자 장치에 설치하기 위해 제3자에게 전달하는 동작을 포함한다.

Description

신뢰 루트(Root-of-Trust) 기반의 보안을 갖는 암호화되고 인증된 펌웨어 제공 방법 및 시스템
본 개시는 일반적으로 당사자 간의 신뢰를 구축하기 위한 방법 및 시스템에 관한 것이다. 특히, 본 개시는 전자 장치에 펌웨어를 안전하게 제공하기 위한 방법들 및 그러한 방법들을 수행하도록 구성된 컴퓨팅 장치에 관한 것이다. 본 개시는 많은 장치들 및 네트워크들에 적용 가능하지만, 특히 인터넷 연결 장치에 적용 가능하다.
인터넷과 같은 네트워크는 일상적인 작업들이 수행되는 방식을 변화시켰으며, 이는 정보 보안에 중대한 영향을 미쳤다. 많은 일상적인 작업에서 디지털 기기는 상대방을 안전하게 인증하거나 및/또는 인증을 받거나 및/또는 개인 정보를 안전하게 처리함을 필요로 한다. 사물인터넷(IoT)의 발전으로 난방이나 조명과 같은 시스템들을 인터넷에 연결된 기기로 제어하는 것이 일반화되고 있으며, 점점 더 많은 기기들이 매년 인터넷에 연결되고 있다.
IoT 기기와 같은 전자 기기에 비밀 정보를 안전하게 제공하는 데 있어 내재된 어려움은 기기의 등록, 즉 상호 연결된 기기들의 망에 그 기기를 등록하는 것과 같은, 추가적인 하류측 프로세스에 영향을 미칠 수 있다. 서비스에 등록하기 위한 몇 가지 기본 자격 증명(credentials)을 기기에 제공하기 위해, 사전 공유 키 또는 비대칭 키 쌍의 개인 키, 및/또는 기기 인증서와 같은 비밀 정보가 제조 시점에 해당 기기에 안전하게 제공해야 하는 경우가 종종 있다. 다시 한번 말하지만, 이것이 얼마나 안전하게 수행될 수 있는지에 대한 제한이 존재한다.
일반적인 시나리오에서, 오리지날 장비 제조업자(Original Equipment Manufacturer: OEM)는 제조된 기기에 IoT 서비스 등록을 가능하게 하고, 그 기기에 펌웨어를 안전하게 설치하기 위한 신원을 제공하기를 도모할 수 있다. 예를 들어, 그 기기에는 키를 저장하기 위한 보안 영역이 있는 마이크로컨트롤러가 포함될 수 있으며, 상기 마이크로컨트롤러는 제3자인 제조업체에서 제조했을 수 있다. 예를 들어, OEM 또는 제조업체는 보안 영역에 비밀 키와 장치 인증서를 삽입할 수 있으므로, 보안 시설이 필요하다. 상기 기기에 펌웨어/인증서를 설치하기 위해, OEM은 장치 구성을 위해 프로그래밍 하우스의 서비스를 활용할 수 있으며, 이것은 추가적인 신뢰를 필요로 한다. 프로그래밍 하우스는 보안 시설을 운영하고, 올바른 정보를 투입하고, OEM을 대신하여 인증서에 안전하게 서명하는 신뢰성이 있어야 한다. 경우에 따라, 기기를 제공하는 것은 여러 다른 당사자가 해당 전자 기기와 상호 작용함을 요구할 수 있다. 그러나, 이러한 상이한 당사자들은 전자 기기에 설치될 정보(예컨대, 펌웨어 또는 인증서)에 접근할 수 있으며, 따라서 그것이 해당 전자 장치에 설치되기 전에 이러한 당사자들 중 어느 하나가 정보를 변조할 위험이 있다.
따라서, 적어도 당해 기술분야에서 알려진 하나 또는 다수의 문제점들을 완화하고자 하는 것이 본 발명의 실시예들의 목적이다.
본 발명의 일 측면에 따르면, 전자 장치에 펌웨어를 제공하는 방법이 제공된다. 상기 전자 장치는 물리적 복제방지 기능(physical unclonable function: PUF)을 갖는 보안 모듈을 포함하고, 상기 보안 모듈은 상기 PUF에 대한 제1 도전과 응답에 기초하여, 펌웨어 키 쌍(FPK, FSK)을 설정하도록 구성되고, 상기 펌웨어 키 쌍은 펌웨어 공개 키(firmware public key: FPK) 및 펌웨어 비밀 키(firmware secret key: FSK)를 포함한다. 상기 방법은 서명을 획득하기 위해 기관 키 쌍의 비밀 키를 사용하여 펌웨어의 해시가 서명되도록 야기하는 동작을 포함한다. 상기 기관 키 쌍은 공개 키와 비밀 키를 포함하며, 상기 공개 키는 전자 장치에 안전하게 내장되어 있다. 상기 방법은 서버 암호화 키를 사용하여 펌웨어 및 서명을 암호화(encrypting)하는 동작을 더 포함한다. 상기 방법은 상기 FSK를 사용하여, 암호화된 펌웨어 및 암호화된 서명을 복호화(decrypting)하기 위한 서버 복호화 키를 암호화하는 동작을 더 포함한다. 상기 방법은 상기 암호화된 펌웨어, 상기 암호화된 서명 및 상기 암호화된 서버 복호화 키를 전자 장치에 설치하기 위해 제3자에게 통신(communicating)하는 동작을 포함한다.
바람직하게는, 상기 방법은 펌웨어가 암호화된 형태로 전자 장치에 제공되도록 함으로써, 상기 전자 장치만이 펌웨어를 복호화할 수 있다. 이는 펌웨어 생성자, 예를 들어 오리지널 장비 제조업자(original equipment manufacturer: OEM)가 소유자의 펌웨어가 기밀로 유지될 것이라고 확신할 수 있도록 보장한다. 상기 전자 장치의 제조 및 프로그래밍에 관련된 다른 당사자, 예를 들어 제3자 프로그래밍 하우스는 변조가 감지되지 않고 펌웨어를 변경할 수 없다.
바람직하게는, 펌웨어 키 쌍은 PUF에 대한 도전과 응답(challenge and response)에 기초하며, 이는 제조 중 어떤 비밀 정보도 상기 장치에 주입될 필요가 없으며, 어떤 비밀 키도 상기 장치의 메모리에 저장될 필요가 없다는 것을 의미한다.
상기 방법은 상기 펌웨어를 수신하고, 상기 펌웨어에 대한 해시 함수(hash function)를 수행하여 상기 펌웨어의 해시(hash)를 생성하는 동작을 더 포함할 수 있다.
상기 방법은 상기 펌웨어의 해시를 수신하는 동작을 더 포함할 수 있다.
펌웨어의 해시가 서명되도록 야기하는 것은 펌웨어의 해시에 서명하는 동작을 포함할 수 있다.
펌웨어의 해시가 서명되도록 야기하는 것은 펌웨어의 해시를 신뢰 기관(trusted authority)으로 전송하고, 상기 신뢰 기관으로부터 서명을 수신하는 동작을 포함할 수 있다.
상기 방법은 상기 신뢰 기관으로부터 상기 FPK를 수신하는 동작을 더 포함할 수 있다.
상기 서버 암호화 키는 서버 복호화 키와 동일할 수 있다. 대안으로서, 비대칭 서버 암호화 키 및 서버 복호화 키가 사용될 수 있다.
상기 보안 모듈은 PUF에 대한 제2 챌린지 및 응답에 기초하여 등록 키 쌍(EPK, ESK)을 설정하도록 더 구성되고, 상기 등록 키 쌍은 등록 공개 키(enrolment public key)(EPK) 및 등록 비밀 키(enrolment secret key)(ESK)를 포함하며; 그리고 상기 방법은 제3자에게 디바이스 식별자를 통신하는 동작을 더 포함하되, 상기 디바이스 식별자는 상기 EPK의 기능을 포함한다. 바람직하게는, 상기 디바이스 식별자는 이에 따라 PUF에 대한 도전과 응답에 기초한 EPK 및 ESK와 연결되며, 이에 따라 상기 장치에 신원을 제공하기 위해 제조 중에 상기 장치에 어떤 비밀 정보도 주입될 필요가 없다.
상기 디바이스 식별자는 신뢰 기관으로부터 수신될 수 있다.
상기 방법은, 상기 펌웨어가 상기 전자 장치에 설치된 후, 상기 디바이스 식별자를 수신하고, 상기 디바이스 식별자를 상기 신뢰 기관에 등록하는 동작을 더 포함할 수 있다. 디바이스 식별자를 신뢰 기관에 등록함으로써, 상기 디바이스 식별자가 등록되지 않은 다른 당사자가 상기 전자 장치와 통신하는 것이 금지될 수 있어 보안성이 향상된다. 구체적으로, 상기 디바이스 식별자는 특정 서버와 연관되고, 따라서 다른 제3자는 해당 서버의 승인 없이 상기 장치와는 상호작용하지 않을 수 있다.
본 발명의 일 측면에 따르면, 컴퓨터 판독 가능 매체가 제공된다. 상기 컴퓨터 판독 가능 매체는, 하나 또는 다수의 프로세서에 의해 실행 시에, 상기 하나 또는 다수의 프로세서가, 본 명세서에 기술된 전자 장치로 펌웨어를 제공하기 위한 방법을 수행하도록 야기하는 명령들을 저장한다.
본 발명의 일 측면에 따르면, 컴퓨팅 장치가 제공된다. 상기 컴퓨팅 장치는 하나 또는 다수의 프로세서를 포함한다. 상기 컴퓨팅 장치는, 상기 하나 또는 다수의 프로세서에 의해 실행될 때, 상기 하나 또는 다수의 프로세서가 본 명세서에 기술된 전자 장치로 펌웨어를 제공하는 방법을 실행하도록 야기하는 명령들이 저장된 하나 또는 다수의 메모리들을 더 포함한다.
본 발명의 일 측면에 따르면, 전자 장치를 위한 펌웨어를 인증하는 방법이 제공되며, 상기 전자 장치는 물리적 복제방지 기능(PUF)을 갖는 보안 모듈을 포함하고, 상기 보안 모듈은 상기 PUF에 대한 제1 도전과 응답에 기초하여 펌웨어 키 쌍(FPK, FSK)을 설정하고 상기 PUF에 대한 제2 도전과 응답에 기초하여 등록 키 쌍(EPK, ESK)을 설정하도록 구성하되, 상기 펌웨어 키 쌍은 펌웨어 공개 키(firmware public key: FPK)와 펌웨어 비밀 키(firmware secret key: FSK)를 포함하며, 상기 등록 키 쌍(EPK, ESK)은 등록 공개 키(enrolment public key: EPK)와 등록 비밀 키(enrolment secret key: ESK)를 포함한다. 상기 방법은 서버로부터 보안 통신 채널을 통해 전자 장치에 설치하기 위한 펌웨어의 해시를 수신하는 동작을 포함한다. 상기 방법은 공개 기관 키(PAK)와 비밀 기관 키(SAK)를 포함하는 기관 키 쌍의 비밀 기관 키를 사용하여 상기 펌웨어의 해시에 서명하는 동작을 포함하되, 상기 공개 기관 키는 전자 장치에 안전하게 내장되어 있다. 상기 방법은 전자 장치에 설치하기 위해 제3자에게 해시를 통해 서명의 통신을 개시하는 동작을 포함한다. 상기 방법은 보안 통신 채널을 통해 서버로, 상기 전자 장치를 식별하기 위한 관련 디바이스 식별자 및 상기 FPK를 전송하는 동작을 포함하되, 상기 디바이스 식별자는 EPK의 기능을 포함한다.
바람직하게는, 이러한 방법은 전자 장치가, 신뢰 기관이 펌웨어에 액세스하지 않고, 상기 신뢰 기관에 의해 승인된 펌웨어를 수신하는 것을 가능하게 한다. 더욱이, 암호화되지 않은 형태로 전자 장치에 비밀 정보가 주입될 필요가 없다.
상기 방법은 보안 모듈로부터 상기 디바이스 식별자를 추출하는 동작을 더 포함할 수 있다.
상기 방법은 상기 보안 모듈로부터 상기 FPK를 추출하는 동작을 더 포함할 수 있다.
상기 방법은 상기 디바이스 식별자 및 상기 FPK를 수신하는 동작을 더 포함할 수 있다.
상기 방법은 상기 디바이스 식별자를 상기 서버에 등록하기 위한 요청을 수신하는 동작을 더 포함할 수 있다.
상기 방법은 상기 디바이스 식별자 및 상기 FPK를 룩-업 테이블(lookup table)에 입력하는 동작을 더 포함할 수 있다.
본 발명의 일 측면에 따르면, 컴퓨터 판독 가능 매체가 제공된다. 상기 컴퓨터 판독 가능 매체는, 하나 또는 다수의 프로세서에 의해 실행 시에, 상기 하나 또는 다수의 프로세서가 본 개시에 기재된 전자 장치의 펌웨어 인증 방법을 수행하도록 야기하는 명령들을 포함한다.
본 발명의 일 측면에 따르면, 컴퓨팅 장치가 제공된다. 상기 컴퓨터 장치는 하나 또는 다수의 프로세서를 포함한다. 상기 컴퓨터 장치는, 하나 또는 다수의 프로세서에 의해 실행 시에, 상기 하나 또는 다수의 프로세서가, 본 개시에 기재된 전자 장치에 대해 펌웨어를 인증하는 방법을 실행하도록 야기하는 명령들이 저장된 하나 또는 다수의 메모리들을 더 포함한다.
본 발명의 일 실시예에 따르면, 전자 장치에 의한 수행을 위한 방법이 제공된다. 상기 전자 장치는 물리적 복제방지 기능(PUF)을 갖는 보안 모듈을 포함하고, 상기 보안 모듈은 상기 PUF에 대한 제1 도전과 응답에 기초하여 펌웨어 키 쌍(FPK, FSK)을 설정하도록 구성되고, 상기 펌웨어 키 쌍은 펌웨어 공개 키(FPK) 및 펌웨어 비밀 키(FSK)를 포함한다. 상기 방법은 상기 FSK를 사용하여 암호화된 서버 복호화 키를 복호화하되, 상기 서버 복호화 키는 FPK를 사용하여 암호화되는 것인 동작을 포함한다. 상기 방법은 상기 복호화된 서버 복호화 키를 사용하여, 상기 펌웨어의 해시를 통해 펌웨어 및 서명을 복호화하는 동작을 포함한다. 상기 방법은 전자 장치에 안전하게 내장된 공개 기관 키를 사용하여, 상기 펌웨어의 해시가 신뢰 기관에 의해 서명되었음을 검증하는 동작을 포함한다. 상기 방법은, 상기 검증에 기초하여, 상기 복호화된 펌웨어를 전자 장치에 설치하는 동작을 포함한다.
상기 방법은, 상기 전자 장치를 부팅할 때, 상기 펌웨어가 신뢰되는 상대방에 의해 서명되었음을 확인하는 동작을 더 포함할 수 있다.
본 발명의 일 측면에 따르면, 전자 장치가 제공된다. 상기 전자 장치는 물리적 복제방지 기능(PUF)을 갖는 보안 모듈을 포함하되, 상기 보안 모듈은 PUF에 대한 제1 도전과 응답에 기초하여 펌웨어 키 쌍(FPK, FSK)을 설정하도록 구성되고, 상기 펌웨어 키 쌍은 펌웨어 공개 키(FPK) 및 펌웨어 비밀 키(FSK)를 포함한다. 상기 전자 장치는 상기 보안 모듈을 포함하거나 상기 보안 모듈에 통신 가능하게 결합된 하나 또는 다수의 프로세서들을 더 포함한다. 상기 하나 또는 다수의 프로세서들은 상기 FSK를 사용하여 암호화된 서버 복호화 키를 복호화하되, 상기 서버 복호화 키는 상기 FPK를 사용하여 암호화되도록 구성된다. 상기 하나 또는 다수의 프로세서들은 상기 복호화된 서버 복호화 키를 사용하여 펌웨어의 해시를 통해 펌웨어 및 서명을 복호화하도록 구성된다. 상기 하나 또는 다수의 프로세서들은, 상기 전자 장치에 안전하게 내장된 공개 기관 키를 사용하여, 상기 펌웨어의 해시가 신뢰 기관에 의해 서명되었음을 검증하도록 구성된다. 상기 하나 또는 다수의 프로세서들은, 상기 검증 결과에 기초하여, 상기 복호화된 펌웨어를 전자 장치에 설치하도록 구성된다.
바람직하게는, 상기 펌웨어는 전자 장치에 안전하게 제공된다. 제조 과정에서 전자 장치에 어떤 비밀 정보도 저장되지 않는다. 또한, 보안의 일부는 상기 전자 장치에 설치된 PUF에 대한 도전과 응답을 기반으로 하므로, 관련 비밀 키는 전자 장치에 저장될 필요가 없으며, 그 대신 필요에 따라 동적으로 재생될 수 있다.
본 발명의 일 측면에 따르면, 전자 장치에 펌웨어를 제공하기 위한 시스템이 제공된다. 상기 전자 장치는 물리적 복제방지 기능(PUF)을 갖는 보안 모듈을 포함하고, 상기 보안 모듈은 PUF에 대한 제1 도전과 응답에 기초하여 펌웨어 키 쌍(FPK, FSK)을 설정하도록 구성되고, 상기 펌웨어 키 쌍은 펌웨어 공개 키(FPK) 및 펌웨어 비밀 키(FSK)를 포함하고, 상기 시스템은 신뢰 기관 및 서버를 포함한다. 상기 신뢰 기관은 서버로부터 펌웨어의 해시를 수신하도록 구성된다. 상기 신뢰 기관은 공개 기관 키와 비밀 기관 키를 포함하는 기관 키 쌍의 비밀 기관 키를 사용하여 펌웨어의 해시에 서명하도록 구성되고, 상기 공개 기관 키는 전자 장치에 안전하게 내장된다. 상기 신뢰 기관은 펌웨어의 해시를 통해 서명을 서버로 전송하도록 구성된다. 상기 신뢰 기관은 상기 서버로 FPK를 전송하도록 구성된다. 상기 서버는 상기 신뢰 기관으로부터 서명을 수신하도록 구성된다. 상기 서버는 상기 신뢰 기관으로부터 FPK를 수신하도록 구성된다. 상기 서버는 서버 암호화 키를 사용하여 펌웨어 및 서명을 암호화하도록 구성된다. 상기 서버는 상기 암호화된 펌웨어 및 암호화된 서명을 복호화하기 위하여 FPK를 사용하여 서버 복호화 키를 암호화하도록 구성된다. 상기 서버는 상기 암호화된 펌웨어, 상기 암호화된 서명, 및 상기 암호화된 서버 복호화 키를 전자 장치에 설치하기 위해 제3자에게 전달하도록 구성된다.
본 발명의 일 측면에 따르면, 전자 장치에 펌웨어를 제공하는 방법이 제공된다. 상기 전자 장치는 PUF(physical unclonable function)를 갖는 보안 모듈을 포함한다. 상기 보안 모듈은, 상기 PUF에 대한 제1 도전과 응답에 기초하여, 펌웨어 공개 키(FPK, firmware public key) 및 펌웨어 비밀 키(FSK, firmware secret key)를 포함하는 펌웨어 키 쌍(FPK, firmware key pair)을 설정하고, 펌웨어 키 쌍(FPK, firmware key pair)를 설정하도록 구성된다. 상기 방법은, 공개 키 및 비밀 키를 포함하는 기관/서명 키 쌍의 비밀 키를 이용하여 상기 암호화된 형태의 펌웨어를 서명하도록 야기하는 동작을 포함한다. 상기 공개 키는 상기 전자 장치에 안전하게 내장된다. 상기 펌웨어는 서버 암호화 키를 사용하여 암호화된다. 상기 방법은 상기 서명된 암호화된 형태의 펌웨어를 상기 전자 장치에 설치하기 위해 제3자에게 통신하는 동작을 더 포함할 수 있다. 상기 방법은 상기 전자 장치에 설치하기 위해 암호화된 형태의 서버 복호화 키를 제3자에게 통신하는 동작을 더 포함하되, 상기 서버 복호화 키는 상기 암호화된 형태의 펌웨어를 복호화하기 위한 것이고, 상기 서버 복호화 키는 상기 FPK를 이용하여 암호화된다.
바람직하게는, 상기 방법은 암호화된 형태로 펌웨어가 전자 장치에 제공되게 함으로써, 전자 장치만이 상기 펌웨어를 복호화할 수 있도록 한다. 이것은 펌웨어 생성자, 예를 들어, 오리지널 장비 제조업자(OEM)가 소유한 펌웨어가 기밀로 유지될 것이라고 확신할 수 있도록 보장한다. 전자 장치의 제조 및 프로그래밍에 관련된 다른 당사자들은 펌웨어를 변조할 수 없다.
바람직하게는, 펌웨어 키 쌍은 PUF에 대한 도전과 응답을 기반으로 하며, 이는 제조 시 상기 장치에 비밀 정보가 주입될 필요가 없으며, 상기 장치의 메모리에 어떤 비밀 키도 저장할 필요가 없음을 의미한다.
상기 방법은, 상기 펌웨어를 수신하고, 상기 펌웨어를 암호화하여 상기 암호화된 형태의 펌웨어를 생성하는 동작을 더 포함할 수 있다. 상기 방법은 상기 암호화된 형태의 펌웨어를 수신하는 동작을 더 포함할 수 있다.
암호화된 형태의 펌웨어가 서명되도록 야기하는 동작은 암호화된 형태의 펌웨어에 서명하는 동작을 포함할 수 있다. 상기 암호화된 형태의 펌웨어가 서명되도록 야기하는 동작은, 상기 암호화된 형태의 펌웨어를 신뢰 기관으로 전송하는 동작, 및 상기 신뢰 기관으로부터 상기 암호화된 형태의 펌웨어를 수신하는 동작을 포함할 수 있다. 암호화된 형태의 펌웨어에 서명하는 동작은 상기 장치에 설치하기 전에 펌웨어의 임의의 변조가 감지될 수 있음을 보장하여, 하류측 보안 조치에 있어 신뢰를 가져온다.
상기 방법은 신뢰 기관으로부터 상기 FPK를 수신하는 동작을 더 포함할 수 있다.
상기 방법은 상기 FPK를 이용하여 상기 서버 암호화 키를 암호화하는 동작을 더 포함할 수 있다.
상기 서버 암호화 키는 서버 복호화 키와 동일할 수 있다.
상기 보안 모듈은 PUF에 대한 제2 도전과 응답에 기초하여 등록 공개 키(enrolment public key: EPK) 및 등록 비밀 키(enrolment secret key: ESK)를 포함하는 등록 키 쌍(EPK, ESK)를 설정하도록 더 구성될 수 있다. 상기 방법은 상기 EPK의 기능을 포함하는 디바이스 식별자를 제3자에게 통신하는 동작을 더 포함할 수 있다. 상기 기능은 암호 해시 함수(cryptographic hash function)를 포함할 수 있다. 바람직하게는, 상기 디바이스 식별자는 PUF에 대한 도전과 응답에 기초하는 EPK 및 ESK와 연결되며, 이에 따라 제조 중 상기 장치에 어떤 비밀 정보도 주입될 필요가 없다.
상기 디바이스 식별자는 신뢰 기관으로부터 수신될 수 있다.
상기 방법은, 상기 펌웨어가 상기 전자 장치에 설치된 후, 상기 디바이스 식별자를 수신하고, 상기 디바이스 식별자를 상기 신뢰 기관에 등록하는 동작을 더 포함할 수 있다. 디바이스 식별자를 상기 신뢰 기관에 등록함으로써, 디바이스 식별자가 등록되지 않은 다른 당사자들이 전자 장치와 통신하지 않을 수 있어 보안성이 향상된다. 구체적으로, 상기 디바이스 식별자는 그 서버와 연관되므로, 다른 제3자는 서버의 승인 없이 상기 장치와 상호작용하지 않을 수 있다.
본 발명의 일 측면에 따르면, 컴퓨터 판독 가능 매체가 제공된다. 상기 컴퓨터 판독 가능 매체는, 하나 또는 다수의 프로세서에 의해 실행 시, 상기 하나 또는 다수의 프로세서가, 본 개시에 기술된 전자 장치로 펌웨어를 제공하기 위한 방법을 수행하도록 야기하는 명령들을 포함한다.
본 발명의 일 측면에 따르면, 컴퓨팅 장치가 제공된다. 상기 컴퓨팅 장치는 하나 또는 다수의 프로세서를 포함한다. 상기 컴퓨팅 장치는, 하나 또는 다수의 프로세서에 의해 실행될 때, 상기 하나 또는 다수의 프로세서가 본 명세서에 기재된 전자 장치로 펌웨어를 제공하는 방법을 실행하도록 야기하는 명령들이 저장된 하나 또는 다수의 메모리들을 더 포함한다.
본 발명의 일 측면에 따르면, 전자 장치를 위한 펌웨어 인증 방법이 제공된다. 상기 전자 장치는 물리적 복제방지 기능(physical unclonable function: PUF)을 갖는 보안 모듈을 포함한다. 상기 보안 모듈은, 상기 PUF에 대한 제1 도전과 응답에 기초하여 펌웨어 키 쌍(FPK, FSK)를 설정하고, 상기 PUF에 대한 제2 도전과 응답에 기초하여 등록 키 쌍(EPK, ESK)를 설정하도록 구성되고, 상기 펌웨어 키 쌍은 펌웨어 공개 키(FPK) 및 펌웨어 비밀 키(FSK)를 포함하고, 상기 등록 키 쌍(EPK, ESK)은 등록 공개 키(EPK) 및 등록 비밀 키(ESK)를 포함한다. 상기 방법은 보안 통신 채널을 통해, 서버로부터, 상기 전자 장치에 설치하기 위한 암호화된 펌웨어를 수신하는 동작을 포함한다. 상기 방법은, 공개 기관 키 및 비밀 기관 키를 포함하는 기관 키 쌍의 비밀 기관 키를 이용하여 상기 암호화된 펌웨어에 서명하는 동작을 더 포함하되, 상기 공개 기관 키는 상기 전자 장치에 안전하게 내장된다. 상기 방법은 상기 전자 장치에 설치하기 위해 상기 서명된 암호화 펌웨어의 제3자에게 통신을 개시하는 동작을 더 포함한다. 상기 방법은, 보안 통신 채널을 통해, 상기 전자 장치를 식별하기 위해 상기 FPK 및 연관 디바이스 식별자를 나타내는 룩-업 테이블을 상기 서버로 전송하는 동작을 더 포함하되, 상기 디바이스 식별자는 EPK의 기능을 포함한다. 상기 기능은 암호 해시 함수를 포함할 수 있다.
바람직하게는, 이러한 방법은, 전자 장치가, 신뢰 기관이 암호화되지 않은 형태의 펌웨어에 접속하지 않고도, 신뢰 기관에 의해 승인된 펌웨어를 수신할 수 있게 한다. 더욱이, 전자 장치에 어떠한 비밀 정보도 암호화되지 않은 형태로 주입될 필요가 없다.
상기 방법은 상기 보안 모듈로부터 상기 디바이스 식별자를 추출하는 동작을 더 포함할 수 있다. 상기 방법은 상기 보안 모듈로부터 상기 FPK를 추출하는 동작을 더 포함할 수 있다. 상기 방법은 상기 디바이스 식별자 및 상기 FPK를 수신하는 동작을 포함할 수 있다.
상기 방법은 상기 디바이스 식별자를 상기 서버에 등록하기 위한 요청을 수신하는 동작을 더 포함할 수 있다. 디바이스 식별자를 서버에 등록함으로써, 디바이스 식별자가 등록되지 않은 다른 당사자들이 상기 전자 장치와 통신하지 않을 수 있으므로 보안성이 향상된다. 상기 방법은 상기 디바이스 식별자 및 상기 FPK를 룩-업 테이블에 입력하는 동작을 더 포함할 수 있다.
본 발명의 일 측면에 따르면, 컴퓨터 판독 가능 매체가 제공된다. 상기 컴퓨터 판독 가능 매체는, 하나 또는 다수의 프로세서에 의해 실행 시, 상기 하나 또는 다수의 프로세서가, 본 개시에 기술된 전자 장치에 대해 펌웨어 인증을 위한 방법을 수행하도록 하는 명령들을 저장한다.
본 발명의 일 측면에 따르면, 컴퓨팅 장치가 제공된다. 상기 컴퓨팅 장치는 하나 또는 다수의 프로세서를 포함한다. 상기 컴퓨팅 장치는 하나 또는 다수의 프로세서에 의해 실행될 때, 상기 하나 또는 다수의 프로세서가 본 개시에 기재된 전자 장치의 펌웨어 인증을 위한 방법을 실행하도록 하는 명령들이 저장된 하나 또는 다수의 메모리를 더 포함한다.
본 발명의 일 측면에 따르면, 전자 장치의 성능을 위한 방법이 제공된다. 상기 전자 장치는 물리적 복제방지 기능(PUF)을 갖는 보안 모듈을 포함한다. 상기 보안 모듈은, 상기 PUF에 대한 제1 도전과 응답에 기초하여, 펌웨어 키 쌍(FPK, FSK)을 설정하도록 구성되며, 상기 펌웨어 키 쌍은 펌웨어 공개 키(FRK) 및 펌웨어 비밀 키(FSK)를 포함한다. 상기 방법은, 상기 FSK를 이용하여, 암호화된 서버 복호화 키를 복호화하는 동작을 포함하되, 상기 서버 복호화 키는 상기 FPK를 이용하여 암호화된다. 상기 방법은, 상기 전자 장치에 안전하게 내장된 공개 기관 키를 이용하여, 암호화된 형태의 펌웨어가 신뢰 기관에 의해 인증되었음을 확인하는 동작을 더 포함한다. 상기 방법은, 상기 복호화된 서버 복호화 키를 이용하여, 상기 전자 장치에 설치하기 위한 펌웨어를 복호화하는 동작을 더 포함한다.
바람직하게는, 상기 펌웨어는 전자 장치에 안전하게 제공된다. 제조 과정 중 전자 장치에 어떠한 비밀 정보도 저장되지 않는다. 더욱이, 보안의 일부가 전자 장치에 설치된 PUF에 대한 도전과 응답을 기반으로 하므로, 관련 비밀 키는 전자 장치에 저장될 필요가 없으며, 대신에 필요에 따라 동적으로 재생될 수 있다.
본 발명의 일 측면에 따르면, 컴퓨터 판독 가능 매체가 제공된다. 상기 컴퓨터 판독 가능 매체는, 하나 또는 다수의 프로세서에 의해 실행 시, 상기 하나 또는 다수의 프로세서가, FSK를 이용하여, 암호화된 서버 복호화 키를 복호화하는 동작(여기서, 상기 서버 복호화 키는 FPK를 이용하여 암호화됨); 전자 장치에 안전하게 내장된 공개 기관 키를 이용하여, 암호화된 형태의 펌웨어가 신뢰 기관에 의해 인증되었음을 검증하는 동작; 및 상기 복호화된 서버 복호화 키를 이용하여, 전자 장치에 설치하기 위한 펌웨어를 복호화하는 동작을 포함하는 방법을 수행하도록 야기하는 명령들을 저장한다.
본 발명의 일 측면에 따르면, 전자 장치가 제공된다. 상기 전자 장치는 물리적 복제방지 기능(PUF)을 갖는 보안 모듈을 포함한다. 상기 보안 모듈은, 상기 PUF에 대한 제1 도전과 응답에 기초하여, 펌웨어 공개 키(FPK) 및 펌웨어 비밀 키(FSK)를 포함하는 펌웨어 키 쌍(FPK, FSK)을 설정하도록 구성된다. 상기 전자 장치는, 상기 보안 모듈을 포함하거나 그에 통신상 연결된 하나 또는 다수의 프로세서를 더 포함하고, 상기 하나 또는 다수의 프로세서는, 상기 FSK를 이용하여, 암호화된 서버 복호화 키를 복호화하되, 상기 서버 복호화 키는 상기 FPK를 이용하여 암호화되고, 상기 전자 장치에 안전하게 내장된 공개 기관 키를 이용하여, 암호화된 형태의 펌웨어가 신뢰 기관에 의해 인증되었는지 검증하고, 그리고 상기 복호화된 서버 복호화 키를 이용하여, 상기 전자 장치에 설치하기 위한 펌웨어를 복호화하도록 구성된다.
본 발명의 일 측면에 따르면, 시스템이 제공된다. 상기 시스템은 전자 장치에 펌웨어를 제공하기 위한 시스템이다. 상기 전자 장치는 물리적 복제방지 기능(PUF)을 갖는 보안 모듈을 포함한다. 상기 보안 모듈은, 상기 PUF에 대한 제1 도전과 응답에 기초하여 펌웨어 키 쌍(FPK, FSK)를 설정하고, 상기 PUF에 대한 제2 챌린지 및 응답에 기초하여 등록 키 쌍(EPK, ESK)를 설정하도록 구성되고, 상기 펌웨어 키 쌍은 펌웨어 공개 키(FPK) 및 펌웨어 비밀 키(FSK)를 포함하고, 상기 등록 키 쌍(EPK, ESK)은 등록 공개 키(EPK) 및 등록 비밀 키(ESK)를 포함한다. 상기 시스템은 신뢰 기관(trusted authority)과 서버를 포함한다. 상기 신뢰 기관은 서버로부터 암호화된 펌웨어를 수신하도록 구성된다. 상기 신뢰 기관은 공개 기관 키 및 비밀 기관 키를 포함하는 기관 키 쌍의 비밀 기관 키를 이용하여 상기 암호화된 펌웨어에 서명하도록 더 구성되고, 상기 공개 기관 키는 상기 전자 장치에 안전하게 내장될 수 있다. 상기 신뢰 기관은 상기 서명된 암호화된 펌웨어를 서버로 전송하도록 더 구성된다. 상기 신뢰 기관은, 상기 EPK의 기능을 포함하는, 상기 전자 장치를 식별하기 위한 디바이스 식별자를 상기 서버로 전송하도록 더 구성된다. 상기 신뢰 기관은 상기 FPK를 서버로 전송하도록 더 구성된다. 상기 서버는 서버 암호화 키를 이용하여 암호화된 상기 펌웨어의 암호화된 형태를 서명을 위하여 상기 신뢰 기관으로 전송하도록 구성된다. 서버는 상기 신뢰 기관으로부터 서명된 암호화 펌웨어를 수신하도록 더 구성된다. 상기 서버는 상기 신뢰 기관으로부터 상기 디바이스 식별자 및 FPK를 수신하도록 더 구성된다. 상기 서버는, 상기 FPK를 이용하여, 암호화된 펌웨어를 복호화하기 위한 서버 복호화 키를 암호화하도록 더 구성된다. 상기 서버는 상기 디바이스 식별자, 상기 암호화된 서버 복호화 키 및 상기 서명된 암호화 펌웨어를 상기 전자 장치에 설치하기 위해 제3자에게 통신하도록 더 구성된다.
본 명세서에서 설명된 방법들을 수행하기 위한 컴퓨터 프로그램 및/또는 코드/명령들은 컴퓨터 판독 가능 매체 또는 컴퓨터 프로그램 제품 상에서 컴퓨터와 같은 장치에 제공될 수 있다. 상기 컴퓨터 판독 가능 매체는, 예를 들면, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템일 수 있거나, 또는 데이터 전송을 위한, 예컨대, 인터넷을 통해 코드를 다운로드하기 위한 전파 매체일 수 있다. 대안적으로, 상기 컴퓨터 판독 가능 매체는 반도체 또는 솔리드-스테이트 메모리, 자기 테이프, 탈착 가능한 컴퓨터 디스켓, RAM(random access memory), ROM(read-only memory), 고형 자기 디스크, 및 CD-ROM, CD-R/W 또는 DVD광디스크 등과 같은, 물리적으로 컴퓨터 판독 가능한 매체의 형태를 취할 수 있다.
본 명세서에 개시된 발명의 많은 변형들 및 다른 실시예들은 본 개시에 제시된 교시들의 견지에서 본 발명이 속하는 기술 분야에서 당해 전문가에게 인식될 것이다. 따라서, 본 개시는 본 명세서에서 개시되는 특정 실시예들에 한정되지 않는 것으로 이해될 것이다. 더욱이, 본 명세서에서 제공된 설명은 구성요소들의 조합의 견지에서 예시적인 실시예들을 제공할지라도, 그의 단계들 및/또는 기능들은 대안적인 실시예들에 의해 본 발명의 영역으로부터 이탈함이 없이 제공될 수 있을 것이다.
본 발명의 실시예는 첨부된 도면을 참조하여, 단지 예를 들어, 더 설명된다.
도 1은 단지 예시적인 목적으로 상세한 설명 전반에 걸쳐 참조되는 다양한 당사자들(parties)에 대한 도면을 도시한다.
도 2는 통신 시스템을 나타낸다.
도 3a는 전자 장치의 블록도를 도시한다.
도 3b는 마이크로컨트롤러의 도면을 도시한다.
도 4a는 보안 모듈의 블록도를 도시한다.
도 4b는 PUF 모듈의 블록도를 도시한다.
도 5는 컴퓨팅 장치의 블록도를 도시한다.
도 6a는 전자 장치에 펌웨어를 제공하는 방법을 도시한다.
도 6b는 전자 장치에 펌웨어를 제공하는 또 다른 방법을 도시한다.
도 7a는 흐름도를 도시한다.
도 7b는 흐름도를 도시한다.
도 8a는 흐름도를 도시한다.
도 8b는 흐름도를 도시한다.
도 9a는 흐름도를 도시한다.
도 9b는 흐름도를 도시한다.
도 10은 컴퓨터 판독 가능 매체의 블록도를 도시한다.
본 명세서 및 도면에 걸쳐서, 동일한 참조 부호는 동일한 구성요소를 지칭한다.
이하, 다양한 실시예들이 설명되지만, 본 발명은 이러한 실시예에 한정되지 않으며, 다양한 실시예들의 다양한 변형들은 본 발명의 권리범위에 속하는 것으로서 후술되는 특허청구범위에 의해서만 한정될 것이다.
이하에서는, IoT 장치의 보안 및 등록에 대해 참조한다. 그러나, 본 명세서에 기재된 방법, 시스템 및 장치들이 훨씬 더 광범위하게 적용될 수 있음을 당해 전문가라면 이해할 것이다.
이하에서는, 전자 장치에 펌웨어를 안전하게 제공하는 방법들이 기술된다. 본 문서에서 기술되는 방법들은, 관련된 다양한 당사자들이 다른 당사자와 전자 장치의 보안을 특별히 신뢰할 필요 없이 펌웨어를 전자 장치에 설치할 수 있게 한다. 설명의 편의를 위해, 도 1에서는 여러 이해 관계자(예를 들어, 오리지널 장비 제조사(OEM) 및 IoT 허브)의 예시적인 시나리오가 설명되고, 상세한 설명 전반에 걸쳐 참조가 이루어진다. 그러나, 본 명세서에 기술된 방법들은, 통상의 기술자에 의해 이해될 수 있듯이, 보다 일반적으로 적용 가능하다.
본 상세한 설명을 읽어보면 이해될 수 있듯이, 전자 장치는 물리적 복제방지 기능(physical unclonable function: PUF)이 제공될 수 있다. 물리적 복제방지 기능(물리적으로 복제 불가능한 기능 또는 PUF라고도 지칭됨)은 보안 EEPROM 및 기타 고가의 하드웨어의 요구 없이 인증 및 비밀 키 저장에 사용되는 암호 프리미티브(cryptographic primitive)이다. PUF는, 비밀을 디지털 메모리에 저장하는 대신, 보통 제조 과정 중에 삽입되는, 하나 또는 다수의 구성 요소의 고유한 물리적 특성으로부터 비밀을 도출한다. 알려진 PUF는 작은 실리카 구체들이 현탁되어 있는 경화된 에폭시 시트를 통해 레이저광이 산란되거나, 일부 회로들에서 게이트 지연의 가변성을 제조하는 등의 현상에 기초한다.
이하에서는, 물리적으로 복제 불가능한 기능, 물리적 복제방지 기능 및 PUF라는 용어들을 혼용하여 사용한다. PUF는 기능적 동작을 수행하는 객체를 포함하는데, 즉 특정 입력으로 질의 되면 측정 가능한 출력을 생성한다. PUF에 대한 입력은 둘 이상의 가능한 출력을 가질 수 있으므로, PUF는 수학적 의미에서 참 함수(true function)가 아니다. 통상적으로, PUF에 대한 입력을 '도전(challenge)'이라 하고, 상기 PUF의 결과 출력을 '응답(response)'이라 지칭한다. 적용된 도전과 그 측정된 반응은 '도전-응답 쌍'(challenge-response pair: CRP)으로 알려져 있다. 본 문서에서 사용된 용어 "도전"은 PUF에 제공되는 선택된 입력(예를 들어, 어레이의 특정 셀들의 선택, 특정 전압의 인가 등)을 의미하는 것으로 이해되고, "응답(response)"은 PUF의 해당 출력을 지칭하기 위해 본 명세서에서 사용된다.
PUF가 전자 장치에서 사용하기에 적합한 경우, 본 명세서에 기술된 시스템 및 방법들과 함께 임의의 적합한 PUF가 사용될 수 있다. 예를 들어, 상기 PUF는 SRAM PUF일 수 있다. SRAM PUF는 SRAM들의 문턱 전압의 무작위적 차이를 이용하여 고유한 도전-응답 쌍들을 생성한다.
적합한 PUF의 또 다른 예는 칩 상의 와이어 또는 게이트의 지연의 무작위 변동을 이용하는 지연 PUF이다. 입력 도전이 주어지면, 회로에 레이스 조건을 설정하고, 서로 다른 경로들을 따라 전파되는 두 개의 전이들을 비교하여 어느 것이 먼저인지(응답)를 확인한다.
PUF의 다른 예에 있어서, 양자 구속(quantum confinement)은 하나의 역할을 할 수 있다. 예를 들어, PUF는 여러 공진 터널링 다이오드들로부터 형성될 수 있다.
PUF의 또 다른 예에 있어서, 양자 터널링 장벽을 통한 양자 터널링이 역할을할 수 있다. PUF의 하나의 예는, 2020년 4월 8일에 출원된, '양자 터널링 전류를 이용한 장치 식별(Device Identification With Quantum Tunnelling Currents)'이라는 제목으로 기술되고, 공개번호 WO2020/212689A1로 공개된 국제 특허 출원 번호 PCT/GB2020/050918에서 기술되었다. 일 예에 따르면, PUF는 개별적으로 어드레싱 가능한 복수의 셀들을 갖는 어레이를 포함할 수 있다. 각각의 셀은 양자 터널링 배리어를 갖는 기본 회로를 포함할 수 있다. 셀은 트랜지스터 형태의 제1 전자 부품 및 제2 전자 트랜지스터 형태의 제2 전자 부품을 포함할 수 있다. 상기 제1 트랜지스터의 소스, 드레인 및 바디부는 동일한 전위(예를 들어, 접지)에 유지될 수 있다. 상기 제2 트랜지스터의 소스, 드레인 및 바디부는 또한 모두 동일한 전위로 유지될 수 있다. 상기 제1 트랜지스터는 트랜지스터의 채널과 게이트 단자 사이에 제1 양자 터널링 배리어를 갖는다. 상기 제2 트랜지스터는 트랜지스터의 채널과 게이트 단자 사이에 제2 양자 터널링 배리어를 갖는다. 제조 시 도입되는 트랜지스터의 고유한 차이로 인해, 제1 양자 터널링 배리어는 상기 제1 트랜지스터를 고유하게 특성화하고, 제2 양자 터널링 배리어는 상기 제2 트랜지스터를 고유하게 특성화한다. 상기 셀은 상기 제1 양자 터널링 배리어 및 상기 제2 양자 터널링 배리어에 걸쳐 전위차를 인가하기 위해 행 디코더 및 열 디코더를 이용하여 선택될 수 있다. 상기 전위차는 전류가 제1 양자 터널링 배리어 또는 제2 양자 터널링 배리어 중 어느 하나를 고전적으로 통과할 수 있는 문턱 전압 미만일 수 있다. 이에 따라, 셀이 선택되면, 제1 트랜지스터의 제1 양자 터널링 배리어에는 양자 터널링 전류가 흐르고, 제2 트랜지스터의 제2 양자 터널링 배리어에는 양자 터널링 전류가 흐르며, 고전적인 전류는 흐르지 않을 수 있다. 상기 양자 터널링 전류는 비교되고 증폭될 수 있다. 셀들과 인가 전압들의 조합은 도전 과제로서 고려될 수 있고 출력 양자 터널링 전류들은 응답으로서 고려될 수 있다.
다른 예에서, PUF는, 그것이 전자적으로 상호 작용할 수 있는 한, 전자 부품을 기반으로 할 필요가 없다.
이하에서, 비대칭 키 쌍으로 달리 알려진, 여러 공개 키 쌍들을 참조한다. 공개 키 쌍은 상대방과 공유될 수 있는 공개 키와 공유되지 않는 해당 비밀 키를 포함한다. 공개 키는 비밀로 유지할 필요는 없지만 변조할 수 없도록 저장되어야 하는 공개 가치이다. 일 예에서, 공개 키는 어떠한 방식으로도 재작성 또는 수정될 수 없도록 전자 장치 내의 ROM에 저장될 수 있다. 본 명세서에 기술된 공개 키 쌍은 종종 명칭을 갖는다. 예를 들어, 하나의 공개 키 쌍은 '펌웨어 공개 키'(firmware public key: FPK)와 이에 대응하는 '펌웨어 비밀 키'(firmware secret key: FSK)를 포함하는 '펌웨어 공개 키 쌍'으로서 기술된다. 또 다른 공개 키 쌍은 '등록 공개 키'(enrolment public key: EPK)와 이에 대응하는 '등록 비밀 키'(enrolment secret key ESK)를 포함하는 '등록 공개 키 쌍'으로서 기술된다. 또 다른 공개 키 쌍은 '공개 기관 키'(public authority key: PAK)와 이에 대응하는 '비밀 기관 키'(secret authority key: SAK)를 포함하는 '기관 키 쌍'으로서 기술된다. 독자는 이러한 공개 키 쌍들의 명칭들이 공개 키 쌍들을 단지 구분하기 위한 것일 뿐이라는 점을 인식할 수 있을 것이다.
본 명세서에 기술된 공개 키 쌍은 임의의 적합한 공개 키 암호 시스템, 예를 들어, RSA 또는 타원 곡선 기반 암호 시스템(elliptic curve based cryptographic system)과 결부하여 사용될 수 있다. 본 명세서에 기술된 많은 공개 키 쌍들은 디지털 서명들과 함께 사용하기 위한 것이다. 디지털 서명은 디지털 메시지 또는 문서의 진위 여부를 검증하기 위한 수학적 방식이다. 본 명세서의 실시예들에 있어, 임의의 적합한 디지털 서명 방식, 예를 들어, RSA, ElGamal 서명 방식 또는 ECDSA가 사용될 수 있다.
본 명세서에 기술된 서버/서버 시스템/컴퓨팅 장치들 중 몇몇은 또한 "기관 서버 시스템" 또는 "키 관리 서버"와 같은 명칭이 부여되었다. 독자는 이러한 명칭들이 단지 상이한 컴퓨팅 장치들을 구별하기 위한 것임을 인식할 수 있을 것이다.
도 1은 전자 장치(100)의 보안 생성, 공급(provisioning) 및 배치(deployment)에 종사할 수 있는 상업적 (또는 그와 다른) 당사자들을 묘사하는 예시를 도시한다. 당해 전문가는 다른 설정을 예상할 수 있고 본 도면은 단지 예시적인 목적으로만 제공된다는 점을 이해할 수 있을 것이다. 높은 수준에서, 보안 모듈이 제조되어, 이어서 전자 장치(100)에 설치하기 위해 오리지날 장비 제조업자(OEM)(160)에 제공된다(일반적으로, 반드시 그렇지는 않지만, 마이크로 컨트롤러의 일부로서). OEM(160)은 프로그래밍 하우스(180)의 도움을 받아 전자 장치(100)에 펌웨어를 설치하고 최종적으로 전자 장치(100)를 배치하기 위해 준비하는 과정들을 수행할 수 있다. 일단 배치되면, 전자 장치(100)는 IoT 허브(170)를 통해 제공되는 서비스와 통신할 수 있다.
상기 도면을 참조하면, 인증기관(140)은 전자 장치(100)에 설치하기 위한 보안 모듈(110)을 생성하기 위한 제조 능력(150)을 가질 수 있다(또는 신뢰 되는 제조 업체와 긴밀히 협력할 수 있다). 이하에서는 보안 모듈 및 전자 장치의 예를 추가로 설명한다.
본 논의의 목적 상, 보안 모듈(110)은 도 1에 도시되지 않은 물리적 복제방지 기능(PUF)을 포함하며, 이는 공개 키 쌍들을 설정하도록 동작 가능하다. 공개 키 쌍은 상대방과 공유될 수 있는 공개 키와 공유되지 않는 해당 비밀 키를 포함한다. 공개 키 쌍은 비대칭 키 쌍으로도 알려져 있을 수도 있다. 공개 키 및 비밀 키는 PUF에 대한 도전과 응답에 기초할 수 있다. 이에 따라, 상기 보안 모듈(110)은 제조업자(150) 또는 하류의 어느 당사자에 의해 어떤 비밀 키가 삽입되지 않아도 공개 키 쌍들을 설정할 수 있다.
본 논의를 위해, 상기 보안 모듈(110)은 대응하는 적어도 두 개의 도전 응답 쌍들에 기초하여 적어도 두 개의 키 쌍들을 설정하도록 구성된다. 바람직하게는, PUF 기반의 공개 키 쌍으로써, 비밀 키들은 전자 장치에 저장될 필요가 없고, 보안 모듈이 제공하는 안전한 주변/신뢰 영역 내에서 PUF로부터 동적으로 재생될 수 있다. 이에 따라, 전자 장치가 해킹되더라도, 그곳에 저장되어 있는 어떤 비밀 키도 도난 당하지 않을 수 있다.
펌웨어 공개 키(FPK) 및 해당 펌웨어 비밀 키(FSK)는 제1 CRP를 기반으로 하며, 후술하는 바와 같이 전자 장치에 펌웨어를 안전하게 제공하기 위해 사용된다. 펌웨어 키 쌍은 제3자의 프로그래밍 하우스(180)가 어떤 방식으로 손상되더라도 OEM(160)이 전자 장치(100)를 위한 펌웨어를 준비할 수 있도록 하기 위해 사용된다.
등록 공개 키(EPK) 및 해당 등록 비밀 키(ESK)는 제2 CRP를 기반으로 한다. 상기 EPK는 전자 장치에 대한 식별자를 제공하기 위해 사용된다. 디바이스 식별자는 EPK의 기능에 기초한다. 본 명세서에 기술된 많은 예들에 있어, 함수는 암호학적 해시 함수이지만, 이는 반드시 그럴 필요는 없고 다른 함수가 사용될 수 있다. SHA-1이나 MD5와 같은 암호 해시 함수들이 암호학에서 널리 사용된다. 의사난수 비트 열(pseudorandom bit strings)은 해시 함수에 의해 생성된다. 해시 함수 H는 임의적으로 긴 비트 열(m)을 입력 받아 고정된 길이(n)의 비트 열을 출력하는 일 방향 함수이다. 해시 함수의 한 가지 기본 요건은 해시 값 H(m)이 계산하기 쉬워 하드웨어와 소프트웨어 구현이 모두 실용적으로 만든다는 것이다. 해시 함수 H는, 그것이 충돌에 강하다면, 즉 H(m)=H(m')인 두 개의 비-동일 비트 열(m 및 m')을 찾는 것이 계산적으로 불가능하다면, 암호학적 해시 함수이다. 암호 해시 함수의 예로는 MD5, SHA-1, SHA-2, SHA-3, RIPEMD-160, BLAKE2, BLAKE3 등이 있다.
PUF를 이용하여 장치에 펌웨어를 안전하게 제공하여 전자 장치에 대한 식별자를 제공함으로써, 전자 장치는 공개 키 인프라를 구축하고 IoT 서비스에 안전하게 연결하기 위한 모든 요구 사항을 갖는다. 이러한 등록 과정은, "Interim Root-Of-Trust Enrolment And Device-Bound Public Key Registration"이라는 명칭으로, 2021년 4월 12일에 출원된 영국 특허출원 번호 제2105185.9호, 및 "Secure Root-Of-Trust Enrolment And Identity Management Of Embedded Devices"이라는 명칭으로, 2021년 4월 12일에 출원된 동시계류 중인 영국 특허출원 번호 제2105183.4호에 기술되어 있다. 이들 관련 출원들의 내용의 전체는 본 명세서에 의해 모든 목적을 위해 일체로 통합된다.
본 발명의 목적을 위해, 전자 장치(100)는 MCU(microcontroller)와 같은 로우 레벨 회로(low level circuitry)로 구성되는 것으로 이해될 수 있다. 전자 장치(100)는 대안적으로, 더 높은 레벨의 회로, 예를 들어, 습도 또는 온도를 감지하기 위한 회로를 포함하는 것으로 이해될 수 있거나, 스마트 폰 또는 컴퓨터와 같은 더 큰 규모의 전자 장치인 것으로 이해될 수 있다. 제조업자(150)는 보안 모듈(110)만을 제조할 수도 있고, 보안 모듈(110)이 그 안에 설치된 마이크로컨트롤러를 제조할 수도 있다.
아래에서 설명하는 바와 같이, 인증기관(140)은 공개 키 쌍과 연관될 수 있다. 즉, 인증기관(140)은 공개 키(이하, 공개 기관 키(PAK)로 지칭됨) 및 해당 비밀 키(이하, 비밀 기관 키(SAK)로 지칭됨)와 연관될 수 있다. 상기 SAK는 어떤 다른 당사자와 공유되지 않는 반면, 상기 PAK는 보다 광범위하게 공유될 수 있다. 예컨대, PAK는 보안 모듈(110), 예컨대, 보안 메모리에 각인될 수 있다. 대안으로서, 제조업자(150)가 보안 모듈을 포함하는 마이크로컨트롤러(또는 다른 전자 장치)를 제조하는 경우, PAK는 보안 모듈 외부의, 전자 장치의 다른 ROM(read only memory)에 설치될 수 있다. 보안 목적상, 보안 모듈/전자 장치에 저장된 PAK는 그것의 무결성을 보존하기 위해 재작성 또는 수정이 불가능한 것이 중요하다. PAK는 추후 단계에서 보안 모듈(110)에 의해 수신된 정보가 SAK를 이용하여 서명되었고 따라서 인증기관(140)의 승인을 받았는지 확인하는데 이용될 수 있다. 보안 모듈/전자 장치에는 다른 비밀이 아닌 정보, 예를 들어, SAK를 이용하여 인증기관(140)에 의해 서명되고 PAK가 인증기관(140)과 연관되어 있음을 나타내는 루트 인증서가 각인될 수도 있다. 어떤 비밀 정보도 인증기관(140)에 의해 보안 모듈(110)에 제공되지 않는다. 인증기관(140) 또는 제조업자(150)에 의해 보안 모듈(110)로부터 어떤 비밀 정보도 추출되지 않는다.
초기 등록 펌웨어(initial enrolment firmware: IEF)가 또한 보안 모듈/전자 장치에 제공되어 보안 모듈(110)에서 디바이스 식별자 및 하나 또는 다수의 공개 키를 추출할 수 있다.
상기 인증기관(140)은 하나 또는 다수의 서버를 포함하는 서버 시스템(130)을 소유 및/또는 운영할 수 있다. 한편, 도 1의 기관 서버 시스템(130)은 3개의 서버로 구성되는 것으로 도시되었으나, 당해 전문가라면 상기 서버 시스템(130)은 그 이상 또는 그 이하의 서버들로 구성될 수 있음을 이해할 수 있을 것이다.
기관 시스템의 서버들 중 적어도 하나는 SAK를 사용하여 인증서에 서명하도록 구성된다(이에 대한 더 많은 정보는 아래에서 제공됨). 상기 SAK는 펌웨어에 서명하는 데에도 사용될 수 있다.
기관 서버 시스템(130)의 하나 또는 다수의 서버는 디바이스 식별자와 같은 보안 모듈(110)에 대한 정보를 갖는 데이터베이스를 보유하도록 구성된다.
기관 서버 시스템(130)의 서버들 중 적어도 하나는 오리지날 장비 제조업자(OEM)(160)에 의해 운영되는 컴퓨팅 장치(120)와 안전하게 통신하도록 구성된다.
상기 서버들 중 적어도 하나는 IoT 허브(170)와 통신하도록 구성된다. IoT 허브는 클라우드에서 호스팅 되는 관리형 서비스로서, IoT 어플리케이션과 그 자신이 관리하는 전자 장치들 간의 양방향 통신을 위한 메시지 허브로서 역할을 한다. 본 논의의 목적상, 본 명세서에서 기술되는 방법들은 전자 장치가 IoT 허브(170)와 통신할 준비가 되어 배치될 수 있도록 제공하기에 적합하다.
단지 명료성을 위해, 서버 시스템(130)의 서버는 본 명세서에서 "기관 서버(authority server)"로 종종 지칭된다.
당해 전문가는 상기 서버 시스템(130)의 기능 중 적어도 일부가 클라우드 서비스로서 제공될 수 있다는 것을 인식할 것이다. 하나 또는 다수의 서버들은 물리적으로 기관 서버(140)의 외부에 위치할 수 있다. 서버 시스템(130)의 기관 서버는 특정 보안 모듈(110)을 식별하기 위한 디바이스 식별자를 수신할 수 있으며, 상기 디바이스 식별자는 등록 비밀 키(ESK)와 그 EPK를 포함하는 등록 키 쌍의 등록 공개 키(EPK)의 기능에 기초할 수 있다. 서버 시스템(130)은 디바이스 식별자를 데이터베이스에 저장하도록 구성된다. 일부 예들에 있어, 서버 시스템(130)은 또한 특정 보안 모듈(110)에 대한 EPK를 수신할 수도 있지만, 반드시 그럴 필요는 없다.
서버 시스템(130)은 또한, 일부 실시예들에 따르면, 펌웨어 비밀 키(FSK)와 펌웨어 공개 키(FPK)를 포함하는 펌웨어 키 쌍의 펌웨어 공개 키(FPK)를 수신할 수도 있다. 서버 시스템(130)은 디바이스 식별자 및 대응하는 FPK를 데이터베이스에 저장할 수 있다.
일단 서버 시스템(130)이 보안 모듈(110)의 디바이스 식별자를 수신하고 저장하면, 보안 모듈(110)(마이크로컨트롤러에 이미 설치되어 있을 수도 있음)이 OEM(160)에 제공된다. 상기 OEM은 일반적으로 그 OEM(160)에 의해 제조되고 있는 다수의 전자 장치들(100)에 설치하기 위해 그러한 보안 모듈의 꾸러미를 구매할 수 있다.
상기 OEM(160)은 또한 인증기관(140)의 서버 시스템(130)과 안전하게 통신할 수 있는 컴퓨팅 장치(120)에 액세스할 수 있다. 참조의 편의를 위해, OEM에 의해 운영되는 컴퓨팅 장치(120)는 이하에서 "키 관리 서버"로 지칭된다. "키 관리 서버"라는 용어는 단수로 사용되지만, 당해 전문가라면 상기 컴퓨팅 장치(120)의 기능이 복수의 컴퓨팅 장치들 사이에서 공유될 수 있음을 인식할 것이므로, "키 관리 서버(key management server)"는 원하는 기능을 갖는 복수의 컴퓨팅 장치(하나 또는 다수의 서버/컴퓨팅 장치를 포함하는 키 관리 서버 시스템)를 또한 지칭하는 것으로 이해할 수 있을 것이다.
이하, KMS(120)로 지칭되는, 키 관리 서버(120)는, 비록 OEM(160)이 직접 상호 작용할 수 있는 서버이기는 하지만, 일부 상황에서는 기관 서버 시스템(130)의 또 다른 기관 서버로 생각될 수도 있다. 특히, KMS(120)는 기관 서버 시스템(130)과의 보안 통신이 가능하므로, 기관 서버 시스템(140)에 의해 OEM의 사용에 대해 인증될 수 있다.
상기 키 관리 서버(120)는 사내(on-premises) 운영을 위해 OEM(160)에 제공되는 물리적 서버를 포함할 수 있다. 예를 들어, OEM(160)은 인증기관(140)로부터 물리적 KMS(120)를 획득하도록 준비할 수 있다. 인증기관(140)은 OEM(160)에 제공될 특정 KMS 인스턴스(120)를 식별하기 위한 KMS 식별자를 생성 및 기록할 수 있다. 인증기관(140)은 KMS(120) 내부의 하드웨어 보안 모듈(hardware security module: HSM)에서 KMS 공개 키 쌍을 생성하고, KMS 공개 키 쌍의 KMS 공개 키를 추출하고, SAK를 사용하여 인증서에 서명하여 KMS 식별자를 KMS 공개 키 및 KMS 소프트웨어의 인증서와 연관시킬 수 있다. 또한, 인증기관(140)은 KMS가 인증기관 서버 시스템(130)의 인증기관 서버와 연결할 수 있도록 하는 URL과 함께, PAK를 인증기관(140)과 연계시키는 루트 인증서를 KMS(120)에 끼워 넣을 수 있다. 그런 다음, KMS(120)는 물리적으로 OEM(160)으로 전송될 수 있다. KMS(120)는 서버 시스템(130)과 보안 통신(예를 들어, TLS 통신)을 개시할 수 있다. 서버 시스템(130)은 SAK에 의해 서명된 TLS 인증서 및 체인을 제시하고 TLS 서버 인증을 수행하여 인증할 수 있다. 그런 다음, KMS(120)는 PAK를 인증기관(140)과 연계하는 하드코딩(hardcoded) 된 루트 인증서를 사용하여 인증서를 검증할 수 있다. KMS(120)는 그의 인증서를 제시하고(인증기관(140)에 의해 SAK를 사용하여 서명된) TLS 클라이언트 인증을 수행하여 인증기관 서버에 인증할 수 있다. 인증기관(140)은 KMS에 설치된 인증서에 서명하는 데 사용되는 SAK에 대응하는 루트 공개 키(PAK)를 사용하여 인증서에 대한 서명을 검증할 수 있다. 당해 전문가라면 KMS(120)를 인증하기 위해 사용되는 공개 키가 보안 모듈(110)에 설치된 공개 기관 키와 동일하거나 상이할 수 있음을 이해할 것이다.
사내 운영을 위해 OEM(160)에 제공되는 맞춤형(bespoke) 물리적 서버와는 대조적으로, 키 관리 서버(120)는 OEM(160)에 의해 운영되지만, 인증기관(140)의 서버 시스템(130)과 통신하기 위해 그에 제공되는 보안 게이트웨이용 맞춤형 소프트웨어를 갖는 컴퓨팅 디바이스(120)를 포함할 수 있다. 상기한 맞춤형 소프트웨어는 배포의 용이성을 위해 지식종속적(agnostic)이지 않으며, OEM(160)에 의해 쉽게 설치 및 운영될 수 있다. 맞춤형 소프트웨어는 서버 시스템(130)에 인증할 수 있는 메커니즘(공개 키)을 포함한다.
상기 OEM(160)은 KMS(120)를 사용하여 하나 또는 다수의 수신된 보안 모듈들을 등록할 수 있다. 구체적으로, KMS(120)는 전자 장치의 보안 모듈(110)과 통신하여 EPK의 기능을 포함하는 디바이스 식별자를 추출할 수 있다. KMS(120)는 기관 서버 시스템(130)과 보안 통신 채널을 개방하여 신뢰 되는 인증기관(140)에 KMS 인스턴스(120)와 디바이스 식별자 사이의 연관성을 등록할 수 있다. 인증기관(140)은 로컬 데이터베이스를 업데이트하고 디바이스 식별자를 성공적으로 등록했음을 KMS(120)에 알릴 수 있으며, 해당 디바이스 식별자와 연관된 전자 장치와 통신할 수 있는 특정 권한을 KMS(120)에 부여할 수 있다.
OEM(160)은 KMS(120)를 사용하여 본 명세서에 기술된 방법에 따라 전자 장치에 펌웨어를 안전하게 제공할 수 있다. 펌웨어는 전자 장치의 하드웨어를 제어하기 위한 로우 레벨 명령들을 포함할 수 있다. 상기 펌웨어는 "Interim Root-Of-Trust Enrolment And Device-Bound Public Key Registration"이라는 명칭으로, 2021년 4월 12일 출원된, 동시 계류중인 영국 특허출원 번호 제2105185.9호 및 "Secure Root-Of-Trust Enrolment And Identity Management Of Embedded Devices"라는 명칭으로, 2021년 4월 12일 출원된, 동시 계류중인 영국 특허출원 번호 제2105183.4호에 기술된 방법에 따라, 장치를 등록하기 위한 하나 또는 다수의 루트 인증서를 포함할 수 있다. 상기 펌웨어는 전자 장치의 디바이스 식별자가 등록되어 있는 KMS(120)의 식별자를 포함할 수 있다. 예를 들어, 상기 식별자는 전자 장치가 KMS(120)에 접속하기 위해 통신하고자 하는 유니폼 리소스 로케이터(Uniform Resource Locator: URL)를 포함할 수 있다. 펌웨어는 상기 URL에 의해 식별되는 컴퓨팅 장치/서버와의 TLS 연결과 같은 보안 연결을 개시하기 위한 명령들을 포함할 수 있다. 펌웨어는 전자 장치가 수신된 인증서를 해석할 수 있도록 인증서 명칭 구조에 대한 세부 사항을 포함할 수 있다. 펌웨어는 인증서 서명 요청(certificate signing request: CSR)을 설정하기 위한 세부 사항을 더 포함할 수 있다. 인증서 서명 요청은 통상적으로, 인증서가 발급되어야 하는 공개 키, 식별 정보(예컨대, 디바이스 식별자) 및 무결성 보호(예컨대, 디지털 서명)를 포함한다.
키 관리 서버(120)는 또한 하나 또는 다수의 전자 장치들(100)과 통신할 수 있다. 이러한 방식으로, 상기한 하나 또는 다수의 전자 장치들(100)은 OEM(160)에 등록될 수 있다. 본 명세서에서 설명되는 바와 같이, 상기 키 관리 서버(120)는 전자 장치(100) 상에 펌웨어의 안전한 설치를 용이하게 하기 위해 사용될 수 있다. KMS(120)는 디바이스 식별자를 특정 전자 장치(100)와 연계시키는 데 사용될 수 있다. KMS(120)는 인증서에 서명하는 데 사용될 수 있다. 일단 펌웨어가 전자 장치 상에 설치되고 나면, 해당 디바이스를 OEM에 등록하고 궁극적으로는 IoT 허브와 함께 안전한 사용을 위해 디바이스의 배포를 준비하기 위해 신뢰 체인(chain-of-trust)이 구축될 수 있다.
KMS(120)는 또한 IoT 허브(170)에 연결하기 위해 필요한 정보를 전자 장치에 안전하게 제공하기 위해 사용될 수 있다. 예를 들어, KMS(120)는 직접 또는 서버 시스템(130)을 통해 IoT 허브와 통신하여, 등록된 각 전자 장치(100)에 대한 디바이스 인증서를 IoT 허브에 제공하도록 구성될 수 있다. KMS(120)는 전자 장치(들)(100)에 IoT 루트 인증서 및 IoT 엔드포인트(endpoint)를 제공하여, 디바이스가 IoT 허브(170)와 통신할 수 있도록 구성될 수 있다.
전자 장치들(100)은 IoT 허브(170)와 통신하는 데 필요한 모든 정보와 함께 배치될 수 있다.
도 2는 도 1에 제시된 많은 하드웨어 장치들을 포함하는 통신 시스템을 보다 일반적으로 도시한다. 특히, 도 2는 통신 네트워크(200), 보안 모듈(110)을 구비하는 예시적인 전자 장치(100), 예컨대, OEM(160)에 의해 운영될 수 있는 키 관리 서버(120), 기관 서버 시스템(130), 및 예컨대, IoT 허브(170)에 의해 운영될 수 있는 컴퓨팅 장치(220)를 나타낸다. 상기 통신 네트워크(200)는 인터넷과 같은 임의의 적합한 통신 네트워크일 수 있다. 일부 예들에 있어, 상기 통신 네트워크(200)는 광역 네트워크(Wide Area Network: WAN)를 포함할 수 있다.
전자 장치(100)는 임의의 적합한 형태를 취할 수 있으며, 본 명세서에 기재된 방법을 수행하기 위한 임의의 적합한 컴퓨팅 장치를 포함할 수 있다. 예를 들어, 전자 장치는 개인용 컴퓨터, 서버, 랩톱 컴퓨터, 또는 다른 기계장치와 같은 처리 및 저장이 가능한 임의의 컴퓨팅 장치일 수 있다. 전자 장치(100)는 IoT 장치를 포함할 수 있다. 전자 장치는 더 큰 장치에 설치하기 위한 마이크로컨트롤러 유닛(Micro Controller Unit: MCU)을 포함할 수 있다. 전자 장치(100)는 직접 또는 네트워크(200)를 통해 다른 장치와 통신할 수 있다. 예를 들어, 전자 장치(100)는 물리적 연결을 통해 또는 상기 네트워크(200)를 통해 KMS(120)와 통신할 수 있다. 일단 전자 장치(100)가 배치되면, 상기 장치(100)는 상기 통신 네트워크(200)를 통해 컴퓨팅 장치(220)와 통신할 수 있다. 전자 장치는 보안 연결, 예를 들어 TLS 연결을 통해 KMS(120) 및/또는 컴퓨팅 장치(220)와 통신할 수 있다.
KMS(120)는 아래에서 더 논의되는 컴퓨팅 장치(500)와 같은 임의의 적합한 컴퓨팅 장치를 포함할 수 있다. KMS(120)는 서버들의 클러스터 또는 단일한 장치를 포함할 수 있다. KMS(120)의 기능은 분산형 데이터 처리 환경, 단일 데이터 처리 장치 등을 포함하는 수많은 다양한 유형의 데이터 처리 환경에서 활용될 수 있다.
상기 KMS(120)는 상기 네트워크(200)를 통해 기관 서버 시스템(130)과 안전한 연결을 수립할 수 있으며, 네트워크(200)를 통해 또는, 일부 어떤 상황에서는, 유선 연결과 같은 직접 연결을 통해 전자 장치(100)와 통신할 수도 있다. KMS(120)는 전자 장치(100)의 보안 모듈(110)을 식별하는 디바이스 식별자와 같은 전자 장치(100)에 관한 정보 및 전자 장치(100)의 EPK와 같은 하나 또는 다수의 공개 키들을 저장하도록 구성된다. 추가적으로 또는 대안적으로, KMS(120)는 기관 서버 시스템(130)의 데이터베이스(210)와 통신하여 이러한 정보를 획득하도록 구성될 수 있다. KMS(120)는 인증서에 서명하도록 더 구성된다.
상기 기관 서버 시스템(130)은 하나 또는 다수의 서버를 포함하고 데이터베이스(210)를 포함한다. 기관 서버 시스템(130)의 하나 또는 다수의 기관 서버는 인증기관(140)을 대신하여 인증서에 서명하도록, 예를 들어, KMS(120)가 인증기관(140)으로부터 신뢰받고 있음을 인증하거나, 전자 장치(100)에 설치를 위한 펌웨어에 서명하도록 구성된다. 데이터베이스(210)는 전자 장치(100)를 식별하는 디바이스 식별자, 일부 예에서는 전자 장치(100)의 펌웨어 공개 키(FPK)와 같은, 전자 장치(100)에 관한 정보를 저장하도록 구성된다. 상기 데이터베이스(210)는 KMS(120)에 관한 정보를 저장하도록 더 구성될 수 있다. 예를 들어, 데이터베이스(210)는 디바이스 식별자들의 꾸러미를 특정 KMS(120)와 연관시키는 정보를 포함할 수 있으며, KMS(120)가 그것이 연관되는 디바이스 식별자들과 상호작용하도록 권한을 부여하는 데 사용될 수 있다.
컴퓨팅 장치(220)는 많은 연결된 장치들(예를 들어, 분산 컴퓨팅 환경에서) 또는 단일한 컴퓨팅 장치를 포함할 수 있다.
도 3a는 일 예에 따른 전자 장치(100)의 블록도를 도시한다. 예를 들어, 상기 전자 장치(100)는 IoT 장치일 수 있다. 당해 전문가라면 이해할 수 있는 바와 같이, 도 3a에 도시된 것에 대비해 다른 아키텍처들이 사용될 수 있다.
도면을 참조하면, 전자 장치(100)는 보안 모듈(110), 하나 또는 다수의 CPU/프로세서(302), 하나 또는 다수의 메모리(304), 센서 모듈(306), 통신 모듈(308), 포트(310) 및 전원(312)을 포함한다. 구성 요소들(302, 304, 306, 308, 310, 312)의 각각은 다양한 버스를 사용하여 상호 연결된다. 상기 CPU(302)는 통신 모듈(308)을 통해 또는 포트(310)를 통해 수신된, 메모리(304)에 저장된 명령들을 포함하는, 전자 장치(100) 내에서 실행을 위한 명령들을 처리할 수 있다.
상기 메모리(304)는 전자 장치(100) 내에 데이터를 저장하기위한 것이다. 하나 또는 다수의 메모리(304)는 휘발성 메모리 유닛 또는 유닛들을 포함할 수 있다. 상기 하나 또는 다수의 메모리는 비휘발성 메모리 유닛 또는 유닛들을 포함할 수 있다. 하나 또는 다수의 메모리들(304)은 또한 자기 또는 광 디스크와 같은 컴퓨터 판독 가능한 매체의 또 다른 형태일 수 있다. 하나 또는 다수의 메모리(304)는 전자 장치(100)를 위한 대용량 저장소를 제공할 수 있다. 본 명세서에 기재된 방법을 수행하기 위한 명령들은 상기한 하나 또는 다수의 메모리들(304) 내에 저장될 수 있다.
상기 통신 모듈(308)은 프로세서(302)와 다른 시스템들 간의 통신들을 송수신하기에 적합하다. 예를 들어, 통신 모듈(308)은 인터넷과 같은 통신 네트워크(200)를 통해 통신을 송수신하는데 이용될 수 있다. 통신 모듈(308)은 전자 장치(100)가 WiFi®, Bluetooth®, NFC 등과 같은 다수의 프로토콜 중 어느 하나의 프로토콜로 다른 장치/서버와 통신하도록 할 수 있다.
상기 포트(310)는, 예를 들어, 프로세서(302)에 의해 처리될 명령들을 포함하는 비일시적 컴퓨터 판독 가능 매체를 수신하기에 적합하다. 상기 포트(310)는, 예를 들어, 전자 장치(100)와 키 관리 서버(120) 간의 유선 통신을 위해 사용될 수 있다.
상기 센서 모듈(306)은 온도, 습도 또는 임의의 다른 파라미터와 같은 센싱 파라미터를 위한 하나 또는 다수의 센서를 포함할 수 있다.
상기 프로세서(302)는, 예를 들어, 센서 모듈(306), 보안 모듈(110) 또는 통신 모듈(308)로부터 데이터를 수신하도록 구성된다. 프로세서(302)는, 메모리(304)에 액세스하고, 메모리(304)로부터, 통신 모듈(308)로부터, 또는 상기 포트(310)에 연결된 컴퓨터 판독 가능 저장 매체로부터 수신된 명령들 및/또는 정보에 대해 동작하도록 더 설정될 수 있다.
도 3b는 더 큰 전자 장치 내에 설치될 수 있는 전자 장치(100)의 다른 예, 즉 마이크로콘트롤러 유닛(Micro Controller Unit: MCU)(315)의 아키텍처를 도시한다. 당해 전문가라면 다른 MCU 아키텍처가 사용될 수 있음을 이해할 수 있을 것이다.
도 3b의 MCU(315)는 CPU(320), 사용자 메모리(322) 및 부트 랜덤 액세스 메모리(328)를 포함한다. CPU(320), 부트 ROM(328) 및 사용자 메모리(322)는 코드 버스(324)를 통해 통신할 수 있다. CPU(320), 부트 ROM(328), 사용자 메모리(322)는 시스템 버스(326)에 연결될 수 있고, 이것은 복수의 주변기기들(A, B, C)(330, 332, 334) 및 보안 모듈(110)에도 또한 연결될 수 있다. MCU(315)에는 보안과 관련된 구성 요소만이 예시되어 있다. 상기 MCU(315)는 더 많은 구성요소를 가질 수도 있고, 더 적은 구성요소를 가질 수도 있음을 당해 전문가라면 이해할 수 있을 것이다. 예컨대, MCU(315)는 더 많은 주변 장치들 및 시스템 구성요소들을 가질 수 있다.
도 4a는 일 예에 따른 보안 모듈(110)의 블록도를 나타낸다. 보안 모듈(110)은 내부의 보안 구성 요소들을 전자 장치(100)의 다른 구성 요소로부터 분리하는 트러스트 존으로 간주될 수 있다. 보안 모듈(110)은 PUF 모듈(402), 암호 가속기(404) 및 보안 메모리(406)를 포함한다. 당해 전문가라면 다른 아키텍처도 또한 가능하다는 것을 이해할 수 있을 것이다. 보안 모듈(110)은 전자 장치(100)의 시스템 버스에 연결된다.
상기 PUF 모듈(410)은 PUF 및 상기 PUF와 상호 작용하는데 필요한 임의의 회로를 포함한다. 특히, PUF 모듈은 암호 가속기(404)로부터 신호를 수신하고 적절한 응답을 제공할 수 있다. 암호 가속기(404)는 암호 연산을 수행하고, PUF 모듈(402) 및 보안 메모리(406)와 상호 작용하기 위한 전용의 처리 장치를 포함한다.
보안 메모리는 PUF 모듈(402)에 의해 생성된 키들 및/또는 루트 인증서와 같은 비밀 정보를 저장하도록 구성된다. CPU(320)가 PUF 모듈(402)을 제어하기 위해 필요한 명령들, 보안 모듈(110) 내의 보안 주변장치들 및 상기 보안 메모리는 시스템에 대한 불변 부팅 프로세스(immutable booting process)의 일부인 Boot ROM(328) 내에 포함된다.
도 4b는 일 예에 따른 PUF 모듈(402)의 기능적 구성 요소들을 예시한다. PUF 모듈(402)은 PUF(450), 아날로그 프론트-엔드(analog front-end: AFE)(452), 후-처리 엔진(454) 및 RISC-V 코어(456)를 포함한다.
당해 전문가라면 PUF(450)가 임의의 적합한 PUF일 수 있음을 인식할 것이다.
아날로그 프론트-엔드(AFE)(452)는 PUF와 상호 작용하기 위한 아날로그 신호 컨디셔닝 회로를 포함한다. 예컨대, 상기 AFE는 PUF(450)와 상호작용하여 원시 '지문(fingerprint)'을 설정할 수 있다. 상기 후처리 엔진(454)은 AFE(452)의 출력을 보정하고, AFE(452)의 출력을 더 처리함으로써 추가적인 프라이버시 향상을 제공하도록 구성된다. 상기 RISC-V 코어(456)는 PUF(450)로부터의 데이터의 후처리, 예를 들어, 데이터의 에러 정정을 수행하는 CPU 코어이다. RISC-V 코어는, 다른 CPU 코어가 사용될 수도 있을지라도, PUF 모듈(402)을 외부 마이크로컨트롤러에 쉽게 연결할 수 있는 인터페이스를 제공한다.
도 5는 컴퓨팅 장치(500)의 블록도이다. 예를 들어, 컴퓨팅 장치(500)는 컴퓨팅 장치, 서버, 모바일 또는 휴대용 컴퓨터 또는 전화 등을 포함할 수 있다. 컴퓨팅 장치(500)는 연결된 다수의 장치들에 걸쳐 분산될 수 있다. 컴퓨팅 장치(500)는 키 관리 서버(120), 기관 서버 시스템(130)의 기관 서버, 또는 예를 들어, IoT 허브에서 사용하기 위한 서버(220)로 사용하기에 적합할 수 있다. 당해 전문가가 이해할 수 있는 바와 같이 도 5에 도시된 것에 대해 다른 아키텍처들이 사용될 수 있다.
도면을 참조하면, 컴퓨팅 장치(500)는 하나 또는 다수의 프로세서(510), 하나 또는 다수의 메모리(520), 시각적 디스플레이(530) 및 가상 또는 물리적 키보드(540)와 같은 다수의 선택적 사용자 인터페이스들, 통신 모듈(550), 및 선택적으로 포트(560) 및 선택적으로 전원(570)을 포함한다. 각 구성 요소들(510, 520, 530, 540, 550, 560, 570)는 다양한 버스를 이용하여 상호 연결된다. 프로세서(510)는 메모리(520)에 저장되거나, 통신 모듈(550)을 통하여 또는 포트(560)를 통하여 수신되는, 메모리에 저장된 명령들을 포함하는, 컴퓨팅 장치(500)에서의 실행을 위한 명령들을 처리할 수 있다.
메모리(520)는 컴퓨팅 장치(500) 내에 데이터를 저장하기위한 것이다. 하나 또는 다수의 메모리(520)는 휘발성 메모리 유닛 또는 유닛들을 포함할 수 있다. 상기 하나 또는 다수의 메모리는 비휘발성 메모리 유닛 또는 유닛들을 포함할 수 있다. 하나 또는 다수의 메모리(520)는 또한 자기 또는 광 디스크와 같은 컴퓨터 판독 가능 매체의 다른 형태일 수 있다. 하나 또는 다수의 메모리(520)는 컴퓨팅 장치(500)를 위한 대용량 스토리지를 제공할 수 있다. 본 명세서에 기재된 방법을 수행하기 위한 명령들은 하나 또는 다수의 메모리들(520) 내에 저장될 수 있다.
상기 장치(500)는 시각적 디스플레이(530)와 같은 시각화 수단 및 키보드(540)와 같은 가상 또는 전용의 사용자 입력 장치를 포함하는 다수의 사용자 인터페이스들을 포함한다.
통신 모듈(550)은 프로세서(510)와 원격 시스템 간의 통신을 송수신하기에 적합하다. 예를 들어, 통신 모듈(550)은 인터넷과 같은 통신 네트워크(200)를 통해 통신을 송수신하는데 이용될 수 있다.
포트(560)는, 예를 들어, 프로세서(510)에 의해 처리될 명령들을 포함하는 비일시적 판독 가능 매체(non-transitory computer readable medium)를 수신하기에 적합하다.
프로세서(510)는, 데이터를 수신하고, 메모리(520)에 액세스하며, 통신 모듈(550)로부터, 또는 사용자 입력 장치(540)로부터, 메모리(520) 또는 포트(560)에 연결된 컴퓨터 판독 가능 저장 매체로부터 수신된 명령어들에 따라 동작하도록 구성된다.
컴퓨팅 장치(500)는 암호 키를 안전하게 저장하기 위해 도 5에 도시되지 않은 하드웨어 보안 모듈(hardware security module: HSM)을 더 포함할 수 있다. 예를 들어, 키 관리 서버(120)로 사용되는 컴퓨팅 장치(500)의 경우, 인증서를 서명하기 위한 하나 또는 다수의 비밀 키 또는 펌웨어를 암호화/복호화하기 위한 서버 암호화 키 및 서버 복호화 키를 저장하기 위해 HSM이 필요할 수 있다. 예를 들어, 기관 서버 시스템(130)의 기관 서버로 사용되는 컴퓨팅 장치(500)의 경우, HSM은 기관 키 쌍의 비밀 기관 키(SAK)와 같은 하나 또는 다수의 비밀 키를 저장하도록 요구될 수 있다. 당해 전문가라면 HSM이 비밀 키들을 저장할 필요가 없으며 다른 보안 채비(security arrangements)가 적용 가능할 수도 있다는 것을 이해할 수 있을 것이다. 예를 들어, 컴퓨팅 장치는 클라우드 기반의 HSM에 액세스할 수 있다.
도 6a는 일 예에 따른 전자 장치(100)에 펌웨어를 안전하게 제공하는 방법을 도시한다. 이 예에서, 도 1을 참조하면, OEM(160)은 전자 장치(100)에 펌웨어를 설치하고자 하며, 이를 위해 제3자 프로그래밍 하우스(180)를 채용한다. OEM(160)은 기관 서버 시스템(130)과 안전한 통신이 가능한 키 관리 서버(120)에 접속할 수 있다.
인증기관(140)/제조업자(150)는 보안 모듈(110)을 생산하도록 구성된다 (그리고 선택적으로 그것을 MCU(315) 내에 설치한다).
보안 모듈(110)은 PUF(450)을 포함한다. 보안 모듈(110)은 PUF에 대한 제1 도전과 응답에 기초하여 펌웨어 키 쌍(FPK, FSK)를 생성하고, 상기 펌웨어 키 쌍은 펌웨어 공개 키(FPK) 및 펌웨어 비밀 키(FSK)를 포함한다. 보안 모듈(110)은 PUF에 대한 제2 도전과 응답에 기초하여 등록 공개 키(EPK) 및 등록 비밀 키(ESK)를 포함하는 등록 키 쌍(EPK, ESK)을 생성하도록 더 구성된다. 상기 비밀 키들(FSK, ESK)은 보안 모듈(110)을 벗어나지 않는다. 실제로, 이러한 비밀 키들은 PUF(450)로부터의 응답에 기초하므로, 이것들은 메모리에 저장될 필요가 없고 적절한 입력으로 PUF(450)로부터 동적으로 재생될 수 있다.
상기 보안 모듈(110)은 최종적으로 그 보안 모듈(110)이 설치된 전자 장치(100)를 식별하기 위해 사용될 디바이스 식별자(도 6a의 "DeviceID")를 생성하도록 구성된다. 상기 디바이스 식별자는 등록 공개 키(EPK)의 함수, 바람직하게는, 비선형 함수에 기초하여 결정된다. 상기 디바이스 식별자를 EPK의 기능에 기반함으로써, 보안 모듈(110)의 신원은 보안 모듈(110)의 물리적 특성에 기반하며, 따라서 도용(spoofed)될 수 없다.
일 예에 따르면, 디바이스 식별자는 EPK에 암호 해시 함수(cryptographic hash function)를 적용하여 결정될 수 있다.
도 6a의 예에 따르면, 디바이스 식별자는 등록 공개 키에 암호 해시 함수를 적용하여 생성된다.
도 6a를 참조하면, 단계 602에서, 제조 시 보안 모듈에 공개 기관 키(PAK)가 제공된다. 예를 들어, 상기 PAK는 보안 모듈(110)의 보안 메모리(406)에 저장될 수 있다. 일 예에서, 보안 메모리(406)는 ROM(read only memory)일 수 있다. ROM은 어떤 방식으로도 다시 쓰거나 수정할 수 없으므로, PAK를 ROM에 저장하면 그것을 변조할 수 없다. 공개 기관 키(PAK)는 비밀 기관 키(SAK)와 PAK를 포함하는 기관 키 쌍의 공개 키이다. 비밀 기관 키(SAK)는 인증기관(140)(또는 기관 서버 시스템(130)의 서버)에만 알려져 있는 반면, PAK는 널리 공유될 수 있다. 한편, 도 6a에서는 PAK가 서버 시스템(130)에 의해 보안 모듈(110)에 제공되고 있지만, PAK는 일부 다른 개체에 의해 보안 모듈(110)에 제공될 수도 있으며, 예를 들어, 신뢰 되는 제조업자(150)에 의해 보안 모듈에 내장될 수도 있음을 당해 전문가라면 이해할 수 있을 것이다. 또한, 보안 모듈(110)에는 디바이스 식별자 및 하나 또는 다수의 공개 키가 추출될 수 있도록 하고, 국부적으로 저장되어 있는 엔드포인트(예를 들어, URL)와의 보안 연결을 개시하는 것과 같은, 요구되는 보안 기능을 수행하기 위한 기본 소프트웨어를 포함하는 초기 등록 펌웨어가 제공될 수 있다. 또한, 도 6a의 602 단계에서, 보안 모듈(110)에 공개 기관 키(PAK)가 제공되는 동안, 상기 PAK는 전자 장치(100)의 다른 부분에 제공되어 상기 전자 장치(100)에 안전하게 내장될 수 있음을 당해 전문가는 이해할 것이다.
단계 604에서, 기관 서버 시스템(130)은 보안 모듈(110)에 대한 디바이스 식별자 및 펌웨어 공개 키 FPK를 획득한다. 디바이스 식별자는 등록 공개 키(EPK)의 해시를 포함한다. 서버 시스템(130)은 상기 장치로부터 디바이스 식별자 및 FPK를 추출하거나, 예를 들어, 제조업자(150)로부터 그것들을 수신할 수 있다.
보안 모듈(110)은 일 꾸러미의 보안 모듈들 중 하나의 보안 모듈일 수 있다. 서버 시스템(130)은 이에 따라 많은 디바이스 식별자들 및 대응하는 FPK들을 획득할 수 있다. 단계 606에서, 서버 시스템(130)은 디바이스 ID 및 해당 FPK를 추후의 참조를 위해 데이터베이스(210)에 저장한다.
일단 서버 시스템(130)에 의해 디바이스 식별자 및 해당 FPK가 획득되어 저장되고 나면, 보안 모듈(110)(또는 보안 모듈을 포함하는 MCU(315))은 전자 장치(100)에 설치하기 위하여 주문자 OEM(160)에게 전달될 수 있다.
도 6a를 참조하여 기술된 시나리오에서, OEM(160)은 전자 장치(100)에 설치하기 위한 펌웨어를 설계한다. 펌웨어는 전자 장치의 등록 중 신뢰 체인이 구축될 수 있도록 OEM에 의해 자체 서명된 하나 또는 다수의 루트 인증서(root certificates)를 더 포함할 수 있다. 펌웨어는 전자 장치(100)의 하드웨어를 제어하기 위한 로우 레벨 명령들을 포함할 수 있다. 펌웨어는 키 관리 서버(120)로 제공되며, 이것은 단계 608에서 펌웨어를 암호화하기 위한 서버 암호화 키(K)를 생성한다. 상기 서버 암호화 키(K)는 대칭 암호 함수를 위한 키일 수도 있고, 또는 비대칭 암호 함수를 위한 키일 수도 있다. 즉, 서버 복호화 키(도 6a의 "Inv(K)")는 서버 암호화 키(K)와 동일하거나 상이할 수 있다. 단계 658에서, KMS(120)는 펌웨어에 암호 해시 함수를 적용한다. 이것은 서버 암호키가 생성되기 전, 도중, 또는 그 후에 발생할 수 있다.
KMS(120)는 기관 서버 시스템(130)과 보안 통신이 가능하며 펌웨어의 해시가 서버 시스템(130)으로 전송된다. 펌웨어의 해시를 KMS(120)에서 서버 시스템(130)으로 전송함으로써, 펌웨어 그 자체가 전송될 필요가 없고, 서버 시스템(130) 자체는 펌웨어를 수정할 수 없다. 단계 662에서, 기관 서버 시스템(130)은 비밀 기관 키(SAK)를 이용하여 펌웨어의 해시에 서명한다. 따라서, 펌웨어의 해시에 대해 서명을 갖춘 공개 기관 키(PAK)를 사용할 개체라면, 펌웨어의 해시가 서버 시스템(130)에 의해 서명되었음을 검증할 수 있을 것이다.
이어서, 펌웨어의 해시에 대한 서명은 KMS(120)으로 다시 전송된다. 단계 660에서, KMS(120)는 서버 암호화 키(K)를 이용하여 펌웨어 및 서명을 암호화한다.
펌웨어를 암호화하기 위해 사용되는 서버 암호화 키는 상이한 펌웨어에 대해 동일할 수 있거나, 상이할 수 있다. 예를 들어, 상기 OEM(160)은 제1 꾸러미의 전자 장치들을 위한 제1 펌웨어를 생성하고, 제2 꾸러미의 전자 장치들을 위한 제2 펌웨어를 생성할 수 있으며, 상기 제1 펌웨어 및 상기 제2 펌웨어 모두를 암호화하기 위해 동일한 서버 암호화 키(K)를 사용하거나, 펌웨어 고유의 암호화 키들을 사용할 수 있다. 더욱이, 일부 예들에 있어, OEM이 생성하는 전자 장치들(100)의 각각의 꾸러미에 대해 상이한 서버 암호화 키가 존재할 수 있다.
기관 서버 시스템(130)은 또한 디바이스 식별자 ("DeviceID") 및 해당 FPK를 키 관리 서버(120)에 안전하게 통신한다. 복수의 보안 모듈(110)의 디바이스 식별자 및 FPK는 KMS(120)에 개별적으로 또는 대량으로, 예를 들어, 룩-업 테이블의 형태로 전달될 수 있다.
단계 614에서, 상기 KMS는 FPK를 사용하여 서버 복호화 키 Inv (K)를 암호화한다. 상기 암호화된 서버 복호화 키(도 6a에서 “Enc(FPK,Inv(K))”라 표기됨) 및 해당 디바이스 식별자는 프로그래밍 하우스(180)로 전달된다. 예를 들어, 복수의 디바이스 식별자들 및 대응하는 암호화된 서버 복호화 키들을 포함하는 룩-업 테이블이 프로그래밍 하우스(180)에 제공될 수 있다. 상기 서버 복호화 키는 펌웨어 및 서명된 해시를 복호화하기 위한 것이다.
따라서, 상기 암호화된 펌웨어, 암호화된 서명 및 암호화된 서버 복호화 키는 전자 장치(100)에 설치되기 위해 프로그래밍 하우스(180)로 전송된다.
단계 616에서, 프로그래밍 하우스(180)는, 소정의 전자 장치(100)에 대하여, 해당 암호화된 서버 복호화 키를 전자 장치(100)에 설치한다. 프로그래밍 하우스는 설치를 위해 암호화된 펌웨어를 전자 장치(100)에 더 제공한다.
보안 모듈(110)을 포함하는 전자 장치(100)는 펌웨어를 복호화하고 설치하는데 필요한 모든 정보를 포함한다. 암호화된 서버 복호화 키 Enc(FPK,Inv(K))가 FPK를 이용하여 암호화됨에 따라, 전자 장치(100)는 FSK를 이용하여 서버 복호화 키를 복호화할 수 있다. 펌웨어의 해시에 대한 서명이 SAK를 이용하여 서명됨에 따라, 전자 장치는 PAK를 이용하여 서명을 검증할 수 있다. 전자 장치는 서버 복호화 키(Inv, K)를 이용하여 암호화된 펌웨어를 복호화할 수 있다. 전자 장치(100)는, 예를 들어, 복호화된 펌웨어에 해시 함수를 적용하고 기관 서버 시스템(130)에 의해 서명된 것과 비교함으로써, 그 서명이 상기 수신된 펌웨어에 해당하는 것을 더욱 확인할 수 있다. 상기 검증에 기초하여, 전자 장치(100)는 복호화된 펌웨어를 전자 장치(100)에 설치할 수 있다.
선택적으로, 부팅 시, 전자 장치는 펌웨어를 해싱하고 서명을 사용하여 해시를 확인함으로써 펌웨어를 검증할 수 있다. 이 방식에 의해, 펌웨어는 전자 장치가 부팅할 때마다 검증될 수 있다.
따라서, 도 6a의 방법론은 어떠한 단계에서도 암호화되지 않은 형태로 전자 장치(100) (또는 전자 장치(100)에 설치되기 전의 보안 모듈(110))에 어떤 비밀 정보도 삽입될 필요가 없도록 보장한다. OEM(160)은 전자 장치(100)에 설치되기 전에 전자 장치(100)에 제공되는 펌웨어가 검출되지 않고 수정될 수 있음을 보장할 수 있으며, 이는 예컨대, 제3자의 프로그래밍 하우스(180)를 전적으로 신뢰할 필요성을 감소시킨다. 기관 서버 시스템(130) 역시 펌웨어의 해시만을 수신하기 때문에 펌웨어를 보지도 않거나, 수정할 기회도 갖지 않는다.
선택적으로, 프로그래밍 하우스(180)는 전자 장치(100)로부터 디바이스 식별자(618에서)를 추출하고, 이를 기관 서버 시스템에 디바이스 식별자를 등록하는 단계를 착수할 수 있는 KMS(120)에 전달할 수 있다(620에서). 다음으로, 기관 서버 시스템(130)은, 예를 들어, 데이터베이스(210)에 이 정보를 저장함으로써, 디바이스 식별자를 KMS와 연관시킬 수 있다. 다른 예들에 있어서, 디바이스 식별자들은 이들을 서버 시스템(130)으로부터 수신한 후(606 내지 614 사이의 화살표) KMS(120)에 의해 등록될 수 있다. 상기 디바이스 식별자들의 등록은 전자 장치에 펌웨어를 제공하는 방법과 어떠한 방식으로도 연계될 필요가 없다. 예를 들어, OEM(160)은 보안 모듈(110)/마이크로컨트롤러(315)를 제공한 제조업자(150)에 의해 디바이스 식별자 파일이 제공될 수 있고, 등록을 위해 디바이스 식별자들을 KMS(120)에 수동으로 업로드할 수 있다.
기관 서버 시스템(130)에 디바이스 식별자를 등록함으로써, KMS(120)가 요청된 디바이스 식별자와 연관되어 있는지 확실히 하고, 추가적인 보안 검사의 역할을 수행한다. 기관 서버 시스템(130)은 다수의 키 관리 서버들과 통신 상태에 있을 수 있고, 디바이스 식별자를 KMS(120)와 그렇게 연동함으로써 정확한 OEM(160)이 특정 보안 모듈(110)을 갖는 장치를 제공하고 및 배치하고 있음을 확인할 수 있다.
디바이스 식별자를 등록하고 청구하는 과정은 다음과 같이 동작할 수 있다. 디바이스 식별자를 알고 있는 KMS(120)는 기관 서버 시스템(130)의 기관 서버와 보안 연결, 예를 들어, TLS 연결을 설정할 수 있다. 이어서, KMS(120)는 TLS 연결을 통해 하나 또는 다수의 디바이스 식별자를 기관 서버로 전송할 수 있다. 서버 시스템(130)은 데이터베이스(210)에 저장된 정보를 이용하여 하나 또는 다수의 디바이스 식별자를 검증할 수 있다. 특히, 서버 시스템(130)은 모든 디바이스 식별자가 실제 디바이스에 대응되고(즉, 이들이 데이터베이스(210)에 해당 엔트리를 가지고 있음), 수신된 디바이스 식별자 중 어느 것도 제2 KMS에 의해 이전에 주장되지 않았음을 확인할 수 있다. 상기 검사가 성공되면, 서버 시스템(130)은 데이터베이스(210)를 업데이트하여 상기 디바이스 식별자들을 주장한 KMS(120)가 상기 디바이스 식별자들과 연관되어 있다는 것, 즉 KMS(120)가 해당 디바이스 식별자들을 "소유"하고 있음을 나타낼 수 있다. 일단 이러한 등록이 완료되면, 성공 표시가 KMS(120)로 다시 전송될 수 있다. 상기한 성공 표시는, 예를 들어, KMS(120)가 전자 장치와 보안 TLS 연결을 수립하도록 할 수 있고, 및/또는 KMS(120) 상의 사용자 인터페이스에 상기 디바이스 식별자들(또는 추가적인 아이콘)이 나타나도록 할 수 있다. 그 다음에, KMS(120)와 기관 서버 시스템(130) 간의 보안 연결은 종료될 수 있다.
도 6b는 일 예에 따른 전자 장치(100)에 펌웨어를 안전하게 제공하는 다른 방법을 도시한다. 이 예에서, 도 1을 참조하면, OEM(160)은 전자 장치(100)에 펌웨어를 설치하고자 하며, 이러한 목적을 위해 제3자의 프로그래밍 하우스(180)를 채용한다. OEM(160)은 기관 서버 시스템(130)과 보안 통신이 가능한 키 관리 서버(120)에 접속한다.
보안 모듈(110)은 최종적으로 보안 모듈(110)이 설치되어 있는 전자 장치(100)를 식별하기 위해 사용될 디바이스 식별자(도 6b의 "DeviceID")를 생성하도록 구성된다. 디바이스 식별자는 등록 공개 키(EPK)의 기능, 바람직하게는 비선형 함수에 기초하여 결정된다. 디바이스 식별자를 EPK의 기능에 기반함으로써, 보안 모듈(110)의 신원은 보안 모듈(110)의 물리적 특성에 기반하므로, 도용될 수 없다.
도 6a에서와 같이, 단계 602에서, 제조 시, 보안 모듈(또는 마이크로컨트롤러의 다른 보안 메모리)에 공개 기관 키(PAK)가 제공된다.
단계 604에서, 서버 시스템(130)은 보안 모듈(110)에 대한 디바이스 식별자 및 펌웨어 공개 키(FPK)를 획득한다. 디바이스 식별자는 등록 공개 키(EPK)의 해시를 포함한다. 서버 시스템(130)은 상기 장치로부터 디바이스 식별자 및 FPK를 추출하거나, 예를 들어, 제조업자(150)로부터 그들을 수신할 수 있다.
보안 모듈(110)은 일단의 보안 모듈들 중 하나의 보안 모듈일 수 있다. 서버 시스템(130)은 이에 따라 많은 디바이스 식별자들 및 대응하는 FPK들을 획득할 수 있다. 단계 606에서, 서버 시스템(130)은 추후의 참조를 위해 디바이스 ID 및 해당 FPK를 데이터베이스(210)에 저장한다.
일단 서버 시스템(130)에 의해 디바이스 식별자 및 해당 FPK가 획득되어 저장되면, 보안 모듈(110)(또는 보안 모듈을 포함하는 MCU(315))은 전자 장치(100)에 설치하기 위해 OEM(160)으로 전달될 수 있다.
도 6a에서 기술된 시나리오와 마찬가지로, 도 6b의 시나리오에서, OEM(160)은 전자 장치(100)에 설치하기 위한 펌웨어를 설계한다. 펌웨어는 키 관리 서버(120)로 제공되며, 이 키 관리 서버(120)는 단계 608에서 펌웨어를 암호화하기 위한 서버 암호화 키(K)를 생성한다. 단계 610에서, KMS(120)는 서버 암호화 키(K)를 이용하여 펌웨어를 암호화한다.
KMS(120)는 서버 시스템(130)과의 보안 통신이 가능하고 상기 암호화된 펌웨어가 서버 시스템(130)으로 전송되며, 이것은 단계 612에서 비밀 기관 키(SAK)를 사용하여 암호화된 펌웨어에 서명한다. 따라서, 상기 서명된 암호화 펌웨어와 함께 공개 기관 키(PAK)를 사용할 주체라면, 상기 암호화 펌웨어가 서버 시스템(130)에 의해 서명되었음을 검증할 수 있을 것이다. 상기 서명된 암호화된 펌웨어는 선택적으로 KMS(120)를 통해 프로그래밍 하우스(180)로 전송된다.
기관 서버 시스템(130)은 또한 디바이스 식별자 ("DeviceID") 및 해당 FPK를 키 관리 서버(120)에 안전하게 통신한다. 복수의 보안 모듈(110)의 디바이스 식별자들 및 FPK들은 KMS(120)에 개별적으로 또는 대량으로, 예를 들어, 룩-업 테이블 형태로 통신될 수 있다.
단계 614에서, 상기 KMS는 FPK를 사용하여 서버 복호화 키(Inv(K))를 암호화한다. 상기 암호화된 서버 복호화 키(도 6b의 "Enc(FPK,Inv(K))라 표기됨) 및 해당 디바이스 식별자는 프로그래밍 하우스(180)로 전달된다. 예를 들어, 복수의 디바이스 식별자들 및 대응하는 암호화된 서버 복호화 키들을 포함하는 룩-업 테이블이 프로그래밍 하우스(180)에 제공될 수 있다.
단계 616에서, 소정의 전자 장치(100)에 대해, 프로그래밍 하우스(180)는 해당하는 암호화된 서버 복호화 키를 전자 장치(100)에 제공한다. 프로그래밍 하우스는 상기 서명된 암호화 펌웨어를 전자 장치(100)에 또한 더 제공한다.
보안 모듈(110)을 포함하는 전자 장치(100)는 펌웨어를 복호화하고 설치하는데 필요한 모든 정보를 포함한다. 상기 암호화된 서버 복호화 키(Enc(FPK,Inv(K)))가 FPK를 이용하여 암호화됨에 따라, 전자 장치(100)는 FSK를 이용하여 서버 복호화 키를 복호화할 수 있다. 상기 서명된 암호화 펌웨어가 SAK를 이용하여 서명됨에 따라, 전자 장치는 PAK를 이용하여 상기 서명된 암호화 펌웨어를 검증할 수 있다. 전자 장치(100)는 서버 복호화 키(Inv, K)를 이용하여 펌웨어를 복호화할 수 있다.
선택적으로, 프로그래밍 하우스(180)는 전자 장치(100)로부터 디바이스 식별자를 추출하고(618에서), 이를 기관 서버 시스템과 디바이스 식별자를 등록하는 단계들을 수행할 수 있는 KMS(120)에 전달할 수 있다(620에서). 다음으로, 기관 서버 시스템(130)은, 예를 들어, 데이터베이스(210)에 이 정보를 저장함으로써, 디바이스 식별자를 KMS와 연관시킬 수 있다. 다른 예들에 있어, 디바이스 식별자들은 서버 시스템(130)으로부터 이들을 수신한 후 KMS(120)에 의해 등록될 수 있다(606 내지 614 사이의 화살표). 디바이스 식별자들의 등록은 전자 장치에 펌웨어를 제공하는 방법과는 어떠한 방식으로도 연결될 필요가 없다. 예를 들어, OEM(160)은 보안 모듈들(110)/마이크로컨트롤러들(315)을 제공하는 제조업자(150)에 의해 디바이스 식별자 파일을 제공받고, 등록을 위해 상기 디바이스 식별자를 KMS(120)에 수동으로 업로드할 수 있다.
도 7a는 전자 장치(100)에 펌웨어를 제공하는 일반적인 방법(700)의 흐름도를 도시한다. 전자 장치(100)는 PUF(450)를 갖는 보안 모듈(110)을 포함하는 것으로 가정한다. 보안 모듈(110)은 PUF에 대한 제1 도전과 응답에 기초하여 펌웨어 키 쌍(FPK, FSK)을 설정하도록 구성되고, 상기 펌웨어 키 쌍은 펌웨어 공개 키(FPK) 및 펌웨어 비밀 키(FSK)를 포함한다. 전자 장치(100)에, 예를 들어, 전자 장치(100)의 보안 모듈(110)에 공개 키가 보안성 있게 내장되어 있는 경우를 추가로 가정한다. 상기 공개 키는 공개 키 및 대응하는 비밀 키를 포함하는 공개 키 쌍의 일부이다. 서명 키 쌍은 인증기관(140)에만 알려진 공개 기관 키와 비밀 기관 키를 포함하는 기관 키 쌍일 수 있다. 상기 방법(700)은, 예를 들어, 키 관리 서버(120)에 의해 수행될 수 있다.
단계 710에서, 상기 방법(700)은 공개 키 및 비밀 키를 포함하는 서명 키 쌍의 비밀 키를 이용하여 펌웨어의 해시를 서명하도록 하는 동작을 포함하고, 여기서 상기 공개 키는 전자 장치에 안전하게 내장된다.
일부 실시예들에 있어, 상기 키 관리 서버(120)는 펌웨어의 해시를 서명 키 쌍의 비밀 키로 서명하도록 구성될 수 있다. 다만, 다른 실시예(도 6a에 도시된 것과 같은)에서, 키 관리 서버(120)는 기관 서버 시스템(130)의 기관 서버와 보안 연결을 수립하도록 구성될 수도 있다. 그 다음에, KMS(120)는 펌웨어의 해시를 기관 서버에 전달하고, 서명된 펌웨어의 해시에 대한 서명을 수신할 수 있는 바, 여기서 상기 펌웨어의 해시는 서명키 쌍의 비밀 키를 이용하여 서명된다. 즉, 상기 서명 키 쌍은 공개 기관 키(PAK) 및 비밀 기관 키(SAK)를 포함할 수 있으며, 상기 서버 시스템(130)은 펌웨어의 해시에 SAK로써 서명할 수 있다.
단계 720에서, 상기 방법(700)은 서버 암호화 키(100)를 사용하여 펌웨어 및 서명을 암호화하는 동작을 포함한다. 상기 서버 암호화 키는 적어도 부분적으로는 사용자 자격증명(credential), 예를 들어, 사용자의 비밀번호(예컨대, OEM의 패스워드)에 기반할 수 있다.
단계 725에서, 상기 방법(700)은 FPK를 사용하여 서버 복호화 키를 암호화하는 동작을 포함한다. 상기 서버 복호화 키는 암호화된 펌웨어 및 암호화된 서명을 복호화하기 위한 것이다.
단계 730에서, 상기 방법(700)은 암호화된 펌웨어, 암호화된 서명 및 암호화된 서버 복호화 키를 전자 장치에 설치하기 위해 제3자에게 통신하는 동작을 포함한다. 제3자는, 예를 들어, 프로그래밍 하우스(180)의 서버 또는 KMS 및 기관 서버 시스템(130) 외부의 임의의 다른 컴퓨팅 장치를 포함할 수 있다.
상기 FPK는 기관 서버(130)로부터 보안 연결을 통해 수신될 수 있가나(도 6a와 같이), 또는 다른 방법으로 수신될 수 있다. 예를 들어, FPK는 KMS(120)에 직접 업로드 되거나, 일부 다른 정보 소스로부터 수신될 수 있다.
도 7b는 전자 장치(100)에 펌웨어를 제공하는 일반적인 방법(750)의 흐름도를 도시한다. 전자 장치(100)는 PUF(450)를 갖는 보안 모듈(110)을 포함하는 것으로 가정한다. 보안 모듈(110)은 PUF에 대한 제1 도전과 응답에 기초하여 펌웨어 키 쌍(FPK, FSK)를 설정하도록 구성된다. 전자 장치(100)의 보안 모듈(110), 예를 들어, 전자 장치(100)의 보안 모듈(110)에 공개 키가 보안성 있게 내장되어 있는 경우를 추가로 가정한다. 상기 공개 키는 공개 키 및 해당 비밀 키를 포함하는 서명 키 쌍의 일부이다. 서명 키 쌍은 인증기관(140)에게만 알려진 공개 기관 키와 비밀 기관 키를 포함하는 기관 키 쌍일 수 있다. 상기 방법(750)은, 예를 들어, 키 관리 서버(120)에 의해 수행될 수 있다.
단계 760에서, 상기 방법(750)은 서명 키 쌍의 비밀 키를 사용하여 암호화된 형태의 펌웨어가 서명되도록 하는 동작을 포함한다. 펌웨어는 서버 암호화 키(K)를 이용하여 암호화된다. 서버 암호화 키는 사용자 자격증명(user credentials), 예를 들어, 사용자의 비밀번호(예컨대, OEM의 패스워드)에 적어도 부분적으로 기초할 수 있다.
예를 들어, 키 관리 서버(120)는 암호화되지 않은 형태의 펌웨어를 수신하고, 이어서 서버 암호화 키(K)를 사용하여 펌웨어를 암호화할 수 있거나(도 6b에서와 같이), 또는 암호화된 형태의 펌웨어를 직접 수신할 수 있다. 일부 실시예들에서, 키 관리 서버(120)는 암호화된 형태의 펌웨어를 서명 키 쌍의 비밀 키로 서명하도록 구성될 수 있다. 다만, 다른 실시예들(도 6b에 도시된 것과 같은)에서, 키 관리 서버(120)는 기관 서버 시스템(130)의 기관 서버와 보안 연결을 수립하도록 구성될 수 있다. KMS(120)는 이어서 기관 서버에 암호화된 형태의 펌웨어를 전달하고, 서명된 암호화된 형태의 펌웨어를 수신할 수 있는데, 여기서 상기 서명된 암호화된 형태의 펌웨어는 기관 키 쌍의 비밀 기관 키를 이용하여 서명된다.
단계 770에서, 상기 방법(750)은 전자 장치(100)에 설치하기 위해 상기 서명된 암호화된 형태의 펌웨어를 제3자에게 통신하는 단계를 포함한다. 제3자는 예를 들어, 프로그래밍 하우스(180)의 서버 또는 KMS 및 기관 서버 시스템(130) 외부의 임의의 다른 컴퓨팅 장치를 포함할 수 있다.
단계 780에서, 상기 방법(750)은 서버 복호화 키의 암호화된 형태를 전자 장치에 설치하기 위해 제3자에게 통신하는 동작을 포함하되, 상기 서버 복호화 키는 FPK를 이용하여 암호화된다. 물론, 상기 서버 복호화 키의 암호화된 형태는 상기 서명된 암호화된 형태의 펌웨어가 제3자에게 통신되기 전에, 그와 동시에, 또는 그 후에 제3자에게 통신될 수도 있다.
상기 FPK는 기관 서버(130)으로부터 보안 연결을 통해 수신될 수 있거나(도 6a와 같이). 또는 다른 방법으로 수신될 수 있다. 예를 들어, FPK는 KMS(120)에 직접 업로드 되거나, 일부 다른 정보 소스로부터 수신될 수 있다.
도 8a는 전자 장치(100)에 대한 펌웨어 인증을 위한 일반적인 방법(800)의 흐름도를 도시한다. 전자 장치(100)는 PUF(450)를 갖는 보안 모듈(110)을 포함하는 것으로 가정한다. 보안 모듈(110)은 PUF에 대한 제1 도전과 응답에 기초하여 펌웨어 키 쌍(FPK, FSK)을 설정하고, PUF에 대한 제2 챌린지 및 응답에 기초하여 등록 키 쌍(EPK, ESK)를 설정하도록 배열된다. 기관 키 쌍의 공개 기관 키(PAK)는 전자 장치(100), 예를 들어, 상기 전자 장치의 보안 모듈(110)에 이미 보안성 있게 내장되어 있다고 가정한다. 기관 키 쌍은 PAK 및 대응하는 비밀 기관 키(SAK)를 포함한다. 상기 방법은 예를 들어, 기관 서버 시스템(130)의 하나 또는 다수의 서버들에 의해 수행될 수 있다.
단계 810에서, 상기 방법(800)은 서버로부터 전자 장치(100)에 설치하기 위한 펌웨어의 해시를 보안 통신 채널을 통해 수신하는 동작을 포함한다. 예를 들어, 기관 서버는 도 6a와 같이 TLS 연결을 통해 KMS(120)로부터 암호화된 펌웨어를 수신할 수 있다.
단계 820에서, 상기 방법(800)은 공개 기관 키(PAK) 및 비밀 기관 키(SAK)를 포함하는 기관 키 쌍의 비밀 기관 키를 이용하여 펌웨어의 해시에 서명하는 동작을 포함하되, 여기서 상기 공개 기관 키는 상기 전자 장치에 안전하게 내장된다. 임의의 적합한 전자 서명 방식이 활용될 수 있다.
기관 서버 시스템(130)이 상기 방법(800)을 수행하는 경우, 암호화된 펌웨어에 서명하는 기관 서버는 단계 810을 수행한 기관 서버와 동일하거나 상이할 수 있다.
단계 830에서, 상기 방법(800)은 전자 장치에 설치하기 위하여 펌웨어의 해시를 통해 서명의 통신을 제3자에게 개시하는 동작을 포함한다. 예를 들어, 제3자는 프로그래밍 하우스(180) 또는 기관 서버 시스템(130) 및 암호화된 펌웨어가 그로부터 수신된 서버(예컨대, KMS(120))를 넘어서는 임의의 개체를 포함할 수 있다. 예를 들어, 서버 시스템(130)은 암호화 및 제3자에게 전달을 위해 KMS(120)에 서명을 전달하거나(도 6b에서와 같이), 암호화되지 않은 형태로 서명을 제3자에게 직접 전달할 수 있다.
단계 840에서, 상기 방법(800)은 서버(예컨대, KMS(120))로 보안 통신 채널을 통해, 전자 장치(100)를 식별하기 위한 FPK 및 관련 디바이스 식별자를 전송하는 동작을 포함하되, 상기 디바이스 식별자는 EPK의 기능을 포함한다. 상기 FPK 및 디바이스 식별자는 룩-업 테이블에서 서버에 제공될 수 있다. 상기 디바이스 식별자 및 FPK는, 예를 들어, OEM(160)으로 선적하기 전에 보안 모듈(110)로부터 그들을 추출하거나, 또는 다른 소스로부터 정보를 수신함으로써, 임의의 적절한 방법으로 획득되었을 수 있다. 단계(830)는 단계(840) 이전에, 그와 동시에, 또는 그 후에 수행될 수 있다.
상기 방법은, 상기 전자 장치가 프로그램 된 후, 서버로부터 상기 디바이스 식별자의 등록하기 위한 요청을 수신하는 동작, 및 서버를 상기 디바이스 식별자와 연관시키는 동작을 더 포함할 수 있다.
도 8b는 전자 장치(100)에 대한 펌웨어 인증을 위한 일반적인 방법(850)의 흐름도를 도시한다. 전자 장치(100)는 PUF(450)를 갖는 보안 모듈(110)을 포함하는 것으로 가정한다. 보안 모듈(110)은 PUF에 대한 제1 도전과 응답에 기초하여 펌웨어 키 쌍(FPK, FSK)를 설정하고, PUF에 대한 제2 챌린지 및 응답에 기초하여 등록 키 쌍(EPK, ESK)를 설정하도록 배열된다. 기관 키 쌍의 공개 기관 키(PAK)는 전자 장치(100), 예를 들어, 상기 전자 장치의 보안 모듈(110)에 이미 보안성 있게 내장되어 있다고 가정한다. 상기 기관 키 쌍은 PAK 및 대응하는 비밀 기관 키(SAK)를 포함한다. 상기 방법은, 예를 들어, 기관 서버 시스템(130)의 하나 또는 다수의 서버들에 의해 수행될 수 있다.
단계 860에서, 상기 방법(850)은 전자 장치(100)에 설치하기 위한 암호화된 펌웨어를 서버로부터 보안 통신 채널을 통해 수신하는 동작을 포함한다. 예를 들어, 기관 서버는 도 6b와 같이 TLS 연결을 통해 KMS(120)로부터 상기 암호화된 펌웨어를 수신할 수 있다.
단계 870에서, 상기 방법(850)은 기관 키 쌍의 비밀 기관 키 SAK를 사용하여 암호화된 펌웨어에 서명하는 동작을 포함한다. 임의의 적합한 전자 서명 방식이 활용될 수 있다.
기관 서버 시스템(130)이 상기 방법(850)을 수행하는 경우, 상기 암호화된 펌웨어에 서명하는 기관 서버는 단계 860을 수행한 기관 서버와 동일하거나 상이할 수 있다.
단계 880에서, 상기 방법(850)은 서명된 암호화 펌웨어를 전자 장치에 설치하기 위해 제3자에게 통신을 개시하는 동작을 포함한다. 예를 들어, 제3자는 프로그래밍 하우스(180) 또는 기관 서버 시스템(130) 및 암호화 펌웨어가 그로부터 수신된 서버(예컨대, KMS(120))를 넘어서는 임의의 엔티티를 포함할 수 있다. 예를 들어, 서버 시스템(130)은 서명된 암호화 펌웨어를 제3자에게 전달하기 위해 KMS(120)에 전달하거나, 상기 서명된 암호화 펌웨어를 제3자에게 직접 전달할 수 있다.
단계 890에서, 상기 방법(850)은 서버(예컨대, KMS(120))로 보안 통신 채널을 통해, 전자 장치(100)를 식별하기 위해 FPK 및 관련 디바이스 식별자를 전송하는 동작을 포함하되, 상기 디바이스 식별자는 EPK의 기능을 포함한다. 상기 FPK 및 디바이스 식별자는 룩업 테이블에서 서버에 제공될 수 있다. 상기 디바이스 식별자 및 FPK는, 예를 들어, OEM(160)으로 선적하기 전에 보안 모듈(110)로부터 그들을 추출하거나, 또는 다른 소스로부터 정보를 수신함으로써 임의의 적절한 방식으로 획득되었을 수 있다. 단계 880은 단계 890의 이전에, 그와 동시에, 또는 그 후에 수행될 수 있다.
상기 방법은, 상기 전자 장치가 프로그램 된 후, 상기 서버로부터 상기 디바이스 식별자의 등록 요청을 수신하는 동작 및 상기 서버를 상기 디바이스 식별자와 연관시키는 동작을 더 포함할 수 있다.
도 9a는 전자 장치(100)의 성능을 위한 일반적인 방법(900)의 흐름도를 도시한다. 전자 장치(100)는 물리적 복제방지 기능(PUF)(450)을 갖는 보안 모듈(110)을 포함하고, 상기 보안 모듈(110)은 PUF에 대한 제1 도전과 응답에 기초하여 펌웨어 키 쌍(FPK, FSK)를 설정하도록 구성된다.
단계 910에서, 상기 방법(900)은, FSK를 이용하여, 암호화된 서버 복호화 키를 복호화하는 동작을 포함하고, 여기서 상기 서버 복호화 키는 FPK를 이용하여 암호화된다.
단계 915에서, 상기 방법(900)은 상기 복호화된 서버 복호화 키를 사용하여, 펌웨어의 해시에 대하여 서명 및 펌웨어를 복호화하는 동작을 포함한다.
단계 920에서, 상기 방법(900)은 전자 장치에 안전하게 내장된 공개 기관 키를 이용하여, 인증기관(140)과 같은 신뢰 기관에 의해 펌웨어의 해시가 서명되었음을 입증하는 동작을 포함한다. 공개 기관 키는 신뢰 기관의 소유인 공개 기관 키와 상응하는 비밀 기관 키를 포함하는 기관 키 쌍의 일부이다. 단계(910)는 단계(920) 이전에, 그와 동시에, 또는 그 후에 수행될 수 있다.
단계 930에서, 상기 방법(900)은, 상기 입증에 기초하여, 복호화된 펌웨어를 전자 장치(100)에 설치하는 동작을 포함한다.
도 9b는 전자 장치(100)의 성능을 위한 일반적인 방법(950)의 다른 흐름도를 도시한다.
단계 960에서, 상기 방법(950)은 FSK를 이용하여, 암호화된 서버 복호화 키를 복호화하는 단계를 포함하되, 여기서 상기 서버 복호화 키는 FPK를 이용하여 암호화된다.
단계 970에서, 상기 방법(950)은, 전자 장치(100)에 안전하게 내장된 공개 기관 키를 이용하여, 암호화된 형태의 펌웨어가 인증기관(140)과 같은 신뢰 기관에 의해 인증되었음을 검증하는 동작을 포함한다. 공개 기관 키는 신뢰 기관의 소유인 공개 기관 키와 그에 상응하는 비밀 기관 키를 포함하는 기관 키 쌍의 일부이다. 단계 960은 단계 970의 이전에, 동시에, 또는 그 후에 수행될 수 있다.
단계 980에서, 상기 방법(950)은, 상기 복호화된 서버 복호화 키를 이용하여, 전자 장치(100)에 설치하기 위한 펌웨어를 복호화하는 동작을 포함한다.
도 6a 내지 도 9b와 관련하여 전술한 방법은 펌웨어가 전자 장치에 안전하게 제공될 수 있게 한다. 바람직하게는, 펌웨어는 인증기관(140) 또는 프로그래밍 하우스(180) 중 어느 하나에 암호화되지 않은 형태로 제공되지 않는다. 전자 장치(100)에 펌웨어를 일단 제공되면, 상기 전자 장치는 등록을 시작할 수 있다.
하나 또는 다수의 루트 인증서들은 제조 시점에서 전자 장치(100)에 설치될 수도 있고, 추가 보안을 위해 도 6 내지 도 9와 관련하여 전술한 방법들을 사용하여 펌웨어와 함께 또는 펌웨어의 일부로서 전자 장치(100)에 제공될 수도 있다.
도 10은 몇몇 예들에 따른 컴퓨터 판독 가능 매체(1700)를 도시한다.
상기 컴퓨터 판독 가능 매체(1700)는 유닛들을 저장하며, 각각의 유닛은, 실행 시에, 프로세서(1720) 또는 다른 처리/컴퓨팅 장치 또는 장치가 특정한 동작들을 수행하도록 하는 명령들(1710)을 포함한다.
예를 들어, 상기 명령들(1710)은, 프로세서(1720)가 공개 키와 비밀 키를 포함하는 키 쌍의 비밀 키를 이용하여 상기 펌웨어의 해시가 서명되도록 할 수 있으며, 여기서 상기 공개 키는 상기 전자 장치에 안전하게 내장된다. 상기 명령들(1710)은, 상기 프로세서(1720)가, 서버 암호화 키를 이용하여 해시를 통해 상기 펌웨어 및 상기 서명을 상기 암호화하도록 할 수 있다. 상기 명령들(1710)은 상기 프로세서(1720)가 상기 FPK를 이용하여 서버 복호화 키를 암호화하도록 추가로 야기할 수 있으며, 상기 서버 복호화 키는 상기 암호화된 펌웨어 및 상기 암호화된 서명을 복호화하기 위한 것이다. 상기 명령들(1710)은 상기 프로세서(1720)가 상기 암호화된 펌웨어, 상기 암호화된 서명, 및 상기 암호화된 서버 복호화 키를 상기 전자 장치에 설치하기 위해 제3자에게 통신하도록 추가로 야기할 수 있다.
다른 예로서, 상기 명령들(1710)은 프로세서(1720)가 공개 키 및 상기 비밀 키를 포함하는 암호화 키 쌍의 비밀 키를 이용하여 암호화된 형태의 펌웨어를 서명하도록 하되, 여기서 상기 공개 키는 전자 장치에 안전하게 내장되고, 펌웨어는 서버 암호 키를 사용하여 암호화된다. 상기 명령들(1710)은 상기 프로세서(1720)가 상기 서명된 암호화된 형태의 펌웨어를 상기 전자 장치에 설치하기 위해 제3자에게 통신을 개시하도록 추가로 야기할 수 있다. 상기 명령들(1710)은 상기 프로세서(1720)가 상기 전자 장치에 설치하기 위해 암호화된 형태의 서버 복호화 키를 제3자에게 전달하기를 개시하도록 야기할 수 있고, 여기서 상기 서버 복호화 키는 상기 암호화된 형태의 펌웨어를 복호화하기 위한 것이며, 상기 서버 복호화 키는 펌웨어 공개 키(FPK)를 사용하여 암호화된다.
예를 들어, 상기 명령들(1710)은 프로세서가 공개 기관 키 및 비밀 기관 키를 포함하는 기관 키 쌍의 비밀 기관 키를 이용하여 상기 펌웨어의 해시에 서명하도록 야기할 수 있으며, 여기서 상기 공개 기관 키는 전자 장치의 보안 모듈에 내장되고, 상기 펌웨어의 해시는 서버로부터 보안 통신 채널을 통해 수신된다. 상기 명령들(1710)은 상기 프로세서(1720)가 상기 전자 장치에 설치하기 위해 상기 펌웨어의 해시를 통해 상기 서명을 제3자에게 통신을 개시하도록 추가로 야기할 수 있다. 상기 명령들(1710)은 상기 프로세서(1720)가, 보안 통신 채널을 통해, 룩-업 테이블을 상기 서버로 전송하도록 더 설정될 수 있으며, 상기 룩-업 테이블은 펌웨어 공개 키(FPK) 및 상기 전자 장치를 식별하기 위한 연관 디바이스 식별자를 나타내고, 상기 디바이스 식별자는 등록 공개 키(EPK)의 기능을 포함한다.
다른 예에 있어, 상기 명령들(1710)은, 상기 프로세서가, 전자 장치의 보안 모듈에 내장된 공개 기관 키와 비밀 기관 키를 포함하는 기관 키 쌍의 비밀 기관 키를 이용하여 암호화된 펌웨어에 서명하도록 할 수 있고, 여기서 상기 암호화된 펌웨어는 서버로부터 보안 통신 채널을 통해 수신된다. 상기 명령들(1710)은, 상기 프로세서(1720)가 전자 장치에 설치하기 위해 상기 서명된 암호화 펌웨어의 제3자에게의 통신을 개시하도록 추가로 야기할 수 있다. 상기 명령들(1710)은, 상기 프로세서(1720)가 보안 통신 채널을 통해, 룩-업 테이블을 서버로 전송하도록 추가로 야기할 수 있으며, 상기 룩-업 테이블은 펌웨어 공개 키(FPK) 및 상기 전자 장치를 식별하기 위한 연관 디바이스 식별자를 포함하며, 상기 디바이스 식별자는 등록 공개 키(EPK)의 기능을 포함한다.
예를 들어, 상기 명령들(1710)은, 프로세서(1720)가 펌웨어 비밀 키(FSK)를 이용하여, 암호화된 서버 복호화 키를 복호화 하도록 야기할 수 있고, 여기서 상기 서버 복호화 키는 상기 펌웨어 공개 키(FPK)를 이용하여 암호화된다. 상기 명령들(1710)은, 프로세서(1720)가, 상기 복호화된 서버 복호화 키를 이용하여, 암호화된 펌웨어 및 상기 펌웨어의 해시에 대한 서명을 복호화하도록 추가로 야기할 수 있다. 상기 명령들(1710)은, 프로세서(1720)가, 상기 전자 장치에 안전하게 내장된 공개 기관 키를 이용하여, 상기 펌웨어의 해시가 신뢰 기관에 의해 서명되었음을 검증하도록 추가로 야기할 수 있다. 상기 명령들(1710)은, 프로세서(1720)가, 상기 검증에 기반하여, 상기 복호화된 펌웨어를 상기 전자 장치에 설치하도록 추가로 야기할 수 있다.
예를 들어, 상기 명령들(1710)은, 프로세서(1720)가, 펌웨어 비밀 키(FSK)를 이용하여, 암호화된 서버 복호화 키를 복호화하도록 야기할 수 있고, 여기서 상기 서버 복호화 키는 펌웨어 공개 키(FPK)를 이용하여 암호화되며, 이것은 FSK와 함께 펌웨어 키 쌍을 형성한다. 상기 명령들(1710)은, 프로세서(1720)가, 공개 기관 키를 이용하여, 암호화된 펌웨어가 신뢰 기관에 의해 인증되었음을 검증하도록 추가로 야기할 수 있다. 상기 명령들(1710)은, 프로세서(1720)가, 상기 복호화된 서버 복호화 키를 이용하여, 상기 전자 장치에 설치하기 위한 펌웨어를 복호화하도록 추가로 야기할 수 있다.
하나 또는 다수의 컴퓨터 판독 가능 매체(들)의 임의의 조합이 활용될 수 있다. 상기 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 신호 매체 또는 컴퓨터 판독 가능 저장 매체일 수 있다. 컴퓨터로 판독 가능한 저장 매체는, 예를 들면, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 기기, 또는 이들의 임의의 적절한 조합일 수 있으나, 이들에 한정되는 것은 아니다. 컴퓨터 판독 가능 매체의 보다 구체적인 예들(불완전한 목록임)은 다음을 포함할 수 있다: 하나 또는 다수의 배선들을 갖는 전기적 연결, 휴대용 컴퓨터 디스켓, 하드 디스크, RAM(random access memory), ROM(read-only memory), 소거 가능한 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 CDROM(portable compact disc read-only memory), 광 저장 장치, 자기 저장 장치, 또는 이들의 임의의 적절한 조합. 본 문서의 맥락에서, 컴퓨터 판독 가능한 저장 매체는, 명령 실행 시스템, 장치, 또는 기기에 의해 또는 이들과 조합하여 사용하기 위한 프로그램을 포함하거나, 저장할 수 있는 임의의 유형의 매체일 수 있다.
컴퓨터 판독 가능한 신호 매체는, 예를 들면, 기저대역에서 또는 반송파의 일부로서 컴퓨터 판독 가능한 프로그램 코드가 그에 구체화된 전파된 데이터 신호를 포함할 수 있다. 이러한 전파된 신호는 전자기적, 광학적, 또는 이들의 임의의 적절한 조합을 포함하는 다양한 형태 중 어느 것을 취할 수 있지만, 이들에 한정되지 않는다. 컴퓨터 판독 가능한 신호 매체는 컴퓨터 판독 가능 저장 매체가 아니며, 명령 실행 시스템, 장치, 또는 기기에 의해 또는 그와 결부하여 사용되기 위한 프로그램을 통신, 전파, 또는 전달할 수 있는 임의의 컴퓨터 판독 가능 매체일 수 있다.
컴퓨터 판독 가능 매체에 구현된 컴퓨터 코드는 무선, 유선, 광섬유 케이블, 무선주파수(RF) 등을 포함하는 임의의 적절한 매체 또는 이들의 임의의 적절한 조합을 이용하여 전송될 수 있으나, 이에 한정되는 것은 아니다.
본 발명의 양태들을 위한 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 Java™, Smalltalk™, C++ 등과 같은 객체 지향 프로그래밍 언어, 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들과 같은 종래의 절차적 프로그래밍 언어들을 포함하는 또는 다수의 프로그래밍 언어들의 임의의 조합으로 작성될 수 있다. 상기 프로그램 코드는 전체적으로 사용자의 컴퓨터 상에서, 부분적으로 사용자의 컴퓨터 상에서, 독립형 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터 상에서, 그리고 부분적으로 원격 컴퓨터 상에서, 또는 전체적으로 원격 컴퓨터 또는 서버 상에서 실행될 수 있다. 후자의 시나리오의 경우, 원격 컴퓨터는 LAN(local area network) 또는 WAN(wide area network)을 포함하는 임의의 유형의 네트워크를 통하여 사용자의 컴퓨터와 연결되거나, 외부 컴퓨터와 연결될 수 있다(예를 들어, 인터넷 서비스(Internet 서비스 제공업체)를 이용하여 인터넷을 통하여).
본 명세서에 기재된 방법들의 많은 변형 예는 당해 전문가에게 명백할 것이다.
본 명세서에 개시된 특징들(첨부한 청구항, 요약서 및 도면을 포함한다)은 달리 명시적인 언급이 없는 한, 동일 또는 유사한 목적을 수행하는 대안적 특징들로 대체될 수 있다. 따라서, 달리 명시적인 언급이 없는 한, 개시된 각각의 특징은 동등하거나 유사한 특징들의 단지 일반적인 일련의 예이다.
본 발명은 전술한 임의의 실시예들의 세부 사항으로 한정되지 않는다. 본 발명은 본 발명에 개시된 특징들(첨부된 청구항, 요약서 및 도면을 포함한다) 중의 어떤 신규한 특징, 신규한 조합, 또는 그렇게 개시된 임의의 방법 또는 과정의 단계들 중 어떤 신규한 특징, 또는 신규한 조합에까지 확장된다. 또한, 청구범위는 단지 전술한 실시예들만 커버하는 것으로 해석되어서는 안 될 것이며, 해당 청구범위 내에 속하는 모든 실시예들을 포괄하는 것으로 해석되어야 할 것이다.

Claims (24)

  1. 전자 장치에 펌웨어를 제공하는 방법으로서, 상기 전자 장치는 물리적 복제방지 기능(physical unclonable function: PUF)을 갖는 보안 모듈을 포함하고, 상기 보안 모듈은 상기 PUF에 대한 제1 도전과 응답에 기초하여, 펌웨어 키 쌍(FPK, FSK)을 설정하도록 구성되고, 상기 펌웨어 키 쌍은 펌웨어 공개 키(firmware public key: FPK) 및 펌웨어 비밀 키(firmware secret key: FSK)를 포함하는 것을 포함하는 방법에 있어서, 상기 방법은:
    서명을 획득하기 위해 기관 키 쌍의 비밀 키를 사용하여 펌웨어의 해시가 서명되도록 야기하는 동작으로서, 상기 기관 키 쌍은 공개 키와 비밀 키를 포함하며, 상기 공개 키는 전자 장치에 안전하게 내장되어 있는 것인 동작;
    서버 암호화 키를 사용하여 펌웨어 및 서명을 암호화하는 동작;
    상기 FSK를 사용하여, 암호화된 펌웨어 및 암호화된 서명을 복호화하기 위한 서버 복호화 키를 암호화하는 동작; 및
    상기 암호화된 펌웨어, 상기 암호화된 서명 및 상기 암호화된 서버 복호화 키를 전자 장치에 설치하기 위해 제3자에게 전달하는 동작을 포함하는 방법.
  2. 제1항에 있어서,
    상기 방법은 펌웨어를 수신하고 펌웨어에 대한 해시 함수를 수행하여 상기 펌웨어의 해시를 생성하는 동작을 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 방법은 펌웨어의 해시를 수신하는 동작을 더 포함하는 방법.
  4. 선행하는 청구항들 중의 어느 하나에 있어서,
    상기 펌웨어의 해시가 서명되도록 하는 동작은 상기 펌웨어의 해시에 서명하는 동작을 더 포함하는 방법.
  5. 제1항 내지 제3항 중 어느 하나에 있어서,
    상기 펌웨어의 해시가 서명되도록 하는 동작은 상기 펌웨어의 해시를 신뢰 기관에 전송하고, 상기 신뢰 기관으로부터 서명을 수신하는 동작을 포함하는 방법.
  6. 선행하는 청구항들 중의 어느 하나에 있어서,
    상기 방법은 신뢰 기관으로부터 FPK를 수신하는 동작을 더 포함하는 방법.
  7. 선행하는 청구항들 중의 어느 하나에 있어서,
    상기 서버 암호화 키가 상기 서버 복호화 키와 동일한 것인 방법.
  8. 선행하는 청구항들 중의 어느 하나에 있어서,
    상기 보안 모듈은 PUF에 대한 제2 챌린지 및 응답에 기초하여 등록 키 쌍(EPK, ESK)을 설정하도록 더 구성되고, 상기 등록 키 쌍은 등록 공개 키(EPK) 및 등록 비밀 키(ESK)를 포함하며; 및
    상기 방법은 제3자에게 디바이스 식별자를 통신하는 동작을 더 포함하되, 상기 디바이스 식별자는 상기 EPK의 기능을 포함하는 것인 방법.
  9. 제8항에 있어서,
    상기 디바이스 식별자는 신뢰 기관으로부터 수신되는 것인 방법.
  10. 선행하는 청구항들 중의 어느 하나에 있어서, 상기 방법은:
    상기 펌웨어가 전자 장치에 설치된 후, 디바이스 식별자를 수신하고 상기 디바이스 식별자를 신뢰 기관에 등록하는 동작을 더 포함하는 방법.
  11. 하나 또는 다수의 프로세서들에 의해 실행될 때, 상기 하나 또는 다수의 프로세서들이 선행하는 청구항들 중의 어느 하나에 따른 방법을 수행하도록 하는 명령들이 저장된 컴퓨터 판독 가능 매체.
  12. 컴퓨팅 장치에 있어서,
    하나 또는 다수의 프로세서들; 및
    상기 하나 또는 다수의 프로세서들에 의해 실행될 때, 상기 하나 또는 다수의 프로세서들이 제1항 내지 제10항 중의 어느 하나에 따른 방법을 실행하도록 하는 명령들이 저장된 하나 또는 다수의 메모리들을 포함하는 컴퓨팅 장치.
  13. 전자 장치를 위한 펌웨어를 인증하는 방법으로서, 상기 전자 장치는 물리적 복제방지 기능(PUF)을 갖는 보안 모듈을 포함하고, 상기 보안 모듈은 PUF에 대한 제1 도전과 응답에 기초하여 펌웨어 키 쌍(FPK, FSK)을 설정하고 PUF에 대한 제2 도전과 응답에 기초하여 등록 키 쌍(EPK, ESK)을 설정하도록 구성하되, 상기 펌웨어 키 쌍은 펌웨어 공개 키(FPK)와 펌웨어 비밀 키(FSK)를 포함하며, 상기 등록 키 쌍(EPK, ESK)은 등록 공개 키(EPK)와 등록 비밀 키(ESK)를 포함하는 방법에 있어서, 상기 방법은:
    서버로부터 보안 통신 채널을 통해 전자 장치에 설치하기 위한 펌웨어의 해시를 수신하는 동작;
    공개 기관 키(PAK)와 비밀 기관 키(SAK)를 포함하는 기관 키 쌍의 비밀 기관 키를 사용하여 상기 펌웨어의 해시에 서명하되, 상기 공개 기관 키는 전자 장치에 안전하게 내장되어 있는 것인 동작;
    전자 장치에 설치하기 위해 제3자에게 해시를 통해 서명의 통신을 개시하는 동작; 및
    보안 통신 채널을 통해 서버로, 상기 전자 장치를 식별하기 위한 관련 디바이스 식별자 및 상기 FPK를 전송하되, 상기 디바이스 식별자는 EPK의 기능을 포함하는 동작을 포함하는 방법.
  14. 제13항에 있어서,
    상기 방법은 상기 보안 모듈로부터 디바이스 식별자를 추출하는 동작을 더 포함하는 방법.
  15. 제13항 또는 제14항에 있어서,
    상기 방법은 상기 보안 모듈로부터 상기 FPK를 추출하는 동작을 더 포함하는 방법.
  16. 제13항 또는 제14항에 있어서,
    상기 방법은 상기 디바이스 식별자 및 FPK를 수신하는 동작을 더 포함하는 방법.
  17. 제13항 내지 제16항 중 어느 하나에 있어서,
    상기 방법은 서버에 상기 디바이스 식별자를 등록하기 위한 요청을 수신하는 동작을 더 포함하는 방법.
  18. 제13항 내지 제17항 중 어느 하나에 있어서,
    상기 방법은 찾아보기(룩-업) 테이블에 상기 디바이스 식별자 및 상기 FPK를 입력하는 동작을 더 포함하는 방법.
  19. 하나 또는 다수의 프로세서에 의해 실행될 때, 상기 하나 또는 다수의 프로세서가 제13항 내지 제18항 중 어느 하나에 따른 방법을 수행하도록 하는 명령들이 저장된 컴퓨터 판독 가능 매체.
  20. 컴퓨팅 장치에 있어서,
    하나 또는 다수의 프로세서들; 및
    상기 하나 또는 다수의 프로세서들에 의해 실행될 때, 상기 하나 또는 다수의 프로세서들이 제13항 내지 제18항 중 어느 하나에 따른 방법을 실행하도록 하는 명령들이 저장된 하나 또는 다수의 메모리를 포함하는 컴퓨팅 장치.
  21. 전자 장치에 의한 수행 방법으로서, 상기 전자 장치는 물리적 복제방지 기능(PUF)을 갖는 보안 모듈을 포함하고, 상기 보안 모듈은 상기 PUF에 대한 제1 도전과 응답에 기초하여 펌웨어 키 쌍(FPK, FSK)을 설정하도록 구성되고, 상기 펌웨어 키 쌍은 펌웨어 공개 키(FPK) 및 펌웨어 비밀 키(FSK)를 포함하는 방법에 있어서, 상기 방법은:
    FSK를 사용하여, 암호화된 서버 복호화 키를 복호화하되, 상기 서버 복호화 키는 FPK를 사용하여 암호화되는 것인 동작;
    상기 복호화된 서버 복호화 키를 사용하여, 상기 펌웨어의 해시를 통해 펌웨어 및 서명을 복호화하는 동작;
    전자 장치에 안전하게 내장된 공개 기관 키를 사용하여, 상기 펌웨어의 해시가 신뢰 기관에 의해 서명되었음을 검증하는 동작;
    상기 검증에 기초하여, 상기 복호화된 펌웨어를 전자 장치에 설치하는 동작을 포함하는 방법.
  22. 제21항에 있어서,
    부팅 시 상기 펌웨어가 신뢰 당사자(trusted party)에 의해 서명되었음을 검증하는 동작을 더 포함하는 방법.
  23. 전자 장치에 있어서,
    물리적 복제방지 기능(PUF)을 갖는 보안 모듈로서, 상기 보안 모듈은 PUF에 대한 제1 도전과 응답에 기초하여 펌웨어 키 쌍(FPK, FSK)을 설정하도록 구성되고, 상기 펌웨어 키 쌍은 펌웨어 공개 키(FPK) 및 펌웨어 비밀 키(FSK)를 포함하는, 보안 모듈;
    상기 보안 모듈을 포함하거나 상기 보안 모듈에 통신적으로 결합된 하나 또는 다수의 프로세서들을 포함하고, 상기 하나 또는 다수의 프로세서는:
    상기 FSK를 사용하여, 암호화된 서버 복호화 키를 복호화하되, 상기 서버 복호화 키는 상기 FPK를 사용하여 암호화되고;
    상기 복호화된 서버 복호화 키를 사용하여, 펌웨어의 해시를 통해 펌웨어 및 서명을 복호화하고;
    상기 전자 장치에 안전하게 내장된 공개 기관 키를 사용하여, 상기 펌웨어의 해시가 신뢰 기관에 의해 서명되었음을 검증하고;
    상기 검증 결과에 기초하여, 상기 복호화된 펌웨어를 전자 장치에 설치하도록 구성되는 것인 전자 장치.
  24. 전자 장치에 펌웨어를 제공하기 위한 시스템으로서, 상기 전자 장치는 물리적 복제방지 기능(PUF)을 갖는 보안 모듈을 포함하고, 상기 보안 모듈은 PUF에 대한 제1 도전과 응답에 기초하여 펌웨어 키 쌍(FPK, FSK)을 설정하도록 구성되고, 상기 펌웨어 키 쌍은 펌웨어 공개 키(FPK) 및 펌웨어 비밀 키(FSK)를 포함하고, 상기 시스템은 신뢰 기관 및 서버를 포함하는 시스템에 있어서,
    상기 신뢰 기관은:
    서버로부터 펌웨어의 해시를 수신하고;
    공개 기관 키와 비밀 기관 키를 포함하는 기관 키 쌍의 비밀 기관 키를 사용하여, 펌웨어의 해시에 서명하되, 상기 공개 기관 키는 전자 장치에 안전하게 내장되고;
    펌웨어의 해시를 통해 서명을 서버로 전송하고; 및
    상기 서버로 FPK를 전송하도록, 구성되고;
    상기 서버는:
    상기 신뢰 기관으로부터 서명을 수신하고;
    상기 신뢰 기관으로부터 FPK를 수신하고;
    서버 암호화 키를 사용하여 펌웨어 및 서명을 암호화하고;
    상기 암호화된 펌웨어 및 암호화된 서명을 복호화하기 위하여 FPK를 사용하여 서버 복호화 키를 암호화하고; 및
    상기 암호화된 펌웨어, 상기 암호화된 서명, 및 상기 암호화된 서버 복호화 키를 전자 장치에 설치하기 위해 제3자에게 전달하도록, 구성되는 것인 시스템.
KR1020237034822A 2021-04-12 2022-04-12 신뢰 루트(Root-of-Trust) 기반의 보안을 갖는 암호화되고 인증된 펌웨어 제공 방법 및 시스템 KR20240045160A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2105203.0 2021-04-12
GB2105203.0A GB2605953A (en) 2021-04-12 2021-04-12 Encrypted and authenticated firmware provisioning with root-of-trust based security
PCT/GB2022/050910 WO2022219319A1 (en) 2021-04-12 2022-04-12 Encrypted and authenticated firmware provisioning with root-of-trust based security

Publications (1)

Publication Number Publication Date
KR20240045160A true KR20240045160A (ko) 2024-04-05

Family

ID=75949493

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237034822A KR20240045160A (ko) 2021-04-12 2022-04-12 신뢰 루트(Root-of-Trust) 기반의 보안을 갖는 암호화되고 인증된 펌웨어 제공 방법 및 시스템

Country Status (7)

Country Link
US (1) US20240187262A1 (ko)
EP (1) EP4324154A1 (ko)
JP (1) JP2024516126A (ko)
KR (1) KR20240045160A (ko)
CN (1) CN117203934A (ko)
GB (1) GB2605953A (ko)
WO (1) WO2022219319A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114296756B (zh) * 2021-12-16 2024-08-06 合肥大唐存储科技有限公司 一种固态硬盘更新方法、固态硬盘和后台服务器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10860744B2 (en) * 2018-11-20 2020-12-08 Silicon Laboratories, Inc. System and method for ensuring integrity and confidentiality of data programmed in an insecure manufacturing environment
GB2583118B (en) 2019-04-17 2021-09-08 Crypto Quantique Ltd Device identification with quantum tunnelling currents

Also Published As

Publication number Publication date
GB202105203D0 (en) 2021-05-26
WO2022219319A1 (en) 2022-10-20
EP4324154A1 (en) 2024-02-21
US20240187262A1 (en) 2024-06-06
CN117203934A (zh) 2023-12-08
GB2605953A (en) 2022-10-26
JP2024516126A (ja) 2024-04-12

Similar Documents

Publication Publication Date Title
US11736467B2 (en) Technologies for token-based authentication and authorization of distributed computing resources
US10382485B2 (en) Blockchain-assisted public key infrastructure for internet of things applications
EP3458999B1 (en) Self-contained cryptographic boot policy validation
US9912485B2 (en) Method and apparatus for embedding secret information in digital certificates
US10958664B2 (en) Method of performing integrity verification between client and server and encryption security protocol-based communication method of supporting integrity verification between client and server
US8065517B2 (en) Method and system for transferring information to a device
US10609070B1 (en) Device based user authentication
US20100031026A1 (en) Method and system for transferring information to a device
KR20130056199A (ko) 보안 키 생성
JP2022527985A (ja) リモートサーバでの認証用のデバイス識別子を生成するためにセキュアデバイス上でソフトウェアをオンボードすること
KR102013983B1 (ko) 애플리케이션 무결성 인증 방법 및 인증 서버
WO2022250927A1 (en) Binding with cryptographic key attestation
CN109960935B (zh) 确定tpm可信状态的方法、装置及存储介质
US20240187262A1 (en) Encrypted and authenticated firmware provisioning with root-of-trust based security
KR20240045162A (ko) 임베디드 장치들의 안전한 신뢰 루트 등록 및 신원 관리
KR20100043799A (ko) Mtm 기반 모바일 단말기 간의 비밀 데이터 이전 방법
US20240195641A1 (en) Interim root-of-trust enrolment and device-bound public key registration
KR101868227B1 (ko) 차량용 모듈의 정품 인증 방법 및 장치
CN115438352A (zh) 数据处理方法、装置、设备和存储介质

Legal Events

Date Code Title Description
A201 Request for examination