CN105051747A - 硬件解码器加速器的增强安全性 - Google Patents
硬件解码器加速器的增强安全性 Download PDFInfo
- Publication number
- CN105051747A CN105051747A CN201480016140.6A CN201480016140A CN105051747A CN 105051747 A CN105051747 A CN 105051747A CN 201480016140 A CN201480016140 A CN 201480016140A CN 105051747 A CN105051747 A CN 105051747A
- Authority
- CN
- China
- Prior art keywords
- macroblock
- security layer
- software security
- accelerator
- frame
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/76—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Mathematical Physics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明公开了一种软件安全层,其可以用于保护系统不受嵌入在已编码数字串流数据的一个或多个帧中的恶意数据对硬件编码器加速器的利用。它强调此摘要经提供以符合需要将允许搜索者或其它读者快速确认本技术公开的主题的摘要的规则。它被提交以理解其将不会被用于解译或限制权利要求书的范围或含义。
Description
优先权声明
本申请要求2013年3月15日提交的第61/789,855号美国临时专利申请的优先权益,所述申请的全部公开内容是以引用方式并入本文。
本申请要求2014年2月27日提交的第14/192,782号美国专利申请的优先权益,所述申请的全部公开内容是以引用方式并入本文。
技术领域
本公开的方面涉及压缩数字信号的解码。特定地说,本公开涉及解码器加速器的安全。
背景技术
数字信号压缩(有时候称作视频编码(videocoding或videoencoding))在许多多媒体应用和装置中广泛使用。使用编码器/解码器(编解码器)进行的数字信号压缩允许串流媒体(诸如音频或视频信号)通过互联网传输或存储在光盘上。已涌现出数字视频压缩的多种不同标准,包括H.261、H.263;DV;MPEG-1、MPEG-2、MPEG-4、VC1;和AVC(H.264)。这些标准以及其它视频压缩技术力图通过消除图片中和连续图片之间的空间和时间冗余度来有效地表示视频帧图片。通过使用这些压缩标准,视频内容可被携带在高度压缩的视频位流中且因此有效地存储在磁盘中或通过网络传输。
还称作H.264的MPEG-4AVC(先进视频编码)是提供的压缩显著大于其前任的视频压缩标准。H.264标准预期提供多达两倍于早期MPEG-2标准的压缩。H.264标准还预期提供知觉质量的改善。结果,越来越多的视频内容以AVC(H.264)编码流的形式传递。两种竞争的DVD格式(HD-DVD格式和蓝光光盘格式)支持H.264/AVC高配置文件解码作为强制性播放器特征。AVC(H.264)编码在2012年1月瑞士日内瓦的国际电信联盟电信标准化部门的“RecommendationITU-TH.264,SeriesH:AUDIOVISUALAND MULTIMEDIASYSTEMSInfrastructureofaudiovisualservices-Codingof movingvideo,“Advancedvideocodingforgenericaudiovisualservices”中加以更详细描述,所述文件的全部内容是针对全部目的以引用方式并入本文。
视频编码可在通用计算机上以软件进行或可以用称作硬件视频编码器的专用硬件进行。硬件视频编码器的使用被视为以低系统资源使用量实现高性能视频压缩的关键。
硬件解码器加速器是由多个用户共享的系统资源。通常,加速器具有高于正常程序特权以访问用户的私人存储器、系统寄存器且有时候访问内核存储器。此使得加速器成为安全攻击的可能目标。
本公开的方面产生于此背景内。
附图说明
本公开的教学可通过结合附图考虑以下详述而容易了解,其中:
图1是根据本公开的方面的使用包括硬件视频解码器加速器和用于加速器的软件安全层的系统的计算系统的方框图。
图2是根据本公开的方面的说明指示增强安全的可能实施方式的硬件加速器的顶部上的软件堆栈的实例的方框图。
图3是说明本公开的方面的背景内的串流数据图片的一种可能划分的示意图。
图8是根据本公开的方面的利用硬件解码器加速器和软件安全增强层两者的系统的实例的示意图。
具体实施方式
虽然以下详述针对说明目的而包括许多具体细节,但是所属领域一般技术人员将明白,以下细节的许多变动和更改是在本发明的范围内。因此,下文描述的本发明的示例性实施方案经说明而无对本发明的一般性的任何损失且不强加限制于本发明。
本公开的方面涉及用于保护硬件解码器加速器不被危及且在加速器被危及时最小化损坏的软件安全增强层。
介绍
在现有技术中,硬件解码器加速器通常已由个别硬件装置厂商实施。每一硬件厂商根据其产品的需求定义其自身的安全特征,且实施这些安全特征作为硬件的部分。例如,对于许多个人计算机(PC)硬件厂商,安全目标是保护有版权的视频内容。因此,大部分硬件加速器具有内容保护相关安全特征。
一些装置具有不同的安全目标。具体地说,对于某些游戏控制器提供商,安全目标可以是保护视频内容和游戏控制器本身的系统内核。结果,我们必须用额外的软件层来增强安全。
硬件解码器的增强安全的需要对于计算机安全专家来说可能并不明显。从计算机安全专家的视角来看,硬件解码器加速器只执行视频信号处理任务,且其只需要极简单的安全保护。然而,从视频处理专家的视角来看,硬件解码器加速器是被配置来执行嵌入在已编码视频流中的指令的可编程装置。通过细心地设计输入视频流,解码器加速器可被指示做任何事情。此包括对装置有害的事情。因此,增强安全保护是使用硬件解码器加速器的某些装置所必需的。
根据本公开的某些方面,解码器加速器的增强安全可以由软件安全增强层实施。例如且无限制,此软件层可被实施为解码器服务后台程序、解码器加速器内核驱动程序中或加速器固件内部的一款软件。其还可被实施为硬件块。一些安全保护还可以应用于具有硬件视频编码器加速器的硬件中。
详细解释
如图1中所示,计算机系统100可以包括中央处理器单元(CPU)102、集成硬件视频解码器加速器104和一个或多个可编程模块106。加速器104被配置来解码已编码的视频流。这些已编码的视频流可以遵循视频编码标准,诸如H.264、MPEG2、MPEG4和VCI。CPU102通过一些系统寄存器108控制硬件解码器加速器104。CPU102和加速器104两者共享共同的系统存储器110。任选地,硬件解码器加速器104还可以是可编程的。解码器功能的部分可在软件中实施,所述软件可以被实施为存储在存储器110中的指令112。用软件扩增硬件加速器的能力可使加速器更加灵活。然而,其也给黑客创造了更多机会来攻击加速器104。这是显著的,因为市场上的当前几乎所有硬件解码器加速器均是可编程的。为了防止攻击,指令112可以包括软件安全层114,其可以如下文讨论般配置。
指令112可以在软件堆栈中实施,所述软件堆栈包括用户软件、系统软件和硬件层。图2展示了可以作用于硬件加速器104的顶部的典型软件堆栈200的实例(指示针对安全层114的堆栈内的可能位置)。如图2中所示,一个或多个用户应用202可以调用用户空间库204中的功能以将解码任务提交给内核驱动程序206。用户应用202和空间库204是在称作“用户软件”的软件堆栈的部分中。内核驱动程序206是操作系统软件的部分。内核驱动程序206经由系统寄存器108操作硬件加速器104。
根据本公开的方面,安全增强层114可为硬件层中(例如固件中)或内核驱动程序206中的额外模块。替代地,安全增强层可为内核驱动程序206上的额外一款系统软件。
如图2中所示,用户应用只可访问系统存储器110内的用户存储器空间中的存储器缓冲区208。有时候,硬件加速器104不能访问用户的存储器空间。在此情况中,操作系统软件可为硬件加速器104映射或复制系统存储器中的用户的数据缓冲区208。
为了了解安全增强层114可如何工作,了解硬件加速器104如何工作且其可受黑客入侵和其它安全威胁的容易程度是有用的。通常,用硬件加速器解码图片的程序可以总结如下。
用户应用将输入视频流存储在用户的存储器空间中的存储器缓冲区中。然后,操作系统软件将打开用户存储器缓冲区以使硬件加速器104进行访问或操作系统将用户存储器缓冲区复制到硬件加速器的可见存储器空间。有时候,此硬件加速器可见存储器空间是内核存储器空间。
用户应用202通过调用用户空间库204中的功能创建解码任务。视频解码任务的控制参数取决于实际硬件加速器104和操作系统。例如,MicrosoftDXVA定义了用户应用如何使用WindowsPC上的硬件加速器。
内核驱动程序206将用户请求写入到系统寄存器中。硬件解码器加速器104接收解码命令并解码输入视频流的部分。解码结果存储在用户可见存储器缓冲区208中。硬件加速器104通知内核驱动程序206:经由系统寄存器108完成任务。用户应用202从内核驱动程序206接收解码完成通知且从硬件加速器104接收解码器输出数据。
为了完成以上任务,硬件解码器加速器104具有某些特权。例如,硬件解码器加速器能够对所有用户的视频解码缓冲区进行读和/或写。对于一些系统,解码器可以访问内核存储器空间。硬件解码器加速器还能够对一些系统寄存器进行读和/或写。此外对于一些系统,如果硬件加速器104是可编程的,那么程序指令和数据存储在内核存储器空间中。
因此,如果硬件解码器加速器被黑客危及,那么黑客可从其它解码器应用盗取视频内容。例如,黑客可制作蓝光光盘的非法副本。此外,黑客可利用已危及的解码器加速器来通过读取系统寄存器盗取系统秘密,诸如加密密钥。此外,在极端情况中,已危及的硬件解码器加速器可危及系统内核,允许黑客接管整个系统100。
最小化损坏
系统100可以被配置来最小化硬件解码器加速器104被危及时的损坏。系统的一种可能配置可如下。
1.系统100在必要时将只给硬件解码器104赋予允许对寄存器进行读或写的权利。
2.如果硬件加速器是可编程的,那么硬件加速器指令和数据可被置于存储器空间中而非内核存储器空间和任何用户的存储器空间中。以此方式,硬件加速器104可执行指令,并对其自身的存储器空间进行读或写数据。
3.如果用户缓冲区打开以供硬件解码器访问,那么只打开缓冲区的必要部分。
受设计所限,并非所有硬件加速器可满足以上建议。例如,集成在PC图形卡中的大部分硬件加速器可访问比所需更多的寄存器且绝无限制。因此,必须实施额外的保护层以使其难以黑进硬件加速器。
视频解码
在继续描述安全软件114可以如何保护硬件解码器加速器免受恶意攻击之前,了解如何编码视频图片是有用的。例如且无限制,如图3中所示,单个图片300(例如,数字视频帧)可以被分解为一个或多个区段。如本文使用,术语“区段”可能是指图片300内的一个或多个像素组。区段的范围可从图片内的单个像素到多达整个图片。区段的非限制实例包括程序片302、宏模块304、子宏模块306、块308和个别像素310。如图3中说明,每一程序片302包括一行或多行宏模块304或一个或多个这样的行的部分。某一行中的宏模块的数量取决于宏模块的大小和图片300的大小和分辨率。例如,如果每一宏模块包括16乘以16个像素,那么每一行中的宏模块的数量可以通过将图片300的宽度(以像素表示)除以16而确定。每一宏模块304可以被分解为多个子宏模块306。每一子宏模块306可以被分解为多个块308且每一块可以包括多个像素310。例如且不限制本发明,在常见的视频编码方案中,每一宏模块304可以被分解为4个子宏模块306。每一子宏模块可以被分解为4个块308且每一块可以包括4乘以4布置的16个像素310。
应注意,每一图片可以是帧或字段。帧是指完整图像。字段是用于促进在某些类型的显示装置上显示图像的图像的部分。通常,图像中的像素被布置成行。为了促进显示,图像有时候可以通过将像素的交替行置于两个不同字段中而分裂。两个字段中的像素行然后可以被交错来形成完整图像。对于一些显示装置(诸如阴极射线管(CRT)显示器),两个字段可以仅仅以接连不断方式一个接一个地显示。用于照明显示器中的像素的磷光体或其它发光元件的余辉结合视觉暂留造成两个字段被感知为连续图像。对于某些显示器装置(诸如液晶显示器),可能必须在两个字段被显示之前将其交错到单个图片中。表示已编码图像的串流数据通常包括指示图像是字段还是帧的信息。此信息可以包括在图像的标头中。
图4说明用于可以结合本公开的方面使用的串流数据401的解码的方法400中的可能程序流程的实例。此特定实例展示了用于例如使用AVC(H.264)标准进行视频解码的程序流。已编码的串流数据401最初可以被存储在缓冲区中。当已编码的串流数据401(例如,视频数据位流)已通过网络(例如互联网)传送时,数据401最初可以经历称作网络抽象层(NAL)解码(402处指示)的程序。NAL解码可以从数据401移除被添加来辅助传输数据的信息。称作“网络封装器”的此信息可以将数据401识别为视频数据或指示位流的开始或结束、用于数据对准的位和/或关于视频数据本身的元数据。
此外,例如,网络封装器可以包括关于数据401的信息(所述信息包括例如用于显示数据的分辨率、图片显示格式、调色板变换矩阵)、关于每一图片的位数、程序片或宏模块的信息以及用于低级解码的信息(例如指示程序片的开始或结束的数据)。此信息可以用于确定传递到单个区段中的任务组中的每一个的宏模块的数量。由于其复杂性,NAL解码通常是以图片和程序片级完成。用于NAL解码的最小NAL缓冲区通常是程序片大小。
在一些实施方案中,在402处进行NAL解码之后,图4中说明的剩余解码可以在三个不同线程组或任务组中实施,所述线程组或任务组在本文称作视频编码层(VCL)解码404、运动向量(MV)重建410和图片重建414。图片重建任务组414可以包括像素预测和重建416,和后期处理420。在本发明的一些实施方案中,可以基于数据相依性选取这些任务组使得每一任务组可以在将宏模块发送到下一个任务组进行后期处理之前完成其对图片(例如,帧或字段)或区段中的所有宏模块的处理。
某些编码标准可以使用涉及像素信息从空间域到频域的变换的数据压缩的形式。一种这样的变换尤其被称作离散余弦变换(DCT)。用于此压缩数据的解码程序涉及从频域恢复到空间域的逆变换。在使用DCT压缩数据的情况中,逆程序称作逆离散余弦变换(IDCT)。所变换的数据有时候被量化来减小用于表示离散变换数据中的数字的位数。例如,数字1、2、3可以全部被映射到2,且数字4、5、6可以全部被映射到5。为了解压缩数据,在执行从频域到空间域的逆变换之前使用称作逆量化(IQ)的程序。对于相同程序片内的宏模块,用于VCLIQ/IDCT解码程序404的数据相依性通常为宏模块级。因此,由VCL解码程序304产生的结果可以宏模块级进行缓冲。
VCL解码404通常包括称作熵解码406的程序,其用于解码VCL语法。诸如AVC(H.264)的许多编解码器使用称作熵编码的编码层。熵编码是将代码指派给信号以便匹配代码长度与信号的概率的编码方案。通常,熵编码器用于通过用由与概率的负对数成比例的代码表示的符号取代由相等长度的代码表示的符号来压缩数据。AVC(H.264)支持两种熵编码方案:上下文自适应可变长编码(CAVLC)和上下文自适应二进制算术编码(CABAC)。因为CABAC趋向于提供的压缩比CAVLC多大约10%,所以CABAC为产生AVC(H.264)位流的许多视频编码器所喜爱。解码经AVC(H.264)编码的数据流的熵层的计算量可为密集型的且可面临使用通用微处理器解码经AVC(H.264)编码的数据流的装置的挑战。出于此原因,许多系统使用硬件解码器加速器。
除了熵解码406以外,VCL解码程序404可以涉及如408处指示的逆量化(IQ)和/或逆离散余弦变换(IDCT)。这些程序可以解码标头409和来自宏模块的数据。已解码的标头409可以用于辅助相邻宏模块的VCL解码。
VCL解码404可以宏模块级数据相依性频率实施。具体地说,相同程序片内的不同宏模块可以并行经历VCL解码,且结果可以被发送到运动向量重建任务组410以进行进一步处理。
随后,图片或区段中的所有宏模块可以经历运动向量重建410。MV重建程序410可以涉及使用来自给出宏模块的标头411和/或同位(co-located)宏模块标头413进行的运动向量重建412。运动向量描述图片内的表观运动。这些运动向量允许基于对先前图片的像素和所述像素在不同图片之间的相对运动的认识进行图片(或其部分)的重建。一旦运动向量已恢复,可以在416处使用基于来自VCL解码程序404的残余像素和来自MV重建程序410的运动向量的程序对像素进行重建。MV的数据相依性频率(和并行度级)取决于MV重建程序410是否涉及来自其它图片的同位宏模块。对于不涉及来自其它图片的同位MB标头的MV重建,MV重建程序410可以程序片级或图片级并行实施。对于涉及同位MB标头的MV重建,数据相依性频率为图片级且MV重建程序410可以程序片级并行实施。
运动向量重建410的结果被发送到图片重建任务组414,其可以图片频率级并行化。在图片重建任务组414内,图片或区段中的所有宏模块可以经历结合去块420的像素预测和重建416。像素预测和重建任务416和去块任务420可以被并行化来增强解码效率。基于数据相依性,这些任务可以宏模块级在图片重建任务组414内并行化。例如,可以对一个宏模块执行像素预测和重建416且然后对其执行去块420。来自通过去块420获得的已解码图片的参考像素可以在对后续宏模块的像素预测和重建416中使用。像素预测和重建418产生已解码区段419(例如已解码块或宏模块),其包括可以用作对后续宏模块的像素预测和重建程序418的输入的相邻像素。用于像素预测和重建416的数据相依性允许以宏模块级对相同程序片中的宏模块进行某个程度的并行处理。
后期处理任务组420可以包括去块滤波器422,其应用于已解码区段419中的块以通过平滑化当使用块编码技术时可形成于块之间的锐利边沿来改善视觉质量和预测性能。去块滤波器422可以用于改善所得经去块区段424的外观。
已解码区段419或经去块区段424可以提供用于对相邻宏模块进行去块的相邻像素。此外,包括来自当前解码图片的区段的已解码区段419可以提供用于对后续宏模块进行的像素预测和重建418的参考像素。在此阶段期间,来自当前图片内的像素可以任选地用于与上文描述的图片相同的当前图片内的像素预测,而不依赖于所述图片(或其子区段)是已进行帧间编码还是帧内编码。去块420可以针对相同图片中的宏模块以宏模块级并行化。
后期处理420之前产生的已解码区段419和经后期处理的区段424可以存储在相同缓冲区中,例如取决于所涉及的特定编解码器而存储在输出图片缓冲区中。应注意,去块是H.264中的后期处理滤波器。因为H.264使用预去块宏模块作为相邻宏模块帧内预测的参考且使用后期去块宏模块作为未来图片宏模块帧间预测的参考。因为预去块和后期去块像素用于预测,所以解码器或编码器必须对预去块宏模块和后期去块宏模块两者进行缓冲。对于大部分低成本消费者应用,预去块图片和后期去块图片共享相同缓冲区以减小存储器使用量。对于H.264之前的标准(诸如MPEG2或MPEG4,除MPEG4part10以外)(注意:H.264也称作MPEG4part10),只有前后处理宏模块(例如,预去块宏模块)用作其它宏模块预测的参考。在这些编解码器中,预滤波的图片无法与后期滤波的图片共享相同缓冲区。
因此,对于H.264,在像素解码之后,已解码区段419保存在输出图片缓冲区中。随后,经后期处理区段424取代输出图片缓冲区中的已解码区段419。对于非H.264情况,解码器只将已解码区段419保存在输出图片缓冲区中。后期处理是在显示时间完成且后期处理输出无法共享与解码器输出图片缓冲区相同的缓冲区。
解码程序400的至少一些部分可以在硬件解码器104上实施。黑客可将恶意代码或数据插入到由系统100接收的已编码串流数据401中。这种恶意代码或数据可以用于通过硬件解码器104的未经授权使用来攻击系统。硬件解码器加速器安全层114可被配置来保护硬件解码器104免受这种恶意攻击。
保护硬件解码器
为了保护硬件加速器104,用户应用202和加速器104的介接必须携带足够多的存储器访问信息。如果用户应用202提交请求给硬件解码器加速器104,那么所述请求必须携带由解码器104访问的所有用户缓冲区208的地址。其还必须携带所有必要信息来计算硬件加速器104的存储器使用量。由硬件加速器104针对不同编码标准使用的这些缓冲区的一些实例在下文的表I中加以列出。
表I
对于现有视频编码标准,这些缓冲区大小相关信息是以高于宏模块级编码在视频流中。表II展示了缓冲区大小信息针对不同视频标准如何编码在所述视频流中。
表II
在接收用户请求之后,解码器保护层114可以计算每一缓冲区的必要大小且验证范围内的所有存储器是否有效。对于更好的安全,一旦提交任务,用户请求消息和表II中的所有缓冲区(除视频流缓冲区和已解码像素缓冲区以外)应受到保护而不会被任何用户程序访问。否则,在请求被验证之后黑客将有机会用无效请求取代有效请求,或当加速器正处理这些缓冲区时黑客可改变这些数据缓冲区中的内容。
保护这些缓冲区免受恶意使用的可能方法的一些实例包括但不限于:
1.将缓冲区从用户存储器空间复制到安全存储器空间
2.将存储器页面锁定在数据范围内以免用户程序写入。注意:缓冲区大小是由提交任务请求的用户应用中的存储器使用信息来计算。
通常,已解码像素缓冲区对于加速器104进行“只写入”。因此通常无须保护此缓冲区。一般来说,保护视频流缓冲区出于许多原因可能是不切实际的。首先,此缓冲区的大小可以极大且将此缓冲区中的所有数据复制到另一存储器空间中可能不切实际。其次,用户应用仍然可以作用于其它图片的位流缓冲区。已编码图片大小是不可预测的。难以对准图片边界与存储器页面边界。因此,将某些页面锁定在缓冲区中以免受用户访问可能不切实际。
当硬件加速器104以高于宏模块级解码已编码流时,保护层114可拒绝任其中编码在流401中的缓冲区大小相关参数不匹配用户请求中的这些参数的何输入位流。此保护硬件解码器加速器104免受缓冲区溢出攻击。
对于所有视频编码标准,在每一已编码程序片中,程序片标头携带指示程序片的起点位置的信息。在某些实施方式中,解码器保护层114可以检查程序片位置是否在当前图片边界内。如果确定程序片不在当前图片边界内,那么此程序片应被丢弃,因为其可能包括恶意代码或数据。
此外,对于每一已编码宏模块,保护层114可以检查当前宏模块是否在当前图片边界内,如果当前宏模块不在当前图片边界内,那么保护层114可以丢弃此宏模块。
在H.264、MPEG4或VC1流解码的情况中,对于每一宏模块,保护层114可以检查所提及的同位参考宏模块标头是否在参考宏模块标头缓冲区内。如果其不在参考宏模块标头缓冲区内,那么应丢弃此宏模块。
在MPEG2流解码的情况中,保护层114应检查运动向量是否在参考图片边界内。如果其不在参考图片边界内,那么应丢弃此宏模块。
应注意,因为其难以如上文讨论般保护输入流缓冲区,所以对于以上所有位流检查,当使用数据时应检查数据值。否则,黑客将有机会在加速器验证数据的时间与加速器使用数据的时间之间更改位流内容。
一些特殊保护情况
并非所有硬件均有能力锁定某些缓冲区以免受用户程序访问。例如,如果用户应用可访问宏模块中间数据缓冲区,那么黑客可更改缓冲区中的内容以指示加速器读取系统秘密信息作为参考运动向量或参考像素。因此,取决于宏模块中间数据缓冲区和参考宏模块标头缓冲区的内容,应为某些存储器访问操作添加额外保护。下文是可实施这些额外保护的所建议最佳实践的一些实例,
1.对于所有视频标准,如果运动向量存储在宏模块中间数据缓冲区中,那么加速器必须在参考像素读取之前检查每一运动向量。
2.对于H.264和VC1流,如果同位宏模块运动向量存储在参考宏模块标头缓冲区中,那么加速器安全层114必须在每一参考像素读取之前检查运动向量参考ID。
3.对于H.264、MPEG4和VC1流,如果相邻宏模块有效标志存储在宏模块中间数据缓冲区中,那么加速器安全层114必须在任何相邻宏模块访问之前检查相邻宏模块是否在当前图片边界内。
本公开的方面包括被配置来实施上文描述的各种类型的硬件解码器加速器安全层的系统。例如且无限制,图5说明根据本公开的方面的可以用于实施视频编码的计算机系统500的方框图。系统500通常可以包括主处理器模块501、存储器502和硬件解码器505。处理器模块501可以包括一个或多个处理器核心,例如单核、双核、四核处理器-协处理器、Cell处理器、架构等等。
存储器502可以呈集成电路的形式,例如RAM、DRAM、ROM等等。存储器还可以是可由处理器模块501中的所有处理器核心访问的主存储器。在一些实施方案中,处理器模块501可以具有与一个或多个处理器核心或一个或多个协处理器相关的本地存储器。软件编码器程序503可以可在处理器模块501上执行的处理器可读指令的形式存储在主存储器502中。编码器程序503可以被配置来结合例如如上文描述的硬件解码器加速器505将图片解码为压缩信号数据。硬件解码器加速器安全层503A还可以存储在存储器502中并在处理器模块501上执行。安全层503A被配置成如上文讨论般实施用于硬件编码器加速器的额外安全。编码器程序503和硬件解码器加速器安全层503A可以任何适当处理器可读语言(例如,C、C++、JAVA、汇编语言、MATLAB、FORTRAN和多种其它语言)写入。
输入或输出数据507可以存储在存储器502中。在编码器程序503和/或安全层503A的执行期间,程序代码和/或数据507的部分可以被加载到存储器502或处理器核心的本地存储装置中以处理所述处理器501。例如且无限制,在编码或解码之前或在编码或解码的中间阶段处,输入数据807可以包括视频图片或其区段。在编码的情况中,数据507可以包括串流数据(例如未编码视频图片或其部分)的缓冲部分。在解码的情况中,数据507可以包括呈未解码区段、已解码但未经后期处理的区段和已解码且经后期处理的区段的形式的输入数据。这种输入数据可以包括数据包,其包括表示一个或多个数字图片的一个或多个编码区段的数据。例如且无限制,这些数据包可以包括变换系数的集合和预测参数的部分集合。这样的各种区段可以存储在一个或多个缓冲器中。特定地说,已解码和/或经后期处理的区段可以存储在实施于存储器502中的输出图片缓冲区中。
系统500还可以包括众所周知的支持功能510、诸如输入/输出(I/O)元件511、电源(P/S)512、时钟(CLK)513和高速缓存514。设备500可以任选地包括用于存储程序和/或数据的大容量存储装置515,诸如磁盘驱动器、CD-ROM驱动器、磁带机等等。装置800还可以任选地包括显示单元516和用户接口单元518以促进设备500与用户之间的交互。显示单元516可以呈阴极射线管(CRT)或平板显示屏的形式,其显示文字、数字、图形符号或图像。用户接口518可以包括键盘、鼠标、操纵杆、光笔或可以结合图形用户接口(GUI)使用的其它装置。设备500还可以包括网络接口520以使得装置能够通过网络522(诸如互联网)与其它装置通信。系统500可以经由网络接口520从连接到网络522的其它装置接收已编码串流数据的一个或多个帧(例如,一个或多个已编码视频帧)。这些组件可以实施于硬件、软件或固件或硬件、软件和固件中的两者或两个以上的某种组合中。
本公开的方面通过硬件解码器加速器安全层503A的使用提供额外保护以防对系统500的恶意攻击。
虽然上文是本发明的优选实施方案的完整描述,但是可使用各种替代、修改和等效物。因此,不应参考上文描述确定反而应参考随附权利要求书连同其等效物的全部范围确定本发明的范围。本文描述的任何特征(无论是否优选的)均可以结合本文描述的任何其它特征(无论是否优选的)。除非另有明确说明,否则在以下权利要求书中,不定冠词“A”或“An”是指冠词后面的项中的一者或多者的数量。随附权利要求书不应被解释为包括手段加功能限制,除非给出权利要求书中使用措词“用于……的手段”明确叙述此限制。
Claims (29)
1.一种方法,其包括:
在具有处理器模块、存储器和硬件编码器加速器的系统中接收已编码数字串流数据的一个或多个帧;
使用所述硬件编码器加速器解码已编码数字串流数据的所述一个或多个帧;
使用软件安全层以保护所述系统免受嵌入在已编码数字串流数据的所述一个或多个帧中的恶意数据对所述硬件编码器加速器的利用。
2.根据权利要求1所述的方法,其中所述软件安全层是在所述系统的固件中实施。
3.根据权利要求1所述的方法,其中所述软件安全层是在所述系统的系统软件中的内核驱动程序中实施。
4.根据权利要求1所述的方法,其中所述软件安全层是在所述系统的系统软件中的内核驱动程序上的软件层中实施。
5.根据权利要求1所述的方法,其中所述软件安全层被配置来计算解码所述一个或多个帧时使用的一个或多个缓冲区的必要大小并验证某个范围内的所有存储器是否有效。
6.根据权利要求1所述的方法,其中所述软件安全层被配置来一旦提交任务便保护解码所述一个或多个帧时使用的一个或多个缓冲区不被任何用户程序访问。
7.根据权利要求6所述的方法,其中所述软件安全层被配置来将所述一个或多个缓冲区从用户存储器空间复制到安全存储器空间。
8.根据权利要求6所述的方法,其中所述软件安全层被配置来将一个或多个存储器页面锁定在数据范围内以免用户程序写入。
9.根据权利要求1所述的方法,其中当所述硬件加速器以高于宏模块级解码已编码流时,所述软件安全层拒绝其中编码在所述流中的缓冲区大小相关参数与用户的请求中的这些参数不匹配的任何输入位流。
10.根据权利要求1所述的方法,其中软件安全层检查程序片位置是否在当前图片边界内且当确定程序片不在所述当前图片边界内时丢弃所述程序片。
11.根据权利要求1所述的方法,其中对于所述一个或多个帧中的每一已编码宏模块,所述软件安全层检查所述一个或多个帧中的给出宏模块是否在当前图片边界内且如果所述给出宏模块不在所述当前图片边界内那么丢弃所述给出宏模块。
12.根据权利要求1所述的方法,其中对于所述一个或多个帧中的每一宏模块,所述软件安全层检查所提及的同位参考宏模块标头是否在参考宏模块标头缓冲区内且当其不在所述参考宏模块标头缓冲区内时丢弃所述参考宏模块。
13.根据权利要求1所述的方法,其中所述软件安全层检查所述一个或多个帧中的宏模块中的运动向量是否在参考图片边界内且当所述运动向量不在所述参考图片边界内时丢弃所述宏模块。
14.根据权利要求1所述的方法,其中当使用所述一个或多个帧中的数据时,所述软件安全层对所述数据执行数据值检查。
15.一种系统,其包括:
处理器模块;
耦合到所述处理器的硬件解码器加速器;和
耦合到所述处理器的存储器,其中所述存储器包括被配置来实施方法的可执行指令,所述方法包括:
在所述系统处接收已编码数字串流数据的一个或多个帧;
使用所述硬件编码器加速器解码已编码数字串流数据的所述一个或多个帧;
使用软件安全层以保护所述系统免受嵌入在已编码数字串流数据的所述一个或多个帧中的恶意数据对所述硬件编码器加速器的利用。
16.根据权利要求15所述的系统,其中所述软件安全层是在所述系统的固件中实施。
17.根据权利要求15所述的系统,其中所述软件安全层是在所述系统的系统软件中的内核驱动程序中实施。
18.根据权利要求15所述的系统,其中所述软件安全层是在所述系统的系统软件中的内核驱动程序上的软件层中实施。
19.根据权利要求15所述的系统,其中所述软件安全层被配置来计算解码所述一个或多个帧时使用的一个或多个缓冲区的必要大小并验证某个范围内的所有存储器是否有效。
20.根据权利要求15所述的系统,其中所述软件安全层被配置来一旦提交任务便保护解码所述一个或多个帧时使用的一个或多个缓冲区不被任何用户程序访问。
21.根据权利要求20所述的系统,其中所述软件安全层被配置来将所述一个或多个缓冲区从用户存储器空间复制到安全存储器空间。
22.根据权利要求20所述的系统,其中所述软件安全层被配置来将一个或多个存储器页面锁定在数据范围内以免用户程序写入。
23.根据权利要求15所述的系统,其中当所述硬件加速器以高于宏模块级解码已编码流时,所述软件安全层拒绝其中编码在所述流中的缓冲区大小相关参数与用户的请求中的这些参数不匹配的任何输入位流。
24.根据权利要求15所述的系统,其中软件安全层检查程序片位置是否在当前图片边界内且当确定程序片不在所述当前图片边界内时丢弃所述程序片。
25.根据权利要求15所述的系统,其中对于所述一个或多个帧中的每一已编码宏模块,所述软件安全层检查所述一个或多个帧中的给出宏模块是否在当前图片边界内且如果所述给出宏模块不在所述当前图片边界内那么丢弃所述给出宏模块。
26.根据权利要求15所述的系统,其中对于所述一个或多个帧中的每一宏模块,所述软件安全层检查所提及的同位参考宏模块标头是否在参考宏模块标头缓冲区内且当其不在所述参考宏模块标头缓冲区内时丢弃所述参考宏模块。
27.根据权利要求15所述的系统,其中所述软件安全层检查所述一个或多个帧中的宏模块中的运动向量是否在参考图片边界内且当所述运动向量不在所述参考图片边界内时丢弃所述宏模块。
28.根据权利要求15所述的系统,其中当使用所述一个或多个帧中的数据时,所述软件安全层对所述数据执行数据值检查。
29.一种非暂时性计算机可读介质,其中体现被配置来实施方法的计算机可读指令,所述方法包括:
在具有处理器模块、存储器和硬件编码器加速器的系统中接收已编码数字串流数据的一个或多个帧;
使用所述硬件编码器加速器解码已编码数字串流数据的所述一个或多个帧;
使用软件安全层以保护所述系统免受嵌入在已编码数字串流数据的所述一个或多个帧中的恶意数据对所述硬件编码器加速器的利用。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361789855P | 2013-03-15 | 2013-03-15 | |
US61/789,855 | 2013-03-15 | ||
US14/192,782 | 2014-02-27 | ||
US14/192,782 US9740886B2 (en) | 2013-03-15 | 2014-02-27 | Enhanced security for hardware decoder accelerator |
PCT/US2014/019601 WO2014149563A1 (en) | 2013-03-15 | 2014-02-28 | Enhanced security for hardware decoder accelerator |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105051747A true CN105051747A (zh) | 2015-11-11 |
CN105051747B CN105051747B (zh) | 2017-12-12 |
Family
ID=51535094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480016140.6A Active CN105051747B (zh) | 2013-03-15 | 2014-02-28 | 解码方法、解码系统及非暂时性计算机可读介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9740886B2 (zh) |
EP (1) | EP2973178A4 (zh) |
JP (1) | JP6055155B2 (zh) |
CN (1) | CN105051747B (zh) |
WO (1) | WO2014149563A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105338352B (zh) * | 2014-07-24 | 2019-04-19 | 华为技术有限公司 | 一种视频编码中自适应反量化方法及装置 |
US9736171B2 (en) * | 2015-10-12 | 2017-08-15 | Airwatch Llc | Analog security for digital data |
CN105677191B (zh) * | 2016-02-29 | 2019-03-08 | 宇龙计算机通信科技(深圳)有限公司 | 一种数据输入方法及装置 |
US10114569B2 (en) * | 2016-10-07 | 2018-10-30 | Cnex Labs, Inc. | Computing system with shift expandable coding mechanism and method of operation thereof |
US10592660B2 (en) | 2016-11-22 | 2020-03-17 | Microsoft Technology Licensing, Llc | Capability access management |
WO2019068353A1 (en) * | 2017-10-06 | 2019-04-11 | Nagravision Sa | MASKING TECHNIQUE |
US10762244B2 (en) * | 2018-06-29 | 2020-09-01 | Intel Corporation | Securely exposing an accelerator to privileged system components |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080010538A1 (en) * | 2006-06-27 | 2008-01-10 | Symantec Corporation | Detecting suspicious embedded malicious content in benign file formats |
US7474132B2 (en) * | 2006-12-04 | 2009-01-06 | International Business Machines Corporation | Automatic self-adaptive keeper system with current sensor for real-time/online compensation for leakage current variations |
US7478237B2 (en) * | 2004-11-08 | 2009-01-13 | Microsoft Corporation | System and method of allowing user mode applications with access to file data |
CN101411198A (zh) * | 2006-04-04 | 2009-04-15 | 高通股份有限公司 | 接收器中的视频解码 |
CN102273205A (zh) * | 2008-11-04 | 2011-12-07 | 先进微装置公司 | 以gpu加速的软件视频转码器 |
US20120121025A1 (en) * | 2010-11-12 | 2012-05-17 | Microsoft Corporation | Bitstream manipulation and verification of encoded digital media data |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6236727B1 (en) * | 1997-06-24 | 2001-05-22 | International Business Machines Corporation | Apparatus, method and computer program product for protecting copyright data within a computer system |
JP2002044658A (ja) * | 2000-07-28 | 2002-02-08 | Victor Co Of Japan Ltd | 動画像デ−タの符号化方法、復号化処理方法、符号化処理装置、及び復号化処理装置 |
US20110214157A1 (en) | 2000-09-25 | 2011-09-01 | Yevgeny Korsunsky | Securing a network with data flow processing |
US7474312B1 (en) * | 2002-11-25 | 2009-01-06 | Nvidia Corporation | Memory redirect primitive for a secure graphics processing unit |
US7685254B2 (en) | 2003-06-10 | 2010-03-23 | Pandya Ashish A | Runtime adaptable search processor |
US7703141B2 (en) | 2004-03-11 | 2010-04-20 | Microsoft Corporation | Methods and systems for protecting media content |
JP2008537427A (ja) * | 2005-04-22 | 2008-09-11 | エヌエックスピー ビー ヴィ | 効率的なビデオ復号化アクセラレータ |
US7346863B1 (en) * | 2005-09-28 | 2008-03-18 | Altera Corporation | Hardware acceleration of high-level language code sequences on programmable devices |
US20100195742A1 (en) * | 2009-02-02 | 2010-08-05 | Mediatek Inc. | Error concealment method and apparatus |
US9075913B2 (en) * | 2012-02-27 | 2015-07-07 | Qualcomm Incorporated | Validation of applications for graphics processing unit |
GB2501470B (en) * | 2012-04-17 | 2020-09-16 | Advanced Risc Mach Ltd | Management of data processing security in a secondary processor |
US9043903B2 (en) * | 2012-06-08 | 2015-05-26 | Crowdstrike, Inc. | Kernel-level security agent |
US9183379B2 (en) * | 2013-03-12 | 2015-11-10 | Intel Corporation | Preventing malicious instruction execution |
-
2014
- 2014-02-27 US US14/192,782 patent/US9740886B2/en active Active
- 2014-02-28 JP JP2016500518A patent/JP6055155B2/ja active Active
- 2014-02-28 EP EP14770996.8A patent/EP2973178A4/en active Pending
- 2014-02-28 CN CN201480016140.6A patent/CN105051747B/zh active Active
- 2014-02-28 WO PCT/US2014/019601 patent/WO2014149563A1/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7478237B2 (en) * | 2004-11-08 | 2009-01-13 | Microsoft Corporation | System and method of allowing user mode applications with access to file data |
CN101411198A (zh) * | 2006-04-04 | 2009-04-15 | 高通股份有限公司 | 接收器中的视频解码 |
US20080010538A1 (en) * | 2006-06-27 | 2008-01-10 | Symantec Corporation | Detecting suspicious embedded malicious content in benign file formats |
US7474132B2 (en) * | 2006-12-04 | 2009-01-06 | International Business Machines Corporation | Automatic self-adaptive keeper system with current sensor for real-time/online compensation for leakage current variations |
CN102273205A (zh) * | 2008-11-04 | 2011-12-07 | 先进微装置公司 | 以gpu加速的软件视频转码器 |
US20120121025A1 (en) * | 2010-11-12 | 2012-05-17 | Microsoft Corporation | Bitstream manipulation and verification of encoded digital media data |
Also Published As
Publication number | Publication date |
---|---|
WO2014149563A1 (en) | 2014-09-25 |
CN105051747B (zh) | 2017-12-12 |
EP2973178A1 (en) | 2016-01-20 |
US9740886B2 (en) | 2017-08-22 |
US20140283039A1 (en) | 2014-09-18 |
JP2016517568A (ja) | 2016-06-16 |
JP6055155B2 (ja) | 2016-12-27 |
EP2973178A4 (en) | 2016-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105051747B (zh) | 解码方法、解码系统及非暂时性计算机可读介质 | |
Yu et al. | A survey on robust video watermarking algorithms for copyright protection | |
Lin et al. | An improved DCT-based perturbation scheme for high capacity data hiding in H. 264/AVC intra frames | |
ES2978060T3 (es) | Método de aleatorización de video y dispositivo con selección de modo adaptativo, cámara de red y medio de almacenamiento legible | |
TWI655862B (zh) | 視頻編碼或解碼方法與裝置 | |
JP4353460B2 (ja) | 動画データ処理装置及び方法並びにプログラム | |
Wu et al. | A flexible H. 264/AVC compressed video watermarking scheme using particle swarm optimization based dither modulation | |
CN108965882B (zh) | 一种编解码方法及装置 | |
JP7536972B2 (ja) | ジョイント成分の二次変換 | |
Nguyen et al. | A novel steganography scheme for video H. 264/AVC without distortion drift | |
GB2561152A (en) | Data processing systems | |
Ma et al. | Fully reversible privacy region protection for cloud video surveillance | |
Mohammad et al. | Lossless visible watermarking based on adaptive circular shift operation for BTC-compressed images | |
KR20170040892A (ko) | 인코더의 작동방법과 상기 인코더를 포함하는 시스템 온 칩의 작동 방법 | |
Kaur et al. | An efficient watermarking scheme for enhanced high efficiency video coding/H. 265 | |
Kim et al. | Instability of successive deep image compression | |
JP4537348B2 (ja) | Mpeg画質補正装置、及びmpeg画質補正方法 | |
Wu | Quantization-based image authentication scheme using QR error correction | |
Kaur et al. | An efficient authentication scheme for high efficiency video coding/H. 265 | |
JP4945541B2 (ja) | 劣化ホスト信号利用の電子透かし埋め込み検出方法 | |
CN102577412B (zh) | 一种图像编码方法和装置 | |
Jiang et al. | A robust H. 264/AVC video watermarking scheme with drift compensation | |
CN116095341A (zh) | 一种水印嵌入方法、装置、设备以及存储介质 | |
CN103248885B (zh) | 帧内图像预测编解码方法及视频编解码器 | |
KR101693416B1 (ko) | 영상 부호화 방법 및 영상 복호화 방법과 상기 방법을 이용한 영상 부호화 장치 및 영상 복호화 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |