[go: nahoru, domu]

KR20090033191A - System and method for controlling information supplied from memory device - Google Patents

System and method for controlling information supplied from memory device Download PDF

Info

Publication number
KR20090033191A
KR20090033191A KR1020087032259A KR20087032259A KR20090033191A KR 20090033191 A KR20090033191 A KR 20090033191A KR 1020087032259 A KR1020087032259 A KR 1020087032259A KR 20087032259 A KR20087032259 A KR 20087032259A KR 20090033191 A KR20090033191 A KR 20090033191A
Authority
KR
South Korea
Prior art keywords
host
acr
access
certificate
key
Prior art date
Application number
KR1020087032259A
Other languages
Korean (ko)
Inventor
마이클 홀트즈만
론 바질라이
패브리스 조간-콜롬
Original Assignee
쌘디스크 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/557,052 external-priority patent/US8266711B2/en
Priority claimed from US11/557,051 external-priority patent/US20080022395A1/en
Application filed by 쌘디스크 코포레이션 filed Critical 쌘디스크 코포레이션
Publication of KR20090033191A publication Critical patent/KR20090033191A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Storage Device Security (AREA)

Abstract

A memory storing public and confidential information is removably connected to a host device. General information on data stored in memory devices is accessible to the host device without authentication. Only a portion of confidential information stored in the memory device is accessible through the host device to an authenticated entity, where the entity has access rights to such portion. The entity is not able to access other portions of confidential information to which it has no rights. The public and confidential information is stored in a non-volatile storage medium, and a controller controls the supply of information. Preferably, the non-volatile storage medium and the controller are enclosed in a housing.

Description

메모리 디바이스로부터 공급된 정보를 제어하기 위한 시스템과 방법{SYSTEM AND METHOD FOR CONTROLLING INFORMATION SUPPLIED FROM MEMORY DEVICE}System and method for controlling information supplied from a memory device {SYSTEM AND METHOD FOR CONTROLLING INFORMATION SUPPLIED FROM MEMORY DEVICE}

관련 출원에 대한 상호 참조Cross Reference to Related Application

이 출원은 2006년 7월 7일에 출원된 미국 가 출원 60/819,507의 이익을 청구한다.This application claims the benefit of US Provisional Application 60 / 819,507, filed on July 7, 2006.

이 출원은 2005년 12월 20일 출원된 미국출원 11/313,870에 관계되며, 이 출원은 2004년 12월 21일에 출원된 미국 가 출원 60/638,804의 이익을 청구한다. 이 출원은 2005년 12월 20일에 출원된 미국출원 11/314,411에 더 관계되며; 이 출원은 2005년 12월 20일에 출원된 미국출원 11/314,410에 더 관계되며; 이 출원은 2005년 12월 20일에 출원된 미국출원 11/313,536에 더 관계되며; 이 출원은 2005년 12월 20일에 출원된 미국출원 11/313,538에 더 관계되며; 이 출원은 2005년 12월 20일에 출원된 미국출원 11/314,055에 더 관계되며; 이 출원은 2005년 12월 20일에 출원된 미국출원 11/314,052에 더 관계되며; 이 출원은 2005년 12월 20일에 출원된 미국출원 11/314,053에 더 관계된다.This application is related to US application 11 / 313,870, filed December 20, 2005, which claims the benefit of US provisional application 60 / 638,804, filed December 21, 2004. This application is further related to US application Ser. No. 11 / 314,411, filed December 20, 2005; This application is further related to US application Ser. No. 11 / 314,410, filed December 20, 2005; This application is further related to US application Ser. No. 11 / 313,536, filed December 20, 2005; This application is further related to US application Ser. No. 11 / 313,538, filed December 20, 2005; This application is further related to US application Ser. No. 11 / 314,055, filed December 20, 2005; This application is further related to US application Ser. No. 11 / 314,052, filed December 20, 2005; This application is further related to US application Ser. No. 11 / 314,053, filed December 20, 2005.

본 출원은 2006년 11월 6일 출원된 "Content Control Method Using Certificate Chains" 명칭의 Holtzman 등의 미국출원 11/557,028; 2006년 11월 6일 출원된 "Content Control System Using Certificate Chains" 명칭의 Holtzman 등의 미국출원 11/557,010; 2006년 11월 6일 출원된 "Content Control Method Using Certificate diamondcation Lists" 명칭의 Holtzman 등의 미국출원 11/557,006; 2006년 11월 6일 출원된 "Content Control System Using Certificate diamondcation Lists" 명칭의 Holtzman 등의 미국출원 11/557,026; 2006년 11월 6일 출원된 "Content Control Method Using Versatile Control Structure" 명칭의 Holtzman 등의 미국출원 11/557,049; 2006년 11월 6일 출원된 "Content Control System Using Versatile Control Structure" 명칭의 Holtzman 등의 미국출원 11/557,056; 2006년 11월 6일 출원된 "Method for Controlling Information Supplied From Memory Device" 명칭의 Holtzman 등의 미국출원 11/557,052; 2006년 11월 6일 출원된 "System for Controlling Information Supplied From Memory Device" 명칭의 Holtzman 등의 미국출원 11/557,051; 2006년 11월 6일 출원된 "Control Method Using Identity Objects" 명칭의 Holtzman 등의 미국출원 11/557,041; 2006년 11월 6일 출원된 "Control System Using Identity Objects" 명칭의 Holtzman 등의 미국출원 11/557,039에 관계된다.This application is described in US application Ser. No. 11 / 557,028 to Holtzman et al. Filed on November 6, 2006, entitled " Content Control Method Using Certificate Chains "; United States Application 11 / 557,010 to Holtzman et al. Filed November 6, 2006, entitled " Content Control System Using Certificate Chains "; United States Application 11 / 557,006 to Holtzman et al. Entitled “Content Control Method Using Certificate diamondcation Lists” filed November 6, 2006; United States Application 11 / 557,026 to Holtzman et al., Filed on November 6, 2006, entitled " Content Control System Using Certificate diamondcation Lists "; United States Application 11 / 557,049 to Holtzman et al. Entitled “Content Control Method Using Versatile Control Structure”, filed November 6, 2006; US Application 11 / 557,056 to Holtzman et al., Entitled “Content Control System Using Versatile Control Structure”, filed November 6, 2006; U.S. Application No. 11 / 557,052 to Holtzman et al. Entitled "Method for Controlling Information Supplied From Memory Device", filed Nov. 6, 2006; United States Application 11 / 557,051 to Holtzman et al. Entitled “System for Controlling Information Supplied From Memory Device”, filed November 6, 2006; United States Application 11 / 557,041 to Holtzman et al. Entitled “Control Method Using Identity Objects” filed November 6, 2006; US application 11 / 557,039 to Holtzman et al., Entitled "Control System Using Identity Objects," filed November 6, 2006.

위에 열거된 출원들은 전체가 여기 개시된 바와 같게 참조로 이들 전체 내용을 본 명세서에 포함시킨다.The applications listed above are hereby incorporated by reference in their entirety, as if fully set forth herein.

이 발명은, 일반적으로 메모리 시스템들에 관한 것으로, 특히 다기능 콘텐트 제어 특징들을 구비한 메모리 시스템에 관한 것이다.This invention relates generally to memory systems, and more particularly to a memory system with multifunctional content control features.

플래시 메모리 카드들과 같은 저장 디바이스들은 사진들과 같은 디지털 콘텐 트를 저장하기 위해 선택되는 저장매체가 되었다. 플래시 메모리 카드들은 다른 유형들의 미디어 콘텐트를 배포하기 위해서도 사용될 수 있다. 또한, 이를테면 컴퓨터들, 디지털 카메라들, 셀룰라 전화들, PDA들(personal digital assistant) 및 MP3 플레이어들과 같은 미디어 플레이들 등의 증가하는 다양한 호스트 디바이스들은 이제 플래시 메모리 카드들에 저장된 미디어 콘텐트를 렌더링하는 능력을 갖추고 있다. 이에 따라 다른 유형들의 이동 저장 디바이스들뿐만 아니라 플래시 메모리 카드들은 디지털 콘텐트를 배포하기 위해 널리 사용되는 매개물이 될 큰 잠재력이 있다.Storage devices such as flash memory cards have become the storage medium of choice for storing digital content such as photographs. Flash memory cards can also be used to distribute other types of media content. In addition, a growing variety of host devices, such as media players such as computers, digital cameras, cell phones, personal digital assistants and MP3 players, now render media content stored on flash memory cards. Have the power. Accordingly, flash memory cards as well as other types of mobile storage devices have great potential to be widely used vehicles for distributing digital content.

증가하는 량의 기밀(confidential) 및 공개(public) 정보가 저장 디바이스들에 저장되고 있기 때문에, 질의(inquiry)하는 실체의 상태(status)에 따라 어떤 유형의 정보를 사용할 수 있게 할지를 판정할 수 있는 것이 바람직하다. 이에 따라, 실체들의 상태에 따라 이들 실체들에 기밀 및 공개 정보를 제공하는 개선된 시스템이 제공되는 것이 바람직하다.Since an increasing amount of confidential and public information is being stored on storage devices, it is possible to determine what type of information is available depending on the status of the querying entity. It is preferable. Accordingly, it would be desirable to provide an improved system for providing confidential and public information to these entities depending on the state of the entities.

증가하는 량의 기밀 및 공개 정보가 저장 디바이스들에 저장되고 있기 때문에, 질의하는 실체의 상태에 따라 어떤 유형의 정보를 사용할 수 있게 할지를 판정할 수 있는 것이 바람직하다. 이에 따라 발명의 일 실시예에서, 메모리 디바이스는 호스트 디바이스에 탈착 가능하게 접속된다. 호스트 디바이스로부터 실체에 의해 보내진 일반 정보 조회(query)에 응하여 공개 정보가 메모리 디바이스에 의해 공급된다. 메모리 디바이스에 저장된 기밀 정보에의 액세스는 제어 데이터 구조에 의해 제어된다. 인증된 실체에 의해 보내진 디스크리트(discreet) 정보 조회에 응하여, 메모리 디바이스는 제어 데이터 구조에 의해 액세스하는 것이 이러한 인증된 실체에게 허용되는 기밀 정보의 부분만을 공급한다. 인증되었을 때라도, 제어 데이터 구조에 의해 허가된 기밀 정보의 부분만을 액세스할 것이 실체에 허용된다. 그러므로, 서로 다른 실체들이 기밀 정보의 다른 부분들에 액세스하는 것을 허용하지 않고도, 허용된 기밀 정보의 부분들만을 이들 실체들이 액세스할 수 있도록 액세스 제어 방법은 융통성이 있다.Because an increasing amount of confidential and public information is being stored on the storage devices, it is desirable to be able to determine what type of information is available according to the state of the querying entity. Thus, in one embodiment of the invention, the memory device is detachably connected to the host device. Public information is supplied by the memory device in response to a general information query sent by the entity from the host device. Access to confidential information stored in the memory device is controlled by the control data structure. In response to a discretionary information query sent by an authenticated entity, the memory device supplies only the portion of the confidential information that is permitted to such authenticated entity to access by the control data structure. Even when authenticated, the entity is allowed to access only the portion of the confidential information authorized by the control data structure. Therefore, the access control method is flexible so that only those parts of the confidential information that are allowed can be accessed by these entities without allowing different entities to access other portions of the confidential information.

본 명세서에 인용된 모든 특허들, 특허출원들, 기사들, 책자들, 명세서들, 표준들, 그외 공보들, 문헌들, 및 자료들은 모든 목적들을 위해 전체 내용을 참조로 본 명세서에 포함시킨다. 포함시킨 공보들, 문헌들 혹은 자료들 중 어느 것과 본 문헌의 텍스트 간에 용어의 정의 혹은 사용에 어떠한 비일관성 혹은 충돌의 정도까지는 본 문헌에서 용어의 정의 혹은 사용이 사용될 것이다.All patents, patent applications, articles, books, specifications, standards, other publications, documents, and materials cited herein are hereby incorporated by reference in their entirety for all purposes. To the extent that there is any inconsistency or conflict in the definition or use of a term between any of the publications, documents or materials included and the text of this document, the definition or use of the term will be used in this document.

도 1은, 이 발명을 예시하는데 유용한 호스트 디바이스와 통신하는 메모리 시스템의 블록도.1 is a block diagram of a memory system in communication with a host device useful for illustrating this invention.

도 2는, 메모리의 서로 다른 파티션들 및 서로 다른 파티션들에 저장된 비암호화된 및 암호화된 파일들의 개략도로서, 여기서 어떤 파티션들 및 암호화된 파일들에의 액세스는 발명의 서로 다른 실시예들을 예시하는데 유용한 액세스 정책들 및 인증 절차들에 의해 제어되는, 도면.2 is a schematic diagram of non-encrypted and encrypted files stored in different partitions and different partitions of a memory, where access to certain partitions and encrypted files illustrates different embodiments of the invention. A diagram controlled by useful access policies and authentication procedures.

도 3은, 메모리 내 서로 다른 파티션들을 예시하는 메모리의 개략도.3 is a schematic diagram of a memory illustrating different partitions in the memory.

도 4는, 발명의 서로 다른 실시예들을 예시하는데 유용한 것으로, 파티션들 내 일부 파일들이 암호화되는 도 3에 도시된 메모리의 서로 다른 파티션들에 대한 파일 위치 테이블들의 개략도.4 is a schematic diagram of file location tables for different partitions of memory shown in FIG. 3 in which some files in partitions are encrypted, useful for illustrating different embodiments of the invention.

도 5는, 발명의 서로 다른 실시예들을 예시하는데 유용한 액세스 제어된 레코드 그룹 내 액세스 제어 레코드들 및 연관된 키 참조의 개략도.5 is a schematic diagram of access control records and associated key references in a group of access controlled records useful for illustrating different embodiments of the invention.

도 6은, 발명의 서로 다른 실시예들을 예시하는데 유용한 액세스 제어된 레코드 그룹들 및 액세스 제어된 레코드들에 의해 형성된 나무 구조들의 개략도.6 is a schematic diagram of tree structures formed by access controlled record groups and access controlled records useful for illustrating different embodiments of the invention.

도 7은, 나무들의 형성 프로세스를 예시하기 위해서 액세스 제어된 레코드 그룹들의 3개의 계층 나무들을 나타낸 나무의 개략도.7 is a schematic diagram of a tree showing three hierarchical trees of record controlled access groups to illustrate the process of forming trees.

도 8a 및 도 8b는, 시스템 액세스 제어 레코드를 생성하고 사용하기 위해 호스트 디바이스 및 메모리 카드와 같은 메모리 디바이스에 의해 수행되는 프로세스들을 예시하는 흐름도.8A and 8B are flow diagrams illustrating processes performed by a memory device, such as a host device and a memory card, for creating and using a system access control record.

도 9는, 발명의 서로 다른 실시예들을 예시하는데 유용한 액세스 제어된 레코드 그룹을 생성하기 위해 시스템 액세스 제어 레코드를 사용하는 프로세스를 예시한 흐름도.9 is a flow diagram illustrating a process of using system access control records to create a group of access controlled records useful for illustrating different embodiments of the invention.

도 10은, 액세스 제어 레코드를 생성하기 위한 프로세스를 예시한 흐름도.10 is a flowchart illustrating a process for creating an access control record.

도 11은, 계층 나무의 특정한 적용을 예시하는데 유용한 2개의 액세스 제어 레코드 그룹들의 개략도.11 is a schematic diagram of two access control record groups useful for illustrating a particular application of a hierarchical tree.

도 12는, 특정한 권한들의 위임을 위한 프로세스를 예시한 흐름도.12 is a flow diagram illustrating a process for delegation of certain rights.

도 13은, 도 12의 위임 프로세스를 예시하기 위해 액세스 제어된 레코드 그 룹 및 액세스 제어 레코드의 개략도.13 is a schematic diagram of an access control record group and an access control record to illustrate the delegation process of FIG. 12;

도 14는, 암호화 및/또는 해독의 목적을 위해 키를 생성하기 위한 프로세스를 예시하는 흐름도.14 is a flow diagram illustrating a process for generating a key for purposes of encryption and / or decryption.

도 15는, 액세스된 제어된 레코드에 따라 데이터 액세스를 위해 액세스 권한들 및/또는 허가를 제거하기 위한 프로세스를 예시한 흐름도.15 is a flow diagram illustrating a process for removing access rights and / or permission for data access in accordance with an accessed controlled record.

도 16은, 액세스 권한들 및/또는 액세스 허가가 삭제 혹은 만기되었을 때 액세스를 요청하기 위한 프로세스를 예시한 흐름도.16 is a flow diagram illustrating a process for requesting access when access rights and / or access permission have been deleted or expired.

도 17a 및 도 17b는, 발명의 서로 다른 실시예들을 예시하는데 유용한 크립토그래픽(cryptographic) 키들에의 액세스를 승인하기 위한 인증 및 정책들을 위한 규칙 구조의 조직화를 예시한 개략도.17A and 17B are schematic diagrams illustrating the organization of a rule structure for authentication and policies for granting access to cryptographic keys useful for illustrating different embodiments of the invention.

도 18은, 정책들에 따라 보호된 정보에의 액세스를 제어하기 위한 대안적 방법을 예시하는 데이터베이스 구조의 블록도.18 is a block diagram of a database structure illustrating an alternative method for controlling access to protected information in accordance with policies.

도 19는, 패스워드들을 사용한 인증 프로세스들을 예시한 흐름도.19 is a flow diagram illustrating authentication processes using passwords.

도 20은, 다수의 호스트 증명서 체인들을 예시한 도면.20 illustrates a number of host certificate chains.

도 21은, 다수의 디바이스 증명서 체인들을 예시한 도면.21 illustrates multiple device certificate chains.

도 22 및 도 23은, 단방향 및 상호 인증 방법들을 위한 프로세스들을 예시한 프로토콜도.22 and 23 are protocol diagrams illustrating processes for one-way and mutual authentication methods.

도 24는, 발명의 서로 다른 실시예들을 예시하는데 유용한 증명서 체인도.Figure 24 is a certificate chain diagram useful for illustrating different embodiments of the invention.

도 25는, 발명의 또 다른 실시예를 예시하기 위해 증명서가 증명서 체인에서 마지막 증명서라는 표시를 나타내는 것으로, 마지막 증명서를 메모리 디바이스에 보내기 위해 호스트에 의해 보내지는 증명서 버퍼에 선행하는 제어 섹터 내 정보를 예시한 테이블.FIG. 25 shows an indication that a certificate is the last certificate in a certificate chain to illustrate another embodiment of the invention, showing information in the control sector preceding the certificate buffer sent by the host to send the last certificate to the memory device. Example table.

도 26 및 도 27은, 메모리 카드가 호스트 디바이스를 인증하고 있는 인증 방법들에 대해 각각 카드 및 호스트 프로세스들을 예시한 흐름도.26 and 27 are flow charts illustrating card and host processes, respectively, for authentication methods in which a memory card is authenticating a host device.

도 28 및 도 29는, 호스트 디바이스가 메모리 카드를 인증하는 인증 방법들에 대해 각각 카드 및 호스트 프로세스들을 예시한 흐름도.28 and 29 are flow charts illustrating card and host processes, respectively, for authentication methods in which a host device authenticates a memory card.

도 30 및 도 31은, 발명의 하나 이상의 실시예를 예시하기 위해 메모리 디바이스에 저장된 증명서 철회 리스트가 호스트 디바이스에 의해 검색되는 경우 호스트 디바이스 및 메모리 디바이스에 의해 각각 수행되는 프로세스들을 예시한 흐름도.30 and 31 are flow charts illustrating processes respectively performed by a host device and a memory device when a certificate revocation list stored in a memory device is retrieved by the host device to illustrate one or more embodiments of the invention.

도 32는, 발명의 또 다른 실시예를 예시하기 위해 리스트 내 필드들을 보인 증명서 철회 리스트도.32 is a certificate revocation list diagram showing fields in a list to illustrate another embodiment of the invention.

도 33 및 도 34는, 증명서 철회 리스트들을 사용하여 증명서들을 검증하기 위한 카드 및 호스트 프로세스들을 각각 예시하는 흐름도.33 and 34 are flow charts illustrating card and host processes, respectively, for verifying credentials using certificate revocation lists.

도 35는, 호스트에 보내진 데이터에 서명하고 호스트로부터의 데이터를 해독하기 위한 카드에 대한 카드 프로세스들을 예시한 흐름도.35 is a flow diagram illustrating card processes for a card for signing data sent to a host and decrypting data from the host.

도 36은, 호스트에 보내진 데이터를 카드가 서명하는 경우 호스트 프로세스들을 예시한 흐름도.36 is a flowchart illustrating host processes when the card signs data sent to the host.

도 37은, 호스트가 암호화된 데이터를 메모리 카드에 보내는 경우 호스트 프로세스들을 예시한 흐름도.37 is a flow diagram illustrating host processes when the host sends encrypted data to a memory card.

도 38 및 도 39는, 일반 정보 및 디스크리트 정보 조회들에 대한 프로세스들을 각각 예시한 흐름도.38 and 39 are flow charts illustrating processes for general information and discrete information queries, respectively.

도 40a는, 발명의 실시예를 예시하기 위해 호스트 디바이스에 접속된 메모리 디바이스(이를테면 플래시 메모리 카드)에 시스템 구조의 기능 블록도.40A is a functional block diagram of a system structure in a memory device (such as a flash memory card) connected to a host device to illustrate an embodiment of the invention.

도 40b는, 도 40a의 SSM 코어의 내부 소프트웨어 모듈들의 기능 블록도.40B is a functional block diagram of internal software modules of the SSM core of FIG. 40A.

도 41은, 일회용 패스워드를 생성하기 위한 시스템의 블록도.41 is a block diagram of a system for generating a one time password.

도 42는, 일회용 패스워드(OTP) 시드 공급 및 OTP 생성을 예시한 기능 블록도.FIG. 42 is a functional block diagram illustrating one time password (OTP) seed supply and OTP generation. FIG.

도 43은, 시드 공급 국면을 예시한 프로토콜도.Fig. 43 is a protocol diagram illustrating a seed supply phase.

도 44는, 일회용 패스워드 생성 국면을 예시한 프로토콜도.Fig. 44 is a protocol diagram illustrating a one time password generation phase.

도 45는, DRM 시스템을 예시한 기능 블록도.45 is a functional block diagram illustrating a DRM system.

도 46은, 키가 라이센스 객체 제공되는 경우 라이센스 제공 및 콘텐트 다운로드를 위한 프로세스를 예시한 프로토콜도.FIG. 46 is a protocol diagram illustrating a process for license provision and content download when a key is provided with a license object. FIG.

도 47은, 플레이백 동작을 위한 프로세스를 예시한 프로토콜도.47 is a protocol diagram illustrating a process for playback operation.

도 48은, 키가 라이센스 객체 제공되지 않는 경우 라이센스 제공 및 콘텐트 다운로드를 위한 프로세스를 예시한 프로토콜도.FIG. 48 is a protocol diagram illustrating a process for license provision and content download when a key is not provided with a license object. FIG.

도면은 발명의 면들의 여러 실시예들에서 특징들을 도시한다. 설명을 간단하게 하기 위해서, 이 출원에서 동일 구성성분들을 동일 참조부호들로 표시하였다.The drawings illustrate features in various embodiments of aspects of the invention. For simplicity of explanation, the same components are denoted by the same reference numerals in this application.

본 발명의 여러 면들이 구현될 수 있는 메모리 시스템이 도 1의 블록도에 의 해 도시되었다. 도 1에 도시된 바와 같이, 메모리 시스템(10)은 중앙처리유닛(CPU)(12), 버퍼 관리유닛(BUM)(14), 호스트 인터페이스 모듈(HIM)(16) 및 플래시 인터페이스 모듈(FIM)(18), 플래시 메모리(20) 및 주변 액세스 모듈(22)을 포함한다. 메모리 시스템(10)은 호스트 인터페이스 버스(26) 및 포트(26a)를 통해 호스트 디바이스(24)와 통신한다. NAND 유형일 수 있는 플래시 메모리(20)는, 디지털 카메라, 개인용 컴퓨터, PDA(personal digital assistant), MP-3 플레이어와 같은 디지털 미디어 플레이어, 셀룰라 전화, 셋탑박스 혹은 이외 디지털 디바이스 혹은 기기일 수 있는 호스트 디바이스(24)를 위해 데이터 저장을 제공한다. CPU(12)를 위한 소프트웨어 코드도 플래시 메모리(20)에 저장될 수 있다. FIM(18)은 플래시 인터페이스 버스(28) 및 포트(28a)를 통해 플래시 메모리(20)에 접속한다. HIM(16)은 호스트 디바이스에 접속하기에 적합하다. 주변 액세스 모듈(22)은 CPU(12)와 통신을 위해 FIM, HIM 및 BMU와 같은 적합한 제어기 모듈을 선택한다. 일 실시예에서, 점선 박스 내 시스템(10)의 모든 성분들은 이를테면 메모리 카드 혹은 스틱(10') 내와 같이 단일 유닛 내에 내장될 수 있고 인캡슐레이트되는 것이 바람직하다. 메모리 시스템(10)은 호스트 디바이스(24)에 탈착 가능하게 접속되므로, 시스템(10) 내 콘텐트는 많은 서로 다른 호스트 디바이스들에 의해 액세스될 수 있다.A memory system in which various aspects of the present invention may be implemented is illustrated by the block diagram of FIG. 1. As shown in FIG. 1, the memory system 10 includes a central processing unit (CPU) 12, a buffer management unit (BUM) 14, a host interface module (HIM) 16, and a flash interface module (FIM). 18, flash memory 20 and peripheral access module 22. Memory system 10 communicates with host device 24 via host interface bus 26 and port 26a. The flash memory 20, which may be of the NAND type, may be a digital camera, a personal computer, a personal digital assistant, a digital media player such as an MP-3 player, a cell phone, a set-top box, or other host device, which may be a digital device or device. Provide data storage for 24. Software code for the CPU 12 may also be stored in the flash memory 20. FIM 18 connects to flash memory 20 via flash interface bus 28 and port 28a. HIM 16 is suitable for connecting to a host device. Peripheral access module 22 selects suitable controller modules, such as FIM, HIM, and BMU, for communication with CPU 12. In one embodiment, all the components of the system 10 in the dashed box may be embedded within a single unit and encapsulated, such as in a memory card or stick 10 '. Since the memory system 10 is detachably connected to the host device 24, the content in the system 10 can be accessed by many different host devices.

이하 설명에서, 메모리 시스템(10)은 메모리 디바이스(10)라고도 하고, 또는 간단히 메모리 디바이스 혹은 디바이스라고도 한다. 발명이 플래시 메모리들을 참조하여 예시되지만, 발명은 모든 다른 유형들의 재기입가능 비휘발성 메모리 시스 템들뿐만 아니라, 이를테면 자기 디스크들, 광학 CD들과 같은 다른 유형들의 메모리들에도 적용할 수 있다.In the following description, memory system 10 may also be referred to as memory device 10 or simply as a memory device or device. Although the invention is illustrated with reference to flash memories, the invention is applicable not only to all other types of rewritable nonvolatile memory systems, but also to other types of memories such as magnetic disks, optical CDs.

버퍼 관리유닛(14)은 호스트 다이렉트 메모리 액세스(HDMA)(32), 플래시 다이렉트 메모리 액세스(FDMA)(34), 중재기(arbiter)(36), 버퍼 랜덤 액세스 메모리(BRAM)(38) 및 크립토-엔진(40)을 포함한다. 중재기(36)는 언제든 단지 한 마스터 혹은 선창자(HDMA(32), FDMA(34) 혹은 CPU(12)일 수 있는)가 언제든 활성화될 수 있고 슬레이브 혹은 타겟은 BRAM(38)이 되도록 하는 공유 버스 중재기이다. 중재기는 적합한 선창자 요청을 BRAM(38)에 채널링하게 한 것이다. HDMA(32) 및 FDMA(34)는 HIM(16)과, FIM(18)과 BRAM(38) 혹은 CPU 랜덤 액세스 메모리(CPU RAM)(12a)간에 수송되는 데이터를 맡는다. HDMA(32) 및 FDMA(34)의 동작은 통상적인 것으로 여기에서는 상세히 기술될 필요는 없다. BRAM(38)은 호스트 디바이스(24)와 플래시 메모리(20) 간에 전달되는 데이터를 저장하는데 사용된다. HDMA(32) 및 FDMA(34)는 HIM(16)/FIM(18)과 BRAM(38) 혹은 CPU RAM(12a) 간에 데이터를 전송하는 것과 섹터 완료를 나타내게 한 것이다.The buffer management unit 14 includes a host direct memory access (HDMA) 32, a flash direct memory access (FDMA) 34, an arbiter 36, a buffer random access memory (BRAM) 38, and cryptography. An engine 40. The arbiter 36 can be active at any time, with only one master or docker (which can be HDMA 32, FDMA 34, or CPU 12) active at any time and the slave or target being a shared bus that makes the BRAM 38 available. It is an arbitrator. The arbitrator is responsible for channeling the appropriate canister request to the BRAM 38. The HDMA 32 and the FDMA 34 handle data transferred between the HIM 16 and the FIM 18 and the BRAM 38 or the CPU random access memory (CPU RAM) 12a. The operation of HDMA 32 and FDMA 34 is conventional and need not be described in detail herein. The BRAM 38 is used to store data transferred between the host device 24 and the flash memory 20. The HDMA 32 and the FDMA 34 indicate data transfer and sector completion between the HIM 16 / FIM 18 and the BRAM 38 or the CPU RAM 12a.

일 실시예에서, 메모리 시스템(10)은 암호화 및/또는 해독에 사용되는 키값(들)을 생성하는데, 이 값(들)은 호스트 디바이스(24)와 같은 외부 디바이스들이 실질적으로 액세스될 수 없는 것이 바람직하다. 대안적으로, 키값은 시스템(10) 외부, 이를테면 라이센스 서버에 의해 생성되어 시스템(10)에 보내질 수도 있다. 키값이 어떻게 생성되는지에 관계없이, 일단 키값이 시스템(10)에 저장되면, 인증된 실체들만이 키값에 액세스할 수 있을 것이다. 그러나, 호스트 디바이스는 메모리 시스템(10)에 데이터를 파일들 형태로 읽고 기입하기 때문에, 암호화 및 해독은 전형적으로 파일단위로 행해진다. 많은 그외 다른 유형들의 저장 디바이스들처럼, 메모리 디바이스(10)는 파일들을 관리하지 않는다. 메모리(20)는 파일들의 논리 주소들이 확인되는 파일 할당 테이블(FAT)을 저장하고 있어, FAT는 전형적으로 제어기(12)가 아니라 호스트 디바이스(24)에 의해 액세스되고 관리된다. 그러므로, 특정 파일 내 데이터를 암호화하기 위해서, 제어기(12)는 메모리(20) 내 파일 내 데이터의 논리 주소들을 보내기 위해 호스트 디바이스에 의존해야 하고, 따라서 특정 파일의 데이터는 시스템(10)만이 사용할 수 있는 키값(들)을 사용하여 시스템에 의해 발견되고 암호화되고 및/또는 해독될 수 있다.In one embodiment, memory system 10 generates key value (s) used for encryption and / or decryption, which value (s) indicates that external devices, such as host device 24, are substantially inaccessible. desirable. Alternatively, the key value may be generated outside of the system 10, such as by a license server and sent to the system 10. Regardless of how the key value is generated, once the key value is stored in the system 10, only authorized entities will be able to access the key value. However, since the host device reads and writes data in the form of files to the memory system 10, encryption and decryption are typically done on a file-by-file basis. Like many other types of storage devices, memory device 10 does not manage files. The memory 20 stores a file allocation table (FAT) in which logical addresses of files are identified, so that the FAT is typically accessed and managed by the host device 24 rather than the controller 12. Therefore, in order to encrypt the data in a particular file, the controller 12 must rely on the host device to send the logical addresses of the data in the file in memory 20, so that the data in the specific file can only be used by system 10. Key value (s) can be found, encrypted and / or decrypted by the system.

호스트 디바이스(24) 및 메모리 시스템(10) 둘 다가 파일들 내 데이터를 크립토그래픽적으로 처리하기 위해 동일 키(들)을 참조하는 방법을 제공하기 위해서, 호스트 디바이스는 시스템(10)에 생성되거나 이에 의해 보내진 키값들 각각에 대한 참조를 제공하는데, 여기서 이러한 참조는 단순히 키 ID일 수도 있다. 이에 따라, 호스트(24)는 시스템(10)에 의해 크립토그래픽으로 처리되는 각 파일을 키 ID에 연관시키고, 시스템(10)은 데이터를 크립토그래픽으로 처리하는데 사용되는 각 키값을 호스트에 의해 제공된 키 ID에 연관시킨다. 이에 따라, 데이터가 크립토그래픽으로 처리될 것을 호스트가 요청할 때, 메모리(20)로부터 페치(fetch)되거나 이에 저장된 데이터의 논리 주소들과 함께 키 ID와 더불어 요청을 시스템(10)에 보낼 것이다. 시스템(10)은 키값을 생성 혹은 수신하고 호스트(24)에 의해 제공된 키 ID를 이러한 값에 연관시키고, 크립토그래픽 처리를 수행한다. 이에 따라, 메모리 시스 템(10)이 키값(들)에의 배타적 액세스를 포함하여, 키(들)을 사용하여 크립토그래픽 처리를 완전히 제어할 수 있게 하면서도 메모리 시스템(10)이 동작하는 방식에 어떠한 변경도 행할 필요가 없다. 즉, 일단 키값이 시스템(10)에 저장되거나 생성되면, 시스템은 크립토그래픽 처리에 사용되는 키값(들)의 관리를 위한 배타적 제어를 유지하면서도, 호스트(24)가 FAT의 배타적 제어를 취함으로써 계속하여 파일들을 관리하게 한다. 호스트 디바이스(24)는 키값(들)이 메모리 시스템(10)에 저장된 후에, 데이터의 크립토그래픽 처리를 위해 사용되는 키값(들)의 관리에 관계가 없다.In order to provide a way for both the host device 24 and the memory system 10 to refer to the same key (s) to cryptographically process data in files, the host device is created on or in the system 10. Provides a reference to each of the key values sent by the user, where such reference may simply be a key ID. Accordingly, host 24 associates each file that is cryptographically processed by system 10 to a key ID, and system 10 associates each key value that is used to cryptographically process data to the key provided by the host. Associate with ID Thus, when the host requests that the data be cryptographically processed, it will send a request to the system 10 along with the key ID along with the logical addresses of the data fetched from or stored in the memory 20. System 10 generates or receives key values, associates key IDs provided by host 24 to these values, and performs cryptographic processing. Accordingly, any change in the way the memory system 10 operates while still allowing the memory system 10 to fully control the cryptographic processing using the key (s), including exclusive access to the key value (s). There is no need to do it. That is, once key values are stored or generated in system 10, the system continues by allowing host 24 to take exclusive control of the FAT, while maintaining exclusive control for management of key value (s) used for cryptographic processing. To manage the files. The host device 24 is independent of the management of the key value (s) used for the cryptographic processing of data after the key value (s) are stored in the memory system 10.

호스트(24)에 의해 제공되는 키 ID 및 메모리 시스템에 보내지거나 이에 의해 생성된 키값은 이하 실시예들 중 한 실시예에서 "콘텐트 암호화 키" 또는 CEK라고 하는 두 속성들의 량을 형성한다. 호스트(24)가 각 키 ID를 하나 이상의 파일들에 연관시킬 수도 있는 한편, 호스트(24)는 각 키 ID를 조직화되지 않은 데이터에, 혹은 임의의 방식으로 조직화된 데이터에 연관시킬 수도 있으나, 완전한 파일들로 조직화된 데이터로 제한되는 것은 아니다.The key ID provided by the host 24 and the key value sent to or generated by the memory system form the amount of two attributes, referred to as " content encryption key " or CEK, in one of the embodiments below. While host 24 may associate each key ID with one or more files, host 24 may associate each key ID with unorganized data or with the data organized in any way, but not with complete. It is not limited to data organized into files.

사용자 혹은 애플리케이션이 시스템(10) 내 보호된 콘텐트 혹은 영역에 액세스할 수 있기 위해서, 시스템(10)에 사전에 등록된 자격증명서(crediential)를 사용하여 인증될 필요가 있을 것이다. 자격증명서는 이러한 자격증명서를 가진 특정 사용자 혹은 애플리케이션에 승인된 액세스 권한들에 결부된다. 사전 등록 프로세스에서, 시스템(10)은 사용자 혹은 애플리케이션의 신원(identity) 및 자격증명서, 및 사용자 혹은 애플리케이션에 의해 결정되고 호스트(24)를 통해 제공된 이러한 신원 및 자격증명서에 연관된 액세스 권한들의 레코드를 저장한다. 사전 등록이 완료된 후에, 사용자 혹은 애플리케이션이 데이터를 메모리(20)에 기입할 것을 요청할 때, 이의 신원 및 자격증명서, 데이터를 암호화하기 위한 키 ID, 및 암호화된 데이터가 저장될 논리 주소들을 호스트 디바이스를 통해 제공하는 것이 필요할 것이다. 시스템(10)은 키값을 생성 혹은 수신하고 이 값을 호스트 디바이스에 의해 제공된 키 ID에 연관시키고, 기입될 데이터를 암호화하는데 사용되는 키값에 대한 키 ID를 이 사용자 혹은 애플리케이션을 위한 레코드 혹은 테이블에 저장한다. 이어서 시스템은 데이터를 암호화하고 이 시스템이 생성 혹은 수신한 키값 뿐만 아니라 암호화된 데이터를 호스트에 의해 지정된 주소들에 저장한다.In order for a user or application to be able to access protected content or areas within the system 10, it may need to be authenticated using credentials previously registered with the system 10. Credentials are tied to authorized access rights for specific users or applications with these credentials. In the pre-registration process, the system 10 stores a record of the identity and credentials of the user or application, and the access rights determined by the user or application and associated with those identity and credentials provided by the host 24. do. After the pre-registration is completed, when the user or application requests to write the data to the memory 20, the host device is supplied with its identity and credentials, the key ID for encrypting the data, and the logical addresses where the encrypted data will be stored. It will be necessary to provide it through. The system 10 generates or receives a key value and associates it with the key ID provided by the host device and stores the key ID for the key value used to encrypt the data to be written in a record or table for this user or application. do. The system then encrypts the data and stores the encrypted data, as well as key values generated or received by the system, at addresses specified by the host.

사용자 혹은 애플리케이션이 암호화된 데이터를 메모리(20)로부터 읽기를 요청할 때, 이의 신원 및 자격증명서, 요청된 데이터를 암호화하기 위해 이전에 사용된 키에 대한 키 ID, 및 암호화된 데이터가 저장된 논리 주소들을 제공하는 것이 필요할 것이다. 이어서 시스템(10)은 호스트에 의해 제공된 사용자 혹은 애플리케이션 신원 및 자격증명서를 자신의 레코드에 저장된 것들과 맞추어 볼 것이다. 이들이 일치한다면, 시스템(10)은 이의 메모리부터 사용자 혹은 애플리케이션에 의해 제공된 키 ID에 연관된 키값을 페치하고, 호스트 디바이스에 의해 지정된 주소들에 저장된 데이터를 키값을 사용하여 해독하고 해독된 데이터를 사용자 혹은 애플리케이션에 보낸다.When a user or application requests reading encrypted data from memory 20, it identifies its identity and credentials, the key ID for the key previously used to encrypt the requested data, and the logical addresses where the encrypted data is stored. It will be necessary to provide. The system 10 will then match the user or application identity and credentials provided by the host with those stored in its record. If they match, the system 10 fetches the key value associated with the key ID provided by the user or application from its memory, decrypts the data stored at the addresses specified by the host device using the key value and decrypts the decrypted data by the user or Send to the application.

인증 자격증명서들을 크립토그래픽 처리에 사용되는 키들의 관리로부터 분리함으로써, 자격증명서들을 공유함이 없이 데이터에 액세스할 권한들을 공유하는 것 이 가능하다. 이에 따라, 서로 다른 자격증명서들을 가진 일 그룹의 사용자들 혹은 애플리케이션들은 동일 데이터에 액세스하기 위해 동일 키들에 액세스할 수 있고, 반면에 이 그룹 밖의 사용자들은 액세스할 수 없다. 그룹 내 모든 사용자들 혹은 애플리케이션들이 동일 데이터에 액세스할 수도 있으나, 이들은 여전히 서로 다른 권한들을 가질 수 있다. 이에 따라, 일부는 독출국한 액세스만을 할 수도 있고, 다른 일부는 기입 액세스만을 할 수 있고, 다른 일부는 둘 다를 할 수도 있다. 시스템(10)은 사용자들 혹은 애플리케이션 신원들 및 자격증명서들, 이들이 액세스할 수 있는 키 ID들, 및 키 ID들 각각에의 연관된 액세스 권한들의 레코드를 유지하기 때문에, 시스템(10)이 키 ID들을 추가 혹은 삭제하거나 특정 사용자들 혹은 애플리케이션을 위한 이러한 키 ID들에 연관된 액세스 권한들을 변경하거나 한 사용자 혹은 애플리케이션을 다른 사용자 혹은 애플리케이션에 액세스 권한들을 위임하거나, 사용자들 혹은 애플리케이션들을 위한 레코드들 혹은 테이블들을 삭제 혹은 추가하는 것도 가능하며, 이들 모두는 적합하게 인증된 호스트 디바이스에 의해 제어된다. 저장된 레코드는 어떤 키들을 액세스하기 위해 보안 채널이 필요함을 명시할 수도 있다. 인증은 패스워드들뿐만 아니라 대칭 혹은 비대칭 알고리즘들을 사용하여 행해질 수도 있다.By separating the authentication credentials from the management of the keys used for cryptographic processing, it is possible to share the rights to access data without sharing the credentials. Thus, a group of users or applications with different credentials can access the same keys to access the same data, while users outside this group cannot. All users or applications in the group may access the same data, but they may still have different rights. Accordingly, some may only have read access, others may only have write access, and others may have both. Since system 10 maintains a record of users or application identities and credentials, the key IDs they can access, and the associated access rights to each of the key IDs, system 10 generates the key IDs. Add or delete or change access rights associated with these key IDs for specific users or applications, delegate access to one user or application to another user or application, or delete records or tables for users or applications Alternatively, it is possible to add, all of which are controlled by suitably authorized host devices. The stored record may specify that a secure channel is needed to access certain keys. Authentication may be done using symmetric or asymmetric algorithms as well as passwords.

메모리 시스템(10)에 보안 콘텐트의 휴대성은 특히 중요하다. 키값에 대한 액세스가 메모리 시스템에 의해 제어되는 실시예들에서, 시스템을 탑재한 메모리 시스템 혹은 저장 디바이스가 한 외부 시스템에서 다른 시스템으로 옮겨질 때, 이에 저장된 콘텐트의 보안이 유지된다. 키가 메모리 시스템에 의해 생성되든 아니면 메모리 시스템 밖에서 발원하든, 외부 시스템들은 이들이 메모리 시스템에 의해 완전히 제어되는 방식으로 인증되지 않았다면, 시스템(10) 내 이러한 콘텐트에 액세스할 수 없다. 이와 같이 인증된 후에도, 액세스는 메모리 시스템에 의해 전적으로 제어되며, 외부 시스템들은 메모리 시스템에 기설정된 레코드들에 따라 제어된 방식으로만 액세스할 수 있다. 요청이 이러한 레코드들에 순응하지 않는다면, 요청은 거절될 것이다.The portability of secure content in the memory system 10 is particularly important. In embodiments where access to key values is controlled by the memory system, the security of the content stored therein is maintained when the memory system or storage device carrying the system is moved from one external system to another. Whether the key is generated by the memory system or originates outside the memory system, external systems cannot access this content in system 10 unless they are authenticated in a way that is fully controlled by the memory system. Even after such authentication, access is fully controlled by the memory system, and external systems can only access it in a controlled manner according to records preset in the memory system. If the request does not comply with these records, the request will be rejected.

콘텐트를 보호함에 있어 더 큰 융통성을 제공하기 위해서, 이하 파티션들이라 언급되는 메모리의 어떤 영역들이 적합하게 인증된 사용자들 혹은 애플리케이션들에 의해서만 액세스될 수 있음이 고찰된다. 키를 기반으로 하는 데이터 암호화의 전술한 특징들과 결합되었을 때, 시스템(10)은 더 큰 데이터 보호 능력을 제공한다. 도 2에 도시된 바와 같이, 플래시 메모리(20)는 다수의 파티션들로서 사용자 영역 혹은 파티션 및 커스텀 파티션들로 분할된 저장용량을 가질 수 있다. 사용자 영역 혹은 파티션(PO)은 인증 없이 모든 사용자들 및 애플리케이션들이 액세스할 수 있다. 사용자 영역에 저장된 데이터의 모든 비트 값들이 임의의 애플리케이션 혹은 사용자에 의해 독출 혹은 기입될 수 있는데, 독출된 데이터가 암호화된다면, 해독할 권한이 없는 사용자 혹은 애플리케이션은 사용자 영역에 저장된 비트 값들에 의해 나타내어진 정보에 액세스할 수 없을 것이다. 이것이, 예를 들면, 사용자 영역(P0)에 저장된 파일들(102, 104)에 의해 도시되었다. 또한, 사용자 영역에는 모든 애플리케이션들 및 사용자들에 의해 독출되어 이해될 수 있는 106과 같은 암호화되지 않은 파일들이 저장된다. 이에 따라, 암호화된 파일들은 파일들(102, 104)에 대한 것과 같이 이들에 연관된 록들(lock)로 기호로 도시되어 있다.In order to provide greater flexibility in protecting content, it is contemplated that certain areas of memory, referred to hereinafter as partitions, can only be accessed by suitably authorized users or applications. When combined with the aforementioned features of key-based data encryption, system 10 provides greater data protection. As shown in FIG. 2, the flash memory 20 may have a storage capacity divided into a user area or a partition and custom partitions as a plurality of partitions. A user area or partition (PO) can be accessed by all users and applications without authentication. All bit values of data stored in the user area can be read or written by any application or user. If the read data is encrypted, a user or application that is not authorized to decrypt is represented by the bit values stored in the user area. You will not be able to access the information. This is illustrated, for example, by the files 102, 104 stored in the user area PO. The user area also stores unencrypted files, such as 106, which can be read and understood by all applications and users. Accordingly, encrypted files are symbolically shown with locks associated with them, such as for files 102 and 104.

사용자 영역(P0) 내 암호화된 파일이 권한없는 애플리케이션들 혹은 사용자들에 의해 이해될 수 없으나, 이러한 애플리케이션들 혹은 사용자들은 여전히 파일을 삭제 혹은 변질시킬 수 있어, 이는 일부 애플리케이션들에게 바람직하지 않을 수 있다. 이 목적을 위해서, 메모리(20)는 사전 인증 없이는 액세스될 수 없는 파티션들(P1, P2)와 같은 보호된 커스텀 파티션들을 포함한다. 이 출원에서 실시예들에서 허용되는 인증 프로세스가 이하 설명된다.Although encrypted files in the user area P0 cannot be understood by unauthorized applications or users, these applications or users may still delete or corrupt the file, which may not be desirable for some applications. . For this purpose, the memory 20 includes protected custom partitions, such as partitions P1 and P2, which cannot be accessed without prior authorization. The authentication process allowed in the embodiments in this application is described below.

도 2에도 도시된 바와 같이, 다양한 사용자들 혹은 애플리케이션들이 메모리(20) 내 파일들에 액세스할 수 있다. 이에 따라 사용자 1 및 사용자 2, 애플리케이션들 1 ~ 4(디바이스들 상에서 동작하는)이 도 2에 도시되었다. 메모리(20) 내 보호된 콘텐트에 액세스할 것이 이들 실체들에 허용되기 전에, 이들은 먼저 후술하는 방식으로 인증 프로세스에 의해 인증된다. 이 프로세스에서, 액세스를 요청하고 있는 실체는 역할 기반 액세스 제어를 위해 호스트 측에서 확인될 필요가 있다. 이에 따라, 액세스를 요청하는 실체를 이를테면 "나는 애플리케이션 2이며 파일 1을 읽기를 원한다"와 같은 정보를 공급함으로써 자신을 확인시킨다. 이어서 제어기(12)는 메모리(20) 혹은 제어기(12)에 저장된 레코드에 대해서 신원, 인증정보 및 요청과 맞추어 본다. 모든 요구사항들이 충족된다면, 이러한 실체에 액세스가 승인된다. 도 2에 도시된 바와 같이, 파티션(P1) 내 파일(101)로부터 읽고 이에 기입하는 것이 사용자 1에 허용되나, 사용자 1가 P0 내 파일들(106)로부터 읽고 이에 기입하는 제약없는 권한들을 갖는 것 외에 파일들(102, 104)만을 읽을 수 있다. 반 면, 사용자 2는 파일(101, 104)에 액세스가 허용되지 않으나 파일(102)에 독출 및 기입 액세스를 할 수 있다. 도 2에 나타낸 바와 같이, 사용자 1 및 사용자 2는 동일 로그인 알고리즘(AES)을 가지나 애플리케이션들 1 및 3은 사용자 1 및 사용자 2과도 다른 서로 다른 로그인 알고리즘들(예를 들면, RSA 및 001001)을 갖는다.As also shown in FIG. 2, various users or applications can access files in memory 20. Accordingly, User 1 and User 2, applications 1-4 (operating on devices) are shown in FIG. 2. Before these entities are allowed to access protected content in memory 20, they are first authenticated by the authentication process in a manner described below. In this process, the entity requesting access needs to be identified at the host side for role-based access control. Accordingly, it identifies itself by supplying information such as "I am Application 2 and want to read File 1", for example, an entity requesting access. The controller 12 then matches the identity, authentication information, and request to the memory 20 or the record stored in the controller 12. If all requirements are met, access to this entity is granted. As shown in FIG. 2, user 1 is allowed to read from and write to files 101 in partition P1, but user 1 has unrestricted rights to read from and write to files 106 in P0. In addition, only files 102 and 104 can be read. On the other hand, user 2 is not allowed to access files 101 and 104 but has read and write access to file 102. As shown in FIG. 2, User 1 and User 2 have the same login algorithm (AES), but Applications 1 and 3 have different login algorithms (eg, RSA and 001001) that are different from User 1 and User 2, respectively. .

보안 저장 애플리케이션(SSA)은 메모리 시스템(10)의 보안 애플리케이션이고 위에 언급된 다수의 특징들을 구현하는데 사용될 수 있는 발명의 실시예를 예시한다. SSA는 메모리(20) 혹은 CPU(12) 내 비휘발성 메모리(도시되지 않음)에 저장된 데이터베이스와 함께 소프트웨어 혹은 컴퓨터 코드로서 실현될 수 있고, RAM(12a) 내 읽혀져 CPU(12)에 의해 실행된다. SSA에 관련하여 사용되는 두문자어들을 이하 표에 나타내었다.Secure Storage Application (SSA) illustrates an embodiment of the invention that is a secure application of memory system 10 and that can be used to implement many of the features mentioned above. The SSA can be realized as software or computer code with a database stored in the memory 20 or in a nonvolatile memory (not shown) in the CPU 12, read in the RAM 12a and executed by the CPU 12. The acronyms used in connection with SSA are shown in the table below.

정의, 두문자어 및 약어Definitions, Acronyms and Abbreviations

ACRACR 액세스 제어 레코드들Access control records AGPAGP ACR 그룹ACR Group CBCCBC 체인 블록 사이퍼(cipher)Chain block cipher CEKCEK 콘텐트 암호화 키Content encryption key ECBECB 전자 코드북Electronic codebook ACAMACAM ACR 속성 관리ACR Property Management PCRPCR 허가 제어 레코드Admission control record SSASSA 보안 저장 애플리케이션Secure storage applications 실체substance SSA에 로그인하며, 이에 따라 그의 기능들을 이용하는 실제의 개별적 존재(호스트측)를 갖는 임의의 것.Any that logs in to the SSA and thus has an actual individual presence (host side) using its functions.

SSA 시스템 설명SSA system description

데이터 보안, 무결성 및 액세스 제어가 SSA의 주 역할들이다. 데이터는 다른 경우라면 명백히 어떤 종류의 대량 저장 디바이스에 저장되었을 파일들이다. SSA 시스템은 저장 시스템의 최상부에 놓이고 저장된 호스트 파일들을 위한 보호층을 부가하여 후술되는 보안 데이터 구조들을 통해 보안 기능들을 제공한다.Data security, integrity and access control are the main roles of the SSA. Data is obviously files that would otherwise have been stored on some kind of mass storage device. The SSA system provides security functions through secure data structures described below by adding a protective layer for the stored host files that sits on top of the storage system.

SSA의 주임무는 메모리 내 저장된(및 보안된) 콘텐트에 연관된 서로 다른 권한들을 관리하는 것이다. 메모리 애플리케이션은 복수의 사용자들 및 복수의 저장된 콘텐트에 대한 콘텐트 권한들을 관리하는 것을 필요로 한다. 호스트 애플리케이션들은 이들 측에서, 이러한 애플리케이션들이 알 수 있는 드라이브들 및 파티션들, 및 저장 디바이스 상에 저장된 파일들의 위치들을 관리하고 기술하는 파일 할당 테이블들(FAT)를 파악한다. The main task of the SSA is to manage the different rights associated with stored (and secured) content in memory. The memory application needs to manage content rights for a plurality of users and a plurality of stored content. Host applications identify file allocation tables (FAT) on their side that manage and describe the drives and partitions that these applications can know, and the locations of files stored on the storage device.

이 경우 저장 디바이스는 파티션들로 분할된 NAND 플래시 칩을 사용하나, 그러나 이외 다른 이동 저장 디바이스들도 사용될 수 있고 이 발명의 범위 내에 있다. 이들 파티션들은 시작 및 끝 주소가 이들의 경계들을 정의하는, 논리 주소들의 연속된 스레드(thread)이다. 그러므로 요망된다면, 은닉된 파티션들에의 액세스에 제약들이, 이러한 경계들 내에 주소들에 이러한 제약을 연관시키는 소프트웨어(이를테면 메모리(20)에 저장된 소프트웨어)에 의해, 부과될 수 있다. 파티션들은 SSA에 의해 관리되는 이들 파티션들이 논리 주소 경계들에 의해 SSA에 완전히 인식될 수 있다. SSA 시스템은 권한없는 호스트 애플리케이션들로부터 데이터를 물리적으로 보안이 되게 하기 위해 파티션들을 사용한다. 호스트에게 있어, 파티션들은 데이터 파일들을 저장할 전유 공간들을 정의하는 메커니즘이다. 이들 파티션들은 저장 디바이스에 액세스할 수 이는 어느 누구든 디바이스 상에 파티션의 존재를 보고 알 수 있는 공개인 것일 수도 있고, 혹은 선택된 호스트 애플리케이션들만이 저장 디바이스 내 이들의 존재에 액세스하여 이들을 알 수 있는 사설 혹은 은닉된 것일 수도 있다.The storage device in this case uses a NAND flash chip divided into partitions, but other mobile storage devices may also be used and are within the scope of this invention. These partitions are contiguous threads of logical addresses where the start and end addresses define their boundaries. Therefore, if desired, constraints on access to hidden partitions may be imposed by software (such as software stored in memory 20) that associates this constraint with addresses within these boundaries. Partitions can be fully recognized by the SSA by those partitions managed by the SSA. SSA systems use partitions to physically secure data from unauthorized host applications. For the host, partitions are a mechanism for defining exclusive spaces to store data files. These partitions can access the storage device, which can be public, where anyone can see and know the existence of the partition on the device, or a private or public where only selected host applications can access and know their presence in the storage device. It may be hidden.

도 3은 메모리의 파티션들로서 P0, P1, P2 및 P3(자명하게 4개보다 덜 혹은 더 많은 파티션들이 채용될 수 있다)을 도시한 메모리의 개략도로서, P0는 인증없이 임의의 실체에 의해 액세스될 수 있는 공개 파티션이다.3 is a schematic diagram of a memory showing P0, P1, P2, and P3 (obviously fewer or more partitions may be employed) as partitions of the memory, where P0 may be accessed by any entity without authentication; This is a public partition.

사설 파티션(이를테면 Pl, P2 혹은 P3)은 이 내에 파일들에의 액세스를 숨긴다. 호스트가 파티션에 액세스하지 못하게 함으로써, 플래시 디바이스(예를 들면, 플래시 카드)는 데이터 파일들의 보호를 파티션에 전달한다. 그러나, 이러한 종류의 보호는 파티션 내 논리 주소들에 저장된 데이터에의 액세스에 제약들을 부과함으로써 은닉된 파티션에 상주하는 모든 파일들을 포함해버린다. 즉, 제약들은 한 범위의 논리 주소들에 연관된다. 이 파티션에 액세스할 수 있는 모든 사용자들/호스트들은 내부에 모든 파일들에 무제한으로 액세스할 수 있을 것이다. 서로 다른 파일들을 서로간에 -혹은 다수 그룹들의 파일들과- 분리하기 위해서, SSA 시스템은 파일 -혹은 다수 그룹들의 파일들- 마다 다른 레벨의 보안 및 무결성을, 키들 및 키 참조들 혹은 키 ID들을 사용하여 제공한다. 서로 다른 메모리 주소들에 데이터를 암호화하는데 사용되는 특정 키값의 키 참조 혹은 키 ID는 암호화된 데이터를 내포하는 컨테이너 혹은 도메인과 유사할 수 있다. 이러한 이유로, 도 4에서, 키 참조 혹은 키 ID들(예를 들면, "키 1" 및 "키 2)")이, 키 ID들에 연관된 키값들을 사용하여 암호화된 파일들을 둘러싸는 영역들로서 그래픽적으로 도시되었다.Private partitions (such as Pl, P2 or P3) hide access to files within them. By preventing the host from accessing the partition, the flash device (eg flash card) transfers protection of the data files to the partition. However, this kind of protection includes all files residing in the hidden partition by imposing restrictions on access to data stored at logical addresses in the partition. That is, constraints are associated with a range of logical addresses. All users / hosts who have access to this partition will have unlimited access to all files inside. To separate different files from each other—or from multiple groups of files—the SSA system uses keys and key references or key IDs with different levels of security and integrity for each file—or multiple groups of files. To provide. The key reference or key ID of a particular key value used to encrypt data at different memory addresses may be similar to a container or domain containing encrypted data. For this reason, in FIG. 4, the key reference or key IDs (eg, “key 1” and “key 2)” are graphical as areas surrounding the files encrypted using the key values associated with the key IDs. Has been shown.

도 4를 참조하면, 예를 들면, 파일 A는 어떠한 키 ID에 의해서도 둘러싸이지 않은 것으로서 도시되었기 때문에, 어떠한 인증도 없이 모든 실체들이 액세스할 수 있다. 공개 파티션 내 파일 B가 모든 실체들에 의해 독출 혹은 덮어 쓰일 수 있을지라도, 이것은 ID "키 1"을 가진 키로 암호화된 데이터를 내포하므로, 파일 B에 내포된 정보는 실체가 이러한 키에 액세스할 수 없다면 이러한 실체가 액세스할 수 없다. 따라서 키값들 및 키 참조 혹은 키 ID들을 사용하는 것은 위에 기술된 파티션에 의해 제공된 보호의 유형과는 반대로, 논리적 보호만을 제공한다. 그러므로, 파티션(공개 혹은 사설)에 액세스할 수 있는 어떠한 호스트이든 암호화된 데이터를 포함하여, 전체 파티션에 데이터를 독출 또는 기입할 수 있다. 그러나 데이터가 암호화되기 때문에, 권한없는 사용자들은 이를 변질시킬 수 있을 뿐이다. 이들은 데이터를 변경한 경우 검출할 수 있는 것이 바람직하다. 암호화 및/또는 해독 키들에의 액세스를 제약함으로써, 이 특징은 권한있는 실체들만이 데이터를 사용하게 할 수 있다. 파일 B 및 파일 C는 P0에서 키 ID "키 2"를 가진 키를 사용하여 암호화된다.Referring to FIG. 4, for example, file A is shown as not surrounded by any key ID, so that all entities can access it without any authentication. Although File B in the public partition can be read or overwritten by all entities, it contains data encrypted with a key with ID "Key 1", so that the information contained in File B can be accessed by the entity. If not, these entities are not accessible. Thus using key values and key references or key IDs provides only logical protection, as opposed to the type of protection provided by the partition described above. Therefore, any host that can access a partition (public or private) can read or write data to the entire partition, including encrypted data. But because the data is encrypted, unauthorized users can only alter it. It is preferable that they can be detected when data is changed. By restricting access to encryption and / or decryption keys, this feature can allow only authorized entities to use the data. Files B and C are encrypted using a key with key ID "key 2" at P0.

데이터 기밀성 및 무결성은 콘텐트 암호화 키들(CEK)마다 하나로, CEK를 사용하는 대칭 암호화 방법들을 통해 제공될 수 있다. SSA 실시예에서, CEK들에서 키값들은 플래시 디바이스(예를 들면, 플래시 카드)에 의해 생성 혹은 수신되고, 내부적으로만 사용되고, 외부 세계로부터 비밀들로서 유지된다. 암호화 혹은 사이퍼되는 데이터는 해시될 수도 있고 혹은 사이퍼는 데이터 무결성을 보장하기 위해 체인 블록된다.Data confidentiality and integrity can be provided through symmetric encryption methods using CEK, one for each content encryption keys (CEK). In the SSA embodiment, key values in CEKs are generated or received by a flash device (eg, flash card), used only internally, and maintained as secrets from the outside world. Data encrypted or ciphered may be hashed or ciphers are chained to ensure data integrity.

파티션 내 모든 데이터가 서로 다른 키들에 의해 암호화되고 서로 다른 키 ID들에 연관되는 것은 아니다. 공개 혹은 사용자 파일들 혹은 운영 시스템 영역(즉 FAT)에 어떤 논리 주소들은 임의의 키 혹은 키 참조에 연관되지 않을 수 있고 따라서 파티션 자체에 액세스할 수 있는 어떠한 실체든 사용할 수 있다. Not all data in the partition is encrypted by different keys and associated with different key IDs. Some logical addresses in public or user files or operating system areas (ie FAT) may not be associated with any key or key reference and thus can use any entity that can access the partition itself.

파티션들로부터 데이터를 기입하고 독출하거나 키들을 사용하는 것뿐만 아니라 키들 및 파티션들을 생성하는 능력을 요구하는 실체는 액세스 제어 레코드(ACR)를 통해 SSA 시스템에 로그인할 필요가 있다. SSA 시스템에서 ACR의 특전들(privilege)은 작업들(Action)이라고 한다. 모든 ACR은 다음 3개의 범주들, 즉 파티션들 및 키들/키 ID들을 생성, 파티션들 및 키들에 액세스 및 다른 ACR들을 생성/업그레이드하는 작업들을 수행할 허가를 가질 수도 있다.Entities that require the ability to create keys and partitions, as well as write and read data from partitions or use keys, need to log in to the SSA system via an access control record (ACR). The privileges of an ACR in an SSA system are called actions . Every ACR may have permission to perform the following three categories: creating partitions and keys / key IDs, accessing partitions and keys, and creating / upgrading other ACRs.

ACR들은 ACR 그룹들 혹은 AGP들이라고 하는 그룹들로 조직된다. 일단 ACR이 성공적으로 인증되면, SSA 시스템은 ACR의 작업들 어느 것이 실행될 수 있게 하는 세션을 연다. ACR들 및 AGP들은 정책들에 따라 파티션들 및 키들에 액세스를 제어하는데 사용되는 보안 데이터 구조들이다.ACRs are organized into groups called ACR groups or AGPs. Once the ACR is successfully authenticated, the SSA system opens a session that allows any of the ACR's tasks to be executed. ACRs and AGPs are secure data structures used to control access to partitions and keys in accordance with policies.

사용자 user 파티션partition (들)(field)

SSA 시스템은 사용자 파티션(들)이라고도 하는 하나 이상의 공개 파티션들을 관리한다. 이 파티션은 저장 디바이스 상에 존재하며 저장 디바이스의 표준 독출 기입 명령들을 통해 액세스될 수 있는 파티션 혹은 파티션들이다. 디바이스 상에 파티션의 존재뿐만 아니라 파티션(들)의 크기에 관해 정보를 얻는 것은 호스트 시스템으로부터 감추어질 수 없다.The SSA system manages one or more public partitions, also called user partition (s). This partition is a partition or partitions that reside on the storage device and can be accessed through the standard read and write commands of the storage device. Getting information about the size of the partition (s) as well as the existence of the partition on the device cannot be hidden from the host system.

SSA 시스템은 이 파티션(들)을 표준 기입 독출 명령들 혹은 SSA 명령들을 통해 액세스할 수 있게 한다. 그러므로, 파티션에 액세스하는 것은 바람직하게는 특 정 ACR들로 제약될 수 없다. 그러나, SSA 시스템은 사용자 파티션에의 액세스를 호스트 디바이스들이 제약할 수 있게 할 수 있다. 독출 및 기입 액세스들은 개별적으로 활성화/비활성화될 수 있다. 모든 4개의 조합들(예를 들면, 기입국한, 독출국한(기입 보호), 독출 및 기입 및 액세스 불가)가 허용된다.The SSA system makes this partition (s) accessible via standard write read commands or SSA commands. Therefore, accessing a partition is preferably not limited to specific ACRs. However, the SSA system can allow host devices to restrict access to the user partition. Read and write accesses can be individually activated / deactivated. All four combinations (eg write-in, read-out (write-protect), read and write and no access) are allowed.

SSA 시스템은 ACR들이 사용자 파티션 내 파일들에 키 ID들을 연관시키고 이러한 키 ID들에 연관된 키들을 사용하여 개개의 파일들을 암호화시킬 수 있게 한다. 파티션들에 액세스 권한들을 설정할 뿐만 아니라 사용자 파티션들 내 암호화된 파일들에 액세스하는 것은 SSA 명령 세트를 사용하여 행해질 것이다. 위에 특징들은 파일들로 조직되지 않은 데이터에도 적용한다.The SSA system allows ACRs to associate key IDs to files in a user partition and to encrypt individual files using the keys associated with these key IDs. In addition to setting access rights to partitions, accessing encrypted files in user partitions will be done using the SSA instruction set. The above features also apply to data not organized into files.

SSA SSA 파티션들Partitions

이들은 SSA 명령들을 통해서만 액세스될 수 있는 은닉된(비인증된 당사자들로부터) 파티션들이다. SSA 시스템은 바람직하게는, ACR에 로그온함으로써 수립되는 세션(후술함)을 통한 것 외에, 호스트 디바이스가 SSA 파티션에 액세스하지 못하게 할 것이다. 마찬가지로, 바람직하게 SSA는 SSA 파티션의 존재, 크기 및 액세스 허가에 관해 정보를, 이 요청이 수립된 세션을 통해 오지 않는다면, 제공하지 않을 것이다.These are hidden (from unauthorized parties) partitions that can only be accessed via SSA commands. The SSA system will preferably prevent the host device from accessing the SSA partition, in addition to via a session established below by logging on to the ACR. Likewise, preferably the SSA will not provide information about the existence, size, and access permissions of the SSA partition, unless this request does not come through an established session.

파티션들에의 액세스 권한들은 ACR 허가들로부터 도출된다. 일단 ACR이 SSA 시스템에 로그인 되면, 파티션을 다른 ACR들(후술함)과 공유할 수 있다. 파티션이 생성될 때, 호스트는 파티션에 대한 참조 이름 혹은 ID(예를 들면, 도 3 및 도 4에서 P0 ~ P3)을 제공한다. 이 참조는 파티션의 이후 독출 및 기입 명령들에서 사용 된다. Access rights to partitions are derived from ACR permissions. Once the ACR is logged in to the SSA system, the partition can be shared with other ACRs (described below). When a partition is created, the host provides a reference name or ID (eg, P0-P3 in FIGS. 3 and 4) for the partition. This reference is used in subsequent read and write commands of the partition.

저장 Save 디바이스device 파티션partition

디바이스의 모든 가용한 저장용량은 바람직하게는 사용자 파티션 및 현재 구성된 SSA 파티션들에 할당된다. 그러므로, 어떠한 재-파티션(repartition) 동작이든 현존 파티션들의 재구성을 수반할 수 있다. 디바이스 용량(모든 파티션들의 크기들의 합)에 순 변화는 제로가 될 것이다. 디바이스 메모리 공간에서 파티션들의 ID들은 호스트 시스템에 의해 정의된다.All available storage of the device is preferably allocated to the user partition and the currently configured SSA partitions. Therefore, any repartition operation can involve reorganization of existing partitions. The net change in device capacity (sum of sizes of all partitions) will be zero. The IDs of partitions in the device memory space are defined by the host system.

호스트 시스템은 현존 파티션들을 2개의 보다 작은 파티션들로 재 파티션하거나, 2개의 현존 파티션들(이웃하여 있을 수도 있고 그렇지 않을 수도 있다)을 하나로 합체할 수 있다. 분할 혹은 합체된 파티션들 내 데이터는 호스트의 재량으로 소거되거나 그대로 놔둘 수 있다.The host system can repartition existing partitions into two smaller partitions, or merge two existing partitions (which may or may not be neighbors) into one. Data in partitioned or coalesced partitions can be erased or left at the discretion of the host.

저장 디바이스의 재 파티션은 데이터의 유실을 야기할 수 있기 때문에(소거되었거나 아니면 저장 디바이스의 논리 주소 공간에서 이동되었기 때문에) 재 파티션에 엄격한 제약들은 SSA 시스템에 의해 관리된다. 루트 AGP(후술함)에 상주하는 ACR만이 재 파티션 명령을 발행하는 것이 허용되고 이에 의해 소유된 파티션들을 참조할 수 있을 뿐이다. SSA 시스템은 데이터가 파티션들에서 어떻게 조직되었는지를(FAT 혹은 그외 다른 파일 시스템 구조) 모르기 때문에, 디바이스가 재 파티션되는 언제든 이들 구조들을 재구성하는 것이 호스트의 의무이다. Strict constraints on repartitioning are managed by the SSA system because repartitioning of a storage device can cause loss of data (either because it has been erased or moved out of the storage device's logical address space). Only the ACR residing at the root AGP (described below) is allowed to issue a repartition command and can only reference partitions owned by it. Because the SSA system does not know how data is organized in partitions (FAT or other file system structure), it is the host's duty to reconstruct these structures whenever the device is repartitioned.

사용자 파티션의 재 파티션은 호스트 OS에 의해 본 이 파티션의 크기 및 그외 속성들을 변경시킬 것이다.Repartitioning the user partition will change the size and other attributes of this partition as seen by the host OS.

재 파티션 후에, SSA 시스템 내 어떠한 ACR이든 존재하지 않는 파티션들을 참조하지 않게 하는 것이 호스트 시스템의 의무이다. 이들 ACR들이 삭제되지 않거나 적합하게 업그레이드된다면, 이들 ACR들을 대신하여, 존재하지 않는 파티션들에 액세스하려는 차후의 시도들이 시스템에 의해 검출되어 거절될 것이다. 삭제된 키들 및 키 ID들에 관하여, 유사한 주의가 취해진다.After repartitioning, it is the responsibility of the host system to ensure that no ACR in the SSA system references non-existent partitions. If these ACRs are not deleted or upgraded appropriately, subsequent attempts to access non-existing partitions on behalf of these ACRs will be detected and rejected by the system. Regarding deleted keys and key IDs, similar care is taken.

키들, 키 Keys, keys IDID 들 및 논리 보호And logic protection

파일이 어떤 은닉된 파티션에 기입될 때, 이것은 일반적인 공개로부터 은닉된다. 그러나, 실체(적대적인 혹은 아닌)가 이 파티션을 알고 이에 액세스할 수 있게 되면, 파일은 입수가 가능해지고 보기가 용이해진다. 파일을 더 보안이 되게 하기 위해서, SSA는 이를 은닉된 파티션에서 암호화할 수 있고, 이 경우 파일을 해독하기 위한 키에 액세스하기 위한 자격증명서들은 파티션에 액세스하기 위한 것들과는 다른 것이 바람직하다. 파일들이 호스트에 의해 완전히 제어되고 관리된다는 사실에 기인하여, CEK를 파일에 연관시키는 것은 문제가 된다. SSA가 수신응답하는 어떤 것, 즉 키 ID에 파일을 링크하는 것은 이것을 제거한다. 따라서, 키가 SSA에 의해 생성될 때, 호스트는 이를 위한 키 ID를 SSA에 의해 생성된 키를 사용하여 암호화된 데이터에 연관시킨다. 키가 키 ID와 함께 SSA에 보내진다면, 키 및 키 ID는 서로 쉽게 연관될 수 있다.When a file is written to some hidden partition, it is hidden from the general public. However, once an entity (hostile or not) can know and access this partition, the file becomes available and easy to view. In order to make the file more secure, the SSA can encrypt it in the hidden partition, where credentials for accessing the key to decrypt the file are preferably different from those for accessing the partition. Due to the fact that files are fully controlled and managed by the host, it is problematic to associate a CEK with a file. Linking the file to something the SSA receives, that is, the key ID, eliminates this. Thus, when a key is generated by the SSA, the host associates the key ID for it with the data encrypted using the key generated by the SSA. If a key is sent to the SSA with a key ID, the key and key ID can be easily associated with each other.

키값 및 키 ID는 논리적 보안을 제공한다. 주어진 키 ID의 위치에 관계없이, 이에 연관된 모든 데이터는 호스트 애플리케이션에 의한 생성에서 유일하게 제공되는 참조 이름 혹은 키 ID를 갖는 콘텐트 암호화 키(CEK) 내 동일 키값으로 사이퍼 된다. 실체가 은닉된 파티션에의 액세스를 얻고(ACR을 통해 인증함으로써) 이 파티션 내 암호화된 파일을 독출하거나 기입하기를 원한다면, 파일에 연관된 키 ID에 액세스할 수 있을 필요가 있다. 이 키 ID에 대한 키에의 액세스를 승인할 때, SSA는 이 키 ID에 연관된 CEK에 키값을 로딩하고, 데이터를 호스트에 보내기 전에 이를 해독하거나 데이터를 플래시 메모리(20)에 기입하기 전에 이 데이터를 암호화한다. 일 실시예에서, 키 ID에 연관된 CEK에서 키값은 SSA 시스템에 의해 한번 랜덤하게 생성되고 이 SSA 시스템에 의해 유지된다. SSA 시스템 밖의 어떠한 것도 CEK 내 이 키값을 모르고 이에 액세스할 수 없다. 외부 세계는 CEK 내 키값이 아닌, 참조 혹은 키 ID만을 제공하고 사용한다. 키값은 SSA에 의해 전적으로 관리되고 바람직하게 이에 의해서만 액세스될 수 있다. 대안적으로, 키는 SSA 시스템에 제공될 수 있다.Key values and key IDs provide logical security. Regardless of the location of a given key ID, all associated data is ciphered with the same key value in the content encryption key (CEK) with a reference name or key ID that is uniquely provided in generation by the host application. If an entity wants to gain access to the hidden partition (by authenticating via ACR) and read or write an encrypted file in this partition, it needs to be able to access the key ID associated with the file. When granting access to the key for this key ID, the SSA loads the key value into the CEK associated with this key ID, decrypts it before sending it to the host, or decrypts it before writing the data to flash memory 20. Encrypt it. In one embodiment, the key value in the CEK associated with the key ID is randomly generated once by the SSA system and maintained by this SSA system. Nothing outside the SSA system knows this key value in the CEK and cannot access it. The outside world only provides and uses references or key IDs, not key values in the CEK. The key value is wholly managed by the SSA and preferably only accessible by it. Alternatively, the key may be provided to the SSA system.

SSA 시스템은 다음 사이퍼 모드들 중 어떤 것(사용자가 정한)을 사용하여 키 ID에 연관된 데이터를 보호한다(CEK들 내 키값들 뿐만 아니라, 사용된 실제 크립토그래픽 알고리즘들은 시스템 제어되고 외부 세계에 드러나지 않는다). The SSA system uses any of the following cipher modes (user defined) to protect the data associated with the key ID (as well as the key values in the CEKs, the actual cryptographic algorithms used are system controlled and not visible to the outside world). ).

블록 모드 - 데이터는 블록들로 분할되고, 이들 각각은 개별적으로 암호화된다. 이 모드는 덜 보안적이고 일반적으로 사전 공격들(dictionary attack)을 받기 쉽다. 그러나, 이것은 사용자들이 데이터 블록들 중 어느 것을 랜덤하게 액세스할 수 있게 할 것이다.Block Mode-Data is divided into blocks, each of which is individually encrypted. This mode is less secure and generally vulnerable to dictionary attacks. However, this will allow users to randomly access any of the data blocks.

체인모드(Chained mode) - 데이터는 블록들로 분할되고, 이들 블록들은 암호화 프로세스 동안 체인된다. 모든 블록은 다음 블록의 암호화 프로세스에 입력들 중 하나로서 사용된다. 이 모드에서, 데이터는 보다 보안적인 것으로서 간주될지라도, 데이터는 시작부터 끝까지 순차적으로 기입되고 독출되어, 사용자들이 수락할 수 없을 수 있는 오버헤드를 야기한다.Chained mode-Data is divided into blocks, which are chained during the encryption process. Every block is used as one of the inputs to the encryption process of the next block. In this mode, although the data is considered to be more secure, the data is written and read sequentially from beginning to end, causing overhead that users may not be able to accept.

해시(Hashed) - 데이터 무결성을 유효화하는데 사용될 수 있는 데이터 다이제스트의 추가의 생성을 가진 체인 모드Hashed-chain mode with additional generation of data digests that can be used to validate data integrity

ACR들 및 액세스 제어ACRs and Access Control

SSA는 복수의 애플리케이션들의 각각이 시스템 데이터베이스에서 노드들의 나무로서 표현되는 이들 복수의 애플리케이션들을 취급하게 설계된다. 애플리케이션들간에 상호배타는 나무 가지들간에 어떠한 크로스토크도 없게 함으로써 달성된다. The SSA is designed to handle these plurality of applications in which each of the plurality of applications is represented as a tree of nodes in the system database. Mutual exclusion between applications is achieved by eliminating any crosstalk between tree branches.

SSA 시스템에 액세스를 할 수 있기 위해서, 실체는 시스템의 ACR들 중 하나를 통해 접속을 수립하는 것이 필요하다. 로그인 절차들은 사용자가 접속하기로 선택한 ACR 내에 있는 정의들에 따라 SSA 시스템에 의해 관리된다.In order to be able to access the SSA system, an entity needs to establish a connection through one of the system's ACRs. Login procedures are managed by the SSA system according to the definitions in the ACR the user chooses to connect to.

ACR은 SSA 시스템에의 개별적 로그인 포인트이다. ACR은 로그인 자격증명서들 및 인증 방법을 유지한다. 또한, 레코드에 상주하는 것은 SSA 시스템 내 로그인 허락들이며, 이들 중에는 독출특전 및 기입특전이 있다. 이것이 도 5에 도시되었으며, 도 5는 동일 AGP에 n개의 ACR들을 도시하고 있다. 이것은 n개의 ACR들 중 적어도 일부는 동일 키에의 액세스를 공유할 수 있음을 의미한다. 이에 따라, ACR #1 및 ACR #n은 키 ID "키 3"을 가진 키에의 액세스를 공유하며, 여기서 ACR#1 및 ACR#n은 ACR ID들이며, "키 3"은 "키 3"에 연관된 데이터를 암호화하는데 사용되는 키에 대한 키 ID이다. 동일 키가 복수의 파일들, 혹은 복수 세트들의 데이터를 암호화 및/또는 해독하는데 사용될 수도 있다.ACR is an individual login point to the SSA system. ACR maintains login credentials and authentication methods. Also resident in the record are login permissions in the SSA system, among which are read and write privileges. This is illustrated in FIG. 5, which shows n ACRs in the same AGP. This means that at least some of the n ACRs can share access to the same key. Accordingly, ACR # 1 and ACR #n share access to the key with key ID "key 3", where ACR # 1 and ACR # n are ACR IDs, and "key 3" is assigned to "key 3". Key ID for the key used to encrypt the associated data. The same key may be used to encrypt and / or decrypt multiple files, or multiple sets of data.

SSA 시스템은 일단 사용자가 성공적으로 로그인하였으면 시스템에서 사용자의 특전들일 수 있으므로, 인증 알고리즘들 및 사용자 자격증명서들이 다를 수 있는 시스템에의 몇 가지 유형들의 로그인을 지원한다. 다시, 도 5는 서로 다른 로그인 알고리즘들 및 자격증명서들을 도시한다. ACR#1은 패스워드 로그인 알고리즘 및 패스워드를 자격증명서로서 명시하며 반면 ACR#2는 PKI(공개키 기반구조) 로그인 알고리즘 및 공개키를 자격증명서로서 명시한다. 이에 따라, 로그인하기 위해서, 실체는 정확한 로그인 알고리즘 및 자격증명서뿐만 아니라, 유효한 ACR ID를 제시할 필요가 있을 것이다.The SSA system supports several types of logins to the system, where the authentication algorithms and user credentials may differ, since the user may be the user's privileges in the system once the user has successfully logged in. Again, Figure 5 shows different login algorithms and credentials. ACR # 1 specifies the password login algorithm and password as credentials, while ACR # 2 specifies the PKI (public key infrastructure) login algorithm and public key as credentials. Accordingly, in order to log in, the entity will need to present a valid ACR ID as well as the correct login algorithm and credentials.

일단 실체가 SSA 시스템의 ACR에 로그인 되면, 이의 허가들 -SSA 명령들을 사용할 권한들- 은 ACR에 연관된 허가 제어 레코드(PCR)에 정의된다. 도 5에서, ACR#1은 "키 3"에 연관된 데이터에의 독출국한 허가를 승인하고, ACR #2는 보인 PCR에 따라 "키 5"에 연관된 데이터를 독출 및 기입하는 허가를 승인한다. Once an entity is logged in to an ACR of an SSA system, its permissions-the permissions to use SSA commands-are defined in an authorization control record (PCR) associated with the ACR. In Fig. 5, ACR # 1 grants a read-out permission to data associated with "key 3", and ACR # 2 grants permission to read and write data associated with "key 5" according to the shown PCR.

서로 다른 ACR들은 독출 및 기입할 키들에서와 같이 시스템에서 공통의 권리(interests) 및 특전들을 공유할 수 있다. 이것을 달성하기 위해서, 공통으로 어떤 것을 가진 ACR들은 AGP들 - ACR 그룹들로 그룹화된다. 이에 따라, ACR #1 및 ACR #n은 키 ID "키 3"을 가진 키에의 액세스를 공유한다.Different ACRs may share common interests and privileges in the system, such as in keys to read and write. To accomplish this, ACRs with something in common are grouped into AGPs-ACR groups. Accordingly, ACR # 1 and ACR #n share access to the key with key ID "key 3".

AGP들 및, 이 내에 ACR들은 계층 나무들로 조직되고 따라서 민감(sensitive) 데이터를 보안이 되게 유지하는 보안 키들을 생성하는 것을 제외하고, ACR은 바람 직하게는 자신의 키 ID/파티션들에 대응하는 다른 ACR 엔트리들을 생성할 수 있다. 이들 ACR 자식들은 이들의 부(father) -생성자와 동일한 혹은 미만이 허가들을 가질 것이며, 자식들에 부 ACR 자신이 생성한 키들에 대한 허가들이 주어질 수 있다. 추가할 필요도 없이, 자식 ACR들은 이들이 생성하는 임의의 키에 액세스 허가들을 얻는다. 이것이 도 6에 도시되었다. 이에 따라, AGP(120)에 모든 ACR들은 ACR(122)에 의해 생성되었으며 이러한 ACR들 중 2개는 "키 3"에 연관된 데이터에 액세스할 허가(들)를 ACR(122)로부터 물려받는다.ACRs preferably correspond to their key IDs / partitions, except that AGPs and ACRs within them are organized in hierarchical trees and thus generate security keys that keep sensitive data secure. To create other ACR entries. These ACR children will have permissions equal to or less than their father-generator, and the children can be given permissions for keys generated by the secondary ACR itself. Needless to add, child ACRs gain access permissions to any key they generate. This is shown in FIG. Accordingly, all ACRs in AGP 120 have been created by ACR 122 and two of these ACRs inherit permission (s) from ACR 122 to access data associated with “key 3”.

AGPAGP

SSA 시스템에 로그인 하는 것은 AGP 및 AGP 내 ACR를 명시함으로써 행해진다.Logging in to the SSA system is done by specifying AGP and ACR in AGP.

모든 AGP는 고유의 ID(참조 이름)을 가지며, 이것은 SSA 데이터베이스에서 자신의 엔트리에 대한 색인으로서 사용된다. AGP가 생성될 때, SSA 시스템에 AGP 이름이 제공된다. 제공된 AGP 이름이 이미 시스템에 존재한다면, SSA는 생성 동작을 거절할 것이다.Every AGP has a unique ID (reference name), which is used as an index for its entry in the SSA database. When an AGP is created, an AGP name is provided to the SSA system. If the provided AGP name already exists in the system, the SSA will reject the create operation.

AGP들은 다음 절들에서 기술되는 바와 같이 액세스 및 관리 허가들의 위임에 관한 제약들을 관리하는데 사용된다. 도 6에서 2개의 나무들에 의해 제공되는 기능들 중 하나는 이를테면 2개의 서로 다른 애플리케이션들, 혹은 서로 다른 두 컴퓨터 사용자들과 같은, 전적으로 개별적 실체들에 의한 액세스를 관리하는 것이다. 이러한 목적들을 위해서, 2개의 액세스 프로세스들이, 이들 둘이 동시에 일어날지라도, 실질적으로 서로 무관하게 하는 것이(즉, 실질적으로 크로스-토크가 전혀 없 게) 중요할 수 있다. 이것은 각 나무에서 추가의 ACR들 및 AGP들의 생성뿐만 아니라 허가들은 다른 나무의 것들에 연결되지 않고 이들에 의존하지 않음을 의미한다. 그러므로, SSA 시스템이 메모리(10)에서 사용될 때, 이것은 메모리 시스템(10)이 복수의 애플리케이션들에 동시에 서비스할 수 있게 한다. 또한, 이것은 2개의 애플리케이션들이 개별적인 2 세트들의 데이터를 서로에 무관하게 액세스할 수 있게 한다(예를 들면, 한 세트의 사진들 및 한 세트의 곡들). 이것이 도 6에 도시되었다. 이에 따라, 도 6의 윗부분에 나무에 노드들(ACR들)을 통해 액세스하는 애플리케이션 혹은 사용자를 위한 "키 X" 및 "키 Z"은 사진들을 포함할 수 있다. 도 6에 아랫부분에 나무의 노드들(ACR들)을 통해 액세스하는 애플리케이션 혹은 사용자를 위한 "키 5" 및 "키 Y"에 연관된 데이터는 곡들을 포함할 수 있다. AGP를 생성한 ACR은 AGP가 ACR 엔트리들이 없을 때만 이를 삭제할 허가를 갖는다.AGPs are used to manage constraints on delegation of access and administrative permissions as described in the following sections. One of the functions provided by the two trees in FIG. 6 is to manage access by entirely separate entities, such as two different applications, or two different computer users. For these purposes, it may be important for two access processes to be substantially independent of each other (ie, substantially no cross-talk), even if both occur simultaneously. This means that the permissions, as well as the creation of additional ACRs and AGPs in each tree, are not linked to or depend on those of the other trees. Therefore, when the SSA system is used in the memory 10, this allows the memory system 10 to simultaneously service multiple applications. In addition, this allows two applications to access two separate sets of data irrespective of each other (eg, a set of photos and a set of songs). This is shown in FIG. Accordingly, "key X" and "key Z" for the application or user accessing the nodes (ACRs) in the tree at the top of FIG. 6 may include photos. The data associated with "Key 5" and "Key Y" for the application or user accessing through the nodes (ACRs) of the tree at the bottom of FIG. 6 may include songs. The ACR that created the AGP has permission to delete the AGP only when there are no ACR entries.

실체의 SSA 엔트리 점: 액세스 제어 레코드(ACR)SSA entry point for the entity: access control record (ACR)

SSA 시스템에 ACR은 시스템에 로그인하는 것이 실체에 허락되는 방법을 기술한다. 실체가 SSA 시스템에 로그인할 때 실체는 수행하려고 하는 인증 프로세스에 대응하는 ACR를 명시할 필요가 있다. ACR은 도 5에 도시된 ACR에 정의된 바와 같이 일단 인증되면 사용자가 실행할 수 있는 승인된 작업들을 예시하는 허가 제어 레코드(PCR)를 포함한다. 호스트측 실체는 모든 ACR 데이터 필드들을 제공한다.The ACR in an SSA system describes how an entity is allowed to log in to the system. When an entity logs in to an SSA system, it needs to specify an ACR that corresponds to the authentication process it intends to perform. The ACR includes an admission control record (PCR) that illustrates the authorized tasks that a user can perform once authenticated as defined in the ACR shown in FIG. The host side entity provides all ACR data fields.

실체가 성공적으로 ACR에 로그인 되었을 때, 실체는 ACR의 모든 파티션 및 키 액세스 허가들 및 ACAM 허가들(후술함)에 대해 조회할 수 있을 것이다.When the entity has successfully logged in to the ACR, the entity will be able to query for all partition and key access permissions and ACAM permissions (described below) of the ACR.

ACR IDACR ID

SSA 시스템 실체가 로그인 프로세스를 시작할 때 이 시스템은 로그인 방법에 대응하는 ACR ID(ACR이 생성되었을 때 호스트에 의해 제공되는)을 명시할 필요가 있고 따라서 SSA는 정확한 알고리즘을 셋업하고 모든 로그인 요구사항들이 충족되었을 때 정확한 PCR을 선택할 것이다. ACR이 생성되었을 때 ACR ID가 SSA 시스템에 제공된다. When the SSA system entity starts the login process, the system needs to specify the ACR ID (provided by the host when the ACR was created) corresponding to the login method, so that the SSA sets up the correct algorithm and ensures that all login requirements are The exact PCR will be selected when met. When an ACR is created, an ACR ID is provided to the SSA system.

로그인/인증 알고리즘Login / Authentication Algorithm

인증 알고리즘은 어떤 종류의 로그인 절차가 실체에 의해 사용될 것인지와, 사용자의 신원의 증명을 제공하기 위해 어떤 종류의 자격증명서들이 필요로 되는지를 명시한다. SSA 시스템은 무 절차(및 무 자격증명서) 및 패스워드 기반 절차들 내지는 대칭 혹은 비대칭 크립토그래피에 기초한 양방향 인증 프로토콜들 범위의 몇 가지 표준 로그인 알고리즘들을 지원한다.The authentication algorithm specifies what kind of login procedure will be used by the entity and what kind of credentials are needed to provide proof of the user's identity. The SSA system supports several standard login algorithms ranging from no procedure (and no credentials) and password based procedures or two-way authentication protocols based on symmetric or asymmetric cryptography.

자격증명서들Credentials

실체의 자격증명서들은 로그인 알고리즘에 대응하며, 사용자를 검증하고 인증하기 위해 SSA에 의해 사용된다. 자격증명서에 대한 예는 패스워드 인증을 위한 패스워드/PIN-번호, AES 인증을 위한 AES-키 등일 수 있다. 자격증명서들의 유형/포맷(즉, PIN, 대칭키 등...)은 기정의되고 인증 모드로부터 도출되는데, 이들은 ACR이 생성될 때 SSA 시스템에 제공된다. 디바이스(예를 들면, 플래시 카드)가 RSA를 생성하는데 사용될 수 있거나 증명서 생성을 위해 다른 유형의 키 쌍 및 공개 키가 이출(exported)될 수 있는 PKI 기반의 인증은 제외하고, SSA 시스템은 전술한 자격증명서들을 정의, 분배 및 관리와는 무관하다. The entity's credentials correspond to the login algorithm and are used by the SSA to verify and authenticate the user. Examples of credentials may be a password / PIN-number for password authentication, an AES-key for AES authentication, and the like. The type / format of credentials (ie PIN, symmetric key, etc.) is defined and derived from the authentication mode, which is provided to the SSA system when the ACR is created. Except for PKI based authentication, where a device (e.g., flash card) can be used to generate an RSA or other types of key pairs and public keys can be exported for certificate generation, the SSA system described above. Credentials are not defined, distributed and managed.

허가 제어 레코드(PCR)Admission Control Record (PCR)

PCR은 SSA 시스템에 로그인하고 ACR의 인증 프로세스를 성공적으로 통과한 후에 실체에 무엇이 승인되지는지를 보여준다. 3가지 유형들의 허가 범주들로서, 파티션 및 키들에 대한 생성 허가들, 파티션들 및 키들에의 액세스 허가들, 및 실체-ACR 속성들에 대한 관리 허가들이 있다.The PCR shows what is approved for the entity after logging in to the SSA system and successfully passing the ACR's authentication process. There are three types of permission categories: creation permissions for partitions and keys, access permissions for partitions and keys, and administrative permissions for entity-ACR attributes.

파티션들에 액세스Access partitions

PCR의 이 절은 ACR 국면을 성공적으로 완료하였을 때 실체가 액세스할 수 있는 파티션들의 리스트(SSA 시스템에 제공된 이들의 ID들을 사용한)를 내포한다. 각각의 파티션에 대해서 액세스 유형은 기입국한 혹은 독출국한으로 제약될 수 있고 혹은 완전한 기입/액세스 권한들을 명시할 수도 있다. 이에 따라, 도 5에서 ACR#1은 파티션 #1이 아니라 파티션 #2에 액세스할 수 있다. PCR에 명시된 제약들은 SSA 파티션들 및 공개 파티션에 적용한다.This section of the PCR contains a list of partitions (using their IDs provided in the SSA system) that an entity can access when successfully completing the ACR phase. For each partition the access type may be restricted to write or read, or may specify full write / access rights. Accordingly, in FIG. 5, ACR # 1 may access partition # 2 instead of partition # 1. The constraints specified in the PCR apply to SSA partitions and public partitions.

공개 파티션은 SSA 시스템을 호스트하는 디바이스(예를 들면, 플래시 카드)에 정규(regular) 독출 및 기입 명령들에 의해서, 혹은 SSA 명령들에 의해서 액세스될 수 있다. 공개 파티션을 제약하는 허가를 갖고 루트 ACR(후술함)이 생성될 때, 이를 자신의 자식들에게 넘길 수 있다. 바람직하게 ACR은 공개 파티션에 액세스하는 것으로부터 정규 독출 및 기입 명령들을 제약할 수 있을 뿐이다. SSA 시스템에서 ACR들은 바람직하게 이들의 생성시에만 제약될 수 있다. 일단 ACR이 공개 파티션으로부터/에 독출/기입하는 허가를 갖게 되면, 바람직하게 ACR은 제거될 수 없다.The public partition can be accessed by regular read and write commands, or by SSA commands, to the device (eg, flash card) hosting the SSA system. When a root ACR (described below) is created with permission to constrain the public partition, it can be passed on to its children. Preferably the ACR can only restrict regular read and write commands from accessing the public partition. ACRs in an SSA system can preferably be constrained only at their generation. Once the ACR has permission to read / write from / to the public partition, preferably the ACR cannot be removed.

키 ID들에 액세스Access key IDs

PCR의 이 절은 ACR 정책들이 실체의 로그인 프로세스에 의해 충족되었을 때 실체가 액세스할 수 있는 키 ID들의 리스트(호스트에 의해 SSA 시스템에 제공된)에 연관된 데이터를 내포한다. 명시된 키 ID는 PCR에서 나타나는 파티션에 상주하는 파일/파일들에 연관된다. 키 ID들은 디바이스(예를 들면, 플래시 카드)에서 논리 주소들에 연관되지 않기 때문에, 하나보다 더 많은 파티션이 특정 ACR에 연관될 때, 파일들은 파티션들 중 하나에 있을 수 있다. PCR에 명시된 키 ID들은 각각, 상이한 한 세트의 액세스 권한들을 가질 수 있다. 키 ID들에 의해 가리켜진 데이터에 액세스하는 것은 기입국한 혹은 독출국한으로 제약될 수 있고 혹은 완전한 기입/독출 액세스 권한들을 명시할 수도 있다.This section of the PCR contains data associated with the list of key IDs (provided by the host to the SSA system) that an entity can access when ACR policies have been met by the entity's login process. The specified key ID is associated with the file / files that reside in the partition appearing in the PCR. Because key IDs are not associated with logical addresses in a device (eg, flash card), when more than one partition is associated with a particular ACR, the files may be in one of the partitions. The key IDs specified in the PCR may each have a different set of access rights. Accessing the data indicated by the key IDs may be restricted to write or read station or may specify full write / read access rights.

ACR 속성 관리(ACAM)ACR Property Management (ACAM)

이 절은 어떤 경우들에서 ACR의 시스템 속성들이 변경될 수 있는지를 기술한다.This section describes in which cases the system attributes of an ACR can be changed.

SSA 시스템에서 허용될 수 있는 ACAM 작업들은 다음과 같다.The ACAM tasks that can be allowed in the SSA system are as follows.

1. AGP들 및 ACR을 생성/삭제/업데이트1. Create / Delete / Update AGPs and ACR

2. 파티션들 및 키들을 생성/삭제2. Create / delete partitions and keys

3. 키들 및 파티션들에 액세스 권한들을 위임3. Delegate access rights to keys and partitions

부(father) ACR는 바람직하게는 ACAM 허가들을 편집할 수 없다. 이것은 바람직하게는 ACR의 삭제 및 재생성을 필요로 할 것이다. 또한, ACR에 의해 생성된 키 ID에 액세스 허가는 바람직하게, 제거될 수 없다.The father ACR preferably cannot edit ACAM permissions. This will preferably require the deletion and regeneration of the ACR. In addition, the access permission to the key ID generated by the ACR can preferably not be removed.

ACR은 다른 ACR들 및 AGP들을 생성하는 역량을 가질 수 있다. CR들을 생성하는 것은 이들에 이들의 생성자에 의해 소유된 ACAM 허가들 일부 혹은 모두를 위임하는 것을 의미할 수도 있다. ACR들을 생성하는 허가를 갖는다는 것은 다음 작업들에 대한 허가를 갖는다는 것을 의미한다.ACR may have the ability to create other ACRs and AGPs. Generating CRs may mean delegating some or all of the ACAM permissions owned by their creator to them. Having permission to create ACRs means having permission to the following operations.

1. 자식의 자격증명서들을 정의하고 편집한다 - 인증방법은 바람직하게는 생성하는 ACR에 의해 일단 설정되면 편집될 수 없다. 자격증명서들은 이미 자식에 대해 정의된 인증 알고리즘의 경계 내에서 변경될 수 있다.1. Define and edit the child's credentials-the authentication method is preferably not editable once it is set by the generating ACR. Credentials can be changed within the boundaries of the authentication algorithm already defined for the child.

2. ACR을 삭제한다.2. Delete the ACR.

3. 생성하는 허가를 자식 ACR에 위임한다(이에 따라 손자를 갖는다).3. Delegate permission to create to child ACR (accordingly has grandchildren).

다른 ACR들을 생성하는 허가들을 가진 ACR은 이것이 생성하는 ACR들을 언블록(unblock) 허가를 위임하는 허가를 갖는다(비록 아마도 ACR들을 언블록하는 허가를 갖고 있지 않을지라도). 부(father) ACR은 자식 ACR에 그의 언블록커(unbloker)에의 참조를 배치할 것이다.An ACR with permissions to create other ACRs has permission to delegate unblock permissions to the ACRs it creates (though probably not having permission to unblock ACRs). The father ACR will place a reference to his unbloker in the child ACR.

부(father) ACR는 자신의 자식 ACR을 삭제하는 허가를 갖는 유일한 ACR이다. ACR이 자신이 생성한 저 레벨의 ACR을 삭제할 때, 이 저 레벨 ACR이 만들어낸 모든 ACR들도 자동적으로 삭제된다. ACR이 삭제될 때 이것이 생성한 모든 키 ID들 및 파티션들은 삭제된다.A father ACR is the only ACR that has permission to delete its child ACR. When ACR deletes a low level ACR that you create, all ACRs produced by this low level ACR are also deleted automatically. When the ACR is deleted, all key IDs and partitions it creates are deleted.

ACR이 이 자신의 레코드를 업데이트할 수 있게 되는 2가지 예외들이 있다.There are two exceptions that allow the ACR to update its own record.

1. 생성자 ACR에 의해 설정될지라도, 패스워드들/PIN들은 이들을 포함하는 ACR에 의해서만 업데이트될 수 없다.1. Although set by the creator ACR, passwords / PINs cannot be updated only by the ACR containing them.

2. 루트 ACR은 자신 및 이것이 상주되는 ACP를 삭제할 수도 있다.2. The Root ACR may delete itself and the ACP in which it resides.

액세스 권한들을 키들 및 파티션들에 위임Delegate access rights to keys and partitions

ACR들 및 이들의 AGP들은 루트 AGP 및 이 내에 ACR들이 나무의 맨 위(예를 들면, 도 6에서 루트 AGP들(130, 132))에 있는 계층 나무들에 조립된다. SSA 시스템에 몇 개의 AGP 나무들이 서로간에 완전히 분리될지라도 이들이 있을 수 있다. AGP 내 ACR은 이의 키들에의 액세스 허가들을 이 ACR이 내에 있는 동일 AGP 내 모든 ACR들에, 그리고 이들에 의해 생성된 모든 ACR들에 위임할 수 있다. 키들을 생성하는 허가는 바람직하게는 키들을 사용하기 위해 액세스 허가들을 위임하는 허가를 포함한다.ACRs and their AGPs are assembled to the root AGP and hierarchical trees within which the ACRs are at the top of the tree (eg, root AGPs 130, 132 in FIG. 6). There may be some AGP trees in the SSA system even though they are completely separated from each other. An ACR in an AGP may delegate access permissions to its keys to all ACRs in the same AGP in which this ACR resides, and to all ACRs created by them. The permission to generate the keys preferably includes permission to delegate access permissions to use the keys.

키들에의 허가들은 3가지 범주들로 분할된다.Authorizations to the keys are divided into three categories.

1. 액세스 - 이것은 키에 대한 액세스 허가들, 즉 독출, 기입을 정의한다.1. Access-This defines the access permissions for the key, ie read, write.

2. 소유권 - 키를 생성한 ACR은 정의에 의해 그의 소유자이다. 이 소유권은 한 ACR에서 다른 ACR로 위임될 수 있다(이들이 동일 AGP 혹은 자식 AGP에 있다면). 키의 소유권은 키에 위임 허가들뿐만 아니라 이를 삭제하는 허가를 제공한다.2. Ownership-The ACR that generated the key is, by definition, its owner. This ownership can be delegated from one ACR to another (if they are in the same AGP or child AGP). Ownership of a key gives the key permission to delete it as well as delegation permissions.

3. 액세스 권한 위임 - 이 허가는 ACR이 소유하는 권한들을 ACR이 위임할 수 있게 한다.3. Delegation of Access-This permission allows ACR to delegate the rights owned by ACR.

ACR은 자신이 행할 액세스 허가들을 갖는 다른 파티션들 뿐만 아니라 자신이 생성한 파티션들에 액세스 허가들을 위임할 수 있다.The ACR can delegate access permissions to partitions it creates as well as other partitions that have access permissions to it.

허가 위임은 파티션들의 이름들 및 키 ID들을 지정된 ACR의 PCR에 추가함으로써 행해진다. 키 액세스 허가들을 위임하는 것은 키 ID에 의해서 혹은 액세스 허 가가 위임하는 ACR의 모든 생성된 키들에 대한 것임을 표명함으로써 될 수 있다.Authorization delegation is done by adding the names and key IDs of the partitions to the PCR of the designated ACR. Delegating key access permissions may be by key ID or by stating that the access permission is for all generated keys of the ACR to which it is delegated.

ACR들의 블록킹 및 언블록킹Blocking and Unblocking of ACRs

ACR은 시스템에 실체의 ACR 인증 프로세스가 비성공적일 때 증분하는 블록킹 카운터를 구비할 수 있다. 비성공 인증들의 어떤 최대 수(MAX)에 도달되었을 때, ACR은 SSA 시스템에 의해 블록킹될 것이다.ACR may have a blocking counter in the system that increments when the entity's ACR authentication process is unsuccessful. When a certain maximum number of unsuccessful authentications (MAX) has been reached, the ACR will be blocked by the SSA system.

블록킹된 ACR은 블록킹된 ACR에 의해 참조된, 또 다른 ACR에 의해 언블록킹될 수 있다. 블록킹 ACR에의 참조는 이의 생성자에 의해 설정된다. *언블록킹 ACR은 블록킹된 ACR의 생성자와 동일한 AGP에 있는 것이 바람직하고 "언블록킹" 허가를 갖는다.The blocked ACR may be unblocked by another ACR, referenced by the blocked ACR. The reference to the blocking ACR is set by its constructor. * Unblocking ACR is preferably in the same AGP as the creator of the blocked ACR and has a "unblocking" permission.

시스템 내 어떤 다른 ACR도 블록킹된 ACR을 언블록킹k할 수 없다. ACR은 블록킹 카운터로, 그러나 언블록커 ACR 없이 구성될 수도 있다. 이 경우, 이 ACR이 블록킹되면 이것은 언블록킹될 수 없다.No other ACR in the system can unblock the blocked ACR. ACR may be configured as a blocking counter, but without an unblocker ACR. In this case, if this ACR is blocked it cannot be unblocked.

루트 AGP : 애플리케이션 데이터베이스 생성Root AGP: Create Application Database

SSA 시스템은 복수의 애플리케이션들을 취급하고 이들 각각의 데이터를 분리하게 설계된다. AGP 시스템의 나무 구조는 애플리케이션 특유의 데이터를 확인하고 분리하는데 사용되는 주 도구이다. 루트 AGP는 애플리케이션 SSA 데이터베이스 나무의 정점에 있고 다소 다른 거동 규칙들을 고수한다. 몇 개의 루트 AGP들이 SSA 시스템에 구성될 수 있다. 2개의 루트 AGP들(130, 132)이 도 6에 도시되었다. 자명하게 더 적은 혹은 더 많은 AGP들이 사용될 수 있고 이들은 이 발명의 범위 내에 있다.The SSA system is designed to handle multiple applications and separate their respective data. The tree structure of the AGP system is the main tool used to identify and isolate application-specific data. The root AGP is on top of the application SSA database tree and adheres to somewhat different behavior rules. Several root AGPs can be configured in the SSA system. Two root AGPs 130, 132 are shown in FIG. 6. Obviously fewer or more AGPs can be used and they are within the scope of this invention.

새로운 애플리케이션에 대해 디바이스(예를 들면, 플래시 카드)에 등록하는 것 및/또는 디바이스에 대해 새로운 애플리케이션들의 자격증명서 발행은 새로운 AGP/ACR 나무를 디바이스에 추가하는 프로세스를 통해 행해진다.Enrolling in a device (eg flash card) for a new application and / or issuing credentials of new applications for the device is done through the process of adding a new AGP / ACR tree to the device.

SSA 시스템은 3가지 서로 다른 모드들의 루트 AGP 생성(루트 AGP의 모든 ACR들 및 이들의 허가들뿐만 아니라)을 지원한다.The SSA system supports three different modes of root AGP generation (as well as all ACRs of the root AGP and their permissions).

1. 개방(Open): 어떠한 종류의 인증도 요구함이 없이 임의의 사용자 혹은 실체, 혹은 시스템 ACR(후술함)를 통해 인증된 사용자들/실체들은 새로운 루트 AGP를 생성할 수 있다. 개방 모드는 어떠한 보안 조치들이 없이도 루트 AGP들을 생성할 수 있게 하는 반면 모든 데이터 전송은 개방채널로 행해지거나(즉, 발행국의 보안 환경에서), 시스템 ACR 인증(즉, OTA(Over The Air) 및 사후 발행 절차들)을 통해 수립된 보안 채널을 통해 행해진다.1. Open: Any user or entity, or users / entities authenticated via system ACR (described below), can create a new root AGP without requiring any kind of authentication. Open mode allows the creation of root AGPs without any security measures, while all data transfers are done in the open channel (ie in the issuing country's security environment), system ACR authentication (ie, Over The Air) and post- Through a secure channel established through issuance procedures).

시스템 ACR이 구성되지 않고(이것은 선택적 특징이다) 루트 AGP 생성 모드가 개방으로 설정된다면, 개방 채널 선택만이 사용될 수 있다.If system ACR is not configured (this is an optional feature) and the root AGP generation mode is set to open, only open channel selection can be used.

2. 제어(Controlled): 시스템 ACR을 통해 인증된 실체들만이 새로운 루트 AGP를 생성할 수 있다. SSA 시스템은 시스템 ACR이 구성되지 않는다면 이 모드로 설정될 수 없다.2. Controlled: Only entities authorized through the system ACR can create a new root AGP. The SSA system cannot be set to this mode unless system ACR is configured.

3. 록(Locked): 루트 AGP들의 생성은 비활성화되고 어떠한 추가의 루트 AGP들도 시스템에 추가될 수 없다.3. Locked: Creation of root AGPs is disabled and no additional root AGPs can be added to the system.

2개의 SSA 명령들이 이 특징을 제어한다(이들 명령들은 인증없이 임의의 사용자/실체가 사용할 수 있다):Two SSA commands control this feature (these commands can be used by any user / entity without authentication):

1. 방법 구성 명령 - 3개의 루트 AGP 생성 모드들 중 임의의 하나를 사용하기 위해서 SSA 시스템을 구성하는데 사용된다. 다음 모드 변경들만이 허용된다: 개방 -> 제어(Controlled), 제어(Controlled) -> 록(Locked) (즉, SSA 시스템이 현재 제어(Controlled)로서 구성된다면, 이것은 록(Locked)으로 변경될 수 있을 뿐이다).1. Method Configuration Command-Used to configure the SSA system to use any one of the three root AGP creation modes. Only the following mode changes are allowed: Open-> Controlled, Controlled-> Locked (ie if the SSA system is currently configured as Controlled, it can be changed to Locked). Only).

2. 방법 구성 록(lock) 명령 - 방법 구성 명령을 비활성화하고 현재 선택된 방법을 영구히 록 하는데 사용된다.2. Method configuration lock command-Used to deactivate the method configuration command and permanently lock the currently selected method.

루트 AGP가 생성될 때, 이것은 이의 ACR들을 생성하고 구성할 수 있게 하는(루트 AGP의 생성에 적용된 것과 동일한 액세스 제약들을 사용하여) 특별한 초기화 모드이다. 루트 AGP 구성 프로세스의 끝에서, 실체가 이를 동작모드로 명백히 전환할 때, 현존의 ACR들은 더 이상 업데이트될 수 없고 추가의 ACR들이 더 이상 생성될 수 없다.When a root AGP is created, this is a special initialization mode that allows the creation and configuration of its ACRs (using the same access constraints as applied to the creation of the root AGP). At the end of the root AGP configuration process, when the entity explicitly switches it to the mode of operation, existing ACRs can no longer be updated and additional ACRs can no longer be created.

일단 루트 AGP가 표준 모드에 놓여지면 루트 AGP를 삭제하는 허가가 할당된 이의 ACR들 중 하나를 통해 시스템에 로그인함으로써만 삭제될 수 있다. 이것은 특별한 초기화 모드 외에도, 루트 AGP의 또 다른 예외이며, 다음 나무 레벨에 AGP들과는 반대로, 자신의 AGP를 삭제하는 허가를 가진 ACR를 내포할 수 있는 유일한 AGP인 것이 바람직하다.Once the root AGP is placed in standard mode, the permission to delete the root AGP can only be deleted by logging into the system through one of its assigned ACRs. This is another exception to the root AGP, in addition to the special initialization mode, and is preferably the only AGP that can contain an ACR with permission to delete its own AGP, as opposed to AGPs at the next tree level.

루트 ACR과 표준 ACR간에 세 번째 및 마지막 차이는 파티션들을 생성하고 삭제하는 허가를 가질 수 있는 시스템 내 유일한 ACR이라는 것이다.The third and final difference between the root ACR and the standard ACR is that it is the only ACR in the system that can have permission to create and delete partitions.

SSA 시스템 ACRSSA System ACR

시스템 ACR은 다음 두 SSA 동작들을 위해 사용될 수 있다.System ACR can be used for the following two SSA operations.

1. 적대적 환경들 내에서 보안 채널의 보호 하에 ACR/AGP 나무를 생성한다.1. Create ACR / AGP trees under the protection of secure channels in hostile environments.

2. SSA 시스템을 호스트하는 디바이스를 확인하고 인증한다.2. Identify and authenticate the device hosting the SSA system.

SSA에 단지 하나의 시스템 ACR만이 있는 것이 바람직할 수 있고 일단 정의되면 이것은 바람직하게는 변경될 수 없다. 시스템 ACR를 생성할 때 시스템 인증에 대한 필요성은 없으며, SSA 명령만이 필요하다. 시스템 ACR 생성 특징은 비활성화될 수 있다(루트 AGP 생성 특징과 유사하게). 시스템 ACR이 생성된 후에, 시스템 ACR 생성 명령은 바람직하게 단지 한 시스템 ACR만이 허용되기 때문에 효과가 없다.It may be desirable to have only one system ACR in the SSA and once defined it is preferably unchangeable. There is no need for system authentication when creating a system ACR, only SSA commands. The system ACR generation feature can be deactivated (similar to the root AGP generation feature). After the system ACR is generated, the system ACR create command is preferably ineffective because only one system ACR is allowed.

생성 프로세스에 있는 동안, 시스템 ACR은 동작하지 않는다. 종료되었을 때, 시스템 ACR이 생성되고 시작할 준비가 되었음을 나타내는 특별 명령이 발행될 필요가 있다. 이때 이후에 시스템 ACR은 바람직하게는 업데이트 혹은 대체될 수 없다.While in the creation process, the system ACR does not work. When finished, a special command needs to be issued to indicate that the system ACR has been created and ready to start. Thereafter, the system ACR is preferably not updated or replaced.

시스템 ACR은 SSA에서 루트 ACR/AGP를 생성한다. 호스트가 이에 만족되어 이를 블록킹하도록 하는 시간까지 루트 레벨을 추가/변경하는 허가를 갖는다. 루트 AGP 블록킹은 근본적으로 시스템 ACR에의 연결을 끊고 부정방지(temper proof)되게 한다. 이때 어떤 것도 루트 AGP 및 이 내에 ACR들을 변경/편집할 수 없다. 이것은 SSA 명령을 통해 행해진다. 루트 AGP들의 생성을 비활성화하는 것은 영속적 효과를 가지며 반대로 할 수 없다. 시스템 ACR을 수반하는 위의 특징들이 도 7에 도시되었다. 시스템 ACR은 3개의 서로 다른 루트 AGP들을 생성하는데 사용된다. 이들이 생성된 후 어떤 시간에, 도 7에 루트 AGP들에 시스템 ACR을 연결하는 점선들로 나타 낸 바와 같이, 루트 AGP들을 시스템 ACR로부터 블록킹하고 그럼으로써 루트 AGP 생성 특징을 비활성화하기 위해서 SSA 명령이 호스트로부터 보내진다. 이것은 3개의 루트 AGP들을 부정방지되게 한다. 3개의 루트 AGP들은 루트 AGP들이 차단되기 전 혹은 후에 3개의 개별적 나무들을 형성하기 위해 자식 AGP들을 생성하는데 사용될 수 있다. System ACR creates root ACR / AGP in SSA. It has permission to add / change the root level until the time that the host is satisfied with it and blocks it. Root AGP blocking essentially disconnects from the system ACR and makes it tempor proof. Nothing can change / edit the root AGP and ACRs within it. This is done via an SSA command. Disabling the creation of root AGPs has a permanent effect and cannot be reversed. The above features involving the system ACR are shown in FIG. 7. System ACR is used to create three different root AGPs. At some time after they are created, the SSA command is executed by the SSA command to block root AGPs from the system ACR and thereby disable the root AGP creation feature, as indicated by the dotted lines connecting the system ACR to the root AGPs in FIG. Is sent from This allows three root AGPs to be tampered with. Three root AGPs can be used to create child AGPs to form three individual trees before or after the root AGPs are blocked.

위에 기술된 특징들은 콘텐트를 구비한 보안 제품들을 구성함에 있어 콘텐트 소유자에게 큰 융통성을 제공한다. 보안 제품들은 "발행(Issued)"될 필요가 있다. 발행은 디바이스가 호스트를 확인하고 그 반대로도 할 수 있게 하는 확인 키들을 설치하는 프로세스이다. 디바이스(예를 들면, 플래시 카드)를 확인하는 것은 호스트가 자신의 비밀들을 그에 신뢰할 수 있는지를 판단할 수 있게 한다. 반면, 호스트를 확인하는 것은 호스트가 허용되는 경우에만 디바이스가 보안 정책들(특정 호스트 명령을 승인하고 실행하는)을 시행할 수 있게 한다.The features described above provide great flexibility for content owners in constructing security products with content. Security products need to be "issued". Issuance is the process of installing verification keys that allow the device to verify the host and vice versa. Identifying the device (eg flash card) allows the host to determine if it can trust its secrets. Identifying a host, on the other hand, allows the device to enforce security policies (that accept and execute specific host commands) only if the host is allowed.

복수의 애플리케이션들에 서비스하게 설계된 제품들은 몇 개의 확인 키들을 가질 것이다. 제품은 "사전에 발행" -출하전에 제조 동안 저장된 키들- 될 수 있고, 혹은 "사후에 발행" -출하 후에 새로운 키들이 추가된다- 될 수 있다. 사후 발행의 경우, 메모리 디바이스(예를 들면, 메모리 카드)는 애플리케이션들을 디바이스에 추가하는 것이 허용된 실체들을 확인하는데 사용되고 있는 어떤 종류의 마스크 혹은 디바이스 레벨 키들을 내장할 필요가 있다.Products designed to service multiple applications will have several verification keys. The product may be "pre-issued"-keys stored during manufacture prior to shipment-or "post-issue"-new keys may be added after shipment. In the case of post-issue, the memory device (eg, memory card) needs to embed some kind of mask or device level keys that are being used to identify entities that are allowed to add applications to the device.

위에 기술된 특징들은 제품이 사후 발행을 활성화/비활성화하게 구성될 수 있게 한다. 또한, 사후 발행 구성은 출하 후에 보안적으로 행해질 수 있다. 디바이 스는 위에 기술된 마스터 혹은 디바이스 레벨 키들 외에도 그에 어떠한 키들도 없이 소매 제품으로서 구입되고, 이어서 추가의 사후 발행 애플리케이션들을 활성화하거나 이들을 비활성화하게 새로운 소유자에 의해 구성될 수도 있다. The features described above allow the product to be configured to enable / disable post publishing. In addition, post-issue configuration can be done securely after shipment. The device may be purchased as a retail product without any keys besides the master or device level keys described above, and then configured by the new owner to activate or deactivate additional post-issue applications.

이에 따라, 시스템 ACR 특징은 위에 목적들을 달성하는 능력을 제공한다:Accordingly, the system ACR feature provides the ability to achieve the above goals:

- 시스템 ACR이 없는 메모리 디바이스들은 애플리케이션들의 무제한의 제어되지 않은 추가를 허용할 것이다.Memory devices without system ACR will allow unlimited uncontrolled addition of applications.

- 시스템 ACR이 없는 메모리 디바이스들은 시스템 ACR 생성을 비활성화하게 구성될 수 있고, 이는 새로운 애플리케이션들의 추가를 제어할 방법이 없음을 의미한다(새로운 루트 AGP를 생성하는 특징도 비활성화되지 않는다면)Memory devices without system ACR can be configured to disable system ACR creation, which means that there is no way to control the addition of new applications (unless the feature of creating a new root AGP is also disabled).

- 시스템 ACR을 가진 메모리 디바이스들은 시스템 ACR 자격증명서를 사용하여 인증 절차를 통해 수립하기 위한 보안 채널을 통해 애플리케이션들의 단지 제어된 추가만을 허용할 것이다.Memory devices with system ACR will only allow controlled addition of applications via a secure channel to establish through an authentication procedure using system ACR credentials.

- 시스템 ACR을 가진 메모리 디바이스들은 애플리케이션이 추가되기 전 혹은 추가된 후에, 애플리케이션 추가 특징을 비활성화하게 구성될 수 있다.Memory devices with a system ACR may be configured to deactivate the application addition feature before or after the application is added.

키 ID 리스트List of key IDs

특정 ACR 요청마다 키 ID들이 생성되는데, 그러나, 메모리 시스템(10)에서, 이들은 SSA 시스템에 의해서 단독으로 사용된다. 키 ID가 생성될 때 생성하는 ACR에 의해 혹은 이에 다음 데이터가 제공된다.Key IDs are generated per specific ACR request, but in memory system 10, they are used solely by the SSA system. The following data is provided by or to the ACR that generates when the key ID is generated.

1. 키 ID. ID는 호스트를 통해 실체에 의해 제공되며 키와, 모든 후 독출 혹은 기입 액세스들에서 키를 사용하여 암호화 혹은 해독되는 데이터를 참조하는데 사용된다.1. Key ID. The ID is provided by the entity through the host and is used to refer to the key and data that is encrypted or decrypted using the key in all subsequent read or write accesses.

2. 키 사이퍼 및 데이터 무결성 모드(위에서 그리고 이하 설명되는 바와 같이 차단, 체인, 및 해시 모드들).2. Key cipher and data integrity modes (blocking, chaining, and hash modes as described above and below).

호스트에 의해 제공된 속성들 외에도, 다음 데이터가 SSA 시스템에 의해 유지된다.In addition to the attributes provided by the host, the following data is maintained by the SSA system.

1. 키 ID 소유자. 소유자인 ACR의 ID. 키 ID가 생성되고 생성자 ACR이 그의 소유자일 때, 그러나, 키 ID 소유권은 또 다른 ACR에 넘겨질 수 있다. 바람직하게, 키 ID 소유자만이 키 ID의 소유권을 넘기고 키 ID를 위임하는 것이 허용된다. 연관된 키에의 액세스 허가를 위임하는 것, 및 이들 권한들을 취소하는 것은 키 ID 소유자 혹은 위임 허가들이 할당된 그외 어떤 다른 ACR에 의해 관리될 수 있다. 이들 동작들 중 어느 것을 행사하려는 시도가 있을 때는 언제나, SSA 시스템은 요청하는 ACR이 권한이 있을 경우에만 그 시도를 승인할 것이다.1. Key ID owner. ID of the ACR that is the owner. When a key ID is generated and the creator ACR is its owner, however, key ID ownership can be passed on to another ACR. Preferably, only the key ID owner is allowed to transfer ownership of the key ID and delegate the key ID. Delegating access to an associated key, and revokeing these rights, can be managed by the key ID owner or some other ACR assigned delegation permissions. Whenever there is an attempt to exercise any of these actions, the SSA system will only approve the attempt if the requesting ACR is authorized.

2. CEK. 이것은 키 ID에 연관된 혹은 이에 의해 가리켜진 콘텐트를 사이퍼하는데 사용되는 키를 갖는 CEK이다. 키값은 SSA 시스템에 의해 발생된 128 비트 AES 랜덤 키일 수 있다.2. CEK. This is a CEK with a key that is used to sipher the content associated with or pointed to by the key ID. The key value may be a 128 bit AES random key generated by the SSA system.

3. MAC 및 IV 값들. 체인 블록 사이퍼(CBC) 암호화 알고리즘들에서 사용되는 동적 정보(메시지 인증 코드들 및 초기화 벡터들).3. MAC and IV values. Dynamic information (message authentication codes and initialization vectors) used in chain block cipher (CBC) encryption algorithms.

SSA의 여러 특징들이 도 8a 내지 도 16에 흐름도들을 참조하여 도시되었으며, 단계의 좌측에 'H'는 동작이 호스트에 의해 수행됨을 의미하고, 'C'는 동작이 카드에 의해 수행됨을 의미한다. 이들 SSA 특징들이 메모리 카드들을 참조하여 예 시되어지만, 이들 특징들은 다른 물리적 형태들의 메모리 디바이스들에도 적용함이 이해될 것이다. 시스템 ACR을 생성하기 위해서, 호스트는 메모리 디바이스(10) 내 SSA에 시스템 ACR 생성 명령을 발행한다(블록 202). 디바이스(10)는 시스템 ACR이 이미 존재하는지 체크함으로써 응답한다(블록 204, 마름모 206). 이것이 이미 존재한다면, 디바이스(10)는 실패를 리턴하고 종료한다(사각형 208). 존재하지 않는다면, 메모리(10)는 시스템 ACR 생성이 허용되는 알기 위해 체크하고(마름모 210), 허용되지 않는다면 실패 상태를 리턴한다(블록 212). 이에 따라, 디바이스가 이를테면 어떠한 시스템 ACR도 필요하지 않도록 필요한 보안 특징들이 기결정되어 있는 경우에서와 같이, 디바이스 발행자가 시스템 ACR의 생성을 허용하지 않는 경우들이 있을 수 있다. 이것이 허용된다면, 디바이스(10)는 OK 상태를 리턴하고 호스트로부터 시스템 ACR 자격증명서들을 대기한다(블록 214). 호스트는 SSA 상태와, 디바이스(10)가 시스템 ACR의 생성이 허용됨을 표시되었는지를 체크한다(블록 216 및 마름모 218). 생성이 허용되지 않거나 시스템 ACR이 이미 존재한다면, 호스트는 중지한다(사각형 220). 디바이스(10)가 시스템 ACR의 생성이 허용됨을 표시하였다면, 호스트는 이의 로그인 자격증명서를 정의하는 SSA 명령을 발행하고 이를 디바이스(10)에 보낸다(블록 222). 디바이스(10)는 수신된 자격증명서로 시스템 ACR 레코드를 업데이트하고 OK 상태를 리턴한다(블록 224). 이 상태 신호에 응하여, 호스트는 시스템 ACR이 준비된 것을 나타내는 SSA 명령을 발행한다(블록 226). 디바이스(10)는 시스템 ACR이 업데이트되거나 대체될 수 없도록 이 시스템 ACR을 록 함으로써 응답한다(블록 228). 이것은 시스템 ACR 및 호스트에 디바이스(10)를 확인하 기 위한 그의 신원의 특징들을 록 한다.Several features of the SSA are shown with reference to the flow charts in FIGS. 8A-16, with 'H' on the left side of the step meaning that the operation is performed by the host and 'C' means that the operation is performed by the card. While these SSA features are illustrated with reference to memory cards, it will be understood that these features also apply to other physical forms of memory devices. To generate a system ACR, the host issues a system ACR create command to the SSA in the memory device 10 (block 202). The device 10 responds by checking if a system ACR already exists (block 204, rhombus 206). If this already exists, device 10 returns a failure and terminates (square 208). If not present, memory 10 checks to see if system ACR generation is allowed (diamond 210) and returns a failure status if not allowed (block 212). Accordingly, there may be cases where the device issuer does not allow the generation of a system ACR, such as when the required security features are predetermined such that the device does not need any system ACR. If this is allowed, the device 10 returns an OK status and waits for system ACR credentials from the host (block 214). The host checks the SSA status and whether the device 10 has indicated that generation of the system ACR is allowed (block 216 and diamond 218). If creation is not allowed or the system ACR already exists, the host stops (square 220). If device 10 indicates that generation of a system ACR is allowed, the host issues an SSA command that defines its login credentials and sends it to device 10 (block 222). The device 10 updates the system ACR record with the received credentials and returns an OK status (block 224). In response to this status signal, the host issues an SSA command indicating that the system ACR is ready (block 226). The device 10 responds by locking this system ACR such that the system ACR cannot be updated or replaced (block 228). This locks the system ACR and its identity to the host to identify the device 10.

새로운 나무들(새로운 루트 AGP들 및 ACR)을 생성하기 위한 절차는 이들 기능들이 디바이스에 구성된 방법에 의해 결정된다. 도 9는 절차들을 설명한다. 호스트(24) 및 메모리 시스템(10) 둘 다 이를 따른다. 새로운 루트 AGP를 추가하는 것이 함께 비활성화된다면, 새로운 루트 AGP들은 추가될 수 없다(마름모 246). 이것이 활성화되었지만 시스템 ACR이 필요하다면, 호스트는 시스템 ACR를 통해 인증하고 루트 AGP 생성 명령을 발행하기에 앞서(블록 254) 보안 채널(마름모 250, 블록 252)을 확립한다. 시스템 ACR이 필요하지 않다면(마름모 248), 호스트(24)는 인증없이 루트 AGP 생성 명령을 발행하고 블록 254로 진행할 수 있다. 시스템 ACR이 존재한다면, 호스트는 이것이 필요하지 않을지라도 이를 사용할 수 있다(흐름도에 도시되지 않음). 디바이스(예를 들면, 플래시 카드)는 기능이 비활성화된다면 새로운 루트 AGP를 생성하는 어떤 시도든 거절할 것이며 시스템 ACR이 필요하다면(마름모들 256 및 250) 인증없이 새로운 루트 AGP를 생성하는 시도를 거절할 것이다. 블록 254에서 새로이 생성된 AGP 및 ACR은 이제 동작모드로 전환되어 이러한 AGP들 내 ACR들은 업데이트 아니면 변경될 수 없고, 어떠한 ACR들도 이들에 추가될 수 없다(블록 256). 이어서 시스템은 추가의 루트 AGP들이 생성될 수 없도록(블록 258), 선택적으로 록 된다. 점선 박스(258)는 이 단계가 선택적 단계임을 나타내는 관례이다. 이 출원의 도면들의 흐름도들에서 점선들로 된 모든 박스들은 선택적 단계들이다. 이것은 적법의 콘텐트를 가진 진본 메모리 디바이스를 모사할 수 있는 그외 불법 목적들을 위한 디바이스(10)의 사용을 콘텐트 소유자가 블록킹할 수 있게 한 다.The procedure for creating new trees (new root AGPs and ACR) is determined by how these functions are configured on the device. 9 describes the procedures. Both host 24 and memory system 10 follow this. If adding a new root AGP is disabled together, new root AGPs cannot be added (diamond 246). If this is enabled but a system ACR is needed, the host establishes a secure channel (diamond 250, block 252) prior to authenticating through the system ACR and issuing a root AGP creation command (block 254). If system ACR is not needed (diamond 248), host 24 may issue a root AGP creation command without authentication and proceed to block 254. If a system ACR is present, the host can use it even if it is not needed (not shown in the flowchart). The device (e.g. flash card) will refuse any attempt to create a new root AGP if the feature is disabled and will reject any attempt to create a new root AGP without authentication if system ACR is required (diamonds 256 and 250). will be. The newly created AGP and ACR in block 254 are now switched to the operating mode so that ACRs in these AGPs can not be updated or changed, and no ACRs can be added to them (block 256). The system is then optionally locked so that additional root AGPs cannot be created (block 258). The dashed box 258 is a convention indicating that this step is an optional step. All boxes in dotted lines in the flow charts of the drawings of this application are optional steps. This allows the content owner to block the use of the device 10 for other illegal purposes that can simulate an authentic memory device with legitimate content.

ACR들(위에 기술된 바와 같이 루트 AGP에 ACR들 이외의)을 생성하기 위해서, 도 10에 도시된 바와 같이 ACR를 생성하는 권한을 갖는 임의의 ACR부터 시작할 수 있다(블록 270). 실체는 진입점 ACR 신원과, 생성하기를 원하는 모든 필요한 속성들과 함께 ACR을 제공함으로써 호스트(24)를 통해 진입하려고 시도할 수 있다(블록 272). SSA는 ACR 신원과 일치에 대해서 그리고 이러한 신원을 가진 ACR이 ACR을 생성하는 허가를 갖고 있는지(마름모 274)에 대해 체크한다. 요청이 권한이 부여된 것으로 검증된다면, 디바이스(10) 내 SSA는 ACR를 생성한다(블록 276).In order to create ACRs (other than ACRs in the root AGP as described above), it may begin with any ACR with the right to create an ACR as shown in FIG. 10 (block 270). The entity may attempt to enter through the host 24 by providing an ACR with an entry point ACR identity and all necessary attributes that it wishes to create (block 272). The SSA checks for conformity with the ACR identity and whether the ACR with this identity has permission to create an ACR (diamond 274). If the request is verified to be authorized, the SSA in device 10 generates an ACR (block 276).

도 11은 도 10의 방법을 사용하여 보안 애플리케이션들에서 유용한 나무를 도시한 2개의 AGP들을 도시한다. 이에 따라, 마케팅 AGP에서 신원 m1을 갖는 ACR은 ACR을 생성하는 허가를 갖는다. ACR m1은 키 ID "마케팅 정보"에 연관된 데이터 및 키 ID "가격 리스트"에 연관된 데이터를 독출 및 기입하기 위한 키를 사용할 허가도 갖는다. 도 10의 방법을 사용하여, 키 ID "가격 리스트"에 연관된 가격 데이터에 액세스하기 위한 키에 독출국한 허가는 있지만 키 ID "마케팅 정보"에 연관된 데이터에 액세스하는데 필요한 키에 대한 독출 허가는 없는 s1 및 s2인 2개의 ACR들을 가진 판매 AGP를 생성한다. 이렇게 하여, ACR들 s1 및 s2를 가진 실체들은 독출만 할 수 있고 가격 데이터를 변경할 수 없으며, 마케팅 데이터에 액세스할 수 없을 것이다. 반면, ACR m2는 ACR들을 생성할 허가는 없으며 키 ID "가격 리스트"에 연관되고 그리고 키 ID "마케팅 정보"에 연관된 데이터에 액세스하기 위한 키들에의 독출국한 허가를 갖는다.FIG. 11 shows two AGPs showing a tree useful in security applications using the method of FIG. 10. Accordingly, an ACR with identity m1 in marketing AGP has permission to create an ACR. The ACR m1 also has permission to use the key for reading and writing the data associated with the key ID "marketing information" and the data associated with the key ID "price list". Using the method of FIG. 10, there is permission to read-out a key for accessing price data associated with key ID "price list" but no read permission for the key required to access data associated with key ID "marketing information". Create a sales AGP with two ACRs, s1 and s2. In this way, entities with ACRs s 1 and s 2 can only read, cannot change price data, and cannot access marketing data. ACR m2, on the other hand, has no permission to create ACRs and has a read-out permission to keys associated with the key ID "price list" and to access data associated with the key ID "marketing information".

이에 따라, 액세스 권한들은 m1이 가격 데이터를 독출하는 권한들을 s1 및 s2에 위임하는 위에 설명된 방식으로 위임될 수 있다. 이것은 대형 마케팅 및 판매 그룹들이 연루되는 경우 특히 유용하다. 그러나 하나 혹은 소수의 판매원들이 있는 경우, 도 10의 방법을 사용할 필요는 없을 수 있다. 대신에, 도 12에 도시된 바와 같이, 액세스 권한들이 ACR에 의해 동일 AGP 내 낮은 혹은 동일 레벨의 것에 위임될 수 있다. 먼저, 실체는 위에 기술된 방식으로 호스트를 통해 나무에 ACR를 명시함으로써(블록 280) 이러한 AGP에 대한 나무에 진입한다. 다음에 호스트는 ACR 및 이에 위임할 권한들을 명시할 것이다. SSA는 이러한 ACR을 위한 나무(들)와, 명시된 또 다른 ACR에 권한들을 위임할 허가를 ACR이 갖고 있는지를(마름모 282) 체크한다. 그러하다면, 권한들이 위임되고(블록 284), 그렇지 않다면 중지한다. 결과가 도 13에 도시되었다. 이 경우 ACR m1은 ACR s1에 독출 허가를 위임하는 허가를 가지므로, s1은 위임 후에 가격 데이터에 액세스하기 위해 키를 사용할 수 있을 것이다. 이것은 m1이 가격 데이터에 액세스할 동일 혹은 더 큰 권한들과 그와 같이 위임할 허가를 갖고 있다면 수행될 수 있다. 일 실시예에서, m1은 위임 후에 그의 액세스 권한들을 보유한다. 바람직하게, 액세스 권한들은 이를테면 제한된 시간, 제한된 수의 액세스들 등과 같은 제약된 조건들 하에서 위임될 수 있다.Accordingly, access rights can be delegated in the manner described above where m1 delegates to s1 and s2 the rights to read the price data. This is particularly useful when large marketing and sales groups are involved. However, if there are one or a few salespeople, it may not be necessary to use the method of FIG. Instead, as shown in FIG. 12, access rights may be delegated by the ACR to the lower or the same level in the same AGP. First, the entity enters the tree for this AGP by specifying the ACR in the tree through the host in the manner described above (block 280). The host will then specify the ACR and the authorities to delegate to it. The SSA checks whether the ACR has the tree (s) for this ACR and permission to delegate authority to another specified ACR (diamond 282). If so, the authorities are delegated (block 284), otherwise stop. The results are shown in FIG. In this case ACR m1 has permission to delegate read permission to ACR s1, so s1 may use the key to access price data after delegation. This can be done if m1 has the same or greater rights to access price data and permission to delegate as such. In one embodiment, m1 retains his access rights after delegation. Preferably, access rights may be delegated under restricted conditions such as limited time, limited number of accesses, and the like.

키 및 키 ID를 생성하는 프로세스가 도 14에 도시되었다. 실체는 ACR를 통해 인증한다(블록 302). 실체는 호스트에 의해 명시된 ID를 가진 키의 생성을 요청한다(블록 304). SSA는 명시된 ACR이 그와 같이 행할 허가를 갖고 있는지를 체크하고 안다(마름모 306). 예를 들면, 키가 특정 파티션 내 데이터에 액세스하는데 사용될 것이라면, SSA는 ACR이 이러한 파티션에 액세스할 수 있는지를 체크하여 알 것이다. ACR이 권한이 있다면, 메모리 디바이스(10)는 호스트에 의해 제공된 키 ID에 연관된 키값을 생성하고(블록 308), 키 ID를 ACR에, 그리고 키값을 이의 메모리(제어기에 연관된 메모리에 혹은 메모리(20)에)에 저장하고, 실체에 의해 공급된 정보에 따라 권한들 및 허가들을 할당하고(블록 310) 이러한 할당된 권한들 및 허가들로 이러한 ACR의 PCR을 수정한다(블록 312). 이에 따라, 키의 생성자는 이를테면 독출 및 기입 허가들, 위임하고 동일 AGP 내 다른 ACR들 혹은 낮은 레벨에 ACR과 공유하는 권한, 키의 소유권을 이전할 권한과 같은 모든 가용한 권한들을 갖는다. The process of generating the key and key ID is shown in FIG. The entity authenticates via ACR (block 302). The entity requests the creation of a key with the ID specified by the host (block 304). The SSA checks and knows whether the specified ACR has permission to do so (diamond 306). For example, if a key would be used to access data in a particular partition, the SSA would check to see if the ACR could access this partition. If the ACR is authorized, the memory device 10 generates a key value associated with the key ID provided by the host (block 308), the key ID to the ACR, and the key value to its memory (memory associated with the controller or memory 20). ), Assign rights and permissions according to the information supplied by the entity (block 310) and modify the PCR of this ACR with these assigned rights and permissions (block 312). Thus, the creator of the key has all available rights, such as read and write permissions, the authority to delegate and share with the ACR at a lower level or to other ACRs in the same AGP, and to transfer ownership of the key.

ACR은 도 15에 도시된 바와 같이 SSA 시스템에서 또 다른 ACR의 허가들(혹은 존재(existence)도 함께)를 변경할 수 있다. 실체는 전처럼 ACR을 통해 나무에 진입할 수 있는데, 이 경우 실체는 인증되고 이어서 ACR을 명시한다(블록들 330, 332). 이것은 타겟 ACR의 위임 혹은 타겟 ACR에서 허가를 요청한다(블록 334). 명시된 ACR 혹은 이러한 시간에 활성인 ACR이 그와 같이 행할 권한을 갖는다면(마름모 336), 타겟 ACR은 삭제되거나, 타겟 ACR의 PCR은 이러한 허가를 삭제하게 변경된다(블록 338). 이러한 권한이 없다면 시스템은 중지한다.The ACR may change the permissions (or even exist) of another ACR in the SSA system as shown in FIG. 15. The entity may enter the tree via the ACR as before, in which case the entity is authenticated and then specifies the ACR (blocks 330, 332). This requests delegation from the target ACR or authorization at the target ACR (block 334). If the specified ACR or ACR active at this time has the authority to do so (diamond 336), the target ACR is deleted or the PCR of the target ACR is changed to delete this permission (block 338). If you do not have these privileges, the system stops.

위에 기술된 프로세스 후에, 타겟은 프로세스에 앞서 할 수 있었던 데이터에 더 이상 액세스할 수 없을 것이다. 도 16에 도시된 바와 같이, 실체는 타겟 ACR에 진입하려고 시도할 수 있고(블록 350) 이전에 존재한 ACR ID가 SSA에 더 이상 없어 액세스 권한들이 거절되기 때문에(마름모 352), 인증 프로세스가 실패한 것을 발견한다. ACR ID가 삭제되지 않았다고 가정하면, 실체는 ACR(블록 354) 및 키 ID 및/ 또는 특정 파티션에 데이터(블록 356)를 명시하고, 이어서 SSA는 키 ID 혹은 파티션 액세스 요청이 이러한 ACR의 PCR에 따라 허용되는지를 알기 위해 체크한다(마름모 358). 허가가 삭제되거나 만기되었다면, 요청은 다시 거절된다. 그렇지 않다면, 요청은 승인된다(블록 360).After the process described above, the target will no longer have access to the data it could have had before the process. As shown in FIG. 16, the entity may attempt to enter the target ACR (block 350) and the authentication process fails because access rights are denied because the previously existing ACR ID is no longer in the SSA (diamond 352). To discover that. Assuming that the ACR ID has not been deleted, the entity specifies the ACR (block 354) and the key ID and / or data (block 356) in a particular partition, and then the SSA determines that the key ID or partition access request is in accordance with the PCR of this ACR. Check to see if it is allowed (diamond 358). If the permission is deleted or expired, the request is denied again. Otherwise, the request is granted (block 360).

위에 프로세스는 ACR 및 이의 PCR이 또 다른 ACR에 의해 변경되었는지 아니면 시작하기 위해 그와 같이 구성되었는지에 관계없이, 보호된 데이터에의 액세스가 디바이스(예를 들면 플래시 카드)에 의해 어떻게 관리되는가를 기술한다.The above process describes how access to protected data is managed by the device (e.g. flash card), regardless of whether the ACR and its PCR has been modified by another ACR or so configured to start. do.

세션들Sessions

SSA 시스템은 동시에 로그인 된 복수의 사용자들을 취급하게 설계된다. 이 특징이 사용될 때, SSA에 의해 수신된 모든 명령은 특정 실체에 연관되고 이 실체를 인증하는데 사용되는 ACR이 요청된 작업에 대한 허가를 갖는 경우에만 실행된다.The SSA system is designed to handle multiple users logged in at the same time. When this feature is used, all commands received by the SSA are executed only if the ACR associated with the particular entity and used to authenticate this entity has permission for the requested operation.

복수의 실체들은 세션 개념을 통해 지원된다. 세션은 인증 프로세스를 동안 수립되고 SSA 시스템에 의해 세션-id가 할당된다. 세션-id는 시스템에 로그인하는데 사용되는 ACR에 내부적으로 연관되고 모든 후 SSA 명령들에서 사용되기 위해 실체에 이출된다.Multiple entities are supported through the concept of sessions. The session is established during the authentication process and assigned a session-id by the SSA system. The session-id is internally associated with the ACR used to log in to the system and exported to the entity for use in all subsequent SSA commands.

SSA 시스템은 두 유형들의 세션들로서 개방, 및 보안 세션들을 지원한다. 특정 인증 프로세스에 연관된 세션 유형은 ACR에 정의된다. SSA 시스템은 자체 인증을 시행하는 방법과 유사한 방식으로 세션 수립을 시행할 것이다. ACR이 실체 허가들을 정의하기 때문에, 이 메커니즘은 시스템 설계자들이 보안 터널링을 특정 키 ID들에 액세스하는 것에 혹은 특정 ACR 관리 동작들(즉, 새로운 ACR들을 생성하고 자격증명서들을 설정하는 것)을 기동하는 것에 연관시킬 수 있게 한다.The SSA system supports open and secure sessions as two types of sessions. The session type associated with a particular authentication process is defined in the ACR. The SSA system will conduct session establishment in a similar way to self-certification. Because ACR defines entity permissions, this mechanism allows system designers to initiate secure tunneling to access specific key IDs or to initiate specific ACR management operations (ie, create new ACRs and set credentials). To make it relevant.

개방 세션Open session

개방 세션은 세션-id로 그러나 버스 암호화없이 확인되는 세션이며, 모든 명령들 및 데이터는 암호화 없이(in the clear) 전달된다. 이 모드의 동작은 바람직하게는 실체들이 위협 모델(threat model)의 부분도 아니고 버스에서 도청하고 있는 것도 아닌 복수-사용자 혹은 복수-실체 환경에서 사용된다. An open session is a session that is verified with the session-id but without bus encryption, and all commands and data are delivered in the clear. This mode of operation is preferably used in a multi-user or multi-entity environment where the entities are not part of the threat model and are not eavesdropping on the bus.

데이터의 전송을 보호하지도 않고 호스트 측에 애플리케이션들간에 효율적 방화-벽도 할 수 있게 하지 않을지라도, 개방 세션 모드는 SSA 시스템이 현재 인증된 ACR들에 대해 허용된 정보에만 액세스를 허용할 수 있게 한다.Open session mode allows the SSA system to allow access only to information that is allowed for currently authenticated ACRs, although it does not protect the transmission of data and does not enable efficient firewall-walling between applications on the host side.

개방 세션은 파티션 혹은 키가 보호될 필요가 있는 경우들에 대해 사용될 수도 있다. 그러나, 유효 인증 프로세스 후에, 호스트 상에 모든 실체들에게 액세스가 승인된다. 인증된 ACR의 허가들을 얻기 위해서, 여러 호스트 애플리케이션들이 공유할 필요가 있는 유일한 것은 세션-id이다. 이것이 도 17a에 도시되었다. 선 400 위에 단계들은 호스트(24)에 의해 취해지는 것들이다. 실체가 ACR 1에 대해 인증된 후에(블록 402), 메모리 디바이스(10)에서 키 ID X에 연관된 파일에의 액세스를 요청한다(블록들 404, 406, 408). ACR 1의 PCR이 이러한 액세스를 허용한다면, 디바이스(10)는 요청을 승인한다(마름모 410). 그렇지 않다면, 시스템은 블록(402)으로 되돌아간다. 인증이 완료된 후에, 메모리 시스템(10)은 할당된 세션 id(ACR 자격증명서들이 아닌)에 의해서만 명령을 발행하는 실체를 확인한다. 개방 세션에 서, 일단 ACR 1이 이의 PCR에 키 ID들에 연관된 데이터에 액세스할 수 있게 되면, 호스트(24) 상에 서로 다른 애플리케이션들간에 공유되는 정확한 세션 ID를 명시함으로써 어떤 다른 애플리케이션 혹은 사용자든 동일 데이터에 액세스할 수 있다. 이 특징은 단지 한번 로그인할 수 있고, 서로 다른 애플리케이션들에 대해 로그인이 수행되는 계정에 결부된 모든 데이터에 액세스하는 것이 사용자에게 더 편한 애플리케이션들에선 이점이 있다. 이에 따라, 셀룰라 전화 사용자는 저장된 이메일들에 액세스하여, 복수회 로그인해야 할 필요없이 메모리(20) 내 저장된 음악을 들을 수 있다. 반면, ACR 1에 의해 포함되지 않은 데이터는 액세스될 수 없을 것이다. 이에 따라, 동일 셀룰라 전화 사용자는 별도의 계정 ACR 2을 통해 액세스될 수 있는 이를테면 게임들 및 사진들과 같은 가치있는 콘텐트를 가질 수도 있다. 이것은 사용자가 다른 사용자들이 그의 제 1 계정 ACR을 통해 가능한 데이터에 액세스하는 것에 개의치 않을 수 있을지라도, 사용자가 자신의 전화를 빌린 다른 사용자들이 액세스하는 것을 원하지 않는 데이터이다. 개방 세션에서 ACR 1에의 액세스를 허용하면서도 데이터에의 액세스를 2개의 개별적 계정들로 분리하는 것은 가치있는(valuable) 데이터의 보호를 할 수 있게 할 뿐만 아니라 사용의 용이함을 제공한다.Open sessions may be used for cases where a partition or key needs to be protected. However, after the valid authentication process, access is granted to all entities on the host. In order to obtain the authorizations of an authenticated ACR, the only thing that multiple host applications need to share is the session-id. This is shown in Figure 17a. Steps above line 400 are those taken by host 24. After the entity is authenticated for ACR 1 (block 402), memory device 10 requests access to the file associated with key ID X (blocks 404, 406, 408). If the PCR of ACR 1 allows this access, device 10 approves the request (diamond 410). Otherwise, the system returns to block 402. After authentication is complete, the memory system 10 identifies the entity that issues the command only by the assigned session id (not by ACR credentials). In an open session, once ACR 1 has access to the data associated with the key IDs in its PCR, any other application or user can specify the exact session ID that is shared between different applications on the host 24. The same data can be accessed. This feature is advantageous in applications where it is easier for the user to log in only once and access all the data associated with the account where the login is performed for different applications. Accordingly, the cellular telephone user can access stored emails and listen to music stored in memory 20 without having to log in multiple times. On the other hand, data not included by ACR 1 will not be accessible. Accordingly, the same cell phone user may have valuable content such as games and photos that can be accessed through a separate account ACR 2. This is data that a user does not want other users who have borrowed his phone to access, even though the user may not care about accessing the data available through his first account ACR. Separating access to data into two separate accounts while allowing access to ACR 1 in an open session not only enables the protection of valuable data but also provides ease of use.

ACR이 개방 세션을 요청하고 있을 때, 호스트 애플리케이션들간에 세션-id를 공유하는 프로세스를 훨씬 더 용이하게 하기 위해서, 세션에 "0(제로") id가 할당될 것을 명시적으로 요청할 수 있다. 이렇게 하여, 애플리케이션들은 기정의된 세션-id를 사용하게 설계될 수 있다. 유일한 제약은, 명백한 이유들로, 세션 0을 요 청하는 단지 한 ACR만이 특정 시간에 인증될 수 있다는 것이다. 세션 0을 요청하는 또 다른 ACR을 인증하려는 시도는 거절될 것이다.When the ACR is requesting an open session, to make the process of sharing the session-id between host applications much easier, one can explicitly request that the session be assigned a "zero" id. In this way, applications can be designed to use a predefined session-id. The only restriction is that, for obvious reasons, only one ACR requesting session 0 can be authenticated at a particular time. Attempts to authenticate another ACR requesting session 0 will be rejected.

보안 세션Secure session

한 층의 보안을 추가하기 위해서, 도 17b에 도시된 바와 같이 세션 id가 사용될 수도 있다. 이때 메모리(10)는 활성 세션들의 세션 id들도 저장한다. 예를 들면, 도 17b에서, 키 ID X에 연관된 파일에 액세스할 수 있기 위해서, 실체는 파일에 액세스하는 것이 허용되기 전에 이를테면 세션 id "A"와 같은 세션 id을 제공할 필요가 있을 것이다(블록들 404, 406, 412, 414). 이에 따라, 요청하는 실체가 정확한 세션 id를 모른다면, 메모리(10)에 액세스할 수 없다. 세션 id는 세션이 종료된 후 삭제되고 각 세션마다 다를 것이기 때문에, 실체는 세션 번호를 제공할 수 있었을 때만 다시 액세스할 수 있다.To add one layer of security, a session id may be used as shown in FIG. 17B. The memory 10 also stores session ids of active sessions. For example, in FIG. 17B, in order to be able to access the file associated with key ID X, an entity would need to provide a session id such as session id “A” before being allowed to access the file (block 404, 406, 412, 414). Thus, if the requesting entity does not know the correct session id, it cannot access the memory 10. Since the session id is deleted after the session ends and will be different for each session, the entity can only access it again if it could provide the session number.

SSA 시스템은 세션 번호를 사용함으로써 정확한 인증된 실체로부터 명령이 실제로 오고 있는지를 추적한다. 공격자들이 악의적 명령들을 보내기 위해 개방 채널을 사용하려고 시도할 위협이 있는 애플리케이션들 및 사용 경우들에 있어서, 호스트 애플리케이션은 보안 세션(보안 채널)을 사용한다.The SSA system keeps track of whether commands actually come from the correct authorized entity by using the session number. In applications and use cases where there is a threat that an attacker will attempt to use an open channel to send malicious commands, the host application uses a secure session (secure channel).

보안 채널을 사용할 때, 전체 명령뿐만 아니라, 세션-id는 보안 채널 암호화 (세션) 키로 암호화되고 보안 레벨은 호스트측 구현만큼 높다.When using a secure channel, the session-id, as well as the entire command, is encrypted with a secure channel encryption (session) key and the security level is as high as the host-side implementation.

세션 종료End session

다음 시나리오들 중 어느 하나에서, 세션은 종료되고, ACR은 로그 오프된다.In any of the following scenarios, the session ends and the ACR is logged off.

1. 실체가 명확한 세션 종료 명령을 발행한다.1. Issue a clear session termination command.

2. 통신 타임아웃. 특정 실체가 ACR 파라미터들 중 하나로서 한 기간동안 아무 명령도 발행하지 않았다.2. Communication timeout. The particular entity issued no command for one period as one of the ACR parameters.

3. 디바이스(예를 들면, 플래시 카드)가 리셋 및/또는 파워 사이클 후에 모든 열린 세션들은 종료된다.3. All open sessions are terminated after the device (eg flash card) resets and / or power cycles.

데이터 무결성 서비스들Data integrity services

SSA 시스템은 SSA 데이터베이스(모든 ACR들, PCR들 등을 내포하는)의 무결성을 검증한다. 또한, 키 ID 메커니즘을 통해 실체 데이터에 대해 데이터 무결성 서비스들이 제공된다.The SSA system verifies the integrity of the SSA database (containing all ACRs, PCRs, etc.). In addition, data integrity services are provided for the entity data through the key ID mechanism.

키 ID가 이의 암호화 알고리즘으로서 해시(Hashed)로 구성된다면, 해시값들은 CEK 레코드에 CEK 및 IV와 함께 저장된다. 해시값들은 기입동작 동안 계산되어 저장된다. 해시값들은 독출동작동안 다시 계산되어 이전 기입동작들동안 저장된 값들과 비교된다. 실체가 키 ID에 액세스할 때마다 추가의 데이터가 이전 데이터 및 업데이트된 적합한 해시값(독출을 위한 혹은 기입을 위한)에 연결(concatenated) (크립토그래픽으로)된다.If the key ID consists of a hash as its encryption algorithm, the hash values are stored with the CEK and IV in the CEK record. The hash values are calculated and stored during the write operation. The hash values are recalculated during the read operation and compared with the values stored during the previous write operations. Each time an entity accesses a key ID, additional data is concatenated (cryptographically) to the previous data and the updated appropriate hash value (for reading or for writing).

호스트만이 키 ID에 연관된 혹은 이에 의해 가리켜진 데이터 파일들을 알고 있기 때문에, 호스트는 다음 방식으로 데이터 무결성 기능의 몇 가지 면들을 명확히 관리한다:Since only the host knows the data files associated with or pointed to by the key ID, the host explicitly manages some aspects of the data integrity function in the following way:

1. 키 ID에 연관된 혹은 이에 의해 가리켜진 데이터 파일들은 처음부터 끝까지 기입 혹은 독출된다. SSA 시스템이 CBC 암호화 방법을 사용하고 있고 전체 데이터의 해시된 메시지 다이제스트를 발생하기 때문에 파일의 부분들에 액세스하려는 어떠한 시도이든 엉망이 될 것이다.1. Data files associated with or pointed to by the key ID are written or read from beginning to end. Any attempt to access parts of a file will be messed up because the SSA system uses the CBC encryption method and generates a hashed message digest of the entire data.

2. 중간 해시값들이 SSA 시스템에 의해 유지되기 때문에 인접한 스트림(데이터 스트림은 다른 키 Id들의 데이터 스트림과 인터리브될 수 있으며 복수의 세션들에 대해 분할될 수도 있다)에 데이터를 처리할 필요가 없다. 그러나, 실체는 데이터 스트림이 재시작된다면 해시값들을 리셋할 것을 SSA 시스템에 명확히 지시할 필요가 있을 것이다.2. Since intermediate hash values are maintained by the SSA system, there is no need to process data in adjacent streams (data streams may be interleaved with data streams of other key IDs and may be split for multiple sessions). However, the entity will need to explicitly instruct the SSA system to reset the hash values if the data stream is restarted.

3. 독출동작이 완료되었을 때, 호스트는 기입동작동안 계산된 해시값과 비교함으로써 독출된 해시를 유효화할 것을 SSA 시스템에 명확하게 요청한다. 3. When the read operation is complete, the host explicitly requests the SSA system to validate the read hash by comparing it with the hash value computed during the write operation.

4. SSA 시스템은 "더미 독출" 동작도 제공한다. 이 특징은 암호화 엔진들을 통해 데이터를 스트리밍할 것이지만 이를 호스트에 내보내지는 않을 것이다. 이 특징은 디바이스(예를 들면, 플래시 카드)로부터 실제로 독출되기 전에 데이터 무결성을 검증하는데 사용될 수 있다.4. The SSA system also provides a "dummy read" operation. This feature will stream data through cryptographic engines but will not export it to the host. This feature can be used to verify data integrity before actually reading from the device (eg flash card).

난수 발생Random number generation

SSA 시스템은 외부 실체들이 내부 난수 발생기를 이용하고 난수들을 SSA 시스템 외부에서 사용될 것을 요청할 수 있게 할 것이다. 이 서비스는 어떤 호스트이든 사용할 수 있고 인증을 필요로 하지 않는다.The SSA system will allow external entities to use the internal random number generator and request random numbers to be used outside the SSA system. This service can be used by any host and does not require authentication.

RSA 키 쌍 생성Generate RSA Key Pair

SSA 시스템은 외부 사용자들이 내부 RSA 키 쌍 생성 특징을 이용하고 키 쌍을 SSA 시스템 외부에서 사용될 것을 요청할 수 있게 할 것이다. 이 서비스는 어떤 호스트이든 사용할 수 있고 인증을 필요로 하지 않는다.The SSA system will allow external users to utilize the internal RSA key pair generation feature and request that the key pair be used outside the SSA system. This service can be used by any host and does not require authentication.

대안적 실시예Alternative embodiments

계층적 방법을 사용하는 대신에, 도 18에 도시된 바와 같이, 데이터 베이스 방법을 사용하여 유사한 결과들이 달성될 수 있다.Instead of using a hierarchical method, similar results can be achieved using the database method, as shown in FIG. 18.

도 18에 도시된 바와 같이, 실체들을 위한 자격증명서들, 인증 방법들, 실패된 시도들의 최대 수, 및 언블록킹하는데 필요한 자격증명서들의 최소 수의 리스트가, 제어기(12) 혹은 메모리(20)에 저장된 데이터베이스에 입력될 수 있고, 이것은 이러한 자격증명서 요구사항들을 메모리(10)의 제어기(12)에 의해 수행되는 데이터베이스 내 정책들(키들 및 파티션들의 독출, 기입 액세스, 보안 채널 요구사항)에 관계시킨다. 데이터베이스에는 키들 및 파티션들에의 액세스에 대한 제약들 및 제한들도 저장된다. 이에 따라, 일부 실체들(예를 들면, 시스템 관리자)은 화이트 리스트(white list) 상에 있을 수 있는데, 이것은 이들 실체들이 모든 키들 및 파라미터들에 액세스할 수 있음을 의미한다. 이외 다른 실체들은 블랙 리스트 상에 있을 수 있고, 임의의 정보에 액세스하려는 이들의 시도들은 차단될 것이다. 제한은 전역적일 수도 있고, 혹은 키 및/또는 파티션에 특정할 수도 있다. 이것은 어떤 실체들만이 어떤 특정 키들 및 파티션들에 액세스할 수 있고 어떤 실체들은 그렇게 할 수 없음을 의미한다. 콘텐트가 들어있는 파티션, 혹은 이 콘텐트를 암호화 혹은 해독하는데 사용되는 키에 관계없이, 이 콘텐트 자체에 제약들이 가해 질 수도 있다. 이에 따라, 어떤 데이터(예를 들면, 곡들)는 이들에 액세스하는 제 1의 5개의 호스트 디바이스들에 의해서만 액세스될 수 있거나 다른 데이터(예를 들면, 영화)가 어떤 실체들이 액세스하였는지 관계없이 제한 회수동안만 읽혀질 수 있는 속성 을 가질 수도 있다.As shown in FIG. 18, a list of credentials for entities, authentication methods, the maximum number of failed attempts, and the minimum number of credentials needed to unblock is stored in the controller 12 or the memory 20. It can be entered into a stored database, which relates these credential requirements to the policies (read, write access, secure channel requirements of keys and partitions) in the database performed by the controller 12 of the memory 10. . The database also stores restrictions and restrictions on access to keys and partitions. Accordingly, some entities (eg, system administrators) may be on a white list, which means that these entities can access all keys and parameters. Other entities may be on the black list and their attempts to access any information will be blocked. Restrictions may be global or may be key and / or partition specific. This means that only certain entities can access certain particular keys and partitions and some entities cannot. Regardless of the partition that contains the content, or the key used to encrypt or decrypt the content, restrictions may be placed on the content itself. Thus, certain data (e.g., songs) can be accessed only by the first five host devices that access them, or other data (e.g., movies) are limited in number regardless of which entities have access. It may have an attribute that can only be read for a while.

인증certification

. 패스워드 보호. Password protection

. 패스워드-보호는 보호된 영역에 액세스하기 위해 패스워드가 제시될 필요가 있음을 의미한다. 이것이 하나보다 더 많은 패스워드일 수 없다면, 패스워드들은 독출 액세스 혹은 독출/기입 액세스와 같은 서로 다른 권한들에 연관될 수도 있을 것이다.. Password-protection means that a password needs to be presented to access the protected area. If this cannot be more than one password, the passwords may be associated with different permissions, such as read access or read / write access.

. 패스워드 보호는 디바이스(예를 들면, 플래시 카드)가 호스트에 의해 제공된 패스워드를 검증할 수 있음을, 즉 디바이스가 디바이스에서 관리된 보안된 메모리 영역에 패스워드를 저장하게 한다는 것을 의미한다.. Password protection means that the device (e.g., flash card) can verify the password provided by the host, i.e. allow the device to store the password in a secured memory area managed by the device.

문제 및 제한Problems and limitations

. 패스워드들은 리플레이 공격을 받는다. 패스워드는 각각의 제시 후에 바꾸지 않기 때문에, 동일하게 다시 보내질 수 있다. 이것은 보호될 데이터가 가치있고 통신 버스가 쉽게 액세스될 수 있다면 현 패스워드는 사용되지 않아야 함을 의미한다.. Passwords are subject to replay attacks. Since the password is not changed after each presentation, it can be sent back the same. This means that the current password should not be used if the data to be protected is valuable and the communication bus can be easily accessed.

. 패스워드는 저장된 데이터에 액세스를 보호할 수도 있을 것이지만 데이터(키가 아닌)를 보호하는 데에는 사용되지 않아야 한다.. A password may protect access to stored data, but should not be used to protect data (not keys).

. 패스워드들에 연관된 보안 레벨을 증가시키기 위해서, 이들은 마스터 키를 사용하여 다양화될 수 있는데, 그 결과로 해킹하는 자는 전체 시스템을 크랙하지 못한다. 세션 키 기반의 보안 통신채널은 패스워드를 보내는데 사용될 수 있 다.. To increase the level of security associated with passwords, they can be diversified using the master key, so that the hacker cannot crack the entire system. A session key based secure communication channel can be used to send the password.

도 19는 패스워드를 사용한 인증을 예시한 흐름도이다. 실체는 계정 id 및 패스워드를 시스템(10)(예를 들면, 플래시 메모리 카드)에 보낸다. 시스템은 패스워드가 자신의 메모리에 있는 것과 일치하는지를 알기 위해 체크한다. 일치한다면, 인증된 상태가 리턴된다. 그렇지 않다면, 이 계정에 대해 오류 카운터가 증분되고, 계정 id 및 패스워드를 재입력할 것이 실체에 요청된다. 카운터가 오버플로우하면, 시스템은 액세스가 거절된 상태를 리턴한다.19 is a flowchart illustrating authentication using a password. The entity sends the account id and password to the system 10 (e.g., flash memory card). The system checks to see if the password matches that in its memory. If there is a match, the authenticated status is returned. If not, an error counter is incremented for this account and the entity is asked to re-enter the account id and password. If the counter overflows, the system returns a status of denied access.

대칭 키Symmetric key

대칭 키 알고리즘은 암호화 및 해독을 위해 양측에서 동일 키가 사용됨을 의미한다. 이것은 통신하기에 앞서 키가 사전 동의되었음을 의미한다. 또한 각측은 서로간에 반대 알고리즘을 이행해야 하는데, 즉 한 측에선 암호화 알고리즘을 다른 측에선 해독 알고리즘을 이행해야 한다. 양측은 통신하기 위해 두 알고리즘들을 이행할 필요가 없다.Symmetric key algorithms mean that the same key is used on both sides for encryption and decryption. This means that the key has been previously agreed upon before communicating. In addition, each side has to implement the opposite algorithm to each other, that is, one side must implement the encryption algorithm and the other side must implement the decryption algorithm. Both sides do not need to implement both algorithms to communicate.

인증certification

. 대칭 키 인증은 디바이스(예를 들면 플래시 카드) 및 호스트가 동일 키를 공유하고 동일 크립토그래픽 알고리즘(다이렉트 및 리버스 예를 들면 DES 및 DES-1)을 구비함을 의미한다.. Symmetric key authentication means that the device (eg flash card) and host share the same key and have the same cryptographic algorithms (direct and reverse eg DES and DES-1).

. 대칭 키 인증은 시도-응답(challenge-response)(리플레이 공격에 대한 보호)을 의미한다. 보호된 디바이스는 다른 디바이스에 대한 시도를 발생하고 둘 다 응답을 계산한다. 인증하는 디바이스는 역으로 응답을 보내고 보호된 디바이스는 응답을 체크하여 이에 따라 인증을 유효화한다. 이어서 인증에 연관된 권한들이 승인될 수 있다.. Symmetric key authentication means challenge-response (protection against replay attacks). The protected device generates an attempt on another device and both compute a response. The authenticating device sends back a response and the protected device checks the response and validates the authentication accordingly. The rights associated with the authentication can then be granted.

인증은,Certification is,

외부: 디바이스(예를 들면, 플래시 카드)가 외부 세계를 인증한다. 즉, 디바이스가 주어진 호스트 혹은 애플리케이션의 자격증명서들을 유효화한다,External: The device (eg flash card) authenticates the external world. That is, the device validates the credentials of the given host or application,

상호: 양측에서 시도가 생성된다,Mutual: Attempts are made at both sides,

내부: 호스트 애플리케이션이 디바이스(예를 들면, 플래시 카드)를 인증한다. 즉, 호스트는 이의 애플리케이션에 대해 디바이스가 진본인지를 체크한다,Internal: The host application authenticates the device (eg flash card). That is, the host checks to see if the device is authentic for its application.

일 수도 있을 것이다.It may be.

전체 시스템의 보안 레벨을 증가시키기 위해서(즉, 하나를 해제(break)하는 것이 모두를 해제하지 않는다), In order to increase the security level of the whole system (i.e. breaking one does not break all),

. 대칭키는 보통 마스터 키를 사용하여 다양화와 결합된다.. Symmetric keys are usually combined with diversification using master keys.

. 상호 인증은 시도가 실체 시도임을 보장하기 위해 양측으로부터의 시도를 사용한다.. Mutual authentication uses attempts from both sides to ensure that the attempt is an entity attempt.

암호화encryption

대칭키 크립토그래피는 이것이 매우 효율적인 알고리즘이기 때문에, 즉 크립토그래피를 다루기 위해 강력한 CPU를 필요로 하지 않기 때문에 암호화에도 사용된다.Symmetric key cryptography is also used for encryption because it is a very efficient algorithm, that is, it does not require a powerful CPU to handle cryptography.

통신채널을 보안하는데 사용될 때:When used to secure a communication channel:

. 두 디바이스들은 채널을 보안하는데(즉, 모든 나가는 데이터를 암호화하고 모든 들어오는 데이터를 해독한다) 사용되는 세션 키를 알아야 한다. 이 세션 키는 보통 사전에 공유된 비밀 대칭키를 사용하여 혹은 PKI를 사용하여 설정된다.. Both devices need to know the session key used to secure the channel (ie encrypt all outgoing data and decrypt all incoming data). This session key is usually established using a previously shared secret symmetric key or using a PKI.

. 두 디바이스들은 동일 크립토그래픽 알고리즘 서명을 알고 구현해야 한다.. Both devices must know and implement the same cryptographic algorithm signature.

대칭키는 데이터를 서명하는 데에도 사용될 수 있다. 이 경우 서명은 암호화의 부분적 결과이다. 결과를 부분적으로 유지하는 것은 키값을 노출시킴이 없이 필요로 되는 만큼의 회수로 서명할 수 있게 한다.Symmetric keys can also be used to sign data. In this case, the signature is a partial result of encryption. Maintaining the result in part allows you to sign as many times as needed without exposing the key value.

문제들 및 제한들Problems and Limitations

대칭 알고리즘들은 매우 효율적이고 보안적이지만 이들은 사전에 공유되는 비밀에 기반한다. 문제는 이 비밀을 동적으로 그리고 아마도 이를 랜덤하게 하도록(세션 키처럼) 보안적으로 공유하는 것이다. 생각은 공유된 비밀은 장기간 안전하에 유지하기가 어렵고 복수의 사람들과 공유하는 것이 거의 불가능하다는 것이다.Symmetric algorithms are very efficient and secure, but they are based on pre-shared secrets. The problem is to share this secret securely, dynamically and perhaps randomly (like a session key). The idea is that shared secrets are difficult to keep secure for long periods of time and are almost impossible to share with multiple people.

이 동작을 용이하게 하기 위해서, 공개키는 비밀들을 공유함이 없이 이들을 교환할 수 있게 하기 때문에 공개키 알고리즘이 발명되었다.To facilitate this operation, public key algorithms have been invented because public keys allow them to be exchanged without sharing secrets.

비대칭 인증 절차Asymmetric Authentication Process

대칭키 기반 인증은 결국에 보안 채널 통신을 위한 세션 키를 구성하는 일련의 데이터 패싱 명령들을 사용한다. 기본 프로토콜은 SSA 시스템에 사용자를 인증한다. 프로토콜 변형들은 사용자가 사용하기를 원하는 ACR을 사용자가 검증해야 하 는 상호 인증, 및 이중요소(two-factor) 인증을 할 수 있게 한다.Symmetric key-based authentication eventually uses a series of data passing instructions that constitute a session key for secure channel communication. The default protocol authenticates the user with the SSA system. Protocol variants allow for two-factor authentication and mutual authentication, in which the user must verify the ACR they want to use.

SSA의 비대칭 인증 프로토콜들은 바람직하게는 공개키 기반구조(PKI) 및 RSA 알고리즘들을 사용한다. 이들 알고리즘들에 의해 정의된 바와 같이, 인증 프로세스에서 각 당사자는 자신의 RSA 키 쌍을 생성하는 것이 허용된다. 각 쌍은 공개키와 사설키로 구성된다. PKI층은 공개키들의 각각을 서명하는 제 3의 신뢰된 측을 요구한다. 신뢰된 측의 공개키는 서로 인증해야 하는 당사자들간에 사전에 공유되고 이들 당사자들의 공개키들을 검증하는데 사용된다. 일단 신뢰가 확립되면(두 당사자들은 다른 당사자에 의해 제공된 공개키가 신뢰될 수 있는 것으로 판정하였다), 프로토콜은 계속하여 인증(각 당사자는 일치하는 사설키를 보유함을 검증하는) 및 키 교환을 한다. 이것은 이하 기술되는 도 22 및 도 23에 도시된 시도 응답 메커니즘을 통해 행해질 수 있다.SSA's asymmetric authentication protocols preferably use public key infrastructure (PKI) and RSA algorithms. As defined by these algorithms, each party in the authentication process is allowed to generate its own RSA key pair. Each pair consists of a public key and a private key. The PKI layer requires a third trusted side to sign each of the public keys. The public key of the trusted side is shared in advance between the parties that must authenticate each other and is used to verify the public keys of these parties. Once trust is established (two parties have determined that the public key provided by the other party can be trusted), the protocol continues to authenticate (verify that each party has a matching private key) and exchange keys. do. This can be done via the challenge response mechanism shown in FIGS. 22 and 23 described below.

서명된 공개키를 내장하는 구조는 증명서라고 한다. 증명서에 서명한 신뢰된 측은 증명서 당국(CA)이라고 한다. 당사자가 인증되기 위해서 당사자는 RSA 키 쌍 및 공개키의 진위를 입증하는 증명서를 구비한다. 증명서는 다른(인증하는) 당사자에 의해 신뢰되는 증명서 당국에 의해 서명된다. 인증하는 당사자는 이의 신뢰된 CA의 공개키를 소유하고 있을 것으로 예상된다. The structure that embeds a signed public key is called a certificate. The trusted party that signed the certificate is called the Certificate Authority (CA). For the party to be authenticated, the party has a certificate that proves the authenticity of the RSA key pair and public key. The certificate is signed by a certificate authority that is trusted by other (certifying) parties. The authenticating party is expected to own the public key of its trusted CA.

SSA는 증명서 체인을 할 수 있게 한다. 이것은 확인되는 당사자의 공개키가 다른(확인하는 당사자에 의해 신뢰된 것과는 다른) CA에 의해 서명될 수도 있음을 의미한다. 이 경우 확인된 당사자는 자신의 증명서 외에도, 자신의 공개키를 서명한 CA의 증명서를 제공할 것이다. 이 제 2 레벨 증명서가 다른 당사자(신뢰된 CA에 의해 서명되지 않은)에 의해 여전히 신뢰되지 않는다면, 제 3 레벨 증명서가 제공될 수 있다. 이 증명서 체인 알고리즘에서, 각 당사자는 이의 공개키를 인증하는데 필요한 증명서들의 한 완전한 리스트를 소유할 것이다. 이것이 도 23 및 도 24에 도시되었다. 이러한 유형의 ACR에 의한 상호 인증에 필요한 자격증명서들은 선택된 길이의 RSA 키 쌍들이다.SSA allows you to chain certificates. This means that the public key of the verified party may be signed by another CA (unlike that trusted by the verifying party). In this case, the verified party will provide, in addition to its own certificate, the certificate of the CA that signed its public key. If this second level certificate is still not trusted by another party (not signed by a trusted CA), a third level certificate can be provided. In this certificate chain algorithm, each party will have a complete list of certificates needed to authenticate its public key. This is shown in FIGS. 23 and 24. The credentials required for mutual authentication by this type of ACR are RSA key pairs of selected length.

SSA 증명서SSA Certificate

SSA는 [X.509] 버전 3 디지털 증명서들을 채용한다. [X.509]는 범용 표준이며, 여기 기술된 SSA 증명서 프로파일은 증명서의 정의된 필드들의 내용들을 더욱 명시하고 제약한다. 증명서 프로파일은 또한, 증명서 체인의 관리, SSA 증명서들의 유효화 및 증명서 철회 리스트(CRL) 프로파일을 위해 정의된 신뢰 계층을 정의한다.SSA employs [X.509] version 3 digital certificates. [X.509] is a general purpose standard, and the SSA certificate profile described here further specifies and restricts the contents of the certificate's defined fields. A certificate profile also defines a trust hierarchy defined for management of certificate chains, validation of SSA certificates, and certificate revocation list (CRL) profiles.

증명서는 공개된 정보인 것으로 간주되고(내부에 공개키로서) 그러므로 암호화되지 않는다. 그러나, 모든 다른 정보 필드들뿐만 아니라 공개키가 부정변조되지 않았음을 검증하는 RSA 서명을 포함한다.The certificate is considered to be public information (as a public key inside) and is therefore not encrypted. However, it contains an RSA signature that verifies that the public key has not been tampered with, as well as all other information fields.

[X.509]는 각 필드가 데이터 엔코딩을 위해 DER 포맷을 사용하는 ASN.1 표준을 사용하여 포맷됨을 정의한다. [X.509] defines that each field is formatted using the ASN.1 standard, which uses the DER format for data encoding.

SSA 증명서 개요SSA Certificate Overview

도 20 및 도 21에 도시된 SSA 증명서 관리 구조의 일 실시예는 호스트에 대해선 무제한 레벨의 계층과, 디바이스에 대해 3개보다 더 많은 혹은 더 적은 수의 계층 레벨들이 사용될 수 있을지라도 디바이스에 대해 3-레벨까지의 계층으로 구성 된다.One embodiment of the SSA credential management architecture shown in FIGS. 20 and 21 provides an unlimited level of hierarchy for the host and three for the device although more than three or fewer hierarchy levels may be used for the device. It consists of a hierarchy of levels.

호스트 증명서 계층Host credential hierarchy

디바이스는 두 요인들로서, 디바이스에 저장된 루트 CA 증명서(ACR의 생성시 저장된, ACR 자격증명서로서), 및 디바이스에 액세스하려고 시도하는(이 특정의 ACR에 대해서) 실체에 의해 공급된 증명서/증명서 체인에 기초하여 호스트들을 인증한다.The device has two factors: the root CA certificate stored on the device (as an ACR credential stored at the time of creation of the ACR), and the certificate / certificate chain supplied by the entity attempting to access the device (for this particular ACR). Authenticate hosts based on

각 ACR에 대해서 호스트 증명서 당국은 루트 CA로서 작용한다(이것은 ACR 자격증명서들에 상주하는 증명서이다). 예를 들면, 한 ACR에 대해서 루트 CA는 "호스트 1 CA(레벨 2) 증명서"일 수도 있을 것이며 또 다른 ACR에 대해서 이것은 "호스트 루트 CA 증명서"일 수도 있을 것이다. 각각의 ACR에 대해서, 루트 CA에 의해 서명된 증명서(혹은 루트 CA를 종단-실체 증명서에 연결하는 증명서 체인)을 보유하는 모든 실체는 ACR이 종단-실체 증명서에 대한 대응하는 사설키를 갖고 있다면 이 ACR에 로그인할 수 있다. 위에 언급된 바와 같이, 증명서들은 공개된 것으로 비밀로 유지되지 않는다. For each ACR, the host certificate authority acts as the root CA (this is the certificate that resides on the ACR credentials). For example, for one ACR the root CA may be a "host 1 CA (level 2) certificate" and for another ACR this may be a "host root CA certificate". For each ACR, every entity that holds a certificate signed by the root CA (or a certificate chain that connects the root CA to the end-entity certificate) must, if the ACR has a corresponding private key for the end-entity certificate. You can log in to ACR. As mentioned above, the certificates are public and not confidential.

루트 CA에 의해 발급된 모든 증명서 보유자들(및 대응하는 사설키)이 그 ACR에 로그인할 수 있다는 사실은 특정 ACR에의 인증이 ACR 자격증명서에 저장된 루트 CA의 발급자에 의해 결정됨을 의미한다. 즉, 루트 CA의 발급자는 ACR의 인증 방법을 관리하는 실체일 수 있다.The fact that all certificate holders (and corresponding private keys) issued by the root CA can log in to that ACR means that the authentication to that particular ACR is determined by the issuer of the root CA stored in the ACR credential. That is, the issuer of the root CA may be an entity managing the authentication method of the ACR.

호스트 루트 증명서Host root certificate

루트 증명서는 로그인(호스트에)하려고 시도하는 실체의 공개키를 검증하기 를 시작하기 위해 SSA가 사용하는 신뢰된 CA 증명서이다. 이 증명서는 ACR이 ACR 자격증명서들의 부분으로서 생성될 때 제공된다. 이것은 PKI 시스템에 대한 신뢰의 루트이며 따라서 신뢰된 실체(부 ACR 혹은 제조/구성 신뢰된 환경)에 의해 제공된 것으로 가정된다. SSA는 증명서 서명을 검증하기 위해 자신의 공개키를 사용하여 이 증명서를 검증한다. 호스트 루트 증명서는 시스템(10)의 바람직하게는 도 1의 CPU(12)에 의해서만 액세스될 수 있는 디바이스의 비밀키들과 함께 비휘발성 메모리(도 1에 도시되지 않음)에 암호화되어 저장된다.The root certificate is a trusted CA certificate used by the SSA to begin verifying the public key of the entity attempting to log in (to the host). This certificate is provided when the ACR is created as part of the ACR credentials. This is the root of trust in the PKI system and therefore is assumed to be provided by a trusted entity (sub ACR or manufacturing / configuration trusted environment). The SSA verifies this certificate using its public key to verify the certificate signature. The host root certificate is encrypted and stored in non-volatile memory (not shown in FIG. 1) along with the secret keys of the device that can only be accessed by the CPU 12 of FIG. 10.

호스트 증명서 체인Host certificate chain

인증 동안 SSA에 제공되는 증명서들이 있다. 호스트 증명서 체인의 어떠한 재수집도 체인의 처리가 완료된 후엔 디바이스에 저장되지 않아야 한다.There are certificates provided to the SSA during authentication. No recollection of the host certificate chain should be stored on the device after the chain has finished processing.

도 20은 다수의 서로 다른 호스트 증명서 체인들을 도시한 호스트 증명서 레벨 계층의 개략도이다. 도 20에 도시된 바와 같이, 호스트 증명서는 많은 서로 다른 증명서 체인들을 구비할 수 있는데, 여기서 3가지만 예시된다.20 is a schematic diagram of a host certificate level hierarchy showing a number of different host certificate chains. As shown in FIG. 20, a host certificate may have many different certificate chains, of which only three are illustrated.

A1. 호스트 루트 CA 증명서(502), 호스트 1 CA (레벨 2) 증명서(504) 및 호스트 증명서(506);A1. A host root CA certificate 502, a host 1 CA (level 2) certificate 504, and a host certificate 506;

B1. 호스트 루트 CA 증명서(502), 호스트 n CA (레벨 2) 증명서(508), 호스트 1 CA (레벨 3) 증명서(510), 호스트 증명서(512);B1. A host root CA certificate 502, a host n CA (level 2) certificate 508, a host 1 CA (level 3) certificate 510, a host certificate 512;

C1. 호스트 루트 CA 증명서(502), 호스트 n CA (레벨 2) 증명서(508) 및 호스트 증명서(514).C1. Host Root CA Certificate 502, Host n CA (Level 2) Certificate 508, and Host Certificate 514.

위에 3개의 증명서 체인들 A1, B1, C1은 호스트의 공개키가 진본임을 입증하 는데 사용될 수 있는 3가지 가능한 호스트 증명서 체인들을 도시한다. 위 및 도 10에 증명서 체인 A1을 참조하여, 호스트 1 CA (레벨 2) 증명서(504)에 공개키는, 공개키가 호스트 루트 CA 증명서(502)에 있는 호스트 루트 CA의 사설키에 의해 서명된다(즉, 공개키의 다이제스트를 암호화함으로써). 이어서 호스트 증명서(506)에 호스트 공개키는 공개키가 호스트 1 CA (레벨 2) 증명서(504)에 제공되는, 호스트 1 CA (레벨 2)의 사설키에 의해 서명된다. 그러므로, 호스트 루트 CA의 공개키를 갖는 실체는 위에 증명서 체인 A1의 진위를 검증할 수 있을 것이다. 제 1 단계로서, 실체는 호스트에 의해 그에 보내진 호스트 1 CA(레벨 2) 증명서(504)에 서명된 공개키를 해독하기 위해 소유하고 있는 호스트 루트 CA의 공개키를 사용하고 해독된 서명된 공개키를 호스트에 의해 보내진 호스트 1 CA (레벨 2) 증명서(504)에 비서명된 공개키의 다이제스트와 비교한다. 둘이 일치한다면, 호스트 1 CA (레벨 2)의 공개키가 인증되고, 실체는 호스트 1 CA (레벨 2)의 인증된 공개키를 사용하여, 호스트에 의해 보내진 호스트 증명서(506)에 호스트 1 CA (레벨 2)의 사설키에 의해 서명된 호스트의 공개키를 해독한다. 이 해독된 서명된 값이 호스트에 의해 보내진 호스트 증명서(506)에 공개키의 다이제스트의 값과 일치한다면, 호스트의 공개키가 또한 인증된다. 증명서 체인들(B1, C1)은 유사한 방식으로 인증을 위해 사용될 수 있다.The three certificate chains A1, B1, C1 above show three possible host certificate chains that can be used to prove that the host's public key is authentic. With reference to certificate chain A1 in FIG. 10 and above, in the Host 1 CA (Level 2) certificate 504, the public key is signed by the private key of the host root CA in the host root CA certificate 502. (Ie, by encrypting the digest of the public key). The host public key in the host certificate 506 is then signed by the private key of the host 1 CA (level 2), where the public key is provided to the host 1 CA (level 2) certificate 504. Therefore, an entity with the public key of the host root CA will be able to verify the authenticity of certificate chain A1 above. As a first step, the entity uses the public key of the host root CA that it owns to decrypt the public key signed in the Host 1 CA (Level 2) certificate 504 sent to it by the host and decrypted the signed public key. Is compared with the digest of the public key unsigned in the Host 1 CA (Level 2) certificate 504 sent by the host. If they match, the public key of the host 1 CA (level 2) is authenticated, and the entity uses the host 1 CA (level 2) 's authenticated public key, and the host 1 CA ( Decrypt the public key of the host signed by the level 2 private key. If this decrypted signed value matches the value of the digest of the public key in the host certificate 506 sent by the host, the host's public key is also authenticated. Certificate chains B1, C1 can be used for authentication in a similar manner.

체인 A1을 수반하는 위에 프로세스로부터 유념되는 바와 같이, 실체에 의해 검증될 필요가 있는 호스트로부터의 제 1 공개키는 호스트 루트 CA 증명서가 아니라 호스트 1 CA (레벨 2) 내 공개키이다. 그러므로, 실체에 보낼 필요가 있는 모든 호스트는 호스트 1 CA (레벨 2) 증명서(504) 및 호스트 증명서(506)이며, 따라서 호스트 1 CA (레벨 2) 증명서는 보내질 필요가 있는 체인 내 첫 번째 것이 될 것이다. 위에 도시된 바와 같이, 증명서 검증의 순서(sequence)는 다음과 같다. 이 경우, 메모리 디바이스(10)인 검증 실체는 먼저, 체인에서 제 1 증명서, 이 경우엔 루트 CA 밑에 CA의 증명서(504) 내 공개키의 진위를 검증한다. 이러한 증명서에 공개키가 진본인 것으로 검증된 후에, 디바이스(10)는 다음 증명서, 이 경우엔 호스트 증명서(506)를 검증을 진행한다. 동일 토큰에 의해서, 검증의 유사한 순서가 적용될 수 있는데 여기서 증명서 체인은 2보다 많은 증명서들을 내포하며, 루트 증명서 바로 밑에 증명서부터 시작하여 인증될 실체의 증명서로 끝난다.As noted from the above process involving chain A1, the first public key from the host that needs to be verified by the entity is not the host root CA certificate but the public key in the Host 1 CA (Level 2). Therefore, all hosts that need to be sent to the entity are the Host 1 CA (Level 2) certificate 504 and the Host certificate 506, so that the Host 1 CA (Level 2) certificate will be the first in the chain that needs to be sent. will be. As shown above, the sequence of certificate verification is as follows. In this case, the verification entity which is the memory device 10 first verifies the authenticity of the public key in the certificate 504 of the CA under the first certificate in this chain, in this case the root CA. After verifying that the public key is authentic to this certificate, the device 10 verifies the next certificate, in this case the host certificate 506. By the same token, a similar order of verification can be applied, where the certificate chain contains more than two certificates, starting with the certificate immediately below the root certificate and ending with the certificate of the entity to be authenticated.

디바이스 증명서 계층Device certificate layer

호스트는 2개의 요인들로서, 호스트에 저장된 디바이스 루트 CA와, 디바이스에 의해 호스트에 공급되는(ACR의 생성시 자격증명서로서 디바이스에 공급되는) 증명서/증명서 체인에 기초하여 디바이스를 인증한다. 호스트에 의해 디바이스를 인증하는 프로세스는 위에 기술된 호스트를 인증하는 디바이스에 대한 것과 유사하다.The host authenticates the device based on two factors: the device root CA stored in the host and the certificate / certificate chain supplied to the host by the device (supplied to the device as a credential upon creation of the ACR). The process of authenticating a device by the host is similar to that for a device authenticating the host described above.

디바이스 증명서 체인Device certificate chain

이들은 ACR의 키 쌍의 증명서들이다. 이들은 ACR이 생성될 때 카드에 제공된다. SSA는 이들 증명서들을 개별적으로 저장하고 이들을, 인증 동안, 하나씩, 호스트에 제공할 것이다. SSA는 호스트에 인증하기 위해 이들 증명서들을 사용한다. 디바이스는 3개와는 다른 다수의 증명서들이 사용될 수 있을지라도, 3개의 증명서들 의 체인을 취급할 수 있다. 증명서들의 수는 ACR마다 다를 수 있다. 이것은 ACR이 생성될 때 결정된다. 디바이스는 증명서 체인을 호스트에 보낼 수 있는데, 그러나, 증명서 체인 데이터를 사용하지 않기 때문에 이들 증명서 체인을 파싱(parse)할 필요는 없다.These are the certificates of the key pair of the ACR. These are provided to the card when the ACR is created. The SSA will store these credentials individually and provide them to the host, one during the authentication. SSA uses these credentials to authenticate with the host. The device can handle a chain of three certificates, although multiple certificates other than three can be used. The number of certificates may vary from ACR to ACR. This is determined when the ACR is created. The device can send certificate chains to the host, but it does not need to parse these certificate chains because it does not use certificate chain data.

도 21은 저장 디바이스들과 같은 SSA를 사용하는 디바이스들을 위한 1 내지 n 개의 서로 다른 증명서 체인들을 예시하기 위한 디바이스 증명서 레벨 계층을 예시한 개략도이다. 도 21에 도시된 n 개의 서로 다른 증명서 체인들은 다음과 같다.21 is a schematic diagram illustrating a device certificate level hierarchy to illustrate 1 to n different certificate chains for devices using an SSA such as storage devices. The n different certificate chains shown in FIG. 21 are as follows.

A2. 디바이스 루트 CA 증명서(520), 디바이스 1 CA (제조자) 증명서(522) 및 디바이스 증명서(524);A2. A device root CA certificate 520, a device 1 CA (manufacturer) certificate 522 and a device certificate 524;

B2. 디바이스 CA 증명서(520), 디바이스 n CA (제조자) 증명서(526) 및 디바이스 증명서(528).B2. Device CA certificate 520, device n CA (manufacturer) certificate 526, and device certificate 528.

SSA 디바이스는 각각이 자신의 디바이스 CA 증명서를 갖고 있는 1 내지 n의 서로 다른 제조업자들에 의해 제조될 수 있다. 그러므로, 특정 디바이스에 대한 디바이스 증명서에 공개키는 이의 제조자의 사설키에 의해 서명될 것이며, 이어 제조자의 공개키는 디바이스 루트 CA의 사설키에 의해 서명된다. 디바이스의 공개키가 검증되는 방법은 위에 기술된 호스트의 공개키의 경우에 방법과 유사하다. 호스트에 대해 위에 기술된 체인 A1의 검증의 경우에서처럼, 디바이스 루트 CA 증명서를 보낼 필요는 없으며, 보낼 필요가 있을 체인들에서 제 1 증명서는 디바이스 i CA(증명서) 증명서, 이에 이은 디바이스 증명서이며, i는 1 내지 n의 정수이다.SSA devices can be manufactured by 1 to n different manufacturers, each of whom has its own device CA certificate. Therefore, the public key in the device certificate for a particular device will be signed by its manufacturer's private key, which is then signed by the device root CA's private key. The method of verifying the public key of the device is similar to the method in the case of the public key of the host described above. As in the case of verification of chain A1 described above for a host, it is not necessary to send the device root CA certificate, and in the chains that need to be sent, the first certificate is the device i CA (certificate) certificate, followed by the device certificate, i Is an integer of 1 to n.

도 21에 도시된 실시예에서, 디바이스는 2개의 증명서들로서 디바이스 i CA(제조자) 증명서 및 이에 이은 자신의 디바이스 증명서를 제시할 것이다. 다바이스 i CA(제조자) 증명서는 이러한 디바이스를 제조하였고 디바이스의 공개키를 서명하기 위해 사설키를 제공하는 제조자인 제조자의 증명서이다. 디바이스 i CA(제조자) 증명서가 호스트에 의해 수신되었을 때, 호스트는 자신이 소유한 루트 CA의 공개키를 사용하여 디바이스 i CA(제조자) 공개키를 해독하고 검증할 것이다. 이 검증이 실패하면, 호스트는 프로세스를 중단(abort)하고 인증이 실패하였음을 디바이스에 통보할 것이다. 인증이 성공하면, 호스트는 다음 증명서에 대해 요청을 디바이스에 보낸다. 이어서 디바이스는 유사한 방식으로 호스트에 의해 검증될 자신의 디바이스 증명서를 보낼 것이다.In the embodiment shown in FIG. 21, the device will present the device i CA (manufacturer) certificate followed by its own device certificate as two certificates. The Device i CA (manufacturer) certificate is the manufacturer's certificate that manufactures such a device and provides the private key to sign the device's public key. When a device i CA (manufacturer) certificate is received by the host, the host will decrypt and verify the device i CA (manufacturer) public key using the public key of its own root CA. If this verification fails, the host will abort the process and notify the device that authentication failed. If authentication succeeds, the host sends a request to the device for the next certificate. The device will then send its device certificate to be verified by the host in a similar manner.

위에 기술된 검증 프로세스들이 도 22 및 도 23에 보다 상세히 도시되었다. 도 22에서, "SSM 시스템"은 이하 기술되는 다른 기능들뿐만 아니라 여기 기술된 SSA 시스템을 구현하는 소프트웨어 모듈이다. SSM은 메모리(20) 혹은 CPU(12) 내 비휘발성 메모리(도시되지 않음)에 저장된 데이터베이스와 함께 소프트웨어 혹은 컴퓨터 코드로서 실현될 수도 있고 RAM(12a)에 읽혀져 CPU(12)에 의해 실행된다.The verification processes described above are shown in more detail in FIGS. 22 and 23. In FIG. 22, an "SSM system" is a software module that implements the SSA system described herein as well as other functions described below. The SSM may be realized as software or computer code with a database stored in the memory 20 or a nonvolatile memory (not shown) in the CPU 12 and is read into the RAM 12a and executed by the CPU 12.

도 22에 도시된 바와 같이, 디바이스(10)에 SSM 시스템(542)이 호스트 시스템(540)을 인증하는 프로세스에서 3가지 국면들이 있다. 제 1 공개키 검증 국면에서, 호스트 시스템(540)은 SSM 명령에서 호스트 증명서 체인을 SSM 시스템(542)에 보낸다. SSM 시스템(542)은 호스트 증명서(544) 및 호스트 공개키(546)의 진본임을 ACR(5550)에 호스트 루트 증명서(548)에 위치된 루트 증명서 당국 공개키를 사용하여 검증한다(블록 552). 루트 증명서 당국과 호스트간에 중간 증명서 당국이 연루 되는 경우, 블록(552)에서 검증을 위해서 중간 증명서(549)도 사용된다. 검증 혹은 프로세스(블록 5520)가 성공적이라고 한다면, SSM 시스템(542)은 제 2 국면으로 진행한다.As shown in FIG. 22, there are three phases in the process by which SSM system 542 authenticates host system 540 to device 10. In the first public key verification phase, the host system 540 sends the host certificate chain to the SSM system 542 in an SSM command. SSM system 542 verifies the authenticity of host certificate 544 and host public key 546 using the root certificate authority public key located in host root certificate 548 in ACR 5550 (block 552). If an intermediate certificate authority is involved between the root certificate authority and the host, an intermediate certificate 549 is also used for verification at block 552. If the verification or process (block 5520) is successful, then the SSM system 542 proceeds to the second phase.

SSM 시스템(542)은 난수(554)를 발생하여 이를 시도(challenge)로서 호스트 시스템(540)에 보낸다. 시스템(540)은 호스트 시스템의 사설키(547)를 사용하여 난수(554)를 서명하고(블록 556) 서명된 난수를 시도에 대한 응답으로서 보낸다. 응답은 호스트 공개키(546)를 사용하여 해독되고(블록 558) 난수(554)와 비교된다(블록 560). 해독된 응답이 난수(554)와 일치한다고 하면, 시도 응답은 성공적이다.SSM system 542 generates a random number 554 and sends it to host system 540 as a challenge. The system 540 signs the random number 554 using the host system's private key 547 (block 556) and sends the signed random number in response to the attempt. The response is decrypted using the host public key 546 (block 558) and compared to random number 554 (block 560). If the decrypted response matches the random number 554, then the challenge response is successful.

제 3 국면에서, 호스트 공개키(546)를 사용하여 난수(562)가 암호화된다. 그러면 이 난수(562)가 세션 키가 된다. 호스트 시스템(540)은 이의 사설키를 사용하여 SSM 시스템(542)으로부터 암호화된 수(562)를 해독함으로써(블록 564) 세션 키를 얻을 수 있다. 이 세션 키에 의해서, 호스트 시스템(540)과 SSM 시스템(542)간에 보안 통신이 개시될 수 있다. 도 22는 호스트 시스템(540)이 디바이스(10)에서 SSM 시스템(542)에 의해 인증되는 단방향 비대칭 인증을 도시한 것이다. 도 23은 도 22의 단방향 인증 프로토콜과 유사한 양방향(two-way) 상호 인증 프로세스를 도시한 프로토콜 도면으로서, 도 23에서 SSM 시스템(542)은 호스트 시스템(540)에 의해서 인증된다.In a third phase, random number 562 is encrypted using host public key 546. This random number 562 then becomes the session key. The host system 540 can obtain the session key by decrypting the encrypted number 562 from the SSM system 542 using its private key (block 564). By this session key, secure communication can be initiated between the host system 540 and the SSM system 542. FIG. 22 illustrates one-way asymmetric authentication where host system 540 is authenticated by SSM system 542 at device 10. FIG. 23 is a protocol diagram illustrating a two-way mutual authentication process similar to the one-way authentication protocol of FIG. 22, in which the SSM system 542 is authenticated by the host system 540.

도 24는 발명의 일 실시예를 도시하는데 사용되는 증명서 체인(590)을 도시한 것이다. 위에 언급된 바와 같이, 검증을 위해 제시될 필요가 있는 증명서 체인은 다수의 증명서들을 포함할 수 있다. 이에 따라 도 24의 증명서 체인은 총 9개의 증명서들을 포함하며, 이들 모두는 증인을 위해 검증될 필요가 있을 수 있다. 배경부분에서 위에 설명될 바와 같이, 증명서 검증을 위한 현존의 시스템에서, 불완전한 증명서 체인이 보내지거나, 전체 증명서가 보내질 경우 증명서들은 전체 일 그룹의 증명서들이 수신되어 저장될 때까지 수신자가 증명서들을 분석할 수 있게 되도록 어떤 특정한 순서로 보내지지 않는다. 체인에 증명서들의 수는 사전에 알려지지 않기 때문에, 이것은 문제를 제시할 수 있다. 많은 량의 저장공간이 어떤 길이의 증명서 체인을 저장하기 위해 유보될 필요가 있을 수 있다. 이것은 검증을 수행하는 저장 디바이스들에 있어선 문제가 될 수 있다.24 illustrates a certificate chain 590 used to illustrate one embodiment of the invention. As mentioned above, the certificate chain that needs to be presented for verification may include multiple certificates. Accordingly, the certificate chain of FIG. 24 includes a total of nine certificates, all of which may need to be verified for the witness. As described above in the background, in existing systems for certificate validation, if an incomplete certificate chain is sent, or if a full certificate is sent, the certificates will be analyzed by the recipient until the entire group of certificates have been received and stored. It is not sent in any particular order as possible. This can present a problem because the number of certificates in the chain is not known in advance. Large amounts of storage may need to be reserved to store certificate chains of any length. This can be a problem for storage devices that perform verification.

발명의 일 실시예는 증명서 체인이 저장 디바이스에 의해 검증될 동일 순서로 호스트 디바이스들이 자신의 증명서 체인을 보내는 시스템에 의해 문제가 완화될 수 있다는 인식에 기초한다. 이에 따라 도 24에 도시된 바와 같이, 증명서들의 체인(590)은 호스트 루트 증명서 바로 밑의 증명서인 증명서 체인(590(1))로 시작하고 호스트 증명서인 증명서(590(9))로 끝난다. 그러므로, 디바이스(10)는 증명서(590(1))에 공개키를 먼저 검증하고 이어서 증명서(590(2))에 공개키를 검증하고 등등을 증명서(590(9))에 호스트 공개키기 검증될 때까지 할 것이다. 그러면 이것은 전체 증명서 체인(590)의 검증 프로세스를 완료한다. 이에 따라 호스트 디바이스가 증명서 체인이 검증될 동일 순서로 증명서 체인(590)을 메모리 디바이스(10)에 보낸다면, 메모리 디바이스(10)는 체인(590)에 전체 9개의 증명서가 수신될 때까지 기다려야 할 필요없이, 수신된 대로 각각의 증명서 검증을 시작한다.One embodiment of the invention is based on the recognition that the problem can be mitigated by a system in which host devices send their certificate chain in the same order that the certificate chain will be verified by the storage device. Thus, as shown in FIG. 24, the chain of certificates 590 begins with certificate chain 590 (1), which is the certificate immediately below the host root certificate, and ends with certificate 590 (9), which is the host certificate. Therefore, device 10 first verifies the public key in certificate 590 (1) and then verifies the public key in certificate 590 (2), and so forth in the certificate 590 (9). Will do until. This then completes the verification process of the entire certificate chain 590. Accordingly, if the host device sends the certificate chain 590 to the memory device 10 in the same order in which the certificate chain is to be verified, the memory device 10 has to wait until a total of nine certificates are received in the chain 590. No need to start each certificate verification as received.

이에 따라, 일 실시예에서, 호스트 디바이스는 체인(590)에 한번에 한 증명 서를 메모리 디바이스(10)에 보낸다. 증명서가 검증된 후에, 체인에 마지막 증명서를 제외하고, 호스트에 의해 보내지는 다음 증명서에 의해 덮어 쓰일 수 있다. 이러한 식으로, 메모리 디바이스(10)는 언제든 단일 증명서만을 저장하기 위한 공간을 유보할 필요가 있을 것이다.Accordingly, in one embodiment, the host device sends one certificate to the memory device 10 at a time in chain 590. After the certificate is verified, it can be overwritten by the next certificate sent by the host, except for the last certificate in the chain. In this way, the memory device 10 will need to reserve space for storing only a single certificate at any time.

메모리 디바이스는 전체 체인(590)가 언제 수신되었는지를 알 필요가 있을 것이다. 이에 따라, 바람직하게, 마지막 증명서(590(9))는 이것이 체인에 마지막 증명서라는 표시자 혹은 표시를 내포한다. 이 특징은 호스트에 의해 메모리 디바이스(10)에 보내지는 증명서 버퍼 앞에 있는 제어 섹터 내 정보를 나타낸 테이블인 도 25에 도시되었다. 도 25에 도시된 바와 같이, 증명서(590(9))의 제어 섹터는 인수(argument) 이름 "'마지막임' 플래그"을 내포한다. 이어서 메모리 디바이스(10)는 수신된 증명서가 체인에 마지막 증명서인지 판정하기 위해 "마지막임" 플래그가 셋 되어 있는지를 체크함으로써 증명서(590(9))가 체인에 마지막 증명서임을 검증할 수 있다.The memory device will need to know when the entire chain 590 was received. Thus, preferably, the last certificate 590 (9) contains an indicator or indication that this is the last certificate in the chain. This feature is shown in FIG. 25, which is a table showing information in the control sector in front of the certificate buffer sent by the host to the memory device 10. As shown in Fig. 25, the control sector of certificate 590 (9) contains an argument name "'Last' flag". The memory device 10 may then verify that the certificate 590 (9) is the last certificate in the chain by checking whether the "last" flag is set to determine if the received certificate is the last certificate in the chain.

대안적 실시예에서, 체인(590)에 증명서는 하나씩이 아니라 하나, 둘, 혹은 세개 증명서들의 그룹들로 보내질 수도 있다. 자명하게, 다른 개수의 증명서들을 가진 그룹들, 혹은 그룹들 내 동일 수의 증명서들이 사용될 수도 있다. 이에 따라, 체인(590)은 5개의 연속한 스트링들의 증명서들(591, 593, 595, 597, 599)을 포함한다. 스트링들 각각은 적어도 하나의 증명서를 내포한다. 연속한 한 스트링의 증명서들은 체인에 당면의 한 스트링 전에 스트링 다음인 증명서, 체인에 한 스트링 다음에 오는 스트링 바로 다음의 증명서(끝 증명서), 및 시작 증명서와 끝 증명서 간에 모든 증명서들을 스트링을 내포하는 스트링이다. 예를 들면, 스트링(593)은 모든 3개의 증명서들(590(2), 590(3), 590(4))을 내포한다. 5 스트링들의 증명서들은 591, 593, 595, 597 및 599로 끝나는 순서로 메모리 디바이스(10)에 의해 검증된다. 그러므로, 5 스트링들이 메모리 디바이스(10)에 의해 수행되는 검증과 동일 순서로 보내지고 수신된다면, 메모리 디바이스는 스트링들이 검증된 후에 이들 중 어느 것이든 저장할 필요가 없을 것이며, 마지막 스트링은 제외하고 모든 스트링들은 호스트로부터 도착하는 다음 스트링에 의해 덮어 쓰일 수 있다. 이전 실시예에서처럼, 체인에 마지막 증명서임을 나타내기 위해 특정 값으로 설정되는 플래그와 같은 표시자를 체인에 마지막 증명서가 내포하는 것이 바람직하다. 이 실시예에서, 메모리 디바이스는 5 스트링들에서 가장 많은 수의 증명서들을 저장하는데 적절한 공간을 유보하는 것만이 필요할 것이다. 이에 따라, 호스트가 먼저 메모리 디바이스(10)에 가장 긴 스트링을 통지한다면, 메모리 디바이스(10)는 가장 긴 스트링을 위한 충분한 공간을 유보하는 것이 필요할 것이다. In alternative embodiments, the certificates in the chain 590 may be sent in groups of one, two, or three certificates, not one. Obviously, groups with different numbers of certificates, or the same number of certificates in groups may be used. Accordingly, the chain 590 includes five consecutive strings of certificates 591, 593, 595, 597, 599. Each of the strings contains at least one certificate. A sequence of certificates in a string contains a string containing all the certificates between the beginning and ending certificates, the certificate following the string before the current string in the chain, the certificate immediately following the string following the string in the chain (the end certificate). String. For example, string 593 contains all three certificates 590 (2), 590 (3), 590 (4). The five strings of certificates are verified by the memory device 10 in the order ending with 591, 593, 595, 597 and 599. Therefore, if five strings are sent and received in the same order as the verification performed by memory device 10, then the memory device will not need to store any of them after the strings have been verified, and all strings except the last string. They can be overwritten by the next string arriving from the host. As in the previous embodiment, it is desirable for the last certificate to contain an indicator in the chain, such as a flag that is set to a specific value to indicate that it is the last certificate in the chain. In this embodiment, the memory device would only need to reserve adequate space to store the largest number of credentials in five strings. Thus, if the host first notifies memory device 10 of the longest string, memory device 10 will need to reserve enough space for the longest string.

바람직하게, 호스트에 의해 보내진 체인에 각 증명서의 길이는 증명서에 의해 증명되는 공개키의 길이에 4배보다 많지 않다. 마찬가지로, 메모리 디바이스의 공개키를 증명하기 위해 메모리 디바이스(10)에 의해 호스트 디바이스에 보내진 증명서의 길이는 증명서의 증명되는 공개키의 길이에 4배보다 많지 않은 것이 바람직하다.Preferably, the length of each certificate in the chain sent by the host is no more than four times the length of the public key proved by the certificate. Similarly, the length of a certificate sent by the memory device 10 to the host device to prove the public key of the memory device is preferably no more than four times the length of the certificate's certified public key.

증명서 체인들의 검증을 위한 위에 기술된 실시예가 도 26의 흐름도에 도시되었고, 여기서 간단하게 하기 위해서 각 그룹 내 증명서들의 수는 하나인 것으로 가정된다. 도 26에 도시된 바와 같이, 호스트는 체인에 증명서들을 순차적으로 카드에 보낸다. 체인에 제 1 증명서부터 시작하여(전형적으로 위에 설명된 바와 같이 루트 증명서에 이어지는 것). 카드는 인증되고 있는 증명서 체인을 호스트로부터 순차적으로 수신한다(블록 602). 이어서, 카드는 수신된 증명서들 각각을 검증하고 증명서들 어느 증명서든 검증에 실패한다면 프로세스를 중단한다. 증명서들 중 어느 증명서이든 검증에 실패한다면, 카드는 호스트에 통지한다(블록들 604, 606). 이어서 카드는 마지막 증명서가 수신되어 검증되었는지 여부를 검출할 것이다(마름모 608). 마지막 증명서가 수신되어 검증되지 않았다면, 카드는 블록(602)으로 되돌아가 호스트로부터 검증들을 수신하여 검증하는 것을 계속한다. 마지막 증명서가 수신되어 검증되었다면, 카드는 증명서 검증 후에 다음 국면으로 진행한다(610). 이하 도 26에 특징들 및 후속되는 도면들이 예들로서 메모리 카드들을 언급하지만, 메모리 카드가 아닌 물리적 형태들을 가진 메모리 디바이스들에도 이들 특징들이 적용될 수 있음이 이해될 것이다.The above-described embodiment for the verification of certificate chains is shown in the flowchart of FIG. 26, where for simplicity it is assumed that the number of certificates in each group is one. As shown in Fig. 26, the host sequentially sends certificates to the card in the chain. Starting with the first certificate in the chain (typically following the root certificate as described above). The card sequentially receives the certificate chain being authenticated from the host (block 602). The card then verifies each of the received certificates and stops the process if any of the certificates fail to verify. If any of the certificates fail verification, the card notifies the host (blocks 604, 606). The card will then detect whether the last certificate has been received and verified (diamond 608). If the last certificate has not been received and verified, the card returns to block 602 to continue receiving and verifying verifications from the host. If the last certificate has been received and verified, the card proceeds to the next phase after certificate verification (610). Although the features and subsequent figures in FIG. 26 refer to memory cards as examples, it will be appreciated that these features can also be applied to memory devices having physical forms other than a memory card.

카드가 호스트를 인증하고 있을 때 호스트에 의해 수행되는 프로세스가 도 27에 도시되었다. 도 27에 도시된 바와 같이, 호스트는 체인에 다음 증명서를 카드에 보낸다(블록 620)(전형적으로 루트 증명서 다음에 오는 것부터 시작한다). 이어서 호스트는 인증 실패를 나타내는 중단 통지가 카드로부터 수신되었는지를 판정한다(마름모 622). 중단 통지가 수신되었다면, 호스트는 중지한다(블록 624). 중단 통지가 수신되지 않았다면, 호스트는 보내진 마지막 증명서에 "마지막임 플래그" 설정되었는지를 체크함으로써 체인에 마지막 증명서가 보내졌는지를 알기 위해 체 크한다(마름모 626). 마지막 증명서가 보내졌다면, 호스트는 증명서 검증 후에 다음 국면에 진행한다(블록 628). 도 22 및 도 23에 도시된 바와 같이, 다음 국면은 세션 키 생성이 후속되는 시도 응답일 수 있다. 체인에 마지막 증명서가 아직 보내지지 않았다면, 호스트는 블록(620)으로 되돌아가 체인에 다음 증명서를 보낸다.The process performed by the host when the card is authenticating the host is shown in FIG. 27. As shown in FIG. 27, the host sends the next certificate in the chain to the card (block 620) (typically starting after the root certificate). The host then determines whether a break notification from the card has been received indicating diamond authentication failed (diamond 622). If a stop notification has been received, the host stops (block 624). If no interruption notification has been received, the host checks to see if the last certificate was sent in the chain by checking if the last certificate sent was set "last flag" (diamond 626). If the last certificate has been sent, the host proceeds to the next phase after certificate verification (block 628). As shown in Figures 22 and 23, the next phase may be a challenge response followed by session key generation. If the last certificate in the chain has not yet been sent, the host returns to block 620 to send the next certificate in the chain.

카드가 인증되고 있을 때 카드 및 호스트에 의해 취해지는 조치들이 도 28 및 도 29에 도시되었다. 도 28에 도시된 바와 같이, 시작 후에, 카드는 체인에 증명서를 보내기 위해 호스트로부터 요청을 기다린다(블록 630, 마름모 632). 호스트로부터 요청이 수신되지 않으면, 카드는 마름모(632)로 되돌아 갈 것이다. 호스트로부터 요청이 수신되면, 카드는 보내져야 할 제 1 증명서부터 시작하여(전형적으로 루트 증명서 다음의 것부터 시작한다, (블록 634)), 체인에 다음 증명서를 보낼 것이다. 카드는 호스트로부터 실패 통지가 수신되었는지를 결정한다(마름모 636). 실패 통지가 수신되었다면, 카드는 중지한다(블록 637). 어떠한 실패 통지도 수신되지 않으면, 카드는 마지막 증명서가 보내졌는지를 판정한다(마름모 638). 마지막 증명서가 보내지지 않았다면, 카드는 마름모 (632)로 되돌아가서 체인에 다음 증명서를 보내기 위해 호스트로부터 다음 요청을 수신할 때까지 기다린다. 마지막 증명서가 보내졌다면, 카드는 다음 국면으로 진행한다(블록 639).Actions taken by the card and host when the card is being authenticated are shown in FIGS. 28 and 29. As shown in FIG. 28, after initiation, the card waits for a request from the host to send a certificate to the chain (block 630, diamond 632). If no request is received from the host, the card will return to the rhombus 632. When a request is received from the host, the card will send the next certificate in the chain, starting with the first certificate to be sent (typically starting after the root certificate, block 634). The card determines if a failure notification has been received from the host (diamond 636). If a failure notification has been received, the card stops (block 637). If no failure notice is received, the card determines if the last certificate has been sent (diamond 638). If the last certificate has not been sent, the card returns to the rhombus 632 and waits for the next request from the host to send the next certificate in the chain. If the last certificate has been sent, the card proceeds to the next phase (block 639).

도 29는 카드가 인증되고 있을 때 호스트에 의해 취해지는 조치들을 도시한 것이다. 호스트는 보내질 제 1 증명서에 대한 요청부터 시작하여, 체인에 다음 증명서에 대한 요청을 카드에 보낸다(블록 640). 이어서 호스트는 수신된 각 증명서를 검증하고, 프로세스를 중단하고 증명이 실패하면 카드에 통지한다(블록 642). 검증이 통과하면, 호스트는 마지막 증명서가 수신되어 성공적으로 검증되었는지를 알기 위해 체크한다(마름모 644). 마지막 증명서가 수신되어 성공적으로 검증되지 않았다면, 호스트는 블록 640으로 되돌아가 체인에 다음 증명서에 대한 요청을 보낸다. 마지막 증명서가 수신되어 성공적으로 검증되었다면, 호스트는 증명서 검증 후에 다음 국면으로 진행한다(블록 646).29 illustrates the actions taken by the host when the card is being authenticated. The host sends a request to the card for the next certificate in the chain, starting with the request for the first certificate to be sent (block 640). The host then verifies each certificate received, stops the process and notifies the card if the certificate fails (block 642). If the verification passes, the host checks to see if the last certificate has been received and successfully verified (diamond 644). If the last certificate has been received and not successfully verified, the host returns to block 640 to send a request for the next certificate in the chain. If the last certificate has been received and successfully verified, the host proceeds to the next phase after certificate verification (block 646).

증명서 철회Revocation of Certificate

증명서가 발행될 때, 이의 전체 유효 기간동안 사용될 것으로 예상된다. 그러나, 다양한 환경들은 유효 기간의 만기에 앞서 증명서가 무효가 되게 할 수도 있다. 이러한 환경들은 이름의 변경, 주체와 CA간의 연관의 변경(예를 들면, 고용주가 조직에 채용을 종료한다), 및 대응하는 사설키의 손상(compromise) 혹은 의심되는 손상을 포함한다. 이러한 상황들 하에서, CA는 증명서를 철회할 필요가 있다.When a certificate is issued, it is expected to be used for its entire validity period. However, various circumstances may cause the certificate to become invalid prior to the expiration of the validity period. Such circumstances include a change in name, a change in the association between the subject and the CA (eg, the employer terminates employment with the organization), and a compromise or suspected compromise of the corresponding private key. Under these circumstances, the CA needs to revoke the certificate.

SSA는 서로 다른 방법들로 증명서 철회를 할 수 있게 하는데, 각 ACR은 증명서들을 철회하기 위한 특정 방법에 대해 구성될 수 있다. ACR은 철회방법을 지원하지 않게 구성될 수 있다. 이 경우, 각 증명서는 이의 만기일까지 유용한 것으로 간주된다. 아니면 증명서 철회 리스트들(CRL)이 채용될 수도 있다. 또 다른 대안으로서, 철회방법은 특정 애플리케이션에 특유하거나, 혹은 애플리케이션에 특유한 것일 수 있는데, 이에 대해 이하 설명될 것이다. ACR은 철회 값을 명시함으로써 3가지 철회방법들 중 어느 것이 채택될 것인지를 명시한다. ACR이 철회방법 없이 생성된다면, ACR 소유자에 의해 활성화될 수 있는 철회방법을 채택하는 것이 가능하다. 메모리 디바이스 증명서들의 철회는 SSA 보안 시스템이 아니라 호스트에 의해 시행 된다. ACR 소유자는 호스트 루트 증명서의 철회를 관리해야 하며, 이에 의해 행해지는 메커니즘은 ACR의 자격증명서들을 업데이트함으로써 행해진다. SSA allows revocation of certificates in different ways, each ACR can be configured for a specific method for revocation of certificates. The ACR may be configured not to support the revocation method. In this case, each certificate is considered useful until its expiration date. Alternatively certificate revocation lists (CRLs) may be employed. As another alternative, the withdrawal method may be specific to a particular application or may be specific to the application, which will be described below. The ACR specifies which of the three revocation methods will be adopted by specifying the revocation value. If the ACR is created without a revocation method, it is possible to adopt a revocation method that can be activated by the ACR owner. Revocation of memory device certificates is enforced by the host and not by the SSA security system. The ACR owner must manage the revocation of the host root certificate, and the mechanism performed by this is done by updating the ACR's credentials.

증명서 철회 리스트(CRL)Certificate Revocation List (CRL)

SSA 시스템은 각 CA가 증명서 철회 리스트(CRL)이라고 하는 서명된 데이터 구조를 주기적으로 발행하는 것을 수반하는 철회방법을 사용한다. CRL은 CA(해당 증명서들을 발행한 동일 CA)에 의해 서명되고 공중이 자유로이 사용할 수 있게 한 철회된 증명서들을 확인하는 시간 스탬프된 리스트이다. 각각의 철회된 증명서는 이의 증명서 일련번호에 의해 CRL에서 확인된다. CLR의 크기는 임의이며 철회된 비-만기된 증명서들의 수에 따른다. 디바이스가 증명서를 사용할 때(예를 들면, 호스트의 신원을 검증하기 위해), 디바이스는 증명서 서명(및 유효성)을 체크할 뿐만 아니라 CRL을 통해 수신된 일련번호들의 리스트에 대해 이를 검증도 한다. 증명서의 일련번호와 같은 확인 증명서를 발행한 CA에 의해 발행된 CRL에서 발견된다면, 이것은 증명서가 철회되었으며 더 이상 유효하지 않음을 나타낸다.The SSA system uses a revocation method that involves each CA periodically issuing a signed data structure called a certificate revocation list (CRL). The CRL is a time stamped list identifying revoked certificates signed by a CA (the same CA that issued those certificates) and made freely available to the public. Each revoked certificate is identified in the CRL by its certificate serial number. The size of the CLR is arbitrary and depends on the number of non-expired certificates withdrawn. When a device uses a certificate (eg to verify the identity of a host), the device not only checks the certificate signature (and validity) but also verifies it against a list of serial numbers received via a CRL. If found in a CRL issued by the CA that issued the verification certificate, such as the serial number of the certificate, this indicates that the certificate has been revoked and is no longer valid.

또한, CRL은 이것이 증명서들을 유효화하기 위한 목적에 사용하기 위해서 진본인 것으로 검증될 필요가 있을 것이다. CRL들은 CLR을 발행한 CA의 사설키를 사용하여 서명되며, 서명된 CLR을 CA의 공개키를 사용하여 해독함으로써 진본인 것으로 검증될 수 있다. 해독된 CRL이 비서명된 CRL의 다이제스트와 일치한다면, 이것은 CRL이 부정변조되지 않았으며 진본임을 의미한다. CRL들은 해싱 알고리즘을 사용하여 이들의 다이제스트들을 얻기 위해 자주 해시되며 다이제스트들은 CA의 사설키에 의해 암호화된다. CRL이 유효한지 검증하기 위해서, 서명된 CRL(즉, 해시되고 암호화된 CRL)은 CA의 공개키를 사용하여 해독되어 해독되고 해시된 CRL(즉, CLR의 다이제스트)를 내준다. 이어서 이것은 해시된 CRL과 비교된다. 이에 따라 검증 프로세스는 해독되고 해시된 CRL과 비교를 위해 CRL를 해싱하는 단계를 빈번히 수반할 수 있다.In addition, the CRL will need to be verified as authentic in order for it to be used for purposes of validating certificates. CRLs are signed using the CA's private key that issued the CLR and can be verified authentic by decrypting the signed CLR using the CA's public key. If the decrypted CRL matches the digest of the unsigned CRL, this means that the CRL is unmodulated and authentic. CRLs are often hashed to obtain their digests using a hashing algorithm and the digests are encrypted by the CA's private key. To verify that the CRL is valid, the signed CRL (i.e., hashed and encrypted CRL) is decrypted using the CA's public key and decrypted and decrypted and hashed (ie, the digest of the CLR). This is then compared to the hashed CRL. As such, the verification process may frequently involve hashing a CRL for comparison with a decrypted and hashed CRL.

CRL 방법의 특징들 중 하나는 증명서의 정당성(CRL에 대해서)은 CRL를 얻는 것과는 별개로 수행될 수 있다는 것이다. 또한, CRL들은 관계있는 증명서들의 발행자들에 의해 서명되고 위에 기술된 방식으로, CRL들을 발행한 CA들의 공개키들을 사용하여, 증명서들의 검증과 유사한 방식으로 검증된다. 메모리 디바이스는 서명이 CRL의 것이며 CRL의 발행자가 증명서의 발행자와 일치함을 검증한다. CRL 방법의 또 다른 특징은 증명서들 자체들과 정확히 동일한 수단에 의해, 즉, 신뢰되지 않은 서버들 및 신뢰되지 않은 통신들을 통해, CRL들이 분배될 수 있다는 것이다. CRL들 및 이들의 특징들은 X.509 표준에서 상세히 설명된다.One of the features of the CRL method is that the validity of the certificate (relative to the CRL) can be performed separately from obtaining the CRL. In addition, CRLs are signed by the issuers of the relevant certificates and verified in a manner similar to that of the certificates, using the public keys of the CAs that issued the CRLs, in the manner described above. The memory device verifies that the signature is of a CRL and that the issuer of the CRL matches the issuer of the certificate. Another feature of the CRL method is that CRLs can be distributed by exactly the same means as the certificates themselves, ie via untrusted servers and untrusted communications. CRLs and their features are described in detail in the X.509 standard.

CRL을 위한 SSA 기반구조SSA Infrastructure for CRLs

SSA는 CRL 방법을 사용하여 호스트들의 철회를 위한 기반구조를 제공한다. CRL 철회방법으로 RSA 기반 ACR에 인증할 때, 호스트는 추가 필드로서 한 CRL(잠재적으로 -발행자 CA에 의해 어떠한 증명서들도 철회되지 않는다면- 빈 것)을 증명서 셋(Set Certification) 명령에 추가한다. 이 필드는 증명서의 발행자에 의해 서명된 CRL를 내포할 것이다. 이 필드가 있을 때, 메모리 디바이스(10)는 먼저 증명서 준비 명령에서 증명서를 검증한다. CRL 저장소를 얻고 이에 액세스하는 것은 완전히 호스트의 의무이다. CRL들은 이들이 유효한 기간인 기간들(CRL 만기 기간들 혹 은 CET)에 발행된다. 검증 동안에, 현재 시간이 이 기간 내에 있지 않은 것으로 발견된다면, CRL은 결함이 있는 것으로 간주되고, 증명서 검증을 위해 사용될 수 없다. 이때 결과는 증명서의 인증이 실패한다는 것이다.SSA uses the CRL method to provide an infrastructure for revocation of hosts. When authenticating to an RSA-based ACR with the CRL revocation method, the host adds an additional field CRL (potentially-if no certificates are revoked by the issuer CA) to the Set Certification command. This field will contain a CRL signed by the issuer of the certificate. When this field is present, the memory device 10 first verifies the certificate in the certificate preparation command. Obtaining and accessing a CRL repository is entirely the host's obligation. CRLs are issued in periods in which they are valid (CRL expiration periods or CET). During verification, if the current time is found not to be within this period, the CRL is considered defective and cannot be used for certificate verification. The result is that authentication of the certificate fails.

종래의 증명서 검증 방법들에서, 인증 혹은 검증하는 실체는 증명서 당국들(CA)로부터 증명서 철회 리스트들을 소유하거나 검색하여 제시된 증명서가 철회되었는지를 판정하기 위해 인증을 위해 제시된 증명서의 일련번호들을 리스트에 대해 체크할 수 있을 것으로 예상된다. 인증 혹은 검증하는 실체가 메모리 디바이스인 경우, 메모리 디바이스는 CA들로부터 증명서 리스트들을 검색하기 위해 자신이 사용되지 않았을 수도 있다. 증명서 철회 리스트가 디바이스에 사전에 저장되어 있다면, 이러한 리스트는 설치일 후에 철회된 증명서들이 리스트 상에 나타나지 않게 되도록 업데이트될 수도 있다. 이것은 철회된 증명서를 사용하여 사용자들이 저장 디바이스에 액세스할 수 있게 할 것이다. 이것은 바람직하지 못하다.In conventional certificate verification methods, the authenticating or verifying entity owns or retrieves certificate revocation lists from a Certificate Authority (CA) to determine a list of serial numbers of certificates presented for authentication to determine whether a given certificate has been revoked. It is expected to be able to check. If the authenticating or verifying entity is a memory device, the memory device may not have been used by itself to retrieve certificate lists from CAs. If a certificate revocation list has been previously stored on the device, this list may be updated so that the revoked certificates do not appear on the list after the installation date. This will allow users to access the storage device using the revoked certificate. This is not desirable.

위에 문제는 인증되기를 원하는 실체가 메모리 디바이스(10)일 수 있는 인증 실체에 인증되도록 증명서와 함께 증명서 철회 리스트를 제시하는 시스템에 의해 일 실시예에서 해결될 수 있다. 그러면 인증 실체는 증명서 및 수신된 증명서 철회 리스트의 진위를 검증한다. 인증 실체는 증명서의 일련번호와 같은 증명서의 확인이 리스트 상에 있는지를 체크함으로써 증명서가 철회 리스트 상에 있는지를 체크한다.The above problem may be solved in one embodiment by a system presenting a certificate revocation list with a certificate such that the entity that wishes to be authenticated is authenticated to an authentication entity, which may be the memory device 10. The authenticating entity then verifies the authenticity of the certificate and the received certificate revocation list. The authenticating entity checks whether the certificate is on the revocation list by checking whether the certificate, such as the serial number of the certificate, is on the list.

이상에 비추어, 호스트 디바이스와 메모리 디바이스(10)간에 상호 인증을 위해 비대칭 인증 방법이 사용될 수도 있다. 메모리 디바이스(10)에 인증되기를 원하 는 호스트 디바이스는 이의 증명서 체인 및 대응하는 CRL들 둘 다를 제공하는 것을 필요로 할 것이다. 반면, 호스트 디바이스들을 CRL들을 얻기 위해서 CA들에 접속하는데 사용되었으며, 따라서 메모리 디바이스(10)가 호스트 디바이스들에 의해 인증되어야 할 때, 메모리 디바이스는 CLR들을 호스트들의 증명서들 혹은 증명서 체인들과 함께 이들에 제시할 필요가 없다. In view of the above, an asymmetric authentication method may be used for mutual authentication between the host device and the memory device 10. The host device wishing to be authenticated to the memory device 10 will need to provide both its certificate chain and corresponding CRLs. On the other hand, it was used to connect host devices to CAs to obtain CRLs, so when memory device 10 has to be authenticated by the host devices, the memory device may attach the CLRs together with the certificates or certificate chains of the hosts. There is no need to present to.

최근에, 이를테면 서로 다른 내장된 혹은 독자형 음악 플레이어들, mp3 플레이어들, 셀룰라 전화들, PDA들, 및 노트북 컴퓨터들과 같은, 콘텐트를 작동시키는데 사용될 수 있는 늘어나는 수의 서로 다른 유형들의 휴대 디바이스들이 있다. 증명서 당국들로부터 증명서 검증 리스트들에 액세스하기 위해서 월드 와이드 웹에 이러한 디바이스를 연결하는 것이 가능한 반면, 많은 사용자들은 전형적으로 매일 웹에 연결하는 것이 아니라 이를테면 매 몇 주에, 새로운 콘텐트를 얻기 위해서 혹은 가입들을 갱신하기 위해서만 그렇게 할 것이다. 그러므로, 이러한 사용자들이 보다 빈번하게 증명서 당국들로부터 증명서 철회 리스트들을 얻어야 한다는 것은 성가실 수 있다. 이러한 사용자들을 위해서, 증명서 철회 리스트 및 선택적으로, 보호된 콘텐트에 액세스하기 위해 저장 디바이스에 제시될 필요가 있을 호스트 증명서도 저장 디바이스 자체의 바람직하게는 비보호된 영역에 저장될 수도 있다. 많은 유형들의 저장 디바이스들(예를 들면, 플래시 메모리들)에서 저장 디바이스들의 비보호된 영역들은 저장 디바이스들 자체들에 의해서가 아니라 호스트 디바이스들에 의해 관리된다. 이에 따라, 더 최신의 증명서 철회 리스트들을 얻기 위해서 사용자가 웹에 접속해야 할(호스트 디바이스를 통해서) 필요가 없다. 호스트 디바이 스는 간단히 이러한 정보를 저장 디바이스의 비보안 영역으로부터 검색하여 저장 디바이스에 보호된 콘텐트에 액세스하기 위해 저장 혹은 메모리 디바이스에 이러한 증명서 및 리스트를 우회하고 제시할 수도 있다. 보호된 콘텐트 및 이의 대응하는 증명서 철회 리스트에 액세스하기 위해 증명서는 전형적으로 어떤 기간들 동안 유효하기 때문에, 이들이 여전히 유효한 한, 사용자는 최신의 증명서들 혹은 증명서 철회 리스트를 얻을 필요가 없을 것이다. 위에 특징은 업데이트된 정보를 위해 증명서 당국에 접속해야 할 필요없이, 증명서 및 증명서 철회 리스트 둘 다 여전히 유효한 동안 상당히 긴 기간들 동안 이들에 사용자들이 편리하게 액세스할 수 있게 한다.Recently, there has been an increasing number of different types of portable devices that can be used to operate content, such as different built-in or standalone music players, mp3 players, cell phones, PDAs, and notebook computers. have. While it is possible to connect such a device to the World Wide Web to access certificate validation lists from certificate authorities, many users typically do not connect to the web every day, for example every few weeks, to get new content or to subscribe. I will do so only to update them. Therefore, it can be cumbersome for these users to obtain certificate revocation lists from certificate authorities more frequently. For such users, a certificate revocation list and optionally a host certificate that may need to be presented to the storage device to access protected content may also be stored in a preferably unprotected area of the storage device itself. In many types of storage devices (eg flash memories), unprotected areas of the storage devices are managed by the host devices, not by the storage devices themselves. This eliminates the need for the user to connect to the web (via the host device) in order to obtain more recent certificate revocation lists. The host device may simply retrieve this information from the non-secure area of the storage device and bypass and present these credentials and lists to the storage or memory device to access the protected content on the storage device. Because certificates are typically valid for some periods of time to access protected content and their corresponding certificate revocation lists, users will not need to obtain the latest certificates or certificate revocation lists as long as they are still valid. The above feature allows users to conveniently access them for fairly long periods of time while both the certificate and the certificate revocation list are still valid, without having to contact a certificate authority for updated information.

위에 기술된 프로세스가 도 30 및 도 31에 흐름도들로 도시되었다. 도 30에 도시된 바와 같이, 호스트(24)는 인증을 위해 메모리 디바이스에 호스트가 제시할 증명서에 관계된 CRL을 메모리 디바이스(10)의 비보안된 공개 영역으로부터 독출한다(블록 652). CRL이 메모리의 비보안된 영역에 저장되어 있기 때문에, CRL이 호스트에 의해 얻어질 수 있기 전에 인증할 필요는 없다. CRL이 메모리 디바이스의 공개 영역에 저장되어 있기 때문에, CRL의 독출은 호스트 디바이스(24)에 의해 제어된다. 이어서 호스트는 검증될 증명서와 함께 CLR을 메모리 디바이스에 보내고(블록 654) 메모리 디바이스(10)로부터 실패 통지를 수신하지 않는다면 다음 국면으로 진행한다(블록 656). 도 31을 참조하면, 메모리 디바이스는 CRL 및 증명서를 호스트로부터 수신하고(블록 658) 증명서 일련번호가 CLR에 있는지와, 뿐만 아니라 다른 점들에서(예를 들면, CRL이 만기되었는지를) 체크한다(블록 660). 증명서 일련 번호가 CRL에서 발견되거나 다른 이유들로 실패한다면, 메모리 디바이스는 호스트에 실패 통지를 보낸다(블록 662). 이에 따라, 서로 다른 호스트들은 동일 CRL이 서로 다른 호스트들의 인증을 위해 사용될 수 있기 때문에, 메모리 디바이스의 공개 영역에 저장된 CLR을 얻을 수 있다. 위에 언급된 바와 같이, CRL을 사용하여 검증될 증명서는 사용자의 편의를 위해 바람직하게는 메모리 디바이스(10)의 보안된된 영역에 CLR과 함께 저장될 수도 있다. 그러나, 증명서는 호스트에 의해서만 증명서가 발행되는 메모리 디바이스에 인증을 위해 사용될 수 있다.The process described above is shown in flow charts in FIGS. 30 and 31. As shown in FIG. 30, the host 24 reads from the unsecured public area of the memory device 10 the CRL associated with the certificate that the host will present to the memory device for authentication (block 652). Since the CRL is stored in an unsecured area of memory, there is no need to authenticate before the CRL can be obtained by the host. Since the CRL is stored in the open area of the memory device, the reading of the CRL is controlled by the host device 24. The host then sends a CLR to the memory device with the certificate to be verified (block 654) and proceeds to the next phase if it does not receive a failure notification from the memory device 10 (block 656). Referring to Figure 31, the memory device receives a CRL and a certificate from the host (block 658) and checks whether the certificate serial number is in the CLR as well as in other respects (e.g., the CRL has expired) (block 660). If the certificate serial number is found in the CRL or fails for other reasons, the memory device sends a failure notification to the host (block 662). Accordingly, different hosts can obtain a CLR stored in the public area of the memory device because the same CRL can be used for authentication of different hosts. As mentioned above, the certificate to be verified using the CRL may be stored with the CLR, preferably in a secured area of the memory device 10, for the convenience of the user. However, the certificate can be used for authentication to the memory device for which the certificate is issued only by the host.

CRL이 이의 필드들에 도 32에 도시된 바와 같이 다음 업데이트를 위한 시간을 내포하는 경우, 디바이스(10)에 SSA는 현재 시간이 이 시간 후인지를 알기 위해 이 시간에 대해 현재 시간을 체크하고, 그러하다면, 인증은 실패한다. 이에 따라 SSA는 현재 시간에 대해(혹은 CRL이 메모리 디바이스(10)에 의해 수신될 때의 시간에 대해) CET 뿐만 아니라 다음 업데이트에 대한 시간 모두 체크한다.If the CRL contains time for the next update in its fields as shown in FIG. 32, the SSA in device 10 checks the current time against this time to see if the current time is after this time, If so, authentication fails. Accordingly, the SSA checks both the time for the next update as well as the CET for the current time (or for the time when the CRL is received by the memory device 10).

위에 언급된 바와 같이, CRL이 철회된 증명서들의 긴 리스트의 확인들을 내포한다면, 호스트에 의해 제시된 증명서의 일련번호에 대해 리스트를 처리하고(예를 들면 해싱) 탐색하는 것은, 특히 처리 및 탐색이 순차로 수행된다면, 긴 기간이 걸릴 수 있다. 이에 따라 프로세스를 가속시키기 위해서, 이들은 동시에 수행될 수도 있다. 또한, 전체 CRL이 처리되어 탐색되기 전에 수신될 필요가 있다면, 프로세스는 시간 소비적이 될 수도 있다. 출원인은 프로세스가 CRL의 처리 및 탐색 부분들이 수신될 때(동작중에) 이들에 의해 급송될 수 있고, 따라서 CRL의 마지막 부분 수신되었을 때 프로세스는 거의 완료될 것임을 인식하였다.As mentioned above, if the CRL implies confirmation of a long list of revoked certificates, processing (e.g., hashing) the list against the serial number of the certificate presented by the host is a process and search in particular If done, it may take a long time. Thus, in order to accelerate the process, they may be performed simultaneously. Also, if the entire CRL needs to be received before being processed and searched, the process may be time consuming. Applicants have recognized that a process can be dispatched by them when the processing and search portions of a CRL are received (in operation), so that when the last portion of the CRL is received, the process will be nearly complete.

도 33 및 도 34는 철회방법들의 위의 특징들을 도시한 것이다. 인증 실체(예를 들면, 메모리 카드와 같은 메모리 디바이스)에서, 증명서 및 CRL은 인증되기를 원하는 실체로부터 수신된다(블록 702). 암호화되지 않은 CRL의 부분들이 처리되고(예를 들면 해시되고) 제시된 증명서의 확인(예를 들면, 일련번호)을 위해 동시에 이러한 부분들에 대해 탐색이 수행된다. 처리된(예를 들면 해시된) CRL 부분들은 해시된 완전한 CRL에 컴파일되는데, 이것은 인증되기를 원하는 실체로부터 수신된 부분들로부터 해독된 CRL 부분들을 컴파일함으로써 형성된 완전한 해독 및 해시된 CRL과 비교된다. 비교에서 일치가 없음을 비교가 나타낸다면 인증은 실패한다. 인증 실체는 현재 시간에 대한 CET뿐만 아니라 다음 업데이트를 위한 시간 둘 다를 체크한다(블록들 706, 708). 인증은 제시된 증명서의 확인이 CLR에서 발견되거나, 현재 시간이 CET 내에 있지 않거나, 다음 업데이트된 CRL에 대한 시간이 지났다면 실패한다(블록 710). 어떤 구현들에서 컴파일을 위해 해시된 CRL 부분들 및 해독된 해시된 CRL 부분들을 저장하는 것은 큰 량의 메모리 공간을 요구하지 않을 수 있다.33 and 34 show the above features of the retraction methods. In an authentication entity (eg, a memory device such as a memory card), a certificate and a CRL are received from an entity that wishes to be authenticated (block 702). Parts of the unencrypted CRL are processed (eg hashed) and a search is performed on these parts at the same time for verification of the presented certificate (eg serial number). Processed (eg hashed) CRL portions are compiled into a hashed complete CRL, which is compared to a complete decrypted and hashed CRL formed by compiling CRL portions decrypted from portions received from an entity wishing to be authenticated. If the comparison indicates that there is no match in the comparison, authentication fails. The authenticating entity checks both the CET for the current time as well as the time for the next update (blocks 706, 708). Authentication fails if the verification of the presented certificate is found in the CLR, the current time is not within the CET, or the time for the next updated CRL has passed (block 710). In some implementations storing the hashed CRL portions and the decrypted hashed CRL portions for compilation may not require a large amount of memory space.

실체(예를 들면, 호스트)가 인증되기를 원할 때, 이의 증명서 및 CRL을 인증실체에 보낼 것이며(블록 722), 다음 국면으로 진행한다(블록 724). 이것이 도 34에 도시되었다.When an entity (eg, a host) wants to be authenticated, its certificate and CRL are sent to the authentication entity (block 722) and proceed to the next phase (block 724). This is shown in FIG. 34.

전술한 바와 유사한 프로세스는 실체가 인증을 위해 증명서 체인을 제시한다면 구현될 수 있다. 이러한 이벤트에서, 위에 기술된 프로세스는 체인에 각 증명서에 대해 이의 대응하는 CRL과 함께 반복될 필요가 있을 것이다. 각 증명서 및 이의 CRL은 이들이, 증명서 체인의 나머지 및 이들의 대응하는 CRL들의 수신을 기다림이 없이 수신될 때 처리될 수 있다. A process similar to that described above may be implemented if an entity presents a certificate chain for authentication. In this event, the process described above will need to be repeated with its corresponding CRL for each certificate in the chain. Each certificate and its CRLs can be processed when they are received without waiting for the receipt of the rest of the certificate chain and their corresponding CRLs.

신원 객체(IDO)Identity object (IDO)

신원 객체는 플래시 메모리 카드와 같은 메모리 디바이스(10)가 RSA 키-쌍 혹은 이외 다른 유형들의 크립토그래픽 ID들을 저장할 수 있게 설계된 보호된 객체이다. 신원 객체는 신원들을 서명하고 검증하며 데이터를 암호화하고 해독하는데 사용될 수 있는 임의의 유형의 크립토그래픽 ID를 포함한다. 또한, 신원 객체는 키 쌍에 공개키가 진본임을 증명하는 CA로부터의 증명서(혹은 복수의 CA들로부터의 증명서 체인)을 포함하다. 신원 객체는 외부 실체 혹은 내부 카드 실체(즉, 신원 객체의 소유자라고도 하는 디바이스 자체, 내부 애플리케이션 등)의 신원의 증거를 제공하는데 사용될 수 있다. 그러므로, 카드는 시도 응답 메커니즘을 통해 호스트를 인증하기 위해 RSA 키-쌍 혹은 이외 다른 유형들의 크립토그래픽 ID들을 사용하는 것이 아니라, 그에 제공된 데이터 스트림들 서명을 통한 확인의 증거로서 사용한다. 신원 객체에 크립토그래픽 ID에 액세스하기 위해서, 호스트는 먼저 인증될 필요가 있을 것이다. 이하 기술된 바와 같이, 인증 프로세스는 ACR에 의해 제어된다. 호스트가 성공적으로 인증된 후에, 크립토그래픽 ID는 또 다른 당사자에 소유자의 신원을 확정하기 위해 신원 객체 소유자에 의해 사용될 수 있다. 예를 들면, 크립토그래픽 ID(예를 들면, 공개-사설 키 쌍의 사설키)는 다른 당사자에 의해 호스트를 통해 제시된 데이터를 서명하는데 사용될 수 있다. 서명된 데이터 및 신원 객체에 증명서는 다른 당사자에 신원 객체 소유자 대신에 제시된다. 증명서에 공개 -사설 키 쌍의 공개키는 CA(즉, 신뢰된 당국)에 의해 진본인 것으로 증명되고, 따라서 다른 당사자는 이 공개키가 진본임을 신뢰할 수 있다. 이어서 다른 당사자는 서명된 데이터를 증명서에 공개키를 사용하여 해독하고 해독된 데이터를 다른 당사자에 의해 보내진 데이터와 비교할 수 있다. 해독된 데이터가 다른 당사자에 의해 보내진 데이터와 일치한다면, 이것은 신원 객체의 소유자가 진본 사설키에 액세스할 수 있고 따라서 이것이 그러함을 나타내는 사실상의 실체이다.The identity object is a protected object designed to allow memory device 10, such as a flash memory card, to store RSA key-pairs or other types of cryptographic IDs. The identity object contains any type of cryptographic ID that can be used to sign and verify identities and to encrypt and decrypt data. The identity object also contains a certificate from the CA (or certificate chain from multiple CAs) that proves that the public key is authentic in the key pair. The identity object may be used to provide evidence of the identity of an external entity or internal card entity (ie, the device itself, also known as the owner of the identity object, internal application, etc.). Therefore, the card does not use RSA key-pairs or other types of cryptographic IDs to authenticate the host via the challenge response mechanism, but rather as evidence of verification through the data stream signatures provided thereto. In order to access the cryptographic ID to the identity object, the host will first need to be authenticated. As described below, the authentication process is controlled by the ACR. After the host has been successfully authenticated, the cryptographic ID can be used by the identity object owner to establish the identity of the owner to another party. For example, a cryptographic ID (eg, a private key of a public-private key pair) can be used to sign data presented through the host by another party. Certificates on signed data and identity objects are presented to other parties on behalf of the identity object owner. The public key of the public-private key pair in the certificate is proved to be authentic by the CA (i.e., a trusted authority), so that other parties can trust that the public key is authentic. The other party can then decrypt the signed data using the public key in the certificate and compare the decrypted data with the data sent by the other party. If the decrypted data matches the data sent by the other party, this is a de facto entity that indicates that the owner of the identity object has access to the true private key and thus it is.

신원 객체의 두 번째 사용은 RSA 키 자체와 같은 크립토그래픽 ID를 사용하여 IDO의 소유자에 지정된 데이터를 보호하는 것이다. 데이터는 IDO 공개키를 사용하여 암호화될 것으로 예상된다. 메모리 카드와 같은 메모리 디바이스(10)는 데이터를 해독하기 위해 사설키를 사용할 것이다.The second use of the identity object is to protect the data assigned to the owner of the IDO using a cryptographic ID, such as the RSA key itself. The data is expected to be encrypted using the IDO public key. Memory device 10, such as a memory card, will use the private key to decrypt the data.

IDO는 임의의 유형의 ACR에 대해 생성될 수 있는 객체이다. 일 실시예에서, ACR은 단지 하나의 IDO 객체만을 가질 수도 있다. 데이터 서명 및 보호 특징들 둘 다는 SSA 시스템이 ACR에 인증할 수 있는 임의의 실체에 제공하는 서비스들이다. IDO의 보호 레벨은 ACR의 로그인 인증 방법만큼 높다. IDO를 가질 ACR에 대해 임의의 인증 알고리즘이 선택될 수 있다. 어떤 알고리즘이 IDO 사용을 더 잘 보호할 수 있는지를 판단하는 것은 생성자(호스트)에게 달려있다. IDO를 가진 ACR은 이의 증명서 체인을 IDO 공개키를 얻기 위한 명령에 응하여 제공한다.IDOs are objects that can be created for any type of ACR. In one embodiment, an ACR may have only one IDO object. Both data signing and protection features are services that the SSA system provides to any entity that can authenticate to the ACR. The protection level of IDO is as high as the login authentication method of ACR. Any authentication algorithm can be selected for an ACR that will have an IDO. It is up to the constructor (host) to determine which algorithm can better protect IDO usage. An ACR with an IDO provides its certificate chain in response to a command to obtain an IDO public key.

IDO가 데이터 보호를 위해 사용되고 있을 때, 카드로부터 출력된 해독된 데이터는 더 보호를 필요로 할 수 있다. 이러한 경우에, 호스트는 가용 인증 알고리즘들 중 어느 것을 통해 확립된 보안 채널을 사용하기로 결정한다.When IDO is being used for data protection, decrypted data output from the card may require further protection. In this case, the host decides to use the secure channel established through any of the available authentication algorithms.

IDO를 생성할 때, PKCS#1 버전뿐만 아니라 키 길이가 선택된다. 일 실시예에서, 공개키 및 사설키는 PKCS#1 버전 2.1에 정의된 바와 같이 (지수, 모듈러) 표현을 사용한다.When generating an IDO, the key length is chosen as well as the PKCS # 1 version. In one embodiment, the public and private keys use the (exponential, modular) representation as defined in PKCS # 1 version 2.1.

일 실시예에서, IDO의 생성 동안 포함된 데이터는 선택된 길이에 RSA 키 쌍, 및 공개키의 진위를, 재귀적으로, 증명하는 증명서들의 체인이다. In one embodiment, the data included during generation of the IDO is a chain of certificates that, recursively, prove the authenticity of the RSA key pair and the public key at a selected length.

IDO를 소유하는 ACR은 사용자 데이터의 서명을 허용할 것이다. 이것은 두 개의 SSA 명령들을 통해 행해진다.The ACR owning the IDO will allow signing user data. This is done via two SSA commands.

. 셋(Set) 사용자 데이터: 서명될 자유 포맷의 데이터 버퍼를 제공한다.. Set user data: Provides a free formatted data buffer to be signed.

. 겟(Get) SSA 서명. 카드는 RSA 서명을 제공할 것이다(ACR 사설키를 사용하여). 서명의 포맷 및 크기는 객체 유형에 따라 PKCS#1 버전 1.5 혹은 버전2.1에 따라 설정될 수 있다. . Get SSA signature. The card will provide an RSA signature (using an ACR private key). The format and size of the signature can be set according to PKCS # 1 version 1.5 or version 2.1, depending on the object type.

IDO를 사용하는 동작이 도 35 내지 도 37에 도시되었는데, 여기서 메모리 디바이스(10)는 플래시 메모리 카드이며, 카드는 IDO의 소유자이다. 도 35는 호스트에 보내진 데이터를 서명함에 있어 카드에 의해 수행되는 프로세스를 도시한다. 도 35를 참조하면, 위에 기술된 나무 구조의 노드에 ACR에 의해 제어되는 바와 같이 호스트가 인증된 후에(블록 802), 카드는 증명서에 대한 호스트 요청을 기다린다(마름모 804). 요청을 수신한 후에, 카드는 증명서를 보내고 다음 호스트 요청을 위해 마름모 804로 되돌아간다(블록 806). 증명서들의 체인이 카드에 의해 소유된 IDO의 공개키를 증명하기 위해 보내질 필요가 있다면, 위에 작업들은 체인에 모든 증명서들이 호스트에 보내질 때까지 반복된다. 각 증명서가 호스트에 보내진 후에, 카드는 호스트로부터 다른 명령들을 기다린다(마름모 808). 기설정된 기간 내에 호스트로부터 어떠한 명령도 수신되지 않는다면, 카드는 마름모(804)로 되돌아간다. 호스트로부터 데이터 및 명령을 수신하였을 때, 카드는 명령이 데이터를 서명하기 위한 것인지(마름모 810)를 알기 위해 체크한다. 명령이 데이터를 서명하기 위한 것이라면, 카드는 IDO에 사설키로 데이터를 서명하고 이어서 서명될 데이터를 호스트에 보내고(블록 812) 마름모 804로 되돌아간다. 호스트로부터 명령이 호스트로부터 데이터를 서명하기 위한 것이 아니라면, 카드는 수신된 데이터를 해독하기 위해 IDO에 사설키를 사용하고(블록 814), 마름모 804로 되돌아간다.Operations using IDOs are shown in FIGS. 35-37, where memory device 10 is a flash memory card, and the card is the owner of IDO. 35 illustrates a process performed by a card in signing data sent to a host. Referring to Figure 35, after the host is authenticated (block 802) as controlled by the ACR at the node of the tree structure described above (block 802), the card waits for a host request for a certificate (diamond 804). After receiving the request, the card sends a certificate and returns to diamond 804 for the next host request (block 806). If a chain of certificates needs to be sent to prove the IDO's public key owned by the card, the above operations are repeated until all certificates in the chain have been sent to the host. After each certificate is sent to the host, the card waits for other commands from the host (diamond 808). If no command is received from the host within the predetermined time period, the card returns to the rhombus 804. Upon receiving data and commands from the host, the card checks to see if the command is for signing data (diamond 810). If the command is to sign data, the card signs the data with the private key to the IDO and then sends the data to be signed to the host (block 812) and returns to diamond 804. If the command from the host is not for signing data from the host, the card uses the private key in IDO to decrypt the received data (block 814) and returns to diamond 804.

도 36은 호스트에 보내질 데이터에 대해 카드가 서명함에 있어 호스트에 의해 수행되는 프로세스를 도시한다. 도 36을 참조하면, 호스트는 인증 정보를 카드에 보낸다(블록 822). 위에 기술된 나무 구조의 노드에 ACR에 의해 제어된 성공적 인증 후에, 호스트는 증명서 체인에 대한 요청들을 카드에 보내고 체인을 수신한다(블록 824). 카드의 공개키가 검증된 후에, 호스트는 서명하기 위해 카드에 데이터를 보내고 카드의 사설키에 의해 서명된 데이터를 수신한다(블록 826).36 illustrates a process performed by a host in signing a card for data to be sent to the host. Referring to FIG. 36, the host sends authentication information to the card (block 822). After successful authentication controlled by the ACR to the node of the tree structure described above, the host sends requests for the certificate chain to the card and receives the chain (block 824). After the card's public key is verified, the host sends data to the card for signing and receives data signed by the card's private key (block 826).

도 37은 호스트가 카드의 공개키를 사용하여 데이터를 암호화하고 암호화된 데이터를 카드에 보낼 때 호스트에 의해 수행되는 프로세스를 도시한다. 도 37을 참조하면, 호스트는 인증 정보를 카드에 보낸다(블록 862). ACR에 의해 제어된 인증이 성공적으로 수행된 후에, 호스트는 IDO에 카드의 공개키를 검증하는데 필요한 증명서 체인에 대한 요청들을 카드에 보내고(블록 864), 데이터에 대한 요청들을 카드에 보낸다. IDO에 카드의 공개키가 검증된 후에, 호스트는 카드의 검증된 공개 키를 사용하여 카드로부터 데이터를 암호화하고 이를 카드에 보낸다(블록들 866, 868).37 shows a process performed by the host when the host encrypts the data using the card's public key and sends the encrypted data to the card. Referring to FIG. 37, the host sends authentication information to the card (block 862). After the authentication controlled by the ACR is successfully performed, the host sends a request to the card for the certificate chain needed to verify the card's public key to the IDO (block 864), and sends requests for data to the card. After the card's public key is verified in IDO, the host encrypts the data from the card using the card's verified public key and sends it to the card (blocks 866, 868).

조회들Views

호스트들 및 애플리케이션들은 시스템 동작들을 실행하기 위해서 이들이 함께 작동하고 있는 메모리 디바이스 혹은 카드에 관한 어떤 정보를 소유할 필요가 있다. 예를 들면, 호스트들 및 애플리케이션들은 메모리 카드에 저장된 어떤 애플리케이션들이 기동을 위해 사용가능한지를 알 필요가 있을 수 있다. 호스트에 의해 필요로 되는 정보는 종종 공개 지식이 아니며 이는 모든 사람이 이를 소유할 권한이 있는 것은 아님을 의미한다. 따라서, 권한이 있는 사용자와 권한이 없는 사용자간을 차별하기 위해서, 호스트에 의해 사용될 수 있는 조회들의 2가지 방법들을 제공할 필요성이 있다.Hosts and applications need to possess some information about the memory device or card they are working with in order to perform system operations. For example, hosts and applications may need to know which applications stored on the memory card are available for launching. The information needed by a host is often not public knowledge, which means that not everyone is authorized to own it. Thus, there is a need to provide two methods of lookups that can be used by the host to differentiate between authorized and unauthorized users.

일반적인 정보 조회General Information Lookup

이 조회는 제약들이 없이 시스템 공개 정보를 제공한다. 메모리 디바이스들에 저장된 기밀정보는 공유부분 및 비공유 부분인 2부분들을 포함한다. 기밀정보의 한 부분은 개개의 실체들에 전유일 수 있고 따라서 다른 실체들의 전유 기밀정보에 액세스할 수는 없이, 자신의 전유 정보만을 액세스하는 것이 각 실체에게 허용되어야 하는 정보를 포함한다. 이러한 유형의 기밀정보는 공유되지 않으며 기밀정보의 비공유된 부분을 형성한다.This query provides system disclosure information without restrictions. Confidential information stored in memory devices includes two portions, a shared portion and a non-shared portion. One part of the confidential information may be proprietary to the individual entities and thus contain information that should be allowed for each entity to access only its own proprietary information, without being able to access the proprietary information of the other entities. This type of confidential information is not shared and forms a non-shared part of the confidential information.

공개되는 것으로 보통 생각된 어떤 정보는 어떤 경우들에 있어서는 카드에 상주하는 애플리케이션들의 이름들 및 이들의 생활주기 상태와 같이 기밀로서 간주 될 수도 있을 것이다. 이에 대한 또 다른 예는 공개되는 것으로 간주되나 어떤 SSA 사용 경우들에 있어선 기밀일 수도 있을 루트 ACR 이름들일 수도 있을 것이다. 이들 경우들에 있어서 시스템은 일반 정보 조회에 응하여, 비인증된 사용자들이 아닌, 모든 인증된 사용자들만이 이 정보를 계속하여 사용할 수 있게 하는 선택을 제공할 것이다. 이러한 정보는 기밀정보의 공유 부분을 구성한다. 기밀정보의 공유부분의 예는 루트 ACR 리스트 - 디바이스 상에 현재 있는 모든 루트 ACR들의 리스트를 포함한다.Any information commonly thought to be disclosed may in some cases be considered confidential, such as the names of the applications residing on the card and their life cycle status. Another example of this may be the root ACR names, which are considered to be public but may be confidential in some SSA use cases. In these cases, the system will provide a choice to allow all authenticated users to continue using this information in response to the general information query, and not to unauthorized users. Such information constitutes a shared part of confidential information. An example of a shared portion of confidential information includes a root ACR list-a list of all root ACRs currently on the device.

일반 정보 조회를 통해 공개 정보에의 액세스는 호스트/사용자가 ACR에 로그인할 필요가 없다. 이에 따라 SSA 표준에 해박한 어느 누구이든 정보를 실행하고 수신할 수 있다. SSA 용어들에서 이 조회명령은 세션 번호없이 취급된다. 그러나, 실체에 의한 기밀정보의 공유부분에의 액세스가 요망된다면, 실체는 메모리 디바이스에 데이터에 액세스를 제어하는 제어구조들 중 어느 것(예를 들면, ACR들 중 어느 것)을 통해 먼저 인증될 필요가 있다. 성공적 인증 후에, 실체는 일반 정보 조회를 통해 기밀정보의 공유부분에 액세스할 수 있을 것이다. 위에 설명된 바와 같이, 인증 프로세스는 액세스를 위한 SSA 세션번호 혹은 id를 제공하게 될 것이다.Access to public information via general information lookup does not require the host / user to log in to the ACR. This allows anyone who is compliant with the SSA standard to execute and receive information. In SSA terms this inquiry command is treated without a session number. However, if access to the shared portion of confidential information by the entity is desired, the entity may first be authenticated via any of the control structures (eg, any of the ACRs) that control access to the data to the memory device. There is a need. After successful authentication, the entity will be able to access the shared part of the confidential information through a general information query. As described above, the authentication process will provide an SSA session number or id for access.

디스크리트 정보 조회Discrete Information Query

개개의 ACR들 및 이들의 시스템 액세스 및 자산들에 관한 사설 정보는 디스크리트인 것으로 간주되고 명확한 인증을 필요로 한다. 따라서 이러한 종류의 조회는 정보 조회에 대한 인증을 받기 전에 ACR 로그인 및 인증(인증이 ACR에 의해 명시된다면)을 요구한다. 이 조회는 SSA 세션 번호를 필요로 한다.Private information about individual ACRs and their system access and assets is considered discrete and requires explicit authentication. Therefore, this kind of inquiry requires ACR login and authentication (if authentication is specified by ACR) before being authenticated for the information inquiry. This query requires an SSA session number.

2가지 유형들의 조회들이 상세히 기술되기 전에, 조회들을 구현하기 위한 실제적 해결책으로서 색인 그룹들의 개념을 먼저 기술하는 것이 유용할 것이다.Before the two types of queries are described in detail, it will be useful to first describe the concept of index groups as a practical solution for implementing the queries.

색인 그룹들Index groups

잠재적 SSA 호스트들에서 작동하는 애플리케이션들은 독출하고자 하는 섹터들의 수를 명시하기 위해 호스트 상에 운영 시스템(OS) 및 시스템 구동기들에 의해 요청된다. 이때 이것은 호스트 애플리케이션들이 모든 SSA 독출동작을 위해 얼마나 많은 섹터들이 독출될 필요가 있는지 알 필요가 있음을 의미한다. Applications running on potential SSA hosts are requested by the operating system (OS) and system drivers on the host to specify the number of sectors to read. This means that the host applications need to know how many sectors need to be read for every SSA read operation.

조회 동작들의 특성은 정보를 요청하는 자에게 일반적으로 알려지지 않은 정보를 공급하는 것이기 때문에, 호스트 애플리케이션이 조회를 발행하고 이 동작을 위해 필요한 섹터들의 량을 추측하는 어려움이 있다.Because the nature of the lookup operations is to supply unknown information to the person requesting the information, there is a difficulty for the host application to issue a lookup and estimate the amount of sectors required for this operation.

이 문제를 해결하기 위해서 SSA 조회 출력 버퍼는 조회 요청 당 단지 하나의 섹터(512 바이트)로 구성된다. 출력정보의 부분인 객체들은 색인 그룹들이라고 하는 것으로 조직된다. 각 유형의 객체는 단일 섹터에 들어맞을 수 있는 객체들의 수를 고려하는 다른 바이트 크기를 가질 수도 있다. 이것은 이 객체의 색인 그룹을 정의한다. 객체가 20바이트의 크기를 가졌다면 이 객체에 대한 색인 그룹은 25 객체들까지를 내포할 것이다. 총 56개의 이러한 객체들이 있었다면 이들은 3개의 색인 그룹들로 조직되었을 것이며 여기서 객체 '0'(제 1 객체)은 제 1 색인 그룹을 시작할 것이며, 객체 '25'는 제 2 색인 그룹을 시작할 것이며 객체 50은 제 3 및 마지막 색인 그룹을 시작할 것이다.To solve this problem, the SSA lookup output buffer consists of only one sector (512 bytes) per lookup request. Objects that are part of the output information are organized into what are called index groups. Each type of object may have a different byte size that takes into account the number of objects that can fit into a single sector. This defines the index group for this object. If the object had a size of 20 bytes, the index group for this object would contain up to 25 objects. If there were a total of 56 such objects, they would be organized into three index groups, where object '0' (the first object) would start the first index group, object '25' would start the second index group, and object 50 Will start the third and last index group.

시스템 조회 (일반 정보 조회)System Lookup (General Information Lookup)

이 조회는 디바이스 내 지원된 SSA 시스템 및 서로 다른 나무들 및 디바이스에 작동하는 애플리케이션들처럼 셋업되는 현재 시스템에 관한 일반 공개 정보를 제공한다. 이하 기술되는 ACR 조회(디스크리트 조회)와 유사하게, 시스템 조회는 몇 개의 조회 선택들로 구성된다:This query provides general public information about the supported SSA system in the device and the current system being set up like different trees and applications running on the device. Similar to the ACR query (discrete query) described below, the system query consists of several query choices:

. 일반 - SSA 지원 버전.. General-SSA Supported Versions.

. SSA 애플리케이션 - 동작상태를 포함하여 디바이스 상에 현재 있는 모든 SSA 애플리세이션들의 리스트. . SSA Applications-A list of all SSA applications currently on the device, including their operational state.

위에 나열된 정보는 공개 정보이다. ACR 조회에서처럼, 조회 출력 버퍼에 대해 독출하기 위해 얼마나 많은 섹터들이 있어야 하는지를 호스트가 알 필요성을 없게 하기 위해서, 호스트가 여전히 추가의 색인 그룹들을 더 조회할 수 있게 하면서도 디바이스로부터 역으로 보내진 한 섹터가 있을 것이다. 따라서, 루트 ACR의 수가 색인 그룹 '0'에 대한 출력 버퍼 크기의 수를 초과한다면 호스트는 다음 색인 그룹('1')과 함께 또 다른 조회 요청을 보낼 수 있다.The information listed above is public information. As in the ACR lookup, there is one sector sent back from the device while still allowing the host to look up additional index groups so that the host does not need to know how many sectors there must be to read to the lookup output buffer. will be. Thus, if the number of root ACRs exceeds the number of output buffer sizes for index group '0', the host may send another query request with the next index group '1'.

ACR 조회 (디스크리트 정보 조회)ACR inquiry (discrete information inquiry)

SSA ACR 조회 명령은 키 및 애플리케이션 ID들, 파티션들 및 자식 ACR들과 같은 ACR의 시스템 자원들에 관한 정보를 ACR 사용자에게 공급하기 위한 것이다. 조회 정보는 로그인 된 ACR에 관한 것일 뿐이며 시스템 나무 상에 다른 ACR들에 관한 것은 아무것도 없다. 즉, 액세스는 연루된 ACR의 허가들 하에 액세스될 수 있는 기밀 정보의 부분만으로 제한된다.The SSA ACR Lookup command is for supplying ACR user with information about ACR system resources such as key and application IDs, partitions and child ACRs. The query information is only about the logged-in ACR and nothing about the other ACRs on the system tree. That is, access is limited to only the portion of confidential information that can be accessed under the permissions of the ACR involved.

사용자가 조회할 수 있는 3개의 서로 다른 ACR 객체들이 있다.There are three different ACR objects that the user can look up.

. 파티션들 - 이름 및 액세스 권한들(소유자, 독출, 기입).. Partitions-name and access rights (owner, read, write).

. 키 ID들 및 애플리케이션 ID들 - 이름 및 액세스 권한들(소유자, 독출, 기입). Key IDs and Application IDs-Name and Access Rights (Owner, Read, Write)

. 자식 ACR들 - 직계 자식 ACR의 ACR 및 AGP 이름.. Child ACRs-ACR and AGP names of direct child ACRs.

. IDO들 및 보안 데이터 객체들(이하 기술됨) - 이름 및 액세스 권한들(소유자, 독출, 기입). IDOs and secure data objects (described below)-name and access rights (owner, read, write)

ACR에 연결된 객체들의 수는 다양하기 때문에, 정보는 512 바이트 - 한 섹터보다 더 많을 수도 있을 것이다. 객체들의 수를 미리 알 필요없이, 사용자는 전체 리스트를 얻기 위해서 디바이스 내 SSA 시스템으로부터 얼마나 많은 섹터들이 독출되는 것이 필요한지를 알 방법은 없다. 따라서 SSA 시스템에 의해 제공된 각각의 개체 리스트는 위에 기술된 시스템 조회들의 경우와 유사하게, 색인 그룹들로 분할된다. 색인 그룹은 섹터에 들어맞는 객체들의 수, 즉 디바이스 내 SSA 시스템으로부터 호스트에 한 섹터로 얼마나 많은 객체들이 보내질 수 있는가 하는 것이다. 이것은 디바이스 내 SSA 시스템이 요청된 색인 그룹의 한 섹터를 보내게 하다. 호스트/사용자는 조회된 객체들의 버퍼, 즉 버퍼에 객체들의 수를 수신할 것이다. 버퍼가 충만되면 사용자는 다음 객체 색인 그룹에 대해 조회할 수 있다.Since the number of objects connected to the ACR varies, the information may be more than 512 bytes-one sector. Without knowing the number of objects in advance, there is no way for the user to know how many sectors need to be read from the SSA system in the device to get a full list. Thus, each entity list provided by the SSA system is divided into index groups, similar to the case of the system queries described above. The index group is the number of objects that fit into a sector, that is, how many objects can be sent from a SSA system in a device to a host in a sector. This causes the SSA system in the device to send a sector of the requested index group. The host / user will receive a buffer of objects queried, ie the number of objects in the buffer. Once the buffer is full, the user can query for the next object index group.

도 38은 일반 정보 조회를 수반하는 동작을 도시한 흐름도이다. 도 38을 참조하면, SSA 시스템이 실체로부터 일반 정보 조회를 수신할 때(블록 902), 시스템은 실체가 인증되었는지 여부를 판정한다(마름모 904). 그렇다면, 시스템은 공개 정보 및 기밀정보의 공유부분을 실체에 공급한다(블록 906). 그렇지 않았다면, 시 스템은 실체에 공개정보만을 공급한다(블록 908).38 is a flowchart illustrating an operation involving general information inquiry. Referring to FIG. 38, when the SSA system receives a general information query from an entity (block 902), the system determines whether the entity is authenticated (diamond 904). If so, the system supplies the shared portion of the public and confidential information to the entity (block 906). If not, the system supplies only public information to the entity (block 908).

도 39는 디스크리트 정보 조회를 수반하는 동작을 도시한 흐름도이다. 도 39를 참조하면, SSA 시스템이 실체로부터 디스크리트 정보 조회를 수신하였을 때(블록 922), 시스템은 실체가 인증되었는지를 판정한다(마름모 924). 그렇다면, 시스템은 실체에 기밀정보를 공급한다(블록 926). 그렇지 않았다면, 시스템은 기밀정보에 실체의 액세스를 거절한다(블록 928).39 is a flowchart showing an operation involving a discrete information inquiry. Referring to FIG. 39, when the SSA system receives a discrete information query from an entity (block 922), the system determines whether the entity is authenticated (diamond 924). If so, the system supplies confidential information to the entity (block 926). If not, the system denies the entity access to the confidential information (block 928).

특징 셋 확장(FSE)Feature Set Extension (FSE)

많은 경우들에 있어서, 카드상에 SSA 내부에서 데이터 처리 활동들(예를 들면, DRM 라이센스 객체 정당성)을 실행시키는 것이 매우 이점이 있다. 결과적인 시스템은 더 보안적이고, 더 효율적이고, 모든 데이터 처리 임무들이 호스트에서 실행되는 대안적 해결책에 관하여 호스트에 덜 의존적이 될 것이다.In many cases, it is very advantageous to execute data processing activities (eg, DRM license object justification) inside the SSA on the card. The resulting system will be more secure, more efficient, and less dependent on the host with respect to alternative solutions where all data processing tasks are executed on the host.

SSA 보안 시스템은 메모리 카드에 의해 저장되고, 관리되고 보호되는 일군의 객체들에의 액세스 및 이의 사용을 제어하게 설계된 한 세트의 인증 알고리즘들 및 인증 정책들을 포함한다. 일단 호스트가 액세스할 수 있게 되면, 호스트는 메모리 디바이스에 저장된 데이터에 대해 프로세스들을 수행할 것이며, 여기서 메모리 디바이스에의 액세스는 SSA에 의해 제어된다. 그러나, 데이터는 본래 매우 애플리케이션에 특정한 것이고 따라서 디바이스들 상에 저장된 데이터를 다루지 않는 SSA에는 데이터 포맷도 데이터 처리도 정의되어 있지 않은 것으로 가정된다. The SSA security system includes a set of authentication algorithms and authentication policies designed to control access to and use of a group of objects stored, managed, and protected by a memory card. Once the host becomes accessible, the host will perform processes on the data stored in the memory device, where access to the memory device is controlled by the SSA. However, it is assumed that data is inherently very application specific and therefore neither data format nor data processing is defined in the SSA which does not handle data stored on devices.

발명의 일 실시예는 호스트들에 의해 정규로 수행되는 기능들 중 일부를 호스트들이 메모리 카드에서 실행할 수 있게 하도록 SSA 시스템이 강화될 수 있다는 인식에 기초한다. 그러므로 호스트들의 소프트웨어 기능들 중 일부는 두 부분들로 분할될 수 있는데, 한 부분은 호스트들에 의해 여전히 수행되는 것이고 다른 한 부분은 이제 카드에 의해 수행된다. 이것은 많은 애플리케이션들에 대한 데이터 처리의 보안 및 효율을 강화한다. 이 목적을 위해서, FSE로서 알려진 메커니즘이 SSA의 능력들을 강화하기 위해 추가될 수 있다. 이러한 식으로 카드에 의해 실행되는 FSE에 호스트 애플리케이션들은 여기에서는 내부 애플리케이션, 혹은 디바이스 내부 애플리케이션들이라고도 한다.One embodiment of the invention is based on the recognition that an SSA system can be enhanced to allow hosts to execute on a memory card some of the functions normally performed by the hosts. Thus some of the software functions of the hosts can be divided into two parts, one part still being performed by the hosts and the other part now being performed by the card. This enhances the security and efficiency of data processing for many applications. For this purpose, a mechanism known as FSE can be added to enhance the capabilities of the SSA. Host applications in the FSE executed by the card in this way are also referred to herein as internal applications or device internal applications.

강화된 SSA 시스템은 기본 SSA 명령 세트를 확장하는 메커니즘을 제공하는데, 이것은 카드 애플리케이션의 도입을 통해 카드의 인증 및 액세스 제어를 제공한다. 카드 애플리케이션은 SSA의 서비스들 외에도 서비스들(예를 들면, DRM 방법들, 전자 상거래들)을 구현하는 것으로 가정된다. SSA 특징 셋 확장(FSE)은 전유일 수 있는 데이터 처리 소프트웨어/하드웨어 모듈들에 의해 표준 SSA 보안 시스템을 강화하게 설계된 메커니즘이다. SSA FSE 시스템에 의해 정의된 서비스들은 가용한 애플리케이션에 대해 호스트 디바이스들이 카드를 조회하고, 위에 기술된 조회들을 사용하여 얻어질 수 있는 정보 외에도, 특정 애플리케이션을 선택하고 이와 통신할 수 있게 한다. 위에 기술된 일반 및 디스크리트 조회들은 이 목적을 위해 사용될 수 있다. The enhanced SSA system provides a mechanism to extend the basic SSA instruction set, which provides card authentication and access control through the introduction of card applications. The card application is assumed to implement services (eg DRM methods, e-commerce) in addition to the services of the SSA. SSA Feature Set Extension (FSE) is a mechanism designed to enhance standard SSA security systems by proprietary data processing software / hardware modules. Services defined by the SSA FSE system allow host devices to query the card for available applications and to select and communicate with a particular application in addition to the information that can be obtained using the queries described above. The general and discrete queries described above can be used for this purpose.

SSA FSE에 설정된 카드 특징을 확장하기 위해 두 가지 방법들이 이용된다:Two methods are used to extend the card features set in the SSA FSE:

. 서비스들을 제공 - 이 특징은 전유일 수 있는 통신 파이프로서 알려진 명령 채널을 사용하여 권한있는 실체들이 내부 애플리케이션과 직접 통신할 수 있게 함으로써 활성화된다.. Providing Services-This feature is activated by allowing authorized entities to communicate directly with internal applications using a command channel known as a proprietary communication pipe.

. SSA 표준 액세스 제어 정책들의 확장들 - 이 특징은 내부에 보호된 데이터 객체들(예를 들면, CEK들, 보안 데이터 객체들 혹은 이하 기술되는 SDO들)을 내부 카드 애플리케이션들에 연관시킴으로써 활성화된다. 이러한 객체가 액세스될 때마다, 정의된 표준 SSA 정책들이 만족된다면, 연관된 애플리케이션이 기동되고 그럼으로써 표준 SSA 정책들 외에도 적어도 하나의 조건을 부가한다. 이 조건은 바람직하게는 표준 SSA 정책들과 충돌하지 않을 것이다. 액세스는 이 추가의 조건도 만족될 경우에만 승인된다. FSE의 능력들을 더 자세히 하기 전에, 통신 파이프 및 SDO 뿐만 아니라 SFE의 구조적 면들이 이제 기술될 것이다. SSM 모듈 및 관계된 모듈들 . Extensions of SSA Standard Access Control Policies—This feature is activated by associating internally protected data objects (eg, CEKs, secure data objects or SDOs described below) with internal card applications. Each time such an object is accessed, if the defined standard SSA policies are satisfied, the associated application is launched, thereby adding at least one condition in addition to the standard SSA policies. This condition will preferably not conflict with standard SSA policies. Access is granted only if this additional condition is also met. Before further discussing the capabilities of the FSE, the structural aspects of SFE as well as communication pipes and SDOs will now be described. SSM Module and Related Modules

도 40a는 발명의 실시예를 예시하기 위해 호스트 디바이스(24)에 접속된 메모리 디바이스(10)(이를테면 플래시 메모리 카드) 내 시스템 구조(1000)의 기능 블록도이다. 카드(20)의 메모리 디바이스에 소프트웨어 모듈들의 주 성분들은 다음과 같다.40A is a functional block diagram of a system structure 1000 in a memory device 10 (such as a flash memory card) connected to a host device 24 to illustrate an embodiment of the invention. The main components of the software modules in the memory device of the card 20 are as follows.

SSA 수송층(1002)SSA Transport Layer 1002

SSA 수송층은 카드 프로토콜에 의존한다. 이것은 카드(10)의 프로토콜층 상에 호스트측 SSA 요청들(명령들)을 취급하며 이어서 이들은 SSM API에 넘긴다. 모든 호스트-카드 동기화 및 SSA 명령 식별은 이 모듈에서 행해진다. 수송층은 호스트(24)와 카드(10)간에 모든 SSA 데이터 전송을 맡는다.The SSA transport layer depends on the card protocol. It handles host side SSA requests (commands) on the protocol layer of card 10 and then passes them to the SSM API. All host-card synchronization and SSA command identification is done in this module. The transport layer handles all SSA data transfers between the host 24 and the card 10.

보안 서비스 모듈 코어(SSM 코어)(1004)Security Service Module Core (SSM Core) (1004)

이 모듈은 SSA 구현의 중요한 부분이다. SSM 코어는 SSA 구조를 구현한다. 구체적으로 SSM 코어는 SSA 나무 및 ACR 시스템과 시스템을 구성하는 위에 기술된 모든 대응하는 규칙들을 구현한다. SSM 코어 모듈들은 암호화, 해독 및 해싱과 같은, SSA 보안 및 크립토그래픽 특징들을 지원하기 위해 크립토그래픽 라이브러리(1012)를 사용한다.This module is an important part of the SSA implementation. The SSM core implements the SSA architecture. Specifically, the SSM core implements all the corresponding rules described above that make up the system with the SSA tree and ACR system. SSM core modules use cryptographic library 1012 to support SSA security and cryptographic features, such as encryption, decryption, and hashing.

SM 코어 API(1006)SM Core API (1006)

이것은 호스트 및 내부 애플리케이션들이 SSA 동작들을 수행하기 위해 SSM 코어와 인터페이스 할 층이다. 도 40a에 도시된 바와 같이, 호스트(24) 및 내부 디바이스 애플리케이션들(1010) 둘 다는 동일 API를 사용할 것이다.This is the layer where the host and internal applications will interface with the SSM core to perform SSA operations. As shown in FIG. 40A, both host 24 and internal device applications 1010 will use the same API.

보안 애플리케이션 관리자 모듈(SAMM)(1008)Security Application Manager Module (SAMM) (1008)

SAMM은 SSA 시스템의 부분이 아니라 SSA 시스템과 인터페이스하는 내부 디바이스 애플리케이션들을 제어하는 카드에서 중요한 모듈이다.The SAMM is not a part of the SSA system, but an important module in the card that controls the internal device applications that interface with the SSA system.

SAMM은 다음을 포함하는 실행 애플리케이션들을 실행하는 모든 내부 디바이스를 관리한다.SAMM manages all internal devices running running applications, including:

1. 애플리케이션 수명 모니터 및 제어.1. Monitor and control application life.

2. 애플리케이션 초기화.2. Initialize the application.

3. 애플리케이션/호스트/SSM 인터페이스3. Application / Host / SSM Interface

디바이스 내부 애플리케이션(1010)Device Internal Application (1010)

이들은 카드 측에서 동작하는 것이 승인된 애플리케이션들이다. 이들은 SAMM에 의해 관리되며 SSA 시스템에 액세스할 수 있다. SSM 코어는 또한, 호스트측 애플리케이션들과 내부 애플리케이션들간에 통신 파이프를 제공한다. 이러한 내부 동 작 애플리케이션들에 대한 예들은 DRM 애플리케이션들 및 후술하는 바와 같은 일회용 패스워드(OTP) 애플리케이션들이다.These are applications authorized to operate on the card side. They are managed by SAMM and can access the SSA system. The SSM core also provides a communication pipe between host side applications and internal applications. Examples of such internal operation applications are DRM applications and one time password (OTP) applications as described below.

디바이스 관리 시스템(DMS)(1011)Device Management System (DMS) 1011

이것은 후 출하(일반적으로 후 발행이라고도 함) 모드에서, 추가/제거 서비스들뿐만 아니라 카드의 시스템 및 애플리케이션 펌웨어를 업데이트하는데 필요한 프로세스들 및 프로토콜들을 내포하는 모듈이다.This is a module that, in post-release (commonly referred to as post-issue) mode, contains the processes and protocols needed to update the card's system and application firmware, as well as add / remove services.

도 40b는 SSM 코어(1004)의 내부 소프트웨어 모듈들의 기능 블록도이다. 도 40b에 도시된 바와 같이, 코어(1004)는 SSA 명령 핸들러(1022)를 포함한다. 핸들러(1022)는 호스트로부터 혹은 디바이스 내부 애플리케이션들(1010)으로부터 기원하는 SSA 명령들을, 이 명령들이 SSA 관리자(1024)에 전달되기 전에, 파싱(parse)한다. 모든 SSA 규칙들 및 정책들뿐만 아니라 AGP들 및 ACR들과 같은 모든 SSA 보안 데이터 구조들은 SSA 데이터베이스(1026)에 저장된다. SSA 관리자(1024)는 ACR들 및 AGP들에 의해 발휘되는 제어 및 데이터베이스(1026)에 저장된 그외 제어 구조들을 이행한다. IDO들, 및 보안 데이터 객체들과 같은 그외 객체들도 SSA 데이터베이스(1026)에 저장된다. SSA 관리자(1024)는 ACR들 및 AGP들에 의해 발휘되는 제어 및 데이터베이스(1026)에 저장된 그외 제어 구조들을 이행한다. SSA를 수반하지 않는 비보안 동작들은 SSA 비보안 동작 모듈(1028)에 의해 취급된다. SSA 구조 하에 보안 동작들은 SSA 보안 동작 모듈(1030)에 의해 취급된다. 모듈(1032)은 모듈(1030)을 크립토그래픽 라이브러리(1012)에 연결하는 인터페이스이다. 1034는 도 1에서 플래시 메모리(20)에 모듈들을(1026, 1028) 연결하는 층이다.40B is a functional block diagram of internal software modules of the SSM core 1004. As shown in FIG. 40B, core 1004 includes SSA command handler 1022. Handler 1022 parses SSA commands originating from the host or from device internal applications 1010 before these commands are passed to SSA manager 1024. All SSA security data structures, such as AGPs and ACRs, as well as all SSA rules and policies, are stored in the SSA database 1026. SSA manager 1024 implements the controls exercised by ACRs and AGPs and other control structures stored in database 1026. Other objects, such as IDOs and secure data objects, are also stored in the SSA database 1026. SSA manager 1024 implements the controls exercised by ACRs and AGPs and other control structures stored in database 1026. Non-secure operations that do not involve SSA are handled by the SSA non-secure operation module 1028. Security operations under the SSA structure are handled by the SSA secure operation module 1030. Module 1032 is an interface that connects module 1030 to cryptographic library 1012. 1034 is a layer connecting the modules 1026, 1028 to the flash memory 20 in FIG. 1.

통신(또는 패스-스루(Pass-Through)) 파이프Communication (or Pass-Through) Pipe

패스-스루 파이프 객체들은 SSM 코어 및 SAMM에 의해 제어되는 바와 같이, 권한이 있는 호스트측 실체들이 내부 애플리케이션들과 통신할 수 있게 한다. 호스트와 내부 애플리케이션 간에 데이터 전송은 SEND 및 RECEIVE 명령들(이하 정의됨)에 의해 전달된다. 실제 명령들은 애플리케이션에 특정하다. 파이프를 생성하는 실체(ACR)는 파이프 이름 및 채널을 오픈할 애플리케이션의 ID를 제공할 필요가 있을 것이다. 이외 모든 다른 보호된 객체들에서처럼, ACR은 이이 소유자가 되며 소유권뿐만 아니라 사용권한들을 표준 위임 규칙들 및 제약들에 따라 다른 ACR에 위임하는 것이 허용된다.Pass-through pipe objects allow authorized host-side entities to communicate with internal applications, as controlled by the SSM core and SAMM. Data transfers between the host and internal applications are carried by the SEND and RECEIVE commands (defined below). The actual commands are application specific. The entity creating the pipe (ACR) will need to provide the pipe name and ID of the application to open the channel. As with all other protected objects, the ACR is the owner and is allowed to delegate permissions as well as ownership to other ACRs according to standard delegation rules and restrictions.

인증된 실체는 CREATE_PIPE 허가들이 그의 ACAM에 설정되어 있다면 파이프 객체들을 생성하는 것이 허용될 것이다. 내부 애플리케이션과의 통신은 이의 PCR에 기입 혹은 독출 파이프 허가들이 설정되어 있을 경우에만 허용될 것이다. 소유권 및 액세스 권한 위임은 이의 PCR에 파이프 소유자 혹은 위임 액세스 권한들이 설정되어 있을 경우에만 허용된다. 그외 모든 다른 허가들에서처럼 소유권 권한들을 다른 ACR에 위임할 때, 원소유자는 바람직하게는 이 디바이스 애플리케이션에 대한 모든 자신의 허가들이 없어질 것이다.An authenticated entity will be allowed to create pipe objects if CREATE_PIPE permissions are set in its ACAM. Communication with the internal application will only be allowed if write or read pipe permissions are set in its PCR. Ownership and access delegation are only allowed if the pipe owner or delegation access rights are set in its PCR. When delegating ownership rights to other ACRs, as in all other permissions, the element owner will preferably lose all his permissions for this device application.

바람직하게 단지 한 통신 파이프만이 특정 애플리케이션에 대해 생성된다. 제 2 파이프를 생성하고 이를 이미 접속된 애플리케이션에 접속하려는 시도는 바람직하게는 SSM 시스템(1000)에 의해 거절될 것이다. 이에 따라, 바람직하게 디바이스 내부 애플리케이션들(1010) 중 하나와 통신 파이프간에 1 대 1 관계가 있다. 그 러나, 복수의 ACR들은 한 디바이스 내부 애플리케이션과 통신할 수 있다(위임 메커니즘을 통해). 단일 ACR은 몇 개의 디바이스 애플리케이션들과 통신할 수 있다(위임 혹은 서로 다른 애플리케이션들에 연결된 복수의 파이프들의 소유권을 통해서). 서로 다른 파이프들을 제어하는 ACR들은 바람직하게는 완전히 분리된 나무들의 노드들에 위치되므로, 통신 파이프 간에 크로스토크는 없다.Preferably only one communication pipe is created for a particular application. Attempts to create a second pipe and connect it to an already connected application will preferably be rejected by the SSM system 1000. Accordingly, there is preferably a one-to-one relationship between one of the device internal applications 1010 and the communication pipe. However, multiple ACRs can communicate with one device internal application (via a delegation mechanism). A single ACR can communicate with several device applications (via delegation or ownership of multiple pipes connected to different applications). ACRs controlling different pipes are preferably located at nodes of completely separate trees, so there is no crosstalk between communication pipes.

호스트와 특정 애플리케이션간에 데이터를 전송하는 것은 다음 명령들을 사용하여 행해진다.Transferring data between the host and a particular application is done using the following commands.

. 기입 패스 스루 - 호스트에서 디바이스 내부 애플리케이션로 비-포맷된 데이터 버퍼를 전송할 것이다. . Write passthrough-will send a non-formatted data buffer from the host to the device internal application.

. 독출 패스 스루 - 호스트에서 디바이스 내부 애플리케이션으로 비-포맷된 데이터 버퍼를 전송할 것이며, 일단 내부 처리가 행해지면, 비-포맷된 데이터 버퍼를 다시 호스트로 출력할 것이다.. Read Pass Through-Sends a non-formatted data buffer from the host to the device internal application, and once internal processing is performed, it will output the non-formatted data buffer back to the host.

기입 및 독출 패스 스루 명령들은 디바이스 호스트들이 통신하기를 원하는 내부 애플리케이션(1008)의 ID를 파라미터로서 제공한다. 실체들 허가는 유효화될 것이며 요청하는 실체(즉, 이 실체를 사용하고 있는 세션을 호스트하는 ACR)이 요청된 애플리케이션에 접속된 파이프를 사용할 허가를 갖는다면 데이터 버퍼가 해석되고 명령이 실행될 것이다.Write and read pass through commands provide the parameter of the internal application 1008 with which the device hosts want to communicate. Entity permissions will be validated and the data buffer will be interpreted and the command executed if the requesting entity (ie the ACR hosting the session using this entity) has permission to use the pipe connected to the requested application.

이 통신방법은 벤더/전유에 특정한 명령들을 SSA ACR 세션 채널을 통해 내부 디바이스 애플리케이션에 호스트 애플리케이션이 전달할 수 있게 한다.This communication method allows the host application to pass vendor / proprietary-specific commands to the internal device application via the SSA ACR session channel.

보안 데이터 객체(SDO)Secure Data Objects (SDOs)

FSE와 함께 채용될 수 있는 유용한 객체는 SDO이다.A useful object that can be employed with FSE is SDO.

SDO는 민감 정보의 보안 저장을 위한 범용 컨테이너로서 사용된다. CEK 객체들과 유사하게, 이것은 ACR에 의해 소유되며, 액세스 권한들 및 소유권은 ACR들간에 위임될 수 있다. 이것은 기정의된 정책 제약들에 따라 보호되고 사용되며, 선택적으로, 디바이스 내부 애플리케이션(1008)에의 링크를 갖는 데이터를 포함한다. 민감 데이터는 바람직하게는 SSA 시스템에 의해서 사용되거나 해석되는 것이 아니라 객체의 소유자 및 사용자들에 의해 사용되거나 해석된다. 즉, SSA 시스템은 이에 의해 취급되는 데이터 내 정보를 분별하지 않는다. 따라서, 객체 내 데이터의 소유자들 및 사용자들은 데이터가 호스트들과 데이터 객체들간에 전달될 때, SSA 시스템과의 인터페이스에 기인하여 민감 정보의 유실에 관해 덜 우려할 수 있다. 그러므로, SDO 객체들은 호스트 시스템(혹은 내부 애플리케이션들)에 의해 생성되며 SEK들이 생성되는 방법과 유사하게 스트링 ID가 할당된다. 생성시 호스트는 이름 외에도, SDO에 링크되는 애플리케이션을 위한 애플리케이션 ID 및 SSA에 의해 저장되고, 무결성이 검증되고, 검색될 데이터 블록을 제공한다. SDO is used as a general purpose container for secure storage of sensitive information. Similar to CEK objects, it is owned by the ACR, and access rights and ownership can be delegated between ACRs. This is protected and used in accordance with predefined policy constraints, and optionally includes data with a link to the device internal application 1008. Sensitive data is preferably used or interpreted by the owner and users of the object, rather than being used or interpreted by the SSA system. That is, the SSA system does not discern information in the data handled by it. Thus, owners and users of data in an object may be less concerned about the loss of sensitive information due to the interface with the SSA system when data is passed between hosts and data objects. Therefore, SDO objects are created by the host system (or internal applications) and assigned a string ID similar to how SEKs are created. Upon creation, the host provides, in addition to its name, a block of data to be stored, integrity verified, and retrieved by the SSA and the application ID for the application linked to the SDO.

CEK들과 유사하게, SDO(들)은 바람직하게는 SSA 세션 내에서만 생성된다. 세션을 여는데 사용되는 ACR은 SDO의 소유자가 되며 이를 삭제하고, 민감 데이터를 기입 및 독출하고, 뿐만 아니라, 소유권 및 SDO에 액세스할 허가를 또 다른 ACR(이의 자식 혹은 동일 AGP 내)에 위임하는 권한들을 갖는다.Similar to CEKs, SDO (s) are preferably created only within an SSA session. The ACR used to open the session becomes the owner of the SDO and deletes it, writes and reads sensitive data, as well as delegates ownership and permission to access the SDO to another ACR (its child or within the same AGP). Have permissions.

기입 및 독출 동작들은 SDO의 소유자를 위해서만 독점적으로 유보된다. 기입 동작은 현존의 SDO 객체 데이터를 제공된 데이터 버퍼로 덮어씌운다. 독출 동작은 SDO의 완전한 데이터 레코드를 검색할 것이다.Write and read operations are reserved exclusively for the owner of the SDO. The write operation overwrites existing SDO object data with the provided data buffer. The read operation will retrieve the complete data record of the SDO.

SDO 액세스 동작들은 적합한 액세스 허가들을 갖는 비-소유자 ACR들에게 허용된다. 다음 동작들이 정의된다. SDO access operations are allowed for non-owner ACRs with appropriate access permissions. The following actions are defined.

. SDO 셋, 애플리케이션 ID가 정의된다: 데이터는 애플리케이션 ID로 내부 SSA 애플리케이션에 의해 처리될 것이다. 애플리케이션은 SDO에 연관에 의해 기동된다. 선택적 결과로서, 애플리케이션은 SDO 객체를 기입할 것이다.. The SDO set, the application ID, is defined: the data will be processed by the internal SSA application with the application ID. The application is launched by associating with SDO. As an optional result, the application will write the SDO object.

. SDO 셋, 애플리케이션 ID가 눌(null)이다: 이 선택은 유효하지 않으며 일리걸(illegal) 명령 오류를 프롬프트할 것이다. 셋 명령은 카드에서 동작하는 내부 애플리케이션을 필요로 한다.. SDO Set, Application ID is null: This selection is not valid and will prompt for a illegal command error. The set command requires an internal application running on the card.

. SDO 겟(Get), 애플리케이션 ID가 정의된다: 요청은 애플리케이션 ID로 디바이스 내부 애플리케이션에 의해 처리될 것이다. 애플리케이션은 SDO에 연관에 의해 기동된다. 정의되지 않을지라도 출력은 요청자에게 다시 보내질 것이다. 애플리케이션은 선택적으로 SDO 객체를 독출할 것이다.. SDO Get, Application ID is defined: The request will be processed by the device internal application with the Application ID. The application is launched by associating with SDO. Although not defined, output will be sent back to the requestor. The application will optionally read the SDO object.

. SDO 겟, 애플리케이션 ID가 눌이다: 이 선택은 유효하지 않으며 일리걸 명령 오류를 프롬프트할 것이다. 겟 명령은 카드에서 동작하는 내부 애플리케이션을 필요로 한다.. SDO Get, Application ID is pressed: This selection is not valid and will prompt you for a command error. The get command requires an internal application running on the card.

. SDO에 관계된 허가들: ACR은 SDO 소유자일 수 있으며 혹은 액세스 허가들만을 가질 수 있다(셋, 겟 혹은 둘 다). 또한, ACR은 그의 액세스 권한들을, 소유하지 않은 SDO에, 즉 또 다른 ACR에 전달하는 것이 허가될 수 있다. ACR은 SDO(들)을 생성하는 것이, 그리고 ACAM 허가를 갖고 있다면 액세스 권한들을 위임하는 것 이 명확하게 허가될 수 있다.. Authorizations Related to SDOs: An ACR can be an SDO owner or only have access permissions (set, get or both). In addition, an ACR may be authorized to transfer its access rights to an unowned SDO, ie another ACR. The ACR may be specifically authorized to create SDO (s), and delegate access rights if it has ACAM permission.

내부 ACRInternal ACR

내부 ACR은 디바이스(10)에 외부 실체들이 이 ACR에 로그인할 수 없다는 것을 제외하고, PCR을 가진 임의의 ACR과 유사하다. 대신에, 도 40b의 SSA 관리자(1024)는 이의 제어하에 객체들 혹은 이에 연관된 애플리케이션들이 기동될 때 내부 ACR에 자동으로 로그인한다. 액세스를 얻으려고 시도하는 실체는 카드 혹은 메모리 디바이스 내부에 실체이기 때문에, 인증할 필요가 없다. SSA 관리자(1024)는 내부 통신을 할 수 있게 간단히 내부 ACR에 세션 키를 전달할 것이다.The inner ACR is similar to any ACR with a PCR, except that external entities in the device 10 cannot log in to this ACR. Instead, the SSA manager 1024 of FIG. 40B automatically logs in to the internal ACR when objects or applications associated with it are launched under its control. Since the entity attempting to gain access is the entity inside the card or memory device, there is no need to authenticate. SSA manager 1024 will simply pass the session key to internal ACR for internal communication.

FSE의 능력들은 일회용 패스워드 생성 및 디지털 권한 관리의 2개의 예들을 사용하여 예시될 것이다. 일회용 패스워드 생성 예가 기술되기 전에, 이중 요소 인증의 문제가 먼저 해결될 것이다.The capabilities of the FSE will be illustrated using two examples of one time password generation and digital rights management. Before the one-time password generation example is described, the problem of two-factor authentication will be solved first.

OTP 실시예OTP Example

이중 요소 인증(DFA)Two-Factor Authentication (DFA)

DFA는 예로서 웹 서비스 서버에 개인적 로그인들의 보안을, 표준 사용자 자격증명서들(즉 사용자 이름 및 패스워드)에 추가의 비밀, 즉 "제 2 요소"를 추가함으로써 강화하게 설계된 인증 프로토콜이다. 제 2 비밀은 전형적으로 사용자가 소유하고 있는 물리적 보안 토큰에 저장된 어떤 것이다. 로그인 프로세스 동안 사용자는 로그인 자격증명서의 부분으로서 소유의 증거를 제공할 필요가 있다. 소유를 증명하는 공통적으로 사용되는 방법은 일회용 패스워드(OTP), 즉 보안 토큰에 의해 생성되고 이로부터 출력되는, 단일 로그인에만 소용되는 패스워드를 사용하는 것이 다. 사용자가 정확한 OTP를 제공할 수 있다면 이것은 토큰없이는 OTP를 계산하는 것이 크립토그래픽적으로 실행불가능하기 때문에 토큰의 소유의 충분한 증거로서 간주된다. OTP는 단지 한 로그인에만 소용되기 때문에, 사용자는 이전 로그인으로부터 취득된 이전 패스워드의 사용이 더 이상 소용될 수 없기 않을 것이기 때문에 로그인할 때 토큰이 있어야 한다.DFA is an authentication protocol designed to enhance the security of personal logins, for example, on a web service server by adding an additional secret, or "second element," to standard user credentials (ie username and password). The second secret is typically something stored in a physical security token owned by the user. During the login process, the user needs to provide proof of ownership as part of the login credential. A commonly used method of proving ownership is to use a one-time password (OTP), a password that is used only for a single login, generated by and output from a security token. If the user can provide the correct OTP, this is considered sufficient proof of ownership of the token because it is not cryptographically feasible to calculate the OTP without the token. Since OTP only works for one login, the user must have a token when logging in because the use of the old password obtained from the previous login will no longer work.

다음 절들에서 기술되는 제품은 복수의 "가상" 보안 토큰들로서 각각은 서로 다른 일련의 패스워드들(서로 다른 웹 사이트들에 로그인하기 위해 사용될 수 있는)을 생성하는 이들 토큰들을 가진 플래시 메모리 카드를 구현하기 위해서, SSA 보안 데이터 구조와, 이에 더하여 OTP 시리즈에서 다음 패스워드를 계산하기 위한 FSE 설계를 이용하고 있다. 이 시스템의 블록도가 도 41에 도시되었다.The products described in the following sections are a plurality of "virtual" security tokens, each of which implements a flash memory card with these tokens generating a different set of passwords (which can be used to log in to different web sites). To do this, the SSA security data structure is used, as well as the FSE design for calculating the next password in the OTP series. A block diagram of this system is shown in FIG. 41.

완전한 시스템(1050)은 인증 서버(1052), 인터넷 서버(1054) 및 토큰(1058)을 가진 사용자(1056)를 포함한다. 제 1 단계는 인증서버와 사용자간에 공유된 비밀(시드(seed) 제공이라고 함)에 관해 동의하는 것이다. 사용자(1056)는 발행된 비밀 혹은 시드를 요청할 것이며 이를 보안 토큰(1058)에 저장할 것이다. 다음 단계는 발행된 비밀 혹은 시드를 특정 웹 서비스 서버에 결부시키는 것이다. 일단 이것이 행해지면, 인증이 행해질 수 있다. 사용자는 OTP를 생성할 것을 토큰에 지시할 것이다. 사용자 이름 및 패스워드와 함께 OTP는 인터넷 서버(1054)에 보내진다. 인터넷 서버(1054)는 사용자 신원을 검증할 것을 요청하는 인증서버(1052)에 OTP를 보낸다. 인증서버는 OTP도 생성할 것이며, 이것은 토큰과 함께 공유된 비밀로부터 생성되기 때문에, 토큰으로부터 생성된 OTP와 일치해야 한다. 일치가 발견된다면 사용자 신원은 검증되며 인증서버는 인터넷 서버(1054)에 긍정확인응답(positive acknowledgement)를 리턴하여 사용자 로그인 프로세스를 완료할 것이다.The complete system 1050 includes a user 1056 having an authentication server 1052, an internet server 1054, and a token 1058. The first step is to agree on a secret (called seed provisioning) shared between the authentication server and the user. User 1056 will request the secret or seed issued and store it in security token 1058. The next step is to associate the published secret or seed with a particular web service server. Once this is done, authentication can be done. The user will tell the token to create an OTP. The OTP along with the username and password are sent to an internet server 1054. The Internet server 1054 sends an OTP to the authentication server 1052 requesting to verify the user's identity. The authentication server will also generate an OTP, which is generated from the secret shared with the token, so it must match the OTP generated from the token. If a match is found the user identity is verified and the authentication server will return a positive acknowledgment to the Internet server 1054 to complete the user login process.

OTP 생성을 위한 FSE 구현은 다음의 특징들을 갖는다.The FSE implementation for OTP generation has the following features.

. OTP 시드는 카드에 보안적으로 저장된다(암호화된다).. OTP seeds are securely stored (encrypted) on the card.

. 패스워드 생성 알고리즘은 카드 내부에서 실행된다.. The password generation algorithm is executed inside the card.

. 디바이스(10)는 복수의 가상 토큰들 각각이 상이한 시드를 저장하는 이들 토큰들을 에뮬레이트할 수 있고 서로 다른 패스워드 생성 알고리즘들을 사용할 수 있다.. The device 10 may emulate those tokens in which each of the plurality of virtual tokens stores a different seed and may use different password generation algorithms.

. 디바이스(10)는 인증 서버로부터 시드를 디바이스에 수성하기 위한 보안 프로토콜을 제공하고 있다.. The device 10 provides a security protocol for receiving seeds from the authentication server to the device.

OTP 시드 공급 및 OTP 생성을 위한 SSA 특징들이 도 42에 도시되었으며 여기서 실선은 소유권 혹은 액세스 권한들을 나타내며, 점선 화살표들은 연관들 또는 링크들을 나타낸다. 도 42에 도시된 바와 같이, SSA FSE 시스템(1100)에서, 소프트웨어 프로그램 코드 FSE(1102)는 N 애플리케이션 ACR들(1106)의 각각에 의해 제어되는 하나 이상의 통신 파이프들(1104)을 통해 액세스될 수 있다. 이하 기술되는 실시예들에서, 단지 한 FSE 소프트웨어 애플리케이션만이 도시되었고, 각각의 FSE 애플리케이션에 대해, 단지 한 통신 파이프만이 있다. 그러나, 하나보다 더 많은 FSE 애플리케이션이 이용될 수 있음이 이해될 것이다. 단지 한 통신 파이프만이 도 42에 도시되었으나, 복수의 통신 파이프들이 사용될 수 있음이 이해될 것이다. 모든 이러한 변형들이 가능하다. 도 40a, 도 40b, 및 도 42를 참조하면, FSE(1102)는 OTP 제공을 위해 사용되는 애플리케이션일 수 있고 도 40a의 디바이스 내부 애플리케이션들(1010)의 부분집합을 형성할 수 있다. 제어 구조들(ACR들(1101, 1103, 1106, 1110))은 SSA에 보안 데이터 구조들의 부분이며 SSA 데이터베이스(1026)에 저장된다. IDO(1120), SDO 개체들(1122), 및 통신 파이프(1104)와 같은 데이터 구조들은 SSA 데이터베이스(1026)에도 저장된다.SSA features for OTP seed supply and OTP generation are shown in FIG. 42 where the solid line represents ownership or access rights and the dashed arrows represent associations or links. As shown in FIG. 42, in the SSA FSE system 1100, the software program code FSE 1102 may be accessed through one or more communication pipes 1104 controlled by each of the N application ACRs 1106. have. In the embodiments described below, only one FSE software application is shown, and for each FSE application, there is only one communication pipe. However, it will be appreciated that more than one FSE application may be used. Although only one communication pipe is shown in FIG. 42, it will be understood that multiple communication pipes may be used. All these variations are possible. 40A, 40B, and 42, the FSE 1102 may be an application used for providing OTP and may form a subset of the device internal applications 1010 of FIG. 40A. Control structures (ACRs 1101, 1103, 1106, 1110) are part of secure data structures in the SSA and are stored in the SSA database 1026. Data structures such as IDO 1120, SDO entities 1122, and communication pipe 1104 are also stored in SSA database 1026.

도 40a 및 도 43b를 참조하면, ACR들 및 데이터 구조들을 수반하는 보안에 관계된 동작들(예를 들면, 세션들에서 데이터 전송, 및 암호화, 해독 및 해싱과 같은 동작들)은 인터페이스(1032) 및 크립토그래픽 라이브러리(1012)의 도움으로, 모듈(1030)에 의해 취급된다. SSM 코어 API(1006)은 호스트들과 상호작용하는 ACR들(외부 ACR들)을 수반하는 동작들과 그렇지 않은 내부 ACR들간을 구별하지 않으며, 이에 따라 디바이스 내부 애플리케이션들(1010)에 대해 호스트들을 수반하는 동작들간을 구별하지 않는다. 그러므로, 호스트측 실체들에 의한 액세스 및 디바이스 내부 애플리케이션들(1010)에 의한 액세스를 제어하기 위해 동일 제어 메커니즘이 사용된다. 이것은 호스트측 애플리케이션들과 디바이스 내부 애플리케이션들(1010)간에 데이터 처리를 분할하는 융통성을 제공한다. 내부 애플리케이션들(1010)(예를 들면, 도 42에서 FSE(1102))은 내부 ACR들(예를 들면 도 42에서 ACR(1103))의 제어에 연관되고 이 제어를 통해 기동된다. Referring to FIGS. 40A and 43B, operations related to security involving ACRs and data structures (eg, operations such as data transfer in sessions, and operations such as encryption, decryption, and hashing) may be performed using interface 1032 and With the help of the cryptographic library 1012, it is handled by the module 1030. SSM core API 1006 does not distinguish between operations involving ACRs (external ACRs) interacting with hosts and internal ACRs that do not, thus involving hosts for device internal applications 1010. It does not distinguish between operations that do. Therefore, the same control mechanism is used to control access by host-side entities and access by device internal applications 1010. This provides flexibility to partition data processing between host-side applications and device internal applications 1010. Internal applications 1010 (eg, FSE 1102 in FIG. 42) are associated with and activated through control of internal ACRs (eg, ACR 1103 in FIG. 42).

또한, 연관된 SSA 규칙들 및 정책들을 가진 이를테면 ACR들 및 AGP들과 같은 보안 데이터 구조들은 바람직하게는 SDO들에 콘텐트 혹은 이 콘텐트로부터 도출될 수 있는 정보와 같은 중요한 정보에 액세스를 제어하며, 따라서 외부 혹은 내부 애 플리케이션들은 SSA 규칙들 및 정책들에 따라 이 콘텐트 혹은 정보에만 액세스할 수 있다. 예를 들면, 2개의 서로 다른 사용자들이 데이터를 처리하기 위해 디바이스 내부 애플리케이션들(1010)의 개개의 것을 기동할 수 있다면, 개별 계층 나무들에 위치된 내부 ACR들은 두 사용자들에 의해 액세스를 제어하는데 사용되며, 따라서 이들간에 크로스토크는 없다. 그러므로, 두 사용자들은 SDO들 내 콘텐트 혹은 정보의 소유자들의 측에서 콘텐트 혹은 정보의 제어를 잃을 우려없이 데이터를 처리하기 위한 공통의 한 세트의 디바이스 내부 애플리케이션들(1010)에 액세스할 수 있다. 예를 들면, 디바이스 내부 애플리케이션들(1010)에 의해 액세스되는 데이터를 저장하는 SDO들에의 액세스는 개별적 계층 나무들에 위치된 ACR들에 의해 제어될 수 있고, 따라서 이들간에 크로스토크는 없다. 제어의 이러한 방식은 위에 기술된 데이터에의 액세스를 SSA가 제어하는 방식과 유사하다. 이것은 데이터 객체들에 저장된 데이터의 보안을 콘텐트 소유자들 및 사용자들에게 제공한다.In addition, secure data structures such as ACRs and AGPs with associated SSA rules and policies preferably control access to sensitive information, such as content in SDOs or information that can be derived from the content, and thus external Or internal applications can only access this content or information in accordance with SSA rules and policies. For example, if two different users can launch individual of the device internal applications 1010 to process data, then internal ACRs located in separate hierarchical trees control access by the two users. Used, so there is no crosstalk between them. Thus, both users can access a common set of device internal applications 1010 for processing data without fear of losing control of the content or information on the side of the owners of the content or information in the SDOs. For example, access to SDOs that store data accessed by device internal applications 1010 may be controlled by ACRs located in separate hierarchical trees, so there is no crosstalk between them. This manner of control is similar to how the SSA controls access to the data described above. This provides content owners and users with security of the data stored in the data objects.

도 42를 참조하면, OTP에 관계된 호스트 애플리케이션을 위해 필요한 소프트웨어 애플리케이션 코드의 부분이 FSE(1102)에 애플리케이션으로서 메모리 디바이스(10)에 저장되는 것이(예를 들면, 메모리 카드 발급 전에 미리 저장되거나 발급후 로딩된다) 가능하다. 이러한 코드를 실행하기 위해서, 호스트는 파이프(1104)에 액세스할 수 있기 위해서, 양의 정수인 N개의 인증 ACR들(1106) 중 하나를 통해 먼저 인증할 필요가 있을 것이다. 또한, 호스트는 기동하기를 원하는, OPT에 관계된 애플리케이션을 확인하기 위한 애플리케이션 ID를 제공하는 것이 필요할 것이다. 성공적 인증 후에, 이러한 코드는 OTP에 관계된 애플리케이션에 연관된 파이 프(1104)를 통한 실행을 위해 액세스될 수 있다. 위에 언급된 바와 같이, 바람직하게는 파이프(1104)와 특정 애플리케이션, 이를테면 OTP에 관계된 내부 애플리케이션간에 1 대 1 관계가 있다. 도 42에 도시된 바와 같이, 복수의 ACR들(1106)은 공통 파이프(1104)의 제어를 공유할 수도 있다. ACR은 하나보다 많은 파이프를 제어할 수도 있다.Referring to Fig. 42, a portion of software application code necessary for a host application related to OTP is stored in the memory device 10 as an application in the FSE 1102 (e.g., stored before or after issuing a memory card). Loaded). In order to execute this code, the host will first need to authenticate through one of the N authentication ACRs 1106, which is a positive integer, in order to be able to access the pipe 1104. In addition, the host will need to provide an application ID to identify the application associated with the OPT that it wishes to launch. After successful authentication, this code can be accessed for execution through the pipe 1104 associated with the application involved in the OTP. As mentioned above, there is preferably a one-to-one relationship between pipe 1104 and internal applications related to a particular application, such as OTP. As shown in FIG. 42, the plurality of ACRs 1106 may share control of the common pipe 1104. ACR may control more than one pipe.

총괄하여 객체 들(1114)이라고 한 보안 데이터 객체들(SDO 1, SDO 2, SDO 3)이 도 42에 도시되었으므로, 각각은 OTP 생성을 위한 시드와 같은 데이터를 내포하고 있으며, 이 시드는 가치있으며 바람직하게는 암호화된다. 3개의 데이터 객체들과 FSE(1102)간에 링크들 혹은 연관(1108)은, 객체들 중 어느 하나가 액세스될 때, SDO의 속성에 애플리케이션 ID을 가진 FSE(1102)에 애플리케이션이 기동될 것이고, 애플리케이션은 어떠한 다른 호스트 명령들의 수신을 요구함이 없이 메모리 디바이스의 CPU(12)에 의해 실행될 것이라는 점에서(도 1), 객체들의 속성을 예시한다.Security data objects (SDO 1, SDO 2, SDO 3), collectively referred to as objects 1114, are shown in FIG. 42, each containing data such as a seed for OTP generation, which seed is valuable and desirable. Preferably encrypted. Links or associations 1108 between the three data objects and the FSE 1102 will cause the application to be launched on the FSE 1102 with the application ID in the attributes of the SDO when either of the objects is accessed. Illustrates the properties of objects in that they will be executed by the CPU 12 of the memory device without requiring the receipt of any other host commands (FIG. 1).

도 42를 참조하면, 사용자가 OTP 프로세스를 시작할 위치에 있기 전에, 보안 데이터 구조들(ACR들(1101, 1103, 1106, 1110))은 OTP 프로세스를 제어하는 이들의 PCR들에 의해 이미 생성되어 있다. 사용자는 인증 서버 ACR들(1106) 중 하나를 통해 OTP 디바이스 내부 애플리케이션(1102)을 기동하기 위해 액세스 권한들을 갖고 있을 필요가 있을 것이다. 또한, 사용자는 N 사용자 ACR들(1110) 중 하나를 통해, 생성될 OTP에 액세스 권한들을 가질 필요가 있을 것이다. SDO들(114)은 OTP 시드 공급 프로세스 동안 생성될 수도 있다. IDO(1116)은 이미 생성되어 내부 ACR(1103)에 의해 제어되는 것이 바람직하다. 또한, 내부 ACR(1103)은 SDO들(1114)이 생성된 후에 이들을 제어한다. SDO들(1114)이 액세스될 때, 도 40b에 SSA 관리자(1024)는 자동으로 ACR(1103)에 로그인 한다. 내부 ACR(1103)은 FSE(1102)에 연관된다. SDO들(1114)은 점선들(1108)로 나타낸 바와 같이 OTP 시드 공급 프로세스 동안 FSE에 연관될 수 있다. 연관이 설정된 후에, SDO들이 호스트에 의해 액세스될 때, 연관(1108)은 호스트로부터 더 이상의 요청없이 FSE(1102)가 기동되게 할 것이다. 또한, 도 40b에서 SSA 관리자(1024)는 통신 파이프(1104)가 N개의 ACR들(1106) 중 하나를 통해 액세스될 때, ACR(1103)에 자동으로 로그인할 것이다. 두 경우들에 있어서(SDO(1114) 및 파이프(1104)에 액세스), SSA 관리자는 세션 번호를 FSE(1102)에 전달할 것이며, 이 세션 번호는 내부 ACR(1103)에의 채널을 확인할 것이다.Referring to FIG. 42, before a user is in a position to start an OTP process, secure data structures (ACRs 1101, 1103, 1106, 1110) have already been created by their PCRs that control the OTP process. . The user will need to have access rights to launch the OTP device internal application 1102 via one of the authentication server ACRs 1106. In addition, the user will need to have access rights to the OTP to be created, via one of the N user ACRs 1110. SDOs 114 may be generated during the OTP seed supply process. The IDO 1116 is preferably already generated and controlled by the internal ACR 1103. In addition, the internal ACR 1103 controls them after the SDOs 1114 are generated. When SDOs 1114 are accessed, SSA manager 1024 automatically logs in to ACR 1103 in FIG. 40B. Inner ACR 1103 is associated with FSE 1102. SDOs 1114 may be associated with the FSE during the OTP seed supply process as shown by dashed lines 1108. After the association is established, when the SDOs are accessed by the host, the association 1108 will cause the FSE 1102 to be activated without further request from the host. Also, in FIG. 40B, the SSA manager 1024 will automatically log in to the ACR 1103 when the communication pipe 1104 is accessed through one of the N ACRs 1106. In both cases (access to SDO 1114 and pipe 1104), the SSA manager will pass the session number to the FSE 1102, which will identify the channel to the internal ACR 1103.

OTP 동작은 2개의 국면들로서, 도 43에 도시된 시드 공급 국면과 도 44에 도시된 OTP 생성 국면을 수반한다. 설명을 돕기 위해 도 40 내지 도 42도 참조할 것이다. 도 43은 시드 공급 프로세스를 도시한 프로토콜도이다. 도 43에 도시된 바와 같이, 카드뿐만 아니라 호스트(24)와 같은 호스트에 의해 다양한 작업들이 취해진다. 다양한 작업들을 취하는 카드상에 한 실체는 SSM 코어(1004)를 포함하는 도 40a 및 도 40b의 SSM 시스템이다. 다양한 작업들을 취하는 카드상에 또 다른 실체는 도 42에 도시된 FSE(1102)이다.The OTP operation involves two phases, the seed supply phase shown in FIG. 43 and the OTP generation phase shown in FIG. 44. 40-42 will also be referred to for explanation. 43 is a protocol diagram illustrating the seed supply process. As shown in FIG. 43, various operations are taken by the host, such as the host 24 as well as the card. One entity on the card taking various tasks is the SSM system of FIGS. 40A and 40B that includes an SSM core 1004. Another entity on the card taking various actions is the FSE 1102 shown in FIG.

이중 요소 인증에서, 사용자는 시드가 발행될 것을 요청하며, 일단 시드가 발행되면, 시드는 보안 토큰에 저장된다. 이 예에서, 보안 토큰은 메모리 디바이스 혹은 카드이다. 사용자는 SSM 시스템에의 액세스를 얻기 위해서(화살표 1122) 도 42에 인증 ACR들(1106) 중 하나에 인증한다. 인증이 성공적이라고 하면(화살표 1124), 사용자는 시드에 대해 요청한다(화살표 1126). 호스트는 시드 요청에 서명하기 위한 요청을, 시드 요청을 서명하기 위해 특정 애플리케이션(1102)을 선택함으로써 카드에 보낸다. 사용자가 기동될 필요가 있는 특정 애플리케이션 ID를 모른다면, 이 정보는 예를 들면 디바이스에의 디스크리트 조회를 통해서, 디바이스(10)로부터 얻어질 수 있다. 이어서 사용자는 기동되어야 할 애플리케이션의 애플리케이션 ID를 입력하고, 그럼으로써 애플리케이션에 대응하는 통신 파이프를 선택한다. 이어서, 사용자 명령은 대응하는 통신 파이프를 통해 사용자로부터 애플리케이션 ID에 의해 명시된(화살표 1128) 애플리케이션에 패스 스루 명령으로 보내진다. 기동되는 애플리케이션은 도 42에 IDO(1112)와 같이, 명시된 IDO 내 공개키에 의한 서명을 요청한다.In two-factor authentication, the user requests that a seed be issued, and once the seed is issued, the seed is stored in the security token. In this example, the security token is a memory device or card. The user authenticates to one of the authentication ACRs 1106 in FIG. 42 to gain access to the SSM system (arrow 1122). If authentication is successful (arrow 1124), the user requests for seed (arrow 1126). The host sends a request to the card by selecting a particular application 1102 to sign the seed request. If the user does not know the specific application ID that needs to be launched, this information can be obtained from the device 10, for example through a discrete query to the device. The user then enters the application ID of the application to be launched, thereby selecting the communication pipe corresponding to the application. The user command is then sent through the corresponding communication pipe from the user to the application specified by the application ID (arrow 1128) as a pass through command. The launched application requests a signature by the public key in the specified IDO, such as IDO 1112 in FIG.

SSM 시스템은 IDO의 공개키를 사용하여 시드 요청에 서명하고 서명이 완료된 것을 애플리케이션에 통지한다(화살표 1132). 이어서, 기동된 애플리케이션은 IDO의 증명서 체인을 요청한다(화살표 1134). 응답하여, SSM 시스템은 ACR(1103)에 의해 제어되는 IDO의 증명서 체인을 제공한다(화살표 1136). 이어서, 기동된 애플리케이션은 서명된 시드 요청 및 IDO의 증명서 체인을 이를 호스트에 보내는 SSM 시스템에 통신 파이프를 통해 제공한다(화살표 1138). 통신 파이프를 통해 서명된 시드 요청 및 IDO 증명서 체인의 발송은 도 40a의 SAMM(1008)과 SSM 코어(1004) 간에 수립되는 콜백 기능을 의하며, 여기서 콜백 기능은 이하 기술될 것이다.The SSM system signs the seed request using the IDO's public key and notifies the application that the signature is complete (arrow 1132). The launched application then requests a certificate chain of IDO (arrow 1134). In response, the SSM system provides a certificate chain of IDOs controlled by the ACR 1103 (arrow 1136). The launched application then presents a signed seed request and certificate chain of IDO via a communication pipe to the SSM system sending it to the host (arrow 1138). The sending of the signed seed request and IDO certificate chain through the communication pipe is by a callback function established between the SAMM 1008 and the SSM core 1004 of FIG. 40A, where the callback function will be described below.

이어서, 호스트에 의해 수신된 서명된 시드 요청 및 IDO 증명서 체인은 도 41에 도시된 인증 서버(1052)에 보내진다. 카드에 의해 제공된 증명서 체인은 서명 된 시드 요청이 신뢰된 토큰으로부터 발원하여 인증 서버(1052)가 비밀 시드를 카드에 제공할 것임을 증명하였다. 그러므로 인증 서버(1052)는 사용자 ACR 정보와 함께 IDO의 공개키로 암호화된 시드를 호스트에 보낸다. 사용자 정보는 N 사용자 ACR들 중 어느 ACR 하에 사용자가 생성될 OTP에 액세스할 권한들을 갖는지를 나타낸다. 호스트는 애플리케이션 ID를 공급하고 그럼으로써 애플리케이션에 대응하는 통신 파이프를 선택함으로써 FSE(1102)에 OTP 애플리케이션을 기동하고 사용자 ACR 정보를 SSM 시스템에 보낸다(화살표 1140). 암호화된 시드 및 사용자 ACR 정보는 선택된 애플리케이션에 통신 파이프를 통해 보내진다(화살표 1142). 기동된 애플리케이션은 IDO의 사설키를 사용하여 시드의 해독을 위해 요청을 SSM 시스템에 보낸다(화살표 1144). SSM 시스템은 시드를 해독하고 해독이 완료되었다는 통지를 애플리케이션에 보낸다(화살표 1146). 이어서, 기동된 애플리케이션은 보안된 데이터 객체의 생성과, 보안된 데이터 객체에 시드의 저장을 요청한다. 또한, 일회용 패스워드를 생성하기 위해 OTP 애플리케이션(요청을 행하고 있는 것과 동일한 애플리케이션일 수 있다)의 ID에 SDO가 연관될 것을 요청한다(화살표 1148). SSM 시스템은 SDO들(1114) 중 하나를 생성하고 시드를 SDO 내부에 저장하고 SDO를 OTP 애플리케이션의 ID에 연관시키고, 완료되었을 때 통지를 애플리케이션에 보낸다(화살표 1150). 이어서 애플리케이션은 SDO(1114)에 액세스하기 위해 내부 ACR(1103)에 의한 액세스 권한들을 호스트에 의해 공급된 사용자 정보에 기초하여 적합한 사용자 ACR에 위임할 것을 SSM 시스템에 요청한다(화살표 1152). 위임이 완료된 후에, SSM 시스템은 애플리케이션을 통지한다(화살표 1154). 이어서 애플리케이션은 SDO의 이 름(슬롯 ID)을 통신 파이프를 통해 SSM 시스템에 콜백기능을 통해 보낸다(화살표 1156). 이어서 SSM 시스템은 같은 것을 호스트에 보낸다(화살표 1158). 이어서 호스트는 SDO의 이름을 사용자 ACR에 결합함으로써 사용자는 이제 SDO에 액세스할 수 있다.The signed seed request and IDO certificate chain received by the host are then sent to the authentication server 1052 shown in FIG. The certificate chain provided by the card proved that the signed seed request originated from the trusted token and the authentication server 1052 would provide the secret seed to the card. Therefore, the authentication server 1052 sends a seed encrypted with the public key of the IDO to the host along with the user ACR information. The user information indicates which of the N user ACRs the user has rights to access the OTP to be created. The host supplies the application ID and thereby selects the communication pipe corresponding to the application to launch the OTP application to the FSE 1102 and send the user ACR information to the SSM system (arrow 1140). The encrypted seed and user ACR information is sent to the selected application via a communication pipe (arrow 1142). The launched application uses the IDO's private key to send a request to the SSM system for decryption of the seed (arrow 1144). The SSM system decrypts the seed and sends a notification to the application that decryption is complete (arrow 1146). The launched application then requests the creation of the secured data object and the storage of the seed in the secured data object. It also requests that the SDO be associated with the ID of the OTP application (which may be the same application making the request) to generate a one time password (arrow 1148). The SSM system creates one of the SDOs 1114, stores the seed inside the SDO, associates the SDO with the ID of the OTP application, and sends a notification to the application when complete (arrow 1150). The application then requests the SSM system to delegate access rights by the internal ACR 1103 to the appropriate user ACR based on the user information supplied by the host to access the SDO 1114 (arrow 1152). After delegation is complete, the SSM system notifies the application (arrow 1154). The application then sends the name of the SDO (slot ID) via a callback to the SSM system via the communication pipe (arrow 1156). The SSM system then sends the same to the host (arrow 1158). The host then associates the SDO's name with the user's ACR so that the user can now access the SDO.

OTP 생성 프로세스를 도 44에 프로토콜도를 참조하여 이제 기술한다. 일회용 패스워드를 얻기 위해서, 사용자는 액세스 권한이 있는 사용자 ACR에 로그인할 것이다(화살표 1172). 인증이 성공적이라고 한다면, SSM 시스템은 호스트에 통지하고 호스트는 "겟 SDO" 명령을 SSM에 보낸다(화살표들 1174, 1176). 위에 언급된 바와 같이, 시드를 저장하는 SDO는 OTP를 생성하기 위해 애플리케이션에 연관되었다. 그러므로, 전처럼 통신 파이프를 통해 애플리케이션을 선택하는 대신에, OTP 생성 애플리케이션은 화살표(1176)에서 명령에 의해 액세스되는 SDO와 OTP 생성 애플리케이션(화살표 1178)간에 연관에 의해 기동된다. 이어서 OTP 생성 애플리케이션은 SDO로부터 콘텐트(즉, 시드)를 독출할 것을 SSM 시스템에 요청한다(화살표 1180). 바람직하게, SSM은 SDO의 콘텐트에 내포된 정보는 모르며 단순히 FSE에 의해 지시된 바와 같이 SDO에 데이터를 처리할 것이다. 시드가 암호화된다면, 이것은 FSE에 의해 명령되는 바와 같이 독출 전에 시드를 해독하는 것을 수반할 수 있다. SSM 시스템은 SDO로부터 시드를 독출하고 시드를 OTP 생성 애플리케이션에 제공한다(화살표 1182). 이어서 OTP 생성 애플리케이션은 OTP를 생성하고 이를 SSM 시스템에 제공한다(화살표 1184). 이어서 OTP는 SSM에 의해 호스트에 보내지며(화살표 1186) 이어서 호스트는 OTP를 인증 서버(1052)에 보내어 이중 요소 인증 프로세스를 완료 한다.The OTP generation process is now described with reference to the protocol diagram in FIG. To obtain a one time password, the user will log in to the user ACR to which he has access (arrow 1172). If authentication is successful, the SSM system notifies the host and the host sends a "get SDO" command to the SSM (arrows 1174, 1176). As mentioned above, the SDO that stores the seed was associated with the application to generate the OTP. Therefore, instead of selecting the application through the communication pipe as before, the OTP generating application is invoked by an association between the SDO and the OTP generating application (arrow 1178) accessed by the instruction at arrow 1176. The OTP generating application then requests the SSM system to read the content (ie, seed) from the SDO (arrow 1180). Preferably, the SSM does not know the information contained in the content of the SDO and will simply process the data in the SDO as indicated by the FSE. If the seed is encrypted, this may involve decrypting the seed before reading, as mandated by the FSE. The SSM system reads the seed from the SDO and provides the seed to the OTP generating application (arrow 1182). The OTP generating application then generates the OTP and provides it to the SSM system (arrow 1184). The OTP is then sent by the SSM to the host (arrow 1186) and the host then sends the OTP to the authentication server 1052 to complete the two-factor authentication process.

콜백 기능Callback function

도 40a의 SSM 코어(1004)와 SAMM(1008)간에 일반 콜백 기능이 설정된다. 서로 다른 디바이스 내부 애플리케이션들 및 통신 파이프들에 이러한 기능이 등록될 수도 있다. 이에 따라 디바이스 내부 애플리케이션이 기동되며, 애플리케이션은 처리 후에 데이터를, 애플리케이션에 호스트 명령을 전달하는데 사용되었던 것과 동일한 통신 파이프를 통해서 SSM 시스템에 전달하기 위해서 이 콜백 기능을 사용할 수 있다. The general callback function is set up between the SSM core 1004 and the SAMM 1008 of FIG. 40A. Such functionality may be registered in different device internal applications and communication pipes. This launches the device internal application, which can use this callback function to deliver data after processing to the SSM system through the same communication pipe that was used to deliver host commands to the application.

DRM 시스템 실시예DRM System Embodiment

도 45는 통신 파이프(1104'), FSE 애플리케이션들(1102')에의 링크들(1108')을 가진 CEK들(1114'), DRM 기능들을 구현하기 위한 기능들을 제어하기 위한 제어 구조들(1101', 1103', 1106')을 도시한 기능 블록도이다. 언급되는 바와 같이, 도 45에 구조는 보안 데이터 구조가 이제 인증 서버 ACR들 및 사용자 ACR들 대신 라이센스 서버 ACR들(1106') 및 플레이백 ACR들(1110')과, SDO들 대신 SEK들(1114')를 포함하는 것을 제외하곤, 도 42의 구조와 매우 유사하다. 또한, IDO는 수반되지 않으며 이에 따라 도 45에서 생략된다. CEK들(1114')은 라이센스 공급 프로세스에서 생성될 수도 있다. 프로토콜도 도 46은 라이센스 공급 및 콘텐트 다운로드를 위한 프로세스를 도시한 것으로 여기서 키는 라이센스 객체에 제공된다. OTP 실시예에서처럼, 라이센스를 얻기를 원하는 사용자는 콘텐트가 미디어 플레이어 소프트웨어 애플리케이션과 같은 미디어 플레이어에 의해 렌더링될 수 있도록 먼저 N개의 ACR 들(1106') 중 하나와 N개의 ACR들(1110') 중 하나 하에 액세스 권한들을 얻을 필요가 있을 것이다. 45 illustrates control structures 1101 ′ for controlling communications pipe 1104 ′, CEKs 1114 ′ with links 1108 ′ to FSE applications 1102 ′, and functions for implementing DRM functions. 1103 'and 1106' are functional block diagrams. As mentioned, the structure in FIG. 45 is a secure data structure now license server ACRs 1106 'and playback ACRs 1110' instead of authentication server ACRs and user ACRs, and SEKs 1114 instead of SDOs. Except for including '), the structure is very similar to that of FIG. In addition, IDO is not accompanied and thus is omitted in FIG. 45. CEKs 1114 'may be generated in a license provisioning process. Protocol Diagram FIG. 46 illustrates a process for license provision and content download, where a key is provided to a license object. As in the OTP embodiment, a user who wishes to obtain a license first needs one of the N ACRs 1106 'and one of the N ACRs 1110' so that the content can be rendered by a media player, such as a media player software application. You will need to get access rights.

도 46에 도시된 바와 같이, 호스트는 라이센스 서버 ACR 1(1067)에 인증한다(화살표 1202). 인증이 성공적이라고 할 때(화살표 1204), 라이센스 서버는 CEK(키 ID 및 키값)와 함께 라이센스 파일을 호스트에 제공한다. 또한, 호스트는 카드상에 SSM 시스템에 애플리케이션 ID를 공급함으로써, 기동될 애플리케이션을 선택한다. 또한, 호스트는 플레이어 정보(예를 들면, 미디어 플레이어 소프트웨어 애플리케이션에 관한 정보)를 보낸다(화살표 1206). 플레이어 정보는 N 플레이백 ACR들(1110') 중 어느 것 하에 플레이어가 액세스 권한들을 갖는지를 나타낼 것이다. SSM 시스템은 DRM 애플리케이션에 라이센스 파일 및 CEK를, 선택된 애플리케이션에 대응하는 통신 파이프를 통해 보낸다(화살표 1208). 이어서, 기동된 애플리케이션은 은닉된 파티션에 라이센스 파일을 기입할 것을 SSM 시스템에 요청한다(화살표 1210). 라이센스 파일이 이와 같이 하여 기입되었을 때, SSM 시스템은 애플리케이션에 통지한다(화살표 1212). 이어서 DRM 애플리케이션은 CEK 객체(1114')가 생성될 것을 요청하고 이에 라이센스 파일로부터 키값을 저장한다. 또한, DRM 애플리케이션은 제공된 키에 연관된 라이센스들을 체크하는 DRM 애플리케이션의 ID에 CEK 객체가 연관될 것을 요청한다(화살표 1214). SSM 시스템은 이들 임무들을 완료하고 애플리케이션에 통지한다(화살표 1216). 이어서 애플리케이션은 호스트에 의해 보내진 플레이어 정보에 기초하여 플레이어가 콘텐트에 액세스할 허가를 갖는 플레이백 ACR에, CEK(1114')에의 상기 독출 액세스 권한들이 위임될 것을 요청한다(화살 표 1218). SSM 시스템은 위임을 수행하고 애플리케이션에 통지한다(화살표 1220). 라이센스의 저장이 완료되었다는 메시지는 애플리케이션에 의해 통신 파이프를 통해 SSM 시스템에 보내지고 SSM 시스템은 이를 라이센스 서버에 보낸다(화살표들 1222, 1224). 콜백 기능은 통신 파이프를 통해 이 작업을 위해 사용된다. 이 통지를 수신하였을 때, 라이센스 서버는 카드에 제공된 CEK에 키값으로 암호화된 콘텐트 파일을 제공한다. 암호화된 콘텐트는 공개 카드 영역에 호스트에 의해 저장된다. 암호화된 콘텐트 파일의 저장은 보안 기능들을 수반하지 않으므로 SSM 시스템은 저장에 연루되지 않는다.As shown in FIG. 46, the host authenticates with license server ACR 1 1067 (arrow 1202). When authentication is successful (arrow 1204), the license server provides the license file to the host along with the CEK (key ID and key value). The host also selects the application to be launched by supplying the application ID to the SSM system on the card. The host also sends player information (eg, information about the media player software application) (arrow 1206). The player information will indicate which of the N playback ACRs 1110 'has access rights. The SSM system sends the license file and the CEK to the DRM application via the communication pipe corresponding to the selected application (arrow 1208). The launched application then asks the SSM system to write the license file to the hidden partition (arrow 1210). When the license file is written in this way, the SSM system notifies the application (arrow 1212). The DRM application then requests the CEK object 1114 'to be created and stores the key value from the license file therein. The DRM application also requests that the CEK object be associated with the ID of the DRM application that checks the licenses associated with the provided key (arrow 1214). The SSM system completes these tasks and notifies the application (arrow 1216). The application then requests that the read access rights to the CEK 1114 'be delegated to a playback ACR that the player has permission to access the content based on the player information sent by the host (arrow table 1218). The SSM system performs delegation and notifies the application (arrow 1220). The message that the storage of the license has been completed is sent by the application to the SSM system via a communication pipe and the SSM system sends it to the license server (arrows 1222, 1224). The callback function is used for this task through the communication pipe. Upon receiving this notification, the license server provides the content file encrypted with the key value to the CEK provided on the card. The encrypted content is stored by the host in the public card area. The storage of an encrypted content file does not involve security functions and therefore the SSM system is not involved in storage.

플레이백 동작이 도 47에 도시되었다. 사용자는 적합한 플레이백 ACR(즉, 화살표들 1152, 1154에서 위에서 독출 권한들이 위임되었던 플레이백 ACR)에 호스트를 통해 인증한다(화살표 1242). 인증이 성공적이라고 하면(화살표 1244) 사용자는 키 ID에 연관된 콘텐트를 독출하기 위해 요청을 보낸다(화살표 1246). 요청을 수신하였을 때, SSM 시스템은 DRM 애플리케이션 ID가 액세스되는 CEK 객체에 연관되고 따라서 확인된 DRM 애플리케이션이 기동되게 할 것임을 발견할 것이다(화살표 1248). DRM 애플리케이션은 키 ID에 연관된 데이터(즉, 라이센스)를 독출할 것을 SSM 시스템에 요청한다(화살표 1250). SSM은 독출이 요청된 데이터에 정보를 모르며, 단순히 데이터 독출 프로세스를 수행하기 위해 FSE로부터 요청을 처리한다. SSM 시스템은 은닉된 파티션으로부터 데이터(즉, 라이센스)를 독출하고 데이터를 DRM 애플리케이션에 제공한다(화살표 1252). 이어서 DRM 애플리케이션은 데이터를 해석하고 라이센스가 유효한지를 알기 위해서 데이터 내 라이센스 정보를 체크한 다. 라이센스가 여전히 유효하다면, DRM 애플리케이션은 콘텐트 해독이 승인된 것을 SSM 시스템에 알릴 것이다(화살표 1254). 이어서 SSM 시스템은 CEK 객체에 키값을 사용하여, 요청된 콘텐트를 해독하고, 해독된 콘텐트를 플레이백을 위해 호스트에 공급한다(화살표 1256). 라이센스가 더 이상 유효하지 않다면, 콘텐트 액세스를 위한 요청은 거절된다.The playback operation is shown in FIG. The user authenticates with the host to the appropriate playback ACR (ie, the playback ACR to which read rights were delegated above at arrows 1152, 1154) (arrow 1242). If authentication is successful (arrow 1244), the user sends a request to read the content associated with the key ID (arrow 1246). Upon receiving the request, the SSM system will find that the DRM application ID is associated with the CEK object being accessed and will therefore cause the identified DRM application to be launched (arrow 1248). The DRM application requests the SSM system to read the data (ie license) associated with the key ID (arrow 1250). The SSM does not know the information in the data requested to be read and simply processes the request from the FSE to perform the data read process. The SSM system reads data (ie, licenses) from the hidden partition and provides the data to the DRM application (arrow 1252). The DRM application then interprets the data and checks the license information in the data to see if the license is valid. If the license is still valid, the DRM application will inform the SSM system that content decryption has been approved (arrow 1254). The SSM system then uses the key value in the CEK object to decrypt the requested content and supply the decrypted content to the host for playback (arrow 1256). If the license is no longer valid, the request for content access is rejected.

라이센스 서버로부터 라이센스 파일에 어떠한 키도 제공되어 있지 않은 경우에, 라이센스 공급 및 콘텐트 다운로드는 도 46에 도시된 것과는 다소 다를 것이다. 이러한 상이한 방식이 도 48의 프로토콜도에 도시되었다. 도 46과 도 48간에 동일한 단계들은 동일 참조부호로 표시하였다. 이에 따라 호스트 및 SSM 시스템이 먼저 인증에 연루된다(화살표들 1202, 1204). 라이센스 서버는 라이센스 파일 및 키 ID를 제공하는데 호스트에 키값 없이 제공하며, 호스트는 같은 것을 SSM 시스템에 기동하기를 원하는 DRM 애플리케이션의 애플리케이션 ID와 함께 보낼 것이다. 또한, 호스트는 플레이어 정보를 함께 보낸다(화살표 1206'). 이어서 SSM 시스템은 선택된 애플리케이션에 대응하는 통신 파이프를 통해 라이센스 파일 및 키 ID를, 선택된 DRM 애플리케이션에 보낸다(화살표 1208). DRM 애플리케이션은 라이센스 파일이 은닉된 파티션(화살표 1210)에 기입될 것을 요청한다(화살표 1210). 라이센스 파일이 그와 같이 기입되었을 때, SSM 시스템은 DRM 애플리케이션에 통지한다(화살표 1212). 이어서 DRM 애플리케이션은 SSM 시스템이 키값을 발생하고, CEK 객체를 생성하고, 그에 키값을 저장하고 CEK 객체를 DRM 애플리케이션의 ID에 연관시킬 것을 요청한다(화살표 1214'). 요청이 컴파일된 후에, SSM 시스템은 통지를 DRM 애플 리케이션에 보낸다(화살표 1216). 이어서 DRM 애플리케이션은 호스트로부터 플레이어 정보에 기초하여 SSM 시스템이 CEK 객체에의 독출 액세스 권한들을 플레이백 ACR에 위임할 것을 요청할 것이다(화살표 1218). 이것이 완료되었을 때, SSM 시스템은 그러함을 DRM 애플리케이션에 통지한다(화살표 1220). DRM 애플리케이션은 라이센스가 저장되었음을 SSM 시스템에 통지하며 여기서 통지는 콜백 기능에 의해 통신 파이프를 통해 보내진다(화살표 1222). 이 통지는 SSM 시스템에 의해 라이센스 서버에 보내진다(화살표 1224). 이어서 라이센스 서버는 키 ID에 연관된 콘텐트 파일을 SSM 시스템에 보낸다(화살표 1226). SSM 시스템은 어떠한 애플리케이션들도 수반함이 없이, 키 ID에 의해 확인된 키값으로 콘텐트 파일을 암호화한다. 이와 같이 암호화되고 카드에 저장된 콘텐트는 도 47의 프로토콜을 사용하여 플레이백될 수 있다.If no key is provided in the license file from the license server, the license supply and content download will be somewhat different from that shown in FIG. This different manner is shown in the protocol diagram of FIG. 48. The same steps between FIGS. 46 and 48 are denoted by the same reference numerals. Accordingly, the host and the SSM system are first involved in authentication (arrows 1202, 1204). The license server provides the license file and key ID to the host with no key value, and the host will send the same along with the application ID of the DRM application that it wants to launch on the SSM system. The host also sends player information together (arrow 1206 '). The SSM system then sends the license file and key ID to the selected DRM application via the communication pipe corresponding to the selected application (arrow 1208). The DRM application requests that the license file be written to the hidden partition (arrow 1210) (arrow 1210). When the license file is so written, the SSM system notifies the DRM application (arrow 1212). The DRM application then requests that the SSM system generate a key value, create a CEK object, store the key value therein and associate the CEK object with the ID of the DRM application (arrow 1214 '). After the request is compiled, the SSM system sends a notification to the DRM application (arrow 1216). The DRM application will then request the SSM system to delegate read access rights to the CEK object to the playback ACR based on player information from the host (arrow 1218). When this is done, the SSM system notifies the DRM application that it is (arrow 1220). The DRM application notifies the SSM system that the license has been stored, where the notification is sent through the communication pipe by the callback function (arrow 1222). This notification is sent by the SSM system to the license server (arrow 1224). The license server then sends a content file associated with the key ID to the SSM system (arrow 1226). The SSM system encrypts the content file with the key value identified by the key ID, without involving any applications. The content so encrypted and stored on the card can be played back using the protocol of FIG.

위에 OTP 및 DRM 실시예들에서, FSE(1102, 1102')는 호스트 디바이스들에 의한 선택을 위해 많은 서로 다른 OTP 및 DRM 애플리케이션들을 내포할 수 있다. 사용자들은 요망되는 디바이스 내부 애플리케이션을 선택하고 기동하는 선택을 갖는다. 그럼에도 불구하고, SSM 모듈과 FSE간에 전체 관계는 동일한 그대로이며, 따라서 사용자들 및 데이터 제공자들은 SSM 모듈과 상호작용하고 FSE를 기동하기 위한 표준 한 세트의 프로토콜들을 사용할 수 있다. 사용자들 및 제공자들은 일부 전유일 수도 있는 많은 서로 다른 디바이스 내부 애플리케이션들의 특이성들에 연루될 필요가 없다.In the above OTP and DRM embodiments, the FSE 1102, 1102 ′ may contain many different OTP and DRM applications for selection by host devices. Users have the choice to select and launch the desired device internal application. Nevertheless, the overall relationship between the SSM module and the FSE remains the same, so users and data providers can use a standard set of protocols for interacting with the SSM module and for launching the FSE. Users and providers do not need to be involved in the specificities of many different device internal applications, which may be some proprietary.

또한, 공급 프로토콜들은 도 46 및 도 48에 경우와 같이, 따로 다를 수 있 다. 라이센스 객체는 도 46의 경우에서 키값을 내포하나 도 48의 경우엔 키값을 내포하지 않는다. 이 차이는 위에 예시된 바와 같이 약간 다른 프로토콜들을 요구한다. 그러나, 도 47에서 플레이백은 라이센스가 어떻게 공급되었는가에 관계없이 동일하다. 그러므로, 이 차이는 콘텐트 제공자들 및 분배자들에게만 중요하고 전형적으로 플레이백 국면에만 연루되는 소비자들에겐 중요하지 않을 것이다. 이에 따라 이 구조는 소비자들에 의해 사용의 용이성은 그대로이면서 프로토콜들을 커스터마이즈하는 콘텐트 제공자들 및 분배자들에게 큰 융통성을 제공한다. 자명하게 2 이상의 세트들의 공급 프로토콜들에 의해 공급된 데이터로부터 도출되는 정보는 제 2 프로토콜을 사용하여 여전히 액세스될 수 있다.In addition, the supply protocols may be different, as is the case in FIGS. 46 and 48. The license object contains the key value in the case of FIG. 46 but does not contain the key value in the case of FIG. This difference requires slightly different protocols as illustrated above. However, the playback in FIG. 47 is the same regardless of how the license was supplied. Therefore, this difference will not be important for content providers and distributors only and typically for consumers involved only in the playback phase. This structure thus provides great flexibility for content providers and distributors who customize protocols while still being easy to use by consumers. Obviously the information derived from the data supplied by the two or more sets of supply protocols can still be accessed using the second protocol.

위에 실시예들에 의해 제공된 또 다른 이점은 사용자들 및 디바이스 내부 애플리케이션들과 같은 외부 실체들이 보안 데이터 구조에 의해 제어되는 데이터의 사용을 공유할 수 있으면서도 사용자는 저장 데이터로부터 디바이스 내부 애플리케이션들에 의해 도출된 결과들에만 액세스할 수 있다는 것이다. 이에 따라, OTP 실시예에서, 호스트 디바이스들을 통해 사용자는 시드 값은 아니고 OTP만을 얻을 수 있을 뿐이다. DRM 실시예에서, 호스트 디바이스들을 통해 사용자는 렌더링된 콘텐트만을 얻을 수 있을 뿐이고, 라이센스 파일 혹은 크립토그래픽 키에 액세스할 수 없다. 이 특징은 보안을 손상(compromise)시킴이 없이 소비자들에게 편의를 허용한다.Another advantage provided by the above embodiments is that users and external entities such as device internal applications can share the use of data controlled by the secure data structure while the user derives from the stored data by the device internal applications. You can only access the results. Thus, in an OTP embodiment, the user through the host devices can only obtain the OTP, not the seed value. In a DRM embodiment, through host devices, a user can only obtain rendered content and cannot access a license file or cryptographic key. This feature allows for convenience to consumers without compromising security.

DRM 실시예에서, 디바이스 내부 애플리케이션들도 호스트들도 크립토그래픽 키들에 액세스할 수 없는데, 보안 데이터만이 이러한 액세스를 할 수 있다. 다른 실시예들에서, 보안 데이터 구조 외에 실체들은 크립토그래픽 키들에도 액세스할 수 있다. 또한, 키들은 디바이스 내부 애플리케이션들에 의해 생성되고, 이어서 보안 데이터 구조에 의해 제어될 수도 있다.In a DRM embodiment, neither device internal applications nor hosts have access to the cryptographic keys, only secure data may have such access. In other embodiments, in addition to the secure data structure, entities can also access cryptographic keys. In addition, the keys may be generated by device internal applications and then controlled by a secure data structure.

디바이스 내부 애플리케이션들 및 정보(예를 들면, OTP 및 렌더링된 콘텐트)에의 액세스는 동일 보안 데이터 구조에 의해 제어된다. 이것은 제어 시스템들에 복잡성 및 비용들을 감소시킨다.Access to device internal applications and information (eg, OTP and rendered content) is controlled by the same secure data structure. This reduces the complexity and costs to the control systems.

디바이스 내부 애플리케이션들에의 액세스를 제어하는 내부 ACR에서, 디바이스 내부 애플리케이션들을 기동하는 것으로부터 얻어진 정보에 호스트들에 의한 액세스를 제어하는 ACR로, 액세스 권한들을 위임하는 능력을 제공함으로써, 이 특징으로 위에 특징들 및 기능들을 달성할 수 있게 된다.In an internal ACR that controls access to device internal applications, the ACR controlling access by hosts to information obtained from launching device internal applications, by providing the ability to delegate access rights, is characterized by Features and functions can be achieved.

애플리케이션에 특정한 철회방법Application specific revocation method

보안 데이터 구조의 액세스 제어 프로토콜은 디바이스 내부 애플리케이션이 기동될 때에 수정될 수도 있다. 예를 들면, 증명서 철회 프로토콜은 CRL을 사용하는 표준 프로토콜이거나 전유 프로토콜일 수 있다. 이에 따라, FSE를 기동함으로써, 표준 CRL 철회 프로토콜은 FSE 전유 프로토콜에 의해 대체될 수 있다.The access control protocol of the secure data structure may be modified when the device internal application is launched. For example, the certificate revocation protocol may be a standard protocol using CRL or a proprietary protocol. Accordingly, by invoking the FSE, the standard CRL revocation protocol can be replaced by the FSE proprietary protocol.

CRL 철회방법을 지원하는 것 외에도, SSA는 디바이스에 상주하는 특정한 내부-애플리케이션이 디바이스 내부 애플리케이션과 CR 혹은 이외 어떤 다른 철회 당국간에 사설 통신 채널을 통해 호스트들을 철회할 수 있게 한다. 내부 애플리케이션 전유 철회 방법은 호스트-애플리케이션의 관계로 국한된다.In addition to supporting the CRL withdrawal method, the SSA allows a particular internal-application residing on the device to withdraw hosts through a private communication channel between the device internal application and the CR or some other revocation authority. Internal application exclusive withdrawal methods are limited to host-application relationships.

애플리케이션에 특정한 철회 방법이 구성될 때, SSA 시스템은 CRL(제공된다 면)를 거절할 것이며 그렇지 않다면 주어진 증명이 철회되었는지 여부를 판단하기 위해서 증명서 및 전유 애플리케이션 데이터(애플리케이션에 특정한 통신 파이프를 통해 이전에 제공된)를 사용할 것이다.When an application-specific revocation method is configured, the SSA system will reject a CRL (if provided), otherwise it will have previously passed through the certificate and proprietary application data (application-specific communication pipes) to determine whether a given attestation has been revoked. Will be used).

위에 언급된 바와 같이, ACR은 3개의 철회 방법들(철회방법 없음, 표준 CRL 방법, 및 애플리케이션에 특정한 철회방법) 중 어느 것이 철회 값을 명시함으로써 채택되는지를 명시한다. 애플리케이션에 특정한 철회방법 선택이 선택되었을 때, ACR은 철회방법을 맡고 있는 내부 애플리케이션 ID에 대해 ID를 명시할 것이며, CET/APP_ID 필드에 값은 철회방법을 맡고 있는 내부 애플리케이션 ID에 대응할 것이다. 디바이스를 인증할 때, SSA 시스템은 내부 애플리케이션의 전유 방법을 고수할 것이다.As mentioned above, the ACR specifies which of the three revocation methods (no withdrawal method, standard CRL method, and application specific withdrawal method) is adopted by specifying a withdrawal value. When an application-specific withdrawal method selection is selected, the ACR will specify an ID for the internal application ID in charge of the withdrawal method, and the value in the CET / APP_ID field will correspond to the internal application ID with the withdrawal method. When authenticating a device, the SSA system will adhere to the proprietary method of internal applications.

한 세트의 프로토콜들을 다른 것으로 대체하는 대신에, 디바이스 내부 애플리케이션의 기동은 SSA에 의해 이미 발휘된 액세스 제어에 추가의 액세스 조건들을 부과할 수도 있다. 예를 들면, CEK에 키값에 액세스하는 권한은 FSE에 의해 더욱 세밀히 조사될 수 있다. ACR이 키값에 액세스 권한들을 갖고 있는 것으로 SSA 시스템이 판정한 후에, FSE는 액세스가 승인되기 전에 참조될 것이다. 이 특징은 콘텐트에 액세스를 제어하기 위해 콘텐트 소유자에 큰 융통성을 가능하게 한다.Instead of replacing one set of protocols with another, launching a device internal application may impose additional access conditions on the access control already exercised by the SSA. For example, the authority to access key values in the CEK can be further examined by the FSE. After the SSA system determines that the ACR has access rights to the key value, the FSE will be referenced before the access is granted. This feature enables great flexibility for content owners to control access to content.

발명이 다양한 실시예들을 참조하여 기술되었으나, 첨부된 청구항들 및 이들의 등가물들에 의해서만 정의되는, 발명이 범위 내에서 변경들 및 수정들이 행해질 수 있임이 이해될 것이다.Although the invention has been described with reference to various embodiments, it will be understood that changes and modifications may be made within the scope of the invention, which is defined only by the appended claims and equivalents thereof.

상술한 바와 같이, 본 발명은, 다기능 콘텐트 제어 특징들을 구비한 메모리 시스템을 제공하는데 사용된다.As mentioned above, the present invention is used to provide a memory system with multifunctional content control features.

Claims (24)

공개 및 기밀정보를 저장하며, 인증된 실체에 의한 액세스가 상기 기밀정보의 부분만으로 제약되도록 서로 다른 인증된 실체들에 의해 상기 기밀정보에의 액세스를 제어하는 제어구조를 포함하는 메모리 디바이스로부터 정보를 공급하기 위한 방법에 있어서,Storing information publicly and confidentially, and storing information from a memory device including a control structure that controls access to the confidential information by different authenticated entities such that access by the authenticated entity is restricted to only a portion of the confidential information. In the method for supplying, (a) 상기 메모리 디바이스를 호스트 디바이스에 탈착 가능하게 접속하는 단계와,(a) detachably connecting the memory device to a host device; (b) 상기 호스트 디바이스로부터 상기 실체들의 개개의 실체에 의해 보내진 일반 정보 조회에 응하여, 상기 메모리 디바이스가 상기 공개정보를 공급하는 단계와,(b) the memory device supplying the public information in response to a general information inquiry sent by the individual entity of the entities from the host device; (c) 상기 호스트 디바이스로부터 상기 실체들 중 개개의 인증된 실체에 의해 보내진 디스크리트 정보 조회에 응하여, 상기 제어구조에 의해 액세스하는 것이 이러한 인증된 실체에 허용되는 상기 기밀정보의 상기 부분만을 공급하는 단계를(c) in response to querying for discrete information sent by the respective authenticated entity of the entities from the host device, supplying only the portion of the confidential information that is allowed to access by the control structure to the authenticated entity; To 포함하는, 방법.Including, method. 제 1항에 있어서, 상기 공개정보는 상기 일반 정보 조회를 보낸 상기 실체가 인증되었는지 여부에 관계없이 단계(a)에서 공급되는, 방법.The method of claim 1, wherein the public information is supplied in step (a) whether or not the entity that sent the general information query is authenticated. 제 1항에 있어서, 상기 기밀정보는 공유부분 및 비공유 부분을 포함하며, 상 기 공유 부분은 단계(a)에서 상기 실체들 중 개개의 인증된 실체에만 공급되고 상기 실체들 중 비인증된 것에는 공급되지 않는, 방법.The method of claim 1, wherein the confidential information includes a shared portion and a non-shared portion, wherein the shared portion is supplied only to each authenticated entity of the entities in step (a) and to the unauthorized ones of the entities. That's not how it is. 제 3항에 있어서, 상기 메모리 디바이스는 수명상태들을 갖는 소프트웨어 애플리케이션들을 저장하며, 상기 기밀정보의 상기 공유부분은 소프트웨어 애플리케이션들의 이름들 및 이들의 수명상태들을 포함하는, 방법.4. The method of claim 3, wherein the memory device stores software applications having lifetimes, and wherein the shared portion of confidential information includes names of software applications and their lifetimes. 제 3항에 있어서, 상기 제어구조는 적어도 하나의 하위-제어구조를 포함하고 각각은 적어도 하나의 인증된 실체에 의해 상기 기밀정보의 상기 공유부분에의 액세스를 제어하며, 상기 일반 정보 조회에 응하여 공급되는 상기 공유부분은 상기 적어도 하나의 하위-제어 구조의 리스트를 포함하는, 방법.4. The apparatus of claim 3, wherein the control structure includes at least one sub-control structure, each of which controls access to the shared portion of the confidential information by at least one authenticated entity, in response to the general information query. The shared portion supplied comprises a list of the at least one sub-control structure. 제 5항에 있어서, 상기 적어도 하나의 하위-제어구조는 적어도 하나의 루트 액세스 제어 레코드를 포함하며, 상기 일반 정보 조회에 응하여 공급되는 상기 공유부분은 상기 적어도 하나의 루트 액세스 제어 레코드의 리스트를 포함하는, 방법.6. The apparatus of claim 5, wherein the at least one sub-control structure includes at least one root access control record, and wherein the shared portion supplied in response to the general information query comprises a list of the at least one root access control record. How to. 제 5항에 있어서, 상기 적어도 하나의 하위-제어구조는 적어도 하나의 자식(children) 하위-제어구조를 포함하며, 인증된 실체로부터 디스크리트 정보 조회에 응하여 공급되는 상기 기밀정보는 이름들 및 파티션들에의 액세스 권한들, 이름 들과 키들 및 소프트웨어 애플리케이션들에의 액세스 권한들, 적어도 하나의 자식 하위-제어 구조, 보안 데이터 객체들 및 신원(id실체) 객체들 중 적어도 하나를 포함하는, 방법.6. The method of claim 5, wherein the at least one sub-control structure includes at least one child sub-control structure, wherein the confidential information supplied in response to the discrete information query from an authenticated entity is named and partitions. Access rights, names and keys and access rights to software applications, at least one of at least one child sub-control structure, secure data objects, and identity (id entity) objects. 제 7항에 있어서, 상기 적어도 하나의 하위-제어 구조는 적어도 하나의 루트 액세스 제어 레코드를 포함하고, 상기 적어도 하나의 자식 하위-제어 구조는 적어도 하나의 자식 액세스 제어 레코드 및 상기 적어도 하나의 자식 액세스 제어 레코드를 포함하는 액세스 제어 레코드 그룹들을 포함하는, 방법.8. The method of claim 7, wherein the at least one sub-control structure includes at least one root access control record, and wherein the at least one child sub-control structure includes at least one child access control record and the at least one child access. And access control record groups comprising a control record. 제 1항에 있어서, 상기 일반 정보 조회에 응하여 공급되는 상기 공개정보는 상기 디바이스 상에 소프트웨어 애플리케이션들의 리스트 및 이들의 실행상태들을 포함하는, 방법.The method of claim 1, wherein the public information supplied in response to the general information query includes a list of software applications on the device and their execution states. 제 1항에 있어서, 상기 공개정보 및 기밀정보는 적어도 하나의 그룹들의 정보 객체들에 공급되고, 상기 그룹들 중 하나는 한 시퀀스의 조회들에 각 조회에 응하여 보내지는, 방법.The method of claim 1, wherein the public and confidential information is supplied to at least one group of information objects and one of the groups is sent in response to each query in a sequence of queries. 제 10항에 있어서, 각 한 그룹의 정보 객체들은 최대 512 바이트를 포함하는, 방법.The method of claim 10, wherein each group of information objects includes a maximum of 512 bytes. 메모리 디바이스에 있어서,In a memory device, 상기 메모리 디바이스의 동작을 제어하는 제어기와,A controller for controlling the operation of the memory device; 공개 및 기밀정보, 및 인증된 실체에 의한 액세스가 상기 기밀정보의 부분만으로 제약되도록 서로 다른 인증된 실체들에 의해 상기 기밀정보에의 액세스를 제어하는 제어구조를 저장하는 비휘발성 저장 매체와,A non-volatile storage medium storing public and confidential information and a control structure for controlling access to the confidential information by different authenticated entities such that access by the authenticated entity is restricted to only a portion of the confidential information; 실체에 의한 일반정보 조회에 응하여, 상기 제어기는 상기 공개정보를 공급하며;In response to a general information inquiry by an entity, the controller supplies the public information; 인증된 실체에 의한 디스크리트 정보 조회에 응하여, 상기 제어기는 상기 제어구조에 의해 액세스하는 것이 이러한 인증된 실체에 허용되는 상기 기밀정보의 상기 부분만을 공급하며;In response to querying the discrete information by an authenticated entity, the controller supplies only the portion of the confidential information that is allowed to such authenticated entity to access by the control structure; 상기 비휘발성 저장매체 및 제어기를 에워싸는 하우징을A housing surrounding the nonvolatile storage medium and the controller. 포함하는, 메모리 디바이스.Including a memory device. 제 12항에 있어서, 상기 제어기는 상기 일반 정보 조회를 보낸 상기 실체가 인증되었는지 여부에 관계없이 상기 공개정보를 공급하는, 메모리 디바이스.13. The memory device of claim 12, wherein the controller supplies the public information regardless of whether the entity that sent the general information query is authenticated. 제 12항에 있어서, 상기 기밀정보는 공유부분 및 비공유 부분을 포함하며, 상기 제어기는 상기 실체들 중 개개의 인증된 실체에만 상기 공유부분을 공급하고 상기 실체들 중 비인증된 것들엔 공급하지 않는, 메모리 디바이스.The system of claim 12, wherein the confidential information includes a shared portion and a non-shared portion, wherein the controller supplies the shared portion only to individual authenticated entities of the entities and not to the unauthorized ones of the entities. Memory device. 제 14항에 있어서, 상기 기밀정보의 상기 공유부분은 소프트웨어 애플리케이션들의 이름들 및 이들의 수명상태들을 포함하는, 메모리 디바이스.15. The memory device of claim 14, wherein the shared portion of confidential information includes names of software applications and their life states. 제 14항에 있어서, 상기 제어구조는 적어도 하나의 하위-제어구조를 포함하고 각각은 적어도 하나의 인증된 실체에 의한 상기 기밀정보의 부분에의 액세스를 제어하며, 상기 일반 정보 조회에 응하여 상기 제어기에 의해 공급되는 상기 기밀정보의 상기 공유부분은 상기 적어도 하나의 하위-제어 구조의 리스트를 포함하는, 메모리 디바이스.15. The controller of claim 14, wherein the control structure includes at least one sub-control structure, each of which controls access to the portion of the confidential information by at least one authenticated entity, the controller in response to the general information query. The shared portion of the confidential information supplied by the memory device comprises a list of the at least one sub-control structure. 제 16항에 있어서, 상기 적어도 하나의 하위-제어구조는 적어도 하나의 루트 액세스 제어 레코드를 포함하며, 상기 일반 정보 조회에 응하여 공급되는 상기 기밀정보의 상기 공유부분은 상기 적어도 하나의 루트 액세스 제어 레코드의 리스트를 포함하는, 메모리 디바이스.17. The apparatus of claim 16, wherein the at least one sub-control structure includes at least one root access control record, wherein the shared portion of the confidential information supplied in response to the general information query is the at least one root access control record. A memory device that contains a list of. 제 16항에 있어서, 상기 적어도 하나의 하위-제어구조는 적어도 하나의 자식 하위-제어구조를 포함하며, 인증된 실체로부터 디스크리트 정보 조회에 응하여 상기 제어기에 의해 공급되는 상기 기밀정보는 이름들 및 파티션들에의 액세스 권한들, 이름들과 키들 및 소프트웨어 애플리케이션들에의 액세스 권한들, 자식 하위-제어 구조들, 보안 데이터 객체들 및 신원 객체들 중 적어도 하나를 포함하는, 메모리 디바이스.17. The system of claim 16, wherein the at least one sub-control structure includes at least one child sub-control structure, wherein the confidential information supplied by the controller in response to the querying of the discrete information from an authenticated entity includes names and partitions. Devices, at least one of names and keys and access rights to software applications, child sub-control structures, security data objects, and identity objects. 제 18항에 있어서, 상기 적어도 하나의 하위-제어 구조는 적어도 하나의 루트 액세스 제어 레코드를 포함하고, 상기 적어도 하나의 자식 하위-제어 구조는 적어도 하나의 자식 액세스 제어 레코드 및 상기 적어도 하나의 자식 액세스 제어 레코드를 포함하는 액세스 제어 레코드 그룹들을 포함하는, 메모리 디바이스.19. The apparatus of claim 18, wherein the at least one sub-control structure comprises at least one root access control record, wherein the at least one child sub-control structure comprises at least one child access control record and the at least one child access. A memory device comprising access control record groups comprising a control record. 제 12항에 있어서, 상기 일반 정보 조회에 응하여 공급되는 상기 공개정보는 상기 디바이스 상에 소프트웨어 애플리케이션들의 리스트 및 이들의 실행상태들을 포함하는, 메모리 디바이스.13. The memory device of claim 12, wherein the public information supplied in response to the general information query includes a list of software applications on the device and their execution states. 제 12항에 있어서, 상기 공개정보 및 기밀정보는 적어도 하나의 그룹의 정보 객체들로 상기 제어기에 의해 공급되고, 상기 그룹들 중 하나는 한 시퀀스의 조회들에 각 조회에 응하여 보내지는, 메모리 디바이스.13. The memory device of claim 12, wherein the public and confidential information is supplied by the controller in at least one group of information objects, one of the groups being sent in response to each inquiry in a sequence of inquiries. . 제 21항에 있어서, 각 한 그룹의 정보 객체들은 많아야 512 바이트를 포함하는, 메모리 디바이스.The memory device of claim 21, wherein each group of information objects includes at most 512 bytes. 제 12항에 있어서, 상기 디바이스는 비휘발성 메모리를 포함하고, 상기 디바이스는 호스트 디바이스에 탈착 가능하게 접속되도록 구성된, 메모리 디바이스.The memory device of claim 12, wherein the device comprises a nonvolatile memory, and wherein the device is configured to be detachably connected to a host device. 제 12항에 있어서, 상기 하우징은 카드 형상을 갖는, 메모리 디바이스.The memory device of claim 12, wherein the housing has a card shape.
KR1020087032259A 2006-07-07 2007-06-28 System and method for controlling information supplied from memory device KR20090033191A (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US81950706P 2006-07-07 2006-07-07
US60/819,507 2006-07-07
US11/557,052 US8266711B2 (en) 2006-07-07 2006-11-06 Method for controlling information supplied from memory device
US11/557,052 2006-11-06
US11/557,051 2006-11-06
US11/557,051 US20080022395A1 (en) 2006-07-07 2006-11-06 System for Controlling Information Supplied From Memory Device

Publications (1)

Publication Number Publication Date
KR20090033191A true KR20090033191A (en) 2009-04-01

Family

ID=38829240

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087032259A KR20090033191A (en) 2006-07-07 2007-06-28 System and method for controlling information supplied from memory device

Country Status (5)

Country Link
EP (1) EP2038800A2 (en)
JP (1) JP5180203B2 (en)
KR (1) KR20090033191A (en)
TW (1) TW200821837A (en)
WO (1) WO2008008245A2 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010027852A1 (en) 2009-04-16 2011-02-24 Samsung Mobile Display Co. Ltd., Yongin Mask frame assembly for thin film deposition and related methods
KR20140012318A (en) * 2012-07-19 2014-02-03 삼성전자주식회사 Nonvolatile memory, reading method of nonvolatile memory, and memory system including nonvolatile memory
KR101661933B1 (en) * 2015-12-16 2016-10-05 주식회사 코인플러그 Ccertificate authentication system and method based on block chain
KR101661930B1 (en) * 2015-08-03 2016-10-05 주식회사 코인플러그 Certificate issuance system based on block chain
US11550929B2 (en) 2018-10-01 2023-01-10 SK Hynix Inc. Memory system

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7748031B2 (en) 2005-07-08 2010-06-29 Sandisk Corporation Mass storage device with automated credentials loading
JP5747757B2 (en) * 2011-09-15 2015-07-15 ソニー株式会社 Information processing apparatus, information processing method, and program
JP5747758B2 (en) * 2011-09-15 2015-07-15 ソニー株式会社 Information processing apparatus, information processing method, and program
JP5915046B2 (en) * 2011-09-15 2016-05-11 ソニー株式会社 Information processing apparatus, information processing method, and program
TWI596486B (en) * 2011-11-04 2017-08-21 群聯電子股份有限公司 Memory storage apparatus, memory controller, and method for transmitting and identifying data stream
JP5942612B2 (en) * 2012-06-05 2016-06-29 凸版印刷株式会社 Information storage device and access determination method thereof
WO2014078481A1 (en) * 2012-11-15 2014-05-22 Violin Memory Inc. Memorty array with atomic test and set
JP6048710B2 (en) 2013-02-28 2016-12-21 パナソニックIpマネジメント株式会社 ENCRYPTION RECORDING DEVICE AND ENCRYPTION RECORDING METHOD
JP7505862B2 (en) * 2019-03-14 2024-06-25 オムロン株式会社 CONTROL SYSTEM, CONTROL METHOD, AND CONTROL DEVICE
US20210243035A1 (en) * 2020-02-03 2021-08-05 Micron Technology, Inc. Multi-factor authentication enabled memory sub-system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7272723B1 (en) * 1999-01-15 2007-09-18 Safenet, Inc. USB-compliant personal key with integral input and output devices
WO2006069312A2 (en) * 2004-12-21 2006-06-29 Sandisk Corporation System for creating control structure for versatile content control

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010027852A1 (en) 2009-04-16 2011-02-24 Samsung Mobile Display Co. Ltd., Yongin Mask frame assembly for thin film deposition and related methods
KR20140012318A (en) * 2012-07-19 2014-02-03 삼성전자주식회사 Nonvolatile memory, reading method of nonvolatile memory, and memory system including nonvolatile memory
KR101661930B1 (en) * 2015-08-03 2016-10-05 주식회사 코인플러그 Certificate issuance system based on block chain
WO2017022917A1 (en) * 2015-08-03 2017-02-09 (주)코인플러그 Certificate issuing system based on block chain
US11082420B2 (en) 2015-08-03 2021-08-03 Coinplug, Inc. Certificate issuing system based on block chain
US12063209B2 (en) 2015-08-03 2024-08-13 Cplabs, Inc. Certificate issuing system based on block chain
KR101661933B1 (en) * 2015-12-16 2016-10-05 주식회사 코인플러그 Ccertificate authentication system and method based on block chain
US11550929B2 (en) 2018-10-01 2023-01-10 SK Hynix Inc. Memory system

Also Published As

Publication number Publication date
WO2008008245A3 (en) 2008-02-28
TW200821837A (en) 2008-05-16
EP2038800A2 (en) 2009-03-25
JP5180203B2 (en) 2013-04-10
WO2008008245A2 (en) 2008-01-17
JP2009543212A (en) 2009-12-03

Similar Documents

Publication Publication Date Title
US8639939B2 (en) Control method using identity objects
US8613103B2 (en) Content control method using versatile control structure
US8266711B2 (en) Method for controlling information supplied from memory device
US8140843B2 (en) Content control method using certificate chains
US8245031B2 (en) Content control method using certificate revocation lists
KR101238848B1 (en) Versatile Content Control With Partitioning
KR101213118B1 (en) Memory System with versatile content control
US20080022395A1 (en) System for Controlling Information Supplied From Memory Device
US20080034440A1 (en) Content Control System Using Versatile Control Structure
US20080010458A1 (en) Control System Using Identity Objects
US20080010449A1 (en) Content Control System Using Certificate Chains
US20100138652A1 (en) Content control method using certificate revocation lists
US20080010452A1 (en) Content Control System Using Certificate Revocation Lists
JP5180203B2 (en) System and method for controlling information supplied from a memory device
JP4857284B2 (en) Control structure generation system for multi-purpose content control
JP2008524758A5 (en)
WO2008008244A2 (en) Content control system and method using versatile control structure
JP5178716B2 (en) Content management system and method using certificate revocation list
KR20070087175A (en) Control structure for versatile content control and method using structure
WO2008013656A2 (en) Content control system and method using certificate chains
JP4972165B2 (en) Control system and method using identity objects

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E601 Decision to refuse application