SD2.0 Specification之CPRM(Content Protection for Recordable Media)

本文章主要讲解关于SD卡的CPRM(Content Protection for Recordable Media)功能,关于SD卡的基础概念和其它内容请参考以下文章。
SD2.0 Specification简述

CPRM是一种防止内容未经许可而被复制传播的技术,可用于商业娱乐影音内容、版权等的保护。SD卡应用该技术,可防止卡里面的内容被非法复制传播。

1 CPRM简介

背景

CPRM技术由4C Entity, LLC开发与授权,4C Entity, LLC是一个产业组织,成员有以下几家公司,包括Intel Corporation,International Business Machines Corporation,Panasonic Corporation,Toshiba Corporation。

技术关键

  • 密钥管理
  • 内容加密

系统运行简化示例

  1. 设备生产商在每个设备上都存放有device keys ,device keys 由4C Entity, LLC提供。
  2. 存储介质生产商在每个介质上都存放一个Media Identifier和Media Key Block 。
  3. 通过设备的device keys和介质的Media Key Block 可以生成一个Media Key。
  4. 存储介质的内容是通过Content Key进行加解密的,而Content Key是通过Title Key和copy control information (CCI) 进行计算得到的,Title Key则是通过Media Unique Key进行加密保存的,而Media Unique Key是由Media Key和Media Identifier生成的。

要素介绍

密码功能

C2块密码算法(C2 Block Cipher Algorithm)

C2是Cryptomeria Cipher的简称,公共密码功能是基于C2 block cipher实现的,具体有2种模式:Electronic Codebook (ECB) mode 和Converted Cipher Block Chaining (C-CBC) mode。

  • ECB mode
    加密函数表达:C2_E(k, d),其中k是56 bits的key,d是需要加密的64 bits数据,返回的是64 bits已加密的数据。
    解密函数表达:C2_D(k, d),其中k是56 bits的key,d是需要解密的64 bits数据,返回的是64 bits已解密的数据。
  • C-CBC mode
    加密函数表达:C2_ECBC(k, d),其中k是56 bits的key,d是需要加密的64 bits数据,返回的是64 bits已加密的数据。
    解密函数表达:C2_DCBC(k, d),其中k是56 bits的key,d是需要解密的64 bits数据,返回的是64 bits已解密的数据。
C2哈希函数(Hash Function)

CPRM的哈希处理是建立在C2加密基础上的,函数表达式为:C2_H(d),其中d是需要做哈希处理的任意长度数据,返回的是64 bits数据。下图所示为整个哈希过程,其中d’代表输入的数据,其长度必须是64 bits的整倍数,不满足该条件的话,需要按照一定规则补满数据,然后分成n份64 bits的数据顺序处理。函数f定义为:f(x) = [x]lsb_56,其中x是64 bits的输入,输出56 bits的ki,首次输入的固定初始化值h0是由4C Entity, LLC提供的。

ki = f(hi-1),i>=1
hi = C2_E(ki, di’) ⊕ di’,⊕表示XOR

C2哈希功能

C2单向函数(One-way Function)

CPRM的单向函数是建立在C2加密基础上的,函数表达式为:C2_G(d1, d2),其中d1是56 bits有效值,d2是64 bits有效值,返回的是64 bits数据。具体流程如下图所示

C2_G(d1, d2) = C2_E(d1, d2) ⊕ d2.

C2单向函数

随机数生成器

这里的随机数生成器有2种,一种是随机,一种是伪随机,二者都与C2单向函数有关。

C2随机数生成器

随机数生成流程如下图所示,其中初始化值s0是在生产时就固定,k是56 bits值,由设备随机产生或者4C Entity, LLC提供,ei跟run-time entropy(没搞懂这个是什么意思)有关,大小为1 bit

ri = C2_G(ki, si),
ki = f(k, ei),ki是k的最后1bit与ei异或的结果
si+1 = ri.

C2随机数生成器

C2伪随机数生成器

随机数生成流程如下图所示,其中初始化值s0是在生产时就固定,k是56 bits值,由设备随机产生或者4C Entity, LLC提供。

ri = C2_G(k, si)
si+1 = [si + 1]lsb_64

C2伪随机数生成器

密钥管理

CPRM包含多个密钥,它们的关系如下图所示
密钥处理流程
密钥管理元素

2 SD的CPRM应用

CPRM组成成分

SD存储卡

内容加解密协议

内容的加解密

Content Encryption and Decryption on SD Memory Card
上图展示SD卡上的整个加解密过程,下面针对图中展示做解释

  • (1) 设备从SD卡获取MKB,然后使用设备密钥(Device Keys)和MKB计算出Media Key(Km)
  • (2) 设备从SD卡中获取Media Identifier (IDmedia),然后使用Km和IDmedia计算出Media Unique Key (Kmu)
  • (3) 相互之间的身份验证(AKE流程),具体参考下一节。
  • (4a) AKE流程会生成一个Session Key (Ks),在写设备种先使用Kmu对Title Key (Kt) 和CCI (Copy Control Information) 进行加密,然后在总线传输前再使用Ks加密,SD卡在收到内容后,先使用Ks解密,再把内容存到保护区。
  • (4b) 在读设备读取保护区数据时,SD卡先使用Ks将已加密Kt和CCI再进行一次加密后发送给读设备,读设备接收到数据后,先用Ks解密,然后再用Kmu解密,还原出原始的Kt和CCI。
  • (5a) 设备在向SD总线传输用户区数据前,需要先使用Kt对数据进行加密
  • (5b) 设备在收到SD发送过来的用户区数据时,需要使用Kt对数据进行解密。

总结:在AKE流程之后,在总线上传输的内容都是经过加密的。区别在于所使用的密钥。

AKE流程

Details of Authentication and Key Exchange (AKE) on SD Memory Card
上图展示的是设备与SD卡之间的身份验证与密钥交换过程(Authentication and Key Exchange,简称AKE),下面针对流程图里标记的步骤逐步解释

  • (3a-1) 将SD命令的32 bits参数与一个32 bits的随机数拼接成64 bits数值,参数部分是MSB,随机数是LSB
  • (3a-2) 使用Kmu (Media Unique Key)对上一步的64 bits数据进行C2_E加密处理,得到一个新的64 bits数据。
  • (3a-3) 将上一步输出的64 bits数据(这里称为Challenge1)发送给SD卡
  • (3a-4) SD卡使用Kmu (Media Unique Key)对接受到的Challenge1进行C2_D解密。
  • (3b) SD卡生成一个64 bits的随机数(这里称为Challenge2)发送给设备
  • (3c) 设备收到Challenge2后计算出Response2 = C2_G (Kmu, Challenge2),并且将Response2发送给SD卡。而SD卡也计算出Vresponse2 =C2_G (Kmu, Challenge2),SD判断收到的Response2与自身计算出来的Vresponse2是否相等,如果相同,则继续后续验证流程(3d),如果不同,整个身份验证流程宣布失败。
  • (3d) SD卡使用Challenge1计算出Response1 = C2_G (Kmu, Challenge1),并将Response1发送给设备。而设备也计算出Vresponse1 = C2_G (Kmu, Challenge1),将Response1和Vresponse1 做比较,如果相同,则继续后续验证流程(3e),如果不同,整个身份验证流程宣布失败。
  • (3e) 设备和SD卡都将Kmu按位取反得到一个~Kmu值
  • (3f) 设备和SD卡利用~Kmu、Challenge1、Challenge2三者计算出Session Key (Ks) ,Ks用于对数据进行加解密。
    Ks = [C2_G (~Kmu, Challenge1⊕ Challenge2)] lsb_56

总结:整个过程思路很简单,就是给对方发送数据,看对方计算出来的数据是否与自己计算的一致。

未完

参考资料:

  • Content Protection for Recordable Media Specification: SD Memory Card Book Common Part, Revision 0.97,December 15, 2010
  • Content Protection for Recordable Media Specification: Introduction and Common Cryptographic Elements, Revision 1.1,December 15, 2010
  • SD Specifications Part 3 Security Specification Version 3.00
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值