在会话密钥交换( HDCP 2.3,pdf)中,HDCP发射机还发送riv的256位HMAC (HMAC 256(riv,kd))。
为什么要这么做?它能阻止任何攻击吗?
发布于 2018-11-19 13:39:47
让我们首先分析一下这个(HMAC-SHA256(riv, kd))。
如RFC2104中所述,HMAC可以定义为:HM AC=H(K⊕opad||H(K⊕ipad||text)),其中H是选择的哈希函数,K是秘密密钥,⊕是独占或符号,||是级联符号,ipad、opad是常量值。
在此纸的基础上,将HMAC构建在反向默克-达蒙哈希函数上,产生了一个背向HMAC方案,该方案使用后门密钥很容易被遗忘。
因此,可以很容易地看出,在k⊕ipad对消息进行预处理后,HMAC~h的内部哈希链仍然会发生冲突,由于外部链对所有消息相等,m和m∗都有相同的标记t。换句话说,HMAC并不是因为它使用了一个秘密密钥而具有后门弹性。总之,由于持有后门的对手可以伪造新消息的标记,HMAC~h是可伪造的,因此不存在伪随机。
有关更多信息,请参考纸。
HMAC是一种用于计算涉及密码散列函数的消息认证码(MAC)的特定结构。输入是一个消息和一个键,输出是HMAC值。它用于验证消息的数据完整性和真实性。HDCP标准附带的哈希函数是SHA256函数,它与512位的输入块一起工作。
在HDCP标准中,使用HMAC- the 256函数进行局部性检验和H (HMAC of
km)计算。关于时间的最严格的HMAC计算是在地区检查中使用的计算。如前所述,NIOS处理器没有足够的计算能力在2ms内完成HMAC- the 256操作。这就是为什么必须用VHDL重写这个块的原因。用于局部性检查的HMAC有256位的密钥大小和64位的消息大小。
用于局部性检查的HMAC- the 256算法的
局部性检查要求接收和发送端计算随机数
rn(消息)和预共享密钥kd的HMAC值。在开始计算之前,必须使用预共享随机数(kd)对预共享密钥rrx进行搜索。随机数rn以明文形式发送给接收方,接收方返回HMAC值。发射机现在检查它自己的HMAC是否与接收的HMAC相同。只有拥有预共享密钥的人才能计算出正确的HMAC值。另外,由于HMAC - the 256算法是单向函数,因此不可能从HMAC值中得到密钥。

(由Lukas公司的硕士论文提供)
发布于 2018-12-12 09:25:48
如下图所示,密钥是使用p= ((riv XOR streamCtr) x\x inputCtr)生成的。要求“如果两个基本流共享相同的Ks或riv,那么包含在给定程序或不同程序中的两个基本流都不能具有相同的streamCtr”,以便用不同的密钥(使用不同的p)加密流。
如果攻击者能够修改riv,则可以通过发送修改的riv使发射机生成另一个streamCtr的密钥。

发布于 2018-11-19 13:25:26
发送HMAC的目的是为消息提供更多的真实性。

HDCP接收机的公钥证书由HDCP发射机验证,然后设备共享主密钥Km。...接收到加密的Km后,接收机使用接收者私钥对其进行解密。
下面是HMAC的目的:
在接收方成功解密km后,将HMAC-SHA-256的H_Prime、主密钥Km的哈希值发回给发射机。这是为了向发射机提供一个确认,即接收机确实成功地解密了主密钥Km。
有关详细信息,请查看此链接
https://security.stackexchange.com/questions/197981
复制相似问题