解决DRM 部署所面临的障碍
标签:OEM DRM
本文引用地址:http://www.amcfsurvey.com/article/165126.htm数字媒体播放器 OEM 厂商在考虑是否支持 DRM 这一争议性问题之前,要首先了解高效实施 DRM 技术所面临的障碍。高效 DRM 实施技术不仅限于优化的加密库,要是采用错误的实施方法,就会导致商业决策失误,甚至实施失败。本文将深入探讨如何减小 DRM 对数字媒体播放器的影响,以帮助那些希望采用 DRM 技术的 OEM 厂商避免对技术产生恐慌和不确定性情绪,减少对 DRM 实施可行性的不确定因素,从而使他们能专心致力于 DRM 的高效实施问题。本文探讨的方案能解决 DRM 实施所面临的最常见障碍,适用于任何标准或架构。
通常说来,解决 DRM 时延与性能问题的关键在于尽可能减少 DRM 处理任务对关键路径的影响。DRM 处理任务的计划安排通常是实现上述目的的关键,我们可以采用预取 (prefetching) 或预处理数据、后台处理等方案,也可以在用户做思考决定、时延影响不大时进行处理。工程师应侧重于解决以下三个问题,一是启动期间,二是播放,三是内容传输,这三个阶段均会对性能、易用性以及电池使用寿命造成影响。
启动时间
DRM 会影响启动时间,这一点相当重要,起初我们可能还难以直观地察觉到。说到底,DRM 是一种验证使用权限的技术方法,因此就算人们会问,它怎么会影响设备启动时间呢,也不足为奇。要了解这一点,我们就要考虑在任何 DRM 规范中都非常重要的一部分要求,那就是稳健性与符合性认证规则 (RCR)。
RCR 是定义着 OEM 厂商如何避免 DRM 软、硬件被欺骗或修改的指南。请注意,尽管这些指南根据具体 DRM 标准的不同可能采用不同的名称,但它们的基本目的都是一样的,即稳健的设备必须能够识别企图改变应用代码的行为,避免 DRM 机制被破解或失效。在对受保护的内容进行解锁或允许存取之前,设备必须先确认 DRM 机制已经就绪,没有被篡改,而且能正常工作。此外,设备必须避免调试工具的使用,因为这些工具会让黑客有机会破解或更改许可证。
RCR 要求根据特定的系统资产或组件的不同要求采用不同层次的保护机制。举例来说,在基于证书的 DRM 方案中,确认播放器能够播放内容服务器内容的证书就是一种高级资产,要求最高级别的保护,因为证书受损就会导致设备上的所有内容失去保护。如果特定设备的证书由具体 OEM 厂商的证书生成,那么这种证书受损就会导致该 OEM 厂商基于该证书推出的所有设备保护失效。与此相对的是,破译某首歌曲的密钥就不是一种特别重要的资产,因为这种密钥仅保护一项内容。上述资产,不管是证书、密钥还是基于其它一些保护机制或秘密机制,都应得到正确的保护。总体说来,内容受损的风险越大,对稳健性等级的要求就越高,并且对用户使用体验的潜在影响也就越大。
损坏的代码不见得一定是因为恶意攻击而损坏的,但这是对 DRM 构成最危险的威胁之一;如果应用本身就能被修改,那么密钥与内容都可能受损。因此,在执行任何应用代码之前,设备必须确认应用来源的可信赖性。此外,这种验证必须在每次设备加电时进行,这样才能确保硬件没有被篡改。这里要面临的挑战是,确认应用的代码本身也容易受到破坏,因此它也要在执行前进行确认(见图 1)。
图 1. 在加电执行任何应用代码之前,设备必须验证并确认应用来自可信赖的来源。所面临的挑战是,如果验证并确认应用的代码本身也容易受到破坏,那么其也要在被执行前进行验证并确认。但是,如果不能修改 ROM 启动加载程序 (ROM Boot Loader),那么它就不会受到破坏,因此加电时毋需确认就可以得到信任。
表 1. 安全启动加载程序技术确认设备首次加电启动时软、硬件都处于已知的可信赖状态。为了尽可能降低时延,代码分几个阶段进行验证并载入。如果检测到某个阶段遭到破坏,设备会启动灾难恢复模式并进行设备再配置,如果没有问题,设备就会载入首个代码影像,即 ROM 启动加载程序,这是由硅芯片厂商提供的,不能修改,因此能确保验证有效。将使用散列方法进行后续代码验证,有时还会采用唯一芯片 ID 进行验证,之后进行解密。我们将启动进程分解为几个阶段,这使设备能加速与用户进行互动,缩短了用户所觉察到的启动时延时间。
安全启动加载程序技术是避免执行两难困境的关键,也是成功确认软、硬件均处于已知可信赖状态的关键(见表 1)。当设备首次加电后,处理器会执行已知的 ROM 启动加载程序。这个代码影像是设备专用的,并只支持最基本的功能,其中包括有限的加密功能,以验证并确认后续启动加载程序代码,并在检测到破坏情况下启动灾难恢复模式。该代码不能修改,这一点至关重要;换言之,由于其不能被更改,因此不会遭到损坏,也毋需进行确认。请注意,诸如显示功能等确认故障通知信息等功能可能实现片外存储,或在通过 ROM 启动加载程序确认的代码中有选择性的执行,不过在确认已发生故障的情况下,ROM 启动加载程序不能确保相关代码的可用性。
在许多情况下,ROM 启动加载程序由硅芯片厂商提供,除非双方有特定的协议规定,否则 OEM 厂商不能修改。其首要任务就是确认用户启动加载程序。用户启动加载程序是通过硅芯片厂商开发工具的可配置框架构建而成,由 OEM 厂商确定。它能提供底层驱动程序和连接接口,如显示屏、USB 接口或硬盘等,此外还能补充设备的加密功能。在产品设计阶段,能够根据需要对其进行更新修改,但通常产品上市后就不能再修改了。
ROM 启动加载程序确认用户启动加载程序的常见方法是采用散列来确认代码是否被改动,随后再对代码解密(代码加密是为了避免有可能导致代码安全性受影响或者泄露加密信息的逆向工程破解)。一旦 ROM 启动加载程序验证了用户启动加载程序,用户启动加载程序就可依次验证并确认主应用(即应用启动加载程序),然后用户就能开始存取受保护的内容。如果处理器采用唯一的硅芯片 ID,只可以读取但不能修改,那么代码确认的安全性还能进一步提高。此外,OEM 厂商除了能用这种唯一的 ID 作为密钥根 (root for secret key) 而外,也能用它来对内容加密,使内容锁定于特定的播放器。
评论