与有基本消息格式的基于DH交换的协议相比,增加对DH交换消息的认证主要有以下两点不同:共享秘密是瞬时DH密钥,通常能提供前向秘密性;对瞬时公钥(grA)签名,通常能避免密钥泄露假冒攻击(知道A的私钥不能假冒B)。
站对站(Station-to-Station,STS)协议在消息交换时添加了数字签名,从而为DH协议提供认证。另外,共享秘密被用来提供进一步的确认。图4.52说明了STS协议的主流版本,加密的变量被MAC代替(后面将讨论)。共享秘密是ZAB=grArB,会话密钥KAB属于ZAB。
图4.52 站对站协议
由于共享的秘密是瞬时DH密钥,站对站协议具有前向安全性。签名抵御了密钥泄露假冒攻击,因为如果长期密钥丢失,这不会帮助敌手伪造一个不同的实体的签名。
对称加密在STS协议中是很重要的,加密确保对方拥有相同的会话密钥,这样可以抵御未知密钥共享攻击。若无加密,敌手C可以用他自己的签名替换A的签名,这样造成的结果是A和B都完成了协议,但是B认为他与C共享密钥而A认为他与B共享密钥,具体过程如图4.53所示。
图4.53 不使用加密的站对站协议及攻击
通过在签名交换时包含参与实体的名字,可以避免未知密钥共享攻击。而且,该交换提供了对等实体的具体特征,这样实体验证的稍强形式就实现了;另外,通过这种方式对称密码学在协议中就不再需要了。图4.54给出了对STS协议进行这种改变后得到的协议。(www.daowen.com)
图4.54 调整的STS协议
使用加密机制的目的是保证签名方拥有会话密钥且不提供秘密性,所以加密机制在STS协议中的角色可以由MAC代替,这样就产生了图4.55所示协议。图4.55所示协议的一个潜在缺点就是增加了第二次和第三次交换消息的长度。
Blake-Wilson和Menezes提出了一种可选择的未知密钥共享攻击,这种攻击中敌手能够选择正确的私钥,所以验证过程不能用来抵抗攻击。假设协议运行中的签名为SigA(tA,tB),敌手C必须找到一个新的公钥满足SigC(tA,tB)=SigA(tA,tB)。这里敌手需要面对两个问题:一是找到一个满足复制签名的密钥,二是实际运行协议时拥有新的密钥进行验证。
图4.55 使用MAC函数的STS协议
第一个问题可以通过一些特殊的数字签名解决。第二个问题很常见,一旦这样的替换实现了,敌手的攻击过程也会在参与方之间留下中转信息。但是这个攻击仅仅对使用MAC函数STS协议有效,对图4.52所示协议无效,因为为了计算新的公钥,敌手需要看到签名。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。