10. 公钥密码体制

  • 定义Diffie-Hellman密钥交换:基于离散对数,保证安全交换密钥的算法。
  • 流程:
  • 产生私钥
  • 通过离散对数计算公钥
  • 交换公钥
  • 计算共享密钥
  • 理解中间人攻击:敌手拦截并获得数字共享的信息。
  • 概述ElGamal密码系统
  • A生成密钥对 {sm2签名公私钥生成_中间人攻击}。
  • B加密消息为 sm2签名公私钥生成_中间人攻击_02
  • A恢复明文: sm2签名公私钥生成_网络_03
  • 理解椭圆曲线算术:三次方程,ECC基于计算 sm2签名公私钥生成_离散对数_04
  • 使用非对称密码生成伪随机数的两种技术:哈希函数、伪随机数生成器。

10.1 Diffie-Hellman 密钥交换

算法有效性依赖于计算离散对数的困难性。(基于sm2签名公私钥生成_中间人攻击_05sm2签名公私钥生成_密码学_06))

算法目的:安全地交换密钥。(算法仅限于交换密钥)


算法流程

  • Alice 随机选择整数==sm2签名公私钥生成_网络_07作为私钥并计算公钥== sm2签名公私钥生成_sm2签名公私钥生成_08 。(p 为素数, g 为 p 的本源根
  • Bob随机选择==sm2签名公私钥生成_密码学_09 作为私钥并计算公钥== sm2签名公私钥生成_sm2签名公私钥生成_10
  • Alice和Bob互换公钥
  • 两人分别计算共享密钥sm2签名公私钥生成_中间人攻击_11

由于缺少数字签名或证书,该算法不能抵抗中间人攻击


10.2 中间人攻击

敌手拦截并获得数字共享的信息。(窃听)

在Diffie-Hellman中,敌手可以通过自己生成两个密钥 sm2签名公私钥生成_离散对数_12sm2签名公私钥生成_中间人攻击_13


10.3 ELGamal 密码体制

基于离散对数的公钥体制,用于数字签名。


算法流程

  • 用户A生成密钥对:(q 为素数sm2签名公私钥生成_网络_14 为 q 的本原根)。
  • 随机生成 sm2签名公私钥生成_网络_15
  • 计算 sm2签名公私钥生成_离散对数_16
  • 私钥sm2签名公私钥生成_中间人攻击_17公钥为 { sm2签名公私钥生成_中间人攻击}。
  • B通过A的公钥加密消息Msm2签名公私钥生成_网络_19(长消息作为一系列分组发送):
  • 选择任意整数 sm2签名公私钥生成_密码学_20
  • 计算一次密钥sm2签名公私钥生成_离散对数_21
  • M 加密为整数对 sm2签名公私钥生成_中间人攻击_02

sm2签名公私钥生成_sm2签名公私钥生成_23

  • A 恢复明文:
  • 恢复密钥:sm2签名公私钥生成_离散对数_24
  • 计算M = sm2签名公私钥生成_密码学_25

安全性基于离散对数计算困难问题。

敌手需要计算公钥一次密钥,进行两次离散对数的计算。


10.4 椭圆曲线算术

椭圆曲线由三次方程描述。

椭圆曲线加密流程:考虑方程 sm2签名公私钥生成_离散对数_04。(sm2签名公私钥生成_密码学_27sm2签名公私钥生成_网络_28)(基于算 sm2签名公私钥生成_离散对数_29

  • A的密钥生成:
  • 选择私钥sm2签名公私钥生成_密码学_30(n 为 椭圆曲线的阶)
  • 计算公钥sm2签名公私钥生成_网络_31
  • B的密钥生成:
  • 选择私钥sm2签名公私钥生成_离散对数_32(n 为 椭圆曲线的阶)
  • 计算公钥sm2签名公私钥生成_sm2签名公私钥生成_33
  • 计算秘密钥 K:
  • B :sm2签名公私钥生成_中间人攻击_34
  • A:sm2签名公私钥生成_中间人攻击_35
  • A 选择 k 加密消息发送给 B:
  • 密文 sm2签名公私钥生成_密码学_36

{B} * P_{A}$

  • A:sm2签名公私钥生成_中间人攻击_37
  • A 选择 k 加密消息发送给 B:
  • 密文 sm2签名公私钥生成_密码学_36