KR20040000348A - Systems and methods for securing video card output - Google Patents

Systems and methods for securing video card output Download PDF

Info

Publication number
KR20040000348A
KR20040000348A KR1020030040771A KR20030040771A KR20040000348A KR 20040000348 A KR20040000348 A KR 20040000348A KR 1020030040771 A KR1020030040771 A KR 1020030040771A KR 20030040771 A KR20030040771 A KR 20030040771A KR 20040000348 A KR20040000348 A KR 20040000348A
Authority
KR
South Korea
Prior art keywords
data
key
video card
encrypted
video
Prior art date
Application number
KR1020030040771A
Other languages
Korean (ko)
Inventor
에반스글렌에프.
잉글랜드폴
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/178,805 external-priority patent/US20020172573A1/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20040000348A publication Critical patent/KR20040000348A/en

Links

Classifications

    • 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/82Protecting input, output or interconnection devices
    • G06F21/84Protecting input, output or interconnection devices output devices, e.g. displays or monitors
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16BDEVICES FOR FASTENING OR SECURING CONSTRUCTIONAL ELEMENTS OR MACHINE PARTS TOGETHER, e.g. NAILS, BOLTS, CIRCLIPS, CLAMPS, CLIPS OR WEDGES; JOINTS OR JOINTING
    • F16B37/00Nuts or like thread-engaging members
    • F16B37/04Devices for fastening nuts to surfaces, e.g. sheets, plates
    • F16B37/06Devices for fastening nuts to surfaces, e.g. sheets, plates by means of welding or riveting
    • F16B37/062Devices for fastening nuts to surfaces, e.g. sheets, plates by means of welding or riveting by means of riveting
    • F16B37/068Devices for fastening nuts to surfaces, e.g. sheets, plates by means of welding or riveting by means of riveting by deforming the material of the support, e.g. the sheet or plate
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B5/00Recording by magnetisation or demagnetisation of a record carrier; Reproducing by magnetic means; Record carriers therefor
    • G11B5/10Structure or manufacture of housings or shields for heads
    • G11B5/102Manufacture of housing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B5/00Recording by magnetisation or demagnetisation of a record carrier; Reproducing by magnetic means; Record carriers therefor
    • G11B5/48Disposition or mounting of heads or head supports relative to record carriers ; arrangements of heads, e.g. for scanning the record carrier to increase the relative speed
    • G11B5/58Disposition or mounting of heads or head supports relative to record carriers ; arrangements of heads, e.g. for scanning the record carrier to increase the relative speed with provision for moving the head for the purpose of maintaining alignment of the head relative to the record carrier during transducing operation, e.g. to compensate for surface irregularities of the latter or for track following
    • G11B5/60Fluid-dynamic spacing of heads from record-carriers
    • G11B5/6005Specially adapted for spacing from a rotating disc using a fluid cushion

Abstract

PURPOSE: A system and method for protecting the output of a video card is provided to overcome a software attack, especially for the case of attack performed by a defective application executed on a user's machine. CONSTITUTION: A graphic processor unit(308) processes the video data rendered to a monitor. A video memory(310) operatively linking with the graphic processor unit(308) stores the data processed or to be processed by the graphic processor unit(308). A display converter(312) converts the digital data into a used signal when the data is rendered to the monitor. A decoder decodes the pixel data provided to the display converter.

Description

비디오 카드 출력을 보호하기 위한 시스템 및 방법{SYSTEMS AND METHODS FOR SECURING VIDEO CARD OUTPUT}SYSTEM AND METHOD FOR PROTECTING VIDEO CARD OUTPUT {SYSTEMS AND METHODS FOR SECURING VIDEO CARD OUTPUT}

본 발명은 비디오 카드를 사용하여 데이터를 프로세싱하기 위한 방법 및 시스템에 관한 것이다.The present invention relates to a method and system for processing data using a video card.

전형적으로, 컴퓨터 상에 상주하는 컨텐트는 컨텐트를 훔치거나 변경하고자하는 개인들에 의해 공격받을 수 있다. 한 예로서, 웹 상의 영화 스튜디오 또는 사용자 출판 컨텐트와 같은 컨텐트 저작물의 경우를 생각해보자. 전형적으로 이들 개인들은 사용자들이 이것을 볼 수 있는 방법에 제한이 있는 비디오 컨텐트를 발행할 것이다. 이 컨텐트는 전형적으로, 퍼스널 컴퓨터와 같은 컴퓨터 상에 뷰잉되거나 렌더링될 수 있다. 이러한 비디오 컨텐트를 훔치거나 그렇지 않으면 부적절하게 얻으려고 시도하는 부도덕한 개인들 및 조직들에 의해 상당한 시간, 노력 및 돈이 매년 소비된다. 또한, 예를 들어 개인이 은행 거래와 같은 거래를 할 수 있게 하는 전자상거래(eCommerce) 소프트웨어의 경우를 생각해보자. 사용자가 리뷰하고 조작하기 위해 디스플레이 모니터 상에 표시된 데이터는 사용자의 컴퓨터 상에서 실행되는 결함성 소프트웨어 어플리케이션에 의해 공격받을 수 있다. 즉, 결함성 프로그램들 또는 장치들은 종종, 컨텐트가 퍼스널 컴퓨터와 같은 컴퓨터 상에 일단 수신되면 컨텐트를 부적절하게 얻고자 시도를 할 수 있다.Typically, content residing on a computer can be attacked by individuals who wish to steal or alter the content. As an example, consider the case of a content asset such as a movie studio or user published content on the web. Typically these individuals will publish video content with restrictions on how users can view it. This content can typically be viewed or rendered on a computer, such as a personal computer. Substantial time, effort, and money are spent every year by immoral individuals and organizations attempting to steal or otherwise inappropriately obtain such video content. Also consider, for example, eCommerce software that allows individuals to make transactions such as banking. Data displayed on a display monitor for review and manipulation by the user may be attacked by a defective software application running on the user's computer. That is, defective programs or devices often attempt to improperly obtain content once the content is received on a computer, such as a personal computer.

컨텐트 보안을 위한 한가지 해결책은 여러가지 소프트웨어 기반의 DRM(Digital Rights Management) 솔루션을 포함할 수 있다. 여기에서 문제점은 소프트웨어 렌더링을 하는 소프트웨어 기반의 내탬퍼성의(tamper-resistant) "관찰하기 어려운" DRM 시스템이 비록 좋다고는 하더라도-궁극적으로, 비트들이 "보여질" 수 있는 비디오 카드로 전부 기록되어 버리거나 또는 심지어 다른 소프트웨어에 의해 카피된다는 것이다. 이것은 공격받을 수 있는 여지를 나타낸다. 그러므로, 비디오 컨텐트를 프로세스하는 비디오 카드는 소프트웨어 공격을 받게 될 수 있다.One solution for content security may include several software-based Digital Rights Management (DRM) solutions. The problem here is that although a software-based tamper-resistant "difficult to observe" DRM system with software rendering is good-ultimately, the bits are all recorded on a video card that can be "shown" or Or even by other software. This represents a room for attack. Therefore, video cards processing video content may be subject to software attacks.

도 1은 전형적인 컴퓨터 상의 한 포트(port) 내로 삽입하는 버스커넥터(102)를 포함하는 예시적인 비디오(또는 그래픽) 카드(100)를 도시한 것이다. 비디오 카드(100)는 또한 모니터에 접속하는 케이블을 수신하는 모니터 커넥터(104)(예를 들어, 15핀 플러그)를 포함한다. 비디오 카드(100)는 비디오 영상을 LCD 및 평판 모니터 등에 전송하는데 사용될 수 있는 디지털 비디오-아웃 소켓(106)을 포함할 수 있다.1 illustrates an example video (or graphics) card 100 that includes a bus connector 102 that inserts into a port on a typical computer. Video card 100 also includes a monitor connector 104 (eg, a 15-pin plug) that receives a cable connecting to the monitor. Video card 100 may include a digital video-out socket 106 that may be used to transmit video images to LCDs, flat panel monitors, and the like.

현대의 비디오 카드는 4개의 주요 구성요소, 즉 그래픽 프로세서 유닛(GPU)(108), 비디오 메모리(110), 랜덤 억세스 메모리 디지털-아날로그 변환기(RAMDAC)(112), 및 비디오 BIOS(114) 내에 포함될 수 있는 드라이버 소프트웨어로 구성된다.Modern video cards are contained within four main components: graphics processor unit (GPU) 108, video memory 110, random access memory digital-to-analog converter (RAMDAC) 112, and video BIOS 114. It consists of driver software.

GPU(108)는 해상도, 색 농도, 및 모니터 화면 상의 렌더링 영상과 연관된 모든 요소들의 모든 표시양상(aspects)을 제어하는 전용 그래픽 프로세싱 칩이다. 컴퓨터의 중앙 프로세싱 유닛 또는 CPU(도시되지 않음)는 그래픽 카드의 소유 드라이버에 의해 해석되고 카드의 GPU(108)에 의해 실행되는 한 세트의 드로윙(drawing) 명령들 및 데이터를 보낸다. GPU(108)는 비트맵 전송 및 페인팅, 윈도우 리사이징(resizing) 및 리포지셔닝(repositioning), 라인 드로윙(line drawing), 폰트 스케일링(font scaling) 및 폴리곤 드로윙 등의 동작들을 실행한다. GPU(108)는 시스템의 CPU에서 실행하는 소프트웨어보다 훨씬 빠른 속도의 하드웨어에서 이러한 작업들을 처리하도록 설계된다. 그 다음, GPU는 프레임 데이터를 프레임 버퍼(또는 온-보드(on-board) 비디오 메모리(110))에 기록한다. GPU는 시스템 CPU의 작업부하를 상당히 감소시킨다.GPU 108 is a dedicated graphics processing chip that controls the resolution, color depth, and all aspects of all elements associated with the rendered image on the monitor screen. The computer's central processing unit or CPU (not shown) sends a set of drawing instructions and data that are interpreted by the graphics card's proprietary driver and executed by the card's GPU 108. GPU 108 performs operations such as bitmap transfer and painting, window resizing and repositioning, line drawing, font scaling, and polygon drawing. GPU 108 is designed to handle these tasks in hardware much faster than software running on the system's CPU. The GPU then writes the frame data to the frame buffer (or on-board video memory 110). The GPU significantly reduces the workload of the system CPU.

비디오 영상을 보유하는 메모리는 또한 프레임 버퍼라고도 칭해지고, 보통 비디오 카드 자체에 실현된다. 이러한 예에서, 프레임 버퍼는 메모리(110)의 형태로 비디오 카드 상에 실현된다. 초기의 시스템은 표준 DRAM 내에 비디오 메모리를 실현했다. 그러나, 이것은 데이터가 손실되지 않게 하기 위해서 계속적인 데이터의 리프레싱을 필요로 하고, 이러한 리프레시 프로세스 동안에는 변경될 수 없다. 현대의 그래픽 카드에 의해 요구된 특히 매우 빠른 클럭 속도의 결과는 성능이 몹시 저하된다는 것이다.The memory holding the video image is also called the frame buffer and is usually realized on the video card itself. In this example, the frame buffer is realized on the video card in the form of memory 110. Early systems realized video memory in standard DRAM. However, this requires continuous refreshing of the data so that no data is lost, and cannot be changed during this refresh process. The result of the particularly high clock speeds required by modern graphics cards is that performance is severely degraded.

비디오 메모리를 비디오 카드 자체에서 실현하는 장점은 이것이 특정 작업에 맞게 맞추어질 수 있다는 것이고, 실제로 이것은 새로운 메모리 기술의 확산을 초래했다:The advantage of realizing video memory on the video card itself is that it can be tailored to specific tasks, and in fact this has led to the proliferation of new memory technologies:

ㆍ 비디오 RAM(VRAM) : 동시에 기입 및 판독될 수 있는 특정 형태의 이중 포트 DRAM. 이것은 또한 통상의 DRAM보다 훨씬 덜 빈번한 리프레싱을 필요로 하므로, 실행을 훨씬 더 잘한다.Video RAM (VRAM): A special form of dual port DRAM that can be written and read simultaneously. It also requires much less frequent refreshing than conventional DRAM and therefore performs much better.

ㆍ 윈도우즈 RAM(WRAM) : 매트록스 밀레니엄(Matrox Millennium) 카드에 의해 사용되는 바와 같이, 역시 이중 포트이며, 종래의 VRAM보다 약간 빨리 실행할 수 있다.Windows RAM (WRAM): As used by Matrox Millennium cards, it is also a dual port and can run slightly faster than conventional VRAM.

ㆍ EDO DRAM : DRAM보다 더 높은 대역폭을 제공하고, 통상의 DRAM보다 더 빠르게 클럭될 수 있으며, 판독/기입 사이클을 더욱 효율적으로 관리한다.EDO DRAM: Provides higher bandwidth than DRAM, can be clocked faster than conventional DRAM, and manages read / write cycles more efficiently.

ㆍ SDRAM : 메모리 및 그래픽 칩이 래치 데이터에 사용된 공통 클럭에서 실행되어, SDRAM이 정규 EDO RAM보다 더 빠르게 실행할 수 있게 한다는 점을 제외하고는 EDO RAM과 유사하다.SDRAM: Similar to EDO RAM, except that memory and graphics chips run on a common clock used for latch data, allowing SDRAM to run faster than regular EDO RAM.

ㆍ SGRAM : SDRAM과 동일하지만, 블록 기입 및 비트당 기입을 지원하여, 이들 향상된 특징을 지원하는 그래픽 칩 상의 성능을 더욱 좋게 한다.SGRAM: Same as SDRAM, but supports block write and write per bit, further improving performance on graphics chips supporting these enhanced features.

ㆍ DRDRAM : 다이렉트 RDRAM은 종래의 DRAM에 비해 20-폴드(fold) 성능 향상의 가망이 있는 전체적으로 새로운 범용 메모리 아키텍처이다.DRDRAM: Direct RDRAM is an entirely new general-purpose memory architecture with the promise of 20-fold performance improvement over conventional DRAM.

어떤 설계들은 그래픽 회로를 마더보드 자체 내로 통합하여, 시스템 RAM의 일부를 프레임 버퍼용으로 사용한다. 이것은 "통합된 메모리 아키텍처"라고도 불리우며, 단지 비용절감의 이유로 사용되는 것으로, 열악한 그래픽 성능을 초래할 수 있다.Some designs integrate graphics circuitry into the motherboard itself, using part of the system RAM for the frame buffer. This is also called an "integrated memory architecture" and is only used for cost saving reasons, which can result in poor graphics performance.

비디오 메모리 프레임 버퍼 내의 정보는 스크린 상에 나타나는 어떤 영상으로서, 디지털 비트맵으로서 저장된다. 그러나, 비디오 메모리가 디지털 정보를 포함하고 있는 반면, 이것의 출력 매체-모니터-는 아날로그 신호를 사용할 수도 있다. 아날로그 신호는 "온" 또는 "오프" 신호보다 정확히 더 많은 것을 필요로 하는데, 그러나 실제로는 모니터의 전면을 가로질러 내려가면서 주사함에 따라 전자 총들이 점화되어야 하는 곳과, 때, 및 어떤 강도로 점화되어야 하는 지를 결정하는데 사용된다. 이것은 RAMDAC(12)가 후술되는 바와 같이 움직이게 되는 점이다. 어떤 RAMDAC들은 또한 LCD 모니터와 같은 디지털 디스플레이에 대한 디지털 비디오 인터페이스(DVI) 출력을 지원한다. 이러한 구성으로, RAMDAC는 내부 디지털 표현을 디스플레이에 의해 이해할 수 있는 형태로 변환시킨다.The information in the video memory frame buffer is any image that appears on the screen and is stored as a digital bitmap. However, while video memory contains digital information, its output medium-monitor-may use analog signals. The analog signal requires exactly more than the "on" or "off" signal, but in practice it ignites at, when, and at what intensity the guns should ignite as they scan across the front of the monitor. Used to determine if it should be. This is the point where the RAMDAC 12 moves as described later. Some RAMDACs also support digital video interface (DVI) outputs for digital displays such as LCD monitors. In this configuration, the RAMDAC converts the internal digital representation into a form understandable by the display.

RAMDAC는 내부 디지털 데이터를 디스플레이에 의해 이해되는 형태로 변환시키기 때문에 "디스플레이 변환기"의 역할을 한다.The RAMDAC acts as a "display converter" because it converts internal digital data into a form understood by the display.

비디오 카드 상에 설치된 비디오 메모리의 전체가 특정 해상도에 필요로 되는 것은 아니지만, 여분의 메모리는 종종 GPU(108)에 대한 정보를 캐싱(caching)하는데 사용된다. 예를 들어, 텍스트 폰트 및 아이콘 또는 영상과 같은 일반적으로 사용된 그래픽 아이템의 캐싱은 새로운 문자가 기록되거나 또는 아이콘이 이동될 때마다 그래픽 서브시스템이 이들을 로드할 필요성을 방지함으로써, 성능을 향상시킨다. 캐싱된 영상은 GPU에 의해 나타나게 될 영상의 시퀀스를 위로 큐잉하는데 사용될 수 있고, 이에 의해 CPU가 자유롭게 다른 작업을 실행할 수 있다.Although not all of the video memory installed on the video card is required for a particular resolution, the extra memory is often used to cache information about the GPU 108. For example, caching of commonly used graphic items, such as text fonts and icons or images, improves performance by avoiding the need for the graphics subsystem to load them whenever new characters are recorded or icons are moved. The cached image can be used to queue up a sequence of images that will be presented by the GPU, allowing the CPU to freely execute other tasks.

초 당 여러번, RAMDAC(112)는 비디오 메모리의 컨텐츠를 판독하고, 이것을 신호로 변환하여, 비디오 케이블을 통해 모니터로 보낸다. 아날로그 디스플레이의 경우, 전형적으로 3원색 각각에 대해 하나의 디지털-아날로그 변환기(DAC)가 있으며, CRT는 완전한 컬러 스펙트럼을 만들기 위해 사용한다. 디지털 디스플레이의 경우, RAMDAC는 해석되어 출력 장치에 의해 표시될 하나의 RGB 데이터 스트림을 출력한다. 의도된 결과는 하나의 픽셀의 컬러를 만들어내는데 필요한 올바른 믹스(mix)이다. RAMDAC(112)가 정보를 변환시킬 수 있는 속도, 및 GPU(108) 자체의 설계는 그래픽 카드가 지원할 수 있는 리프레시 속도의 범위를 지시한다. RAMDAC(112)는 또한 자체의 내부 아키텍처에 따라 주어진 해상도로 이용할 수 있는 컬러의 수를 지시한다.Many times per second, the RAMDAC 112 reads the content of the video memory, converts it to a signal, and sends it to the monitor via the video cable. In the case of analog displays, there is typically one digital-to-analog converter (DAC) for each of the three primary colors, and the CRT is used to create the full color spectrum. In the case of a digital display, the RAMDAC is interpreted to output one RGB data stream to be displayed by the output device. The intended result is the correct mix needed to produce the color of one pixel. The speed at which the RAMDAC 112 can convert information, and the design of the GPU 108 itself, dictate the range of refresh rates that the graphics card can support. RAMDAC 112 also dictates the number of colors available at a given resolution, depending on its internal architecture.

버스 커넥터(102)는 비디오 카드와 접속하는데 사용되는 하나 이상의 버스를 지원할 수 있다. 예를 들어, AGP(Accelerated Graphics Port) 버스는 비디오 카드가 직접 시스템 메모리를 억세스할 수 있게 한다. 직접 메모리 억세스는 PCI(Peripheral Component Interconnect) 버스보다 더 높게 여러번 피크 대역폭을 만들어내도록 돕는다. 이것은 비디오 카드 상의 GPU가 시스템 메모리를 억세스하는 동안에 시스템의 CPU가 다른 작업을 할 수 있게 한다.Bus connector 102 may support one or more buses used to connect with a video card. For example, the Accelerated Graphics Port (AGP) bus allows video cards to directly access system memory. Direct memory access helps to produce multiple peak bandwidths higher than the Peripheral Component Interconnect (PCI) bus. This allows the system's CPU to do other work while the GPU on the video card is accessing the system memory.

동작 중에, 온-보드 비디오 메모리 내에 포함된 데이터는 컴퓨터의 시스템 메모리 내에 제공될 수 있고, 이것이 마치 시스템 메모리의 일부였던 것처럼 관리될 수 있다. 이것은 컴퓨터의 메모리 관리자가 사용하는 가상 메모리 관리 기술과 같은 것을 포함한다. 더우기, 시스템의 메모리 내에 포함된 데이터가 비디오 카드 상의 그래픽 동작에 필요하게 될 때, 데이터는 버스(예를 들어, PCI 또는 AGP 버스)를 통해 비디오 카드에 전송되어 온-보드 비디오 메모리(110) 내에 저장될 수 있다. 데이터는 후술되는 바와 같이 GPU(108)에 의해 억세스되어 조작될 수 있다.In operation, data contained in the on-board video memory may be provided in the system memory of the computer and managed as if it were part of the system memory. This includes such things as virtual memory management techniques used by the computer's memory manager. Moreover, when data contained in the memory of the system is required for graphics operation on the video card, the data is transferred to the video card via a bus (e.g., a PCI or AGP bus) in the on-board video memory 110 Can be stored. The data can be accessed and manipulated by the GPU 108 as described below.

본 발명은 데이터를 보호하는 방법 및 시스템을 제공하는 것과 관련된 관심에서 생겨났다. 특히, 본 발명은 소프트웨어 공격, 특히 사용자의 기계에서 실행되는 결함성 어플리케이션에 의해 수행되는 공격을 이겨내는 방법 및 시스템을 제공하는 것과 관련된 관심에서 생겨났다.The present invention arises from the interest associated with providing a method and system for protecting data. In particular, the present invention has arisen from the interest associated with providing methods and systems for coping with software attacks, particularly attacks performed by defective applications executed on a user's machine.

여기에 설명된 여러가지 방법 및 시스템은 호스트 컴퓨터 상에서 실행되는 소프트웨어에 안전한 채널을 공급하는 것에 관한 것이다. 이 방법 및 시스템은 호스트 컴퓨터 상에서 실행되는 결함성 소프트웨어가 데이터를 부적절하게 얻거나 그밖에 다른 방법으로 데이터를 조작하고자 시도하는 공격 모델을 역점을 두어 다루고, 그 공격 모델에 대한 해결책을 제공한다. 일부 실시예들은 비밀이 유지될 수 있는(신뢰할 수 없는 소프트웨어 어플리케이션이 표시 화면으로부터 데이터를 판독할 수 없는) 픽셀 데이터를 제공할 수 있다. 또한, 다른 실시예들은 픽셀 데이터가 부적절하게 조작되었는 지를 검출함으로써 픽셀 데이터의 무결성을 보전할 수 있다.Various methods and systems described herein relate to providing a secure channel to software running on a host computer. This method and system addresses the attack model in which defective software running on a host computer improperly obtains data or otherwise attempts to manipulate the data, and provides a solution to that attack model. Some embodiments may provide pixel data that may be kept confidential (unreliable software applications cannot read data from the display screen). In addition, other embodiments may preserve the integrity of the pixel data by detecting that the pixel data has been improperly manipulated.

여러가지 실시예들은 해독된 픽셀 데이터로의 프로그램 억세스가 허락되지 않도록 비디오 프로세싱 체인에서 매우 늦게 비디오 카드 상에 위치하게 된다.Various embodiments are placed on the video card very late in the video processing chain such that program access to the decrypted pixel data is not allowed.

도 1은 컴퓨터 시스템에서 사용하기로 되어 있는 예시적인 비디오 또는 그래픽 카드의 여러가지 구성요소를 도시한 블록도.1 is a block diagram illustrating various components of an exemplary video or graphics card intended for use in a computer system.

도 2는 상술된 실시예에 따라 비디오 카드를 사용할 수 있는 예시적인 컴퓨터 시스템의 블록도.2 is a block diagram of an exemplary computer system that can use a video card in accordance with the embodiments described above.

도 3은 한 실시예에 따른 예시적인 비디오 또는 그래픽 카드의 여러가지 구성요소를 도시한 블록도.3 is a block diagram illustrating various components of an exemplary video or graphics card according to one embodiment.

도 4는 안전 영역 및 비안전(non-secure) 영역을 갖고 있는 예시적인 주 표면을 도시한 블록도.4 is a block diagram illustrating an exemplary major surface having a safe area and a non-secure area.

도 5는 한 실시예에 따른 방법의 단계들을 설명하는 흐름도.5 is a flow diagram illustrating steps of a method according to one embodiment.

도 6은 한 실시예에 따른 방법의 단계들을 설명하는 플로우차트.6 is a flowchart illustrating steps of a method according to one embodiment.

도 7은 안전 영역 및 비안전 영역을 갖고 있는 예시적인 주 표면을 도시한 블록도.7 is a block diagram illustrating an exemplary major surface having a safe area and an unsafe area.

도 8은 중첩 윈도우를 갖고 있는 표시 화면을 도시한 블록도.8 is a block diagram showing a display screen having an overlapping window.

도 9는 예시적인 픽셀 데이터 및 연관된 보조 기능 테이블을 도시한 도면.9 illustrates exemplary pixel data and associated auxiliary function table.

도 10은 한 실시예에 따른 방법의 단계들을 설명하는 흐름도.10 is a flowchart describing steps of a method according to one embodiment.

도 11은 한 실시예에 따른 예시적인 퍼-픽셀(per-pixel) 키 테이블을 도시한 도면.FIG. 11 illustrates an exemplary per-pixel key table in accordance with an embodiment. FIG.

도 12는 한 실시예에 따른 방법의 단계들을 설명하는 흐름도.12 is a flowchart describing steps of a method according to one embodiment.

도 13은 한 실시예에 따른 예시적인 테이블을 도시한 도면.13 illustrates an example table according to an embodiment.

<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>

108, 308 : 그래픽 프로세서 유닛(GPU)108, 308: Graphic Processor Unit (GPU)

110, 310 : 온-보드 비디오 메모리110, 310: on-board video memory

112, 312 : RAMDAC112, 312: RAMDAC

114, 314 : 비디오 BIOS114, 314: Video BIOS

316 : 메모리 제어기316: memory controller

318 : 제어 프로세서318: control processor

319 : 키 매니저319 key manager

320 : 해독기320: decipher

322 : 안전 어플리케이션322: safety applications

예시적인 컴퓨터 시스템Example Computer System

도 2는 후술되는 시스템 및 관련 방법이 실현될 수 있는 적절한 컴퓨팅 환경(200)의 한 예를 도시한 것이다.2 illustrates an example of a suitable computing environment 200 in which the systems and associated methods described below may be implemented.

컴퓨팅 환경(200)은 적절한 컴퓨팅 환경의 단지 한 예일 뿐이고, 매체 프로세싱 시스템의 사용범위나 기능에 소정의 제한을 주고자 하는 것은 아니라는 것을 이해하기 바란다. 컴퓨팅 환경(200)은 예시적인 컴퓨팅 환경(200)에 도시된 소정의 한 구성요소나 이 구성요소들의 조합에 관련된 소정의 의존도나 요건을 갖는 것으로 해석되어서는 안된다.It should be understood that the computing environment 200 is only one example of a suitable computing environment and is not intended to impose any limitation on the scope or functionality of the media processing system. Computing environment 200 should not be construed as having any dependencies or requirements related to any one component or combination of components shown in example computing environment 200.

여러가지 설명된 실시예들은 여러가지 다른 범용 또는 전용 컴퓨팅 시스템 환경 또는 구성으로 동작가능하게 될 수 있다. 매체 프로세싱 시스템과 사용하기에 적절하게 될 수 있는 널리 공지된 컴퓨팅 시스템, 환경, 및/또는 구성의 예들은 퍼스널 컴퓨터, 멀티프로세서 시스템, 마이크로프로세서 기반의 시스템, 셋톱 박스, 프로그램가능한 소비자 전자제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 장치 중 소정의 것을 포함하는 분산형 컴퓨팅 환경 등을 포함하는데, 이것에 제한되는 것은 아니다.The various described embodiments may be operable in various other general purpose or dedicated computing system environments or configurations. Examples of well-known computing systems, environments, and / or configurations that may be suitable for use with media processing systems include personal computers, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics, networks PCs, minicomputers, mainframe computers, distributed computing environments, including any of the above systems or devices, and the like.

소정의 실시 형태에서, 시스템 및 관련 방법은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 일반적인 상황의 컴퓨터 실행가능 명령들로 잘 설명될 수도 있다. 일반적으로, 프로그램 모듈은 특정 작업을 실행하거나 특정 추상 자료형을 실현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 실시예들은 또한 통신 네트워크를 통해 링크되는 원격 프로세싱 장치에 의해 작업이 실행되는 분산형 컴퓨팅 환경에서 실시될 수 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 근거리 및 원거리 컴퓨터 저장 매체 내에 위치하게 될 수도 있다.In certain embodiments, a system and associated method may be well described in computer-executable instructions in a general context, such as a program module executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Embodiments may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.

도 2에 도시된 실시예에 따르면, 컴퓨팅 시스템(200)은 하나 이상의 프로세서 또는 프로세싱 유닛(202), 시스템 메모리(204), 및 시스템 메모리(204)를 포함하는 여러가지 시스템 구성요소를 프로세서(202)에 연결하는 버스(206)를 포함하는 것으로 도시된다.According to the embodiment shown in FIG. 2, the computing system 200 may include various system components including one or more processors or processing units 202, system memory 204, and system memory 204. It is shown to include a bus 206 that connects to it.

버스(206)는 메모리 버스 또는 메모리 제어기, 주변 버스, 가속 그래픽 포트, 및 여러가지 버스 아키텍처들 중 소정의 것을 사용하는 프로세서 또는 로컬 버스를 포함하는 몇가지 유형의 버스 구조들중 한가지 이상의 소정의 것을 나타내고자 의도된 것이다. 예로서(제한적인 것은 아님), 이러한 아키텍처는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스,EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 Mezzanine 버스로도 알려져 있는 PCI 버스를 포함한다.The bus 206 is intended to represent any one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. It is intended. By way of example, but not limitation, such architecture is also known as an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Mezzanine bus. Contains the known PCI bus.

컴퓨터(200)는 전형적으로 여러가지 컴퓨터 판독가능 매체를 포함한다. 이러한 매체는 컴퓨터(200)에 의해 국부적으로 및/또는 원격으로 억세스가능한 소정의 이용가능한 매체일 수도 있고, 이것은 휘발성 및 비휘발성 매체, 착탈가능 및 착탈불가능 매체를 포함한다.Computer 200 typically includes a variety of computer readable media. Such media may be any available media that is locally and / or remotely accessible by computer 200, including volatile and nonvolatile media, removable and non-removable media.

도 2에서, 시스템 메모리(204)는 RAM(210)과 같은 휘발성 메모리 형태, 및/또는 ROM(208)과 같은 비휘발성 메모리 형태의 컴퓨터 판독가능 매체를 포함한다. 시동(start-up) 동안 등의 컴퓨터(200) 내의 소자들 사이의 정보 전달을 돕는 베이직 루틴을 포함하는 베이직 입/출력 시스템(BIOS)(212)은 ROM(208) 내에 저장된다. RAM(210)은 전형적으로, 즉시 억세스가능 및/또는 프로세싱 유닛(들)(202)에 의해 현재 동작되는 데이터 및/또는 프로그램 모듈을 포함한다.In FIG. 2, system memory 204 includes computer readable media in the form of volatile memory, such as RAM 210, and / or non-volatile memory, such as ROM 208. A Basic Input / Output System (BIOS) 212 is stored in ROM 208 that includes a basic routine that assists in transferring information between elements in computer 200, such as during start-up. RAM 210 typically includes data and / or program modules that are currently accessible by immediately accessible and / or processing unit (s) 202.

컴퓨터(200)는 그밖의 다른 착탈가능/착탈불가능, 휘발성/비휘발성 컴퓨터 저장 매체를 더 포함할 수도 있다. 단지 예로서, 도 2는 착탈불가능의 비휘발성 자기 매체로부터 판독하고 이 매체에 기입하는 하드 디스크 드라이브(228)(도시되지 않았으며, 전형적으로 "하드 드라이브"로 불림), 착탈가능한 비휘발성 자기 디스크(232(예를 들어, "플로피 디스크")로부터 판독하고 이 디스크에 기입하는 자기 디스크 드라이브(230), 및 CD-ROM, DVD-ROM 또는 다른 광 매체와 같은 착탈가능한 비휘발성 광 디스크(236)로부터 판독하거나 이 디스크에 기입하는 광 디스크 드라이브(234)를 도시한 것이다. 하드 디스크 드라이브(228), 자기 디스크드라이브(230) 및 광 디스크 드라이브(234)는 하나 이상의 인터페이스(226)에 의해 버스(206)에 각각 접속된다.Computer 200 may further include other removable / removable, volatile / nonvolatile computer storage media. By way of example only, FIG. 2 illustrates a hard disk drive 228 (not shown and typically referred to as a "hard drive") that reads from and writes to a non-removable nonvolatile magnetic medium, a removable nonvolatile magnetic disk. Magnetic disk drive 230 that reads from and writes to 232 (e.g., " floppy disk "), and removable non-volatile optical disk 236 such as a CD-ROM, DVD-ROM, or other optical media. Shows an optical disk drive 234 that reads from or writes to this disk, hard disk drive 228, magnetic disk drive 230, and optical disk drive 234 are connected to a bus (e.g., by one or more interfaces 226). 206, respectively.

드라이브 및 이들과 관련된 컴퓨터 판독가능 매체는 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들, 및 컴퓨터(200)용의 다른 데이터의 비휘발성 스토리지를 제공한다. 여기에 설명된 예시적인 환경은 하드 디스크(228), 착탈가능 자기 디스크(232) 및 착탈가능 광 디스크(236)를 사용하고 있지만, 자기 카세트, 플래시 메모리 카드, 디지털 비디오 디스크, RAM, ROM 등과 같이 컴퓨터에 의해 억세스가능한 데이터를 저장할 수 있는 다른 유형의 컴퓨터 판독가능 매체가 또한 예시적인 동작 환경에 사용될 수도 있다는 것을 당업자들은 이해해야 한다.The drive and its associated computer readable medium provide non-volatile storage of computer readable instructions, data structures, program modules, and other data for the computer 200. The example environment described herein uses hard disk 228, removable magnetic disk 232, and removable optical disk 236, but such as magnetic cassettes, flash memory cards, digital video disks, RAM, ROM, and the like. Those skilled in the art should understand that other types of computer readable media capable of storing data accessible by the computer may also be used in the exemplary operating environment.

다수의 프로그램 모듈은, 예를 들어(제한적인 것은 아님) 운영 시스템(214), 하나 이상의 어플리케이션 프로그램(216)(예를 들어, 멀티미디어 어플리케이션 프로그램(224)), 다른 프로그램 모듈(218) 및 프로그램 데이터(220)를 포함하여, 하드 디스크(228), 자기 디스크(232), 광 디스크(236), ROM(208) 또는 RAM(210) 상에 저장될 수도 있다. 사용자는 키보드(238) 및 포인팅 장치(240)(예를 들어, "마우스")와 같은 입력 장치를 통해 컴퓨터(200) 내로 커맨드 및 정보를 입력할 수도 있다. 다른 입력 장치들은 오디오/비디오 입력 장치(들)(253), 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 직렬 포트, 스캐너 등(도시되지 않음)을 포함할 수도 있다. 이들 및 다른 입력 장치는 버스(206)에 연결된 입력 인터페이스(들)(242)을 통해 프로세싱 유닛(들)(202)에 접속되는데, 병렬 포트, 게임 포트 또는 USB(Universal Serial Bus)와 같은 다른 인터페이스 및 버스 구조들에 의해 접속될수도 있다.Multiple program modules may include, for example, but not limited to, operating system 214, one or more application programs 216 (eg, multimedia application programs 224), other program modules 218, and program data. It may be stored on hard disk 228, magnetic disk 232, optical disk 236, ROM 208, or RAM 210, including 220. A user may also enter commands and information into the computer 200 through input devices such as a keyboard 238 and pointing device 240 (eg, a “mouse”). Other input devices may include audio / video input device (s) 253, microphones, joysticks, game pads, satellite dishes, serial ports, scanners, and the like (not shown). These and other input devices are connected to the processing unit (s) 202 through input interface (s) 242 connected to the bus 206, which may be other interfaces such as parallel ports, game ports or Universal Serial Bus (USB). And by bus structures.

모니터(256) 또는 다른 유형의 표시 장치는 또한 비디오 어댑터 또는 비디오/그래픽 카드(244)와 같은 인터페이스를 통해 버스(206)에 접속된다. 모니터 이외에, 퍼스널 컴퓨터는 전형적으로, 출력 주변 인터페이스(246)를 통해 접속될 수도 있는 스피커 및 프린터와 같은 다른 주변 출력 장치(도시되지 않음)를 포함한다.The monitor 256 or other type of display device is also connected to the bus 206 via an interface such as a video adapter or video / graphics card 244. In addition to the monitor, the personal computer typically includes other peripheral output devices (not shown), such as speakers and printers, which may be connected via the output peripheral interface 246.

컴퓨터(200)는 원격 컴퓨터(250)와 같은 하나 이상의 원격 컴퓨터에 대한 로컬 접속을 사용하는 네트워킹된 환경에서 동작할 수도 있다. 원격 컴퓨터(250)는 컴퓨터와 관련하여 여기에 설명된 다수의 또는 모든 소자들 및 특징을 포함할 수도 있다.Computer 200 may operate in a networked environment using local connections to one or more remote computers, such as remote computer 250. Remote computer 250 may include many or all of the elements and features described herein in connection with a computer.

도 2에 도시된 바와 같이, 컴퓨팅 시스템(200)은 근거리망(LAN)(251) 및 일반적인 광역망(WAN)(252)을 통해 원격 장치(예를 들어, 원격 컴퓨터(250))에 통신가능하게 연결된다. 이러한 네트워킹 환경은 사무실, 기업 전반의 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일상적인 것이다.As shown in FIG. 2, computing system 200 is capable of communicating to a remote device (eg, remote computer 250) via a local area network (LAN) 251 and a general wide area network (WAN) 252. Is connected. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.

LAN 네트워킹 환경에서 사용될 때, 컴퓨터(200)는 적절한 네트워크 인터페이스 또는 어댑터(248)를 통해 LAN(251)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(200)는 전형적으로 모뎀(254), 또는 WAN(252)을 통해 통신을 설정하는 다른 수단을 포함한다. 내부 또는 외부에 있을 수 있는 모뎀(254)은 사용자 입력 인터페이스(242), 또는 다른 적절한 메카니즘을 통해 시스템 버스(206)에 접속될 수도 있다.When used in a LAN networking environment, the computer 200 is connected to the LAN 251 through an appropriate network interface or adapter 248. When used in a WAN networking environment, the computer 200 typically includes a modem 254, or other means for establishing communications over the WAN 252. The modem 254, which may be internal or external, may be connected to the system bus 206 via the user input interface 242, or other suitable mechanism.

네트워킹된 환경에서, 퍼스널 컴퓨터(200)에 관련하여 묘사된 프로그램 모듈, 또는 그 일부는 원격 메모리 저장 장치 내에 저장될 수도 있다. 예로서(제한적인 것은 아님), 도 2는 원격 컴퓨터(250)의 메모리 장치에 상주하는 원격 어플리케이션 프로그램(216)을 도시한 것이다. 도시되고 설명된 네트워크 접속은 예시적인 것이고, 컴퓨터들 사이의 통신 링크를 설정하는 다른 수단이 사용될 수도 있다는 것을 알 수 있을 것이다.In a networked environment, program modules depicted relative to the personal computer 200, or portions thereof, may be stored in the remote memory storage device. By way of example, but not limitation, FIG. 2 illustrates a remote application program 216 residing in the memory device of remote computer 250. It will be appreciated that the network connections shown and described are exemplary and other means of establishing a communications link between the computers may be used.

개략outline

여기에 설명된 여러가지 방법 및 시스템은 호스트 컴퓨터 상에서 실행되는 소프트웨어에 안전 채널을 공급하는 것에 관한 것이다. 이 방법 및 시스템은 호스트 컴퓨터 상에서 실행되는 결함성 어플리케이션이 데이터를 부적절하게 얻거나 또는 다른 방법으로 조작하려고 시도하는 공격 모델을 역점을 두어 다루고, 그 공격 모델에 대한 솔루션을 제공한다.Various methods and systems described herein relate to providing a secure channel to software running on a host computer. This method and system addresses an attack model in which a defective application running on a host computer attempts to improperly obtain or otherwise manipulate data, and provides a solution to that attack model.

여러가지 실시예들은 사용자가 상호작용하기 위해 디스플레이 화면 상에 데이터가 안전하게 렌더링될 수 있는 안전 실행 환경을 제공할 수 있다. 설명된 실시예들은 그밖의 다른 특징들 중에서, 다음의 특징들 중 하나 또는 두개의 특징을 구현할 수 있다.Various embodiments can provide a safe execution environment in which data can be safely rendered on a display screen for user interaction. The described embodiments can implement one or two of the following features, among other features.

첫번째 특징은 데이터, 예를 들어 비디오 카드에 상주하는 픽셀 데이터의 비밀이 유지될 수 있다는 것이다. 이것은 신뢰성없는 소프트웨어 어플리케이션(또는 결함있는 어플리케이션)은 디스플레이 화면으로부터 또는 비디오 메모리로부터 데이터를 판독할 수 없다는 것을 의미한다. 비밀성 양상은 디지털 작업장에서 유용한데, 왜냐하면 그것이 비디오 또는 픽셀 데이터를 렌더링하고 있다면, 컴퓨터 상에서 실행되는 "크래킹 툴(cracking tool)"이 데이터를 판독할 수 없게 하는 방식으로 비디오 데이터를 비디오 카드로 보낼 수 있게 하는 것이 바람직하기 때문이다. 예를 들어, 데이터를 암호화된 형태로 수신할 수 있게 하는 안전 이메일 프로그램으로 사용자가 작업하고 있는 것을 생각해보자. 여러가지 실시예들은 데이터를 억세스할 수 있게 되는 결함성 어플리케이션의 위험이 없이 데이터가 표시 화면 상에 렌더링될 수 있게 할 수 있다.The first feature is that the data, for example pixel data residing on the video card, can be kept secret. This means that unreliable software applications (or defective applications) cannot read data from the display screen or from video memory. The confidentiality aspect is useful in digital workplaces, because if it is rendering video or pixel data, it will send the video data to the video card in such a way that a "cracking tool" running on the computer cannot read the data. It is because it is desirable to be able to. For example, consider a user working with a secure email program that allows data to be received in encrypted form. Various embodiments may allow data to be rendered on a display screen without the risk of defective applications that may be able to access the data.

두번째 특징은 무결성에 있다. 이것에 의하면, 본질적으로, 사람은 신뢰성없는 소프트웨어(또는 결함있는 소프트웨어)가 디스플레이의 부분들 상에 표시된 데이터를 조작할 수 있게 되는 것을 원하지 않는다는 것이다. 예를 들어, 사용자가 이들의 컴퓨터 상에서 실행되는 소프트웨어를 통해 소정의 엔티티에 $10을 지불하기로 하는 전자상거래 세팅을 고려해보자. 사용자는 이들의 표시 화면 상에 표시된 윈도우에 달러 양을 단순히 타이핑하여 넣을지도 모른다. 그러나, 결함있는 어플리케이션이 "$10"을 "$1000"로 변경할 가능성이 있다. 이해할 수 있듯이, 이것은 바람작하지 않으며: 사용자는 이들이 의도한 것보다 더 많은 양의 지불액을 허가했다.The second feature is integrity. According to this, in essence, a person does not want unreliable software (or defective software) to be able to manipulate the data displayed on the parts of the display. For example, consider an e-commerce setting where a user decides to pay $ 10 to a given entity through software running on their computer. The user may simply type the dollar amount into the window displayed on their display screen. However, there is a possibility that a defective application may change "$ 10" to "$ 1000". As you can understand, this is not a good idea: the user has allowed more payments than they intended.

또한, 어떤 신뢰성없는 소프트웨어가 데이터를 어떠한 방식으로 부적절하게 조작한다면, 이러한 일이 발생한 것을 알릴 수 있게 하는 것이 바람직할 것이다. 따라서, 후술되는 몇가지 실시예들은 데이터 조작이 검출될 수 있는 수단을 제공한다.In addition, if some unreliable software improperly manipulates the data in any way, it would be desirable to be able to signal that this has happened. Thus, some embodiments described below provide a means by which data manipulation can be detected.

예시적인 실시예들Example Embodiments

후술되는 실시예들은 안전한 비디오 출력-즉, 소프트웨어 공격을 받기 쉽지 않은 비디오 출력을 제공하는 것에 관한 것이다. 여러가지 실시예들은 비록 전체 화면 보호가 배제되지 않더라도, 전체 화면 구역 자체보다는 사용자의 표시 화면 상의 영역(즉, 윈도우)에 선택적으로 적용될 수 있는 윈도우 기반의 보호를 제공할 수 있다. 안전한 비디오 출력은 전형적으로 신뢰성없는 소프트웨어에 의해 판독될 수 없다. 이러한 특성은 광범위한 일반적인 전자 상거래 및 보안 어플리케이션뿐만 아니라, 프리미엄 컨텐트(예를 들어, 비디오, 책)와 같은 컨텐트에 보호를 제공한다.Embodiments described below relate to providing a secure video output—that is, a video output that is not susceptible to software attacks. Various embodiments may provide window-based protection that may be selectively applied to an area on the user's display screen (ie, a window) rather than the full screen area itself, even if full screen protection is not excluded. Secure video output is typically not readable by unreliable software. This feature provides protection for content such as premium content (eg, videos, books), as well as a wide range of common e-commerce and security applications.

또한, 여러가지 실시예들은 신뢰성없는 다이얼로그에 의한 (부분적으로 또는 완전히) 불명료하지 않은 소위 안전 다이얼로그를 제공할 수 있다. 이러한 특성은 일반적인 전자 상거래의 상황에서 가장 유용하다.In addition, various embodiments may provide a so-called safety dialog that is not (obviously or completely) obscured by an unreliable dialog. This feature is most useful in general e-commerce situations.

후술되는 실시예들은 안전 비디오 출력을 제공하는 암호화 기반의 솔루션이다. 여러가지 실시예들의 장점은 이 실시예들이 전형적으로 실현하기 쉽고 실질적으로 기존의 소프트웨어 아키텍처들과 충돌하지 않는다는 것이다.Embodiments described below are encryption-based solutions that provide secure video output. An advantage of the various embodiments is that these embodiments are typically easy to realize and substantially do not conflict with existing software architectures.

설명될 일부 실시예들은 비디오 프로세싱 체인에서 매우 늦게 비디오 카드 상에 위치하게 된 해독 엔진에 기초한 것이다. 이 명세서에서 설명된 예에 있어서, 많은 양상의 실시예들은 하드웨어에서 실현되고- 다른 양상들은 펌웨어 및 소프트웨어에서 실현될 수 있다.Some embodiments to be described are based on a decryption engine that was placed on the video card very late in the video processing chain. In the example described herein, many aspects of the embodiments are realized in hardware-other aspects may be implemented in firmware and software.

본 실시예의 바람직한 특징은 사용자의 표시 화면 상에 표시될 여러가지 데이터가 암호화된다는 것이다. 따라서, 데이터를 훔치는 것에 관한 공격은 단지 암호화된 데이터를 훔치게 되는 것이다. 소정의 훔친 암호화된 데이터가 수학적으로 해독할 수 없도록 암호화 기술이 이용될 수 있다. 부수적으로, 암호화된 데이터의 해독은 표시될 해독된 비트에 대한 프로그램의 억세스가 없도록 프로세싱 체인의 한 지점에서 발생한다. 즉, 사용자의 컴퓨터 상에서 실행되는 결함성 소프트웨어가 해독된 비트를 억세스할 수 없도록 해독된 비트에 대한 어떠한 소프트웨어 억세스도 존재하지 않는다.A preferred feature of this embodiment is that various data to be displayed on the display screen of the user are encrypted. Thus, an attack on stealing data is simply stealing encrypted data. Encryption techniques can be used such that any stolen encrypted data cannot be mathematically decrypted. Incidentally, decryption of encrypted data occurs at one point in the processing chain such that there is no program access to the decrypted bits to be marked. That is, there is no software access to the decrypted bits such that the defective software running on the user's computer cannot access the decrypted bits.

한 실시예에서, 해독기는 비디오 카드 상에 위치하게 되고, GPU와 디스플레이 변환기(예를 들어, RAMDAC)의 중간에 배치된다. 해독기는 하드웨어로 바람직하게 실현되고, 비디오 카드가 프레임 버퍼를 디스플레이 변환기로 래스터(raster)링함에 따라 암호화된 데이터를 실시간으로 프로세스할 수 있다.In one embodiment, the decoder is located on the video card and is positioned in between the GPU and the display converter (eg, RAMDAC). The decryptor is preferably realized in hardware and can process the encrypted data in real time as the video card rasterizes the frame buffer with the display converter.

예시적인 아키텍처Example Architecture

도 3은 한 실시예에 따른 예시적인 비디오(또는 그래픽) 카드(300)를 도시한 것이다. 카드(300)는 전형적인 컴퓨터의 한 포트 내로 끼워지는 버스 커넥터(302)를 포함한다. 비디오 카드(300)는 또한 모니터에 접속하는 케이블을 수용하는 모니터 커넥터(304)(예를 들어, 15핀 플러그)를 포함한다. 비디오 카드(300)는 비디오 영상을 디지털 디스플레이 등에 전송하는데 사용될 수 있는 디지털 비디오-아웃(예를 들어, DVI) 소켓(306)을 포함할 수 있지만, 포함하지 않아도 된다.3 illustrates an example video (or graphics) card 300 according to one embodiment. Card 300 includes a bus connector 302 that fits into one port of a typical computer. Video card 300 also includes a monitor connector 304 (eg, a 15-pin plug) that receives a cable that connects to the monitor. Video card 300 may include, but need not include, a digital video-out (eg, DVI) socket 306 that may be used to transmit video images to digital displays and the like.

도 1의 비디오 카드와 같이, 비디오 카드(300)는 그래픽 프로세서유닛(GPU)(308), 비디오 메모리(310), 디스플레이 변환기 또는 랜덤 억세스 메모리 디지털-아날로그 변환기(RAMDAC)(312), 및 비디오 BIOS(314) 내에 포함될 수 있는 드라이버 소프트웨어를 포함한다.Like the video card of FIG. 1, video card 300 may include a graphics processor unit (GPU) 308, video memory 310, display converter or random access memory digital-to-analog converter (RAMDAC) 312, and a video BIOS. 314 includes driver software that can be included.

GPU(308)는 해상도, 색 농도, 및 영상을 모니터 화면 상에 렌더링하는 것과 관련된 모든 요소들의 모든 양상을 제어하는 전용 그래픽 프로세싱 칩이다. 메모리 제어기(때때로 GPU 내에 통합됨)는 비디오 카드 상의 메모리를 관리한다. 컴퓨터의 중앙 처리 장치 또는 CPU(도시되지 않음)는 그래픽 카드의 소유 드라이버에 의해 해석되고 카드의 GPU(308)에 의해 실행되는 한 세트의 드로윙 명령들 및 데이터를 보낸다. GPU(308)는 비트맵 전송 및 페인팅, 윈도우 리사이징 및 리포지셔닝, 라인 드로윙, 폰트 스케일링 및 폴리곤 드로윙과 같은 동작들을 실행한다. GPU는 그 다음 프레임 데이터를 프레임 버퍼(또는 온-보드 비디오 메모리(310))에 기록할 수 있다.GPU 308 is a dedicated graphics processing chip that controls resolution, color depth, and all aspects of all the elements involved in rendering an image on a monitor screen. Memory controllers (sometimes integrated into the GPU) manage the memory on the video card. The computer's central processing unit or CPU (not shown) sends a set of drawing instructions and data that are interpreted by the graphics card's proprietary driver and executed by the card's GPU 308. GPU 308 performs operations such as bitmap transfer and painting, window resizing and repositioning, line drawing, font scaling, and polygon drawing. The GPU may then write the frame data to the frame buffer (or on-board video memory 310).

비디오 메모리 프레임 버퍼 내의 정보는 스크린 상에 나타나는 영상으로서, 디지털 비트맵으로 저장된다. RAMDAC(312)는 디지털 비트맵을, 상술된 바와 같이, 모니터 상에 렌더링하는데 사용될 수 있는 형태로 변환하기 위해 사용된다.The information in the video memory frame buffer is an image that appears on the screen and is stored as a digital bitmap. RAMDAC 312 is used to convert the digital bitmap into a form that can be used to render on a monitor, as described above.

이러한 구성요소들 이외에, 이 실시예에서, 비디오 카드(300)는 키 매니저(319)를 포함할 수 있는 제어 프로세서(318) 및 메모리 제어기(316)를 포함한다. 비디오 카드는 또한 해독기(320)를 포함한다. 이러한 구성요소들은 소정의 적절한 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로 실현될 수 있다.In addition to these components, in this embodiment, video card 300 includes a control processor 318 and a memory controller 316, which may include a key manager 319. The video card also includes a decoder 320. Such components may be realized in any suitable hardware, software, firmware or combination thereof.

메모리 제어기(316)는 비디오 카드 상의 데이터를 수신하고, 비디오메모리(310) 내의 데이터를 관리한다. 메모리 제어기는 또한 비디오 카드와 시스템 메모리 사이의 데이터 전송을 관리할 책임을 가질 수 있다.The memory controller 316 receives data on the video card and manages data in the video memory 310. The memory controller may also be responsible for managing the data transfer between the video card and the system memory.

제어 프로세서(318)가 제공되고, 키 매니저(319)를 포함할 수 있다. 제어 프로세서는 비디오 카드 상에서 발생하는 암호 기능을 조직할 책임을 가질 수 있다. 예를 들어, 제어 프로세서(318)는 전용 버스 또는 보안 채널을 통해 해독기(320)와 통신하여, 해독기가 보안성의 이유로 암호화된 픽셀 데이터를 적절하게 해독할 필요가 있는 해독 능력을 가질 수 있게 한다. 제어 프로세서(318)는 키 매니저(319)를 통해 적절한 픽셀 데이터를 암호화 및 해독하는 것과 관련된 키를 관리할 수 있다. 일부 실시예에서, 제어 프로세서는 비디오 카드 상의 분리된 집적 회로로서 실현될 수 있다.A control processor 318 is provided and may include a key manager 319. The control processor may be responsible for organizing cryptographic functions occurring on the video card. For example, the control processor 318 may communicate with the decryptor 320 via a dedicated bus or secure channel, such that the decryptor has the decryption capability necessary to properly decrypt the encrypted pixel data for security reasons. Control processor 318 may manage keys associated with encrypting and decrypting appropriate pixel data via key manager 319. In some embodiments, the control processor may be realized as a separate integrated circuit on the video card.

해독기(320)는 적절한 픽셀 데이터를 해독하도록 구성되거나 또는 구성가능하다. 예를 들어, 더욱 상세하게 후술되는 바와 같이, 보호될 데이터는 암호화되어 안전 영역에 기입될 수 있고, 이 안전 영역은 영상을 모니터 상에 렌더링하기 위한 RAMDAC(512)에 의해 사용된 데이터를 포함하는 비디오 카드 메모리의, 소위 "주 표면" 또는 데스크 탑 표면의 일부를 포함한다. 암호화된 영상은 주 표면에 카피되기 전에 비디오 메모리 내의 임시 위치에 카피될 수도 있다. 제어 프로세서(318)는 데이터를 암호화하는데 사용될 암호화 키를 설정할 수 있고, 암호화된 픽셀 데이터를 해독할 때 사용하기 위해 해독기(320)에 해독 키를 제공할 수 있다. 일단 데이터가 해독되면, 데이터는 더욱 프로세싱하기 위해 RAMDAC로 패스될 수 있다.Decoder 320 is configured or configurable to decode the appropriate pixel data. For example, as will be described in more detail below, data to be protected may be encrypted and written to a safe area, which includes data used by the RAMDAC 512 to render an image on a monitor. Of the so-called "major surface" or desktop surface of the video card memory. The encrypted image may be copied to a temporary location in video memory before being copied to the major surface. The control processor 318 may set an encryption key to be used to encrypt the data and provide the decryption key to the decryptor 320 for use in decrypting the encrypted pixel data. Once the data is decrypted, the data can be passed to the RAMDAC for further processing.

개별 구성요소로서 해독기가 도시되어 있지만, RAMDAC는 해독기로서 효율적으로 동작하도록 하기 위해 적절한 해독 기능이 갖추어질 수 있다는 것을 알 수 있어야 된다.While the decoder is shown as a separate component, it should be appreciated that the RAMDAC can be equipped with the appropriate decryption function in order to operate efficiently as the decoder.

동작 시에, 안전한 또는 신뢰성있는 소프트웨어 어플리케이션(322)은 해독기(320)와 소프트웨어 어플리케이션 사이에 공유 키를 셋업할 수 있다. 소프트웨어 어플리케이션은 이때 메모리(비디오 메모리(310) 또는 시스템 메모리) 내에 저장될 수 있는 암호화된 픽셀 데이터를 생성하도록 키를 사용할 수 있다.In operation, a secure or trusted software application 322 may set up a shared key between the decryptor 320 and the software application. The software application can then use the key to generate encrypted pixel data that can be stored in memory (video memory 310 or system memory).

전형적으로, 픽셀 데이터가 주 표면의 보호 영역 또는 프레임 버퍼 내로 기입될 수 있는 서로 다른 결합 방식이 있다. 첫째, 픽셀 데이터는 메모리 제어기가 마련한 "이동" 동작을 통해 프레임 버퍼에 직접 기입될 수 있다. 둘째, 어플리케이션(안전 어플리케이션(322))은 암호화되는 시스템 메모리 내에 보호될 픽셀 데이터를 어셈블링할 수 있다. 시스템 메모리 내의 암호화 데이터는 해독하여 렌더링하기 위한 주 표면에 궁극적으로 카피될 것이다.Typically, there are different ways of combining pixel data that can be written into a protected area or frame buffer of the major surface. First, the pixel data can be written directly to the frame buffer through a " move " operation provided by the memory controller. Second, the application (safety application 322) can assemble the pixel data to be protected in the system memory being encrypted. Encrypted data in system memory will ultimately be copied to the major surface for decryption and rendering.

이때 제어 프로세서는 데이터가 RAMDAC(312)에 전송되기 전에(또는 모니터 상에 렌더링되기 전에) 해독기(320)가 픽셀 데이터를 해독하는데 어떤 키를 사용해야 하는 지를 확실하게 알 수 있게 한다.The control processor then ensures that the decoder 320 knows which key to use to decrypt the pixel data before the data is sent to the RAMDAC 312 (or before it is rendered on the monitor).

그러므로, 이 예에서는, 하나 이상의 키가 신뢰성있는 엔티티들 사이에 공유될 수 있는 메카니즘이 있다. 데이터는 비디오 카드 상에 암호화될 수 있고, 디스플레이 모니터에 렌더링될 암호화되지 않은 데이터가 소프트웨어 공격을 쉽게 받지 않도록 데이터 프로세싱 체인의 한 지점에서 해독될 수 있다. 주 표면의 보호 영역(들)에서 암호화된 데이터를 판독하고자 하는 신뢰성없는 또는 결함있는 엔티티들은 효과적으로 쓸수없는 암호화된 데이터만을 판독할 것이다. 부수적으로, 이것은 VRAM 메모리가 가상 메모리 관리 기술을 통해 시스템 메모리 내로 맵핑될 때 여전히 유효하다. 그러므로, 주 표면의 보호 영역(들) 내에 있을 것으로 생각되는 데이터가 비디오 카드 상에 있든지 시스템의 메모리 내로 맵핑되든지 간에, 이것은 암호화되어서 보호된다.Therefore, in this example, there is a mechanism in which one or more keys can be shared between trusted entities. The data can be encrypted on the video card and decrypted at one point in the data processing chain so that the unencrypted data to be rendered on the display monitor is not easily subjected to software attacks. Untrusted or defective entities that wish to read encrypted data in the protected area (s) of the major surface will only read encrypted data that cannot be effectively used. Incidentally, this is still valid when VRAM memory is mapped into system memory through virtual memory management techniques. Therefore, whether data that is thought to be in the protected area (s) of the major surface is on the video card or mapped into the memory of the system, it is encrypted and protected.

안전 윈도우(들)Safety window (s)

한 실시예에서, 하나 이상의 안전 윈도우가 제공되어, 사용자의 표시 화면 상에 비밀 데이터를 표시하는데 사용될 수 있다. 사용자 표시 화면 상의 안전 윈도우들은 비디오 카드의 메모리(또는 가상 메모리 관리 기술이 사용되는 경우에 시스템 메모리) 내의 주 표면의 안전 영역과 연관되고, 이 안전 영역에 대응한다. 한 예로서, 도 4를 고찰해보자.In one embodiment, one or more safety windows may be provided and used to display secret data on a user's display screen. The safety windows on the user display screen are associated with and correspond to a safe area of the major surface in the video card's memory (or system memory when virtual memory management technology is used). As an example, consider FIG. 4.

거기에서, 비디오 카드의 주 표면의 도해적 표현은 일반적으로 참조번호 400으로 표시된다. 주 표면(400)은 암호화되지 않은 데이터를 포함하는 영역(402)(어두운 부분), 및 암호화된 데이터를 포함하는 하나 이상의 영역을 포함한다. 이 특정예에서, 2개의 예시적인 영역(404, 406)은 암호화된 데이터를 포함할 수 있다. 각각의 안전 영역의 대응하는 안전한 윈도우는 각각 참조부호 404a, 406a로 표시된다.There, a graphical representation of the major surface of the video card is indicated generally by the reference numeral 400. Major surface 400 includes an area 402 (dark portion) containing unencrypted data, and one or more areas containing encrypted data. In this particular example, two example areas 404 and 406 may include encrypted data. Corresponding secure windows of each safe area are indicated by reference numerals 404a and 406a, respectively.

이 실시예에서, 해독기(320)(도 3)는 영역(402) 내의 모든 픽셀 데이터를 변경(즉, 해독)하지않고 패스하도록 구성된다. 즉, 영역(402) 내에 있는 데이터가암호화되지 않기 때문에, 해독기(320)가 데이터를 해독할 필요가 없다. 그러나, 해독기는 영역(404 및 406) 내에 존재하는 암호화된 데이터를 해독한다.In this embodiment, the decoder 320 (FIG. 3) is configured to pass without changing (ie, decrypting) all pixel data in the area 402. That is, since data in region 402 is not encrypted, decoder 320 does not need to decrypt the data. However, the decryptor decrypts the encrypted data present in areas 404 and 406.

영역(404, 406) 내의 픽셀 데이터는 안전 영역과 관련된 키를 사용하여 해독기에 의해 해독될 수 있다. 일부 실시예들에 있어서, 하나의 키는 모든 안전 구역과 관련될 수 있다. 다른 실시예들에 있어서, 각각의 안전 영역은 자체의 관련된 키를 가질 수 있다. 각각의 안전 영역마다 별개의 키를 갖는 한가지 이유는 어떤 안전 영역들이 다른 안전 구역들을 억세스할 수 있는 소정의 어플리케이션과 관련되지 않을 수도 있기 때문이다. 예를 들어, 안전 이메일 어플리케이션이 암호화된 이메일이 존재하기 위한 하나의 안전 영역과 관련된다고 하자. 또한 전자상거래 어플리케이션이 서로 다른 안전 영역과 관련된다고 하자. 실제로 이메일 어플리케이션이 전자상거래 어플리케이션과 관련된 안전 영역으로 억세스해야 할 이유는 없다. 이제, 모든 안전 영역에 대해 단지 하나의 키가 있다고 하면, 하나의 안전 영역을 억세스할 수 있는 모든 어플리케이션은 아마도 다른 모든 안전 영역을 억세스할 수 있을 것이다. 따라서, 각 안전 영역마다 서로 다른 키를 제공함으로써, 각 안전 영역으로의 억세스는 억세스할 수 있어야 하는 이들 어플리케이션에만 제한된다.Pixel data in areas 404 and 406 can be decrypted by the decryptor using a key associated with the safe area. In some embodiments, one key may be associated with all safe zones. In other embodiments, each safe area may have its own associated key. One reason for having a separate key for each safe zone is that some safe zones may not be associated with any application that can access other safe zones. For example, suppose a secure email application is associated with a single safe zone for encrypted email to exist. Also assume that e-commerce applications relate to different areas of safety. In fact, there is no reason for an email application to access the secure areas associated with an e-commerce application. Now, if there is only one key for every safe zone, every application that can access one safe zone will probably have access to all other safe zones. Thus, by providing different keys for each secure zone, access to each secure zone is limited to those applications that must be accessible.

대안적으로, 다른 실시예에서, 중앙 엔티티("믹서" 또는 "컴포지터")는 몇개의 영역을 가지고, 이들을 디스플레이 하드웨어에 의해 해독될 일반 키로 변환할 수 있다. 각 어플리케이션은 컴포지터 엔티티를 신뢰해야 할 것이다.Alternatively, in another embodiment, the central entity ("mixer" or "compositor") has several areas and can convert them into generic keys that will be decrypted by the display hardware. Each application will need to trust the compositor entity.

도 5는 한 실시예에 따른 암호화 방법의 단계를 설명하는 흐름도이다. 이방법은 소정의 적절한 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로 실현될 수 있다. 본 예에서, 이 방법은 최소한 부분적으로, 적절하게 구성된 비디오 카드-상기 제공된 예-에 의해 실현될 수 있다.5 is a flowchart illustrating steps of an encryption method according to an embodiment. This method can be realized with any suitable hardware, software, firmware or combination thereof. In this example, this method can be realized at least in part by a properly configured video card, the example provided above.

단계 500은 주 표면의 하나 이상의 안전 영역을 정한다. 이 영역들은 소정의 적절한 모양과 크기로 구성될 수 있다. 상기 예에서, 안전 영역은 직사각형 모양일 수도 있다. 이 영역들은 표시 화면 상에 렌더링될 때 전체 표시 화면을 차지해야 하는 것보다 크기가 작은 것이 바람직하다. 단계 502는 최소한 하나의 키를 주 표면의 개별 안전 영역과 연관시킨다. 키 또는 키들은 안전 영역 내에 존재하기 위한 픽셀 데이터를 암호화 및/또는 해독하는데 사용될 수 있다. 단계 504는 픽셀 데이터를 암호화하기 위해 키 또는 키들을 사용한다. 이 단계는 신뢰된 시스템 소프트웨어, 펌웨어 및/또는 하드웨어로 실현될 수 있다. 예를 들어, 어플리케이션(322)과 같은 안전 어플리케이션은 픽셀 데이터가 암호화되게 할 수 있다. 단계 506은 암호화된 픽셀 데이터를 기록하거나 그렇지 않으면 주 표면의 안전 영역으로 이동시킨다. 일단 픽셀 데이터가 암호화되면, 기초를 이루는 해독된 데이터는 해킹(theft)으로부터 보호된다.Step 500 defines one or more safe areas of the major surface. These areas can be configured in any suitable shape and size. In this example, the safety zone may be rectangular in shape. These areas are preferably smaller than they should occupy the entire display screen when rendered on the display screen. Step 502 associates at least one key with an individual safe area of the major surface. The key or keys can be used to encrypt and / or decrypt pixel data for being in the secure area. Step 504 uses a key or keys to encrypt pixel data. This step can be realized with trusted system software, firmware and / or hardware. For example, a secure application, such as application 322, may allow pixel data to be encrypted. Step 506 records the encrypted pixel data or otherwise moves to a safe area of the major surface. Once the pixel data is encrypted, the underlying decrypted data is protected from theft.

도 6은 한 실시예에 따른 해독 방법의 단계들을 설명하는 흐름도이다. 이 방법은 소정의 적절한 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로 실현될 수 있다. 본 예에서, 이 방법은 최소한 부분적으로, 적절하게 구성된 비디오 카드-위에서 제공된 한 예-에 의해 실현될 수 있다.6 is a flowchart illustrating steps of a decryption method according to an embodiment. This method can be realized with any suitable hardware, software, firmware or combination thereof. In this example, this method may be realized, at least in part, by an appropriately configured video card—an example provided above.

단계 600은 비디오 카드 주 표면의 안전 영역 내에 암호화된 데이터를 제공한다. 이 단계는 제어 프로세서(318)(도 3)에 의해 실현될 수 있다. 예를 들어, 제어 프로세서는 하나 이상의 키를 암호화된 픽셀 데이터를 해독하는데 사용하기 위한 해독기에 제공할 수 있다. 단계 604는 주 표면의 안전 영역 내의 암호화된 데이터를 해독하기 위해 키를 사용한다. 이 단계는 해독기(320)(도 3)에 의해 실현될 수 있다. 해독이 발생하는 픽셀 데이터 프로세싱 체인 내의 지점은 프로그램으로 억세스하기 어렵다. 그러므로, 해독된 픽셀 데이터는 소프트웨어 공격으로부터 보호된다. 그 다음 단계 606은 픽셀 데이터를 사용자의 표시 화면 상으로 렌더링하는 프로세싱을 포함하여 추가 프로세싱을 위해, 해독된 데이터를 디스플레이 변환기에 제공한다.Step 600 provides encrypted data within a secure area of the video card major surface. This step can be realized by the control processor 318 (FIG. 3). For example, the control processor may provide one or more keys to a decryptor for use in decrypting the encrypted pixel data. Step 604 uses the key to decrypt the encrypted data in the secure area of the major surface. This step can be realized by the decoder 320 (FIG. 3). The point in the pixel data processing chain where decryption occurs is difficult to programmatically access. Therefore, the decrypted pixel data is protected from software attack. Step 606 then provides the decoded data to the display converter for further processing, including processing to render the pixel data onto the user's display screen.

실시예Example

한가지 실시 형태에 있어서, 암호화 및 해독은 공개키 기반의 엔진을 사용하여 발생할 수 있다. 제어 프로토콜은 보안 어플리케이션과 같은 소프트웨어가 암호화된 형태의 커맨드를 제어 프로세서(318)(도 3)로 전송할 수 있게 하고, 암호 확인을 수신하여 커맨드가 실행되었다는 것을 보장한다.In one embodiment, encryption and decryption can occur using a public key based engine. The control protocol allows software, such as security applications, to send commands in encrypted form to the control processor 318 (FIG. 3), receiving a cryptographic confirmation to ensure that the command has been executed.

소정의 적절한 커맨드 세트가 사용될 수 있다. 한 예로서, 다음과 같은 커맨드(또는 이들과 유사한 것들)가 사용될 수 있다:Any suitable command set can be used. As one example, the following commands (or the like) may be used:

ㆍGetPK() : 장치 공개 암호화 키를 리턴GetPK (): returns the device public encryption key

ㆍSetsec() : 안전 영역 모양 및 그 안전 영역 모양에 대한 암호화 키를 세트Setsec (): Sets the security zone shape and the encryption key for the security zone shape.

ㆍClearSec() : 한 영역에 대한 암호화를 클리어ClearSec (): clears encryption for one area

일부 실시예들에 있어서, 해독기(320)는 영역 내의 암호화된 픽셀 데이터를 해독할 수 있도록 안전 영역의 외형을 추론할 수 있다. 또 다른 실시예에서, 해독기는 외형 정보를 통지받을 수 있다. 이것은, 예를 들어 안전 윈도우가 드래그되어 사용자의 표시 화면 상의 다른 위치로 드롭될 때 유용해질 수 있다. 예를 들어, GPU(308)는 주 표면의 안전 영역들 및 그 영역들과 연관된 여러가지 보안 데이터의 리스트를 유지하는 외형 프로세서(구체적으로 나타내지 않음)를 구현할 수 있다. 보안 데이터는 영역의 x, y 좌표, 영역의 폭과 높이 치수, 및 특정 영역과 관련된 키를 포함할 수 있다. 해독기(320)는 픽셀 데이터를 프로세스하기 시작할 때, 특정 픽셀이 이들 영역들 중 한 영역에 속하여 해독될 필요가 있는지, 또는 특정 픽셀 데이터가 RAMDAC로 패스될 것인지를 알수 있도록 이 보안 데이터를 통지받을 수 있다. 안전 윈도우가 이동되면, 외형 프로세서는 해독기에게 보안 윈도우의 새로운 좌표를 알릴 수 있다.In some embodiments, the decryptor 320 may infer the appearance of the safe area to decrypt the encrypted pixel data in the area. In yet another embodiment, the decryptor may be informed of the appearance information. This may be useful, for example, when the safety window is dragged and dropped to another location on the user's display screen. For example, GPU 308 may implement an external processor (not specifically shown) that maintains a list of safe areas of the major surface and various security data associated with those areas. The security data may include x, y coordinates of the area, width and height dimensions of the area, and keys associated with the particular area. When the decoder 320 starts to process the pixel data, it can be notified of this secure data so that it knows whether a particular pixel needs to be decoded belonging to one of these areas, or whether the particular pixel data will be passed to the RAMDAC. have. When the safety window is moved, the external processor can inform the decryptor of the new coordinates of the security window.

한 예의 아키텍처에 있어서, 공개 키 및 제어 기능은 온-보드 플래시 메모리를 가진 분리된 외부 장치('스마트카드'와 유사)로 변조될 수 있다. 이와 반대로, 해독기(320)는 GPU 실리콘 내로 통합(즉, GPU와 일체화)될 수 있다. 그 다음 제어 프로세서(318)는 해독 키를 바로 GPU로 패스할 수 있다. 소프트웨어 공격을 막기 위한 또 다른 예방책으로서, 제어 프로세서(318)와 GPU(308) 사이에 전용 버스가 제공될 수 있다.In one example architecture, the public key and control functions can be modulated into a separate external device (similar to a 'smartcard') with on-board flash memory. In contrast, the decoder 320 can be integrated into (ie, integrated with) the GPU silicon. The control processor 318 can then pass the decryption key directly to the GPU. As another precaution to prevent software attacks, a dedicated bus may be provided between the control processor 318 and the GPU 308.

동작시에, 제어 프로세서(318)는 안전 소프트웨어/하드웨어에 의해 인증될 수 있고, "이 안전 영역에 대한 암호화 키를 x가 되도록 설정"과 같은 암호화된 커맨드를 수신할 수 있다. 그 다음 제어 프로세서는 커맨드가 적절하게 실행될 수 있도록 암호 응답을 되돌릴 수 있다.In operation, the control processor 318 may be authenticated by the safety software / hardware and may receive an encrypted command such as "set the encryption key for this secure zone to be x". The control processor can then return a cryptographic response so that the command can be executed properly.

암호화 키는 이제 비디오 데이터를 안전 영역에 제공하기 위해 사용될 수 있다. 이 예에서, 반대자(adversarial)의 코드가 이 암호화된 데이터를 판독하는 것이 가능하게 될 수도 있다. 그러나, 이러한 코드에 의해 판독된 소정의 데이터는 암호화되어, 반대자의 코드에 효과적으로 쓸 수 없다. 일부 실시 형태에서, 반대자의 코드가 암호화된 데이터를 변경하는 것이 가능하게 될 수도 있다. 그러나, 변경된 암호화 데이터는 표시 화면 상에 렌더링될 때 논리적으로 문맥의 전후관계상 생각될 수 있는 데이터로 해독될 것이다. 예를 들어, 이러한 데이터는 랜덤 노이즈/그레이 출력으로서 표시 화면 상에 렌더링될 때 나타날 수 있다. 이러한 종류의 공격은 사용자가 가장 확실하게 알아챌 수 있을 것이다.The encryption key can now be used to provide video data to the secure area. In this example, an adversarial code may be able to read this encrypted data. However, certain data read by this code is encrypted and cannot be effectively written to the opponent's code. In some embodiments, it may be possible for the adversary's code to change the encrypted data. However, the modified encrypted data will be decrypted into data that can be logically considered in contextual context when rendered on the display screen. For example, such data may appear when rendered on a display screen as random noise / gray output. This kind of attack will most certainly be noticed by the user.

또한, 인증 정보의 사용은 픽셀 데이터가 반대자의 코드에 의해 변경된 경우에 사용자가 그것을 통지받을 수 있게 한다. 한 예로서, 다음을 고찰해보자. 안전 데이터 포맷은 픽셀 당 소정 수의 비트, 예를 들어 24비트/픽셀을 포함하도록 요구될 수 있다. 24비트/픽셀 중에서, 8비트는 항상 0의 값을 갖도록 요구될 수 있다. 그러면 해독기는 논-컴플라이언트 픽셀 플래시 퍼플(non-compliant pixels flash purple)을 만들도록 구성될 수 있고, 공격이 있다는 것을 제어 프로세서에게 통지할 수 있다.Also, the use of authentication information allows the user to be notified when the pixel data has been changed by the adversary's code. As an example, consider the following: The safety data format may be required to include any number of bits per pixel, for example 24 bits / pixel. Of 24 bits / pixel, 8 bits may always be required to have a value of zero. The decrypter can then be configured to produce non-compliant pixels flash purple and can notify the control processor that there is an attack.

또한, 픽셀 데이터가 부적절하게 변경된 경우에 이러한 변경이 검출될 수 있도록 하기 위해 다른 기술이 사용될 수 있다. 한 예로서, 다음을 고찰해 보자.해시(hash)는 렌더링될 각 픽셀과 연관된 픽셀 데이터에 대해 계산될 수 있다. 픽셀 데이터가 디스플레이 변환기(예를 들어, RAMDAC(312))에 의해 프로세스되면, 디스플레이 변환기는 픽셀 데이터의 해시를 계산하고, 계산된 해시를 픽셀 데이터의 이전의 계산된 해시와 비교할 수 있다. 부적절한 데이터 변경이 있으면, 해시 비교는 그러한 일이 발생했다는 것을 나타낼 것이다.In addition, other techniques may be used to allow such a change to be detected if the pixel data has been inappropriately changed. As an example, consider the following: A hash can be calculated for pixel data associated with each pixel to be rendered. Once the pixel data is processed by the display converter (eg, RAMDAC 312), the display converter can calculate a hash of the pixel data and compare the calculated hash with a previously calculated hash of the pixel data. If there is an inappropriate data change, a hash comparison will indicate that such a thing has happened.

예시적인 암호화 기술Exemplary Encryption Technology

여러가지 암호화 기술은 주 표면의 안전 영역 내에 존재하는 픽셀 데이터가 암호화된 다음에 해독기에 의해 나중에 적절하게 해독될 수 있도록 하기 위해 사용될 수 있다. 그 밖의 다른 기술들이 청구된 본 발명의 정신 및 범위를 벗어나지 않고 사용될 수 있지만, 2가지 예시적인 암호화 기술에 대해 아래에 설명하겠다.Various encryption techniques can be used to ensure that pixel data present in the secure area of the major surface is encrypted and then later properly decrypted by the decryptor. While other techniques can be used without departing from the spirit and scope of the claimed invention, two exemplary encryption techniques are described below.

사용될 수 있는 제1의 암호화 기술은 스트림 암호(stream cipher)이다. 스트림 암호는 전형적으로 소프트웨어면에서 매우 빠르고, 하드웨어면에서 실현하기가 아주 쉽다. 스트림 암호는 전형적으로 보다 작은 단위의 원문(plaintext), 보통 비트로 동작하는 일종의 대칭 암호화 알고리즘이다. 스트림 암호는 키스트림(keystream)(키로서 사용된 비트의 시퀀스)이라고 불리우는 것을 생성한다. 암호화는 보통 비트방식의 XOR 동작으로 원문 또는 비트와 키스트림을 결합함으로써 달성된다. 키스트림의 생성은 원문 및 암호문에 따라 좌우되지 않고, 동기 스트림 암호라고 하는 것을 산출하거나, 또는 이것은 데이터 및 그것의 암호화에 따라 좌우될 수 있으며, 그 경우에 스트림 암호는 셀프-동기화라고 한다. 대부분의 스트림 암호 설계는 동기 스트림 암호에 대한 것이다. 이때 동일한 스트림 암호가 암호화된 데이터를 해독하는데 사용될 수 있다.The first encryption technique that can be used is a stream cipher. Stream ciphers are typically very fast in software and very easy to implement in hardware. Stream ciphers are a kind of symmetric encryption algorithm that typically operates on smaller text, usually bits. The stream cipher produces what is called a keystream (a sequence of bits used as a key). Encryption is usually accomplished by combining text or bits with a keystream in a bitwise XOR operation. The generation of the keystream does not depend on the original and cipher text, but yields what is called a synchronous stream cipher, or it may depend on the data and its encryption, in which case the stream cipher is called self-synchronization. Most stream cipher designs are for synchronous stream ciphers. The same stream cipher can then be used to decrypt the encrypted data.

스트림 암호는 단지 주 표면의 안전 영역 내의 데이터를 해독하는 방식으로 전체 주 표면에 걸쳐 실행될 수 있다. 그러나, 이것은 스트림 암호가 전체 주 표면에 걸쳐 실행될 필요가 없기 때문에-이들 안전 영역에서만 필요함- 최상의 선택이 아니다. 따라서, 스트림 암호가 실행되는 범위는 그 범위가 단지 안전 영역 또는 영역들의 경계로 정해지도록 제한될 수 있다. 제한된 범위의 스트림 암호를 실현하는 바람직한 방식은 디스플레이의 각각의 리프레시마다 안전 영역의 상부 좌측 픽셀과 같은 스트림 암호의 개시 위치를 정하는 것이다. 그 다음 스트림 암호는 안전 영역의 하부 우측의 픽셀이 프로세스될 때까지 안전 영역 내에서 실행될 수 있다.Stream ciphers can be executed over the entire major surface in a way that only decrypts data within the safe area of the major surface. However, this is not the best choice because stream ciphers do not need to be executed across the entire major surface—only in these safe areas. Thus, the range in which the stream cipher is performed may be limited such that the range is defined only as a safe area or a boundary of areas. A preferred way to realize a limited range of stream ciphers is to specify the starting position of the stream cipher, such as the upper left pixel of the safe area, for each refresh of the display. The stream cipher can then be executed in the safe area until the pixels on the bottom right of the safe area have been processed.

한 예로서 도 7을 고찰해 보자. 거기에서, 주 표면(700)은 암호화되지 않은 픽셀 데이터가 존재하는 영역(702), 및 암호화된 픽셀 데이터(스트림 암호로 암호화됨)가 존재하는 안전 영역(704)을 포함한다. 적절하게 범위가 제한된 스트림 암호로, 스트림 암호는 상부 좌측 픽셀이 표시된 위치에서 시작하여, 하부 우측 픽셀이 표시된 위치에서 끝낼 수 있다. 암호화된 데이터가 해독될 때, 해독기(320)와 같은 해독기는 스트림 암호의 시작 및 중지 위치의 좌표를 통지받을 수 있다. 이러한 실현의 양호한 특징들 중 하나는 안전 영역들 중 한 영역과 관련된 안전 윈도우가 드래그되어 다른 위치(윈도우 주위를 이동하기 위해 신뢰성없는 소프트웨어를 불러낼 수 있는 위치)로 드롭된 경우에, 암호화 동작이 새로운 위치에서 계속 행해질 수 있다는 것이다. 이것을 실현하기 위해, 암호 엔티티는 새로운 위치에서 암호화 프로세싱을 실행할 수 있도록 단지 안전 윈도우(따라서 주 표면 상의 안전 영역)의 새로운 좌표를 통지받을 필요가 있다. 이와 유사하게, 해독기(320)는 또한 암호화된 픽셀 데이터를 해독하기 위한 적절한 위치에서 스트림 암호를 실행할 수 있도록 위치를 통지받을 수 있다.As an example, consider FIG. There, the major surface 700 includes an area 702 in which unencrypted pixel data exists and a safe area 704 in which encrypted pixel data (encrypted with a stream cipher) exists. With an appropriately limited stream cipher, the stream cipher may start at the position where the upper left pixel is marked and end at the position where the lower right pixel is marked. When encrypted data is decrypted, a decrypter such as decryptor 320 may be informed of the coordinates of the start and stop positions of the stream cipher. One of the preferred features of this realization is that if the safety window associated with one of the safe zones is dragged and dropped to another location (where the untrusted software can be invoked to move around the window), the encryption operation is performed. It can be done in a new position. To realize this, the cryptographic entity only needs to be notified of the new coordinates of the secure window (and thus the secure area on the major surface) so that it can execute the encryption processing at the new location. Similarly, decrypter 320 may also be informed of the location so that the stream cipher can be executed at an appropriate location for decrypting the encrypted pixel data.

암호화기는 스트림 암호가 몇개의 프레임 사이에서 지속될 수 있게 함으로써, 차별적인 공격이 더욱 어려워지게 한다. 스트림 암호에 대한 키는 각각의 프레임 그룹 후에 변화될 수 있다. 키의 수를 감소시키기 위해, 고정된 키의 어레이는 사용되기 이전에 협상될 수 있다. 암호화기는 각각의 프레임 그룹마다 서로 다른 키를 선출하는 키의 어레이를 통해 순환할 수 있다.The encryptor allows stream ciphers to persist between several frames, making differential attacks more difficult. The key for the stream cipher may be changed after each frame group. To reduce the number of keys, an array of fixed keys can be negotiated before being used. The encryptor can cycle through an array of keys that elect a different key for each group of frames.

사용될 수 있는 제2의 암호화 기술은 블록 암호이다. 블록 암호는 원문 데이터 비트(암호화되지 않음 텍스트 또는 비트)의 고정된 길이의 블록을 동일한 길이의 암호문(암호화된 텍스트 또는 비트)의 블록으로 변환하는 일종의 대칭-키 암호와 알고리즘이다. 이 변환은 사용자가 제공한 비밀 키의 동작 하에 발생한다. 해독은 동일한 비밀 키를 사용하여 암호문 블록과 반대의 변환을 적용함으로써 실행된다. 고정된 길이는 블록 크기라 불리우며, 다수의 블록 암호의 경우, 블록 크기는 64비트이다. 장차, 블록 크기는 프로세서가 더욱 정교해짐에 따라 128비트로 증가할 것이다.A second encryption technique that can be used is block cipher. A block cipher is a kind of symmetric-key cipher and algorithm that converts a fixed length block of original data bits (unencrypted text or bits) into a block of ciphertext (encrypted text or bits) of the same length. This conversion occurs under the operation of the user-provided secret key. Decryption is performed by applying the reverse conversion of the ciphertext block using the same secret key. The fixed length is called the block size, and for many block ciphers, the block size is 64 bits. In the future, block size will increase to 128 bits as processors become more sophisticated.

상술된 2가지 암호화 기술 중에서, 스트림 암호는 블록 암호보다 훨씬 더 빠르기 때문에 바람직한 선택이다.Of the two encryption techniques described above, stream ciphers are the preferred choice because they are much faster than block ciphers.

인증certification

일부 실시예들에 있어서, 인증 기술은 비디오 카드의 무결성과 신원을 보장하기 위해 사용될 수 있다. 비디오 카드와 상호작용하기 위한 안전 소프트웨어 어플리케이션의 중요한 목표는 (1) 어플리케이션이 실제로 비디오 카드와 통신하고, 비디오 카드를 모방하는 소프트웨어의 일부분이 아니며, (2) 어플리케이션이 픽셀 데이터의 제공과 관련된 선정된 규칙을 따르거나 순응하는 비디오 카드에 실제로 통신하도록, 어플리케이션이 신뢰성있게 인증될 수 있게 하는 것이다.In some embodiments, authentication techniques can be used to ensure the integrity and identity of the video card. An important goal of a safety software application for interacting with a video card is that (1) the application does not actually communicate with the video card and is not part of the software that mimics the video card, and (2) the application is selected for the provision of pixel data. It allows the application to be authenticated reliably so that it actually communicates to a video card that follows or conforms to rules.

인증 기술은 한쌍의 서로 다른 방식-예를 들어 암호 증명 및 다른 통신 프로토콜을 통해 실현될 수 있다.The authentication technique can be realized through a pair of different ways-for example, cryptographic proof and other communication protocols.

암호 증명은 증명된 키 및 디지털 증명서가 구비된 비디오 카드를 만드는 것에 관한 것이다. 이러한 키 및 증명서를 사용하여, 비디오 카드는 안전 소프트웨어 어플리케이션과 암호 대화 시에 사용될 수 있다. 예를 들어, 디지털 증명서는 비디오 카드를 인증하는데 사용될 수 있고, 증명된 키는 안전 어플리케이션으로 발생하는 통신을 암호화하는데 사용될 수 있다. 암호 증명을 실현하기 위해, 각각의 비디오 카드는 신뢰성있는 엔티티에 의해 제조된 별개의 보안 IC 칩을 가질수 있다. 암호 증명 기술은 널리 공지되어 있으며, 본 분야에 숙련된 기술자들에 의해 이해되는 것이다. 따라서, 간략하게 하기 위해, 여기에서는 암호 증명에 대해 더 이상의 설명을 하지 않겠다.Cryptographic proof relates to making a video card equipped with a certified key and a digital certificate. Using these keys and certificates, the video card can be used in cryptographic conversations with security software applications. For example, a digital certificate can be used to authenticate a video card, and the certified key can be used to encrypt communications that occur with secure applications. To realize cryptographic proof, each video card may have a separate secure IC chip manufactured by a trusted entity. Cryptographic proof techniques are well known and are understood by those skilled in the art. Therefore, for the sake of brevity, we will not discuss the cryptographic proof any further.

다른 인증 수단은 안전 어플리케이션과 비디오 카드 사이에 설정되는 안전 프로토콜과 연관될 수 있다. 안전 프로토콜은 어플리케이션이 유효한 비디오 카드와 통신하고 있다는 어떤 확신을 가질 수 있게 할 수 있다. 예를 들어, 신뢰성있는 어플리케이션은 비디오 카드에게 자신을 확인하라는 이의를 제기할 수 있으며, 카드는 신뢰성있는 비디오 카드라는 응답으로 응답할 수 있다. 여러가지 공지된 안전 프로토콜 기술이 이용될 수 있다.Another means of authentication may be associated with a safety protocol established between the safety application and the video card. The safety protocol can give the application some confidence that it is communicating with a valid video card. For example, a trusted application may challenge the video card to verify itself, and the card may respond with a response that it is a reliable video card. Various known safety protocol techniques can be used.

몇가지 이점이 상술된 실시예들에 의해 제공된다. 먼저, (비디오 카드를 온 및 오프하는) 데이터가 소프트 공격으로부터 보호될 수 있게 할 수 있는 기술이 제공된다. 보호는 비디오 카드의 주 표면 상에 존재하는 데이터를 암호화하는데 이용될 수 있는 암호화 기술의 형태로 제공된다. 그 다음 해독은 소프트웨어 억세스가 없는 데이터 프로세싱 파이프라인 내의 한 지점에서 발생할 수 있다. 그러므로, 결함성 소프트웨어에 의한 소정의 판독된 공격은 암호화되어 본질적으로 쓸모없는 데이터를 산출할 것이다. 그러므로, 픽셀 데이터는 안전하게 유지될 수 있다. 더우기, 여러가지 기술은 데이터의 무결성이 보전될 수 있게 할 수 있다. 즉, 데이터 변경 공격의 경우에, 여러가지 검출 방법은 적절한 통지(어플리케이션 통지 및 사용자 통지)가 발생될 수 있도록 사용될 수 있다. 또한, 특정 외형에 의해 식별된 주 표면의 안전 영역을 정할 수 있게 됨으로써 장점들이 달성된다.Several advantages are provided by the embodiments described above. First, a technique is provided that can enable data (on and off of a video card) to be protected from soft attacks. Protection is provided in the form of encryption technology that can be used to encrypt data present on the major surface of the video card. Decryption can then occur at a point in the data processing pipeline without software access. Therefore, any read attack by the defective software will be encrypted resulting in essentially useless data. Therefore, pixel data can be kept secure. Moreover, various techniques can enable the integrity of the data to be preserved. That is, in the case of a data change attack, various detection methods can be used so that appropriate notifications (application notifications and user notifications) can be generated. Advantages are also achieved by being able to define a safe area of the major surface identified by a particular contour.

퍼-픽셀 보조 기능(per-pixel auxiliary functionality)Per-pixel auxiliary functionality

일부 실시예들에 있어서, 입상(granularity)의 개별 픽셀에 기능을 제공하는 것이 바람직할 수 있다. 예를 들어, 주 표면의 안전 영역은 전형적으로 중첩되지 않는다. 그러나, 일부 경우에, 사용자는 윈도우들이 중첩되도록 이들의 디스플레이 상의 주변 윈도우로 이동하고자 할 수도 있다. 중첩 영역은 암호 및 해독 기능을 실행하는 구성요소의 설계에 추가적인 설계를 고려해 넣을 수 있다.In some embodiments, it may be desirable to provide functionality to individual pixels of granularity. For example, the safety area of the major surface typically does not overlap. However, in some cases, a user may wish to move to a peripheral window on their display such that the windows overlap. Overlapping areas can take additional design into account in the design of components that perform encryption and decryption functions.

한 예로서, 도 8을 고찰해 보자. 거기에는 사용자가 볼 수 있는 것과 같은 표시 화면이 참조번호 800으로 표시되어 있다. 안전 윈도우(802)가 제공되고, 또한 비안전 윈도우(804)가 안전 윈도우의 하부 우측 코너와 중첩하여 중첩 영역(806)을 정하는 것이 도시되어 있다. 이와 같은 상황에서 발생할 수 있는 한가지 문제점은 다음과 같다. 비디오 카드의 주 표면 상에서 구현될 때 영역(806)은 암호화된 데이터를 포함하지 않는다. 이제, 안전 윈도우(802)에 대응하는 인접 구역은 암호화된 데이터를 포함한다. 이것을 고려하여 인접이 이루어지지 않으면, 해독기는 중첩 영역(806)과 관련된 픽셀 데이터를 아마도 해독할 것이다. 이 픽셀 데이터가 우선 첫째로 암호화되지 않았으므로, 데이터 해독은 잘못된 데이터를 제공할 것이다.As an example, consider FIG. 8. There, the same display screen as the user can see is indicated by the reference numeral 800. A safety window 802 is provided, and it is also shown that the non-safety window 804 overlaps the lower right corner of the safety window to define the overlapping area 806. One problem that may occur in such a situation is as follows. When implemented on the major surface of a video card, area 806 does not contain encrypted data. Now, the adjacent zone corresponding to secure window 802 contains encrypted data. If no adjacencies are made in view of this, the decoder will probably decode the pixel data associated with the overlap region 806. Since this pixel data is not first encrypted, data decryption will provide false data.

따라서, 설명될 실시예들은 퍼-픽셀 기능이 가능한 방법 및 시스템을 제공한다. 한 예에서, 퍼 픽셀 보안이 제공될 수 있다.Accordingly, embodiments to be described provide a method and system capable of per-pixel functionality. In one example, per pixel security may be provided.

도 9는 픽셀 데이터(900)을 도식적인 표현으로 나타낸 것이다. 이 예에서, 픽셀 데이터는 32비트의 데이터를 포함한다. 적색(R), 녹색(G), 청색(B) 값은 각각 8비트로 표시된다. 도시된 픽셀 데이터는 픽셀 당 32 비트를 포함하지만, 픽셀 데이터는 픽셀 당 더 많거나 적은 비트를 포함할 수 있다는 것을 알아야 된다. 이 예에서, 8비트(여기에서 "보조(Auxiliary)"로 지정됨)는 남게 된다는 점에 주의하자. 메모리를 더욱 효율적으로 하기 위해, GPU는 2의 제곱의 배수인 청크(chunk) 내의 데이터를 판독하는 것을 선호한다. 따라서, 24비트 데이터는 32비트 블록으로서 판독되고, 8비트는 종종 '미사용' 상태로 남아있지만, 항상 '사용된' 비트로판독되어 기록된다. 이들 보조 비트는 표시 화면에 제공될 개별 픽셀과 관련하여 실현될 수 있는 여러가지 보조 기능을 지정하기 위해 재사용될 수 있다. 보조 기능의 예는 알파 또는 투명 정보, 깊이 정보, 영역 식별 정보, 또는 컬러 키 정보(다른 데이터로 대체될 영역들을 나타내기 위함)를 포함할 수 있지만, 이것에 제한되는 것은 아니다.9 shows the pixel data 900 in a graphical representation. In this example, the pixel data includes 32 bits of data. The red (R), green (G), and blue (B) values are each represented by 8 bits. While the illustrated pixel data includes 32 bits per pixel, it should be appreciated that the pixel data may include more or fewer bits per pixel. Note that in this example, 8 bits (designated here as "Auxiliary") remain. To make memory more efficient, the GPU prefers to read data in chunks that are multiples of two. Thus, 24-bit data is read as a 32-bit block, and 8 bits often remain 'unused', but are always read and written as 'used' bits. These auxiliary bits can be reused to specify various auxiliary functions that can be realized in relation to the individual pixels to be provided on the display screen. Examples of auxiliary functions may include, but are not limited to, alpha or transparent information, depth information, area identification information, or color key information (to indicate areas to be replaced with other data).

그밖의 다른 일반적인 비디오 포맷은 픽셀 당 24 또는 32 비트 대신에 픽셀 당 16비트를 사용한다. 예를 들어, RGB 데이터는 픽셀 당 5비트로서 저장되고, 사용되지 않은 하나의 비트가 남게 되어 2가지 보조 기능을 지정하는데 사용될 수 있다.Other common video formats use 16 bits per pixel instead of 24 or 32 bits per pixel. For example, RGB data may be stored as 5 bits per pixel, leaving one bit unused and used to specify two auxiliary functions.

보조 기능을 실현하는 한가지 방식은 보조 기능을 참조하거나 지정하는 테이블(902)와 같은 테이블을 제공하는 것이다. 예를 들어, 보조 기능을 지정하기 위해 8비트를 사용하면 256개의 보조 기능이 지정될 수 있다. 따라서, 픽셀 데이터가 프로세스될 때, 보조 기능에 관한 픽셀 데이터의 비트는 여러가지 보조 기능들을 억세스하여 실현하도록 프로세스될 수 있다.One way to realize the assist function is to provide a table such as table 902 that references or specifies the assist function. For example, using 8 bits to specify auxiliary functions can specify 256 auxiliary functions. Thus, when the pixel data is processed, the bits of pixel data related to the auxiliary function can be processed to access and realize various auxiliary functions.

도 10은 한 실시예에 따른 방법의 단계들을 설명하는 흐름도이다. 이 방법은 소정의 적절한 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로 실현될 수 있다. 본 예에서, 이 방법은 최소한 부분적으로, 적절하게 구성된 비디오 카드-위에서 제공된 한 예-에 의해 실현될 수 있다.10 is a flowchart describing steps of a method according to an embodiment. This method can be realized with any suitable hardware, software, firmware or combination thereof. In this example, this method may be realized, at least in part, by an appropriately configured video card—an example provided above.

단계 1000은 픽셀 당 정해진 수의 비트를 가진 픽셀 데이터를 제공한다. 도 9의 예에서는 픽셀 당 32비트가 있다. 그러나, 픽셀 당 소정의 적절한 수의 비트가 사용될 수 있다. 단계 1002는 보조 기능을 지정하기 위해 픽셀 데이터의 하나 이상의 비트를 사용한다. 도 9의 예에서, 8비트는 소위 "알파 채널"(4번째 '미사용' 채널)의 사용을 통해 보조 기능을 지정하기 위해 사용된다. 알파 채널의 8비트를 사용함으로써, 256개의 별개의 보조 기능이 지정된다. 단계 1004는 비트를 프로세스하여 보조 기능을 억세스한다. 이 단계는 테이블(902)(도 9)와 같은 보조 기능 테이블내로의 인덱스와 같은 보조 비트의 값을 사용함으로써 실현될 수 있다. 그 다음 테이블은 개별 값에 대해, 특정 픽셀용의 픽셀 데이터과 관련하여 실현될 수 있는 보조 기능을 참조한다. 테이블(902) 내의 참조번호는 보조 기능을 실현하는 소프트웨어 코드에 대한 포인터가 될 수 있거나, 또는 이것은 보조 기능의 일부 또는 전체를 포함할 수 있다. 그 다음 단계 1006은 보조 기능을 실현한다.Step 1000 provides pixel data with a predetermined number of bits per pixel. In the example of FIG. 9, there are 32 bits per pixel. However, any suitable number of bits per pixel may be used. Step 1002 uses one or more bits of pixel data to specify auxiliary functions. In the example of FIG. 9, 8 bits are used to specify auxiliary functions through the use of a so-called "alpha channel" (fourth 'unused' channel). By using 8 bits of the alpha channel, 256 separate auxiliary functions are specified. Step 1004 processes the bits to access the auxiliary function. This step can be realized by using the value of an auxiliary bit, such as an index into an auxiliary function table, such as table 902 (FIG. 9). The table then refers to the auxiliary functions that can be realized with respect to the pixel data for a particular pixel, for the individual values. Reference numerals in the table 902 may be pointers to software code for implementing the supplemental function, or it may include some or all of the supplementary function. Then step 1006 realizes the auxiliary function.

기능 0이 널 기능을 지정했으면, 이전의 어플리케이션들은 새로운 어플리케이션을 이용하는 새로운 방식과 자동으로 호환될 것이다.If function 0 specified a null function, older applications will automatically be compatible with the new way of using the new application.

퍼 픽셀 보안Fur pixel security

픽셀 데이터의 보조 비트는 픽셀 레벨의 해독 기능을 제공하기 위해 사용될 수 있다. 예를 들어, 보호되기를 바라는 픽셀 데이터를 보유하기 위해 사용된 주 표면 상의 안전 영역이 있다고 하자. 이 픽셀 데이터는 암호화 키를 사용하여 픽셀 레벨로 암호화될 수 있다. 이제, 암호화된 픽셀 데이터의 보조 비트가 픽셀 데이터를 해독하는데 이용될 수 있는 해독 키를 지정한다고 하자. 예를 들어, 퍼 픽셀 보조 기능 테이블(1100)을 도시한 도 11을 고찰해 보자. 여기에서, 테이블의 각 값은 특정 키와 연관된다. 예를 들어, 값 "1"은 "키 1"과 연관되고, 값 "2"는"키 2" 등과 연관된다. 따라서, 특정 키가 픽셀 데이터와 연관된다는 것을 보조 픽셀 데이터가 나타내면, 해독기는 연관된 키를 억세스하여, 픽셀 데이터를 해독하기 위한 키(전형적으로 0)를 사용할 수 있다. 보조 픽셀 데이터는 또한 픽셀 데이터가 암호화되지 않았다는 것을 나타내는 값을 보유한다. 이 경우에, 해독기는 더욱 프로세싱하기 위해 디스플레이 변환기에 따라 연관된 픽셀 데이터를 단순히 패스하여, 어플리케이션으로부터 암호화되지 않은 데이터가 새로운 방식과 끊김없이 통합될 수 있게 한다.The auxiliary bit of pixel data may be used to provide pixel level decoding. For example, suppose there is a safe area on the major surface used to hold pixel data that is desired to be protected. This pixel data can be encrypted at the pixel level using an encryption key. Now suppose the auxiliary bit of encrypted pixel data specifies a decryption key that can be used to decrypt the pixel data. For example, consider FIG. 11, which shows a per pixel assist function table 1100. Here, each value in the table is associated with a specific key. For example, the value "1" is associated with "key 1", the value "2" is associated with "key 2" and the like. Thus, if the auxiliary pixel data indicates that a particular key is associated with the pixel data, the decryptor can access the associated key and use the key (typically zero) to decrypt the pixel data. The auxiliary pixel data also has a value indicating that the pixel data is not encrypted. In this case, the decrypter simply passes the associated pixel data along the display converter for further processing, allowing unencrypted data from the application to seamlessly integrate with the new way.

퍼 픽셀 키 테이블은 연관된 암호화 픽셀 데이터를 해독하기 위해 사용될 수 있는 개별 키를 보유할 수 있고, 또는 이것은 연관된 암호화 픽셀 데이터를 해독하기 위해 사용될 수 있는 키에 대한 참조번호를 보유할 수 있다.The per pixel key table can hold a separate key that can be used to decrypt associated cryptographic pixel data, or it can carry a reference number to a key that can be used to decrypt associated cryptographic pixel data.

테이블은 또한 알파값과 같은 2차(비보안) 보조 관련 데이터를 보유할 수 있다. 이것은 보안과, 보조 채널의 이전의 원래의 사용 사이의 값들의 선택적인 재사용을 허용한다. 예를 들어, 값 1 내지 3은 키(이들 자신의 알파값을 가짐)를 지정하기 위해 사용될 수 있지만, 값 0 및 값 4 내지 255는 여전히 이들의 원래의 알파값을 지정하기 위해 이용할 수 있다.The table can also hold secondary (non-secure) secondary related data such as alpha values. This allows for selective reuse of values between security and previous original use of the secondary channel. For example, values 1 through 3 can be used to specify keys (with their own alpha values), but values 0 and values 4 through 255 can still be used to specify their original alpha values.

도 12는 한 실시예에 따른 방법의 단계들을 설명하는 흐름도이다. 이 방법은 소정의 적절한 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로 실현될 수 있다. 본 예에서, 이 방법은 최소한 부분적으로, 적절하게 구성된 비디오 카드-위에서 제공된 한 예-에 의해 실현될 수 있다.12 is a flowchart describing steps of a method according to an embodiment. This method can be realized with any suitable hardware, software, firmware or combination thereof. In this example, this method may be realized, at least in part, by an appropriately configured video card—an example provided above.

단계 1200은 개별 픽셀과 연관된 픽셀 데이터를 암호화한다. 유리하게, 암호화는 픽셀 레벨로 발생할 수 있다. 이 단계는 소정의 적절한 방식으로 실현될 수 있다. 예를 들어, 안전 어플리케이션은 픽셀 데이터가 암호화될 수 있게 한다. 대안적으로, 다른 프로세스가 픽셀 데이터를 암호화하는데 이용될 수 있으며, 이러한 예들은 위에서 주어진 것이다. 단계 1202는 보조 데이터를 픽셀 데이터와 연관시킨다. 보조 데이터는 픽셀 데이터를 해독하기 위해 사용될 수 있는 하나 이상의 해독 키를 지정한다. 일부 경우에, 보조 데이터는 픽셀 데이터를 포함하는 비트의 일부(예를 들어, 알파 채널)를 포함할 때 픽셀 데이터 자체를 포함하는 것으로 간주될 수 있다. 단계 1204는 소정의 연관된 보조 데이터를 포함하는 픽셀 데이터를 수신한다. 이 단계는 예를 들어 적절하게 구성된 해독기에 의해 실현될 수 있다. 단계 1206은 픽셀 데이터가 해독될 필요가 있는 지를 결정한다. 이 단계는 보조 데이터를 검사함으로써 실현될 수 있다. 보조 데이터가 해독 기능과 연관된 값을 포함하면, 해독이 필요하다. 해독이 필요하면, 단계 1208은 보조 데이터를 사용하여 픽셀 데이터에 대한 해독 키를 억세스한다. 이 단계는 테이블(1100)과 같은 테이블을 유지하고 적절한 해독 키를 억세스하기 위해 테이블을 억세스함으로써 실현될 수 있다. 그 다음 단계 1210은 해독 키를 사용하여 픽셀 데이터를 해독한다. 한편, 단계 1206이 해독이 필요하지 않다고 판단하면, 단계 1212는 데이터를 해독하지 않는다. 이 단계는 특정 값(예를 들어, 0)을 보조 데이터에 할당하고 그 값을 사용하여 해독이 불필요하다는 것을 나타냄으로써 실현될 수 있다. 그 다음, 데이터는 더욱 프로세싱하기 위해 디스플레이 변환기에 따라 패스될 수 있다.Step 1200 encrypts the pixel data associated with the individual pixels. Advantageously, encryption can occur at the pixel level. This step can be realized in any suitable manner. For example, safety applications allow pixel data to be encrypted. Alternatively, other processes may be used to encrypt the pixel data, examples of which are given above. Step 1202 associates auxiliary data with pixel data. The auxiliary data specifies one or more decryption keys that can be used to decrypt the pixel data. In some cases, the auxiliary data may be considered to include the pixel data itself when it includes some of the bits (eg, alpha channels) containing the pixel data. Step 1204 receives pixel data that includes some associated auxiliary data. This step can be realized, for example, by a properly configured decoder. Step 1206 determines whether pixel data needs to be decoded. This step can be realized by examining the auxiliary data. If the ancillary data includes a value associated with the decryption function, decryption is required. If decryption is needed, step 1208 uses auxiliary data to access the decryption key for the pixel data. This step can be realized by maintaining a table such as table 1100 and accessing the table to access the appropriate decryption key. Step 1210 then decrypts the pixel data using the decryption key. On the other hand, if step 1206 determines that decryption is not required, then step 1212 does not decrypt the data. This step can be realized by assigning a specific value (eg 0) to the auxiliary data and using that value to indicate that decryption is unnecessary. The data can then be passed along with the display converter for further processing.

픽셀 당 선택적인 암호화의 한가지 장점은 어플리케이션이 직사각형이 아닌암호화 영역을 지정할 수 있다는 것이다. 암호화되지 않은 직사각형 영역 내의 각 픽셀은 널 암호화 기능(인덱스 0)에 의해 지정될 수 있다.One advantage of selective encryption per pixel is that applications can specify non-rectangular encryption regions. Each pixel in the unencrypted rectangular area can be specified by a null encryption function (index 0).

2차 테이블Secondary table

상술된 테이블 외에, 소위 2차 테이블이 제공되어 픽셀 데이터를 프로세싱할 때 유용한 추가 정보를 포함할 수 있다. 한 예로서, 2차 픽셀 테이블(1300)이 도시된 도 13을 고찰해 보자. 이 예에서, 주 표면의 안전 영역 내의 각 픽셀은 이 테이블 내에 연관된 엔트리를 가질 수 있다. 그러므로, "픽셀" 컬럼은 주 표면의 특정 픽셀 영역을 식별한다. 이 예에서, 테이블(1300)은 특정 영역을 "소유"하는 프로세스 또는 엔티티를 식별하기 위해 사용될 수 있는 "프로세스 ID" 컬럼을 포함한다. 이 컬럼은 예를 들어 억세스해야 하는 이들 엔티티만으로 특정 픽셀 데이터에 대한 억세스를 제한하기 위해 사용될 수 있다.In addition to the tables described above, so-called secondary tables may be provided to contain additional information useful when processing pixel data. As an example, consider FIG. 13 where a secondary pixel table 1300 is shown. In this example, each pixel in the safe area of the major surface may have an associated entry in this table. Therefore, the "pixel" column identifies a particular pixel area of the major surface. In this example, the table 1300 includes a "Process ID" column that can be used to identify a process or entity that "owns" a particular area. This column can be used, for example, to restrict access to specific pixel data to only those entities that need access.

데이터 무결성Data integrity

부수적으로 또는 대안적으로, 테이블(1300)은 픽셀 데이터의 무결성을 검증하기 위해 사용될 수 있다. 예를 들어, 암호화되지 않은 픽셀 데이터로 계산되어 테이블(1300)의 "예상된 해시" 컬럼 내에 저장될 수 있다. 그 다음, 픽셀 데이터가 예를 들어 해독기에 의해 해독될 때, 다른 해시가 해독된 픽셀 데이터로 계산되어 "현재의 해시" 컬럼 내에 배치될 수 있다. 예상된 해시를 현재의 해시와 비교함으로써, 안전 어플리케이션 또는 해독기는 소정의 픽셀 데이터가 조작되었는지 또는 변경되었는 지를 조사할 수 있다. 예를 들어, 결함성 어플리케이션이 암호화되지 않은 픽셀 데이터를 성공적으로 조작하면, 해시 비교는 이것이 발생했다는 것을 표시할 것이다. 한편, 결함성 어플리케이션이 암호화된 픽셀 데이터를 조작하면, 데이터는 상이하게 해독될 것이다. 그 다음, 현재의 해시가 해독된 데이터에 대해 계산될 때, 현재의 해시는 가장 확실하게 비호의적으로 예상된 해시와 비교할 것이다. 해독 하드웨어는 데이터 절충을 어플리케이션(또는 어플리케이션 대신에 에이전트)에 통지할 수 있다. 이 통지는 안전 채널을 통해 암호 엔티티로 발생할 수 있다.Incidentally or alternatively, table 1300 may be used to verify the integrity of pixel data. For example, it may be calculated as unencrypted pixel data and stored in the “expected hash” column of table 1300. Then, when the pixel data is decoded, for example by a decoder, another hash can be calculated into the decoded pixel data and placed in the "current hash" column. By comparing the expected hash with the current hash, the safety application or decryptor can examine whether the given pixel data has been manipulated or changed. For example, if a defective application successfully manipulates unencrypted pixel data, a hash comparison will indicate that this has occurred. On the other hand, if a defective application manipulates encrypted pixel data, the data will be decrypted differently. Then, when the current hash is calculated on the decrypted data, the current hash will most certainly compare to the unintentionally expected hash. The decryption hardware may notify the application (or agent on behalf of the application) of the data compromise. This notification may occur to the cryptographic entity via a secure channel.

다른 기술이 안전 영역 내의 데이터의 무결성을 보장하기 위해 사용될 수 있다. 예를 들어, 공격자는 어떠한 이유로 퍼 픽셀 어드레스 능력을 가지게 되어, 픽셀 데이터(보조 데이터를 포함)를 조작할 수 있게 될 수 있다. 이러한 상황을 역점을 두어 다루기 위해, 모든 안전 영역에 대해, 보조 데이터에게 데이터가 해독되게 할 값을 추정하게 하는 프로세스가 실현될 수 있다. 따라서, 이것은 예를 들어, 데이터가 해독되지 않게 할 값으로 데이터를 변경함으로써, 보조 데이터를 공격하는 소정의 결함성 어플리케이션의 효과를 최소화할 수 있다.Other techniques can be used to ensure the integrity of the data in the safe area. For example, an attacker may have the per pixel address capability for some reason, and be able to manipulate pixel data (including auxiliary data). To address this situation, for all safe areas, a process can be realized that allows the auxiliary data to estimate the value at which the data will be decrypted. Thus, this can minimize the effect of certain defective applications attacking auxiliary data, for example by changing the data to a value that will not cause the data to be decrypted.

퍼 픽셀 보조 기능(퍼 픽셀 보안을 포함, 제한적인 것은 아님)의 몇가지 장점은 연관된 테이블(예를 들어, 키 테이블)이 비교적 작고 캐시가능하다는 것이다. 또한, 보조 데이터가 이미 픽셀 데이터(예를 들어, 알파 채널)에 할당된 비트들의 일부를 포함할 때 추가적인 비디오 대역폭이 요구되지 않는다. 또한, 알파 값은 알파 채널이 보조 기능을 지원하기 위해 사용되지 않은 경우에도 여전히 사용될 수 있다. 또한, 퍼 픽셀 퍼 프레임 키 제어는 복잡한 키 전이를 고려에 넣을 수 있다. 즉, 키들은 프레임 당 순환될 수 있어서, 비디오를 플레이하는 동안 키를 스위칭할 때 문제를 감소시킬 수 있다. 상기 기술은 또한 비RGB 데이터와, 데스크톱으로의 직접 메모리 카피와, 그리고 비디오 오버레이와 사용될 수 있다.Some advantages of the per pixel assist function (including, but not limited to, per pixel security) are that the associated table (eg, key table) is relatively small and cacheable. In addition, no additional video bandwidth is required when the ancillary data already contains some of the bits assigned to the pixel data (eg alpha channel). In addition, the alpha value can still be used even if the alpha channel is not used to support the assist function. In addition, per pixel per frame key control can take into account complex key transitions. That is, the keys can be cycled per frame, reducing the problem when switching keys while playing video. The technique can also be used with non-RGB data, direct memory copies to the desktop, and video overlays.

마지막으로, 한 영역이 이동될 때, 보조 암호화 인덱스 키는 비디오 데이터와 이동하여, 암호화 정보가 완전하게 동기되어 소정의 하드웨어 변경을 요구하지 않게 한다.Finally, when an area is moved, the secondary encryption index key moves with the video data so that the encryption information is completely synchronized so that no hardware change is required.

결론conclusion

상술된 여러가지 방법 및 시스템은 어드레스뿐만 아니라, 호스트 컴퓨터 상에서 실행되는 소프트웨어에 안전 채널을 공급하고, 호스트 컴퓨터 상에서 실행되는 결함성 어플리케이션이 부적절하게 데이터를 얻거나 다르게 조작하려고 하는 공격 모델에 대한 솔루션을 제공한다. 본 기술을 통해, 프로세스되어 사용자의 디스플레이에 렌더링될 비디오 데이터는 비밀이 유지될 수 있고, 많은 경우에 데이터의 무결성이 보호될 수 있다.The various methods and systems described above provide a safe channel for software running on a host computer, as well as addresses, and provide solutions to attack models where defective applications running on the host computer attempt to improperly obtain or otherwise manipulate data. do. With the present technology, video data to be processed and rendered on a user's display can be kept confidential, and in many cases the integrity of the data can be protected.

본 발명은 구조적 특징 및/또는 방법론적인 단계들에 특정된 용어로 설명되었지만, 첨부된 청구범위 내에 정의된 본 발명은 상술된 특정된 특징 및 단계들에 제한되지 않는다는 것을 이해할 수 있을 것이다. 오히려, 특정된 특징 및 단계들은 청구된 발명을 실현하는 양호한 형태로 개시된 것이다.Although the invention has been described in terms specific to structural features and / or methodological steps, it will be understood that the invention defined in the appended claims is not limited to the specific features and steps described above. Rather, the features and steps specified are disclosed in a preferred form for carrying out the claimed invention.

Claims (59)

암호화된 비디오 데이터를 비디오 카드 상에 제공하는 단계; 및Providing encrypted video data on a video card; And 해독된 비디오 데이터로의 프로그램적 억세스가 없는 데이터 프로세스 중의 한 지점에서 상기 암호화된 비디오 데이터를 해독하는 단계Decrypting the encrypted video data at a point in the data process where there is no programmatic access to the decrypted video data 를 포함하는 것을 특징으로 하는 방법.Method comprising a. 제1항에 있어서, 상기 해독 단계는 상기 해독된 비디오 데이터를 비디오 카드 상의 디스플레이 변환기에 제공하기 이전에 실행되는 것을 특징으로 하는 방법.The method of claim 1 wherein said decrypting step is performed prior to providing said decrypted video data to a display converter on a video card. 제1항에 있어서, 상기 해독 단계는 상기 해독된 비디오 데이터를 비디오 카드 상의 RAMDAC에 제공하기 이전에 실행되는 것을 특징으로 하는 방법.The method of claim 1, wherein said decrypting step is performed prior to providing said decrypted video data to a RAMDAC on a video card. 제1항에 있어서, 상기 해독 단계는 상기 비디오 카드 상의 하드웨어 해독기에 의해 실행되는 것을 특징으로 하는 방법.The method of claim 1, wherein said decrypting step is performed by a hardware decryptor on said video card. 제1항에 있어서, 상기 해독 단계는 상기 비디오 카드 상의 비디오 카드 GPU와 RAMDAC 중간의 해독기에 의해 실행되는 것을 특징으로 하는 방법.The method of claim 1, wherein said decrypting step is performed by a decoder between a video card GPU and a RAMDAC on said video card. 하나 이상의 컴퓨터에 의해 실행될 때, 상기 하나 이상의 컴퓨터로 하여금제1항의 방법을 실현하게 하는 것을 특징으로 하는 하나 이상의 컴퓨터 판독가능 명령들의 세트.A set of one or more computer readable instructions, when executed by one or more computers, causing the one or more computers to realize the method of claim 1. 비디오 카드 상에 암호화된 비디오 데이터를 제공하는 수단;Means for providing encrypted video data on a video card; 상기 비디오 카드 상의 암호화된 비디오 데이터를 해독하는 수단; 및Means for decrypting encrypted video data on the video card; And 해독된 비디오 데이터로의 소프트웨어 억세스를 금지하는 수단Means to prohibit software access to decrypted video data 을 포함하는 것을 특징으로 하는 시스템.System comprising a. 제7항에 있어서, 상기 암호화된 비디오 데이터를 제공하는 수단은 스트림 암호(stream cipher)를 포함하는 것을 특징으로 하는 시스템.8. The system of claim 7, wherein the means for providing encrypted video data comprises a stream cipher. 제7항에 있어서, 상기 암호화된 비디오 데이터를 제공하는 수단은 블록 암호(block cipher)를 포함하는 것을 특징으로 하는 시스템.8. The system of claim 7, wherein the means for providing encrypted video data comprises a block cipher. 제7항에 있어서, 상기 해독 수단은 상기 비디오 카드 상의 하드웨어 해독기를 포함하는 것을 특징으로 하는 시스템.8. The system of claim 7, wherein said decryption means comprises a hardware decryptor on said video card. 모니터 상에 렌더링될 비디오 데이터를 프로세싱하는 그래픽 프로세서 유닛;A graphics processor unit for processing video data to be rendered on the monitor; 상기 그래픽 프로세서 유닛에 의해 프로세스될 또는 프로세스된 데이터를 보유하기 위해 상기 그래픽 프로세서 유닛과 동작가능하게 연관된 메모리;Memory operably associated with the graphics processor unit to hold data to be processed or processed by the graphics processor unit; 디지털 데이터를, 상기 모니터 상에 데이터를 렌더링할 때 사용하기 위한 신호로 변환하기 위한 디스플레이 변환기; 및A display converter for converting digital data into a signal for use in rendering the data on the monitor; And 상기 디스플레이 변환기에 제공하기 위한 픽셀 데이터를 해독하도록 구성된 해독기 - 상기 해독기는 프로그램의 억세스가 없는 데이터 프로세싱 지점에 배치됨 -A decoder configured to decrypt pixel data for providing to the display converter, the decoder being located at a data processing point without access to the program 를 포함하는 것을 특징으로 하는 시스템.System comprising a. 제11항에 있어서, 상기 메모리는 모니터 상에 렌더링될 데이터를 포함하는 주 표면(primary surface)을 포함하고, 상기 주 표면은 암호화된 데이터가 배치될 수 있는 하나 이상의 안전 영역을 포함하는 것을 특징으로 하는 시스템.12. The memory of claim 11, wherein the memory comprises a primary surface containing data to be rendered on a monitor, wherein the primary surface comprises one or more safe areas where encrypted data can be placed. System. 제11항에 있어서, 상기 해독기에 해독 능력을 부여하도록 구성된 비디오 카드 상의 제어 프로세서를 더 포함하는 것을 특징으로 하는 시스템.12. The system of claim 11, further comprising a control processor on the video card configured to impart decryption capability to the decryptor. 제13항에 있어서, 상기 제어 프로세서는 암호화된 픽셀 데이터를 해독하는 해독기에 제공될 수 있는 하나 이상의 키를 관리하는 키 매니저를 포함하는 것을 특징으로 하는 시스템.14. The system of claim 13, wherein the control processor includes a key manager that manages one or more keys that can be provided to a decrypter that decrypts encrypted pixel data. 제13항에 있어서, 상기 제어 프로세서 및 상기 해독기를 통신적으로 링크하는 안전 채널을 더 포함하는 것을 특징으로 하는 시스템.15. The system of claim 13, further comprising a secure channel for communicatively linking said control processor and said decryptor. 제13항에 있어서, 상기 제어 프로세서는 상기 비디오 카드 상의 분리된 집적 회로를 포함하는 것을 특징으로 하는 시스템.15. The system of claim 13, wherein the control processor comprises a separate integrated circuit on the video card. 제11항에 있어서, 상기 해독기는 상기 비디오 카드 상의 개별 구성요소(component)를 포함하는 것을 특징으로 하는 시스템.12. The system of claim 11, wherein the decoder comprises a separate component on the video card. 모니터 상에 렌더링될 비디오 데이터를 프로세싱하기 위한 비디오 카드 상의프로세서 수단;Processor means on a video card for processing video data to be rendered on the monitor; 상기 프로세서 수단에 의해 프로세스될, 또는 프로세스된 데이터를 보유하기 위해 상기 프로세서 수단과 동작가능하게 연관된 비디오 카드 상의 메모리 수단;Memory means on the video card to be processed by the processor means or operably associated with the processor means for retaining the processed data; 디지털 데이터를, 모니터 상에 데이터를 렌더링할 때 사용하기 위한 신호로 변환하기 위한 비디오 카드 상의 변환기 수단;Converter means on the video card for converting the digital data into a signal for use in rendering the data on the monitor; 상기 변환기 수단에 제공하기 위한 픽셀 데이터를 해독하기 위한 비디오 카드 상의 해독기 수단; 및Decoder means for decoding the pixel data for providing to the converter means; And 하나 이상의 소프트웨어 어플리케이션이 해독된 픽셀 데이터로 조금도 억세스하지 못하게 하는 비디오 카드 상의 수단Means on a video card that prevents one or more software applications from accessing the decrypted pixel data at all 을 포함하는 것을 특징으로 하는 시스템.System comprising a. 비디오 카드;Video card; 모니터 상에 렌더링될 데이터를 포함하는 주 표면을 일부분이 포함하는 상기 비디오 카드 상의 메모리;Memory on the video card, the portion of which includes a major surface containing data to be rendered on a monitor; 암호화된 픽셀 데이터를 저장하는 주 표면 상의 하나 이상의 안전 영역; 및One or more safe areas on the major surface that store encrypted pixel data; And 하나 이상의 영역과 연관되고, 상기 암호화된 픽셀 데이터가 해독될 수 있도록 구성된 적어도 하나의 키At least one key associated with one or more regions and configured such that the encrypted pixel data can be decrypted 를 포함하는 것을 특징으로 하는 시스템.System comprising a. 제19항에 있어서, 개별 안전 영역은 상기 모니터 상에 제공될 수 있는 안전 윈도우에 대응하는 것을 특징으로 하는 시스템.20. The system of claim 19, wherein the individual safety zones correspond to safety windows that can be provided on the monitor. 제19항에 있어서, 개별 안전 영역은 개별의 연관된 키를 갖는 것을 특징으로 하는 시스템.20. The system of claim 19, wherein the individual safe zones have individual associated keys. 제21항에 있어서, 각각이 서로 다른 키를 갖는 다수의 안전 영역이 있는 것을 특징으로 하는 시스템.22. The system of claim 21, wherein there are a plurality of safe areas, each with a different key. 제19항에 있어서, 연관된 키를 사용하여 상기 암호화된 픽셀 데이터를 해독하도록 구성된 상기 비디오 카드 상의 해독기를 더 포함하는 것을 특징으로 하는 시스템.20. The system of claim 19, further comprising a decrypter on the video card configured to decrypt the encrypted pixel data using an associated key. 제23항에 있어서, 상기 해독기는 해독된 픽셀 데이터로의 프로그램 억세스가 없는 프로세싱 지점에서 상기 암호화된 픽셀 데이터를 해독하는 것을 특징으로 하는 시스템.24. The system of claim 23, wherein the decryptor decrypts the encrypted pixel data at processing points where there is no program access to the decrypted pixel data. 제23항에 있어서, 상기 해독기는 하드웨어 해독기를 포함하는 것을 특징으로 하는 시스템.24. The system of claim 23, wherein the decoder comprises a hardware decoder. 제19항에 있어서, 상기 비디오 카드는 인증가능한 것을 특징으로 하는 시스템.20. The system of claim 19, wherein the video card is authenticable. 제26항에 있어서, 상기 비디오 카드는 인증에 사용될 수 있는 디지털 인증서를 포함하는 것을 특징으로 하는 시스템.27. The system of claim 26, wherein the video card includes a digital certificate that can be used for authentication. 제26항에 있어서, 상기 비디오 카드는 인증의 요구에 응답하도록 구성된 것을 특징으로 하는 시스템.27. The system of claim 26, wherein the video card is configured to respond to a request for authentication. 제19항에 있어서, 상기 비디오 카드는 하나 이상의 안전 어플리케이션과의 통신을 암호화하기 위한 키를 포함하는 것을 특징으로 하는 시스템.20. The system of claim 19, wherein the video card includes a key for encrypting communication with one or more secure applications. 비디오 카드의 메모리 내에 주 표면의 하나 이상의 안전 영역을 정의하는 단계;Defining one or more safe areas of the major surface in the memory of the video card; 상기 하나 이상의 안전 영역 내에 저장된 픽셀 데이터를 암호화할 때 사용하기 적절한 상기 하나 이상의 안전 영역과 적어도 하나의 키를 연관시키는 단계;Associating at least one key with the one or more safe areas suitable for use in encrypting pixel data stored within the one or more safe areas; 픽셀 데이터를 상기 적어도 하나의 키로 암호화하는 단계; 및Encrypting pixel data with the at least one key; And 상기 암호화된 픽셀 데이터를 상기 하나 이상의 안전 영역 내로 제공하는 단계Providing the encrypted pixel data into the one or more secure areas 를 포함하는 것을 특징으로 하는 방법.Method comprising a. 제30항에 있어서, 상기 하나 이상의 안전 영역은 직사각형 모양인 것을 특징으로 하는 방법.31. The method of claim 30, wherein the one or more safety zones are rectangular in shape. 제30항에 있어서, 상기 키는 스트림 암호로 암호화하는데 사용될 수 있는 키를 포함하는 것을 특징으로 하는 방법.31. The method of claim 30, wherein the key comprises a key that can be used to encrypt with a stream cipher. 제30항에 있어서, 상기 키는 블록 암호로 암호화하는데 사용될 수 키를 포함하는 것을 특징으로 하는 방법.33. The method of claim 30, wherein the key comprises a key that can be used to encrypt with a block cipher. 제30항에 있어서,The method of claim 30, 상기 정의 단계는 다수의 안전 영역을 정의하고;The defining step defines a plurality of safety zones; 상기 연관 단계는 서로 다른 키를 각각의 안전 영역과 연관시키는 것을 특징으로 하는 방법.Said associating step associating a different key with each secure zone. 제30항에 있어서, 상기 암호화 단계는 하나 이상의 안전 영역으로 범위가 제한된 스트림 암호를 사용하여 실행되는 것을 특징으로 하는 방법.31. The method of claim 30, wherein said encrypting step is performed using a stream cipher limited in scope to one or more secure areas. 하나 이상의 컴퓨터에 의해 실행될 때, 상기 하나 이상의 컴퓨터로 하여금 제30항의 방법을 실현하게 하는 것을 특징으로 하는 하나 이상의 컴퓨터 판독가능 명령들의 세트.A set of one or more computer readable instructions, when executed by one or more computers, causing the one or more computers to realize the method of claim 30. 비디오 카드의 메모리 내에 주 표면의 하나 이상의 안전 영역을 정의하는 수단;Means for defining one or more safe areas of the major surface in the memory of the video card; 상기 하나 이상의 안전 영역 내에 저장된 픽셀 데이터를 암호화할 때 사용하기 적절한 상기 하나 이상의 안전 영역과 적어도 하나의 키를 연관시키는 수단;Means for associating at least one key with the one or more safe areas suitable for use in encrypting pixel data stored within the one or more safe areas; 픽셀 데이터를 상기 적어도 하나의 키로 암호화하는 수단; 및Means for encrypting pixel data with the at least one key; And 상기 하나 이상의 안전 영역 내로 상기 암호화된 픽셀 데이터를 제공하는 수단Means for providing the encrypted pixel data into the one or more secure areas 을 포함하는 것을 특징으로 하는 시스템.System comprising a. 비디오 카드의 주 표면의 안전 영역 내에 암호화된 데이터를 제공하는 단계;Providing encrypted data within a secure area of the major surface of the video card; 상기 암호화된 데이터를 해독하는데 사용될 수 있는 안전 영역과 연관된 키를 제공하는 단계; 및Providing a key associated with a secure area that can be used to decrypt the encrypted data; And 상기 주 표면의 안전 영역 내의 상기 암호화된 데이터를 해독하기 위해 키를 사용하는 단계Using a key to decrypt the encrypted data within the secure area of the major surface 를 포함하는 것을 특징으로 하는 방법.Method comprising a. 제38항에 있어서, 상기 키를 사용하는 단계는 상기 암호화된 데이터로의 프로그램 억세스가 없는 프로세싱 지점에서 발생하는 것을 특징으로 하는 방법.39. The method of claim 38, wherein using the key occurs at a processing point where there is no program access to the encrypted data. 제38항에 있어서, 상기 키를 제공하는 단계는 상기 비디오 카드 상의 제어 프로세서에 의해 실행되는 것을 특징으로 하는 방법.39. The method of claim 38, wherein providing the key is executed by a control processor on the video card. 제38항에 있어서, 상기 암호화된 데이터를 해독하기 위해 키를 사용하는 단계는 비디오 카드 상의 하드웨어 해독기에 의해 실행되는 것을 특징으로 하는 방법.39. The method of claim 38, wherein using the key to decrypt the encrypted data is performed by a hardware decryptor on the video card. 제38항에 있어서, 상기 암호화된 데이터를 해독하기 위해 키를 사용하는 단계는 안전 영역의 외형(geometry)을 추론할 수 있는 비디오 카드 상의 해독기에 의해 실행되는 것을 특징으로 하는 방법.39. The method of claim 38, wherein using the key to decrypt the encrypted data is performed by a decryptor on a video card capable of inferring the geometry of the secure area. 제38항에 있어서, 표시 화면 상에 렌더링하기 위한 디스플레이 변환기에 상기 해독된 데이터를 제공하는 단계를 더 포함하는 것을 특징으로 하는 방법.39. The method of claim 38, further comprising providing the decrypted data to a display converter for rendering on a display screen. 제38항에 있어서, 다수의 서로 다른 안전 영역이 있으며, 상기 키를 제공하는 단계는 각각의 안전 영역과 연관될 키를 제공하는 것을 특징으로 하는 방법.39. The method of claim 38, wherein there are a plurality of different safe zones, and wherein providing the key provides a key to be associated with each safe zone. 제38항에 있어서, 다수의 서로 다른 안전 영역이 있으며, 상기 키를 제공하는 단계는 다수의 키를 제공하는 단계를 포함하고, 각각의 안전 영역은 서로 다른 키와 연관되는 것을 특징으로 하는 방법.39. The method of claim 38, wherein there are a plurality of different security zones, and wherein providing the keys comprises providing a plurality of keys, each safe zone being associated with a different key. 제38항에 있어서, 상기 해독하기 위해 키를 사용하는 단계는 스트림 암호를 사용하여 실행되는 것을 특징으로 하는 방법.39. The method of claim 38, wherein using the key to decrypt is performed using a stream cipher. 제38항에 있어서, 상기 해독하기 위해 키를 사용하는 단계는 범위가 제한된 스트림 암호를 사용하여 실행되는 것을 특징으로 하는 방법.39. The method of claim 38, wherein using the key to decrypt is performed using a range limited stream cipher. 제38항에 있어서, 상기 해독하기 위해 키를 사용하는 단계는 블록 암호를 사용하여 실행되는 것을 특징으로 하는 방법.39. The method of claim 38, wherein using the key to decrypt is performed using block ciphers. 하나 이상의 컴퓨터에 의해 실행될 때, 상기 하나 이상의 컴퓨터로 하여금 제38항의 방법을 실현하게 하는 것을 특징으로 하는 하나 이상의 컴퓨터 판독가능명령들의 세트.A set of one or more computer readable instructions, when executed by one or more computers, causing the one or more computers to realize the method of claim 38. 비디오 카드의 주 표면의 안전 영역 내에 암호화된 데이터를 제공하는 수단;Means for providing encrypted data within a secure area of the major surface of the video card; 상기 암호화된 데이터를 해독하는데 사용될 수 있는 안전 영역과 연관된 키를 제공하는 수단; 및Means for providing a key associated with a secure area that can be used to decrypt the encrypted data; And 상기 주 표면의 안전 영역 내의 암호화된 데이터를 해독하기 위해 키를 사용하는 수단Means for using a key to decrypt encrypted data within a secure area of the major surface 을 포함하는 것을 특징으로 하는 시스템.System comprising a. 비디오 카드의 주 표면의 안전 영역 내에 암호화된 데이터를 제공하는 단계-상기 안전 영역은 연관된 외형을 갖고 있음-;Providing encrypted data within a safe area of the major surface of the video card, the safe area having an associated appearance; 상기 암호화된 데이터를 해독하는데 사용될 수 있는 안전 영역과 연관된 키를 제공하는 단계;Providing a key associated with a secure area that can be used to decrypt the encrypted data; 상기 안전 영역의 외형을 상기 비디오 카드 상의 해독기에게 고지하는 단계;Notifying the decoder on the video card of the appearance of the safe area; 상기 키를 상기 해독기에 제공하는 단계; 및Providing the key to the decryptor; And 상기 주 표면의 안전 영역 내의 암호화된 데이터를 상기 해독기로 해독하는 단계Decrypting encrypted data in a safe area of the major surface with the decryptor 를 포함하는 것을 특징으로 하는 방법.Method comprising a. 제51항에 있어서, 상기 고지 단계는, 디스플레이 모니터 상에 표시되고 상기안전 영역과 연관된 윈도우가 드래그(drag)되어 디스플레이 모니터 상의 다른 위치로 드롭(drop)되는 것에 응답하여 실행되는 것을 특징으로 하는 방법.52. The method of claim 51, wherein said notifying step is performed in response to a window displayed on a display monitor and associated with said safe area being dragged and dropped to another location on the display monitor. . 하나 이상의 컴퓨터에 의해 실행될 때, 상기 하나 이상의 컴퓨터로 하여금 제51항의 방법을 실현하게 하는 하나 이상의 컴퓨터 판독가능 명령들의 세트.A set of one or more computer readable instructions that, when executed by one or more computers, cause the one or more computers to realize the method of claim 51. 비디오 카드의 주 표면의 안전 영역 내에 암호화된 데이터를 제공하는 단계;Providing encrypted data within a secure area of the major surface of the video card; 상기 암호화된 데이터를 해독하는데 사용될 수 있는 안전 영역과 연관된 키를 제공하는 단계;Providing a key associated with a secure area that can be used to decrypt the encrypted data; 상기 주 표면의 안전 영역 내의 암호화된 데이터를 해독하기 위해 키를 사용하는 단계; 및Using a key to decrypt encrypted data within a secure area of the major surface; And 어떠한 데이터가 변경되었는 지의 여부를 검출하는 단계Detecting whether any data has changed 를 포함하는 것을 특징으로 하는 방법.Method comprising a. 제54항에 있어서, 상기 검출하는 단계는 암호화되지 않은 데이터가 디스플레이 모니터 상에 렌더링되기 전에 실행되는 것을 특징으로 하는 방법.55. The method of claim 54, wherein said detecting step is performed before unencrypted data is rendered on a display monitor. 제54항에 있어서, 상기 검출하는 단계는 상기 암호화된 데이터와 연관된 인증 정보를 사용하여 실행되는 것을 특징으로 하는 방법.55. The method of claim 54, wherein said detecting is performed using authentication information associated with said encrypted data. 제56항에 있어서, 상기 인증 정보는 선정된 픽셀이 선정된 값을 갖도록 요구되는 안전 데이터 포맷을 포함하는 것을 특징으로 하는 방법.59. The method of claim 56, wherein the authentication information comprises a safety data format that requires a predetermined pixel to have a predetermined value. 제54항에 있어서, 상기 검출하는 단계는 암호화되지 않은 데이터의 해시들(hashes)의 해시 비교를 사용하여 실행되는 것을 특징으로 하는 방법.55. The method of claim 54, wherein said detecting is performed using a hash comparison of hashes of unencrypted data. 제54항에 있어서, 통지는 안전 채널을 통해 암호 엔티티로 되돌아가는 것을 특징으로 하는 방법.55. The method of claim 54, wherein the notification returns to the cryptographic entity via a secure channel.
KR1020030040771A 2002-06-24 2003-06-23 Systems and methods for securing video card output KR20040000348A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/178,805 2002-06-24
US10/178,805 US20020172573A1 (en) 1999-03-24 2002-06-24 Self-piercing clinch nut

Publications (1)

Publication Number Publication Date
KR20040000348A true KR20040000348A (en) 2004-01-03

Family

ID=37312334

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030040771A KR20040000348A (en) 2002-06-24 2003-06-23 Systems and methods for securing video card output

Country Status (1)

Country Link
KR (1) KR20040000348A (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150119278A (en) * 2013-02-18 2015-10-23 퀄컴 인코포레이티드 Hardware enforced content protection for graphics processing units
US9767320B2 (en) 2015-08-07 2017-09-19 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
US10102391B2 (en) 2015-08-07 2018-10-16 Qualcomm Incorporated Hardware enforced content protection for graphics processing units

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150119278A (en) * 2013-02-18 2015-10-23 퀄컴 인코포레이티드 Hardware enforced content protection for graphics processing units
US9767320B2 (en) 2015-08-07 2017-09-19 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
US10102391B2 (en) 2015-08-07 2018-10-16 Qualcomm Incorporated Hardware enforced content protection for graphics processing units

Similar Documents

Publication Publication Date Title
US8738929B2 (en) Auxiliary functionality for pixel data
US7206940B2 (en) Methods and systems providing per pixel security and functionality
US7293178B2 (en) Methods and systems for maintaining an encrypted video memory subsystem
JP4804565B2 (en) Secure video card method and system
JP4522645B2 (en) Method and system for cryptographically protecting secure content
KR101030354B1 (en) Methods and systems for authentication of components in a graphics system
JP4793882B2 (en) System and method for preventing unauthorized acquisition of information
US9665740B1 (en) Method and system for cryptographically securing a graphics system
KR20040000348A (en) Systems and methods for securing video card output
CN113344764B (en) Secure graphics processor, processor chip, display card, apparatus, method, and storage medium
CN113344764A (en) Secure graphics processor, processor chip, display card, apparatus, method, and storage medium

Legal Events

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