DH密钥交换
密模运算
所谓幂模,就是先做一次幂运算,再做一次模运算。
模运算有以下性质:
也就是说,先模再乘和先乘再模,只要最后都模了同一个模数,结果都是一样。
有了这个性质,我们首先得到幂模运算的这种两次运算交换律。
单向性
已知 g 和 n 容易计算得到 y ,而已知 g 和 y 很难求得 x 。
举个例子说明:
这个显示结果的最后一列,也可以再次印证欧拉定理。
由于到目前位置都没有一个很好的求解离散对数的算法,只有正向一个一个的试 才能找到那个满足条件的 x 。
DH密钥交换
由于幂模运算的单向性,离散对数和大整数素因子分解一样都是一种陷门函数,所以同样可以基于幂模运算设计一套公钥密码。
假设通信双方Alice和Bob需要使用对称密码进行加密通信,对称密码所使用的密钥我们通常称为会话秘钥,那么可以用一下的DH密钥交换过程在不安全的信道上实现会话密钥的安全协商。
这个过程看起来好复杂,不是说好了要协商会话密钥的吗?这个 ka 和 kb 能确保一样吗?咱们可以来证明一下。
所以,他们协商出的会话密钥一定是相同的。