首页> 中国专利> 利用硬件受保护的数字权限管理进行的媒体解码控制

利用硬件受保护的数字权限管理进行的媒体解码控制

摘要

提出了在硬件受保护的数字权限管理(“DRM”)系统领域的创新。例如,硬件受保护的DRM系统包括可信层和不可信层。在不可信层中,控制模块接收包括加密的媒体数据的源媒体数据。控制模块处理关于媒体数据的元数据。可能由可信层中的模块暴露的元数据在不可信层内不是不透明的。在可信层中,通过使用密钥数据,模块对加密的媒体数据进行解密,该加密的媒体数据可以是来自源媒体数据的加密的媒体数据或其转变加密版本。可信层中的模块对解密的媒体数据进行解码。不可信层中的主机解码器使用元数据来管理可信层中的解码、再现和显示的至少一些方面,而不在不可信层内暴露解密的媒体数据或密钥数据。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-06-26

    授权

    授权

  • 2017-08-25

    实质审查的生效 IPC(主分类):G06F21/10 申请日:20150910

    实质审查的生效

  • 2017-08-01

    公开

    公开

说明书

背景技术

数字媒体数据的回放已经成为诸如智能电话、平板计算机、个人计算机、游戏控制台和机顶盒之类的设备上的常见特征。随着数字媒体数据的分发和回放变得更加普遍,已经开发了各种数字权限管理(“DRM”)系统以保护媒体数据免受未授权的复制、分发和回放。典型地,DRM系统使用加密来保护媒体数据,使得只有授权方可以回放它。然后,授权方可以使用DRM系统来解密媒体数据以供回放。在加密之前,媒体数据可以被压缩或编码,以降低媒体数据的比特率。如果这样的话,则在解密之后但在回放之前解压缩或解码媒体数据。

通常,DRM系统的焦点是在回放设备处发生的操作,因为这是解密的媒体数据可能最易受攻击的地方。在一些DRM系统中,在回放设备处,媒体源向受保护的媒体过程(也称为受保护的媒体流水线)提供加密的媒体数据。媒体源是不可信的,但是受保护的媒体过程被理解为通过由操作系统提供的保证,通过混淆媒体回放软件等等而是安全的。在该架构中,加密的媒体数据对于媒体源是“不透明的”。也就是说,对于媒体源,由于通过加密提供的安全性,加密的媒体数据不能被未授权方理解(只要加密不破解)。另一方面,在该架构中的解密之后,加密的媒体数据不再是不透明的——它在受保护的媒体过程中的各个阶段是可访问的。

虽然受保护的媒体过程提供了防止未授权的访问、复制、分发、回放等的安全级别,但是它依赖于能够访问设备的资源的软件提供的保证。然而,该软件可能被破坏。例如,软件可能被恶意用户攻击或以其他方式控制。特别地,由解密器在受保护的媒体过程中生成的“明文”媒体数据易受到截取,并且仅用软件保护的密钥可能容易被滥用。

对于一些类型的媒体数据(例如,低质量视频内容,旧视频内容),由典型的软件受保护的DRM系统提供的保证可能对于媒体数据的所有者或提供者是足够的。对于其他类型的媒体数据(例如,高质量或高分辨率视频内容,新版本),这样的保证可能不向所有者/提供者提供媒体数据是安全的足够的置信水平。出于该原因,媒体数据的一些所有者/提供者寻求由硬件受保护的DRM系统提供的保证。一般地,在硬件受保护的DRM系统中,密钥和解密的媒体数据在硬件级和/或安全固件级(在操作系统下的层)受到保护。硬件级和安全固件级不能由软件进程访问。诸如媒体播放器,媒体解码器或操作系统之类的软件是不可信的。因此,软件不能访问硬件受保护的密钥和解密的媒体数据。相反,密钥和媒体数据仅以加密形式可用于不可信软件,因此对不可信软件是不透明的。虽然硬件受保护的DRM系统倾向于比软件受保护的DRM系统供给更好的安全保证,但是它们可能是不灵活的。特别的,软件控制的媒体解码的灵活性在硬件受保护的DRM系统中丢失或受阻。

发明内容

概括而言,具体实施方式提出了在硬件受保护的数字权限管理(“DRM”)系统领域的创新。例如,硬件受保护的DRM系统处理源媒体数据,其包括要解密的加密的媒体数据。在硬件受保护的DRM系统的不可信层中,主机解码器使用关于媒体数据的元数据来管理发生在硬件受保护的DRM系统的可信层中的媒体数据的解码、再现和/或显示的方面。以这种方式,不可信层中的主机解码器可以灵活地管理可信层中的解码、再现和/或显示的各个方面,而不在不可信层内暴露解密的媒体数据或密钥数据。

根据本文描述的创新的一个方面,在硬件受保护的DRM系统的不可信层中,控制模块接收包括加密的媒体数据(“第一加密的媒体数据”,例如一个或多个加密的、编码的媒体样本)的源媒体数据。控制模块处理关于媒体数据的元数据。元数据在不可信层内不是不透明的,并且可以由控制模块和/或可信层暴露。不可信层中的主机解码器使用元数据来管理在硬件受保护的DRM系统的可信层中的解码、再现和/或显示的至少一些方面。解码、再现和显示在第二加密的媒体数据在可信层中的解密之后,第二加密的媒体数据基于第一加密的媒体数据(例如,第二加密的媒体数据是第一加密的媒体数据或在可信层中生成的第一加密的媒体数据的转变加密版本)。

根据本文描述的创新的另一方面,硬件受保护的DRM系统处理加密的媒体数据(“第一加密的媒体数据”)。在硬件受保护的DRM系统的可信层中,模块使用密钥数据对加密的媒体数据(“第二加密的媒体数据”)进行解密。第二加密的媒体数据可以是第一加密的媒体数据或其转变加密版本。然后,可信层中的模块对解密的媒体数据进行解码。关于媒体数据的元数据用于从硬件受保护的DRM系统的不可信层管理可信层中的解码、再现和/或显示的至少一些方面。元数据在不可信层内不是不透明的。

本文描述的各种创新可以被实现为方法的一部分,实现为适于执行该方法的计算系统的一部分或实现为具有用于使计算系统执行方法的计算机可执行指令的有形计算机可读介质的一部分。各种创新可以组合或单独使用。如本文所述,各种其它特征和优点可以合并到创新中。通过参考附图进行的以下详细描述,本发明的前述和其它目的、特征和优点将变得更加显而易见。

提供本发明内容以便以简化形式介绍以下将在具体实施方式中进一步描述的概念的选择。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

附图说明

图1是其中可以实现一些所描述的实施例的示例计算系统的框图。

图2和图3是图示出了用于利用硬件受保护的DRM进行媒体解码控制的示例架构的框图,其中可以实现一些所描述的实施例。

图4是图示出用于从不可信层的角度利用硬件受保护的DRM进行媒体解码控制的一般技术的流程图。

图5是图示出用于从可信层的角度利用硬件受保护的DRM进行媒体解码控制的一般技术的流程图。

图6a和6b是图示出用于从不可信层的角度利用硬件受保护的DRM进行媒体解码控制的示例技术的流程图。

图7a和7b是图示出用于从可信层的角度利用硬件受保护的DRM进行媒体解码控制的示例技术的流程图。

图8是在利用硬件受保护的DRM进行视频解码控制的一些示例实现中用于切片(slice)报头参数的数据结构的伪码列表。

具体实施方式

具体实施方式呈现了硬件受保护的数字权限管理(“DRM”)系统领域的创新。例如,硬件受保护的DRM系统包括可信层和不可信层。硬件受保护的DRM系统处理源媒体数据,其包括将解密的加密的媒体数据。在不可信层中,主机解码器使用关于媒体数据的元数据来管理在可信层中发生的媒体数据的解码、再现和/或显示的方面。主机解码器可以是可信层中的任何软件或其它功能,其控制或驱动适用于在可信层中解码的专用解码硬件或图形硬件。以这种方式,不可信层中的主机解码器可以灵活地管理可信层中的解码、再现和/或显示的各个方面,而不在不可信层内暴露解密的媒体数据或密钥数据。

在本文所描述的示例中,不同图中的相同附图标记表示相同的组件或模块。根据上下文,给定的组件或模块可以接受不同类型的信息作为输入和/或生成不同类型的信息作为输出。

更一般地,本文描述的示例的各种替代方案是可能的。例如,可以通过改变所描述的方法动作的排序,通过分割,重复或省略某些方法动作来改动本文所描述的方法中的一些。不同的实施例使用所描述的创新中的一个或多个。本文所述的创新中的一些解决了背景技术中提到的问题中的一个或多个。典型地,给定的技术/工具并未解决所有这样的问题。

I.示例计算系统

图1图示出了其中可以实现所描述的创新中的若干创新的计算系统(100)的一般化示例。计算系统(100)不旨在对使用或功能的范围提出任何限制,因为创新可以在包括适于媒体解密和解码的专用计算系统的各种计算系统中实现。

参考图1,计算系统(100)包括一个或多个处理单元(110)和存储器(120)。处理单元(110)执行计算机可执行指令。处理单元可以是中央处理单元(“CPU”)或任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增强处理能力。有形存储器(120)可以是可由(多个)处理单元访问的易失性存储器(例如,寄存器、高速缓存器、RAM),非易失性存储器(例如,ROM、EEPROM,闪存等)或者这二者的某种组合。存储器(120)存储按照适合于由(多个)处理单元执行的计算机可执行指令的形式的软件(190),其实现用于利用硬件受保护的DRM进行媒体解码控制的一个或多个创新(用于不可信层中的操作)。

计算系统(100)还包括用于媒体解密和媒体解码的可信系统。在图1中,可信的芯片上系统(“SoC”)(130)包括用于安全媒体解密的硬件和固件的组合。可信SoC(130)包括解密器逻辑(132)、一个或多个受保护缓冲器(134)和存储器(136)。解密器逻辑(132)可以由专门设计或配置为实现安全媒体解密的集成电路(例如,诸如ASIC数字信号处理器(“DSP”)之类的专用集成电路(“ASIC”)、图形处理单元(“GPU”)或诸如现场可编程门阵列(“FPGA”)之类的可编程逻辑器件(“PLD”)来实现。(多个)受保护缓冲器(134)可以存储在解密(以及可能的加密,用于传送加密(transcrypted)的媒体数据)中使用的密钥以及明文(解密的)媒体数据。存储器(136)存储软件(190)(这里是固件),其实现用于利用硬件受保护的DRM进行媒体解码控制的一个或多个创新(用于可信层中的操作)。

另一个可信SoC(140)包括解码器逻辑(142),一个或多个受保护缓冲器(144)和存储器(146)。解码器逻辑(142)可以由专门设计或配置为实现安全媒体解码的集成电路(例如,诸如ASIC DSP之类的ASIC,GPU或诸如FPGA之类的PLD)来实现。受保护的缓冲器(144)可以存储解码的媒体数据(即,媒体样本)。存储器(146)存储软件(190)(这里是固件),其实现用于利用硬件受保护的DRM进行媒体解码控制的一个或多个创新(用于不可信层中的操作)。

可替换地,用于媒体解密的可信SoC(130)和用于媒体解码的可信SoC(140)可以组合为单个SoC。或者,用于媒体解密的可信SoC(130)和用于媒体解码的可信SoC(140)可以共享某些组件(例如,受保护的缓冲器(134/144))。可信层和/或不可信层中的一层或多层驱动器(未示出)可以调解(多个)可信SoC与计算系统(100)的其它组件之间的交互。

计算系统可以具有附加特征。例如,计算系统(100)包括存储装置(180)、一个或多个输入设备(150)、一个或多个输出设备(160)和一个或多个网络接口设备(170)。诸如总线、控制器或网络之类的互连机构(未示出)互连计算系统(100)的组件。典型地,OS软件(未示出)为在计算系统(100)中执行的其它软件提供操作环境,并且协调计算系统(100)的组件的活动。

有形存储装置(180)可以是可移除的或不可移除的,并且包括磁盘、磁带或盒、CD-ROM、DVD或可以用于存储信息并且可以在计算系统(100)内访问的任何其它介质。存储装置(180)存储按照适于由(多个)处理单元执行的计算机可执行指令的形式的软件(190),其实现用于利用硬件受保护的DRM进行媒体解码控制的一个或多个创新(用于不可信层中的操作)。

(多个)输入设备(150)可以是触摸输入设备,诸如键盘、鼠标、笔或轨迹球、语音输入设备、扫描设备、触摸屏或向计算系统(100)提供输入的另一设备。(多个)输出设备(160)可以是显示器、打印机、扬声器、CD刻录机或提供来自计算系统(100)的输出的另一设备。

(多个)网络接口设备(170)使能通过通信介质到另一计算实体的通信。通信介质在调制的数据信号中输送诸如计算机可执行指令或其它数据之类的信息。调制的数据信号是以在信号中编码信息这样的方式设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质可以使用电、光学、RF或其它载波。

可以在计算机可读介质的一般上下文中描述创新。计算机可读介质是可以在计算环境内访问的任何可用的有形介质。作为示例而非限制,对于计算系统(100),计算机可读介质包括存储器(120、136、146)、存储装置(180)以及上述内容中任一项的组合。

可以在计算机可执行指令(诸如包括在模块中的、在目标真实或虚拟处理器上的计算系统中执行的那些指令)的一般上下文中描述创新。一般地,模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。在各种实施例中根据需要,模块的功能可以在模块之间组合或分割。用于模块的计算机可执行指令可以在本地或分布式计算系统内执行。

术语“系统”和“设备”在本文中可互换使用。除非上下文另有明确指示,否则这两个术语都不意味着对计算系统或设备的类型的任何限制。一般地,计算系统或设备可以是本地的或分布式的,并且可以包括具有实现本文描述的功能的软件的硬件和/或专用硬件的任何组合。

为了呈现的目的,具体实施方式使用像“确定”、“传递(pass)”和“使用”一样的术语来描述计算系统中的计算机操作。这些术语是用于由计算机执行的操作的高级抽象,并且不应该与由人类执行的动作相混淆。与这些术语相对应的实际计算机操作根据实现而变化。例如,术语“传递”表示在计算系统的两个组件之间输送数据的任何方式,无论数据是借由值传递还是借由引用传递,无论数据是否使用函数调用、消息、事件或某种其它机制中的参数传递(例如,通过将数据存储在缓冲器或存储器中,以及向缓冲器/存储器交换指针、句柄、引用等),以及无论数据是在两个组件之间直接输送,还是通过一个或多个中间组件(其可以重新格式化或以其他方式变换数据)传递。

II.用于利用硬件受保护的DRM进行媒体解码控制的示例架构

本部分描述了用于利用硬件受保护的DRM进行媒体解码控制的示例架构。一般地,在硬件受保护的DRM系统中,密钥和解密的媒体数据在硬件级和/或安全固件级受保护,其是软件进程不能访问的。在高级别处,硬件受保护的DRM系统包括可信层和不可信层。

可信层(也称为可信世界、安全层或安全世界)包括假设为对媒体数据可信的功能。在可信层中,诸如私钥、用于加密的媒体数据的原始内容密钥、用于传送加密的媒体数据的会话密钥等加密/解密密钥和明文(解密的,可能解码的)媒体数据是可访问的。例如,对于可信层,硬件受保护的DRM系统包括适于解密和/或解码的一个或多个集成电路,存储用于控制一个或多个集成电路的固件指令的存储器,以及用于存储解密的媒体数据、解码的媒体数据(即,媒体样本)和用于解密的密钥的受保护的缓冲器。使用该硬件/固件,可信层提供安全执行环境,其中可以安全地存储密钥和明文媒体数据。或者,作为另一示例,对于可信层,硬件受保护的DRM系统使用通用CPU和存储器(而没有用于可信层中的解密的任何专用的单独硬件),但是在可信层和不可信层之间的转换是被硬件管理的。在此模型中,只有专门签名的固件指令可以在针对可信层的处理中加载和执行。更一般地,对于可信层,硬件受保护的DRM系统可以使用在可信层中运行或以安全模式运行的任何类型的处理单元(包括通用CPU)。可信层可以但不需要包括用于解密或媒体解码的专用硬件。相反,在通用CPU上运行的软件可以用于解密和/或媒体解码,但是媒体解码可以是在计算上非常密集的。

不可信层(也称为不可信世界,不安全层,不安全世界)包括假设为对媒体数据不可信的功能。不可信层可以包括用户模式组件以及内核模式组件。在不可信层中,加密/解密密钥和明文的媒体数据不可访问(也就是说,它们由于分离而不能被物理地访问或由于加密而不能被理解)。例如,对于不可信层,硬件受保护的DRM系统包括操作系统和/或应用的一个或多个模块,其跨一个或多个接口与可信层交互,但不能访问在受保护的缓冲器中的密钥或明文(解密)媒体数据(由于物理分离或由于媒体数据的加密)。密钥和媒体数据在不可信层内完全不可访问,或者它们在不可信层内仅以加密形式可用。

硬件受保护的DRM系统的架构取决于实现。图2在高级别处图示出了用于利用硬件受保护的DRM进行媒体解码控制的示例架构(200)。架构(200)包括不可信层和可信层。在图2中,可信层包括受保护的硬件和固件,包括DRM逻辑(250)、解码逻辑(260)和一个或多个受保护的缓冲器(270)。不可信层包括源(210)、控制模块(220)、主机解码器(230)和再现器(240)。各种类型的元数据通过不可信层的控制模块(220),包括起源于可信层的不透明元数据(224)和其它明文元数据(226)(也就是说,未加密的在不可信层内可访问和可解释的“明文”元数据),其可以起源于不可信层(和/或可信层)。元数据(224,226)流过不可信层,直到主机解码器(230)消费明文元数据(226)以控制解码、再现和/或显示的方面,并将不透明元数据(224)传递给可信层。

在不可信层中,源(210)向控制模块(220)提供源媒体数据(212)。源(210)可以是解复用器或从网络连接或存储装置提供源媒体数据(212)的其它组件。源媒体数据(212)包括加密的媒体数据(221),例如一个或多个加密的编码的媒体样本。例如,源媒体数据(212)是诸如视频比特流或音频比特流之类的基本流,包括至少部分加密的数据单元。源媒体数据(212)还可以包括未加密的媒体数据,其可以提供明文元数据(226)中的至少一些。例如,源媒体数据(212)可以包括关于以下项的数据:在解密中使用的初始化向量、标识用于解密的许可/内容密钥的密钥标识符值、视频解码参数,以及数据单元长度和类型。

控制模块(220)从源(210)接收源媒体数据(212)。在媒体处理流水线中,控制模块(220)占据解密器模块通常采取的位置,但不执行解密或处置解密的媒体数据。相反,控制模块(220)从源媒体数据(212)中的未加密数据解析或以其它方式提取明文元数据(226)。例如,对于明文元数据(226),控制模块(220)解析媒体解码参数(诸如序列参数集(“SPS”)、图片参数集(“PPS”),某些切片头部参数或其他用于视频解码的参数),关于数据单元的信息(诸如网络抽象层(“NAL”)单元的长度和类型)和/或子样本映射数据,其指示用于相应数据单元的未加密数量和加密数量。明文元数据(226)还可以包括从源媒体数据(212)解析的补充增强信息(“SEI”)消息。

在图2中的可信层中,利用硬件和固件来实现DRM逻辑(250),从而提供硬件受保护的安全执行环境,其中控制模块(220)的DRM组件可以运行。DRM逻辑(250)确定要用于解密的一个或多个密钥。例如,DRM逻辑(250)以安全的方式从许可证服务器获得(多个)密钥。从许可证服务器,DRM逻辑(250)还可以获得指示以下项的策略数据:如何使用(多个)密钥,要应用什么附加保护措施,(多个)密钥何时到期和/或关于(多个)密钥的使用的其他条件。策略数据可以由许可证服务器签名,可以在可信层中实施。例如,策略数据可以包括用于以下项的策略:(1)基于时间的约束,诸如到期时间/日期,内容将在第n次播放(例如,第一次播放)之后到期的规则,或者播放计数限制;(2)输出保护,诸如,是否要在输出链路上应用内容保护;和/或(3)解码的媒体数据是否可以输出到特定类型的输出,诸如模拟输出或无线链路。

不同的媒体样本(例如,视频帧)可以具有不同的密钥或使用相同的密钥。(如果它们具有相同的密钥,则不同的媒体样本可以具有用于解密的不同的初始化向量)。在图2中,DRM逻辑(250)将密钥数据作为不透明元数据(224)传回不可信层。不透明元数据(224)可以包括仅在可信层内可访问的其它信息(诸如,针对存储器位置的句柄或策略数据)。可替换地,密钥数据不被传回不可信层,而是替代地被传递到可信层内的另一组件(例如,解码逻辑(260))。

如图2中所示,控制模块(220)还可以将加密的媒体数据(221)传递到可信层,然后DRM逻辑(250)可以接收加密的媒体数据(221)。可以在源媒体数据(220)中加密在不可信层中用于控制媒体解码(诸如用于视频解码的某些切片头部数据)的一些参数和其它参数(诸如SEI消息)。在这种情况下,DRM逻辑(250)从传递给它的加密的媒体数据(221)解密这些参数,并将它们传回控制模块(220)作为明文元数据(226)的一部分。

当加密的媒体数据(221)被传递到可信层时,DRM逻辑(250)还可以对加密的媒体数据(221)进行转变加密。在这种情况下,DRM逻辑(250)使用(多个)原始内容密钥解密加密的媒体数据(221),并使用一个或多个会话密钥重新加密媒体数据,从而生成加密的媒体数据(222)。在转变加密之后,DRM逻辑(250)将加密的媒体数据(222)与(多个)新的会话密钥(在不透明元数据(224)中)一起传递到控制模块(220)。在这种情况下,密钥数据包括在加密的媒体数据(221)的转变加密中使用的(多个)会话密钥。可替换地,在转变加密之后,DRM逻辑(250)将加密的媒体数据(222)传递到可由解码逻辑(260)访问的缓冲器,而不将加密的媒体数据(222)传递到主机解码器(230)。或者,在不执行转变加密的情况下,DRM逻辑(250)将加密的媒体数据(221)或解密的媒体数据传递到解码逻辑(260)可访问的缓冲器。

在图2中,在不可信层中,控制模块(220)将不透明元数据(224)、明文元数据(226)和加密的媒体数据(222)传递到主机解码器(230)。传递到主机解码器(230)的加密的媒体数据(222)可以与源媒体数据(212)中的加密的媒体数据(221)(如果不使用转变加密的话)相同或不同(如果使用转变加密的话)。或者(如上所提到),加密的媒体数据(222)可以绕过主机解码器(230)(例如,因为在转变加密之后加密的媒体数据(222)在可信层内传递,或者因为加密的媒体数据(221)或解密的媒体数据由DRM逻辑(250)在可信层内传递)。

在一些示例实现中,主机解码器(230)是基于软件的主机视频解码器。可替换地,主机解码器(230)是音频解码器,图像解码器或其它类型的媒体解码器。一般地,主机解码器(230)是控制或驱动适于在解码逻辑(260)中解码的专用解码硬件或图形硬件的软件和/或固件。典型地,解码逻辑(260)中的专用解码硬件或图形硬件执行至少一些常见、简单、计算密集的解码操作(诸如逆频率变换操作、插值操作和环路滤波操作),但是其也可以执行其它更复杂的解码操作(诸如熵解码)。主机解码器(230)执行较高级操作,诸如比特流解析,其在算法上可能是复杂的。解码操作的这种分割可以帮助保持解码逻辑(260)的解码硬件/图形硬件简单,同时将算法复杂度转移到主机解码器(230)。由不可信层中的主机解码器(230)相对可信层中的解码逻辑(260)执行的确切操作取决于实现。

在图2中,主机解码器(230)将不透明元数据(224)和加密的媒体数据(222)传递到可信层,用于解密和解码。不透明元数据(224)和加密的媒体数据(222)可以跨解码加速接口传递。例如,解码加速接口可以是DirectX视频加速(“DXVA”)接口或其它加速接口。可替换地,主机解码器(230)跨接口传递仅仅不透明元数据(224)(如果未向主机解码器(230)提供加密的媒体数据的话),跨接口传递仅仅加密的媒体数据(222)(如果未向主机解码器(230)提供不透明元数据的话)或者既不跨接口传递不透明元数据,也不传递加密的媒体数据。

与解码并行,主机解码器(230)使用明文元数据(226)来控制解码、再现和/或显示的各个方面,而不考虑对于主机解码器(230)不透明的加密的媒体数据内的参数。例如,主机解码器(230)在视频解码期间使用明文元数据(226)来管理图片缓冲器和资源利用,而可信层中的专用视频解码硬件或加速硬件执行大多数的实际视频解码操作。视频解码操作可以遵循H.264/AVC标准、H.265/HEVC标准、SMPTE 421M(VC-1)标准、VPx格式或另一格式或标准。因此,例如,不可信层中的基于软件的主机视频解码器通过视频解码加速接口管理视频解码的各个方面,而不将解密的视频数据暴露给主机解码器(230)或不可信层中的其它组件。或者,主机音频解码器、图像解码器或其它类型的媒体解码器通过接口类似地控制媒体解码、再现和/或显示的方面。

在图2中的可信层中,解码逻辑(260)可以用硬件和固件来实现。在图2中,解码逻辑(260)从主机解码器(230)接收加密的媒体数据(222)和不透明元数据(224)。通过与解密逻辑(250)一起工作,解码逻辑(260)从不透明元数据(224)确定用于解密加密的媒体数据(222)的(多个)密钥并解密加密的媒体数据(222)。解码逻辑(260)解码该解密的但仍编码的媒体数据,从而生成解码的媒体数据(也就是说,媒体样本)。解码的媒体数据(例如,解码的视频帧)存储在(多个)受保护的缓冲器(270)中。可替换地,加密的媒体数据(222)和/或密钥数据由DRM逻辑(250)提供,然后被解密和解码。或者,解密的媒体数据由DRM逻辑(250)提供,然后由解码逻辑(260)解码。

在(多个)受保护的缓冲器(270)中,解码的媒体数据可以由可信层中的组件访问。然而,解码的媒体数据不能由主机解码器(230)或不可信层中的其它组件访问(例如,由于物理分离或重新加密)。例如,从不可信层,主机解码器(230)或不可信层中的另一个组件不能从(多个)受保护的缓冲器(270)读取或向(多个)受保护的缓冲器(270)写入。相反,从不可信层,主机解码器(230)或不可信层中的另一个组件向(多个)受保护的缓冲器(270)发送命令。例如,主机解码器(230)可以使用针对具有解码的媒体数据的适当缓冲器的句柄(232)来指定对解码的媒体数据的操作(例如,图片的输出、图片的删除、图片的缩放、图片的旋转、合成多个图片)。在不可信层中,主机解码器(230)将句柄(232)传递到再现器(240),再现器(240)可以类似地指定对解码的媒体数据执行的操作以用于输出。主机解码器(230)还可以使得明文元数据(226)中的SEI消息可用于显示模块(例如,用于字幕化文本,用于成帧信息)。

虽然图2示出了分离的DRM逻辑(250)、解码逻辑(260)和(多个)受保护的缓冲器(270),但是DRM逻辑(250)、解码逻辑(260)和(多个)受保护的缓冲器(270)可以是单个组件(例如,单个SoC)的一部分。

图3示出了用于利用硬件受保护的DRM进行媒体解码控制的示例架构(300)的附加细节。与图2相比,图3示出了不可信层的控制模块(220)和主机解码器(230)、可信层的DRM逻辑(250)和解码逻辑(260)以及不可信层和可信层中的驱动器的附加细节。它还示出了特定于视频解码控制的细节。此外,图3示出了通过硬件受保护的DRM系统的不透明元数据(224)和加密的媒体数据(221,222)的特定流程,其与使用会话密钥的媒体数据的转变加密一致。

在图3中,控制模块(220)接收源媒体数据(212),其包括加密的媒体数据(221)以及未加密的媒体数据。在图3中,源媒体数据(212)包括基本视频比特流,其包括NAL单元。例如,NAL单元根据H.264/AVC标准、H.265/HEVC标准或另一标准或格式被格式化。NAL单元包括视频解码参数,诸如SPS数据、PPS数据和切片报头参数,以及切片数据和补充增强信息(“SEI”)消息。

控制模块(220)从源媒体数据(212)提取一些明文元数据(226)。特别地,控制模块(220)可以提取SPS数据和/或PPS数据(302)、NAL单元类型和长度(304)以及子样本映射数据(306),其指示用于相应的NAL单元的未加密数量和加密数量。例如,切片NAL单元(诸如起始码,包括NAL单元类型的NAL单元头部)的一部分可以是未加密的,而切片NAL单元的另一部分(诸如切片数据)是加密的。用于NAL单元的子样本映射数据(306)指示多少NAL单元是明文数据以及多少是加密数据。

在高级别处,不可信层和可信层之间的交互包括三个步骤,其在图3中示为步骤A、B和C。在步骤A中,控制模块(220)向可信层做出针对密钥数据(312)的请求(311)。在图3中,请求(311)通过解密驱动器(310,330)的层输送到可信层中的DRM逻辑(250)。在图3中,不可信层中的(多个)解密驱动器(310)是用户模式驱动器,但是可替换地,(多个)解密驱动器(310)中的一个或多个是不可信层中的内核模式驱动器。在到达DRM逻辑(250)之前,请求(311)还通过可信层中的一层或多层解密驱动器(330)。

DRM逻辑(250)确定要用于解密的一个或多个密钥,并将密钥数据(312)作为不透明元数据(224)的一部分传递回不可信层。例如,DRM逻辑(250)包括用于确定(多个)密钥的密钥槽管理逻辑。要用于解密的(多个)密钥可以是原始内容密钥(如果加密的媒体数据(222)是源媒体数据(212)中的加密的媒体数据(221)的话)。或者,用于解密的(多个)密钥可以是(多个)会话密钥(如果加密的媒体数据(221)被转变加密以生成加密的媒体数据(222))。密钥数据(312)可以是要用于解密的(多个)密钥的加密版本,指定这样的(多个)密钥的令牌或者针对存储这样的(多个)密钥的安全位置的句柄。例如,密钥数据(312)可以是(在转变加密中使用的)会话密钥的加密版本、表示这种会话密钥的令牌、针对存储这种会话密钥的安全位置的句柄,原始内容密钥的加密版本(如果不使用转变加密的话)、表示这种原始内容密钥的令牌或者针对存储这种原始内容密钥的安全位置的句柄。可以使用由可信层内的不同组件共享的对称密钥,或者通过在可信层内的不同组件之间以其它方式共享的密钥,来加密原始内容密钥或会话密钥的加密版本。

在步骤B中,控制模块(220)将加密的媒体数据(221)的至少一些传递到可信层。加密的媒体数据(221)通过不可信层中的(多个)解密驱动器(310)和可信层中的(多个)解密驱动器(330)输送到可信层中的DRM逻辑(250)。在一些情况下,在源媒体数据(212)中加密将作为明文元数据(226)的一部分的视频解码参数(诸如某些切片报头参数(314))。DRM逻辑(250)可以解密加密的媒体数据(221),以便提取这样的视频解码参数。DRM逻辑(250)将提取的明文元数据(226)(在图3中,所选择的切片报头参数(314))传递回控制模块(220)。诸如NAL单元类型和长度(304)之类的其它参数也可以在源媒体数据(212)中加密,并且因此由DRM逻辑(250)提取。可替换地,视频解码参数可以在DRM逻辑(250)的控制下由GPU或其它解码硬件提取,然后传递回控制模块(220)。例如,视频解码参数可以在DRM逻辑(250)的控制下由供应商特定的驱动器提取。

在图3的示例中,DRM逻辑(250)还可以对加密的媒体数据(221)进行转变加密。如果是,则DRM逻辑(250)使用与策略数据一致的(例如,从许可证服务器获取的)一个或多个原始内容密钥解密编码的媒体数据(221),并使用一个或多个会话密钥重新加密媒体数据,从而生成加密的媒体数据(222)。在这种情况下,密钥数据(312)指定(多个)会话密钥。DRM逻辑(250)将加密的媒体数据(222)传递到控制模块(220)。或者,DRM逻辑(250)绕过不可信层中的控制模块(220)和主机解码(230)将加密的媒体数据(222)传递到解码逻辑(260)。转变加密可以改变相应NAL单元中的未加密数据和加密数据的数量,在这种情况下,控制模块(220)更新子样本映射数据(306)。

在不可信层中,控制模块(220)将不透明元数据(224)和明文元数据(226)传递到主机解码器(230)。如果传递回它,则控制模块(220)还将加密的媒体数据(222)传递到主机解码器(230)。例如,将不透明元数据(224)和/或明文元数据(226)作为针对加密的编码的媒体样本的元数据属性进行传递。

在步骤C中,主机解码器(230)将包括密钥数据(312)的不透明元数据(224)传递到可信层以供解密使用。主机解码器(230)还将加密的媒体数据(222)(如果其被提供给它)传递到可信层以用于解密和解码。在图3中,不透明元数据(224)和加密的媒体数据(222)通过一层或多层解码驱动器(320)输送到可信层中的解码逻辑(260)。例如,(多个)解码驱动器(320)是DXVA接口或其它用户模式驱动器的一部分。不透明元数据(224)和加密的媒体数据(222)还可以在到达解码逻辑(260)之前通过可信层中的一层或多层驱动器(未示出)。除了密钥数据(312)和其它不透明元数据(224)之外,主机解码器(230)还可以将解密期间使用的其它数据(例如,初始化向量数据、密钥数据(312)的描述)传递到解码逻辑(260)。

解码逻辑(260)接收不透明元数据(224)和加密的媒体数据(222)。与解密逻辑(250)一起工作,解码逻辑(260)从密钥数据(312)确定用于解密加密的媒体数据(222)的(多个)密钥。例如,当密钥数据(312)是令牌时,解码逻辑(260)向解密器逻辑(250)做出包括令牌的请求(362)。解密器逻辑(250)使用令牌确定密钥(364)(原始内容密钥或会话密钥),并将密钥(364)传递回解码逻辑(260)。或者,当密钥数据(312)是加密的密钥时,解码逻辑(260)向解密器逻辑(250)做出包括加密的密钥的请求(362)。解密器逻辑(250)解密密钥(364)并将密钥(364)传递回解码逻辑(260)。然后,与解密器逻辑(220)一起工作,解码逻辑(260)使用密钥(364)以与策略数据(如果存在的话)一致的方式解密加密的媒体数据(222)。

解码逻辑(260)对解密的但仍然编码的媒体数据进行解码,从而生成解码的媒体数据。并发地,在不可信层中,主机解码器(230)使用明文元数据(226)来控制解码、再现和/或显示的各个方面,而不考虑对于主机解码器(230)不透明的加密的媒体数据(222)内的参数。例如,主机解码器(230)在视频解码期间使用SPS数据和/或PPS数据(302)、NAL单元类型和长度(304)和某些切片头部参数(314)来管理图片缓冲器和资源利用。

III.利用硬件受保护的DRM进行媒体解码控制的示例技术

图4从不可信层的角度图示出了用于利用硬件受保护的DRM进行媒体解码控制的一般技术(400)。图5从可信层的角度图示出了用于利用硬件受保护的DRM进行媒体解码控制的对应的一般技术(500)。

参考图4,在硬件受保护的DRM系统的不可信层中,控制模块接收(410)源媒体数据,该源媒体数据包括加密的媒体数据(“第一加密的媒体数据”,例如一个或多个加密的、编码的媒体样本)。第一加密的媒体数据在不可信层内是不透明的。

控制模块处理(420)关于媒体数据的元数据。元数据在不可信层内不是不透明的(也就是说,这样的元数据是“明文的”——未加密的——因此在不可信层内可访问和可解释)。控制模块可以解析来自源媒体数据的明文元数据中的至少一些。控制模块还可以从硬件受保护的DRM系统的可信层接收明文元数据的至少一些。(在这种情况下,控制模块可以将源媒体数据的至少一些传递到可信层,可信层接收源媒体数据中的至少一些,确定明文元数据中的至少一些,并且传递明文元数据的至少一些到不可信层。)例如,明文元数据可以包括媒体解码参数(诸如至少一些SPS参数(所有SPS参数或其子集)、至少一些PPS参数(所有PPS参数,或其子集)、至少一些切片报头参数(所有切片报头参数或其子集)或用于视频解码的其它参数),关于数据单元的信息(诸如长度、类型)和/或子样本映射数据,其指示用于相应数据单元的未加密数量和加密数量量。可替换地,明文元数据可以包括其它类型的媒体解码参数,关于数据单元的信息和/或子样本映射数据。

参考图5,在硬件受保护的DRM系统的可信层中,模块使用密钥数据来解密(530)加密的媒体数据(“第二加密的媒体数据”)。如果密钥数据是用于解密第二加密的媒体数据的密钥(原始内容密钥、会话密钥)的加密版本,则模块在使用密钥之前对密钥进行解密。或者,如果密钥数据是表示要用于解密第二加密的媒体数据的密钥的令牌,则模块使用令牌确定密钥,然后使用该密钥来解密第二加密的媒体数据。或者,如果密钥数据是针对存储密钥的安全位置的句柄,则模块从安全位置恢复密钥。第二加密的媒体数据可以是第一加密的媒体数据(来自源媒体数据)或其转变加密的版本(先前在可信层中生成,可信层从不可信层接收第一加密的媒体数据并使用会话密钥将第一加密的媒体数据传送加密到第二加密的媒体数据)。然后,可信层中的模块解码(540)解密的媒体数据。

在硬件受保护的DRM系统的可信层中,模块可以接收用于第一加密的媒体数据的策略数据。例如,模块可以最初从许可证服务器(该许可证服务器还提供用于第一加密的媒体数据的密钥数据)接收策略数据,并且随后将其作为不透明元数据(224)的一部分或以某种其它方式接收。策略数据可以指示如何使用(多个)密钥,要应用什么附加的保护措施,(多个)密钥何时到期和/或(多个)密钥使用的其它条件。例如,策略数据可以包括用于以下项的策略:(1)基于时间的约束,诸如到期时间/日期、内容将在第n次播放(例如,第一次播放)之后到期的规则、或者播放计数限制;(2)输出保护,诸如是否在输出链路上应用内容保护;和/或(3)解码的媒体数据是否可以输出到特定类型的输出,诸如模拟输出或无线链路。策略数据可以由许可证服务器签名,在这种情况下,模块验证签名。然后,模块在解密期间实施策略数据。

返回到图4,不可信层中的主机解码器使用(440)元数据来管理在可信层中的解码(540)、再现和/或显示的至少一些方面。

在一些实现中,除了由主机解码器使用的明文元数据之外,还在可信层和不可信层之间交换其它元数据(例如,密钥数据、针对共享的存储器位置的句柄),其中其它元数据在不可信层内是不透明的。例如,可信层中的模块确定包括用于解密第二加密的媒体数据的密钥数据的其它不透明元数据,并将其它不透明元数据传递到不可信层。控制模块从可信层接收其它不透明元数据。控制模块将其它不透明元数据(包括密钥数据)传递给主机解码器,主机解码器将其传递到可信层以用于第二加密的媒体数据的解密。可信层中的模块从不可信层接收其它元数据,并使用它来解密第二加密的媒体数据。类似地,其它不透明元数据可以包括到针对可信层中的共享的存储器位置的句柄(在不可信层内不透明),其可以存储明文媒体数据或加密的媒体数据。在这种情况下,控制模块接收不透明句柄并将其传递给主机解码器,主机解码器将其传递到可信层以供在解密和/或解码中使用。或者,不透明元数据可以包括策略数据。在其它实现中,这样的其它不透明元数据不在可信层和不可信层之间交换。

图6a和6b从不可信层的角度图示出了用于利用硬件受保护的DRM进行媒体解码控制的更详细的示例技术(600)。图7a和7b从可信层的角度图示出了用于利用硬件受保护的DRM进行媒体解码控制的对应示例技术(700)。与图4和图5相比,图6a、6b、7a和7b示出了在硬件受保护的DRM系统内的不透明元数据的特定流,其与使用会话密钥对媒体数据进行的转变加密一致。

参考图6a,在硬件受保护的DRM系统的不可信层中,控制模块接收(610)源媒体数据,该源媒体数据包括加密的媒体数据(“第一加密的媒体数据”,例如一个或多个加密的、编码的媒体样本)。第一加密的媒体数据在不可信层内是不透明的。

参考图7a,在硬件受保护的DRM系统的可信层中,模块(诸如图2或3中的DRM逻辑(250))确定(710)包括用于加密的媒体数据(“第二加密的媒体数据”)的解密的密钥数据的元数据(“第一元数据”)。密钥数据可以是例如要用于解密第二加密的媒体数据的密钥的加密版本或者表示这样的密钥的令牌或句柄。第二加密的媒体数据可以是第一加密的媒体数据或其转变加密的版本。第一元数据还可以包括策略数据。

可信层中的模块将第一元数据传递(720)到硬件受保护的DRM系统的不可信层。可信层中的模块还可以将第二加密的媒体数据传递到不可信层。特别地,当第二加密的媒体数据是第一加密的媒体数据的转变加密版本时,可信层中的模块可以从不可信层接收第一加密的媒体数据,将第一加密的媒体数据转变加密为第二加密的媒体数据,然后将第二加密的媒体数据传递到不可信层。或者,为了解密和解码的目的,可信层中的模块可以将第二加密的媒体数据传递到可信层中的另一模块。

回到图6a,从硬件受保护的DRM系统的可信层,控制模块接收(620)第一元数据。如上所提到的,该第一元数据包括用于第二加密的媒体数据的解密的密钥数据。第一元数据和第二加密的媒体数据在不可信层内是不透明的。

在不可信层中,控制模块还可以处理在不可信层内并非不透明的元数据(“第二元数据”)。例如,控制模块可以解析来自源媒体数据的第二元数据中的至少一些,只要第二元数据在源媒体数据中未被加密即可。或者,控制模块可以将源媒体数据的至少一些传递到可信层。在这种情况下,可信层中的模块(例如,DRM逻辑)可以从不可信层接收源媒体数据的至少一些,从源媒体数据确定第二元数据中的至少一些,然后将这样的第二元数据传递到不可信层。然后,可信层中的模块从可信层接收返回的第二元数据的一些。第二元数据可以包括媒体解码参数(诸如SPS的至少一些、PPS的至少一些、至少一些切片头部参数或用于视频解码的其它参数)、关于数据单元的信息(诸如长度,类型)和/或子样本映射数据。

参考图6a,控制模块将第一(不透明)元数据和第二(明文)元数据传递(630)到不可信层中的主机解码器。如果第二加密的媒体数据被传递到不可信层中的控制模块,则控制模块还可以将第二加密的媒体数据传递到主机解码器。参考图6b,主机解码器可以将第一元数据(包括密钥数据)传递(640)到可信层,以用于与策略数据一致的第二加密的媒体数据的解密。如果提供给主机解码器,则主机解码器还可以将第二加密的媒体数据传递到可信层,以用于与策略数据一致地使用密钥数据进行解密,并且用于对解密的媒体数据进行解码。

参考图7b,可信层中的模块(例如,图2或图3中的解码逻辑(260))从不可信层接收(730)第一元数据(包括密钥数据)。可信层中的模块还(从主机解码器或以其它方式)接收第二加密的媒体数据。然后,可信层中的模块使用密钥数据解密(740)第二加密的媒体数据。如果密钥数据是用于解密第二加密的媒体数据的密钥(原始内容密钥,会话密钥)的加密版本,则模块在使用密钥之前对密钥进行解密。或者,如果密钥数据是表示要用于解密第二加密的媒体数据的密钥的令牌,则模块使用令牌确定密钥,然后使用该密钥来解密第二加密的媒体数据。或者,如果密钥数据是针对存储密钥的安全位置的句柄,则模块可以从安全位置恢复密钥,然后使用密钥来解密第二加密的媒体数据。可信层中的模块还可以实施其(从主机解码器作为第一元数据的一部分,或以其他方式)接收的策略数据。然后,模块解码(750)解密的媒体数据。

在不可信层中,主机解码器可以在解码期间使用第二元数据来管理图片和/或资源。参考图6b,主机解码器使用(650)第二元数据来管理解密的媒体数据的解码、再现和/或显示的各个方面,而不是将第二元数据传递到可信层。

IV.利用硬件受保护的DRM进行视频解码控制的示例实现

本部分描述了利用硬件受保护的DRM进行的视频解码控制的一些示例实现中的架构、元数据和接口调用的示例。

A.硬件级安全性方面

在一些示例实现中,硬件受保护的DRM系统提供硬件级安全性。也就是说,在硬件受保护的DRM系统的可信层中使用基于硬件的保证来保护媒体数据。可信层中的硬件/固件的特征通过接口暴露。实现接口的各种功能通过接口将调用连接到硬件/固件的特征。接口实现和硬件/固件(一起,“DRM硬件/固件实现”)共同为硬件受保护的DRM提供安全执行环境(也称为可信执行环境)。

通过DRM硬件/固件实现的各个方面来提供硬件级安全性。例如,私钥、原始内容密钥和会话密钥不以明文的方式离开DRM硬件/固件实现。也就是说,密钥仅以加密形式离开DRM硬件/固件实现。在不可信层中,加密的密钥被处置为不透明数据-只有DRM硬件/固件实现理解密钥的格式。类似地,在适用的情况下,明文(解密)的媒体数据保留在DRM硬件/固件实现内,并且仅在DRM硬件/固件实现的组件之间传输(例如,用于解码,用于再现)。对媒体数据的这种约束可以应用于一些类型的媒体数据(例如,视频),但不应用于其它类型的媒体数据(例如,音频)。

DRM硬件/固件实现内的存储器的内容不可由不可信层的组件访问。更一般地,可信层和不可信层之间的隔离由DRM硬件/固件实现来实施。这种隔离可以通过使用物理上分离的存储器(例如,不同芯片上的存储器)或通过以硬件受保护的方式使用加密来实现。

DRM硬件/固件实现可以使用各种类型的加密/解密方案和密钥中的任何一种。例如,DRM硬件/固件实现使用128比特AES用于对称加密/解密,并且使用256比特ECC用于非对称加密/解密。DRM硬件/固件实现的接口可以允许新类型的加密/解密方案和密钥。因此,DRM硬件/固件实现可以支持不同的密钥大小和加密/解密方案,只要添加用于加密和解密的适当功能即可。

在DRM硬件/固件实现中,可以使用“密钥块”来表示密钥数据。密钥块是包含要用于加密或解密的密钥的数据的数据结构。尽管密钥块可以在可信层和不可信层之间传递,但是密钥块在不可信层内典型地是不透明的。

DRM硬件/固件实现可以包括适于解密和/或解码的一个或多个集成电路、存储用于控制一个或多个集成电路的固件指令的存储器、以及用于存储解密的媒体数据、解码的媒体数据和用于解密的密钥的受保护的缓冲器。可替换地,对于可信层,硬件受保护的DRM系统可以使用通用的CPU和存储器,而没有用于解密的任何专用的单独硬件,但是可信层和不可信层之间的转换是硬件管理的,只有专门签名的固件指令可以被加载到存储器中并在对可信层的处理中执行。例如,硬件受保护的DRM系统使用一种版本的技术。更一般地,对于可信层,硬件受保护的DRM系统可以使用在可信层中运行或以安全模式运行的任何类型的处理单元(包括通用CPU)。可信层可以但不需要包括用于解密或媒体解码的专用硬件。

B.示例架构

在不可信层内,控制模块(220)可以对一层或多层解密驱动器(310)进行调用。至少一个这样的驱动器(310)从控制模块(220)接收用于解密操作的调用。至少一个这样的驱动器(310)对到可信层的接口进行调用。

DRM硬件/固件实现暴露可信层和不可信层之间的接口,与两层之间的传输机制无关。例如,可以使用任何适当的传输机制跨越在用户模式(在不可信层中)运行的软件与在可信层中运行的固件之间的边界传递各种类型的参数。

对于可信层,DRM硬件/固件实现包括若干层功能,包括接口实现层和硬件/固件层。接口实现层将接口暴露给不可信层。一般地,接口包括用于在DRM硬件/固件实现内的解密和解码的各种顶级功能,以及用于策略实施的顶级功能。例如,接口包括以下功能:(a)分配/释放用于解密的上下文,(b)初始化设备资产,诸如密钥(例如对数据签名、检查设备密钥),(c)使用本地供应生成密钥(在本地获取密钥、许可证证书和其它资产)或处理证书,(d)解密和回放内容(包括下面描述的设置功能和下面描述的预处理功能),和/或(e)执行其它操作。接口实现实现了接口所暴露的顶级功能。

接口的顶级功能可以进而调用由解密硬件/固件或解码硬件/固件暴露的功能。接口的顶级功能和由硬件/固件暴露的功能之间的映射可以是直接的(1∶1映射)或更复杂的(例如,一个顶级功能调用由硬件/固件暴露的多个功能)。例如,解密硬件/固件暴露并实现以下功能:(a)分配/释放在可信层中的上下文,(b)分配/释放在可信层内的存储器,(c)管理密钥块(例如,分配数据,释放数据,转换数据所有者,复制数据),(d)分配/释放/导出密钥(e)包装/解开用于存储的密钥,(f)用数字签名进行签名/验证数字签名,(g)加密/解密/转变加密数据,(h)促进本地供应,(i)促进远程供应(使用远程服务器获取密钥、许可证证书和其它资产),和/或(j)执行其它操作。

C.示例元数据属性

在图3的架构(300)的一些示例实现中,以下元数据属性可以附加到从控制模块(220)传递到主机解码器(230)的加密的视频帧。

第一属性(“KeylnfolD属性”)是应用于视频帧的全局唯一标识符(“GUID”)。它是明文元数据(226)的示例。GUID指示要用于视频帧的硬件受保护的DRM的标识符(例如,密钥标识符、许可证标识符、内容密钥/策略对)。控制模块(220)首创用于KeylnfolD属性的GUID。主机解码器(230)可以提取KeylnfolD属性并将其提供给(多个)解码驱动器(320)(例如,作为在调用功能以开始解密和解码视频帧时传递的数据结构的一部分),其将KeylnfolD属性输送到可信层。

第二属性(“Keylnfo属性”)包括应用于视频帧的密钥数据(312)。它是不透明元数据(224)的示例。Keylnfo属性包括关于要用于视频帧的硬件受保护的DRM的密钥槽、密钥标识符、加密的密钥等的细节。控制模块(220)使用由可信层提供的不透明数据来为加密的视频帧设置Keylnfo属性。例如,Keylnfo属性可以被设置为包括从针对对设立功能的调用返回的实现特定的密钥数据快,如下所述。主机解码器(230)可以提取Keylnfo属性并将其提供给(多个)解码驱动器(320)(例如,作为在调用功能以开始解密和解码视频帧时传递的数据结构的一部分),其将Keylnfo属性输送到可信层。

第三属性(“VideoDecryptor属性”)是应用于视频帧的接口指针。它是明文元数据(226)的示例。它将视频帧与用于在使用硬件受保护的DRM时对帧进行解密/解码的上下文信息相关联。控制模块(220)首创并设置VideoDecryptor属性。主机解码器(230)可以提取VideoDecryptor属性并且使用它确定在视频帧提交期间的上下文信息,从而向(多个)解码驱动器(320)提供上下文信息(例如,作为当调用功能以开始解密和解码视频帧时传递的数据结构的一部分)。

第四属性(“SubSample_Mapping属性”)包括子样本映射数据(306)。例如,子样本映射数据(306)包括应用于视频帧的NAL单元的字节范围值的阵列,其中每两个字节范围值构成一对。字节范围值可以是DWORD(32比特值)或某种其它类型的值。一对中的第一个值表示NAL单元中的明文字节的数目,并且该对中的第二个值表示NAL单元中的加密的字节的数目。一对中的任一值可以为零,但是在典型情况下针对一对的两个值从不为零(利用两个零值编码一对可能是可能的,但是将是浪费的)。因此,SubSample_Mapping属性的字节值阵列指示在源媒体数据(212)中哪些字节范围要解密以及哪些字节范围不解密,包括整个NAL单元被解密的可能性,整个NAL单元不被解密的可能性,或者NAL单元被部分解密的可能性。可替换地,用于SubSample_Mapping属性的不同数据结构存储指示用于相应数据单元的明文区域和加密区域的值。SubSample_Mapping属性是明文元数据(226)的示例。控制模块(220)潜在地基于由控制模块(220)从源媒体数据(212)解析的值来设置SubSample_Mapping属性。然而,如果加密的媒体数据(222)已被转变加密,则字节范围的值可能已经改变。在这种情况下,控制模块(220)可以相应地更新SubSample_Mapping属性的值。主机解码器(230)可以提取SubSample_Mapping属性并将字节范围值传递给(多个)解码驱动器(320)(例如,作为当调用功能以传递加密的媒体数据(222)时传递的数据结构的一部分))。

第五属性(“ClearSliceHeaderData属性”)包括应用于视频帧的所选的切片报头参数(314)。它是明文元数据(226)的示例。控制模块(220)设置ClearSliceHeaderData属性。如果所选的切片报头参数(314)在源媒体数据(212)中未被加密,则控制模块(220)可以从源媒体数据(212)解析(并验证)所选的切片报头参数(314)。否则,可信层中的一个或多个组件可以从加密的媒体数据(221)解析(并且验证)所选的切片报头参数(314),可能地使用供应商特定的驱动器来解析(并且验证)所选的切片报头参数(314),并且将所选的切片报头参数(314)返回到控制模块(220)。例如,ClearSliceHeaderData属性包括图8的列表(800)中所示的所选的切片报头参数(314)的组合。在图8中,SliceHeader结构包括切片报头的长度dSliceHeaderLen(以字节为单位),随后是切片报头数据的dSliceHeaderLenbytes(字节)。切片报头标签集合在SliceHeaderSet结构中连续地序列化。主机解码器(230)可以从ClearSliceHeaderData属性提取所选的切片报头参数(314),并使用所选的切片报头参数(314)来控制解码的方面(例如,图片缓冲器管理,资源管理)。

第六属性(“NALULengthInfo属性”)包括指示用于视频帧的源媒体数据(212)中的NAL单元的长度的数据。第七属性(“NALUTypes属性”)包括指示用于视频帧的NAL单元的类型的数据。这些属性是明文元数据(226)的示例。控制模块(220)设置NALULengthInfo属性和NALUTypes属性。如果NAL单元类型/长度(304)未在源媒体数据(212)中加密,则控制模块(220)可以从源媒体数据(212)解析(并且验证)NAL单元类型/长度(304)(例如,在帧扫描期间)。否则,可信层中的一个或多个组件可以从加密的媒体数据(221)解析(并且验证)NAL单元类型/长度(304),可能地使用供应商特定的驱动器来解析(并且验证)NAL单元类型/长度(304),并且将NAL单元类型/长度(304)返回到控制模块(220)。主机解码器(230)可以从NALULengthInfo属性和NALUTypes属性提取值,并使用所提取的值来控制解码的方面(例如,图片缓冲器管理,资源管理)。

NAL单元的NAL单元长度计及针对NAL单元的起始码(如果有的话)和NAL单元类型。NALULengthInfo属性可以包括视频帧中的每NAL单元的DWORD。例如,对于视频帧的五个NAL单元(包括辅助单元定界符(9个字节)、SPS(25个字节)、PPS(10个字节)、第一切片数据(5OK)和第二切片数据(60K)),NALULengthInfo属性包括具有值9、25、10、50K和60K的五个DWORDS,NALUTypes属性包括用于视频帧的相应NAL单元的NAL单元类型字节。对于H.264/AVC视频,一个NAL单元类型是一个字节,包括语法元素forbidden_zero_bit、nal_ref_idc,和nal-unit-type。

第八属性(“SPSPPSData属性”)包括用于视频帧中的NAL单元的SPS数据和/或PPS数据(302)。SPS数据和/或PPS数据(302)在SPSPPSData属性中以它们出现在源媒体数据(212)中的相同顺序表示。对于每个SPS NAL单元或PPS NAL单元,格式是四字节(DWORD)长度,后跟SPS或PPS数据。例如,布局可以是处于DWORD中的值10,SPS的10字节数据,处于DWORD中的值5和PPS的5字节数据,总共4+10+4+5=23字节。SPSPPSData属性是明文元数据(226)的示例。控制模块(220)设置SPSPPSData属性。如果SPS/PPS数据(302)在源媒体数据(212)中未被加密,则控制模块(220)可以从源媒体数据(212)解析(并且验证)SPS/PPS数据(例如,在帧扫描期间)。否则,可信层中的一个或多个组件可以从加密的媒体数据(221)解析(并且验证)SPS/PPS数据(302),可能地使用供应商特定的驱动器来解析(并且验证)SPS/PPS数据(302),并将SPS/PPS数据(302)返回到控制模块(220)。主机解码器(230)可以从SPSPPSData属性提取SPS/PPS数据(302),并使用所提取的值来控制解码的方面(例如,图片缓冲器管理,资源管理)。

第九属性(“SampleID属性”)包括在使用硬件受保护的DRM时在视频帧的解密期间使用的数据(例如,初始化向量)。它是明文元数据(226)的示例,但是可以被传递到解码逻辑(260)(以及到DRM逻辑(250))以用于解密。控制模块(220)潜在地基于由控制模块(220)从源媒体数据(212)解析的值来设置视频帧的SampleID属性。例如,可以将初始化向量提供为容器格式的语法元素。然而,如果加密的媒体数据(222)已被转变加密,则SampleID属性的值可能已经改变。在这种情况下,控制模块(220)可以相应地更新SampleID属性的值。主机解码器(230)可以提取SampleID属性并将提取的值传递给(多个)解码驱动器(320)(例如,作为当调用功能以传递加密的媒体数据(222)时传递的数据结构的一部分)。

当控制视频帧的解码方面时,主机解码器(230)不考虑加密的媒体数据(222),因为加密的媒体数据(222)在不可信层内是不透明的。然而,主机解码器(230)可以考虑以下四个元数据属性——具有用于切片报头解析的SPS/PPS数据(302)的SPSPPSData属性(如果针对视频帧存在的话)、具有切片报头参数(314)的ClearSliceHeaderData、以及NALUTypes和NALULengthInfo属性,来查找和定位切片NAL单元。

D.示例功能调用

在图3的架构(300)的一些示例实现中,当对加密的视频数据进行解密和解码时,可以调用以下功能。

1.步骤A——创建密钥数据

当控制模块(220)遇到新的加密的媒体数据(221)时,控制模块(220)可以准备与新密钥一起使用的密钥槽(参见例如图3中的步骤A)。例如,控制模块(220)调用(多个)解密驱动器(310)之一的功能以初始化硬件密钥(用于密钥数据(312)的请求(311)的示例)。功能调用渗入(filter down)由可信层中的(多个)解密驱动器(330)和DRM逻辑(250)提供的安全执行环境,从而达到对在(多个)解密驱动器(330)之一中实现的“设立”功能的调用。

设立功能接受许可证链,该许可证链可以用解密方案解密内容并且绑定到给定许可证密钥块。该功能返回充足的数据(包括密钥数据(312))以便发生内容解密。各种输入变元可以提供在创建密钥数据(312)时可以使用的内容密钥数据、许可证数据、策略数据和实现特定的数据(私有数据)。输入/输出变元可以提供可信的执行环境上下文。设立功能可以接受指定由调用者为解密而请求的模式的变元作为输入。设立功能可以提供指定要用于解密的模式的变元作为输出。输出变元可以提供针对在某些情况下用于解密(以便回放)具有适当密钥标识符的内容的密钥的内容解密密钥块。另一输出变元可以提供用于卸载解密的实现特定的密钥数据块(密钥数据(312)的示例)。实现特定的密钥数据块在硬件受保护的DRM系统的不可信层内是不透明的。

总的来说,设立功能解析并且验证各种输入变元上的签名,验证校验和,验证许可证的日期(如果硬件受保护的DRM包括时钟),验证安全级别,并验证所请求的解密模式被支持。设立功能解析来自许可证的附加数据以构建内容解密密钥,构建内容解密密钥并且对其签名,并且返回所使用的内容解密密钥和模式。设立功能还构建实现特定的密钥数据块(密钥数据(312)的示例)并返回它。

控制模块(220)接收从设立功能输出的实现特定的密钥数据块。控制模块(220)将实现特定的密钥数据块作为关联到给定内容密钥/策略的每个加密的视频帧上的Keylnfo属性(见上文)。根据实现,实现特定的密钥数据块可以是用于解密源媒体数据(212)中的加密的媒体数据(221)的原始内容密钥、用于解密其转变加密版本的会话密钥,或者表示这些密钥中的一个的令牌或句柄。

2.步骤B——提取元数据,转变加密

当控制模块(220)将加密的媒体数据(221)传递到可信层时,控制模块(220)可请求提取所选的切片报头参数(314)(以及可能的包括在明文元数据(226)中的其它参数)和/或转变加密。例如,从控制模块(220)到安全执行环境的调用达到对在(多个)解密驱动器(330)之一中实现的“预处理”功能的调用。在预处理功能中,从部分或完全加密的帧中解析所选的切片报头参数(314),并且可以对加密的媒体数据(221)进行转变加密。一般而言,从预处理功能作为输出返回的值被并入视频帧或视频帧的元数据属性中,其可以由控制模块(220)传递到主机解码器(230)。

对于预处理功能,输入变元可以分别提供由设立功能返回的内容解密密钥块和实现特定的密钥数据块(密钥数据(312)的示例)。输入/输出变元可以提供可信的执行环境上下文。预处理功能可以接受指示用于解密的初始化向量的变元作为输入,并返回包括(在转变加密之后)初始化向量的更新值或(否则)初始化向量的初始值的变元。预处理功能还可以接受包括子样本映射数据(306)的变元作为输入,并且返回包括新的或经修改的子样本映射数据(306)(如果内容被转变加密的话)或者(否则)原始子样本映射数据(306)的变元。预处理功能可以接受要解密的加密字节作为输入,要解密的加密字节可以是所有加密的媒体数据(221)或仅是加密的媒体数据(221)的一部分。(对于切片报头参数(314)的提取,使用NAL单元类型和起始码在不可信层中标识的切片NAL单元的初始部分可以与子样本映射数据一起被传递。)作为输出,预处理功能可以返回经转变加密的字节(如果内容被转变加密的话)或(否则)原始值。输出变元可以包括从加密的媒体数据(221)提取的切片报头参数(314)。另一个输出变元可以包括在加密和解密(如果有的话)期间使用的不透明帧数据或空占位符。

总的来说,在预处理功能中,(多个)解密驱动器(330)中的一个其自身或与DRM逻辑(250)一起工作来解析并且验证在各个输入变元上的签名,使用给定子样本映射数据(306)和初始化向量将所接收的加密的媒体数据(221)解密为受保护的缓冲器中的明文媒体数据,并解析编码的视频帧以定位(多个)切片报头并提取所选的切片报头参数(314)。在(多个)解密驱动器(330)或DRM逻辑(250)之一的控制下,可以使用GPU或其它解码硬件来定位(多个)切片报头并提取切片报头参数(314)。如果指定了转变加密,则解密驱动器(330)和/或DRM逻辑(250)对媒体数据进行转变加密,并且返回加密的(转变加密的)媒体数据(222)以及经修改的子样本映射数据(306)。预处理功能还返回任何更新的不透明元数据和(明文的)所选的切片报头参数(314)。

例如,为了针对根据H.264/AVC标准格式化的切片NAL单元的切片报头提取所选的切片报头参数(314),解密驱动器(330)和/或DRM逻辑(250)移除任何的仿真阻止字节(在定义的字节样式中的0x03字节),移除first_mb_in_slice语法元素中的前导比特,移除从direct_spatial_mv_pred标签元素到pred_weight_table()结构的末尾的语法元素的比特,以及移除在切片报头中在cabac_init_idc语法元素之后的语法元素的比特。剩余的语法元素——包括切片类型、PPS标识符、帧编号、IDR图片标识符、图片次序计数信息和dec_ref_pic_marking()结构——可用于管理解码方面且典型地每切片报头消耗少量字节。在图8的示例中,所提取的所选的切片报头参数(314)存储在SliceHeader结构的字段SliceHeaderBytes中。可替换地,解密驱动器(330)和/或DRM逻辑(250)可提取并返回切片NAL单元的切片报头的某一其它子集作为切片报头参数(314)。

3.步骤C-视频解码控制

主机解码器(230)不能解释密钥数据(312)、其它不透明元数据(224)和加密的媒体数据(222)。相反,主机解码器(230)使用明文元数据(226)来管理解码、再现和/或显示的各个方面。一般来说,主机解码器(230)可从元数据属性提取解密参数(可能是不透明的),并将解密参数(包括不透明参数)中的至少一些输送到(多个)解码驱动器(320)。主机解码器(230)或(多个)解码驱动器(320)之一可以创建解密会话,填充包括对解密会话和解密参数的引用的数据结构,并将数据结构传递到可信层。

主机解码器(230)还从元数据属性提取视频解码参数,并使用视频解码参数来控制来自解码的图片缓冲器的图片的输出,来自解码的图片缓冲器的图片的删除和/或解码、再现和/或显示的其它方面。

E.示出不同实现中的媒体数据和密钥数据的流的示例

在不同的示例实现中,通过硬件受保护的DRM系统的媒体数据和密钥数据的流可以是不同的。

在第一方法集合中,硬件受保护的DRM系统包括安全的共享存储器。可信层内的组件(例如,DRM逻辑(250)、GPU或用于解码逻辑(260)的其它解码硬件)可以直接访问安全的共享存储器。不可信层内的组件(例如,控制模块(220)、主机解码器(230))不能直接访问安全的共享存储器。在对可信层中的加密的媒体数据(221,222)解密之后,可以以明文的形式将明文(解密)的媒体数据存储在安全的共享存储器(可由GPU/解码硬件访问)中。

特别地,控制模块(220)将加密的媒体数据(221)传递到可信层。在可信层中,用原始内容密钥对加密的媒体数据(221)进行解密,该原始内容密钥在可信层内是明文的。所选的切片报头参数(314)被提取并添加到一个结构中,该结构作为明文元数据(226)的一部分被返回。明文(解密)的媒体数据被传递到安全的共享存储器,以供GPU或其它解码硬件解码。可以在不可信层中使用所选的切片报头参数(314)和其它明文元数据(226)来控制解码、再现和/或显示的方面。

例如,安全的共享存储器对于可信层内的组件(包括DRM逻辑(250)和解码逻辑(260))是与生俱来已知的。与生俱来的安全共享存储器可以是已经被分配给存储的明文媒体数据的固定的、全局的BIOS分配的缓冲器,或者它可以是某种其它类型的安全共享存储器(例如,专门的RAM——或SRAM物理——其物理上位于管芯(die)上)。在这种情况下,明文媒体数据被直接复制到安全共享存储器中。

或者,作为另一示例,安全共享存储器由可信层中的组件(例如,DRM逻辑(250)或(多个)解密驱动器(330)之一)来分配。组件可以分配GPU或其它解码硬件的存储器分内的空间,然后将明文媒体数据复制到所分配的空间。然后,组件可以将不透明句柄传递到不可信层(例如,作为不透明元数据(224)的一部分),该不透明句柄被传递回可信层(例如,从主机解码器(230))。

或者,作为另一示例,安全的共享存储器由不可信层中的组件分配。不可信层中的组件可以分配在GPU或其它解码硬件的存储器内的空间,接收对所分配空间的不透明句柄,并将不透明句柄传递回可信层中的组件(例如,DRM逻辑(250)或(多个)解密驱动器(330)之一)。可信层中的组件可以将明文媒体数据复制到由句柄引用的所分配的空间。(在复制明文媒体数据之前,可信层中的组件可以验证所分配的空间实际上是安全的)。然后,不可信层中的组件将不透明句柄传递给GPU或用于解码逻辑(260)的其它解码硬件。

在第二方法集合中,硬件受保护的DRM系统缺少安全共享存储器。在可信层中对加密的媒体数据(221,222)进行解密之后,使用一个或多个会话密钥重新加密明文(解密的)媒体数据,并以加密(这里是转变加密)的形式传递给GPU/解码硬件。

特别地,控制模块(220)将加密的媒体数据(221)传递到可信层。在可信层中,用原始内容密钥对加密的媒体数据(221)进行解密,该原始内容密钥在可信层内是明文的。所选的切片报头参数(314)被提取并添加到一个结构,该结构作为明文元数据(226)的一部分被返回。在DRM逻辑(250)和解码逻辑(260)之间确定会话密钥(用于转变加密)。会话密钥可以预先建立或在解密会话期间建立(并且被交换为密钥数据(312))。使用(用于转变加密的)会话密钥重新加密明文媒体数据。如果存在非安全的共享存储器,则将转变加密的媒体数据传递到非安全的共享存储器,以使用会话密钥进行解密并由GPU或其它解码硬件进行解码。可以在不可信层中使用所选的切片报头参数(314)和其它明文元数据,以控制解码,再现和/或显示的方面。

例如,非安全共享存储器对于可信层内的组件是与生俱来已知的。与生俱来的非安全共享存储器可以是已经被分配用于存储转变加密的媒体数据的固定的、全局的BIOS分配的缓冲器,或者其可以是某种其它类型的非安全共享存储器。在这种情况下,将转变加密的媒体数据直接复制到非安全共享存储器中。

或者,作为另一示例,非安全共享存储器由可信层中的组件(例如,DRM逻辑(250)或(多个)解密驱动器(330)之一)分配。组件可以分配GPU或其它解码硬件的存储器内的空间,然后将转变加密的媒体数据复制到所分配的空间。然后,组件可以将不透明句柄传递到不可信层(例如,作为不透明元数据(224)的一部分),不透明句柄被传递回可信层(例如,从主机解码器(230))。

或者,作为另一示例,非安全共享存储器由不可信层中的组件分配。不可信层中的组件可以分配GPU或其它解码硬件的存储器内的空间,接收针对所分配空间的不透明句柄,并将不透明句柄传递回可信层中的组件(例如,DRM逻辑(250)或(多个)解密驱动器(330)之一)。可信层中的组件可以将转变加密的媒体数据复制到由句柄引用的所分配空间。然后,不可信层中的组件将不透明句柄传递给GPU或用于解码逻辑(260)的其它解码硬件。

否则(非安全共享存储器不存在),将转变加密的媒体数据传递到不可信层(例如,传递到控制模块(220)),然后传递回可信层(例如,由主机解码器(230))。

在第三方法集合中,硬件受保护的DRM系统包括可由GPU或其它解码硬件访问的安全共享存储器(如在第一方法集合中一样),但是使用在第一方法集合(例如,与生俱来的安全共享存储器,安全共享存储器由可信组件分配或安全共享存储器由不可信组件分配)中描述的传输机制之一经由安全共享存储器传递原始内容密钥(而不是明文媒体数据)。源媒体数据(212)中的加密的媒体数据(221)被传递到主机解码器(230),主机解码器(230)将其传递到可信层(到GPU或其它解码硬件),以使用原始内容密钥进行解密。在这种情况下,GPU或其它解码硬件可以使用原始内容密钥来执行加密的媒体数据(221)的解密。明文元数据(226)仍然在不可信层中使用以控制解码、再现和/或显示的方面。

在第四方法集合中,硬件受保护的DRM系统缺乏GPU或其它解码硬件可访问的安全共享存储器(如在第二方法集合中一样),但是使用第二方法集合中描述的机制之一(例如,与生俱来的非安全共享存储器,可信组件对非安全共享存储器的分配,非可信组件对非安全共享存储器的分配,传递到不可信层/从其传递)来输送加密的原始内容密钥(而不是转变加密的媒体数据)。源媒体数据(212)中的加密的媒体数据(221)被传递到主机解码器(230),主机解码器(230)将其传递到可信层(到GPU或其它解码硬件),以使用原始内容密钥进行解密。在这种情况下,在原始内容密钥的解密之后,GPU或其它解码硬件可以使用原始内容密钥执行加密的媒体数据(221)的解密。明文元数据(226)仍然在不可信层中使用以控制解码、再现和/或显示的方面。

V.创新性特征

除了下面呈现的权利要求之外,本文描述的创新性特征包括但不限于以下内容:

鉴于可以应用所公开的发明的原理的许多可能的实施例,应当认识到,所图示出的实施例仅是本发明的优选示例,并且不应视为限制本发明的范围。相反,本发明的范围由所附权利要求限定。因此,我们要求保护进入这些权利要求的范围和精神内的全部作为我们的发明。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号