密钥交换方法 在线可信任第三方、Merkle Puzzles及Diffie-Hellman原理简介
2018-03-16 19:58
1101 查看
密钥交换方法
关于我密码学分类中的文章,之前讲到的加密方法,甚至是保护完整性的MAC都需要双方各持有相应的Key才能达到相应的效果。之前的前提都是假设双方都持有这个Key,而Key如何交换并没有做太多的讨论。
在线可信任第三方 OnlineTrusted Third Party
原理:
假设Alice与Bob需要相互通信,需要相互交换密钥(Kab),Alice持有自己的Ka,Bob持有自己的Kb。(1)Alice向第三方发出申请:“我需要和Bob通话”(形象化表达o( ̄▽ ̄)d)(2)第三方收到请求并向Alice回复第一条信息,用Ka加密的密文(密文内容基本为“此key用于Alice和Bob之间的通信”之类)和Kab:E(Ka,("A,B"||Kab))(3)第三方回复的第二条内容称之为Ticket,也就是“票据”,用Kb加密的密文和Kab:E(Kb,("A,B"||Kab))(4)Alice用Ka解密第一条信息,得到Kab,并将票据(Ticket)发送给Bob。(5)Bob用Kb解密得到Kab。至此,双方否持有相同的Key Kab。
优点:
1.依旧是对称加密,加密速度快。2.如果是公司内部等需求,可信任第三方自己架一个都行。缺点:
1.难以阻止Replay Attack重放攻击。2.可信任第三方掌握着一切密钥,通信必须在可信任第三方在线时。而且一旦可信任第三方信息泄露,将会造成严重后果。协议:
Kerbero,希腊神话“三个头的狗——地狱之门守护者。是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。Merkle Puzzles:
直译过来叫:Merkle谜题,是对称加密在共享密钥阶段最极限的方式,这里也就能看出对称加密有一定的局限性。原理:
依旧假设,Alice要与Bob共享密钥。(1)Alice准备一堆谜题E(K,m),每个谜题的m都是以“Puzzle”后面接不同的Key和一个标示作用不同的X,假设谜题总共有2^32个。(2)Alice将所有的谜题发送给Bob。(3)Bob随机选择2^32中的一个解开,并将解密的Puzzle中的X返还给Alice。(4)Alice将拿到的X与自己的谜题作比较,找到相同X的,此谜题中的额Key就是Alice与Bob共有的Key。Alice需要O(n)时间来加密,Bob需要O(n)时间来解密,而攻击者,即使拿到全部传递数据,也需要O(n^2)时间来解密。
优点:
1.是现阶段对称加密方式共享密钥最好的方法。2.想法很好,使用了平方鸿沟的概念,用户是加密使用线性时间,而攻击者需要平方时间来解密。缺点:
1.共享一个Key所需数据量太大。2.和非对称加密比起来简直惨不忍睹。
Diffie-Hellman:
Diffie-Hellman加密算法的有效性依赖于计算离散对数的难度。原理:
依旧假设Alice和Bob要交换密钥。Diffie-Hellman加密算法有几样东西要准备,P一个极大的质数,g取自1-P之间。在此我们假设g=3,P=17,以方便计算。(1)Alice将g=3,P=17发送给Bob。(2)Alice随机选一个私有的随机数,比如15。(3)Alice计算g^15 mod 17也就是3^15 mod 17=6,发送结果6给Bob。(4)Bob随机选一个私有的随机数,比如13。(5)Bob计算g^13 mod 17也就是3^13 mod 17=12,发送结果12给Alice。(6)Alice将Bob寄过来的数字12做计算,12^15 mod 17=10。Bob同理,6^13 mod 17=10。至此10就成了共享密钥。其实Alice与Bob做了相同的计算,只是顺序略微有些不同,Alice:3^(13^15) mod 17 Bob:3^(15^13) mod 17。即使,我们有攻击者,并且得到了传送过程中的一切数据包。那他将获得g=3,P=17,6,12四个数字,而攻击者无法由计算获得相同的结果。
缺点:
无法防御中间人攻击(Man In Middle)。假设一攻击者截取,并修改包内容,攻击者便可篡改Al9f6d
ice或者Bob发送消息,篡改成攻击者的消息。
相关文章推荐
- 密钥交换方法 在线可信任第三方、Merkle Puzzles及Diffie-Hellman原理简介
- Diffie–Hellman 密钥交换协议简介
- Diffie-Hellman密钥交换算法的原理及程序演示
- 迟到 39 年的图灵奖 - Diffie-Hellman 密钥交换原理及例程源代码
- Diffie-Hellman密钥交换协议工作过程
- Diffie-Hellman密钥交换 -- 浅析
- Node.js如何使用Diffie-Hellman密钥交换算法详解
- Diffie-Hellman 密钥交换协议
- pomelo学习笔记 (3) node.js 与 c 客户端 Diffie-Hellman 密钥交换算法的实现
- Diffie-Hellman密钥交换算法简单理解
- DH密钥交换(Diffie–Hellman key exchange)算法笔记
- Diffie-Hellman密钥交换
- Diffie-Hellman密钥是如何交换的
- Diffie-Hellman密钥交换算法
- Diffie-Hellman密钥交换算法
- Diffie-Hellman密钥交换算法及其优化
- Diffie-Hellman密钥交换算法及其优化
- Diffie-Hellman密钥交换算法的JavaScript实现
- RSA与 Diffie-Hellman密钥交换 的区别
- Microsoft 安全公告 3174644-Diffie-Hellman 密钥交换的更新支持