【现代密码学原理】——密钥管理和其他公钥密码体制(学习笔记)

📖 前言:本章首先介绍最早、最简单的PKCS——Diffe-Hellman密钥交换,然后介绍另一个重要方案——EIGamal PKCS。

在这里插入图片描述


🕒 0. 思维导图

在这里插入图片描述

🕒 1. Diffie-Hellman密钥交换

  • 1976年,Diffie和Hellman首次公开提出了一种公钥算法,常被称为Diffie-Hellman密钥交换
  • DH算法用到的数学基础:本原根、离散对数

在这里插入图片描述
DH算法 | 迪菲-赫尔曼Diffie–Hellman 密钥交换
Diffie-Hellman密钥交换 Diffie-Hellman_Key_Exchange

🕘 1.1 本原根(primitive root)

对于一个素数 𝒒 𝒒 q ,如果数值 a   𝒎 𝒐 𝒅   𝒒 , a 𝟐   𝒎 𝒐 𝒅   𝒒 , a 𝟑   𝒎 𝒐 𝒅   𝒒 , . . . a ( 𝒒 − 𝟏 )   𝒎 𝒐 𝒅   𝒒 a \ 𝒎𝒐𝒅 \ 𝒒,a^𝟐 \ 𝒎𝒐𝒅 \ 𝒒,a^𝟑 \ 𝒎𝒐𝒅 \ 𝒒,... a^{(𝒒−𝟏)} \ 𝒎𝒐𝒅 \ 𝒒 a mod qa2 mod qa3 mod q...a(q1) 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

🕘 1.2 离散对数(discrete logarithm)

对于一个整数𝒃和素数𝒒的一个本原根𝜶,可以找到一个唯一的指数𝒊 ,使得: 𝒃 = a 𝒊   𝒎 𝒐 𝒅   𝒒 ( 𝟎 ≤ 𝒊 ≤ 𝒒 − 𝟏 ) 𝒃=a^𝒊 \ 𝒎𝒐𝒅 \ 𝒒(𝟎≤𝒊≤𝒒−𝟏) b=ai mod q(0iq1)成立,则指数𝒊称为𝒃的以𝜶为底数的模𝒒的离散对数。

离散对数的难解性

  • 给定𝜶、 𝒊和𝒒 ,容易计算出𝒃
  • 给定𝒃 、𝜶和𝒒 ,计算出𝒊一般非常困难

🕘 1.3 密钥交换过程

  • Alice和Bob要进行密钥交换,首先他们共享一个素数 q q q以及整数𝜶,并公开
  • 𝜶<𝒒,𝜶是素数q的本原根
  • Alice 选择随机整数 𝑿 𝑨 < 𝒒 , 𝑿 𝑨 𝑿_𝑨<𝒒,𝑿_𝑨 XA<qXA是私有的,只有Alice自己知道,即Alice的私钥
  • Bob 也选择一个随机整数 𝑿 𝑩 < 𝒒 𝑿_𝑩<𝒒 XB<q,作为Bob 的私钥
  • Alice 计算 𝒀 𝑨 = a 𝑿 𝑨   𝒎 𝒐 𝒅   𝒒 𝒀_𝑨=a^{𝑿_𝑨} \ 𝒎𝒐𝒅 \ 𝒒 YA=aXA mod q,计算得到的 𝒀 𝑨 𝒀_𝑨 YA是公开可访问的,即Alice的公钥
  • Bob 也计算他的公钥 𝒀 𝑩 = a 𝑿 𝑩   𝒎 𝒐 𝒅   𝒒 𝒀_𝑩=a^{𝑿_𝑩} \ 𝒎𝒐𝒅 \ 𝒒 YB=aXB mod q
  • Alice 将自己的公钥 𝒀 𝑨 𝒀_𝑨 YA发送给 Bob,Bob获取到了Alice 的公钥
  • Bob 也将他的公钥 𝒀 𝑩 𝒀_𝑩 YB发送给了Alice
  • Alice 计算 𝑲 = ( 𝒀 𝑩 ) 𝑿 𝑨   𝒎 𝒐 𝒅   𝒒 𝑲=(𝒀_𝑩)^{𝑿_𝑨} \ 𝒎𝒐𝒅 \ 𝒒 K=(YB)XA mod q
  • Bob 也使用该方法计算 𝑲 = ( 𝒀 𝑨 ) 𝑿 𝑩   𝒎 𝒐 𝒅   𝒒 𝑲=(𝒀_𝑨)^{𝑿_𝑩} \ 𝒎𝒐𝒅 \ 𝒒 K=(YA)XB mod q
  • 二人计算结果相同,至此双方完成了 K K K的交换
  • K K K值在双方本地生成,且只有双方已知,因此常将这个 K K K值作为对称密码的密钥

证明: 𝑲 = ( 𝒀 𝑩 ) 𝑿 𝑨   𝒎 𝒐 𝒅   𝒒 𝑲=(𝒀_𝑩)^{𝑿_𝑨} \ 𝒎𝒐𝒅 \ 𝒒 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

🕘 1.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
博客链接:🔎 作者博客主页

🕒 2. 中间人攻击(man-in-the-middle attack)

在这里插入图片描述

  • Alice和Bob交换密钥,Darth攻击
  • Darth 生成两个随机私钥 𝑿 𝑫 𝟏 、 𝑿 𝑫 𝟐 𝑿_{𝑫𝟏}、𝑿_{𝑫𝟐} XD1XD2,并计算相应的公钥 𝒀 𝑫 𝟏 、 𝒀 𝑫 𝟐 𝒀_{𝑫𝟏}、𝒀_{𝑫𝟐} YD1YD2
  • Alice将自己的公钥 𝒀 𝑨 𝒀_𝑨 YA传递给Bob
  • Darth将报文截获,修改成自己的公钥 𝒀 𝑫 𝟏 𝒀_{𝑫𝟏} YD1发给Bob
  • Darth用 𝒀 𝑫 𝟏 𝒀_{𝑫𝟏} YD1仿冒Alice
  • Bob收到 𝒀 𝑫 𝟏 𝒀_{𝑫𝟏} YD1,认为这是Alice的公钥
  • Bob 计算密钥 𝑲 𝟏 = ( 𝒀 𝑫 𝟏 ) 𝑿 𝑩   𝒎 𝒐 𝒅   𝒒 𝑲_𝟏=(𝒀_{𝑫𝟏})^{𝑿_𝑩} \ 𝒎𝒐𝒅 \ 𝒒 K1=(YD1)XB mod q
  • Darth 也计算密钥 𝑲 𝟏 = ( 𝒀 B ) 𝑿 D 1   𝒎 𝒐 𝒅   𝒒 𝑲_𝟏=(𝒀_{B})^{𝑿_{D1}} \ 𝒎𝒐𝒅 \ 𝒒 K1=(YB)XD1 mod q
  • Bob 将自己的公钥 𝒀 𝑩 𝒀_𝑩 YB传递给Alice
  • Darth将报文截获,修改成自己的公钥 𝒀 𝑫 𝟐 𝒀_{𝑫𝟐} YD2发给Alice
  • Darth用 𝒀 𝑫 𝟐 𝒀_{𝑫𝟐} YD2仿冒Bob
  • Alice收到 𝒀 𝑫 𝟐 𝒀_{𝑫𝟐} YD2,认为这是Bob的公钥
  • Alice 计算密钥 𝑲 2 = ( 𝒀 𝑫 2 ) 𝑿 A   𝒎 𝒐 𝒅   𝒒 𝑲_2=(𝒀_{𝑫2})^{𝑿_A} \ 𝒎𝒐𝒅 \ 𝒒 K2=(YD2)XA mod q
  • Darth 也计算密钥 𝑲 2 = ( 𝒀 A ) 𝑿 D 2   𝒎 𝒐 𝒅   𝒒 𝑲_2=(𝒀_{A})^{𝑿_{D2}} \ 𝒎𝒐𝒅 \ 𝒒 K2=(YA)XD2 mod q
  • Alice和Bob以为他们已经交换好了 K K K
  • 实际上Bob是与Darth共享密钥 K 1 K_1 K1
  • Alice是与Darth共享密钥 K 2 K_2 K2
  • 若Alice使用 K 2 K_2 K2给Bob发送消息 Y = E ( K 2 , X ) Y=E(K_2,X) Y=E(K2,X)
  • Darth截获后,使用与其共享的密钥 K A K_A KA进行解密 X = D ( K 2 , Y ) X=D(K_2,Y) X=D(K2,Y)
  • Darth可以将 X X X直接使用与Bob共享的密钥 K 1 K_1 K1加密,也可以修改后加密发出

🕒 3. EIGamal密码体制

  • 1981年,数学家T.ElGamal在DH算法的基础上提出了另外一种公钥密码
  • ElGamal密码 是国际公认的较理想公钥密码体制,在数字签名标准DSS、电子邮件标准S/MIME中应用

注:ElGamal不再用于密钥交换,而是像RSA这样用作加解密操作。

  • 𝒒 = 𝟏 𝟗 , a = 𝟏 𝟎 𝒒=𝟏𝟗,a=𝟏𝟎 q=19,a=10

  • Alice 选择私钥 𝑿 𝑨 = 𝟓 𝑿_𝑨=𝟓 XA=5 X A < q − 1 X^A <q-1 XA<q1),计算 𝒀 𝑨 = a 𝑿 𝑨   𝒎 𝒐 𝒅   𝒒 = 𝟏 𝟎 𝟓   𝒎 𝒐 𝒅   𝟏 𝟗 = 𝟑 𝒀_𝑨=a^{𝑿_𝑨} \ 𝒎𝒐𝒅 \ 𝒒 = 𝟏𝟎^𝟓 \ 𝒎𝒐𝒅 \ 𝟏𝟗 = 𝟑 YA=aXA mod q=105 mod 19=3

  • Alice 的公钥对为: { 𝒒 , a , 𝒀 𝑨 } = { 𝟏 𝟗 , 𝟏 𝟎 , 𝟑 } \{𝒒,a,𝒀_𝑨\}=\{𝟏𝟗,𝟏𝟎,𝟑\} {q,a,YA}={19,10,3}

  • Bob 生成一个整数 k = 6 k=6 k=6 k < q k<q k<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 将密文 𝑪 𝟏 、 𝑪 𝟐 𝑪_𝟏、𝑪_𝟐 C1C2发送给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
博客链接:🔎 作者博客主页

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值