HDCP学习
来源:互联网 发布:linux shell 小数比较 编辑:程序博客网 时间:2024/06/06 07:51
根据《201302.HDCP on HDMI Specification Rev2_2_Final1.pdf》
TX: HDCP Transmitter
RX: HDCP Receiver
所有的HDCP设备有一个相同的128 bit全局常量lc_128。TX拥有一个3072 bit的RSA公钥kpub_dcp。RX拥有一个1024 bit的RSA公钥和私钥。公钥存放在公钥证书里面,公钥证书由DCP LLC发布。该证书内容包括DCP LLC签名、RX公钥、RX ID,4136个bit。
一、HDCP认证协议
HDCP认证协议功能在于实现TX对RX能够接收数据权限的认证。
包括这几个阶段:
1. AKE(Authentication and Key Exchange)。TX认证RX的公钥证书,并交换km(Master Key)。
2. Locality Check。
3. SKE(Session Key Exchange)。TX和RX交换ks(Session Key)。
4. Repeaters的认证。
在AKE过程中,TX执行如下过程:
1. TX向RX发送AKE_Init消息,包括64 bit随机数r_tx和TxCaps参数;
2. TX从RX接收AKE_Send_Cert消息,包含cert_rx,64 bit随机数r_rx和RxCaps;
3. TX向RX发送AKE_No_Stored_km/AKE_Stored_km消息,包含了加密的k_m;
3.1 如果TX发现本地没有保存与RX ID对应的现成的k_m(Master Key),那么
3.1.1 TX会用kpub_dcp检查cert_rx中的签名;
3.1.2 TX生成128 bit随机字符串k_m,用kpub_rx加密k_m,得到1024 bit E_kpub(K_m);
RSAES-OAEP encryption scheme
PKCS #1 V2.1: RSA Cryptography Standard
SHA-256
3.1.3 TX向RX发送AKE_No_Stored_km消息,包含E_kpub(K_m)。
3.1.4 TX根据kpub_dcp进行SRM(System Renewability Message)和revocation检查。
3.1.5 TX计算H
128 bit dkey_0 = AES-CTR(k_m XOR r_n, r_tx || (r_rx XOR ctr)) 注:r_n=0, ctr=0
128 bit dkey_1 = AES-CTR(k_m XOR r_n, r_tx || (r_rx XOR ctr)) 注:r_n=0, ctr=1
256 bit k_d = dkey_0 || dkey_1
256-bit H = HMAC-SHA256(r_tx || RxCaps || TxCaps, k_d)
3.2 如果TX发现本地保存有与RX ID对应的现成的k_m(Master Key),那么
3.2.1 TX向RX发送AKE_Stored_km消息,消息包含本地保存的128 bit E_kh(k_m)和与RX ID相关的128 bit m。
3.2.2 TX根据kpub_dcp进行SRM(System Renewability Message)和revocation检查。
3.2.3 TX计算H
128 bit dkey_0 = AES-CTR(k_m XOR r_n, r_tx || (r_rx XOR ctr)) 注:r_n=0, ctr=0
128 bit dkey_1 = AES-CTR(k_m XOR r_n, r_tx || (r_rx XOR ctr)) 注:r_n=0, ctr=1
256 bit k_d = dkey_0 || dkey_1
256-bit H = HMAC-SHA256(r_tx || RxCaps || TxCaps, k_d)
4. TX从RX接收AKE_Send_H_prime消息,得到H',比较H和H'。
5. 若No Stored k_m,TX接收AKE_Send_Pairing_Info消息,保存m、k_m、E_kh(k_m)、RX ID。
在AKE过程中,RX执行如下过程:
1. RX从TX接收AKE_Init消息。
2. RX向TX发送AKE_Send_Cert消息。
3. RX从TX接收AKE_No_Stored_km/AKE_Stored_km消息
3.1 若收到AKE_No_Stored_km消息,那么
3.1.1 RX用RSAES-OAEP decryption scheme+kpriv_rx解密得到k_m;
3.1.2 RX计算H'
3.2 若收到AKE_Stored_km消息,那么128 bit dkey_0 = AES-CTR(k_m XOR r_n, r_tx || (r_rx XOR ctr)) 注:r_n=0, ctr=0
128 bit dkey_1 = AES-CTR(k_m XOR r_n, r_tx || (r_rx XOR ctr)) 注:r_n=0, ctr=1
256 bit k_d = dkey_0 || dkey_1
256-bit H' = HMAC-SHA256(r_tx || RxCaps || TxCaps, k_d)
3.2.1 RX计算128 bit k_h = SHA-256(kprivrx)[127:0],m=r_rx||r_tx;
3.2.2 RX用AES(m, k_h)解密E_kh(k_m),得到k_m;
3.2.3 RX计算H'
4. RX向TX发送AKE_Send_H_prime消息。128 bit dkey_0 = AES-CTR(k_m XOR r_n, r_tx || (r_rx XOR ctr)) 注:r_n=0, ctr=0
128 bit dkey_1 = AES-CTR(k_m XOR r_n, r_tx || (r_rx XOR ctr)) 注:r_n=0, ctr=1
256 bit k_d = dkey_0 || dkey_1
256-bit H' = HMAC-SHA256(r_tx || RxCaps || TxCaps, k_d)
5. 若No Stored k_m,RX向TX发送AKE_Send_Pairing_Info消息,包含了128 bit E_kh(k_m)和m;
在Locality Check过程中,TX向RX发送LC_Init消息,RX必须在20ms内回复LC_Send_L_prime消息。
LC_Init消息包含64 bit r_n;
LC_Send_L_prime消息包含L'=HMAC-SHA256(r_n, k_d XOR r_rx);
TX会比较L和L'。
在SKE过程中,TX向RX发送加密过的Session Key,TX会在之后用这个Session Key加密数据,RX用这个Session Key解密。
1. TX生成128 bit随机数k_s(Session Key)和64 bit随机数r_iv;
2. TX生成dkey_2=AES-CTR(k_m XOR r_n, r_tx || (r_rx XOR ctr)) ,这里由ctr=2;
3. TX计算128 bit E_dkey(k_s)=k_s XOR (dkey_2 XOR r_rx);
4. TX向RX发送SKE_Send_Eks消息,包含了E_dkey(k_s)和r_iv;
5. RX生成dkey_2=AES-CTR(k_m XOR r_n, r_tx || (r_rx XOR ctr)) ,这里由ctr=2;
6. RX计算k_s=E_dkey(k_s) XOR (dkey_2 XOR r_rx)。
Repeaters认证
- HDCP学习
- HDCP
- HDCP
- HDCP ---- 名词解释
- HDCP定义
- Android HDCP
- Miracast/HDCP
- HDCP Notes
- HDMI之HDCP
- HDMI CEC HDCP
- HDMI之HDCP
- HDMI接口 HDCP
- hdcp主钥泄露
- HDCP 会议简记
- HDCP的key交互
- HDCP源代码测试
- HDCP版权保护机制
- HDMI之HDCP
- 天梯赛L2-006树的遍历---已知中序后序---输出层序遍历
- 如何完成从科研人员到初创企业 CEO 的转型?
- 利用反射 获取android布局文件中设置的属性值
- 拍照上传
- mysql导出数据库表结构以及数据
- HDCP学习
- Linux中安装PHP的ZendGuardLoader扩展的详细解决方案
- 面向对象
- 查找(3)——二叉排序树的建立、结点的查找和删除
- Charles 抓包
- 使用NTP服务器同步Android设备时间
- 既然绝大多数科研人员都可以查阅顶级期刊,为什么不同学校之间的科研实力依然差距巨大?
- iOS巅峰之调用系统相机和打开闪光灯
- Apollo 入门指导