以上清单中s02行和s12行之间是Signedlnf元素,即实际签名的信息。Signedlnfo的核心验证由两个必要过程组成:对Signedlnfo的签名验证和Signedlnfo内部每个Reference摘要的验证。
s03行上,CanonicalizationMethod标识了一种算法,这种算法被用来规范化SignedInfo元素,然后该元素作为签名操作的一部分被编摘。
s04行上,SignatureMethod引用的是将规范化的SignedInfo转换成Signaturevalue所用的算法。它是密钥相关的算法和摘要算法(在这里是DSA和SHA一1)的组合,为算法签名以抵抗攻击,该攻击是基于替换成效率更低的算法。
s05一s11每个Reference元素都包括摘要方法和对已标识数据对象计算得出的摘要值。它还可能包括产生对摘要操作的输入转换。数据对象的签名是通过计算其摘要值并对该值的签名进行的。稍后通过引用和签名验证来检查该签名,这些验证将重新创建摘要值并确保它与该数据对象中的内容匹配。
s05行上,Reference的这个可选URI属性标识要签名的数据对象。在一个Signature中,至多可以对一个Reference省略该属性。
s09一s10 DigestMethod是对数据应用以产生DigestValue的算法。DigestValue的签名是将资源内容与签名者密钥绑定的机制。
s13行上是SignatureValue元素本身,它在SignedInfo之外,即位于签名部分之外,不过计算SignatureValue所使用的算法则包括在已签名的信息中。
s14行和s16行之间是Keylnfo元素(该元素是可选的),它指出了用于验证签名的密钥。标识机制可以包括证书、密钥名称和密钥协议算法。
经过签名后的XrML许可证就可以通过许可证服务器发送到客户端,客户端只需要通过XML解析器将其中内容进行提取,就可以验证许可证发送方的合法性并从中提取媒体文件内容密钥对所需播放的媒体文件进行解密收看,然而客户端同样具有许可证验证器,需要对许可证所赋予的权限进行验证和判断,并赋予用户相应的权限。
4 结束语
通过对比运用C语言和XrML两种方式实现数字电视视频点播数字许可证的管理,可以看出,传统的权利管理方式存在难以扩展、实现复杂等缺点,但是在需要较简单权利保护并且无法提供较高实现平台的条件下,不失为一种比较直接的做法。由于第二代数字权利保护体制的出现,xrML已经得到了广泛的运用,并且出现了在Linux和Windows环境下用C++和Java开发的解析器和验证器。文中的试验都是在Windows环境下实现的,但是有了这些解析器的出现,很容易应用在Linux的操作系统环境中。并且对于传统的数字版权管理方案仅仅只是应用C语言结构体进行定义部分必要信息和简单的数字权限,存在着特殊性和局限性。
由于网络的普及,数字版权保护显得越来越重要,引起了越来越多人的关注。无论是电子书,音乐、电影、mp3等等网络媒体文件都将面临着版权的威胁,凭借着其良好的扩展性以及简单的设计实现,XrML语言将会成为数字版权管理的行业标准。