帮我看看这个认证协议有啥可以改进的 缺点肯定很多 谢谢大家

密钥交换协议,没看到A对B的认证。
针对第二步的攻击:
由于k被B明文发送回来,所以攻击者可以在中途截获k,自己选择t\u0026#39;, 然后依次计算 h\u0026#39; = hash(t\u0026#39;||k),
c1\u0026#39; = r\u0026#39;G, c2\u0026#39; = S‘ + r\u0026#39;Q. (话说Q是什么?)
A将对此毫无察觉,第3步中的认证无用。(malicious acceptance !)
改进建议:
【帮我看看这个认证协议有啥可以改进的 缺点肯定很多 谢谢大家】 使用数字签名,B用自己的签名密钥签在((k, h) (c1, c2))上
=========补充一点如何理论检验一个协议的安全性的方法==============
完全的理论研究方法可以参考这篇论文中的ACCE模型
https://www.nds.ruhr-uni-bochum.de/media/nds/veroeffentlichungen/2012/08/22/main.pdf
朴素的检验方法可以分为下面几步:
1. 检验所有的Nonce的有效长度和随机程度;
若有小于多项式长度的Nonce,则不安全
2. 检验所有hash、prf和prp的模式,以及数据签名的安全程度:
比如这个例子里,若hash是类似CBC模式,则第二步把h(t||k)改成h(k||t)会导致安全问题
3. 检查所有和验证有关的步骤的前一步。
逐个替换消息中的参数,看会不会导致
3.1 malicious acceptance, 这个中文可能可以翻译为“非法接受”
具体在题主这个协议里是说,在改变了验证信息之后,A在接下来的验证中无法发现。
3.2 distinguishable keys,意思是说,最后产生的session key对于攻击者来说不是随机的
这个安全要求比较高,直观而言,就是攻击者可以通过篡改A、B间的通信内容,对session key产生影响。
我在下面这个问题的回答末尾提到了一个例子,攻击者可以让A使用一个固定的session key
已知部分明文和密文和加密方式怎么攻击protocol然后得到全部明文? - 用户的回答
如果以上都没有问题,那么这个协议在随机数不冲突、hash安全、数字签名安全且交换方法安全的情况下基本是安全的。


    推荐阅读