Diffine-Hellman Key exchange 1

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

Diffine-Hellman算法的功能只限制用于秘钥交换,是后面的ElGamal加密算法的重要组成部分.

公钥加密典型的有RSA加密还有就是ElGamal加密算法、椭圆曲线加密算法

公钥(public-key)分配机制

-Cannot be used to exchange an arbitrary message

-Rather it can establish a common key

-Known only to the two particaipants

Diffine-Hellman算法的设计原理是出于计算离散对数的难度比较大.

(注意区分专有名词: secret key 秘钥,private key 私密秘钥,public key公钥)

原理分析: 

a mod p, a^2 mod p,....,a^(p-1) mod p    注: here, p is a prime.

这个过程每部各不相同,可以看成是1到p-1的一个置换.

用另一种表达式表示:

b ≡ a^i (mod) p,  0<=i<=(p-1)  

 

 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,以上就算完成秘钥交换了!!!所以他们交换的秘钥是指的什么? 指的是公共秘钥!!

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

本节说的有点多请看下一节

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值