区块链密码学技术学习-DH密钥交换

1.背景与作用

迪菲和赫尔曼在 1976 年基于非对称加密架构之上,提出了一种两个节点之间可以安全进行公钥分享的协商协议,也就是迪菲-赫尔密钥交换协议(D-H KeyExchange)[17-18],整个协议是在黑客可以监听网络通信内容的假设下建立的。

由于大素数乘积求其因子的计算量相比于乘法操作高出数个量级,这限制了在有限时间内计算出某一节点私钥的可能性。因此,交换协议通常需要进行大数的运算,通常要求其中所有基础数据的位数大于 256 位。当前,这种协商协议已经被广泛应用于金融、P2P、IPsec 等领域中。(有疑问,等书籍到手对比一下)。

2.基础知识

2.1 离散对数定义

给定a,b,m,其中a与m互素,求最小的非负(正)整数x,使得:a^x≡b (mod m)。我们称x为模m意义下,以a为底的b的离散对数,记作ind a b。

2.2 欧拉函数定义

对于正整数 n,欧拉函数表示 n的缩同余类的个数,也就是 1,2,3,...,n-1中与 n互素的数的个数。(这里不需要考虑 0 和 n ,因为当 n > 1 时,这两个数一定与 n 不互素。)

2.3 阶和元根定义

2.3.1 阶定义

给定一个与m互素的a,则最小的一个满足:a^r≡1 (mod m) 的正整数r叫做a模m的阶,一般记作r=δm(a)。显然,r可以用离散对数求出。

2.3.2 元根定义

对于模数m,如果存在一个数g,满足:δm(g)=φ(m) 我们则称g为模m的一个元根。

3.D-H密钥交换算法步骤

DH密钥交换思想是基于离散对数的,在现有双方First和Second要进行秘钥交换的背景下,有两个公开的数g和p,其中p为素数,g是p的一个元根。First有自己的私钥a,Second有自己的私钥b,a,b均小于p,且私钥绝对保密。

交换过程如下:

  1. First用私钥a生成A,过程如下:A = g^a mod p,然后通过信道发送出去。
  2. Second用私钥b生成B,过程如下:B= g^b mod p,然后通过信道发出去。
  3. Frist收到B后执行 B^a mod p = Fkey。
  4. Second收到A后执行 A^b mod p =Skey。
  5. Fkey = Skey (因为整体执行下来 Fkey = (g^b)^a mod p ,而Skey=(g^a)^b mod p,故相等。

从而达到共享秘钥的目的,二者通信可通过Fkey这个公共秘钥加密后面的通讯内容。

整个过程中因为只有g 、p、A、B是公开的,私钥a、b保密的,故基于离散对数运算,敌人很难破解公共秘钥。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值