KR100883442B1 - Method of delivering direct proof private keys to devices using an on-line service - Google Patents

Method of delivering direct proof private keys to devices using an on-line service Download PDF

Info

Publication number
KR100883442B1
KR100883442B1 KR1020077003426A KR20077003426A KR100883442B1 KR 100883442 B1 KR100883442 B1 KR 100883442B1 KR 1020077003426 A KR1020077003426 A KR 1020077003426A KR 20077003426 A KR20077003426 A KR 20077003426A KR 100883442 B1 KR100883442 B1 KR 100883442B1
Authority
KR
South Korea
Prior art keywords
key
secret key
data structure
encrypted data
secret
Prior art date
Application number
KR1020077003426A
Other languages
Korean (ko)
Other versions
KR20070032073A (en
Inventor
제임스 2세 수톤
어네스트 브릭켈
클리포드 홀
데이비드 그로우록
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Priority to KR1020077003426A priority Critical patent/KR100883442B1/en
Publication of KR20070032073A publication Critical patent/KR20070032073A/en
Application granted granted Critical
Publication of KR100883442B1 publication Critical patent/KR100883442B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic 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 a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Abstract

직접 증명 비밀키를 필드에 있는 클라이언트 컴퓨터 시스템에 설치된 디바이스에 전달하는 것은 디바이스에 상당한 비휘발성 저장소를 요구함 없이 보안적인 방식으로 달성될 수 있다. 고유의 의사 난수값이 생성되어 제조시 디바이스에 저장된다. 의사 난수값을 사용하여 디바이스와 연관된 직접 증명 비밀키 및 비밀키 다이제스트를 유지하는 데이터 구조를 암호화하는 대칭키를 생성한다. 그 결과의 암호화된 데이터 구조는 클라이언트 컴퓨터 시스템에 의해 액세스가능한 보호 온라인 서버 상에 저장된다. 디바이스가 클라이언트 컴퓨터 시스템 상에서 개시될때, 시스템은 로컬 암호화된 데이터 구조가 시스템에 존재하는지를 체크한다. 로컬 암호화된 데이터 구조가 존재하지 않는다면, 시스템은 보안 프로토콜을 사용하여 보호 온라인 서버로부터 관련 암호화된 데이터 구조를 획득한다. 디바이스는 직접 증명 비밀키를 획득하기 위해 저장된 의사 난수값으로부터 재생성된 대칭키를 이용하여 암호화된 데이터 구조를 복호화한다. 비밀키가 유효하면, 이 비밀키는 클라이언트 컴퓨터 시스템에 있는 디바이스에 의해 후속의 인증 프로세싱용으로 사용될 수 있다.

Figure 112007013085097-pct00001

Passing a direct proof secret key to a device installed in a client computer system in the field can be accomplished in a secure manner without requiring significant nonvolatile storage on the device. Unique pseudo random values are generated and stored in the device at the time of manufacture. The pseudorandom value is used to generate a symmetric key that encrypts the data structure holding the direct proof secret and secret key digest associated with the device. The resulting encrypted data structure is stored on a protected online server accessible by the client computer system. When a device is launched on a client computer system, the system checks whether a local encrypted data structure exists in the system. If no local encrypted data structure exists, the system uses a secure protocol to obtain the relevant encrypted data structure from the protected online server. The device decrypts the encrypted data structure using the symmetric key regenerated from the stored pseudorandom value to obtain the proof secret key directly. If the secret key is valid, it can be used for subsequent authentication processing by a device in the client computer system.

Figure 112007013085097-pct00001

Description

온라인 서비스를 사용하여 직접 증명 비밀키를 디바이스에 전달하는 방법{METHOD OF DELIVERING DIRECT PROOF PRIVATE KEYS TO DEVICES USING AN ON-LINE SERVICE}METHOOD OF DELIVERING DIRECT PROOF PRIVATE KEYS TO DEVICES USING AN ON-LINE SERVICE}

본 발명은 일반적으로 컴퓨터 보안에 관한 것으로, 보다 상세하게는, 암호키를 프로세싱 시스템의 디바이스로 보안성있게 분배하는 것에 관한 것이다.FIELD OF THE INVENTION The present invention generally relates to computer security, and more particularly to securely distributing cryptographic keys to devices in a processing system.

콘텐츠 보호 및/또는 컴퓨터 보안 특징을 지원하는 일부 프로세싱 시스템 아키텍처는, 특별히 보호되거나 "신뢰된" 소프트웨어 모듈이 (예를 들면, 그래픽 컨트롤러 카드 같은) 프로세싱 시스템에 있는 특별히 보호되거나 "신뢰된" 하드웨어 디바이스를 사용하여 인증 암호화 통신 세션을 생성할 수 있는 것을 요구한다. 디바이스를 식별하고 동시에 암호화 통신 세션을 생성하는데 공통적으로 사용되는 한가지 방법은, 일방이 인증된 DH(Diffe-Helman) 키 교환 프로세스를 사용하는 것이다. 이 프로세스에서, 디바이스에는 고유의 공개/비밀 RSA(Rivest, Shamir and Adelman) 알고리즘 키 쌍 또는 고유의 ECC(Elliptic Curve Cryptography) 키 쌍이 할당된다. 그러나, 이 인증 프로세스에서는 RSA 또는 ECC 키를 사용하기 때문에, 디바이스가 고유의 입증가능 아이덴티티(identity)를 갖게 되고, 이는 프라이버시 우려를 발생시킬 수 있다. 최악의 경우에, 이들 우려는 결과적으로 그러한 종류의 보안성을 제공하는 신뢰성있는 디바이스를 구축하는 OEMs(original equipment manufacturers)로부터의 지원이 부족하게 할 수 있다.Some processing system architectures that support content protection and / or computer security features include specially protected or "trusted" hardware devices in which specially protected or "trusted" software modules are present in the processing system (such as a graphics controller card). Requires that an authenticated encrypted communication session be created. One method commonly used to identify devices and simultaneously create encrypted communication sessions is to use an authenticated Diffe-Helman (DH) key exchange process. In this process, the device is assigned a unique public / secret RSA (Rivest, Shamir and Adelman) algorithm key pair or a unique Elliptic Curve Cryptography (ECC) key pair. However, since this authentication process uses RSA or ECC keys, the device has a unique verifiable identity, which can create privacy concerns. In the worst case, these concerns may result in a lack of support from original equipment manufacturers (OEMs) building reliable devices that provide that kind of security.

본 발명의 특징 및 이점은 후술하는 본 발명의 상세한 설명으로부터 자명해 질 것이다.The features and advantages of the present invention will become apparent from the following detailed description of the invention.

도 1은 본 발명의 일 실시예에 따라 동작하는 TPM(Trusted Platform Module)으로 구현되는 플랫폼을 특색으로 하는 시스템을 도시한다.1 illustrates a system featuring a platform implemented with a Trusted Platform Module (TPM) operating in accordance with one embodiment of the present invention.

도 2는 도 1의 TPM을 포함하는 플랫폼의 제 1 실시예를 도시한다.FIG. 2 shows a first embodiment of a platform including the TPM of FIG. 1.

도 3은 도 1의 TPM을 포함하는 플랫폼의 제 2 실시예를 도시한다.3 illustrates a second embodiment of a platform including the TPM of FIG. 1.

도 4는 도 2의 TPM으로 구현된 컴퓨터 시스템의 예시적 실시예를 도시한다.4 illustrates an example embodiment of a computer system implemented with the TPM of FIG. 2.

도 5는 본 발명의 실시예에 따라 온라인 서비스를 이용하여 직접 증명 키(Direct Proof keys)를 디바이스에 분배하는 시스템의 도면이다.5 is a diagram of a system for distributing Direct Proof keys to a device using an online service in accordance with an embodiment of the present invention.

도 6은 본 발명의 실시예에 따라 온라인 서비스를 이용하여 직접 증명 키를 분배하는 방법의 단계를 도시하는 흐름도이다.6 is a flow chart illustrating the steps of a method for directly distributing an attestation key using an online service in accordance with an embodiment of the present invention.

도 7은 본 발명의 실시예에 따른 보호 서버 셋업 프로세싱을 도시하는 흐름도이다.7 is a flow diagram illustrating protection server setup processing in accordance with an embodiment of the present invention.

도 8은 본 발명의 실시예에 따른 디바이스 제조자 셋업 프로세싱을 도시하는 흐름도이다.8 is a flowchart illustrating device manufacturer setup processing in accordance with an embodiment of the present invention.

도 9는 본 발명의 실시예에 따른 디바이스 제조자 제조 프로세싱을 도시하는 흐름도이다.9 is a flowchart illustrating device manufacturer manufacturing processing in accordance with an embodiment of the present invention.

도 10 내지 도 12는 본 발명의 실시예에 따른 클라이언트 컴퓨터 시스템 셋업 프로세싱의 흐름도이다.10-12 are flowcharts of client computer system setup processing in accordance with an embodiment of the present invention.

도 13은 본 발명의 실시예에 따른 클라이언트 컴퓨터 시스템 프로세싱의 흐름도이다.13 is a flowchart of client computer system processing in accordance with an embodiment of the present invention.

보호된/신뢰된 디바이스가 그 자체를 인증하고, 신뢰된 소프트웨어 모듈을 사용하여 암호화 통신 세션을 확립할 수 있도록 직접 증명 기반 DH 키 교환 프로토콜을 이용하여 프로세싱 시스템에서 임의의 고유 아이덴티티 정보 생성을 방지할 수 있고, 이에 의해 프라이버시 문제가 초래하는 것을 방지할 수 있다. 그러나, 직접 증명 비밀키를 제조 라인에서 디바이스에 직접 내장하게 되면, 다른 접근법보다 더 보호된 비휘발성 저장소가 디바이스 상에 필요하게 되어, 디바이스 비용이 증가하게 된다. 본 발명의 실시예는, 온라인 서비스를 이용하여 보안성있는 방식으로 (예를 들면, 서명에 사용되는) 직접 증명(DP) 비밀키를 디바이스에 전달되도록 하고, 후속하여 디바이스 자체별로 설치되도록 할 수 있는 방법이다. 본 발명에서 제공되는 방법은 설치 프로세스를 위한 식별 정보를 디바이스가 드러낼 필요가 없도록 설계된다. 일 실시예에서, 이러한 능력을 지원하기에 요구되는 디바이스 저장소가 대략 300 내지 700 바이트에서 대략 40 바이트까지 감소될 수 있다. 디바이스에 대하여 직접 증명 기반 DH 키 교환을 구현하기에 요구되는 비휘발성 저장소를 감소시킴으로써, 이러한 기술을 보다 광범위하게 적용할 수 있게 된다.Use a direct proof-based DH key exchange protocol to prevent the generation of any unique identity information in the processing system so that protected / trusted devices can authenticate themselves and establish encrypted communication sessions using trusted software modules. This can prevent the privacy problem from incurring. However, embedding the direct proof secret key directly into the device in the manufacturing line requires more protected nonvolatile storage on the device than other approaches, leading to increased device costs. Embodiments of the present invention can be used to deliver a direct proof (DP) secret key (eg, used for signing) to a device in a secure manner using an online service, and subsequently to be installed on a per device basis. That's how it is. The method provided by the present invention is designed such that the device does not need to reveal identification information for the installation process. In one embodiment, the device storage required to support this capability may be reduced from approximately 300 to 700 bytes to approximately 40 bytes. By reducing the nonvolatile storage required to implement direct evidence-based DH key exchange for the device, this technique becomes more widely applicable.

본 발명의 실시예에서, DP 비밀 서명키는 디바이스 내에 또는 디바이스와 함께 배포되지는 않는다. 그 대신, 필드에 있는 디바이스는 제조자 또는 판매자, 또는 델리게이트(delegate)가 제공한 온라인 보호 서버로부터 자신의 비밀키를 안전하게 검색할 수 있는 프로토콜을 그 디바이스가 지원한다. 이 프로토콜은 디바이스와 서버 간에 신뢰 채널을 생성하고, 로컬 프로세싱 시스템 상의 소프트웨어를 포함하는 임의의 개재되는 소프트웨어에서의 신뢰를 필요로 하지는 않는다. In an embodiment of the invention, the DP secret signing key is not distributed in or with the device. Instead, the device in the field supports a protocol that allows the device to retrieve its private key securely from an online protection server provided by the manufacturer or vendor, or delegate. This protocol creates a trust channel between the device and the server and does not require trust in any intervening software, including software on the local processing system.

본 발명의 "일 실시예" 또는 "실시예"에 대한 명세서에서의 참조는 그 실시예와 연결하여 설명되는 특정 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 명세서에 걸쳐 다양한 개소에 등장하는 "일 실시예에서"의 어구 표현은 모두 동일한 실시예를 참조할 필요는 없다.Reference in the specification to “one embodiment” or “an embodiment” of the present invention means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, the phrase phrase "in one embodiment" appearing in various places throughout the specification is not necessarily all referring to the same embodiment.

후술하는 설명에서, 임의의 용어는 본 발명의 하나 이상의 실시예의 임의의 특징을 설명하는데 사용된다. 예를 들면, "플랫폼"은 정보를 송수신하는데 적응되는 임의의 유형의 통신 디바이스로서 정의된다. 다양한 플랫폼의 예는 컴퓨터 시스템, 개인 휴대 단말 장치, 셀룰러 전화, 셋톱 박스, 팩시밀리 기계, 프린터, 모뎀, 라우터 등을 포함하지만, 이에 제약 또는 한정되는 것은 아니다. "통신 링크"는 플랫폼에 적용되는 하나 이상의 정보 전달 매체로서 광범위하게 정의된다. 다양한 유형의 통신 링크의 예는 전기 배선(들), 광 섬유(들), 케이블(들), 버스 트레이스(들), 또는 무선 신호 기술을 포함하지만, 이에 제약 또는 한정되는 것은 아니다.In the description below, certain terms are used to describe any feature of one or more embodiments of the present invention. For example, a "platform" is defined as any type of communication device that is adapted to sending and receiving information. Examples of various platforms include, but are not limited to, computer systems, personal digital assistants, cellular telephones, set top boxes, facsimile machines, printers, modems, routers, and the like. "Communication link" is broadly defined as one or more information transfer media applied to a platform. Examples of various types of communication links include, but are not limited to, electrical wiring (s), optical fiber (s), cable (s), bus trace (s), or wireless signal technology.

"챌린저(challenger)"는 다른 엔티티로부터 확실성 또는 권한의 몇몇 검증을 요청하는 임의의 엔티티(예를 들면, 개인, 플랫폼, 시스템, 소프트웨어 및/또는 디바이스)를 말한다. 정상적으로, 이것은 요청된 정보를 드러내거나 제공하기 전에 수행된다. "응답기"는 권한, 유효성 및/또는 아이덴티티의 몇몇 증명을 제공하도록 요청받은 임의의 엔티티를 말한다. "인증 제조자"와 상호교환하여 사용될 수 있는 "디바이스 제조자"는 플랫폼 또는 디바이스를 제조하거나 구성하는 임의의 엔티티를 말한다.A "challenger" refers to any entity (eg, person, platform, system, software and / or device) that requests some verification of certainty or authority from another entity. Normally this is done before revealing or providing the requested information. "Responder" refers to any entity that has been asked to provide some proof of authority, validity and / or identity. "Device Manufacturer", which may be used interchangeably with "Authentication Manufacturer", refers to any entity that manufactures or configures a platform or device.

본 명세서에서 사용되는 바와 같이, 응답기가 몇몇 암호화 정보(예를 들면, 서명, 키 같은 비밀 등)를 소유하거나 인지한다는 것을 챌린저에게 "증명" 또는 "확신" 시킨다는 것은, 챌린저에게 노출된 정보 및 증명을 기초로, 응답기가 암호화 정보를 갖고 있을 확률이 높다는 것을 의미한다. 암호화 정보를 챌린저에게 "누설" 또는 "폭로"하지 않고 챌린저에게 이것을 증명하는 것은, 챌린저에게 개시된 정보에 기초하여, 챌린저가 암호화 정보를 결정하는 것이 계산적으로 불가능하다는 것을 의미한다.As used herein, to “challenge” or “confirm” a challenger that a responder owns or recognizes some cryptographic information (eg, a signature, a secret such as a key, etc.), the information and attestation exposed to the challenger. Based on this, it is likely that the responder has a high degree of encryption information. Proving this to the challenger without "leaking" or "disclosing" the encryption information to the challenger means that it is computationally impossible for the challenger to determine the encryption information based on the information disclosed to the challenger.

그러한 증명을 이후에 직접 증명이라 한다. 용어 "직접 증명"은 영-지식(zero-knowledge) 증명이라 하며, 이들 유형의 증명은 해당 분야에 공통적으로 공지되어 있다. 특히, 본 명세서에서 참조되는 특정의 직접 증명 프로토콜은, 본 출원인에게 양도되고, 2002년 11월 27일 출원되었으며, 발명의 명칭이 "System and Method for Establishing Trust Without Reavealing Identity"로서 공동 계류중인 미국 특허 출원번호 제 10/306,336호의 주제이다. 직접 증명은, 발급자가 정의한 공통 특성을 공유하는 많은 멤버의 패밀리를 발급자가 정의하는 프로토콜을 정의한다. 발급자는 전체로 패밀리를 나타내는 패밀리 공개 및 비밀키 쌍(Fpub 및 Fpri)을 생성한다. Fpri를 사용하여, 발급자는 또한 패밀리의 각각의 멤버에 대하여 고유의 직접 증명 비밀 서명키(DPpri)를 생성할 수 있다. 개별 DPpri에 의해 서명된 임의의 메시지는 패밀리 공개키(Fpub)를 사용하여 검증될 수 있다. 그러나, 그러한 검증은 단지 서명자가 패밀리의 멤버라는 것만 식별하고, 개별 멤버에 관한 정보를 고유하게 식별하는 것은 노출되지 않는다. 일 실시예에서, 발급자는 디바이스 제조자 또는 델리게이트(delegate)일 수 있다. 즉, 발급자는 공유된 특성을 기초로 디바이스 패밀리를 정의하고, 패밀리 공개/비밀키 쌍을 생성하며, DP 비밀키를 디바이스에 삽입할 수 있는 엔티티일 수 있다. 발급자는 또한 키의 소스 및 디바이스 패밀리의 특성을 식별하는 패밀리 공개키에 대한 인증서를 생성할 수 있다.Such proof is hereinafter referred to as direct proof. The term "direct proof" is referred to as zero-knowledge proof, and these types of proof are commonly known in the art. In particular, certain direct attestation protocols referenced herein are assigned to the applicant, filed on November 27, 2002, and co-pending US patent titled "System and Method for Establishing Trust Without Reavealing Identity". The subject matter of application number 10 / 306,336. Direct attestation defines a protocol in which the issuer defines a family of many members that share common characteristics defined by the issuer. The issuer creates family public and private key pairs (Fpub and Fpri) that represent the family as a whole. Using Fpri, the issuer can also generate a unique direct proof secret signing key (DPpri) for each member of the family. Any message signed by an individual DPpri can be verified using a family public key (Fpub). However, such verification only identifies that the signer is a member of the family, and uniquely identifying information about an individual member is not exposed. In one embodiment, the issuer may be a device manufacturer or delegate. That is, the issuer may be an entity that can define a device family based on shared properties, generate a family public / private key pair, and insert a DP secret key into the device. The issuer may also generate a certificate for the family public key that identifies the source of the key and the characteristics of the device family.

이제 도 1을 참조하면, 본 발명의 일 실시예에 따라 동작하는 ("신뢰 플랫폼 모듈" 또는 "TPM"로 칭해지는) 신뢰된 하드웨어 디바이스로 구현되는 플랫폼을 특색으로 하는 시스템의 실시예가 도시된다. 제 1 플랫폼(102, 챌린저)은 제 2 플랫폼(104, 응답기)이 자신에 관한 정보를 제공하는 요청(106)을 전송한다. 요청(106)에 응답하여, 제 2 플랫폼(104)은 요청된 정보(108)를 제공한다.Referring now to FIG. 1, shown is an embodiment of a system featuring a platform implemented with a trusted hardware device (called a “trust platform module” or “TPM”) operating in accordance with one embodiment of the present invention. The first platform 102 (challenger) sends a request 106 for the second platform 104 (responder) to provide information about itself. In response to the request 106, the second platform 104 provides the requested information 108.

부가적으로, 보안성을 높이기 위해, 제 1 플랫폼(102)은 요청된 정보(108)가 선택된 디바이스 제조자 또는 디바이스 제조자의 선택된 그룹(이후, "디바이스 제조자(들)(110)라 칭함)에 의해 제조된 디바이스로부터 전송되는지를 검증할 필요가 있다. 예를 들면, 본 발명의 일 실시예에 대하여, 제 1 플랫폼(102)은 요청된 정보가 디바이스 제조자(들)(110)에 의해 생성된 암호화 정보(예를 들면, 서명)을 구비하는지 보여줄 것을 제 2 플랫폼에 요구한다. 이러한 요구는 (도시된 바와 같은) 요청(106)에 삽입되거나 개별적으로 전송될 수 있다. 제 2 플랫폼(104)은 응답 형태로 정보를 제공함으로써 그 요구에 응답하여, 암호화 정보가 누설됨 없이, 제 2 플랫폼(104)이 디바이스 제조자(들)(110)에 의해 생성된 암호화 정보를 구비한다는 것을 제 1 플랫폼에게 확신시킨다. 상기 응답은 (도시된 바와 같은) 요청된 정보(108)의 일부이거나 개별적으로 전송될 수 있다.Additionally, to increase security, the first platform 102 may be configured by the requested device manufacturer or a selected group of device manufacturers (hereinafter referred to as "device manufacturer (s) 110). There is a need to verify that it is sent from the manufactured device, for example, for one embodiment of the present invention, the first platform 102 may encrypt the requested information generated by the device manufacturer (s) 110. Ask the second platform to show that it has information (eg, a signature) This request can be inserted into the request 106 (as shown) or sent separately. In response to the request by providing the information in response form, assure the first platform that the second platform 104 has the cryptographic information generated by the device manufacturer (s) 110 without leaking the cryptographic information. Let's do it. Based response may be part of the information 108 requested (as illustrated) it can be transmitted separately.

본 발명의 일 실시예에서, 제 2 플랫폼(104)은 TPM(Trusted Platform Module, 115)을 포함한다. TPM(115)은 디바이스 제조자(들)(110)에 의해 제조된 암호화 디바이스이다. 본 발명의 일 실시예에서, TPM(115)은 패키지로 밀봉된 소량의 온칩 메모리를 구비한 프로세서를 포함한다. TPM(115)은 응답이 유효 TPM으로부터 전송되는지를 판정하기 위해 TPM을 인에이블하도록 하는 정보를 제 1 플랫폼(102)에 제공한다. 사용되는 정보는 TPM의 아이덴티티 또는 제 2 플랫폼의 아이덴티티가 판정될 수 없도록 하는 콘텐츠이다.In one embodiment of the invention, the second platform 104 includes a Trusted Platform Module (TPM) 115. TPM 115 is a cryptographic device manufactured by device manufacturer (s) 110. In one embodiment of the invention, the TPM 115 includes a processor with a small amount of on-chip memory sealed in a package. TPM 115 provides the first platform 102 with information to enable the TPM to determine if a response is sent from the valid TPM. The information used is content such that the identity of the TPM or the identity of the second platform cannot be determined.

도 2는 TPM(115)을 구비한 제 2 플랫폼(104)의 제 1 실시예를 도시한다. 본 발명의 이 실시예에 있어서, 제 2 플랫폼(104)은 TPM(115)에 접속된 프로세서(202)를 포함한다. 일반적으로, 프로세서(202)는 정보를 처리하는 디바이스이다. 예를 들면, 본 발명의 일 실시예에서, 프로세서(202)는 마이크로프로세서, 디지털 신호 프로세서, 마이크로-컨트롤러 또는 심지어 상태 머신으로도 구현될 수 있다. 대안으로, 본 발명의 다른 실시예에서, 프로세서(202)는 FPGA(Field Programmable Gate Array)들 같은 프로그램가능 또는 하드코딩된 로직, TTL(transistor-transistor logic) 로직, 또는 심지어 ASIC(Application Specific Integrated Circuit)으로도 구현될 수 있다.2 shows a first embodiment of a second platform 104 with a TPM 115. In this embodiment of the present invention, the second platform 104 includes a processor 202 connected to the TPM 115. Generally, processor 202 is a device that processes information. For example, in one embodiment of the present invention, processor 202 may be implemented as a microprocessor, digital signal processor, micro-controller, or even a state machine. Alternatively, in another embodiment of the present invention, processor 202 may include programmable or hardcoded logic, such as field programmable gate arrays (FPGAs), transistor-transistor logic (TTL) logic, or even an application specific integrated circuit. It can also be implemented as).

본 명세서에서, 제 2 플랫폼(104)은 하나 이상의 키, 해시 값, 서명, 인증서 등과 같은 암호화 정보를 저장할 수 있는 저장 유닛(206)을 더 포함한다. "X"의 해시 값은 "Hash(X)"로 표현될 수 있다. 그러한 정보는 도 3에 도시된 바와 같이 저장 유닛(206) 대신 TPM(115)의 내부 메모리에 저장될 수 있다는 것이 예상된다. 암호화 정보는, 특히, TPM 외부에 저장된다면, 암호화될 수 있다.In this specification, the second platform 104 further includes a storage unit 206 that can store cryptographic information, such as one or more keys, hash values, signatures, certificates, and the like. The hash value of "X" may be expressed as "Hash (X)". It is anticipated that such information may be stored in the internal memory of the TPM 115 instead of the storage unit 206 as shown in FIG. 3. The encryption information can be encrypted, especially if stored outside the TPM.

도 4는 도 2의 TPM(115)으로 구현된 컴퓨터 시스템(300)을 포함하는 플랫폼의 실시예를 도시한다. 컴퓨터 시스템(300)은 버스(302) 및 그 버스(302)에 접속된 프로세서(310)를 포함한다. 컴퓨터 시스템(300)은 주 메모리 유닛(304) 및 정적 메모리 유닛(306)을 더 포함한다.4 illustrates an embodiment of a platform that includes a computer system 300 implemented with the TPM 115 of FIG. 2. Computer system 300 includes a bus 302 and a processor 310 connected to the bus 302. Computer system 300 further includes a main memory unit 304 and a static memory unit 306.

본 명세서에서, 주 메모리 유닛(304)은 프로세서(310)에 의해 실행되는 명령 및 정보를 저장하는 휘발성 반도체 메모리이다. 주 메모리(304)는 또한 프로세서(310)가 명령을 실행하는 동안 임시 변수 또는 다른 중간 정보를 저장하는데 사용될 수 있다. 정적 메모리 유닛(306)은 프로세서(310)용 명령 및 정보를 보다 영구적으로 저장하는 비휘발성 반도체 메모리이다. 정적 메모리(306)의 예로는 판독 전용 메모리(ROM)을 포함하지만, 이에 제약 또는 한정되는 것은 아니다. 주 메모리 유닛(304) 및 정적 메모리 유닛(306) 모두 버스(302)에 접속된다.In this specification, the main memory unit 304 is a volatile semiconductor memory that stores instructions and information executed by the processor 310. Main memory 304 may also be used to store temporary variables or other intermediate information while processor 310 executes instructions. The static memory unit 306 is a nonvolatile semiconductor memory that stores instructions and information for the processor 310 more permanently. Examples of static memory 306 include, but are not limited to, read-only memory (ROM). Both main memory unit 304 and static memory unit 306 are connected to bus 302.

본 발명의 일 실시예에서, 컴퓨터 시스템(300)은 도한 자기 디스크 또는 광 디스크 같은 데이터 저장 디바이스(308)를 포함하고, 이에 대응하는 드라이브 또한 정보 및 명령을 저장하는 컴퓨터 시스템(300)에 접속될 수 있다.In one embodiment of the invention, computer system 300 also includes a data storage device 308, such as a magnetic disk or an optical disk, and a corresponding drive is also connected to computer system 300 that stores information and instructions. Can be.

컴퓨터 시스템(300)은 또한 버스(302)를 경유하여 그래픽 컨트롤러 디바이스(314)에 접속되고, 상기 그래픽 컨트롤러 디바이스는 최종 사용자에게 정보를 표시하는 음극선관(CRT), 액정 표시 장치(LCD) 또는 임의의 평판 디스플레이 같은 디스플레이(도시 생략)를 제어한다. 일 실시예에서, 프로세서에 의해 실행되는 소프트웨어 모듈을 사용하여 인증된 암호화 통신 세션을 그래픽 컨트롤러가 확립할 수 있도록 하는 것이 바람직할 수 있다.Computer system 300 is also connected to graphics controller device 314 via bus 302, which may be a cathode ray tube (CRT), liquid crystal display (LCD) or any display of information to an end user. Controls a display (not shown), such as a flat panel display. In one embodiment, it may be desirable to enable the graphics controller to establish an authenticated encrypted communication session using a software module executed by a processor.

전형적으로, 영숫자 입력 디바이스(316)(예를 들면, 키보드, 키패드 등)는 정보 및/또는 커맨드 선택을 프로세서(310)와 통신하는 버스(302)에 접속될 수 있다. 또 다른 유형의 사용자 입력 디바이스는 마우스, 트랙볼, 터치 패드, 스타일러스 같은 커서 제어 유닛(318), 또는 방향 정보 및 커맨드 선택을 프로세서(310)와 통신하고 디스플레이(314) 상에서 커서의 움직임을 제어하는 커서 방향키이다.Typically, alphanumeric input device 316 (eg, keyboard, keypad, etc.) may be connected to bus 302 which communicates information and / or command selection with processor 310. Another type of user input device is a cursor control unit 318 such as a mouse, trackball, touch pad, stylus, or a cursor that communicates direction information and command selection with the processor 310 and controls the movement of the cursor on the display 314. Arrow keys.

통신 인터페이스 유닛(320)은 또한 버스(302)에 접속된다. 인터페이스 유닛(320)의 예로는 모뎀, 네트워크 인터페이스 카드, 또는 로컬 또는 광역 네트워크의 일부를 형성하는 통신 링크에 접속하는데 사용되는 기타 공지된 인터페이스가 포함된다. 이러한 방식에서, 컴퓨터 시스템(300)은, 예를 들면, 회사 인트라넷 및/또는 인터넷 같은 종래의 네트워크 인프라스트럭처를 통해 다수의 클라이언트 및/또는 서버와 접속될 수 있다. 일 실시예에서, 컴퓨터 시스템은 네트워크를 통해 온라인으로 보호 서버와 접속될 수 있다.The communication interface unit 320 is also connected to the bus 302. Examples of interface unit 320 include a modem, network interface card, or other known interface used to connect to a communication link that forms part of a local or wide area network. In this manner, computer system 300 may be connected to multiple clients and / or servers via conventional network infrastructure, such as, for example, corporate intranets and / or the Internet. In one embodiment, the computer system may be connected with a protection server online via a network.

전술한 다소의 내장 컴퓨터 시스템이 임의의 구현에 대하여 바람직할 수 있다는 것이 이해된다. 따라서, 컴퓨터 시스템(300)의 구성은 가격 제한, 성능 요구사항, 기술적 향상 및/또는 기타 환경과 같은 다수의 인자에 따라 구현이 변경될 것이다.It is understood that some of the aforementioned embedded computer systems may be desirable for any implementation. Thus, the configuration of computer system 300 will vary in implementation depending on a number of factors such as price constraints, performance requirements, technical improvements, and / or other circumstances.

적어도 일 실시예에서, 컴퓨터 시스템(300)은, 시스템에 다른 적대의 소프트웨어가 존재하더라도, 주 메모리(304) 및/또는 대량 저장 디바이스(308)에 저장되고 프로세서(310)에 의해 실행되어 특정 활동을 수행하는 특별히 보호된 "신뢰" 소프트웨어 모듈(예를 들면, 변형-억제 소프트웨어, 또는 보호된 프로그램을 실행하는 능력을 구비하는 시스템)의 사용을 지원할 수 있다. 이들 신뢰 소프트웨어 모듈의 일부는 등가적으로 "신뢰가능" 보호된 액세스를 다른 플랫폼에 요구하는 것이 아니라, 그래픽 컨트롤러(314) 같은 동일한 플랫폼 내의 하나 이상의 주변 디바이스에 요구한다. 일반적으로, 그러한 액세스는 신뢰 소프트웨어 모듈이 디바이스의 능력 및/또는 특정 아이덴티티를 식별할 수 있고, 다음에 시스템에 있는 다른 소프트웨어에 의해 스누프(snoop)되거나 스푸프(spoof)될 수 없는 데이터의 교환을 가능하게 하는 디바이스를 사용하여 암호화 세션을 성립하는 것을 요구한다. In at least one embodiment, computer system 300 is stored in main memory 304 and / or mass storage device 308 and executed by processor 310 to perform certain activities, even if other hostile software is present in the system. May support the use of specially protected “trusted” software modules (eg, strain-suppressing software, or systems having the ability to run protected programs) to perform the following. Some of these trusted software modules do not require equivalent "trusted" protected access to other platforms, but rather to one or more peripheral devices within the same platform, such as graphics controller 314. In general, such access allows the trusted software module to identify the device's capabilities and / or specific identities, and then exchange data that cannot be snooped or spoofed by other software in the system. It requires establishing an encryption session using a device that enables it.

디바이스를 식별하고 동시에 암호화 세션을 성립하는 종래의 한가지 방법은 일방이 인증된 DH 키 교환 프로세스를 사용한다는 것이다. 이 프로세스에서, 디바이스에는 고유의 공개/비밀 RSA 또는 ECC 키 쌍이 할당된다. 디바이스는 비밀키를 유지하고 보호하지만, 공개키는 인증서를 인증함과 함께 소프트웨어 모듈에 공개될 수 있다. DH 키 교환 프로세스 동안, 디바이스는 비밀키를 이용하여 메시지에 서명하고, 소프트웨어 모듈은 대응하는 공개키를 이용하여 이를 검증할 수 있다. 이에 의해 소프트웨어 모듈은 메시지가 관심 디바이스로부터 사실상 유래하였다는 것을 인증할 수 있다. One conventional method of identifying a device and at the same time establishing an encryption session is that one uses an authenticated DH key exchange process. In this process, the device is assigned a unique public / secret RSA or ECC key pair. The device maintains and protects the private key, but the public key can be disclosed to the software module with authenticating the certificate. During the DH key exchange process, the device signs the message using the private key, and the software module can verify it using the corresponding public key. This allows the software module to authenticate that the message actually originated from the device of interest.

그러나, 이 인증 프로세스가 RSA 또는 ECC 키를 사용하기 때문에, 디바이스는 고유하고 증명가능한 아이덴티티를 구비한다. 디바이스가 비밀키로 메시지에 서명하도록 할 수 있는 임의의 소프트웨어 모듈은 이러한 특정의 고유 디바이스카 컴퓨터 시스템에 존재한다는 것을 검증할 수 있다. 디바이스들이 프로세싱 시스템들 간에 거의 이동하지 않는다고 가정하면, 이 또한 증명가능한 고유의 컴퓨터 시스템 아이덴티티를 나타낸다. 또한, 디바이스의 공개키 자체는 일정한 고유값, 효과적으로는 영구적인 "쿠키"를 나타낸다. 일부의 경우에, 이들 특성은 중요한 프라이버시 문제로서 해석될 수 있다.However, because this authentication process uses an RSA or ECC key, the device has a unique and verifiable identity. Any software module that can allow a device to sign a message with a secret key can verify that it exists in this particular unique device car computer system. Assuming that devices rarely move between processing systems, this also represents a verifiable unique computer system identity. In addition, the device's public key itself represents a constant unique value, effectively a permanent "cookie". In some cases, these characteristics can be interpreted as important privacy issues.

대안적인 하나의 접근법은, 본 출원인에 양도되고, 2004/?/?에 출원되었으며 발명의 명칭이 "An Apparatus and Method for Establishing an Authenticated Encryped Session with a Device Without Exposing Privacy-Sensitive information"로서 공동 계류중인 미국 특허 출원 번호 10/???,???에 개시되어 있다. 이 접근법에서, 일방이 인증된 DH 프로세스에서의 RSA 또는 ECC 키의 사용은 직접 증명 키로 대체된다. 이 접근법을 사용하는 디바이스는 디바이스의 특정 패밀리에 속하는 것으로 인증될 수 있고, 이는 디바이스의 거동 또는 신뢰감에 관한 보장을 포함할 수 있다. 상기 접근법은 프로세싱 시스템을 나타내는 고유의 아이덴티티를 성립하는데 사용될 수 있는 임의의 고유 식별 정보를 노출하지 않는다.One alternative approach is assigned to the Applicant, filed on 2004 /? /? And co-pending with the name "An Apparatus and Method for Establishing an Authenticated Encryped Session with a Device Without Exposing Privacy-Sensitive information". US Patent Application No. 10 / ???, ???. In this approach, the use of RSA or ECC keys in one-sided authenticated DH processes is replaced with direct proof keys. Devices using this approach may be authenticated as belonging to a particular family of devices, which may include a guarantee regarding the behavior or reliability of the device. The approach does not expose any unique identifying information that may be used to establish a unique identity representing the processing system.

이 접근법이 양호하게 동작하더라도, RSA 또는 ECC 키보다 더 클수 있는 직접 증명 비밀키를 유지하기 위해 디바이스에 부가의 저장소가 필요하게 된다. 이러한 부가의 저장소 요구사항의 부담을 완화하기 위해, 본 발명의 실시예는 상기 키가 필요할 때, 디바이스에 실질적인 부가의 저장소를 요구하지 않고, 상기 디바이스가 직접 증명 비밀키를 갖는 것을 보장하는 시스템 및 프로세스를 정의한다. Although this approach works well, additional storage is needed on the device to maintain the direct proof secret key, which can be larger than the RSA or ECC key. In order to alleviate the burden of such additional storage requirements, embodiments of the present invention provide a system that, when the key is needed, does not require substantial additional storage on the device, and ensures that the device has a proof private key directly; Define the process.

본 발명의 적어도 일 실시예에서, 디바이스 제조자는 제조 라인에서 128 비트의 의사 난수를 디바이스에 저장하지고, 보다 큰 직접 증명 비밀키(DPpri)는 암호화되어 보호 서버에 의해 동작되는 온라인 서비스를 이용하여 필드에 있는 디바이스에 전달될 수 있다. 다른 실시예에서는 128 비트보다 길거나 더 짧은 수를 디바이스에 저장할 수 있다. 이 프로세스는 단지 특정의 디바이스만이 할당된 DPpri 키를 복호화하여 사용할 수 있다는 것을 보장한다. 도 5는 본 발명의 실시예에 따라 직접 증명 키를 배포하는 시스템(500)의 도면이다. 이 시스템에는 네개의 엔티티, 즉, 디바이스 제조 보호 시스템(502), 디바이스 제품 제조 시스템(503), 클라이언트 컴퓨터 시스템(504) 및 보호 서버(522)가 있다. 디바이스 제조 보호 시스템은 디바이스(506) 제조에 앞서 셋업 프로세스에서 사용되는 프로세싱 시스템을 포함한다. 제조 보호 시스템(502)은, 그 보호 시스템이 디바이스 제조처(예를 들면, 닫힌 시스템임) 외부의 해커 공격으로부터 보호되도록 디바이스 제조자에 의해 동작될 수 있다. 제품 제조 시스템(503)은 디바이스의 제조시에 사용될 수 있다. 일 실시예에서, 보호 시스템 및 제품 시스템은 동일 시스템일 수 있다. 디바이스(506)는 클라이언트 컴퓨터 시스템(예를 들면, 메모리 컨트롤러, 그래픽 컨트롤러 같은 주변 디바이스, I/O 디바이스 등)에 포함하기 위한 임의의 하드웨어를 포함한다. 본 발명의 실시예에서, 디바이스는 그 디바이스의 비휘발성 저장소에 저장된 의사 난수값 RAND(508)와 키 서비스 공개키 해시값(509)을 포함한다.In at least one embodiment of the present invention, the device manufacturer does not store 128-bit pseudorandom numbers on the device in the manufacturing line, and a larger direct proof secret key (DPpri) is encrypted using an online service operated by a protection server. It can be delivered to the device in the field. In other embodiments, the device may store a number longer or shorter than 128 bits. This process ensures that only certain devices can decrypt and use the assigned DPpri key. 5 is a diagram of a system 500 for distributing a proof key directly in accordance with an embodiment of the present invention. There are four entities in this system: device manufacturing protection system 502, device product manufacturing system 503, client computer system 504, and protection server 522. The device manufacturing protection system includes a processing system used in the setup process prior to device 506 manufacturing. The manufacturing protection system 502 can be operated by a device manufacturer such that the protection system is protected from hacker attacks from outside the device manufacturer (eg, a closed system). The product manufacturing system 503 can be used in the manufacture of the device. In one embodiment, the protection system and the product system may be the same system. Device 506 includes any hardware for inclusion in a client computer system (eg, a peripheral device such as a memory controller, a graphics controller, an I / O device, etc.). In an embodiment of the invention, the device includes a pseudo random number RAND 508 and a key service public key hash value 509 stored in the device's nonvolatile storage.

제조 보호 시스템은 보호 데이터베이스(510)와 생성 함수(512)를 포함한다. 보호 데이터베이스는 후술되는 방식으로 생성 함수(512)에 의해 생성되는 (제조될 디바이스당 적어도 하나 만큼의) 다수의 의사 난수값을 저장하는 데이터 구조를 포함한다. 생성 함수는 본 명세서에서 키블로브(514)로 칭해지는 데이터 구조를 생성하기 위한 (소프트웨어 또는 하드웨어에서 구현되는) 로직을 포함한다. 키블로브(514)는 적어도 세개의 아이템을 포함한다. 고유의 직접 증명 비밀키(DPpri)는 서명을 위해 디바이스에 의해 사용될 수 있는 암호화 키를 포함한다. DP 비밀 다이제스트(516)(DPpri 다이제스트)는 SHA-1 같은 보안 메시지 다이제스트를 생성하는 임의의 공지된 방법에 따른 DPpri의 메시지 다이제스트를 포함한다. 일부 실시예에서는 호환 목적을 위해 키블로브의 일부로서 비트 스트림을 포함하는 의사 난수 초기화 벡터(IV, 518)가 포함될 수 있다. 암호화용으로 스트림 암호가 사용되면, IV는 스트림 암호에 IV를 사용하기 위한 공지된 방법에서 사용된다. 암호화용으로 블록 암호가 사용되면, IV는 암호화될 메시지의 부분으로서 사용되어, 암호화의 각 인스턴스를 상이하게 되도록 한다. 제조 보호 시스템은 또한 이후에 상세히 설명되는 바와 같이 온라인 프로토콜용으로 사용되는 키 서비스 공개키(507)를 포함한다.The manufacturing protection system includes a protection database 510 and a generation function 512. The protection database includes a data structure that stores a number of pseudo-random values (at least one per device to be manufactured) generated by the generation function 512 in the manner described below. The generation function includes logic (implemented in software or hardware) for generating a data structure referred to herein as keyblob 514. The keyblob 514 includes at least three items. The unique direct proof secret key (DPpri) contains an encryption key that can be used by the device for signing. DP secret digest 516 (DPpri digest) includes DPpri's message digest according to any known method for generating a secure message digest, such as SHA-1. In some embodiments, a pseudo random number initialization vector (IV, 518) containing a bit stream as part of a keyblob may be included for compatibility purposes. If a stream cipher is used for encryption, the IV is used in a known method for using the IV in a stream cipher. If a block cipher is used for encryption, the IV is used as part of the message to be encrypted, causing each instance of encryption to be different. The manufacturing protection system also includes a key service public key 507 that is used for the online protocol as described in detail below.

본 발명의 일 실시예에서, 제조 보호 시스템은 하나 이상의 키블로브(이후 상세히 설명됨)를 생성하고 그 키블로브를 보호 서버(522) 상의 키블로브 데이터베이스(520)에 저장한다. 일 실시예에서, 키블로브 데이터베이스에는 다수의 키블로브가 존재할 수 있다. 보호 서버는 디바이스 제조자, 디바이스 판매자, 또는 기타 관계자에 의해 동작될 수 있다. 보호 서버는, 예를 들면, 인터넷과 같은 네트워크를 사용하여 클라이언트 컴퓨터 시스템(504)에 통신적으로 접속될 수 있다. 보호 서버는 또한 보호 서버와 디바이스 간 온라인 프로토콜에 사용하기 위한 키 서비스 비밀키(511)를 포함한다.In one embodiment of the invention, the manufacturing protection system generates one or more keyblobs (described in detail below) and stores the keyblobs in the keyblob database 520 on the protection server 522. In one embodiment, there may be multiple keyblobs in the keyblob database. The protection server can be operated by the device manufacturer, device vendor, or other party. The protection server may be communicatively connected to the client computer system 504 using, for example, a network such as the Internet. The protection server also includes a key service secret key 511 for use in the online protocol between the protection server and the device.

시스템(504) 내에 포함된 디바이스(506)와 통신 세션의 키 교환 및 인증을 위한 직접 증명 프로토콜을 사용하고 하고자 하는 클라이언트 컴퓨터 시스템(504)은 후술되는 키 서비스 공개/비밀키 쌍 및 온라인 프로토콜을 사용하여 보호 서버 상의 키블로브 데이터베이스(520)에서 선택된 키블로브(514)를 판독할 수 있다. 디바이스는 키블로브 데이터를 사용하여, 직접 증명 프로토콜 구현시 사용하기 위한 (후술되는 바와 같이) 로컬화 키블로브(524)를 생성한다. 디바이스 드라이버 소프트웨어(526)는 클라이언트 컴퓨터 시스템에 의해 실행되어 디바이스(506)를 초기화하고 제어한다.A client computer system 504 wishing to use and use a direct proof protocol for key exchange and authentication of a communication session with a device 506 contained within the system 504 uses a key service public / private key pair and an online protocol described below. The selected keyblob 514 can be read from the keyblob database 520 on the protection server. The device uses the keyblob data to generate a localized keyblob 524 (as described below) for use in the direct proof protocol implementation. Device driver software 526 is executed by the client computer system to initialize and control device 506.

본 발명의 실시예에서는 다섯개의 개별 단계의 동작이 있을 수 있다. 도 6은 본 발명의 실시예에 따라 직접 증명 키를 배포하는 방법의 단계를 설명하는 흐름도(600)이다. 본 발명의 실시예에 따라, 각 단계에서 임의의 액션이 실행될 수 있다. 디바이스 제조자의 현장에서는 적어도 세개의 단계, 즉, 보호 서버 셋업 단계(601), 디바이스 제조자 셋업 단계(602) 및 제품 제조 단계(604)가 있다. 보호 서버 셋업 단계는 본 명세서에서 도 7을 참조하여 설명된다. 디바이스 제조자 셋업 단계는 본 명세서에서 도 8을 참조하여 설명된다. 디바이스 제조자 제조 단계는 본 명세서에서 도 9를 참조하여 설명된다. 클라이언트 컴퓨터 시스템을 구비한 소비자 현장에서는 적어도 두개의 단계, 즉, 클라이언트 컴퓨터 시스템 셋업 단계(606) 및 클라이언트 컴퓨터 시스템 사용 단계(608)가 있다. 클라이언트 컴퓨터 시스템 셋업 단계는 본 명세서에서 도 10 내지 도 12를 참조하여 설명된다. 클라이언트 컴퓨터 시스템 사용 단계는 본 명세서에서 도 13을 참조하여 설명된다.In an embodiment of the present invention, there may be five separate steps of operation. 6 is a flow diagram 600 illustrating the steps of a method for directly distributing an attestation key in accordance with an embodiment of the present invention. According to embodiments of the present invention, any action may be executed at each step. At the device manufacturer's site, there are at least three steps: protection server setup step 601, device manufacturer setup step 602 and product manufacturing step 604. The protection server setup step is described herein with reference to FIG. 7. The device manufacturer setup step is described herein with reference to FIG. 8. Device manufacturer manufacturing steps are described herein with reference to FIG. At the consumer site with a client computer system, there are at least two steps, a client computer system setup step 606 and a client computer system use step 608. The client computer system setup step is described herein with reference to FIGS. 10-12. The steps of using a client computer system are described herein with reference to FIG.

도 7은 본 발명의 실시예에 따른 보호 서버 셋업 단계 프로세싱을 설명하는 흐름도(700)이다. 이 프로세싱은 디바이스 제조에 앞서 디바이스 제조자에 의해 실행될 수 있다. 블록(702)에서, 디바이스 제조자는 키 검색 요청을 지원하기 위한 보호 서버(522)를 설립한다. 일 실시예에서, 보호 서버는 공지된 방식으로 인터넷에 통신적으로 접속되어 있다. 보안을 향상하기 위해, 보호 서버는 제조 보호 시스템 또는 제품 제조 시스템에 사용되는 프로세싱 시스템과 동일하여서는 안된다. 블록(704)에서, 디바이스 제조자는 보호 서버가 제공하는 키 검색 서비스용으로 사용될 키 서비스 공개/비밀키 쌍을 생성한다. 일 실시예에서, 키 서비스 공개/비밀키 쌍은 보호 서버에 저장될 수 있다. 이러한 키 쌍은 시스템에 의해 수행되는 모든 프로세싱에 대하여 한 번 생성될 수 있거나, 또는 디바이스의 각 클래스에 대하여 새로운 키 쌍이 생성될 수 있다. 블록(706)에서, 디바이스 제조자는 키 서비스 공개키(507)를 제조 보호 시스템(502)에 전달한다.7 is a flowchart 700 illustrating protection server setup phase processing in accordance with an embodiment of the present invention. This processing may be performed by the device manufacturer prior to device manufacture. In block 702, the device manufacturer establishes a protection server 522 to support the key retrieval request. In one embodiment, the protection server is communicatively connected to the Internet in a known manner. In order to improve security, the protection server should not be the same as the processing system used in the manufacturing protection system or the product manufacturing system. At block 704, the device manufacturer creates a key service public / private key pair to be used for the key retrieval service provided by the protection server. In one embodiment, the key service public / private key pair may be stored on a protection server. This key pair may be generated once for all processing performed by the system, or a new key pair may be generated for each class of device. At block 706, the device manufacturer passes the key service public key 507 to the manufacturing protection system 502.

도 8은 본 발명의 실시예에 따른 디바이스 제조 셋업 프로세싱을 도시하는 흐름도(800)이다. 일 실시예에서, 디바이스 제조자는 제조 보호 시스템(502)을 사용하여 이들 액션을 수행할 수 있다. 블록(802)에서, 디바이스 제조자는 제조될 디바이스의 각 클래스에 대하여 직접 증명 패밀리 키 쌍(Fpub 및 Fpri)을 생성한다. 고유의 디바이스 각각은, DPpri를 사용하여 생성된 서명이 Fpub에 의해 검증될 수 있도록 DPpir 키를 구비할 것이다. 디바이스의 클래스는 선택된 제품 라인(즉, 디바이스 유형)과 같은 디바이스의 임의의 세트 또는 서브세트, 또는 버전 넘버에 기초한 제품 라인의 서브셋, 또는 디바이스의 다른 특징을 포함할 수 있다. 패밀리 키 쌍은 생성된 디바이스의 클래스가 사용하기 위한 것이다.8 is a flowchart 800 illustrating device manufacturing setup processing in accordance with an embodiment of the present invention. In one embodiment, device manufacturers may perform these actions using manufacturing protection system 502. At block 802, the device manufacturer generates direct proof family key pairs Fpub and Fpri for each class of device to be manufactured. Each unique device will have a DPpir key so that the signature generated using DPpri can be verified by Fpub. The class of device may include any set or subset of devices, such as a selected product line (ie, device type), or a subset of the product line based on a version number, or other feature of the device. Family key pairs are for use by the class of device that is generated.

제조될 각 디바이스에 대하여, 제조 보호 시스템(502)의 생성 함수(512)는 블록(804) 내지 블록(820)을 수행한다. 우선, 블록(804)에서, 생성 함수는 고유의 의사 난수값(RAND, 508)을 생성한다. 일 실시예에서, RAND의 길이는 128 비트이다. 다른 실시예에서는 다른 크기의 값이 사용될 수 있다. 일 실시예에서, 다수의 디바이스에 대한 의사 난수 값이 미리 생성될 수 있다. 블록(806)에서, 디바이스에 의해 지원되는 일방 함수(f)를 사용하여, 생성 함수는 고유 RAND 값으로부터 대칭 암호화 키(SKEY)를 생성한다(SKEY=f(RAND)). 일방 함수는 이러한 목적에 적당한 임의의 공지된 알고리즘(예를 들면, SHA-1, MGF1, 데이터 암호화 표준(DES), 트리플 DES, 어드밴스트 암호화 표준(AES) 등)일 수 있다. 블록(808)에서, 일 실시예에서, 생성 함수는 "널(null) 엔트리"(예를 들면, 작은 수의 제로 바이트)를 암호화하기 위해 SKEY를 사용함으로써 보호 서버(522) 상의 키블로브 테이터베이스(520)에 있는 이 디바이스의 키블로브(514)를 참조하도록 사용될 식별자(ID) 레이블(label)을 생성한다(SKEY를 사용하여 디바이스 ID=Encrypt (0..0)). 다른 실시예에서, 디바이스 ID를 생성하는 다른 방식이 사용될 수 있고, SKEY에 의해 다른 값이 암호화될 수 있다.For each device to be manufactured, the generation function 512 of the manufacturing protection system 502 performs blocks 804 through 820. First, at block 804, the generation function generates a unique pseudo random value (RAND 508). In one embodiment, the length of the RAND is 128 bits. In other embodiments, values of different sizes may be used. In one embodiment, pseudo-random values for multiple devices may be generated in advance. At block 806, using the one-way function f supported by the device, the generation function generates a symmetric encryption key (SKEY) from the unique RAND value (SKEY = f (RAND)). The one-way function can be any known algorithm suitable for this purpose (eg, SHA-1, MGF1, Data Encryption Standard (DES), Triple DES, Advanced Encryption Standard (AES), etc.). In block 808, in one embodiment, the generation function uses key SB data on protection server 522 by using SKEY to encrypt a "null entry" (e.g., a small number of zero bytes). Generate an identifier (ID) label that will be used to refer to the keyblob 514 of this device in base 520 (using SKEY, device ID = Encrypt (0..0)). In other embodiments, other ways of generating device IDs may be used, and other values may be encrypted by the SKEY.

다음에, 블록(810)에서, 생성 함수는 디바이스의 패밀리 공개키(Fpub)와 상관있는 DP 비밀 서명키(DPpri)를 생성한다. 블록(812)에서, 생성 함수는 공지된 방법을 사용하여(예를 들면, SHA-1 또는 다른 해시 알고리즘을 사용하여) DPpri 다이제스트를 생성하기 위해 DPpri를 해싱한다(hash). 블록(814)에서, 생성 함수는 디바이스에 대한 키블로브 데이터 구조를 구축한다. 키블로브는 적어도 DPpri 및 DPpri 다이제스트를 포함한다. 일 실시예에서, 키블로브는 또한 복수의 의사 무작위적으로 생성된 비트를 갖는 무작위 초기화 벡터(IV)를 포함한다. 이들 값은 SKEY를 사용하여 암호화되어 암호화된 키블로브(514)를 생성한다. 블록(816)에서, 블록(808)에서 생성된 디바이스 ID와 블록(814)에서 생성된 암호화된 키블로브(514)가 키블로브 데이터베이스(520)의 엔트리에 저장될 수 있다. 일 실시예에서, 키블로브 데이터베이스의 엔트리는 디바이스 ID에 의해 지시될 수 있다. 블록(818)에서, 현재의 RAND 값이 보호 데이터베이스(510)에 저장될 수 있다. 블록(820)에서, SKEY 및 DPpri이 필드의 디바이스에 의해 재생될 것이기 때문에, 이들은 삭제될 수 있다.Next, at block 810, the generation function generates a DP secret signing key DPpri that is correlated with the device's family public key Fpub. At block 812, the generation function hashes DPpri to generate a DPpri digest using known methods (eg, using SHA-1 or other hash algorithm). At block 814, the generation function builds a keyblob data structure for the device. The keyblob contains at least DPpri and DPpri digests. In one embodiment, the keyblob also includes a random initialization vector IV having a plurality of pseudo randomly generated bits. These values are encrypted using SKEY to produce encrypted keyblob 514. At block 816, the device ID generated at block 808 and the encrypted keyblob 514 generated at block 814 may be stored in an entry in the keyblob database 520. In one embodiment, an entry in the keyblob database may be indicated by the device ID. At block 818, the current RAND value may be stored in the protection database 510. At block 820, because SKEY and DPpri will be played by the device in the field, they can be deleted.

DPpri 다이제스트의 생성 및 SKEY에 의한 후속 암호화는, DPpri의 콘텐츠가 SKEY를 소유하지 않은 임의의 엔티티에 의해 결정될 수 없도록, 그리고, SKEY를 소유하지 않은 엔티티에 의한 후속 검출없이 키블로브의 콘텐츠가 SKEY를 소유하지 않은 엔티티에 의해 수정될 수 없도록 설계된다. 다른 실시예에서, 이러한 비밀성 및 무결성 보호를 제공하는 다른 방법을 사용할 수 있다. 몇몇 실시예에서, 무결성 보호가 요구되지 않을 수 있으며, 단지 비밀성만을 제공하는 방법이 사용될 수 있다. 이 경우에, DPpri 다이제스트 값이 반드시 필요한 것은 아니다.The creation of a DPpri digest and subsequent encryption by the SKEY ensures that the content of the DPpri cannot be determined by any entity that does not own the SKEY, and that the content of the keyblob is SKEY without subsequent detection by the entity that does not own the SKEY. It is designed so that it cannot be modified by an entity that does not own it. In other embodiments, other methods of providing such confidentiality and integrity protection may be used. In some embodiments, integrity protection may not be required, and methods that provide only confidentiality may be used. In this case, the DPpri digest value is not necessarily required.

블록(820) 후의 임의의 시간에, 블록(822)에서, RAND 값의 보호 데이터베이스는 제조 프로세스 동안 디바이스에 RAND 값을 저장할 제품 제조 시스템(503)에 보안적으로 업로드될 수 있다. 이러한 업로드가 검증되었으면, RAND 값은 제조 보호 시스템(502)으로부터 보안적으로 삭제될 수 있다. 마지막으로, 블록(824)에서, 복수의 암호화 키블로브를 구비한 키블로브 데이터베이스(520)는, 디바이스 ID 필드에 의해 인덱스되는 바와 같이, 각 디바이스에 대하여 하나의 키블로브 데이터베이스 엔트리가 사용되도록 하면서, 보호 서버(522) 상에 저장될 수 있다.At any time after block 820, at block 822, the protection database of RAND values may be securely uploaded to product manufacturing system 503 to store the RAND values in the device during the manufacturing process. Once this upload has been verified, the RAND value can be securely deleted from the manufacturing protection system 502. Finally, at block 824, keyblob database 520 with a plurality of cryptographic keyblobs is used by one keyblob database entry for each device, as indexed by the device ID field. May be stored on the protection server 522.

도 9는 본 발명의 실시예에 따른 디바이스 제품 제조 프로세싱을 설명하는 흐름도(900)이다. 제품 라인에서 디바이스가 제조됨에 따라, 블록(902)에서, 제품 제조 시스템은 보호 데이터베이스로부터 미사용 RAND 값을 선택한다. 그 후, 선택된 RAND 값은 디바이스에 있는 비휘발성 저장소에 저장될 수 있다. 일 실시예에서, 비휘발성 저장소는 TPM을 포함한다. 일 실시예에서, RAND 값은 대략 16 바이트의 비휘발성 저장소에 저장될 수 있다. 블록(904)에서, 키 서비스 공개키(507)의 해시(509)가 디바이스의 비휘발성 저장소에 저장될 수 있다. 이 해시는 임의의 공지된 해싱 알고리즘을 사용하여 생성될 수 있다. 일 실시예에서, 해시 값은 대략 20 바이트의 비휘발성 저장소에 저장될 수 있다. 블록(906)에서, RAND 값을 성공적으로 저장하였다면, 제품 제조 시스템은 보호 데이터베이스(510)에 있는 그 디바이스의 RAND 값의 임의의 레코드를 파괴한다. 이 때, RAND 값의 유일한 사본이 디바이스에 저장된다.9 is a flow chart 900 illustrating device product fabrication processing in accordance with an embodiment of the present invention. As the device is manufactured in the product line, at block 902, the product manufacturing system selects an unused RAND value from the protection database. The selected RAND value can then be stored in nonvolatile storage in the device. In one embodiment, the nonvolatile reservoir comprises a TPM. In one embodiment, the RAND value may be stored in approximately 16 bytes of nonvolatile storage. At block 904, a hash 509 of the key service public key 507 may be stored in non-volatile storage of the device. This hash can be generated using any known hashing algorithm. In one embodiment, the hash value may be stored in approximately 20 bytes of nonvolatile storage. At block 906, if the RAND value was successfully stored, the product manufacturing system destroys any record of the device's RAND value in the protection database 510. At this time, a unique copy of the RAND value is stored on the device.

대체 실시예에서, RNAD 값은 디바이스의 제조 동안 생성될 수 있고, 그 다음에 키블로브의 계산을 위해 제조 보호 시스템으로 전송된다.In an alternate embodiment, RNAD values may be generated during manufacture of the device and then sent to the manufacturing protection system for calculation of the kiblob.

또 다른 실시예에서, RAND 값은 디바이스 상에 생성될 수 있고, 디바이스 및 제조 보호 시스템은 DPpri 키를 그 디바이스의 외부로 누설하지 않는 방법을 사용하여 DPpri 키를 생성하도록 프로토콜을 취급할 수 있다. 다음에, 디바이스는 디바이스 ID, SKEY 및 키블로브를 생성할 수 있다. 디바이스는 보호 데이터베이스(510)에 저장하기 위해 디바이스 ID 및 키블로브를 제조 시스템으로 전달할 수 있다. 이 방법에서, 제조 시스템은 결국 보호 데이터베이스에 있는 동일한 정보(디바이스 ID, 키블로브)를 갖게 되지만, RAND 값 또는 DPpri 값을 알지는 못한다.In another embodiment, the RAND value may be generated on a device, and the device and manufacturing protection system may handle the protocol to generate the DPpri key using a method that does not leak the DPpri key out of the device. The device may then generate a device ID, SKEY and keyblob. The device may pass the device ID and keyblob to the manufacturing system for storage in the protection database 510. In this way, the manufacturing system will eventually have the same information (device ID, keyblob) in the protection database, but do not know the RAND value or the DPpri value.

도 10 내지 도 12는 본 발명의 실시예에 따른 클라이언트 컴퓨터 시스템 셋업 프로세싱의 흐름도이다. 클라이언트 컴퓨터 시스템은 이들 액션을 시스템 부팅 부분으로 수행한다. 도 10의 흐름도(1000)를 시작하면서, 블록(1002)에서, 클라이언트 컴퓨터 시스템은 정규 방식으로 부팅될 수 있고, 디바이스용 디바이스 드라이버 소프트웨어 모듈(526)이 클라이언트 컴퓨터 시스템의 주 메모리에 로딩될 수 있다. 디바이스 드라이버가 초기화되고 실행을 시작할 때, 디바이스 드라이버는 블록(1004)에서 디바이스(506)용 대용량 저장 디바이스(308)에 암호화 로컬 키블로브(524)가 이미 저장되어 있는지를 판정한다. 이미 저장되어 있다면, 더 이상의 셋업 프로세싱이 수행될 필요가 없고, 셋업 프로세싱은 블록(1006)에서 종료한다. 만약 저장되어 있지 않다면, 프로세싱은 블록(1008)에서 계속된다. 블록(1008)에서, 디바이스 드라이버는 키 획득 커맨드를 디바이스(506)에 송출하여 디바이스의 DP 비밀키 획득 프로세스를 시작한다. 10-12 are flowcharts of client computer system setup processing in accordance with an embodiment of the present invention. The client computer system performs these actions as part of the system boot. Beginning with the flowchart 1000 of FIG. 10, at block 1002, the client computer system may be booted in a regular manner and the device driver software module 526 for the device may be loaded into the main memory of the client computer system. . When the device driver is initialized and starts executing, the device driver determines in block 1004 whether the encrypted local keyblob 524 is already stored in the mass storage device 308 for the device 506. If it is already stored, no further setup processing needs to be performed and setup processing ends at block 1006. If not, processing continues at block 1008. At block 1008, the device driver issues a key acquisition command to device 506 to begin the DP secret key acquisition process of the device.

블록(1010)에서, 디바이스 드라이버는 키 서비스 공개키(507)를 디바이스로 전송한다. 블록(1014)에서, 디바이스는 수신된 키 서비스 공개키를 추출하고, 그 키 서비스 공개키의 해시값을 생성하여, 수신된 키 서비스 공개키의 해시를 디바이스의 비휘발성 저장소에 저장된 키 서비스 공개키 해시(509)와 비교한다. 해시가 일치하면, 수신된 키 서비스 공개키는 디바이스 제조자의 키 검색 서비스의 키인 것으로 공지되고, 클라이언트 컴퓨터 시스템 셋업 프로세싱은 계속된다.At block 1010, the device driver sends the key service public key 507 to the device. At block 1014, the device extracts the received key service public key, generates a hash value of the key service public key, and stores the hash of the received key service public key in the key service public key stored in the device's nonvolatile storage. Compare to hash 509. If the hashes match, the received key service public key is known to be the key of the device manufacturer's key retrieval service, and the client computer system setup processing continues.

또 다른 실시예에서, 디바이스는 인증 키 서비스 공개키의 인증서를 수신할 수 있으며, 그 인증서는 해시가 디바이스의 비휘발성 저장소에 저장된 키 서비스 공개키 해시(509)인 키 서비스 공개키에 대한 인증서 체인을 통해 검증될 수 있다. 다음에, 인증 키 서비스 공개키는 후속 단계에서 키 서비스 공개키로서 사용될 수 있다.In another embodiment, the device may receive a certificate of an authentication key service public key, which certificate chain is a certificate chain for a key service public key whose hash is a key service public key hash 509 stored in the device's nonvolatile storage. Can be verified through The authentication key service public key can then be used as the key service public key in subsequent steps.

블록(1018)에서, 디바이스는 일방 함수(f)를 사용하여, 내장된 RAND 값(508)으로부터 대칭키 SKEY를 재생성한다(SKEY=f(RAND)). 블록(1020)에서, 디바이스는 SKEY를 사용하여 "널 엔트리"(예를 들면, 소수의 제로 바이트)를 암호화함으로써 자신의 고유의 디바이스 ID 레이블을 생성한다(SKEY를 사용하여 디바이스 ID=Encrypt(0..0)). 프로세싱은 도 11의 흐름도(1100)에서 계속된다.At block 1018, the device uses one-way function f to regenerate the symmetric key SKEY from the embedded RAND value 508 (SKEY = f (RAND)). At block 1020, the device generates its own device ID label by encrypting the "null entry" (e.g., a few zero bytes) using the SKEY (device ID = Encrypt (0 using SKEY). ..0)). Processing continues in flow diagram 1100 of FIG. 11.

도 11의 블록(1102)에서, 디바이스는 과도 대칭키(Tkey)를 생성한다. 이 키는 보호 서버로 송신되며, 그 보호 서버는 이 키를 이용하여 보호 서버가 디바이스로 리턴한 메시지를 암호화할 수 있다. 블록(1104)에서, 디바이스는 디바이스 ID 및 과도 대칭키(Tkey)를 포함하는 검색 키 요청 메시지를 구축하고, 블록(1014)에서 디바이스 드라이브로부터 수신된 키 서비스 공개키를 이용하여 메시지를 암호화하며, 디바이스 드라이버를 경유하여 검색 키 요청 메시지를 보호 서버로 전송한다. (키 서비스 공개키를 이용하여, 검색키 요청(Retrieve Key Request)= Encrypt(Device ID, Tkey)). 당해 분야에 능숙한 자는, 공개키를 이용하여 메시지를 암호화하기 위해, 전형적으로 대칭 암호용 세션키(Skey)를 생성하고, 그 공개키를 이용하여 세션키를 암호화한 다음, 그 세션키를 이용하여 메시지를 암호화한다는 것을 인식할 수 있을 것이다. 블록(1106)에서, 보호 서버는 키 서비스 비밀키(511)를 사용하여 수신된 키 요청 메시지를 복호화하고, 그 메시지 내에 저장된 필드를 추출한다. 보호 서버가 (키 요청 메시지로부터 얻어진) 디바이스 ID를 이제 알기 때문에, 보호 서버는 정합하는 디바이스 ID 값을 포함하는 레코드에 대한 키블로브 데이터베이스를 검색하고, 그 레코드로부터 디바이스의 암호화된 키블로브를 추출한다. 블록(1110)에서, 보호 서버는 패밀리 공개키 및 암호화된 키블로브를 포함하는 제 2 응답 메시지를 구축하고, 디바이스가 공급한 과도 대칭키(Tkey)를 사용하여 제 2 응답 메시지를 암호화한다. 따라서, 키 응답 = (패밀리 공개키, Tkey를 사용한 (암호화된 키블로브)의 암호화). 암호화된 키블로브는 대칭키(SKEY)로 이미 암호화되어, 단지 디바이스만이 재생할 수 있기 때문에, Tkey를 사용하여 암호화된 키블로브를 암호화하는 것이 키블로브를 보호하는 것은 아니다. 오히려, 이러한 방식으로 암호화하는 것에 의해, 키 획득 프로세스가 수행될 때마다 리턴된 키블로브가 확실히 변경되도록 함으로써, 키블로브 자체가 "쿠키"로서 확실히 사용될 수 없도록 한다. 제 2 응답 메시지는 블록(1112)에서 클라이언트 컴퓨터 시스템 상의 디바이스 드라이버로 리턴될 수 있으며, 이 드라이버는 메시지를 디바이스로 포워딩한다.In block 1102 of FIG. 11, the device generates a transient symmetric key (Tkey). This key is sent to the protection server, which can use the key to encrypt messages returned by the protection server to the device. In block 1104, the device constructs a search key request message that includes the device ID and the transient symmetric key (Tkey), encrypts the message using the key service public key received from the device drive in block 1014, The search key request message is sent to the protection server via the device driver. (Using a key service public key, Retrieve Key Request = Encrypt (Device ID, Tkey)). Those skilled in the art typically generate a symmetric cryptographic session key (Skey), encrypt the session key using the public key, and then use the session key to encrypt the message using the public key. You will notice that it encrypts the message. In block 1106, the protection server decrypts the received key request message using the key service secret key 511 and extracts the fields stored in that message. Since the Protection Server now knows the device ID (obtained from the key request message), the Protection Server retrieves the keyblob database for the record containing the matching device ID value and retrieves the encrypted keyblob of the device from that record. Extract. In block 1110, the protection server constructs a second response message that includes the family public key and the encrypted keyblob, and encrypts the second response message using the transient symmetric key (Tkey) supplied by the device. Thus, key response = (encryption of (encrypted keyblob) using family public key, Tkey). Since encrypted keyblobs are already encrypted with a symmetric key (SKEY) and can only be played by a device, encrypting an encrypted keyblob using Tkey does not protect the keyblob. Rather, encryption in this manner ensures that the returned keyblob is changed every time the key acquisition process is performed, so that the keyblob itself cannot be used as a "cookie". The second response message may be returned to the device driver on the client computer system at block 1112, which forwards the message to the device.

블록(114)에서, 디바이스는 제 2 응답 메시지로부터 패밀리 공개키를 추출하고, 과도 대칭키(Tkey)를 사용하여 래핑된(wrapped) 키블로브를 복호화하며, 암호 키블로브를 디바이스의 휘발성 메모리에 저장한다. 다음에, 프로세싱은 도 12의 흐름도(1200)에서 계속된다.In block 114, the device extracts the family public key from the second response message, decrypts the wrapped keyblob using a transient symmetric key (Tkey), and converts the cryptographic keyblob to the device's volatile memory. Store in Next, processing continues in flow diagram 1200 of FIG. 12.

도 12의 블록(1216)에서, 디바이스는 대칭키 SKEY를 사용하여 암호 키블로브를 복호화하여, DPpri 및 DPpri 다이제스트를 산출하고, 이들 값을 비휘발성 저장소에 저장한다(SKEY를 사용하여 복호화된 키블로브 = Decrypt(IV, DPpri, DPpri Digest)). 초기화 벡터(IV)는 폐기될 수 있다. 블록(1218)에서, 디바이스는 DPpri를 해시하고 그 결과를 DPpri 다이제스트에 비교함으로써 DPpri의 무결성을 체크한다. 비교 결과가 양호하면, 디바이스는 DPpri를 유효 키로서 수용한다. 디바이스는 또는 키 획득 플래그를 참(true)으로 설정하여, DP 비밀키가 성공적으로 획득되었다는 것을 지시할 수 있다. 블록(1220)에서, 디바이스는 새로운 IV를 선택하고, 새로운 IV를 사용하여 새로운 암호화 로컬 키블로브를 생성한다(SKEY를 사용하여 로컬 키블로브=Encrypt(IV2, DPpri, DPpri Digest)). 일 실시예에서, 새로운 암호화 로컬 키블로브는 클라이언트 컴퓨터 시스템 상의 키 검색 유틸리티 소프트웨어 모듈(도 5에는 도시되지 않음)로 리턴될 수 있다. 블록(1222)에서, 키 검색 유틸리티는 암호화된 로컬 키블로브를 클라이언트 컴퓨터 시스템 내의 (예를 들면, 대량 저장 디바이스(308) 같은) 저장소에 저장한다. 디바이스의 DPpri는 이제 클라이언트 컴퓨터 시스템에 보안적으로 저장된다.In block 1216 of FIG. 12, the device decrypts the cryptographic keyblob using the symmetric key SKEY, yielding DPpri and DPpri digests, and storing these values in non-volatile storage (key decrypted using SKEY). Blob = Decrypt (IV, DPpri, DPpri Digest)). The initialization vector IV may be discarded. At block 1218, the device checks the integrity of the DPpri by hashing the DPpri and comparing the result to the DPpri digest. If the comparison is good, the device accepts DPpri as a valid key. The device can also set the key acquisition flag to true to indicate that the DP secret key was successfully obtained. At block 1220, the device selects a new IV and generates a new encrypted local keyblob using the new IV (local keyblob = Encrypt (IV2, DPpri, DPpri Digest) using SKEY). In one embodiment, the new encrypted local keyblob may be returned to a key retrieval utility software module (not shown in FIG. 5) on the client computer system. In block 1222, the key retrieval utility stores the encrypted local keyblob in a repository (eg, mass storage device 308) in the client computer system. The device's DPpri is now securely stored on the client computer system.

디바이스가 셋업 프로세싱 동안 DPpri를 획득하였으면, 디바이스는 DPpri를 사용할 수 있다. 도 13은 본 발명의 일 실시예에 따른 클라이언트 컴퓨터 시스템의 흐름도(1300)이다. 클라이언트 컴퓨터 시스템은 셋업이 완료된 후에 언제라도 이들 액션을 수행할 수 있다. 블록(1302)에서, 클라이언트 컴퓨터 시스템은 정규의 방식으로 부팅될 수 있고 디바이스용 디바이스 드라이버(526)가 주 메모리로 로딩될 수 있다. 디바이스 드라이버가 초기화되어 실행을 시작할 때, 디바이스 드라이버는, 디바이스(506)에 대하여 대용량 저장 디바이스(308)에 저장된 암호화 로컬 키블로브(524)가 이미 존재하는지를 판정한다. 키블로브가 존재하지 않는다면, 도 10 내지 도 12의 셋업 프로세싱이 수행된다. 이 디바이스에 이용가능한 암호화 로컬 키블로브가 존재한다면, 프로세싱은 블록(1306)으로 계속된다. 블록(1306)에서, 디바이스 드라이버는 암호화 로컬 키블로브를 검색하고 키블로브를 디바이스로 전달한다. 일 실시예에서, 키블로브의 전달은 Load Keyblob 커맨드를 실행함으로써 달성될 수 있다.If the device acquired DPpri during setup processing, the device can use DPpri. 13 is a flow chart 1300 of a client computer system in accordance with an embodiment of the present invention. The client computer system can perform these actions at any time after setup is complete. At block 1302, the client computer system may boot in a regular manner and a device driver 526 for the device may be loaded into main memory. When the device driver is initialized and starts executing, the device driver determines whether the encrypted local keyblob 524 already stored in the mass storage device 308 for the device 506. If no keyblob is present, the setup processing of FIGS. 10-12 is performed. If there is an encrypted local keyblob available for this device, processing continues to block 1306. At block 1306, the device driver retrieves the cryptographic local keyblob and passes the keyblob to the device. In one embodiment, delivery of the keyblob may be accomplished by executing a Load Keyblob command.

블록(1308)에서, 디바이스는 일방 함수(f)를 사용하여 내장된 RAND 값(508)으로부터 대칭키 SKEY(이제는 복호화용으로 사용됨)를 재생성한다(SKEY=f(RAND)). 블록(1310)에서, 디바이스는 대칭키 SKEY를 사용하여 암호화 로컬 키블로브를 복호화하여, DPpri 및 DPpri 다이제스트를 산출하고, 이들 값을 비휘발성 저장소에 저장한다(SKEY를 사용하여 복호화된 키블로브=Decrypt(IV2, DPpri, DPpri Digest)). 제 2 초기화 벡터(IV2)는 폐기될 수 있다. 블록(1312)에서, 디바이스는 DPpri를 해싱하고 그 결과를 DPpri 다이제스트와 비교함으로써 DPpri의 무결성을 체크한다. 비교 결과가 양호하면(예를 들면, 다이제스트가 정합하면), 디바이스는 보다 조기에 획득된 유효키로서 DPpri를 수용하고, 사용을 위해 그 DPpri를 인에이블시킨다. 디바이스는 또한 키 획득 플래그를 참으로 설정하여 DP 비밀키가 성공적으로 획득되었다는 것을 지시할 수 있다. 블록(1314)에서, 디바이스는 또 다른 IV를 선택하고 새로운 IV를 사용하여 새로운 암호화 로컬 키블로브를 생성한다(SKEY를 사용하여 로컬 키블로브=Encrypt(IV3, DPpri, DPpri Digest)). 암호화된 새로운 로컬 키블로브는 키 검색 유틸리티로 리턴될 수 있다. 블록(1316)에서, 키 검색 유틸리티는 암호화 로컬 키블로브를 클라이언트 컴퓨터 시스템 내의 (예를 들면, 대용량 저장 디바이스(308) 같은) 저장소에 저장한다. 디바이스의 DPpri는 이제 클라이언트 시스템에 다시 한번 보안적으로 저장된다.At block 1308, the device regenerates the symmetric key SKEY (now used for decryption) from the embedded RAND value 508 using one-way function f (SKEY = f (RAND)). At block 1310, the device decrypts the encrypted local keyblob using the symmetric key SKEY to produce DPpri and DPpri digests and stores these values in non-volatile storage (keyblock decrypted using the SKEY). = Decrypt (IV2, DPpri, DPpri Digest)). The second initialization vector IV2 may be discarded. At block 1312, the device checks the integrity of the DPpri by hashing the DPpri and comparing the result with the DPpri digest. If the comparison is good (eg, if the digest matches), the device accepts the DPpri as a valid key obtained earlier and enables the DPpri for use. The device may also set the key acquisition flag to true to indicate that the DP secret key was successfully obtained. At block 1314, the device selects another IV and generates a new encrypted local keyblob using the new IV (local keyblob = Encrypt (IV3, DPpri, DPpri Digest) using SKEY). The encrypted new local keyblob can be returned to the key retrieval utility. In block 1316, the key retrieval utility stores the encrypted local keyblob in a repository (eg, mass storage device 308) in the client computer system. The device's DPpri is now securely stored once again on the client system.

본 발명의 일 실시예에서는, 한번에 모든 디바이스 DP 비밀키를 생성할 필요는 없다. 보호 서버 상의 키블로브 데이터베이스가 정규적으로 업로드된다고 가정하면, 디바이스 DP 비밀키는 필요에 따라 배치로 생성될 수 있다. 키블로브 데이터베이스가 보호 서버상에서 업로드될 때마다, 생성되었지만 디바이스에는 아직 할당되지 않은 디바이스 키를 포함하는, 지금까지 생성된 대로 키블로브 데이터베이스를 포함할 것이다.In one embodiment of the invention, it is not necessary to generate all the device DP secret keys at once. Assuming that the keyblob database on the protection server is uploaded regularly, the device DP secret key can be generated in batch as needed. Each time the keyblob database is uploaded on the protection server, it will include the keyblob database as it is created so far, including device keys that have been generated but not yet assigned to the device.

또 다른 실시예에서, 키를 요구하는 디바이스에 대해서만 이들 키를 생성하도록 하면서, 디바이스의 DPpri 키의 생성을 지연하는 것도 가능하다. 디바이스로부터 제 1 키 획득 요청을 수신하면, 보호 서버는 디바이스의 RAND 값을 여전히 유지하는 보호 제조 시스템에 요청을 생성한다. 이 때, 제조 보호 시스템은 디바이스에 대한 DPpri 키를 생성하고, 이 키를 보호 서버로 리턴한 후, RAND 값만을 파괴한다.In another embodiment, it is also possible to delay the generation of the device's DPpri key while only generating these keys for devices that require keys. Upon receiving the first key acquisition request from the device, the protection server generates a request to the protection manufacturing system that still maintains the device's RAND value. At this time, the manufacturing protection system generates a DPpri key for the device, returns this key to the protection server, and then destroys only the RAND value.

또 다른 실시예에서, 키 서비스 공개키 해시를 디바이스의 비휘발성 저장소에 저장하는 대신, 디바이스 제조자는 루트(root) 키의 해시를 저장한 후, 이 루트 키로 키 서비스 공개키에 대한 인증서에 서명하도록 선택할 수 있다. 이 방식에서, 대규모 수의 디바이스에 대하여 동일한 루트 키를 사용할 수 있다.In another embodiment, instead of storing the key service public key hash in the device's nonvolatile storage, the device manufacturer stores the hash of the root key and then signs the certificate for the key service public key with this root key. You can choose. In this way, the same root key can be used for a large number of devices.

본 명세서에 논의된 동작이 순차 프로세스로 설명되었지만, 일부의 동작은 사실상 병렬로 또는 동시에 수행될 수 있다. 부가하여, 일부 실시예에서, 동작의 순서는 본 발명의 범위를 벗어나지 않고 재조정될 수 있다.Although the operations discussed herein have been described in sequential processes, some of the operations may be performed in parallel or concurrently. In addition, in some embodiments, the order of the operations may be readjusted without departing from the scope of the present invention.

본 명세서에서 설명된 기술은 임의의 특정 하드웨어 또는 소프트웨어 구성으로 한정되는 것은 아니다, 이 기술은 임의의 컴퓨팅 또는 프로세싱 환경에서 적용가능성을 찾을 수 있다. 이 기술은 하드웨어, 소프트웨어 또는 그 둘의 조합으로 구현될 수 있다. 이 기술은 모바일 또는 고정 컴퓨터, 개인 휴대 단말 장치, 셋톱 박스, 셀룰러 전화 및 페이저 같은 프로그램가능 머신, 및 각각 프로세서, 그 프로세서에 의해 판독가능한 (휘발성 및 비휘발성 메모리 및/또는 저장 소자 포함하는)저장 매체, 적어도 하나의 입력 디바이스, 및 하나 이상의 출력 디바이스를 포함하는 다른 전자 디바이스 상에서 실행되는 프로그램으로 구현될 수 있다. 입력 디바이스를 사용하여 입력된 데이터에 프로그램 코드를 적용하여 설명된 기능을 수행하고 출력 정보를 생성한다. 출력 정보는 하나 이상의 출력 디바이스에 제공될 수 있다. 당업자라면 본 발명이 멀티프로세서 시스템, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다양한 컴퓨터 시스템 구성으로 실행될 수 있다는 것을 이해할 수 있을 것이다. 본 발명은 또한 통신 네트워크를 통해 링크된 원격 프로세싱 디바이스에 의해 작업이 수행될 수 있는 분산형 컴퓨팅 환경에서 실행될 수도 있다.The techniques described herein are not limited to any particular hardware or software configuration, which techniques may find applicability in any computing or processing environment. This technique can be implemented in hardware, software or a combination of both. The technology includes programmable machines such as mobile or fixed computers, personal digital assistants, set-top boxes, cellular telephones and pagers, and storage, including volatile and nonvolatile memory and / or storage elements, respectively, by the processor, the processor. It can be implemented as a program running on another medium including a medium, at least one input device, and one or more output devices. Program code is applied to data input using an input device to perform the described functions and to generate output information. Output information may be provided to one or more output devices. Those skilled in the art will appreciate that the present invention may be practiced in a variety of computer system configurations, including multiprocessor systems, minicomputers, mainframe computers, and the like. The invention may also be practiced in distributed computing environments where tasks may be performed by remote processing devices that are linked through a communications network.

각각의 프로그램은 고레벨 절차형 또는 객체 지향형 프로그래밍 언어로 구현되어 프로세싱 시스템과 통신할 수 있다. 그러나, 프로그램은, 원한다면, 어셈블리 또는 기계어로 구현될 수 있다. 어느 경우든, 상기 언어는 컴파일되거나 해석될 수 있다.Each program may be implemented in a high level procedural or object oriented programming language to communicate with a processing system. However, the program can be implemented in assembly or machine language, if desired. In either case, the language can be compiled or interpreted.

프로그램 명령을 사용하여 명령으로 프로그래밍된 범용 또는 특수 목적용 프로세싱 시스템이 본 명세서에서 설명된 동작을 수행하도록 할 수 있다. 대안으로, 동작을 수행하는 배선에 의한 로직을 포함하는 특정 하드웨어 컴포넌트에 의해, 또는 프로그래밍된 컴퓨터 컴포넌트와 맞춤형 하드웨어 컴포넌트의 조합에 의해 동작이 수행될 수 있다. 본 명세서에서 설명된 방법은 프로세싱 시스템을 프로그래밍하는데 사용될 수 있는 명령이 저장된 기계 판독가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 상기 방법을 수행하기 위한 다른 전자 장치로서 제공될 수 있다. 본 명세서에서 사용되는 용어 "기계 판독가능 매체"는 기계에 의해 실행하기 위한 명령 시퀀스를 저장하거나 인코딩할 수 있고, 본 명세서에서 설명된 방법들 중 어느 한 방법을 기계가 수행할 수 있는 임의의 매체를 포함한다. 따라서, 용어 "기계 판독가능 매체"는 고상(solid-state) 메모리, 광자기 디스크, 및 데이터 신호를 인코딩하는 캐리어 웨이브를 포함하지만, 이에 한정되는 것은 아니다. 또한, 액션을 취하거나 결과를 도출함으로서 하나의 형태 또는 다른 형태(예를 들면, 프로그램, 절차, 프로세스, 애플리케이션, 모듈, 로직 등)를 말하는 것은 본 기술 분야에서는 일반적이다. 그러한 표현은 단순히 프로세서가 결과를 생성하기 위해 액션을 수행하도록 하는 프로세싱 시스템에 의한 소프트웨어의 실행을 진술하는 약식일 뿐이다. Program instructions may be used to cause general purpose or special purpose processing systems programmed with instructions to perform the operations described herein. Alternatively, the operation may be performed by a specific hardware component including logic by wiring to perform the operation, or by a combination of a programmed computer component and a custom hardware component. The method described herein can be provided as a computer program product or other electronic device for performing the method that can include a machine readable medium having stored thereon instructions that can be used to program the processing system. The term "machine-readable medium" as used herein may store or encode a sequence of instructions for execution by a machine, and any medium on which a machine may perform any of the methods described herein. It includes. Thus, the term "machine-readable medium" includes, but is not limited to, solid-state memory, magneto-optical disks, and carrier waves that encode data signals. In addition, it is common in the art to refer to one form or another (eg, program, procedure, process, application, module, logic, etc.) by taking action or producing a result. Such representation is merely a shorthand for stating the execution of the software by the processing system that causes the processor to perform an action to produce a result.

본 발명은 설명된 실시예를 참조하여 설명되었지만, 그러한 설명은 한정적으로 해석되는 것을 의도하는 것은 아니다. 본 발명이 속하는 기술 분야의 당업자에게는 본 발명의 예시적 실시예 뿐만 아니라 다른 실시예의 다양한 수정이 본 발명의 사상 및 범위 내에 있을 것이라는 것은 자명하다.Although the present invention has been described with reference to the described embodiments, such description is not intended to be limiting. It will be apparent to those skilled in the art that various modifications of the exemplary embodiments as well as other embodiments of the present invention will fall within the spirit and scope of the present invention.

Claims (35)

제 1 클라이언트 컴퓨터 시스템에 존재하는 디바이스 클래스의 디바이스에 대한 비밀키를 요청하기 위해 클라이언트 컴퓨터 시스템으로부터의 키 검색 요청을 지원하는 보호 온라인 서버를 확립하는 단계로서, 상기 디바이스는 비밀키를 포함하지 않고, 상기 제 1 클라이언트 컴퓨터 시스템은 상기 디바이스와 연관된 암호화된 데이터 구조를 포함하지 않는 단계와,Establishing a protected online server supporting a key retrieval request from a client computer system to request a private key for a device of a device class present in the first client computer system, wherein the device does not include a secret key, The first client computer system not including an encrypted data structure associated with the device; 상기 디바이스 클래스의 디바이스를 포함하는 클라이언트 컴퓨터 시스템에 의해 보안 키 검색 프로세싱에서 사용하기 위한 키 서비스 공개/비밀키 쌍을 생성하고 상기 보호 온라인 서버에 상기 키 서비스 공개/비밀키 쌍을 저장하는 단계와,Generating a key service public / private key pair for use in secure key retrieval processing by a client computer system comprising a device of the device class and storing the key service public / private pair in the protected online server; 상기 디바이스 클래스의 디바이스에 대한 의사(pseudo) 난수값을 생성하는 단계와,Generating a pseudo random number value for a device of the device class; 상기 디바이스와 연관된 상기 암호화된 데이터 구조를 생성하는 단계로서, 상기 암호화된 데이터 구조는 비밀키를 포함하는 단계와,Generating the encrypted data structure associated with the device, the encrypted data structure including a secret key; 상기 암호화된 데이터 구조에 대하여, 상기 의사 난수값에 기초하여, 식별자를 생성하는 단계와,Generating an identifier for the encrypted data structure based on the pseudo random number value; 상기 식별자 및 상기 암호화된 데이터 구조를 상기 보호 온라인 서버에 저장하는 단계와, Storing the identifier and the encrypted data structure on the protected online server; 상기 디바이스에 상기 비밀키를 저장하지 않고, 상기 의사 난수값 및 상기 키 서비스 공개키의 해시값을 상기 디바이스 내의 비휘발성 저장소에 저장하는 단계를 포함하는 Storing the pseudo-random value and a hash value of the key service public key in non-volatile storage in the device without storing the secret key in the device. 비밀키를 디바이스에 전달하는 방법.How to pass a secret key to a device. 제 1 항에 있어서,The method of claim 1, 디바이스의 클래스에 대하여 직접 증명 패밀리 키 쌍을 생성하는 단계를 더 포함하는 비밀키를 디바이스에 전달하는 방법.Generating a proof-family key pair directly for the class of device. 제 2 항에 있어서,The method of claim 2, 상기 비밀키는 직접 증명 패밀리 키 쌍의 공개키와 연관된 직접 증명 비밀키를 포함하고, 상기 직접 증명 비밀키를 해싱하여 비밀키 다이제스트를 생성하는 단계를 더 포함하는 비밀키를 디바이스에 전달하는 방법.And the secret key comprises a direct proof secret key associated with the public key of the direct proof family key pair, and hashing the direct proof secret key to generate a secret key digest. 제 1 항에 있어서,The method of claim 1, 상기 디바이스에 대한 상기 의사 난수값에 기초하여 대칭키를 생성하는 단계를 더 포함하는 비밀키를 디바이스에 전달하는 방법.Generating a symmetric key based on the pseudorandom value for the device. 제 4 항에 있어서,The method of claim 4, wherein 상기 식별자를 생성하는 단계는 상기 대칭키를 이용하여 데이터 값을 암호화하는 단계를 포함하는 비밀키를 디바이스에 전달하는 방법.Generating the identifier includes encrypting a data value using the symmetric key. 제 4 항에 있어서,The method of claim 4, wherein 상기 대칭키를 이용하여 상기 데이터 구조를 암호화하는 단계를 더 포함하는 비밀키를 디바이스에 전달하는 방법.Encrypting the data structure using the symmetric key. 제 1 항에 있어서,The method of claim 1, 상기 키 서비스 공개키를 제조 보호 시스템에 저장하는 단계를 더 포함하는 비밀키를 디바이스에 전달하는 방법.Storing the key service public key in a manufacturing protection system. 청구항 8은(는) 설정등록료 납부시 포기되었습니다.Claim 8 was abandoned when the registration fee was paid. 제 1 항에 있어서,The method of claim 1, 상기 디바이스에 대한 상기 의사 난수값은 고유한 것인 비밀키를 디바이스에 전달하는 방법.And wherein the pseudo random number value for the device is unique. 복수의 머신 판독가능 명령을 구비한 제 1 저장 매체를 포함하는 컴퓨터 판독 가능한 저장 매체로서,A computer readable storage medium comprising a first storage medium having a plurality of machine readable instructions, 상기 명령이 프로세서에 의해 실행될 때, 상기 명령은, When the instruction is executed by a processor, the instruction is 제 1 클라이언트 컴퓨터 시스템에 존재하는 디바이스 클래스의 디바이스에 대한 비밀키를 요청하기 위해 클라이언트 컴퓨터 시스템으로부터의 키 검색 요청을 지원하는 보호 온라인 서버를 확립하되, 상기 디바이스가 비밀키를 포함하지 않고, 상기 제 1 클라이언트 컴퓨터 시스템이 상기 디바이스와 연관된 암호화된 데이터 구조를 포함하지 않고,Establish a protected online server supporting a key retrieval request from a client computer system to request a private key for a device of a device class present in the first client computer system, wherein the device does not include a secret key and 1 the client computer system does not include an encrypted data structure associated with the device, 상기 디바이스 클래스의 디바이스를 포함하는 클라이언트 컴퓨터 시스템에 의해 보안 키 검색 프로세싱에서 사용하기 위한 키 서비스 공개/비밀키 쌍을 생성하고 상기 보호 온라인 서버에 상기 키 서비스 공개/비밀키 쌍을 저장하며,Generate a key service public / private key pair for use in secure key retrieval processing by a client computer system comprising a device of the device class and store the key service public / private pair in the protected online server, 상기 디바이스 클래스의 디바이스에 대한 의사 난수값을 생성하고,Generate a pseudo-random value for a device of the device class, 상기 디바이스와 연관된 상기 암호화된 데이터 구조를 생성하되, 상기 암호화된 데이터 구조는 비밀키를 포함하며,Create the encrypted data structure associated with the device, the encrypted data structure including a secret key, 상기 암호화된 데이터 구조에 대하여, 상기 의사 난수값에 기초하여, 식별자를 생성하고,Generate an identifier for the encrypted data structure based on the pseudo random number, 상기 식별자 및 상기 암호화된 데이터 구조를 상기 보호 온라인 서버에 저장하며, Store the identifier and the encrypted data structure on the protected online server, 상기 디바이스에 상기 비밀키를 저장하지 않고, 상기 의사 난수값 및 상기 키 서비스 공개키의 해시값을 상기 디바이스 내의 비휘발성 저장소에 저장하는 것을 제공하는 Storing the pseudo-random value and the hash value of the key service public key in non-volatile storage in the device without storing the secret key in the device. 비밀키를 디바이스에 전달하는 컴퓨터 판독 가능한 저장 매체.A computer readable storage medium for delivering a secret key to a device. 제 9 항에 있어서,The method of claim 9, 디바이스의 클래스에 대하여 직접 증명 패밀리 키 쌍을 생성하는 명령을 더 포함하는 비밀키를 디바이스에 전달하는 컴퓨터 판독 가능한 저장 매체.And delivering a secret key to the device, the instructions further comprising generating a proof family key pair directly for the class of device. 제 10 항에 있어서,The method of claim 10, 상기 비밀키는 직접 증명 패밀리 키 쌍의 공개키와 연관된 직접 증명 비밀키를 포함하고, 상기 직접 증명 비밀키를 해싱하여 비밀키 다이제스트를 생성하는 명령을 더 포함하는 비밀키를 디바이스에 전달하는 컴퓨터 판독 가능한 저장 매체.The secret key includes a direct proof secret key associated with the public key of the direct proof family key pair, and further comprising instructions for hashing the direct proof secret key to generate a secret key digest. Possible storage medium. 제 9 항에 있어서,The method of claim 9, 상기 디바이스에 대한 상기 의사 난수값에 기초하여 대칭키를 생성하는 명령을 더 포함하는 비밀키를 디바이스에 전달하는 컴퓨터 판독 가능한 저장 매체.And instructions for generating a symmetric key based on the pseudorandom value for the device. 제 12 항에 있어서,The method of claim 12, 상기 식별자를 생성하는 명령은 상기 대칭키를 이용하여 데이터 값을 암호화하는 명령을 포함하는 비밀키를 디바이스에 전달하는 컴퓨터 판독 가능한 저장 매체.And the instructions for generating the identifier include instructions for encrypting a data value using the symmetric key. 제 12 항에 있어서,The method of claim 12, 상기 대칭키를 이용하여 상기 데이터 구조를 암호화하는 명령을 더 포함하는 비밀키를 디바이스에 전달하는 컴퓨터 판독 가능한 저장 매체.And encrypting the data structure using the symmetric key. 제 9 항에 있어서,The method of claim 9, 상기 키 서비스 공개키를 제조 보호 시스템에 저장하는 명령을 더 포함하는 비밀키를 디바이스에 전달하는 컴퓨터 판독 가능한 저장 매체. And instructions for storing the key service public key in a manufacturing protection system. 청구항 16은(는) 설정등록료 납부시 포기되었습니다.Claim 16 was abandoned upon payment of a setup registration fee. 제 9 항에 있어서,The method of claim 9, 상기 디바이스에 대한 상기 의사 난수값은 고유한 것인 비밀키를 디바이스에 전달하는 컴퓨터 판독 가능한 저장 매체.And transmit a secret key to the device such that the pseudo random number value for the device is unique. 비밀키를 포함하고, 컴퓨터 시스템에 설치된 디바이스와 연관된 암호화된 데이터 구조가 상기 컴퓨터 시스템 상의 메모리에 저장되어 있는지를 판정하는 단계로서, 상기 디바이스는 디바이스 클래스로 이루어져 있으며, 상기 비밀키를 포함하지 않는 단계와, Determining whether an encrypted data structure associated with a device installed in a computer system is stored in a memory on the computer system, the device consisting of a device class and not including the secret key Wow, 상기 암호화된 데이터 구조가 상기 메모리에 저장되어 있지 않다면, 상기 컴퓨터 시스템에 의해 액세스 가능한 보호 온라인 서버로부터 상기 디바이스와 연관된 상기 암호화된 데이터 구조를 획득하는 단계로서, 상기 보호 온라인 서버는 상기 디바이스 클래스의 디바이스와 각각 연관된 상기 암호화된 데이터 구조의 데이터베이스를 저장하는 단계를 포함하는 If the encrypted data structure is not stored in the memory, obtaining the encrypted data structure associated with the device from a protected online server accessible by the computer system, wherein the protected online server is a device of the device class. Storing a database of the encrypted data structures associated with each; 비밀키를 디바이스에 전달하는 방법.How to pass a secret key to a device. 제 17 항에 있어서,The method of claim 17, 상기 암호화된 데이터 구조를 획득하는 단계는, 상기 디바이스에 키 획득 커맨드를 송출하여 비밀키 획득 프로세스를 개시하는 단계를 포함하는 비밀키를 디바이스에 전달하는 방법.Acquiring the encrypted data structure includes sending a key acquisition command to the device to initiate a secret key acquisition process. 청구항 19은(는) 설정등록료 납부시 포기되었습니다.Claim 19 was abandoned upon payment of a registration fee. 제 17 항에 있어서,The method of claim 17, 상기 비밀키는 디바이스의 클래스에 대하여 직접 증명 패밀리 키 쌍의 공개키와 연관된 직접 증명 비밀키를 포함하는 비밀키를 디바이스에 전달하는 방법.And the secret key comprises a direct proof secret key associated with the public key of the direct proof family key pair for the class of device. 제 18 항에 있어서,The method of claim 18, 상기 비밀키 획득 프로세스는 상기 보호 온라인 서버로부터 대응하는 키 서비스 비밀키에 의해 서명된 키 서비스 공개키를 디바이스에 의해 획득하는 단계를 포함하는 비밀키를 디바이스에 전달하는 방법.The secret key obtaining process includes obtaining, by the device, a key service public key signed by a corresponding key service secret key from the protected online server. 제 20 항에 있어서,The method of claim 20, 상기 비밀키 획득 프로세스는 상기 디바이스에 저장된 고유의 의사 난수값에 기초하여 대칭키를 생성하고, 상기 암호화된 데이터 구조에 대하여, 상기 의사 난수값을 기초로, 디바이스 식별자를 생성하는 단계를 더 포함하는 비밀키를 디바이스에 전달하는 방법.The secret key obtaining process further comprises generating a symmetric key based on a unique pseudo random value stored in the device, and generating, based on the pseudo random number value, a device identifier for the encrypted data structure. How to pass a secret key to a device. 제 21 항에 있어서,The method of claim 21, 상기 비밀키 획득 프로세스는 디바이스에 의해 과도 대칭키를 생성하고, 상기 디바이스 식별자 및 상기 과도 대칭키를 포함하는 검색 키 메시지를 구축하며, 상기 키 서비스 공개키를 이용하여 상기 검색 키 메시지를 암호화하고, 암호화 검색 키 메시지를 상기 보호 온라인 서버로 전송하는 단계를 더 포함하는 비밀키를 디바이스에 전달하는 방법.The secret key obtaining process generates a transient symmetric key by a device, constructs a search key message comprising the device identifier and the transient symmetric key, encrypts the search key message using the key service public key, Sending a cryptographic retrieval key message to the protected online server. 청구항 23은(는) 설정등록료 납부시 포기되었습니다.Claim 23 was abandoned upon payment of a set-up fee. 제 22 항에 있어서,The method of claim 22, 상기 비밀키 획득 프로세스는 상기 키 서비스 비밀키를 이용하여 암호화 검색 키 메시지를 복호화하여 디바이스 식별자를 획득하는 단계를 더 포함하는 비밀키를 디바이스에 전달하는 방법.The secret key obtaining process further includes the step of decrypting an encryption search key message using the key service secret key to obtain a device identifier. 청구항 24은(는) 설정등록료 납부시 포기되었습니다.Claim 24 was abandoned when the setup registration fee was paid. 제 23 항에 있어서,The method of claim 23, 상기 비밀키 획득 프로세스는, 생성된 디바이스 식별자와 정합하는 식별자에 의해 인덱싱된 암호화된 데이터 구조의 데이터베이스에 있는 엔트리에 대하여 상기 보호 온라인 서버를 탐색하는 단계, 상기 엔트리에 상기 암호화된 데이터 구조를 포함하는 키 응답 메시지를 구축하는 단계, 상기 키 응답 메시지를 상기 과도 대칭키로 암호화하는 단계, 및 상기 키 응답 메시지를 디바이스로 전달하는 단계를 더 포함하는 비밀키를 디바이스에 전달하는 방법.The secret key obtaining process includes searching the protected online server for an entry in a database of encrypted data structures indexed by an identifier that matches a generated device identifier, wherein the entry includes the encrypted data structure. Constructing a key response message, encrypting the key response message with the transient symmetric key, and forwarding the key response message to a device. 청구항 25은(는) 설정등록료 납부시 포기되었습니다.Claim 25 was abandoned upon payment of a registration fee. 제 24 항에 있어서,The method of claim 24, 상기 비밀키 획득 프로세스는, 상기 과도 대칭키를 이용하여 암호화 키 응답 메시지를 디바이스에 의해 복호화하여 상기 암호화된 데이터 구조를 획득하는 단계를 더 포함하는 비밀키를 디바이스에 전달하는 방법.The secret key obtaining process further includes decrypting, by the device, an encryption key response message using the transient symmetric key to obtain the encrypted data structure. 청구항 26은(는) 설정등록료 납부시 포기되었습니다.Claim 26 was abandoned upon payment of a registration fee. 제 25 항에 있어서,The method of claim 25, 상기 비밀키 획득 프로세스는 상기 대칭키를 이용하여 상기 보호 온라인 서버로부터 수신된 상기 암호화된 데이터 구조를 복호화하여 상기 비밀키 및 상기 비밀키 다이제스트를 획득하는 단계를 더 포함하는 비밀키를 디바이스에 전달하는 방법. The secret key obtaining process further includes decrypting the encrypted data structure received from the protected online server using the symmetric key to obtain the secret key and the secret key digest to deliver a secret key to a device. Way. 청구항 27은(는) 설정등록료 납부시 포기되었습니다.Claim 27 was abandoned upon payment of a registration fee. 제 25 항에 있어서,The method of claim 25, 상기 비밀키 획득 프로세스는 상기 비밀키를 해싱하여 새로운 비밀키 다이제스트를 생성하는 단계, 상기 복호화된 데이터 구조로부터의 비밀키 다이제스트를 새로운 비밀키 다이제스트와 비교하는 단계, 및 상기 다이제스트가 정합할 때 상기 비밀키를 상기 디바이스에 대하여 유효한 것으로서 수용하는 단계를 더 포함하는 비밀키를 디바이스에 전달하는 방법.The secret key obtaining process hashes the secret key to generate a new secret key digest, comparing the secret key digest from the decrypted data structure to a new secret key digest, and when the digest matches the secret. Accepting a key as valid for the device. 복수의 머신 판독가능 명령을 구비하는 컴퓨터 판독 가능한 저장 매체로서, A computer readable storage medium having a plurality of machine readable instructions, 상기 명령이 프로세서에 의해 실행될 때, 상기 명령은, When the instruction is executed by a processor, the instruction is 비밀키를 포함하고, 컴퓨터 시스템에 설치된 디바이스와 연관된 암호화된 데이터 구조가 상기 컴퓨터 시스템상의 메모리에 저장되어 있는지를 판정하되, 상기 디바이스는 디바이스 클래스로 이루어져 있으며 상기 비밀키를 포함하지 않고,Determine whether an encrypted data structure associated with a device installed in the computer system is stored in a memory on the computer system, the device consisting of a device class and not including the private key; 상기 암호화된 데이터 구조가 상기 메모리에 저장되어 있지 않다면, 상기 컴퓨터 시스템에 의해 액세스 가능한 보호 온라인 서버로부터 상기 디바이스와 연관된 상기 암호화된 데이터 구조를 획득하되, 상기 보호 온라인 서버는 상기 디바이스 클래스의 디바이스와 각각 연관된 상기 암호화된 데이터 구조의 데이터베이스를 저장함으로써, If the encrypted data structure is not stored in the memory, obtain the encrypted data structure associated with the device from a protected online server accessible by the computer system, wherein the protected online server is associated with a device of the device class, respectively. By storing a database of the associated encrypted data structures, 상기 컴퓨터 시스템에 설치된 디바이스에 대하여 비밀키를 획득하는 것을 제공하는 Providing a secret key for a device installed in the computer system 비밀키를 디바이스에 전달하는 컴퓨터 판독 가능한 저장 매체.A computer readable storage medium for delivering a secret key to a device. 제 28 항에 있어서,The method of claim 28, 상기 암호화된 데이터 구조를 획득하는 명령은 상기 디바이스에 키 획득 커맨드를 송출하여 비밀키 획득 프로세스를 개시하는 명령을 포함하는 비밀키를 디바이스에 전달하는 컴퓨터 판독 가능한 저장 매체.And instructions for obtaining the encrypted data structure include instructions for sending a key acquisition command to the device to initiate a secret key acquisition process. 제 28 항에 있어서,The method of claim 28, 상기 비밀키는 디바이스의 클래스에 대하여 직접 증명 패밀리 키 쌍의 공개키와 연관된 직접 증명 비밀키를 포함하는 비밀키를 디바이스에 전달하는 컴퓨터 판독 가능한 저장 매체.And the secret key comprises a direct proof secret key associated with the public key of the direct proof family key pair for the class of device. 제 29 항에 있어서,The method of claim 29, 상기 비밀키 획득 프로세스를 위한 명령은 상기 보호 온라인 서버로부터 대응하는 키 서비스 비밀키에 의해 서명된 키 서비스 공개키를 디바이스에 의해 획득하는 명령을 포함하는 비밀키를 디바이스에 전달하는 컴퓨터 판독 가능한 저장 매체. The computer-readable storage medium for delivering the secret key to the device includes instructions for obtaining, by the device, a key service public key signed by a corresponding key service secret key from the protected online server. . 제 31 항에 있어서,The method of claim 31, wherein 상기 비밀키 획득 프로세스를 위한 명령은 상기 디바이스에 저장된 고유의 의사 난수값에 기초하여 대칭키를 생성하고, 상기 암호화된 데이터 구조에 대하여, 상기 의사 난수값을 기초로, 디바이스 식별자를 생성하는 명령을 더 포함하는 비밀키를 디바이스에 전달하는 컴퓨터 판독 가능한 저장 매체.The command for the secret key obtaining process generates a symmetric key based on a unique pseudo random value stored in the device, and generates a device identifier for the encrypted data structure based on the pseudo random number value. A computer readable storage medium for delivering a secret key to the device. 제 32 항에 있어서,The method of claim 32, 상기 비밀키 획득 프로세스를 위한 명령은 디바이스에 의해 과도 대칭키를 생성하고, 상기 디바이스 식별자 및 상기 과도 대칭키를 포함하는 검색 키 메시지를 구축하며, 상기 키 서비스 공개키를 이용하여 상기 검색 키 메시지를 암호화하고, 상기 암호화 검색 키 메시지를 상기 보호 온라인 서버로 전송하는 명령을 더 포함하는 비밀키를 디바이스에 전달하는 컴퓨터 판독 가능한 저장 매체.The command for the secret key obtaining process generates a transient symmetric key by the device, constructs a search key message that includes the device identifier and the transient symmetric key, and uses the key service public key to retrieve the search key message. And encrypting and transmitting the encrypted search key message to the protected online server. 보안 프로토콜을 사용하여 클라이언트 컴퓨터 시스템에 설치된 디바이스에 비밀키를 전달하는 시스템으로서,A system that delivers a secret key to a device installed on a client computer system using a security protocol, 상기 클라이언트 컴퓨터 시스템에 액세스 가능하고, 키 서비스 공개/비밀키 쌍을 생성하며, 디바이스 클래스의 선택된 디바이스에 대응하는 비밀키를 각각 포함하는 암호화된 데이터 구조의 데이터베이스를 저장하고, 상기 암호화된 데이터 구조 중 선택된 하나를 상기 클라이언트 컴퓨터 시스템에 대해 보안적으로 통신하며, 상기 디바이스는 상기 비밀키를 포함하지 않도록 구성된 보호 온라인 서버와,Store a database of encrypted data structures accessible to the client computer system, generating a key service public / private key pair, each containing a secret key corresponding to a selected device of a device class; Securely communicating the selected one to the client computer system, the device comprising a protected online server configured to not include the secret key; 상기 보호 온라인 서버에 접속되고, 상기 디바이스와 연관된 상기 암호화된 데이터 구조를 생성하며, 상기 보호 온라인 서버로부터 상기 키 서비스 공개키를 수신하고, 상기 암호화된 데이터 구조를 상기 보호 온라인 서버로 전송하도록 구성된 보호 시스템과,A protection configured to connect to the protected online server, generate the encrypted data structure associated with the device, receive the key service public key from the protected online server, and send the encrypted data structure to the protected online server. System, 상기 보호 시스템에 접속되고, 상기 보호 시스템으로부터 상기 키 서비스 공개키의 해시값 및 고유 의사 난수값을 수신하며, 상기 디바이스의 비휘발성 저장소에 상기 비밀키를 저장하지 않고, 상기 클라이언트 컴퓨터 시스템에 디바이스를 설치하기 전에 상기 키 서비스 공개키의 해시값 및 상기 고유 의사 난수값을 상기 디바이스의 비휘발성 저장소에 저장하도록 구성된 제조 시스템을 포함하는 Connect to the protection system, receive a hash value and a unique pseudo-random value of the key service public key from the protection system, and store the device in the client computer system without storing the secret key in non-volatile storage of the device. A manufacturing system configured to store a hash value of the key service public key and the unique pseudo random number value in a non-volatile storage of the device prior to installation. 디바이스에 비밀키를 전달하는 시스템. A system for passing secret keys to devices. 제 34 항에 있어서,The method of claim 34, wherein 상기 비밀키는 직접 증명 패밀리 키 쌍의 공개키와 연관된 직접 증명 비밀키를 포함하는 디바이스에 비밀키를 전달하는 시스템.And the secret key comprises a direct proof secret key associated with the public key of the direct proof family key pair.
KR1020077003426A 2004-07-14 2005-07-08 Method of delivering direct proof private keys to devices using an on-line service KR100883442B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020077003426A KR100883442B1 (en) 2004-07-14 2005-07-08 Method of delivering direct proof private keys to devices using an on-line service

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/892,256 2004-07-14
KR1020077003426A KR100883442B1 (en) 2004-07-14 2005-07-08 Method of delivering direct proof private keys to devices using an on-line service

Publications (2)

Publication Number Publication Date
KR20070032073A KR20070032073A (en) 2007-03-20
KR100883442B1 true KR100883442B1 (en) 2009-02-11

Family

ID=41346453

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077003426A KR100883442B1 (en) 2004-07-14 2005-07-08 Method of delivering direct proof private keys to devices using an on-line service

Country Status (1)

Country Link
KR (1) KR100883442B1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8971530B2 (en) * 2009-06-24 2015-03-03 Intel Corporation Cryptographic key generation using a stored input value and a stored count value
KR102347733B1 (en) * 2019-09-18 2022-01-06 유비벨록스(주) Id issue/authentication system that do not need to manage personal information and secure transaction authentication method thereof
CN114036565B (en) * 2021-11-19 2024-03-08 上海勃池信息技术有限公司 Private information retrieval system and private information retrieval method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030043738A (en) * 2001-11-26 2003-06-02 마츠시타 덴끼 산교 가부시키가이샤 Application authentication system
US20040103281A1 (en) * 2002-11-27 2004-05-27 Brickell Ernie F. System and method for establishing trust without revealing identity

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030043738A (en) * 2001-11-26 2003-06-02 마츠시타 덴끼 산교 가부시키가이샤 Application authentication system
US20040103281A1 (en) * 2002-11-27 2004-05-27 Brickell Ernie F. System and method for establishing trust without revealing identity

Also Published As

Publication number Publication date
KR20070032073A (en) 2007-03-20

Similar Documents

Publication Publication Date Title
US7697691B2 (en) Method of delivering Direct Proof private keys to devices using an on-line service
US11757662B2 (en) Confidential authentication and provisioning
US7693286B2 (en) Method of delivering direct proof private keys in signed groups to devices using a distribution CD
JP4616345B2 (en) A method for directly distributing a certification private key to a device using a distribution CD
US8074265B2 (en) Methods and systems for verifying a location factor associated with a token
CN110401615B (en) Identity authentication method, device, equipment, system and readable storage medium
US20080141027A1 (en) System and method of providing security
CN111614621B (en) Internet of things communication method and system
CN112351037B (en) Information processing method and device for secure communication
KR100883442B1 (en) Method of delivering direct proof private keys to devices using an on-line service
US20210111906A1 (en) Pseudonym credential configuration method and apparatus
KR100897075B1 (en) Method of delivering direct proof private keys in signed groups to devices using a distribution cd

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130219

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140203

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150130

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160127

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170201

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee