📖 前言:本章首先介绍最早、最简单的PKCS——Diffe-Hellman密钥交换,然后介绍另一个重要方案——EIGamal PKCS。
DH算法 | 迪菲-赫尔曼Diffie–Hellman 密钥交换
Diffie-Hellman密钥交换 Diffie-Hellman_Key_Exchange
对于一个素数 𝒒 𝒒 q ,如果数值 a 𝒎 𝒐 𝒅 𝒒 , a 𝟐 𝒎 𝒐 𝒅 𝒒 , a 𝟑 𝒎 𝒐 𝒅 𝒒 , . . . a ( 𝒒 − 𝟏 ) 𝒎 𝒐 𝒅 𝒒 a \ 𝒎𝒐𝒅 \ 𝒒,a^𝟐 \ 𝒎𝒐𝒅 \ 𝒒,a^𝟑 \ 𝒎𝒐𝒅 \ 𝒒,... a^{(𝒒−𝟏)} \ 𝒎𝒐𝒅 \ 𝒒 a mod q,a2 mod q,a3 mod q,...a(q−1) mod q是各不相同的整数,并且以某种排列方式组成了从1到𝒒 -1的所有整数,则称整数𝜶是素数𝒒的一个本原根。
3是素数19的一个本原根,则:
3mod19=3 32 mod19=9 33 mod19=8
34 mod19=5 35 mod19=15 36 mod19=7
37 mod19=2 38 mod19=6 39 mod19=18
310 mod19=16 311 mod19=10 312 mod19=11
313 mod19=14 314 mod19=4 315 mod19=12
316 mod19=17 317 mod19=13 318 mod19=1
对于一个整数𝒃和素数𝒒的一个本原根𝜶,可以找到一个唯一的指数𝒊 ,使得: 𝒃 = a 𝒊 𝒎 𝒐 𝒅 𝒒 ( 𝟎 ≤ 𝒊 ≤ 𝒒 − 𝟏 ) 𝒃=a^𝒊 \ 𝒎𝒐𝒅 \ 𝒒(𝟎≤𝒊≤𝒒−𝟏) b=ai mod q(0≤i≤q−1)成立,则指数𝒊称为𝒃的以𝜶为底数的模𝒒的离散对数。
离散对数的难解性
证明: 𝑲 = ( 𝒀 𝑩 ) 𝑿 𝑨 𝒎 𝒐 𝒅 𝒒 𝑲=(𝒀_𝑩)^{𝑿_𝑨} \ 𝒎𝒐𝒅 \ 𝒒 K=(YB)XA mod q
= ( a 𝑿 𝑩 𝒎 𝒐 𝒅 𝒒 ) 𝑿 𝑨 𝒎 𝒐 𝒅 𝒒 (a^{𝑿_𝑩 } \ 𝒎𝒐𝒅 \ 𝒒 )^{𝑿_𝑨} \ 𝒎𝒐𝒅 \ 𝒒 (aXB mod q)XA mod q
= ( a 𝑿 𝑩 ) 𝑿 𝑨 𝒎 𝒐 𝒅 𝒒 (a^{𝑿_𝑩 })^{𝑿_𝑨} \ 𝒎𝒐𝒅 \ 𝒒 (aXB)XA mod q
= a 𝑿 𝑩 𝑿 𝑨 𝒎 𝒐 𝒅 𝒒 a^{𝑿_𝑩 𝑿_𝑨 } \ 𝒎𝒐𝒅 \ 𝒒 aXBXA mod q
= ( a 𝑿 𝑨 ) 𝑿 𝑩 𝒎 𝒐 𝒅 𝒒 (a^{𝑿_𝑨 })^{𝑿_𝑩} \ 𝒎𝒐𝒅 \ 𝒒 (aXA)XB mod q
= ( a 𝑿 𝑨 𝒎 𝒐 𝒅 𝒒 ) 𝑿 𝑩 𝒎 𝒐 𝒅 𝒒 (a^{𝑿_𝑨 } \ 𝒎𝒐𝒅 \ 𝒒)^{𝑿_𝑩} \ 𝒎𝒐𝒅 \ 𝒒 (aXA mod q)XB mod q
= ( 𝒀 𝑨 ) 𝑿 𝑩 𝒎 𝒐 𝒅 𝒒 {(𝒀_𝑨)}^{𝑿_𝑩 } \ 𝒎𝒐𝒅 \ 𝒒 (YA)XB mod q
练习题
已知A和B使用Diffie-Hellman密钥交换算法,共享参数q=11,它的一个本原根a=2,A的私钥为3,B的私钥为4,计算通信密钥K。
答:已知 q = 11 , a = 2 , X A = 3 , X B = 4 q=11, a=2, X_A=3, X_B=4 q=11,a=2,XA=3,XB=4
则 Y A = a X A m o d q = 2 3 m o d 11 = 8 Y_A=a^{X_A} \ mod \ q\ = \ 2^3 \ mod \ 11 \ = \ 8 YA=aXA mod q = 23 mod 11 = 8
K = ( Y A ) X B m o d q = 8 4 m o d 11 = 4 K \ = (Y_A)^{X_B} \ mod \ q = 8^4 \ mod \ 11 = 4 K =(YA)XB mod q=84 mod 11=4
对于连接在同一LAN下的不同用户,每人产生一个在较长时间内有效的私钥X,计算出公钥Y
将全体用户的公钥存放于中心目录下
当某用户要与其他用户通信时,只需访问中心目录即可获取对方公钥,计算出通信的密钥K
DH算法几乎已经渗透到互联网每个安全传输协议中,包括HTTPS中的加密标准SSL协议、SSH加密通信协议、IPSec等等
IPsec是一种安全的网络协议套件,通过网络在两台计算机之间提供安全的加密通信,它常用于VPN。
IKE是IPSec套件中的一部分,为IPSec提供了自动协商密钥。
扩展阅读
SSH或Secure Shell是一种加密网络协议,用于通过不安全的网络安全地运行网络服务。典型的应用程序包括远程命令行,登录和远程命令执行,但是任何网络服务都可以使用SSH进行保护。其中,SSH进行密钥交换使用的就是Diffie-Hellman的密钥交换方案。
Internet协议安全性(IPsec)是一种安全的网络协议套件,可对数据包进行身份验证和加密,以通过Internet协议网络在两台计算机之间提供安全的加密通信。 它用于虚拟专用网络(VPN)。
IKE是IPSec套件中的一部分。IKE为IPSec提供了自动协商密钥、建立IPSec安全联盟的服务,能够简化IPSec的使用和管理,大大简化IPSec的配置和维护工作。
对等体之间建立一个IKE SA完成身份验证和密钥信息交换后,在IKE SA的保护下,根据配置的AH/ESP安全协议等参数协商出一对IPSec SA。
其中,IKE用到的密钥信息交换方案就是Diffie-Hellman的密钥交换方案。
❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页
注:ElGamal不再用于密钥交换,而是像RSA这样用作加解密操作。
𝒒 = 𝟏 𝟗 , a = 𝟏 𝟎 𝒒=𝟏𝟗,a=𝟏𝟎 q=19,a=10
Alice 选择私钥
𝑿
𝑨
=
𝟓
𝑿_𝑨=𝟓
XA=5(
X
A
<
q
−
1
X^A
Alice 的公钥对为: { 𝒒 , a , 𝒀 𝑨 } = { 𝟏 𝟗 , 𝟏 𝟎 , 𝟑 } \{𝒒,a,𝒀_𝑨\}=\{𝟏𝟗,𝟏𝟎,𝟑\} {q,a,YA}={19,10,3}
Bob 生成一个整数
k
=
6
k=6
k=6(
k
<
q
kk<q
)
收到Alice的公钥{19,10,3},计算密钥 𝑲 = ( 𝒀 𝑨 ) 𝒌 𝒎 𝒐 𝒅 𝒒 = 𝟑 𝟔 𝒎 𝒐 𝒅 𝟏 𝟗 = 𝟕 𝑲=(𝒀_𝑨)^𝒌 \ 𝒎𝒐𝒅 \ 𝒒 =𝟑^𝟔 \ 𝒎𝒐𝒅 \ 𝟏𝟗 = 𝟕 K=(YA)k mod q=36 mod 19=7
Alice的公钥{19,10,3}
Bob 要给Alice发送消息M=17,因此计算
𝑪 𝟏 = a 𝒌 𝒎 𝒐 𝒅 𝒒 = 𝟏 𝟎 𝟔 𝒎 𝒐 𝒅 𝟏 𝟗 = 𝟏 𝟏 𝑪_𝟏=a^𝒌 \ 𝒎𝒐𝒅 \ 𝒒 =𝟏𝟎^𝟔 \ 𝒎𝒐𝒅 \ 𝟏𝟗=𝟏𝟏 C1=ak mod q=106 mod 19=11
𝑪 𝟐 = 𝑲 𝑴 𝒎 𝒐 𝒅 𝒒 = 𝟕 × 𝟏 𝟕 𝒎 𝒐 𝒅 𝟏 𝟗 = 𝟓 𝑪_𝟐=𝑲𝑴 \ 𝒎𝒐𝒅 \ 𝒒 =𝟕×𝟏𝟕 \ 𝒎𝒐𝒅 \ 𝟏𝟗=𝟓 C2=KM mod q=7×17 mod 19=5
Bob 将密文 𝑪 𝟏 、 𝑪 𝟐 𝑪_𝟏、𝑪_𝟐 C1、C2发送给Alice
Alice 根据 𝑪 𝟏 𝑪_𝟏 C1计算密钥 𝑲 = ( 𝑪 𝟏 ) 𝑿 𝑨 𝒎 𝒐 𝒅 𝒒 = 𝟕 𝑲=(𝑪_𝟏)^{𝑿_𝑨} \ 𝒎𝒐𝒅 \ 𝒒=𝟕 K=(C1)XA mod q=7
根据 𝑪 𝟐 𝑪_𝟐 C2还原消息 𝑴 = ( 𝑪 𝟐 𝑲 − ) 𝒎 𝒐 𝒅 𝒒 = 𝟏 𝟕 𝑴=(𝑪_𝟐 𝑲^− ) \ 𝒎𝒐𝒅 \ 𝒒=𝟏𝟕 M=(C2K−) mod q=17
练习题
已知B要给A发送消息5,使用ElGamal加密,k=3,q=11,a=2,A的私钥为4,给出密钥K、密文C1与密文C2。
答:已知 M = 5 , k = 3 , q = 11 , a = 2 , X A = 4 M=5, k=3, q=11, a=2, X_A=4 M=5,k=3,q=11,a=2,XA=4
Y A = a X A m o d q = 2 4 m o d 11 = 5 Y_A=a^{X_A} \ mod \ q = 2^4 \ mod \ 11 = 5 YA=aXA mod q=24 mod 11=5
K = ( Y A ) k m o d q = 5 3 m o d 11 = 4 K = (Y_A)^k \ mod \ q = 5^3 \ mod \ 11 = 4 K=(YA)k mod q=53 mod 11=4
C 1 = a k m o d q = 2 3 m o d 11 = 8 C_1 = a^k \ mod \ q = 2^3 \ mod \ 11 = 8 C1=ak mod q=23 mod 11=8
C 2 = K M m o d q = 4 × 5 m o d 11 = 9 C_2 = KM \ mod \ q = 4×5 \ mod \ 11 = 9 C2=KM mod q=4×5 mod 11=9
OK,以上就是本期知识点“密钥管理和其他公钥密码体制”的知识啦~~ ,感谢友友们的阅读。后续还会继续更新,欢迎持续关注哟📌~
💫如果有错误❌,欢迎批评指正呀👀~让我们一起相互进步🚀
🎉如果觉得收获满满,可以点点赞👍支持一下哟~
❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页