ISO 26430-1:数字影院密钥传递消息标准解读

深入解析数字影院密钥传递消息 RSA 加密的内容密钥交付、CPL-密钥绑定、可信设备列表与法证标记控制

一、KDM 架构与安全模型

ISO 26430-1(SMPTE 430-1)定义了数字影院系统的密钥传递消息(KDM)。KDM 是一种基于 XML 的安全消息,用于将内容解密密钥从内容处理方(后期制作或发行商)传递到放映设施。它携带三种基本信息类型:指定合成播放列表(CPL)的内容密钥、密钥使用参数(主要是有效日期/时间窗口)以及标识允许使用内容密钥的设备的可信设备列表(TDL)。KDM 基于数字影院通用影院外消息格式,并使用 XML 加密和 XML 数字签名原语实现安全性。ETM 基本格式提供了具有 AuthenticatedPublic 和 AuthenticatedPrivate 部分的通用消息信封,KDM 通过影院特定的密钥传递参数对其进行了扩展。这种分层架构意味着相同的安全基础设施可以支持 KDM 之外的多种消息类型,例如影院管理消息和安全日志消息,为影院安全部署提供了运营灵活性。KDM 通常由发行商或第三方安全提供商运营的密钥管理系统生成,并通过电子邮件、门户网站或自动化 API 交付给影院。每个 KDM 由其 Id 元素(UUID)唯一标识,支持在从内容所有者到放映的整个分发链中跟踪和审计密钥传递操作。

KDM 使用 RSA 公钥密码术单独加密每个内容密钥。这种设计允许硬件安全模块处理 KDM,即使安全内存有限(低至 4 KB)。每个加密密钥块为 256 字节(2048 位 RSA),包含 214 字节的明文载荷,包含密钥、元数据和用于防篡改的结构 ID。这种小的内存占用对于数字影院媒体块中使用的嵌入式安全处理器至关重要。

二、KDM 结构与 CPL-密钥绑定

KDM 通过 KDMRequiredExtensions 元素扩展了 ETM 格式,其中包含:Recipient(通过 IssuerName 和 SerialNumber 标识目标证书)、CompositionPlaylistId(目标 CPL 的 UUID)、ContentTitleText、ContentAuthenticator(用于 CPL 验证的可选证书指纹)、AuthorizedDeviceInfo(用于密钥使用授权的设备列表)、ContentKeysNotValidBefore/After(有效时间窗口)以及 KeyIdList(列出消息中的所有密钥 UUID)。实际的加密密钥值携带在 AuthenticatedPrivate 部分中,每个密钥都封装在使用 RSA-OAEP 的 EncryptedKey 元素中。每个 EncryptedKey 绑定在一起:结构 ID(0xF1DC124460169A0E85BC300642F866AB)、证书指纹、CompositionPlaylistId、KeyType(例如用于画面的 “MDIK”、用于声音的 “MDAK”)、KeyId、有效日期和 128 位 AES 内容密钥。密钥与 CPL 之间的绑定通过密码学方式强制执行:CompositionPlaylistId 既出现在已签名(但未加密)的 AuthenticatedPublic 部分中用于路由目的,也出现在 RSA 加密块内作为无法在不被检测到的情况下修改的权威值。这种双重放置可以防止中间人攻击,即攻击者试图将针对一个合成的 KDM 重定向到另一个合成。Recipient 元素使用证书的 IssuerName 和 SerialNumber 来标识目标解密设备,确保只有预期的媒体块才能解包和使用内容密钥。

密钥类型 十六进制值 说明
MDIK 4D.44.49.4B 画面片断解密密钥
MDAK 4D.44.41.4B 声音片断解密密钥
MDSK 4D.44.53.4B 字幕片断解密密钥
FMIK 46.4D.49.4B 画面法证标记密钥
FMAK 46.4D.41.4B 声音法证标记密钥
KDM 支持法证标记标志,可以在每个密钥的基础上禁用画面或音频法证标记。这允许权利所有人控制在播放期间是否应用法证水印或指纹识别,为不同的发布窗口或地区要求提供灵活性。法证标记密钥类型(FMIK、FMAK)与解密密钥类型分开,允许法证标记功能独立于解密进行授权。

三、密码操作与安全设计

KDM 的安全模型是分层式的。AuthenticatedPublic 部分经过数字签名(RSA-SHA256),任何接收方无需解密即可验证。AuthenticatedPrivate 部分同时经过签名和加密——只有预期的接收方(由 Recipient 元素标识)才能使用其 RSA 私钥解密内容密钥。三个关键的有效性检查可防止攻击:(1) 验证签名者的证书指纹与 KDM 签名者匹配,防止剪贴攻击;(2) 验证结构 ID,防止替换来自其他消息类型的 RSA 块;(3) 验证 KDM 中所有位置的 CompositionPlaylistId 一致性。密钥类型绑定(例如 “MDIK” 仅可用于画面解密)可防御跨系统攻击,防止声音密钥被替换为画面密钥。此外,AuthorizedDeviceInfo 元素支持设备级授权,确保只有影院中特定、可信的媒体块才能使用已交付的密钥。可信设备列表可以包含多个设备指纹,允许单个 KDM 授权在多厅影院环境中的多个影厅播放,同时排除未经授权的设备。

从工程实现的角度来看,KDM 实现了一种灵活的业务模式:单个 KDM 可以为同一内容传递多个密钥,但不同内容的不同密钥必须使用单独的 KDM。处理设备可以在首次收到 KDM 时解包内容解密密钥,并使用本地 AES 或 TDES 密钥(最低 112 位熵)重新加密以安全地本地存储,避免在每次播放时执行昂贵的 RSA 操作。这种本地密钥存储机制对于高吞吐量环境中的性能至关重要,因为在这种环境中多个影厅可能同时开始播放。

四、常见问题

问:一个 KDM 可以包含多个合成的密钥吗?
答:不可以。KDM 的范围限定为单个 CompositionPlaylistId。KDM 中的所有密钥都用于同一内容。不同内容需要单独的 KDM,即使交付给同一接收方。
问:KDM 的有效期窗口是如何强制执行的?
答:ContentKeysNotValidBefore 和 ContentKeysNotValidAfter 时间戳既嵌入在未加密的 KDMRequiredExtensions 中(用于路由),也嵌入在 RSA 加密块内(作为权威值)。放映设备必须将当前时间与这些边界进行检查,并在有效窗口之外拒绝解密。
问:AuthorizedDeviceInfo 元素的目的是什么?
答:它包含一个证书指纹设备列表,标识被授权使用已交付密钥的特定可信设备(例如特定图像媒体块或声音媒体块)。这允许权利所有人将内容播放限制到影院中的特定可信设备。
问:KDM 可以重复用于多场放映吗?
答:可以,只要放映时间落在 KDM 中指定的有效窗口内。KDM 本身是一个静态 XML 文档——同一 KDM 可以加载一次,并在整个上映期间用于所有放映场次。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注