KR20080059675A - 신뢰성 있는 이동 플랫폼 구조 - Google Patents

신뢰성 있는 이동 플랫폼 구조 Download PDF

Info

Publication number
KR20080059675A
KR20080059675A KR1020087013511A KR20087013511A KR20080059675A KR 20080059675 A KR20080059675 A KR 20080059675A KR 1020087013511 A KR1020087013511 A KR 1020087013511A KR 20087013511 A KR20087013511 A KR 20087013511A KR 20080059675 A KR20080059675 A KR 20080059675A
Authority
KR
South Korea
Prior art keywords
encryption
processor
encryption key
cryptographic
data encryption
Prior art date
Application number
KR1020087013511A
Other languages
English (en)
Inventor
데이비드 휠러
존 브릭젝
모이눌 칸
아니타 코나
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20080059675A publication Critical patent/KR20080059675A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/72Protecting 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/10Integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/30Security of mobile devices; Security of mobile applications
    • H04W12/35Protecting application or service provisioning, e.g. securing SIM application provisioning
    • 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/2103Challenge-response
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless

Abstract

일 실시예에서 있어서, 장치는 하나 또는 그 이상의 암호화 유닛을 포함한다. 그 유닛은 또한 하나 또는 그 이상의 데이터 암호화 키를 저장할 메모리 및 하나 또는 그 이상의 데이터 암호화 키에 대한 관련된 헤더를 포함한다. 상기 관련된 헤더는 하나 또는 그 이상의 암호화 부들 중 데이터 암호화 키를 사용하기 위한 것으로 규정한다.

Description

신뢰성 있는 이동 플랫폼 구조{TRUSTED MOBILE PLATFORM ARCHITECTURE}
[관련된 출원 건]
본 명세서는, 신뢰성 있는 이동 플랫폼 구조라는 제목으로, 2003년 12월 11일에 출원된 미국 특허 가출원 일련 번호 제60/528,890호에 대한 우선권을 주장하며, 그 전체 명세서는 참조로서 포함된다.
이 출원은 현재 진행중인 미국 특허 출원 일련 번호 제 ____________ 호(변호사 등록번호 제884.B89US1호), 신뢰 프로세서를 위한 방법 및 장치라는 제목으로, 2004년 3월 31일에 출원된 건에 관련되며, 이것은 본 명세서에 개시된 실시예들의 양수인인 인텔사로 양도된다.
본 발명은 일반적으로 전자적 데이터 처리에 관한 것으로, 특히 신뢰성 있는 이동 플랫폼 구조에 관한 것이다.
무선 이동 장치(셀룰러 폰, PDA(Personal Digital Assistants) 등과 같은)는 전형적으로 그 크기가 작고 이동성이 있어 잃어버리기 쉽다. 잃어버리기 쉬운 만큼, 그런 장치는 쉽게 도난당한다. 그런 성향 때문에 이 장치들은 위조하기 쉽다. 게다가, 저 전력 장치를 만들기 위한 미니멀리스트의 시도는 이들 내장형 시스템들을 (운영 체계 및 하드웨어에 의해서) 단순화시켜, 이로 인해 악의있는 사용자 및/또는 애플리케이션에 이용될 여지가 있다. 사용자는 더 가치있게 사용하기 위하여 이들 장치들에 의존한다. 특히, 사용자들은 영수증, 신용카드번호, 주소, 전화번호, 기밀 문서 등과 같은 기밀 정보를 그런 장치들 내에 저장한다. 따라서, 이들 장치들은 공격받기 쉽기 때문에 점점 도둑들의 제1 순위 타겟이 되고 있다. 따라서, 그 안에 저장된 애플리케이션 및 데이터를 포함한 장치의 보전을 보장할 필요성이 있다.
신뢰성 있는 이동 플랫폼 구조를 위한 방법, 장치, 및 시스템을 설명한다. 이하 상세한 설명에서 다양한 구체적인 세부 사항들이 설명된다. 그러나, 본 발명의 일 실시예는 그런 구체적인 세부 사항들이 없더라도 수행될 수 있다고 이해된다. 다른 사례에서, 이 상세한 설명의 이해를 흐리게 할 수 있는 잘 알려진 회로, 구조, 및 기술들은 설명되지 않는다.
이 상세한 설명은 세 부분으로 분류된다. 첫 번째 섹션에서 하드웨어 구조가 제시된다. 두 번째 섹션에서는 신뢰성 있고 암호화된 동작들이 제시된다. 세 번째 섹션에서는 시스템 작동 환경이 제시된다.
하드웨어 구조
도 1은 본 발명의 일 실시예에 따라 신뢰성 있는 플랫폼 구조를 갖는 이동 컴퓨팅 장치의 개략적인 기능 블록도를 도시한 것이다. 더욱 상세하게는, 도 1은 신뢰성 있는 이동 컴퓨팅 장치(100)를 도시하며, 그 이동 컴퓨팅 장치는 다수의 다른 종류의 이동 컴퓨팅 장치(예컨대, 셀룰러 폰, PDA 등)를 대표한다. 신뢰성 있는 이동 컴퓨팅 장치(100)는 시스템-온-칩(102), 디스플레이(103), 터치 패드(104), 및 안테나(105)를 포함하며, 그들은 함께 결합된다. 디스플레이는 다수의 화면 장치이며, 그 일 예로는 액정 디스플레이(LCD) 스크린 등이 있다. 터치 패드(104)는 신뢰성 있는 이동 컴퓨팅 장치(100)의 사용자로부터 입력을 수신하는 데 이용된다. 터치 패드(104)의 일 예로는 숫자 터치 패드, 키보드 등이 있다. 비록 도시되지는 않았지만, 신뢰성 있는 이동 컴퓨팅 장치(100)는, 예컨대 오디오 입력/출력(I/O) 로직 등과 같은 다수의 다른 주변 장치, 오디오 입력/출력 로직은 사용자로부터의 오디오 데이터를 입력 및 출력한다.
시스템-온-칩(102)는 단일 칩일 수도 있으며, 여기에서 설명되는 그 구성 요소들은 예컨대 동일 반도체 기판 내에 존재한다. 선택적으로, 시스템-온-칩(102)은 에폭시 수지로 함께 접착되는 그런 다수의 칩들이다.
시스템-온-칩(102)은 애플리케이션 프로세서(106), 신뢰성 있는 부팅 판독 전용 기억 장치(ROM)(108), 통신 로직(110), 제어기(112), 비휘발성 메모리 제어기(114), 비휘발성 메모리(116), 휘발성 메모리 제어기(118), 휘발성 메모리(120), 그래픽 로직(122), 다이렉트 메모리 액세스(DMA) 로직(124), 암호화 프로세서(126), 주변 기기의 로직(128), 조인트 테스트 액세스 그룹(JTAG) 인터페이스(155), 및 버스(130)를 포함한다. 애플리케이션 프로세서(106), 신뢰성 있는 부팅 ROM(108), 통신 로직(110), 제어기(112), 비휘발성 메모리 제어기(114), 비휘발성 메모리(116), 휘발성 메모리 제어기(118), 그래픽 로직(122), JTAG 인터페이스(155), 및 DMA 로직(124)은 버스(130)에 결합된다. 따라서, 버스(130)는 각 구성 요소들간 통신을 제공한다. 디스플레이(103) 및 터치 패드(104)는 주변 기기의 로직(128)을 통해 시스템-온-칩(102)에 결합된다.
안테나(105)는 통신 로직(110)에 결합된다. 통신 로직(110)은 신뢰성 있는 이동 컴퓨팅 장치(100)로부터 I/O의 수신 및 전송을 제공한다. 예컨대, 통신 로 직(110)은 안테나(105)를 이용하여 신뢰성 있는 이동 컴퓨팅 장치(100)로부터 무선 통신을 수신 및 전송할 수도 있다. 안테나(105)는 그 중에서 패치, 모노폴, 다이폴, 빔, 어레이, 또는 양방향 안테나일 수도 있다. 후술하면, 안테나(105)는 애플리케이션 프로세서(106)가 암호화 동작을 위한 하나 또는 그 이상의 초기 명령어를 발생시키는 통신을 수신한다. 그런 초기 명령어는 실행을 위해 암호화 프로세서(126)로 전송된다. 추가로, 안테나(105)는 암호화 프로세서(126)에 의해 실행된 암호화 동작에 관련된 통신을 출력한다.
*몇몇 실시예들에서, 통신 로직(110)은 베이스밴드 프로세서(예컨대, 디지털 신호 처리기)를 포함하며, 그 베이스밴드 프로세서는 신뢰성 있는 이동 컴퓨팅 장치(100)를 위한 특별한 통신 규격을 설정한다. 통신 로직(110)은 무선 인터페이스이다. 예를 들면, 신뢰성 있는 이동 컴퓨팅 장치(100)가 셀룰러 폰이면, 통신 로직(110)은 신뢰성 있는 이동 컴퓨팅 장치(100)를 위해 셀룰러 망 인터페이스, 무선 인터페이스를 제공한다. 이 무선 인터페이스에 대하여, 베이스밴드 프로세서는 코드 분할 다중 접속(CDMA) 셀룰러 무선폰 통신 시스템을 설정하거나 또는 광대역 CDMA (W-CDMA) 무선폰 통신 시스템을 설정하는데, 이는 단지 몇 가지 예일 뿐이다. 특히, W-CDMA는 FPLMTS를 위한 IMT-2000에 대해 ITU로 제안된 것처럼, ETSI에 의해 제3 세대(3G)의 솔루션으로서 제안되었다. 베이스밴드 프로세서는 예컨대 이동 통신을 위한 글로벌 시스템(GSM), ETSI, 버전 5.0.0(1995년 12월); 또는 일반 패킷 무선 서비스(GPRS)(GSM 02.60, 버전 6.1), ETSI, 1997와 같은 다른 털레커뮤니케이 션 표준을 설정한다.
신뢰성 있는 부팅 롬(108)은 코드를 저장하며, 그 코드는 애플리케이션 프로세서(106)에서 수행되는 운영 체계에 제어를 전달하기 전에 애플리케이션 프로세서(106)에 의해 수행된다. 이하 좀더 설명하면, 그런 코드는 운영 체계의 무결성을 확실하게 하기 위하여 (암호화 프로세서(126)를 사용하여) 다수의 신뢰 동작들이 실행되도록 한다. 신뢰성 있는 부팅 동작에 대한 보다 상세한 설명은 현재 진행 중이고, "전자 장치 보안"이란 제하의, 2003년 12월 22일에 출원된 미국 특허 출원 번호 제 10/745,469호에서 기술된다. JTAG 인터페이스(155)는 신뢰성 있는 이동 컴퓨팅 장치(100)로 디버깅 인터페이스를 제공한다.
비휘발성 메모리(116)는 비휘발성 기록 가능 메모리의 다수의 다양한 타입 중 어느 것일 수 있으며, 그 일 예로는 FLASH 메모리 등이 있다. 휘발성 메모리(120)는 휘발성 기록 가능 메모리의 다수의 다양한 타입 중 어느 것일 수 있으며, 그 일 예로는 랜덤 액세스 메모리(RAM) (동기화된 동적 RAM(SDRAM), DRAM, DDR-SDRAM, 등) 등이 있다.
비휘발성 메모리 제어기(114)는 비휘발성 메모리(116)와 연결된다. 휘발성 메모리 제어기(118)는 휘발성 메모리(120)와 연결된다. 따라서, 버스(130)에 연결된 구성요소들은 비휘발성 메모리 제어기(114) 및 휘발성 메모리 제어기(118)를 통해 각각 비휘발성 메모리(116) 및 휘발성 메모리(120)와 통신한다. 암호화 프로세서(126) 및 주변 장치 로직(128)은 DMA 로직(124)을 통해 버스(130)에 연결된다. 버스(130)에 연결된 구성요소들은 DMA 로직(124)를 통해 암호화 프로세서(126) 및 주변장치 로직(128)과 통신한다.
암호화 프로세서(126)는 또한 사설 인터페이스를 통하여 비휘발성 메모리 제어기(114) 및 휘발성 메모리 제어기(116)에 의해 비휘발성 메모리(118) 및 휘발성 메모리(120)에 직접 연결된다. 도시한 바와 같이, 신뢰성 있는 컴퓨팅 장치(100)(애플리케이션 프로세서(106)와 같은)에서 다른 구성요소들은, 사설 인터페이스를 통해 비휘발성 메모리(116) 및 휘발성 메모리(120)에 접속하지 않는다. 부가적으로, 암호화 프로세서(126) 및 애플리케이션 프로세서(106)는 버스(130)(공중 인터페이스)를 통해 비휘발성 메모리(116) 및 휘발성 메모리(120)에 접속한다.
암호화 프로세서(126)는 적어도 두 가지 섹션(공중 섹션 및 사설 섹션)으로 휘발성 메모리(120)를 분할한다. 따라서, 암호화 프로세서(126)는 휘발성 메모리(120)의 사설 섹션 내의 단지 어드레스 공간에 액세스한다. 추가로, 신뢰성 있는 이동 컴퓨팅 장치(100)의 상이한 구성요소들은 휘발성 메모리(120)의 공중 섹션 안의 어드레스 공간에 액세스한다. 그런 구조는 사설 섹션이 보안/신뢰성 있는 사용을 위해 이용되도록 허여하고, 애플리케이션 프로세서(106)가 그 섹션에 접속하는 것을 막는다. 그러므로, 바이러스 및/또는 악성 코드가 애플리케이션 프로세서(106)에서 실행하고 있다면, 그런 코드는 휘발성 메모리(120)의 사설 섹션을 손상시킬 수 없다. 따라서, 암호화 프로세서(126)는 그 안에서 실행되는 동작들에 사용되는 암호화된 암호화 키 등의 보안 저장을 위해 이 사설 섹션을 사용한다.
하기에 더욱 후술하면, 암호화 프로세서(126)는 보호화된 저장부 및 다수의 다른 기능의 장치들을 포함한다. 암호화 프로세서(126)는 소프트웨어, 하드웨어, 구조 데이터 등의 인증을 제공하며, 이들은 신뢰성 있는 이동 컴퓨팅 장치(100)와 관련되거나 또는 내부에서 실행하는 것들이다. 예를 들면, 신뢰성 있는 이동 컴퓨팅 장치(100)의 초기화 부분으로서, 암호화 프로세서(126)는 애플리케이션의 코드에서 암호화된 해시를 실행하고, 서명된 자격증명과 이 해시를 비교하며, 이 서명된 자격증명은 신뢰성 있는 이동 컴퓨팅 장치(100)에 안전하게 저장된다. 부가적으로, 암호화된 프로세서(126)는 신뢰성 있는 이동 컴퓨팅 장치(100)가 작동하는 동안 상이한 암호화된 동작을 제공한다. 예를 들면, 암호화된 프로세서(126)는 암호화 키를 생성하고, 상이한 타입의 암호화 및 복호화를 실행하며, 해시, 디지털 서명 등을 생성한다.
애플리케이션 프로세서(106)는 제1 동작 환경에 있는 반면, 암호화 프로세서(126)는 제2 동작 환경에 있게 된다. 제1 동작 환경 및 제2 동작 환경은 서로 독립적이다. 이하에서 더욱 후술하면, 애플리케이션 프로세서(106)는 드라이버(암호화 프로세서(126)를 위해)를 구동하며, 이 드라이버는 애플리케이션 프로세서(106)에서 실행되는 애플리케이션 및 (DMA 로직(124)을 통한) 암호화 프로세서(126) 사이의 인터페이스를 제공한다. 이 드라이버는 애플리케이션 프로세서(106)를 제어하는 운영 체계로부터 상이한 보안 서비스(인증, 신뢰, 암호화, 복호화 등)의 요청을 수신한다. 그 드라이버는 보안 서비스 요청을 기반으로 하나 또는 그 이상의 초기 명령어들을 생성한다. 이 초기 명령어들은 실행을 위해 암호화 프로세서(126)에 발행된다. 게다가, 암호화 프로세서(126)는 (DMA 로직(124)을 통해 비휘발성 메모리(116) 및/또는 휘발성 메모리(120)로부터) 데이터를 검색하 며, 초기 명령어를 기반으로 실행이 수행된다. 암호화 프로세서(126)는 초기 명령어를 기반으로 검색된 데이터에서 암호화 동작을 수행한다.
신뢰성 있는 이동 컴퓨팅 장치(100)의 작동에 대하여 좀더 상세하게 도 4, 5, 6a, 및 6b의 순서도를 참조하여 이하에서 설명한다.
도 2는 본 발명의 일 실시예에 따라 신뢰성 있는 이동 컴퓨팅 장치 내부의 암호화 프로세서의 개략적인 기능 블록도를 도시한 것이다. 더욱 상세하게는, 도 2는 암호화 프로세서(126)의 일 실시예의 상세 블록도를 도시한 것이다.
암호화 프로세서(126)는 DMA 인터페이스(202), 명령어 시퀀스 버퍼(204), 제어기(206), 마이크로코드 메모리(240), 패치 플래그 메모리(281), 제어 레지스터 셋(208), 컨텍스트 스토리지/플랫폼 구조 레지스터(210), 상태 레지스터(212), 중간 저장부(214), 출력 버퍼(216), 입력 버퍼(218), 내부 휘발성 메모리(220), 산술 로직 유닛(ALU)(222), 데이터 암호화 표준 (DES) 유닛(224), 메시지 다이제스트(MD) 유닛(226), 랜덤 숫자 발생(RNG) 유닛(228), 보안 해시 알고리즘(SHA) 유닛(230), 개선된 암호화 표준(AES) 유닛(232), 및 지수적 산술 유닛(234)를 포함한다. 따라서, 암호화 프로세서(126)는 다수의 상이한 기능적 유닛(다수의 상이한 암호화 유닛를 포함한)(ALU(222), DES 유닛(224), MD 유닛(226), RNG 유닛(28), SHA 유닛(230), AES 유닛(232) 및 지수적 산술 유닛(234))을 포함한다.
마이크로코드 메모리(240)가 메모리의 상이한 타입이지만, 일 실시예에서, 마이크로코드 메모리(240)는 읽기 전용 메모리(ROM)이다. 내부적 휘발성 메모리(220)는 랜덤 액세스 메모리(RAM)와 같은 휘발성 기록 가능 메모리의 다수 상이 한 타입 중 하나이다 (예컨대, 동기의 동적 램(SDRAM), DRAM, DDR-SDRAM 등). 도시된 바와 같이, 내부 휘발성 메모리(220)는 키 캐시(221), 루트 암호화 키(241), 및 카운터(215)를 저장한다. 키 캐시(221)는 다수의 상이한 보호화된 키를 저장하며, 보호화된 키는 데이터 암호화 키 및/또는 키 암호화 키들(데이터 암호화 키를 암호화하는)이다. 키 캐시(221)의 일 실시예는 도 3과 관련하여 더욱 상세하게 후술한다.
패치 플래그 메모리(281)는 랜덤 엑세스 메모리(RAM)와 같은 휘발성 기록 가능한 메모리의 다수의 상이한 타입들 중 어느 하나이다(예컨대, 동기 동적 램(SDRAM), DRAM, DDR-SDRAM, 등). 후술하는 바와 같이, 패치 플래그 메모리(281)는 패치 플래그들을 저장하며 이 패치 플래그들은 마이크로코드 메모리(240) 내의 세그먼트에 대응한다. 주어진 패치 플래그는 마이크로코드 메모리(240)의 주어진 세그먼트가 패치되었는지 여부를 표시한다. 이 패치 플래그의 이용에 대하여 더욱 상세하게 후술한다.
DMA 인터페이스(202)는 암호화 프로세서(126)로부터 입출력되는 수신 및 전송 데이터에 연결된다. DMA 인터페이스(202)는 명령어 시퀀스 버퍼(204), 제어 레지스터 셋(208), 컨텍스트 스토리지/PCRs(210), 상태 저장부(212), 출력 버퍼(216), 및 입력 버퍼(218)를 포함한다.
명령어 시퀀스 버퍼(204)는 애플리케이션 프로세서(106)로부터 수신된 초기 명령어들을 저장한다. 제어기(206)는 명령어 시퀀스 버퍼(204)로부터 주어진 초기 명령어를 검색하고, 마이크로코드 메모리(240)로부터 관련된 마이크로코드 명령어 (들)을 검색한다. 이들 마이크로코드 명령어들은 암호화 프로세서(126) 내에서 실행되는 일련의 동작들을 포함한다. 예를 들면, 한 명령어는 제어기(206)가 휘발성 메모리(120)로부터 암호화된 데이터 암호화 키를 검색하도록 한다. 상이한 명령어는 제어기(206)가 복호화를 위한 기능적 유닛들 중 하나로 이 키를 전송하도록 한다. 또 다른 명령어는 복호화된 데이터 암호화 키가 암호화 동작을 수행하기 위하여 상이한 기능적 유닛으로 전송되도록 한다. 일련의 마이크로코드 명령어들로부터의 출력은 출력 버퍼(216)에 저장된다. 드라이버(암호화 프로세서(236)를 위한)가 이 출력을 검색한다. 이 동작들에 대하여 더욱 상세하게 후술한다.
SHA 유닛(230)은 암호화 해시들을 발생시키고 그 유효성을 확인하는데 이용된다. SHA 유닛(230)은 SHA-1 동작을 수행하고, SHA를 기반으로 한 HMAC 연산을 수행한다. 지수 산술 유닛(234)을 사용하여 상이한 다수의 산술 연산들의 가속하는데 이용된다 예를 들면, 지수 산술 유닛(234)을 사용하여 상이한 타입의 (리베스트, 슈만 및 아델만(RSA)와 같은) 암호화 표준에 대한 비대칭 암호화 및 복호화, 시그널링, 서명의 확인 등을 수행한다. 설명을 위하여, 지수 산술 유닛(234)은 모듈러 지수, 모듈러 나누기, 곱, 합, 차 등을 수행한다.
AES 유닛(232)은 다수의 상이한 타입의 암호화(대칭, 비대칭의)를 수행한다. AES 유닛(232)은 다양한 다수의 라운드들을 기반으로 암호화를 수행하며, 그것은 암호화 키 길이에 의존한다. 예를 들면, AES 유닛(232)은 128 비트, 192 비트, 및 256 비트의 키 길이를 지원하며, 이는 각각 10, 12, 14 라운드의 결과이다. AES 유닛(232)을 이용하여 상이한 키, 즉 키 암호화 키를 가진 데이터 암호화 키들을 암호화한다.
그런 동작은 휘발성 메모리(220)의 키 캐시(221)에서 데이터 암호화 키들을 안전하게 저장할 수 있도록 한다. 암호화 프로세서(126)는 암호화 키들의 계층을 가지도록 구성된다. 예를 들면, AES 유닛(232)은 키 암호화 키들을 가지고 데이터 암호화 키를 암호화한다. AES 유닛(232)은 루트 암호화 키(241)를 가지고 키 암호화 키들을 암호화한다. 암호화된 형태 속에서 데이터 암호화 키들 및 키 암호화 키들은 암호화 프로세서(126)와 무관한 (휘발성 메모리(116), 비휘발성 메모리(120)와 같은) 메모리에 저장된다. 안전성을 보장하기 위하여, 루트 암호화 키(241)는 암호화 프로세서(126)에 외부로 노출되지 않는다.
DES 유닛(224)은 다수의 상이한 타입의 암호화 및 복호화를 수행한다. 예를 들면, DES 유닛(224)은 64 비트 키를 기반으로 데이터의 64 비트 블록들을 암호화 및 복호화한다. MD 유닛(226)은 다수의 상이한 표준들을 기반으로 해시들(메시지 다이제스트들)을 생성한다. 예를 들면, MD 유닛(226)은 MD-5, MD-4 등을 기반으로 해시들을 생성한다. MD 유닛(226)은 임의 길이의 메시지 블록을 수신하고 128비트 다이제스트를 생성한다. MD 유닛(226)은 또한 키 입력된(Keyed) 해시 메시지 인증 코드(HMAC) 동작을 수행한다.
ALU(222)는 신뢰성 및 암호화 동작을 위하여 다수의 상이한 산술 및 논리 연산을 수행한다. 예를 들면, ALU(222)는 합, 차, 곱, 승, 비트 정렬, 시프트 동작, (AND, OR, XOR, 등과 같은) 상이한 논리 기능들 등을 수행한다.
RNG 유닛(228)은 상이한 타입의 임의의 수를 발생시킨다. RNG 유닛(228)은 임의의 비트 열을 발생시키기 위하여 선형 피드백 시프트 레지스터(LFSR)를 이용한다. 부가적으로 LFSRs의 출력은 추가적인 임의성을 위하여 SHA 유닛(230)을 통해 전달된다.
제어 레지스터 셋(208)은 암호화 프로세서(126)를 제어하는데 사용되는 데이터를 저장한다. 따라서, 암호화 프로세서(126)의 외적 구성요소들은 암호화 프로세서(126)의 제어 및 구성에 관련된 제어 레지스터 셋(208)에 데이터를 저장한다. 콘텍스트 스토리지/PCRs(210)는 신뢰성 있는 이동 컴퓨팅 장치(100)에 관련된 콘텍스트 및 구조 데이터를 저장한다. 예컨대, 그 콘텍스트 스토리지/PCRs(210)는 애플리케이션 프로세서(106)에서 실행되는 상이한 애플리케이션들의 인증에 관련된 신뢰성 동작으로부터 암호화 해시를 저장한다. 상태 레지스터(212)를 사용하여 암호화 프로세서(126) 내부에서 주어진 동작들과 관련된 상태, 상이한 기능 장치들의 상태 등을 저장한다. 중간 저장부(214)를 사용하여 중간 결과들을 저장하는데, 그 중간 결과는 상이한 기능 장치로 입력되기 위하여 하나의 기능 장치로부터 출력된다.
입력 버퍼(218)는 데이터를 저장하는데, 그 데이터로 인하여 주어진 동작이 수행된다. 예를 들면, 주어진 초기 명령어를 위하여 암호화 해시가 애플리케이션 코드 전체에 걸쳐 수행된다면, 그 코드는 입력 버퍼(218)에 저장된다.
도시된 바와 같이, 암호화 프로세서(126)는 다수의 기능 장치들(다수의 상이한 암호화 유닛들을 포함하는) 및 상이한 휘발성 저장부를 포함한다. 추가로 암호화 프로세서(126)는 다수의 상이한 동작들을 수행하는데, 여기에서 중간 결과물들 은 안전하다. 이하에서 보다 상세하게 설명하면, 제어기(206)는 상이한 기능 장치들의 동작 및 그 사이에서의 데이터 흐름을 제어한다.
후술하는 바와 같이, 암호화 프로세서(126)는 그 내부의 동작에 대한 원자성 및/또는 무결성을 제공함으로써 안전한 동작을 수행할 수 있다. 동작의 원자성(atomicity)은 내부에서의 동작 진행이 선취되지 않고, 완전하게 수행되는 것으로 규정된다. 동작의 무결성은 암호화 프로세서(126)가 중간 데이터 및 결과들의 불투명성에 대비하는 것으로 규정된다. 암호화 프로세서(126)는 더 높은 레벨의 보안 서비스를 위하여 신뢰성 있는 이동 컴퓨팅 장치(100)의 코어(core)로서 서비스한다. 그런 서비스들은 보안 저장, 보안 또는 암호화된 통신에 대한 신뢰성 있는 실행의 가속화, 임의의 수 발생 등을 포함한다.
암호화 프로세서(126)는 비 보호 모드 및 보호 모드 둘 다에서 동작한다. 비 보호 모드에서, 암호화 프로세서(126)는 암호화 및 복호화에 대하여 비 보안 하드웨어 가속기로써 동작한다. 예를 들면, 암호화 프로세서(126)는 애플리케이션 프로세서(106)에서 실행하고 있는 애플리케이션에 대하여 벌크 암호화 동작을 수행하도록 하는 요청을 수신한다. 보호 모드에서, 암호화 프로세서(126)는 다수의 상이한 보안 어토믹(atomic) 동작들을 수행한다. 이들 동작들에 대하여 더욱 상세하게 후술한다.
도 3은 본 발명의 일 실시예에 따른 신뢰성 있는 이동 컴퓨팅 장치 내부의 암호화 프로세서에서 키 캐시 안의 엔트리의 일 실시예를 도시한 것이다. 특히, 도 3은 휘발성 메모리(220)의 키 캐시(221)에서 엔트리의 일 실시예를 설명한다. 키 캐시(221)는 다수의 엔트리들 중 하나를 포함하며, 다수의 엔트리들은 보호화된 암호화 키(312) 및 헤더(300)를 포함한다. 헤더는 다수의 상이한 ID 뿐만 아니라 키의 사용에 대한 제약을 제공한다.
도시된 바와 같이, 헤더(300)는 ID (302), 보호 ID(304), 및 다수의 플래그들(306)을 포함한다. 다수의 플래그(306)는 유닛 타입(308) 및 사용 타입(310)을 포함한다. ID(302)는 문자 숫자식의 값이며, 이는 보호된 암호화 키(312)를 식별한다. 암호화 프로세서(126)에서 상이한 기능 장치들 및/또는 제어기(206)는 보호된 암호화 키(312)에 접속하기 위하여 ID(302)를 사용한다. 보호 ID(304)는 문자 숫자식의 값이며, 이는 보호된 암호화 키(312)를 암호화 하는데 이용되는 키 암호화 키를 식별한다. 보호된 암호화 키(312)가 데이터 암호화 키라면, 보호 ID(304)는 키 암호화 키들 중 하나를 위한 ID 이다. 보호된 암호화 키(312)가 키 암호화 키이면, 보호 ID(304)는 루트 암호화 키(241)이다.
유닛 타입(308)은 암호화 프로세서(126)에서 하나 또는 그 이상의 기능적 유닛을 규정하며, 암호화 프로세서(126)는 보호된 암호화 키(312)에 접속한다. 따라서, 초기 명령어가 유닛 타입(308)에 의해 확인되지 않는 주어진 보호된 암호화 키에 액세스하는 기능적 유닛을 가지려는 마이크로코드 명령어들의 발생을 야기한다면, 그 액세스는 부정되고 암호화 프로세서(126)는 그런 실행을 요청하는 애플리케이션으로 에러를 회송한다. 사용 타입(310)은 하나 또는 그 이상의 동작 타입을 확인하고 그 동작 타입은 보호된 암호화 키(312)를 사용하여 수행된다. 동작 타입은 신호, 암호화된 저장, 정지 확인 키(AIK) 동작들 등을 포함한다.
신뢰성 있는 암호화 동작들
신뢰성 있는 암호화 동작들에 대하여 더욱 상세하게 설명한다. 도 4는 본 발명의 일 실시예에 따른 암호화 프로세서를 가지고 인터페이스 하기 위한 동작들의 순서도를 설명한다. 더욱 상세하게는, 도 4는 (암호화 프로세서(126)를 위한) 암호화 프로세서(126)를 갖는 인터페이스를 위해 애플리케이션 프로세서(106)에서 실행하는 드라이버의 동작들을 위한 순서도 400을 설명한다.
블록 402에서, 신뢰성 또는 암호화 동작을 위한 보안 서비스 요청이 수신된다. 도 1의 실시예와 관련하여, 애플리케이션 프로세서(106)에서 실행하는 드라이버는 신뢰성 또는 암호화 동작을 위한 보안 서비스 요청을 수신한다. 예를 들면, 이 드라이버는 애플리케이션 프로세서(106)에서 실행하는 운영 체계 또는 다른 애플리케이션으로부터 보안 서비스 요청을 수신한다. 보안 서비스 요청은 애플리케이션, 하드웨어, 구조 정보 등을 인증하기 위한 신뢰성 동작이다. 이 보안 서비스 요청은 해싱, 키 생성, 암호화, 복호화와 같은 암호화 동작을 위한 것이다. 블록 404에서 제어가 계속된다.
블록 404에서, 적어도 하나의 초기 명령어가 보안 서비스 요청에 기반하여 생성된다. 도 1의 실시예와 관련하여, 암호화 프로세서(126)를 위한 드라이버는 보안 서비스 요청을 기반으로 적어도 하나의 초기 명령어를 생성한다. 예를 들면, 보안 서비스 요청은 다수의 상이한 암호화 동작들 중 하나를 포함한다. 따라서, 드라이버는 다른 동작들을 위한 초기 명령어들을 생성한다. 제어는 블록 406에서 계속된다.
블록 406에서, 초기 명령어(들)은 암호화 프로세서로 전송된다. 도 1의 실시예와 관련하여, 암호화 프로세서(126)를 위한 드라이버는 암호화 프로세서(126)로 초기화 명령어(들)을 전송한다. 드라이버는 DMA 로직(124)을 통해 이 전송을 생성한다. 제어는 블록 408에서 계속된다.
블록 408에서, 초기 명령어(들)의 결과가 암호화 프로세서로부터 수신된다. 도 1의 실시예를 참조하면, 암호화 프로세서(126)는 (DMA 인터페이스(202)를 이용하여) 출력 버퍼(216)를 통해 암호화 프로세서(126)를 위한 드라이버로 초기 명령어(들)의 결과를 회송한다. 예를 들면, 초기 명령어가 주어진 애플리케이션의 인증을 위한 신뢰성 동작과 관련된다면, 그 결과는 애플리케이션이 인증되었는지 여부를 나타내는 불린(Boolean) 값이다. 다른 예에서, 초기 명령어가 복호화 동작을 위한 결과라면, 그 결과는 복호화 동작이 성공하였는지 및 그런 복호화의 결과가 저장된 곳 또는 그 복호화의 결과를 표시하는 불린 값이다. 다른 예에서, 초기 명령어가 임의의 수를 위한 요청이라면, 그 결과는 임의의 수를 포함한다. 순서도 400의 동작들이 완료된다.
암호화 프로세서(126)에 의한 초기 명령어의 처리 과정에 대하여 보다 상세하게 설명한다. 도 5는 본 발명의 일 실시예에 따른 암호화 프로세서의 초기화를 위한 설명하기 위한 순서도이다. 특히, 실시예에서, 순서도 500은 암호화 프로세서(126)에서 동작들의 실행 전에 수행되는 동작들을 설명한다. 순서도 500의 동작들의 성공적인 실행 후에, 암호화 프로세서(126)는 신뢰 상태에 있게 된다.
블록 502에서, RNG 유닛(228)이 적절한 임의의 수를 생성하는 지를 보장하는 확인이 실행된다. 도 2의 실시예와 관련하여, 제어기(206)가 이 확인을 실행한다. 그런 확인은 임의의 수들을 위한 RNG 유닛(228)으로 일련의 요청들을 포함한다. 제어기는 거기로부터 출력된 다른 임의의 수들이 상이하고 사용하는데 임의의 수치라는 것을 확인한다. 예컨대, 임의성을 위한 FIPS(140)로부터 특화된 테스트가 있다. 제어는 블록 504에서 계속된다.
블록 504에서, 카운터가 적절한 상태에 있는지를 보장하는 확인을 실행한다. 카운터는 단조로운 카운터이며, 이것은 단지 하나의 방향으로 카운트하는 소프트웨어 또는 하드웨어이다. 카운터는 메시지가 재생되었거나 한번 이상 사용되었다는 것을 보장하기 위한 인증 프로토콜 및 처리에 사용된다. 도 2의 실시예를 참조하여, 제어기(206)는 카운터(215)의 확인을 실행한다. 카운터(215)의 값은 비휘발성 메모리(116)에 암호화된 상태 파일에 저장된다. 그러므로, 그런 확인은 비휘발성 메모리(116) 및 산술 점검으로부터 암호화된 상태 파일을 독출하는 것을 포함하며, 이 비휘발성 메모리(116)는 이 카운터(215)의 값이 감소하지 않았는지를 확인하며, 산술 점검은 이 카운터(215)의 값이 상위 범위에 있는지를 확인한다. 블록 506에서 제어가 계속된다.
블록 506에서, 기능적 유닛들이 적절한 결과를 생성하는지를 보장하는 확인을 실행한다. 도 2의 실시예와 관련하여, 제어기(206)는 이 확인을 실행한다. 이 확인은 상이한 기능적 유닛에서 상이한 동작들의 실행 및 그런 동작들의 출력 확인을 포함한다. 예를 들면, 제어기(206)는 DES 유닛(224)이 상이한 데이터에서 일련의 암호화를 실행하도록 지시한다. 제어기(206)는 EDS 유닛(224)이 이들 데이터를 복호화하도록 지시한다. 제어기(206)는 ALU(222)가 이들 동작 전의 데이터와 그 동작들에 수반되는 데이터를 비교하도록 지시한다. 기능적 유닛을 확인하는 다른 타입들이 실행된다. 예컨대, 기능적 유닛은 표준 테스트 입력을 수신하고, 거기로부터의 출력은 주어진 표준으로부터 공공연하게 공개된 수치들과 비교된다. 여기서 주어진 표준의 일 예로는 표준 및 기술의 국가 협회(NIST)에 의해 발행되는 연방 정보 처리 표준(FIPS)가 있다. 제어는 블록 508에서 계속된다.
블록 508에서, 휘발성 메모리의 확인을 수행한다. 도 2의 실시예와 관련하여, 제어기(206)는 휘발성 메모리(120) 및/또는 휘발성 메모리(220)를 확인한다. 그런 확인은 휘발성 메모리가 그 안에 저장된 데이터를 포함하지 않는지를 결정하는 것을 포함한다. 다른 확인은 데이터가 그 안에 적절하게 저장되었는지를 확인하기 위하여 그 안의 비트들을 전환하는 것을 포함한다. 순서도 500의 동작들이 완료된다.
도 6a는 본 발명의 일 실시예에 따라 암호화 프로세서 내에서 보안 동작들에 대한 순서도를 도시한 것이다.
순서도 600의 블록 602에서, 초기 명령어 및/또는 관련된 데이터를 수신한다. 도 1의 실시예와 관련하여, 암호화 프로세서(126)는 (애플리케이션 프로세서(106)에서 실행되는) 암호화 프로세서(126)를 위한 드라이버로부터 초기 명령어를 수신한다. 상술한 바와 같이, 그런 초기 명령어는 신뢰 동작, 암호화 동작 등과 같은 보안 동작들의 상이한 타입들을 위한 것이다. 도 2의 실시예와 관련하여, 암호화 프로세서(126)는 DMA 인터페이스(202)를 통해 초기 명령어를 수신하고 명령 어 시퀀스 버퍼(204)에 그런 명령어를 저장한다.
부가적으로, 암호화 프로세서(126)는 다수의 그런 명령어들을 얻기 위하여 초기 명령어에 적합한 관련된 데이터를 수신한다. 도 2의 실시예와 관련하여, 암호화 프로세서(126)는 입력 버퍼들(218)로 DMA 인터페이스(202)를 통해 관련된 데이터를 수신한다. 예를 들면, 애플리케이션 프로세서(106)에서 실행된 애플리케이션 (예컨대, 애플리케이션 프로세서(106)를 위한 운영 체계)을 인증하기 위한 신뢰 동작에 초기 명령어들이 관련된다면, 그 관련된 데이터는 비 휘발성 메모리(116)로부터 검색된 애플리케이션에 적합한 코드이다.
더 설명하자면, 암호화 프로세서(126)를 이용하여 데이터를 암호화하는데, 그 데이터는 극비이거나 또는 수정으로부터 보호될 필요성이 있다. 따라서, 그런 동작들은 신뢰성 있는 이동 컴퓨팅 장치(100)에 의해 이용되며, 신뢰성 있는 이동 컴퓨팅 장치(100)는 다른 애플리케이션 또는 신뢰성 있는 이동 컴퓨팅 장치(100)의 사용에 의해 수정되거나 보이는 것으로부터 파일들을 보호한다. 게다가, 암호화 프로세서(126)는 신뢰성 있는 이동 컴퓨팅 장치(100)에서 사용되며, 신뢰성 있는 이동 컴퓨팅 장치(100)는 콘텐츠 및 디지털 권리(허가) 대상을 보호하기 위한 디지털 권리 이동의 일부이다. 그러므로, 암호화 프로세서(126)는 MPEG 오디오 계층 3(MP3) 파일을 복호화하며, 디지털 권리 이동에 따라서 디지털화하여 보호된다.
그런 데이터의 다른 일 예로는 벌크 복호화 동작을 위한 데이터를 포함하며, 여기에서 그 데이터는 (상이한 이동 장치, 서버 등과 같은) 무선 장치로부터 신뢰성 있는 이동 컴퓨팅 장치(100)로 수신된다. 그 관련된 데이터는 공중 키에 따라 복호화된 데이터를 포함하며, 공중 키를 사용하여 복호화 동작을 실행한다.
암호화 프로세서(126)는 비휘발성화 메모리(116) 및/또는 휘발성화 메모리(120)의 공중 인터페이스를 통해 초기 명령어에 적합한 관련 데이터를 수신한다. 순서도 600으로 돌아가서, 블록 604에서 제어가 계속된다.
블록 604에서, 초기 명령어에 대한 마이크로코드 명령어(들)이 검색된다. 도 2의 일 실시예에 관련하여, 제어기(206)는 마이크로코드 메모리(240)로부터 초기 명령어에 대한 마이크로코드 명령어(들)을 검색한다. 주어진 초기 명령어는 상이한 마이크로코드 명령어들에 이르도록 하나를 포함한다. 예를 들면, 초기 명령어가 애플리케이션의 서명된 자격 증명 및 암호화 해시의 비교에 기반하여 어플린케이션을 인증한다면, 마이크로코드 명령어는 비휘발성 메모리(116)로부터 서명된 자격 증명을 검색하기 위한 명령어를 포함한다. 다른 마이크로코드 명령어는 비휘발성 메모리(116)로부터 암호화 키의 검색을 포함하며, 비휘발성 메모리(116)는 암호화 해시를 위해 사용된다. 또 다른 마이크로코드 명령어는 SHA 장치(230)에 암호화 키의 이동 동작을 포함하며, 그 반면에 상이한 마이크로코드 명령어는 암호화 해시를 수행하기 위해 SHA 장치(230)에 명령한다. 다른 마이크로코드 명령어는 암호화 해시의 결과에 대한 이동 동작 및 ALU(22)로 서명된 자격 증명을 포함하며, 그 반면에, 상이한 마이크로코드 명령어는 ALU(222)에서 이들 두 값들을 비교하도록 명령한다. 또 다른 마이크로코드 명령어는 비교 동작들의 결과가 출력 버퍼들(216)에 저장 되도록 한다(출력 버퍼는 애플리케이션 프로세서(106)로 회송한다).
설명한 바와 같이, 주어진 초기 명령어는 일련의 마이크로코드 명령어들을 포함한다. 따라서, 주어진 초기 명령어에 대한 중간 결과들은 암호화 프로세서(126)의 외부장치인 구성요소들에게 불투명하다. 순서도 600으로 돌아와서, 블록 606에서 제어가 계속된다.
블록 606은 초기 명령어를 위한 마이크로코드 명령어(들)를 기반으로 암호화 프로세서 내부에서 민감한 동작(들)인지 여부를 결정한다. 도 2의 실시예에 관련하여, 제어기(206)에서 이것을 결정한다. 민감한 동작(들)의 일 예는 루트 암호화 키(241)를 사용하는 동작, (키 해시(221)에서) 보호화된 키들의 중 어느 것을 사용하는 동작 및/또는 카운터(215) 또는 플랫폼 구조 레지스터들(210) 중 어느 것에 접속하는 동작을 포함한다. 초기 명령어를 위한 마이크로코드 명령어(들)에 기반한 암호화 프로세서(126) 내에서 민감한 동작(들)이 수행되지 않는다고 결정한 후에, 블록 610에서 제어가 계속되며, 이하에서 더욱 상세하게 설명한다.
블록 608에서, 초기 명령어를 위한 마이크로코드 명령어(들)에 기반한 암호화 프로세서(126) 내에서 민감한 동작(들)이 수행된다고 결정한 후에, 암호화 프로세서가 신뢰 상태에 있는지 여부를 결정한다. 도 2의 실시예에 관련하여, 제어기(206)가 이것을 결정한다. 일 실시예에서, (도 4의 순서도 400에 관련하여 상술한 바와 같이) 암호화 프로세서(126)가 적절하게 초기화되지 않은 경우 신뢰 상태에 있을 수 없다. 암호화 프로세서(126)는 불법 동작이 수행되면 신뢰 상태에 있을 수 없다. 불법 동작의 일 예로는 (여기에서 데이터 이동의 제한에 관하여 설명한바 대로) 데이터가 한 위치로부터 제2 위치로 부적절하게 이동되려고 시도할 때 이다. 암호화 프로세서(126)는 인증이 실패하거나, 키가 암호화 장치로 적절하게 로딩되지 않았거나, 초기 명령어(502)에 관련된 파라미터들이 적절한 범위 내에 있지 않을 때, 신뢰 상태에 있는 것이 아니다. 인증은 키들을 로딩하는 동안 사용되고, 인증은 패스워드 및 두 임의의 숫자들을 사용하는 HMAC-SHA 연산, 암호화 프로세서(126)에 의해 발생된 임의의 것, 및 애플리케이션 또는 유저에 의해 생성된 것으로 구성된다. HMAC 연산은 또한 초기 명령어(502)로부터의 값들 또는 로드된 키의 중재들을 포함한다.
일 실시예에서, 애플리케이션은 키를 위한 패스워드를 사용하여 HMAC를 연산한다. 이 애플리케이션은 실행을 위한 암호화 프로세서(126)의 기능 장치들 중 하나로 암호화 키를 로드하기를 바란다. 애플리케이션은 패스워드의 이전 정보를 가지고 있다. 예컨대, 키가 생성되면 애플리케이션은 패스워드를 설정한다. 애플리케이션이 초기 명령어(502)를 위한 파라미터로서 HMAC 연산의 예측 결과를 제공한다. 암호화 프로세서(126)는 또한 HMAC 연산을 발생시키고 초기 명령어(502)에 예측 결과 파라미터에 그 결과를 비교한다. 만일 두 결과가 매칭되면, 인증이 성공하고, 키가 로드된다. 만일 두 결과가 매칭되지 않는다면 인증이 실패한 것이며 키는 로드되지 않는다.
블록 609에서 초기 명령어가 중단된다. 도 2의 실시예에 관련하여, 제어기(206)는 이 초기 명령어를 중단한다 제어기(206)는 추가적인 마이크로코드 명령어들을 차단하고 애플리케이션 프로세서(106)에서 실행되는 드라이버로 실패 통보를 전송한다. 순서도 600의 동작들이 종료된다.
블록 610에서, 암호화 프로세서(126)가 신뢰 상태에 있다고 판단한 후에, 초기 명령어와 관련된 동작이 수행된다. 도 2의 실시예에 관련하여, 제어기(206)는 마이크로코드 동작들에 기초한 상이한 동작들의 실행에 대한 순서를 제어한다. 그러므로, 제어기(206)는 적절한 기능 장치로 실행을 위한 제어 명령어를 전송하며, 그 적절한 기능 장치는 암호화 프로세서(126), 비휘발성 메모리 제어기(114), 또는 휘발성 메모리 제어기(118) 내부에 존재한다. 암호화 프로세서(126), 비휘발성 메모리 제어기(114), 또는 휘발성 메모리 제어기(118) 내부에 존재하는 적절한 기능 장치는 그 동작을 수행한다. 초기 명령어를 실행하는 동안 비휘발성 메모리(116) 및 휘발성 메모리(120)로 접속하는 것에 관해서, 암호화 프로세서(126)는 비휘발성 메모리(116) 및 휘발성 메모리(120)를 위한 사설 인터페이스를 통해 그런 접속을 수행한다. 예를 들면, 휘발성 메모리(120)에 저장된 암호화된 데이터 암호화 키가 초기 명령어를 위한 암호화 동작에 사용된다고 가정하자. 제어기(206)는 휘발성 메모리(126)에 적합한 사설 인터페이스를 통해 암호화된 데이터 암화화 키를 검색한다. 추가로, 초기 명령어에 관련된 동작들의 다른 예로는 (상술한) 블록 604를 위한 상세한 설명에서 기술된다.
제어기(206)는 상이한 기능 장치들 사이에서 데이터를 이동한다. 그러나, 암호화 프로세서(126)는 하나 또는 그 이상의 데이터 이동 제한을 갖도록 설정된다. 그런 제한들은 로그 프로세스가 암호화 프로세서(126)로부터 민감한 정보들을 부정하게 독출할 수 없도록 보장한다. 그런 제한들은 마이크로코드 메모리(240)에 저장된다. 예를 들면, 하나의 데이터 제한은 키 저장부(220)에 저장된 데이터가 출력 버퍼(216)에 기록되지 않도록 한다. 그런 제한은 암호화 키가 비암호화 포맷으로 암호화 프로세서(126)로부터 독출되는 것을 방지한다.
제한의 다른 예는 입력 버퍼(218)에 저장된 데이터가 콘텍스트 스토리지/PCRs(210)에 기록되는 것을 방지한다. 그런 제한은 암호화 프로세서(126)에 적합한 플랫폼 구조의 덮어쓰기를 방지한다. 제한의 다른 예는 입력 버퍼(218)에 저장된 데이터가 키 캐시(221)에 기록되는 것을 방지한다. 그런 제한은 그곳에 저장된 암호화 키들의 덮어쓰기를 방지한다. 순서도 600으로 되돌아와서, 블록 612에서 제어가 계속된다.
블록 612에서, 추가적인 마이크로코드 동작들이 수행되었는지 여부를 결정한다. 도 2의 실시예에 관련하여, 제어기(206)가 이것을 결정한다. 상술한 바와 같이, 제어기(206)는 마이크로코드 메모리(240)로부터 주어진 초기 명령어에 적합한 다수의 마이크로코드 명령어들 중 하나를 검색한다. 그러므로, 제어기(206)는 상이한 명령어들이 실행되어 왔는지 여부를 결정한다. 추가적인 마이크로코드 명령어들이 주어진 초기 명령어로 실행되기로 결정한 후에, 블록 606에서 제어가 계속되며, 여기서 상이한 마이크로코드 명령어가 실행된다. 추가적인 마이크로코드 명령어들이 주어진 초기 명령어로 실행되지 않기로 결정한 후에, 마이크로코드는 신뢰 상태에서 암호화 프로세서(126)를 보장하기 위하여 정리(clean-up) 동작들을 실행한다. 정리 동작들은 동작 도중 사용되었던 비밀 장치들로부터 키들을 제거하는 것, 영 또는 하나를 갖는 중간 저장부(214)에서 중간 결과들을 덮어쓰기 하거나, 동작이 완료되었거나 또는 키들이 더 이상 유효하지 않다는 등의 표시를 하기 위해 비밀 프로세서에 상태 플래그들을 재설정하는 것들을 포함한다. 정리 동작이 완료된 후에, 순서도 600의 동작들이 완료된다.
순서도 300 및 600의 동작들은 다수의 상이한 신뢰 동작 및 암호화 동작들을 위하여 사용된다. 일 예로, 비휘발성 메모리(116)에 접속하여 기록하는 것을 포함한다. 비휘발성 메모리(116)는 다수의 상이한 블록들로 분류된다. 예를 들면, 비휘발성 메모리(116)의 크기가 8 메가 바이트인 경우, 비휘발성 메모리(116)는 1 메가 바이트 블록들 8개를 포함한다. 다수의 상이한 블록들은 비휘발성 메모리에 접속하여 기록하는 것을 제어하기 위한 관련된 인에이블을 포함한다. 암호화 프로세서(126)은 주어진 블록들에 대하여 인에블하다는 주장을 허여하며, 거기에 저장된 그 데이터는 인증된 것이다. 따라서, 암호화 프로세서(126)를 위한 드라이버는 비휘발성 메모리(116)에 주어진 블록에 접속하여 기록하기 위한 보안 서비스 요청을 수신한다. 그러면, 드라이버는 초기 명령어를 발생시키며, 그 초기 명령어는 블록에 저장된 데이터의 인증을 요청한다. 서명된 자격 증명 및 데이터에 따른 초기 명령어는 암호화 프로세서(116)로 전송된다. 암호화 프로세서(126)는 데이터에 걸친 암호화 해시를 발생시기 위하여 다수의 상이한 마이크로코드를 실행시키며, 그 데이터는 서명된 자격 증명과 비교된다. 암호화 프로세서(126)는 비교를 기반으로 데이터를 인증한다. 그러한 예는 주어진 애플리케이션에 새로운 패치를 인증하기 위해 사용되며, 그 주어진 애플리케이션은 신뢰성 있는 이동 컴퓨팅 장치(100)로 다운로드 된다.
따라서, 설명한 바와 같이 본 발명의 일 실시예는 동일한 프로세서 안에서 신뢰성 있는 동작들 및 암호화된 동작들을 모두 수행하되, 그 프로세서는 실행가능한 컨텍스트 내에 존재하며, 실행 가능한 컨텍스트는 신뢰성 있는 이동 컴퓨팅 장치 내부의 애플리케이션 프로세서를 위한 실행가능한 컨텍스트와는 독립적이다. 그러므로, 이 암호화 프로세서를 사용하여 신뢰 동작(애플리케이션 프로세서에 대한 운영 체계를 인증하기 위한 신뢰성 있는 부팅 동작들과 같이)들을 실행하며, 그 반면에 신뢰 동작들은 신뢰성 있는 부팅 동작들로 상이한 타입들의 암호화 동작들 순열을 실행하려는 동일한 기능 유닛들을 사용하면서 실행된다.
게다가, 상술한 바와 같이, 암호화 프로세서(126)는 신뢰성 관련 암호화 키가 비암호화된 외부로 노출되지 않았다는 것을 보장한다. 암호화 프로세서(126)는 암호와 동작들의 중간, 부분 결과가 외부로 노출되지 않았다는 것도 보장한다. 추가로, 암호화 프로세서(126)는 초기에 암호화 동작이 외부의 구성요소들로부터 수정되거나 조절되지 않았음을 보장한다.
암호화 키의 사용을 포함하는 암호화 동작의 실행에 대하여 보다 상세하게 설명한다. 특히, 도 6b는 본 발명의 일 실시예에 따라 암호화 프로세서 내에 암호화 키를 사용하여 암호화 동작을 실행하는 순서도를 도시한 것이다. 순서도 650은 암호화 프로세서(126)에서 동작 실행에 사용되기 전에, 암호화 키를 위한 유효 및 암호화 동작들을 설명한다.
블록 652에서, 초기 명령어가 암호화 프로세서에서 동작을 수행하도록 수신된다. 그 암호화 프로세서는 암호화 키의 사용을 포함한다. 도 2의 실시예에 관련하여, 제어기(206)는 이 초기화 명령어를 수신한다. 암호화 키는 암호화 프로세 서(126)의 외부에서 생성된다. 그런 암호화 키는 초기 명령어를 수신하기 전에 암호화 프로세서(126) 내에서 메모리에 이미 로드된다. 다른 대안으로, 암호화 키는 초기 명령어와 함께 암호화 프로세서(126)로 로드된다. 암호화 키는 암호화 프로세서(126)에서 기능 유닛들에 의해 내부적으로 생성된다. 암호화 키는 보호 암호화 키에 의해 암호화된다. 게다가, 암호화 키에 대한 유닛 타입 및/또는 사용 타입(이는 도 3에 관련하여 위에서 상세하세 설명됨)은 암호화 키와 관련된다. 블록 654에서 제어가 계속된다.
블록 654에서, 암호화 키에 대한 유닛 타입 및/또는 사용 타입이 인증되었는지 여부를 결정한다. 도 2의 실시예에 관련하여, 제어기(206)는 이것을 결정한다. 설명을 돕기 위하여 도 3으로 되돌아가서, 제어기(206)는 암호화 키를 위한 헤더(300)를 검색한다. 제어기(206)는 암호화 키를 사용하는 기능적 유닛이 유닛 타입들(308) 중 하나로 리스트에 있는 여부를 결정한다. 게다가, 제어기(206)는 암호화 키를 사용하여 실행된 동작이 사용 타입들(310) 중 하나로서 리스트화 되었는지를 결정한다. 암호화 키를 위한 유닛 타입 및/또는 사용 타입이 인증되지 않았음을 결정한 후에, 블록 664에서 제어가 계속되며 이에 대하여 보다 상세하게 후술한다.
블록 656에서, 암호화 키를 위한 유닛 타입 및/또는 사용 타입이 인증되었다고 결정된 후에, 챌린지(challenge)가 생성된다. 도 2의 실시예에 관련하여, 제어기(206)는 챌린지의 발생을 야기한다. 암호화 프로세서(126)에 로드된 암호화 키는 관련된 패스워드를 포함한다. 관련된 패스워드는 암호화 프로세서(126) 내부에 서 알려지고, 초기 명령어를 발행한 애플리케이션에 의해 알려진다. 제어기(206)는 챌린지를 생성하며, 애플리케이션 프로세서(106)에서 실행하는 애플리케이션으로 되돌아가 출력된다. 챌린지는 관련된 패스워드의 해시를 위한 애플리케이션으로부터 응답을 요청한다. 일 실시예에서, 패스워드의 해시가 다수의 상이한 타입들이 존재하는 반면, 해시는 HMAC 동작을 기반으로 한다. 블록 658에서 제어가 계속된다.
블록 658에서 챌린지의 응답이 수신된다. 도 1의 실시예에 관련하여, 애플리케이션 프로세서(106)에서 실행하는 애플리케이션은 암호화 프로세서(126)로 응답을 회송하며, 이 애플리케이션은 초기 명령어의 실행을 요청한다. 제어기(206)는 챌린지로 응답을 수신한다. 블록 660에서 제어가 계속된다.
블록 660에서, 응답이 정확한지 여부를 결정한다. 도 2의 실시예에 관련하여, 제어기(206)는 패스워드의 해시를 발생시키도록 SHA 유닛(230)에 지시한다. 예를 들면, SHA 유닛(230)은 HMAC 동작에 기반을 둔 해시를 발생한다. 제어기(206)는 ALU(222)로 애플리케이션으로부터 수신된 해시 및 SHA 유닛(230)에 의해 생성된 해시를 비교하도록 지시한다. 해시들이 동일한 경우, 그 응답은 정확한 것으로 고려된다. 그 응답이 정확하지 않은 것으로 판단된 경우, 블록 6640에서 제어가 계속되며 이하에서 보다 상세히 설명한다.
블록 662에서, 응답이 정확한 것으로 판단된 후에, 암호화 키가 실행을 위해 설계된 기능 유닛으로 로드된다. 도 2의 실시예에 관련하여, 제어기(206)는 암호화 키가 실행을 위해 설계된 기능 유닛으로 로드되도록 한다. 이 기능 유닛은 (순 서도 600에서 상술한 바와 같이) 명령어를 실행시킨다. 순서도 650의 동작들이 완료된다.
블록 664에서, 초기 명령어가 중단된다. 도 2의 실시예에 관련하여, 제어기(206)는 이 초기 명령어를 중단한다. 제어기(206)는 추가적인 마이크로코드 명령어를 종결하고 애플리케이션 프로세서(106)에서 실행되는 드라이버로 실패 통보를 전송한다. 그러면 순서도 650의 동작들이 완료된다.
순서도 650은 암호화 프로세서(126)에서 암호화 키의 사용에 대한 인증을 위한 챌린지/응답의 일 예를 설명한다. 특히, 순서도 650은 암호화 키와 관련된 패스워드의 해시를 사용하는 챌린지/응답을 설명한다. 본 발명의 일 실시예는 인증을 위한 챌린지/응답 동작들의 다른 타입들을 사용할 수 있다.
마이크로코드 메모리(240)에 저장된 마이크로코드 동작들은 패치되거나 업데이트된다. 그러나, 마이크로코드 메모리(240)가 읽기 전용 메모리인 경우, 패치는 휘발성 메모리(220)에 저장되어서, 패치 내부의 명령어들은 마이크로코드 메모리(240)에서 이들의 장소에 사용된다. 암호화 프로세서(126)를 위해 안전성 및 신뢰성을 유지하기 위하여, 그런 패치들/업데이트들이 인스톨 전에 인증되어야 한다. 이들 마이크로코드 명령어들로 업데이트하기 위한 일 실시예가 설명된다. 특히, 도 7은 본 발명의 일 실시예에 따라 암호화 프로세서 내부에서 마이크로코드의 업 데이트를 설명하기 위한 순서도이다.
블록 702에서, 신뢰성 있는 부팅 동작들은 암호화 프로세서를 위해 초기화된다. 도 1의 실시예에 관련하여, 암호화 프로세서(126)는 신뢰성 있는 부트 롬(108)에 저장된 명령어들을 기반으로 부트된다. 신뢰성 있는 부팅 동작들의 일부로써, 마이크로코드 메모리(240) 안에 있는 명령어들은 패치된다 (이하, 순서도 700에서 보다 상세하게 설명된다). 신뢰성 있는 부팅 동작들에 대한 보다 상세한 설명은 2003년 12월 22일에 출원되어 현재 진행중인 미국 특허 출원, 발명의 명칭은 전자 장치의 보안이고, 출원 번호는 제10/745,469호에 제시된다. 블록 704에서 제어가 계속된다.
블록 704에서, (신뢰성 있는 부팅 동작들의 일부로서) 마이크로코드를 위한 패치가 존재하는지를 결정한다. 도 2의 실시예에 관련하여, 비휘발성 메모리(116)은 마이크로코드 명령어들을 위한 패치들의 저장에 적합한 지정된 세그먼트를 포함한다. 따라서, 제어기(206)는 지정된 세그먼트에 데이터가 패치를 포함하는지 여부를 기반으로 마이크로코드를 위한 패치 여부를 결정한다. 패치가 존재하지 않는 것으로 결정된 후에, 순서도 700의 동작들이 완료된다.
블록 706에서, 패치가 존재하는 것으로 결정된 후에, 패치를 위한 암호화 키 및 서명과 마찬가지로 패치도 로드된다. 도 2의 실시예에 관련하여, 제어기(206)는 패치, 암호화 키, 및 패치를 위한 서명을 휘발성 메모리(120)로 로드한다. 블록 708에서 제어가 계속된다.
블록 708에서, 패치에 대한 암호화 키가 유효한지를 결정한다. 도 2의 실시예에 관련하여, 비휘발성 메모리(116)는 세그먼트를 포함하며, 이 세그먼트는 프로그램 가능한 일회용으로 규정된다. 특히, 이 세그먼트는 싱글 타임에 기록되어 로그 또는 악성 프로세스가 이 세그먼트에 저장된 데이터를 수정하는 것을 방지한다. 이 세그먼트는 패치를 위한 암호화 키의 해시를 포함한다. 그러므로 제어기(206)는 각각 비휘발성 메모리(116) 및 휘발성 메모리(120)로부터 암호화 키 및 해시를 검색한다. 제어기(206)는 SHA 유닛(230)으로 암호화 키의 해시를 발생하도록 지시한다. 제어기(206)는 ALU(222)로 이 해시 결과 및 비휘발성 메모리(116)로부터 검색된 해시를 비교하도록 하여 이들 두 값이 동일한지를 판단한다. 이들 두 값이 동일한 경우, 패치를 위한 암호화 키는 유효하다.
블록 710에서, 패치를 위한 암호화 키가 유효하지 않다고 판단한 후에, 패치, 암호화 키, 및 패치를 위한 서명은 삭제된다. 도 2의 실시예에 관련하여, 제어기(206)는 휘발성 메모리(120)로부터 패치, 암호화 키, 및 패치를 위한 서명을 삭제한다. 따라서, 패치 내에 있는 명령어들은 암호화 프로세서(126)에 의해 로드되거나 또는 실행되지 않는다. 그러면, 순서도 700의 동작들은 완료된다.
블록 712에서, 패치를 위한 암호화 키가 유효하다고 결정한 후에, 패치를 위한 서명이 유효한지 여부를 결정한다. 도 2의 실시예에 관련하여, 제어기(206)는 패치를 SHA 유닛(230)으로 로드한다. 제어기(206)는 SHA 유닛(230)으로 패치의 다이제스트를 생성하도록 지시한다. 제어기(206)는 디지털 서명을 로드하며, 디지털 서명은 암호화 키에 따라 지수 산술 유닛(234)으로 패치를 수반한다. 제어기(206)는 지수 산술 유닛(234)으로 서명을 복호화할 것을 지시한다. 제어기(206)는 지수 산술 유닛(234)의 출력을 조사하여 서명이 적절하게 복호화되었는지를 결정한다. 서명이 적절하게 복호화된 후에, 제어기(206)는 ALU(222)로 복호화된 서명과 SHA 유닛(230)에 의해 발생된 다이제스트를 비교하도록 지시한다. 두 값이 동일하다 면, 패치를 위한 서명이 유효하고 그 패지는 암호화 프로세서(126)를 위해 적절하게 암호화된 패치인 것이다.
블록 714에서, 패치에 대한 서명이 유효하다고 결정된 후에, 패치된 마이크로코드를 위한 패치 플래그 및 태그 엔트리가 로드된다. 도 2의 실시예에 관련하여, 패치의 일부에 명령어들을 부가하여, 패치는 패치 플래그 셋을 포함하며, 패치 플래그는 마이크로코드 메모리(240)의 세그먼트가 패치되었음을 표시한다. 제어기(206)는 패치 플래그 메모리(281)로 이들 패치 플래그들을 로드한다. 이런 패치 플래그들은 마이크로코드 메모리(240) 내에 각 세그먼트를 위한 하나의 비트 표현이다. 패치 플래그 메모리(281)에서 셋 비트는 마이크로코드 메모리(240)에서 상응하는 세그먼트가 패치를 보유함을 표시한다. 예를 들면, 패치 플래그 메모리(240)에 비트 5가 설정되면, 마이크로코드 메모리(240) 안에서 세그먼트 5가 대응하는 패치를 보유한다. 따라서, 파일은 패치를 포함하며, 패치는 패치 플래그, 패치 플래그 중 패치 태그 및 디지털 서명에 의해 우선하게 되는 패치 세그먼트의 시리즈, 및 패치 세그먼트 및 패치 태그의 시리즈를 포함한다. 마이크로코드 메모리(240)에서 세그먼트를 위해 주어진 패치 태그는 그 패치에서 세그먼트의 ID를 저장한다. 그 패치는 마이크로코드 메모리(240)에서 세그먼트 대신에 실행된다. 따라서, 마이크로코드 메모리(240)의 세그먼트에서 동작들이 실행되는 동안, 플래그가 이 세그먼트가 패치되었다고 표시하면, 제어기(206)는 (태그 엔트리를 이용하여) 패치로부터 명령어를 불러온다. 이는 마이크로코드 메모리(240)로부터 명령어들 대신 실행시키기 위함이다. 몇몇 실시예들에서, 패치의 세그먼트들은 단지 휘 발성 메모리(120)로부터 휘발성 메모리(220)로 로드되며, 그 로드 시점은 그 안의 명령어들이 실행될 때이다. 게다가, 이 세그먼트는 휘발성 메모리(220)에 남겨진다. 따라서, 그 안의 명령어들이 재실행된다면, 제어기(206)는 휘발성 메모리(120)로부터 이 세그먼트를 다시 불러올 수 없다. 순서도 700의 동작들이 완료된다.
그러므로, 설명한 바와 같이 암호화 프로세서(126) 내의 마이크로코드는 암호화 키를 포함하는 인증 동작에 기반으로 패치된다. 이때, 암호화 키는 프로그램 가능한 일회용 저장부에 저장되는 해시를 기반으로 정당성을 입증한다. 인증 동작은 또한 정당성을 입증하는 암호화 키를 사용하여 패치에 주어진 서명을 기반을 정당성이 확인된다.
운영 체계 환경
이 섹션에서 시스템의 개요가 제시된다. 시스템의 개요는 본 발명의 일 실시예와 관련하여 사용된 네트워크 구조를 제시한다. 시스템의 개요에서는 네트워크 구조의 일반적인 기능들을 제시한다.
도 8은 본 발명의 일 실시예에 따라 시스템의 구조의 개략적인 기능 블록도를 설명하며, 여기서 암호화 동작들을 수행하는 신뢰성 있는 이동 통신 장치가 동작한다. 도 8은 시스템(800)을 도시하고 있으며, 시스템(800)은 다수의 신뢰성 있는 이동 컴퓨팅 장치(100A-100N) 및 다수의 서버(806A~806N)를 포함하며 이들은 네트워크(804)로 서로 연결된다. 네트워크(804)는 광역 네트워크, 지역 네트워크, 또는 상이한 네트워크 들의 조합일 수 있으며, 이는 다수의 신뢰성 있는 이동 컴퓨팅 장치(100A-100N) 및 다수의 서버(806A~806N) 사이의 통신을 제공한다. 예를 들면, 다수의 신뢰성 있는 이동 컴퓨팅 장치(100A-100N)는 상이한 타입의 무선 컴퓨팅 장치일 수 있으며, 여기서 네트워크(804)의 일부는 무선 통신을 처리하기 위하여 설정되며, 그 반면에, 상이한 네트워크(804)의 일부는 다수의 서버(806A~806N)와 통신하는데 적합한 유선 통신을 처리하기 위하여 설정된다.
다수의 신뢰성 있는 이동 컴퓨팅 장치(100A-100N)는 상술한 바와 같이 다수의 상이한 신뢰 동작 및 암호화 동작을 수행한다. 예를 들면, 다수의 신뢰성 있는 이동 컴퓨팅 장치(100A-100N)의 사용자들은 다수의 서버(806A~806N)에서 실행하고 있는 상이한 애플리케이션들을 가지고 전자 상거래를 실행한다.
다양한 특정 세부 사항들이 본 발명을 전체적으로 이해하기 위하여 설명되며, 예를 들면, 다양한 특정 세부 사항들로는 로직 실행, 조작 부호, 오퍼런드를 특정하기 위한 수단, 소스 분할/공유/이중화 실행, 시스템 구성요소들의 타입 및 내부 관계, 및 로직 분할/집적 선택이 있다. 그러나, 본 발명의 일 실시예가 그런 특정 세부 사항들 없이도 실행된다는 것은 통상의 지식을 가진 당업자에 의해 인정된다. 예를 들어, 제어 구조들, 게이트 레벨 회로들, 및 전체 소프트웨어 명령어 시퀀스들은 발명의 일 실시예를 흐리지 않도록 상세하게 설명하지 않는다. 이 기술의 통상의 지식을 가진 자들은 기술된 상세한 설명을 가지고 과도한 실험을 수행하지 않고서도 적절한 기능을 수행할 수 있다.
명세서에서 실시예, 하나의 실시예, 일 예 등으로 언급된 것은 기술된 실시 예가 특별한 특징, 구조, 또는 특색을 포함하고 있음을 나타내나, 모든 실시예가 특별한 특징, 구조, 또는 특색을 포함하고 있을 필요는 없다. 게다가, 그런 어구는 동일한 실시예를 참조하는데 필요한 것은 아니다. 더욱이, 특별한 특징, 구조, 또는 특색이 실시예와 연결되어 기술될 때, 명백하게 기술되든 아니든 간에 다른 실시예들과 관련된 그런 특색, 구조, 또는 특징들이 이 분야의 당업자의 지식 내에서 달성된다는 것이 제시된다.
본 발명의 일 실시예는 특징, 방법 또는 프로세스를 포함하는데, 이들은 머신-판독가능한 매체에 의해 제공되는 머신-실행가능한 명령어들 내에서 구체화된다. 머신-판독가능한 매체는 머신에 의해 접속 가능한 형태로 정보를 제공(즉, 저장 및/또는 전송)하는 매카니즘을 포함한다(머신의 일 예로는 컴퓨터, 네트워크 장치, PDA, 제조 툴, 하나 또는 그 이상의 프로세서가 설정된 장치, 등이 있음). 예시적인 실시예에서, 머신-판독가능한 매체는 휘발성 및/또는 비휘발성 매체(예컨대, 읽기 전용 메모리(ROM)), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 장치 등) 뿐만 아니라 전기적, 광학적, 음향적, 또는 다른 형태의 전파 신호들(예컨대, 캐리어 웨이브, 적외선 신호, 디지털 신호 등)을 포함한다.
그런 명령어들은 일반적 또는 특별한 목적 프로세서가 그 명령어들을 가지고 프로그램화하도록 이용되며, 본 발명의 일 실시예의 방법 또는 프로세스를 수행하도록 이용된다. 양자 택일적으로, 본원 발명의 일 실시예의 특징 또는 동작들이 특정 하드웨어 구성 요소들 또는 프로그램화된 데이터 프로세싱 구성요소들 및 특 정 하드웨어 구성요소들의 조합에 의해 수행되며, 이 특정 하드웨어 구성 요소들은 동작들의 수행을 위하여 하드-와이어드 로직을 포함한다. 본 발명의 실시예들은 여기에서 더 기술될 소프트웨어, 데이터 처리 하드웨어, 데이터 처리 시스템-실행된 방법들, 및 다양한 처리 동작들을 포함한다.
본 발명의 일 실시예에 따라, 다수의 도면들은 신뢰성 있는 이동 플랫폼 구조를 위한 시스템 및 장치들의 블록 다이어그램을 도시한다. 본 발명의 실시예들에 따란 다수의 도면들은 신뢰성 있는 이동 플랫폼 구조를 위한 동작들을 설명하기 위한 순서도이다. 순서도의 동작들은 블록 다이어그램들에 도시된 시스템/장치에 관련하여 기술될 것이다. 그러나, 순서도들의 동작들은 블록 다이어드램에 관련하여 논의되지 않은 시스템들 및 장치의 실시예들에 의해 수행될 수 있다고 이해될 수 있으며, 그 시스템들/장치와 관련하여 논의된 실시예들은 순서도들과 관련하여 논의된 것과는 상이한 동작들을 수행할 수도 있다고 이해될 수 있다.
여기에서 기술된 실시예들의 변경의 폭 넓은 다양성의 관점에서, 이 상세한 설명은 단지 설명을 위한 것이지 본원 발명의 범위를 한정하기 위함은 아니다. 신뢰성 있는 이동 컴퓨팅 장치(100)가 그런 장치의 사용자에 의해 실제로 동작되는 동안, 신뢰성 및 암호화 동작들과 관련된 기술들은 본 발명의 일 실시예를 한정하지 않는다. 예를 들면, 암호화 프로세서(126)는 신뢰성 있는 이동 컴퓨팅 장치(100)의 디버깅 동작 동안 인증 장치로 사용된다. 설명을 위해 도 1로 되돌아가면, 장치는 디버깅 동안 JTAG 인터페이스(155)를 통해 암호화 프로세서(126)에 결합된다. 따라서, 암호화 프로세서(126)는 챌린지/응답 동작을 통해 이 장치를 인 증한다. 암호화 프로세서(126)는 챌린지를 발생하며, 챌린지는 JTAG 인터페이스(155)에 결합된 장치로 전송된다. 그런 장치는 챌린지에 대한 응답을 생성한다. 그러므로, 암호화 프로세서(126)가 그 응답을 기초로 이 장치를 인증한다면, 이 장치는 JTAG 인터페이스(155)를 통해 신뢰성 있는 이동 컴퓨팅 장치(100)와 통신을 수행한다.
본 발명의 실시예들의 변형을 좀 더 설명하기 위하여, 초기 명령어들이 암호화 프로세서(126) 내부에서 연속적으로 수행되는 것이 기술되는 동안, 일 실시예에서, 상이한 초기 명령어들을 위한 다수의 상이한 마이크로코드 동작들이 그 안의 일부에서 적어도 동시에 수행될 수 있다. 그러므로, 본 발명에 따라 청구되는 것은 그 범위 내에서 가능한 모든 변형들 및 다음의 청구항들 및 그에 균등물들에 가능한 균등물들이다. 그러므로, 상세한 설명 및 도면들은 제한적이기보다는 설명적이라는 의미와 관련된다.
본 발명의 일 실시예는 다음의 상세한 설명 및 그 일 실시예를 설명하기 위해 첨부된 도면을 참조하여 가장 잘 이해될 수 있다. 여기에 포함된 도면들에 대한 도면부호는 체계적이므로, 도면에 주어진 참조 번호에 적합한 선두 도면부호가 도면의 숫자와 관련된다. 예를 들면, 신뢰성 있는 이동 컴퓨팅 장치(100)는 도 1에 위치한다. 그러나, 상이한 도면들 전반에 걸쳐서 동일한 구성요소들의 참조 번호는 모두 동일한다.
도 1은 본 발명의 일 실시예에 따른 신뢰성 있는 플랫폼 구조를 갖는 이동컴퓨팅 장치의 개략적인 기능 블록도 이다.
도 2는 본 발명의 일 실시예에 따른 신뢰성 있는 이동 컴퓨팅 장치 내부의 암호화 프로세서의 개략적인 기능 블록도이다.
도 3은 본 발명의 일 실시예에 따른 신뢰성 있는 이동 컴퓨팅 장치 내부의 암호화 프로세서에서 키 캐시 안의 엔트리의 일 실시예를 도시한 것이다.
도 4는 본 발명의 일 실시예에 따른 암호화 프로세서를 가지고 인터페이스 하기 위한 동작들의 순서도를 설명한다.
도 5는 본 발명의 일 실시예에 따른 암호화 프로세서의 초기화를 위한 설명하기 위한 순서도이다.
도 6a는 본 발명의 일 실시예에 따라 암호화 프로세서 내에서 보안 동작들에 대한 순서도를 도시한 것이다.
도 6b는 본 발명의 일 실시예에 따라 암호화 프로세서 내에 암호화 키를 사 용하여 암호화 동작을 실행하는 순서도를 도시한 것이다.
도 7은 본 발명의 일 실시예에 따라 암호화 프로세서 내부에서 마이크로코드의 업 데이트를 설명하기 위한 순서도이다.
도 8은 본 발명의 일 실시예에 따른 시스템 구조의 개략적인 기능 블록도를 도시한 것으로, 여기서 암호화 동작들을 갖는 신뢰성 있는 이동 통신 장치들이 동작한다.

Claims (10)

  1. 암호화 프로세서 내에서 보호되는 데이터 암호화 키를 사용하는 상기 암호화 프로세서 내의 하나 또는 그 이상의 암호화 유닛들 - 상기 암호화 프로세서는 상기 암호화 프로세서의 외부에서 실행되고 있는 애플리케이션으로부터 상기 암호화 프로세서로 초기 명령어를 수신함 - 과,
    하나 또는 그 이상의 데이터 암호화 키들 및 상기 하나 또는 그 이상의 데이터 암호화 키를 위한 관련 헤더를 저장하는 메모리를 포함하되,
    상기 관련 헤더는 상기 하나 또는 그 이상의 암호화 유닛들 중 어느 것이 상기 데이터 암호화 키를 사용할 것인지와, 상기 하나 또는 그 이상의 암호화 유닛들 내에서 실행될 동작 타입과, 상기 하나 또는 그 이상의 데이터 암호화 키들을 암호화 하는데 사용되는 키 암호화 키의 ID를 규정하며, 상기 데이터 암호화 키를 위한 관련 패스워드는 상기 암호화 프로세서내로 로딩되고 상기 관련 패스워드는 애플리케이션에게 알려지며, 상기 암호화 유닛은 상기 관련 헤더가 상기 초기 명령에 설명된 상기 암호화 동작 및 상기 암호화 유닛을 포함한다는 판정에 응답하여, 상기 애플리케이션에 되돌려 전송되는(transmitted back) 챌린지를 생성하는 동작 - 상기 챌린지는 상기 관련 패스워드의 해시를 포함하는 응답에 대한 요청을 포함함-과, 상기 애플리케이션으로부터 상기 요청된 해시를 포함하는 상기 응답을 되 수신하는 동작과, 상기 암호화 프로세서내에서 상기 관련 패스워드의 해시를 생성하는 동작과, 상기 요청된 해시와 상기 암호화 프로세서 내에서 생성된 상기 해시가 동 일하다는 판단에 응답하여 상기 데이터 암호화 키를 사용하는 상기 하나 또는 그 이상의 암호화 유닛 중 하나내에서 소정의 동작을 수행하는 동작을 수행하는 장치.
  2. 제 1 항에 있어서,
    상기 관련 헤더는 상기 데이터 암호화 키를 위한 사용 타입을 규정하는 장치.
  3. 제 2 항에 있어서,
    상기 관련 헤더를 기반으로 하여, 상기 하나 또는 그 이상의 암호화 유닛들 중 어느 것이 상기 데이터 암호화 키를 사용할지와, 동작의 타입을 제한하는 제어기를 더 포함하는 장치.
  4. 제 1 항에 있어서,
    상기 하나 또는 그 이상의 암호화 유닛들은 개선된 암호화 표준 유닛, 데이터 암호화 표준 유닛, 메시지 다이제스트 유닛, 및 안전한 해시 알고리즘 유닛, 또는 지수 알고리즘 유닛을 포함하는 그룹으로부터 선택되는 장치.
  5. 암호화 프로세서 내에서 보호되는 데이터 암호화 키를 사용하는 상기 암호화 프로세서 내의 암호화 유닛에 의한 암호화 동작의 실행을 위해서, 상기 암호화 프로세서의 외부에서 실행되고 있는 애플리케이션으로부터 상기 암호화 프로세서로 초기 명령어를 수신하는 단계와,
    상기 데이터 암호화 키와 상기 데이터 암호화 키를 위한 관련 헤더를 검색하는 단계 -상기 관련 헤더는 하나 또는 그 이상의 암호화 유닛들 중 어느 것이 상기 데이터 암호화 키를 사용할 것인지와, 상기 하나 또는 그 이상의 데이터 암호화 유닛들 내에서 행해질 동작 타입과, 상기 하나 또는 그 이상의 데이터 암호화 키들을 암호화 하는데 사용되는 키 암호화 키의 ID를 규정하며, 상기 데이터 암호화 키를 위한 관련 패스워드는 상기 암호화 프로세서내로 로딩되고 상기 관련 패스워드는 애플리케이션에게 알려짐- 와,
    상기 관련 헤더가 상기 초기 명령에 설명된 상기 암호화 동작 및 상기 암호화 유닛을 포함한다는 판정에 응답하여, 상기 애플리케이션에 되돌려 전송되는(transmitted back) 챌린지를 생성하는 동작 - 상기 챌린지는 상기 관련 패스워드의 해시를 포함하는 응답에 대한 요청을 포함함-과, 상기 애플리케이션으로부터 상기 요청된 해시를 포함하는 상기 응답을 되 수신하는 동작과, 상기 암호화 프로세서내에서 상기 관련 패스워드의 해시를 생성하는 동작과, 상기 요청된 해시와 상기 암호화 프로세서 내에서 생성된 상기 해시가 동일하다는 판단에 응답하여 상기 데이터 암호화 키를 사용하는 상기 하나 또는 그 이상의 암호화 유닛 중 하나내에 서 소정의 동작을 수행하는 동작을 수행하는 단계를 포함하는 방법.
  6. 제 5 항에 있어서,
    상기 관련 헤더는 상기 데이터 암호화 키를 위한 사용 타입을 규정하는 방법.
  7. 제 6 항에 있어서,
    상기 데이터 암호화 키를 사용하여 하나 또는 그 이상의 암호화 유닛 중 하나내에서 상기 동작을 실행하는 동작은, 상기 동작의 타입이 상기 사용 타입에 의해 규정되는 경우 상기 데이터 암호화 키를 사용하는 상기 하나 또는 그 이상의 암호화 유닛들 중 하나에서 상기 동작을 실행하는 것을 포함하는 방법.
  8. 머신에 의해 실행될 때 상기 머신으로 하여금 후술되는 동작들을 실행하도록 하는 명령어들을 제공하는 머신-판독 가능한 매체에 있어서,
    상기 동작은,
    암호화 프로세서 내부에서 보호된 데이터 암호화 키를 사용하는 상기 암호화 프로세서 내의 암호화 유닛에 의한 암호화 동작의 실행을 위하여, 상기 암호화 프 로세서의 외부에서 실행되고 있는 애플리케이션으로부터 상기 암호화 프로세서로 초기 명령어를 수신하는 것과,
    상기 데이터 암호화 키와 상기 데이터 암호화 키를 위한 관련 헤더를 검색하는 것 -상기 관련 헤더는 하나 또는 그 이상의 암호화 유닛들 중 어느 것이 상기 데이터 암호화 키를 사용할 것인지와, 상기 하나 또는 그 이상의 데이터 암호화 유닛들 내에서 행해질 동작 타입과, 상기 하나 또는 그 이상의 데이터 암호화 키들을 암호화 하는데 사용되는 키 암호화 키의 ID를 규정하며, 상기 데이터 암호화 키를 위한 관련 패스워드는 상기 암호화 프로세서내로 로딩되고 상기 관련 패스워드는 애플리케이션에게 알려짐- 과,
    상기 관련 헤더가 상기 초기 명령에 설명된 상기 암호화 동작 및 상기 암호화 유닛을 포함한다는 판정에 응답하여, 상기 애플리케이션에 되돌려 전송되는(transmitted back) 챌린지를 생성하는 동작 - 상기 챌린지는 상기 관련 패스워드의 해시를 포함하는 응답에 대한 요청을 포함함-과, 상기 애플리케이션으로부터 상기 요청된 해시를 포함하는 상기 응답을 되 수신하는 동작과, 상기 암호화 프로세서내에서 상기 관련 패스워드의 해시를 생성하는 동작과, 상기 요청된 해시와 상기 암호화 프로세서 내에서 생성된 상기 해시가 동일하다는 판단에 응답하여 상기 데이터 암호화 키를 사용하는 상기 하나 또는 그 이상의 암호화 유닛 중 하나내에서 소정의 동작을 수행하는 동작을 수행하는 것을 포함하는 머신 판독이 가능한 기록 매체.
  9. 제 8 항에 있어서,
    상기 관련 헤더는 상기 데이터 암호화 키를 위한 사용 타입을 규정한 머신 판독이 가능한 기록 매체.
  10. 제 9 항에 있어서,
    상기 데이터 암호화 키를 사용하는 상기 하나 또는 그 이상의 암호화 유닛들 중 하나에서 상기 동작을 수행하는 것은, 상기 동작의 타입이 상기 사용 타입으로 규정된 경우, 상기 데이터 암호화 키를 이용하여 상기 하나 또는 그 이상의 암호화 유닛들 중 하나 내에서 상기 동작을 수행하는 것을 더 포함하는 머신 판독이 가능한 기록 매체.
KR1020087013511A 2003-12-11 2004-12-13 신뢰성 있는 이동 플랫폼 구조 KR20080059675A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US52889003P 2003-12-11 2003-12-11
US60/528,890 2003-12-11
US10/815,454 US20050132226A1 (en) 2003-12-11 2004-03-31 Trusted mobile platform architecture
US10/815,454 2004-03-31

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020067011463A Division KR20060108710A (ko) 2003-12-11 2004-12-13 신뢰성 있는 이동 플랫폼 구조

Publications (1)

Publication Number Publication Date
KR20080059675A true KR20080059675A (ko) 2008-06-30

Family

ID=34657259

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020087013511A KR20080059675A (ko) 2003-12-11 2004-12-13 신뢰성 있는 이동 플랫폼 구조
KR1020067011463A KR20060108710A (ko) 2003-12-11 2004-12-13 신뢰성 있는 이동 플랫폼 구조

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020067011463A KR20060108710A (ko) 2003-12-11 2004-12-13 신뢰성 있는 이동 플랫폼 구조

Country Status (5)

Country Link
US (2) US20050132226A1 (ko)
JP (1) JP2007512787A (ko)
KR (2) KR20080059675A (ko)
CN (1) CN102347834A (ko)
WO (1) WO2005060151A2 (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050103205A (ko) * 2003-01-24 2005-10-27 코코 커뮤니케이션즈 코포레이션 어플리케이션에 관련된 중앙 관리 없이 익명의 신뢰할 수없는 집단간 안전한 통신과 자원 공유 방법 및 장치
US20050132186A1 (en) 2003-12-11 2005-06-16 Khan Moinul H. Method and apparatus for a trust processor
US20050132226A1 (en) * 2003-12-11 2005-06-16 David Wheeler Trusted mobile platform architecture
US7636858B2 (en) * 2003-12-11 2009-12-22 Intel Corporation Management of a trusted cryptographic processor
KR100542436B1 (ko) * 2003-12-22 2006-01-11 한국전자통신연구원 유무선 인터넷 전화용 시스템온칩 개발 장치
US7590864B2 (en) * 2004-05-21 2009-09-15 Intel Corporation Trusted patching of trusted code
KR100606837B1 (ko) * 2004-09-03 2006-08-01 엘지전자 주식회사 리셉터클을 이용한 이동통신 단말기의 jtag인터페이스 장치
WO2006056988A2 (en) * 2004-11-24 2006-06-01 Discretix Technologies Ltd. System, method and apparatus of securing an operating system
JP2006203564A (ja) * 2005-01-20 2006-08-03 Nara Institute Of Science & Technology マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法
US8218770B2 (en) * 2005-09-13 2012-07-10 Agere Systems Inc. Method and apparatus for secure key management and protection
US20070168669A1 (en) * 2006-01-13 2007-07-19 Lockheed Martin Corporation Anti-tamper system
US8560863B2 (en) 2006-06-27 2013-10-15 Intel Corporation Systems and techniques for datapath security in a system-on-a-chip device
DE102006046456B4 (de) * 2006-09-29 2009-11-05 Infineon Technologies Ag Schaltkreis-Anordnung, Verfahren zum Hochfahren einer Schaltkreis-Anordnung, Verfahren zum Betreiben einer Schaltkreis-Anordnung und Computerprogrammprodukte
FR2907236B1 (fr) * 2006-10-11 2009-01-23 Sagem Defense Securite Procede de securisation lors de l'execution d'une fonction et dispositif associe
US7624276B2 (en) * 2006-10-16 2009-11-24 Broadon Communications Corp. Secure device authentication system and method
KR100872175B1 (ko) 2006-12-01 2008-12-09 한국전자통신연구원 Tpm을 이용한 모바일 플랫폼의 보안 부팅 장치 및 방법
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
WO2009030972A1 (en) * 2007-09-06 2009-03-12 Chin San Sathya Wong Method and system of generating and presenting search results
KR20090121712A (ko) * 2008-05-22 2009-11-26 삼성전자주식회사 가상화 시스템 및 그 가상화 시스템에서의 컨텐트 사용제한 방법
US8280040B2 (en) * 2009-02-04 2012-10-02 Globalfoundries Inc. Processor instructions for improved AES encryption and decryption
US9191211B2 (en) * 2009-02-27 2015-11-17 Atmel Corporation Data security system
US9680637B2 (en) * 2009-05-01 2017-06-13 Harris Corporation Secure hashing device using multiple different SHA variants and related methods
JP5159849B2 (ja) * 2010-09-24 2013-03-13 株式会社東芝 メモリ管理装置及びメモリ管理方法
US9294281B2 (en) * 2012-02-10 2016-03-22 Microsoft Technology Licensing, Llc Utilization of a protected module to prevent offline dictionary attacks
EP2868031B1 (en) 2012-06-28 2019-04-17 OLogN Technologies AG Secure key storage systems, methods and apparatuses
KR102228454B1 (ko) 2014-02-24 2021-03-16 삼성전자주식회사 보안 디버깅 회로를 갖는 디바이스 및 그것에 대한 디버깅 방법
CN105095765B (zh) * 2014-05-14 2018-09-11 展讯通信(上海)有限公司 移动终端及其处理器系统、一种可信执行方法
JP2016181836A (ja) * 2015-03-24 2016-10-13 キヤノン株式会社 情報処理装置、暗号装置、情報処理装置の制御方法、およびプログラム
US10171437B2 (en) 2015-04-24 2019-01-01 Oracle International Corporation Techniques for security artifacts management
US10033703B1 (en) * 2015-06-16 2018-07-24 Amazon Technologies, Inc. Pluggable cipher suite negotiation
US10395042B2 (en) 2015-07-02 2019-08-27 Oracle International Corporation Data encryption service
CN108287759B (zh) 2017-01-10 2021-07-09 阿里巴巴集团控股有限公司 处理数据过程中的调度方法、装置和系统
US10680804B2 (en) * 2017-09-27 2020-06-09 Salesforce.Com, Inc. Distributed key caching for encrypted keys
US11054999B2 (en) * 2018-09-14 2021-07-06 SeaPort, Inc. Methods and systems for encoding and decoding communications
US11831407B1 (en) * 2023-01-24 2023-11-28 Corsali, Inc. Non-custodial techniques for data encryption and decryption

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5200999A (en) * 1991-09-27 1993-04-06 International Business Machines Corporation Public key cryptosystem key management based on control vectors
DE19702049C1 (de) * 1997-01-22 1998-05-14 Ibm Zertifizierung kryptografischer Schlüssel für Chipkarten
US6704871B1 (en) * 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
US6085090A (en) * 1997-10-20 2000-07-04 Motorola, Inc. Autonomous interrogatable information and position device
US6766455B1 (en) * 1999-12-09 2004-07-20 Pitney Bowes Inc. System and method for preventing differential power analysis attacks (DPA) on a cryptographic device
DE60132962T2 (de) * 2000-01-21 2009-02-26 Sony Corp. Datenverarbeitungsvorrichtung und datenverarbeitungsverfahren
US7089595B1 (en) * 2000-03-31 2006-08-08 Intel Corporation Device and method for disabling an override hardware pin assertion
FI20002255A (fi) * 2000-10-13 2002-04-14 Nokia Corp Menetelmä lukkojen hallintaan ja kontrollointiin
DE10061998A1 (de) * 2000-12-13 2002-07-18 Infineon Technologies Ag Kryptographieprozessor
US7269736B2 (en) * 2001-02-28 2007-09-11 Microsoft Corporation Distributed cryptographic methods and arrangements
KR100436814B1 (ko) * 2001-12-20 2004-06-23 한국전자통신연구원 아이씨카드용 알에스에이 암호 연산 장치
US7640300B2 (en) * 2002-06-10 2009-12-29 Microsoft Corporation Presence and notification system for maintaining and communicating information
US20040009815A1 (en) * 2002-06-26 2004-01-15 Zotto Banjamin O. Managing access to content
JP2005535958A (ja) * 2002-08-08 2005-11-24 エム−システムズ フラッシュ ディスク パイオニアーズ リミテッド デジタル著作権管理のための集積回路
GB0221240D0 (en) * 2002-09-13 2002-10-23 Koninkl Philips Electronics Nv Current source for cryptographic processor
EP1590917B1 (en) * 2003-01-28 2010-12-15 Cellport Systems, Inc. A system and a method for controlling use by applications of proprietary resources within a secure telematics system in a vehicle
US7493652B2 (en) * 2003-08-06 2009-02-17 Microsoft Corporation Verifying location of a mobile node
US7636858B2 (en) * 2003-12-11 2009-12-22 Intel Corporation Management of a trusted cryptographic processor
US20050132186A1 (en) * 2003-12-11 2005-06-16 Khan Moinul H. Method and apparatus for a trust processor
US20050132226A1 (en) * 2003-12-11 2005-06-16 David Wheeler Trusted mobile platform architecture
US8511558B2 (en) * 2005-04-12 2013-08-20 Sandisk Il Ltd. Smartcard power management

Also Published As

Publication number Publication date
JP2007512787A (ja) 2007-05-17
US20050132226A1 (en) 2005-06-16
WO2005060151A2 (en) 2005-06-30
CN102347834A (zh) 2012-02-08
US20090282254A1 (en) 2009-11-12
KR20060108710A (ko) 2006-10-18
WO2005060151A3 (en) 2005-10-06

Similar Documents

Publication Publication Date Title
US9043615B2 (en) Method and apparatus for a trust processor
KR20080059675A (ko) 신뢰성 있는 이동 플랫폼 구조
US11550962B2 (en) Secure processor and a program for a secure processor
US7636858B2 (en) Management of a trusted cryptographic processor
US8670568B2 (en) Methods and systems for utilizing cryptographic functions of a cryptographic co-processor
EP1391802B1 (en) Saving and retrieving data based on symmetric key encryption
US20210334381A1 (en) Method and electronic device capable of securely storing and loading firmware
KR20090109589A (ko) 프로세서 내에서의 보호된 리소스들로의 억세스에 대한 안전한 보호 방법
JP2005527019A (ja) マルチトークンのシール及びシール解除
US20060130130A1 (en) Programmable processor supporting secure mode
JP7406013B2 (ja) 構成設定の安全な署名
US8667278B2 (en) Information processing apparatus and data transmission method of information processing apparatus
CN117610083A (zh) 文件校验方法、装置、电子设备及计算机存储介质
KR20070017455A (ko) 프로세서 내에서의 보호된 리소스들로의 억세스에 대한안전한 보호 방법

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application