硬件解码器加速器的增强安全性的制作方法_3

文档序号:9332710阅读:来源:国知局
解码区段419 (例如已解码块或宏模块),其包括可以用作对后续宏模块的像素 预测和重建程序418的输入的相邻像素。用于像素预测和重建416的数据相依性允许以宏 模块级对相同程序片中的宏模块进行某个程度的并行处理。
[0051] 后期处理任务组420可以包括去块滤波器422,其应用于已解码区段419中的块以 通过平滑化当使用块编码技术时可形成于块之间的锐利边沿来改善视觉质量和预测性能。 去块滤波器422可以用于改善所得经去块区段424的外观。
[0052] 已解码区段419或经去块区段424可以提供用于对相邻宏模块进行去块的相邻 像素。此外,包括来自当前解码图片的区段的已解码区段419可以提供用于对后续宏模块 进行的像素预测和重建418的参考像素。在此阶段期间,来自当前图片内的像素可以任选 地用于与上文描述的图片相同的当前图片内的像素预测,而不依赖于所述图片(或其子区 段)是已进行帧间编码还是帧内编码。去块420可以针对相同图片中的宏模块以宏模块级 并行化。
[0053] 后期处理420之前产生的已解码区段419和经后期处理的区段424可以存储在相 同缓冲区中,例如取决于所涉及的特定编解码器而存储在输出图片缓冲区中。应注意,去块 是H. 264中的后期处理滤波器。因为H. 264使用预去块宏模块作为相邻宏模块帧内预测的 参考且使用后期去块宏模块作为未来图片宏模块帧间预测的参考。因为预去块和后期去 块像素用于预测,所以解码器或编码器必须对预去块宏模块和后期去块宏模块两者进行缓 冲。对于大部分低成本消费者应用,预去块图片和后期去块图片共享相同缓冲区以减小存 储器使用量。对于H. 264之前的标准(诸如MPEG2或MPEG4,除MPEG4part 10以外)(注 意:H. 264也称作MPEG4part 10),只有前后处理宏模块(例如,预去块宏模块)用作其它宏 模块预测的参考。在这些编解码器中,预滤波的图片无法与后期滤波的图片共享相同缓冲 区。
[0054] 因此,对于H. 264,在像素解码之后,已解码区段419保存在输出图片缓冲区中。随 后,经后期处理区段424取代输出图片缓冲区中的已解码区段419。对于非H. 264情况,解 码器只将已解码区段419保存在输出图片缓冲区中。后期处理是在显示时间完成且后期处 理输出无法共享与解码器输出图片缓冲区相同的缓冲区。
[0055] 解码程序400的至少一些部分可以在硬件解码器104上实施。黑客可将恶意代码 或数据插入到由系统100接收的已编码串流数据401中。这种恶意代码或数据可以用于通 过硬件解码器104的未经授权使用来攻击系统。硬件解码器加速器安全层114可被配置来 保护硬件解码器104免受这种恶意攻击。
[0056] 保护硬件解码器
[0057] 为了保护硬件加速器104,用户应用202和加速器104的介接必须携带足够多的存 储器访问信息。如果用户应用202提交请求给硬件解码器加速器104,那么所述请求必须携 带由解码器104访问的所有用户缓冲区208的地址。其还必须携带所有必要信息来计算硬 件加速器104的存储器使用量。由硬件加速器104针对不同编码标准使用的这些缓冲区的 一些实例在下文的表1中加以列出。
[0058] 表1
[0061] 对于现有视频编码标准,这些缓冲区大小相关信息是以高于宏模块级编码在视频 流中。表1I展示了缓冲区大小信息针对不同视频标准如何编码在所述视频流中。
[0062] 表1I
[0063]
[0064] 在接收用户请求之后,解码器保护层114可以计算每一缓冲区的必要大小且验证 范围内的所有存储器是否有效。对于更好的安全,一旦提交任务,用户请求消息和表1I中 的所有缓冲区(除视频流缓冲区和已解码像素缓冲区以外)应受到保护而不会被任何用户 程序访问。否则,在请求被验证之后黑客将有机会用无效请求取代有效请求,或当加速器正 处理这些缓冲区时黑客可改变这些数据缓冲区中的内容。
[0065] 保护这些缓冲区免受恶意使用的可能方法的一些实例包括但不限于:
[0066] 1.将缓冲区从用户存储器空间复制到安全存储器空间
[0067] 2.将存储器页面锁定在数据范围内以免用户程序写入。注意:缓冲区大小是由提 交任务请求的用户应用中的存储器使用信息来计算。
[0068] 通常,已解码像素缓冲区对于加速器104进行"只写入"。因此通常无须保护此缓 冲区。一般来说,保护视频流缓冲区出于许多原因可能是不切实际的。首先,此缓冲区的大 小可以极大且将此缓冲区中的所有数据复制到另一存储器空间中可能不切实际。其次,用 户应用仍然可以作用于其它图片的位流缓冲区。已编码图片大小是不可预测的。难以对准 图片边界与存储器页面边界。因此,将某些页面锁定在缓冲区中以免受用户访问可能不切 实际。
[0069] 当硬件加速器104以高于宏模块级解码已编码流时,保护层114可拒绝任其中编 码在流401中的缓冲区大小相关参数不匹配用户请求中的这些参数的何输入位流。此保护 硬件解码器加速器104免受缓冲区溢出攻击。
[0070] 对于所有视频编码标准,在每一已编码程序片中,程序片标头携带指示程序片的 起点位置的信息。在某些实施方式中,解码器保护层114可以检查程序片位置是否在当前 图片边界内。如果确定程序片不在当前图片边界内,那么此程序片应被丢弃,因为其可能包 括恶意代码或数据。
[0071] 此外,对于每一已编码宏模块,保护层114可以检查当前宏模块是否在当前图片 边界内,如果当前宏模块不在当前图片边界内,那么保护层114可以丢弃此宏模块。
[0072] 在H. 264、MPEG4或VCl流解码的情况中,对于每一宏模块,保护层114可以检查所 提及的同位参考宏模块标头是否在参考宏模块标头缓冲区内。如果其不在参考宏模块标头 缓冲区内,那么应丢弃此宏模块。
[0073] 在MPEG2流解码的情况中,保护层114应检查运动向量是否在参考图片边界内。如 果其不在参考图片边界内,那么应丢弃此宏模块。
[0074] 应注意,因为其难以如上文讨论般保护输入流缓冲区,所以对于以上所有位流检 查,当使用数据时应检查数据值。否则,黑客将有机会在加速器验证数据的时间与加速器使 用数据的时间之间更改位流内容。
[0075] 一些特殊保护情况
[0076] 并非所有硬件均有能力锁定某些缓冲区以免受用户程序访问。例如,如果用户应 用可访问宏模块中间数据缓冲区,那么黑客可更改缓冲区中的内容以指示加速器读取系统 秘密信息作为参考运动向量或参考像素。因此,取决于宏模块中间数据缓冲区和参考宏模 块标头缓冲区的内容,应为某些存储器访问操作添加额外保护。下文是可实施这些额外保 护的所建议最佳实践的一些实例,
[0077] 1.对于所有视频标准,如果运动向量存储在宏模块中间数据缓冲区中,那么加速 器必须在参考像素读取之前检查每一运动向量。
[0078] 2.对于H. 264和VCl流,如果同位宏模块运动向量存储在参考宏模块标头缓冲区 中,那么加速器安全层114必须在每一参考像素读取之前检查运动向量参考ID。
[0079] 3.对于H. 264、MPEG4和VCl流,如果相邻宏模块有效标志存储在宏模块中间数据 缓冲区中,那么加速器安全层114必须在任何相邻宏模块访问之前检查相邻宏模块是否在 当前图片边界内。
[0080] 本公开的方面包括被配置来实施上文描述的各种类型的硬件解码器加速器安全 层的系统。例如且无限制,图5说明根据本公开的方面的可以用于实施视频编码的计算机 系统500的方框图。系统500通常可以包括主处理器模块501、存储器502和硬件解码器 505。处理器模块501可以包括一个或多个处理器核心,例如单核、双核、四核处理器-协处 理器、Cell处理器、架构等等。
[0081] 存储器502可以呈集成电路的形式,例如RAM、DRAM、ROM等等。存储器还可以是 可由处理器模块501中的所有处理器核心访问的主存储器。在一些实施方案中,处理器模 块501可以具有与一个或多个处理器核心或一个或多个协处理器相关的本地存储器。软件 编码器程序503可以可在处理器模块501上执行的处理器可读指令的形式存储在主存储器 502中。编码器程序503可以被配置来结合例如如上文描述的硬件解码器加速器505将图 片解码为压缩信号数据。硬件解码器加速器安全层503A还可以存储在存储器502中并在 处理器模块501上执行。安全层503A被配置成如上文讨论般实施用于硬件编码器加速器 的额外安全。编码器程序503和硬件解码器加速器安全层503A可以任何适当处理器可读 语言(例如,C、C++、JAVA、汇编语言、MATLAB、FORTRAN和多种其它语言)写入。
[0082] 输入或输出数据507可以存储在存储器502中。在编码器程序503和/或安全层 503A的执行期间,程序代码和/或数据507的部分可以被加载到存储器502或处理器核心 的本地存储装置中以处理所述
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1