KR20150052346A - 고유의 코드 서명 키들의 보안 관리 및 개인화 - Google Patents

고유의 코드 서명 키들의 보안 관리 및 개인화 Download PDF

Info

Publication number
KR20150052346A
KR20150052346A KR1020157010466A KR20157010466A KR20150052346A KR 20150052346 A KR20150052346 A KR 20150052346A KR 1020157010466 A KR1020157010466 A KR 1020157010466A KR 20157010466 A KR20157010466 A KR 20157010466A KR 20150052346 A KR20150052346 A KR 20150052346A
Authority
KR
South Korea
Prior art keywords
key
encrypted
code
copy
computing device
Prior art date
Application number
KR1020157010466A
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 KR20150052346A publication Critical patent/KR20150052346A/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/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Lock And Its Accessories (AREA)

Abstract

본 방법과 시스템은 고유의 암호화 디바이스 키들을 생성하고 배포한다. 본 방법은 적어도 제1 디바이스 키를 생성하는 단계 및 제1 암호화 키에 의해 제1 디바이스 키를 암호화하여, 디바이스 키의 제1 암호화된 카피를 생성하는 단계를 포함한다. 또한, 본 방법은 제2 암호화 키에 의해 제1 디바이스 키를 암호화하여 디바이스 키의 제2 암호화된 카피를 생성하는 단계를 포함한다. 제2 암호화 키는 상기 제1 암호화 키와는 상이하다. 디바이스 키들의 제1 및 제2 암호화된 카피들은 제조 중인 컴퓨팅 디바이스를 식별하는 디바이스 ID와 관련된다. 디바이스 키의 제2 암호화된 카피는 컴퓨팅 디바이스 상에 로드된다. 디바이스 키의 제1 암호화된 카피 및 이와 관련된 디바이스 ID는 컴퓨팅 디바이스가 고객에게 배포된 이후의 후속 사용을 위해, 적어도 하나의 서버 상에 저장된다.

Description

고유의 코드 서명 키들의 보안 관리 및 개인화{SECURE MANAGEMENT AND PERSONALIZATION OF UNIQUE CODE SIGNING KEYS}
관련출원의 상호참조
본 출원은 2011년 2월 18일에 출원된 미국 가출원(Provisional Application) 제61/444,167호를 기초로 우선권을 주장하며, 이는 본 명세서에 참조문헌으로서 포함된다.
컴퓨팅 디바이스들에서는 멀웨어(malware) 및 권한 없이 변경된 소프트웨어로부터 보호하기 위한 다양한 매커니즘들과 시스템들이 구현된다. 가장 흔한 방법들 중 하나는 코드 또는 데이터가 실행되거나 액세스되기 전에, 체크되는 코드 또는 데이터의 디지털 서명(digital signature)을 제공하는 것이다. 코드 및 데이터를 디지털적으로 서명하는 방법은 모바일 통신 디바이스들(예컨대, PDAs(Personal Digital Assistants), 모바일 전화기, 랩탑, 페이저, 무선 이메일 디바이스), PC, 라우터, 미디어 플레이어, 셋탑 박스 등과 같이 서로 다른 다양한 컴퓨팅 디바이스들을 위해 작성된 소프트웨어에 의해 광범위하게 이용된다. 예를 들어, 코드 서명(code signing)은 제조자가 소유한 자산의 보호, 운영자 비즈니스 모델(operator business model)의 보호, 및 특정 멀웨어의 위협으로부터의 보호에 대한 필요성으로 인해, 휴대 전화기 등의 모바일 통신 디바이스에 주로 이용된다.
디지털 서명에 의해 무결성이 보호된(integrity protected) 데이터 또는 코드는 판매되거나 또는 배포되기 전에 인증 기관(certifying authority)에 의해 "서명(signed)"된다. 서명된 코드 또는 데이터는 서명되었음을 이유로 코드 또는 데이터가 위조되지 않았다는 것을 확인해 주는 디지털 서명을 포함한다. 도 1은 코드 서명 기관이 코드 서명 서비스를 소프트웨어 어플리케이션 개발자에게 제공하는 코드 서명 프로토콜의 일례를 도시한 다이어그램으로서, 참조번호 100으로 나타내져 있다.
소프트웨어 어플리케이션 개발자(102)는 컴퓨팅 디바이스(100)를 위한 소프트웨어 어플리케이션(104)을 제작한다. 소프트웨어 어플리케이션은 궁극적으로는 모바일 디바이스 또는 다른 컴퓨팅 디바이스 상에서 실행될 수 있는 소프트웨어 코드를 포함한다는 것이 이해될 것이다. 결과적으로, "코드 서명" 및 "어플리케이션 서명" 이라는 용어는 본 명세서에서 호환 가능하게 사용될 수 있다.
컴퓨팅 디바이스 상에서 민감한 데이터로의 허가되지 않은 액세스로부터 보호하기 위해, 소프트웨어 어플리케이션 개발자(102)는, 이하에서 기술된 바와 같이, 모바일 디바이스 제조자로부터 또는 그 제조자를 대신하여 기능하는 코드 서명 기관(106)으로부터 하나 이상의 디지털 서명을 획득하고, 소프트웨어 어플리케이션(104)에 대한 서명(들)을 배포시킬 것이 요구된다. 일부 경우들에서, 서명(signature)은 서명된 데이터나 코드에 첨부될 수 있다. 다른 경우들에서는, 서명은 별개의 파일 또는 패키지로 배포된다.
도 1에 도시된 예에서, 소프트웨어 어플리케이션 개발자(102)가 소프트웨어 어플리케이션(104)이 서명되기를 요구하는 경우, 소프트웨어 어플리케이션(104)은 어플리케이션 개발자(102)로부터 코드 서명 기관(106)으로 전송된다. 코드 서명 기관(106)은 컴퓨팅 디바이스 제조자를 대변하거나 또는 디바이스 상에서 실행되는 소프트웨어를 허가할 수 있는 다른 가능한 것들을 대변할 수 있다. 도 1에 명백하게 도시되지는 않았지만, 특정 상황에서는, 소프트웨어 어플리케이션이 둘 이상의 코드 서명 기관에 제출될 수 있음이 이해될 것이다.
디지털 서명은 일반적으로 코드 서명 기관(106)에 의해 단독으로 유지되는 개인 서명 키(private signature key)(110)를 이용하여 생성되는 암호화 값(cryptographic value)이다. 예를 들어, 한 서명 방식에 따르면, 예컨대 보안 해시 알고리즘 SHA1 등의 해시 알고리즘을 이용하여, 소프트웨어 어플리케이션(104)의 해시가 코드 서명 기관(106)에 의해 생성될 수 있고, 그 후에 개인 서명 키(310)에 의해 인코딩되어 디지털 서명을 생성한다. 본 예에서, 개인 서명 키(110)는, 소프트웨어 어플리케이션(104)으로부터 유도될 수 있는 등의 서명되어야 할 정보의 해시를 인코딩하는 데 사용되지만, 개인 서명 키(110)는 서명되어야 할 정보 또는 변환된 버전의 정보로부터 디지털 서명을 생성하는 데에 다른 방식이 이용될 수도 있다. 디지털 서명 대신에 또는 디지털 서명 이외에, 일부 경우들에서는 소프트웨어 어플리케이션(104)을 암호화하는 데에 추가적인 대칭 또는 공개 코드 암호화 키가 이용될 수 있다. 공개 키는 일반적으로 랜덤한 대칭 키를 간접적으로 암호화하는 데 이용되고, 그 후에는 결국 소프트웨어 어플리케이션(104)을 암호화한다는 것에 유념하자.
그 후, 서명된 소프트웨어 어플리케이션(108)은, 예컨대 네트워크(200)를 통해서 컴퓨팅 디바이스(100)로 전송될 수 있거나, 또는 컴퓨팅 디바이스(100)에 로드될 수 있다. 컴퓨팅 디바이스(100) 상에서 서명된 및/또는 암호화된 어플리케이션(108)을 실행하기 위해, 컴퓨팅 디바이스(100)는 공개 검증 키(public verification key)(112)를 이용하여, 서명된 및/또는 암호화된 어플리케이션(108)의 디지털 서명을 검증할 필요가 있다.
소프트웨어 코드 서명 기법들을 포함하는 보안 프로토콜은 일반적으로 공개 및 개인 암호화 키들에 의존한다. 공지된 공개 키 암호화 기법들에 따르면, 개인 키/공개 키 쌍(pair)의 개인 키를 이용하여 암호화된 데이터는 이 쌍의 대응하는 공개 키를 이용하여야만 복호화될 수 있고, 그 역도 마찬가지이다. 이러한 방식으로 수행되는 코드 서명은 비대칭 코드 서명이라고 지칭될 수 있다.
비대칭 코드 서명에서, 컴퓨팅 디바이스(100) 상에 저장되는 것은 공개/개인 키 쌍의 공개 부분이므로, 특정 디바이스 모델의 모든 유닛들 상에서 동일한 공개 검증 키가 이용될 수 있다. 따라서, 주어진 디바이스 모델의 각 유닛에는 제조시에 (서명 키에 대응하는) 동일한 공개 코드 검증 키가 제공됨으로써, 제조 프로세스 및 키 관리 프로세스가 단순화된다.
그러나, 일부 경우들에서, 컴퓨팅 디바이스 제조자는 각각의 제조된 디바이스를 위한 고유의 대칭 서명 키를 이용하기를 원할 수 있다. 디바이스 내의 하드웨어의 한계들 및 성능 기준들로 인해 대칭 키가 요구될 수 있다. 또한, 대칭 코드 서명 키들의 경우에는, 디바이스마다 고유의 키를 갖는 것이 바람직하다. 이러한 방식에서, 단일 디바이스가 고장나고 대칭 서명/검증 키가 추출되는 경우, 이러한 손상은 다른 디바이스들의 보안에 영향을 미치지 않는다.
또한, 디바이스는, 코드 검증 이외의 사용을 위해, 예컨대 그 디바이스만을 위해 고유하게 암호화된 코드를 복호화하기 위해 고유의 비대칭 키 쌍이 필요할 수 있다.
코드 암호화의 목적을 위해, 암호화 및 복호화 키 모두가 비밀 값으로 간주되는 비대칭 키 쌍을 이용하는 것이 바람직할 수 있다. 암호화 키를 비밀로 유지하는 것은 권한 없는 자들로 하여금 코드 이미지들을 암호화하여 각 디바이스에 전달하는 것을 방지한다. 또한, 복호화 키가 비밀로 유지되기 때문에 코드는 타겟 디바이스 외부에서 기밀로 유지된다. 본 명세서에서, 공개 암호화 키가 권한 없는 자들로부터의 보호가 요구되는 비밀 기밀 값으로 간주되더라도, 암호화 키를 "공개(public)"로, 그리고 복호화 키를 "개인(private)"으로 지칭하는 것이 일반적이다.
바람직하게는, (비대칭 키 쌍으로부터의) 코드 암호화 및 복호화 키들 모두가 비밀로 유지되는 경우, 코드가 디지털적으로 서명되는 것은 필요하지 않다. 암호화 키들은 권한 있는 자들에게만 공지되어 있기 때문에, 디바이스가 코드를 성공적으로 복호화할 수 있다면, 그것은 이미 코드가 권한 있는 소스로부터 유래한 것이라는 것에 대한 충분한 증거가 된다.
본 발명에 따르면, 고유의 암호화 디바이스 키들을 생성하고 배포하기 위한 방법 및 시스템이 제공된다. 본 방법은 적어도 제1 디바이스 키를 생성하는 단계 및 제1 암호화 키에 의해 제1 디바이스 키를 암호화하여, 디바이스 키의 제1 암호화된 카피(copy)를 생성하는 단계를 포함한다. 또한, 본 방법은 제2 암호화 키에 의해 제1 디바이스 키를 암호화하여 디바이스 키의 제2 암호화된 카피를 생성하는 단계를 포함한다. 제2 암호화 키는 제1 암호화 키와는 상이하다. 디바이스 키들의 제1 및 제2 암호화된 카피들은 제조 중인 컴퓨팅 디바이스를 식별하는 디바이스 ID와 연관된다. 디바이스 키의 제2 암호화된 카피는 컴퓨팅 디바이스 상에 로드된다. 디바이스 키의 제1 암호화된 카피 및 이와 관련된 디바이스 ID는 컴퓨팅 디바이스가 고객에게 배포된 이후의 후속 사용을 위해 적어도 하나의 서버 상에 저장된다.
본 발명의 다른 양태에 따르면, 코드 서명 서비스들을 제공하는 시스템이 제공된다. 이 시스템은 복수의 암호화된 디바이스 키 쌍들을 저장하는 키 저장소(key store)를 포함하는데, 각각의 암호화된 디바이스 키 쌍은 디바이스 키의 제1 및 제2 암호화된 카피를 포함한다. 디바이스 키들의 제1 암호화된 카피들의 각각은 제1 암호화 키에 의해 제1 디바이스 키를 암호화하고, 디바이스 키들의 제2 암호화된 카피들의 각각은 제2 암호화 키에 의해 제1 디바이스 키를 암호화하기 때문에, 디바이스 키의 제2 암호화된 카피는 디바이스 키의 제1 암호화된 카피와는 상이하다. 또한, 시스템은 키 저장소와 통신하는 하나 이상의 서버들을 포함한다. 하나 이상의 서버들은 (i) 암호화된 디바이스 키 쌍들 각각을 서명된 및/또는 암호화된 소프트웨어 코드에 의해 제공될 각 컴퓨팅 디바이스의 각 디바이스 ID에 연결하고; (ii) 제1 디바이스 ID와 연결된 제1 디바이스 키 쌍 내의 디바이스 키의 제1 암호화된 카피를 코드 서명 서버에 전달하고; (iii) 디바이스 키의 제2 암호화된 카피를 제1 디바이스 ID에 의해 식별되는 컴퓨팅 디바이스에 전달하고, (iv) 제1 디바이스 키 쌍 내의 디바이스 키의 제1 암호화된 카피로부터 제1 디바이스 키를 복호화하고, 소프트웨어 코드를 제1 디바이스 키에 의해 암호화하고, 그리고 (v) 서명된 및/또는 암호화된 소프트웨어 코드를 제1 디바이스 ID에 의해 식별되는 컴퓨팅 디바이스에 전달하도록 구성된다.
본 발명의 또 다른 양태에 따르면, 고유의 암호화 디바이스 키들을 이용하여 코드 서명 서비스들을 전달하기 위한 방법이 제공된다. 본 방법은 제1 암호화 키에 의해 제1 디바이스 키를 암호화하는 디바이스 키의 제1 암호화된 카피를 수신하는 단계를 포함한다. 디바이스 키의 제2 암호화된 카피 또한 수신된다. 디바이스 키의 제2 암호화된 카피는 디바이스 키의 제1 암호화된 카피와 상이하도록 제2 암호화 키에 의해 제1 디바이스 키를 암호화한다. 디바이스 키들의 제1 암호화된 카피 및 제2 암호화된 카피는 서명된 및/또는 암호화된 소프트웨어 코드에 의해 제공될 컴퓨팅 디바이스의 디바이스 ID와 연결된다. 디바이스 ID와 연결된 디바이스 키의 제1 암호화된 카피는 컴퓨팅 디바이스 내에 제공될, 서명된 및/또는 암호화된 소프트웨어 코드를 제공하는 제1 코드 서명 서버에 전달된다. 서명된 및/또는 암호화된 소프트웨어 코드는 제1 디바이스 키에 의해 서명된다. 디바이스 키의 제2 암호화된 카피 및 서명된 및/또는 암호화된 소프트웨어 코드는 컴퓨팅 디바이스에 전달된다.
도 1은 코드 서명 기관이 코드 서명 서비스들을 소프트웨어 어플리케이션 개발자에게 제공하는 코드 서명 프로토콜의 일례를 도시하는 다이어그램.
도 2는 고유의 디바이스 키와 이것의 2개의 암호화된 카피들 사이의 관계를 도시하는 도면.
도 3은 본 명세서에 기술된 고유의 서명 키들을 컴퓨팅 디바이스들에 제공하기 위한 프로세스들이 구현될 수 있는 동작 환경의 일례를 도시한 도면.
도 4는 본 명세서에 기술된 고유의 서명 키들을 컴퓨팅 디바이스들에게 제공하기 위한 프로세스들이 구현될 수 있는 동작 환경의 일례를 도시한 도면.
도 5는 본 명세서에 기술된 기법들을 이용하여 코드 서명 서비스들을 제공하기 위한 방법의 일례를 도시한 플로우 차트.
도 6은 도 3 및 도 4에 도시된 시스템들의 임의의 다양한 서버들, 스테이션들 등을 위한 하드웨어 플랫폼으로서 이용될 수 있는 컴퓨터 시스템을 도시한 도면.
때로는, 다양한 이유들로 인해 공유 코드 서명 키들 대신에 대칭되는 고유의 코드 서명 키들을 이용하는 코드 서명 매커니즘을 적용하는 것이 바람직하다. 일례로, 저가의 일부분을 이용하는 제품은 일반적으로 사용되는 비대칭 키들 대신에 대칭 키들의 사용만을 지원할 수 있다. 고유의 디바이스 개인 키들은 코드 서명 이외의 다른 이유로도 바람직할 수 있다. 예를 들어, 고유의 디바이스 개인 키는, 대응하는 공개 키 역시 비밀로 유지되어야 할 것이 요구되는 디바이스를 위해, 고유하게 암호화된 코드 또는 데이터를 복호화하는 데 이용될 수 있다. 컴퓨팅 디바이스의 각각의 유닛으로 고유의 디바이스 키의 제공은 고유 키들의 생성 및 관리에 관해 처리가 요구되는 수많은 이슈들을 제공한다. 예를 들어, 고객에게 배포되고 제공된 고유의 서명 키를 갖는 디바이스는 차후에 수리되거나 업데이트되어야 할 필요가 있을 수 있다. 수리 또는 업데이트 센터는 수리 또는 업데이트를 수행하기 위해 때로는 고유의 서명 또는 암호화 키를 액세스할 필요가 있을 것이다. 따라서, 시스템은 고유의 서명 키들을 그 수명 주기 동안에 안전하게 배포, 관리 및 검색할 것이 요구된다.
이하에는, 고유의 서명 또는 암호화 키들을 그 수명 주기 동안에 안전하게 배포, 관리 및 검색하는 데 이용될 수 있는 코드 서명 서비스를 제공하기 위한 시스템이 기술되어 있다. 설명을 위해, 이 시스템은 다음의 시나리오들의 맥락에서 기술될 것이다: 디바이스 제조시에 팩토리에서의 키 제공, 기술 개발 중에 고유 서명 및 암호화 키들의 사용, 및 수리 설비에 의한 고유의 서명 또는 암호화 키들의 사용. 물론, 시스템은 다른 목적들을 위해서도 마찬가지로, 고유의 디바이스 키들을 배포하는 데 이용될 수 있다. 서명된 또는 암호화된 코드가 제공될 디바이스들은 통신 디바이스, 모바일 통신 디바이스(예컨대, PDA(personal digital assistant), 모바일 전화기, 랩탑, 페이저, 무선 이메일 디바이스), PC, 라우터, 미디어 플레이어, 셋탑 박스 등을 포함하는 임의의 컴퓨팅 디바이스일 수 있지만 이에 제한되지 않는다.
컴퓨팅 디바이스에 고유의 디바이스 키를 제공하는 경우, 키를 줄곧 내내 보호하는 것이 무엇보다 중요하다. 허가되지 않은 키 값의 공개를 방지하기 위해, 키가 이용되지 않을 경우에도 항상 암호화하는 것이 중요하다. 컴퓨팅 디바이스들은 일반적으로 멀리 떨어진, 신뢰할 수 없는 제3의 설비에서 제조되고, 민감한 데이터는 컴퓨팅 네트워크를 통해서 전송된다. 고유 디바이스 키 등의 민간한 값들은 디바이스 제조시 생성된 때로부터 목적 컴퓨팅 디바이스 내에 저장될 때까지 보호될 필요가 있다. 코드 서명 또는 코드 암호화 키들과 함께, 키들은 코드 업데이트들을 서명 및/또는 암호화하기 위해 제조 후에 이용될 필요가 있을 것이다. 저장될 가능한 많은 수의 고유의 키들로 인해, 제조 후에 고유의 코드 서명 및 암호화 키들을 보호하는 것은 실질적으로 더욱 어렵다.
이 시스템을 구현하기 위해, 컴퓨팅 디바이스 내에 제공되는 각각의 고유의 디바이스 키에 대해 2개의 암호화된 버전들이 생성된다. 암호화된 하나의 버전은 타겟 디바이스로의 배포를 위해 제조자에 의해 이용되고, 나머지 버전은 차후에, 예컨대 컴퓨팅 디바이스가 배포된 이후에 수리 또는 업데이트될 필요가 있을 때 또는 기술 개발을 목적으로 분석될 필요성이 있을 때, 고유의 디바이스 키를 액세스할 필요가 있을 수 있는 엔티티들에게 이용가능하게 된다. 디바이스 제조자는 제2 암호화된 버전을 이용하는 엔티티들 중 하나일 수 있다.
컴퓨팅 디바이스에는, 고유의 디바이스 키들을 로드하기 전에, 제조시에 DKPK(Device Key Protection Key)라고 지칭되는 비대칭 키 값이 제공된다. DKPK는 한 모델의 모든 디바이스들 사이에서 공유된다. DKPK는 디바이스 제조시 생성된 때로부터 타겟 컴퓨팅 디바이스 내에 안전하게 저장될 때까지 고유의 서명 키를 보호하는 데 사용된다. DKPK는 비대칭 키로서 기술되었지만, 대칭 키일 수도 있다. 또한, DKPK는 특정 모델의 모든 디바이스들 사이에서 공유된 값일 수 있거나 또는 고유한 값일 수도 있다.
고유의 디바이스 키와 이것의 2개의 암호화된 버전들 또는 카피들 사이의 관계가 도 2에 도시되어 있다. 본 예에서, 블록(210)에 도시된 고유의 디바이스 키는 각각의 컴퓨팅 디바이스 내에 제공되고 UDK(Unique Device Key)라고 지칭된다. 블록(220)에 도시된 바와 같이, UDK는 DKPK에 의해 암호화된다. DKPK는 키 생성 시스템에 의해 처음으로 생성된 때부터 팩토리(250)에서 컴퓨팅 디바이스에 제공될 때까지 UDK를 보호하는 데 이용된다. 컴퓨팅 디바이스는 컴퓨팅 디바이스 내에 사전에 제공되고 저장된 DKPK를 이용하여 UDK를 복호화한다. DKPK에 의해 UDK를 암호화함으로써 형성된 암호화 키는 EDKPK(Encrypted Device Key for Device Key Protection Key)라고 지칭된다. EDKPK는 팩토리에서 컴퓨팅 디바이스에 제공될 UDK의 암호화된 버전이다. EDKPK는 디바이스 제조자로부터 제조 센터로 전송되는 값이다.
블록(230)에 도시된 바와 같이, UDK는 또한 DKRK(Device Key Retrieval Key)라고 지칭되는 비대칭 키에 의해 개별적으로 암호화된다. DKRK는 비대칭 키로서 기술되었지만, 대칭 키일 수도 있다. DKRK의 공개 부분에 의해 UDK를 암호화하여 형성된 암호화된 키는 EDKRK(Encrypted Device Key by the Retrieval Key)라고 지칭된다. DKRK는 팩토리 내부 및 팩토리 외부(예컨대, 수리 설비들) 모두에서의 이용을 위해, 코드를 서명할 다양한 엔티티들에 제공될 UDK의 암호화된 버전이다. DKRK의 개인 부분은 UDK를 복호화하여 코드 서명 또는 암호화를 수행할 수 있도록 다양한 코드 서명 서버들에 저장될 것이다. EDKRK는 디바이스 제조자로부터 서명 엔티티들에 전송되는 값이다.
요약하면, 도 2는 UDK의 2개의 암호화된 버전, 즉 EDKPK 및 EDKRK의 형성을 도시한다. EDKPK와 EDKRK는 팩토리(250)로의 전달을 위해 함께 패어링(paired)을 이룬다(블록 240). EDKPK와 EDKRK는 제조시까지 디바이스에 구속되지 않으므로, 디바이스 제조자에서부터 팩토리까지 함께 전송된다. 어느 디바이스가 EDKRK와 관련된 UDK에 의해 로드되었는지 공지되지 않은 경우, EDKRK는 코드 서명에 유용하지 않다. 팩토리는 제조된 디바이스로부터 시리얼 넘버(또는 다른 고유한 값)를 기록하고, 차후의 검색을 위해 이를 EDKRK와 패어링시킨다. 따라서, 디바이스를 위해 코드를 서명할 필요가 있는 임의의 엔티티는 시리얼 넘버와 관련된 EDKRK를 검색함으로써, 올바른 EDKRK(그리고 복호화 이후에 UDK)를 검색할 수 있게 될 것이다.
본 명세서에서 제시된 예들에서, 디바이스 키 UDK는 대칭 키라는 것에 유념해야 한다. 그러나, 보다 일반적으로, 디바이스 키는 대칭 또는 비대칭 키일 수 있다. 디바이스 키가 비대칭인 경우, 디바이스 키의 공개 부분(일반적으로 암호화에 이용됨)은 UDPK(Unique Device Public Key)라고 지칭될 것이다. 이러한 명칭에도 불구하고, UDPK는 (개인 키를 비밀로 유지하는 것 이외에) 비밀로 유지될 필요가 있을 수 있다. 이것은 특정 디바이스를 타겟으로 한 코드 또는 다른 정보를 암호화하는데 있어서 어느 엔티티들이 허용되었는지에 관한 권한 제어를 가능하게 한다. 물론, 디바이스 키가 대칭인 경우, UDK는 UDPK로서 효과적으로 기능한다.
고유 서명 키들을 안전하게 배포, 관리 및 검색하기 위한 매커니즘의 2개의 예가 이하에서 제시될 것이다. 제1 예에서, UDK들은 키 생성 설비에 의해, 오프라인 상에서 생성 및 암호화되고 팩토리에 전달되어 컴퓨팅 디바이스들 내에 제공될 수 있다. 제2 예에서, UDK들은 컴퓨팅 디바이스 내에 UDK들을 제공하는 팩토리 내에서 생성 및 암호화된다. 어떤 경우에도 컴퓨팅 디바이스 내에 제공될 때까지 또는 코드 서명 서버에 의해 사용될 때까지 UDK는 안전하게 이용가능하지 않다.
도 3은 본 명세서에서 기술된, 컴퓨팅 디바이스들에게 고유의 서명 키들을 제공하기 위한 프로세스들이 구현될 수 있는 동작 환경의 일례를 도시한다. 설명을 위해 디바이스 키는 대칭인 것으로 가정한다. 그러나, 전술된 바와 같이, 디바이스 키는 대안적으로 비대칭일 수 있으며, 이 경우 도면에 도시된 바와 같이 EDKPK는 컴퓨팅 디아비스로 전달되는 디바이스 키의 암호화된 개인 부분만을 포함한다. 반면, EDKRK는 디바이스 키의 암호화된 공개 부분(UDPK)만을 포함한다. 디바이스는, 예컨대 코드 서명 서버에 의해 개인 키가 UDPK에 의해 암호화되어 전달된 코드 또는 그 외 정보를 복호화하기를 요청한다. 코드 서명 서버는 디바이스를 타겟으로 한 코드 또는 다른 디지털 정보의 암호화 외에도, 디바이스를 타겟으로 한 코드 또는 다른 메세지들의 서명을 수행할 수도 있다는 것을 이해해야 한다.
도 3에는, 디바이스 키들이 제공될 컴퓨팅 디바이스들을 위한 제조 설비를 나타내는 팩토리 도메인(300)이 도시되어 있다. 이 도메인은 매우 단순화된 방식으로 도시되어 있지만, 그 내부의 단일 엔티티(예컨대, 서버, 스테이션 등)는 보다 복잡한 구성들 및 시스템들을 나타낼 수 있다는 것을 이해해야 한다.
또한, 도 3에는 제3자 또는 일부 경우들에서는 제조자 당사자들에 의해 운영될 수 있는 다른 엔티티가 도시되어 있다. 특히, 일부 또는 모든 키들을 보호하는 데 이용될 수 있는 하드웨어 보안 모듈(Hardware Security Module,HSM)들을 포함하거나 또는 액세스할 수 있는 오프라인 키 생성 시스템(410)이 도시되어 있다. 또한, 엔지니어링 목적 및 수리 목적 각각을 위해 배포된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스들(450, 460))에서 이용하기 위한 코드 또는 다른 디지털 정보를 서명하거나 또는 암호화하는 데 이용될 수 있는 서명 서버들(430, 440)들이 도시되어 있다.
도 3에 도시된 다양한 구성요소들을 통한 프로세스의 흐름은 다음과 같다. 우선, 단계 1에서, 오프라인 키 생성 시스템(410)은 일련의 UDK를 생성한다. 각각의 UDK는 팩토리 도메인(300) 내의 키 개인화 서버(310)로 전달되는 EDKPK와 EKKRK 쌍들을 생성하기 위해 전술된 바와 같이 암호화된다. 이러한 방식으로, 키들은 오프라인 키 생성 시스템(410)을 떠난 이후에 각각의 목적지 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스(320)) 내에 저장되고 복호화될 때까지 공개적인 상태로 유지되지 않는다.
팩토리 도메인(300)은 제조 중인 목적지 컴퓨팅 디바이스(320)와 키 개인화 서버(310) 사이에서 물리적인 통로(conduit)로서 기능하는 디바이스 인터페이스 스테이션(330)을 포함한다. 컴퓨팅 디바이스(320)는, 컴퓨팅 디바이스(320) 상에서 USB 포트가 이용가능한 경우, 예컨대 USB 케이블 등의 임의의 적합한 수단에 의해 디바이스 인터페이스 스테이션에 물리적으로 접속될 수 있다. 디바이스 인터페이스 스테이션(330)은 컴퓨팅 디바이스(320)로부터 고유의 디바이스 ID를 검색하고, 단계 2에서 이것을 디바이스 키에 대한 요청과 함께 키 개인화 서버(310)로 전송한다.
단계 3에서, 키 개인화 서버(310)는 디바이스 인터페이스 스테이션(330)으로부터 요청을 수신하고, 키 개인화 서버의 데이터베이스로부터 다음에 이용가능한 암호화된 EDKPK와 EDKRK 쌍을 검색한다. 그 후에, 서버(330)는 암호화된 키 쌍들이 오프라인 키 생성 시스템(410)으로부터 키 개인화 서버(310)에 전송될 때 사용되었을 수 있는 임의의 서버-특정 보호 계층(server-specific protection layer)들을 제거한다. EDKPK는 컴퓨팅 디바이스(320)에 로드될 것이며, EDKRK는 코드 서명/암호화를 목적으로 팩토리 외부의 엔티티들에 의한 안전한 저장을 위해 의도된다. 또한, EDKRK는 팩토리 내의 디바이스 개인화 프로세스 동안에 디바이스 인터페이스 스테이션(330)에 의해 컴퓨팅 디바이스(320) 상에 로드되는 초기 소프트웨어 코드를 서명/암호화하는 데 이용될 수 있다. 다른 경우에는, 컴퓨팅 디바이스(320)는 초기의 소프트에어 코드를 스스로 서명/암호화할 수 있다.
단계 4a에서, EDKPK 및 EDKRK 쌍은 디바이스 인터페이스 스테이션(330)으로 전송된다. 이 쌍은 전송되는 동안에 자신을 보호하기 위해 암호화된 프로토콜을 이용하여 암호화될 수 있다. 단계 4b에서, 디바이스 인터페이스 스테이션(330)은 전송되는 동안에 이 쌍을 보호했을 수 있는 임의의 추가적인 암호화를 제거하고, 제조 중인 컴퓨팅 디바이스(320)로 EDKPK를 전송한다. 컴퓨팅 디바이스(320)는 DKPK에 의해 EDKPK를 복호화하여 UDK를 검색한다(비대칭 키들의 경우, 이것은 UDK의 개인 부분일 것이다). 일부 경우들에서, 디바이스는 팩토리가 자신의 비대칭 UDK를 이용하는 동안에 로드된 초기 코드를 서명할 수 있다.
키 개인화 서버(420)는 디바이스 개인화 프로세스에 후속하는 차후의 이용을 위해 EDKRK 및 EDKRK의 디바이스 ID로의 링크를 저장할 필요가 있다. 따라서, 단계 5a에서, 키 개인화 서버(310)는 디바이스 ID와 EDKRK 쌍을 저장하고, 그 후에, 이 값들을 중앙 기억 장치(420)에 복제한다. 전술한 바와 같이, 디바이스에 대한 코드 업데이트들은 기술 개발 중에 그리고 수리 설비에서의 디바이스 수리 중에 각 디바이스의 UDK에 의해 서명 및/또는 암호화될 필요가 있다. 따라서, 단계 5b에서, 중앙 기억 장치(420)는 EDKRK와 디바이스 ID 쌍을, 엔지니어링 컴퓨팅 디바이스(450)와 관련하여 엔지니어링 목적을 위해 이용될 수 있는 중앙 코드 서명 서버(430)로 전송한다. 또한, 단계 5c에서 중앙 기억 장치(420)는 고객이 컴퓨팅 디바이스(460)를 수리나 업그레이드를 위해 의뢰한 경우 이용될 수 있는 EDKRK와 디바이스 ID 쌍을 수리 센터(440)로 전송한다. 물론, 다른 예들에서 EDKRK와 디바이스 ID 쌍은 특정 환경 하에서, 다른 서명 서버들 또는 엔티티들에 적절하게 이용가능하게 할 수 있다.
도 3에 도시된 바와 같이, 코드 서명 서버(430) 및 수리 센터(440)에는 하드웨어 보안 모듈 또는 다른 안전한 기억 장치에 저장되는 DKRK가 사전에 제공되는데, 이 DKRK는 EDKRK를 복호화하여 UDK를 획득하는데 이용된다. 그 후에, 코드 서명 서버(430) 및 수리 센터(440)는 컴퓨팅 디바이스 상에 로드될 임의의 신뢰된 소프트웨어 코드를 서명/암호화하는 데 UDK를 이용할 수 있다. 비대칭 디바이스 키들의 경우, 코드 서명 서버(440)는 EDKRK를 복호화하여 특정 디바이스에 전달될 코드 또는 그 외 다른 디지털 정보의 암호화에 이용되는 UDK의 공개 부분(UDPK)을 획득한다.
수리 센터(440)는 일반적으로 자신의 코드 서명 서버를 가질 것이다. 이 코드 서명 서버는 특정 디바이스 ID에 대한 요청에 기반하여 적합한 EDKRK를 검색할 수 있다. 그 후에, 코드 서명 서버는 바람직하게는 하드웨어 보안 모듈 내에 또는 다른 유사한 매커니즘으로 안전하게 저장된 DKRK를 이용하여 EDKRK를 복호화할 것이다. 그 후에, 신뢰된 제3자에 의해 제공된 소프트웨어 코드는 UDK를 이용하여 서명/암호화될 수 있고, 서명/암호화된 코드는 결국 수리 또는 업데이트 중인 컴퓨팅 디바이스 상에 로드될 수 있다.
팩토리 도메인(330)으로 다시 돌아가서, 단계 4b에서, 사전에 EDKPK를 제공받은 컴퓨팅 디바이스(320)는 디바이스 개인화 프로세스의 나머지 단계를 거친다. 프로세스의 다음 부분은 컴퓨팅 디바이스(320) 상에 로드될 필요한 소프트웨어 코드를 포함하는 팩토리 코드 서명 서버(340)를 이용하여, 서명된 코드를 컴퓨팅 디바이스 상에 로드하는 단계를 포함한다. 이 프로세스는 컴퓨팅 디바이스(320)에 고유하게 할당된 UDK를 이용하여 코드가 서명 및/또는 암호화되기를 요청한다. 이 프로세스를 수행하기 위해, 팩토리 코드 서명 서버(340)는 대응하는 EDKRK와 디바이스 ID 쌍을 수신할 필요가 있다. 도 3에 도시된 예에서, 이것은 2개의 방법 중 하나로 달성될 수 있다. 우선, 단계 6의 옵션 1에서, EDKRK와 디바이스 ID 쌍은 디바이스 인터페이스 스테이션(330)에 의해 팩토리 코드 서명 서버(340)로 전송될 수 있다. 대안적으로, 단계 6의 옵션 2에서, EDKRK와 디바이스 ID 쌍은 키 개인화 서버(310)에 의해 팩토리 코드 서명 서버(340)로 전송될 수 있다. 팩토리 코드 서명 서버(340)는, 사전에 제공된 DKRK를 이용하여, EDKRK를 복호화하여 UDK를 획득한다. 팩토리 코드 서명 서버(340)는 UDK를 이용하여 소프트웨어 코드를 서명 및/또는 암호화한다.
단계 7a에서, 팩토리 코드 서명 서버(340)는 요청된 소프트웨어 코드를 디바이스 인터페이스 스테이션(330)으로 전송한다. 소프트웨어 코드는 특정 컴퓨팅 디바이스(320)를 위해 UDK에 의해 서명 및/또는 암호화된다. 디바이스 인터페이스 스테이션(330)은 결국 단계 7b에서 서명된 및/또는 암호화된 소프트웨어 코드를 컴퓨팅 디바이스(320) 상에 로드한다. 단계 4b에서 사전에 EDKPK를 수신하고, 복호화하여 UDK를 획득한 컴퓨팅 디바이스(320)는, 단계 8에서, UDK를 이용하여 소프트웨어 코드를 검증하고 복호화하여 휘발성 메모리에 로드한 후에, 이 코드를 실행한다. 대안적으로, 컴퓨팅 디바이스는 클리어한 소프트웨어 코드를 비휘발성 메모리에 저장하고, 차후에 이를 로드 및 실행한다.
단계 9는 엔지니어링 컴퓨팅 디바이스(450)가 엔지니어링 설비에서 업데이트된 코드가 제공될 필요가 있는 상황을 도시한다. 이를 달성하기 위해, 단계 9a에서 신뢰된 직원은 신뢰된 서버에 액세스하고, 디바이스 ID를 엔지니어링 컴퓨팅 디바이스(450)로부터 중앙 코드 서명 서버(430)로 전송한다. 서명 서버(430)는 이 디바이스 ID에 연결된 EDKRK를 검색하고, 바람직하게는 하드웨어 보안 모듈에 저장된 DKRK를 이용하여 EDKRK를 복호화한다. 단계 9b에서, 중앙 코드 서명 서버(430)는 UDK를 이용하여 코드를 서명 및/또는 암호화하고, 서명된 및/또는 암호화된 코드를 신뢰된 직원에게 반환하며, 이 직원은 서명/암호화된 코드를 엔지니어링 컴퓨팅 디바이스(450)에 로드한다.
단계 9와 마찬가지로, 단계 10은 사전에 배포된 컴퓨팅 디바이스(460)가 수리 센터(440)에서 수리될 필요가 있는 상황을 도시한다. 이를 달성하기 위해, 수리 센터(440)에 액세스할 수 있는 신뢰된 서버는 컴퓨팅 디바이스(460)로부터의 디바이스 ID에 액세스한다. 신뢰된 서버는 이 디바이스 ID에 연결된 EDKRK를 검색하고, 바람직하게는 하드웨어 보안 모듈에 저장된 DKRK를 이용하여 EDKRK를 복호화한다. 신뢰된 서버는 UDK를 이용하여 수리를 수행할 필요가 있는 코드를 서명 및/또는 암호화하고, 수리 또는 업데이트가 필요한 컴퓨팅 디바이스(460) 상에 서명된 및/또는 암호화된 코드를 로드한다.
도 4는 본 명세서에 기술된, 고유의 디바이스 키들을 컴퓨팅 디바이스들에 제공하기 위한 프로세스들이 구현될 수 있는 동작 환경의 다른 예를 도시한다. 도 3 및 도 4에서, 유사한 구성요소들은 유사한 참조번호들로 나타내었다. 도 3의 예에서 UDK들은 오프라인에서 생성되고 암호화되지만, 도 4의 예에서 UDK들은 디바이스 개인화를 할 때에 키 개인화 서버(310)에 의해 생성되고 암호화된다. 이 예에서, 프로세스는 단계 1에서 시작되는데, 단계 1은 키 개인화 서버가 EDKPK/EDKRK 쌍을 디바이스 ID에 할당하라는 요청과 함께 디바이스 인터페이스 스테이션(330)으로부터 고유의 디바이스 ID를 수신하는 경우에 시작된다. 단계 3에서 키 개인화 서버(310)는 컴퓨팅 디바이스에 대한 새로운 UDK를 생성하고, 그 후에, DKPK에 의해 UDK를 암호화하여 EDKPK를 생성한다. 마찬가지로, 키 개인화 서버(310)는 DKRK에 의해 UDK를 암호화하여 EDKRK를 획득한다. 그 후, 키 개인화 서버(310)는 UDK의 임의의 로컬 카피들을 제거하고, EDKPK와 EDKRK에 의한 ID의 쌍만을 저장한다.
도 4의 시스템을 통한 프로세스 흐름의 나머지는, 도 3에서와 마찬가지로 진행한다. 즉, 도 4의 단계 3은 도 3의 단계 4에 대응하고, 도 4의 단계 4는 도 3의 단계 5에 대응한다.
더 구체적으로, 도 4의 단계 3a에서, EDKPK와 EDKRK 쌍은 디바이스 인터페이스 스테이션(330)으로 전송된다. 이 쌍은 전송되는 동안에 자신을 보호하기 위해 암호화된 프로토콜을 이용하여 암호화될 수 있다. 단계 3b에서, 디바이스 인터페이스 스테이션(330)은 전송되는 동안에 이 쌍을 보호했을 수 있는 임의의 추가적인 암호화를 제거하고, 제조 중인 컴퓨팅 디바이스(320)에 EDKPK를 전송한다. 컴퓨팅 디바이스(320)는 DKPK에 의해 EDKPK를 복호화하여 UDK(비대칭 키들의 경우, UDK의 개인 부분만)를 검색한다. 일부 경우들에서는, 디바이스는 팩토리가 자신의 대칭 UDK를 이용하는 동안에 로드된 초기 코드를 서명할 수 있다.
키 개인화 서버(420)는 디바이스 개인화 프로세스에 후속하는 차후의 이용을 위해 EDKRK 및 EDKRK의 디바이스 ID로의 링크를 저장할 필요가 있다. 따라서, 단계 4a에서, 키 개인화 서버(310)는 디바이스 ID와 EDKRK 쌍을 저장하고, 그 후에, 이 값들을 중앙 기억 장치(420)에 복제한다. 전술한 바와 같이, 디바이스에 대한 코드 업데이트들은 기술 개발 중에 그리고 수리 설비에서의 디바이스 수리 중에 각 디바이스의 UDK에 의해 서명 및/또는 암호화될 필요가 있다. 따라서, 단계 4b에서, 중앙 기억 장치(420)는 EDKRK와 디바이스 ID 쌍을, 엔지니어링 컴퓨팅 디바이스(450)와 관련하여 엔지니어링 목적을 위해 이용될 수 있는 중앙 코드 서명 서버(430)로 전송한다. 또한, 단계 4c에서 중앙 기억 장치(420)는 고객이 컴퓨팅 디바이스(460)를 수리나 업그레이드를 위해 의뢰한 경우 이용될 수 있는 EDKRK와 디바이스 ID 쌍을 수리 센터(440)로 전송한다. 물론, 다른 예들에서 EDKRK와 디바이스 ID 쌍은 특정 환경 하에서, 다른 서명 서버들 또는 엔티티들에 적절하게 이용가능하게 할 수 있다.
도 3에 도시된 바와 같이, 코드 서명 서버(430) 및 수리 센터(440)에는 하드웨어 보안 모듈 또는 다른 안전한 기억 장치에 저장되는 DKRK가 사전에 제공되며, 이 DKRK는 EDKRK를 복호화하여 UDK를 획득하는데 이용된다. 그 후에, 코드 서명 서버(430) 및 수리 센터(440)는 컴퓨팅 디바이스 상에 로드될 임의의 신뢰된 소프트웨어 코드를 서명/암호화하는 데 UDK를 이용할 수 있다. 비대칭 디바이스 키들의 경우, 코드 서명 서버(440)는 EDKRK를 복호화하여 특정 디바이스에 전달될 코드 또는 그외 다른 디지털 정보의 암호화에 이용되는 UDK의 공개 부분(UDPK)만을 획득한다.
수리 센터(440)는 일반적으로 자신의 코드 서명 서버를 가질 것이다. 이 코드 서명 서버는 특정 디바이스 ID에 대한 요청에 기반하여 적합한 EDKRK를 검색할 수 있다. 그 후에, 코드 서명 서버는 바람직하게는 하드웨어 보안 모듈 내에 또는 다른 유사한 매커니즘으로 안전하게 저장된 DKRK를 이용하여 EDKRK를 복호화할 것이다. 그 후에, 신뢰된 제3자에 의해 제공된 소프트웨어 코드는 UDK를 이용하여 서명/암호화될 수 있고, 서명/암호화된 코드는 결국 수리 또는 업데이트 중인 컴퓨팅 디바이스 상에 로드될 수 있다.
팩토리 도메인(330)으로 다시 돌아가서, 단계 3b에서, 사전에 EDKPK를 제공받은 컴퓨팅 디바이스(320)는 디바이스 개인화 프로세스의 나머지 단계를 거친다. 프로세스의 다음 부분은 컴퓨팅 디바이스(320) 상에 로드될 필요한 소프트웨어 코드를 포함하는 팩토리 코드 서명 서버(340)를 이용하여, 서명된 코드를 컴퓨팅 디바이스 상에 로드하는 단계를 포함한다. 이 프로세스는 컴퓨팅 디바이스(320)에 고유하게 할당된 UDK를 이용하여 코드가 서명 및/또는 암호화되기를 요청한다. 이 프로세스를 수행하기 위해, 팩토리 코드 서명 서버(340)는 대응하는 EDKRK와 디바이스 ID 쌍을 수신할 필요가 있다. 도 3에 도시된 예에서, 이것은 2개의 방법 중 하나로 달성될 수 있다. 우선, 단계 5의 옵션 1에서, EDKRK와 디바이스 ID 쌍은 디바이스 인터페이스 스테이션(330)에 의해 팩토리 코드 서명 서버(340)로 전송될 수 있다. 대안적으로, 단계 5의 옵션 2에서, EDKRK와 디바이스 ID 쌍은 키 개인화 서버(310)에 의해 팩토리 코드 서명 서버(340)로 전송될 수 있다. 팩토리 코드 서명 서버(340)는, 사전에 제공된 DKRK를 이용하여, EDKRK를 복호화하여 UDK를 획득한다. 팩토리 코드 서명 서버(340)는 UDK를 이용하여 소프트웨어 코드를 서명 및/또는 암호화한다.
단계 6a에서, 팩토리 코드 서명 서버(340)는 요청된 소프트웨어 코드를 디바이스 인터페이스 스테이션(330)으로 전송한다. 소프트웨어 코드는 특정 컴퓨팅 디바이스(320)를 위해 UDK에 의해 서명 및/또는 암호화된다. 디바이스 인터페이스 스테이션(330)은 결국 단계 6b에서 서명된 및/또는 암호화된 소프트웨어 코드를 컴퓨팅 디바이스(320) 상에 로드한다. 단계 3b에서 사전에 EDKPK를 수신하고 복호화하여 UDK를 획득한 컴퓨팅 디바이스(320)는, 단계 7에서, UDK를 이용하여 소프트웨어 코드를 검증하고 복호화하여 휘발성 메모리에 로드하고, 그 후 이 코드를 실행한다. 대안적으로, 컴퓨팅 디바이스는 클리어한 소프트웨어 코드를 비휘발성 메모리에 저장하고, 차후에 이를 로드 및 실행한다.
단계 8은 엔지니어링 컴퓨팅 디바이스(450)가 엔지니어링 설비에서 업데이트된 코드가 제공될 필요가 있는 상황을 도시한다. 이를 달성하기 위해, 단계 9a에서 신뢰된 직원은 신뢰된 서버에 액세스하고, 디바이스 ID를 엔지니어링 컴퓨팅 디바이스(450)로부터 중앙 코드 서명 서버(430)로 전송한다. 서명 서버(430)는 이 디바이스 ID에 연결된 EDKRK를 검색하고, 바람직하게는 하드웨어 보안 모듈에 저장된 DKRK를 이용하여 EDKRK를 복호화한다. 단계 9b에서, 중앙 코드 서명 서버(430)는 UDK를 이용하여 코드를 서명 및/또는 암호화하고, 서명된 및/또는 암호화된 코드를 신뢰된 직원에게 반환하며, 이 직원은 서명/암호화된 코드를 엔지니어링 컴퓨팅 디바이스(450)에 로드한다.
단계 8과 마찬가지로, 단계 9는 사전에 배포된 컴퓨팅 디바이스(460)가 수리 센터(440)에서 수리될 필요가 있는 상황을 도시한다. 이를 달성하기 위해, 수리 센터(440)에 액세스할 수 있는 신뢰된 서버는 컴퓨팅 디바이스(460)로부터의 디바이스 ID에 액세스한다. 신뢰된 서버는 이 디바이스 ID에 연결된 EDKRK를 검색하고, 바람직하게는 하드웨어 보안 모듈에 저장된 DKRK를 이용하여 EDKRK를 복호화한다. 신뢰된 서버는 UDK를 이용하여 수리를 수행할 필요가 있는 코드를 서명 및/또는 암호화하고, 수리 또는 업데이트가 필요한 컴퓨팅 디바이스(460) 상에 서명된 및/또는 암호화된 코드를 로드한다.
도 5는 본 명세서에서 기술된 기법들을 이용하여 고유의 암호화 디바이스 키들을 생성 및 배포하기 위한 방법의 일례를 설명하는 플로우 차트이다. 암호화 키들은 코드 서명 및/또는 암호화 서비스를 포함하되 이에 제한되지는 않는 다양한 목적들을 위해 제공될 수 있다. 본 방법은 단계 505에서 시작되는데, 이 특정 예에서는, 팩토리에서 설치된(factory-installed) 소프트웨어 코드를 컴퓨팅 디바이스에 제공하라는 요청이 수신된 경우에 시작된다. 이 요청은 컴퓨팅 디바이스의 디바이스 ID를 포함한다. 도 3에 도시된 특정 시스템이 이용되는 경우, 이 요청은 디바이스 인터페이스 스테이션(330)으로부터 키 개인화 서버(310)에 의해 수신될 수 있다. 이 요청에 응답하여, 단계 510에서, 디바이스 키 쌍의 암호화된 카피들(예컨대, EDKPK/EDKRK)의 쌍이 사전에 생성된 복수의 암호화된 디바이스 키들의 쌍들 중으로부터 검색된다. 단계 515에서, 암호화된 카피들의 검색된 쌍은, 예컨대 서명된 및/또는 암호화된 코드가 제공될 컴퓨팅 디바이스의 디바이스 ID와 연결된다. 단계 520에서, 검색된 쌍의 제1 암호화된 카피는 컴퓨팅 디바이스가 고객에게 배포된 이후에 후속 사용을 위해 서버로 전달된다. 일 구현에서, 서버는 컴퓨팅 디바이스 내에 제공될 서명된 및/또는 암호화된 소프트웨어 코드를 제공하기 위한 코드 서명 서버이다. 단계 525에서 검색된 쌍의 제1 암호화된 카피는 서버에 의해 복호화되어 제1 디바이스 키가 획득된다. 그 후, 단계 530에서 서버는 제1 디바이스 키를 이용하여 소프트웨어 코드를 서명 및/또는 암호화한다. 단계 535에서 디바이스 키들의 검색된 쌍의 제2 암호화된 카피와 서명된 및/또는 암호화된 소프트웨어 코드는 컴퓨팅 디바이스로 전달된다. 또한, 단계 540에서, 디바이스 ID와 연결된 디바이스 키들의 검색된 쌍의 제1 암호화된 카피는 하나 이상의 추가적인 서버들로 전송되기 때문에, 이 디바이스 키는, 예컨대 이미 고객에게 전달된 컴퓨팅 디바이스가 수리 및/또는 업그레이드를 위해 수리 센터에 의뢰된 경우에도 이용가능하게 된다.
본 명세서에서 기술된 하나 이상의 단계들과 기능들 및 본 명세서에서 기술된 시스템들의 하나 이상의 구성 요소들은 메모리 또는 다른 타입의 기억 장치 등의 컴퓨터 판독 가능한 기억 장치 상에 저장된 컴퓨터 판독 가능한 명령어들을 포함하는 컴퓨터 코드로서 구현될 수 있다. 컴퓨터 코드는 ASIC(Application Specific Integrated Circuit) 또는 다른 타입의 회로 등의 프로세서에 의해 이하에 기술되는 컴퓨터 시스템(400) 등의 컴퓨터 시스템 상에서 실행된다. 코드는 소스 코드, 목적 코드, 실행 코드 또는 다른 포맷들의 프로그램 명령어들을 포함하는 소프트웨어 프로그램으로서 존재할 수 있다.
도 6은 도 3 및 도 4에 도시된 시스템들의 다양한 서버, 스테이션 등을 위한 하드웨어 플랫폼으로서 이용될 수 있는 컴퓨터 시스템(600)을 도시한다. 컴퓨터 시스템(600)은 하드웨어 기억 장치인 하나 이상의 컴퓨터 판독가능한 기억 장치들에 저장된 소프트웨어로서 구현될 수 있는, 본 명세서에서 기술된 하나 이상의 단계들, 방법들 및 기능들을 실행하기 위한 플랫폼으로서 이용될 수 있다.
컴퓨터 시스템(600)은 본 명세서에서 기술된 방법들, 기능들 및 다른 단계들의 일부 또는 모두를 수행하는 소프트웨어 명령어들을 구현하거나 실행할 수 있는 프로세서(601) 또는 프로세싱 회로를 포함한다. 프로세서(601)로부터의 명령들과 데이터는 통신 버스(603)를 통해 통신된다. 컴퓨터 시스템(600)은 또한, 프로세서(601)를 위한 소프트웨어와 데이터가 실행 시간 동안 상주할 수 있는 RAM(Random Access Memory) 등의 컴퓨터 판독 가능한 기억 장치(602)를 포함한다. 기억 장치(602)는 또한, 비휘발성 데이터 기억 장치를 포함할 수 있다. 컴퓨터 시스템(600)은 네트워크 접속하기 위한 네트워크 인터페이스(604)를 포함할 수 있다. 컴퓨터 시스템(600)에 다른 공지된 전자 부품들이 추가 또는 대체될 수 있다는 것은 당업자에게 명백하다.
본 출원에서 사용된 바와 같이, "구성 요소", "모듈", "시스템", "장치", "인터페이스" 등의 용어는 일반적으로 컴퓨터 관련 엔티티 또는 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행중인 소프트웨어를 지칭하기 위해 의도된 것이다. 예를 들어, 구성 요소는 프로세서 상에서 실행되는 프로세스, 프로세서, 객체, 실행가능한 것, 실행의 스레드, 프로그램, 및/또는 컴퓨터일 수 있으나, 이것에 한정되지는 않는다. 예를 들어, 컨트롤러 상에서 실행되는 어플리케이션과 컨트롤러는 모두 구성 요소일 수 있다. 하나 이상의 구성 요소들이 프로세스 및/또는 실행의 스레드 내에 상주할 수 있고, 구성 요소는 하나의 컴퓨터에 로컬라이즈(localize)될 수 있거나 및/또는 2개 이상의 컴퓨터들 사이에 배포될 수 있다.
또한, 청구하는 대상물은 표준화된 프로그래밍 기법 및/또는 엔지니어링 기법을 이용하여 개시된 대상물을 구현하도록, 컴퓨터를 제어하기 위한 소프트웨어, 펌웨어, 하드웨어 또는 이들의 임의의 조합을 생성하는 방법, 장치 또는 제조물로 구현될 수 있다. 본 명세서에서 사용된 "제조물"이라는 용어는 임의의 컴퓨터 판독가능한 디바이스, 캐리어 또는 매체로부터 액세스 가능한 컴퓨터 프로그램을 포함하도록 의도된 것이다. 예를 들어, 컴퓨터 판독 가능한 저장 매체는 자기 기억 장치(예컨대, 하드 디스크, 플로피 디스크. 자기 스트립...), 광 디스크(예컨대, CD(Compact Disk), DVD(Digital Versatile Disk)...), 스마트 카드 및 플래시 메모리 디바이스들(예컨대, 카드, 스틱, 키 드라이브...)를 포함할 수 있으나, 이것에 한정되지 않는다. 물론, 당업자라면 청구한 대상물의 범위를 벗어나지 않고서 이러한 구성에 수많은 변경이 이루어질 수 있음을 인식할 것이다.

Claims (20)

  1. 고유의 암호화 디바이스 키들을 생성하고 배포하기 위한 방법으로서,
    팩토리 도메인 내에서
    적어도 제1 디바이스 키를 생성하는 단계;
    상기 제1 디바이스 키를 제1 암호화 키에 의해 암호화하여 디바이스 키의 제1 암호화된 카피를 생성하는 단계;
    상기 제1 디바이스 키를 제2 암호화 키에 의해 암호화하여 상기 디바이스 키의 제2 암호화된 카피를 생성하는 단계 - 상기 제2 암호화 키는 상기 제1 암호화 키와는 상이함 - ;
    상기 디바이스 키의 상기 제1 암호화된 카피를 제조 중인 컴퓨팅 디바이스를 식별하는 디바이스 ID와 연관시키는 단계; 및
    상기 디바이스 키의 상기 제2 암호화된 카피를 상기 디바이스 ID와 연관시키는 단계;
    상기 디바이스 키의 상기 제2 암호화된 카피를 상기 컴퓨팅 디바이스로 전송하여 컴퓨팅 디바이스 상에 로드하는 단계; 및
    상기 컴퓨팅 디바이스가 고객에게 배포된 이후에 후속적인 사용을 위해, 상기 디바이스 키의 상기 제1 암호화된 카피 및 이와 연관된 상기 디바이스 ID를 상기 팩토리 도메인 외부의 적어도 하나의 서버로 전송하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제1 디바이스 키는 오프라인에서 생성 및 암호화되며,
    상기 제1 디바이스 키의 암호화되지 않은 버전을 키 개인화 서버에 로드하지 않고서, 암호화된 디바이스 키들의 제1 카피 및 제2 카피를 로드하는 단계; 및
    상기 키 개인화 서버를 이용하여, 상기 디바이스 ID를 상기 암호화된 디바이스 키들의 상기 제1 카피 및 상기 제2 카피와 연관시키는 단계
    를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 제1 디바이스 키는 제1 서명 키이며,
    상기 방법은,
    상기 제1 서명 키에 의해, 디바이스 개인화에 이용되는 소프트웨어 코드를 서명하고 상기 서명된 소프트웨어 코드를 제조 중인 상기 컴퓨팅 디바이스 상에 로드하는 것; 또는
    상기 제1 서명 키에 의해, 디바이스 개인화에 이용되는 소프트웨어 코드를 암호화하고 상기 암호화된 소프트웨어 코드를 제조 중인 상기 컴퓨팅 디바이스 상에 로드하는 것
    중 하나 이상을 수행하는 단계를 더 포함하는 방법.
  4. 제3항에 있어서,
    제1 암호화된 서명 키를 복호화함으로써 상기 제1 서명 키를 획득하는 단계를 더 포함하는 방법.
  5. 제1항에 있어서,
    상기 제1 디바이스 키는 대칭 키인 방법.
  6. 제1항에 있어서,
    상기 제1 디바이스 키는 비대칭 키 쌍의 공개 부분인 방법.
  7. 제5항에 있어서,
    상기 제1 디바이스 키는 제1 디바이스 키가 연관되어 있는 상기 컴퓨팅 디바이스에 고유한 것이며, 복수의 컴퓨팅 디바이스들의 각각은, 임의의 다른 컴퓨팅 디바이스 상에 로드되는 암호화된 제1 디바이스 키와는 상이한 제1 디바이스 키를 암호화하는 제2 암호화된 디바이스 키에 의해 로드되는 방법.
  8. 명령어들에 의해 인코딩된 적어도 하나의 컴퓨터 판독 가능한 매체로서,
    상기 명령어들은, 프로세서에 의해 실행되는 경우,
    디바이스 키의 제1 암호화된 카피를 수신하는 단계 - 상기 제1 암호화된 카피는 제1 암호화 키에 의해 암호화되는 상기 디바이스 키를 나타냄 - ;
    상기 디바이스 키의 제2 암호화된 카피를 수신하는 단계 - 상기 제2 암호화된 카피는 제2 암호화 키에 의해 암호화되는 상기 디바이스 키를 나타내고, 상기 디바이스 키의 상기 제2 암호화된 카피는 상기 디바이스 키의 상기 제1 암호화된 카피와 상이하며, 상기 제2 암호화 키가 상기 제1 암호화 키와 상이함 - ;
    상기 디바이스 키의 상기 제1 암호화된 카피를, 서명되거나 암호화된 소프트웨어 코드가 제공될 컴퓨팅 디바이스의 디바이스 ID에 연결(link)하는 단계;
    상기 디바이스 키의 상기 제2 암호화된 카피를 상기 디바이스 ID에 연결하는 단계;
    상기 디바이스 ID에 연결된 상기 디바이스 키의 상기 제1 암호화된 카피를, 상기 컴퓨팅 디바이스에 제공될 상기 서명되거나 암호화된 소프트웨어 코드를 제공하는 제1 코드 서명 서버로 전달하는 단계 - 상기 서명되거나 암호화된 소프트웨어 코드는 상기 디바이스 키에 의해 서명됨 - ; 및
    상기 디바이스 키의 상기 제2 암호화된 카피와 상기 서명되거나 암호화된 소프트웨어 코드를 상기 컴퓨팅 디바이스로 전달하는 단계
    를 포함하는 방법을 수행하는 컴퓨터 판독 가능한 매체.
  9. 제8항에 있어서,
    상기 디바이스 ID에 연결된 상기 디바이스 키의 상기 제1 암호화된 카피를 하나 이상의 추가적인 코드 서명 서버들로 전달하는 단계를 더 포함하는 컴퓨터 판독가능한 매체.
  10. 제9항에 있어서,
    상기 제1 코드 서명 서버는 팩토리 코드 서명 서버이고, 상기 제1 코드 서명 서버에 의해 제공되는 상기 서명된 코드는 팩토리에서 설치된(factory-installed) 코드이며, 상기 추가적인 코드 서명 서버들 중 적어도 하나는 컴퓨팅 디바이스들이 고객들에 배포된 이후에 컴퓨팅 디바이스들을 서비스하는 설비와 연관되어 있는 컴퓨터 판독가능한 매체.
  11. 제8항에 있어서,
    소프트웨어 코드에 대한 요청을 수신하는 단계 - 상기 요청은 상기 코드가 제공될 상기 컴퓨팅 디바이스의 디바이스 ID를 포함함 - , 및
    이에 응답하여, 상기 디바이스 키를 생성하고 암호화하는 단계
    를 더 포함하는 컴퓨터 판독가능한 매체.
  12. 제8항에 있어서,
    소프트웨어 코드에 대한 요청을 수신하는 단계 - 상기 요청은 상기 코드가 제공될 상기 컴퓨팅 디바이스의 디바이스 ID를 포함함 - , 및
    이에 응답하여, 복수의 사전에 생성된 암호화된 디바이스 키 쌍들로부터 암호화된 디바이스 키 쌍을 검색하는 단계
    를 더 포함하는 컴퓨터 판독가능한 매체.
  13. 제8항에 있어서,
    고유의 디바이스 키를 암호화하는 서로 다른 제1 및 제2 암호화된 디바이스 키 쌍을 서로 다른 디바이스 ID들에 연결하는 단계를 더 포함하는 컴퓨터 판독가능한 매체.
  14. 코드 서명 서비스들을 제공하기 위한 시스템으로서,
    복수의 암호화된 디바이스 키 쌍들을 저장하는 키 저장소(key store) - 복수의 암호화된 디바이스 키 쌍들 각각은 디바이스 키의 제1 암호화된 카피 및 제2 암호화된 카피를 포함하고, 디바이스 키들의 제1 암호화된 카피들의 각각은 제1 암호화 키에 의해 디바이스 키를 암호화하고, 상기 디바이스 키들의 제2 암호화된 카피들의 각각은 제2 암호화 키에 의해 상기 디바이스 키를 암호화하며, 상기 제1 암호화 키는 상기 제2 암호화 키와 상이하여 상기 디바이스 키의 제2 암호화된 카피는 상기 디바이스 키의 제1 암호화된 카피와는 상이함 - ; 및
    상기 키 저장소와 통신하는 하나 이상의 서버들 - 상기 하나 이상의 서버들은 (i) 각각의 암호화된 디바이스 키 쌍에 대하여, 상기 디바이스 키의 제1 암호화된 카피와 상기 디바이스 키의 제2 암호화된 카피를, 서명되거나 암호화된 소프트웨어 코드가 제공될 각각의 컴퓨팅 디바이스의 각각의 디바이스 ID에 연결하고; (ii) 디바이스 ID들 중 제1 디바이스 ID에 연결된 제1 디바이스 키 쌍 내의 상기 디바이스 키의 상기 제1 암호화된 카피를 코드 서명 서버에 전달하고; (iii) 상기 디바이스 키의 제2 암호화된 카피를 상기 제1 디바이스 ID에 의해 식별되는 상기 컴퓨팅 디바이스에 전달하고, (iv) 상기 제1 디바이스 키 쌍 내의 상기 디바이스 키의 제1 암호화된 카피로부터 상기 제1 디바이스 키를 복호화하고, 상기 소프트웨어 코드를 상기 제1 디바이스 키에 의해 암호화하고, 그리고 (v) 상기 서명되거나 암호화된 소프트웨어 코드를 상기 제1 디바이스 ID에 의해 식별되는 상기 컴퓨팅 디바이스에 전달하도록 구성됨 -
    을 포함하는 시스템.
  15. 제14항에 있어서,
    상기 하나 이상의 서버들은 상기 디바이스 ID들의 각각에 연결된 상기 복수의 암호화된 디바이스 키 쌍들 내의 상기 디바이스 키들의 상기 제1 암호화된 카피들을 하나 이상의 추가적인 코드 서명 서버들에 전달하도록 더 구성되는 시스템.
  16. 제14항에 있어서,
    상기 제1 디바이스 ID에 의해 식별되는 상기 컴퓨팅 디바이스와의 통신을 확립하고, 상기 컴퓨팅 디바이스의 상기 제1 디바이스 ID를 상기 하나 이상의 서버들에 전송하고, 또한 암호화된 디바이스 키 쌍이, 제1 ID에 의해 식별되는 상기 컴퓨팅 디바이스에 연결되도록 상기 하나 이상의 서버들로부터 요청하도록 구성되는 디바이스 인터페이스 스테이션을 더 포함하는 시스템.
  17. 제14항에 있어서,
    상기 하나 이상의 서버들은 오프라인 키 생성 설비로부터 상기 복수의 암호화된 디바이스 키 쌍들을 수신하도록 구성된 키 개인화 서버를 더 포함하는 시스템.
  18. 제14항에 있어서,
    상기 하나 이상의 서버들은 (i) 상기 복수의 암호화된 디바이스 키 쌍들 내의 상기 디바이스 키들의 상기 제2 암호화된 카피들 및 상기 디바이스 키들의 상기 제2 암호화된 카피들에 각각 연결된 상기 디바이스 ID들을 수신하고, (ii) 상기 컴퓨팅 디바이스의 상기 제1 디바이스 ID에 연결된 상기 서명되거나 암호화된 소프트웨어 코드가 상기 컴퓨팅 디바이스 내에 제공되도록 구성된 팩토리 코드 서명 서버를 포함하는 시스템.
  19. 제18항에 있어서,
    (i) 상기 컴퓨팅 디바이스와의 통신을 확립하고, 키 개인화 서버에 상기 컴퓨팅 디바이스의 디바이스 ID를 전송하고; (ii) 암호화된 디바이스 키 쌍이 상기 컴퓨팅 디바이스의 디바이스 ID에 연결되기를 상기 키 개인화 서버로부터 요청하고; 및 (iii) 제2 암호화된 디바이스 키를 상기 컴퓨팅 디바이스로 전송하도록 구성된 디바이스 인터페이스 스테이션을 더 포함하는 시스템.
  20. 제19항에 있어서,
    상기 팩토리 코드 서명 서버는 상기 서명되거나 암호화된 소프트웨어 코드를 상기 디바이스 인터페이스 스테이션에 전송하도록 더 구성되는 시스템.
KR1020157010466A 2011-02-18 2012-01-26 고유의 코드 서명 키들의 보안 관리 및 개인화 KR20150052346A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161444167P 2011-02-18 2011-02-18
US61/444,167 2011-02-18
US13/150,636 2011-06-01
US13/150,636 US20120213370A1 (en) 2011-02-18 2011-06-01 Secure management and personalization of unique code signing keys
PCT/US2012/022725 WO2012112273A1 (en) 2011-02-18 2012-01-26 Secure management and personalization of unique code signing keys

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020137021685A Division KR20130118951A (ko) 2011-02-18 2012-01-26 고유의 코드 서명 키들의 보안 관리 및 개인화

Publications (1)

Publication Number Publication Date
KR20150052346A true KR20150052346A (ko) 2015-05-13

Family

ID=46652751

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137021685A KR20130118951A (ko) 2011-02-18 2012-01-26 고유의 코드 서명 키들의 보안 관리 및 개인화
KR1020157010466A KR20150052346A (ko) 2011-02-18 2012-01-26 고유의 코드 서명 키들의 보안 관리 및 개인화

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020137021685A KR20130118951A (ko) 2011-02-18 2012-01-26 고유의 코드 서명 키들의 보안 관리 및 개인화

Country Status (6)

Country Link
US (1) US20120213370A1 (ko)
EP (1) EP2676218A1 (ko)
KR (2) KR20130118951A (ko)
CN (1) CN103403729A (ko)
BR (1) BR112013021704A2 (ko)
WO (1) WO2012112273A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9774571B2 (en) * 2015-03-10 2017-09-26 Microsoft Technology Licensing, Llc Automatic provisioning of meeting room device
US20160269409A1 (en) 2015-03-13 2016-09-15 Microsoft Technology Licensing, Llc Meeting Join for Meeting Device
US10284376B2 (en) 2015-06-10 2019-05-07 Arris Enterprises Llc Code signing system with machine to machine interaction
EP3116187B1 (en) * 2015-07-09 2019-12-04 Nxp B.V. Methods for facilitating secure communication
US10805087B1 (en) * 2018-09-28 2020-10-13 Amazon Technologies, Inc. Code signing method and system
EP3672142B1 (de) * 2018-12-20 2021-04-21 Siemens Healthcare GmbH Verfahren und system zur sicheren übertragung eines datensatzes
US20220191693A1 (en) * 2020-12-11 2022-06-16 International Business Machines Corporation Remote management of hardware security modules
US12019778B1 (en) * 2023-11-22 2024-06-25 Verkada Inc. Systems and methods to perform end to end encryption

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998043212A1 (en) * 1997-03-24 1998-10-01 Visa International Service Association A system and method for a multi-application smart card which can facilitate a post-issuance download of an application onto the smart card
US6904527B1 (en) * 2000-03-14 2005-06-07 Xilinx, Inc. Intellectual property protection in a programmable logic device
GB0114317D0 (en) * 2001-06-13 2001-08-01 Kean Thomas A Method of protecting intellectual property cores on field programmable gate array
EP1418750A1 (en) * 2002-11-11 2004-05-12 STMicroelectronics Limited Security integrated circuit
JP4099039B2 (ja) * 2002-11-15 2008-06-11 松下電器産業株式会社 プログラム更新方法
CA2648780C (en) * 2006-04-25 2013-07-16 Stephen Laurence Boren Dynamic distributed key system and method for identity management, authentication servers, data security and preventing man-in-the-middle attacks
EP1865656A1 (en) * 2006-06-08 2007-12-12 BRITISH TELECOMMUNICATIONS public limited company Provision of secure communications connection using third party authentication
US8621540B2 (en) * 2007-01-24 2013-12-31 Time Warner Cable Enterprises Llc Apparatus and methods for provisioning in a download-enabled system
US20080219449A1 (en) * 2007-03-09 2008-09-11 Ball Matthew V Cryptographic key management for stored data
US8189793B2 (en) * 2007-08-28 2012-05-29 Panasonic Corporation Key terminal apparatus, crypto-processing LSI, unique key generation method, and content system
US8908870B2 (en) * 2007-11-01 2014-12-09 Infineon Technologies Ag Method and system for transferring information to a device
JP2010045535A (ja) * 2008-08-11 2010-02-25 Buffalo Inc 暗号キー管理システム、外部機器及び暗号キー管理プログラム

Also Published As

Publication number Publication date
KR20130118951A (ko) 2013-10-30
US20120213370A1 (en) 2012-08-23
EP2676218A1 (en) 2013-12-25
CN103403729A (zh) 2013-11-20
WO2012112273A1 (en) 2012-08-23
BR112013021704A2 (pt) 2016-11-01

Similar Documents

Publication Publication Date Title
US11178121B2 (en) Secure software updates
JP7364674B2 (ja) 安全な無線ファームウェアアップグレード
JP4668619B2 (ja) 装置鍵
KR20150052346A (ko) 고유의 코드 서명 키들의 보안 관리 및 개인화
US8761401B2 (en) System and method for secure key distribution to manufactured products
TWI567579B (zh) 用於對硬體裝置提供金鑰的方法和設備
CN1985466B (zh) 使用分发cd按签署组向设备传递直接证据私钥的方法
US11601261B1 (en) Secure key exchange electronic transactions
US7596812B2 (en) System and method for protected data transfer
US11290258B2 (en) Hybrid cryptographic system and method for encrypting data for common fleet of vehicles
KR20140059788A (ko) 무상태 애플리케이션 통지 기법
US9160723B2 (en) Framework for provisioning devices with externally acquired component-based identity data
CN109478214B (zh) 用于证书注册的装置和方法
CN106936588B (zh) 一种硬件控制锁的托管方法、装置及系统
US20080148062A1 (en) Method for the secure storing of program state data in an electronic device
CN103946858A (zh) 应用数据的解密和加密
CN104412273A (zh) 用于进行激活的方法和系统
CN104868998A (zh) 一种向电子设备供应加密数据的系统、设备和方法
CN111399867B (zh) 一种软件升级方法、装置、设备及计算机可读存储介质
JP2010212805A (ja) 決済処理セキュリティ情報配信方法、決済処理セキュリティ情報配信システム、そのセンタ装置、サーバ装置、決済端末、及びプログラム
US20210111906A1 (en) Pseudonym credential configuration method and apparatus
KR100749868B1 (ko) 장치 키
JP5180264B2 (ja) 装置鍵

Legal Events

Date Code Title Description
A107 Divisional application of patent
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid