KR20030082930A - 그래픽 시스템에서 컴포넌트들의 인증을 위한 방법 및시스템 - Google Patents

그래픽 시스템에서 컴포넌트들의 인증을 위한 방법 및시스템 Download PDF

Info

Publication number
KR20030082930A
KR20030082930A KR10-2003-0024750A KR20030024750A KR20030082930A KR 20030082930 A KR20030082930 A KR 20030082930A KR 20030024750 A KR20030024750 A KR 20030024750A KR 20030082930 A KR20030082930 A KR 20030082930A
Authority
KR
South Korea
Prior art keywords
graphics card
key
cryptographic processor
graphics
session key
Prior art date
Application number
KR10-2003-0024750A
Other languages
English (en)
Other versions
KR101030354B1 (ko
Inventor
폴 잉글랜드
마커스 페이나도
니콜라스피. 윌트
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20030082930A publication Critical patent/KR20030082930A/ko
Application granted granted Critical
Publication of KR101030354B1 publication Critical patent/KR101030354B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • G06F21/445Program or device authentication by mutual authentication, e.g. between devices or programs
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Storage Device Security (AREA)
  • Image Generation (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Collating Specific Patterns (AREA)

Abstract

신뢰 그래픽 시스템의 사용과 관련하여 컴포넌트(들)을 인증하기 위한 방법들 및 시스템들이 제공된다. 그래픽 파이프라인을 통하여 루팅된 컨텐츠를 암호적으로 보안하는 시스템과 관련하여 그래픽 카드를 인증하기 위한 기술들이 제공되고, 이로써 애플리케이션 또는 디바이스는 신뢰 그래픽 플랫폼에게 자신이 신뢰 그래픽 플랫폼의 신뢰 사용자임을 표시할 수 있으며, 그래픽 플랫폼은 신뢰 애플리케이션 또는 디바이스에게 자신이 애플리케이션 또는 디바이스에 의해 신뢰될 수 있음을 통신할 수 있다.

Description

그래픽 시스템에서 컴포넌트들의 인증을 위한 방법 및 시스템{METHODS AND SYSTEMS FOR AUTHENTICATION OF COMPONENTS IN A GRAPHICS SYSTEM}
본 발명은 신뢰 그래픽 시스템의 사용과 관련하여 컴포넌트(들)을 인증하기 위한 방법 및 시스템에 관한 것이다. 더 구체적으로는, 본 발명은 그래픽 파이프라인(graphics pipeline)을 통해 라우팅된(route) 컨텐츠를 암호적으로 보안하는 시스템에 관련하여 그래픽 카드를 인증하기 위한 기술들에 관한 것이다.
인터넷과 다수의 다른 소스들 및 애플리케이션들은 이제 방대한 배열의 스트리밍 및 고정 매체, 또는 듣고(listening), 보고(viewing), 처리하고 (processing), 저장하고(storing), 그렇지 않으면 렌더링(rendering)하기 위한 다른 컨텐츠를 제공한다. 그러나 저작권침해자가 컨텐츠 처리 중이나 컨텐츠 렌더링 중에 파이프라인을 따라 몇몇의 지점에서 스트림에 접근하거나 컨텐츠의 복사본을 소유하거나 컨텐츠를 변경할 수 없도록, 복제 방지 방식으로 스트리밍 또는 고정 매체 또는 컨텐츠를 캡처링하고, 레코딩하고, 렌더링하는 실제적인 방법은 현재 존재하지 않는다. 이 문제는 예를 들어 텔레비전 컨텐츠를 위한 VCR들, 또는 오디오 신호들을 위한 테이프 레코더들과 같은 과거의 다른 매체 렌더링 및 레코딩 디바이스들과 관련하여 존재하지만, 적어도 한가지 중요한 차이점이 있다. 디지털 매체 컨텐츠는 거의 어떤 신호 손실도 없이 레코딩될 수 있기 때문에, 이것은 저작권자에게 있어 그들의 작품들이 보상없이 자유롭게 공유(저작권침해)될 위험을 내포한다. VCR들 및 테이프 레코더들에 있어, 디바이스(들) 및 전송 매체는 레코딩 프로세스에 데이터의 노이즈 또는 손상을 초래한다. 스트리밍 또는 고정 디지털 매체에 있어, 적어도 인간의 귀와 눈의 능력들의 한계에서 거의 손실없는 변환들 및 재전송들이 이루어질 수 없을 이유도 없고, 순수한 디지털 데이터가 저장되고 자유롭게 배포되지 못할 이유도 없다. 따라서, 저작권자들이 수수료에 대해 제공할 수 있는 것과 저작권침해자가 무료로 제공할 수 있는 것 간의 차이가 거의 없기 때문에, 디지털 데이터의 자유로운 재배포를 방지하는 것이 바람직할 것이다. 더우기, 전자상거래 트랜잭션들과 같이 비밀성이 요구되는 통신에 있어서, 어떤 비인가된 제3자도 그 트랜잭션들에 비밀히 관여하지(privy) 못하는 것은 그 대화에 관여된 사용자에게 중요하다. 따라서, 신뢰 소스(trusted source)로부터의 컨텐츠에 대하여, 저작권침해 또는 손상을 방지하지 않으면서 데이터가 "안전하게(securely)" 처리되거나 사용자의 컴퓨터에 렌더링될 수 있는 실제적인 방법이 현재 존재하지 않는다.
특히, 일단 컨텐츠가 호스트 컴퓨팅 시스템, 하나 이상의 그래픽 처리 유니트들(GPUs), 및 예를 들어 모니터와 같은 렌더링 디바이스 간에 파이프라인(pipeline)되면, 저작권침해자 또는 다른 비인가된 제3자가 라인 또는 신호에 자동 대기(camp on)하고 그 신호를 저작권침해하거나 손상시킬 많은 가능성들이 존재한다. 더우기, 사용자 대화들이 메시지 서비스들이나 화상 원격회의를 경유하여 더 복잡하게 될 때, 출처가 어디든지간에 안전한 컨텐츠를 위한 신뢰 파이프라인을 제공하는 것은 앞으로 더욱 중요한 움직임이 될 것이다.
게다가, 차세대 운영 시스템들, 컴퓨팅 디바이스들 및 애플리케이션들은, 오늘날의 개인 컴퓨터들(PCs)에서와 같이 CPU들로부터 최대 컴퓨팅 능력을 끌어내는 것과는 대립되는 것으로서, 비지니스 애플리케이션들을 위해 GPU들로부터 더욱 많은 컴퓨팅 능력을 이용할 것이다. 따라서, 컨텐츠가 "신뢰 그래픽(trusted graphics)" 애플리케이션들을 경유하여 GPU들에 송신된다는 것을 보증하는 것은 미래 컴퓨팅 디바이스들을 위한 기본적인 특성이 될 것이며, 현재 컴퓨팅 시스템들에 의해 적절하게 해결되지 않는 특성이다.
신뢰 컨텐츠를 위한 안전 파이프라인을 제공하는 이러한 문제는 두가지 요소로 생각해 볼 수 있다: (1) 신뢰 컨텐츠가 파이프라인 동안 몇몇의 취약한 지점에서 복제되거나 보여질 수 없다는 것을 보증해야 한다(비밀성(confidentiality)) (2) 파이프라인이 그 파이프라인에서의 비인가된 손상을 방지한다는 것을 보증해야 한다(보호됨(protected)). 시스템 보안의 문맥에서, 복잡성은 시스템의 보안을 시험하는 것을 더 어렵게 만들기 때문에 부담이 된다. 공항 또는 다른 보안 시나리오에 있어서, 그 시스템에 입구 및 출구 지점들이 더 많이 존재할수록, 보안을 보증하기가 더 어려워진다. 이에 관하여, 현재 대부분의 GPU 기능과 디스플레이 드라이버(들)이 비밀성과 보호능력 모두에 관하여 신뢰될 수 있는 방법은 없다. 공동으로 양도되어 함께 출원계류중인 2002년 4월 18일에 출원된 미국 특허출원 번호 10/124,922('922 출원), "안전한 컨텐츠를 암호적으로 보호하기 위한 방법들 및 시스템들(Methods and Systems for Cryptographically Protecting Secure Content)"은 그러한 신뢰 그래픽 플랫폼을 제공하는 시스템들 및 방법들을 교시한다.
그러나, 그러한 신뢰 그래픽 플랫폼에 관련한 컨텐츠의 전달, 처리 및/또는 렌더링에 앞서, 중요한 문제가 존재하며, 그것은 신뢰 그래픽 플랫폼과 상호작용하는 신뢰 애플리케이션 또는 디바이스가, 그 상호작용하는 신뢰 그래픽 플랫폼이 신뢰된 것(trusted one)이라고 보증할 적절한 수단을 현재 갖지 못한다는 것이다. 더우기, 신뢰 애플리케이션은, 신뢰 그래픽 플랫폼의 신뢰 서비스들을 이용할 수 있도록 그래픽 플랫폼에게 자신이 신뢰 애플리케이션임을 통신할 안전하고 적절한 방법이 현재 없다. 따라서, 신뢰 그래픽 플랫폼의 사용과 관련하여 인증을 위한 개선된 기술들이 필요하다.
이상의 관점에서, 본 발명은 신뢰 그래픽 시스템의 사용과 관련하여 컴포넌트(들)을 인증하기 위한 방법들 및 시스템들을 제공한다. 그래픽 파이프라인을 통해 루팅된 컨텐츠를 암호적으로 보안하는 시스템과 관련하여 그래픽 카드를 인증하기 위한 기술이 제공되며, 이로써 애플리케이션 또는 디바이스가 신뢰 그래픽 플랫폼에게 자신이 신뢰 그래픽 플랫폼의 신뢰 사용자임을 표시할 수 있고, 그래픽 플랫폼이 신뢰 애플리케이션 또는 디바이스에게 자신이 애플리케이션 또는 디바이스에 의해 신뢰될 수 있음을 통신할 수 있다.
상기 방법들은, 그래픽 카드를 가진 신뢰 그래픽 플랫폼의 사용과 관련하여 인증을 제공하는 기술들을 다양하게 포함하며, 그 기술들은 애플리케이션 또는 디바이스에 의해 그래픽 카드에게 그 그래픽 카드가 안전 그래픽 카드임을 검증할 것을 요청하고, 그 요청에 응답하여, 그래픽 카드에 통신적으로 안전하게 연결된 암호 프로세서에 의해 세션 키를 생성하고, 애플리케이션 또는 디바이스에 세션 키를 전송하는 것을 포함한다.
상기 시스템들은, 애플리케이션 또는 디바이스를 포함하는 컴퓨팅 디바이스, GPU(s)를 가진 그래픽 카드, 및 GPU(s)에 통신적으로 안전하게 연결된 암호 프로세서를 다양하게 포함하며, 애플리케이션 또는 디바이스는 그래픽 카드가 자신이 안전 그래픽 카드임을 검증하도록 요청하며, 이로써, 그 요청에 응답하여 암호 프로세서는 세션 키를 생성하고 그 세션 키를 애플리케이션 또는 디바이스에 전송한다.
본 발명의 다른 특징들 및 실시예들은 이하에 서술되어 있다.
도 1a는 본 발명이 구현될 수 있는 다양한 컴퓨팅 디바이스들을 가진 예시적인 네트워크 환경을 나타내는 블록도이다;
도 1b는 본 발명이 구현될 수 있는 예시적인 무제한 컴퓨팅 디바이스를 나타내는 블록도이다;
도 2는 본 발명에 따라 보호되는 그래픽 파이프라인의 비보호된 부분들을 나타내는 흐름도이다;
도 3a 및 3b는 본 발명에 따른 보안의 제1 계층의 예시적인 양상들을 나타내는 블록도들이다;
도 4a 내지 4c는 본 발명에 따른 보안의 제2 계층의 예시적인 양상들을 나타내는 블록도들이다;
도 5a 및 5b는 본 발명에 따른 AYUV/ARGB 포맷의 예시적인 스위즐링 (swizzling)을 나타낸다;
도 6a 및 6b는 본 발명에 따른 YUY2 포맷의 예시적인 스위즐링을 나타낸다.
도 7a 및 7b는 본 발명에 따른 묶음 평면 포맷(packed planar format)의 예시적인 스위즐링을 나타낸다;
도 8a 및 8b는 본 발명에 따른 보안의 제3 계층의 예시적인 양상들을 나타내는 블록도들이다;
도 9a 및 9b는 본 발명에 따른 그래픽 처리 유닛으로부터의 출력에 적용될 수 있는 예시적인 암호화 기술들을 나타내는 블록도들이다.
본 발명은, 컨텐츠의 처리 및/또는 렌더링이, 비인가된 복제를 방지하는 고급 컨텐츠의 재생 및 손댐 방지(tamper-resistant) 비밀 대화들과 같이, "신뢰 그래픽" 애플리케이션들에 의해 이루어질 수 있도록, 신뢰 소스로부터의 컨텐츠와 인증 목적들을 위한 그래픽 시스템 간에 운영 시스템 또는 다른 중개자를 증대시키기 위한 시스템들 및 기술들을 제공한다. 신뢰 그래픽 플랫폼을 보는(viewing) 한 가지 방법은 세 가지 '레벨들'의 보안을 제공하는 것이다: (1) 오버레이 표면들의 컨텐츠들의 암호화, (2) GPU 또는 다른 보조처리 디바이스가 암호화된 컨텐츠에 대해 작동할 수 있도록 하면서 그 컨텐츠를 비신뢰자들에게는 이용할 수 없도록 하는 것, 및 (3) 명령 버퍼들이 암호화될 수 있도록 하는 것. 본 발명은 그러한 신뢰 그래픽 플랫폼과 관련하여 사용자를 위한 인증 서비스들을 제공한다.
언급된 바와 같이, 시스템 보안의 문맥에서, 복잡성은 시스템의 보안을 시험하는 것을 더 어렵게 만들기 때문에 부담이다. 결과적으로, 신뢰 그래픽 플랫폼은, 대부분의 GPU 기능과 디스플레이 드라이버(들)이 신뢰될 수 없는 것으로 고려되어야 한다고 고려한다. 보안을 위한 기준들에 부합하도록 실행될 수 있는 하드웨어의 범위를 제한함으로서, 신뢰 그래픽 플랫폼은 비밀성 및 보호능력 면에서 올바른 실행의 가능성을 증가시킨다. 본 발명에 따른 몇가지 용어는 위에서 이미 논의되었다. 그러나, 명확성을 위해서 이제 몇가지 용어들이 강조될 것이다. 용어 '비밀의(confidential)'는, 제3자 디바이스 또는 소프트웨어와 같은 비신뢰된 제3자가 신뢰 컨텐츠 정보에 액세스하지 못하도록 방지하는 것을 말한다. 그러한 비밀성의 예는 비신뢰 제3자가 그래픽 파이프라인을 따라 어느 곳에서든지 암호화된 고급 비디오 컨텐츠의 재생에 액세스하는 것을 방지하는 것을 포함한다. 용어 '보호된(protected)'은, 제3자 디바이스 또는 소프트웨어와 같은 비신뢰 제3자가, 검출됨 없이 신뢰 컨텐츠 정보에 액세스하거나 그 정보를 변경하는 것을 방지하는 것을 말한다. 그러한 보호능력의 예는 비신뢰 제3자가 전자 상거래 트랜잭션 동안 발생할 수 있는 안전한 대화의 디스플레이에 액세스하거나 그것을 변경하는 것을 방지하는 것을 포함한다.
이에 관하여, 신뢰 그래픽 플랫폼은, 전자 상거래 대화들 동안 존재할 수 있는 명료한 창들(unobscurable windows) 뿐만 아니라 예컨대 고급 컨텐츠 비디오 스트림들의 상부의 사용자 인터페이스와 같은 중첩 창들(overlapping windows)도 고려한다. 그러나, 신뢰 그래픽 플랫폼이 동작하기 전에, 애플리케이션들 및 디바이스들이 상기 신뢰 그래픽 플랫폼을 사용하며 상기 신뢰 그래픽 플랫폼 자체가 전체 신뢰 시스템의 실제 부분들임을 보증하는, 본 발명에 따른 메커니즘이 있다. 본 발명은 그러한 인증을 실행하기 위한 시스템들 및 기술들을 제공한다. 그에 대한 세부사항들과 실시예들은 이하에 서술된다.
예시적인 네트워크 환경
본 기술분야에서의 일반적인 기술 중 하나는 컴퓨터 또는 다른 클라이언트 또는 서버 디바이스가 컴퓨터 네트워크의 일부로서 또는 분산 컴퓨팅 환경에서 전개될 수 있다는 것을 이해할 수 있다. 이에 관하여, 본 발명은 어떤 수의 메모리 또는 스토리지 유닛들을 가진 어떤 컴퓨터 시스템에도, 그리고 어떤 수의 스토리지 유닛들 또는 볼륨들에 걸쳐 발생하는 어떤 수의 애플리케이션들 및 프로세스들에도 적합하며, 이것은 신뢰 그래픽 체계를 가진 사용을 위한 인증 기술들을 수반할 수 있다. 본 발명은 원격 또는 국부 스토리지를 가지고 네트워크 환경 또는 분산 컴퓨팅 환경에서 전개되는 서버 컴퓨터들 및 클라이언트 컴퓨터들에 적용될 수 있다. 본 발명은 또한, 원격 또는 국부 서비스들에 관련하여 정보를 생성, 수신 및 전송하기 위해 프로그래밍 언어 기능, 해석 및 실행 능력들을 가진 자립형(standalone) 컴퓨팅 디바이스들에 적용될 수 있다.
분산 컴퓨팅은 컴퓨팅 디바이스들과 시스템들간의 직접 교환에 의해 컴퓨터 자원들 및 서비스들의 공유를 수월하게 한다. 이들 자원들 및 서비스들은 파일들을위한 디스크 스토리지, 캐시 스토리지, 및 정보의 교환을 포함한다. 분산 컴퓨팅은 네트워크 접속성을 이용하며, 클라이언트들이 그 전체 기업에 이익을 내기 위해 그들의 집합적 힘을 사용할 수 있도록 한다. 이에 관하여, 다양한 디바이스들은 신뢰 그래픽 파이프라인(들)을 위한 본 발명의 인증 기술들을 포함하기 위해 상호작용할 수 있는 애플리케이션들, 객체들, 또는 자원들을 가질 수 있다.
도 1a는 대표적인 네트워크 또는 분산 컴퓨팅 환경의 개략도를 제공한다. 분산 컴퓨팅 환경은 컴퓨팅 객체들 10a, 10b 등과 컴퓨팅 객체들 또는 디바이스들 110a, 110b, 110c 등을 포함한다. 이들 객체들은 프로그램들, 방법들, 데이터 스토어들, 프로그램가능한 논리 등을 포함할 수도 있다. 객체들은 PDA들, 텔레비전들, MP3 플레이어들, 개인 컴퓨터들 등과 같은 동일한 또는 다른 디바이스들의 부분들을 포함할 수 있다. 각 객체는 통신 네트워크(14)를 통해 또 다른 객체와 통신할 수 있다. 이 네트워크 자체가 도 1a의 시스템에 서비스들을 제공하는 다른 컴퓨팅 객체들 및 컴퓨팅 디바이스들을 포함할 수도 있다. 본 발명의 양상에 따라, 각 객체(10 또는 110)는 신뢰 그래픽 파이프라인(들)을 위한 본 발명의 인증 기술들을 요청할 수도 있는 애플리케이션을 포함할 수 있다.
110c와 같은 객체가 또 다른 컴퓨팅 디바이스(10 또는 110)상에 호스팅될 수 있다는 것 또한 높이 평가될 수 있다. 따라서, 비록 도시된 물리적 환경이 컴퓨터 등의 접속된 디바이스들을 보여주더라도, 그러한 도시는 단순히 예시적이며, 대안적으로 도시되거나 서술되는 물리적 환경은 PDA들, 텔레비전들, MP 플레이어들 등과 같은 다양한 디지털 디바이스들과, 인터페이스들, COM 객체들 및 그 동류와 같은 소프트웨어 객체들을 포함한다.
분산 컴퓨팅 환경들을 지원하는 다양한 시스템들, 컴포넌트들, 및 네트워크 구성들이 있다. 예를 들어, 컴퓨팅 시스템들은 유선 또는 무선 시스템들, 국부 네트워트들 또는 광역 분산 네트워크들에 의해 함께 접속될 수 있다. 현재, 많은 네트워크들이 인터넷에 연결되어 있으며, 이것은 광역 분산 컴퓨팅을 위한 기반구조를 제공하고 많은 다른 네트워크들을 포함한다.
홈 네트워킹 환경들에서, 전력선, 데이터(무선과 유선 둘 모두), 음성(예컨대, 전화) 및 오락 매체와 같은 고유 프로토콜을 각각 지원하는 적어도 4개의 이종 네트워크 전송 매체가 있다. 전등 스위치들 및 가전기구들과 같은 대부분의 홈 제어 디바이스들은 접속을 위해 전력선을 사용할 수도 있다. 데이터 서비스들은 광대역(예컨대, DSL 또는 케이블 모뎀)으로서 가정에 들어갈 수도 있으며, 무선(예컨대, HomeRF 또는 802.11b) 또는 유선(예컨대, Home PNA, Cat5, 심지어 전력선) 접속을 사용하여 가정내로 액세스할 수 있다. 음성 트래픽은 유선(예컨대, Cat3) 또는 무선(예컨대, 셀 전화들)으로서 가정에 들어갈 수 있으며, Cat3 배선을 사용하여 가정내에 분산될 수 있다. 오락 매체는 위성 또는 케이블을 통해 가정에 들어갈 수 있고, 통상적으로 동축 케이블을 사용하여 가정내에 분산된다. IEEE 1394 및 DVI는 또한 매체 디바이스들의 클러스터들을 위한 디지털 상호접속들로서 부상하고 있다. 이러한 네트워크 환경들과 프로토콜 표준들로서 부상할 수 있는 다른 환경들 모두는, 인터넷을 통해 외부 세계와 접속될 수 있는 인트라넷을 형성하도록 상호접속될 수 있다. 요컨대, 다양한 이종 소스들이 데이터의 스토리지 및 전송을위해 존재하며, 결과적으로, 앞으로, 컴퓨팅 디바이스들은 데이터 처리 파이프라인의 모든 부분들에서 컨텐츠를 보호하는 방법들을 요구할 것이다.
인터넷은 일반적으로 프로토콜들의 TCP/IP를 사용하는 네트워크들 및 게이트웨이들의 집합을 말하며, 이것은 컴퓨터 네트워킹의 기술분야에서 주지되어 있다. TCP/IP는 "전송 제어 프로토콜/인터페이스 프로그램"의 두문자어(acronym)이다. 인터넷은, 사용자들이 네트워크들을 통해 상호작용하고 정보를 공유할 수 있도록 하는 컴퓨터 실행 네트워킹 프로토콜들에 의해 상호접속된, 지리적으로 분산된 원격 컴퓨터 네트워크들의 시스템으로서 서술될 수 있다. 그러한 널리 확산된 정보 공유 때문에, 인터넷과 같은 원격 네트워크들은, 개발자들이 본질적으로 제한없이 특별한 작동들 및 서비스들을 수행하기 위한 소프트웨어 애플리케이션들을 설계할 수 있는 개방 시스템으로 더 일반적으로 진화해 왔다.
따라서, 네트워크 기반구조는 클라이언트/서버, 동등 계층(peer-to-peer), 혼성 아키텍처들(hybrid architectures)과 같은 네트워크 형태들의 호스트를 가능하게 한다. "클라이언트"는 관련되지 않은 또 다른 클래스 또는 그룹의 서비스들을 사용하는 클래스 또는 그룹의 일원이다. 따라서, 컴퓨팅에서, 클라이언트는 프로세스, 즉, 대략적으로 명령어들 또는 태스크들(tasks)의 세트이고, 이것은 또 다른 프로그램에 의해 제공되는 서비스를 요청한다. 클라이언트 프로세스는, 다른 프로그램 또는 그 서비스 자체에 대한 어떤 작업 세부사항들을 "알아야" 할 필요없이, 요청된 서비스를 사용할 수 있다. 클라이언트/서버 아키텍처, 특히 네트워킹된 시스템에서, 클라이언트는 보통 예컨대 서버와 같은 또 다른 컴퓨터에 의해 제공되는공유 네트워크 자원들에 액세스하는 컴퓨터이다. 도 1a의 예에서, 컴퓨터들(110a, 110b, 등)은 클라이언트들로 간주될 수 있고 컴퓨터(10a, 10b, 등)은 서버로서 간주될 수 있으며, 서버(10a, 10b, 등)는 클라이언트 컴퓨터들(110a, 110b,등)에서 복제된 데이터를 간직한다.
서버는 통상적으로 인터넷과 같은 원격 네트워크를 통해 액세스할 수 있는 원격 컴퓨터 시스템이다. 클라이언트 프로세스는 제1 컴퓨터 시스템에서 활성화될 수 있으며, 서버는 제2 컴퓨터 시스템에서 활성화될 수 있고, 통신 매체를 통해 서로 통신하고, 따라서 분산된 기능을 제공하고, 다중 클라이언트들이 서버의 정보 수집 능력들을 이용할 수 있도록 한다.
클라이언트와 서버는 프로토콜 계층에 의해 제공된 기능을 사용하여 서로 통신할 수 있다. 예를 들어, 하이퍼텍스트 전송 프로토콜(HTTP)는 월드 와이드 웹(WWW)과 관련하여 사용되는 일반적인 프로토콜이다. 통상적으로, 범용 자원 위치입력기(URL) 또는 인터넷 프로토콜(IP) 주소와 같은 컴퓨터 네트워크 주소가 서버 또는 클라이언트 컴퓨터들이 서로 식별하기 위해 사용된다. 네트워크 주소는 URL 주소로서 언급될 수 있다. 예를 들어, 통신은 통신 매체를 통해 제공될 수 있다. 특히, 클라이언트와 서버는 대용량 통신을 위한 TCP/IP 접속들을 경유하여 서로 연결될 수 있다.
따라서, 도 1a는 네트워크/버스를 경유하여 클라이언트 컴퓨터들과 통신하는 서버를 가진 대표적인 네트워킹된 또는 분산된 환경을 예시하며, 여기에 본 발명이 사용될 수 있다. 더 구체적으로, 다수의 서버들(10a, 10b, 등)은, LAN, WAN, 인트라넷, 인터넷, 등일 수 있는 통신 네트워크/버스 (14)를 경유하여, 본 발명에 따라 휴대용 컴퓨터, 핸드핼드 컴퓨터, 씬 클라이언트(thin client), 네트워킹된 가전기구, 또는 VCR, TV, 오븐, 전등, 히터 등의 다른 디바이스와 같은 다수의 클라이언트 또는 원격 컴퓨팅 디바이스들(110a, 110b, 110c, 110d, 110e, 등)과 상호접속되어 있다. 따라서 본 발명은 신뢰 소스로부터의 안전한 컨텐츠를 처리, 저장, 렌더링하는 것이 바람직한 것과 관련한 어떠한 컴퓨팅 디바이스에도 적용할 수 있다고 고려된다.
통신 네트워크/버스(14)가 인터넷인 네트워크 환경에서, 예를 들어, 서버들(10)은 클라이언트들(110a, 110b, 110c, 110d, 110e, 등)이 HTTP와 같은 다수의 알려진 프로토콜들 중 임의의 것을 경유하여 통신하는 웹 서버들일 수 있다. 서버들(10)은 또한, 분산 컴퓨팅 환경의 특성일 수 있는 것처럼, 클라이언트들 (110)로서 작용할 수도 있다. 통신들은 적절하다면 유선 또는 무선일 수 있다. 클라이언트 디바이스들(110)은 통신 네트워크/버스(14)를 경유하여 통신할 수도 있고 그렇지 않을 수도 있으며, 그와 연관된 독립 통신들을 가질 수도 있다. 예를 들어 TV 또는 VCR의 경우에, 그것의 제어로 네트워킹되는 양상일 수도 있고 그렇지 않을 수도 있다. 각 클라이언트 컴퓨터(110)와 서버 컴퓨터(10)는 다양한 애플리케이션 프로그램 모듈들 또는 객체들(135)이 갖춰져 있을 수 있고, 다양한 형태들의 스토리지 요소들 또는 객체들로의 접속들 또는 액세스가 갖춰져 있을 수 있으며, 이 접속들 또는 액세스를 통해 파일들이 저장되거나, 이곳으로 파일들의 부분(들)이 다운로드되거나 이동될 수 있다. 따라서, 본 발명은 컴퓨터 네트워크/버스(14)에 액세스하고 그와 상호작용할 수 있는 클라이언트 컴퓨터들(110a, 110b, 등), 클라이언트 컴퓨터들(110a, 110b, 등)과 상호작용할 수 있는 서버 컴퓨터들(10a, 10b, 등), 다른 디바이스들(111) 및 데이터베이스들(20)을 가진 컴퓨터 네트워크 환경에서 사용될 수 있다.
예시적인 컴퓨팅 디바이스
도 1b 및 이하의 논의는 본 발명이 구현될 수 있는 적절한 컴퓨팅 환경의 간략한 일반적 서술을 제공하도록 의도된다. 그러나, 핸드핼드, 휴대용, 및 다른 컴퓨팅 디바이스들과 모든 종류의 컴퓨팅 객체들이 본 발명과 관련된 사용에 고려될 수 있다는 것을 이해해야 한다. 일반적인 목적의 컴퓨터가 이하에 서술되지만, 이것은 단지 한가지 예일 뿐이며, 본 발명은 네트워크/버스 상호운영성 및 상호작용을 가진 씬 클라이언트로 실행될 수도 있다. 따라서, 본 발명은, 예컨대 가전기구내에 위치된 객체와 같은 클라이언트 디바이스가 단순히 네트워크/버스로의 인터페이스로서 작용하는 네트워킹된 환경과 같이, 매우 적은 또는 최소한의 클라이언트 자원들이 포함되어 있는 네트워킹된 호스트 서비스들의 환경에서 실행될 수도 있다. 본질적으로, 데이터가 저장될 수 있거나, 데이터가 검색 또는 렌더링될 수 있는 어느 곳이든지 본 발명의 인증 기술들의 운영을 위한 바람직한 또는 적절한 환경이다.
비록 요구되지는 않았지만, 본 발명은 운영 시스템, 애플리케이션 프로그래밍 인터페이스(API), 및/또는, 본 발명의 인증 기술들을 적용하기 위해 인터페이스로 접속하는 애플리케이션내에 포함된 소프트웨어를 경유하여 실행될 수 있다. 다양한 실시예들에서, 본 발명은 또한, 인터페이싱에 따르는 하드웨어와 이하에서 서술되는 암호화 기술들에 적용한다. 소프트웨어는 프로그램 모듈들과 같은 컴퓨터가 실행가능한 명령들의 일반적인 문맥으로 서술될 수 있으며, 클라이언트 워크스테이션들, 서버들 또는 다른 디바이스들이 동일한 하나 이상의 컴퓨터들에 의해 수행될 수 있다. 일반적으로, 프로그램 모듈들은, 특정 태스크들을 수행하거나 특정 추상 데이터 형태들을 실행하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 데이터 구조들 등을 포함한다. 통상적으로, 프로그램 모듈들의 기능은 다양한 실시예들에서 요구되는 바와 같이 결합되거나 분산될 수 있다. 더우기, 본 기술분야에서 숙련된 자들은 본 발명이 다른 컴퓨터 시스템 구성들과 함께 실행될 수 있다는 것을 높이 평가할 것이다. 본 발명으로 사용하기에 적절할 수 있는 다른 주지된 컴퓨팅 시스템들, 환경들, 및/또는 구성들은 개인 컴퓨터들(PCs), 현금 자동 입출금기들, 서버 컴퓨터들, 핸드핼드 또는 랩탑 디바이스들, 멀티 프로세서 시스템들, 마이크로프로세서 기반의 시스템들, 프로그램가능한 가전 제품들, 네트워크 PC들, 어플라이언스들, 전등들, 환경적 제어 요소들, 소형컴퓨터들, 메인프레임 컴퓨터들 등을 포함하지만, 이에 한정되지는 않는다. 본 발명은, 태스크들이 통신 네트워크/버스 또는 다른 전송 매체를 통해 연결된 원격 처리 매체에 의해 수행되는, 분산 컴퓨팅 환경들에서 또한 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 스토리지 디바이스들을 포함하는 국부 컴퓨터 스토리지 매체와 원격 컴퓨터 스토리지 매체 둘 모두에 위치될 수 있으며, 클라이언트 노드들은 다시 서버 노드들로서 작용할 수 있다.
도 1b는 따라서 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 예를 도시하며, 비록 위에서 명확하게 되었지만, 컴퓨팅 시스템 환경(100)은 적절한 컴퓨팅 환경의 한 가지 예일 뿐이며, 본 발명의 사용 또는 기능의 범위에 관하여 어떠한 제한을 제시하도록 의도되지 않는다. 또한 컴퓨팅 환경(100)은 예시적인 운영 환경(100)에서 도시된 컴포넌트들 중 임의의 것 또는 그 결합에 관한 임의의 의존성 또는 필요조건을 갖는 것으로 이해되어서는 안된다.
도 1b를 참조하면, 본 발명을 실행하기 위한 대표적인 시스템은 컴퓨터(110)의 형태로 일반적 목적의 컴퓨팅 디바이스를 포함한다. 컴퓨터(110)의 컴포넌트들은, 처리 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 처리 유닛(120)에 연결하는 시스템 버스(121)를 포함할 수 있으나, 그에 한정되지 않는다. 시스템 버스(121)는 다양한 버스 아키텍처들 중 임의의 것을 사용하는 국부 버스, 메모리 버스 또는 메모리 제어기, 및 주변 버스(peripheral bus)를 포함하는 여러가지 형태의 버스 구조들 중 임의의 것이 될 수 있다. 제한이 아니라 예로서, 그러한 아키텍처들은 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 강화된 ISA(EISA) 버스, 비디오 전자 표준 연합(VESA) 국부 버스, 및 주변 컴포넌트 상호접속(PCI) 버스 (Mezzanine 버스로도 알져져 있음)을 포함한다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체들을 포함한다. 컴퓨터 판독가능 매체들은 컴퓨터(10)에 의해 액세스될 수 있고 휘발성 및 비휘발성 매체들, 분리형 및 비분리형 매체들 모두를 포함할 수 있는 임의의 이용가능한 매체들일 수 있다. 제한이 아니라 예로서, 컴퓨터 판독가능 매체는 컴퓨터 스토리지 매체들과 통신 매체들을 포함할 수 있다. 컴퓨터 스토리지 매체들은, 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터와 같은 정보의 저장을 위한 어떤 방법 또는 기술로도 실행되는 분리형 및 비분리형, 휘발성 및 비휘발성 매체들 모두를 포함한다. 컴퓨터 스토리지 매체들은 RAM, ROM. EEPROM, 플래시 메모리, 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크들(DVD) 또는 다른 광학 디스크 스토리지, 자기 카세트들, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 제한되지는 않는다. 통신 매체들은 통상적으로 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터를, 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호로 구현하며, 임의의 정보 전달 매체들을 포함한다. 용어 "변조된 데이터 신호"는, 하나 이상의 자신의 특성들 세트를 가지거나 신호 내의 인코드 정보에 관하여 그러한 방식으로 변화한 신호를 의미한다. 제한이 아니라, 예로서, 통신 매체들은 유선 네트워크 또는 집적 연결 접속과 같은 유선 매체와, 음향, RF, 적외선 및 다른 무선 매체들과 같은 무선 매체들을 포함한다. 이러한 것들 중 임의의 결합들 또한 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리의 형태로 컴퓨터 스토리지 매체들을 포함한다. 시동 동안에와 같이 컴퓨터(110)내의 요소들 간에 정보를 전송하는 것을 돕는 기본 루틴들을 포함하는 기본 입력/출력 시스템(BIOS)(133)은 통상적으로 ROM(131)에 저장된다. RAM(132)은 통상적으로, 즉시 액세스가능하고 및/또는 처리 유닛(120)에 의해 현재 작동되는 프로그램 모듈들 및/또는 데이터를 포함한다. 제한이 아니라 예로서, 도 1b는 운영 시스템(134), 애플리케이션 프로그램들(135), 다른 프로그램 모듈들(136), 및 프로그램 데이터(137)를 도시한다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 스토리지 매체들을 포함할 수 있다. 단지 예로서, 도 1b는, 비분리형 비휘발성 자기 매체들로부터 판독 또는 그에 기록하는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)로부터 판독 또는 그에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 다른 광학 매체들과 같은 분리형 비휘발성 광학 디스크(156)로부터 판독 또는 이에 기록하는 광학 디스크 드라이브(155)를 도시한다. 대표적인 운영 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 스토리지 매체들은 자기 테이프 카세트들, 플래시 메모리 카드들, 디지털 다기능 디스크들, 디지털 비디오 테이프, 고상 RAM, 고상 ROM 등을 포함하지만 그것으로 제한되지는 않는다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 통상적으로 인터페이스(150)과 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
이상에서 논의되고 도 1b에서 도시된 드라이브들과 그들의 관련 컴퓨터 스토리지 매체들은, 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들, 및 컴퓨터(110)을 위한 다른 데이터의 스토리지를 제공한다. 도 1b에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 시스템(144), 애플리케이션 프로그램들(145), 다른 프로그램 모듈들(146), 및 프로그램 데이터(147)를 저장하는 것으로서 예시된다. 이들 컴포넌트들이 운영 시스템(134), 애플리케이션 프로그램들(135), 다른 프로그램 모듈들(136), 및 프로그램 데이터(137)과 동일하거나 다를 수 있다는 것을 유념하라. 운영 시스템(144), 애플리케이션 프로그램들(145), 다른 프로그램 모듈들(146), 및 프로그램 데이터(147)는, 최소한 그들이 다른 사본들임을 나타내기 위해 여기에서 다른 숫자들이 주어졌다. 사용자는, 일반적으로 마우스, 트랙볼 또는 터치 패스로서 언급되는 포인팅 디바이스(161)와 키보드와 같은 입력 장치들을 통해 명령들 및 정보들을 컴퓨터(110)에 입력할 수 있다. 다른 입력 디바이스들(도시되지 않음)은 마이크로폰, 조이스틱, 게임 패드, 위성 디쉬(satellite dish), 스캐너 등을 포함할 수도 있다. 이들 및 다른 입력 디바이스들은 종종 시스템 버스(121)에 연결된 사용자 입력 인터페이스(160)를 통해 처리 유닛(120)에 연결되지만, 병렬 포트, 게임 포트, 또는 범용 직렬 버스(USB)와 같이 다른 인터페이스들 및 버스 구조들에 의해 접속될 수도 있다. 노스브리지(Northbridge)와 같은 그래픽 인터페이스(182)는 CPU 또는 호스트 처리 유닛(120)과 통신하는 칩셋이고, 가속 그래픽 포트(AGP) 통신들에 대한 책임을 가정한다. 하나 이상의 그래픽 처리 유닛들(GPUs)(184)는 그래픽 인터페이스(182)와 통신할 수 있다. 이에 관하여, GPU들(184)은 일반적으로 레지스터 스토리지와 같은 온칩 메모리 스토리지를 포함하며, GPU들(184)은 비디오 메모리(186)과 통신한다. 그러나, GPU들(184)은 보조 프로세서(coprocessor)의 한 예일 뿐이며, 따라서 다양한 보조처리 디바이스들이 컴퓨터(110)내에 포함될 수 있다. 모니터(191) 또는 다른 형태의 디스플레이 디바이스는 또한 비디오 인터페이스(190)와 같은 인터페이스를 경유하여 시스템 버스(121)에 접속되며, 이 인터페이스는 다시 비디오 메모리(186)와 통신할 수 있다. 일반적으로, 취약한 것은 컴퓨팅 디바이스의 이 부분이고, 따라서 본 발명은 그에 부수되어 처리되거나 렌더링되는 데이터의 보호 및 비밀성을 제공한다. 모니터(191)에 부가하여, 컴퓨터들은 또한 스피커들(197) 및 프린터(196)과 같은 다른 주변 출력 디바이스들을 포함하며, 이 디바이스들은 출력 주변 인터페이스(195)를 통해 접속될 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)과 같은 하나 이상의 원격 컴퓨터들로의 논리적 접속들을 사용하는 네트워킹되거나 분산된 환경에서 작동할 수 있다. 원격 컴퓨터(180)은 개인 컴퓨터, 서버, 루터, 네트워크 PC, 동등 디바이스, 또는 다른 일반적인 네트워크 노드일 수 있으며, 비록 메모리 스토리지 디바이스(181)만이 도 1b에 예시되었지만, 통상적으로 컴퓨터(110)에 관련된 이상에서 서술된 많은 요소들 또는 모든 요소들을 포함할 수 있다. 도 1b에서 도시된 논리적 접속들은 근거리 네트워크(LAN)(171) 및 광역 네트워크(WAN)(173)을 포함하지만, 또한 다른 네트워크들/버스들을 포함할 수도 있다. 그러한 네트워킹 환경들은 집들, 사무소들, 기업-범위의(enterprise-wide) 컴퓨터 네트워크들, 인트라넷들, 및 인터넷에서 흔한 일이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(180)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 통상적으로 모뎀(172)이나, 인터넷과 같이 WAN(173)을 통해 통신들을 설정하기 위한 다른 수단을 포함한다. 모뎀(172)은 내부 또는 외부에 있을 수 있으며, 사용자 입력 인터페이스(160) 또는 다른 적절한 메커니즘을 경유하여 시스템 버스(121)에 접속될 수 있다. 네트워킹된 환경에서, 컴퓨터(110)과 관련하여 도시된 프로그램 모듈들 또는 그의 부분들은 원격 메모리 스토리지 디바이스내에 저장될 수 있다. 제한이 아니라 예로서, 도 1b는 메모리 디바이스(181)상에 상주하는 것으로서의 원격 애플리케이션 프로그램들(185)를 예시한다. 도시된 네트워크 접속들은 대표적인 것이며 컴퓨터들 간의 통신 링크를 설정하는 다른 수단이 사용될 수 있다는 것이 인식될 것이다.
예시적인 분산 컴퓨팅 프레임워크들 또는 아키텍처들
다양한 분산 컴퓨팅 프레임워크들이 있어 왔고, 개인 컴퓨팅과 인터넷의 융합의 견지에서 개발되고 있다. 개인들 및 사업적인 사용자들에게 애플리케이션들 및 컴퓨팅 디바이스들을 위한 고르게 상호운용하고 웹이 가능한 인터페이스가 동일하게 제공되며, 이것은 컴퓨팅 활동들이 점점 더 웹 브라우저 또는 네트워크 지향으로 되도록 만든다.
예를 들어, 마이크로소프트사의 .Net platform은 서버들, 웹 기반의 데이터 스토리지와 같은 빌딩 블록 서비스들, 및 다운로드가능한 디바이스 소프트웨어를포함한다. 일반적으로 말하면, 상기 .Net platform은 (1) 전체 범위의 컴퓨팅 디바이스들이 함께 작동하도록 만들며, 사용자 정보를 자동적으로 업데이트하고 상기 디바이스들 상에 동기화시키는 능력, (2) HTML보다 오히려 XML를 더 많이 사용함으로서 인에이블링되는, 웹 사이트들을 위한 증가된 상호작용 능력, (3) 이메일 또는 예컨대 Office.Net과 같은 소프트웨어와 같이 다양한 애플리케이션들의 관리를 위해 중앙의 시작점으로부터 사용자로 제품들 및 서비스들을 전달하는 것과 커스터마이징(customize)된 액세스를 특징으로 하는 온라인 서비스들, (4) 사용자들 및 디바이스들 간의 정보의 동기화뿐 아니라 효율성 및 정보로의 액세스 용이성을 증가시킬, 집중 데이터 스토리지, (5) 이메일, 팩스들, 및 전화들과 같은 다양한 통신 매체들을 통합하는 능력, (6) 개발자들에게 있어, 재사용 모듈들을 생성하여 생산성을 증가시키고 프로그래밍 에러의 수를 감소시키는 능력, 및 (7) 게다가 다수의 다른 교차-플랫폼 통합 특성들을 제공한다.
여기에서 대표적인 실시예들은 컴퓨팅 디바이스 상에 상주하는 소프트웨어에 의해 실행되는 방법과 관련하여 일반적으로 서술되는 반면에, 본 발명의 하나 이상의 부분들은 또한 운영 시스템, 애플리케이션 프로그래밍 인터페이스(API), 또는 보조프로세서와 침범되지 않은 컨텐츠 간의 "중간자(middle man)"를 경유하여 실행될 수 있으며, 그에 따라 신뢰 컨텐츠 서비스들은 .NET의 언어들 및 서비스들 모두에 의해 수행되거나, 지원되거나, 그들 모두를 경유하여 액세스될 수 있으며, 다른 분산 컴퓨팅 프레임워크들에서도 마찬가지이다. 더우기, 본 발명에 따라 서술된 하나 이상의 기술들은, 그 기술들에 적응시키기 위해 GPU에서의 변화들과 같은 하드웨어에서의 변화들을 포함할 수 있다.
안전한 컨텐츠의 암호적 보호
'ZZZ 출원의 신뢰 그래픽 플랫폼은, 비인가된 복제를 방지하는 방법으로 컨텐츠의 재생을 인에이블링하고 손댐 방지 비밀 대화들과 같은 "신뢰 그래픽" 애플리케이션들을 인에이블링하기 위해 운영 시스템, 또는 임의의 플랫폼을 증가시키기 위한 방법들 및 시스템들을 제공한다. 본 발명에 의해 해결되는 문제는 도 2에 의해 도시되어 있으며, 여기서 암호화된 고급 컨텐츠(200)는 신뢰 소프트웨어 애플리케이션(TS)으로 전달되거나 신뢰 소프트웨어 애플리케이션(TS)에 의해 생성되는 것으로 도시되고 있다. 신뢰 소프트웨어(TS)의 사용에 부수하여, 컨텐츠(200)은 렌더링 디바이스(295)를 경유하는 컨텐츠(200)의 렌더링(또는 다른 사용) 이전에 GPU(265)의 기능을 포함할 수 있다. 그러한 컨텐츠(200)는 GPU(265)에 의한 처리를 위해 시스템 또는 호스트 메모리(230)로부터 비디오 메모리(260)로 전달될 것이다. 도 2 의 점선은 보안 문제가 어디에 있는지를 나타낸다. 종래기술에서 언급되었듯이, 점선에 의해 둘러싸인 요소들을 통해 컨텐츠가 보호되고 비밀이 유지되도록 전달되는 것을 적절하게 보증하는 시스템은 현재 존재하지 않는다. 신뢰 소프트웨어(TS)의 관점에서, 본 발명에 의해 해결되는 제1 의 문제는 컨텐츠가 GPU로 핸드오프되기 전에 점선 내부의 컴포넌트들이 컨텐츠를 가지고 신뢰될 수 있는가 여부이다. 신뢰 소프트웨어(TS)가 점선 내부의 컴포넌트들을 적절히 인증할 수 있다고 가정하면, 신뢰 소프트웨어(TS)의 관점에서 'ZZZ 특허 출원에 의해 해결되는 제2 의 문제는, 신뢰 소프트웨어(TS)가, 일단 데이터가 점선 내부로 핸드오프되면 그 데이터가 변경되지 않을 것이라는 것을 상당히 확신할 수 있어야 한다는 것이다. 본 발명은 이하에서 서술되는 다양한 실시예들에서 두 형태의 문제들을 모두 해결한다. 먼저, 본 발명에 따라 인증 서비스들을 제공하는 시스템들 및 방법들이 서술된다. 그리고 나서, 다양한 방법으로, 신뢰 그래픽 플랫폼의 방법들 및 시스템들이 (1) 오버레이 표면들의 컨텐츠들을 암호화하고 (2) GPU가 암호화된 컨텐츠에 대해 작동할 수 있도록 하면서 비신뢰된 애플리케이션들 또는 당사자들이 상기 컨텐츠를 이용하지 못하도록 하고 (3) 명령 버퍼들의 컨텐츠를 암호화함으로서 실행된다.
그래픽 카드의 인증
본 발명에 의해 해결되는 신뢰 그래픽 처리 및 렌더링 문제에 관한 제1 관점은 암호(때때로 여기서 'crypto'로 언급됨) 프로세서 및 인덱스 키 관리의 제공에 관한 것이다.
이에 관하여, 안전 그래픽 카드들은 그 자체로 자신을 인증할 수 있어야 한다. 특히, 신뢰 소프트웨어는 안전 그래픽 카드를 전통적인 그래픽 카드 또는 속임수(spoof)와 같은 우회(circumvention) 디바이스로부터 구별할 수 있어야 한다. 게다가, 신뢰 소프트웨어는 그래픽 카드에게 암호 키들을 밝힐 수 있어야 하고, 키들의 수신자가 정말로 안전 그래픽 카드인지 검증할 수 있어야 한다. 이를 위하여, 안전 그래픽 카드들은 본 발명에 따른 암호 프로세서를 갖추고 있으며, 암호 프로세서는 인증의 암호 태스크들 및 키 전송을 수행한다.
하드웨어에 대하여, 암호 프로세서들이 본 발명에 따라 제공되며, 이것은 제조동안 개별화되고 인증된다. 각 암호 프로세서는 고유 개인 복호화 키(unique private decryption key) Kpriv를 포함한다. 많은 상이한 암호화 및 복호화 알고리즘들이 본 발명에 따라 고려되고 암호 기술분야에서의 당업자들에게 주지되어 있지만, 문맥에 있어서, 여기서 서술된 알고리즘은 RSA이고 키 길이는 1024 비트이고 이것들은 모두 비제한적인 설계 선택들이며, 이것은 애플리케이션 및 소망되는 보안 레벨(들)에 의존하여 주지된 트레이드오프(tradeoff)들에 따라 맞춰질 수 있다.
이에 관하여, 암호 프로세서는 이것을 기존 칩에 부가하거나 카드에 별개의 칩으로서 부가함으로서 그래픽 카드에 영구적으로 부착될 수 있다. 암호 프로세서는, 이하에서 더욱 상세히 서술되는 바와 같이, 공개 키 암호 알고리즘을 실행하고 고유 개인 키를 감춘다. 이에 관하여, 그러한 암호 프로세서는 오늘날의 실리콘 기술들로 신속하게 공개 키 복호화를 수행할 수 있다. 그러나, 암호 프로세서는 또한 공개 키 가속기를 포함할 수도 있으며, 대칭 암호(AES) 및 몇가지 제어 논리를 실행할 수도 있다.
한가지 대표적이고 비제한적인 실시예에서, 암호 프로세서는 다음의 휘발성 레지스터들을 포함한다: (1) 세션 키를 위한 256 비트 레지스터 S. 이 키의 수명은 통상적으로 신뢰 소프트웨어의 실행 시간이고 (2) 다수의 인덱스 키들의 배열이다. 각 키는 특정 창과 연관되어 있고 그 컨텐츠들을 복호화하기 위해 그래픽 카드에의해 사용된다. 각 키의 수명은 신뢰 소프트웨어로부터의 명령들에 의해 좌우된다.
언급된 바와 같이, 본 발명의 암호 프로세서는 그래픽 카드에 영구적으로 부착된다. 따라서, 그 암호 프로세서의 기능을 사용하기 위해 암호 프로세서와 안전하게 인터페이싱하는 수단이 요구된다. 암호 프로세서와 인터페이싱하는 것에 관하여, 본 발명은 적어도 두 가지 기술들을 고려한다: (a) 신뢰 소프트웨어(TS)로의 외부 인터페이스와 (b) GPU(265)로의 인터페이스. 전자의 인터페이스는 - 적어도 그 암호 관점들에 있어서 - 표준화되어야 한다. 후자의 인터페이스는 특정의 실행이 될 수 있지만, 이하에서 제시되는 전체 가이드라인들에 부합해야 한다.
외부 인터페이스 구현에 대하여, 외부 인터페이스는 인증 및 키 전송을 위하여 개인 키(PK) 암호화 프로토콜을 사용한다. 이러한 프로토콜 하에서, 신뢰 소프트웨어(TS)는 암호 프로세서의 공개 키로 세션 키를 암호화한다. 암호 프로세서는 그 결과적인 크립토블로브(cryptoblob)를 수신하고 이것을 개인 키로 복호화하여 세션 키를 획득한다. 그후 신뢰 소프트웨어와 암호 프로세서는 비밀을 공유한다. 신뢰 소프트웨어는 명령어들을 암호 프로세서에 송신하기 위해 이 세션 키를 사용할 수 있다.
한 가지 비제한적인 실시예에서, 외부 인터페이스는 암호 프로세서에 의한 이하의 함수들을 통해 드러난다:
함수 SetSessionKey()는 초기 인증 단계 및 키 전송을 수행한다. 이것은 암호 프로세서의 공개 키 기능에 액세스하는 유일한 함수이다. 따라서, 한 가지 실시예에서, 본 발명은 이 함수를 부트(boot) 당 한번 호출한다고 고려한다. 이하의 대표적인 의사코드(pseudocode)는 SetSessionKey()의 한 가지 비제한적인 실행을 나타낸다:
SetSessionKey( cryptoblob ) {
PKDecrypt( privateKey, cryptoblob, sessionKey );
}
상기 연산의 성공적인 완료후에, 세션키(sessionKey) 레지스터는 크립토블로브(cryptoblob)로부터, 256 비트 키와 같은 키를 포함한다. 공개 키 알고리즘은 예를 들어 1024 비트 RSA일 수 있다.
일단, 대칭 세션 키 K가 신뢰 소프트웨어와 암호 프로세서 간에 설정되었으면, 이 키는 암호 프로세서와의 통신을 더욱 더 보안하는 데 사용될 수 있다. 신뢰 소프트웨어와 암호 프로세서는 간단한 읽기(Get) 및 설정(Set) 방법들에 의해 통신할 수 있으며, 상기 방법의 매개변수들은 비밀성 및 무결성을 위해 암호적으로 보호된다. 특히, 각 호출의 매개변수 블록 B는 이하의 비제한적인 방법으로 처리될 수 있다:
AES( M |HMAC( M, K1), K2 ),
여기서:
K1은 K의 제1 절반 (0비트에서 127비트)이다.
K2는 K의 제2 절반 (128비트에서 255비트)이다.
AES(M,K)는 CBC모드에서 AES로 키 K 하에서 메시지 M을 암호화한 결과이다.
HMAC(M,K)는 적절한 해시(hash) 함수를 통해 적절한 메시지 M 상에 키 K로HMAC 를 컴퓨팅한 결과이다.
A|B 는 A와 B를 접합(concatenating)한 결과이다.
이 포맷은 입력 매개변수들과 이하의 함수들의 출력 매개변수들을 위해 사용될 수 있다:
Set( [IN]BOOL needsAck, [IN]BITS128 nonce, [IN]ENUM protertyID, [IN]BYTESEQUENCE propertyParameters, [OUT]BYTESEQUENCE ack )
여기서:
needsAck는 부울 값(boolean value)이며, 이것은 신뢰 소프트웨어가, 응답( acknowledgement)이 필요한지 여부를 명령하도록 허용한다.
nonce는 신뢰 소프트웨어에 의해 선택된 128비트 값이다. nonce는 응답이 요청되었다면 그 응답에 사용될 수 있다.
propertyID는 특성을 식별하고, 이것은 설정되고 있다. 지원되는 특성들의 예시적인 목록이 이하 표 1에서 주어진다.
propertyParameters는 일련의 매개변수들이며, 이것은 각 propertyID에 고유한 것이다.
마지막으로, Ack는 연산의 응답이다. 암호 프로세서는 needsAck가 설정되었다면 Ack를 생성한다. Ack는 뒤에 메시지가 따르는 nonce로 구성되며, 이것은 각 propertyID에 고유하다.
특성 ID 요구들 응답 (Needs Ack) 매개변수들 응답들
인덱스 키 인덱스, 키, 목적 Ok, 실패
출력 잠금 {잠금, 열림} 잠금 연산이후의 상태
L2KEYMGMT 갱신 주파수 Ok, 실패
표 1 - Get 함수를 위한 특성 ID들의 목록
인덱스 키 특성 ID에 대하여, 이 방법은 새로운 키와 목적 태그를 인덱스에 의해 식별된 키 레지스터에 기록한다.
출력 잠금(lock) 특성 ID에 대하여, 이 방법은 출력 잠금 플래그를 설정한다. 이 플래그가 설정되면, 그래픽 카드 출력(VGA, DVI)뿐 아니라 스크린 기하학(폭, 높이, 색 깊이, 재생율)도 변경될 수 없다. 특히, 그래픽 카드는 출력 잠금 플래그가 설정되는 동안에는 이 설정들을 변경하기 위해 명령들을 수행하지 않을 것이다.
L2KeyMgmt 특성 ID에 관하여, 이 방법은 본 발명에 따라 서술된 보호의 제2 계층, 즉, 이하에서 더 상세하게 서술되는 입력들 및 출력들의 암호화 하에서 주파수를 설정한다.
유사하게, 읽기 함수가 다음과 같이 제안된다:
Get( [IN]BITS128 nonce, [IN]ENUM propertyID, [IN]BYTESEQUENCE propertyParamters, [OUT]BYTESEQUENCE response )
여기서:
nonce는 응답에 사용되기 위하여 신뢰 소프트웨어에 의해 선택된 128 비트 값이다.
propertyID는 특성을 식별하며, 이것은 설정되고 있다. 지원된 특성들의 목록은 이하 표 2에서 주어진다.
propertyParameter들은 일련의 매개변수들이며, 이것은 각 propertyID에 고유하다.
응답은 연산의 결과를 포함한다. 응답은 뒤에 메시지가 따르는 nonce로 구성되어 있으며, 이것은 각 propertyID에 고유하다.
특성 ID 매개변수들 반응
출력 포트들 키 인덱스 VGA, AGP, 등
인증 코드 키 인덱스 X-비트 수
DX-SEC 버전 없음 버전 수
안전 표면 카운트 없음 지원된 안전 표면들의 수
중첩 표면 카운트 없음 지원된 중첩 표면들의 수
1차 형태 없음 1
기하학 없음 1차 표면의 색 깊이, 폭, 높이, 재생률
표 2 - 설정 함수를 위한 특성 ID들의 목록
출력 포트들에 대하여, 이 법은 예컨대 VGA, DVI, 등의 그래픽 카드 출력들의 설정을 복귀시킨다.
인증 코드에 대하여, 이 방법은 본 발명에 따라 서술되는 보호의 제1 계층, 즉 오버레이들의 암호화에 따라 창의 컨텐츠들의 해시를 복귀시킨다.
DX-SEC 버전에 대하여, 이 방법은 그래픽 카드에 의해 지원되는 DX-SEC의 버전을 복귀시킨다.
안전 표면 카운트에 대하여, 이 방법은 그래픽 카드에 의해 지원되는 안전 표면들의 수를 복귀시킨다.
중첩 표면 카운트에 대하여, 이 방법은 그래픽 카드에 의해 지원되는 중첩 안전 표면들의 수를 복귀시킨다.
1차 형태에 대하여, 이 방법은 1을 복귀시키고 미래 유연성을 제공한다.
기하학에 대하여, 이 방법은 1차 표면의 색 깊이, 폭, 높이 및 재생률을 복귀시킨다. 설정 함수는 보호되는 영역 오버레이의 위치 또는 크기를 설정하거나, 복호화되어야 하는 1차 표면의 일부(fraction)의 위치 및 크기를 설정하는 방법을 더 포함할 수 있다.
따라서, 상기의 설정세션키(SetSessionKey), 읽기(Get) 및 설정(Set) 함수는 외부 인터페이스의 비제한적인 실시예들에 관한 것이다. 용어 "내부 인터페이스"는 암호 프로세서와 그래픽 카드의 나머지 간의 인터페이스를 말한다. 본 발명에 따른 이러한 종류의 인터페이스의 세부사항들은 다음의 제한들을 조건으로하여, 각 개별적인 그래픽 카드의 구현에 달려 있다: (1) 암호 프로세서는 그래픽 카드에 대해 영구적으로 보안될 수 있어야 하며, (2) 암호 프로세서와 그래픽 카드의 나머지 간의 접속은 노출되지 않아야 한다.
이에 관하여, 그래픽 카드에서 암호 프로세서를 분리하는 것이 자주 있어서는 안된다. 암호 프로세서가 별개의 칩으로서 구현되다면, 이것은 주로 암호 프로세서를 그래픽 카드에 부착하는 기계적 인터페이스에 있어서의 제한이 된다. 통상적으로, 암호 프로세서는 그래픽 카드상에 솔더링(solder)되어야 한다. 대안적으로, 암호 프로세서는 주 GPU와 동일한 칩 상에 상주할 수 있다. 예컨대, 스마트 카드 판독기들, 소켓 실장들 등과 같이 암호 프로세서가 분리되도록 허용하는 표준화된 기계적 인터페이스들의 사용은 수용될 수 없다.
더우기, 암호 프로세서와 그래픽 카드의 나머지 간의 물리적 접속은 액세스할 수 없어야 하고 표준 인터페이스들을 통해 노출되지 않아야 한다. 예를 들어, 이 버스 상의 USB 접속기는 본 발명에 따라 수용될 수 없다.
키 관리를 위한 규칙들에 대하여, 각 인덱스 키는 오직 그것의 관련 목적 매개변수에 따라 사용될 수 있다. 한 가지 실시예에서, 목적 매개변수의 값들은 다음의 의미들을 갖는다:
LISTEAM: 이 키는 오직, 본 발명에 의해 제공되는 보안의 제1 계층, 즉 오버레이들의 암호화와 관련하여 이하에서 논의되는 DX-SEC 스트림 암호와 함께 사용될 수 있다.
L2BLOCK: 이 키는 오직, 본 발명에 의해 제공되는 보안의 제2 계층, 즉 이하에서 논의되는 입력들 및 출력들의 암호화의 ECB 모드에서 블록 암호와 함께 사용될 수 있다. ECB 모드에서의 블록 암호는 소프트웨어에 의해 기록된 텍스처 블록들을 복호화하는 데 사용된다.
이에 관하여, 인덱스가 새로운 값으로 채워졌다면, 키들의 어떤 복사본들도 유지되지 않아야 한다.
대안적인 키 설정 메커니즘은 키 전송을 위한 플랫폼 하드웨어에 내장된 신뢰 경로이다. 예를 들어, 안전 그래픽 카드의 소프트웨어 또는 하드웨어 요청 인증이, 예컨대 주소 0x12345678에 기록한 신뢰 플랫폼 보증서들(guarantees)이 항상 비디오 카드 키 스토어로 맵핑된다는 것을 미리 안다면, 그때 암호 프로세서가 세션 키를 안전하게 송신하는 것은 불필요하며, 그 이유는 이러한 "폐쇄 경로"가 대신 활용될 수 있기 때문이다. 이러한 대안은 벌크 안전 채널을부트스트랩(bootstrap)하는 데 작은 안전 통신 메커니즘을 사용할 수도 있다. 그러한 안전 통신 메커니즘은 저대역 접속일 수 있다.
다른 구현으로는 벌크 데이터 전송 메커니즘이 보호되는 것이다. 예를 들어, 이하에 서술된 안전 오버레이 시스템들에서, 안전 애플리케이션 또는 디바이스는 비디오 데이터를 비디오 카드에 직접적으로 송신하기 위해 보호 경로를 사용한다 (우리는 a) 암호 프로세서, 또는 b) 위에서 서술된 키 교환을 위한 안전 경로를 사용하여 행하는 안전 키-교환 단계를 피함).
'ZZZ 특허 출원에서 서술된 바와 같은 신뢰 그래픽 플랫폼은 이하에서 서술되고 암호화된 오버레이들, 암호화된 입력들 및 출력들, 그리고 암호화된 명령 버퍼들을 포함한다. 그러한 신뢰 그래픽 플랫폼은 대표적인 목적들을 위해 이하에서 서술되며, 본 발명의 인증 기술들은 신뢰 그래픽 플랫폼의 다양한 실행들에 적용될 수 있다.
보안의 제1 단계 - 암호화된 오버레이들
비디오 메모리는 CPU 상에서 실행하는 비신뢰 소프트웨어에 의해 맵핑되고 판독될 수 있기 때문에, 비디오 메모리는 평문(plaintext) 형태로 정보를 포함할 수 없다. 이런 조건에 종속되는 비디오 메모리는 디스플레이를 재생하는 데 사용된 비디오 메모리를 포함한다. 이 기준을 만족시키는 시스템의 초기 실행은 오버레이 표면의 컨텐츠들을 암호화한다. 그리고 나서 오버레이는, 이미지가 디스플레이로 송신될 때, DAC 하드웨어에 의해 플라이(fly) 상에서, 또는 DAC 하드웨어에 도달하기 직전에 복호화된다.
도 3a는 그러한 기술의 대표적인 실행을 예시한다. 암호화된 고급 컨텐츠(200)는, 그것으로부터 신뢰 소프트웨어 애플리케이션(210)으로 흔히 어디에서 발견되거나 생성되든지, 신뢰 애플리케이션(210)에 의해 수신된다. 암호 프로세서(220)과의 인증 교환은, 대표적인 실시예들에서 위에서 서술된 인증 교환 과정(들) 같이 뒤이어 발생하거나, 암호나 다른 수단에 의해 보호되는 경로를 경유하는 것과 같은 안전 키 전달을 위한 임의의 다른 기술에 의해 뒤이어 일어날 것이다. 컨텐츠(200)은 시스템 메모리(230)으로부터 암호화된 오버레이 표면(240)으로 전달되고, 오버레이 표면(240)은 비디오 메모리(260)의 1차 표면을 오버레이한다. 암호 프로세서(220)과 관련하여, GPU(265)의 복호화 부분(250)은 암호화된 오버레이(240)에 의해 제공된 암호화 계층을 복호화하고, 모니터와 같은 렌더링 디바이스로의 출력을 위한 디지털 비디오 인터페이스(DVI)/ 디지털-아날로그 컨버터(DAC)(290)로 출력하기 위해 컨텐츠를 화소 선택(280)으로 전달한다. 그러나, 도 3a에 도시된 시스템은 한가지 오버레이만 존재하기 때문에 위에서 서술된 모든 기준을 만족시키지 못한다. 신뢰 창들과 같은 신뢰 환경을 위한 필요한 최소한의 바(bar)를 만족시키기 위해, 대안적인 구현에서는 두 개의 오버레이들이 번갈은 실시예에서 인에이블링된다. 제1 의 "비밀" 오버레이는 기본적으로 오늘날 주로 비디오를 재생하기 위해 플랫폼들에 존재하는 오버레이이며, 그것의 컨텐츠들이 암호화될 수 있도록 증가된다. 제2 오버레이는 전자 상거래 대화들과 같은 민감한 사용자 인터페이스를 제공하기 위해 특정적으로 설계된다. 이러한 '보호 오버레이'는항상 온칩이며 명료하고(non-obscurable)(즉, 컬러 키잉이 없음(no color keying)), 제1 오버레이보다 우선한다. 제2 오버레이는 비용을 최소화하기 위해 어떤 제한들이 가해질 수도 있다. 예를 들어, 제2 오버레이는 데이터가 1차 표면과 동일한 화소 포맷으로 되고, 연장되거나 다중 버퍼링될 수 있도록 제공될 수 있다. 게다가, 보호된 오버레이의 컨텐츠들은 하드웨이에 의해 검증될 수 있다. 표 3는 비밀 오버레이와 보호된 오버레이 간에 대표적인 차이들을 요약한다.
항목 비밀 오버레이 보호된 오버레이
1차 표면과 동일한 포맷 아니오
연장될 수 있는가? 아니오
수신지 컬러키잉될 수 있는가? 아니오
다중 버퍼링될 수 있는가? 아니오
항상 온칩인가? 아니오
컨텐츠들이 검증될 수 있는가? 아니오
표 3 - 비밀 오버레이와 보호된 오버레이의 대조
도 3b는 비밀 오버레이 플립핑 체인(310)의 오버레이들 310a, 310b 및 310c와 같은 비밀 오버레이들과 보호된 오버레이들 둘 모두를 포함한다. 가능하다면, 스트림 암호들은 안전 표면 암호화를 위해 사용되고, 이것은 스트림 암호들이 블록 암호들보다 실행하기 더 빠르고 간단하기 때문이다 (보다 상세한 것은 부록 A를 볼 것). 스트림 암호들은 "스트림에서 바이트의 위치" 에 기초하여 데이터를 암호화한다. 따라서, 보안의 제1 레벨은 표면의 상위 왼쪽 모서리에서 화소 암호화 키로 스트림 암호를 초기화한다. 스트림 암호는 화소가 디스플레이될지 여부에 관계없이 오버레이 표면내에 포함된 모든 화소에 대해 제출된다. 제안된 스트림은 두 개의 스트림 암호 복호화 컴포넌트들(300a, 300b)을 포함하며, 각각 하나는 비밀 오버레이를 위한 것이고 하나는 보호된 오버레이를 위한 것이다. 일단 복호화된 화소 값들을 이용할 수 있으면, 하드웨어(280)는 보호된 오버레이(320), 비밀 오버레이(310) (만약 1차 표면(270)이 컬러 키와 동일 및/또는 컬러 키잉(color keying)이 인에이블링된다면) 또는 1차 표면(270)의 화소 값을 선택하고, 화소 값을 DVI/DAC(290)을 경유하여 디스플레이 하드웨어에 송신한다.
적(adversary)에 의해 기록된 데이터 또한 복호화될 것이기 때문에, 적은 임의의 수의 수단에 의해 오버레이들에 액세스할 수 있고, 그로 인해 디스플레이된 이미지를 볼수 없도록 만들거나 안전한 컨텐츠를 잡음 컨텐츠로 대체한다는 것이 주의된다. 현재 서술된 신뢰 그래픽 플랫폼은 이 공격들에 직접적으로 방어하지 않는 반면, 예상 컨텐츠가 최종 사용자에게 제공되었다는 것을 보증하기 위해 무결성 검사를 준비한다. 따라서, 출력이 입력 이외의 것이라면, 사용자 또는 신뢰 소프트웨어(210)는 컨텐츠에 손댐(tampering)이 있었음을 경고받을 수 있다.
오버레이들로의 소프트웨어 인터페이스에 대하여, 소스 및 수신지 바운딩 박스(destination bounding box), 수신지 컬러 키, 등과 같은 평범한 오버레이 정보 외에, 비밀 오버레이(310)는 암호화 키 인덱스가 지정되는 것을 주장하고, 보호된 오버레이(320)는 복호화된 오버레이 컨텐츠의 주기적 덧붙임 코드(CRC)가 기록되어야 하는 메모리 위치가 지정되는 것을 부가적으로 주장한다.
플립 방법이 오버레이 백 버퍼(310a), 즉 데이터가 플리핑되고 있는 버퍼의 컨텐츠들의 암호화 키 인덱스를 지정한다는 것을 제외하고, 비밀 오버레이 인터페이스는 기존의 오버레이들과 유사하다.
보호된 오버레이 인터페이스는 보다 단순하며, 표면의 CRC가 처음 디스플레이 된 이후에 메모리 위치로 보내지도록 준비한다. 표준화된 하드웨어 인터페이스는 오버레이의 위치를 제어하며 CRC가 폴링 기반상에서 흥미있는 소프트웨어에 이용될 수 있도록 만든다. 예를 들어, 한 개의 레지스터가 CRC가 이용가능한지 여부를 지시할 수 있고, 또 다른 레지스터가 CRC를 판독되도록 할 수 있다. 예를 들어, 다음의 대표적인 의사코드가 보호된 오버레이 인터페이스와 관련하여 사용될 수 있다:
HRESULT UpdateOverlay (LPPOINT ppntUL) ;
여기서:
ppntUL은 보호된 오버레이의 상위 왼쪽 모서리를 지정한다.
이에 관하여, 소프트웨어(210)은 무결성과 관련된다면 예상되는 CRC 값을 계산한다.
보안의 제2 계층 - 암호화된 입력들 및 출력들
암호화된 컨텐츠를 입력으로서 다루고 암호화된 컨텐츠를 출력으로서 방출하도록 GPU(265)를 증가하기 위해, 암호화 및 복호화 하드웨어가 (입력측 상의) 텍스처 맵핑 유닛과 (출력측 상의) 알파 블렌딩 유닛에 부가되고, 하드웨어 설계자들은 이 기능을 실행하는 데 몇가지 규칙들을 따르도록 협조한다. 스트림 암호들은 암호화된 데이터로의 랜덤 액세스를 인에이블링할 수 없기 때문에, 시스템은 블록 암호들을 사용하며, 예컨대 한번에 128비트들과 같이, 데이터를 암호화한다. 텍스처 맵핑 유닛은 캐시 라인 필(cache line fill) 상에서 복호화하며, 알파 블렌딩 유닛은컬러 버퍼로부터 캐시 라인을 판독할 때 복호화하고 기록전에 암호화한다. 이 연산들에 사용된 암호화 키들은 다를 수 있다.
비디오 디코딩과 같은, 3D 렌더링 이외의 계산 태스크들은 방금 서술된 패러다임의 직접적인 확장들이다. 텍스처들 대신에, 비디오 매크로블록들은 암호화된 입력으로서 작용하고; 컬러 버퍼 대신에, 디코딩되고 있는 출력 프레임은 암호화된 출력으로서 작용한다. 컨텐츠가 대역 내 명령 스트림으로 GPU(265)에 전달될 때 그 컨텐츠가 보호되어야 한다면, 명령 버퍼가 또한 얼마다 암호화될지 여부가 이하에 서술된다.
도 4a는 전단 연산(front end operation)을 수행하고, 암호화 및 복호화 컴포넌트(440)를 경유하여 입력으로서 암호화된 표면(420)을 취하고 출력으로서 암호화된 표면, 즉 암호화된 텍스처 및 컬러 버퍼 기술의 전단을 방출하는, 방금 서술된 시스템을 도시한다. 암호화된 텍스터(400a)가 더 제공되고, 반면에 텍스처(400b)는 비디오 메모리(260)의 전형적인 텍스처일 수 있다. 암호화된 텍스처(400a)는 GPU(265)의 복호화 컴포넌트(450)로 출력하고, 복호화 컴포넌트(450)는, 텍스처를 복호화하고 컴포넌트(430a)로 음영 등과 같은 그래픽 알고리즘들을 컴포넌트(440)로부터의 복호화된 데이터에 적용하기 위해, 암호 프로세서(220)와 함께 연산한다.
복합된 페이지 플리핑 데스크톱(page flipping desktop)의 전개를 예상할 때, DAC 하드웨어가 위에서 서술된 오버레이 표면들(310, 320) 뿐 아니라 1차 표면(270)도 복호화할 수 있다고 가정하면, 방금 서술된 도 4a의 시스템은 데스크톱 전체를 보호할 수 있다. 그러한 경우에 DAC 하드웨어는 스트림 암호보다 오히려 블록 암호를 사용하여 복호화한다는 것이 주의된다. 그러한 시스템은 임의의 Z 오더링, 블렌딩, 또는 심지어 보안을 손상시키지 않고 그들에 적용된 3D 또는 다른 효과들로, 임의의 수의 비밀 표면들이 데스크톱에 참여할 수 있게 한다. 항상 온칩이어야 하고 그 표면들의 컨텐츠들이 검증될 수 있는, 보호된 오버레이 표면들(320)은 별개의 표면들에 상주한다. 위에서 서술된 비밀 오버레이(310)는 안전 페이지 플리핑 데스크톱, 또는 플랫폼에 의해 소프트웨어에서 모방될 수 있을 때까지 잔존한다.
한 가지 실시예에서, 1차 표면(270)을 복호화할 수 있는 것에 부가하여, 시스템은 또한 GPU(265)가 신뢰 단어 프로세서들과 같은 평범한 데스크톱 애플리케이션들로부터의 평문들을 암호화 할 수 있을 것을 요구하며, 따라서 그들은 또한 데스크톱에 참여할 수 있다. 그러므로, 1차 표면들은 데스크톱 합성기(430)에 의해 연산되고, 각각 그것으로부터의 출력/그것으로의 입력을 위한 암호화/복호화 컴포넌트(440a)에 의해 보호될 수 있다. 암호 프로세서(220)와의 통신에서, 복호화 컴포넌트(500)은 그후 DVI/DAC(290)으로의 출력을 위한 앞(front) 표면(510b)을 복호화한다. 이것은 시스템을 임의 형태들의 공격에 노출시키고, 그것은 보안을 보증하는 것에 대하여 이하에서 상세히 설명될 것이며, 여기서 이러한 공격들에 방어하기 위한 몇가지 전략들이 논의된다.
도 4c는 도 4b에 대한 대안을 도시하며, 여기서 비밀 오버레이 플리핑 체인(310)으로의 옮겨쓰기(transcription)가 초래된다. 따라서, 1차 표면(270)을암호화하는 것의 대안으로서, 하드웨어가 비밀 오버레이 하드웨어(300a)에 의한 소비를 위해 스트림 암호 암호화를 인에이블링할 수 있으며, 비밀 오버레이 하드웨어(300a)는 암호 프로세서(220)와 함께 스트림 암호 데이터를 복호화할 수 있다. 이 프레젠테이션 메커니즘은 블록 암호로 1차 표면을 암호화하는 것보다 비용이 덜 들 수 있지만, 설계 트레이드오프만큼 측량할 수 있거나 유연성있지는 않을 것이다. 비밀 오버레이(310)는 암호화를 위해 스트림 암호를 사용하기 때문에, 이 문맥에서 지원하는 상당한 연산은 입력이 입력 표면(510a)의 블록 암호를 사용하여 복호화 컴포넌트(440b)에 의해 복호화 되고 오버레이의 스트림 암호를 사용하여 컴포넌트(440b)에 의해 재암호화되는 '복사본(copy)' 연산이다.
이 실시예들과 그의 다양한 결합들은, 암호화된 출력을 생성하기 위해 임의의 수의 평문 입력들이 암호화된 입력과 결합할 수 있다고 가정하면, 예를 들어 한번에 한 개의 암호화된 입력이 충분한 경우에 유용하다.
보안을 보증하는 것에 대하여, 실행될 수 있는 다수의 수단들이 존재한다. 먼저, 위의 서술된 보안의 제2 계층은 일단 평문이 복호화되었다면 GPU(265)의 밖으로 누설될 수 없다는 관념에 기초한다. 예를 들어, 평문을 호스트의 중앙 처리 유닛(CPU)에 의해 칩의 외부에서 판독되도록 할 수 있는 결함수정 레지스터들 또는 다른 설비들은 존재하지 않는다. 그러한 누설들을 피하기 위한 주의깊은 하드웨어 설계에 부가하여, GPU(265) 명령 세트는 출력의 암호화를 인에이블링하지 않으면서 입력의 복호화를 인에이블링하는 것이 불가능하도록 설계된다. 더우기, 하드웨어는 악의의 구동자나 적의 코드에 의한 것이든지 또는 우연한 것이든지 평문 데이터의누설을 방지한다.
부가적으로, 하드웨어는 키들을 누설하지 않을 것이다. 일단 키들이 인증 교환에 따라서 서술된 암호 프로토콜을 경유하여 GPU(265)에 전달되면, 키들은 오직 암호화 및 복호화 컴포넌트들에게 이용할 수 있다.
위에서 논의된 바와 같이, 만약 GPU(265)가 1차 표면(270)에서 디스플레이를 위한 평문을 암호화할 수 있다면, 이 암호화 용이성은 적(adversary)이 평문과 대응 암호문을 동시에 이용가능하게 할 수 있는 서술된 유일한 메커니즘이기 때문에 이러한 용이성은 시스템에서 취약성으로 고려된다. 1차 표면이 CPU에 의해 보여질 수 있도록 1차 표면을 맵핑하고 암호화되어야 하는 창을 생성함으로서, 적은 알려진 평문 블록들에 대응하는 암호문 블록들의 서브세트를 구성할 수 있다. 이러한 소위 "사전(dictionary) 공격들"은 "흥미있는" 블록들의 수가 적을 때 최상으로 효과를 나타낸다. 예를 들어, 32bpp 디스플레이 모드에서 흑백 대화 박스들(black-and white dialog boxes)의 디스플레이에 있어서, 블록당 4개의 화소들이 존재하기 때문에 그러한 대화를 디스플레이하는 데 단지 16개의 블록들이 필요하다. 16개의 암호문 블록들을 발견한 적을 대항하는 한가지 가능한 방법은, 심지어 GPU(265)에 의한 복호화 후에도 의미있는 컨텐츠를 생성함으로서 최종 사용자로의 대화를 변조(falsify)하는 것이다. 이러한 이유로, 보호된 오버레이는 손댐-방지 대화들에 최상으로 적응되며, 이는 보호된 오버레이가 애플리케이션들이 언제 최종 사용자가 예상된 것을 보지 못했는지를 검출할 수 있도록 하기 때문이다.
따라서, 사전들을 생성하기 원하는 적들을 좌절시키기 위한 두가지 좋은 전략들이 존재한다. 먼저, 사전들은 단지 주어진 키에 유효하기 때문에, 키의 변경과 컨텐츠의 재암호화는 적으로 하여금 새로운 사전으로 시작해야 하도록 한다. 게다가, 1차 표면의 암호화를 위해, 키가 소프트웨어에 이용될 필요가 없다.- 이것은 하드웨어에서 롤링(rolling)될 수 있으며, 소프트웨어는 키가 변경되었다는 통지를 받을 필요가 있을 뿐이다. 이전 키는 여전히 이용가능하기 때문에, 소프트웨어는 변경되지 않은 1차 표면의 부분들을 복호화하고 재암호화하기 위해 이전 키를 사용할 수 있다. 그러므로, 예컨대 암호화 키 인덱스들의 이중 버퍼링과 같이 이전 키가 여전히 이용가능한 방식으로, 그리고 키가 롤링되었다는 것을 소프트웨어에게 공지하는 방식으로, 암호 프로세서(220)는 1차 표면(270)을 위한 암호 키를 주기적으로 롤링한다.
또 다른 전략은 암호화 전에 이미지 내에 위치를 인코딩하는 것을 포함한다. 예를 들어, 이미지에서 (x,y) 화소 위치(또는 이미지 오프셋과 같은 몇가지 미분 값)는 그것을 암호화 하기 전에 화소 데이터로 배타적인 or-ed(XOR'd)일 수 있다; 그리고 나서 그 연산은 복호화 후에 행해지지 않을 수 있다. 결과적으로, 표면의 다른 영역들의 화소들을 위한 블록들은 다르게 암호화되며, 평문-암호문 맵핑은 포면에서의 주어진 위치에 대해서만 의미있고, 이것은 공격자에게는 이용불가능하다.
미리정의된 스위즐링 포맷들이 또한 제공된다. 텍스처들 및 오프스크린 표면들이 랜덤 액세스를 요구하기 때문에, 그들은 블록 암호들로 인코딩되어야 한다. 블록 암호를 위한 전형적인 블록 크기와 현대의 3D 가속기를 위한 전형적인 캐시 라인 크기 간에 좋은 상승작용이 존재하며, 예컨대, 캐시 라인 및 블록 크기가 모두 128비트라면, 그때 효율적인 암호화 및 복호화가 하드웨어에서 실행될 수 있다. 비록 작은 차이들이 존재해도 하드웨어 실행은 효율적으로 될 것이다.
암호화된 텍스처 데이터가 가진 한가지 문제는, 블록 암호화 체계가 인접 블록의 바이트들이 암호화 또는 복호화될 수 있기 전에 그 바이트들이 이용가능할 것을 요구한다는 것과; 캐시 라인 필이, 화소 데이터가 "스위즐링되는(swizzled)" 것, 즉 캐시 라인 필이 2D 영역의 화소들을 산출하도록 이미지 내의 (X,Y) 위치로부터 주소로의 변환이 형성되는 것을 요구한다. 데이터에 있어, 하드웨어 벤더들은 그 애플리케이션에 대한 지식 없이 이미지 데이터를 스위즐링하는 동안에 표면상 선형 표면 포맷들을 드러내었다. 그러나, 신뢰 소프트웨어가 암호화된 텍스처 데이터를 방출하고 있을 것이므로, 신뢰 소프트웨어는 데이터의 인접 블록들을 암호화하고 2D 집약성을 유지할 수 있도록 스위즐링 체계에 대한 선행 지식을 가져야 한다. 응답으로, 스위즐링된 이미지 포맷들의 사전은, 애플리케이션에 의한 사용을 위해, RGB 포맷들뿐 아니라 YUV 4:4:4, 4:2:2도 포함하여 정의된다. 이 포맷들의 성능은 이미지들이 하드웨어-특정 포맷으로 스위즐링 될 때 만큼 그렇게 높지 않지만, 암호화는 근소한 성능 저하, 즉 속도와 교환으로의 보안의 가치가 있다.
AYUV/ARGB(32bpp, 묶음)에 대하여, 이러한 32bpp 표면 포맷은 휘도(Y)와 크로미넌스(U,V) 샘플들을 위한 8-비트 컬러 채널들에 부가하여 알파 채널을 포함한다. 대안적으로, 그것은 표준 ARGB 32bpp를 포함할 수 있으며, 이는 두 포맷들 모두 32bpp이고 묶음(packed)되어 있기 때문이다. 다음의 논의는 AYUV를 가정한다. 선형 레이아웃은 도 5a와 같다.
이미지 내의 화소(X.Y)의 오프셋은 다음과 같다:
Offset=Y*Pitch + X*4
128-비트 암호화 블록 크기와 캐시 라인 크기를 가정하면, 4 화소들은 단일 블록내에 적합할 수 있다. 주소를 생성하기 전에 X와 Y의 최소 중요 비트들을 인터리빙하면 캐시 라인 필에서 개선된 2D 집약성이 초래될 것이다. 이 블록들은 그 포맷에 따라서, 선형적으로 레이아웃될 것이다.
결과적인 이미지 레이아웃은 도 5b에 의해 도시된다. 각각의 번호가 매겨진 직사각형은 화소이고 굵은 선의 직사각형들은 암호화된 블록들이다. 이미지내의 (x,y) 위치를 오프셋으로 변환하는 이러한 포맷을 위한 스위즐링 함수를 위한 대표적인 의사코드는 다음과 같다:
DWORD
SwizzleAYUV (DWORD x, DWORD y, DWORD Pitch)
{
//itch is number of bytes per scanline of macro blocks
DWORD BlockOffset = (y≫1)*Pitch + (x≫1)*(128/8);
DWORD IntraBlockOffset = ((y&2)≪2)|((y&1)≪1)|(x&1);
return BlockOffset + IntraBlockOffset*4;
}
YUY2(16bpp, 묶음)에 대하여, 이러한 표면 포맷은 2라는 팩터에 의해 '크로미넌스' 샘플들 U와 V를 수평적으로 서브샘플링한다. 그 결과는 평균하여 화소당16비트인 묶음 이미지 포맷이다. 그 선형 레이아웃은 도 6a에 도시된다. 스위즐링 포맷은, 도 6b에 도시된 바와 같이, 4x2 화소들의 암호화된 블록들을 할당한다. 도 5a 및 5B와 같이, 12-비트 블록들이 또한 스위즐링된다. 도 6a에 있어서 그리고 (x,y) 좌표쌍을 이미지 오프셋들로 변환하는 다음의 대표적인 스위즐링 의사보드에 있어서, U 및 V는 심지어 X 좌표들을 갖는다고 가정된다:
DWORD
SwizzleYUY2Y ( DWORD x, DWORD y, const SURFACEDESC&sd )
{
assert( x<sd.Width );
assert( y<sd.Height );
DWORD BlockOffset = (y≫1)*sd.Pitch + (x≫2)*(128/8);
DWORD IntraBlockOffset = ((x&2)≪1)|
((y&1)≪1)|
((x&2)≪0);
DWORD dwRet = BlockOffset + (IntraBlockOffset≪1);
return dwRet;
}
DWORD
SwizzleYUY2U ( DWORD x, DWORD y, const SURFACEDESC&sd)
assert( x<sd.Width );
assert( 0 == (x&1) );
assert( y<sd.Height );
DWORD BlockOffset = (y≫1)*sd.Pitch + (x≫2)*(128/8);
DWORD IntraBlockOffset = ((x&2)≪1)|
((y&1)≪1)|
((x&2)≪0);
return BlockOffset + (IntraBlockOffset≪1) + 3;
}
DWORD
SwizzleYUY2V ( DWORD x, DWORD y, const SURFACEDESC&sd )
{
assert( x<sd.Width );
assert( - == ( x & 1) );
assert( y<sd.Height );
DWORD BlockOffset = (y≫2)*sd.Pitch + (x≫3)*(512/8);
DWORD IntraBlockOffset = ((x&2)≪1)|
((y&1)≪1)|
((x&2)≪0);
return BlockOffset + (IntraBlockOffset≪1) + 3;
}
이에 관하여, 도 5a, 5B, 6A, 및 6B의 스위즐링을 수반하는 의사코드를 위하여, 표면 피치(pitch)는 128비트 블록들의 스캔라인 당 바이트들의 수로서 정의된다.
묶음 평면(12bpp)에 대하여, 이러한 표면 포맷은 2라는 팩터에 의해 수평적으로와 수직적으로 U와 V를 서브샘플링한다. 휘도와 크로미넌스 샘플들은 표면의 두개의 별개 부분들에서 레이아웃된다. 묶음 평면(12bpp)의 선형 레이아웃은 도 7a에 도시된다.
표면 피치는 Y평면에서 512 비트 블록들의 스캔라인 당 바이트들의 수로서 정의된다. 동수의 1/4 만큼의 샘플들이 존재하지만 샘플당 동수의 두배만큼의 컬러 요소들이 존재하기 때문에, UV 평면의 피치는 Y 평면의 피치의 절반이다. 결과적인 스위즐링된 이미지 포맷이 도 7b에 도시된다.
(x,y) 좌표들이 Y, U, 및 V를 위한 오프셋들로 변환되는 이러한 포맷을 위한 스위즐링 함수를 위한 대표적인 의사코드는 다음과 같다:
DWORD
SwizzlePP12Y ( DWORD x, DWORD y, const SURFACEDESC&sd )
{
assert( x<sd.Width );
assert( y<sd.Height );
DWORD BlockOffset = (y≫2)*sd.Pitch + (x≫2)*(128/8);
DWORD IntraBlockOffset = ((y&2)≪2)|
((x&2)≪1)|
((y&2)≪1)|
(x&1);
return BlockOffset + IntraBlockOffset;
}
DWORD
SwizzlePP12U ( DWORD x, DWORD y, const SURFACEDESC&sd )
{
DWORD PlaneOffset = (sd.Height≫3)*sd.Pitch
if ((0! = (x&1))∥(0! = (y&1)))
_asm int3
x ≫= 1;
y ≫= 1;
DWORD BlockOffset = (y≫1)*sd.Pitch/2 + (x≫2)*(128/8);
DWORD IntraBlockOffset = ((x&2)≪1)|
((y&1)≪1)|
(x&1);
return PlaneOffset + BlockOffset + (IntraBlockOffset≪1);
}
DWORD
SwizzlePP12V ( DWORD x, DWORD y, const SURFACEDESC&sd )
{
DWORD PlaneOffset = (sd.Height≫3)*sd.Pitch;
if ((0! = (x&1))∥(0! = (y&1)))
_asm int3
x ≫= 1;
y ≫= 1;
DWORD BlockOffset = (y≫1)*sd.Pitch/2 + (x≫2)*(128/8);
DWORD IntraBlockOffset = ((x&2)≪1)|
((y&1)≪1)|
(x&1);
return PlaneOffset + BlockOffset + (IntraBlockOffset≪1);
}
보안의 제3 계층 - 암호화된 명령 버퍼들
보안의 제1 계층 및 제2 계층에 대하여 위에서 서술된 실시예들의 용이성들은, GPU(265)가 연산하고 있는 이미지 데이터에 부가하여 GPU(265)에 제시된 명령 버퍼들을 암호화하기 위해 증가될 수 있다. 이 기능은 애플리케이션(210)이 명령 버퍼내의 하드웨어 대역 내로 송신되는 컨텐츠를 보호하기 원할 때 바람직하다. 도9a는 암호화된 명령 버퍼(900)를 사용하는 비디오 디코딩을 도시하며, 그에 의해 컨텐츠는 암호화된 텍스처(400a)로 전달되고 복호화 컴포넌트(450)에 의해 복호화되고 비디오 디코더(430b)에 의해 디코딩된다. 비록 명령 버퍼가 암호화되기만 하는 것이 가능하지만, 컨텐츠는, 암호화되고 디코딩된 프레임(420a)에 의해 도시된 바와 같이, 명령 버퍼에서 뿐만 아니라 비디오 메모리에서도 암호화된다. 따라서 명령 버퍼를 암호화하는 것은 이같은 상황들에서 적절하며, 그러한 상황에서 매크로블록들은 비디오 메모리에 있고, 명령 스트림으로 송신된 다른 명령들 및 모션벡터들을 갖는다.
암호화된 텍스터 데이터를 위한 원자가(atomicity) 제한이 또한, 컬러 버퍼 암호화가 문제의 컨텐츠를 보호하기에 충분하지 않을 수 있다는 경고로, 암호화된 명령 버퍼 데이터에 적용된다. 예컨대 Z 버퍼와 같은 중간 버퍼들도 평문 공격들에 대하여 시스템을 보호하도록 암호화될 수 있다. 도 9b는 암호화된 명령 버퍼를 사용하여 대표적인 3D 렌더링을 보여준다. 예시된 바와 같이, 3D 렌더링 명령들(810)은 비디오 디코더(430c)로의 루트 상에서 암호화된다. 텍스처 데이터 (400a)는 복호화 컴포넌트(450)에 의해 복호화되고 비디오 디코더(430c)에 의해 명령들(810)에 따라 처리된다. 그에 부수하여, 컬러 버퍼(820)내의 데이터는 암호화/복호화 컴포넌트(830)을 경유하여 암호화된다.
손댐(tamper) 검출은 명령 버퍼의 소비 이전에, 또는 두 개의 패스들을 사용하여, 또는 명령 버퍼가 소비된 이후에 행해질 수 있다. 한 가지 실시예에서, 손댐 검출 컨텐츠의 디스플레이 또는 렌더링 후에 인에이블링된다.
추가적인 택일적 실시예들 - 그래픽 카드로부터의 출력 암호화
위의 실시예들 각각에서, 비록 도 2의 점선 부분에 대하여 비밀성 및 무결성은 설명되고 서술되었지만, 비디오 출력에 대하여는 비밀성 및 무결성이 설명되지 않았으며, 즉 이론적으로, 그래픽 카드와 모니터와 같은 렌더링 디바이스 간의 인터페이스, 및/또는 렌더링 디바이스 그자체가 공격을 받기 쉽다.
따라서, 위에서 서술된 실시예들에서, 도 9a에서 도시된 바와 같이, 프로세스 중 몇몇의 지점에서, 비록 컨텐츠가 비디오 메모리에서와 그래픽 카드 처리 중에 보호되지만, 데이터는 평문으로(in the clear) DVI/DAC (290)상으로 송신된다. 결과적으로, 데이터는 렌더링 디바이스로의 루트에서 그리고 렌더링 디바이스 내부에 있는 동안에 저작권침해되거나 변경될 수 있다.
따라서, 여기서 서술된 다른 실시예들과 선택적으로 결합될 수 있는 택일적인 실시예에 따라, 암호 프로세서(220a)에 의해 실행되는 기능을 보완하기 위해 자매 암호 프로세서(220b)가 렌더링 디바이스에서 제공된다. 이에 관하여, 통신적으로 암호 프로세서(220a)에 연결된 암호화 컴포넌트(910a)는 DVI/DAC 컴포넌트(290)로의 전달 이전에 데이터를 암호화하고, 통신적으로 암호 프로세서(220b)에 연결된 복호화 컴포넌트(910b)는 디스플레이의 일부로서 데이터를 복호화하거나 발생을 렌더링하고, 데이터의 저작권 침해를 방지한다. 암호화 컴포넌트(910a)는 DVI/DAC 컴포넌트(290)와 함께 대안적으로 포함될 수 있다. 요컨대, 상기와 동일한 암호화 및 복호화, 및 키 관리 기술들을 적용하면, 컨텐츠는, 컨텐츠의 암호화하여 보호되는안전한 전달 및 처리를 위해 전체 그래픽 파이프라인에 걸쳐 보호될 수 있다.
위에서 언급된 바와 같이, 본 발명의 대표적인 실시예들이 다양한 컴퓨팅 디바이스들, 하드웨어, 소프트웨어, 및 네트워크 아키텍처들과 관련하여 서술되었지만, 근원적인 개념들은 신뢰 소스로부터 컨텐츠를 보호하는 것이 바람직한 어떠한 컴퓨팅 디바이스 또는 시스템에도 적용될 수 있다. 따라서, 본 발명에 따른 신뢰 그래픽 시스템의 사용과 관련하여 컴포넌트(들)를 인증하기 위한 기술들은 다양한 애플리케이션들 및 디바이스들에 적용될 수 있다. 예를 들어, 본 발명의 신뢰 그래픽 시스템의 사용과 관련하여 컴포넌트(들)을 인증하기 위한 방법들의 일부들은, 디바이스 상의 별개의 객체로서, 또 다른 객체의 일부로서, 서버로부터의 다운로드가능한 객체로서, 분산 객체로서 등으로 제공되는 컴퓨팅 디바이스의 운영 시스템에 적용될 수 있다. 대표적인 프로그래밍 언어들, 의사코드들, 명칭들, 및 예들은 여기에서 다양한 선택들의 대표로서 채택되지만, 그 언어들, 의사코드, 명칭들, 및 예들은 제한되는 것으로 의도된 것은 아니다.
여기에서 서술된 다양한 기술들은 하드웨어 또는 소프트웨어 또는, 적절하다면, 두 가지의 결합과 관련하여 실행될 수 있다. 따라서, 본 발명의 방법들 및 장치들, 또는 본 발명의 어떠한 관점들 또는 부분들은, 플로피 디스켓들, CD-ROM들, 하드 드라이브들, 또는 어떤 다른 기계-판독가능한 스토리지 매체와 같은 유형 매체로 구현되는 프로그램 코드(즉, 명령어들)의 형태를 취할 수 있으며, 여기서, 프로그램 코드가 컴퓨터와 같은 기계로 로딩되고 그 기계에 의해 실행된다면, 그 기계는 본 발명을 실행하기 위한 장치가 될 것이다. 프로그램가능한 컴퓨터들 상에서의 프로그램 코드 실행의 경우에, 컴퓨팅 디바이스는 일반적으로 프로세서, 프로세서에 의해 판독가능한 스토리지 매체(휘발성 및 비휘발성 메모리 및/또는 스토리지 요소들을 포함), 적어도 한 개의 입력 디바이스, 및 적어도 한 개의 출력 디바이스를 포함한다. 예를 들어 데이터 처리 API, 운영 시스템, 신뢰 애플리케이션 또는 그 동류의 사용을 통해, 본 발명의 기술들을 사용할 수 있는 하나 이상의 프로그램들은 컴퓨터 시스템과 통신하기 위해 가급적 고급 과정의 프로그램 언어 또는 객체 지향의 프로그래밍 언어로 실행된다. 그러나, 프로그램(들)은 원한다면 어셈블리 또는 기계 언어로 실행될 수 있다. 어떤 경우에도, 그 언어는 컴파일링된 언어 또는 해석형 언어일 수 있으며, 본 발명의 다양한 실시예들에서, GPU(265)의 하드웨어 실행들에 대한 조건들을 부가한다.
본 발명의 방법들 및 장치는 또한, 전선 또는 케이블링과 같이 몇가지 전송 매체를 통해서, 또는 광섬유를 통해서, 또는 어떤 다른 형태의 전송을 통해서 전송되는 프로그램 코드의 형태로 구현되는 통신들을 경유하여 실행될 수 있으며, 여기서, 프로그램 코드가 수신되고, EPROM, 게이트 어레이, 프로그램가능한 논리 디바이스(PLD), 클라이언트 컴퓨터, 비디오 레코더, 또는 그 동류와 같은 기계에 로딩되고 기계에 의해 실행될 때, 위에서 대표적인 실시예들에서 서술된 바와 같이 그래픽 카드 및 암호화 능력들을 가진 수신 기계는 본 발명을 실행하기 위한 장치가 된다. 일반적 목적의 프로세서 상에서 실행될 때, 프로그램 코드는 본 발명의 기능을 호출하도록 동작하는 고유 장치를 제공하기 위해 프로세서와 결합한다. 부가적으로, 본 발명에 관련되어 사용된 어떤 스토리지 기술들은 변함없이 하드웨어와 소프트웨어의 결합일 수도 있다.
본 발명은 다양한 도면들에 대한 바람직한 실시예와 관련되어 서술되었지만, 다른 유사한 실시예들이 사용될 수 있고, 본 발명에서 벗어나지 않고 본 발명의 동일한 함수를 실행하기 위해 서술된 실시예에 변형들 및 첨가들이 이루어질 수 있다. 예를 들어, 본 발명의 대표적인 네트워크 환경들이 동등 계층 네트워킹된 환경과 같은 네트워킹된 환경의 컨텐츠로 서술되었지만, 본 기술분야의 숙련된 자는, 본 발명이 그에 제한되지 않으며, 본 출원에서 서술된 바와 같은 방법들이 유선이든지 무선이든지 게임 콘솔, 핸드헬드 컴퓨터, 휴대용 컴퓨터 등과 같은 임의의 컴퓨팅 디바이스 또는 환경에 적용할 수 있고 통신 네트워크를 경유하여 접속된 임의의 수의 그러한 컴퓨팅 디바이스들에 적용되고 그 네트워크를 통해 상호작용할 수 있다는 것을 인식할 것이다. 게다가, 특히 무선 네트워킹된 디바이스들이 계속 증가하기 때문에, 핸드헬드 디바이스, 운영 시스템, 및 다른 애플리케이션 고유 운용 시스템들을 포함하는, 다양한 컴퓨터 플랫폼들이 고려되는 것이 강조되어야 한다. 추가적으로, 본 발명은 다수의 GPU들을 가진 디바이스와 같은 다수의 보조 처리 칩들 또는 디바이스들 내에서 또는 그들을 통해 실행될 수 있으며, 그에 부수하여 실행되는 임의의 스토리지가 다수의 디바이스들을 통해 유사하게 초래될 수 있다. 더우기, 본 발명의 인증 기술들을 구현하는 애플리케이션 또는 디바이스는 그래픽 플랫폼이 인증되고 있도록 하는 동일한 컴퓨팅 디바이스 상에 있을 필요가 없다. 부가적으로, 본 발명에 따른 그래픽 카드는 가속화된 그래픽 포트(AGP) 카드들, 또는"집적화된 카드들", 즉 칩셋들에 내장된 카드들과 같이 분리가능한 카드들 일 수 있다. 그러므로, 본 발명은 임의의 단일 실시예에 한정되지 않아야 하지만, 오히려 첨부된 청구항들에 따른 폭 및 범위에서 해석되어야 한다.
부록 A. 스트림 암호들 대 블록 암호들
이 문서의 컨텐츠에 관련할 때, 이 부록은 스트림 암호들과 블록 암호들 간의 차이들을 상세하게 설명한다.
문제 스트림 암호 블록 암호
세분성 바이트 16바이트(128바이트)
랜덤 액세스 어려움/불가능함 직통
키 변경들 (프레임 당) 자주 드뭄
복잡성 1x 4x 스트림 암호
IP 상태 사유(proprietary) 공개적 도메인
대개, 스트림 암호들은 블록 암호들보다 실행하기 더 빠르고 간단하다.
명칭이 암시하는 바와 같이, 스트림 암호들은 바이트들의 스트림을 암호화하고 복호화한다. 스트림에서 N 바이트를 복호화하기 위해, 암호는 시작점에서 시작하여 스트림으로의 소망되는 오프셋에 한번에 1 바이트씩 나아간다.
반대로, 전자 코드 북 모드에서 실행하고 있는 블록 암호들은 데이터에서의 임의의 블록들을 암호화하거나 복호화할 수 있지만, 한번에 완전한 블록을 암호화/복호화해야 한다. 전형적인 블록 크기는 16바이트이다.
스트림 암호들은 동일한 데이터가 두번 암호화되지 않도록, 즉 암호화 및 복호화에 사용되는 키가 자주 변경되지 않도록 하는 방법으로 사용된다. 고급 비디오 재생을 위해 사용될 때, 예를 들어 프레임당 한번 키들을 변경하는 것은 충분하다.
마지막 주의점으로서, 공개적인 도메인에서 이용할 수 있는 양호한 질의 블록 암호들(good quality block ciphers)이 있다.
본 발명은 신뢰 그래픽 시스템의 사용과 관련하여 컴포넌트(들)을 인증하기 위한 방법들 및 시스템들을 제공한다. 그래픽 파이프라인을 통해 루팅된 컨텐츠를 암호적으로 보안하는 시스템과 관련하여 그래픽 카드를 인증하기 위한 기술이 제공되며, 이로써 애플리케이션 또는 디바이스가 신뢰 그래픽 플랫폼에게 자신이 신뢰 그래픽 플랫폼의 신뢰 사용자임을 표시할 수 있고, 그래픽 플랫폼이 신뢰 애플리케이션 또는 디바이스에게 자신이 애플리케이션 또는 디바이스에 의해 신뢰될 수 있음을 통신할 수 있다.

Claims (71)

  1. 그래픽 카드를 가진 신뢰 그래픽 플랫폼의 사용과 관련하여 인증을 제공하기 위한 방법에 있어서,
    그래픽 카드의 애플리케이션과 디바이스 중 하나에 의해 상기 그래픽 카드가 안전 그래픽 카드임을 검증하도록 요청하는 단계;
    상기 요청에 응답하여, 상기 그래픽 카드에 통신적으로 안전하게 연결된 암호 프로세서에 의해 세션 키를 생성하는 단계; 및
    상기 세션 키를 애플리케이션과 디바이스 중 하나에 전송하는 단계를 포함하는 인증 제공 방법.
  2. 제1항에 있어서, 상기 그래픽 카드의 자원들에 대한 요청과 관련하여 상기 그래픽 카드에 상기 세션 키를 밝히는 단계를 더 포함하는 인증 제공 방법.
  3. 제1항에 있어서, 각 암호 프로세서는 제조 동안에 개별화되고 인증되는 인증 제공 방법.
  4. 제1항에 있어서, 각 암호화 프로세서는 고유 개인 복호화 키를 포함하는 인증 제공 방법.
  5. 제1항에 있어서, 상기 암호화 프로세서는, (1) 상기 암호 프로세서를 기존 칩에 부가하는 것과 (2) 상기 암호 프로세서를 별개의 칩으로서 상기 그래픽 카드에 부가하는 것 중 하나에 의해, 상기 그래픽 카드에 영구적으로 부착되고,
    그로 인해 상기 암호 프로세서와 상기 그래픽 카드의 나머지 간의 물리적 접속이 액세스될 수 없고 노출되지 않는 인증 제공 방법.
  6. 제1항에 있어서, 상기 암호 프로세서는 (1) 상기 세션 키를 위한 다중 비트 휘발성 레지스터 S와 (2) 다수의 인덱스 키들의 어레이를 포함하는 인증 제공 방법.
  7. 제6항에 있어서, 상기 세션 키의 수명은 상기 애플리케이션과 디바이스 중 하나의 실행 시간(running time)이고, 다수의 키들 중 각 키의 수명은 상기 애플리케이션과 디바이스 중 하나로부터의 명령어들에 의해 좌우되는 인증 제공 방법.
  8. 제6항에 있어서, 상기 다수의 인덱스 키들 각각은 (1) 상기 애플리케이션과 디바이스 중 하나를 포함하는 호스트 시스템의 특정 창과 연관되어 있고, (2) 상기 창의 컨텐츠들을 복호화하기 위해 상기 그래픽 카드에 의해 사용되는 인증 제공 방법.
  9. 제1항에 있어서, 상기 요청 단계는, (1) 상기 애플리케이션과 디바이스 중하나로의 외부 인터페이스와, (2) 상기 그래픽 카드 상의 그래픽 처리 유닛(GPU)으로의 내부 인터페이스 중 하나를 경유하여, 상기 암호 프로세서와 인터페이싱하는 단계를 포함하는 인증 제공 방법.
  10. 제9항에 있어서, 외부 인터페이스와의 상기 인터페이싱 단계는 인증 및 키 전송을 위한 개인 키 암호화 프로토콜을 사용하는 단계를 포함하며, 그로 인해 상기 인증 및 키 전송은:
    상기 애플리케이션과 디바이스 중 하나에 의해 상기 암호 프로세서의 공개 키로 상기 세션 키를 암호화하여, 세션 키 크립토블로브(cryptoblob)를 생성하는 암호화 단계;
    상기 암호 프로세서에 의해 상기 세션 키 크립토블로브를 수신하는 단계; 및
    상기 암호 프로세서에 의해 상기 세션 키 크립토블로브를 상기 암호 프로세서의 개인 키로 복호화하여 상기 세션 키를 획득하는 복호화 단계를 포함하고,
    그로 인해 상기 애플리케이션과 디바이스 중 하나와 상기 암호 프로세서는 상기 애플리케이션과 디바이스 중 하나가 명령어들을 상기 암호 프로세서로 송신하기 위해 상기 세션 키를 사용할 수 있도록 하는 비밀을 공유하는, 인증 제공 방법.
  11. 제10항에 있어서, 상기 외부 인터페이스는 상기 암호 프로세서에 의한 함수들의 세트를 통해 노출되고, 상기 세트는:
    상기 수신 단계, 수신 단계, 복호화 단계를 호출하는 세션 키 설정 함수(SetSession Key function)로서, 그로 인해 상기 세션 키가 상기 암호 프로세서와 상기 애플리케이션과 디바이스 중 하나 간의 모든 추가적인 통신을 보안하는 데 사용되는 세션 키 설정 함수와;
    설정 함수(Set function)와;
    읽기 함수(Get function)를 포함하고,
    상기 애플리케이션과 디바이스 중 하나와 상기 암호 프로세서는 상기 설정 함수와 읽기 함수에 의해 통신하며, 상기 함수들의 매개변수들은 비밀성과 무결성을 위해 암호적으로 보호되는 인증 제공 방법.
  12. 제11항에 있어서, 상기 읽기 함수는 (1) 새로운 키와 목적 태그를 상기 인덱스에 의해 식별되는 상기 키 레지스터에 기록하는 인덱스 키 특성 ID(Index key property ID) 방법과, (2) 상기 그래픽 카드 출력 뿐 아니라 상기 스크린 기하학을 고정하는 출력 잠금 플래그를 설정하는 출력 잠금 특성 ID (Output lock property ID) 방법과, (3) 상기 안전 그래픽 카드 및 암호 프로세서를 포함하는 신뢰 그래픽 플랫폼에 의해 제공되는 비디오 메모리 암호화 보호의 계층을 위해 키 갱신 주파수를 설정하는 L2KeyMgmt 특성 ID 방법 중에 적어도 하나를 포함하는 인증 제공 방법.
  13. 제11항에 있어서, 상기 설정 함수는, (1) 상기 그래픽 카드의 적어도 한개의 출력의 설정을 복귀시키는 출력 포트들(Output ports) 방법, (2) 상기 안전 그래픽카드 및 암호 프로세서를 포함하는 신뢰 그래픽 플랫폼의 보호의 제1 계층에 따라서 창의 컨텐츠들의 해시를 복귀시키는 인증 코드(Authentication code) 방법, (3) 상기 그래픽 카드에 의해 지원되는 DX-SEC의 버전을 복귀시키는 DX-SEC 버전 방법, (4) 상기 그래픽 카드에 의해 지원되는 안전 표면들의 수를 복귀시키는 안전 표면 카운트(Secure surface count) 방법, (5) 상기 그래픽 카드에 의해 지원되는 중첩 안전 표면들의 수를 복귀시키는 중첩 표면 카운트(Overlapping surface count) 방법, (6) 상기 그래픽 카드의 미래 방법론을 위해 유연성을 제공하는 1차 형태(Primary type) 방법, (7) 상기 신뢰 그래픽 플랫폼의 비디오 메모리의 1차 표면의 폭, 높이, 재생률 및 컬러 깊이를 복귀시키는 기하학(Geometry) 방법, (8) 보호된 오버레이의 영역의 위치와 크기 중 적어도 하나를 설정하는 방법, 및 (9) 복호화될 1차 표면의 일부의 위치와 크기 중 적어도 하나를 설정하는 방법 중에서 적어도 하나를 포함하는 인증 제공 방법.
  14. 제9항에 있어서, 외부 인터페이스와의 상기 인터페이싱 단계는 상기 암호 프로세서와 상기 그래픽 카드 간에 인터페이싱하는 단계를 포함하고, 그로 인해, 상기 그래픽 카드를 파괴하지 않으면서, (1) 상기 암호 프로세서는 상기 그래픽 카드에 대해 영구적으로 보안되고 (2) 상기 암호 프로세서와 상기 그래픽 카드의 나머지 간의 접속은 노출되지 않는 인증 제공 방법.
  15. 제14항에 있어서, (1) 상기 암호 프로세서가 상기 그래픽 카드 상에솔더링(solder)되는 것과 (2) 상기 암호 프로세서가 상기 GPU와 동일한 칩 상에 상주하는 것 중 적어도 한 가지인 인증 제공 방법.
  16. 제6항에 있어서, 상기 다수의 인덱스 키들의 각 인덱스 키는 상기 인덱스 키와 연관된 목적 매개변수에 따라서 오직 한번 사용되고, 인덱스 키가 새로운 값으로 채워졌을 때 이전 키의 값은 복구할 수 없이 폐기되는 인증 제공 방법.
  17. 제16항에 있어서, 목적 매개변수들의 값들은:
    오버레이 표면들의 암호화와 관련하여 사용되는 DX-SEC 스트림 암호와 함께 사용되는 L1STREAM 키와;
    상기 애플리케이션과 디바이스 중 하나에 의해 기록된 텍스처 블록들을 복호화하는 데 사용되는 블록 암호와 함께 사용되는 L2BLOCK 키를 포함하는 인증 제공 방법.
  18. 제1항의 방법을 수행하기 위한 컴퓨터 실행가능 명령어들을 운송하는 변조 데이터 신호.
  19. 제1항의 방법을 실행하기 위한 수단을 포함하는 컴퓨팅 디바이스,
  20. 컴퓨팅 디바이스에 있어서,
    애플리케이션과 디바이스 중 하나와;
    적어도 한 개의 GPU와 상기 적어도 한 개의 GPU에 통신적으로 안전하게 연결된 암호 프로세서를 가진 그래픽 카드를 포함하고,
    상기 애플리케이션과 디바이스 중 하나는 상기 그래픽 카드가 그 자신이 안전한 그래픽 카드인지 검증하도록 요청하고, 상기 요청에 응답하여, 상기 암호 프로세서는 세션 키를 생성하고 상기 애플리케이션과 디바이스 중 하나에 상기 세션 키를 전송하는 컴퓨팅 디바이스.
  21. 제20항에 있어서, 상기 세션 키는 상기 그래픽 카드의 자원들에 대한 요청과 관련하여 상기 그래픽 카드에 밝혀지는 컴퓨팅 디바이스.
  22. 제20항에 있어서, 각 암호 프로세서는 제조 동안 개별화되고 인증되는 컴퓨팅 디바이스.
  23. 제20항에 있어서, 각 암호 프로세서는 고유 개인 복호화 키를 포함하는 컴퓨팅 디바이스.
  24. 제20항에 있어서, 상기 암호 프로세서는 (1) 상기 암호 프로세서를 기존 칩에 부가하는 것과 (2) 상기 암호 프로세서를 별개의 칩으로서 상기 그래픽 카드에 부가하는 것 중 하나에 의해, 상기 그래픽 카드에 영구적으로 부착되고,
    그로 인해 상기 암호 프로세서와 상기 그래픽 카드의 나머지 간의 물리적 접속이 액세스될 수 없고 노출되지 않는 컴퓨팅 디바이스.
  25. 제20항에 있어서, 상기 암호 프로세서는 (1) 상기 세션 키를 위한 다중 비트 휘발성 레지스터 S와 (2) 다수의 인덱스 키들의 어레이를 포함하는 컴퓨팅 디바이스.
  26. 제25항에 있어서, 상기 세션 키의 수명은 상기 애플리케이션과 디바이스 중 하나의 실행 시간이고, 다수의 키들 중 각 키의 수명은 상기 애플리케이션과 디바이스 중 하나로부터의 명령어들에 의해 좌우되는 컴퓨팅 디바이스.
  27. 제25항에 있어서, 상기 다수의 인덱스 키들 각각은 (1) 상기 애플리케이션과 디바이스 중 하나를 포함하는 호스트 시스템의 특정 창과 연관되어 있고, (2) 상기 창의 컨텐츠들을 복호화하기 위해 상기 그래픽 카드에 의해 사용되는 컴퓨팅 디바이스.
  28. 제20항에 있어서, 상기 애플리케이션과 디바이스 중 하나는, (1) 상기 애플리케이션과 디바이스 중 하나로의 외부 인터페이스와, (2) 상기 그래픽 카드 상의 그래픽 처리 유닛(GPU)으로의 내부 인터페이스 중 하나를 경유하여, 상기 암호 프로세서와 인터페이싱하는 컴퓨팅 디바이스.
  29. 제28항에 있어서, 상기 애플리케이션과 디바이스 중 하나는 인증 및 키 전송을 위한 개인 키 암호 프로토콜을 사용하여 외부 인터페이스와 인터페이싱하고,그로 인해 상기 인증 및 키 전송은:
    상기 애플리케이션과 디바이스 중 하나에 의해 상기 암호 프로세서의 공개 키로 상기 세션 키를 암호화하여 세션 키 크립토블로브를 생성하는 암호화 단계와;
    상기 암호 프로세서에 의해 상기 세션 키 크립토블로브를 수신하는 단계와;
    상기 암호 프로세서에 의해 상기 세션 키 크립토블로브를 상기 암호 프로세서의 개인 키로 복호화하여 상기 세션 키를 획득하는 복호화 단계를 포함하고,
    그로 인해 상기 애플리케이션과 디바이스 중 하나와 상기 암호 프로세서는 상기 애플리케이션과 디바이스 중 하나가 명령어들을 상기 암호 프로세서로 송신하기 위해 상기 세션 키를 사용할 수 있도록 하는 비밀을 공유하는 컴퓨팅 디바이스.
  30. 제29항에 있어서, 상기 외부 인터페이스는 상기 암호 프로세서에 의한 함수들의 세트를 통해 노출되고, 상기 세트는:
    상기 암호화 단계, 수신 단계, 복호화 단계를 호출하는 세션 키 설정 함수로서, 그로 인해 상기 세션 키가 상기 암호 프로세서와 상기 애플리케이션과 디바이스 중 하나 간의 모든 추가적인 통신을 보안하는 데 사용되는, 세션 키 설정 함수와;
    설정 함수와;
    읽기 함수를 포함하고,
    상기 애플리케이션과 디바이스 중 하나와 상기 암호 프로세서는 상기 설정 함수와 읽기 함수에 의해 통신하며, 상기 함수들의 매개변수들은 비밀성과 무결성을 위해 암호적으로 보호되는 컴퓨팅 디바이스.
  31. 제30항에 있어서, 상기 읽기 함수는 (1) 새로운 키와 목적 태그를 상기 인덱스에 의해 식별되는 상기 키 레지스터에 기록하는 인덱스 키 특성 ID 방법과, (2) 상기 그래픽 카드 출력 뿐 아니라 상기 스크린 기하학을 고정하는 출력 잠금 플래그를 설정하는 출력 잠금 특성 ID 방법과, (3) 상기 안전 그래픽 카드 및 암호 프로세서를 포함하는 신뢰 그래픽 플랫폼에 의해 제공된 비디오 메모리 암호화 보호의 계층을 위해 키 갱신 주파수를 설정하는 L2KeyMgmt 특성 ID 방법 중에 적어도 하나를 포함하는 컴퓨팅 디바이스.
  32. 제30항에 있어서, 상기 설정 함수는 (1) 상기 그래픽 카드의 적어도 한개의 출력의 설정을 복귀시키는 출력 포트들 방법, (2) 상기 안전 그래픽 카드 및 암호 프로세서를 포함하는 신뢰 그래픽 플랫폼의 보호의 제1 계층에 따라서 창의 컨텐츠들의 해시를 복귀시키는 인증 코드 방법, (3) 상기 그래픽 카드에 의해 지원되는 DX-SEC의 버전을 복귀시키는 DX-SEC 버전 방법, (4) 상기 그래픽 카드에 의해 지원되는 안전 표면들의 수를 복귀시키는 안전 표면 카운트 방법, (5) 상기 그래픽 카드에 의해 지원되는 중첩 안전 표면들의 수를 복귀시키는 중첩 표면 카운트 방법,(6) 상기 그래픽 카드의 미래 방법론을 위한 유연성을 제공하는 1차 형태(Primary type) 방법, (7) 상기 신뢰 그래픽 플랫폼의 비디오 메모리의 1차 표면의 폭, 높이, 재생률 및 컬러 깊이를 복귀시키는 기하학 방법, (8) 보호된 오버레이의 영역의 위치와 크기 중 적어도 하나를 설정하는 방법, 및 (9) 복호화될 1차 표면의 분수(fraction)의 위치와 크기 중 적어도 하나를 설정하는 방법 중에서 적어도 하나를 포함하는 컴퓨팅 디바이스.
  33. 제28항에 있어서, 상기 내부 인터페이스는 상기 암호 프로세서와 상기 그래픽 카드 간에 인터페이싱하고, 그로 인해, 상기 그래픽 카드를 파괴하지 않으면서, (1) 상기 암호 프로세서는 상기 그래픽 카드에 대해 영구적으로 보안되고 (2) 상기 암호 프로세서와 상기 그래픽 카드의 나머지 간의 접속은 노출되지 않는 컴퓨팅 디바이스.
  34. 제33항에 있어서, (1) 상기 암호 프로세서가 상기 그래픽 카드 상에 솔더링(solder)되는 것과 (2) 상기 암호 프로세서가 상기 GPU와 동일한 칩 상에 상주하는 것 중 적어도 한 가지인 컴퓨팅 디바이스.
  35. 제25항에 있어서, 상기 다수의 인덱스 키들의 각 인덱스 키는 상기 인덱스 키와 연관된 목적 매개변수에 따라서 오직 한번 사용되고, 인덱스 키가 새로운 값으로 채워졌을 때 이전 키의 값은 복구할 수 없이 폐기되는 컴퓨팅 디바이스.
  36. 제35항에 있어서, 목적 매개변수들의 값들은:
    오버레이 표면들의 암호화와 관련하여 사용되는 DX-SEC 스트림 암호와 함께 사용되는 L1STREAM 키와;
    상기 애플리케이션과 디바이스 중 하나에 의해 기록된 텍스처 블록들을 복호화하는 데 사용되는 블록 암호와 함께 사용되는 L2BLOCK 키를 포함하는 컴퓨팅 디바이스.
  37. 그래픽 카드를 가진 신뢰 그래픽 플랫폼의 사용과 관련하여 인증을 제공하는 방법에 있어서,
    그래픽 카드의 애플리케이션과 디바이스 중 하나에 의해 상기 그래픽 카드가 안전 그래픽 카드임을 검증하도록 요청하는 단계와;
    상기 요청에 응답하여, 키 전송을 위한 상기 신뢰 그래픽 플랫폼에 내장된 안전 통신 메커니즘을 경유하여 상기 애플리케이션과 디바이스 중 하나에 세션 키를 송신하는 단계를 포함하고,
    그로 인해 상기 애플리케이션과 디바이스 중 하나는, 안전 그래픽 카드에 의해 동일한 주소 공간에 기록되는 것이 상기 그래픽 카드 키 스토어에 맵핑된다는 것을 미리 아는 인증 제공 방법.
  38. 제37항에 있어서, 상기 안전 통신 메커니즘은 저대역 접속인, 인증 제공 방법.
  39. 그래픽 카드를 가진 신뢰 그래픽 플랫폼의 사용과 관련하여 인증을 제공하기 위한 방법에 있어서,
    벌크 암호화 데이터가 보호 경로를 경유하여 상기 신뢰 그래픽 플랫폼으로 송신됨으로서 상기 그래픽 카드가 안전 그래픽 카드임을 검증하도록, 그래픽 카드의 애플리케이션과 디바이스 중 하나에 의해 요청하는 단계와;
    상기 요청에 응답하여, 상기 벌크 암호화 데이터를 복호화하기 위해 암호 처리 디바이스를 사용하여 상기 그래픽 카드가 안전 그래픽 카드임을 검증하는 단계와;
    상기 애플리케이션과 디바이스 중 하나에게 상기 그래픽 카드가 안전 그래픽 카드임을 공지하는 단계를 포함하는 인증 제공 방법.
  40. 저장된 다수의 컴퓨터 실행가능 명령어들을 가진 적어도 한 개의 컴퓨터 판독가능 매체에 있어서,
    상기 다수의 컴퓨터 판독가능 명령어들은:
    그래픽 카드의 애플리케이션과 디바이스 중 하나에 의해 상기 그래픽 카드가 안전 그래픽 카드임을 검증하도록 요청하기 위한 수단과;
    상기 요청 수단에 의한 요청에 응답하여, 상기 그래픽 카드에 통신적으로 안전하게 연결된 암호 프로세서에 의해 세션 키를 생성하기 위한 수단과;
    상기 세션 키를 상기 애플리케이션과 디바이스 중 하나로 전송하기 위한 수단을 포함하는 적어도 한 개의 컴퓨터 판독가능 매체.
  41. 제40항에 있어서, 상기 그래픽 카드의 자원들에 대한 요청과 관련하여 상기 그래픽 카드에 상기 세션 키를 밝히기 위한 수단을 더 포함하는 적어도 한 개의 컴퓨터 판독가능 매체.
  42. 제40항에 있어서, 각 암호 프로세서는 고유 개인 복호화 키를 포함하고 제조 동안 개별화되고 인증되는 적어도 한 개의 컴퓨터 판독가능 매체.
  43. 제40항에 있어서, 상기 암호 프로세서는, (1) 상기 암호 프로세서를 기존 칩에 부가하는 것과 (2) 상기 암호 프로세서를 별개의 칩으로서 상기 그래픽 카드에 부가하는 것 중 하나에 의해 상기 그래픽 카드에 영구적으로 부착되고,
    그로 인해 상기 암호 프로세서와 상기 그래픽 카드의 나머지 간의 물리적 접속이 액세스할 수 없고 노출되지 않는 적어도 한 개의 컴퓨터 판독가능 매체.
  44. 제40항에 있어서, 상기 암호 프로세서는 (1) 상기 세션 키를 위한 다중 비트 휘발성 레지스터 S와 (2) 다수의 인덱스 키들의 어레이를 포함하는 적어도 한 개의 컴퓨터 판독가능 매체.
  45. 제44항에 있어서, 상기 세션 키의 수명은 상기 애플리케이션과 디바이스 중 하나의 실행 시간이고, 다수의 키들 중 각 키의 수명은 상기 애플리케이션과 디바이스 중 하나로부터의 명령어들에 의해 좌우되는 적어도 한 개의 컴퓨터 판독가능 매체.
  46. 제44항에 있어서, 상기 다수의 인덱스 키들 각각은 (1) 상기 애플리케이션과 디바이스 중 하나를 포함하는 호스트 시스템의 특정 창과 연관되어 있고, (2) 상기 창의 컨텐츠들을 복호화하기 위해 상기 그래픽 카드에 의해 사용되는 적어도 한 개의 컴퓨터 판독가능 매체.
  47. 제40항에 있어서, 상기 요청 수단은, (1) 상기 애플리케이션과 디바이스 중 하나로의 외부 인터페이스와, (2) 상기 그래픽 카드 상의 그래픽 처리 유닛(GPU)으로의 내부 인터페이스 중 하나를 경유하여, 상기 암호 프로세서와 인터페이싱하는 수단을 포함하는 적어도 한 개의 컴퓨터 판독가능 매체.
  48. 제47항에 있어서, 외부 인터페이스와의 상기 인터페이싱 수단은 인증 및 키 전송을 위한 개인 키 암호화 프로토콜을 사용하는 것을 포함하며, 그로 인해 상기 인증 및 키 전송은:
    상기 애플리케이션과 디바이스 중 하나에 의해 상기 암호 프로세서의 공개 키로 상기 세션 키를 암호화하여, 세션 키 크립토블로브를 생성하는 암호화 수단과;
    상기 암호 프로세서에 의해 상기 세션 키 크립토블로브를 수신하는 수단과;
    상기 암호 프로세서에 의해 상기 세션 키 크립토블로브를 상기 암호 프로세서의 개인 키로 복호화하여 상기 세션 키를 획득하는 복호화 수단을 포함하고,
    그로 인해 상기 애플리케이션과 디바이스 중 하나와 상기 암호 프로세서는 상기 애플리케이션과 디바이스 중 하나가 명령어들을 상기 암호 프로세서로 송신하기 위해 상기 세션 키를 사용할 수 있게 하는 비밀을 공유하는 적어도 한 개의 컴퓨터 판독가능 매체.
  49. 제48항에 있어서, 상기 외부 인터페이스는 상기 암호 프로세서에 의한 함수들의 세트를 통해 노출되고, 상기 세트는:
    상기 암호화 수단, 수신 수단, 및 복호화 수단을 호출하는 세션 키 설정 함수로서, 그로 인해 상기 세션 키가 상기 암호 프로세서와 상기 애플리케이션과 디바이스 중 하나 간의 모든 추가적인 통신을 보안하는 데 사용되는 세션 키 설정 함수와;
    설정 함수와;
    읽기 함수를 포함하고,
    상기 애플리케이션과 디바이스 중 하나와 상기 암호 프로세서는 상기 설정 함수와 읽기 함수에 의해 통신하며, 상기 함수들의 매개변수들은 비밀성과 무결성을 위해 암호적으로 보호되는 적어도 한 개의 컴퓨터 판독가능 매체.
  50. 제49항에 있어서, 상기 읽기 함수가, (1) 새로운 키와 목적 태그를 상기 인덱스에 의해 식별되는 상기 키 레지스터에 기록하는 인덱스 키 특성 ID 방법과, (2) 상기 그래픽 카드 출력 뿐 아니라 상기 스크린 기하학을 고정하는 출력 잠금 플래그를 설정하는 출력 잠금 특성 ID 방법과, (3) 상기 안전 그래픽 카드 및 암호 프로세서를 포함하는 신뢰 그래픽 플랫폼에 의해 제공되는 비디오 메모리 암호화 보호의 계층을 위해 키 갱신 주파수를 설정하는 L2KeyMgmt 특성 ID 방법 중에 적어도 하나를 포함하는 적어도 한 개의 컴퓨터 판독가능 매체.
  51. 제49항에 있어서, 상기 설정 함수는, (1) 상기 그래픽 카드의 적어도 한개의 출력의 설정을 복귀시키는 출력 포트들 방법, (2) 상기 안전 그래픽 카드 및 암호 프로세서를 포함하는 신뢰 그래픽 플랫폼의 보호의 제1 계층에 따라서 창의 컨텐츠들의 해시를 복귀시키는 인증 코드 방법, (3) 상기 그래픽 카드에 의해 지원되는 DX-SEC의 버전을 복귀시키는 DX-SEC 버전 방법, (4) 상기 그래픽 카드에 의해 지원되는 안전 표면들의 수를 복귀시키는 안전 표면 카운트 방법, (5) 상기 그래픽 카드에 의해 지원되는 중첩 안전 표면들의 수를 복귀시키는 중첩 표면 카운트 방법, (6) 상기 그래픽 카드의 미래 방법론을 위해 유연성을 제공하는 1차 형태 방법, (7) 상기 신뢰 그래픽 플랫폼의 비디오 메모리의 1차 표면의 폭, 높이, 재생률 및 컬러 깊이를 복귀시키는 기하학 방법, (8) 보호된 오버레이의 영역의 위치와 크기 중 적어도 하나를 설정하는 방법, 및 (9) 복호화될 1차 표면의 일부의 위치와 크기중 적어도 하나를 설정하는 방법 중에서 적어도 하나를 포함하는 적어도 한 개의 컴퓨터 판독가능 매체.
  52. 제47항에 있어서, 내부 인터페이스와의 상기 인터페이싱 수단은 상기 암호 프로세서와 상기 그래픽 카드 간에 인터페이싱하는 것을 포함하고, 그로 인해, 상기 그래픽 카드를 파괴하지 않으면서, (1) 상기 암호 프로세서는 상기 그래픽 카드에 대해 영구적으로 보안되고 (2) 상기 암호 프로세서와 상기 그래픽 카드의 나머지 간의 접속은 노출되지 않는 적어도 한 개의 컴퓨터 판독가능 매체.
  53. 제52항에 있어서, (1) 상기 암호 프로세서가 상기 그래픽 카드 상에 솔더링되는 것과 (2) 상기 암호 프로세서가 상기 GPU와 동일한 칩 상에 상주하는 것 중 적어도 한 가지인 적어도 한 개의 컴퓨터 판독가능 매체.
  54. 제44항에 있어서, 상기 다수의 인덱스 키들의 각 인덱스 키는 상기 인덱스 키와 연관된 목적 매개변수에 따라서 오직 한번 사용되고, 인덱스 키가 새로운 값으로 채워졌을 때 이전 키의 값은 복구할 수 없이 폐기되는 적어도 한 개의 컴퓨터 판독가능 매체.
  55. 제54항에 있어서, 목적 매개변수들의 값들은:
    오버레이 표면들의 암호화와 관련하여 사용되는 DX-SEC 스트림 암호와 함께사용되는 L1STREAM 키와;
    상기 애플리케이션과 디바이스 중 하나에 의해 기록된 텍스처 블록들을 복호화하는 데 사용되는 블록 암호와 함께 사용되는 L2BLOCK 키를 포함하는 적어도 한 개의 컴퓨터 판독가능 매체.
  56. 컴퓨팅 디바이스의 운영 시스템에 있어서,
    그래픽 카드의 애플리케이션과 디바이스 중 하나에 의해 상기 그래픽 카드가 안전 그래픽 카드임을 검증하도록 요청하기 위한 수단과;
    상기 요청 수단에 의한 요청에 응답하여, 상기 그래픽 카드에 통신적으로 안전하게 연결된 암호 프로세서에 의해 세션 키를 생성하기 위한 수단과;
    상기 세션 키를 상기 애플리케이션과 디바이스 중 하나로 전송하기 위한 수단을 포함하는 운영 시스템.
  57. 제56항에 있어서, 상기 그래픽 카드의 자원들에 대한 요청과 관련하여 상기 그래픽 카드에 상기 세션 키를 밝히기 위한 수단을 더 포함하는 운영 시스템.
  58. 제56항에 있어서, 각 암호 프로세서는 고유 개인 복호화 키를 포함하고 제조 동안 개별화되고 인증되는 운영 시스템.
  59. 제56항에 있어서, 상기 암호 프로세서는, (1) 상기 암호 프로세서를 기존 칩에 부가하는 것과 (2) 상기 암호 프로세서를 별개의 칩으로서 상기 그래픽 카드에 부가하는 것 중 하나에 의해, 상기 그래픽 카드에 영구적으로 부착되고,
    그로 인해 상기 암호 프로세서와 상기 그래픽 카드의 나머지 간의 물리적 접속이 액세스할 수 없고 노출되지 않는 운영 시스템.
  60. 제56항에 있어서, 상기 암호 프로세서는 (1) 상기 세션 키를 위한 다중 비트 휘발성 레지스터 S와 (2) 다수의 인덱스 키들의 어레이를 포함하는 운영 시스템.
  61. 제60항에 있어서, 상기 세션 키의 수명은 상기 애플리케이션과 디바이스 중 하나의 실행 시간이고, 상기 다수의 키들 중 각 키의 수명은 상기 애플리케이션과 디바이스 중 하나로부터의 명령어들에 의해 좌우되는 운영 시스템.
  62. 제60항에 있어서, 상기 다수의 인덱스 키들 각각은 (1) 상기 애플리케이션과 디바이스 중 하나를 포함하는 호스트 시스템의 특정 창과 연관되어 있고, (2) 상기 창의 컨텐츠들을 복호화하기 위해 상기 그래픽 카드에 의해 사용되는 운영 시스템.
  63. 제56항에 있어서, 상기 요청 수단은, (1) 상기 애플리케이션과 디바이스 중 하나로의 외부 인터페이스와, (2) 상기 그래픽 카드 상의 그래픽 처리 유닛(GPU)으로의 내부 인터페이스 중 하나를 경유하여, 상기 암호 프로세서와 인터페이싱하는 수단을 포함하는 운영 시스템.
  64. 제63항에 있어서, 외부 인터페이스와의 상기 인터페이싱 수단은 인증 및 키 전송을 위한 개인 키 암호화 프로토콜을 사용하는 것을 포함하며, 그로 인해 상기 인증 및 키 전송은:
    상기 애플리케이션과 디바이스 중 하나에 의해 상기 암호 프로세서의 공개 키로 상기 세션 키를 암호화하여, 세션 키 크립토블로브를 생성하는 암호화 수단과;
    상기 암호 프로세서에 의해 상기 세션 키 크립토블로브를 수신하는 수단과;
    상기 암호 프로세서에 의해 상기 세션 키 크립토블로브를 상기 암호 프로세서의 개인 키로 복호화하여 상기 세션 키를 획득하는 복호화 수단을 포함하고,
    그로 인해 상기 애플리케이션과 디바이스 중 하나와 상기 암호 프로세서가 상기 애플리케이션과 디바이스 중 하나가 명령어들을 상기 암호 프로세서로 송신하기 위해 상기 세션 키를 사용할 수 있게 하는 비밀을 공유하는 운영 시스템.
  65. 제64항에 있어서, 상기 외부 인터페이스는 상기 암호 프로세서에 의한 함수들의 세트를 통해 노출되고, 상기 세트는:
    상기 암호화 수단, 수신 수단, 및 복호화 수단을 호출하는 세션 키 설정 함수로서, 그로 인해 상기 세션 키가 상기 암호 프로세서와 상기 애플리케이션과 디바이스 중 하나 간의 모든 추가적인 통신을 보안하는 데 사용되는 세션 키 설정 함수와;
    설정 함수와;
    읽기 함수를 포함하고,
    상기 애플리케이션과 디바이스 중 하나와 상기 암호 프로세서는 상기 설정 함수와 읽기 함수에 의해 통신하며, 상기 함수들의 매개변수들은 비밀성과 무결성을 위해 암호적으로 보호되는 운영 시스템.
  66. 제65항에 있어서, 상기 읽기 함수가, (1) 새로운 키와 목적 태그를 상기 인덱스에 의해 식별되는 상기 키 레지스터에 기록하는 인덱스 키 특성 ID 방법과, (2) 상기 그래픽 카드 출력 뿐 아니라 상기 스크린 기하학을 고정하는 출력 잠금 플래그를 설정하는 출력 잠금 특성 ID 방법과, (3) 상기 안전 그래픽 카드 및 암호 프로세서를 포함하는 신뢰 그래픽 플랫폼에 의해 제공되는 비디오 메모리 암호화 보호의 계층을 위해 키 갱신 주파수를 설정하는 L2KeyMgmt 특성 ID 방법 중에 적어도 하나를 포함하는 운영 시스템.
  67. 제65항에 있어서, 상기 설정 함수는, (1) 상기 그래픽 카드의 적어도 한개의 출력의 설정을 복귀시키는 출력 포트들 방법, (2) 상기 안전 그래픽 카드 및 암호 프로세서를 포함하는 신뢰 그래픽 플랫폼의 보호의 제1 계층에 따라서 창의 컨텐츠들의 해시를 복귀시키는 인증 코드 방법, (3) 상기 그래픽 카드에 의해 지원되는 DX-SEC의 버전을 복귀시키는 DX-SEC 버전 방법, (4) 상기 그래픽 카드에 의해 지원되는 안전 표면들의 수를 복귀시키는 안전 표면 카운트 방법, (5) 상기 그래픽 카드에 의해 지원되는 중첩 안전 표면들의 수를 복귀시키는 중첩 표면 카운트 방법, (6) 상기 그래픽 카드의 미래 방법론을 위해 유연성을 제공하는 1차 형태 방법, (7) 상기 신뢰 그래픽 플랫폼의 비디오 메모리의 1차 표면의 폭, 높이, 재생률 및 컬러 깊이를 복귀시키는 기하학 방법, (8) 보호된 오버레이의 영역의 위치와 크기 중 적어도 하나를 설정하는 방법, 및 (9) 복호화될 1차 표면의 일부의 위치와 크기 중 적어도 하나를 설정하는 방법 중에서 적어도 하나를 포함하는 운영 시스템.
  68. 제63항에 있어서, 내부 인터페이스와의 상기 인터페이싱 수단은 상기 암호 프로세서와 상기 그래픽 카드 간에 인터페이싱하는 것을 포함하고, 그로 인해, 상기 그래픽 카드를 파괴하지 않으면서, (1) 상기 암호 프로세서는 상기 그래픽 카드에 대해 영구적으로 보안되고 (2) 상기 암호 프로세서와 상기 그래픽 카드의 나머지 간의 접속은 노출되지 않는 운영 시스템.
  69. 제68항에 있어서, (1) 상기 암호 프로세서가 상기 그래픽 카드 상에 솔더링되는 것과 (2) 상기 암호 프로세서가 상기 GPU와 동일한 칩 상에 상주하는 것 중 적어도 한 가지인 운영 시스템.
  70. 제60항에 있어서, 상기 다수의 인덱스 키들의 각 인덱스 키는 상기 인덱스 키와 연관된 목적 매개변수에 따라서 오직 한번 사용되고, 인덱스 키가 새로운 값으로 채워졌을 때 이전 키의 값은 복구할 수 없이 폐기되는 운영 시스템.
  71. 제70항에 있어서, 목적 매개변수들의 값들은:
    오버레이 표면들의 암호화와 관련하여 사용된 DX-SEC 스트림 암호를 가지고 사용되는 L1STREAM 키와;
    상기 애플리케이션과 디바이스 중 하나에 의해 기록된 텍스처 블록들을 복호화하는 데 사용되는 블록 암호를 가지고 사용되는 L2BLOCK 키를 포함하는 운영 시스템.
KR1020030024750A 2002-04-18 2003-04-18 그래픽 시스템에서 컴포넌트들의 인증을 위한 방법, 시스템, 컴퓨팅 디바이스, 및 컴퓨터 판독가능 매체 KR101030354B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/125,170 US7380130B2 (en) 2001-12-04 2002-04-18 Methods and systems for authentication of components in a graphics system
US10/125,170 2002-04-18

Publications (2)

Publication Number Publication Date
KR20030082930A true KR20030082930A (ko) 2003-10-23
KR101030354B1 KR101030354B1 (ko) 2011-04-20

Family

ID=22418498

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030024750A KR101030354B1 (ko) 2002-04-18 2003-04-18 그래픽 시스템에서 컴포넌트들의 인증을 위한 방법, 시스템, 컴퓨팅 디바이스, 및 컴퓨터 판독가능 매체

Country Status (15)

Country Link
US (1) US7380130B2 (ko)
EP (1) EP1355218A3 (ko)
JP (1) JP4807925B2 (ko)
KR (1) KR101030354B1 (ko)
CN (1) CN1474281A (ko)
AU (1) AU2003203718B2 (ko)
BR (1) BR0300935A (ko)
CA (1) CA2425478A1 (ko)
MX (1) MXPA03003317A (ko)
MY (1) MY144077A (ko)
NO (1) NO327641B1 (ko)
PL (1) PL359753A1 (ko)
RU (1) RU2310227C2 (ko)
TW (1) TWI265418B (ko)
ZA (1) ZA200302657B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100737659B1 (ko) * 2001-12-12 2007-07-09 인텔 코오퍼레이션 오퍼레이팅 시스템의 개시 전에 사용자 입력 인터페이스를제공하는 방법

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6908032B1 (en) * 2002-01-22 2005-06-21 Diebold, Incorporated Automated teller machine, software and distribution method
US6854645B1 (en) * 2002-01-22 2005-02-15 Diebold, Incorporated Automated teller machine, software and distribution method
US6779717B1 (en) * 2002-01-22 2004-08-24 Diebold Self-Service Systems A Division Of Diebold, Incorporated Automated teller machine, software and distribution method
US7474312B1 (en) * 2002-11-25 2009-01-06 Nvidia Corporation Memory redirect primitive for a secure graphics processing unit
US8141159B2 (en) 2002-12-31 2012-03-20 Portauthority Technologies Inc. Method and system for protecting confidential information
US8749561B1 (en) 2003-03-14 2014-06-10 Nvidia Corporation Method and system for coordinated data execution using a primary graphics processor and a secondary graphics processor
JP2006279644A (ja) * 2005-03-30 2006-10-12 Fujitsu Ltd 暗号化システム、暗号化装置、復号化装置、暗号化・復号化方法、暗号化方法および復号化方法
US7562224B2 (en) * 2005-04-04 2009-07-14 Cisco Technology, Inc. System and method for multi-session establishment for a single device
JP4116024B2 (ja) * 2005-07-29 2008-07-09 株式会社ソニー・コンピュータエンタテインメント ペリフェラルの使用管理方法、電子システム及びその構成装置
US20070189520A1 (en) * 2006-01-10 2007-08-16 Utbk, Inc. Systems and Methods to Facilitate Transition from Communication to Commerce
US8775704B2 (en) 2006-04-05 2014-07-08 Nvidia Corporation Method and system for communication between a secondary processor and an auxiliary display subsystem of a notebook
US8261064B2 (en) 2007-02-27 2012-09-04 L-3 Communications Corporation Integrated secure and non-secure display for a handheld communications device
US8019151B2 (en) * 2007-06-11 2011-09-13 Visualization Sciences Group, Inc. Methods and apparatus for image compression and decompression using graphics processing unit (GPU)
US8564598B2 (en) * 2007-08-15 2013-10-22 Nvidia Corporation Parallelogram unified primitive description for rasterization
US20090067629A1 (en) * 2007-09-06 2009-03-12 Paltronics, Inc. Table-based encryption/decryption techniques for gaming networks, and gaming networks incorporating the same
US7929707B1 (en) * 2007-09-06 2011-04-19 Elcomsoft Co. Ltd. Use of graphics processors as parallel math co-processors for password recovery
IL187043A0 (en) * 2007-10-30 2008-02-09 Sandisk Il Ltd Secure pipeline manager
US20090172331A1 (en) * 2007-12-31 2009-07-02 Balaji Vembu Securing content for playback
US8646052B2 (en) * 2008-03-31 2014-02-04 Intel Corporation Method and apparatus for providing a secure display window inside the primary display
US20090319933A1 (en) * 2008-06-21 2009-12-24 Microsoft Corporation Transacted double buffering for graphical user interface rendering
US8736617B2 (en) * 2008-08-04 2014-05-27 Nvidia Corporation Hybrid graphic display
US20100186095A1 (en) * 2009-01-20 2010-07-22 Microsoft Corporation Method and system for gap based anti-piracy
US9075559B2 (en) * 2009-02-27 2015-07-07 Nvidia Corporation Multiple graphics processing unit system and method
US8521821B2 (en) * 2009-03-17 2013-08-27 Brigham Young University Encrypted email based upon trusted overlays
TW201040678A (en) * 2009-05-13 2010-11-16 Acrosser Technology Co Ltd Multi-point universal encryption transmission interface apparatus
US9135675B2 (en) * 2009-06-15 2015-09-15 Nvidia Corporation Multiple graphics processing unit display synchronization system and method
US8766989B2 (en) * 2009-07-29 2014-07-01 Nvidia Corporation Method and system for dynamically adding and removing display modes coordinated across multiple graphics processing units
US9111325B2 (en) * 2009-12-31 2015-08-18 Nvidia Corporation Shared buffer techniques for heterogeneous hybrid graphics
US20110169844A1 (en) * 2009-09-16 2011-07-14 Nvidia Corporation Content Protection Techniques on Heterogeneous Graphics Processing Units
US8780122B2 (en) * 2009-09-16 2014-07-15 Nvidia Corporation Techniques for transferring graphics data from system memory to a discrete GPU
US20110161675A1 (en) * 2009-12-30 2011-06-30 Nvidia Corporation System and method for gpu based encrypted storage access
CN102695023A (zh) * 2011-03-23 2012-09-26 宏碁股份有限公司 视频信号处理系统与方法
US8560453B2 (en) * 2011-06-30 2013-10-15 Intel Corporation Method and apparatus for dynamic, real-time ad insertion based on meta-data within a hardware based root of trust
US20130166922A1 (en) * 2011-12-23 2013-06-27 Ati Technologies Ulc Method and system for frame buffer protection
EP2798567A4 (en) * 2011-12-29 2015-08-12 Intel Corp METHOD FOR RESTRICTING DIGITAL ENTERPRISE INFORMATION WITHIN THE LIMITS OF THE COMPANY
CN103327485A (zh) * 2012-03-23 2013-09-25 辉达公司 无线传输内容的方法及系统
US8910307B2 (en) * 2012-05-10 2014-12-09 Qualcomm Incorporated Hardware enforced output security settings
US20140012704A1 (en) 2012-07-05 2014-01-09 Google Inc. Selecting a preferred payment instrument based on a merchant category
US9092767B1 (en) 2013-03-04 2015-07-28 Google Inc. Selecting a preferred payment instrument
CN105378679A (zh) * 2013-03-28 2016-03-02 爱迪德技术有限公司 用于媒体路径安全的方法和系统
US9818379B2 (en) 2013-08-08 2017-11-14 Nvidia Corporation Pixel data transmission over multiple pixel interfaces
US9858572B2 (en) 2014-02-06 2018-01-02 Google Llc Dynamic alteration of track data
US9729320B2 (en) * 2014-02-25 2017-08-08 Cavium, Inc. Apparatus and method for software enabled access to protected hardware resources
CN104158659B (zh) * 2014-07-21 2015-11-11 小米科技有限责任公司 防伪验证方法、装置和系统
US9426130B2 (en) 2014-07-21 2016-08-23 Xiaomi Inc. Methods, devices and systems for anti-counterfeiting authentication
US9558373B2 (en) * 2014-12-08 2017-01-31 Nxp Usa, Inc. 3D graphics system using encrypted texture tiles
FR3038420B1 (fr) * 2015-06-30 2017-08-25 Oberthur Technologies Dispositif et procede de traitement cryptographique de donnees
CN105187922A (zh) * 2015-07-27 2015-12-23 天脉聚源(北京)科技有限公司 一种更新互动信息的方法及装置
TWI572219B (zh) * 2015-11-09 2017-02-21 Chaoyang Univ Of Tech Wireless control device with safety encryption protection
US10511578B2 (en) * 2016-03-04 2019-12-17 Intel Corporation Technologies for secure content display with panel self-refresh
CN106789985B (zh) * 2016-12-08 2019-11-12 武汉斗鱼网络科技有限公司 基于gpu算法的客户端验证方法及系统
RU2634179C1 (ru) * 2016-12-12 2017-10-24 Акционерное общество "Лаборатория Касперского" Способ и система для доверенного доведения информации до пользователя
TWI648979B (zh) * 2017-08-02 2019-01-21 中華電信股份有限公司 Authentication method and system thereof
US11443072B2 (en) * 2018-06-29 2022-09-13 Microsoft Technology Licensing, Llc Peripheral device with resource isolation
US11126757B2 (en) 2018-10-19 2021-09-21 Microsoft Technology Licensing, Llc Peripheral device

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5175830A (en) * 1989-06-16 1992-12-29 International Business Machines Corporation Method for executing overlays in an expanded memory data processing system
US5596718A (en) * 1992-07-10 1997-01-21 Secure Computing Corporation Secure computer network using trusted path subsystem which encrypts/decrypts and communicates with user through local workstation user I/O devices without utilizing workstation processor
US5559889A (en) * 1995-03-31 1996-09-24 International Business Machines Corporation System and methods for data encryption using public key cryptography
US6101276A (en) * 1996-06-21 2000-08-08 Compaq Computer Corporation Method and apparatus for performing two pass quality video compression through pipelining and buffer management
US5825879A (en) * 1996-09-30 1998-10-20 Intel Corporation System and method for copy-protecting distributed video content
US5920861A (en) * 1997-02-25 1999-07-06 Intertrust Technologies Corp. Techniques for defining using and manipulating rights management data structures
US5898779A (en) * 1997-04-14 1999-04-27 Eastman Kodak Company Photograhic system with selected area image authentication
US6289451B1 (en) * 1997-04-18 2001-09-11 Sun Microsystems, Inc. System and method for efficiently implementing an authenticated communications channel that facilitates tamper detection
US6167136A (en) * 1997-05-16 2000-12-26 Software Security, Inc. Method for preventing copying of digital video disks
JP4273535B2 (ja) * 1998-05-12 2009-06-03 ソニー株式会社 データ伝送制御方法、データ伝送システム、データ受信装置及びデータ送信装置
JP3380194B2 (ja) 1998-10-16 2003-02-24 松下電器産業株式会社 デジタル著作物保護システム
US6138239A (en) * 1998-11-13 2000-10-24 N★Able Technologies, Inc. Method and system for authenticating and utilizing secure resources in a computer system
US6289459B1 (en) * 1999-01-20 2001-09-11 Intel Corporation Processor unique processor number feature with a user controllable disable capability
US6330624B1 (en) 1999-02-09 2001-12-11 International Business Machines Corporation Access limiting to only a planar by storing a device public key only within the planar and a planar public key only within the device
US6289455B1 (en) * 1999-09-02 2001-09-11 Crypotography Research, Inc. Method and apparatus for preventing piracy of digital content
GB9922665D0 (en) * 1999-09-25 1999-11-24 Hewlett Packard Co A method of enforcing trusted functionality in a full function platform
US6449719B1 (en) * 1999-11-09 2002-09-10 Widevine Technologies, Inc. Process and streaming server for encrypting a data stream
US6704868B1 (en) * 1999-11-12 2004-03-09 International Business Machines Corporation Method for associating a pass phase with a secured public/private key pair
US7007304B1 (en) * 2000-09-20 2006-02-28 Intel Corporation Method and apparatus to improve the protection of information presented by a computer
US20030079222A1 (en) * 2000-10-06 2003-04-24 Boykin Patrick Oscar System and method for distributing perceptually encrypted encoded files of music and movies
US6957340B1 (en) * 2000-11-28 2005-10-18 Xilinx, Inc. Encryption key for multi-key encryption in programmable logic device
US20020150248A1 (en) * 2001-03-06 2002-10-17 Kovacevic Branko D. System for digital stream reception via memory buffer and method thereof
US7055038B2 (en) * 2001-05-07 2006-05-30 Ati International Srl Method and apparatus for maintaining secure and nonsecure data in a shared memory system
GB2377137B (en) * 2001-06-27 2004-10-20 Hewlett Packard Co Network appliances
GB2382419B (en) * 2001-11-22 2005-12-14 Hewlett Packard Co Apparatus and method for creating a trusted environment
US7216369B2 (en) * 2002-06-28 2007-05-08 Intel Corporation Trusted platform apparatus, system, and method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100737659B1 (ko) * 2001-12-12 2007-07-09 인텔 코오퍼레이션 오퍼레이팅 시스템의 개시 전에 사용자 입력 인터페이스를제공하는 방법

Also Published As

Publication number Publication date
CN1474281A (zh) 2004-02-11
RU2310227C2 (ru) 2007-11-10
AU2003203718A1 (en) 2003-11-06
CA2425478A1 (en) 2003-10-18
JP2004007603A (ja) 2004-01-08
BR0300935A (pt) 2004-08-17
JP4807925B2 (ja) 2011-11-02
TWI265418B (en) 2006-11-01
PL359753A1 (en) 2003-10-20
US7380130B2 (en) 2008-05-27
TW200404212A (en) 2004-03-16
KR101030354B1 (ko) 2011-04-20
NO20031581L (no) 2003-10-20
US20030200435A1 (en) 2003-10-23
MY144077A (en) 2011-08-15
NO20031581D0 (no) 2003-04-08
AU2003203718B2 (en) 2010-01-28
EP1355218A3 (en) 2005-01-26
MXPA03003317A (es) 2004-10-29
NO327641B1 (no) 2009-09-07
ZA200302657B (en) 2003-10-14
EP1355218A2 (en) 2003-10-22

Similar Documents

Publication Publication Date Title
KR101030354B1 (ko) 그래픽 시스템에서 컴포넌트들의 인증을 위한 방법, 시스템, 컴퓨팅 디바이스, 및 컴퓨터 판독가능 매체
CA2434328C (en) Methods and systems for cryptographically protecting secure content
AU2009329836B2 (en) Digital video guard
US7296154B2 (en) Secure media path methods, systems, and architectures
RU2308077C2 (ru) Способы и системы для криптографической защиты охраняемого содержимого

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
E902 Notification of reason for refusal
B701 Decision to grant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee