DiffieHellman算法描述目前被许多商业产品交易采用.docx

上传人:b****6 文档编号:13473001 上传时间:2023-06-14 格式:DOCX 页数:4 大小:81.10KB
下载 相关 举报
DiffieHellman算法描述目前被许多商业产品交易采用.docx_第1页
第1页 / 共4页
DiffieHellman算法描述目前被许多商业产品交易采用.docx_第2页
第2页 / 共4页
DiffieHellman算法描述目前被许多商业产品交易采用.docx_第3页
第3页 / 共4页
DiffieHellman算法描述目前被许多商业产品交易采用.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

DiffieHellman算法描述目前被许多商业产品交易采用.docx

《DiffieHellman算法描述目前被许多商业产品交易采用.docx》由会员分享,可在线阅读,更多相关《DiffieHellman算法描述目前被许多商业产品交易采用.docx(4页珍藏版)》请在冰点文库上搜索。

DiffieHellman算法描述目前被许多商业产品交易采用.docx

DiffieHellman算法描述目前被许多商业产品交易采用

Diffie-Hellman算法描述:

目前被许多商业产品交易采用。

HD算法为公开的密钥算法,发明于1976年。

该算法不能用于加密或解密,而是用于密钥的传输和分配。

DH算法的安全性体现在:

在有限域上计算离散对数非常困难。

离散对数:

定义素数p的原始根(primitiveroot)为这样一个数,它能生成1~p-1所有数的一个数。

现设a为p的原始根,则

amodp,a2modp,,,ap-1modp两两互不相同,构成一个1~p-1的全体数的一个排列。

对于任意数b及素数p的原始根a,可以找到一个唯一的指数i,满足b=aimodp,0<=i<=p-1

则称指数i为以a为底、模P的b的离散对数。

1)HD算法描述

假设Alice和Bob想在不安全的信道上交换密钥,则他们可采取如下步骤:

(1)Alice和Bob共同协商一个大素数p以及p的原始根a,a和p可以公开。

(2)Alice秘密产生一个随机数x,计算X=sfmodp,然后把X发给Bob;

(3)Bob秘密产生一个随机数y,计算Y=afmodp,然后把Y发给Alice;

(4)Alice计算k=Yxmodp;

(5)Bob计算k*=Xymodp;

因为

k=Yxmodp=(ay)xmodp=(ax)ymodp=Xymodp=k*所以k=k*。

不安全线路上的窃听者只能得到a、p、X、Y,除非能计算离散对数x和y,否则将无法得到密钥k。

因此,k为Alice和Bob独立计算出的密钥。

例:

Alice和Bob在不安全网络信道上秘密交换密钥,见下

图。

Alice

图4-3Diffie-Hellman密钥交换

(RefC_p57_HD算法描述)

(1)Alice和Bob协商后决定采用素数p=353及其原始根

a=3;

(2)Alice秘密产生一个随机数x=97,计算

X=37mod353=40,然后把X=40发给Bob;

则双方得到共同密钥k=160

缺点:

DH密钥交换算法易受到中间人攻击。

中间人攻击描述:

(1)Alice公开发送值a和p给Bob,攻击者Carol截获这些值,随即把自己产生的公开值发给Bob。

(2)Bob公开发送值a和p给Alice,又被Carol截获,随即把自己产生的公开值发给Alice。

(3)Alice和Carol计算出两人之间的共享密钥k1。

(4)Bob和Carol计算出两人之间另一个的共享密钥k2。

受到中间人Carol攻击后,Alice用密钥k1给Bob发送消息,Carol截获后用k1解密就可读取消息,然后将获得的明文消息用k2加密(加密前对消息可能做某些修改,即主动攻击),然后发给Bob=对Bob发给Alice的消息,Carol用同样的手法读取和修改。

造成中间人攻击得逞的原因是:

DH密钥交换算法不进行认证对方。

利用数字签名可以解决中间人攻击的缺陷。

2)经过认证的DH密钥交换

用于挫败中间人攻击,可用数字签名和公钥证书相互认证方法进行。

在密钥交换之前,Alice和Bob双方各自拥有公钥/私钥对和公开密钥证书。

(1)Alice和Bob确定一个公共的p和a,该两数值必须以

可靠的方式公布(例如通过PKI公布,后介绍)

(注:

Carol可得到p和a。

(2)Alice产生随机数x,并发给Bob。

(注:

Carol可得x,现已得到p、a和x,但仍无法算出k。

(3)Bob产生随机数y,并根据DH协议计算岀共享秘密密钥k=Ymodp=(aymodp)xmodp=(ay)xmodp,然后Bob对x、y签名(何谓签名?

如何签名?

后详述)并用k加密此签名,最后把加密的签名和消息,以及y

一起发给Alice。

(注:

Carol可得y,现已得到p、a、x和y,现可同

Bob—样算出k,即k现为一公钥,Carol可以用k解密消息,但不可更改,因为消息和签名“捆绑”在一起,而Carol对Bob的签名无法做手脚。

4)Alice计算出k=Xymodp=(axmodp)ymodp=(ax)ymodp,用k解密Bob发给她的消息,并对其签名进行验证(如何验证?

后详述),确信消息为真。

验证后对x、y签名并用k加密此签名和自己的消息后,然后发给Bob。

(注:

Carol同样可以用k解密,但不可更改Alice的消息。

5)Bob解密消息,并验证Alice的签名,确信消息为

(注:

整个通信过程中,

Carol只能进行被动攻击

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2