密码学_Diffine-Hellman秘钥交换 2

开始本节之前先问个简单问题: 加密技术属于通信协议模型里的第几层里的应用? 答案:第六层表现层

 Diffine-Hellman秘钥交换的过程大致如下: 先举个情景例子

如果Alice 和 Bob 正在通信,他们共享一个prime:q  和 integer:  α  (α<q) 以及α是q的本原根 (primitive root)

Alice 产生了一个私钥XA,XA<q, Bob产生一个私钥 XB,XB<q ,  Alice计算公钥 YA=α^XA mod q , Bob计算公钥 YB=α^XB mod q,

到这一步他们开始交换各自的公钥,Alice得到共享秘钥K=(YB)^XA mod q, Bob得到共享秘钥 K=(YA)^XB mod q, 以上就是整个秘钥交换的全过程. 

注:什么叫本原根? b≡a^i mod p,  这里 a 是b和 p的本原根

那算法怎么实现? 看下面

prime : q  和 α 是两个公开的integer,也就是所有人都知道,如果上面的Alice 和 Bob 想交换秘钥,那么Alice 可以选择一个随机整数

XA<q (A是X的下标), 计算 YA=α^XA mod q, Bob也选择一个随机整数 XB<q, 计算 YB=α^XB mod q, 他们两个人都不告诉对方 X, 也就是Alice不知道XB,Bob不知道XA,但这里的YA和YB是什么? 是公钥,那么既然是公钥说明 YA,YB对与双方都是知道的,是公开的,也就是这两个公式里只有XA、XB不知道,别的变量大家都是知道的.  好了,那继续,Alice现在想产生自己的私钥,K=(YB)^ XA mod q, Bob也想产生自己的私钥 K=(YA)^XB mod q, 他们都是用对方的信息产生自己的私钥的,但他们产生的各自的私钥结果其实是相同的,所以这个结果也就是共享秘钥,但这个过程他们交换了什么?交换的是各自的公钥 YA,YB,以上就算完成秘钥交换了!!!所以他们交换的秘钥是指的什么? 指的是公共秘钥!!

那这个共享秘钥一般干什么用的呢? 通常作为对称密码的秘钥.   (公钥加密不是不对称的么,为什么这里又说是作为对称密码的秘钥呢?请自己先思考)

本节说的有点多请看第3节

猜你喜欢

转载自blog.csdn.net/weixin_38134491/article/details/84319118