KR101465555B1 - 엔티티를 인증하기 위해 사용된 시간 평가의 정확성을 개선하기 위한 회로를 구비한 메모리 디바이스와, 상기 메모리 디바이스와 사용하기 위한 방법 - Google Patents
엔티티를 인증하기 위해 사용된 시간 평가의 정확성을 개선하기 위한 회로를 구비한 메모리 디바이스와, 상기 메모리 디바이스와 사용하기 위한 방법 Download PDFInfo
- Publication number
- KR101465555B1 KR101465555B1 KR1020107000091A KR20107000091A KR101465555B1 KR 101465555 B1 KR101465555 B1 KR 101465555B1 KR 1020107000091 A KR1020107000091 A KR 1020107000091A KR 20107000091 A KR20107000091 A KR 20107000091A KR 101465555 B1 KR101465555 B1 KR 101465555B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory device
- time
- entity
- timestamp
- authenticate
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 230000015654 memory Effects 0.000 claims description 32
- 238000010586 diagram Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 10
- 238000010200 validation analysis Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 241000238876 Acari Species 0.000 description 6
- 238000012795 verification Methods 0.000 description 4
- 208000010543 22q11.2 deletion syndrome Diseases 0.000 description 3
- 102000036364 Cullin Ring E3 Ligases Human genes 0.000 description 3
- 108091007045 Cullin Ring E3 Ligases Proteins 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 101000842368 Homo sapiens Protein HIRA Proteins 0.000 description 2
- 102100030473 Protein HIRA Human genes 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
- G06F21/725—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits operating on a secure reference time value
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
- H04L63/0846—Network architectures or network communication protocols for network security for authentication of entities using passwords using time-dependent-passwords, e.g. periodically changing passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3297—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2463/00—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
- H04L2463/121—Timestamp
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
엔티티를 인증하기 위해 사용된 시간 평가 정확도를 개선하기 위한 회로를 가진 메모리 디바이스와 상기 메모리 디바이스와 함께 사용하기 위한 방법은 개시된다. 일 실시예에서, 메모리 디바이스는 엔티티를 인증하기 위한 요청을 수신한다. 엔티티를 인증하기 위한 시도 전에, 메모리 디바이스는 새로운 타임 스탬프가 필요한지를 결정한다. 새로운 타임 스탬프가 필요하면, 메모리 디바이스는 새로운 타임 스탬프를 수신하고 그 다음 새로운 타임 스탬프를 바탕으로 시간 평가를 사용하여 엔티티를 인증하기 위해 시도한다. 다른 실시예에서, 메모리 디바이스는 새로운 타임 스탬프가 필요할 시기를 지정하는 다수의 다른 타임 스탬프 업데이트 정책들(TUP)을 포함하고, 새로운 타임 스탬프가 필요한지의 결정은 엔티티와 연관된 TUP를 기초로 한다. 다른 실시예들은 개시되고 각각의 실시예들은 단독 또는 결합하여 함께 사용될 수 있다.
Description
이 출원은 "Method for Improving Accuracy of a Time Estimate," U.S.patent application serial number 11/811,284; "Memory Device with Circuitry for Improving Accuracy of a Time Estimate," U.S.patent application serial number 11/811,347; "Method for Improving Accuracy of a Time Estimate Used to Authenticate an Entity to a Memory Device," U.S.patent application serial number 11/811,289; "Memory Device with Circuitry for Improving Accuracy of a Time Estimate Used to Authenticate an Entity," U.S.patent application serial number 11/811,344; "Method for Improving Accuracy of a Time Estimate used in Digital Rights Management(DRM) License Validation," U.S.patent application serial number 11/811,354; "Memory Device with Circuitry for Improving Accuracy of a Time Estimate Used in Digital Rights Management(DRM) License Validation," U.S.patent application serial number 11/811,348; "Method for Using Time from a Trusted Host Device," U.S.patent application serial number 11/811,346; and "Memory Device Using Time from a Trust Host Device," U.S.patent application serial number 11/811,345에 관한 것이고; 이들 각각은 여기에 출원되고 여기에 참조로써 통합된다.
SanDisk Corporation으로부터의 TrustedFlashTM 메모리 디바이스들 같은 몇몇 메모리 디바이스들은 디지털 권리 관리(DRM) 라이센스 유효화 같은 시간-기반 동작들을 수행하기 위하여 시간을 알 필요가 있다. 상기 동작들에 수반된 보안 문제들로 인해, 메모리 디바이스는 올바른 시간을 제공하기 위하여 호스트 디바이스를 신뢰할 수 없다. 메모리 디바이스가 네트워크에서 신뢰하는 컴포넌트로부터 올바른 시간을 얻는 동안, 메모리 디바이스를 호스팅하는 호스트 디바이스는 메모리 디바이스가 시간을 알 필요가 있는 시간에 네트워크에 접속될 수 없다. 메모리 디바이스는 액티브 시간을 측정하도록 설계될 수 있지만, 측정된 액티브 시간으로부터 생성된 시간 평가는 메모리 디바이스가 계속하여 액티브 시간을 측정할 수 없는 경우(예를 들어, 메모리 디바이스 측정이 시작된 후 전력이 다운되는 경우) 실제 시간의 신뢰적인 측정치가 아닐 것이다. 따라서, 측정된 액티브 시간으로부터 생성된 시간 평가값은 실제 시간이 무엇인지의 하부 제한만을 가리키고, 상기 시간 평가값은 특정 시간-기반 동작들에서 목표된 정확도를 제공하지 못할 것이다. 메모리 디바이스가 인액티브될 때에도 계속하여 시간트랙을 유지하도록 메모리 디바이스에 배터리-백업 클럭이 장비될 수 있지만, 상기 클럭은 메모리 디바이스에 비용을 부가할 수 있다.
본 발명은 청구항들에 의해 정의되고, 이 섹션의 어느 것도 이들 청구항들을 제한하지 않아야 한다.
도입부에 의해, 하기된 실시예들은 엔티티를 인증하기 위해 사용된 시간 평가 정확도를 개선하기 위한 회로를 가진 메모리 디바이스 및 상기 메모리 디바이스와 함께 사용하기 위한 방법을 제공한다. 일 실시예에서, 메모리 디바이스는 엔티티를 인증하기 위한 요청을 수신한다. 엔티티를 인증하기 위한 시도 전에, 메모리 디바이스는 새로운 타임 스탬프가 필요한지를 결정한다. 만약 새로운 타임 스탬프가 필요하면, 메모리 디바이스는 새로운 타임 스탬프를 수신하고 그 다음 새로운 타임 스탬프를 기반으로 시간 평가를 사용하여 엔티티를 인증하기 위하여 시도한다. 다른 실시예에서, 메모리 디바이스는 새로운 타임 스탬프가 필요할 시기를 지정하는 다수의 다른 타임 스탬프 업데이트 정책들(TUP)을 포함하고, 새로운 타임 스탬프가 필요한지의 결정은 엔티티와 연관된 TUP를 기반으로 한다. 다른 실시예들은 개시되고, 각각의 실시예들은 단독으로 또는 결합하여 함께 사용될 수 있다.
실시예들은 첨부된 도면들을 참조하여 지금 기술될 것이다.
본 발명은, 엔티티를 인증하기 위해 사용된 시간 평가 정확도를 개선하기 위한 회로를 가진 메모리 디바이스와 상기 메모리 디바이스와 함께 사용하기 위한 방법을 제공하는 효과를 갖는다.
도 1은, 실시예의 시스템을 도시하는 도면.
도 2는, 실시예의 메모리 디바이스의 블록도.
도 3은, 도 2의 메모리 디바이스의 다양한 기능 모듈을 도시하는 도면.
도 4는, 실시예의 비대칭 인증 처리의 프로토콜 도면.
도 5는, 타임 스탬프를 얻기 위한 실시예의 시스템 도면.
도 6은, 타임 스탬프를 얻기 위한 실시예의 방법 흐름도.
도 7은, 타임 스탬프 업데이트 정책을 검사하기 위한 실시예의 방법 흐름도.
도 8은, 메모리 디바이스에서 실행하는 애플리케이션에 대한 호스트 타임을 사용하여 실시예의 메모리 디바이스 도면.
도 2는, 실시예의 메모리 디바이스의 블록도.
도 3은, 도 2의 메모리 디바이스의 다양한 기능 모듈을 도시하는 도면.
도 4는, 실시예의 비대칭 인증 처리의 프로토콜 도면.
도 5는, 타임 스탬프를 얻기 위한 실시예의 시스템 도면.
도 6은, 타임 스탬프를 얻기 위한 실시예의 방법 흐름도.
도 7은, 타임 스탬프 업데이트 정책을 검사하기 위한 실시예의 방법 흐름도.
도 8은, 메모리 디바이스에서 실행하는 애플리케이션에 대한 호스트 타임을 사용하여 실시예의 메모리 디바이스 도면.
이제 도면을 참조하면, 도 1은 이들 실시예들을 도시하기 위하여 사용될 시스템(10)의 도면이다. 도 1에 도시된 바와 같이, 시스템(10)은 각각 다수의 호스트 디바이스들과 제거 가능하게 접속된 다수의 메모리 디바이스들(20,30,40)을 포함한다: 퍼스널 컴퓨터(PC)(50), 디지털 미디어(예를 들어, MP3) 플레이어(60), 및 셀 폰(70). 호스트 디바이스는 메모리 디바이스로부터 데이터를 판독하고 및/또는 상기 메모리 디바이스로 데이터를 기입할 수 있는 디바이스이다. 데이터는 오디오 파일 또는 비디오 파일(오디오를 가지거나 가지지 않고), 이미지, 게임, 북, 맵, 데이터 파일, 또는 소프트웨어 프로그램 같은 디지털 미디어 컨텐트를 포함할 수 있지만, 이것으로 제한되지 않는다. 데이터는 예를 들어 네트워크에서 서버로부터 메모리 디바이스로 다운로드되거나, 제조자 또는 다른 제 3 파티에 의해 미리 로딩되거나, 다른 장치로부터 사이드-로딩(side-load)된다.
호스트 디바이스는 임의의 적당한 형태를 취할 수 있고 도 1에 도시된 예들로 제한되지 않는다. 예를 들어, 호스트 디바이스는 노트북 컴퓨터, 핸드헬드 컴퓨터, 핸드헬드 이메일/텍스트 메시지 장치, 핸드헬드 게임 콘솔, 비디오 플레이어(예를 들어, DVD 플레이어 또는 휴대용 비디오 플레이어), 오디오 및/또는 비디오 레코더, 디지털 카메라, 셋톱 박스, 디스플레이 장치(예를 들어, 텔레비젼), 프린터, 카 스테레오, 및 네비게이션 시스템 형태를 가질 수 있다. 또한, 호스트 디바이스는 혼합된 기능을 포함할 수 있다. 예를 들어, 호스트 디바이스는 전화 콜을 형성 및 수신하는 것 외에 또한 디지털 미디어(예를 들어, 음악 및/또는 비디오) 파일들을 플레이할 수 있는 셀 전화일 수 있다.
PC(50) 및 셀 전화(70) 같은 호스트 디바이스는 네트워크(비록 다른 형태의 네트워크들이 사용될 수 있지만, 인터넷 80 또는 무선 네트워크 90 같은)에 통신 가능하게 접속하는 능력을 가질 수 있다. 상기 능력을 가진 호스트 디바이스는 여기서 "접속된 장치"라 한다. 셀 전화(70)가 접속되지 않은 모드에서 동작할 때 또는 PC(50)가 인터넷 접속을 설정하지 않을 때 같이 "접속된 장치"가 실제로 항상 네트워크에 접속될 수 없다는 것이 이해되어야 한다. 자체적으로 네트워크(디지털 미디어 플레이어 60 같은)에 통신 가능하게 접속하는 능력을 가지지 않는 호스트 디바이스는 여기서 "접속되지 않은 장치"라 불린다. 접속되지 않은 장치는 도 1에 도시된 바와 같이 접속된 장치와 접속되지 않은 장치를 접속함으로써 네트워크와 통신시 배치될 수 있고, 여기서 디지털 미디어 플레이어(60)는 PC(50)에 접속된다. 비록 상기 방식으로 접속되더라도, 접속되지 않은 장치는 접속되지 않은 장치가 상기 기능(예를 들어, 간단한 MP3 플레이어)을 위하여 설계되지 않은 경우 네트워크로부터 정보를 유도할 수 없다. 상기 상황에서, 네트워크의 컴포넌트는 상기 장치에 정보를 푸쉬(push)할 수 있다. 도 1이 유선 접속을 통해 PC(50)에 접속된 디지털 미디어 플레이어(60)를 도시하는 동안, 무선 접속이 사용될 수 있다는 것이 주지되어야 한다. 유사하게, 용어들 "접속" 및 "결합"은 필수적으로 유선 접속 또는 직접 접속을 나타내지 않는다.
네트워크(예를 들어, 인터넷 80 또는 무선 네트워크 90)는 접속된 장치(또는 접속된 장치에 접속된 접속되지 않은 장치)가 타임 스탬프를 제공할 수 있는 타임 서버(100), 및 DRM-보호 컨텐트 및 상기 컨텐트에 액세스하기 위한 라이센스를 제공할 수 있는 디지털 권리 관리 서버(DRM)(110) 같은(이것으로 제한되지 않음) 외부 컴포넌트들에 액세스하게 한다. 이들 서버들 둘 다는 이하에 보다 상세히 기술될 것이다. 타임 서버(100) 및 DRM 서버(110)가 도 1에서 독립된 장치로서 도시되지만, 이들 두 개의 서버들은 단일 장치로 결합될 수 있다. 게다가, 이들 서버들은 다른 기능을 포함할 수 있다. 또한, 타임 서버(100) 및 DRM 서버(110)와 다른 컴포넌트들은 만약 원하면 인터넷(80) 및 무선 네트워크(90)를 통해 액세스될 수 있다.
도면들을 다시 참조하여, 도 2는 메모리 카드 또는 스틱 형태를 가질 수 있는 실시예의 메모리 디바이스(200)의 블록도이다. 도 2에 도시된 바와 같이, 메모리 디바이스(200)는 비휘발성 메모리 어레이(플래시 메모리 같은)(210) 및 회로(220)의 수집부를 포함한다. 이런 실시예에서, 비휘발성 메모리 어레이(210)는 고체 메모리, 특히 플래시 메모리(210) 형태를 가진다. 플래시 대신, 다른 타입의 고체 메모리들이 사용될 수 있다는 것이 주지되어야 한다. 또한 자기 디스크들 및 광학 CD들 같은 고체 메모리들과 다른 메모리들(이것으로 제한되지 않음)이 사용될 수 있다는 것이 주지되어야 한다. 또한, 간략화를 위해, 용어 "회로"는 순수 하드웨어 구현 및/또는 결합된 하드웨어/소프트웨어(또는 펌웨어) 구현이라 불리도록 사용될 것이다. 따라서, "회로"는 애플리케이션 지정 집적 회로(ASIC), 프로그램 가능 논리 제어기, 내장형 마이크로제어기, 및 단일-기판 컴퓨터뿐 아니라, 처리기 및 상기 처리기에 의해 실행할 수 있는 컴퓨터-판독 가능 프로그램 코드(예를 들어, 소프트웨어 또는 펌웨어)를 저장한 컴퓨터-판독 가능 매체 중 하나 또는 그 이상의 형태를 가질 수 있다.
도 2의 회로(210)의 수집부는 다수의 컴포넌트들을 포함하고: 상기 컴포넌트들은 호스트 인터페이스 모듈(HIM)(230), 플래시 인터페이스 모듈(FIM)(240), 버퍼 관리 유니트(BMU)(250), CPU(260), 및 하드웨어 타이머 블록(270)을 포함한다. HIM(230)은 호스트 디바이스(300)에 대한 인터페이스 기능을 제공하고, FIM(240)은 플래시 메모리(210)에 대한 인터페이스 기능을 제공한다. BMU(250)는 인크립션/디크립션 기능을 제공하기 위한 크립토-엔진(252) 및 호스트 디렉트 메모리 액세스(DMA) 컴포넌트(254) 및 각각 HIM(230) 및 FIM(240)와 통신하기 위한 플래시 DMA 컴포넌트(256)를 포함한다. CPU(260)는 CPU RAMS(260) 및/또는 플래시 메모리(210)에 저장된 소프트웨어 및 펌웨어를 실행한다. 하드웨어 타이머 블록(270)은 시간을 측정하기 위한 메모리 디바이스의 능력과 관련하여 하기에 기술될 것이다.
메모리 디바이스(200)를 호스트 디바이스(300)에 제거 가능하게 접속하기 위한 전기 및 물리적 접속기들 같은 메모리 디바이스(200)의 다른 컴포넌트들은 도면을 간략화하기 위하여 도 2에 도시되지 않는다. 메모리 디바이스(200) 및 상기 장치의 동작에 관한 보다 많은 정보는 U.S. 특허 출원 일련 번호들 11/314,411 및 11/557,028에서 발견될 수 있고, 그 양쪽은 참조로써 여기에 통합된다. 부가적인 정보는 U.S. 특허 출원 일련 번호 11/322,812 및 U.S. 특허 출원 일련 번호 11/322,766에서 발견될 수 있고, 그 양쪽은 여기에 참조로써 통합된다. 이들 도큐먼트들에 기술된 컴포넌트들 및 기능은 여기에 명확하게 열거되지 않으면 다음 청구항들에 판독되지 않는다.
이 실시예에서, 메모리 디바이스(200)는 메모리 디바이스(200)에 저장된 보호된 컨텐트를 언로킹하기 위하여 디지털 권리 관리(DRM) 키와 라이센스를 저장한다. (이들 실시예들이 메모리 디바이스상에 저장된 보호된 컨텐트를 언로킹하기 위하여 DRM 키와 라이센스를 저장하지 않는 메모리 디바이스들에 사용될 수 있다는 것이 주지되어야 한다). DRM 키와 라이센스들은 메모리 디바이스(200)에 의해 생성되거나 메모리 디바이스(200(예를 들어, DRM 서버 110에 의해)의 외측에 생성되고 메모리 디바이스(200)에 전송될 수 있다. DRM 키와 라이센스들이 메모리 디바이스(200)와 함께 이동하기 때문에, 보호되는 컨텐트는 호스트 디바이스(300) 대신 메모리 디바이스(200)에 효과적으로 결합되어, 보호된 컨텐트가 인증된 장치인 것을 메모리 디바이스(200)에게 증명할 수 있는 임의의 호스트 디바이스에 의해 휴대될 수 있고 액세스될 수 있게 한다. SanDisk Corporation으로부터의 TrustedFlashTM 메모리 디바이스들은 메모리 디바이스상에 DRM 키와 라이센스를 저장하는 메모리 디바이스들의 예들이므로, 보호된 컨텐트는 메모리 디바이스와 함께 이동할 수 있다. 몇몇 실시예들에서, 메모리 디바이스(200)는 또한 메모리 디바이스(200)에 저장된 DRM 키들로 DRM 라이센스를 비준하므로, 다른 실시예들에서 메모리 디바이스(200)는 DRM 키들로 DRM 라이센스를 비준하기 위해 DRM 키들을 호스트 디바이스(300)에 제공한다.
이 실시예에서, 메모리 디바이스(200)의 CPU(260)는 적당한 증명서를 가진 인증된 엔티티들만이 DRM 키와 라이센스들에 액세스할 수 있는 것을 보장하기 위하여 보안 저장 애플리케이션(SSA)을 실행한다. SSA를 위한 컴퓨터-판독 가능 코드는 플래시 메모리(210), CPU RAM들(262), 또는 메모리 디바이스(200) 내 다른 저장 위치에 저장될 수 있다. SSA는 상기된 '028 특허 출원에 보다 상세히 기술된다. 도 3은 SSA의 동작을 도시하기 위해 사용될 메모리 디바이스(200) 내 다양한 기능 모듈들을 도시한다. 도 3에 도시된 바와 같이, 메모리 디바이스(200)는 다양한 액세스 제어 기록들("ACR")을 포함한다; 제 1 비대칭 ACR(201), 제 2 비대칭 ACR(202), 및 대칭 ACR(203). 제 1 및 제 2 비대칭 ACR들(201,202)은 하기에 보다 상세히 기술될 제 1 및 제 2 시간 업데이트 정책들(TUP1 및 TUP2, 각각)을 포함한다. 비록 다수의 ACR들이 도 3에 도시되지만, 메모리 디바이스(200)는 단일 ACR만을 포함한다.
각각의 ACR(201,202 및 203)은 사용될 인증 방법 및 어떤 종류의 인증서들이 엔티티의 아이덴티티의 증명을 제공하기 위해 필요한지를 지정한다. 각각의 ACR(201,202, 및 203)은 DRM 키와 라이센스들에 액세스하는 것과 같은 다양한 액션들을 수행하기 위한 허가들을 포함한다. 일단 ACR이 엔티티를 성공적으로 인증하였다면, SSA 시스템은 임의의 ACR의 액션들이 실행되는 세션을 개방한다. 여기에 사용된 바와 같이, 용어 "엔티티"는 메모리 디바이스(200)에 액세스하기 위해 시도하는 임의의 사람 또는 사항을 말한다. 엔티티는 예를 들어 호스트 디바이스에서 실행하는 애플리케이션, 호스트 디바이스 자체, 또는 인간 사용자일 수 있다. 도 3에서, 3개의 엔티티들은 메모리 디바이스(200)에 액세스하기 위하여 시도하는 것이다: 미디어(예를 들어, 오디오 및/또는 비디오) 플레이어(301), 저장 애플리케이션(302), 및 다른 애플리케이션(303). 이들 엔티티들(301,302,303)은 동일하거나 다른 호스트 디바이스들 상에 있을 수 있다. 각각의 엔티티(301,302,303)는 특정 ACR(각각, ACR들 201, 202, 및 203)과 연관된다. 부가적인 엔티티들(도시되지 않음)은 또한 하나 또는 그 이상의 ACR들(201,202 및 203)과 연관될 수 있다.
엔티티가 로그인 처리를 시작할 때, 연관된 ACR의 식별자를 포함하는 인증을 위한 요청을 전송하고, 상기 요청은 사용될 인증 방법 및 어떤 종류의 증명서들이 엔티티의 아이덴티티의 증명을 제공하기 위해 필요한지를 지정한다. 도 3에서, ACR들(201 및 202)은 비대칭 인증 방법을 지정하고, ACR(203)은 대칭 인증 방법을 지정한다. 다른 인증 방법들(패스워드-기반 절차들 같은)이 사용될 수 있고 ACR이 인증을 요구하지 않는 것을 또한 지정할 수 있다는 것이 주지되어야 한다. 특정 인증 방법을 지정하는 것 외에, ACR은 또한 일단 인증되면 엔티티가 수행할 수 있는 액션들을 기술하는 허가 제어 레코드(PCR)를 포함할 수 있다.
몇몇 인증 메카니즘들(예를 들어 인증을 위하여 X.509 증명서 체인을 사용하는 일 방향 및 양방향 비대칭 인증 같은)은 시간을 기반으로 하고, 메모리 디바이스(200)가 엔티티에 의해 프리젠트된 증명서를 검증하기 위한 시간을 알게 하는 것을 요구한다. (대칭 ACR 203에 의해 사용된 대칭 인증 메카니즘은 메모리 디바이스 200가 시간을 아는 것을 요구하지 않는다. 대칭 인증에서, 엔티티 및 이에 연관된 ACR에 의해 공유된 키는 엔티티를 인증하기 위해 사용된다). 비대칭 인증에서, 시간은 엔티티에 의해 공급된 RSA 증명서 및/또는 증명서 취소 리스트(CRL) 같은 증명서들이 유효화되는지를 평가하기 위해 필요할 수 있다. (여기에 사용된 바와 같이, "증명서"는 단일 증명서 또는 다수의 증명서들(예를 들어, 증명서 체인)이라 하고, "CRL"은 단일 CRL 또는 다수의 CRL들이라 할 수 있다). 메모리 디바이스(200)가 상기 유효화를 수행하기 위한 시간 평가를 생성하기 위하여 사용할 수 있는 메카니즘들을 살펴보기 전에, 증명서들 및 CRL들의 짧은 논의는 비대칭 인증과 관련하여 프리젠트될 것이다.
비대칭 인증은 공용 키 인프라구조(PKI) 시스템을 사용하고, 여기에서 증명서 증명 기관(CA)으로서 공지된 신뢰적인 인증국은 엔티티들의 아이덴티티를 증명하기 위한 RSA 증명서를 발행한다. 아이덴티티 레지스터의 증명을 설정하고자 하는 엔티티들은 아이덴티티를 증명하기 위한 적당한 증거를 CA에 등록한다. 엔티티의 아이덴티티가 CA에 증명된 후, CA는 엔티티에 증명서를 발행한다. 증명서는 증명서를 발행한 CA의 이름, 증명서가 발행된 사람에 대한 엔티티의 이름, 엔티티의 공용 키, 및 CA의 사적 키에 의해 사인된(통상적으로 공용 키의 다이제스트를 인크립팅함으로써) 엔티티의 공용 키를 포함한다.
증명서는 만료일을 홀딩하는 데이터 필드를 포함할 수 있다. 상기 상황에서, 증명서를 홀딩하는 엔티티는 제한된 양의 시간 동안(증명서가 만료될 때까지) ACR에 의해 보호된 컨텐트에만 액세스할 수 있다. 증명서는 또한 미래 유효 시간을 홀딩하는 데이터 필드를 포함할 수 있다. 이런 상황에서, ACR은 증명서가 유효화될 때까지 엔티티를 인증하지 않을 것이다. 현재 날짜가 만료일 이후 또는 유효화 날짜 이전인 것을 메모리 디바이스(200)가 결정하는 경우(즉, 증명서가 유효하지 않다는 것을 메모리 디바이스 200이 결정하는 경우), 메모리 디바이스(200)는 증명서를 프리젠팅하는 엔티티를 인증하지 않을 것이다.
다양한 상황들은(예를 들어 이름 변경, 엔티티 및 CA 사이의 연관성 변경, 및 사적 키의 타협 또는 의심되는 타협 같은)은 만료일 이전 증명서가 무효가 되게 할 수 있다. 상기 상황들 하에서, CA는 증명서를 취소할 필요가 있다. 동작 시, CA는 취소된 증명서들의 타임 스탬핑 리스트를 포함하는 사인된 데이터 구조인 증명서 취소 리스트(CRL)를 주기적으로 발행한다. 따라서, 엔티티를 인증하기 위하여, 메모리 디바이스(200)는 증명서가 적당한지를 검사할 뿐 아니라 증명서가 CRL 상에 리스트 되는지를 알기 위하여 CRL을 검사한다. (CRL은 증명서와 함께 엔티티에 의해 제공될 수 있거나, 메모리 디바이스 200은 CRL 자체를 포함할 수 있다(예를 들어, 메모리 디바이스 200이 접속된 장치인 경우 인터넷 80을 통해)). 증명서가 CRL 상에 리스트 되는 경우, 증명서는 더 이상 유효하지 않고(비록 만료되지 않았지만), 그리고 엔티티가 인증되지 않을 것이다. 증명서와 같이, CRL은 CRL이 업데이트될 때를 가리키는 만료일로 발행된다. 이것은 메모리 디바이스(200)가 가장 최근 CRL을 사용한다는 것을 보장한다. 인증 동안, 현재 시간이 CRL의 만료일을 경과한 것을 메모리 디바이스(200)가 발견하는 경우(즉, CRL이 유효하지 않은 것을 메모리 디바이스 200이 결정하는 경우), CRL은 결함 있는 것으로 생각하고 바람직하게 증명서 검증을 위해 사용되지 않는다.
상기 논의된 바와 같이, 이 실시예에서, 메모리 디바이스(200)는 증명서들(여기서, 증명서 및 CRL)를 검증하기 위해 시간을 알 필요가 있다. 메모리 디바이스가 시간이 어떤지를 알게 하기 위한 몇몇 옵션들이 있다. 하나의 옵션은 메모리 디바이스가 시간을 알 필요가 있는 매시간 신뢰적인 타임 서버로부터 타임 스탬프를, 즉 메모리 디바이스 요청을 호스트 디바이스를 통해 가지는 것이다. 이런 해결책은 접속된 장치들에 적당하다; 그러나, 메모리 디바이스가 접속된 장치들뿐 아니라 접속되지 않은 장치들(예를 들어, 인터넷에 접속되지 않은 홈 PC들, MP3 플레이어들, 네트워크가 오프된(예를 들어, 비행기에 있을 때) 셀 전화들에서 사용될 수 있기 때문에, 메모리 디바이스는 인증 절차를 위한 시간을 알 필요가 있을 때 이용할 수 있는 접속에 의존할 수 없다. 다른 옵션은 배터리-백업 클럭을 가진 메모리 디바이스를 장착하는 것이다. 그러나, 이것은 메모리 디바이스에 비용을 부가하기 때문에 바람직하지 않을 수 있다. 다른 옵션은 메모리 디바이스에 시간을 제공하기 위하여(자신 내부의 클럭 또는 외부 소스로부터) 호스트 디바이스에 의존하는 것이다. 그러나, 많은 상황들에서, 메모리 디바이스는 정확한 시간을 제공하기 위하여 호스트 디바이스를 신뢰할 수 없다. 사용자가 호스트 디바이스상 클럭을 "소급(back date)"하도록 허용되면(즉, 현재 시간보다 이른 시간으로 호스트 디바이스상 클럭을 설정함), 사용자는 메모리 디바이스가 강화할 필요가 있는 실제 시간 제한들을 우회할 수 있다. 다른 한편, 메모리 디바이스(메모리 디바이스상에서 실행하는 애플리케이션)가 호스트 디바이스를 신뢰할 수 있는 경우, 메모리 디바이스(또는 메모리 디바이스에서 실행하는 애플리케이션)는 그 시간 동안 호스트 디바이스에 의존할 수 있다. 호스트 타임이 사용될 때보다 많은 정보는 하기에 프리젠트된다.
이 실시예에 사용된 다른 옵션은 메모리 디바이스의 제한된 시간 추적 능력들을 사용하는 것이다; 특히, 액티브 시간을 측정하기 위한 메모리 디바이스(200)의 능력. 액티브 시간은 메모리 디바이스(200)가 호스트 디바이스에 접속되고 실제로 사용된(즉, 공전 또는 슬리프 모드에 있는 것과 비교할 때 메모리 디바이스 200 및 호스트 디바이스 300 사이의 버스 상에서 활동할 때) 시간을 말한다. 선택적으로, 액티브 시간은 메모리 디바이스(200)가 호스트 디바이스(300)에 접속되고 상기 호스트 디바이스로부터 전력을 수신하는 전체 시간 양을 말할 수 있다. 용어들 "액티브 시간" 및 "사용 시간"은 여기에서 상호 교환적으로 사용될 것이다. 하기에 기술된 바와 같이, 이런 실시예에서, 메모리 디바이스(200)는 하드웨어 타이머 블록(270)이 CPU(260)에 대한 인터럽트들로서 클럭 틱(tick)들을 생성할 수 있을 때 액티브되고, CPU(260)는 액티브 시간 카운터를 증가시킬 수 있다.
동작시, 하드웨어 타이머 블록(270)(예를 들어, ASIC 제어기)은 주기적인 클럭 틱들을 생성하고 상기 틱들을 인터럽트들로서 CPU(260)에 제공하는 발진기를 포함한다. (바람직하게, 발진기는 매우 낮은 주파수에서 동작하고 CPU 260이 슬리프인 동안 실행한다). 따라서, 하드웨어 타이머 블록(270)은 주기적으로(예를 들어, 매 밀리초 또는 마이크로초) CPU(260)를 인터럽트한다. CPU(260)가 인터럽트될 때, 특정 클럭 인터럽트 서비스 루틴(예를 들어, CPU 260에 의해 실행되는 펌웨어에서)은 호출되고 CPU RAM들(262) 및 비휘발성 플래시 메모리(210)에 저장된 액티브 시간 카운터를 하나의 주기/단위로 부가하여, 카운터 값은 전력이 손실되는 경우 손실되지 않는다. 메모리(210)에 대한 과도한 소모를 방지하기 위해, 매 클럭 틱에 응답하는 대신 메모리(210) 내 액티브 시간 카운터가 주기적으로(예를 들어, 메모리 디바이스 200에 전력이 인가되는 한 매 분 또는 등등) 업데이트되는 것은 바람직하다. 비록 이것이 액티브 시간 카운터가 업데이트되기 전에 전력 손실이 발생하는 경우 측정된 시간에 부가적인 부정확도를 유발할 수 있지만, 이런 희생은 메모리 지속 시간에 대해 이익들 측면에서 허용할 수 있는 것으로 고려된다. (메모리 지속 기간을 추가로 보호하기 위하여, 액티브 시간 카운트에 저장된 값은 카운터가 얼마나 많은 횟수 기입되었는가를 가리키는 필드를 포함할 수 있다. 만약 기입 값이 특정 양을 초과하면, 카운터는 메모리의 다른 위치에 저장될 수 있다. 카운터 내의 비트들은 만약 도움들이 지속되면 이동될 수 있다). 또한 액티브 시간 카운터에 대한 기입이 메모리 디바이스(200)의 성능(기입을 수행하기 위한 전력 소비 제외) 및 규칙적 활동에 영향을 미치지 않는 것은 바람직하다. (다른 말로, 시간 카운터에 대한 기입이 호스트 명령을 서비스하는 처리의 일부인 것이 바람직하다). 예를 들어, 액티브 시간 카운터에 대한 기입은 백그라운드 임무로서 처리될 수 있고 호스트 디바이스 명령 서비스 이전에 수행된다. 호스트 디바이스 명령의 종료시, 메모리 디바이스(200)의 펌웨어는 액티브 시간 카운터의 프로그래밍이 메모리의 데이터를 판독하고 이를 목표된 값과 비교함으로써 성공한다는 것을 검증할 수 있다.
또한, 액티브 시간 카운터의 값이 메모리(210)에 보안적으로 저장될 수 있어서(예를 들어, 키-해싱 메시지 인증 코드(HMAC)를 사용하여 크립토-엔진(252)을 통해 사인됨), 쉽게 탬퍼될 수 없다는 것은 바람직하다. 시그네이쳐 미스매칭의 경우, 데이터는 공격자가 탬퍼하는 경우 처럼 개시되지 않은 것으로 처리될 수 있다. 게다가, 액티브 시간을 측정하기 위한 다른 메카니즘들이 사용될 수 있다는 것은 주지되어야 한다.
액티브 시간 카운터에 저장된 값을 실제 시간으로 전환하기 위하여, CPU(260)는 하드웨어 타이머 블록(270)이 클럭 틱들을 생성하는 주파수에 의해 저장된 값을 곱셈한다. 예를 들어, 만약 값(500)이 액티브 시간 카운터에 저장되고 하드웨어 타이머 블록(270)이 5 밀리초마다 클럭 틱을 생성하면, CPU(260)는 2,500 밀리초(500 곱하기 5)의 액티브 시간을 계산한다. 시간 평가를 생성하기 위하여, 변환된 액티브 시간은 신뢰적인 소스로부터 메모리 디바이스(200)에 의해 수신된 최종 타임 스탬프에 부가된다. 다른 말로, 타임 스탬프는 "시작 라인"으로서 작동하고, 메모리 디바이스의 측정된 액티브 시간은 타임 스탬프에 부가된다. 타임 스탬프는 임의의 형태를 가질 수 있고 임의의 목표된 정밀도(예를 들어, 년, 달, 날, 시간, 분, 초, 등)로 시간을 나타낼 수 있다. 바람직하게, 메모리 디바이스(200)는 메모리 디바이스(200)가 엔티티에 정확한 시간{예를 들어, 타임 서버(100) 또는 신뢰적인 호스트 디바이스}을 제공하도록 신뢰하는 엔티티로부터 타임 스탬프가 제공된다. 타임 스탬프는 임의의 형태를 가질 수 있고 다른 정보에 포함되거나 그 자체에 의해 전송될 수 있다. 메모리 디바이스는 바람직하게 크립토-엔진(252)을 통해 타임 스탬프를 거의 저장하지 않아서, 쉽게 탬퍼될 수 없다. 새로운 타임 스탬프가 메모리 디바이스(200)에 의해 수신될 때, 새로운 타임 스탬프는 메모리 디바이스(200)에 저장되고, 액티브 시간 카운터는 리셋된다. 따라서, 액티브 시간은 이전 타임 스탬프 대신 새로운 타임 스탬프에 관련하여 측정될 것이다. 카운터를 리셋하는 대신(및, 그러므로, "롤링 백(rolling back)"), 새로운 타임 스탬프의 시간에 존재하는 액티브 시간 카운터 값은 기록되고 액티브 시간을 측정하기 위하여 현재 시간으로부터 감산된다.
지금 메모리 디바이스의 시간-추적 능력들이 논의되었고, 인증 절차의 예는 기술될 것이다. 도면들을 다시 참조하여, 도 4는 일 실시예의 비대칭 인증 처리의 프로토콜 도면이다. 다음 예에서, 층(301)은 ACR(201)을 통해 메모리 디바이스(200)에 로그인하는 것을 시도한다. 하기에 보다 상세히 기술된 바와 같이, 플레이어(301)는 증명서들(예를 들어, RSA 키 쌍, 증명서, 및 증명서 취소 리스트(CRL))을 포함하고, ACR(201)은 플레이어(301)의 인증을 유효화 및 객체들에 대한 권리의 승인{이 경우, 플레이어(301)와 DRM 모듈(207) 사이에 보안 채널을 설정함}을 책임진다. 도 4에 도시된 바와 같이, 제 1 단계는 호스트 디바이스(300)가 플레이어(301)의 인증을 위한 요청을 메모리 디바이스(200)에 전송하게 하는 것이다(액트 402). 타임 스탬프가 메모리 디바이스(200) 내에 아직 설치되지 않은 경우, 메모리 디바이스(200)는 로그인 실패 메시지로 인증 요청에 응답한다(액트 404).
다음 일련의 액트들은 메모리 디바이스(200)에 타임 스탬프를 제공하는 처리를 기술하고 메모리 디바이스(200)가 타임 스탬프를 얻을 수 있는 하나의 특정 방식을 도시하는 각각 시스템 도면 및 흐름도인 도 5 및 6과 관련하여 기술될 것이다. 메모리 디바이스(200)가 다른 방식으로 타임 스탬프를 얻을 수 있고 타임 스탬프가 다른 형태들을 가질 수 있다는 것은 이해되어야 한다. 또한 다중 서버들 또는 호스트들과 인터페이싱하는 단일 메모리 디바이스가 동시에 다중 형태들을 취급할 수 있다는 것은 이해되어야 한다. 따라서, 이런 예의 명세들은 여기에서 명확하게 열거되지 않으면 청구항들로 해석되지 않아야 한다.
도 5에 도시된 바와 같이, 메모리 디바이스(200)는 메모리 디바이스 - 호스트 디바이스 통신 채널(305)을 통해 호스트 디바이스(300)와 통신하고, 호스트 디바이스(300)는 호스트 디바이스 - 타임 서버 통신 채널(315)을 통해 타임 서버(100)와 통신한다. 비록 타임 서버(100)가 단일 서버를 포함할 수 있지만, 이 실시예에서, 타임 서버(100)는 서버간 통신 채널(325)을 통해 서로 동기화되는 다수의 서버들(102,104,106)을 포함한다. 또한 상기된 바와 같이, 타임 스탬프에 대한 타임 서버(100)를 사용하는 대신, 호스트 디바이스(300)로부터의 타임 스탬프는 바람직하게 신뢰성 있는 호스트 디바이스인 경우만 사용될 수 있다.
이 실시예에서, 타임 스탬프를 요청하기 위한 절차는 메모리 디바이스(200)에 논스(nonce) 획득 명령을 전송하는 호스트 디바이스(300)에 의해 시작된다(액트 405)(도 4,5 및 6 참조). 이 실시예에서, 논스는 타임 서버(100)에 의해 생성된 타임 스탬프의 인증을 추후 검증하기 위하여 메모리 디바이스(200)에 의해 사용된 160-비트 랜덤 번호이다. 메모리 디바이스(200)는 랜덤 번호(논스)를 생성하고(액트 410) 추후 검증 단계를 위해 CPU RAMS(즉, 휘발성 메모리)(262)(또는, 선택적으로, 메모리 210)에 이를 저장한다. 메모리 디바이스(200)는 상기 논스를 호스트 디바이스(300)에 전송한다(액트 415). 메모리 디바이스(200)는 또한 시간-종료가 발생되었는지를 추후 결정하기 위하여 시간(이하에 기술된 바와 같이)을 측정하기 시작한다.
호스트 디바이스(300)가 논스를 수신할 때, 상기 논스를 포함하는 획득 타임 스탬프 요청을 타임 서버(100)에 전송한다(액트 420). 타임 서버(100)는 시간(예를 들어, UTC Zulu 포맷의 세계 시간) 및 논스를 사적 키로 신호한다. 그 다음 타임 서버(100)는 이 실시예에서 논스, 타임 스탬프, 증명서 체인, 및 CRL 체인을 포함하는 타임 스탬프 응답을 호스트 디바이스(300)에 전송한다(액트 425). (이 증명서 및 CRL은 인증을 위하여 타임 서버 100으로부터 전송되고 플레이어 301을 인증하기 위해 전송된 증명서 및 CRL과 동일하지 않다). 그 다음 호스트 디바이스(300)는 이런 응답을 가진 시간 업데이트 명령을 메모리 디바이스(200)에 전송한다(액트 430). 이 명령에 응답하여, 메모리 디바이스(200)는 증명서 및 CRL들을 검증하는 것을 시도한다(액트 435). (다시, 증명서 및 CRL은 플레이어 301을 인증하기 위하여 전송된 것들과 다르다). 이하에 논의된 바와 같이, 메모리 디바이스(200)에 의해 생성된 시간 평가에 대한 유효화를 검사하는 대신 타임 서버의 100 증명서 및 CRL에 대한 유효 기간이 유효하다는 것을 가정하는 것이 바람직하다. 만약 검증이 실패하면, 메모리 디바이스(200)는 휘발성 메모리(262)를 리셋하고 아이들 프로세스로 리턴한다(액트 440). 증명서 및 CRL의 검증이 통과하는 경우(액트 445), 메모리 디바이스(200)는 휘발성 메모리(262) 내 논스와 응답 내 논스를 비교한다(액트 450). 비교가 실패하면, 메모리 디바이스는 휘발성 메모리(262)를 리셋하고 아이들 프로세스로 리턴한다(액트 455). 만약 비교가 성공하면, 메모리 디바이스(200)는 탬퍼링을 보호하기 위하여 메모리(210) 내 새로운 타임 스탬프를 바람직하게 보안 방식으로 저장한다.
메모리 디바이스(200)가 논스(410)를 생성하고 응답을 기다린 후(액트 460), 호스트 디바이스(300)가 다른 획득 논스 명령을 메모리 디바이스(200)에 전송할 수 있다(액트 465)는 것이 주지되어야 한다. 상기된 바와 같이, 메모리 디바이스(200)는 논스가 생성된 후 시간을 측정하기 시작한다. 측정된 시간이 특정 시간-종료 제한에 도달하기 전 새로운 논스 명령(465)이 수신되면, 메모리 디바이스(200)는 바람직하게 새로운 논스 명령(465)을 무시한다. 그러나, 시간-종료 제한 후 새로운 논스 명령(465)이 수신되면, 메모리 디바이스(200)는 휘발성 메모리(262)를 리셋하고 새로운 논스를 생성할 것이다(액트 470). 따라서, 논스는 제한된 시간 동안만 유효하고, 시간-종료 제한("이동 시간 에러")은 메모리 디바이스(200)가 타임 서버(100)로부터 타임 스탬프를 기다리기 위한 합법적인 것을 고려하는 최대 시간이다.
타임 서버(100)가 데이터 문자열을 신호하는 시간을 메모리 디바이스(200)에 저장된 타임 스탬프가 포함하기 때문에, 타임 스탬프에 표시된 시간은 타임 스탬프 정밀도(예를 들어, 년, 달, 날, 시간, 분, 초, 등) 및 요청을 전송하고 응답을 수신하는데 수반된 지연들에 따라, 호스트 디바이스(300)가 타임 스탬프를 요청한 실제 실세계 시간이 아니거나 메모리 디바이스(200)가 타임 스탬프를 저장한 실제 실세계 시간이 아닐 수 있다. 상기된 논스 시간-종료 기간은 타임 스탬프가 메모리 디바이스(200)에 의해 요구된 정밀도를 가진다는 것을 보장하기 위하여 상기 시간으로 설정될 수 있다. 따라서, 메모리 디바이스(200)는 타임 스탬프 요청 시 최대 허용 가능한 지연에 걸쳐 제어를 가진다. 또한, 다른 실시예들에서, 타임 서버(100)에 의해 생성된 타임 스탬프는 호스트 디바이스(300)가 타임 스탬프를 요청한 평가된 시간, 타임 스탬프가 메모리 디바이스(200)에 저장될 예상 시간, 또는 몇몇 다른 시간 같은 몇몇 다른 시간을 가리킬 수 있다.
상기 프로토콜은 메모리 디바이스(200)가 보안되지 않은 접속 시스템(예를 들어, 인터넷, WiFi 네트워크, GSM 네트워크, 등)에 걸쳐 타임 서버(100)와 통신하게 한다. 접속 시스템은 타임 서버(100)에 의해 송신된 타임 스탬프가 전송 동안 탬퍼되지 않는다는 것을 메모리 디바이스(200)가 가정할 수 없다는 측면에서 보안되지 않는다. 네트워크가 타임 스탬프를 보호하는 것에 의존할 수 없기 때문에, 상기 보호 메카니즘(또는 몇몇 다른 보호 메카니즘)은 서버(100) 및 메모리 디바이스(200) 사이에 사용될 수 있다. 인크립션 프로토콜은 타임 스탬프가 탬퍼되는 경우, 메모리 디바이스(200)가 이를 검출할 수 있도록 한다. 다른 말로, 접속 시스템이 보안되지 않기 때문에, 시스템 자체는 사람들이 타임 스탬프의 비트들을 변경하는 것을 방지할 수 없다; 그러나, 메모리 디바이스(200)는 탬퍼링을 검출하고 타임 스탬프를 거절할 수 있다. 다른 실시예에서, 보안 통신 시스템은 사용되고(즉, 데이터 통신 라인들은 보호된다), 그리고 타임 스탬프는 타임 스탬프를 탬퍼할 수 없기 때문에 평문으로서 전송될 수 있다.
도 4를 참조하여, 새로운 타임 스탬프가 메모리 디바이스(200)에 저장되어, 메모리 디바이스(200)는 호스트 디바이스(300)에 다시 "시간 업데이트 성공" 메시지를 전송하고(액트 452), 호스트 디바이스(300)는 메모리 디바이스(200)에 인증을 위한 요청을 다시 전송한다(액트 454). 메모리 디바이스(200)가 타임 스탬프를 가지기 때문에, 메모리 디바이스(200)는 ACR(201)의 타임 스탬프 업데이트 정책(TUP)을 검사할 것이다(액트 500). 시간 평가가 타임 스탬프를 바탕으로 하기 때문에, 구식 타임 스탬프에서 시간 평가 바이어싱은 부정확한 시간 평가를 유도할 수 있다. 따라서, TUP는 메모리 디바이스(200) 상 기존 타임 스탬프가 구식으로 고려되고 재생(즉, 새로운 타임 스탬프)을 요구할 때를 결정하기 위해 사용된다. 도 3에 도시되고 이하에 보다 상세히 논의된 바와 같이, 다른 ACR들은 ACR이 생성될 때 생성될 수 있는 다른 TUP들을 가질 수 있다(즉, 다른 ACR들은 다른 시간 허용 오차 레벨들을 가질 수 있음).
이 실시예에서, TUP는 4개의 값들에 의해 표현되고: (1) 전력 사이클의 임계 수, (2) 액티브 시간의 임계값, (3) "연장된" 액티브 시간의 임계값, 및 (4) 파라미터들 사이에 OR 관계가 존재하는지 아닌지 여부를 가리키는 비트(즉, 단일 파라미터가 실패하는 경우에만 시간 업데이트가 요구될지 여부, 또는 모든 파라미터들이 실패하는 경우에만 시간 업데이트가 요구될지 여부). 각각의 이들 파라미터들은 하기에 상세히 기술될 것이다. (이들 외에 또는 대신에 다른 파라미터들이 고려될 수 있다는 것은 주지되어야 한다).
도 7은 검사 TUP 액트를 보다 상세히 도시하는 흐름도이다(액트 500). 첫째, 메모리 디바이스(200)가 메모리(210)에 저장된 구성 데이터를 찾음으로써 TUP를 검사하기 시작했는지를 결정하기 위한 검사가 이루어진다(액트 505). 메모리 디바이스(200)가 TUP를 검사하기 시작하지 않는 경우, 메모리 디바이스(200)는 시간 평가를 생성하기 위하여 메모리 디바이스(200)에 의해 수신된 최종 타임 스탬프를 사용하고(액트 510), 시간 평가를 사용하여 엔티티를 인증하기 위한 시도가 이루어진다. 메모리 디바이스(200)가 TUP를 검사하기 시작하는 경우, 메모리 디바이스(200)는 그 검사를 시작한다.
첫째, 메모리 디바이스(200)는 최종 타임 스탬프 이후 TUP가 메모리 디바이스(200)의 전력 사이클의 수의 검사를 포함하는지를 결정한다(액트 515). 이 실시예에서, 이것은 상기된 "전력 사이클들" 값을 검사함으로써 수행된다. "전력 사이클들" 값이 영인 경우, 전력 사이클의 수는 검사되지 않는다. "전력 사이클들" 값이 영이 아닌 경우, 전력 사이클의 수는 임계값으로서 상기 값을 사용하여 검사된다. 전력 사이클의 수는 메모리 디바이스(200)가 얼마나 많이 전력이 상승되었는지의 카운트, 최종 타임 스탬프 이후 메모리 디바이스(200)가 얼마나 많이 전력이 하강되었는지를 가리키는 카운트이다(즉, 매 전력 상승 동안, 전력 하강이 있어야 한다). 전력 사이클의 수는 CPU(260)에 의해 측정될 수 있다. 메모리 디바이스(200)가 전력 사이클을 통해 진행하는 매시간, CPU(260)는 펌웨어에서 장치 리셋 루틴을 호출할 수 있다. CPU(260)가 액티브 시간 카운터에 하나의 유니트를 부가하는 상황에서처럼, 장치 리셋 루틴으로 인해, CPU(260)는 CPU RAMS(262) 및/또는 메모리(210)의 전력 사이클 카운터에 하나의 유니트를 부가한다. 액티브 시간 카운터로 인해, 전력 사이클 카운터는 메모리 소비를 감소시키기 위해 주기적으로 업데이트될 수 있다.
메모리 디바이스(200)가 전력이 하강될 때, 측정된 액티브 시간에 의해 제공되지 않은 적어도 일부의 실제 시간이 있다(메모리 디바이스 200이 "액티브"가 아닌 경우 액티브 시간을 측정할 수 없기 때문에). 메모리 디바이스(200)가 전력 사이클들 사이에서 얼마나 많이 통과했는지를 알지 못하기 때문에, 전력 사이클의 수는 측정된 액티브 시간이 얼마나 부정확한지를 가리키지 못한다. 그러나, 메모리 디바이스(100)가 예상된 사용 패턴의 외측에서 사용되는지 여부의 측면은 제공하고, 상기 예상된 사용 패턴은 측정된 액티브 시간이 얼마나 부정확한지를 대략적으로 가리킬 수 있다. 예를 들어, 메모리 디바이스(200)가 10 전력 사이클들을 가질 때 시간 평가가 이루어지는데, 그 이유는 최종 타임 스탬프는 최종 타임 스탬프 이후 메모리 디바이스(200)가 단지 하나의 전력 사이클만을 가질 때 이루어진 시간 평가보다 덜 정확할 수 있기 때문이다.
만약 TUP가 전력 사이클들 수 검사를 포함하면, 메모리 디바이스(200)는 전력 사이클의 수가 "전력 사이클들" 값에서 설정된 임계 양을 초과하는지 여부를 알기 위하여 최종 타임 스탬프 이후 메모리 디바이스(200)의 전력 사이클들 수를 검사한다(액트 520). 임계 수는 목표된 시간 허용 오차를 반영하기 위하여 ACR당 구성할 수 있다. 예를 들어, 만약 인증이 매우 민감하고 증명서 또는 CRL의 만료일이 경과되지 않는다는 보장이 필요한 경우, 임계 수는 1로 설정될 수 있다. 따라서, 메모리 디바이스(200)가 일단 셧 다운되면(그리고, 따라서, 측정된 액티브 시간에 의해 책임질 수 없는 적어도 일부의 시간 양이 있다면), 이런 파라미터의 TUP 검사는 실패한다. 다른 한편, 인증이 민감하지 않으면, 전력 사이클의 수는 보다 높은 수(또는 전혀 고려되지 않음)로 설정되어 TUP 검사는 전력 사이클의 일부 수가 존재하는 경우에도(그리고, 따라서, 측정된 액티브 시간에 의해 책임질 수 없는 일부 시간 양) 통과한다.
전력 사이클의 수 검사가 실패하고 TUP 파라미터들 사이에 OR 관계가 존재한다는 것이 결정되면(액트 525), TUP 검사는 실패한다(액트 530). 메모리 디바이스(200)는 실패를 가리키는 메시지를 호스트 디바이스(300)에 전송하고, 상기된 절차는 새로운 타임 스탬프를 얻기 위해 사용된다. 전력 사이클의 수의 검사가 통과하거나, 실패하고 TUP 파라미터들 사이에 OR 관계가 없는 것이 결정되면(액트 525), 처리는 최종 타임 스탬프 이후 TUP가 액티브 시간의 검사를 포함하는지를 결정함으로써 계속된다(액트 535).
상기된 전력 사이클 절차와 유사하게, "액티브 시간" 값이 영이면, 액티브 시간은 검사되지 않는다. 그러나, "액티브 시간" 값이 영과 다르면, 액티브 시간은 초들의 임계 수(또는 시간의 몇몇 다른 단위)로서 값을 사용하여 검사된다. 전력 사이클의 수로 인해, 임계 액티브 시간 양은 목표된 시간 허용 오차를 반영하기 위하여 ACR당 구성할 수 있다. 일반적으로, 메모리 디바이스(200)가 보다 길게 액티브일수록, 측정된 액티브 시간이 보다 부정확하다. 따라서, 인증이 매우 민감하고 증명서 또는 CRL의 만료 일이 경과되지 않은 보장이 필요하면, 측정된 액티브 시간의 임계 양은 매우 낮게 설정될 수 있다. 반대로, 인증이 민감하지 않으면, 측정된 액티브 시간의 임계값은 보다 높게 설정될 수 있다(또는 심지어 전혀 고려되지 않는다).
액티브 시간의 검사가 실패하고 TPU 파라미터들 사이에 OR 관계가 존재한다는 것이 결정되면(액트 545), TUP 검사는 실패한다(액트 550). 메모리 디바이스(200)는 실패를 가리키는 메시지를 호스트 디바이스(300)에 전송하고, 상기된 절차는 새로운 타임 스탬프를 얻기 위하여 사용된다. 액티브 시간의 검사가 통과하거나, 실패하고 TUP 파라미터들 사이에 OR 관계가 존재하지 않는 것이 결정되면(액트 545), 처리는 TUP가 "연장된" 액티브 시간의 검사를 포함하는지를 결정함으로써 계속된다(액트 555).
상기된 바와 같이, 측정된 액티브 시간은 메모리 디바이스(200)가 계속하여 액티브 시간을 측정하지 않는 실제 액티브 시간의 진실한 측정값일 수 없다. 즉, 메모리 디바이스(200)가 "인액티브"이면(예를 들어, 메모리 디바이스 200이 공전하거나 슬리프 모드에 있을 때, 또는 메모리 디바이스 200이 전력이 하강하거나 메모리 디바이스 200이 호스트 디바이스 300으로부터 제거될 때 - 이 실시예에서, 하드웨어 타이머 블록 270이 클럭 틱들을 생성하는 것을 정지하게 하고 및/또는 CPU 260이 상기 틱들에 반응하는 것이 정지되는 이벤트가 무엇이든), 측정된 액티브 시간은 인액티브일 때 시간이 통과하는 것을 말하는 것이 메모리 디바이스(200)에 아무것도 없기 때문에 측정이 시작된 이후 통과된 실제 시간 보다 작을 것이다. 예를 들어, 타임 스탬프가 1월 1일에 수신되었고, 메모리 디바이스(200)가 2일의 액티브 시간을 측정하였다고 하자. (간략화를 위하여, 시간은 이 예에서 날 단위들로 측정된다. 그러나, 상기된 바와 같이, 임의의 목표된 시간 단위는 사용될 수 있다). 따라서, 이 포인트에서 메모리 디바이스(200)에 의해 생성된 시간 평가는 날이 1월 3일인 것을 가리킨다(즉, 1월 1일의 최종 타임 스탬프에 2일의 액티브 시간을 부가함으로써). 메모리 디바이스(200)가 연속하여 액티브 시간을 측정하는 경우, 이런 시간 평가는 실제 시간을 정확하게 나타낸다(하드웨어 타이머 블록 270 및 CPU 260이 정확하게 기능한다고 가정). 그러나, 메모리 디바이스(200)가 연속하여 액티브 시간을 측정하지 않으면(즉, 메모리 디바이스 200이 액티브 시간을 측정하기 시작한 후 임의의 시점에서 인액티브이면), 시간 평가는 실제 시간을 정확하게 나타내지 않는다. 최선으로, 시간 평가는 실제 시간이 적어도 1월 3일인 것을 가리킨다. 실제 시간은 1월 4일이거나 몇몇 추후 일(6월 29일, 11월 2일, 12월 5일, 다음 해, 등)일 수 있다. 따라서, 액트(540)에서 액티브 시간의 검사는 정확한 결과를 제공하지 않을 수 있다.
이런 문제를 처리하기 위하여, TUP는 "연장된" 액티브 시간 검사를 포함한다(액트 555 및 560). "연장된" 액티브 시간은 이전에 측정된 액티브 시간의 결정된 정확도를 기초로 측정된 액티브 시간을 조절한 결과이다. 따라서, 만약 메모리 디바이스(200)가 액티브 시간의 3일을 측정하고, 측정한 최종 시간(들)이 액티브 시간임을 알면, 실제 시간의 50%인 값이 형성되고, 메모리 디바이스(200)는 6일을 형성하기 위하여 3일의 측정된 액티브 시간을 두 배 조절(또는 "연장")할 수 있다 (측정된 액티브 시간은 실제 시간의 50%였기 때문에). "연장" 액티브 시간에 관한 부가적인 정보는 미국특허 출원 일련번호 11/811,284의 "Method for Improving Accuracy of a Time Estimate from a Memory Device" 및 미국특허 일련번호 11/811,347의 "Memory Device with Circuitry for Improving Accuracy of a Time Estimate"에 기술되고, 상기 미국 특허 출원은 이와 함께 출원되고 본 명세서에 참조로 포함되어 있다.
"연장된" 액티브 시간 대신, "스트레치 다운(strecthed down)" 시간은 사용될 수 있다. 다운 시간은 메모리 디바이스(200)가 타임 스탬프들 사이에서 인액티브인 시간 양을 말한다. 메모리 디바이스(200)가 얼마나 오래 액티브되지 않는가를 측정하는 방식이 없기 때문에, 다운 시간은 계산된 수이다; 특히, 다운 시간 = 타임 스탬프들 사이의 실제 시간 - 액티브 시간. "스트레치" 다운 시간 계산은 이전에 측정된 액티브 시간의 결정된 정확도를 바탕으로 조절된다(또는 측정된 액티브 시간을 바탕으로 하는 다운 시간). 다음은 고려될 수 있는 다른 다운-시간 변화들의 예들의 리스트이다. 이 리스트에서 "다운시간(DownTime)"은 "연장된" 다운 시간이라 한다(예를 들어, 이전 지식의 타임 스탬프 사이의 다운 시간의 평균).
총 다운시간 평가(teDownTime): teDownTime = (timestampi - timestampi -1 - ActiveTimei), 여기서 인덱스 i는 제 2 타임 스탬프로부터 메모리 디바이스(200)에 구성된 최종 타임 스탬프로 진행한다.
특정 순간에 대한 최종 타임 스탬프 이후 현재 다운시간(cDowntime). 이것은 최종 타임 스탬프 업데이트 이후 전력 사이클들(pc)의 수(cDowntime = 최종 시간스탬프 이후 PC * (teDownTime/PC)) 또는 최종 타임 스탬프 업데이트 이후 액티브 시간 {cDowntime = 최종 시간 스탬프 이후 ActiveTime*(teDownTime/ActiveTime)}에 관련된다.
다운 시간(DownTime) 파라미터가 사용되지 않도록 구성되는 경우, 다운 시간 값은 0으로 설정된다.
다운시간 파라미터가 사용되도록 구성되는 경우, 다운 시간은 1로 설정된다. 메모리 디바이스(200)는 타임 스탬프 업데이트가 다음 방식으로 필요할 때 평가하기 위하여 다운 시간 특성을 사용한다: 서비스 시간(ServiceTime)(예를 들어, 증명서의 유효성 또는 CRL의 유효성) - 시간 평가 < 다운 시간, 타임 스탬프 업데이트는 필요하다).
도 7을 참조하여, "연장된" 액티브 시간의 검사가 실패하는 경우(액트 560), TUP의 검사는 실패하고(액트 565), 메모리 디바이스(200)는 호스트 디바이스(300)에 메시지를 전송한다. 상기된 과정은 새로운 타임 스탬프를 얻기 위하여 사용된다. "연장된" 액티브 시간의 검사가 통과하는 경우(또는 메모리 디바이스 200이 TUP를 검사하도록 시작되지 않는 경우), 메모리 디바이스(200)는 "TUP 통과' 메시지(510,570)를 호스트 디바이스(300)에 다시 전송한다(도 4 참조). 호스트 디바이스(300)는 엔티티의 증명서 및 CRL을 메모리 디바이스(200)에 전송하고, 메모리 디바이스는 엔티티를 인증하는 것을 시도한다(액트 585). 특히, 메모리 디바이스(200)는 증명서를 검증하고(액트 585) 및 CRL을 검증(액트 590)하기 위해 최종 수신된 타임 스탬프 및 측정된 액티브 시간을 바탕으로 시간 평가를 생성할 것이다. 증명서 및 CRL의 만료 시간이 생성된 시간 평가 후이면, 메모리 디바이스(200)는 OK 메시지를 다시 호스트 디바이스(300)에 전송하고, 만일 있다면 인증 방법의 다른 단계들은 수행될 수 있다. 엔티티가 인증되면, ACR(201)은 객체들에 대한 엔티티 권리를 승인한다(여기서, 플레이어 301 및 DRM 모듈 207 사이의 보안 채널을 설정함으로써), 그렇지 않으면, 증명서 및/또는 CRL이 만료되면, 메모리 디바이스(200)는 인증 시도가 실패하였다는 것을 언급하는 메시지를 호스트 디바이스(300)에 전송한다. 호스트 디바이스(300)는 차례로 상기된 바와 같이 타임 스탬프 업데이트를 시작할 수 있다.
상기된 바와 같이, 인증 시도를 위한 시간 평가는 측정된 액티브 시간을 최종 타임 스탬프에 부가함으로써 생성된다. 측정된 액티브 시간이 부정확할 수 있기 때문에, 상기된 "시간 연장" 기술들은 시간 평가 정확성을 개선하기 위해 사용될 수 있다. 그러나, "연장된" 액티브 시간이 실제 시간보다 실제로 클 수 있다는 것은 가능하다. TUP를 검사하는 경우, "과-연장" 액티브 시간은 새로운 타임 스탬프를 유발한다. 그러나, 증명서 또는 CRL을 검증하는 경우, "과-연장" 액티브 시간은 적당한 엔티티가 인증되는 것을 방지할 수 있다. 따라서, 인증을 위한 시간 평가를 생성할 때 "시간 연장"을 사용하는 것은 바람직하지 않을 수 있다.
요약하여, 상기 방법에서, 메모리 디바이스(200)는 엔티티를 인증하기 위한 요청을 수신하고 엔티티를 인증하기 위한 시도 이전에, 메모리 디바이스(200)는 만약 새로운 타임 스탬프가 필요한지를 결정한다. 새로운 타임 스탬프가 필요하면, 메모리 디바이스(200)는 새로운 타임 스탬프를 바탕으로 시간 평가를 생성하고 증명서 및/또는 CRL 유효성 기간에 대해 시간 평가를 비교함으로써 새로운 타임 스탬프를 얻어 엔티티를 인증하기 위하여 시도한다. 만약 새로운 타임 스탬프가 필요하지 않으면, 메모리 디바이스는 최종 타임 스탬프를 바탕으로 시간 평가를 생성하고 증명서 및/또는 CRL 유효성 기간들에 대한 시간 평가를 비교함으로써 엔티티를 인증하기 위하여 시도한다.
이 실시예에서, TUP가 검사되고 필요한 경우 새로운 타임 스탬프가 엔티티를 인증하기 전에 얻어지는 것이 주지되어야 한다. 다른 말로, TUP를 검사하고 새로운 타임 스탬프를 얻는 것은 TUP를 검사하기 전 또는 새로운 타임 스탬프가 얻어지기 전 엔티티가 인증될 것을 요구하지 않는다. 이것은 타임 스탬프 및 DRM 라이센스 모두를 제공하기 위하여 단일 서버를 사용하는 시스템과 대조된다. 상기 서버는 타임 스탬프(또는 다른 정보)를 메모리 디바이스에 제공하기 전 메모리 디바이스 인증을 요구한다. 이것은 서버를 인증하기 위한 "캐치 22" 상황을 제공하고, 새로운 시간은 필요하지만, 새로운 타임 스탬프는 서버가 인증된 후에만 얻어질 수 있다. 상기 상황을 피하기 위하여, 몇몇 이전 시스템들은 인증 처리시 시간을 사용하지 않는다. 상기 "캐치 22" 상황을 피하는 동안, 무시 시간은 인증되지 않아야 하는 엔티티를 인증하는 것을 유도할 수 있다(예를 들어, 인증서 및/또는 CRL이 만료되었기 때문에).
메모리 디바이스(200)에 인증하기 위하여 시도하는 엔티티로부터 타임 서버(100)를 분할함으로써, 메모리 디바이스(200)는 플레이어(301) 및 메모리 디바이스의 타임 모듈(204) 사이에 "빈 채널"을 생성하여, 플레이어(301)가 타임 서버(100)로부터 타임 스탬프 업데이트를 전달하게 한다(도 3 참조). 이런 타임 스탬프는 엔티티의 증명서들이 인증을 위해 유효화될 수 있는 시간 평가를 생성하기 위하여 사용된다. "빈 채널"은 우선 엔티티를 인증하지 않고 설정된 통신 파이프라인을 말한다. 대조하여, "보안 채널"은 엔티티가 인증된 후에만 설정되는 통신 파이프라인을 말한다.
비록 플레이어(301)가 타임 서버(100)로부터 타임 스탬프를 메모리 디바이스(200)에 공급하기 위한 도관으로서 사용되도록 인증될 필요가 없지만, 타임 서버(100)가 바람직하게 타임 스탬프가 신뢰적인 소스로부터 발생하는 것을 보장하기 위하여 인증되는 것은 주지되어야 한다. 이것은 도 4 및 6의 액트 435에서 도시되고, 타임 서버의 100 증명서 및 CRL은 타임 스탬프를 허용하기 전에 검증된다. 그러나, 상기된 "캐치 22" 상황을 피하기 위하여, 메모리 디바이스(200)는 타임 서버의 100 증명서 및 CRL에 대한 유효 기간이 유효하고 따라서 생성된 시간 평가에 대한 유효성 기간들을 검증하지 않는다는 것을 가정한다.
엔티티가 메모리 디바이스(200)에 인증될 때, ACR의 허가 제어 기록(PCR)에 나타난 다양한 액션들을 수행할 수 있다. 예를 들어, 도 3을 다시 참조하여, 플레이어(301)는 메모리 디바이스(200)의 보호된 컨텐트(205)에 액세스하기 위하여 보안 채널을 통하여 DRM 모듈(207)과 통신할 수 있다. (다른 예로서, 저장 애플리케이션 302에 대한 ACR은 애플리케이션 302가 메모리 디바이스 200에 보호된 컨텐트 205를 저장하게 한다). 비록 플레이어(301)가 인증되었지만, 컨텐트가 보호되기 때문에, DRM 모듈(207)은 보호된 컨텐트를 언로킹하기 전에 보호된 컨텐트(205)에 대한 DRM 라이센스(206)를 유효화하기 위해 시도한다(예를 들어 라이센스가 여전히 유효한지 만료되었는지를 결정함으로써). 이를 위하여, DRM 모듈(207)은 메모리 디바이스(204)의 타임 모듈(204)로부터 시간 평가를 요청한다. (타임 모듈 204은 시간 평가(예를 들어, 타임 스탬프, 액티브 시간, 전력 사이클의 수, "연장" 요소, 등)를 생성하기 위하여 사용된 다양한 성분들을 저장 및 생성하기 위해 사용된 상기된 소프트웨어 및/또는 하드웨어를 말한다). DRM 모듈(207)은 라이센스가 유효한지 아닌지를 결정하기 위해 생성된 시간 평가를 라이센스(206)의 만료 일 및/또는 유효 기간과 비교한다. DRM 모듈(207)은 보호된 컨텐트(205)가 특정 시간들의 수보다 많이 플레이 되었는지를 결정하는 것 같은(이것으로 제한되지 않음) 라이센스를 유효화하기 위하여 부가적인 검사들을 수행할 수 있다.
상기된 바와 같이, 타임 스탬프가 보다 최신일수록, 시간 평가가 보다 정확할 것이다. 상기 실시예에서, ACR의 TUP는 타임 스탬프 업데이트가 필요한지를 결정한다. 따라서, TUP는 생성된 시간 평가가 DRM 라이센스 유효화를 위하여 얼마나 정확한지를 효과적으로 결정한다. TUP의 파라미터를 결정할 때, 만료를 고려하여 서비스들을 제공하는 서비스 제공자들의 필요성, 및 새로운 타임 스탬프를 얻기 위하여 네트워크에 호스트 디바이스들을 접속할 필요가 있을 때 불편할 수 있는 최종 사용자들의 필요성 사이에 밸런스를 발견할 필요가 있다. 만약 시간 허용 오차가 너무 엉성하면, 서비스 제공자는 소득을 잃을 수 있다. 다른 한편, 시간 허용 오차가 너무 엄격하면, 최종 사용자는 요구된 타임 스탬프 업데이트를 얻기 위하여 네트워크에 대한 빈번한 접속들이 너무 부담되는 경우 서비스를 떠날 것을 결정할 수 있다.
메모리 디바이스(200)가 단일 TUP(또는 동일한 TUP를 공유하는 모든 다중 ACR들)를 가진 단일 ACR을 가질 때, 단일 "하나의 크기가 모두에 적합한" TUP는 모든 서비스 제공자들에 대한 권리 밸런스를 찾지 못할 수 있다. 따라서, 이 실시예에서, 메모리 디바이스(200)는 연관된 서비스 제공자에 의해 구성할 수 있는 각각 다른 TUP(TUP1,TP2)를 가진 다수의 ACR들(201,202)을 가진다. 상기 논의된 바와 같이, 다른 ACR들의 사용을 통해, 메모리 디바이스(200)는 다른 인증 방식들(대칭, 비대칭 인증, 등)을 사용하여 인증하도록 구성될 수 있다. 다른 ACR들의 사용은 구성 가능한 시간 허용 오차들을 허용한다. 즉, ACR들의 구성 가능한 TUP들의 사용을 통해, 서비스 제공자들은 메모리 디바이스의 시간-유효 파라미터들(예를 들어, 액티브 시간, 전력 사이클의 수, "연장된" 액티브 시간/다운 시간) 중 하나 또는 그 이상이 구식으로 고려되고, 타임 스탬프 업데이트를 트리거해야 할 시기를 지정하여 자신의 시간 허용 오차를 정의할 수 있다. 구성 가능한 TUP들을 형성함으로써, 서비스 제공자는 단일 "하나의 크기가 모두에 적합" TUP에 의존하는 대신 최종 사용자들의 관계 및 특정 필요성에 따라 시간 허용 오차를 구성할 수 있다.
예를 들어, 몇몇 서비스 제공자들은 매우 짧은 시간(예를 들어, 10분) 동안 증명서를 발생한다. 최종 사용자가 그가 원하는 메모리 디바이스(200) 상 서비스를 사용하기를 원하는 매시간 새로운 증명서를 얻도록 함으로써, 서비스 제공자는 최종 사용자의 행동을 면밀하게 모니터하고 최종 사용자가 증명서를 요구하는 매시간 비용을 평가할 수 있다. 따라서, 이런 비지니스 모델에 대해, 서비스 제공자는 통화 정의를 위한 엄격한 허용 오차를 필요로 한다. 다른 예로서, 만약 서비스 제공자가 최종 사용자들의 매우 유동성 있는 인스톨 베이스를 가지면, 서비스 제공자는 비지니스 모델의 주요 부분으로서 증명서를 빈번하게 호출하기를 원할 수 있다. 이런 상황에서, 서비스 제공자는 가장 최근 CRL이 인증을 위해 사용되는 것을 보장하기 위하여 엄격한 시간 허용 오차를 원한다. 다른 한편, 서비스 제공자는 사용자들이 새로운 컨텐트를 얻고 강제 타임 스탬프 업데이트를 수신하기 위하여 서비스 제공자의 웹 사이트에 규칙적으로 접속하는 매달 가입 서비스를 제공하면, 서비스 제공자는 최종 사용자가 새로운 컨텐트를 얻기 위해 네트워크에 접속할 수 있기 때문에 시간 허용 오차를 엄격하게 요구하지 않는다.
ACR들 상에서 구성 가능한 TUP들을 사용하는 대신 또는 부가하여, 구성 가능한 TUP는 컨텐트의 개별 피스들(piece)에 대한 DRM 라이센스들 상에 배치될 수 있다. 이런 방식으로, 컨텐트의 모든 피스들을 똑같이 처리하는 인증된 엔티티 대신, 엔티티는 다른 컨텐트에 대해 기존 타임 스탬프를 사용하면서 몇몇 컨텐트에 대한 새로운 타임 스탬프를 얻게 될 수 있다. (인증 동안만 검사되는 ACR상 TUP와 달리, 라이센스상 TUP는 DRM 모듈 207이 라이센스를 유효화하기 위하여 시도하는 매시간 검사될 수 있다).
예를 들어 영화가 24 시간 동안만 시청될 수 있는 것을 말하는 라이센스에 따라 사용자가 그의 메모리 디바이스에 2시간 영화를 다운로드하는 상황을 고려하자. 서비스 제공자는 24 시간 기간 후 사용자가 영화를 시청할 수 없지만, 그는 새로운 타임 스탬프를 얻기 위하여 네트워크에 접속함으로써 정상 사용자에게 불편을 주기를 원하지 않을 수 있다. 따라서, 서비스 제공자는 액티브 시간이 4시간 이상이면(2시간 영화를 2번 시청하기 위하여 요구된 액티브 시간의 양) 새로운 타임 스탬프를 요구하는 라이센스 상에 TUP를 배치하기를 결정할 수 있다. DRM 모듈(207)이 라이센스를 유효화하기 위하여 시도할 때 액티브 시간이 4시간보다 크면, 사용자는 영화를 시청할 수 없을 것이다 - 필수적 이지는 않지만 라이센스가 만료되기 때문에, 그러나 새로운 타임 스탬프가 필요하기 때문에. (액티브 시간 대신 또는 부가하여, 전력 사이클의 수는 TUP에 사용될 수 있다. 예를 들어, 평균 사용 패턴을 바탕으로, 10 또는 그 이상의 전력 사이클들은 메모리 디바이스가 24 시간 이상 사용되었다는 것을 가리킬 수 있다). 만약 새로운 타임 스탬프로 생성된 시간 평가가 유효한 경우 라이센스를 가리키면, DRM 모듈(207)은 영화가 다시 플레이되게 할 것이다.
라이센스당 TUP가 구성되게 함으로써, TUP는 컨텐트가 맞춤 제작될 수 있다. 따라서, 24 시간 후 영화를 만료하는 대신, 영화가 1주일 후 만료되면, 라이센스상 시간 허용 오차는 다르게 설정될 수 있다. 예를 들어, 메모리 디바이스가 평균적으로 하루에 10 시간 사용되는 것을 서비스 제공자가 평가면, 서비스 제공자는 액티브 시간의 70 시간 후(즉, 하루 10시간 곱하게 7일) 시간 업데이트를 트리거하기 위하여 라이센스내 TUP를 설정할 수 있다. 다른 실시예로서, 2시간 영화 대신, 컨텐트가 일단 시청되어야 하는 3분 페이-퍼-뷰(pay-per-view) 비디오라면, TUP는 새로운 타임 스탬프가 액티브 시간의 3분 후 요구되도록 설계될 수 있다.
서비스 제공자의 비지니스 모델은 TUP를 지정하는데 고려할 수 있다. 예를 들어, 현재, 달마다 가입 서비스는 보호된 음악에 권리를 배분하기 위한 대중적 비지니스 모델이다. 음악 가입 서비스에서, 사용자는 서비스 제공자의 웹 사이트로부터 원하는 음악을 많이 다운로드하고 그가 한달 동안 원하는 음악을 여러 번 플레이하게 한다. 그달 후, 사용자는 라이센스를 갱신하기 위하여 그의 가입을 갱신할 필요가 있을 것이다; 그렇지 않으면, 라이센스를 만료하고, 사용자는 그의 메모리 디바이스에 저장된 음악을 더 이상 플레이할 수 없을 것이다. 보다 많은 노래들에 대한 서비스 제공자의 웹 사이트에 빈번하게 방문하는 사용자들은 웹 사이트에 연결할 때 새로운 타임 스탬프를 수신할 것이다; 따라서, 메모리 디바이스들은 보다 정확한 시간 평가를 제공할 것이다. 그러나, 비교적 많은 양의 음악을 다운로드하는 사용자들은 달마다 라이센스를 만료하기 전에 서비스 제공자의 웹 사이트에 필수적으로 재접속할 수 없다. 사용자가 궁극적으로 보다 많은 음악을 위해 재접속할 때, 서비스 제공자는 그가 라이센스 기간들 외측의 음악을 플레이하는 시간 동안 사용자에게 과금할 수 있다. 이로 인해, 비지니스 모델로서, 달마다 가입에 대한 서비스 제공자는 페이-퍼-유스(pay-per-use) 컨텐트의 서비스 제공자와 다른 시간 허용 오차를 원할 수 있고, 여기서 사용자는 그가 페이-퍼-유스 컨텐트를 수신한 경우 웹 사이트로 다시 진행하지 않을 수 있다. 이런 상황에서, 사용자가 페이-퍼-유스 서비스보다 달마다 가입 서비스에서 보다 많은 음악을 위해 다시 되돌아가기 쉽기 때문에, 서비스 제공자는 비록 그가 궁극적으로 웹 사이트로 리턴하더라도 새로운 타임 스탬프를 얻게 하는 요구함으로써 고객을 당황하게 할 수 있는 엄격한 시간 허용 오차를 원하지 않을 수 있다. 덜 엄격한 시간 허용 오차를 가지는 것은 서비스 제공자의 웹 사이트로 결코 되돌아가지 않는 고객들이 라이센스의 1달 기간보다 더 오랜 동안(예를 들어, 실제 시간의 1달 대신 액티브 시간의 1달 동안) 음악을 플레이할 수 있을 것이다. 그러나, 고려하여, 서비스 제공자는 상기 인증되지 않은 사용이 고객들 리턴 불편 및 당황스러움을 방지하기 위하여 허용 가능한 희생이 있다는 것을 결정할 수 있다.
다른 실시예로서, 사용자가 그의 셀 전화를 사용하여 메모리 디바이스로부터 오디오 또는 비디오 컨텐트를 플레이할 때 서비스 제공자가 셀 전화에 광고하는 포인트를 제공하기를 원하는 비지니스 모델을 고려하자. 만약 포인트 광고가 컨텐트가 플레이되는 시간에서 셀 전화의 위치 근처에 있는 저장소들에 관련된 광고들을 포함하면, 컨텐트가 플레이될 때 호스트 디바이스가 네트워크에 접속될 필요가 있다; 그렇지 않으면, 위치-지정 포인트 광고는 전달될 수 없다. 이런 발생을 보장하기 위하여, 컨텐트의 TUP는 사용자가 새로운 타임 스탬프를 얻도록 네트워크에 접속하는 것을 보장하기 위하여 매우 작은 양(예를 들어, 액티브 시간의 1분)으로 설정될 수 있다. 일단 사용자가 네트워크에 접속하면, 네트워크는 셀 전화의 위치를 알고 적당한 광고 컨텐트를 셀 전화에 푸쉬할 수 있다. 다른 한편, 컨텐트가 얼마나 많이 플레이되는가를 앎으로써 서비스 제공자는 돈을 만들 수 있는 경우, 시간 허용 오차는 덜 엄격할 수 있다.
상기 예들에 의해 도시된 바와 같이, 라이센스 파일들상에 구성할 수 있는 TUP들의 사용을 통해, 특정 컨텐트의 서비스 제공자는 그가 타임 스탬프 업데이트 동안 호스트 디바이스를 네트워크에 접속시키게 요구함으로써 고객들을 당황스럽게 하지 않도록 적당하고 생각하는 시간 업데이트를 밸런싱 할 때마다 알릴 수 있다. 이 실시예에서 메모리 디바이스가 다중 목적, 다중 TUP들을 가진 다중-애플리케이션 메모리 디바이스이기 때문에, 메모리 디바이스상 하나의 서비스는 특정 시간 후 셧다운될 수 있고, 메모리 디바이스상 다른 서비스들이 여전히 인에이블되는 것은 주지되어야 한다. 즉, 비록 인증되었지만 플레이어는 메모리 디바이스상 특정 컨텐트를 플레이할 수 있고 그러나 다른 컨텐트의 라이센스들과 연관된 다른 TUP들로 인해 새로운 타임 스탬프가 얻어지지 않으면 메모리 디바이스상 다른 컨텐트를 플레이할 수 없게 할 수 있다.
상기 도시된 바와 같이, 이들 실시예들에서, 메모리 디바이스는 두 개의 독립된 구성을 포함한다: 중앙 보안 시스템 및 중앙 보안 시스템으로부터 분리된 하나 또는 그 이상의 애플리케이션들. (애플리케이션이 중앙 보안 시스템으로부터 분리되기 때문에, 애플리케이션은 때때로 "확장" 또는 "내부 확장"이라 여기에서 불릴 수 있다). 도 3에 도시된 실시예에서, 애플리케이션은 DRM 모듈(207) 형태를 가진다. 그러나, 다른 애플리케이션들을 사용될 수 있고, 예를 들어 e-무역, 뱅킹, 신용 카드, 전자 화폐, 수명 측정, 액세스 제어, 퍼스널 데이터, 또는 보안 이메일 기능이 제공될 수 있다. 또한 단일 애플리케이션만이 도 3에서 메모리 디바이스(200)에 도시되는 되었지만, 메모리 디바이스가 몇몇 애플리케이션들(예를 들어, DRM 모듈 및 e-무역 모듈)을 가질 수 있다는 것은 주지되어야 한다.
중앙 보안 시스템은, ACR들의 사용을 통해 메모리 디바이스(예를 들어, DRM 에이전트) 내 애플리케이션들을 통해 메모리 디바이스에 저장된 데이터의 보호된 피스들에 액세스하기 위하여 시도하는 엔티티를 인증한다. 일단 엔티티가 메모리 디바이스를 인증하면, 보안된 세션은 엔티티 및 상기 엔티티를 인증하기 위하여 사용된 ACR에 의해 지정된 애플리케이션 사이에서 개방된다. 그 다음 엔티티는 보호된 데이터에 액세스하기 위하여 연관된 애플리케이션에 명령들/요청들을 전송할 수 있다. 이런 방식으로, 중앙 보안 시스템은 메모리 디바이스에 메인 게이트키퍼로서 작동한다. 상기된 11/557,028 특허 출원에 상세히 기술된 바와 같이, 중앙 보안 시스템은 메모리 디바이스(200)에서 실행하는 다양한 애플리케이션들을 분리할 수 있어서, 하나의 애플리케이션은 다른 애플리케이션과 연관된 데이터에 액세스할 수 없다.
데이터가 적당한 인증된 엔티티들에 의해서만 액세스되도록 중앙 보안 시스템이 액세스 제어 메카니즘을 제공하고 메모리 디바이스에 저장된 데이터를 보호하는 동안, 중앙 보안 시스템 자체는 보호하는 바로 그 데이터를 이해 및 처리할 수 없다. 보호된 데이터를 이해하고 처리할 수 있는 메모리 디바이스에서 실행하는 애플리케이션들이 있다. 예를 들어, 보호된 데이터가 DRM 라이센스이면, DRM 에이전트 - 중앙 보안 시스템이 아님 -는 라이센스를 유효화할 수 있다. 따라서, 중앙 보안 시스템은 구성할 수 있는 애플리케이션 무관 툴박스로 고려될 수 있다. 동작시, 서비스 제공자는 메모리 디바이스상에 애플리케이션을 배치하고 애플리케이션과 특정 엔티티를 연관시키는 ACR을 정의한다. 중앙 보안 시스템의 시점에서, 어떤 애플리케이션이 수행되는지(예를 들어, 애플리케이션이 DRM 라이센스 유효화, e-무역 기능, 등등)를 아는 것이 아니고 단지 특정 ACR에 인증된 엔티티들이 ACR에서 정의된 애플리케이션과 통신하도록 허용된다. 일단 엔티티가 중앙 보안 시스템에 의해 인증되면, 중앙 보안 시스템은 엔티티 및 애플리케이션 사이의 보안 채널을 개방한다.
몇몇 상황들에서, 중앙 보안 시스템 및 애플리케이션은 시간을 알 필요가 있다. 예를 들어, 중앙 보안 시스템은 시간-바탕 인증(예를 들어, 비대칭 인증)을 위한 시간을 알 필요가 없고, 애플리케이션은 시간-바탕 동작(예를 들어, DRM 라이센스 유효화)을 위한 시간을 알 필요가 있을 수 있다. 상기된 바와 같이, 메모리 디바이스는 메모리 디바이스에서 실행하는 애플리케이션들 및 중앙 보안 시스템 모두에 시간을 제공할 수 있는 중앙 타임 모듈을 가진다. 예를 들어, 도 3을 참조하여, 모듈(204)은 다양한 엔티티들을 인증하기 위해 비대칭 ACR들(201,202)에 시간을 제공할 뿐 아니라, 라이센스 유효성을 검증하기 위하여 DRM 모듈(207)에 시간을 제공할 수 있다. 도 8과 관련하여 하기 될 바와 같이, 몇몇 상황들에서, 메모리 디바이스상 애플리케이션은 메모리 디바이스의 타임 모듈로부터 시간에 부가하여 또는 대신 호스트 타임을 사용하기를 선택할 수 있다.
도 8은 호스트 디바이스(700)와 통신하는 메모리 디바이스(600)를 도시한다. 호스트 디바이스(700)는 엔티티(여기서, 플레이어 710)를 포함하고 시간(720)을 제공하기 위한 몇몇 메카니즘(예를 들어, 배터리 백업 클럭)을 가진다. 이 실시예에서, 메모리 디바이스(600)는 대칭 ACR(610)(비록 비대칭 ACR이 사용될 수 있지만), 타임 모듈(620), DRM 모듈(630), 보호된 컨텐트(640), 및 보호된 컨텐트(640)를 위한 라이센스(650)를 가진다. (도 8에서, 메모리 디바이스의 애플리케이션은 DRM 모듈(630)이다. 다른 타입의 애플리케이션들이 사용될 수 있고, 하나 이상의 애플리케이션이 메모리 디바이스 내에서 실행될 수 있다는 것이 주지된다). 플레이어(710)가 대칭 ACR(610)을 사용하여 메모리 디바이스(600)에 인증할 때, 보안 채널(660)은 대칭 ACR(610)에서 설정된 파라미터들에 따라 플레이어(710) 및 DRM 모듈(630) 사이에 설정된다. DRM 모듈(630) 및 플레이어(710)는 서비스 제공자가 DRM 모듈(630)을 플레이어(710)와 연관시키기 위하여 대칭 ACR(610)을 정의하기 때문에 서로 알려지지 않는다. 따라서, 동일한 그룹의 카운터파트(counterpart) 멤버들이기 때문에 DRM 모듈(630) 및 플레이어(710) 사이의 특정 레벨의 신뢰성이 있다. 이런 신뢰성을 바탕으로, DRM 모듈(630)이 DRM 라이센스 유효화를 수행하기 위하여 시간의 소스로서 플레이어(710)로부터 호스트 타임(720)을 허용하도록 프로그램될 수 있다. 따라서, DRM 모듈(630)은 DRM 라이센스 유효화를 수행할 수 있는 두 개의 독립적인 시간의 소스들을 가진다: 호스트 타임(720) 및 메모리 디바이스의 중앙 타임 모듈(620)로부터의 시간. 이들 시간 소스들 각각과 연관된 장점들 및 단점들이 있다. 메모리 디바이스의 타임 모듈(620)이 계속하여 시간의 트랙을 추적하지 않기 때문에, 시간에 따라 모듈(620)은 배터리 백업 연속 클럭에 의해 제공된 호스트 타임(720)에서 정확하지 않을 수 있다. 다른 한편, 상기된 모든 보안 예방책들로 인해, 시간에 따라 모듈(620)은 특히 호스트 디바이스(700)의 사용자가 간단한 사용자 인터페이스를 사용하여 호스트 타임(720)을 변경할 수 있다면, 호스트 타임(720)보다 안전할 수 있다.
메모리 디바이스(600)(DRM 모듈 630 같은)에서 실행하는 애플리케이션은 시간-기반 동작을 위한 시간 평가를 생성하기 위하여 원하는 방식으로 이들 두 개의 다른 시간 소스들을 사용하도록 프로그램될 수 있다. (그러나, 애플리케이션이 호스트 타임 720을 사용하여 타임 모듈 620을 업데이트할 수 없는 것이 바람직하다). 예를 들어, 애플리케이션은 타임 모듈(620)로부터 시간 대신 호스트 타임(720)을 항상 사용하거나 호스트 타임(720) 대신 타임 모듈(620)로부터 시간을 항상 사용하도록 프로그램될 수 있다. 다른 실시예로서, 애플리케이션은 호스트 타임(720)의 느림(또는 이름) 및 타임 모듈(620)로부터의 시간을 사용하도록 프로그램될 수 있다. 애플리케이션은 몇몇 방식(예를 들어, 호스트 타임 720 및 타임 모듈 620으로부터의 시간의 평균을 취함, 등등) 양쪽 시간 소스들을 사용하여 시간 평가를 생성하도록 프로그램될 수 있다. 다른 예로서, 애플리케이션은 호스트 디바이스(700)에 관한 정보를 바탕으로 사용하기 위해 어느 시간 소스를 사용할지를 결정할 수 있다. 애플리케이션은 인증 처리(예를 들어, 비대칭 인증이 사용되면, 인증 알고리듬은 호스트 디바이스 700과 연관된 개별 및 그룹 아이덴티티들의 애플리케이션을 알릴 수 있다)를 통하여 호스트 디바이스의 타입을 학습할 수 있다. 이런 정보는 몇몇 호스트 디바이스들이 다른 것들보다 안전할 수 있기 때문에 중요할 수 있다. 예를 들어, 호스트 디바이스가 PC이면, 클럭은 소프트웨어 애플리케이션 상 간단한 사용자 인터페이스를 통하여 쉽게 조종될 수 있다. (비교적 신뢰할 수 없는 호스트 디바이스로부터 호스트 타임을 신뢰하지 못하는 것 외에, 애플리케이션은 예를 들어 컨텐트 키들, 라이센스 값들 또는 기간들, 또는 라이센스 변경 권리를 사용하여 호스트 디바이스상에서 실행하는 엔티티를 신뢰할 수 없다. 상기 상황에서, DRM 에이전트는 메모리 디바이스의 컨텐트를 호스트 디바이스에 흘러가게 할 수 있다(호스트 디바이스에 인크립션 키들 및 컨텐트를 제공하는 대신). 그러나, 만약 호스트가 MP3 플레이어 같은 폐쇄된 시스템이면, 호스트의 클럭은 조종하기가 보다 어려울 수 있다. 따라서, 호스트 디바이스(600)에서 실행하는 애플리케이션은 호스트 디바이스(700)가 PC일 때보다 호스트 디바이스(700)가 MP3 플레이어일 때보다 호스트 타임(720)을 신뢰할 수 있다.
일 실시예에서, 플레이어(710)는 노래를 플레이하기 위한 요청을 DRM 모듈(630)에 전송할 때 호스트 타임(720)을 DRM 모듈(630)에 푸쉬한다. DRM 모듈(630)은 그 다음 상기된 바와 같이 호스트 타임(720)을 사용할지 타임 모듈(620)로부터 시간을 사용할지를 결정한다. 바람직하게, 호스트 타임(720)은 추후 세션들 동안 절대 현재 시간 측정값으로서 사용되는 대신 비교적 짧은 간격인 특정 로그인 세션 동안만 사용될 것이다. 선택적으로, 호스트 타임(720)은 애플리케이션에 의해 미래 사용을 위해 저장될 수 있고, 상기 논의된 "시간-연장" 및 다른 메카니즘들은 (선택적으로) 그 시간의 정확도를 개선하기 위해 사용된다. 그러나, 호스트 타임이 애플리케이션의 특정 시간-바탕 동작만을 위해 사용되고 타임 모듈(620)의 시간을 업데이트하기 위하여 사용되지 않는 것은 바람직하다(왜냐하면 애플리케이션은 "연장"이고 중앙 보안 시스템과 같은 신뢰성 있는 캠프의 일부가 아니기 때문이다). 바람직하게, 타임 모듈(620) 내 시간은 상기된 바와 같이 신뢰성 있는 타임 서버들(중앙 보안 시스템과 동일한 신뢰성 있는 캠프의 일부임)을 사용해서만 업데이트된다. 몇몇 애플리케이션들이 메모리 디바이스(600)에서 실행될 때, 각각의 애플리케이션이 두 개의 시간 소스들을 가질 수 있다는 것은 주지되어야 한다: 타임 모듈(620)로부터의 시간 및 애플리케이션과 통신하는 엔티티를 동작시키는 호스트 디바이스로부터의 시간. 그러나, 하나의 애플리케이션과 연관된 호스트 타임이 그 애플리케이션에만 사용되고 다른 호스트 디바이스들과 연관된 다른 애플리케이션들에 사용되지 않는 것이 바람직할 수 있다.
상기된 바와 같이, 메모리 디바이스(600)(DRM 모듈 630 같은)에서 실행하는 애플리케이션은 타임 모듈(620)로부터의 시간과 호스트 타임(720)을 비교하고 두 시간들의 느림(또는 이름)을 사용하도록 프로그램될 수 있다. 예를 들어, 호스트 타임(720)은 시간 비대칭이 호스트 타임(720)에서 발생하는 충분히 긴 시간 동안 호스트(700)가 타임 서버에 접속할 수 없거나 호스트 클럭이 해킹되었기 때문에, 타임 모듈(620)로부터의 시간 보다 이를 수 있다. 또한 상기된 바와 같이, 호스트 타임(720)은 애플리케이션에 의해 미래 사용을 위해 저장될 수 있다. 이들 생각들을 결합하여, 호스트 타임(720)은 다른 호스트 디바이스로부터 수신된 시간과 비교하기 위하여 저장 및 추후 사용될 수 있다(단독으로 또는 타임 모듈 620로부터 시간과 함께). 비교를 바탕으로, 메모리 디바이스는 시간 바탕 동작을 수행하기 위하여 현재 호스트 디바이스로부터의 시간을 사용할지 이전 호스트 디바이스로부터 저장된 시간을 사용할지를 결정할 수 있다. 예를 들어, 메모리 디바이스는 만약 시간 바탕 동작이 동작보다 "이르지 않으면" 두 시간들 중 이름을 취하고 만약 시간 바탕 동작 시간들이 동작보다 "느리지 않으면" 두 개의 시간들 중 느림을 취하도록 프로그램될 수 있다. 이런 방식으로, 다른 신뢰성 있는 호스트 디바이스들로부터 수신된 타임 스탬프들은 단일 타임 서버에 관련하여 단일 다중-호스트 안티-롤백(anti-rollback) 메카니즘을 위한 기준으로서 사용될 수 있다.
상기된 바와 같이, 비-시간 바탕 인증 시스템(대칭 인증 같은)은 호스트 디바이스를 인증하기 위하여 사용될 수 있다. 이것은 애플리케이션의 시간 바탕 동작(예를 들어, DMR 동작)이 인증 타임 서버와 무관하게 한다. 즉, 호스트 디바이스 또는 DRM 서버로부터의 시간만이 사용되기 때문에, 애플리케이션의 시간 바탕 동작은 인증 타임 서버 또는 메모리 디바이스의 타임 모듈로부터 시간에 의존하지 않는다. 따라서, 어떤 이유든지, 인증 타임 서버에 대해 문제가 있거나 만약 시간 바탕 애플리케이션이 인증 타임 서버를 바탕으로 시간을 사용하도록 선택하지 않으면, 시간 바탕 애플리케이션은 호스트 타임을 사용하여 그 동작을 수행할 수 있다.
상기 임의의 실시예들이 단독으로 또는 결합하여 함께 사용될 수 있다는 것은 주지되어야 한다. 이들 실시예들에 사용될 수 있는 다른 실시예들은 참조로써 통합된 특허 출원들에 기술된다. 게다가, 이들 실시예들이 SanDisk Corporation에 의한 TrustedFlashTM 메모리 디바이스에서 실행되는 것이 현재 바람직하지만, 이들 실시예들이 임의의 타입의 메모리 디바이스에 사용될 수 있다는 것이 이해되어야 한다. 또한, 이들 실시예들은 부정확한 클럭을 가지며 시간을 알거나 사용할 필요가 있는 일반적인 문제에 부닥치는 경우 비메모리 디바이스 필드들에 사용될 수 있다. 부가적으로, 상기된 액트들의 일부 또는 모두는 배타적으로 메모리 디바이스 대신 호스트 디바이스(또는 몇몇 다른 장치)에서 수행될 수 있다.
본 발명이 취할 수 있는 선택된 형태들의 도시와 본 발명의 정의로서가 아니고 상기 상세한 설명이 이해되는 것이 의도된다. 다음 청구항들은 본 발명의 범위를 정의하고자 하는 모든 등가물들을 포함한다. 청구항들에서 열거된 액트들은 임의의 순서로 수행될 수 있다 - 그들이 열거되는 순서에 필수적이지 않음. 최종적으로, 여기에 기술된 임의의 바람직한 실시예들의 임의의 측면이 단독으로 또는 서로 결합하여 사용될 수 있다는 것이 주지되어야 한다.
100; 타임 서버, 110; DRM 서버, 80; 인터넷, 270; 하드웨어 타이머 블록, 254; 호스트 DMA, 252; 크립토-엔진, 256; 플래시 DMA, 300; 호스트 디바이스, 210; 플래시 메모리, 303; 애플리케이션, 301; 플레이어, 302; 저장 애플리케이션, 203; 대칭 ACR, 201; 비대칭 ACR, 202; 비대칭 ACR, 204; 타임 모듈, 205; 보호된 컨텐트, 207; DRM 모듈, 206; 보호된 컨텐트에 대한 라이센스
Claims (20)
- 메모리 디바이스에 엔티티를 인증하기 위한 방법으로서,
메모리 디바이스에서,
시간-바탕 인증 기술을 이용하여 엔티티를 인증하기 위한 요청을 수신하는 단계와,
상기 엔티티의 인증을 시도하기 전에, 새로운 타임 스탬프가 필요한지를 결정하는 단계와,
새로운 타임 스탬프가 필요하다면, 상기 새로운 타임 스탬프를 수신한 다음 상기 새로운 타임 스탬프를 바탕으로 시간 평가를 사용하여 상기 엔티티를 인증하기 위해 시도하는 단계를 포함하고,
새로운 타임 스탬프가 필요하지 않으면,
상기 메모리 디바이스가 액티브되었을 때만 동작하는 상기 메모리 디바이스 내의 시간 카운터를 이용하여 이전에 수신된 타임 스탬프에 관련하여 상기 메모리 디바이스의 액티브 시간을 측정하는 단계와,
부정확의 적어도 일부가 상기 메모리 디바이스의 다운 시간에 기인하는 일정 시간 주기 동안 상기 메모리 디바이스에 의해 이전에 측정된 액티브 시간의 정확도를 그 시간 주기 동안의 실제 시간과 비교함으로써 결정하는 단계와,
결정된 상기 정확도를 바탕으로 측정된 상기 액티브 시간을 조절하는 단계와,
이전에 수신된 상기 타임 스탬프에 측정되고 조절된 상기 액티브 시간을 부가함으로써 시간 평가를 생성하는 단계와,
생성된 상기 시간 평가를 이용하여 엔티티를 인증하기 위하여 시도하는 단계를 포함하는, 엔티티 인증 방법. - 삭제
- 제 1항에 있어서, 새로운 타임 스탬프가 필요한지 여부를 결정하는 상기 단계는, 상기 메모리 디바이스에 의해 수신된 최종 타임 스탬프 이후 메모리 디바이스의 전력 사이클의 수, 최종 타임 스탬프 이후 메모리 디바이스의 액티브 시간, 및 최종 타임 스탬프 이후 메모리 디바이스의 측정되고 조절된 상기 액티브 시간 중 하나 이상을 바탕으로 하는, 엔티티 인증 방법.
- 제 1항에 있어서, 상기 엔티티를 인증하기 위한 시도는, 비대칭 인증 절차를 사용하여 이루어지는, 엔티티 인증 방법.
- 제 1항에 있어서, 상기 엔티티를 인증하기 위해 시도하는 단계는, 증명서가 유효한지를 결정하는 단계를 포함하는, 엔티티 인증 방법.
- 제 1항에 있어서, 상기 엔티티를 인증하기 위해 시도하는 단계는, 증명서 취소 리스트(CRL)가 유효한지를 결정하는 단계를 포함하는, 엔티티 인증 방법.
- 제 1항에 있어서, 상기 새로운 타임 스탬프는 메모리 디바이스와 접속된 호스트 디바이스에 의해 생성되는, 엔티티 인증 방법.
- 제 1항에 있어서, 상기 메모리 디바이스는 메모리 디바이스상에 저장된 보호된 컨텐트를 언로킹하기 위하여 디지털 권리 관리(DRM) 키와 라이센스를 저장하는, 엔티티 인증 방법.
- 제 1항에 있어서, 새로운 타임 스탬프가 필요한지를 결정하는 단계는, 상기 엔티티와 연관된 액세스 제어 기록(ACR)의 타임 스탬프 업데이트 정책(TUP)이 새로운 타임 스탬프를 요청하는지를 결정하는 단계를 포함하는, 엔티티 인증 방법.
- 제 1항에 있어서, 상기 새로운 타임 스탬프는 빈 채널을 통하여 전송되는, 엔티티 인증 방법.
- 메모리 디바이스로서,
새로운 타임 스탬프가 필요할 때를 지정하는 다수의 다른 타임 스탬프 업데이트 정책(TUP)을 저장하는 메모리 어레이와,
상기 메모리 어레이와 통신하고,
시간-바탕 인증 기술을 이용하여 엔티티를 인증하기 위한 요청을 수신하고,
상기 엔티티를 인증하기 위해 시도하기 전에, 상기 엔티티와 연관된 TUP를 바탕으로 새로운 타임 스탬프가 필요한지를 결정하며,
새로운 타임 스탬프가 필요하면, 상기 새로운 타임 스탬프를 수신한 후 상기 새로운 타임 스탬프를 바탕으로 시간 평가를 사용하여 상기 엔티티를 인증하기 위해 시도하고,
새로운 타임 스탬프가 필요하지 않으면,
상기 메모리 디바이스가 액티브되었을 때만 동작하는 상기 메모리 디바이스 내의 시간 카운터를 이용하여 이전에 수신된 타임 스탬프에 관련하여 상기 메모리 디바이스의 액티브 시간을 측정하고,
부정확의 적어도 일부가 상기 메모리 디바이스의 다운 시간에 기인하는 일정 시간 주기 동안 상기 메모리 디바이스에 의해 이전에 측정된 액티브 시간의 정확도를 그 시간 주기 동안의 실제 시간과 비교함으로써 결정하고,
결정된 상기 정확도를 바탕으로 측정된 상기 액티브 시간을 조절하고,
이전에 수신된 상기 타임 스탬프에 측정되고 조절된 상기 액티브 시간을 부가함으로써 시간 평가를 생성하고,
생성된 상기 시간 평가를 이용하여 엔티티를 인증하기 위하여 시도하도록
동작하는, 회로를
포함하는, 메모리 디바이스. - 삭제
- 제 11항에 있어서, 상기 엔티티와 연관된 TUP는,
상기 메모리 디바이스에 의해 수신된 최종 타임 스탬프 이후 상기 메모리 디바이스의 전력 사이클의 수, 상기 최종 타임 스탬프 이후 상기 메모리 디바이스의 액티브 시간, 및 상기 최종 타임 스탬프 이후 상기 메모리 디바이스의 측정되고 조절된 상기 액티브 시간 중 하나 이상을 포함하는, 메모리 디바이스. - 제 11항에 있어서, 상기 회로는 비대칭 인증 절차를 사용하여 상기 엔티티를 인증하기 위하여 시도하도록 동작하는, 메모리 디바이스.
- 제 11항에 있어서, 상기 회로는 증명서가 유효한지를 결정함으로써 엔티티를 인증하기 위하여 시도하도록 동작하는, 메모리 디바이스.
- 제 11항에 있어서, 상기 회로는 증명서 취소 리스트(CRL)가 유효한지를 결정함으로써 엔티티를 인증하기 위해 시도하도록 동작하는, 메모리 디바이스.
- 제 11항에 있어서, 상기 새로운 타임 스탬프는 메모리 디바이스와 접속된 호스트 디바이스에 의해 생성되는, 메모리 디바이스.
- 제 11항에 있어서, 상기 메모리 디바이스는 메모리 디바이스상에 저장된 보호된 컨텐트를 언로킹하기 위하여 디지털 권리 관리(DRM) 키와 라이센스를 저장하는, 메모리 디바이스.
- 제 11항에 있어서, 상기 복수의 TUP는 각각의 복수의 액세스 제어 기록(ACR)의 일부인, 메모리 디바이스.
- 제 11항에 있어서, 상기 새로운 타임 스탬프는 빈 채널을 통해 전송되는, 메모리 디바이스.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/811,289 | 2007-06-08 | ||
US11/811,344 US20080307494A1 (en) | 2007-06-08 | 2007-06-08 | Memory device with circuitry for improving accuracy of a time estimate used to authenticate an entity |
US11/811,344 | 2007-06-08 | ||
US11/811,289 US20080307237A1 (en) | 2007-06-08 | 2007-06-08 | Method for improving accuracy of a time estimate used to authenticate an entity to a memory device |
PCT/US2008/065967 WO2008151294A1 (en) | 2007-06-08 | 2008-06-05 | Memory device with circuitry for improving accuracy of a time estimate used to authenticate an entity and method for use therewith |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100031124A KR20100031124A (ko) | 2010-03-19 |
KR101465555B1 true KR101465555B1 (ko) | 2014-11-26 |
Family
ID=39874443
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107000091A KR101465555B1 (ko) | 2007-06-08 | 2008-06-05 | 엔티티를 인증하기 위해 사용된 시간 평가의 정확성을 개선하기 위한 회로를 구비한 메모리 디바이스와, 상기 메모리 디바이스와 사용하기 위한 방법 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP2156355A1 (ko) |
JP (1) | JP5343071B2 (ko) |
KR (1) | KR101465555B1 (ko) |
CN (1) | CN101779208B (ko) |
TW (1) | TWI417729B (ko) |
WO (1) | WO2008151294A1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ITVI20120262A1 (it) * | 2012-10-10 | 2014-04-11 | Siav Spa | Dispositivo di archiviazione di dati in formato elettronico e procedimento di funzionamento di tale dispositivo |
KR20200129776A (ko) * | 2019-05-10 | 2020-11-18 | 삼성전자주식회사 | 재전송 공격에 대한 방어책을 포함하는 메모리 시스템의 구동 방법 및 이를 수행하는 메모리 시스템 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0736559A (ja) * | 1993-07-22 | 1995-02-07 | Internatl Business Mach Corp <Ibm> | セキュア・タイムキーピング装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FI95980C (fi) * | 1992-09-04 | 1996-04-10 | Nokia Mobile Phones Ltd | Menetelmä ja kytkentäjärjestely ajan mittaamiseksi tarkasti epätarkalla kellolla |
US6557102B1 (en) * | 1997-09-05 | 2003-04-29 | Koninklijke Philips Electronics N.V. | Digital trust center for medical image authentication |
US7194092B1 (en) * | 1998-10-26 | 2007-03-20 | Microsoft Corporation | Key-based secure storage |
DE69937682T2 (de) * | 1999-10-20 | 2008-11-20 | Sony Deutschland Gmbh | Mobiler Terminal für ein drahtloses Telekommunikationsverfahren mit genauer Echtzeiterzeugung |
JP2003296278A (ja) * | 2002-04-05 | 2003-10-17 | Simple Net International Group Kk | データ管理システム、データ管理方法、データ管理システム用プログラム、及びデータ管理システム用記録媒体 |
JP2004021341A (ja) * | 2002-06-12 | 2004-01-22 | Csk Corp | サーバクライアントシステム、利用者認証方法および接続プログラム |
US20040009815A1 (en) * | 2002-06-26 | 2004-01-15 | Zotto Banjamin O. | Managing access to content |
JP4012771B2 (ja) * | 2002-06-28 | 2007-11-21 | 富士通エフ・アイ・ピー株式会社 | ライセンス管理方法、ライセンス管理システム、ライセンス管理プログラム |
JP2004171544A (ja) * | 2002-10-31 | 2004-06-17 | Oki Electric Ind Co Ltd | 時刻制限付コンテンツ閲覧システム |
EP1597905A1 (en) * | 2003-02-20 | 2005-11-23 | Ase R & D Europe | Method for offering time on smart card and method for time registration by means of mobile communication device |
JP2004320510A (ja) * | 2003-04-17 | 2004-11-11 | Arduc Co Ltd | ビデオレンタルシステム |
JP2004326278A (ja) * | 2003-04-23 | 2004-11-18 | Renesas Technology Corp | 不揮発性記憶装置及びデータ処理装置 |
JP2005063079A (ja) * | 2003-08-11 | 2005-03-10 | Matsushita Electric Ind Co Ltd | メモリカード装置、権利管理システムおよび時間管理方法 |
US7411868B2 (en) * | 2004-11-14 | 2008-08-12 | International Business Machines Corporation | Estimation of time within untrusted time device disconnected from trusted time device |
US8504849B2 (en) * | 2004-12-21 | 2013-08-06 | Sandisk Technologies Inc. | Method for versatile content control |
JP2009508412A (ja) * | 2005-09-08 | 2009-02-26 | サンディスク コーポレーション | メディアコンテンツのセキュアストレージと配信のためのモバイルメモリシステム |
US20070043667A1 (en) * | 2005-09-08 | 2007-02-22 | Bahman Qawami | Method for secure storage and delivery of media content |
-
2008
- 2008-06-05 EP EP08780764A patent/EP2156355A1/en not_active Withdrawn
- 2008-06-05 WO PCT/US2008/065967 patent/WO2008151294A1/en active Application Filing
- 2008-06-05 CN CN2008801023200A patent/CN101779208B/zh not_active Expired - Fee Related
- 2008-06-05 JP JP2010511334A patent/JP5343071B2/ja not_active Expired - Fee Related
- 2008-06-05 KR KR1020107000091A patent/KR101465555B1/ko not_active IP Right Cessation
- 2008-06-06 TW TW097121262A patent/TWI417729B/zh not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0736559A (ja) * | 1993-07-22 | 1995-02-07 | Internatl Business Mach Corp <Ibm> | セキュア・タイムキーピング装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2008151294A1 (en) | 2008-12-11 |
TWI417729B (zh) | 2013-12-01 |
TW200907685A (en) | 2009-02-16 |
JP2010530101A (ja) | 2010-09-02 |
EP2156355A1 (en) | 2010-02-24 |
CN101779208A (zh) | 2010-07-14 |
CN101779208B (zh) | 2013-10-16 |
KR20100031124A (ko) | 2010-03-19 |
JP5343071B2 (ja) | 2013-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8869288B2 (en) | Method for using time from a trusted host device | |
US8688588B2 (en) | Method for improving accuracy of a time estimate used in digital rights management (DRM) license validation | |
US20080307494A1 (en) | Memory device with circuitry for improving accuracy of a time estimate used to authenticate an entity | |
US20080307495A1 (en) | Memory device with circuitry for improving accuracy of a time estimate used in digital rights management (DRM) license validation | |
US20080307507A1 (en) | Memory device using time from a trusted host device | |
US8688924B2 (en) | Method for improving accuracy of a time estimate from a memory device | |
US20080304364A1 (en) | Memory device with circuitry for improving accuracy of a time estimate | |
US8938625B2 (en) | Systems and methods for securing cryptographic data using timestamps | |
US20130004142A1 (en) | Systems and methods for device authentication including timestamp validation | |
US20090165111A1 (en) | Method and apparatus for secure management of debugging processes within communication devices | |
US20080307237A1 (en) | Method for improving accuracy of a time estimate used to authenticate an entity to a memory device | |
TWI386947B (zh) | 使用信任主機裝置之時間的記憶體裝置及其使用方法 | |
JP5180293B2 (ja) | デジタル著作権管理(drm)ライセンス検証に用いる時間推定の精度を向上させるための回路を備えるメモリ装置とその装置で使用する方法 | |
JP5039931B2 (ja) | 情報処理装置 | |
KR101465555B1 (ko) | 엔티티를 인증하기 위해 사용된 시간 평가의 정확성을 개선하기 위한 회로를 구비한 메모리 디바이스와, 상기 메모리 디바이스와 사용하기 위한 방법 | |
JP4673150B2 (ja) | デジタルコンテンツ配信システムおよびトークンデバイス | |
JP5180292B2 (ja) | 時間推定の精度を向上させるための回路を備えるメモリ装置とその装置で使用する方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
N231 | Notification of change of applicant | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |