保护视频卡的方法和系统 【技术领域】
本发明涉及使用视频卡处理视频的方法和系统。
背景技术
通常,内容作者,如电影工作室或在网络上发布内容的用户,在发布视频内容时,将对用户查看它的方式设置限制。此内容通常可以在诸如个人计算机之类的计算机上查看或呈现。每年一些无道德的个人和机构总是花费大量的时间、精力和金钱试图偷窃或以别的方式不正当地获得此类视频内容。
其中一个攻击点可以是将查看或呈现此类视频内容的计算机。即,流氓程序或设备可以并且常常试图不正当地获得诸如个人计算机之类的计算机上接收的视频内容。在其他计算机组件中,这种攻击可以针对处理视频内容的视频卡和/或向视频卡和从视频卡传输视频内容的总线。
图1显示了包括总线连接器102的示范视频卡或图形卡100,总线连接器102插入到典型计算机上的端口中。视频卡100还包括监视器连接器104,例如15针插头,该连接器通过电缆连接到监视器。视频卡100可以包括数字视频输出插座106,该插座可以用于向LCD和平面控制板监视器等等发送视频图像。
现代视频卡包括四个主要组件:图形处理单元(GPU)108、视频存储器110、随机存取存储器数字到模拟转换器(RAMDAC)112,以及可以包括在视频BIOS114中的驱动程序软件。
GPU108是专用图形处理芯片,用于控制分辨率、颜色深度,以及与在监视器屏幕上呈现图像相关的所有元素等各个方面。计算机的中央处理单元或CPU(未显示)发送一组图形指令和数据,它们由图形卡地专用驱动程序进行解释并由卡的GPU108执行。GPU108执行诸如位图传输和绘制、窗口大小和位置调整、线条绘制、字体缩放和多边形绘制之类的操作。GPU108在硬件中处理这些任务的速度比在系统的CPU上运行的软件的速度快得多。然后GPU将帧数据写入帧缓冲器,或板载视频存储器110。GPU大大地减少了系统的CPU的工作负载。
保存视频图像的存储器也被称为帧缓冲器,通常在视频卡上实现。在此示例中,帧缓冲器是在视频卡上以存储器110的形式实现的。早期的系统是以标准DRAM实现视频存储器的。然而,此要求对数据进行持续不断的刷新,以防止丢失,并且无法在此刷新过程中进行修改。所造成的结果,特别是在现代图形卡需求的非常快的时钟速度下,是性能严重下降。
在视频卡上实现视频存储器的一个优点是,可以为其特定的任务进行自定义,的确,这已经导致新的存储器技术的推广:
·视频RAM(VRAM):一个特殊类型的双端口DRAM,它可以同时被写入和读取。它要求的刷新没有普通的DRAM那么频繁,因此,执行效果好得多;
·Windows RAM(WRAM):由Matrox Millennium使用,也是双端口,并且运行速度比传统的VRAM更快;
·EDO DRAM:它提供的带宽比DRAM大,比普通DRAM计时更准确,并且更有效地管理读/写周期;
·SDRAM:类似于EDO RAM,只是存储器和图形芯片在使用锁定数据的时钟上运行,可使SDRAM比普通EDO RAM运行速度更快;
·与SDRAM相同,而且还支持区块写入和每位写入,它们在支持这些增强功能的图形芯片上产生更好的性能;以及
·DRDRAM:直接RDRAM是全新的,通用存储器体系结构,它的体系结构比传统的DRAM性能改善20倍。
某些设计将图形电路集成到主板本身,并使用系统的一部分RAM作为帧缓冲器。这叫做“统一存储器体系结构,使用它的原因只是为了降低成本,并可能导致图形性能下降。
视频存储器帧缓冲器中的信息是出现在屏幕上的作为数字位图存储的图像。但在视频存储器包含数字信息的同时,其输出介质—监视器—可能使用模拟信号。模拟信号不仅仅要求“开”或“关”信号,因为它用于确定在它们扫描监视器的上下扫描时在哪里、何时以及以什么强度激发电子枪。这就是如下文所述的RAMDAC112发挥作用的地方。某些RAMDAC还支持针对诸如LCD监视器之类的数字显示器的数字视频接口(DVI)。在这样的配置中,RAMDAC将内部数字表示转换为数字显示器可以理解的形式。
RAMDAC扮演着“显示转换器”的角色,因为它将内部数字数据转换为显示器可以理解的形式。
尽管安装在视频卡上的视频存储器的总量可能不会由特定分辨率用完,额外的存储器常常用于为GPU108缓存信息。例如,对通常使用的图形项—如文本字体和图标或图像—的缓存,可以使图形子系统不必在每次写入新字母或移动图标时加载这些项,从而改善了性能。缓存的图像可用于将那些将要被GPU呈现的图像序列排成队,从而腾出CPU用以执行其他任务。
RAMDAC112每秒读取视频存储器的内容许多次,将它转换为信号,并通过视频电缆发送到监视器。对于模拟显示器,通常有一个数字到模拟转换器(DAC),以使CRT使用的三个主要颜色中的每一种颜色创建一个完整的颜色范围。对于数字显示器,RAMDAC输出单个RGB数据流以便由输出设备解释和显示。计划的结果是创建单个像素的颜色所必需的混合。RAMDAC112转换信息可以达到的速率,以及GPU108本身的设计,决定了图形卡可以支持的刷新频率的范围。RAMDAC112还决定给定分辨率中可用的颜色数量,具体情况视其内部体系结构而定。
总线连接器102可以支持用于与视频卡连接的一个或多个总线。例如,加速图形端口(AGP)总线可以使视频卡直接访问系统存储器。直接存储器访问帮助使峰值带宽比外围组件互连(PCI)总线高许多倍。这可以使系统的CPU在视频卡上的GPU访问系统存储器时执行其他任务。
在操作期间,板载视频存储器中包含的数据可以被提供到计算机的系统存储器并可以对其进行管理,好像它是系统的存储器的组成部分。这包括诸如计算机的存储器管理使用的虚拟存储器管理技术之类的东西。此外,视频卡上的图形操作需要系统的存储器中包含的数据时,数据可以通过诸如PCI或AGP总线之类的总线发送到视频卡并存储在板载视频存储器110上。在那里,如上文所述,数据可以由GPU108进行访问和操作。
当数据被从系统存储器传输到视频卡上的视频存储器以及进行相反操作时,连接到PCI总线的PCI设备在进行数据传输时“侦听”数据。PCI总线还使视频存储器对系统的其余部分“可见”,好像它像系统存储器一样存在。结果,PCI设备可以获得PCI总线并直接将视频存储器的内容复制到另一个设备。如果PCI设备与传入视频同步,则它可以潜在地捕获所有内容。
一旦内容位于视频卡上的视频存储器中,以前有两种方案保护该内容。
第一,仍可以访问视频存储器,但内容以受保护、加密的形式进行存储,以使它无法被流氓设备和应用程序进行读取。尽管这可以防止数据被读取,但是这也要求数据不断地以加密形式维护。如果视频卡(即,GPU)希望处理数据,它必须以原子方式在读取、处理时进行解密并在每次写回视频存储器时重新加密。对于视频数据,解压缩的数据会要求300mb每秒以上才能显示。相应地,加密器/解密器必须以这些高数据速率运行。通常,多个视频流将被处理到单个输出流中。例如,画中画(PIP)或多信道显示会将八个信道混合到单个显示中。这将要求八个同时的解密器和一个加密器以每秒300mb的速率运行,总数为大约为2.4GB每秒。因此,这种方法由于计算要求较高不十分理想。
第二,可以简单地使视频存储器中的内容或数据不可访问。由于PCI和AGP总线的设计,这通常不可能,因为视频存储器被映射到物理存储器,即,它好像是普通的系统存储器。因此,任何PCI设备都可以访问视频存储器,然后可以获得PCI总线并执行数据传输,而无需CPU的知识。因此,由于存储器控制器或GPU无法可靠地确定谁正在访问存储器,因此这种方法不非常理想。
相应地,本发明是由于与提供安全的视频处理系统和方法关联的想法而产生的。
【发明内容】
本文介绍了用于保护视频卡或图形卡上使用和处理的数据的方法和系统。在各种实施例中,可以将计划由视频卡使用的数据加密以便数据被提供到视频卡和计算机系统之间的总线(例如PCI或AGP总线)时随时将数据加密。例如,当数据从视频卡上的存储器移到系统的存储器,例如,当它被映射到系统的物理存储器时,以及进行相反操作时,数据处于加密形式并因此受到保护。
当加密数据从系统的存储器传输到视频卡以便让视频卡上的图形处理单元(GPU)处理时,可以将其解密并放入视频卡上的受保护的存储器中。
在一个实施例中,视频卡具有受保护的存储器的部分。加密/解密密钥对与每个受保护的存储器部分关联。当加密数据被接收到视频卡上时,数据被用与解密数据将被写入其中的受保护的存储器部分关联的解密密钥自动解密。然后GPU可以自由地对解密数据进行操作。如果数据将被移到物理上不在视频卡上的未保护的存储器部分或存储器,则可以用关联的加密密钥将数据加密,然后移动。由于数据可以在传输时被加密,因此没有必要在发送图像之前缓存整个加密的图像。
在另一个实施例中,加密数据被接收到视频卡并放入未保护的存储器部分。然后数据可以被解密到视频卡上的存储器的受保护部分。然后GPU可以对解密数据进行操作。如果数据将被移到视频卡的存储器的未保护部分或从视频卡移到系统存储器,则数据可以被重新加密。
因此,各种实施例可以通过确保数据任何时候都被放到可能被攻击的总线(例如PCI总线或AGP总线)来保护数据,数据被加密,从而受到保护。
【附图说明】
图1是显示计划在计算机系统中使用的示范视频卡或图形卡的各种组件的方框图。
图2是根据描述的实施例可以使用视频卡的示范计算机系统的方框图。
图3是描述根据描述的一个实施例的方法中的步骤的流程图。
图4是描述根据描述的一个实施例的方法中的步骤的流程图。
图5是显示根据一个实施例的示范视频卡或图形卡的各种组件的方框图。
图6是显示图5的视频卡的各种组件的方框图。
图7是描述根据描述的一个实施例的方法中的步骤的流程图。
图8是对了解描述的实施例的某些方面有用的方框图。
图9是描述根据一个实施例的方法中的步骤的流程图。
图10是显示根据一个实施例的视频卡的各种组件的方框图。
【具体实施方式】
示范计算机系统
图2说明了一个适当的计算环境200的示例,在该计算环境中可以实现下文所述的系统和相关方法。
可以理解,计算环境200只是一个适当的计算环境的示例,不对媒体处理系统的使用范围或功能暗示任何限制。计算环境200不应被解释为与示范计算环境200中所示的任何一个组件或组件组合有任何相关的依赖关系或要求。
描述的各种实施例可以应用于很多其他一般用途或特殊用途的计算系统环境或配置。可以适合用于媒体处理系统的已知的计算系统、环境和/或配置包括,但不仅限于,个人计算机、服务器计算机、瘦客户端、胖客户端、手提或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程的消费类电子产品、网络PC、小型机、大型机、包括上述系统或设备中的任何系统或设备的分布式计算环境等等。
在某些情况下,在由计算机执行诸如程序模块之类的计算机可执行指令的一般环境中,可以很好地描述系统和相关的方法。一般来讲,程序模块包括例程、程序、对象、组件和执行特定任务或实现特定抽象数据类型的数据结构。实施例还可以在那些任务可以由通过通信网络链接在一起的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质中。
根据图2说明的实施例,显示的计算系统200包括一个或多个处理器或处理单元202、系统存储器204、以及连结包括系统存储器204在内的各种系统组件与处理器202的总线206。
总线206用于代表多种类型的总线结构中的任何一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及使用各种总线体系结构中的任何一种体系结构的处理器或本地总线。作为示例,而不仅限于,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强的ISA(EISA)总线、视频电子产品标准协会(VESA)本地总线,以及外围组件互连(PCI)总线,也就是通常所说的附加板总线。
计算机200通常包括各种计算机可读的媒体。这样的媒体可以是计算机200可进行本地和/或远程访问的任何可用的媒体,并包括易失性和非易失性媒体、可移动和非可移动媒体。
在图2中,系统存储器204包括易失性形式的计算机可读的媒体,如随机存取存储器(RAM)210,和/或非易失性存储器,如只读存储器(ROM)208。ROM208中存储了基本输入/输出系统(BIOS)212,里面包含帮助在计算机200内的各个元件之间如在启动过程中传输信息的基本例程。RAM210通常包含处理单元202立即可访问和/或目前正在对其进行操作的数据和/或程序模块。
计算机200还可以进一步包括其他可移动/非可移动的、易失性/非易失性计算机存储媒体。只作为示例,图2说明了硬盘驱动器228,未显示,通常叫做“硬盘”,用于从非可移动、非易失性磁性媒体读取和向其中写入,磁盘驱动器230,例如,“软盘”,用于从可移动、非易失性磁盘232读取和向其中写入,光盘驱动器234,如CD-ROM、DVD-ROM或其他光学媒体,用于从可移动、非易失性光盘236读取或向其中写入。硬盘驱动器228、磁盘驱动器230和光盘驱动器234都由一个或多个接口226连接到总线206。
驱动器以及与它们关联的计算机可读的媒体为计算机200非易失性地存储计算机可读的指令、数据结构、程序模块和其他数据。虽然此处描述的示范环境使用了硬盘228、可移动磁盘232和可移动光盘236,但是那些精通本技术的人应该理解,可以存储计算机可访问的数据的其他类型的计算机可读的媒体,如磁带、闪存卡、数字视盘、随机存取存储器(RAM)、只读存储器(ROM)等等,也可以在示范操作环境中使用。
许多程序模块可以存储在硬盘228、磁盘232、光盘236、ROM208或RAM210上,包括,作为示例,而不仅限于,操作系统214、一个或多个应用程序216,例如,多媒体应用程序224,其他程序模块218,以及程序数据220。用户可以通过诸如键盘238和指针设备240(如“鼠标”)之类的输入设备将命令和信息输入到计算机200中。其他输入设备可以包括音频/视频输入设备253、麦克风、游戏杆、游戏板、碟形卫星天线、串行端口、扫描仪等等(未显示)。这些和其他输入设备通过连接到总线206的输入接口处理单元,但也可以通过其他接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。
监视器256或其他类型的显示设备也通过诸如视频适配器或视频/图形卡244之类的接口连接到总线206。除了监视器外,个人计算机还包括其他外围输出设备(未显示),如扬声器和打印机,它们可以通过输出外围接口246进行连接。
计算机200可以使用与一台或多台远程计算机,如远程计算机250的逻辑连接在一个网络环境中运行。远程计算机250可以包括此处涉及计算机时所描述的许多或全部元件和功能。
如图2所示,计算系统200通过局域网(LAN)251一般广域网(WAN)252与诸如远程计算机250之类的远程设备连接。这样的网络环境在办公室、企业计算机网络、Intranet以及因特网中是常见的。
当计算机200在一个LAN网络环境中使用时,它通过适当的网络接口或适配器248连接到LAN251。当计算机200在一个WAN网络环境中使用时,它通常包括一个调制解调器254或其他用于在WAN252上建立通信的装置。调制解调器254可以是内置的,也可以是外置的,可以通过用户输入接口242或其他相应的机制连接到系统总线206。
在网络环境中,涉及个人计算机200时所描述的程序模块,或者它的一部分,可以存储在远程存储设备中。作为示例,而不仅限于,图2说明了驻留在远程计算机250的存储设备上的远程应用程序216。可以理解,显示和描述的网络连接是示范性的,也可以使用在计算机之间建立通信链接的其他装置。
概述
在下文所述的实施例中,可以将计划由视频卡使用的数据加密以便数据被提供到视频卡和计算机系统之间的总线(例如PCI或AGP总线)时随时将数据加密。这是有利的,因为捕获到总线的窥探设备或流氓应用程序无法访问未加密形式的数据。如此,当数据从视频卡上的视频存储器移到系统的存储器,例如,当它被映射到系统的物理存储器时,以及进行相反操作时,数据处于加密形式并因此受到保护。
当加密数据从系统的存储器传输到视频卡以便让图形处理单元(GPU)处理时,可以将其解密并放入视频卡上的受保护的存储器中。如此,GPU可以对未加密的数据执行操作—执行GPU最适合执行的操作。
在下文所述的实施例中,描述了两种具体的情况:每当数据在视频卡和计算机系统之间的总线上传输时就通过加密来保护数据。可以理解,具体描述的实施例只是示例,在不偏离权利要求中的主题的精神和范围的情况下,也可以对具体的实施例作出修改。
图3是描述根据一个实施例的方法中的步骤的流程图。该方法可以以任何适当的硬件、软件、固件或它们的组合来实现。在此特定的示例中,该方法描述了当数据从视频卡移到系统或系统存储器时执行的示范处理步骤。
步骤300在视频卡上提供未加密的数据。此数据是通常由视频卡的GPU处理的数据并在视频卡的存储器中提供。步骤302将视频卡上的未加密的数据加密。此步骤可以为响应将数据传输到系统的存储器的请求来实现。例如,CPU可以发出一个将数据从视频卡移到系统的存储器的指令。或者,GPU可以确定它不再需要数据,因此启动向系统的存储器传输数据的操作。可以使用任何适当的加密技术将视频卡上的数据加密。然后,步骤304通过视频卡和系统之间的总线发送加密数据。示范总线可以是PCI总线和AGP总线。步骤306将加密数据提供到系统存储器。
在上文描述的过程中,从视频卡移到系统的存储器的数据经过加密,从而试图捕获总线以及窃取或复制数据的任何窥探设备或流氓应用程序将只能接收到加密的数据,而该数据对窥探设备或流氓应用程序来说,将在数学上是无法解密的。
图4是描述根据一个实施例的方法中的步骤的流程图。该方法可以以任何适当的硬件、软件、固件或它们的组合来实现。在此特定的示例中,该方法描述了当数据从系统或系统存储器移到视频卡时执行的示范处理步骤。
步骤400在系统存储器中提供数据。这样的数据通常是由视频卡利用以便进行处理的数据。该数据可以在系统存储器中作为经过加密的或者未加密的数据提供。步骤402可以将数据加密(如果它在系统存储器中是未加密的),并可以将数据发送到系统存储器和视频卡之间的总线。此步骤可以为响应处理视频卡上的数据的请求来实现。步骤404接收视频卡上的加密数据。然后,步骤406将视频卡上的加密数据解密,步骤408将解密数据提供到视频存储器,以便由GPU进行处理。
在上文描述的过程中,从系统的存储器移到视频卡的数据经过加密,从而试图捕获总线以及窃取或复制数据的任何窥探设备或流氓应用程序将只能接收到加密的数据,而该数据对窥探设备或流氓应用程序来说,将在数学上是无法解密的。
第一个示范性视频卡实施例
图5显示了根据一个实施例的示范视频卡或图形卡500。卡500包括插入到典型的计算机上的端口的总线连接器502。视频卡500还包括监视器连接器504,例如15针插头,该连接器通过电缆连接到监视器。视频卡500可以包括,但不一定包括数字视频输出插座506,例如DVI,可以用于将视频图像发送到数字显示器等等。
与图1的视频卡类似,视频卡500包括图形处理单元(GPU)508、视频存储器510、随机存取存储器数字到模拟转换器(RAMDAC)512、可以包括在视频BIOS514的驱动程序软件。
GPU508是专用图形处理芯片,用于控制分辨率、颜色深度,以及与在监视器屏幕上呈现图像相关的所有元素等各个方面。存储器控制器,有时集成到GPU中,对视频卡上的存储器进行管理。计算机的中央处理单元或CPU(未显示)发送一组图形指令和数据,它们由图形卡的专用驱动程序进行解释并由卡的GPU508执行。GPU508执行诸如位图传输和绘制、窗口大小和位置调整、线条绘制、字体缩放和多边形绘制之类的操作。然后GPU可以将帧数据写入帧缓冲器,或板载视频存储器510。
视频存储器帧缓冲器中的信息是出现在屏幕上的作为数字位图存储的图像。如上文所述,利用RAMDAC512将数字位图转换为可以在监视器上呈现的形式。
除了这些组件之外,在此实施例中,视频卡500还包括存储器控制器516和密钥管理器518。视频卡还可以包括解密器520。这些组件可以以任何适当的硬件、软件、固件或它们的组合来实现。
存储器控制器516接收视频卡上的加密数据并将数据解密到视频存储器510的受保护区域或部分。解密数据现在处于可以被GPU508操作的状态。存储器控制器还可以负责确保在视频卡上的受保护区域之间或具有兼容的保护级别的区域之间进行数据传输。即,在处理视频卡上的数据期间GPU508将多次对视频存储器中的数据进行操作,例如,通过执行混合操作,并导致结果数据被写入到不同的视频存储器位置。在此情况下,可能有不受保护的或以不同的级别保护的视频存储器的区域。在这种情况下,存储器控制器可以确保在视频卡内进行数据传输,以便确保保护未加密的数据。下面将更详细地描述这是如何进行的示例。
密钥管理器518可以控制用于将视频卡上的数据加密和解密的加密与解密密钥。在一个实施例中,密钥管理器518包括单独的芯片。密钥管理器518与存储器控制器链接,并可以用各种加密/解密密钥对存储器控制器进行编程。优选情况下,密钥管理器518和存储器控制器516之间的通信通过加密的经过身份验证的通信信道进行,从而可以确保密钥管理器是可以对存储器控制器进行编程的唯一实体。
视频卡500还可以包括被配置为或可配置为将数据解密的解密器520。例如,在某些情况下,视频卡上未加密的数据可以被写入到不受保护的存储器区域。例如,这样的数据可以被写入所谓的“主表面”或桌面表面,该表面包含被RAMDAC512用来在监视器上呈现图像的数据。在这种情况下,保护未加密的数据以使它不受到攻击是理想的。相应地,当数据从受保护的存储器区域移到未保护存储器区域时,存储器控制器516可以将数据加密。在此示例中,密钥管理器518跟踪并知道哪些密钥与未保护的存储器区域中的加密数据关联。当加密数据将被提供到RAMDAC512时,密钥管理器便可以指示解密器520使用哪一个密钥或哪些密钥来将加密数据解密。然后,加密数据被提供到解密器520,进行解密,然后提供到RAMDAC512以便进一步进行处理。
或者,可以省去解密器,RAMDAC512可以被配置为执行解密功能。在这种情况下,密钥管理器518可以指示RAMDAC使用哪些密钥来进行解密。
图6中的600更详细地显示了根据一个实施例的视频卡500(图5)的选定的组件。那里,存储器控制器516包括解密模块602,该模块被配置为从总线(在此示例PCI或AGP)接收加密数据并将数据解密到视频存储器510中。此外,提供了存储器保护表604和等效的决策表606。
在此示例中,存储器保护表604包括表部分604a,该部分包含将加密/解密密钥对与视频存储器510的单个部分关联的条目。例如,加密/解密密钥对E1/D1与存储器部分608关联,加密/解密密钥对E2/D2与存储器部分610关联。当视频存储器中的解密数据将被从视频卡写入到系统存储器时,或当视频卡上的数据将通过总线(例如PCI或AGP总线)提供的任何其他时间,CPU可以使数据用表部分604a中的加密密钥中的一个进行加密。然后,加密数据可以放到总线并提供到系统存储器中。当存储器控制器516从系统存储器接收已经用密钥E1加密的加密数据,解密模块602可以定位关联的解密密钥D1并将数据解密到存储器部分608。
视频存储器510可以有许多受保护部分。在本示例中,有四个受保护部分,以608-614表示。这些受保护部分中的未加密的数据可以由GPU508(图5)以通常的方式进行处理。视频存储器的受保护部分可以被访问控制列表保护。例如,存储器保护表604包括可以为视频存储器的各个部分定义访问控制列表的表部分604b。视频存储器的每个部分可以在其关联的访问控制列表中定义哪些实体可以访问存储器部分。如此,访问控制列表的每个存储器部分中包含那些实体之外的实体的任何访问企图都将被存储器控制器拒绝。
还要注意,视频存储器510可以包括不受保护的部分。在此示例中,部分616-624不受保护。相应地,没有与这些存储器部分关联的加密/解密密钥对。
图7是描述根据一个实施例的方法中的步骤的流程图。该方法可以以任何适当的硬件、软件、固件或它们的组合来实现。在说明的示例中,该方法至少可以部分地用诸如结合图6描述的系统之类的系统来实现。
步骤700提供一个或多个密钥对。每个密钥对包括加密密钥和关联的解密密钥。步骤702将密钥对与视频存储器的单个部分关联。可以利用任何适当的方式将密钥对与视频存储器部分关联。在图6的示例中,使用了具有多个不同条目的存储器保护表。单个表条目对应于特定的密钥对,并且每个表条目与视频存储器的部分关联。
步骤704使用密钥对的加密密钥将未加密的数据加密。例如,如果视频存储器中的未加密的数据将被写入系统存储器,CPU可以使该数据用加密密钥进行加密,该加密密钥与数据所在的视频存储器部分关联。然后,步骤706通过总线将加密数据发送到系统存储器。
跟随在步骤702之后的步骤708使用密钥对的解密密钥将加密数据解密。例如,假设数据用加密密钥进行加密,然后提供到系统的存储器。如果GPU需要加密数据,则数据可以由CPU发送到视频卡。在接收到加密数据之后,存储器控制器可以定位与用于将数据加密的加密密钥关联的解密密钥,并使用该解密密钥将数据解密。然后,步骤710可以将数据提供到与解密密钥关联的视频存储器部分。如此,每当数据通过一个或多个系统总线提供时,都会受到保护。
提供了等效的决策表606(图6)并由存储器控制器516用来确保在存储器510的视频卡内进行数据传输并且使数据得到保护。
作为示例,请看图8。GPU处理视频卡上的数据时,它将数据从一个存储器位置移到另一个位置。例如,当GPU执行混合操作时,它可以获取视频卡上两个不同存储器部分的数据,将数据混合,然后将结果混合数据写入到视频存储器的所有不同部分。这由GPU操作800以图形方式表示。这里假设GPU执行的操作具有两个输入和一个输出。每一个输入对应于存储在视频存储器的受保护部分的数据。在此示例中,一个输入存储在视频存储器的与加密密钥E1关联的受保护部分,另外一个输入存储在视频存储器的与加密密钥E2关联的受保护部分(因此是E1和E2输入)。一旦执行了操作,结果输出数据将被存储在视频存储器的与加密密钥E4关联的受保护部分。现在,GPU无论在哪里执行诸如此类的存储器传输,存储器控制器516都可以确保知道数据来自哪里以及该数据将存储在哪里。然后,存储器控制器将检查以确保视频存储器的将要存储输出数据的部分在给数据提供的保护级别方面与发出成分数据的存储器部分提供的保护级别是一致的。
在此示例中,保护一致性可以通过确定包含输入数据的存储器部分关联的密钥是否等效于与将要保存输出数据的存储器部分关联的密钥或与之相同来实施。在此示例中,可以基于与存储器部分关联的限制来确定是否等效—即—在不同的存储器部分之间是否有相同的保护级别?如果两个不同的程序具有两个不同的内容,则密钥可能不等效。例如,假设每个内容是用不同的密钥加密的,并且与密钥关联的程序无法共享内容。在此示例中,加密密钥不等效。
确定与各个存储器部分关联的密钥是否等效的一种方法是使用诸如表606之类的等效的决策表。那里,该表定义了包含每一密钥的条目的矩阵。一个矩阵单元格中的“X”表示密钥是等效的。例如,首先请看密钥E1,此密钥等效于密钥E1、E2和E4。如此,如图6所示,数据可以在存储器部分608、610和614之间自由地传输。然而,密钥E1不等效于密钥E3。如此,无法将数据从存储器部分608传输到存储器部分612。在图8的示例中,由于输入数据来自存储器部分608和610,结果数据将存储在存储器部分614,等效不是一个问题,因此可以进行操作。
图9是描述根据一个实施例的方法中的步骤的流程图。该方法可以以任何适当的硬件、软件、固件或它们的组合来实现。在说明的示例中,该方法至少可以部分地用诸如结合图6描述的系统之类的系统来实现。
步骤900从视频卡上的视频存储器部分读取数据。此步骤可以由GPU实现。步骤902记录与从中读取数据的视频存储器部分关联的密钥对。此步骤可以由存储器控制器实现。步骤904确定记录的密钥对是否等效于与充当由于GPU的操作产生的输出数据的目标的视频存储器部分关联的密钥对。如果密钥对等效,则步骤906将输出数据提供到视频存储器目标部分。另一方面,如果密钥对不等效,则步骤908查找具有等效密钥对的视频存储器目标部分,或者步骤910可能将空白数据输出到指定的存储器目标。
第二个示范性视频卡实施例
图10显示了根据另一个实施例的示范视频卡或图形卡1000。这里,图的一部分被称为“视频卡”,图的另一部分被称为“系统”。这样的表示分别用于指定视频卡和系统上的那些组件。图的“系统”一侧包括CPU1002和系统存储器1004。还要注意,在系统存储器1004内有计划在视频卡1000上使用的数据1006。
在此实施例中,驻留在系统存储器1004中的数据1006是未加密的。CPU1002被配置为每当数据通过总线发送到视频卡时将数据加密。这样的操作通常是由被称为“加密存储器传输”的CPU操作完成的。如此,现在加密数据将被放入视频存储器510的未保护部分624。在此示例中,数据可以由CPU用加密密钥E1进行加密。
回想一下,GPU508被配置为处理未加密的数据。相应地,当GPU508需要处理视频存储器510的未保护部分的加密数据时,数据应该被解密。在此实施例中,GPU508包含解密功能,该功能在图中由解密模块602表示。密钥管理器518与GPU508链接,并可以用适当的解密密钥对GPU进行编程。当然,密钥管理器和GPU之间的通信可以通过经过身份验证的链接进行。
相应地,当GPU希望对视频存储器中的加密数据1006进行操作时,它可以访问加密数据,并将它解密到视频存储器的受保护部分—这里是受保护部分614。解密可以通过被称为“解密存储器传输”的操作来进行。现在,此数据和其他数据位于视频存储器的受保护部分,GPU可以自由地以通常的方式对其进行操作。
在此实施例中,存储器控制器516可以通过访问控制列表(未明确显示)控制对视频存储器的受保护部分的访问,从而对存储器实施保护。如此,每当诸如GPU508(或它的组成部分)之类的实体希望访问受保护的视频存储器部分时,它都可以通过存储器控制器516获得访问。访问控制列表可以描述数据具有什么类型的保护以及哪些实体可以访问它。例如,访问控制列表可以定义GPU的哪些部分可以访问受保护的存储器以及“拥有”受保护的存储器并因此具有访问权的一个或多个应用程序。
现在,当视频存储器的受保护部分中的数据被移到视频存储器的未保护部分时,可以将它加密。例如,假设存储器部分614中的数据将被移到未保护存储器部分620,在此示例中,该部分对应于将被RAMDAC处理以便呈现的桌面表面。GPU508可以通过存储器控制器516访问受保护的存储器部分,并执行加密存储器传输操作以将数据加密到存储器部分620。当加密数据将被提供到RAMDAC以便进行处理时,密钥管理器518可以与解密器520进行通信,并给解密器提供适当的解密密钥,以便将存储器部分620中的加密数据解密。在将数据解密之后,解密器520可以将数据提供到RAMDAC以便以通常的方式进行处理。
还要注意,存储器控制器516还包括等效的决策表(未明确指定)。此表在概念上类似于结合图6和8讨论的表。然而,这里该表用于确保当数据将要在视频存储器510的每一个存储器部分之间传输时,与视频存储器510的每一个存储器部分关联的访问控制列表都是等效的。例如,假设存储器部分614中的数据将被传输到存储器部分620。相应地,在此示例中,存储器控制器516将检查以确保与存储器部分614关联的访问控制列表等效于与存储器部分620关联的访问控制列表。如果如此,便可以执行数据传输。
结束语
上文描述的各个实施例可以确保可以将计划由视频卡使用的数据加密以便数据被提供到视频卡和计算机系统之间的总线(例如PCI或AGP总线)时随时将数据加密。如此,捕获到总线的窥探设备或流氓应用程序无法访问未加密形式的数据,因此也无法窃取这些这些数据。相应地,可以为将要被系统的视频卡处理的内容提供另一个保护级别。
虽然本发明是以结构功能和/或方法步骤所特有的语言描述的,可以理解,在所附的权利要求书中定义的本发明不一定仅限于描述的特定功能或步骤。特定功能和步骤可以作为实现权利要求所述的发明的优选的形式来描述。