为啥一个消息在认证或认证密钥建立协议中必须是新鲜的

新鲜消息主要是针对重放攻击(replay attack)的防范.
=====================================================
但认证协议或者带认证的密钥协商协议(authenticated key exchange protocol, AKE)安全分析,尤其是在形式化安全证明里(formal security proof), “新鲜”(freshness)的定义所涵盖的内容远比“防replay”复杂。
简单来说,如果参与协议的一方是新鲜(fresh)的,那么他所持有的隐秘会话信息才有被攻击的价值。(not trivially breakable)。这里注意,freshness并不针对消息,而是针对参与协议双方的状态。(Section 3 , https://eprint.iacr.org/2000/014 )
假设参与认证密钥协商协议(AKE)的是Alice和Bob双方。(注1)
如果Alice不新鲜,意思是说下面这些事情至少有一件在Alice身上发生了
- 攻击者拿到了Alice所持有的long term secret,比如认证用的密码(password),预共享密钥(pre-shared key)或者Alice的数字签名私钥( 为啥一个消息在认证或认证密钥建立协议中必须是新鲜的
)- 攻击者拿到了Alice与Bob当前新生成会话密钥 为啥一个消息在认证或认证密钥建立协议中必须是新鲜的
- 攻击者拿到了Bob所持有的long term secret- 攻击者得到了Alice在产生新会话密钥时,所使用的所有随机量,比如nonce值或者 为啥一个消息在认证或认证密钥建立协议中必须是新鲜的
所对应的x (注2)以TLS 1.2 所使用的TLS_DHE_XXXX 加密套件(cipher suite)为例。The Transport Layer Security (TLS) Protocol Version 1.2
考虑要求对双方都进行认证的情况,那么Alice持有公私钥对 为啥一个消息在认证或认证密钥建立协议中必须是新鲜的
,Bob会知道Alice的公钥。反之Bob也持有自己的公私钥对,Alice持有Bob的公钥(注3)
接下来我们依次查看上面的四种Alice不再新鲜的情况,注意攻击者的目的是算出会话密钥 为啥一个消息在认证或认证密钥建立协议中必须是新鲜的

如果攻击者已事先掌握Alice的私钥,那么他显然可以冒充Alice和Bob通信,即可以计算出正确的会话密钥 为啥一个消息在认证或认证密钥建立协议中必须是新鲜的
如果攻击者直接拿到 为啥一个消息在认证或认证密钥建立协议中必须是新鲜的
, 呃 ......如果攻击者事先持有Bob的公钥,那么他也可以冒充Bob,得到会话密钥 为啥一个消息在认证或认证密钥建立协议中必须是新鲜的
拿到内部状态,则攻击者可以算出pre-master secret, 进而可以算出master secret, 以及从master secret导出的会话密钥 【为啥一个消息在认证或认证密钥建立协议中必须是新鲜的】 为啥一个消息在认证或认证密钥建立协议中必须是新鲜的
很明显,一旦攻击者拿到这些信息, 无论协议本身设计如何完善,都是没办法防御攻击的。也就是说,如果协议参与中的一方“不新鲜”,则有比攻击协议简单得多的方式来获取会话信息。另外,这种信息窃取一般都是透过对计算机系统本身的攻击来完成的。
因此,用freshness来隔离这些trivial cases可以让我们更集中在协议本身的安全性上,比如保证
如果攻击者篡改了Alice和Bob发送的消息,最终Alice和Bob一定会发现,并且不会使用由篡改过的消息生成的会话密钥;如果攻击者拿到无关群众的私钥,比如Oscar的私钥 为啥一个消息在认证或认证密钥建立协议中必须是新鲜的
,不会对Aliceh-Bob的通信产生威胁;如果攻击者拿到过去Alice和Bob曾经产生的 为啥一个消息在认证或认证密钥建立协议中必须是新鲜的
, 不会对 为啥一个消息在认证或认证密钥建立协议中必须是新鲜的


推荐阅读