使用密码保护保密内容的方法和系统转让专利

申请号 : CN02802594.6

文献号 : CN100595736C

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 鲍尔·英格兰马库斯·佩纳多尼古拉斯·P·维尔特

申请人 : 微软公司

摘要 :

提供一种和计算设备的图形子系统一起加密保护保密内容的方法和系统。实现对视频存储器的内容加密的各种技术,以致未经授权的软件不能实现对所述内容的有意义访问,从而维持保密性。此外,提供一种篡改检测机制,以致当按照某一方式改变数据时,能够知晓,从而保持完整性。在各个实施例中,覆盖面和/或命令缓冲器的内容被加密,和/或GPU能够处理加密内容,同时防止非受托方、设备或软件得到所述加密内容。

权利要求 :

1、一种结合计算设备的受托图形系统来处理或再现保密内容的方 法,所述受托图形系统具有视频存储器,至少一个图形处理器GPU和与 所述至少一个GPU通信耦接的加密处理装置,所述方法包括:应用程序和设备之一请求图形系统执行保密内容的处理和再现之 一,其中所述请求包括所述应用程序和设备之一把话路密钥传送给图形 系统,并把所述保密内容传送给视频存储器的至少一个覆盖面;

由与所述加密处理装置通信的所述至少一个GPU对视频存储器的 所述至少一个覆盖面的内容解密;

所述至少一个GPU执行关于所述解密内容的处理和再现之一;和

从至少一个GPU输出所述内容。

2、按照权利要求1所述的方法,其中如果所述输出的输出不同于针 对由所述至少一个GPU对所述保密内容执行的任意处理所调整的所述 请求的保密内容,则向所述应用程序和设备之一警告所述差异。

3、按照权利要求1所述的方法,其中所述至少一个覆盖面重叠所述 视频存储器的至少一个主面。

4、按照权利要求1所述的方法,其中对视频存储器的所述至少一个 覆盖面的内容解密包括对主面的几何部分解密,从而除几何部分之外的 象素不被解密。

5、按照权利要求1所述的方法,其中通过下述之一:(A)把加密 处理器添加到现有芯片上和(B)以独立芯片的形式把加密处理器添加到 图形卡上,来把加密处理器永久安装在图形卡上,从而加密处理器和图形卡剩余部分之间的物理连接不可接触,不被 暴露。

6、按照权利要求3所述的方法,其中所述解密包括由与所述加密处 理装置通信耦接的所述GPU的解密机构对所述至少一个覆盖面解密。

7、按照权利要求3所述的方法,其中所述解密包括下述之一:(A) 当按照所述输出,输出内容时,由图形系统的数-模转换DAC硬件动态 对所述至少一个覆盖面解密,和(B)刚好在内容到达图形系统的DAC 硬件之前,动态对所述至少一个覆盖面解密。

8、按照权利要求3所述的方法,其中所述解密包括由不具有相对于 主系统的反向通道的组件,在内容到达图形系统的DAC硬件之前,对所 述至少一个覆盖面解密。

9、按照权利要求1所述的方法,还包括:

在所述输出之前,与所述加密处理装置通信的所述至少一个GPU重 新加密所述内容;和外部计算设备的至少一个第二加密处理装置对所述重新加密内容进 行解密。

10、按照权利要求1所述的方法,其中内容以数字形式被传送给具 有第二加密处理装置的外部设备,并且在所述外部设备上进行所述解密。

11、按照权利要求9所述的方法,其中所述外部计算设备是(A)监 视器,(B)机顶盒和(C)数字信号处理DSP再现设备之一。

12、按照权利要求3所述的方法,其中所述传送包括把所述保密内 容传送给下述之一:(A)用于保密内容的基本再现的第一加密保密覆盖 图,(B)特别用于呈现敏感用户界面的第二加密受保护覆盖图,(C) 用于保密内容的基本再现的主面的第一加密区,(D)主面的特别用于呈 现敏感用户界面的第二加密区。

13、按照权利要求1所述的方法,其中所述解密包括计算解密数据 的加密摘要,所述方法还包括:把所述加密摘要传送给应用程序和设备之一,以便确保显示的象素 是与应用程序和设备之一发出的所述请求相关而发送的象素。

14、按照权利要求12所述的方法,其中第二加密受保护覆盖图总是 在前面,并且不可遮蔽,其中第二加密受保护覆盖图的内容由所述至少 一个GPU核实。

15、按照权利要求12所述的方法,其中所述解密包括下述之一:(A) 利用第一流密码解密组件对第一加密保密覆盖图的内容解密,(B)利用 第二流密码解密组件对第二加密受保护覆盖图的内容解密,(C)利用第 一流密码解密组件对主面的第一加密区的内容解密,和(D)利用第二流 密码解密组件对主面的第二加密区的内容解密。

16、按照权利要求15所述的方法,其中主面中每个象素的至少一位 被用于确定该象素的虚拟受保护面中的成员关系,其中图形卡根据所述 至少一位,选择该象素的恰当解密密钥。

17、按照权利要求16所述的方法,其中如果所述至少一位包含零值, 则与所述至少一位相关的虚拟受保护面被认为是不要解密的区域。

18、按照权利要求15所述的方法,还包括一旦解密的象素值可用, 则所述至少一个GPU的象素选择组件选择(A)第二加密受保护覆盖图, (B)第一加密保密覆盖图和(3)主面之一的象素值。

19、按照权利要求12所述的方法,其中所述请求至少包括下述之一: (A)所述至少一个覆盖面的源和目的地边界框,(B)所述至少一个覆 盖面的目的地颜色密钥,(C)就第一加密保密覆盖图来说,数据将被翻 转给其的覆盖图后向缓冲器的内容的加密密钥索引的说明,(D)就第二 加密受保护覆盖图来说,将写入加密覆盖图内容的循环冗余码CRC,完 整性量度和摘要值至少之一的存储器位置的说明,(E)至少一个加密主 面的源和目的地边界框,和(F)所述至少一个加密主面的目的地颜色密 钥。

20、按照权利要求19所述的方法,其中如果所述应用程序和设备之 一关心内容的完整性,则所述应用程序和设备之一至少计算CRC、完整 性量度和摘要值之一。

21、按照权利要求1所述的方法,其中伴随所述请求而发送给至少 一个GUP的视频解码装置的至少一个命令缓冲器被至少所述应用程序 和设备之一加密,并被与所述加密处理装置通信的所述视频解码装置解 密。

22、按照权利要求21所述的方法,还包括通过下述之一:(A)利 用两种途径在至少一个命令缓冲器的消耗之前,和(B)在已消耗命令缓 冲器之后,对所述至少一个命令缓冲器进行篡改检测。

23、执行按照权利要求1所述的方法的操作系统、其上保存若干计 算机可执行指令的计算机可读介质、协处理设备、计算设备和传送计算 机可执行指令的调制数据信号至少之一。

24、一种结合计算设备的受托图形系统来处理或再现保密内容的方 法,所述受托图形系统具有视频存储器,至少一个图形处理器GPU和与 所述至少一个GPU通信耦接的加密处理装置,所述方法包括:应用程序和设备之一请求图形系统执行保密内容的处理和再现之 一,其中所述请求包括所述应用程序和设备之一把话路密钥传送给图形 系统,以便由加密处理装置核实,并把所述保密内容传送给视频存储器 的至少一个覆盖面;

所述至少一个GPU的输入装置的解密机构对视频存储器的所述至 少一个覆盖面的内容解密,其中所述解密机构与所述加密处理装置通信;

所述至少一个GPU执行关于所述解密内容的所述处理和再现之一;

利用至少一个GPU的输出装置的加密/解密机构对所述内容加密; 和

从至少一个GPU输出所述加密内容。

25、按照权利要求24所述的方法,其中所述输入装置是纹理映射装 置,所述输出装置是字母混合装置,其中所述视频存储器的所述至少一 个覆盖面是加密纹理面。

26、按照权利要求24所述的方法,其中所述保密内容是纹理数据, 明文和视频宏数据块之一。

27、按照权利要求24所述的方法,其中所述加密和解密分别包括利 用块密码的加密和解密。

28、按照权利要求25所述的方法,其中纹理映射装置的所述解密机 构在超高速缓冲存储器行填充状态下加密,其中字母混合装置的加密/解 密机构在写入前加密。

29、按照权利要求25所述的方法,还包括当从视频存储器中的颜色 缓冲器读取超高速缓冲存储器行时,由字母混合装置的加密/解密机构解 密。

30、按照权利要求24所述的方法,还包括:

把所述加密输出内容从所述视频存储器的加密后方主面翻转到所述 视频存储器的加密前方主面;

与所述加密处理装置通信的所述至少一个GPU的第二解密机构对 所述加密输出内容进行第二次解密;和第二次输出所述输出内容。

31、按照权利要求24所述的方法,其中所述输出包括把加密内容输 出给保密覆盖图翻转链,所述方法还包括:把所述加密输出内容从加密后方保密面翻转到加密前方保密面,从 而所述加密/解密机构进行的所述加密包括利用流密码加密法进行的加 密;和与所述加密处理装置通信的所述至少一个GPU的流密码解密机构 对所述加密输出内容进行第二次解密。

32、按照权利要求31所述的方法,还包括:

在所述加密之前,对内容中的位置编码;和

在所述第二次解密之后,对内容中的位置解码,

从而从外部不能获得所述位置,保持明文-加密文本映射的完整性。

33、按照权利要求24所述的方法,其中如果所述输出的输出不同于 针对由所述至少一个GPU对所述保密内容执行的任意处理所调整的所 述请求的保密内容,则向所述应用程序和设备之一警告所述差异。

34、按照权利要求24所述的方法,还包括:

在所述输出之前,与所述加密处理装置通信的所述至少一个GPU重 新对所述内容加密;和外部计算设备的至少一个第二加密处理装置对所述重新加密内容解 密。

35、按照权利要求34所述的方法,其中所述外部计算设备是(A) 监视器,(B)机顶盒和(C)数字信号处理器DSP再现设备之一。

36、按照权利要求24所述的方法,其中利用块密码对由所述应用程 序和设备之一传送的加密纹理和加密离屏面编码,所述应用程序和设备 之一利用预定混合格式和压缩平面格式混合块密码,所述预定混合格式 把内容中的(x,y)位置转换成YUV、RGB、YUY2至少之一的偏移。

37、按照权利要求24所述的方法,其中伴随所述请求而发送给至少 一个GUP的视频解码装置的至少一个命令缓冲器被至少所述应用程序 和设备之一加密,并被与所述加密处理装置通信的所述视频解码装置解 密。

38、按照权利要求24所述的方法,还包括通过下述之一:(A)利 用两种途径在至少一个命令缓冲器的消耗之前,和(B)在已消耗命令缓 冲器之后,对所述至少一个命令缓冲器进行篡改检测。

39、执行按照权利要求24所述的方法的操作系统、其上保存若干计 算机可执行指令的计算机可读介质、协处理设备、计算设备和传送计算 机可执行指令的调制数据信号至少之一。

40、携带至少一种计算机可读介质的计算机可执行模块的计算机可 执行指令的操作系统、协处理设备、计算设备和调制数据信号至少之一, 包括含有用于结合计算设备的受托图形系统来处理或再现保密内容的计 算机可执行指令的计算机可执行模块,所述受托图形系统具有视频存储 器,至少一个图形处理器GPU和与所述至少一个GPU通信耦接的加密 处理装置,所述方法包括:由应用程序和设备之一请求图形系统执行保密内容的处理和再现之 一的装置,其中所述请求装置包括所述应用程序和设备之一把话路密钥 传送给图形系统的装置以及把所述保密内容传送给视频存储器的至少一 个覆盖面的装置;

由与所述加密处理装置通信的所述至少一个GPU对视频存储器的 所述至少一个覆盖面的内容解密的装置;

所述至少一个GPU执行关于所述解密内容的处理和再现之一的装 置;

从至少一个GPU输出所述加密内容的装置。

41、携带至少一种计算机可读介质的计算机可执行模块的计算机可 执行指令的操作系统、协处理设备、计算设备和调制数据信号至少之一, 包括含有用于结合计算设备的受托图形系统来处理或再现保密内容的计 算机可执行指令的计算机可执行模块,所述受托图形系统具有视频存储 器,至少一个图形处理器GPU和与所述至少一个GPU通信耦接的加密 处理装置,所述方法包括:由应用程序和设备之一请求图形系统执行保密内容的处理和再现之 一的装置,其中所述请求的装置包括所述应用程序和设备之一把话路密 钥传送给图形系统以便由加密处理装置核实的装置,以及把所述保密内 容传送给视频存储器的至少一个覆盖面的装置;

所述至少一个GPU的输入装置的解密机构对视频存储器的所述至 少一个覆盖面的内容解密的装置,其中所述解密机构与所述加密处理装 置通信;

所述至少一个GPU执行关于所述解密内容的所述处理和再现之一 的装置;

利用至少一个GPU的输出装置的加密/解密机构对所述内容加密的 装置;和从至少一个GPU输出所述加密内容的装置。

42、一种计算设备,所述计算设备包括结合计算设备的受托图形系 统来处理或再现保密内容的装置,所述受托图形系统具有视频存储器, 至少一个图形处理器GPU和与所述至少一个GPU通信耦接的加密处理 装置,所述计算设备包括:由应用程序和设备之一请求图形系统执行保密内容的处理和再现之 一的装置,其中所述请求装置包括由所述应用程序和设备之一把话路密 钥传送给图形系统的装置,和把所述保密内容传送给视频存储器的至少 一个覆盖面的装置;

由与所述加密处理装置通信的所述至少一个GPU对视频存储器的 所述至少一个覆盖面的内容解密的装置;

由所述至少一个GPU执行关于所述解密内容的所述处理和再现之 一的装置;和从至少一个GPU输出所述内容的装置。

43、按照权利要求42所述的计算设备,其中如果所述输出装置的输 出不同于针对由所述至少一个GPU对所述保密内容执行的任意处理所 调整的所述请求装置的保密内容,则向所述应用程序和设备之一警告所 述差异。

44、按照权利要求42所述的计算设备,其中所述覆盖面重叠所述视 频存储器的至少一个主面。

45、按照权利要求42所述的计算设备,其中对视频存储器的所述至 少一个覆盖面的内容解密的所述装置包括对主面的几何部分解密的装 置,从而除几何部分之外的象素不被解密。

46、按照权利要求42所述的计算设备,其中通过下述之一:(A) 把加密处理器添加到现有芯片上和(B)以独立芯片的形式把加密处理器 添加到图形卡上,来把加密处理器永久安装在图形卡上,从而加密处理器和图形卡剩余部分之间的物理连接不可接触,并且 不被暴露。

47、按照权利要求44所述的计算设备,其中所述解密装置包括由与 所述加密处理装置通信耦接的所述GPU的解密机构对所述至少一个覆 盖面解密的装置。

48、按照权利要求44所述的计算设备,其中所述解密装置包括下述 之一:(A)当按照所述输出装置的所述输出,输出内容时,由图形系统 的数-模转换DAC硬件动态对所述至少一个覆盖面解密的装置,和(B) 刚好在内容到达图形系统的DAC硬件之前,动态对所述至少一个覆盖面 解密的装置。

49、按照权利要求44所述的计算设备,其中所述解密装置包括由不 具有相对于主系统的反向通道的组件,在内容到达图形系统的DAC硬件 之前,对所述至少一个覆盖面解密的装置。

50、按照权利要求42所述的计算设备,还包括:

在所述输出装置的所述输出之前,与所述加密处理装置通信的所述 至少一个GPU对所述内容重新加密的装置;和外部计算设备的至少一个第二加密处理装置对所述重新加密内容进 行解密的装置。

51、按照权利要求42所述的计算设备,其中内容以数字形式被传送 给具有第二加密处理装置的外部设备,并且在所述外部设备上进行所述 解密装置的所述解密。

52、按照权利要求50所述的计算设备,其中所述外部计算设备是(A) 监视器,(B)机顶盒和(C)数字信号处理DSP再现设备之一。

53、按照权利要求44所述的计算设备,其中所述传送装置包括把所 述保密内容传送给下述之一的装置:(A)用于保密内容的基本再现的第 一加密保密覆盖图,(B)特别用于呈现敏感用户界面的第二加密受保护 覆盖图,(C)用于保密内容的基本再现的主面的第一加密区,(D)主 面的特别用于呈现敏感用户界面的第二加密区。

54、按照权利要求42所述的计算设备,其中所述解密装置包括计算 解密数据的加密摘要的装置,所述计算设备还包括:把所述加密摘要传送给应用程序和设备之一的装置,以便确保显示 的象素是与借助所述请求装置,由应用程序和设备之一发出的所述请求 相关而发送的象素。

55、按照权利要求53所述的计算设备,其中第二加密受保护覆盖图 总是在前面,并且不可遮蔽,其中第二加密受保护覆盖图的内容由所述 至少一个GPU核实。

56、按照权利要求53所述的计算设备,其中所述解密装置包括下述 之一:(A)利用第一流密码解密组件对第一加密保密覆盖图的内容解密 的装置,(B)利用第二流密码解密组件对第二加密受保护覆盖图的内容 解密的装置,(C)利用第一流密码解密组件对主面的第一加密区的内容 解密的装置,和(D)利用第二流密码解密组件对主面的第二加密区的内 容解密的装置。

57、按照权利要求56所述的计算设备,其中主面中每个象素的至少 一位被用于确定该象素的虚拟受保护面中的成员关系,其中图形卡根据 所述至少一位,选择该象素的恰当解密密钥。

58、按照权利要求57所述的计算设备,其中如果所述至少一位包含 零值,则与所述至少一位相关的虚拟受保护面被认为是不要解密的区域。

59、按照权利要求56所述的计算设备,还包括一旦解密象素值可用, 则由所述至少一个GPU的象素选择组件选择(A)第二加密受保护覆盖 图,(B)第一加密保密覆盖图和(3)主面之一的象素值的装置。

60、按照权利要求53所述的计算设备,其中所述请求装置的所述请 求至少包括下述之一:(A)所述至少一个加密覆盖面的源和目的地边界 框,(B)所述至少一个加密覆盖面的目的地颜色密钥,(C)就第一加 密保密覆盖图来说,数据将被翻转给其的覆盖图后向缓冲器的内容的加 密密钥索引的说明,(D)就第二加密受保护覆盖图来说,将写入加密覆 盖图内容的循环冗余码(CRC),完整性量度和摘要值至少之一的存储 器位置的说明,(E)至少一个加密主面的源和目的地边界框,和(F) 所述至少一个加密主面的目的地颜色密钥。

61、按照权利要求60所述的计算设备,其中如果所述应用程序和设 备之一关心内容的完整性,则所述应用程序和设备之一至少计算CRC、 完整性量度和摘要值之一。

62、按照权利要求42所述的计算设备,其中伴随所述请求装置的所 述请求而发送给至少一个GUP的视频解码装置的至少一个命令缓冲器 被至少所述应用程序和设备之一加密,并被与所述加密处理装置通信的 所述视频解码装置解密。

63、按照权利要求62所述的计算设备,还包括通过下述之一:(A) 利用两种途径在命令缓冲器的消耗之前,和(B)在已消耗命令缓冲器之 后,对所述至少一个命令缓冲器进行篡改检测的装置。

64、一种计算设备,所述计算设备包括计算机可执行模块,所述计 算机可执行模块包括结合计算设备的受托图形系统来处理或再现保密内 容的计算机可执行指令,所述受托图形系统具有视频存储器,至少一个 图形处理器GPU和与所述至少一个GPU通信耦接的加密处理装置,所 述计算设备包括:由应用程序和设备之一请求图形系统执行保密内容的处理和再现之 一的装置,其中所述请求装置包括所述应用程序和设备之一用于把话路 密钥传送给图形系统,以便被加密处理装置核实,并把所述保密内容传 送给视频存储器的至少一个覆盖面的装置;

由所述至少一个GPU的输入装置的解密机构对视频存储器的所述 至少一个覆盖面的内容解密的装置,其中所述解密机构与所述加密处理 装置通信;

由所述至少一个GPU执行关于所述解密内容的所述处理和再现之 一的装置;

利用至少一个GPU的输出装置的加密/解密机构对所述内容加密的 装置;和从至少一个GPU输出所述加密内容的装置。

65、按照权利要求64所述的计算设备,其中所述输入装置是纹理映 射装置,所述输出装置是字母混合装置,其中所述视频存储器的所述至 少一个覆盖面是加密纹理面。

66、按照权利要求64所述的计算设备,其中所述保密内容是纹理数 据,明文和视频宏数据块之一。

67、按照权利要求64所述的计算设备,其中所述加密装置和解密装 置分别包括利用块密码的加密装置和解密装置。

68、按照权利要求65所述的计算设备,其中纹理映射装置的所述解 密机构在超高速缓冲存储器行填充状态下加密,其中字母混合装置的加 密/解密机构在写入前加密。

69、按照权利要求65所述的计算设备,还包括当从视频存储器中的 颜色缓冲器读取超高速缓冲存储器行时,由字母混合装置的加密/解密机 构解密的装置。

70、按照权利要求64所述的计算设备,还包括:

把所述加密输出内容从所述视频存储器的加密后方主面翻转到所述 视频存储器的加密前方主面的装置;

由与所述加密处理装置通信的所述至少一个GPU的第二解密机构 对所述加密输出内容解密的第二装置;和输出所述输出内容的第二装置。

71、按照权利要求64所述的计算设备,其中所述输出装置包括把加 密内容输出给保密覆盖图翻转链的装置,所述计算机可执行模块还包括:把所述加密输出内容从加密后方保密面翻转到加密前方保密面的装 置,从而所述加密/解密机构进行的所述加密包括利用流密码加密法的加 密装置;和由与所述加密处理装置通信的所述至少一个GPU的流密码解密机 构用于对所述加密输出内容解密的第二装置。

72、按照权利要求71所述的计算设备,还包括:

在所述加密装置进行的所述加密之前,对内容中的位置编码的装置; 和

在所述第二解密装置进行的所述解密之后,对内容中的位置解码的 装置,

从而从外部不能获得所述位置,保持明文-加密文本映射的完整性。

73、按照权利要求64所述的计算设备,其中如果所述输出装置的输 出不同于针对由所述至少一个GPU对所述保密内容执行的任意处理所 调整的所述请求装置的保密内容,则向所述应用程序和设备之一警告所 述差异。

74、按照权利要求64所述的计算设备,计算机可执行模块还包括:

在所述输出装置进行的所述输出之前,由与所述加密处理装置通信 的所述至少一个GPU重新对所述内容加密的装置;和外部计算设备的至少一个第二加密处理装置对所述重新加密内容解 密的装置。

75、按照权利要求74所述的计算设备,其中所述外部计算设备是(A) 监视器,(B)机顶盒和(C)数字信号处理器DSP再现设备之一。

76、按照权利要求64所述的计算设备,其中利用块密码对由所述应 用程序和设备之一传送的加密纹理和加密离屏面编码,所述应用程序和 设备之一利用预定混合格式和压缩平面格式混合块密码,所述预定混合 格式把内容中的(x,y)位置转换成YUV、RGB、YUY2至少之一的偏 移。

77、按照权利要求64所述的计算设备,其中伴随所述请求装置的所 述请求而发送给至少一个GUP的视频解码装置的至少一个命令缓冲器 被至少所述应用程序和设备之一加密,并被与所述加密处理装置通信的 所述视频解码装置解密。

78、按照权利要求64所述的计算设备,计算机可执行模块还包括通 过下述之一:(A)利用两种途径在命令缓冲器的消耗之前,和(B)在 已消耗命令缓冲器之后,对所述至少一个命令缓冲器进行篡改检测的装 置。

说明书 :

技术领域

本发明涉及使用密码保护保密内容的方法和系统。更具体地说,本 发明涉及使用密码保护通过图形流水线(graphics pipeline)发送的内容, 既保证内容的机密性,又保证对于内容的篡改保护的技术。

背景技术

现在,因特网和其它许多来源及应用提供一系列大量的用于收听、 观看、处理、存储和以别的方式表示的流式和固定媒体或其它内容。但 是,目前不存在以复制保护的方式捕获、记录或再现(rendering)流式 或固定媒体或者内容,以致当正在处理内容时,或者当正在再现内容时, 盗版者都不能在流水线的某一点接进内容流,并获得内容的副本或者改 变内容的实用方法。对于过去的其它媒体再现和记录设备,例如用于电 视内容的VCR,或者用于音频信号的磁带录音机,已存在这种问题,不 过至少存在一个关键差异。由于事实上可无信号损失地记录数字媒体, 对于版权所有者来说,这会造成他们的作品将被随意分享(被盗版), 而得到不赔偿。对于VCR和磁带录音机来说,设备和传输媒体在记录过 程中会引入噪声或数据的损坏。对于流式或固定数字媒体来说,至少相 对于人耳及人眼能力的极限,为什么不能实现事实上无损的转换和重新 传送是没有任何原因的,并且为什么不能保存并自由分发纯粹的数字数 据也是没有任何原因的。从而,由于在版权所有者收费提供的数字数据 和盗版者免费提供的数字数据之间只存在很小的差异,因此希望防止数 字数据的自由重新分发。此外,对于希望保密的通信,例如电子商务交 易来说,对于参与对话的用户来说,重要的是没有任何未经授权的第三 方暗中参与所述交易。从而,对于来自受托来源的内容来说,目前不存 在在用户的计算机上“安全地”处理或再现数据,而不用防止盗版或者 损坏的实用方法。
特别地,一旦在主计算系统,一个或多个图形处理器(GPU)和再 现设备,例如监视器之间流水线输送内容,则盗版者或者其它未经授权 的第三方有多次机会进入线路或者信号,并且盗用或者破坏信号。此外, 由于消息接发服务和视频会议使用户对话变得更加复杂,为起源于任何 地方的保密内容提供受托流水线变得更加重要。
此外,与在现今的个人计算机(PC)中那样从CPU吸取最多计算 能力相反,显然未来几代的操作系统,计算设备和应用程序会把来自GPU 的更多计算能力用于商业应用。从而,确保通过“受托图形”应用程序 发送给GPU的内容的安全是未来计算设备的基本特征,并且是目前的计 算系统未充分解决的问题。
为受托内容提供安全流水线的问题可被看作存在两个方面:(1)必 须确保在流水线内的某一薄弱环节,不能复制或查看受托内容(机密性), 和(2)必须确保流水线防止未经授权地破坏流水线中的数据(受到保护)。 在系统安全性方面,由于更难以证明系统的安全性,因此复杂性是一个 不利条件。正如机场或其它安全场所的情况一样,系统中存在的入口和 出口越多,则越难确保安全。在这方面,目前不存在借助其可在机密性 和保护能力两方面信任大部分GPU功能和显示驱动器的任意方法。从而, 希望实现和从受托来源接收内容的计算设备相关的受托图形环境,从而 可向设备的用户保证内容不能未经授权就被复制,并且内容不能被第三 方篡改或改变。

发明内容

鉴于上述内容,本发明提供一种和计算设备的图形子系统一起加密 保护保密内容的方法和系统。实现对视频存储器的内容加密的各种技术, 以致未经授权的软件不能实现对所述内容的有意义访问,从而满足保密 性的目标。此外,提供一种篡改检测机制,以致当按照某一方式改变数 据时,能够知晓,从而满足保护能力的目的。在各个实施例中,本发明 说明了如何对覆盖面和/或命令缓冲器的内容加密,和/或说明了如何使 GPU能够处理加密内容,同时防止非受托方、设备或软件得到所述加密 内容。
本发明的方法不同地包括与受托图形系统一起加密保护保密内容的 技术,所述受托图形系统具有视频存储器,图形处理器(GPU)和与GPU 通信耦接的加密处理装置,所述技术包括应用程序或设备请求图形系统 执行保密内容的处理或再现,其中所述请求包括应用程序或设备把话路 密钥(session key)传送给图形系统,并把保密内容传送给视频存储器的 加密部分,由与加密处理装置通信的GPU对视频存储器的加密部分的内 容解密,GPU执行关于解密内容的处理或再现,以及从GPU输出内容。
本发明的类似方法不同地包括应用程序或设备请求图形系统执行保 密内容的处理或再现,其中所述请求包括应用程序或设备把话路密钥传 送给图形系统,以便由加密处理装置核实,把保密内容传送给视频存储 器的加密部分,GPU的输入装置的解密机构对视频存储器的加密部分的 内容解密,其中解密机构与加密处理装置通信,GPU执行关于解密内容 的处理或再现,利用GPU的输出装置的加密/解密机构对内容加密,并 从GPU输出加密内容。
下面说明本发明的其它特征和实施例。

附图说明

参考附图进一步描述根据本发明的加密保护保密内容的方法和系 统,其中:
图1A是表示具有其中可实现本发明的各种计算设备的例证网络环 境的方框图;
图1B是表示其中可实现本发明的例证非限制性计算设备的方框图;
图2是图解说明根据本发明保护的图形流水线的未受保护部分的流 程图;
图3A和3B是图解说明根据本发明的第一层保密性的例证情况的方 框图;
图4A-4C是图解说明根据本发明的第二层保密性的例证情况的方框 图;
图5A-5B图解说明了根据本发明的AYUV/ARGB格式的例证混合 (swizzling);
图6A-6B图解说明根据本发明的YUY2格式的例证混合;
图7A-7B图解说明根据本发明的压缩平面(packed planar)格式的 例证混合;
图8A和8B是图解说明根据本发明的第三层保密性的例证情况的方 框图;
图9A和9B是图解说明根据本发明的可应用于来自图形处理器的输 出的例证加密技术的方框图。

具体实施方式

概述
本发明提供一种扩大来自于受托来源的内容和图形系统之间用于处 理和/或再现内容的操作系统或其它媒介物,以便实现诸如防止篡改的机 密对话之类的“受托图形”应用和防范擅自复制的收费内容的重放的系 统和技术。考虑本发明的一种方式是本发明提供三“级”安全:(1) 重叠面的内容的加密;(2)使GPU或者其它处理装置能够处理加密内 容,而不会使不可信赖方获得所述加密内容;和(3)使命令缓冲器能够 被加密。
如上所述,在系统安全性方面,由于会使得更难以证明系统的安全 性,因此复杂性是一个不利条件。从而,通过认为必须把大部分GPU功 能和显示驱动器看作是不可信赖的,开始本发明。随后本发明应用通过 限制为了满足安全标准,要实现的硬件的范围,从而增大在机密性和保 护能力方面的正确实现的机会的技术。
上面已讨论了根据本发明的一些术语。但是,为了清楚起见,现在 要强调一些术语。术语“机密”指的是防止非受托第三方,例如第三方 设备或软件接触受托内容信息。这种机密性的一个例子包括防止非受托 第三方在沿着图形流水线的任意地方,接触加密收费内容的重放。术语 “受保护”指的是防止非受托第三方,例如第三方设备或软件在未被发 觉的情况下,接触或改变受托内容信息。这种保护能力的一个例子包括 防止非受托第三方接触或改变可能在电子商务交易中产生的保密对话的 显示。
在这方面,本发明考虑重叠窗口,例如位于收费内容视频流上面的 用户界面,以及在电子商务对话中可能呈现的不能隐慝的窗口。
例证的网络环境
本领域的普通技术人员能够认识到,计算机或其它客户机或者服务 器设备可被用作计算机网络的一部分,或者在分布式计算环境中应用。 在这方面,本发明和包括任意数目的存储器或存储单元,以及在任意数 目的存储单元或容量之间产生的任意数目的应用程序和进程的任意计算 机系统有关,所述任意数目的存储器或存储单元以及任意数目的应用程 序和进程会牵涉本发明的受托图形方式。本发明可应用于带有在网络环 境或分布式计算环境中采用的,具有远程或本地存储器的服务器计算机 和客户机计算机的环境。本发明还可应用于具有编程语言功能,产生、 接收和传送与远程或本地服务有关的信息的解释和执行能力的独立计算 设备。
分布式计算设施通过计算设备和系统之间的直接交换,共享计算机 资源和服务。这些资源和服务包括信息的交换,超高速缓存,和文件的 磁盘存储。分布式计算利用网络连通性,允许客户机补充它们的集体能 力,从而有益于整个组织。在这方面,各种设备可具有能够互相作用, 从而牵涉本发明的受托图形流水线的应用程序、对象或资源。
图1A是例证的组网或分布式计算环境的示意图。分布式计算环境包 括计算对象10a、10b等,和计算对象或设备110a、110b、110c等。这 些对象可包括程序、方法、数据仓库、可编程逻辑等等。这些对象可包 括相同或不同设备,例如PDA、电视机、MP3播放机、个人计算机等的 多个部分。每个对象可借助通信网络14与另一对象通信。通信网络14 本身可包括向图1A的系统提供服务的其它计算对象和计算设备。根据本 发明的一方面,每个对象10或110可包含能够请求受托图形资源的应用 程序。
还可认识到诸如110c之类的对象可寄宿在另一计算设备10或110 上。从而,虽然描绘的物理环境把连接的设备表示成计算机,不过这样 的图解说明仅仅是例证性的,物理环境也可被描绘或描述成包括诸如 PDA、电视机、MP3播放机之类的各种数字设备,诸如界面之类的软件 对象、COM对象等等。
支持分布式计算环境的系统、组件和网络构形很多。例如,计算系 统可通过有线或无线系统,通过本地网络或者分布广泛的网络连接在一 起。目前,许多网络都与因特网耦接,因特网为分布广泛的计算提供基 础结构,并且包含许多不同的网络。
在本地组网环境中,至少存在分别支持独特协议的四种完全不同的 网络传送媒介,例如电力线,数据(无线和有线的),语音(例如电话) 和娱乐媒体。大多数本地控制设备,例如照明开关和电器可使用电力线 进行连通。数据服务可以宽带(例如DSL或电缆调制解调器)的形式进 入本地,并且通过利用无线(例如HomeRF或者802.11b)或者有线(例 如Home PNA,Cat 5,甚至电力线)连通可访问数据服务。语音通信可 以有线(例如Cat 3)或者无线(例如蜂窝电话)的形式进入本地,并且 通过利用Cat 3布线可在本地分布。娱乐媒体可通过卫星或电缆进入本 地,并且一般利用同轴电缆在本地分布。IEEE 1394和DVI也正在显现 为成群媒体设备的数字互连。所有这些网络环境和可显现为协议标准的 其它环境都可互连,从而形成可通过因特网与外界相连的企业内部网。 总之,对于数据的存储和传输来说,存在各种各不相同的来源,计算设 备需要在数据处理流水线的所有部分保护内容的各种方法。
因特网一般指的是利用TCP/IP协议组的网络和网关的集合,在计算 机组网领域中,TCP/IP协议组众所周知。TCP/IP是“传输控制协议/ 接口程序”的缩字母缩写词。因特网可被描述成由执行组网协议的计算 机互连的地理分布遥远的计算机网络的系统,所述组网协议允许用户通 过网络相互作用和共享信息。由于这种分布广泛的信息共享,迄今诸如 因特网之类远程网络已发展成开放式系统,开发人员可基本上无限制地 为其设计执行专门操作或者服务的应用软件。
从而,网络基础结构能够实现许许多多的网络布局,例如客户机/服 务器,对等或者混合结构。“客户程序”是使用与其无关的另一类或另 一组的服务的一类或一组成员。从而就计算来说,客户程序是请求由另 一程序提供的服务的进程,即一般说来是一组指令或任务。客户程序在 不必“知道”和其它程序或服务本身有关的任何工作细节的情况下,利 用所请求的服务。在客户机/服务器结构中,特别是组网系统中,客户机 一般是访问由另一计算机,例如服务器提供的共享网络资源的计算机。 在图1A的例子中,计算机110a、110b等可被看作是客户机,计算机10a、 10b等可被看作是服务器,这里服务器10a、10b等保存随后在客户机 110a、110b等中被复制的数据。
服务器通常是可通过诸如因特网之类远程网络访问的远程计算机系 统。客户程序可在第一计算机系统中处于活动状态,服务程序可在第二 计算机系统中处于活动状态,通过通信媒介相互通信,从而提供分布式 功能,并且允许多个客户机利用服务器的信息聚集能力。
客户机和服务器通过利用协议层提供的功能相互通信。例如,超文 本传送协议(HTTP)是与万维网(WWW)一起使用的常用协议。一般 来说,诸如通用资源定位符(URL)或网际协议(IP)地址之类的计算 机网络地址被用于相互识别服务器或客户机。网络地址可被称为通用资 源定位符地址。例如,可通过通信媒体提供通信。特别地,客户机和服 务器可通过TCP/IP连接相互耦接,以便实现高容量通信。
从而图1A图解说明了服务器通过网络/总线与客户机通信的例证组 网或分布式环境,本发明可用在所述组网或分布式环境中。更具体地说, 根据本发明,若干服务器10a、10b等通过通信网络/总线14与若干客户 机或远程计算设备110a、110b、110c、110d和110e等,例如便携式计 算机、手持式计算机、瘦(thin)客户机、组网电器或者诸如VCR、TV、 烤箱、灯具、加热器之类其它设备相连,所述通信网络/总线14可以是 LAN、WAN、企业内部网、因特网等。从而预期本发明可应用于希望处 理、保存或再现来自受托来源的保密内容的任意计算设备。
在其中通信网络/总线14是因特网的网络环境中,服务器10可以是 Web服务器,客户机110a、110b、110c、110d、110e等通过若干已知协 议中的任意一种,例如HTTP与所述Web服务器通信。
作为分布式计算环境的特征,服务器10也可用作客户机110。在适 当的情况下,通信可以是有线的或者无线的。客户机110可通过通信网 络/总线14通信,也可不通过通信网络/总线14通信,并且可具有与其相 关的独立通信。例如在TV或VCR情况下,对其控制来说,可存在组网 情况,也可不存在组网情况。每个客户机110和服务器10都可配备各种 应用程序模块或对象135,以及相对于各种存储元件或对象的连接或访 问,在所述各种存储元件或对象上可保存文件,或者文件的多个部分可 被下载或移植到所述种种存储元件或对象上。从而,可在具有客户机 110a、110b等和服务器10a、10b等的计算机网络环境中应用本发明,所 述客户机110a、110b等可访问和与计算机网络/总线14相互作用,服务 器10a、10b等可与客户机110a、110b等、其它设备111及数据库20相 互作用。
例证的计算设备
图1B和下述说明用于简要概述其中可实现本发明的适宜计算环境。 但是应注意,手持式、便携式和其它计算设备及计算对象预期可和本发 明一起应用。虽然下面描述了通用计算机,不过这只是一个例子,本发 明可和具有网络/总线互用性和交互作用的瘦客户机一起被实现。从而, 可在网络宿主(hosted)服务环境中实现本发明,在所述网络宿主服务环 境中,涉及很少或者最少的客户资源,例如其中客户机仅仅用作相对于 网络/总线的接口,例如置于器具中的对象的网络环境。本质上,可保存 数据或者可从其取回或再现数据的任意地方都是本发明的保密内容的加 密保护的操作的理想或者适宜环境。
虽然没有要求,可借助操作系统,应用程序编程接口(APU)实现 本发明,和/或本发明可包含在与受托内容对接的应用软件内。在各个实 施例中,本发明还可应用于符合接口技术,以及下面描述的加密技术的 硬件。可在计算机可执行指令的一般意义上描述软件,例如由诸如客户 机工作站,服务器或者其它设备之类的一个或多个计算机执行的程序模 块。一般来说,程序模块包括执行特殊任务或者实现特殊的抽象数据类 型的例程、程序、对象、组件、数据结构等。通常,如同各个实施例中 所需那样,可组合或者分布程序模块的功能。此外,本领域的技术人员 会认识到可利用其它计算机系统结构实现本发明。适合于供本发明使用 的其它众所周知的计算系统,环境和/或结构包括(但不局限于)个人计 算机(PC)、自动柜员机、服务计算机、手持式或膝上型设备、多处理 器系统、微处理器系统、可编程消费电子设备、网络PC、家用器具、灯 具、环境控制元件、微型计算机、大型计算机等等。还可在分布式计算 环境中实践本发明,在所述分布式计算环境中,任务由通过通信网络和/ 或总线或者其它数据传输媒介连接的远程处理设备执行。在分布式计算 环境中,程序模块既可位于本地计算机存储媒介中,又可位于远程计算 机存储媒介中,所述存储媒介包括存储器存储设备,客户机节点又可起 服务器节点的作用。
这样,图1B图解说明了其中可实现本发明的适宜的计算系统环境 100的一个例子,不过如上所述,计算系统环境100只是适宜的计算环境 的一个例子,并不意味着对本发明的应用或功能范围的任何限制。计算 环境100不应被理解成具有和例证的工作环境100中举例说明的任意一 个组件或者组件的组合相关的任何依赖性或要求。
参考图1B,用于实现本发明的例证系统包括呈计算机110形式的通 用计算设备。计算机110的组件可包括(但不限于)处理器120,系统存 储器130,使包括系统存储器在内的各个系统组件与处理器120耦接的系 统总线121。系统总线121可以是几种类型的总线结构中的任意一种,包 括存储器总线或存储控制器,外围总线和使用各种总线结构中的任意一 种的局部总线。举例来说(但是局限于),这种结构包括工业标准结构 (ISA)总线,微通道结构(MCA)总线,增强ISA(EISA)总线,视 频电子标准协会(VESA)局部总线,和外设部件互连(PCI)总线(也 称为Mezzanine总线)。
计算机110一般包括各种计算可读媒介。计算机可读媒介可以是可 被计算机110访问的任意可用媒介,并且包括易失性媒介和非易失性媒 介,可卸的媒介和不可卸的媒介。举例来说(但不局限于),计算机可 读媒介可包括计算机存储媒介和通信媒介。计算机存储媒介包括按照任 意方法或技术实现的,用于存储诸如计算机可读指令、数据结构、程序 模块或其它数据之类信息的易失性媒介和非易失性媒介,可更换媒介和 不可更换媒介。计算机存储媒介包括(但不限于)RAM、ROM、EEPROM、 快速存储器或者其它存储器技术,CDROM,数字通用光盘(DVD)或 者其它光盘存储器,盒式磁带、磁带、磁盘存储器或者其它磁性存储设 备,或者可用于保存所需信息并且可被计算机110访问的其它任意媒介。 通信媒介一般在诸如载波或其它传送机制之类的调制数据信号,具体体 现计算机可读指令、数据结构、程序模块或其它数据,并且包括任意信 息传送媒介。术语“调制数据信号”指的是以这样的方式设置或改变其 一个或多个特性,以便在其中对信息编码的信号。举例来说(但不局限 于),通信媒介包括诸如有线网络或直接有线连接之类的有线媒介,和 无线媒介,例如声音、RF、红外和其它无线媒介。上述任意的组合也应 包含在计算机可读媒介的范围之内。
系统存储器130包括呈易失性和/或非易失性存储器形式的计算机存 储媒介,例如只读存储器(ROM)131和随机存取存储器(RAM)132。基本 输入/输出系统133(BIOS)一般保存在ROM 131中,基本输入/输出系 统133(BIOS)包含例如在启动过程中,帮助在计算机110内的组件之 间传送信息的基本例程。RAM 132一般包含处理器120可立即访问和/ 或目前正被处理器120处理的数据和/或程序模块。举例来说(但是不是 限制),图1B图解说明了操作系统134、应用程序135、其它程序模块 136和程序数据137。
计算机110还可包括其它可更换/不可更换,易失性/非易失性计算机 存储媒介。举例来说,图1B图解说明了相对于不可更换的非易失性磁性 媒介进行读写操作的硬盘驱动器141,相对于可更换的非易失性磁盘152 进行读写操作的磁盘驱动器151,和相对于可更换的非易失性光盘156, 例如CD ROM或者其它光学媒介进行读取操作的光盘驱动器155。例证 的操作环境中可使用的其它可更换/不可更换的,易失性/非易失性计算机 存储媒介包括(但不局限于)盒式磁带、快速存储卡、数字通用光盘、 数字录像带、固态RAM、固态ROM等等。硬盘驱动器141一般通过诸 如接口140之类的不可更换存储器接口与系统总线121相连,磁盘驱动 器151和光盘驱动器155一般通过诸如接口150之类的可更换存储器接 口与系统总线121相连。
上面描述并在图1B中图解说明的驱动器及它们的相关计算机存储 媒介为计算机110提供计算机可读指令、数据结构、程序模块和其它数 据的存储。例如,在图1B中,硬盘驱动器141被图解表示成存储操作系 统144、应用程序145、其它程序模块146和程序数据147。注意这些部 件可以和操作系统134、应用程序135、其它程序模块136和程序数据137 相同,也可不同。这里,操作系统144、应用程序145、其它程序模块146 和程序数据147被赋予不同的数字,以便说明至少它们是不同的副本。 用户可通过诸如键盘162和指示器161,通常称为鼠标、跟踪球或触摸垫 之类的输入装置,把命令和信息输入计算机110。其它输入装置(未示出) 可包括麦克风、操纵杆、游戏柄、卫星碟形天线、扫描仪等等。这些及 其它输入装置通常通过与系统总线121耦接的用户输入接口160与处理 器120相连,不过也可由其它接口和总线结构,例如并行端口、游戏端 口或通用串行总线(USB)相连。诸如Northbridge之类的图形接口182 也可与系统总线121相连。Northbridge是与CPU或者主处理器通信的 芯片组,并且承担加速图形接口(AGP)通信的职责。一个或多个图形 处理器(GPU)184可与图形接口182通信。在这方面,GPU 184一般 包括单片存储器,例如寄存存储器,并且GPU 184与视频存储器186通 信。但是,GPU 184只是协处理器的一个例子,从而各种协处理器可包 括在计算机110中。监视器191或者其它类型的显示器也通过接口,例 如视频接口190也与系统总线121相连,视频接口190再与视频存储器 186通信。一般来说,正是计算设备的该部分易受攻击,因此本发明提供 伴随其而来的正被处理或再现的数据的保护和机密性。除了监视器191 之外,计算机还可包括可通过输出外围接口195连接的其它外围输出装 置,例如扬声器197和打印机196。
通过利用相对于一个或多个远程计算机,例如远程计算机180的逻 辑连接,计算机110可在网络或分布式环境中工作。远程计算机180可 以是个人计算机、服务器、路由器、网络PC、对等设备或者其它常见网 络节点,并且一般包括上面相对于计算机110说明的许多或者所有元件, 不过图1B中只图解说明了内存存储器181。图1B中描述的逻辑组件包 括局域网(LAN)171和广域网(WAN)173,但是也可包括其它网络/ 总线。在家庭、办公室、公司计算机网络、企业内部网和因特网中,这 样的组网环境是平凡的。
当用在LAN组网环境中时,计算机110通过网络接口或适配器170 与LAN 171相连。当用在WAN组网环境中时,计算机110一般包括调 制解调器172或者通过WAN 173,例如因特网建立通信的其它装置。调 制解调器172(可以是内置的或者外置的)可通过用户输入接口160或者 其它适当的机构与系统总线121相连。在网络环境中,关于计算机110 描述的程序模块或者其多个部分可保存在远程存储设备中。举例来说(但 不是限制),图1B把远程应用程序185图解表示成驻留在存储器181上。 要认识到所示的网络连接只是例证性的,也可使用在计算机之间建立通 信链路的其它装置。
例证的分布式计算框架或结构
鉴于个人计算和因特网的会聚,已开发并且正在开发各种分布式计 算框架。个人及商业用户同样配有用于应用程序和计算设备的能够无缝 共同使用的,允许Web的接口,使计算活动日益面向Web浏览器或网 络。
例如,的.Net平台包括服务器,积木式服务,例如 基于Web的数据存储和可下载的设备软件。一般来说,.Net平台提供(1) 使所有的计算设备一起工作,并且在所有计算设备上,使用户信息自动 被更新和同步,(2)通过大量使用XML,而不是HTML,提高Web 站点的交互能力,(3)从中央出发点到用户的产品及服务的特征定制访 问和传送的在线服务,以便管理各种应用程序,例如电子邮件,或者软 件,例如Office.Net,(4)集中式数据存储,这将提高对信息存取效率, 并且方便信息存取以及用户和设备之间信息的同步,(5)集成各种通信 媒介,例如电子邮件、传真和电话的能力,(6)对于开发人员来说,产 生可重用模块的能力,从而提高生产率,并降低编程错误的数目,和(7) 以及其它许多跨平台综合特征。
虽然这里关于驻留在计算设备上的软件实现的方法概述了例证实施 例,不过也可通过操作系统,应用编程接口(API)或者协处理器和未受 侵犯内容之间的“中人(middle man)”对象,实现本发明的一个或多 个部分,以致受托内容服务可被所有.Net的语言和服务执行,得到所 有.Net的语言和服务的支持或者通过所有.Net的语言和服务被访问,并 且在其它分布式计算框架中也一样。此外,可认识到根据本发明描述的 一种或多种技术可能涉及对硬件的改变,例如对GPU的改变,以便符合 所述技术。
加密保护保密内容
从而,本发明提供扩大操作系统,或者任意平台,从而实现诸如防 篡改的机密对话之类的“受托图形”应用,并且能够以防范擅自复制的 方式实现内容的再现的方法和系统。图2图解说明了本发明解决的问题, 其中加密收费内容200被表示成正在通过受托应用软件TS或者正在由受 托应用软件TS产生。伴随受托软件TS的应用而来的是,在通过再现设 备295再现内容200(或者其它应用)之前,内容200会涉及GPU 265 的功能。这样的内容200将从系统或主存储器230传送给视频存储器260, 以便由GPU 265处理。图2中的虚线图解说明安全问题的所在。如背景 技术中所述,目前不存在完全确保通过虚线围绕的部件的内容的受保护 和保密传送的系统。从受托软件TS的立场来看,第一个问题是在把内容 交出给GPU之前,是否可把内容托付给虚线内的组件。假定受托软件 TS能够正确验证虚线内的组件,则从受托软件TS的立场来看的第二个 问题是受托软件TS必须合理地确信,一旦数据被交出到虚线内,则数据 不会被改变。本发明在下面描述的各个实施例中解决这两种问题。按照 不同的方式,通过(1)对重叠面的内容加密;(2)使GPU能够处理加 密内容,而不会使非受托应用程序或非受托方获得所述加密内容;和(3) 对命令缓冲器的内容加密,实现本发明的方法和系统。
本发明解决的受托图形处理和再现问题的第一方面涉及加密(这里 有时称为“密码机”)处理器和索引密钥管理的提供。普通转让的同时 待审的美国专利申请No.AA/BBB,CCC(‘CCC申请),“Methods and Systems for Authentication of Components in a Graphics System”(申请 日YYYY,DD月)公开如下所述的验证和图形系统有关的组件的技术。 但是,要明白本发明认为验证已发生,从而如下在本发明的各个实施例 中所述,任意验证技术可被用于提供受托的图形平台。
例证的验证
在这方面,保密图形卡必须能够照这样验证它们自己。特别地,受 托软件必须能够区分保密图形卡和传统图形卡或者欺骗设备,例如诱骗 设备。另外,受托软件必须能够向图形卡显示加密密钥,并且能够核实 密钥的接收者确实是保密图形卡。为此,保密图形卡配有根据本发明的 加密处理器,所述加密处理器执行验证和密钥传送的加密任务。
对于硬件来说,根据本发明提供加密处理器,在制造中使所述加密 处理器个别化,并出具证明。每个加密处理器包括唯一的专用解密密钥 Kpriv。虽然根据本发明预期许多不同的加密和解密算法,并且所述许多 不同的加密和解密算法为加密领域中的技术人员已知,不过,这里描述 的算法是RSA,密钥长度为1024位,这两者都是非限制性的设计选择, 可根据应用和所需的保密等级,按照众所周知的折衷,改变算法和密钥 长度。
在这方面,通过把加密处理器添加到现有芯片上,或者通过把加密 处理器作为独立芯片添加到图形卡上,把加密处理器永久安装在图形卡 上。加密处理器实现公共密钥加密算法,如下更详细说明的一样,并且 隐藏唯一的专用密钥。在这方面,这种加密处理器可利用现今的硅技术 快速进行公共密钥解密。但是,加密处理器还可包括公共密钥加速器, 并且可实现对称密码(AES)和某一控制逻辑。
在一个例证的非限制性实施例中,加密处理器包括下述易失性寄存 器:(1)用于话路密钥的256位寄存器。该密钥的寿命一般为受托软件 的运行时间,和(2)若干索引密钥的阵列。每个密钥为128位长,不过 其它选择也是适宜的。每个密钥与特定的窗口相关,并被图形卡用于对 其内容解密。每个密钥的寿命由来自受托软件的指令管理。
如上所述,本发明的加密处理器永久安装在图形卡上。从而,需要 一种安全地与加密处理器连系,以便利用其功能的方法。就与加密处理 器连系来说,本发明至少考虑两种技术:(1)相对于受托软件TS的外 部接口和(2)GPU 265的接口。前一接口-至少就其加密特征来说-必 须标准化。后一接口可以是特定实现,但是应遵守下面陈述的全部准则。
对于外部接口实现来说,外部接口把专用密钥(PK)加密协议用于 验证和密钥传送。按照该协议,受托软件TS利用加密处理器的公共密钥 对话路密钥加密。加密处理器接收作为结果获得的密码团(cryptoblob), 并用其专用密钥译解所述密码团,从而获得话路密钥。现在,受托软件 和加密处理器共享机密。受托软件可使用该话路密钥向加密处理器发送 指令。
在一个非限制性实施例中,加密处理器通过下述函数暴露外部接口:
函数SetSessionKey()执行初始验证步骤和密钥传送。这是访问加 密处理器的公共密钥功能的唯一函数。从而在一个实施例中,本发明计 划每次引导时调用该函数。下述例证的伪代码代表SetSessionKey()的 一人非限制性实现:
SetSessionKey(cryptoblob){
       PKDecrypt(privateKey,cryptoblob,sessionKey);
}
在成功完成操作之后,话路密钥寄存器包含来自于密钥团的一个密 钥,例如一个256位的密钥。公共密钥算法可以是,例如1024位的RSA。
一旦在受托软件和加密处理器之间确定了对称的话路密钥K,则该 密钥可被用于保护往来于加密处理器的所有其它通信。受托软件和加密 处理器可借助简单的Get和Set方法进行通信,考虑到机密性和完整性, 所述Get和Set方法的参数得到加密保护。特别地,可按照下述非限制 性方式处理每个调用的参数块B:
AES(M|HMAC(M,K1),K2),
这里:
K1是K的前半部分(位0-127)
K2是K的后半部分(位128-255)
AES(M,K)是利用CBC模式下的AES,按照密钥K对消息M 加密的结果
HMAC(M,K)是利用密钥K,对于消息M的恰当散列函数计算 HMAC的结果
A|B是并置A和B的结果。
该格式可用于下述函数的输入参数及输出参数:
Set([IN]BOOL needsAck,[IN]BITS128 nonce,[IN]ENUM propertyID,[IN]BYTESEQUENCE  propertyParameters,[OUT] BYTESEQUENCE ack)
这里:
needsAck是布尔值,它允许受托软件指示是否需要确认。
nonce为受托软件选择的一个128位的值。如果请求确认,则nonce 可用在确认中。
propertyID识别正被设置的性质。下表1中给出了所支持性质的例 证列表。
propertyParameters是特定于每个propertyID的一系列参数。
最后,Ack是操作的确认。当且仅当设置needsAck时,加密处理器 才产生ack。Ack由其后跟随特定于每个propertyID的消息的nonce构 成。
 Property ID   Needs Ack   Parameters   Acknowledgement   索引密钥   是   索引,密钥,目的   好,失败   输出锁定   是   {锁定,开锁}   锁定操作后的状态   L2KEYMGMT   是   更新频率   好,失败
表1-Get函数的propertyID列表
对于索引密钥propertyID来说,该方法把新的密钥和目的标记写入 由索引识别的密钥寄存器中。
对于输出锁定propertyID来说,该方法设置输出锁定标志。当设置 该标志时,屏幕几何结构(宽度、高度、颜色深度、刷新率)以及图形 卡输出(VGA,DVI)不能被改变。具体地说,在设置输出锁定标志时, 图形卡不会执行改变这些设置的指令。
对于L2KeyMgmt propertyID来说,该方法在根据本发明描述的第 二层保护,即下面更详细说明的对输入和输出加密情况下,设置密钥更 新频率。
类似于,如下提出Get函数:
Get([IN]BITS128 nonce,[IN]ENUM propertyID,[IN] BYTESEQUENCE propertyParameters,[OUT]BYTESEQUENCE responce)
这里:
nonce是受托软件选择的用在响应中的128位的值。
propertyID识别正被设置的性质。下表2中给出了所支持的性质的 列表。
propertyParamters是特定于每个propertyID的一系列参数。
Response包含操作的结果。响应由其后跟随特定于每个propertyID 的消息的nonce组成。
 Property ID   Parameters   Response   输出端口   密钥索引   VGA、AGP等   验证代码   密钥索引   X-位数字   DX-SEC版   本   无   版本号   保密面计数   无   支持的保密面的数目   重叠面计算   无   支持的重叠面的数目   主要类型   无   1   几何结构   无   主面的宽度、高度、刷新率、颜色深度
表2-Set函数的Property ID的列表
对于输出端口,该方法返回图形卡输出的设置,例如VGA、DVI等。
对于验证代码,按照根据本发明描述的第一层保护,即覆盖图的加 密,该方法返回窗口的内容的无用信息。
对于DX-SEC版本,该方法返回图形卡所支持的DX-SEC的版本。
对于保密面计数,该方法返回图形卡所支持的保密面的数目。
对于重叠面计数,该方法返回图形卡所支持的重叠保密面的数目。
对于主要类型,该方法返回1,并且提供未来的灵活性。
对于几何结构,该方法返回主面的宽度、高度、刷新率和颜色深度。
Set函数还包括设置受保护区覆盖图的位置或大小,或者应被解密的 主面的一部分的位置和大小的方法。
从而,上面的SetSessionKey,Get和Set和外部接口的非限制性实 施例有关。术语“内部接口”指的是加密处理器和图形卡剩余部分之间 的接口。根据本发明的这种接口的细节由每个单独的图形卡的实现决定, 服从下述限制:(1)加密处理器应永久安装在图形卡上,和(2)加密 处理器和图形卡剩余部分之间的连接不应被暴露。
在这方面,从图形卡取下加密处理器不应是无关紧要的。如果加密 处理器被实现成独立芯片,则这主要是关于把加密处理器安装在图形卡 上的机械接口的限制。一般来说,加密处理器应被焊接在图形卡上。另 一方面,加密处理器应驻留在和主GPU相同的芯片上。允许取下加密处 理器的标准化机械接口,例如智能卡阅读器,插槽底座等的使用是不可 接受的。
此外,必须不能接触加密处理器和图形卡剩余部分之间的物理连接, 并且不能通过标准接口暴露所述物理连接。例如,根据本发明,该总线 上的USB连接件是不可接受的。
对于密钥管理的规则来说,只可根据其相关目的参数使用各个索引 密钥。在一个实施例中,目的参数的值具有下述含意:
L1STREAM:该密钥只可和下面关于本发明提供的第一层保密性, 即覆盖图的加密说明的DX-SEC流密码一起使用。
L2BLOCK:该密钥只可在下面描述的本发明提供的第二层保密性, 即对输入和输出加密的ECB模式下,和块密码一起使用。ECB模式下的 块密钥被用于译解受托软件写入的纹理块。
在这方面,当索引已被填入新值时,不应保持密钥的任何副本。
第一层保密性-加密的覆盖图
由于视频存储器可被运行于CPU上的非受托软件映射和读取,因此 视频存储器不能包含呈明文形式的信息。服从该要求的视频存储器包括 用于刷新显示器的视频存储器。根据本发明满足该标准的系统的初始实 现对重叠面的内容加密。随后当图像被发送给显示器时,覆盖图在传输 过程中由DAC硬件解密,或者刚好在到达DAC硬件之前被解密。
图3A图解说明了这种技术的一个例证实现。来自任意地方的,易被 受托应用软件210发现或产生的加密收费内容200被受托应用软件210 接收。跟着发生与加密处理器220的验证交换,例如上面在例证实施例 中描述的验证交换程序,或者由保密地或者通过受其它方法保护的路径 传送保密密钥的任意其它技术实现。内容200从系统存储器230传到加 密的覆盖面240,覆盖面240覆盖视频存储器260的主面270。结合加密 处理器220,GPU 265的解密部分250对加密覆盖图240提供的加密层解 密,并把内容传送给象素选择280,以便输出给数字视频接口(DVI)/ 数-模转换器(DAC)290,从而输出给再现设备,例如监视器。但是, 图3A中描绘的系统不满足上面说明的所有标准,因为只存在一个覆盖 图。为了满足受托环境所需的最小功能,例如受托窗口,本发明在一个 备选实施例中实现两个覆盖图。第一个“保密”覆盖图实质上是目前存 在于平台中的覆盖图,主要用于播放视频,被扩充以致其内容可被加密。 第二个覆盖图是专用设计的用于呈现敏感的用户界面,例如电子商务对 话。该“受保护覆盖图”总在最前面,并且是不可遮蔽的,即无颜色调 节,并且优先权高于第一覆盖图。为了使费用降至最小,第二覆盖图可 能受到某些限制。例如,可这样形成第二覆盖图,以致数据处于和主面 相同的象素格式,并且不能被拉伸或多重缓冲。另外,受保护覆盖图的 内容可由硬件核实。表3总结了保密覆盖图和受保护覆盖图之间的例证 差异。
 项目   保密覆盖图   受保护覆盖图  和主面相同的象素格式   是   否  可被拉伸   否   是  可被目的地(destination)调色   是   否  可被多重缓冲   是   否  总在最前面   否   是  内容可被核实   否   是
表3对比保密覆盖图和受保护覆盖
图3B表示包括保密覆盖图,例如保密覆盖图翻转链(flipping chain) 310的覆盖图310a、310b和310c,和受保护覆盖图320。可能的时候, 流密码被用于保密面加密,因为和块密码相比,它们实现更快并且更简 单(更多细节参见附录A)。流密码根据“流中字节的位置”对数据加 密。从而,本发明的第一级保密性利用位于该面左上角的象素加密密钥 初始化流密码。为包含在覆盖面内的每个象素预置流密码,而不考虑象 素是否将被显示。提议的系统包括两个流密码加密组件300a和300b,一 个用于保密覆盖图,一个用于受保护覆盖图。一旦存在解密象素值,则 硬件280选择受保护覆盖图320,保密覆盖图310(如果主面(primary)  270等于颜色密钥(key)和/或如果允许颜色调节)或者主面270的象素 值,并通过DVI/DAC 290把象素值发送给显示硬件。
注意对手通过任意数目的手段,可接触覆盖图,从而使显示图像看 不见,或者用噪声内容替换保密内容,因为对手写入的数据也将被加密。 虽然本发明并不直接防范这些攻击,不过本发明确实提供完整性检查, 以便确保向最终用户呈现的是预期的内容。从而,如果输出不同于输入, 则用户或受托软件210可被警告存在对内容的篡改。
对于覆盖图的软件接口来说,除了通常的覆盖图信息,例如源和目 的地边界框,目的地颜色密钥等,保密覆盖图310保持规定的加密密钥 索引,受保护覆盖图320另外保持规定的存储器位置,解密后的覆盖图 内容的循环冗余码(CRC)应被写入所述存储器位置。
保密覆盖图接口类似于现有的覆盖图,除了翻转(flip)方法规定覆 盖图后端缓冲器310a,即相对于其正在翻转数据的缓冲器的内容的加密 密钥索引之外。
受保护覆盖图接口更简单,并且为在首次显示之后,要转发给存储 器位置的面的CRC作为准备。标准化硬件接口控制覆盖图的位置,并且 基于轮询,使CRC适用于关心的软件。例如,一个寄存器可指示CRC 是否适用,另一个寄存器可使CRC能够被读取。例如,在受保护覆盖图 接口方面,可利用下述例证伪代码:
HRESULT UpdateOverlay(LPPOINT ppntUL);
这里:
ppntUL指定受保护覆盖图的左上角。
在这方面,如果与完整性有关,则软件210计算预期的CRC值。
第二层保密性-加密的输入和输出
根据本发明,为了把GPU 265扩充到处理作为输入的加密内容,并 发出作为输出的加密内容,加密和解密硬件被添加到纹理映射装置(在 输入一侧)和字母混合装置(在输出一侧),硬件设计人员协作,遵守 实现该功能方面的一些规则。由于流密码不能实现对加密数据的随机存 取,因此系统使用块密码对数据加密,例如每次128位。在超高速缓冲 存储器行填充(cache line fill)状态下,纹理映射装置解密,当从颜色缓 冲器读取超高速缓冲存储器时,字母混合装置解密,并在写入之前,字 母混合装置加密。这些操作中使用的加密密钥可以不同。
除3D再现之外的计算任务,例如视频解码是刚刚描述的范例的直接 扩展。视频宏数据块代替纹理用作加密输入;正被解码的输出帧代替颜 色缓冲器用作加密输出。如果当在命令流中把内容带内传送给GPU 265 时,要保护所述内容,那么下面描述如何对命令缓冲器加密。
图4A描绘了刚刚描述的借助加密和解密组件440执行前端操作的系 统,把加密面420用作输入,发出作为输出的加密面,即加密纹理和颜 色缓冲器技术的前端。本发明还提供加密纹理400a,而纹理400b可以是 视频存储器260的典型纹理。加密纹理400a输出给GPU 265的解密组件 450,解密组件450和加密处理器220一起工作,对纹理解密,并且借助 组件430a,对来自组件440的解密数据应用图形算法,例如阴影法等等。
就预测合成的页面翻转桌面的配置来说,刚刚描述的图4A的系统可 保护整个桌面,只要DAC硬件能够如上所述对主面以及覆盖面310和 320解密。注意在这种情况下,DAC硬件利用块密码,而不是流密码进 行解密。这样的系统允许任意数目的保密面参与桌面,同时对它们施加 任意Z轴排序,混合或者甚至3D或者效果,而不会损害保密性。必须 总在最前面并且其内容必须可核实的受保护覆盖面320驻留在单独的表 面中。上面描述的保密覆盖图310继续存在,直到可借助保密页面翻转 桌面或者平台,用软件模拟它为止。
在一个实施例中,除了能够对主面270解密之外,系统要求GPU 265 还能够对来自普通桌面应用程序,例如受托字处理器的明文加密,以致 它们也能够参与桌面。图4B图解说明了这样的情况,其中包括前表面 510b和后表面510a的主翻转链510被加密。从而,主面可由桌面合成器 430处理,由加密/解密组件440a分别保护相对于其的输入输出。在与加 密处理器220通信的情况下,解密组件500随后对前表面510b解密,以 便输出给DVI/DAC 290。这使系统暴露于下面相对于确保保密性说明的 某些类型的攻击之下,在所述下述说明中讨论防范这些攻击的一些策略。
图4C描绘了图4B的替换物,其中实现了对保密覆盖图翻转链310 的抄录。从而,作为对主面270加密的替换,根据本发明,硬件能够实 现供保密覆盖图硬件300a消耗的流密码加密,保密覆盖图硬件300a和 加密处理器220一起对流密码数据解密。和利用块密码对主面加密相比, 这种表示机制花费不高,但是作为设计折衷,可能不能象利用块密码对 主面加密那样可升级和灵活。由于保密覆盖图310使用流密码进行加密, 这种情况下合理的支持操作是‘复制’操作,‘复制’操作中,解密组 件440b利用输入面510a的块密码对输入解密,并且组件440b利用覆盖 图的流密码重新加密。
在每次一个加密输入就足够的情况下,这些实施例,以及它们的各 种组合是实用的,只要任意数目的明文输入可和加密输入相结合,产生 加密输出即可。
对于确保保密性来说,根据本发明可实现的措施有很多种。首先, 上面描述的第二层保密性依赖于这样的思想,即一旦明文被解密,则明 文不能泄漏出GPU 265。例如,不存在能够借助主机的中央处理器(CPU) 从芯片读出明文的调试寄存器或者其它工具。除了小心进行硬件设计以 避免这种泄漏之外,GPU 265指令集被设计成使得不能实现对输入的解 密,又不能实现对输出的加密。此外,硬件防止明文数据的泄漏,不论 是由劣种(rogue)驱动器,由对抗性代码,还是由意外引起的泄漏。
另外,硬件不可能泄漏密钥。一旦通过按照验证交换描述的加密协 议,密钥被传送给GPU 265,则这些密钥只适用于加密和解密组件。
如上所述,如果GPU 265能够对明文加密,以便在主面270中显示, 则这种功能被看成是系统中的弱点,因为这种加密功能是描述的其中对 手能够同时获得明文和对应的加密文本的唯一机制。通过映射主面,以 致CPU可看到所述主面,并且产生必须被加密的窗口,对手可构建对应 于已知明文块的加密文本子集。当“有趣的”文本块的数目较小时,这 些所谓的“字典攻击”效果很好。例如,对于以32bpp显示模式下黑白 对话框的显示来说,由于每个块存在4个象素,这样的对话只需要显示 16个块。对于已发现这16个加密文本块的对手来说,一种可能的途径是 通过产生即使在被GPU 265解密之后,仍然有意义的内容,向最终用户 伪选对话。由此,受保护覆盖图最适合于防范篡改的对话,因为当最终 用户还没有看到预期应看到的内容时,它可使应用程序检测出。
从而,挫败希望产生字典的对手的良好策略有两种。首先,由于字 典只适用于指定的密钥,因此改变密钥并对内容重新加密可迫使对手开 始准备新的字典。此外,对于主面的加密来说,不需使软件能够得到密 钥-它可在硬件中滚动,软件只需被告知密钥已改变。由于先前的密钥 仍然存在,因此软件可使用先前的密钥对未改变的主面部分解密和重新 加密。从而,加密处理器220以选前的密钥仍然存在,例如加密密钥索 引的双重缓存的方式,并且以通知软件密钥已滚动的方式,定期滚动主 面270的加密密钥。
另一种策略涉及在加密之前,对图像内的位置编码。例如,在对其 加密之前,图像中的(x,y)象素位置(或者其它衍生值,例如图像偏 移)可被异-或(XOR)成象素数据;从而可在解密之后进行操作。其结 果是,表面的不同区域中的象素决被不同加密,明文-加密文本映射只对 该表面中的指定位置有意义,对于攻击者来说这是无效的。
本发明还提供预定的混合(swizzled)格式。由于纹量和离屏面要求 随机存取,因此必须利用块密码对它们编码。在块密码的典型块大小和 用于现代的3D加速器的典型超高速缓冲存储器行大小之间存在良好的 协同作用,例如如果超高速缓冲存储器行和块大小都为128位,则可在 硬件中实现有效的加密和解密。甚至如果存在轻微的差别(例如128位 的块大小和256位的超高速缓冲存储器行大小),硬件实现也很可能是 高效的。
关于加密纹理数据的一个问题在于块加密方案要求在可被加密或解 密之前,要存在相邻的字节块;并且超高速缓冲存储器行填充要求象素 数据被‘混合’,即形成从图像中的(X,Y)位置到地址的变换,以致 超高速缓冲存储器行填充产生2D区域的象素。至今,硬件厂家表面上揭 示了线性面格式,同时在不通知应用程序的情况下,搅和图像数据。但 是,由于受托软件将发出加密纹理数据,因此软件必须预先知晓混合方 案,从而它能够对相邻的数据块加密,并保存2D位置。作为响应,本发 明确定混合图像格式的字典,包括YUV 4:4:4,4:2:2和4:2:0 以及RGB格式,供应用程序之用。这些格式的性能可能不象图像被混合 成硬件专用格式的性能那么高,但是加密是值得的,虽然性能稍微被降 低,即用保密性换取速度。
对于AYUV/ARGB(32bpp,压缩)来说,除了用于亮度(Y)和色 度(U和V)样本的8位颜色通道之外,该32bpp面格式还包含一个字 母通道。另一方面,它可以包含标准的ARGB 32bpp,因为两种格式都 为32bpp并且都被压缩。下面的讨论假定AYUV。线性布局如图5中所 示。
图像中象素(X,Y)的偏移如下:
Offset=Y*Pitch+X*4
假定128位加密块大小和超高速缓冲存储器行大小,4个象素可适合 单个加密块。在产生地址之前,交织X和Y的最低有效位会导致超高速 缓冲存储器行填充中改进的2D位置。
图5B中图解说明了得到的图像布局。每个编号矩形是一个象素,粗 体矩形是加密块。本发明的用于这种格式的把图像中的(x,y)位置转 换成偏移的混合函数的例证伪代码如下:
DWORD:
SwizzleAYUV(DWORD x,DWORD y,DWORD Pitch)
{
  //pitch is number of bytes per scanline of macro blocks
  DWORD BlockOffset=(y>>1)*Pitch+(x>>1)*(128/8);
  DWORD IntraBlockOffset=((y&2)<<2)|(x&2)<<1)|((y&1)
   <<1)|(x&1);
  return BlockOffset+IntraBlockOffset*4;
}
对于YUY2(16bpp,压缩)来说,该面格式以为2的系数对‘色度’ 样本U和V进行水平二次抽样。结果是平均每个象素16位的压缩图像 格式。图6A中表示了该线性布局。本发明的混合格式分配4×2象素的 加密块,如图6B中所示。和图5A和5B的情况相同,128位的块也被混 合。注意对于图6B和对于把(x,y)坐标转换成图像偏移的下述例证混 合伪代码来说,U和V被假定为具有相等的X坐标:
   DWORD
   SwizzleYUY2Y(DWORD x,DWORD y,const
SURFACEDESC&sd)
   {
     assert(x<sd.Width);
     assert(y<sd.Height)
     DWORD BlockOffset=(y>>1)*sd.Pitch+(x>>2)*(128/8);
     DWORD IntraBlockOffset=((x&2)<<1)|
       ((y&1)<<1)|
       ((x&1)<<0);
    DWORD dwRet=BlockOffset+(IntraBlockOffset<<1);
    return dwRet;
   }
   DWORD
   SwizzleYUY2U(DWORD x,DWORD y,const
SURFACEDESC&sd)
   {
    assert(x<sd.Width);
    assert(0==(x&1));
    assert(y<sd.Height)
    DWORD BlockOffset=(y>>1)*sd.Pitch+(x>>2)*(128/8);
    DWORD IntraBlockOffset=((x&2)<<1)|
      ((y&1)<<1)|
      ((x&1)<<0);
    return BlockOffset+(IntraBlockOffset<<1)+1;
   }
   DWORD
   SwizzleYUY2V(DWORD x,DWORD y,const
SURFACEDESC&sd)
   {
     assert(x<sd.Width);
     assert(0==(x&1));
     assert(y<sd.Height)
     DWORD BlockOffset=(y>>2)*sd.Pitch+(x>>3)*(512/8);
     DWORD IntraBlockOffset=((x&2)<<1)|
       ((y&1)<<1)|
       ((x&1)<<0);
     return BlockOffset+(IntraBlockOffset<<1)+3;
   }
在这方面,对于附随图5A、5B、6A和6B的伪代码来说,面间距被 定义成128位块的每条扫描线的字节数。
对于压缩平面(12bpp)来说,该面格式以为2的系数水平地和垂直 地对U和V二次抽样。在该表面的两个独立部分中展开亮度和色度样本。 图7A中表示了压缩平面(12bpp)的线性布局。
面间距被定义成Y平面中512位块的每条扫描线的字节数。UV平 面的间距为Y平面的间距的一半,因为UV平面上存在的样本为Y平面 上样本的1/4,但是每个样本的颜色元素为Y平面上样本的2倍。图7B 中表示了根据本发明的混合图像格式。
本发明的用于该格式的,把(x,y)坐标转换成Y、U和V元素的 偏移的混合函数的例证伪代码如下:
DWORD
SwizzlePP12Y(DWORD x,DWORD y,const SURFACEDESC&sd)
{
  assert(x<sd.Width);
  assert(y<sd.Height)
  DWORD BlockOffset=(y>>2)*sd.Pitch+(x>>2)*(128/8);
  DWORD IntraBlockOffset=((y&2)<<2)|
      ((x&2)<<1)|
      ((y&1)<<1)|
       (x&1);
  return BlockOffset+IntraBlockOffset;
}
DWORD
SwizzlePP12U(DWORD x,DWORD y,const SURFACEDESC&sd)
{
  DWORD PlaneOffset=(sd.Height>>3)*sd.Pitch;
  if((0!=(x&1))||(0!=(y&1)))
   _asm int 3
  x>>=1;
  y>>=1;
  DWORD BlockOffset=(y>>1)*sd.Pitch/2+(x>>2)*(128/8);
  DWORD IntraBlockOffset=((x&2)<<1)|
      ((y&1)<<1)|
       (x&1);
  return PlaneOffset+BlockOffset+(IntraBlockOffset<<1);
}
DWORD
SwizzlePP12V(DWORD x,DWORD y,const SURFACEDESC&sd)
{
  DWORD PlaneOffset=(sd.Height>>3)*sd.Pitch;
  if((0!=(x&1))||(0!=(y&1)))
  _asm int 3
  x>>=1;
  y>>=1;
  DWORD BlockOffset=(y>>1)*sd.Pitch/2+(x>>2)*(128/8);
  DWORD IntraBlockOffset=((x&2)<<1)|
      ((y&1)<<1)|
       (x&1);
  return PlaneOffset+BlockOffset+(IntraBlockOffset<<1)+1;
}
第三层保密性-加密的命令缓冲器
根据本发明,可扩充上面关于第一层和第二层保密性说明的实施例 的功能,以便除了GPU 265正在处理的图像数据外,还对提供给GPU 265 的命令缓冲器加密。如果应用程序210希望保护发送给命令缓冲器中的 硬件的内容,则这种功能是合乎需要的。图9A表示使用加密命令缓冲器 900的视频解码,由此,内容被传递全加密纹理400a,并由解密组件450 解密,以及由视频解码器430b解码。虽然可以只相对于命令缓冲器被加 密,但是内容在视频存储器以及在命令缓冲器中被加密,如同由加密的 解码帧420a所示。从而在类似于此的情况下,对命令缓冲器加密是恰当 的,在所述情况下,宏数据块在视频存储器中,同时在命令流中发送运 动矢量和其它命令。
在颜色缓冲器加密不足以保护所考虑的内容的警告下,关于加密纹 理数据的可分性约束也适用于加密命令缓冲器数据。中间缓冲器,例如Z 缓冲器也可被加密,以便保护系统防止明文攻击。图9B表示了根据本发 明利用加密命令缓冲器的例证3D再现。如图所示,3d再现命令810在 到达视频解码器430c的途中被加密。纹理数据400a被解密组件450解 密,并由视频解码器430c按照命令810进行处理。随之而来的是,借助 加密/解密组件830对颜色缓冲器820中的数据加密。
可利用两种途径,在命令缓冲器的消耗之前,或者在已消耗命令缓 冲器之后,进行篡改检测。在一个实施例,在显示或再现内容之后,启 动篡改检测。
其它备选实施例-图形卡的输出的加密
在上述各个实施例中,虽然关于图2的虚线部分证明并描述了保密 性和完整性。但是还没有关于视频输出证明保密性和完整性,即,理论 上,图形卡和诸如监视器之类的再现设备之间的接口,和/或再现设备本 身受到攻击。
从而,在上述实施例中,如图9A中所示,在过程中的某一点,即使 在视频存储器中和在图形卡处理过程中,内容受到保护,但是该数据被 不用密码地发送给DVI/DAC 290。从而,在到达再现设备的途中,以及 在再现设备之内时,数据可能被剽窃或者被改变。
从而,根据本发明的一个备选实施例,所述备选实施例可和这里描 述的其它实施例随意组合,在再现设备中设置一个同型的加密处理器 220b,补充加密处理器220a执行的功能。在这方面,在通信上与加密处 理器220a耦接的加密组件910a在把数据传送给DVI/DAC组件290之前, 对数据加密,通信上与加密处理器220b耦接的解密组件910b译解该数 据,作为所进行的显示或再现的一部分,防止数据的剽窃。另一方面, 加密组件910a可和DVI/DAC组件290包含在一起。总之,通过应用相 同的加密和解密,以及密钥管理技术,可在整个图形流水线内保护内容, 实现内容的加密保护保密传送和处理。
如上所述,虽然已关于各种计算设备、硬件、软件和网络结构说明 了本发明的例证实施例,不过基础概念可应用于其中希望保护来自于受 托来源的内容的任意计算设备或系统。从而,根据本发明的加密保护保 密内容的技术可应用于各种应用程序和设备。例如,本发明的加密保护 保密内容的方法可应用于计算设备的操作系统,以设备上的独立对象的 形式,以另一对象的一部分的形式,以可从服务器下载的对象的形式, 以分布式对象的形式等提供。虽然这里例证的编程语言、伪代码、名称 和例子被选为各种选择的代表,不过,这些编程语言、伪代码、名称和 例子并不意味着对本发明的限制。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。 从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部 分可采取嵌入有形媒介,例如软盘、CD-ROM、硬盘驱动器或者其它任 意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被 载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践 本发明的设备。在程序代码在可编程计算机上执行的情况下,计算设备 一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储 器和/或存储元件),至少一个输入装置,和至少一个输出装置。为了与 计算机系统通信,最好用面向过程或对象的高级编程语言实现通过利用 数据处理API,操作系统,受托应用程序等,可应用本发明的技术的一 个或多个程序。但是,需要的话,也可用汇编或机器语言实现程序。总 之,语言可以是被编译语言或者被解释语言,并且在本发明的各个实施 例中,对GPU 265的硬件实现强加各种条件。
也可借助以通过某些传输媒介,例如通过电线或电缆,通过光纤或 者借助其它形式的传输,传送的程序代码的形式体现的通信实践本发明 的方法和设备,其中当程序代码被诸如EPROM,门阵列,可编程逻辑 器件(PLD),客户机,视频记录器等,或者具有图形卡和上面在例证 实施例中描述的加密能力的接收机器之类的机器接收,被载入所述机器 中,并被所述机器执行时,所述机器变成实践本发明的设备。当在通用 处理器上实现时,程序代码与处理器结合,形成调用本发明的功能的独 特设备。另外,结合本发明使用的存储技术可以总是硬件和软件的组合。
虽然已结合各个附图中的优选实施例说明了本发明,但是要明白也 可使用其它类似的实施例,或者可对所述实施例进行修改和添加,以便 在不脱离本发明的情况下,实现本发明的相同功能。例如,虽然在网络 环境,例如对等网络环境方面描述本发明的例证网络环境,不过本领域 的技术人员将认识到本发明并不局限于此,如同本申请中说明的方法可 应用于任意计算设备或环境(不论是有线还是无线),例如游戏控制台, 手持式计算机,便携式计算机等等,并且可应用于通过通信网络连接, 并跨越网络交互作用的任意数目的这种计算设备。此外,应强调的是各 种计算机平台,包括手持式设备操作系统和其它应用程序专用操作系统 在预期范围之内,尤其是当无线网络设备的数目继续激增时。此外,可 在若干协处理芯片或设备,例如具有若干GPU的设备中,或者跨越所述 若干协处理芯片或设备实现本发明,并且可跨越若干设备类似地实现存 储。于是,本发明不应局限于任意单个实施例,相反本发明的宽度和范 围应根据附加的权利要求限定。
附录A:流密码与块密码的比较
本附录详述了当与本文献的内容相关时,流密码和块密码之间的差别。
  问题   流密码  块密码   间隔尺寸   字节  16字节(128位)   随机存取   困难/不可能  直接   密钥变换   频繁(每帧)  不频繁   复杂性   1X  流密码的4倍   IP状态   专有  公用域
一般来说,和块密码相比,流密码的实现更快速和更简单。
如同名称所暗示的,流密码对字节流加密和解密。为了对流中的第N 个字节加密,密码从起点开始,并且朝着所需的偏移量每次前进一个字 节进入该流中。
相反,以电子源码书方式运行的块密码可对数据中的任意块加密或 解密,但是每次必须对完整的数据块加密/解密。典型的块大小为16个字 节。
以这样的方式使用流密码,以致相同的数据不会被加密两次,即用 于加密和解密的密钥必须频繁更换。例如,当用于收费视频播放时,每 帧改变密钥就足够了。
最后要指的是,存在适用于公用域中的质量良好的块密码。
相关申请的交差参考
本申请要求于2001年12月4日申请的临时申请序列号60/337,617 以及于2001年12月10申请的60/339,143的优先权,并且与于2002年4 月18日申请的共同转让的待审美国专利申请10/125,170相关。
版权声明和许可:
本专利文件的公开部分可能含有版权受保护的内容。版权拥有者并 不反对任何人传真复制如在美国专利商标局的专利文档或记录内出现的 这个专利文件或专利公开内容,但在其它方面却保留全部版权。以下标 志应适用于本文件:2001,Microsoft Corp。