您的位置:首页 > 其它

密钥交换方法 在线可信任第三方、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)。假设一攻击者截取,并修改包内容,攻击者便可篡改Al
9f6d
ice或者Bob发送消息,篡改成攻击者的消息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: