KR100897075B1 - Method of delivering direct proof private keys in signed groups to devices using a distribution cd - Google Patents

Method of delivering direct proof private keys in signed groups to devices using a distribution cd Download PDF

Info

Publication number
KR100897075B1
KR100897075B1 KR1020077001023A KR20077001023A KR100897075B1 KR 100897075 B1 KR100897075 B1 KR 100897075B1 KR 1020077001023 A KR1020077001023 A KR 1020077001023A KR 20077001023 A KR20077001023 A KR 20077001023A KR 100897075 B1 KR100897075 B1 KR 100897075B1
Authority
KR
South Korea
Prior art keywords
private key
key
data structure
instructions
encrypted data
Prior art date
Application number
KR1020077001023A
Other languages
Korean (ko)
Other versions
KR20070019790A (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 KR1020077001023A priority Critical patent/KR100897075B1/en
Publication of KR20070019790A publication Critical patent/KR20070019790A/en
Application granted granted Critical
Publication of KR100897075B1 publication Critical patent/KR100897075B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

본 분야에서 클라이언트 컴퓨터 시스템에 설치된 디바이스에 서명 키 그룹의 다이렉트 증명 개인 키를 전달하는 것은 디바이스에서 중요한 비휘발성 스토리지를 요구하지 않고 안전한 방식으로 달성될 수도 있다. 유일한 유사 랜덤 생성 값은 제조시 디바이스의 그룹 번호와 함께 생성 및 저장된다. 유사 랜덤 생성 값은 다이렉트 증명 개인 키 및 디바이스와 관련된 개인 키 다이제스트를 홀드하는 데이터 구조를 암호화하기 위한 대칭 키를 생성하는데 사용된다. 결과적인 암호화 데이터 구조는 서명 키 그룹(예를 들어, 서명 그룹 레코드)로 이동식 기억 매체(예를 들어, CD 또는 DVD)에 저장되고, 클라이언트 컴퓨터 시스템의 소유자에게 분배된다. 디바이스가 클라이언트 컴퓨터 시스템에서 초기화될 때, 시스템은 국부화되고 암호화 데이터 구조가 시스템에 존재하는지를 체크한다. 존재하지 않으면, 시스템은 이동식 기억 매체로부터 암호화 데이터 구조들의 관련 서명 그룹 레코드를 획득하고, 서명 그룹 레코드를 검증한다. 그룹 레코드가 유효할 때, 디바이스는 저장된 유사 랜덤 생성 값으로부터 재생된 대칭 키를 사용해서 암호화 데이터 구조를 해독해서, 다이렉트 증명 개인 키를 획득한다. 개인 키가 유효하면, 클라이언트 컴퓨터 시스템에서 디바이스에 의한 차후 인증 프로세싱에 사용될 수도 있다.Delivering a direct proof private key of a signature key group to a device installed in a client computer system in the art may be accomplished in a secure manner without requiring significant nonvolatile storage at the device. The unique pseudo random generated value is generated and stored with the group number of the device at the time of manufacture. The pseudo-random generated value is used to generate a symmetric key for encrypting the data structure holding the direct proof private key and the private key digest associated with the device. The resulting encrypted data structure is stored in a removable storage medium (eg, CD or DVD) as a signature key group (eg, signature group record) and distributed to the owner of the client computer system. When the device is initialized at the client computer system, the system is localized and checks whether an encrypted data structure exists in the system. If not present, the system obtains the relevant signature group record of the encrypted data structures from the removable storage medium and verifies the signature group record. When the group record is valid, the device decrypts the encrypted data structure using the symmetric key reproduced from the stored pseudo random generated value to obtain a direct proof private key. If the private key is valid, it may be used for later authentication processing by the device in the client computer system.

클라이언트 컴퓨터 시스템, 제조 생성 시스템, 제조 보호 시스템, 키블로브, 그룹 레코드  Client computer systems, manufacturing generation systems, manufacturing protection systems, keyblobs, group records

Description

배포 CD를 사용하는 장치에 서명 그룹의 다이렉트 증명 개인 키들을 전달하는 방법{METHOD OF DELIVERING DIRECT PROOF PRIVATE KEYS IN SIGNED GROUPS TO DEVICES USING A DISTRIBUTION CD}METHOD OF DELIVERING DIRECT PROOF PRIVATE KEYS IN SIGNED GROUPS TO DEVICES USING A DISTRIBUTION CD}

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

콘텐츠 보호 및/또는 컴퓨터 보안 기능들을 지원하는 몇몇 프로세싱 시스템 아키텍처들은 특별 보호 또는 "신뢰" 소프트웨어 모듈들이 프로세싱 시스템의 특별 보호 또는 "신뢰" 하드웨어 디바이스들(예를 들어, 그래픽 컨트롤러 카드)과의 인증 암호화 통신 세션을 생성할 수 있을 것을 요구한다. 디바이스를 식별하고 동시에 암호화 통신 세션을 설정하는 흔히 사용되는 한 방법은 원사이드 인증 DH(Diffie-Helman) 키 교환 프로세스를 사용하는 것이다. 본 프로세스에서는, 유일한 공개/개인 RSA(Rivest, Shamir and Adelman) 알고리즘 키 쌍 또는 유일한 ECC(Elliptic Curve Cryptography) 키 쌍이 디바이스에 할당된다. 그러나, 상기 인증 프로세스는 RSA 또는 ECC 키들을 사용하기 때문에, 디바이스는 유일한 입증 가능 아이덴티티를 갖는데, 이는 프라이버시 개념을 야기할 수 있다. 최악의 경우, 상기 개념은 이러한 종류의 보안을 제공하는 신뢰할만한 디바이스들을 생성하 는 고유 장치 제조자(OEM)들로부터의 지원 부족을 야기할 수도 있다.Some processing system architectures that support content protection and / or computer security functions have special protection or "trusted" software modules that encrypt the processing system's special protection or authentication with "trusted" hardware devices (eg, a graphics controller card). Requires to be able to create a communication session. One commonly used method of identifying a device and simultaneously establishing an encrypted communication session is to use a one-sided authentication DH (Diffie-Helman) key exchange process. In this process, a unique public / private Rivest, Shamir and Adelman (RSA) algorithm key pair or a unique Elliptic Curve Cryptography (ECC) key pair is assigned to the device. However, since the authentication process uses RSA or ECC keys, the device has a unique verifiable identity, which can lead to privacy concepts. In the worst case, the concept may cause a lack of support from unique device manufacturers (OEMs) creating reliable devices that provide this kind of security.

본 발명의 특징들 및 장점들은 본 발명의 이하의 상세한 설명으로부터 명백해질 것이다: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 실시예를 도시한다.2 illustrates a first embodiment of a platform that includes 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는 본 발명의 한 실시예에 따른 서명 그룹의 다이렉트 증명 키들을 분배하는 시스템의 도면이다.5 is a diagram of a system for distributing direct proof keys of a signature group according to one embodiment of the invention.

도 6은 본 발명의 한 실시예에 따른 서명 그룹의 다이렉트 증명 키들을 분배하는 방법의 단계들을 도시한 플로우챠트이다.6 is a flow chart illustrating the steps of a method for distributing direct authentication keys of a signature group according to one embodiment of the invention.

도 7 및 도 8은 본 발명의 한 실시예에 따른 디바이스 제조 셋업 프로세싱을 도시하는 플로우챠트들이다.7 and 8 are flowcharts illustrating device manufacturing setup processing in accordance with an embodiment of the present invention.

도 9는 본 발명의 한 실시예에 따른 디바이스 제조 생성 프로세싱을 도시하는 플로우챠트이다.9 is a flowchart illustrating device manufacturing generation processing in accordance with an embodiment of the present invention.

도 10 및 도 11은 본 발명의 한 실시예에 따른 클라이언트 컴퓨터 시스템 셋업 프로세싱을 도시하는 플로우챠트들이다.10 and 11 are flowcharts illustrating client computer system setup processing in accordance with one embodiment of the present invention.

도 12는 본 발명의 한 실시예에 따른 클라이언트 컴퓨터 시스템 프로세싱을 도시하는 플로우챠트이다.12 is a flowchart illustrating client computer system processing in accordance with an embodiment of the present invention.

보호/신뢰 디바이스들이 자신을 인증하고 신뢰 소프트웨어 모듈들로 암호화 통신 세션을 설정할 수 있도록 다이렉트 증명 기반 디피-헬먼(Diffie-Helman) 키 교환 프로토콜을 사용함으로써, 프로세싱 시스템에서 임의의 유일한 아이덴티티 정보가 생성되는 것이 방지되며, 따라서, 프라이버시 개념 야기가 방지된다. 그러나, 제조 라인에서 디바이스에 다이렉트 증명 개인 키를 직접 내장하는 것은 디바이스에서 다른 방법들 보다 더 많은 보호 비휘발성 스토리지를 요구하기에, 디바이스 코스트가 증가한다. 본 발명의 한 실시예는 서명 그룹들의 다이렉트 증명 개인 키들(예를 들어, 서명을 위해 사용되는 키들)이 안전한 방식으로 배포 컴팩트 디스크-판독 전용 메모리(CD-ROM 또는 CD)에 전달되어 디바이스 자체에 의해 디바이스에 차후에 설치될 수 있게 해준다. 한 실시예에서, 상기 성능을 지원하는데 필요한 디바이스 스토리지는 대략 300 내지 700 바이트들에서 대략 20-25 바이트들로 감소될 수도 있다. 디바이스들을 위한 다이렉트 증명 기반 디피-헬먼 키 교환을 구현하는데 필요한 비휘발성 스토리지의 양의 상술된 감소는 상기 기술의 보다 광범위한 적응을 야기할 수도 있다.By using a direct proof-based Diffie-Helman key exchange protocol so that protection / trusted devices can authenticate themselves and establish an encrypted communication session with trusted software modules, any unique identity information is generated in the processing system. Is prevented, and thus causing a privacy concept is prevented. However, directly embedding a direct proof private key in a device in a manufacturing line requires more protected nonvolatile storage than other methods in the device, thus increasing the device cost. One embodiment of the present invention provides that the direct proof private keys of the signature groups (eg, the keys used for signing) are delivered in a secure manner to a distributed compact disk-read only memory (CD-ROM or CD) to the device itself. This allows the device to be installed later. In one embodiment, the device storage required to support the performance may be reduced from approximately 300 to 700 bytes to approximately 20-25 bytes. The above-described reduction in the amount of nonvolatile storage required to implement direct proof-based Diffie-Helman key exchange for devices may result in more extensive adaptation of the technology.

본 명세서에서 본 발명의 "하나의 실시예" 또는 "한 실시예"라는 말은 실시예와 관련해서 기술된 특정 기능, 구조 또는 특징이 본 발명의 적어도 하나의 실시예에 포함됨을 의미한다. 따라서, 본 명세서의 다양한 위치들에서 나타나는 "한 실시예에서"라는 구절은 반드시 모두 동일한 실시예를 말하는 것은 아니다.As used herein, the phrase "one embodiment" or "an embodiment" means that a particular function, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, the phrases "in one embodiment" in various places in the specification are not necessarily all referring to the same embodiment.

이하의 설명에서, 특정 용어는 본 발명의 하나 이상의 실시예들의 특정 특징들을 기술하는데 사용된다. 예를 들어, "플랫폼"은 정보를 송신하고 수신하도록 적응된 임의의 타입의 통신 디바이스로서 정의된다. 다양한 플랫폼의 일례는 컴퓨터 시스템, 퍼스널 디지털 어시스턴트, 셀룰러 폰, 셋탑 박스, 팩스, 프린터, 모뎀, 라우터 등을 포함하지만, 이들로만 제한되지 않는다. "통신 링크"는 플랫폼에 적응된 하나 이상의 정보-전달 매체들로서 광범위하게 정의된다. 다양한 타입들의 통신 링크의 예들은 전기 배선(들), 광 섬유(들), 케이블(들), 버스 트레이스(들), 또는 무선 시그널링 기술을 포함하지만, 이들로만 제한되지 않는다.In the following description, specific terminology is used to describe particular features of one or more embodiments of the invention. For example, “platform” is defined as any type of communication device adapted to transmit and receive information. Examples of various platforms include, but are not limited to, computer systems, personal digital assistants, cellular phones, set top boxes, fax machines, printers, modems, routers, and the like. "Communication link" is broadly defined as one or more information-carrying media adapted to the 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 signaling technology.

"챌린저(challenger)"는 다른 엔티티로부터 몇몇 인증 검증 또는 허가 검증을 요청하는 임의의 엔티티(예를 들어, 사람, 플랫폼, 시스템, 소프트웨어 및/또는 디바이스)를 말한다. 통상, 이는 요청된 정보를 기술하거나 제공하기 전에 실행된다. "응답기(reponder)"는 허가, 유효성 및/또는 아이덴티티의 증명을 제공하기 위해 요청된 임의의 엔티티를 말한다. "증명 제조자"와 상호 교환되어 사용될 수도 있는 "디바이스 제조자"는 플랫폼 또는 디바이스를 제조하거나 구성하는 임의의 엔티티를 말한다.A "challenger" refers to any entity (eg, person, platform, system, software and / or device) that requests some authentication verification or authorization verification from another entity. Typically, this is done before describing or providing the requested information. "Reponder" refers to any entity requested to provide proof of authorization, validity and / or identity. A “device manufacturer”, which may be used interchangeably with “certification manufacturer,” refers to any entity that manufactures or configures a platform or device.

본 명세서에서 사용된 바와 같이, 응답기가 몇몇 암호 정보(예를 들어, 디지털 서명, 키와 같은 시크리트 등)의 소유 또는 지식을 가짐을 챌린저에게 "증명"해주거나 또는 "확신"을 주는 것은, 챌린저에게 기술된 정보 및 증명을 근거로, 응답기가 암호 정보를 가질 확률이 높음을 의미한다. 암호 정보를 챌린저에게 "누설"하고나 "노출"하지 않고 챌린저에게 이를 증명하는 것은, 챌린저에게 노출된 정보를 근거로, 챌린저가 암호 정보를 결정하는 것인 계산적으로 실행 불가능함을 의미한다.As used herein, “proving” or “confirming” a challenger that a responder has possession or knowledge of some cryptographic information (eg, a digital signature, a secret, such as a key, etc.) is a challenger. Based on the information and attestation, the probability that the responder has cryptographic information is high. Proving it to the challenger without "leaking" or "exposing" the cryptographic information means that the challenger is computationally infeasible, based on the information exposed to the challenger.

이러한 증명을 이후부터 다이렉트 증명이라고 한다. 상기 타입의 증명들은 통상 본 분야에서 공지된 것으로, "다이렉트 증명"이라는 용어는 제로-지식 증명(zero-knowledge proofs)이라고 한다. 특히, 본 명세서에서 참조된 특정 다이렉트 증명 프로토콜은 본 출원의 소유자에게 양도된 "System and Method for Establishing Trust Without Revealing Identity"이라는 제목으로 2002년 11월 27일에 출원된 공동 계류중인 특허 출원 일련 번호 제10/306,336호의 주제이다. 다이렉트 증명은 발행인이 발행인에 의해 정의된 공통 특징들을 공유하는 다수의 멤버들의 패밀리를 정의하는 프로토콜을 정의한다. 발행인은 패밀리를 총체적으로 표현하는 패밀리 공개 및 개인 키 쌍(Fpub 및 Fpri)을 생성한다. Fpri를 사용해서, 발행인은 패밀리의 각각의 개별 멤버에 대한 고유의 다이렉트 증명 개인 서명 키(DPpri)를 생성할 수 있다. 개별 DPpri에 의해 서명된 임의의 메시지는 패밀리 공개 키 Fpub를 사용해서 검증될 수 있다. 그러나, 상기 검증은 단지 서명인이 패밀리의 멤버임을 식별한다; 개별 멤버에 대한 유일한 식별 정보는 공개되지 않는다. 한 실시예에서, 발행인은 디바이스 제조자 또는 대리자일 수도 있다. 즉, 발행인은 공유 특징을 근거로 디바이스 Families를 정의하고, Family 공개/개인 키 쌍을 생성하고, DP 개인 키들을 디바이스에 주입하는 기능을 가진 엔티티일 수도 있다. 발행인은 키의 소스 및 디바이스 패밀리의 특징들을 식별하는 Family 공개 키에 대한 증명서를 생성할 수도 있다.This proof is hereinafter referred to as direct proof. Proofs of this type are commonly known in the art, and the term "direct proof" is referred to as zero-knowledge proofs. In particular, the specific direct attestation protocol referred to herein refers to a co-pending patent application serial number filed on November 27, 2002 entitled “System and Method for Establishing Trust Without Revealing Identity” assigned to the owner of the present application. 10 / 306,336. Direct proof defines a protocol in which an issuer defines a family of multiple members that share common features defined by the issuer. The publisher generates family public and private key pairs (Fpub and Fpri) that collectively represent the family. Using Fpri, the issuer can generate a unique direct proof private signature key (DPpri) for each individual member of the family. Any message signed by an individual DPpri can be verified using the family public key Fpub. However, the verification only identifies that the signer is a member of the family; Unique identifying information for individual members is not disclosed. In one embodiment, the issuer may be a device manufacturer or representative. That is, the issuer may be an entity with the ability to define device Families based on shared features, generate Family public / private key pairs, and inject DP private keys into the device. The issuer may generate a certificate for the Family public key that identifies the source of the key and the features of the device family.

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

또한, 강조된 보안을 위해, 제1 플랫폼(102)은 선택된 디바이스 제조자 또는 선택된 그룹의 디바이스 제조자들(이후부터 "디바이스 제조자(들)(110)"라고 함)에 의해 제조된 디바이스로부터의 요청 정보(108)를 검증할 필요가 있을 수도 있다. 예를 들어, 본 발명의 한 실시예의 경우, 제1 플랫폼(102)은 디바이스 제조자(들)(110)에 의해 생성된 암호 정보(예를 들어, 서명)를 가짐을 보여주도록 제2 플랫폼(104)에게 요구한다. 상기 요구는 (도시된 대로) 요청(106)에 포함되거나 개별적으로 송신될 수도 있다. 제2 플랫폼(104)은 암호 정보를 폭로하지 않고, 디바이스 제조자(들)(110)에 의해 생성된 암호 정보를 제2 플랫폼(104)이 가짐을 제1 플랫폼(102)에게 확신시키기 위해 응답 형태로 정보를 제공함으로써 상기 요구에 응답한다. 응답은 (도시된 대로) 요청 정보(108)의 일부일 수도 있거나 개별적인 송신일 수도 있다.In addition, for enhanced security, the first platform 102 may request information from a device manufactured by a selected device manufacturer or a selected group of device manufacturers (hereinafter referred to as " device manufacturer (s) 110 "). 108 may need to be verified. For example, for one embodiment of the present invention, the second platform 104 is shown to show that the first platform 102 has cryptographic information (eg, a signature) generated by the device manufacturer (s) 110. Ask. The request may be included in request 106 (as shown) or transmitted separately. The second platform 104 does not expose cryptographic information, but in response form to assure the first platform 102 that the second platform 104 has cryptographic information generated by the device manufacturer (s) 110. Respond to the request by providing information. The response may be part of the request information 108 (as shown) or may be a separate transmission.

본 발명의 한 실시예에서, 제2 플랫폼(104)은 신뢰 플랫폼 모듈(TPM; 115)을 포함한다. TPM(115)은 디바이스 제조자(들)(110)에 의해 제조된 암호 디바이스이다. 본 발명의 한 실시예에서, TPM(115)은 팩키지 내에 포함된 소량의 온-칩 메모리를 갖는 프로세서를 포함한다. TPM(115)은 응답이 유효 TPM으로부터 송신됨을 결정할 수 있게 해주는 정보를 제1 플랫폼(102)에게 제공하도록 구성된다. 사용된 정보는 TPM의 아이덴티티 또는 제2 플랫폼의 아이덴티티가 결정될 수 있게 해주지 않을 콘텐츠이다.In one embodiment of the present invention, the second platform 104 includes a Trust 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 having a small amount of on-chip memory contained within a package. The TPM 115 is configured to provide the first platform 102 with information that enables it to determine that a response is sent from a valid TPM. The information used is content that will not allow the identity of the TPM or the identity of the second platform to 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 having a TPM 115. For this embodiment of the invention, the second platform 104 includes a processor 202 coupled 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 state machine. Further, in another embodiment of the present invention, the processor 202 is implemented as programmable or hard-code logic, such as a field programmable gate array (FPGA), a transistor-transistor logic (TTL), or even an application specific integrated circuit (ASIC). May be

본 명세서에서, 제2 플랫폼(104)은 키들, 해시값들, 서명들, 증명서들 등 중 하나 이상과 같은 암호 정보의 저장을 가능케 하는 스토리지 유닛(206)을 더 포함한다. "X"의 해시값은 "Hash(X)"로 표현될 수도 있다. 상기 정보가 도 3에 도시된 바와 같이 스토리지 유닛(206) 대신 TPM(115)의 내부 메모리(220) 내에 저장될 수도 있다. 암호 정보는, 특히 TPM(115) 외부에 저장되는 경우 암호화될 수도 있다.In this specification, the second platform 104 further includes a storage unit 206 that enables storage of cryptographic information, such as one or more of keys, hash values, signatures, certificates, and the like. The hash value of "X" may be expressed as "Hash (X)". The information may be stored in the internal memory 220 of the TPM 115 instead of the storage unit 206 as shown in FIG. 3. The cryptographic information may be encrypted, especially when stored outside the TPM 115.

도 4는 도 2의 TPM(115)으로 구현된 컴퓨터 시스템(300)을 포함하는 플랫폼의 한 실시예를 도시한다. 컴퓨터 시스템(300)은 버스(302)에 결합된 프로세서(310)와 버스(302)를 포함한다. 컴퓨터 시스템(300)은 메인 메모리 유닛(304) 및 정적 메모리 유닛(306)을 더 포함한다.4 illustrates one embodiment of a platform including a computer system 300 implemented with the TPM 115 of FIG. 2. Computer system 300 includes a processor 310 and a bus 302 coupled to a 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 the present specification, the main memory unit 304 is a volatile semiconductor memory for storing instructions and information executed by the processor 310. Main memory 304 may be used to store temporary variables or other intermediate information while instructions are being executed by processor 310. The static memory unit 306 is a nonvolatile semiconductor memory for more permanently storing instructions and information for the processor 310. 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 coupled to bus 302.

본 발명의 한 실시예에서, 컴퓨터 시스템(300)은 자기 디스크 또는 광 디스크와 같은 데이터 스토리지 디바이스(308)를 더 포함하고 대응 드라이브는 정보 및 명령들을 저장하기 위해 컴퓨터 시스템(300)에 결합될 수도 있다.In one embodiment of the present invention, computer system 300 further includes a data storage device 308, such as a magnetic disk or an optical disk, and a corresponding drive may be coupled to computer system 300 to store information and instructions. have.

컴퓨터 시스템(300)은 엔드 유저에게 정보를 디스플레이하기 위한 음극선관(CRT), 액정 디스플레이(LCD) 또는 임의의 플랫 패널 디스플레이와 같은 디스플레이(도시되지 않음)를 제어하는 그래픽 컨트롤러 디바이스(314)에 버스(302)를 통해 결합될 수도 있다. 한 실시예에서, 그래픽 컨트롤러 또는 다른 주변 디바이스가 프로세서에 의해 실행중인 소프트웨어 모듈과의 인증 암호화 통신 세션을 설정할 수 있는 것이 바람직할 수도 있다.Computer system 300 is a bus to graphics controller device 314 that controls a display (not shown), such as a cathode ray tube (CRT), liquid crystal display (LCD), or any flat panel display for displaying information to an end user. May be coupled via 302. In one embodiment, it may be desirable for a graphics controller or other peripheral device to be able to establish an authentication encrypted communication session with a software module running by a processor.

통상, 영숫자 입력 장치(316)(예를 들어, 키보드, 키패드 등)는 정보 및/또는 커맨드 선택을 프로세서(310)에 전달하기 위해 버스(302)에 결합될 수도 있다. 다른 타입의 사용자 입력 장치는 프로세서(310)에게 방향 정보 및 커맨드 선택을 전달하고 디스플레이(314)에서의 커서 이동을 제어하기 위한 마우스, 트랙볼, 터치 패드, 스타일러스 또는 커서 방향 키들과 같은 커서 제어 유닛(318)이다.Typically, alphanumeric input device 316 (eg, keyboard, keypad, etc.) may be coupled to bus 302 to convey information and / or command selections to processor 310. Another type of user input device is a cursor control unit (such as a mouse, trackball, touch pad, stylus, or cursor direction keys) for communicating direction information and command selections to the processor 310 and controlling cursor movement on the display 314. 318).

통신 인터페이스 유닛(320)이 또한 버스(302)에 결합된다. 인터페이스 유닛(320)의 예들은 모뎀, 네트워크 인터페이스 카드 또는 근거리 또는 광역 통신망의 일부를 형성하는 통신 링크에 결합하는데 사용되는 다른 잘 공지된 인터페이스들을 포함한다. 이러한 방식으로, 컴퓨터 시스템(300)은 예를 들어, 회사의 인트라넷 및/또는 인터넷과 같은 종래의 네트워크 기본 시스템을 통해 다수의 클라이언트들 및/또는 서버들에 결합될 수도 있다.Communication interface unit 320 is also coupled to bus 302. Examples of interface unit 320 include modems, network interface cards, or other well known interfaces used to couple to a communication link that forms part of a local area or wide area network. In this manner, computer system 300 may be coupled to a number of clients and / or servers, for example, through conventional network foundation systems such as a company's intranet and / or the Internet.

상술된 보다 더 적거나 많은 장치를 가진 컴퓨터 시스템이 특정 구현을 위해 바람직할 수도 있음을 알 것이다. 따라서, 컴퓨터 시스템(300)의 구성은 가격 제한, 성능 요구 사항, 기술 향상 및/또는 다른 상황들과 같은 다수의 요인들에 좌우되어 실시예마다 다양하게 구현될 것이다.It will be appreciated that computer systems with fewer or more devices than described above may be desirable for certain implementations. Thus, the configuration of computer system 300 will vary from one embodiment to another depending on a number of factors, such as price constraints, performance requirements, technical improvements, and / or other circumstances.

적어도 하나의 실시예에서, 컴퓨터 시스템(300)은 메인 메모리(304) 및/또는 대용량 기억 장치(308)에 저장되고 시스템의 다른 부적당한 소프트웨어에 있는 경우에도 특정 활동들을 실행하기 위해 프로세서(310)에 의해 실행중인 특별 보호 "신뢰" 소프트웨어 모듈들(예를 들어, 손을 타기 어려운(tamper-resistant) 소프트웨어, 또는 보호 프로그램들을 실행하는 기능을 갖는 시스템들)의 사용을 지원할 수도 있다. 상기 신뢰 소프트웨어 모듈들 중 몇몇은 단지 다른 플랫폼들이 아닌 예를 들어, 그래픽 컨트롤러(314)와 같은 동일한 플랫폼 내의 하나 이상의 디바이스들에게 동일하게 "신뢰할만한" 보호 액세스를 요구한다. 일반적으로, 이러한 액세스는 디바이스의 성능 및/또는 특정 아이덴티티를 식별하고, 시스템의 다른 소프트웨어에 의해 속여질 수 없는 데이터의 교환을 허용하도록 디바이스와의 암호화 세션을 설정할 수 있을 것을 신뢰 소프트웨어 모듈에게 요구한다.In at least one embodiment, computer system 300 is stored in main memory 304 and / or mass storage device 308 and may execute processor 310 to execute certain activities even when in other inappropriate software of the system. May support the use of special protection "trusted" software modules (eg, tamper-resistant software, or systems with the ability to run protection programs) running by. Some of the trusted software modules require the same " trusted " protected access to one or more devices in the same platform, for example, graphics controller 314, not just other platforms. In general, such access requires the trust software module to be able to identify the device's capabilities and / or specific identities and establish an encrypted session with the device to allow the exchange of data that cannot be deceived by other software in the system. .

디바이스를 식별하고 동시에 암호화 세션을 설정하는 한 종래 기술의 방법은 원사이드 인증 디피-헬먼(DH) 키 교환 프로세스를 사용하는 것이다. 본 프로세스에서, 디바이스는 유일한 공개/개인 RSA 또는 ECC 키 쌍을 할당 받는다. 디바이스는 개인 키를 홀드 및 보호하고, 인증 증명서와 함께 공개 키는 소프트웨어 모듈에 공개될 수도 있다. DH 키 교환 프로세스 중에, 디바이스는 소프트웨어 모듈이 대응 공개 키를 사용해서 검증할 수 있는 개인 키를 사용해서 메시지에 서명한다. 이는 메시지가 해당 디바이스로부터 온 것임을 소프트웨어 모듈이 인증할 수 있게 해준다.One prior art method of identifying a device and simultaneously establishing an encryption session is to use a one-sided authentication Diffie-Hellman (DH) key exchange process. In this process, the device is assigned a unique public / private RSA or ECC key pair. The device holds and protects the private key, and the public key along with the authentication certificate may be disclosed to the software module. During the DH key exchange process, the device signs the message using a private key that the software module can verify using the corresponding public key. This allows the software module to authenticate that the message is from that device.

그러나, 상기 인증 프로세스가 RSA 또는 ECC 키를 사용하기 때문에, 디바이스는 유일한 입증 가능 아이덴티티를 갖는다. 디바이스가 개인 키로 메시지에 서명하게 할 수 있는 임의의 소프트웨어 모듈은 상기 특정한 유일 디바이스가 컴퓨터 시스템에 존재함을 입증할 수 있다. 디바이스가 프로세싱 시스템들 간에 거의 이동하지 않는 경우, 이는 입증 가능 유일한 컴퓨터 시스템 아이덴티티를 나타낸다. 또한, 디바이스의 공개 키 자체는 유일한 상수 값을 나타낸다; 실제로 영구 "쿠키"라고 한다. 몇몇 경우, 상기 특징들은 중요한 프라이버시 문제점으로 해석될 수도 있다.However, since the authentication process uses RSA or ECC keys, the device has a unique verifiable identity. Any software module that can allow a device to sign a message with a private key can prove that the particular unique device exists in the computer system. If the device rarely moves between processing systems, this represents the only verifiable computer system identity. In addition, the device's public key itself represents a unique constant value; It is actually called a permanent "cookie". In some cases, these features may be interpreted as significant privacy issues.

다른 방법은 본 출원의 소유자에게 양도된 "An Apparatus and Method for Establishing an Authenticated Encrypted Session with a Device Without Exposing Privacy-Sensitive Information"라는 제목의 2004년 11월 20일에 출원된 공동 계류중인 특허 출원 일련 번호 제10/999,576호에 기술되어 있다. 상기 방법에서, 원 사이드 인증 디피-헬먼 프로세스에서 사용되는 RSA 또는 ECC 키들은 다이렉트 증명 키들로 대체된다. 상기 방법을 사용하는 디바이스는 디바이스의 동작 또는 신뢰 상태에 대한 보증을 포함할 수도 있는 디바이스의 특정 패밀리에 속한 것으로 인증될 수도 있다. 본 방법은 프로세싱 시스템을 나타내는 유일 아이덴티티를 설정하는데 사용될 수 있는 임의의 유일 식별 정보를 공개하지 않는다.Another method is a co-pending patent application serial number filed on November 20, 2004 entitled "An Apparatus and Method for Establishing an Authenticated Encrypted Session with a Device Without Exposing Privacy-Sensitive Information" assigned to the owner of the present application. No. 10 / 999,576. In this method, the RSA or ECC keys used in the one side authentication Diffie-Hell process are replaced with direct proof keys. A device using the method may be authenticated as belonging to a specific family of devices that may include assurance of the operation or trust status of the device. The method does not disclose any unique identifying information that may be used to establish a unique identity representing the processing system.

상기 방법이 양호하게 작용하더라도, RSA 또는 ECC 키 보다 더 클 수도 있는 다이렉트 증명 개인 키를 홀드하기 위한 디바이스의 추가 스토리지가 필요하다. 추가 스토리지 요구 사항의 부담을 경감시키기 위해, 본 발명의 실시예들은 디바이스의 상당한 추가 스토리지를 요구하지 않고, 키가 필요할 때 디바이스가 다이렉트 증명 개인 키를 가짐을 보증하기 위한 시스템 및 프로세스를 정의한다. 한 실시예에서, DP 키들은 클라이언트 컴퓨터 시스템에 서명 그룹들로 전달된다.Although the method works well, additional storage of the device is needed to hold the direct proof private key, which may be larger than the RSA or ECC key. To alleviate the burden of additional storage requirements, embodiments of the present invention define a system and process to ensure that a device has a direct proof private key when a key is needed, without requiring significant additional storage of the device. In one embodiment, the DP keys are delivered in signature groups to the client computer system.

본 발명의 적어도 하나의 실시예에서, 디바이스 제조자는 디바이스가 제조 라인에서 생성중일 때 디바이스에 128-비트 유사 랜덤 수만을 저장하는 한편, 보다 큰 다이렉트 증명 개인 키(DPpri)가 배포 CD를 사용해서 암호화 및 전달될 수도 있다. 다른 실시예들은 128 비트들 보다 길거나 짧은 수를 디바이스에 저장할 수도 있다. 상기 프로세스는 특정 디바이스만이 할당된 DPpri 키를 해독 및 사용할 수 있음을 보증한다.In at least one embodiment of the present invention, the device manufacturer stores only 128-bit pseudo-random numbers in the device when the device is being generated on the manufacturing line, while a larger direct proof private key (DPpri) is encrypted using the distribution CD. And may be delivered. Other embodiments may store a number longer or shorter than 128 bits in the device. The process ensures that only certain devices can decrypt and use the assigned DPpri key.

본 발명의 적어도 하나의 실시예에서, "키블로브(keyblob)"라고 하는 DPpri 암호화 데이터 구조들은 디바이스 제조자에 의해 서명된 그룹 레코드들로 전달될 수도 있다. 전체 그룹 레코드는 자신의 암호화 키블로브만을 추출하는 디바이스로 전달되어야만 한다. 디바이스가 전체 레코드를 분석하고(parse), 전체 레코드가 분석될 때까지 추출된 키블로브 처리를 시작하지 않을 것을 요구함으로써, 침해자(attacker)가 타이밍 침해를 근거로 어떤 키블로브가 선택되었는지를 추정할 수 없다. 레코드에 서명하고, 디바이스가 키블로브 처리 전에 서명을 검증할 것을 요구함으로써, 침해자가 디바이스의 응답을 테스트하기 위해 싱글 키블로브의 다수의 복사본들을 공급할 수 없음을 보증할 수도 있다. 한 실시예에서, 침해자가 결정할 수 있는 최상은 디바이스가 그룹의 멤버라는 점이다. 한 실시예에서, 디바이스는 선정된 크기(예를 들어, 128 비트)의 유사 랜덤 값, 그룹 식별자(예를 들어, 4 바이트) 및 디바이스 제조자의 그룹 공개 키의 20-바이트 해시값을 저장하는데, 총 대략 40 바이트 데이터이다.In at least one embodiment of the present invention, DPpri encrypted data structures, referred to as "keyblobs," may be delivered in group records signed by the device manufacturer. The entire group record must be delivered to a device that extracts only its own encryption keyblob. By requiring the device to parse the entire record and not start the extracted keyblob processing until the entire record has been analyzed, the attacker can determine which keyblob was selected based on the timing violation. Cannot be estimated. By signing the record and requiring the device to verify the signature prior to keyblob processing, it may ensure that an intruder cannot supply multiple copies of a single keyblob to test the device's response. In one embodiment, the best that an intruder can determine is that the device is a member of a group. In one embodiment, the device stores pseudo random values of a predetermined size (eg, 128 bits), a group identifier (eg, 4 bytes), and a 20-byte hash value of the device manufacturer's group public key, Approximately 40 bytes total data.

도 5는 본 발명의 한 실시예에 따른 서명 그룹의 다이렉트 증명 키들을 분배하기 위한 시스템(500)의 도면이다. 본 시스템에는 3개의 엔티티들, 디바이스 제조 보호 시스템(502), 디바이스 제조 생성 시스템(503) 및 클라이언트 컴퓨터 시스템(504)이 있다. 디바이스 제조 보호 시스템은 디바이스(506)의 제조 전에 셋업 프로세스에서 사용되는 프로세싱 시스템을 포함한다. 보호 시스템(502)은 디바이스 제조자 또는 다른 엔티티에 의해 동작될 수도 있어서, 보호 시스템이 디바이스 제조 사이트 외부에서의 해커의 침해로부터 보호된다(예를 들어, 폐쇄 시스템이다). 제조 생성 시스템(503)은 디바이스의 제조시 사용될 수도 있다. 한 실시예에서, 보호 시스템 및 생성 시스템은 동일한 시스템일 수도 있다. 디바이스(506)는 클라이언트 컴퓨터 시스템에 포함되는 임의의 하드웨어 디바이스(예를 들어, 메모리 컨트롤러, 그래픽스 컨트롤러, 입출력 장치와 같은 주변 장치, I/O장치, 다른 디바이스들 등)을 포함한다. 본 발명의 실시예들에서, 디바이스는 디바이스의 비휘발성 스토리지에 저장된 유사 랜덤 값 RAND(508) 및 그룹 번호(509)를 포함한다.5 is a diagram of a system 500 for distributing direct authentication keys of a signature group in accordance with one embodiment of the present invention. There are three entities in the system, a device manufacturing protection system 502, a device manufacturing generation system 503, and a client computer system 504. The device manufacturing protection system includes a processing system used in a setup process prior to manufacturing the device 506. The protection system 502 may be operated by a device manufacturer or other entity such that the protection system is protected from intrusion of hackers outside the device manufacturing site (eg, a closed system). Manufacturing generation system 503 may be used in the manufacture of devices. In one embodiment, the protection system and the generation system may be the same system. Device 506 includes any hardware device (eg, a memory controller, a graphics controller, a peripheral device such as an input / output device, an I / O device, other devices, etc.) included in a client computer system. In embodiments of the invention, the device includes a pseudo random value RAND 508 and a group number 509 stored in the device's nonvolatile storage.

제조 보호 시스템은 보호 데이터베이스(510) 및 생성 함수(512)를 포함한다. 보호 데이터베이스는 후술되는 방식으로 생성 함수(512)에 의해 생성된 다수의 유사 랜덤 값들(제조되는 디바이스 당 적어도 하나)을 저장하기 위한 데이터 구조를 포함한다. 생성 함수는 본 명세서에서 키블로브(514)라고 하는 데이터 구조를 생성하기 위해 로직(소프트웨어 또는 하드웨어로 구현됨)을 포함한다. 키블로브(514)는 적어도 3개의 데이터 아이템들을 포함한다. 유일 다이렉트 증명 개인 키(DPpri)는 서명을 위해 디바이스에 의해 사용될 수도 있는 암호 키를 포함한다. DP 개인 다이제스트(516; DPpri Digest)는 SHA-1과 같은 안전한 메시지 다이제스트를 생성하는 임의의 공지된 방법에 따라 DPpri의 메시지 다이제스트를 포함한다. 몇몇 실시예들은 호환을 위해 키블로브의 일부로서 비트 스트림을 포함하는 유사 랜덤 초기화 벡터(IV)(518)를 포함할 수도 있다. 암호화를 위해 스트림 암호(stream cipher)가 사용되면, 스트림 암호의 IV를 사용하는 공지된 방법으로 IV가 사용된다. 블록 암호가 암호화를 위해 사용되면, 암호화될 메시지의 일부로서 IV가 사용되어서, 암호의 각각의 인스턴스가 상이하게 된다.The manufacturing protection system includes a protection database 510 and a generation function 512. The protection database includes a data structure for storing a number of similar random values (at least one per device manufactured) generated by the generation function 512 in the manner described below. The generation function includes logic (implemented in software or hardware) to generate a data structure referred to herein as keyblob 514. Keyblob 514 includes at least three data items. The unique direct certificate private key DPpri includes an encryption key that may be used by the device for signing. DP private digest 516 includes the message digest of DPpri according to any known method of generating a secure message digest, such as SHA-1. Some embodiments may include a pseudo random initialization vector (IV) 518 that includes a bit stream as part of a keyblob for compatibility. If a stream cipher is used for encryption, the IV is used in a known manner using the IV of the stream cipher. If a block cipher is used for encryption, an IV is used as part of the message to be encrypted, so that each instance of the cipher is different.

본 발명의 실시예들에서, 제조 보호 시스템은 하나 이상의 키블로브들(상세히 후술됨)을 생성하고 CD(522)에 키블로브 데이터베이스(520)의 그룹 레코드들(515)에 키블로브들을 저장한다. 한 실시예에서, 각각의 그룹 레코드에는 다수의 키블로브들이 있을 수도 있으며, 임의의 결합에서, 싱글 CD에 다수의 그룹 레코드들이 있을 수 있는데, 한가지 제한 사항은 CD의 물리적 스토리지 한계이다. 따라서, 각각의 그룹 레코드는 다수의 키블로브들을 포함한다. CD는 그 후 전형적인 물리 채널들을 통해 컴퓨터 시스템 제조자, 컴퓨터 분배원, 클라이언트 컴퓨터 시스템 소비자 등으로 분배된다. CD가 본 명세서에서 기억 매체로 기술되었지만, 임의의 적합한 이동식 기억 매체가 사용될 수도 있다(예를 들어, DVD(digital versatile disk) 또는 다른 매체).In embodiments of the present invention, the manufacturing protection system generates one or more keyblobs (described in detail below) and inserts keyblobs into group records 515 of the keyblob database 520 on the CD 522. Save it. In one embodiment, each group record may have multiple keylobes, and in any combination, there may be multiple group records on a single CD, with one limitation being the physical storage limit of the CD. Thus, each group record includes a number of keyblobs. The CD is then distributed to computer system manufacturers, computer distributors, client computer system consumers, and the like through typical physical channels. Although CD is described herein as a storage medium, any suitable removable storage medium may be used (eg, digital versatile disk (DVD) or other medium).

CD가 클라이언트 컴퓨터 시스템의 CDROM 드라이브(도시되지 않음)에 삽입될 때, 시스템(504) 내에 포함된 디바이스(506)와의 통신 세션의 인증 및 키 교환을 위해 다이렉트 증명 프로토콜을 사용하기를 희망하는 클라이언트 컴퓨터 시스템(504)은 CD의 키블로브 데이터베이스(520)에서 선택된 그룹 레코드(515)를 판독할 수도 있다. 키블로브 데이터는 그룹 레코드로부터 획득되어서, 다이렉트 증명 프로토콜을 구현하는데 사용되는 국부화 키블로브(524)(후술됨)를 생성하기 위해 디바이스에 의해 사용될 수도 있다. 본 발명의 실시예들에서, 다수의 키블로브들을 포함하는 총 그룹 레코드가 동시에 디바이스에 의해 처리되며, 침해자는 암호화 국부 키블로브를 생성하기 위해 어떤 특정 키블로브가 실제로 사용중인지를 결정할 수 없다. 디바이스 드라이버 소프트웨어(526)는 디바이스(506)를 초기화 및 제어하기 위해 클라이언트 컴퓨터 시스템에 의해 실행된다.When a CD is inserted into a CDROM drive (not shown) of a client computer system, a client computer wishing to use the direct proof protocol for authentication and key exchange of a communication session with the device 506 included in the system 504. System 504 may read selected group record 515 from keyblob database 520 of the CD. Keyblob data may be obtained from a group record and used by the device to generate a localized keyblob 524 (described below) that is used to implement the direct proof protocol. In embodiments of the present invention, a total group record comprising multiple keyblobs is processed by the device at the same time, and the intruder can determine which particular keyblob is actually in use to generate the encrypted local keyblob. none. Device driver software 526 is executed by a client computer system to initialize and control device 506.

본 발명의 실시예들에서, 4개의 개별 동작 단계들이 있을 수도 있다. 도 6은 본 발명의 한 실시예에 따른 다이렉트 증명 키들을 분배하는 방법의 단계들을 도시하는 플로우챠트(600)이다. 본 발명의 실시예들에 따라, 특정 액션들이 각각의 단계에서 실행될 수도 있다. 디바이스 제조자 사이트에는, 적어도 두개의 단계들: 셋업 단계(602) 및 제조 생성 단계(604)가 있다. 셋업 단계는 도 7을 참조해서 본 명세서에 기술된다. 제조 생성 단계는 도 8을 참조해서 본 명세서에서 기술된다. 클라이언트 컴퓨터 시스템을 갖는 소비자 사이트에는, 적어도 두개의 단계들: 셋업 단계(606) 및 사용 단계(608)가 있다. 클라이언트 컴퓨터 시스템 셋업 단계는 도 9를 참조해서 본 명세서에 기술된다. 클라이언트 컴퓨터 시스템 사용 단계는 도 10을 참조해서 본 명세서에 기술된다.In embodiments of the invention, there may be four separate operational steps. 6 is a flowchart 600 illustrating the steps of a method for distributing direct authentication keys in accordance with an embodiment of the present invention. According to embodiments of the present invention, certain actions may be executed at each step. At the device manufacturer site, there are at least two steps: setup step 602 and manufacturing generation step 604. The setup step is described herein with reference to FIG. The manufacturing generation step is described herein with reference to FIG. 8. At a consumer site having a client computer system, there are at least two steps: setup step 606 and use step 608. The client computer system setup step is described herein with reference to FIG. The steps of using a client computer system are described herein with reference to FIG.

도 7 및 도 8은 본 발명의 한 실시예에 따른 디바이스 제조 셋업 프로세싱을 도시하는 플로우챠트들(700 및 800)이다. 한 실시예에서, 디바이스 제조자는 제조 보호 시스템(502)을 사용해서 상기 액션들을 실행할 수도 있다. 블록(701)에서, 디바이스 제조자가 제조될 디바이스의 각각의 클래스에 대해 다이렉트 증명 패밀리 키 쌍(Fpub 및 Fpri)을 생성한다. DPpri을 사용해서 생성된 서명이 Fpub에 의해 검증될 수도 있도록 각각의 유일 디바이스는 대응 DPpri 키를 갖는다. 디바이스들의 클래스는 버전 번호 또는 디바이스의 다른 특징들을 근거로 생성 라인의 부집합 또는 선택된 생성 라인(즉, 디바이스의 타입)과 같은 디바이스의 임의의 집합 또는 부집합을 포함할 수도 있다. 패밀리 키 쌍은 생성 목적인 디바이스의 클래스에 의해 사용된다.7 and 8 are flowcharts 700 and 800 illustrating device manufacturing setup processing in accordance with one embodiment of the present invention. In one embodiment, the device manufacturer may perform the actions using manufacturing protection system 502. In block 701, the device manufacturer creates direct proof family key pairs Fpub and Fpri for each class of device to be manufactured. Each unique device has a corresponding DPpri key so that the signature generated using DPpri may be verified by Fpub. The class of devices may include any subset or subset of devices, such as a subset of generation lines or a selected generation line (ie, type of device) based on the version number or other features of the device. Family key pairs are used by the class of device for which they are intended.

블록(702)에서, 디바이스 제조자는 그룹 레코드를 서명 및 검증하는데 사용되는 RSA 키 쌍(Gpri, Gpub)을 생성한다. 다른 실시예들에서, 임의의 보안 디지털 서명 시스템이 RSA 대신 사용될 수도 있다. 상기 키 쌍은 블록(701)에서 생성된 패밀리 키 쌍과 독립적이고, 디바이스 제조자에 의해 생성된 모든 디바이스 그룹들을 위해 사용될 수도 있다. 블록(703)에서, 디바이스 제조자는 희망 그룹 크기를 선택한다. 그룹 크기는 함께 그룹화될 패밀리의 디바이스들의 수일 수도 있다. 그룹 크기는 개별디바이스가 그룹 내에서 "숨겨질(hide)" 수 있을 만큼 충분히 크도록 선택되지만, 디바이스에 의한 키블로브 추출 프로세싱 중에 과도한 시간을 소비할만큼 크지는 않다. 한 실시예에서, 그룹 크기는 5,000 디바이스들이 되도록 선택될 수도 있다. 다른 실시예들에서, 다른 크기들이 사용될 수도 있다.In block 702, the device manufacturer generates an RSA key pair (Gpri, Gpub) that is used to sign and verify the group record. In other embodiments, any secure digital signature system may be used instead of the RSA. The key pair is independent of the family key pair created at block 701 and may be used for all device groups created by the device manufacturer. In block 703, the device manufacturer selects the desired group size. The group size may be the number of devices of the family to be grouped together. The group size is selected to be large enough so that individual devices can be "hide" within the group, but not large enough to spend excessive time during keyblob extraction processing by the device. In one embodiment, the group size may be selected to be 5,000 devices. In other embodiments, other sizes may be used.

디바이스 제조자는 그룹 크기에 의해 지정된 수의 디바이스 키들을 생성할 수도 있다. 그룹 크기에 의해 지정된 수의 디바이스들을 갖는 각각의 그룹은 그룹 번호로 지명될 수도 있다. 소정의 그룹으로 제조되는 각각의 디바이스에 있어서, 생성 함수(512) 또는 제조 보호 시스템(502)의 다른 모듈들은 도 7의 블록(704) 내지 도 8의 블록(802)을 실행할 수도 있다. 먼저, 블록(704)에서, 생성 함수는 유일한 유사 랜덤 값(RAND; 508)을 생성한다. 한 실시예에서, RAND의 길이는 128 비트이다. 다른 실시예들에서, 값들의 다른 크기들이 사용될 수도 있다. 한 실시예에서, 다수의 디바이스들에 대한 유사 랜덤 값들은 미리 생성될 수도 있다. 블록(706)에서, 디바이스에 의해 지원되는 원웨이 함수, f를 사용해서, 생성 함수는 유일 RAND 값으로부터 대칭 암호화 키 SKEY를 생성한다(SKEY = f(RAND)). 원웨이 함수는 상기 목적에 적합한 임의의 공지된 알고리즘일 수도 있다(예를 들어, SHA-1, MGF1, DES(Data Encryption Standard), 트리플 DES 등). 블록(708)에서, 한 실시예에서, 생성 함수는 "널 엔트리"(예를 들어, 소수의 제로 바이트들)를 암호화하기 위해 SKEY를 사용함으로써, 배포 CD(522)에서 상기 디바이스의 키블로브(514)를 참조하는데 사용될 식별자(ID) 레이블을 생성한다(device ID = Encrypt(0..0), SKEY 이용). 다른 실시예들에서, 디바이스 ID를 생성하는 다른 방법들이 사용될 수도 있거나, 다른 값들이 SKEY에 의해 암호화될 수도 있다.The device manufacturer may generate the number of device keys specified by the group size. Each group having the number of devices specified by the group size may be named by the group number. For each device manufactured in a given group, the generation function 512 or other modules of the manufacturing protection system 502 may execute blocks 704 of FIG. 7 through block 802 of FIG. 8. First, at block 704, 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, other sizes of values may be used. In one embodiment, pseudo-random values for multiple devices may be generated in advance. At block 706, 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 may be any known algorithm suitable for this purpose (eg, SHA-1, MGF1, Data Encryption Standard, DES, Triple DES, etc.). At block 708, in one embodiment, the generation function uses the SKEY to encrypt a "null entry" (eg, a few zero bytes), thereby distributing the keyblob of the device at distribution CD 522. Create an identifier (ID) label to be used to refer to 514 (device ID = Encrypt (0..0), using SKEY). In other embodiments, other methods of generating a device ID may be used, or other values may be encrypted by the SKEY.

그 후, 블록(710)에서, 생성 함수는 디바이스의 패밀리 공개 키(Fpub)에 상관된 DP 개인 서명 키 DPpri를 생성한다. 블록(712)에서, 생성 함수는 공지된 방법들(예를 들어, SHA-1 또는 다른 해시 알고리즘 이용)을 사용해서 DPpri 다이제스트를 생성하도록 DPpri를 해시한다. 블록(714)에서, 생성 함수는 디바이스에 대한 키블로브 데이터 구조를 생성한다. 키블로브는 적어도 DPpri 및 DPpri 다이제스트를 포함한다. 한 실시예에서, 키블로브는 다수의 유사 랜덤 생성 비트들을 갖는 랜덤 초기화 벡터(IV)를 포함한다. 상기 값들은 암호화 키블로브(514)를 생성하도록 SKEY를 사용해서 암호화될 수도 있다. 블록(716)에서, 블록(708)에서 생성된 디바이스 ID 및 블록(714)에서 생성된 암호화 키블로브(514)는 배포 CD(522)에서 공개되는 키블로브 데이터베이스(520)의 레코드로 저장될 수도 있다. 한 실시예에서, 키블로브 데이터베이스의 레코드는 디바이스 ID로 표시될 수도 있다.Then, at block 710, the generation function generates a DP private signature key DPpri correlated to the device's family public key Fpub. At block 712, the generation function hashes DPpri to generate a DPpri digest using known methods (eg, using SHA-1 or other hash algorithm). At block 714, the generation function generates a keyblob data structure for the device. The keyblob contains at least DPpri and DPpri digests. In one embodiment, the keyblob comprises a random initialization vector IV having a plurality of pseudo random generation bits. The values may be encrypted using SKEY to generate an encryption keyblob 514. At block 716, the device ID generated at block 708 and the encryption keyblob 514 generated at block 714 are stored as records in the keyblob database 520 published on the distribution CD 522. May be In one embodiment, the records of the keyblob database may be represented by a device ID.

프로세싱은 도 8의 블록(801)으로 계속된다. 블록(801)에서, 디바이스가 속한 그룹의 현 그룹 번호 및 현 RAND 값은 보호 데이터베이스(510)에 저장될 수도 있다. 블록(802)에서, SKEY 및 DPpri는 본 분야의 디바이스에 의해 재생되기 때문에 삭제될 수도 있다. 그룹 번호는 제조중인 디바이스들의 각각의 연속 그룹에 대해 증가될 수도 있다. DPpri의 콘텐츠가 SKEY의 소유를 갖지 않은 임의의 엔티티에 의해 결정될 수 없고 SKEY의 소유를 갖는 엔티티에 의한 차후 검출 없이 KeyBlob의 콘텐츠가 SKEY의 소유를 갖지 않은 엔티티에 의해 변경될 수 없도록 DPpri 다이제스트의 생성 및 SKEY에 의한 다음 암호화가 설계된다. 다른 실시예들에서, 상기 비밀 및 완전성 보호를 제공하기 위한 다른 방법들이 사용될 수 있다. 몇몇 실시예들에서, 완전성 보호는 요구되지 않을 수도 있으며, 단지 비밀을 제공하는 방법이 사용될 수 있다. 이러한 경우, DPpri 다이제스트의 값은 필요하지 않다.Processing continues to block 801 of FIG. 8. At block 801, the current group number and current RAND value of the group to which the device belongs may be stored in the protection database 510. At block 802, SKEY and DPpri may be deleted because they are played by a device of the art. The group number may be increased for each successive group of devices under manufacture. Creation of DPpri digests such that the contents of DPpri cannot be determined by any entity that does not have ownership of SKEY and that the contents of the KeyBlob cannot be changed by an entity that does not have ownership of SKEY without subsequent detection by entity having ownership of SKEY. And the next encryption by SKEY is designed. In other embodiments, other methods for providing the confidentiality and integrity protection can be used. In some embodiments, integrity protection may not be required, and only a method of providing a secret may be used. In this case, the value of the DPpri digest is not necessary.

키블로브의 전체 데이터 집합이 디바이스 그룹에 대해 생성되었을 때, 적어도 그룹의 키블로브 데이터베이스(520)가 서명되고 공통 배포 CD에 부담을 주어, 각각의 디바이스와 함께 배포된다(한 실시예에서, 장치 ID 필드에 의해 인덱스되는 대로, 하나의 키블로브 데이터베이스 엔트리는 각각의 디바이스에 대해 사용될 수도 있음) . 따라서, 블록(804)에서, 디바이스 제조자는 그룹 레코드(515)를 생성한다. 그룹 레코드는 그룹 번호, 그룹의 공개 키 Gpub, 그룹 크기 및 전체 그룹의 키블로브 레코드들(<Group Number, Gpub, Group Size, <Device ID1, Encrypted Keyblob1>, <Device ID2, Encrypted Keyblob2>, ...>)을 포함한다. 블록(806)에서, 디바이스 제조자는 그룹 개인 키 Gpri를 사용해서 그룹 레코드에 서명하고, 디지털 서명을 그룹 레코드에 첨부한다. 블록(808)에서, 서명 그룹 레코드는 배포 CD에서 키블로브 데이터베이스에 추가될 수도 있다. 한 실시예에서, 배포 CD는 클라이언트 컴퓨터 시스템에서의 차후 프로세싱을 위해 키 검색 유틸리티 소프트웨어 모듈을 포함하는데, 그 용도는 상세히 후술된다.When a complete data set of keyblobs has been created for a group of devices, at least the group's keyblob database 520 is signed and burdened with a common distribution CD and distributed with each device (in one embodiment, As indexed by the device ID field, one keyblob database entry may be used for each device). Thus, at block 804, the device manufacturer creates a group record 515. The group record includes the group number, the group's public key Gpub, the group size, and the entire group's keyblob records (<Group Number, Gpub, Group Size, <Device ID1, Encrypted Keyblob1>, <Device ID2, Encrypted Keyblob2>,. ..>). At block 806, the device manufacturer signs the group record using the group private key Gpri and attaches the digital signature to the group record. At block 808, the signature group record may be added to the keyblob database on the distribution CD. In one embodiment, the distribution CD includes a key retrieval utility software module for later processing at the client computer system, the use of which is described in detail below.

블록(802) 후의 임의의 시간에, 블록(810)에서, RAND 및 그룹 번호 값 쌍들의 보호 데이터베이스는 제조 프로세스 중에 디바이스에 RAND 및 그룹 번호 값들을 저장하는 제조 생성 시스템(503)에 안전하게 업로드될 수도 있다. 상기 업로드가 검증되면, RAND 값들은 제조 보호 시스템(502)으로부터 안전하게 삭제될 수 있다.At any time after block 802, at block 810, the protection database of RAND and group number value pairs may be securely uploaded to manufacturing generation system 503 that stores the RAND and group number values on the device during the manufacturing process. have. Once the upload is verified, the RAND values can be safely deleted from the manufacturing protection system 502.

도 9는 본 발명의 한 실시예에 따른 디바이스 제조 생성 프로세싱을 도시하는 플로우챠트(900)이다. 디바이스가 생성 라인에서 제조중이므로, 블록(902)에서, 제조 보호 시스템은 보호 데이터베이스로부터 미사용 RAND 및 그룹 번호 값 쌍을 선택한다. 선택된 RAND 및 그룹 번호 값은 그 후 디바이스의 비휘발성 스토리지에 저장될 수도 있다. 한 실시예에서, 비휘발성 스토리지는 TPM을 포함한다. 블록(904)에서, 그룹 공개 키 Gpub의 해시는 디바이스의 비휘발성 스토리지에 저장될 수도 있다. 블록(906)에서, RAND 값이 성공적으로 디바이스에 저장되면, 제조 생성 시스템은 보호 데이터베이스에서 디바이스의 RAND 값의 임의의 레코드를 파괴한다. 이 때에, RAND 값의 단독 복사본이 디바이스에 저장된다.9 is a flowchart 900 illustrating device manufacturing generation processing in accordance with an embodiment of the present invention. Since the device is manufacturing on the production line, at block 902, the manufacturing protection system selects an unused RAND and group number value pair from the protection database. The selected RAND and group number values may then be stored in the device's nonvolatile storage. In one embodiment, the nonvolatile storage includes a TPM. At block 904, the hash of the group public key Gpub may be stored in the device's nonvolatile storage. In block 906, if the RAND value is successfully stored in the device, the manufacturing generation system destroys any record of the device's RAND value in the protection database. At this time, a single copy of the RAND value is stored in the device.

다른 실시예에서, RAND 값은 디바이스 제조 중에 생성될 수 있으며, 그 후, 키블로브의 계산을 위해 제조 보호 시스템에 송신될 수 있다.In another embodiment, the RAND value may be generated during device fabrication and then transmitted to the fabrication protection system for calculation of the keyblob.

다른 실시예에서, RAND 값은 디바이스에서 생성될 수 있으며, 디바이스 및 제조 보호 시스템은 디바이스 외부에서 DPpri 키를 공개하지 않는 방법을 사용해서 DPpri 키를 생성하는 프로토콜에 참여할 수 있다. 그 후, 디바이스는 디바이스 ID, SKEY 및 키블로브를 생성할 수 있다. 디바이스는 디바이스 ID 및 키블로브를 보호 데이터베이스(510)에 저장되도록 제조 시스템에 전달한다. 이러한 방법으로, 제조 시스템은 보호 데이터베이스의 동일한 정보(디바이스 ID, 키블로브)로 종료하며, RAND 값 또는 DPpri 값을 알지 못한다.In another embodiment, the RAND value may be generated at the device, and the device and manufacturing protection system may participate in a protocol for generating the DPpri key using a method that does not disclose the DPpri key outside the device. The device can then generate a device ID, SKEY and keyblob. The device passes the device ID and keyblob to the manufacturing system for storage in the protection database 510. In this way, the manufacturing system terminates with the same information (device ID, keyblob) in the protection database and does not know the RAND value or the DPpri value.

도 10 및 도 11은 본 발명의 한 실시예에 따른 클라이언트 컴퓨터 시스템 셋업 프로세싱을 도시하는 플로우챠트들(1000 및 1100)이다. 클라이언트 컴퓨터 시스템은 시스템의 부팅업의 일부로서 상기 액션들을 실행할 수도 있다. 블록(1002)에서, 클라이언트 컴퓨터 시스템은 정상 방식으로 부팅될 수도 있으며, 디바이스용 디바이스 드라이버(526)는 메인 메모리에 로드될 수도 있다. 디바이스 드라이버가 초기화되고 실행을 개시할 때, 디바이스 드라이버는 블록(1004)에서 이미 암호화 국부화 키블로브(524)가 디바이스(506)의 대용량 기억 장치(308)에 저장되어 있는지를 결정한다. 저장되어 있으면, 차후 셋업 프로세싱이 실행될 필요가 없으며, 셋업 프로세싱은 블록(1006)에서 종료한다. 저장되어 있지 않으면, 프로세싱은 블록(1008)으로 계속된다. 블록(1008)에서, 디바이스 드라이버는 배포 CD(522)의 삽입을 요청하는 메시지를 클라이언트 컴퓨터 시스템의 사용자에게 디스플레이한다. CD가 컴퓨터 시스템에 의해 판독되면, 디바이스 드라이버는 CD에 저장된 키 검색 유틸리티 소프트웨어 모듈(도 5에 도시되지 않음)을 론칭한다. 키 검색 유틸리티는 디바이스에게 그룹 공개 키 Gpub의 해시 및 그룹 번호(509)일 수도 있는 그룹 ID를 요청한다. 디바이스가 상기 값들을 리턴하고, 유틸리티는 상기 값들을 사용해서 CD의 키블로브 데이터베이스로부터 적합한 서명 그룹 레코드의 위치를 찾는다. 상기 유틸리티는 디바이스의 DP 개인 키 획득 프로세스를 개시하도록 획득 키 커맨드를 디바이스(506)에 발행한다.10 and 11 are flowcharts 1000 and 1100 illustrating client computer system setup processing in accordance with one embodiment of the present invention. The client computer system may execute the actions as part of the bootup of the system. In block 1002, the client computer system may boot in a normal manner, and the device driver 526 for the device may be loaded into main memory. When the device driver is initialized and commences execution, the device driver determines in block 1004 whether the cryptographic localization keyblob 524 is already stored in the mass storage device 308 of the device 506. If so, later setup processing does not need to be executed and setup processing ends at block 1006. If not stored, processing continues to block 1008. In block 1008, the device driver displays a message to the user of the client computer system requesting the insertion of the distribution CD 522. When the CD is read by the computer system, the device driver launches a key retrieval utility software module (not shown in FIG. 5) stored on the CD. The key retrieval utility asks the device for a group ID, which may be a hash of the group public key Gpub and a group number 509. The device returns the values, and the utility uses the values to locate the appropriate signature group record from the CD's keyblob database. The utility issues an acquire key command to the device 506 to initiate the DP private key acquisition process of the device.

응답으로, 블록(1010)에서, 디바이스는 원웨이 함수 f를 사용해서 내장된 RAND 값(508)으로부터 대칭 키 SKEY(해독에 사용됨)를 재생한다(SKEY = f(RAND)). 블록(1012)에서, 디바이스는 SKEY를 사용해서 "널 엔트리"(예를 들어, 소수의 제로 바이트들)를 암호화함으로써, 유일 디바이스 ID 레이블을 생성한다(Device ID = Encrypt(0..0), SKEY 사용). 본 발명의 한 실시예에서, 상기 값들은 디바이스 외부에 공개되지 않을 수도 있다. 디바이스는 준비성에 대한 신호를 준다.In response, at block 1010, the device regenerates the symmetric key SKEY (used for decryption) from the embedded RAND value 508 using the one-way function f (SKEY = f (RAND)). At block 1012, the device generates a unique device ID label by encrypting the "null entry" (eg, a few zero bytes) using the SKEY (Device ID = Encrypt (0..0), SKEY). In one embodiment of the invention, the values may not be disclosed outside the device. The device signals the readiness.

블록(1014)에서, 키 검색 유틸리티는 매칭 그룹 번호를 포함하는 그룹 레코드에 대해 CD의 키블로브 데이터베이스(520)를 탐색하고, 그룹 레코드를 추출하며, 전체 그룹 레코드를 디바이스에 전송한다.At block 1014, the key retrieval utility searches the CD's keyblob database 520 for the group record containing the matching group number, extracts the group record, and sends the entire group record to the device.

블록(1016)에서, 디바이스는 전체 공급 그룹 레코드를 분석하지만, 그룹 번호, 그룹 레코드의 해시, 그룹 공개 키 Gpub, 및 디바이스 자신의 디바이스 ID(블록(1012)에서 생성됨)와 매치하는 제1 <Device ID, Encrypted Keyblob> 필드만을 유지한다. 블록(1018)에서, 디바이스는 그룹 레코드를 검증한다. 한 실시예에서, 디바이스는 디바이스에 포함된 그룹 번호와 추출된 그룹 번호 필드를 비교한다. 그들이 매치하지 않으면, 키 획득 프로세스는 종료될 수도 있다. 그렇지 않으면, 디바이스는 추출된 Gpub 필드를 해시하고 디바이스에 포함된 Gpub 해시와 비교한다. 해시들이 매치하지 않으면, 키 획득 프로세스는 종료될 수도 있다. 그렇지 않으면, 디바이스는 그룹 레코드의 해시에서 공급된 서명을 검증하기 위해 타당성 검사된 Gpub 키를 사용한다. 서명이 검증되면, 그룹 레코드는 검증되고, 프로세스는 도 11의 블록(1120)으로 진행한다.At block 1016, the device analyzes the entire supply group record, but matches the group number, the hash of the group record, the group public key Gpub, and the device's own device ID (generated at block 1012). Keep only the ID, Encrypted Keyblob> field. At block 1018, the device verifies the group record. In one embodiment, the device compares the extracted group number field with the group number included in the device. If they do not match, the key acquisition process may end. Otherwise, the device hashes the extracted Gpub field and compares it with the Gpub hash contained in the device. If the hashes do not match, the key acquisition process may end. Otherwise, the device uses the validated Gpub key to verify the signature supplied in the hash of the group record. If the signature is verified, the group record is verified and the process proceeds to block 1120 of FIG.

한 실시예에서, 디바이스가 키블로브를 가진 후에 사기 소프트웨어가 획득 키 커맨드를 디바이스에 송신하고자 하면, 디바이스는 사기 소프트웨어에 그룹 번호로 응답하지 않는다. 대신, 디바이스는 에러 표시자를 리턴한다. 실제적으로, 디바이스가 국부화 키블로브에 액세스하면, 획득 키 커맨드의 기능은 억제된다. 이러한 방법으로, 디바이스는 키블로브를 갖지 않을 때를 제외하고 그룹 번호를 공개하지 않는다.In one embodiment, if the fraudulent software attempts to send an acquire key command to the device after the device has a keyblob, the device does not respond to the fraudulent software with a group number. Instead, the device returns an error indicator. In practice, when the device accesses the localized keyblob, the function of the acquire key command is suppressed. In this way, the device does not publish the group number except when it has no keyblob.

블록(1120)에서, 디바이스는 대칭 키 SKEY를 사용해서 암호화 키블로브를 해독하고, DPpri 및 DPpri 다이제스트를 산출하고, 상기 값들을 비휘발성 스토리지에 저장한다(Decrypted Keyblob = Decrypt (IV, DPpri, DPpri Digest), SKEY 사용). 초기화 벡터(IV)는 폐기될 수도 있다. 블록(1122)에서, 디바이스는 DPpri를 해시하고 결과를 DPpri 다이제스트와 비교함으로써, DPpri의 완전성을 체크한다. 비교가 양호하면, 디바이스는 유효 키로서 DPpri를 수용한다. 디바이스는 키 획득 플래그를 참으로 설정해서, DP 개인 키가 성공적으로 획득되었음을 나타낼 수도 있다. 블록(1124)에서, 디바이스는 새로운 IV를 선택하고, 새로운 IV를 사용해서 새로운 암호화 국부화 키블로브를 생성한다(Localized Keyblob = Encrypt (IV2, DPpri, DPpri Digest), SKEY 사용). 새로운 암호화 국부화 키블로브는 키 검색 유틸리티에 리턴될 수도 있다. 블록(1126)에서, 키 검색 유틸리티는 클라이언트 컴퓨터 시스템 내의 스토리지(예를 들어, 대용량 기억 장치(308))에 암호화, 국부화 키블로브를 저장한다. 디바이스의 DPpri는 클라이언트 컴퓨터 시스템에 새롭게 안전하게 저장된다.At block 1120, the device uses the symmetric key SKEY to decrypt the encryption keyblob, calculate DPpri and DPpri digests, and store the values in nonvolatile storage (Decrypted Keyblob = Decrypt (IV, DPpri, DPpri). Digest), using SKEY). The initialization vector IV may be discarded. At block 1122, 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, the device accepts DPpri as a valid key. The device may set the key acquisition flag to true to indicate that the DP private key was successfully obtained. At block 1124, the device selects a new IV and uses the new IV to generate a new encrypted localized keyblob (Localized Keyblob = Encrypt (IV2, DPpri, DPpri Digest), using SKEY). The new cryptographic localization keyblob may be returned to the key retrieval utility. In block 1126, the key retrieval utility stores the encrypted, localized keyblobs in storage (eg, mass storage device 308) in the client computer system. The device's DPpri is newly securely stored on the client computer system.

디바이스가 셋업 프로세싱 중에 DPpri를 획득하면, 디바이스는 DPpri를 사용할 수도 있다. 도 12는 본 발명의 한 실시예에 따른 클라이언트 컴퓨터 시스템 프로세싱을 도시하는 플로우챠트이다. 클라이언트 컴퓨터 시스템은 셋업이 완료된 후 임의의 시간에 상기 액션들을 실행할 수도 있다. 블록(1202)에서, 클라이언트 컴퓨터 시스템은 정상 방식으로 부팅될 수도 있으며, 디바이스용 디바이스 드라이버(526)는 메인 메모리에 로드될 수도 있다. 디바이스 드라이버가 초기화되고 실행을 개시할 때, 디바이스 드라이버는 이미 암호화 국부화 키블로브(524)가 디바이스(506)의 대용량 기억 장치(308)에 저장되어 있는지를 결정한다. 저장되어 있지 않으면, 도 10 및 도 11의 셋업 프로세싱이 실행된다. 디바이스에 유용한 암호화 국부화 키블로브가 있으면, 프로세싱은 블록(1206)으로 계속된다. 블록(1206)에서, 디바이스 드라이버는 암호화 국부화 키블로브를 검색하고, 키블로브를 디바이스에 전송한다. 한 실시예에서, 키블로브의 전송은 Load Keyblob 커맨드를 실행함으로써 달성될 수도 있다.If the device acquires DPpri during setup processing, the device may use DPpri. 12 is a flowchart illustrating client computer system processing in accordance with an embodiment of the present invention. The client computer system may execute the actions at any time after the setup is complete. In block 1202, the client computer system may boot in a normal manner, and the 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 cryptographic localization keyblob 524 is already stored in the mass storage device 308 of the device 506. If not stored, the setup processing of FIGS. 10 and 11 is executed. If there is a cryptographic localization keyblob useful for the device, processing continues to block 1206. At block 1206, the device driver retrieves the cryptographic localization keyblob and sends the keyblob to the device. In one embodiment, the transmission of keyblobs may be accomplished by executing a Load Keyblob command.

블록(1208)에서, 디바이스는 원웨이 함수 f를 사용해서 내장된 RAND 값(508)으로부터 대칭 키 SKEY(해독에 사용됨)를 재생한다(SKEY = f(RAND)). 블록(1210)에서, 디바이스는 대칭 키 SKEY를 사용해서 암호화 국부화 키블로브를 해독하고, DPpri 및 DPpri 다이제스트를 산출하고, 상기 값들을 비휘발성 스토리지에 저장한다(Decrypted Keyblob = Decrypt (IV2, DPpri, DPpri Digest), SKEY 사용). 제2 초기화 벡터(IV2)는 폐기될 수도 있다. 블록(1212)에서, 디바이스는 DPpri를 해시하고 결과를 DPpri 다이제스트와 비교함으로써, DPpri의 완전성을 체크한다. 비교가 양호하면(예를 들어, 다이제스트들이 매치하면), 디바이스는 보다 초기에 획득된 유효 키로서 DPpri를 수용하고, 사용이 가능하게 한다. 디바이스는 키 획득 플래그를 참으로 설정해서, DP 개인 키가 성공적으로 획득되었음을 나타낼 수도 있다. 블록(1214)에서, 디바이스는 또 다른 IV를 선택하고, 새로운 IV를 사용해서 새로운 암호화 국부화 키블로브를 생성한다(Localized Keyblob = Encrypt (IV3, DPpri, DPpri Digest), SKEY 사용). 새로운 암호화 국부화 키블로브는 키 검색 유틸리티에 리턴될 수도 있다. 블록(1216)에서, 키 검색 유틸리티는 클라이언트 컴퓨터 시스템 내의 스토리지(예를 들어, 대용량 기억 장치(308))에 암호화 국부화 키블로브를 저장한다. 디바이스의 DPpri는 클라이언트 컴퓨터 시스템에 새롭게 안전하게 다시 한번 저장된다.At block 1208, the device regenerates the symmetric key SKEY (used for decryption) from the embedded RAND value 508 using the one-way function f (SKEY = f (RAND)). At block 1210, the device uses the symmetric key SKEY to decrypt the encrypted localized keyblob, calculates DPpri and DPpri digests, and stores the values in nonvolatile storage (Decrypted Keyblob = Decrypt (IV2, DPpri). , DPpri Digest), using SKEY). The second initialization vector IV2 may be discarded. At block 1212, 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 digests match), the device accepts DPpri as a valid key obtained earlier and makes it available for use. The device may set the key acquisition flag to true to indicate that the DP private key was successfully obtained. At block 1214, the device selects another IV and uses the new IV to create a new encrypted localized keyblob (Localized Keyblob = Encrypt (IV3, DPpri, DPpri Digest), using SKEY). The new cryptographic localization keyblob may be returned to the key retrieval utility. At block 1216, the key retrieval utility stores the cryptographic localization keyblob in storage (eg, mass storage device 308) in the client computer system. The device's DPpri is once again stored securely in the client computer system.

본 발명의 한 실시예에서, 한번에 서명 그룹의 모든 디바이스 DP 개인 키들을 생성할 필요는 없다. 배포 CD가 정규적으로 갱신된다고 가정하면, 디바이스 DP 개인 키들은 필요한 경우 일괄적으로 생성될 수 있다. 배포 CD가 "번(burned)"될 때마다, 생성되었지만 디바이스에 아직 할당되지 않은 디바이스 키들을 포함해서, 지금까지 생성된 키블로브 데이터베이스용 서명 그룹들을 포함한다.In one embodiment of the invention, it is not necessary to generate all device DP private keys of the signature group at one time. Assuming the distribution CD is updated regularly, device DP private keys can be generated in batches as needed. Each time a distribution CD is "burned", it contains signature groups for the keyblob database created so far, including device keys that have been generated but not yet assigned to the device.

한 실시예에서, 도 10의 블록(1018)에서와 같이 전체 그룹 레코드를 처리할 때, 디바이스가 에러를 검출하면, 디바이스는 에러가 발생했음을 나타내는 플래그를 설정할 수도 있으며, 프로세싱을 계속한다. 시스템 셋업을 위한 모든 단계들이 완료될 때, 디바이스는 에러를 디바이스 드라이버에게 신호해 줄 수 있다. 이는 침해자가 에러 타입 및 로케이션으로부터 정보를 획득하는 것을 차단할 수 있다. In one embodiment, when processing an entire group record as in block 1018 of FIG. 10, if the device detects an error, the device may set a flag indicating that an error has occurred and continue processing. When all steps for system setup are completed, the device can signal an error to the device driver. This may prevent the intruder from obtaining information from the error type and location.

한 실시예에서, 본 명세서에서 기술된 방법들은 디바이스의 비휘발성 스토리지의 대략 40 바이트들을 사용할 수도 있다. 다른 실시예에서, 이는 Gpub 키 해시가 디바이스의 비휘발성 스토리지에 저장되는 대신 디바이스의 암호화 키블로브에 포함되면 대략 20 바이트들로 감소될 수도 있다. 이러한 경우, 디바이스가 암호화 키블로브를 해독할 때, 디바이스는 Gpub 해시를 검색하고, Gpub를 체크하기 위해 해시를 사용하고, Gpub 키를 사용해서 전체 그룹 레코드에 대한 서명을 체크할 수도 있다.In one embodiment, the methods described herein may use approximately 40 bytes of nonvolatile storage of the device. In another embodiment, this may be reduced to approximately 20 bytes if the Gpub key hash is included in the device's encryption keyblob instead of being stored in the device's nonvolatile storage. In such a case, when the device decrypts the encryption keyblob, the device may retrieve the Gpub hash, use the hash to check the Gpub, and use the Gpub key to check the signature for the entire group record.

본 명세서에 기술된 오퍼레이션들이 순차 프로세스로서 기술될 수도 있지만, 몇몇 오퍼레이션들은 실제로 병렬로 또는 동시에 실행될 수도 있다. 또한, 몇몇 실시예들에서, 오퍼레이션들의 순서는 본 발명의 원리 내에서 재배열될 수도 있다.Although the operations described herein may be described as a sequential process, some operations may actually be executed in parallel or concurrently. In addition, in some embodiments, the order of operations may be rearranged within the principles of the present invention.

본 명세서에 기술된 기술들은 임의의 특정 하드웨어 또는 소프트웨어 구성으로 제한되지 않는다; 임의의 계산 또는 프로세싱 환경에서의 응용성을 찾을 수도 있다. 기술들은 하드웨어, 소프트웨어 또는 그 두 결합으로 구현될 수도 있다. 기술들은 프로세서, 프로세서에 의해 판독 가능한 기억 매체(휘발성 및 비휘발성 메모리 및/또는 스토리지 소자들을 포함), 적어도 하나의 입력 장치 및 하나 이상의 출력 장치들을 각각 포함하는 이동 컴퓨터 또는 고정 컴퓨터, 퍼스널 디지털 어시스턴트, 셋탑 박스, 셀룰러 폰 및 페이저 및 다른 전자 장치들과 같은 프로그램 가능 기계들에서 실행되는 프로그램들로 구현될 수도 있다. 프로그램 코드는 기술된 기능들을 실행하고 출력 정보를 생성하기 위해 입력 장치를 사용해서 입력된 데이터에 적용된다. 출력 정보는 하나 이상의 출력 장치들에 적용될 수도 있다. 본 기술 분야에 숙련된 자들은 멀티프로세서 시스템, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다양한 컴퓨터 시스템 구성들로 본 발명이 구현될 수 있음을 알 것이다. 본 발명은 또한 통신 네트워크를 통해 연결된 원격 프로세싱 디바이스들에 의해 태스크들이 실행될 수도 있는 분산 컴퓨팅 환경에서 구현될 수 있다.The techniques described herein are not limited to any particular hardware or software configuration; It may be possible to find applicability in any computing or processing environment. The techniques may be implemented in hardware, software, or a combination of both. The techniques include a processor, a mobile-readable or fixed computer, a personal digital assistant, each comprising a processor-readable storage medium (including volatile and nonvolatile memory and / or storage elements), at least one input device and one or more output devices, respectively. It may also be implemented as programs running on programmable machines such as set-top boxes, cellular phones and pagers, and other electronic devices. Program code is applied to data entered using an input device to perform the described functions and generate output information. The output information may be applied to one or more output devices. Those skilled in the art will appreciate that the present invention may be implemented in various computer system configurations, including multiprocessor systems, minicomputers, mainframe computers, and the like. The invention may also be implemented in distributed computing environments where tasks may be executed 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, programs may be implemented in assembly or machine language, if desired. In any case, the language may be compiled or interpreted.

프로그램 명령들은 명령들로 프로그램된 범용 또는 특별 목적 프로세싱 시스템이 본 명세서에 기술된 오퍼레이션들을 실행하게 하는데 사용될 수도 있다. 또한, 오퍼레이션들은 오퍼레이션들을 실행하기 위한 하드와이어 로직을 포함하는 특정 하드웨어 컴포넌트들에 의해 또는 프로그램 컴퓨터 컴포넌트들 및 커스텀 하드웨어 컴포넌트들의 임의의 결합에 의해 실행될 수도 있다. 본 명세서에 기술된 방법들은 방법들을 실행하도록 프로세싱 시스템 또는 다른 전자 장치를 프로그래밍하는데 사용될 수도 있는 명령들이 저장되어 있는 기계 판독 가능 매체를 포함할 수도 있는 컴퓨터 프로그램 제품으로서 제공될 수도 있다. 본 명세서에서 사용된 "기계 판독 가능 매체"라는 용어는 기계에 의한 실행을 위한 명령 시퀀스를 저장하거나 인코드할 수 있고 기계로 하여금 본 명세서에 기술된 방법들 중 임의의 방법을 실행하게 하는 임의의 매체를 포함한다. "기계 판독 가능 매체"라는 용어는 고체 상태 메모리, 광 자기 디스크 및 데이터 신호를 인코드하는 반송파를 포함하지만, 이들로만 제한되지는 않는다. 또한, 한 형태로 또는 액션을 취하거나 결과를 야기하는 다른 형태(예를 들어, 프로그램, 프로시져, 프로세스, 애플리케이션, 모듈, 로직 등)로 소프트웨어에 관하여 말하는 것이 일반적이다. 이러한 표현들은 단지 프로세싱 시스템에 의한 소프트웨어의 실행이 프로세서가 결과를 달성하는 액션을 실행하게 함을 나타내는 속기 방법이다.Program instructions may be used to cause a general purpose or special purpose processing system programmed with the instructions to execute the operations described herein. In addition, the operations may be executed by specific hardware components including hardwire logic to perform the operations or by any combination of program computer components and custom hardware components. The methods described herein may be provided as a computer program product, which may include a machine readable medium having stored thereon instructions that may be used to program a processing system or other electronic device to execute the methods. The term "machine-readable medium" as used herein may store or encode a sequence of instructions for execution by a machine and cause the machine to execute any of the methods described herein. Media. The term "machine-readable medium" includes, but is not limited to, solid state memory, magneto-optical disks and carriers that encode data signals. It is also common to talk about software in one form or in another form (eg, a program, procedure, process, application, module, logic, etc.) that takes an action or produces a result. These representations are merely a shorthand way of indicating that the execution of the software by the processing system causes the processor to execute an action that achieves the result.

본 발명이 일례의 실시예들을 참조해서 기술되었지만, 상기 기술은 제한의 의미로 해석되지 않는다. 본 기술 분야에 숙련된 자들에게 명백한 일례의 실시예들 및 본 발명의 다른 실시예들의 다양한 변경들은 본 발명의 원리 및 범위 내에 속한 것으로 간주된다.Although the invention has been described with reference to exemplary embodiments, the description is not to be interpreted in a limiting sense. Various modifications of exemplary embodiments and other embodiments of the present invention that are apparent to those skilled in the art are considered to be within the spirit and scope of the present invention.

Claims (45)

개인 키 및 개인 키 다이제스트를 포함하며 디바이스와 관련된 암호화 데이터 구조를 생성하는 단계; Generating an encrypted data structure associated with the device, the private key and a private key digest; 유사 랜덤 생성 값(pseudo-randomly generated value)에 기초하여, 상기 암호화 데이터 구조에 대한 식별자를 생성하는 단계; Generating an identifier for the encrypted data structure based on a pseudo-randomly generated value; 상기 암호화 데이터 구조 및 상기 식별자를 이동식(removable) 기억 매체상의 서명 그룹 레코드에 저장하는 단계; 및 Storing the encrypted data structure and the identifier in a signature group record on a removable storage medium; And 상기 서명 그룹 레코드에 대응하는 그룹 번호 및 상기 유사 랜덤 생성 값을 상기 디바이스 내의 비휘발성 스토리지에 저장하는 단계Storing the group number corresponding to the signature group record and the pseudo random generated value in non-volatile storage in the device. 를 포함하는 방법.How to include. 제1항에 있어서, The method of claim 1, 상기 그룹 번호 및 상기 유사 랜덤 생성 값을 상기 디바이스 내에 저장하는 단계 후에, 상기 이동식 기억 매체 및 상기 디바이스를 배포하는 단계를 더 포함하는 방법.And after storing the group number and the pseudo random generated value in the device, distributing the removable storage medium and the device. 제1항에 있어서, The method of claim 1, 상기 암호화 데이터 구조를 생성하는 단계 전에, 디바이스들의 클래스에 대한 다이렉트 증명(Direct Proof) 패밀리 키 쌍을 생성하는 단계를 더 포함하는 방법.Prior to generating the encrypted data structure, further comprising generating a direct proof family key pair for the class of devices. 제1항에 있어서, The method of claim 1, 상기 암호화 데이터 구조를 생성하는 단계 전에, 상기 서명 그룹 레코드를 서명 및 검증하기 위한 키 쌍을 생성하는 단계를 더 포함하는 방법.Prior to generating the encrypted data structure, generating a key pair for signing and verifying the signature group record. 제4항에 있어서, The method of claim 4, wherein 상기 그룹 번호 및 상기 유사 랜덤 생성 값을 상기 디바이스 내에 저장하는 단계 후에, 상기 서명 그룹 레코드 키 쌍의 공개 키의 해시를 상기 디바이스의 비휘발성 스토리지에 저장하는 단계를 더 포함하는 방법.After storing the group number and the pseudo random generated value in the device, storing the hash of the public key of the signature group record key pair in non-volatile storage of the device. 제1항에 있어서, The method of claim 1, 상기 그룹 번호 및 상기 유사 랜덤 생성 값을 저장하는 단계 전에, 상기 서명 그룹 레코드에 대한 그룹 크기를 선택하는 단계를 더 포함하는 방법.And before storing the group number and the pseudo random generated value, selecting a group size for the signature group record. 제3항에 있어서, The method of claim 3, 상기 개인 키는 상기 다이렉트 증명 패밀리 키 쌍의 공개 키와 관련된 다이렉트 증명 개인 키를 포함하고, 상기 개인 키 다이제스트를 생성하기 위해 상기 다이렉트 증명 개인 키를 해시하는 단계를 더 포함하는 방법.The private key includes a direct proof private key associated with the public key of the direct proof family key pair, and further comprising hashing the direct proof private key to generate the private key digest. 제1항에 있어서, The method of claim 1, 상기 식별자를 생성하는 단계는 상기 디바이스에 대한 상기 유사 랜덤 생성 값에 기초하여 대칭 키를 생성하는 단계를 포함하는 방법.Generating the identifier includes generating a symmetric key based on the pseudo random generation value for the device. 제8항에 있어서, The method of claim 8, 상기 식별자를 생성하는 단계는 상기 대칭 키를 사용해서 데이터 값을 암호화하는(encrypting) 단계를 더 포함하는 방법.Generating the identifier further includes encrypting a data value using the symmetric key. 제8항에 있어서, The method of claim 8, 상기 대칭 키를 사용해서 상기 암호화 데이터 구조를 암호화하는 단계를 더 포함하는 방법.Encrypting the encrypted data structure using the symmetric key. 제1항에 있어서, The method of claim 1, 상기 암호화 데이터 구조는 랜덤 초기화 벡터(random initialization vector)를 더 포함하는 방법.The encrypted data structure further includes a random initialization vector. 제1항에 있어서, The method of claim 1, 상기 이동식 기억 매체는 CD 및 DVD(digital versatile disk) 중 적어도 하나를 포함하는 방법.The removable storage medium includes at least one of a CD and a digital versatile disk. 제1항에 있어서, The method of claim 1, 상기 디바이스에 대한 상기 유사 랜덤 생성 값은 고유한(unique) 것인 방법.And the pseudo random generated value for the device is unique. 복수의 머신 판독 가능 명령어들을 갖는 기억 매체로서,A storage medium having a plurality of machine readable instructions, 상기 명령어들이 프로세서에 의해 실행될 때, 상기 명령어들은,When the instructions are executed by a processor, the instructions are 개인 키 및 개인 키 다이제스트를 포함하며 디바이스와 관련된 암호화 데이터 구조를 생성하고; Generate a cryptographic data structure associated with the device, the private key and a private key digest; 유사 랜덤 생성 값에 기초하여, 상기 암호화 데이터 구조에 대한 식별자를 생성하며; Generate an identifier for the encrypted data structure based on a pseudo random generation value; 상기 암호화 데이터 구조 및 상기 식별자를 이동식 기억 매체상의 서명 그룹 레코드에 저장하고;Store the encrypted data structure and the identifier in a signature group record on a removable storage medium; 상기 서명 그룹 레코드에 대응하는 그룹 번호 및 상기 유사 랜덤 생성 값이 상기 디바이스 내의 비휘발성 스토리지에 저장되도록 함으로써,By causing the group number corresponding to the signature group record and the pseudo random generated value to be stored in non-volatile storage in the device, 서명 그룹들의 개인 키들을 디바이스들에게 전달하도록 하는 기억 매체.A storage medium for conveying private keys of signature groups to devices. 제14항에 있어서,The method of claim 14, 상기 서명 그룹 레코드를 서명 및 검증하기 위한 키 쌍을 생성하기 위한 명령어들을 더 포함하는 기억 매체.And instructions for generating a key pair for signing and verifying the signature group record. 제15항에 있어서, The method of claim 15, 상기 서명 그룹 레코드 키 쌍의 공개 키의 해시를 상기 디바이스의 비휘발성 스토리지에 저장하기 위한 명령어들을 더 포함하는 기억 매체.And storing the hash of the public key of the signature group record key pair in nonvolatile storage of the device. 제14항에 있어서, The method of claim 14, 상기 서명 그룹 레코드에 대한 그룹 크기를 선택하기 위한 명령어들을 더 포함하는 기억 매체.Further comprising instructions for selecting a group size for the signature group record. 제14항에 있어서, The method of claim 14, 디바이스들의 클래스에 대한 다이렉트 증명 패밀리 키 쌍을 생성하기 위한 명령어들을 더 포함하는 기억 매체.And further comprising instructions for generating a direct proof family key pair for a class of devices. 제14항에 있어서, The method of claim 14, 상기 개인 키는 다이렉트 증명 패밀리 키 쌍의 공개 키와 관련된 다이렉트 증명 개인 키를 포함하고, 상기 개인 키 다이제스트를 생성하기 위해 상기 다이렉트 증명 개인 키를 해시하기 위한 명령어들을 더 포함하는 기억 매체.The private key comprises a direct proof private key associated with a public key of a direct proof family key pair, and further comprising instructions for hashing the direct proof private key to generate the private key digest. 제14항에 있어서, The method of claim 14, 상기 디바이스에 대한 상기 유사 랜덤 생성 값에 기초하여 대칭 키를 생성하기 위한 명령어들을 더 포함하는 기억 매체.And instructions for generating a symmetric key based on the pseudo random generated value for the device. 제20항에 있어서, The method of claim 20, 상기 식별자를 생성하기 위한 명령어들은 상기 대칭 키를 이용하여 데이터 값을 암호화하기 위한 명령어들을 더 포함하는 기억 매체.The instructions for generating the identifier further comprise instructions for encrypting a data value using the symmetric key. 제20항에 있어서, The method of claim 20, 상기 대칭 키를 이용하여 상기 암호화 데이터 구조를 암호화하기 위한 명령어들을 더 포함하는 기억 매체.And instructions for encrypting the encrypted data structure using the symmetric key. 제14항에 있어서, The method of claim 14, 상기 암호화 데이터 구조는 랜덤 초기화 벡터를 더 포함하는 기억 매체.And the encrypted data structure further comprises a random initialization vector. 제14항에 있어서, The method of claim 14, 상기 디바이스에 대한 상기 유사 랜덤 생성 값은 고유한 것인 기억 매체.The pseudo-random generated value for the device is unique. 컴퓨터 시스템에 설치된 디바이스와 관련된, 개인 키 및 개인 키 다이제스트를 포함하는 암호화 데이터 구조가 상기 컴퓨터 시스템 상의 메모리에 저장되어 있는지를 결정하는 단계; 및Determining whether an encrypted data structure, including a private key and a private key digest, associated with a device installed in the computer system is stored in a memory on the computer system; And 상기 암호화 데이터 구조가 저장되어 있지 않은 경우, 상기 컴퓨터 시스템에 의해 액세스 가능하며 서명 그룹 레코드들의 데이터베이스를 저장한 이동식 기억 매체로부터 서명 그룹 레코드의 상기 디바이스와 관련된 상기 암호화 데이터 구조를 획득하는 단계If the encrypted data structure is not stored, obtaining the encrypted data structure associated with the device of a signature group record from a removable storage medium accessible by the computer system and storing a database of signature group records. 를 포함하는 방법.How to include. 제25항에 있어서, The method of claim 25, 상기 이동식 기억 매체는 상기 디바이스의 제조자에 의해 생성된 CD 및 DVD 중 적어도 하나를 포함하는 방법.The removable storage medium includes at least one of a CD and a DVD produced by the manufacturer of the device. 제25항에 있어서, The method of claim 25, 상기 암호화 데이터 구조 획득 단계는 개인 키 획득 프로세스를 개시하기 위해 상기 디바이스에 획득 키 커맨드를 발행하는 단계를 더 포함하는 방법.And obtaining the encrypted data structure further includes issuing an acquire key command to the device to initiate a private key acquisition process. 제25항에 있어서, The method of claim 25, 상기 개인 키는 디바이스들의 클래스에 대한 다이렉트 증명 패밀리 키 쌍의 공개 키와 관련된 다이렉트 증명 개인 키를 포함하는 방법.The private key comprises a direct proof private key associated with the public key of the direct proof family key pair for the class of devices. 제27항에 있어서, The method of claim 27, 상기 개인 키 획득 프로세스는 상기 획득 키 커맨드를 발행하는 단계 후에, 상기 디바이스에 저장된 고유한 유사 랜덤 생성 값에 기초하여 대칭 키를 생성하는 단계를 더 포함하는 방법.The private key obtaining process further includes, after issuing the acquire key command, generating a symmetric key based on a unique pseudo random generated value stored in the device. 제29항에 있어서, The method of claim 29, 상기 개인 키 획득 프로세스는 상기 유사 랜덤 생성 값에 기초하여 상기 암호화 데이터 구조에 대한 디바이스 식별자를 생성하는 단계를 더 포함하는 방법.The private key obtaining process further includes generating a device identifier for the encrypted data structure based on the pseudo random generated value. 제27항에 있어서, The method of claim 27, 상기 개인 키 획득 프로세스는 상기 획득 키 커맨드를 발행하는 단계 후에, 상기 디바이스의 그룹 번호에 대응하는 상기 서명 그룹 레코드를 상기 이동식 기억 매체로부터 획득하는 단계를 더 포함하는 방법.And wherein the private key obtaining process further comprises, after issuing the acquire key command, obtaining the signature group record from the removable storage medium corresponding to the group number of the device. 제30항에 있어서, The method of claim 30, 상기 개인 키 획득 프로세스는 그룹 번호, 그룹 공개 키, 및 상기 디바이스 식별자에 대응하는 상기 암호화 데이터 구조를 획득하기 위해 상기 서명 그룹 레코드를 분석하는(parsing) 단계를 더 포함하는 방법.The private key obtaining process further comprises parsing the signature group record to obtain the encrypted data structure corresponding to a group number, a group public key, and the device identifier. 제31항에 있어서, The method of claim 31, wherein 상기 개인 키 획득 프로세스는 상기 서명 그룹 레코드를 획득하는 단계 후에, 상기 서명 그룹 레코드를 검증하는 단계를 더 포함하는 방법.And wherein the private key obtaining process further includes verifying the signature group record after obtaining the signature group record. 제32항에 있어서, 33. The method of claim 32, 상기 개인 키 획득 프로세스는 상기 개인 키 및 상기 개인 키 다이제스트를 획득하기 위해 상기 대칭 키를 사용해서 상기 이동식 기억 매체로부터 수신된 상기 암호화 데이터 구조를 암호 해독하는(decrypting) 단계를 더 포함하는 방법.The private key obtaining process further includes decrypting the encrypted data structure received from the removable storage medium using the symmetric key to obtain the private key and the private key digest. 제34항에 있어서, The method of claim 34, wherein 상기 개인 키 획득 프로세스는 새로운 개인 키 다이제스트를 생성하기 위해 상기 개인 키를 해시하고, 상기 암호 해독된 데이터 구조로부터의 상기 개인 키 다이제스트를 상기 새로운 개인 키 다이제스트와 비교하고, 상기 다이제스트들이 매치할 때 상기 개인 키를 상기 디바이스에 대해 유효한 것으로서 수용하는 단계를 더 포함하는 방법.The private key obtaining process hashes the private key to generate a new private key digest, compares the private key digest from the decrypted data structure with the new private key digest, and when the digests match, Accepting the private key as valid for the device. 복수의 머신 판독 가능 명령어들을 갖는 기억 매체로서,A storage medium having a plurality of machine readable instructions, 상기 명령어들이 프로세서에 의해 실행될 때, 상기 명령어들은,When the instructions are executed by a processor, the instructions are 컴퓨터 시스템에 설치된 디바이스와 관련된, 개인 키 및 개인 키 다이제스트를 포함하는 암호화 데이터 구조가 상기 컴퓨터 시스템 상의 메모리에 저장되어 있는지를 결정하고; Determine whether an encrypted data structure, including a private key and a private key digest, associated with a device installed in the computer system is stored in a memory on the computer system; 상기 암호화 데이터 구조가 저장되어 있지 않은 경우, 상기 컴퓨터 시스템에 의해 액세스 가능하며 서명 그룹 레코드들의 데이터베이스를 저장한 이동식 기억 매체로부터 서명 그룹 레코드의 상기 디바이스와 관련된 상기 암호화 데이터 구조를 획득함으로써,Obtaining the encrypted data structure associated with the device of the signature group record from a removable storage medium accessible by the computer system and storing the database of signature group records, if the encrypted data structure is not stored, 컴퓨터 시스템에 설치된 디바이스에 대한 서명 그룹 레코드로부터 개인 키를 획득하도록 하는 기억 매체.A storage medium for obtaining a private key from a signature group record for a device installed in a computer system. 제36항에 있어서, The method of claim 36, 상기 암호화 데이터 구조를 획득하기 위한 명령어들은 개인 키 획득 프로세스를 개시하기 위해 상기 디바이스에 획득 키 커맨드를 발행하기 위한 명령어들을 더 포함하는 기억 매체.The instructions for obtaining the encrypted data structure further include instructions for issuing an acquire key command to the device to initiate a private key acquisition process. 제36항에 있어서, The method of claim 36, 상기 개인 키는 디바이스들의 클래스에 대한 다이렉트 증명 패밀리 키 쌍의 공개 키와 관련된 다이렉트 증명 개인 키를 포함하는 기억 매체.The private key comprises a direct proof private key associated with the public key of the direct proof family key pair for the class of devices. 제37항에 있어서, The method of claim 37, 상기 개인 키 획득 프로세스를 수행하기 위한 명령어들은, 상기 획득 키 커맨드를 발행한 후에, 상기 디바이스에 저장된 고유한 유사 랜덤 생성 값에 기초하여 대칭 키를 생성하기 위한 명령어들을 더 포함하는 기억 매체.The instructions for performing the private key obtaining process further include instructions for generating a symmetric key based on a unique pseudo random generated value stored in the device after issuing the acquire key command. 제39항에 있어서, The method of claim 39, 상기 개인 키 획득 프로세스를 수행하기 위한 명령어들은, 상기 유사 랜덤 생성 값에 기초하여 상기 암호화 데이터 구조에 대한 디바이스 식별자를 생성하기 위한 명령어들을 더 포함하는 기억 매체.The instructions for performing the private key obtaining process further comprise instructions for generating a device identifier for the encrypted data structure based on the pseudo random generated value. 제37항에 있어서, The method of claim 37, 상기 개인 키 획득 프로세스를 수행하기 위한 명령어들은, 상기 획득 키 커맨드를 발행한 후에, 상기 디바이스의 그룹 번호에 대응하는 상기 서명 그룹 레코드를 상기 이동식 기억 매체로부터 획득하기 위한 명령어들을 더 포함하는 기억 매체.The instructions for performing the private key obtaining process further include instructions for obtaining, from the removable storage medium, the signature group record corresponding to the group number of the device after issuing the acquire key command. 제40항에 있어서, The method of claim 40, 상기 개인 키 획득 프로세스를 수행하기 위한 명령어들은, 그룹 번호, 그룹 공개 키, 및 상기 디바이스 식별자에 대응하는 상기 암호화 데이터 구조를 획득하기 위해 상기 서명 그룹 레코드를 분석하기(parsing) 위한 명령어들을 더 포함하는 기억 매체.The instructions for performing the private key obtaining process further include instructions for parsing the signature group record to obtain the encrypted data structure corresponding to a group number, a group public key, and the device identifier. Storage media. 제41항에 있어서, The method of claim 41, wherein 상기 개인 키 획득 프로세스를 수행하기 위한 명령어들은, 상기 서명 그룹 레코드를 획득한 후에, 상기 서명 그룹 레코드를 검증하기 위한 명령어들을 더 포함하는 기억 매체.The instructions for performing the private key obtaining process further include instructions for verifying the signature group record after obtaining the signature group record. 제42항에 있어서, The method of claim 42, wherein 상기 개인 키 획득 프로세스를 수행하기 위한 명령어들은, 상기 개인 키 및 상기 개인 키 다이제스트를 획득하기 위해 상기 대칭 키를 이용하여 상기 이동식 기억 매체로부터 수신된 상기 암호화 데이터 구조를 암호 해독하기 위한 명령어들을 더 포함하는 기억 매체.The instructions for performing the private key obtaining process further include instructions for decrypting the encrypted data structure received from the removable storage medium using the symmetric key to obtain the private key and the private key digest. Storage media. 제44항에 있어서, The method of claim 44, 상기 개인 키 획득 프로세스를 수행하기 위한 명령어들은, 새로운 개인 키 다이제스트를 생성하기 위해 상기 개인 키를 해시하고, 상기 암호 해독된 데이터 구조로부터의 상기 개인 키 다이제스트를 상기 새로운 개인 키 다이제스트와 비교하고, 상기 다이제스트들이 매치할 때 상기 개인 키를 상기 디바이스에 대해 유효한 것으로서 수용하기 위한 명령어들을 더 포함하는 기억 매체.Instructions for performing the private key acquisition process include hashing the private key to generate a new private key digest, comparing the private key digest from the decrypted data structure to the new private key digest, and And instructions for accepting the private key as valid for the device when digests match.
KR1020077001023A 2004-07-14 2005-07-08 Method of delivering direct proof private keys in signed groups to devices using a distribution cd KR100897075B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020077001023A KR100897075B1 (en) 2004-07-14 2005-07-08 Method of delivering direct proof private keys in signed groups to devices using a distribution cd

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/892,280 2004-07-14
KR1020077001023A KR100897075B1 (en) 2004-07-14 2005-07-08 Method of delivering direct proof private keys in signed groups to devices using a distribution cd

Publications (2)

Publication Number Publication Date
KR20070019790A KR20070019790A (en) 2007-02-15
KR100897075B1 true KR100897075B1 (en) 2009-05-14

Family

ID=41348503

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077001023A KR100897075B1 (en) 2004-07-14 2005-07-08 Method of delivering direct proof private keys in signed groups to devices using a distribution cd

Country Status (1)

Country Link
KR (1) KR100897075B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180091055A (en) * 2016-01-08 2018-08-14 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 Key storage method, key management method and device

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114499888B (en) * 2022-02-17 2024-02-02 上海焜耀网络科技有限公司 Private key protection and analysis method and device for signature service

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6032260A (en) 1997-11-13 2000-02-29 Ncr Corporation Method for issuing a new authenticated electronic ticket based on an expired authenticated ticket and distributed server architecture for using same
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
US6032260A (en) 1997-11-13 2000-02-29 Ncr Corporation Method for issuing a new authenticated electronic ticket based on an expired authenticated ticket and distributed server architecture for using same
US20040103281A1 (en) 2002-11-27 2004-05-27 Brickell Ernie F. System and method for establishing trust without revealing identity

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MENEZES, VANSTONE, OORSCHOT, "Handbook of Applied Cryptography", pp.321-331,388-398, 1999

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180091055A (en) * 2016-01-08 2018-08-14 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 Key storage method, key management method and device
KR102224553B1 (en) * 2016-01-08 2021-03-08 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 Key storage method, key management method and device
US10944558B2 (en) 2016-01-08 2021-03-09 Tencent Technology (Shenzhen) Company Limited Key storing method, key managing method and apparatus

Also Published As

Publication number Publication date
KR20070019790A (en) 2007-02-15

Similar Documents

Publication Publication Date Title
US7697691B2 (en) Method of delivering Direct Proof private keys to devices using an on-line service
US7693286B2 (en) Method of delivering direct proof private keys in signed groups to devices using a distribution CD
US6871276B1 (en) Controlled-content recoverable blinded certificates
Anati et al. Innovative technology for CPU based attestation and sealing
US11184164B2 (en) Secure crypto system attributes
CN105095696B (en) Method, system and the equipment of safety certification are carried out to application program
EP2284755B1 (en) Optimized integrity verification procedures
US7792303B2 (en) Method of delivering direct proof private keys to devices using a distribution CD
KR100702499B1 (en) System and method for guaranteeing software integrity
US20050283826A1 (en) Systems and methods for performing secure communications between an authorized computing platform and a hardware component
US20060195689A1 (en) Authenticated and confidential communication between software components executing in un-trusted environments
US20060015751A1 (en) Method of storing unique constant values
US20080104402A1 (en) Countermeasure against fault-based attack on RSA signature verification
US20220247576A1 (en) Establishing provenance of applications in an offline environment
CN117155549A (en) Key distribution method, key distribution device, computer equipment and storage medium
KR100897075B1 (en) Method of delivering direct proof private keys in signed groups to devices using a distribution cd
US11783057B2 (en) Method for securely provisioning a device incorporating an integrated circuit without using a secure environment
KR100883442B1 (en) Method of delivering direct proof private keys to devices using an on-line service

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20130503

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140502

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee