应用密码学复习2018


在这里插入图片描述

一、对称密码机制

1. 基础概念
  • 五个基本要素
  • 明文
  • 加密算法
  • 密钥
  • 密文
  • 解密算法
  • 模型图
X
Y=E(K,X)
X
K
X',K'
消息源
加密算法
解密算法
目的地
消息源
安全信道
密码分析者
H
  • 常见的攻击类型
攻击类型密码分析者已知的信息
唯密文攻击加密算法E、密文C
已知明文攻击加密算法E、密文C、用同一密钥加密的一个或多个明密文对
选择明文攻击加密算法E、密文C、分析者选择的明文及对应的密文
选择密文攻击加密算法E、密文C、分析者选择的一些密文及对应的明文
选择文本攻击综合3、4
  • 无条件安全

无论有多少可使用的密文,都不足以唯一地确定密文所对对应的明文;在一次一密中,密钥长度大于等于明文的长度,一个密钥仅使用一次

  • 代替技术
    代替技术是把明文字母替换成其他字母、数字或符号的方法
    • Caesar密码
    • 单表代替密码
    • Playfari密码(多字母代替)
    • Hill密码(多字母单表代替)
    • Vignere密码(多表代替)
    • 一次一密
  • 置换技术
    置换只是明文的序列发生了变化
    • 转轮机
    • 隐写术

补充:
1. 加密算法的使用者应挑选具有以下标准的算法:
破译密码的代价超出密文信息的价值
破译密码的时间超出密文信息的有效生命期

2. 计算安全:攻击者具有有限的计算资源、此时密钥长度可以小于明文长度,并且可以长期使用
3. 一个好的加密算法至少要抵御前三种攻击方式

2. 分组密码
  • 定义

流密码每次加密数据流的一位或一个字节,古典的流密码密钥有Vigenre密码
分组密码是将一个明文分组作为整体加密并且通常得到的是与明文等长的密文分组

  • Feistel密码结构

Fesitel交替使用代替和置换技术(实际上是混淆和扩散的实际应用)
扩散:使明文的统计特性消失在密文中(明文有一个比特的变化,将会引起50%的密文比特发生变化)
混淆:使密钥的统计特性消失在密文中(密钥有一个比特的变化,将会引起50%的密文比特发生变化)
Feistel结构的具体实现依赖于以下参数和特征

  • 分组长度:分组越长意味着安全性更高,但是会降低加解密速度,安全性的提高源于更好的扩散性
  • 密钥长度:密钥较长意味着安全性更高,但会降低加解密速度,安全性的提高源于更好的混淆性
  • 迭代轮数:Feistel密码的本质在于单轮不能提供足够的安全性而多轮加密可取得很高的安全性,轮数典型值是16
  • 子密钥产生算法:子密钥产生越复杂,密码分析越困难
  • 轮函数F:轮函数越复杂,抗攻击能力越强
  • DES是Feistel结构,AES不是Feistel结构
  • 经典的Feistel结构:数据分组中的一半被用于修改数据的另一半,然后交换这两部分
3. 数据加密标准
  • DES

输入:明文和密钥,明文长64位,密钥长64位(其中有效的长度是56位,其余8位用作奇偶校验位或随意设置)
迭代轮数:16轮迭代
雪崩效应:明文或密钥的微小改变造成密文的巨大改变
安全性:DES的安全性依赖于:密钥长度、迭代轮数、轮函数F的强度

  • AES

输入:明文长度为16字节(128位),密钥长度为16、24、32字节(128、192、256位)
单轮AES变换:三个代替和一个置换:字节代替、行移位、列混淆、轮密钥加
加密轮数:10轮、12轮和14轮(对于不同的密钥长度)
各阶段作用:

  • s盒包含了一个   G F ( 2 8 ) \ GF(2^8)  GF(28)域上的逆元求解,最终效果是形成良好的雪崩效应
  • 行移位构成了置换算法,加速雪崩效应
  • 列混淆使一个输入与多个输出相关
  • 轮密钥再异或,使得输出与下一轮输入一体化
  • 三代替一置换的结构形成了良好的乘积结构,具有良好的混淆扩散效果
4. 分组工作模式(习题)
  • 3-DES

优点:安全性高,密钥长度足够长,经过实践的充分检验、兼容性好、国际组织和我国的银行机构都认可3-DES;
缺点:速度慢

  • 分组工作模式
模式描述典型应用
ECB电子密码本用相同的密钥分别对明文分组独立加密单个数据的安全传输(如一个加密密钥)
CBC密文分组链接加密算法的输入是上一个密文组和下一个明文组的异或面向分组的通用传输、认证
CFB密文反馈一次处理s位,上一块密文作为加密算法的输入,产生的伪随机数输出与明文异或作为下一单元的密文面向数据流的通用传输、认证
OFB输出反馈与CFB类似,只是加密算法的输入是上一次加密的输出,且使用整个分组噪声信道上的数据流传输(如卫星通信)
CTR计数器每个明文分组都与一个经过加密计数器相异或,对每个后续分组计数器递增面向分组的通用数据传输、用于高速需求

用对称密码进行密钥分配需要①通行双方已经共享一个密钥,该密钥已经通过某种方法分配给通信双方;②利用密钥分配中心

二、公钥密码体制

1. 基本原理

公钥算法依赖于一个加密密钥和一个与之不相关的不同的解密密钥,这些算法都满足:
①仅根据密码算法和加密密钥来确定解密密钥在计算上是不可行的
②两个密钥之间的任意一个都可以用来加密或解密
公钥密码体制的六个组成部分:明文、加密算法、公钥和私钥、密文、解密算法

2. 应用
  • 加密/解密:发送方用接收方的公钥对消息加密
  • 数字签名:发送方用其私钥对消息签名,签名可以通过对整条消息加密会对消息的摘要进行加密
  • 密钥交换:通信双方交换会话密钥
算法加/解密数字签名密钥交换
RSA
椭圆曲线
Diffie-Hellman
DSS
3. 要求
传统密码公钥密码
一般要求:①加密和解密使用相同的密钥和相同的算法②收发双方必须共享密钥一般要求:①同一算法用于加密和解密,但加解密使用不同的密钥②发送方拥有加密或解密密钥,接收方有另一密钥
安全性要求:①密钥必须是保密的②若没有其他信息,则解密消息是不可行的③若知道算法和若干密文不足以确定密钥安全性要求:①两个密钥之一必须是保密的②若没有其他信息,解密消息是不可行的③知道算法和其中一个密钥及若干密文不足以确定另一密钥
4. RSA算法
  • 算法描述

加密和解密过程:
  C = M e   m o d   n \ C=M^e\ mod\ n  C=Me mod n
C是密文,M是明文,e是公钥,n是一个随机大整数、
  M = C d   m o d   n = ( M e ) d   m o d   n = M e d   m o d   n \ M=C^d\ mod\ n=(M^e)^d\ mod\ n=M^{ed}\ mod\ n  M=Cd mod n=(Me)d mod n=Med mod n
其中,发送方已知e,n接收方已知n,d,因此
公钥为   P U = { e , n } \ PU=\{e,n\}  PU={e,n},私钥为   P R = { d , n } \ PR=\{d,n\}  PR={d,n}

证明过程

即证明   M ≡ C d   m o d   N \ M\equiv C^d\ mod\ N  MCd mod N
  ∵ C ≡ M e   m o d   N , d ≡ e − 1   m o d   ϕ ( N ) \ ∵C\equiv M^e\ mod\ N,d\equiv e^{-1}\ mod\ \phi(N)  CMe mod N,de1 mod ϕ(N)
  ∴ 即 证 明 M e d = M 1   m o d   ϕ ( N ) = M k ϕ ( N ) + 1 ≡ M   m o d   N \ ∴即证明M^{ed}=M^{1\ mod\ \phi(N)}=M^{k\phi(N)+1}\equiv M\ mod \ N  Med=M1 mod ϕ(N)=Mkϕ(N)+1M mod N
  当 ( M , N ) = 1 时 , 显 然 M k ϕ ( N ) = 1   m o d   N , 此 时 M k ϕ ( N ) + 1 ≡ M   m o d   N 成 立 \ 当(M,N)=1时,显然M^{k\phi(N)}=1\ mod \ N,此时M^{k\phi(N)+1}\equiv M\ mod \ N成立  (M,N)=1Mkϕ(N)=1 mod NMkϕ(N)+1M mod N
  当 ( M , N ) ≠ 1 时 , ∵ N = p q , 设 M = t p , 则 ( M , q ) = 1 \ 当(M,N)≠1时,∵N=pq,设M=tp,则(M,q)=1  (M,N)̸=1N=pqM=tp(M,q)=1
  ∵ M ϕ ( N ) = M ϕ ( p ) ϕ ( q ) ≡ 1   m o d   q \ ∵M^{\phi(N)}=M^{\phi(p)\phi(q)}\equiv1\ mod\ q  Mϕ(N)=Mϕ(p)ϕ(q)1 mod q
  ∴ M ϕ ( N ) = r q + 1 , M ϕ ( N ) + 1 = t p ( r q + 1 ) = r t p q + t p = r t N + M ≡ M   m o d   N \ ∴M^{\phi(N)}=rq+1,M^{\phi(N)+1}=tp(rq+1)=rtpq+tp=rtN+M\equiv M\ mod\ N  Mϕ(N)=rq+1,Mϕ(N)+1=tp(rq+1)=rtpq+tp=rtN+MM mod N
综上,得证.

5. RSA的安全性
  • RSA的算法攻击
    • 穷举攻击
    • 数学攻击
    • 计时攻击:可以通过随机延时来避免
    • 基于硬件故障的攻击
    • 选择密文攻击:可通过最佳非对称加密填充避免
6. 密钥管理和其他公钥密码体制
  • Diffie-Hellman密钥交换

基于离散对数计算的困难性
Alice和Bob共享一个素数q,以及整数α(α<q)且是q的本原根
Alice产生一个私钥   X A , X A &lt; q \ X_A,X_A&lt;q  XA,XA<q
Alice计算公钥   Y A = α X A   m o d   q \ Y_A=α^{X_A}\ mod\ q  YA=αXA mod q
Alice把公钥发送给Bob
Alice收到Bob的公钥,计算共享密钥   K = ( Y B ) X A   m o d   q \ K=(Y_B)^{X_A}\ mod\ q  K=(YB)XA mod q
Bob的操作类似

  • 中间人攻击

中间人Darth拦截Alice向Bob发送的公钥,将自己的公钥发送给Alice,建立连接,伪造了Bob的身份,同Bob也类似,原因在于密钥交换协议没有对通信的参与方进行身份认证,可以通过使用数字签名公钥证书来克服

  • EIGamal密码体制

与Diffie-Hellman一样,用户共同选择一个素数q,α是q的原根
用户A生成密钥的过程如下:
①随机生成整数   X A 使 得 1 &lt; X A &lt; q − 1 \ X_A使得1&lt;X_A&lt;q-1  XA使1<XA<q1
②计算   Y A = α X A   m o d   q \ Y_A=α^{X_A}\ mod\ q  YA=αXA mod q
③Ade私钥是   X A , 公 钥 是 { q , α , Y A } \ X_A,公钥是\{q,α,Y_A\}  XA{q,α,YA}
其他任意用户可以通过A的公钥加密信息:
①将信息表示成为一个整数M,其中1≤M≤q-1,以分组序列方式发送信息,每个分块的长度不小于q
②选择任意整数k,使得1≤k≤q-1
③计算一次密钥   K = ( Y A ) k   m o d   q \ K=(Y_A)^k\ mod\ q  K=(YA)k mod q
④将M加密成密文对   ( C 1 , C 2 ) , 其 中 C 1 = α k   m o d   q ; C 2 = K M   m o d   q \ (C_1,C_2),其中C_1=α^k\ mod\ q;C_2=KM\ mod\ q  (C1,C2),C1=αk mod q;C2=KM mod q
用户A恢复明文:
①通过计算得到:   K = ( C 1 ) X A   m o d   q \ K=(C_1)^{X_A}\ mod\ q  K=(C1)XA mod q,恢复密钥
②计算   M = ( C 2 K − 1 )   m o d   q \ M=(C_2K^{-1})\ mod\ q  M=(C2K1) mod q

三、密码学中的数据完整性算法

1. 密码学hash函数的应用
  • 消息认证
    消息认证是用来验证消息完整性的一种机制或服务,当hash函数用于提供消息认证功能时,hash函数的值通常称为消息摘要

    消息中使用hash函数的本质:发送者根据待发送的消息使用该函数计算一组hash值,然后将其同消息一起发送。接受者收到消息后对消息执行同样的hash计算,将计算结果与收到的hash值进行对比,如果不匹配,则接受者断定消息遭受了篡改

  • Hash码可以通过如下各种不同的方式提供消息认证

    • 使用对称密码算法E加密消息和hash码。由于只有A,B共享密钥K,所以提供了保密性
    • 使用对称密码算法E但只对hash码进行加密,对于无需保密性的应用,减少了解密操作的负担
    • 不适用加密算法,仅使用hash函数也能实现消息认证,该方案假设A,B共享一个秘密值S
    • 通过将整个消息和hash加密,在上一个方案的基础上提供保密性
  • 密码学Hash函数H的安全性要求

需求描述
输入长度可变H可应用于任意大小的数据块
输出长度固定H产生定长的输出
效率对任意给定的x,计算H(x)比较容易,用软硬件均可实现
抗原像攻击(单向性) 对任意hash码h,找到满足H(y)=h的y在计算上不可行
抗第二原像攻击(抗弱碰撞性)对任何的分块x,找到满足y≠x但H(x)=H(y)的y在计算上不可行
抗强碰撞性找到任何满足H(x)=H(y)的偶对(x,y)在计算上不可行
伪随机性H的输出满足伪随机性测试标准
  • 各种数据完整性应用中的Hash函数安全性需求
抗原像攻击抗弱碰撞攻击抗强碰撞攻击
Hash+数字签名是*
入侵检测和病毒检测
Hash+对称加密
单向口令文件
MAC是*
  • *要求攻击者能够实现选择消息攻击

  • 安全hash算法

  • SHA参数比较(简略)

消息长度字长度消息摘要长度
SHA-1<2^6432160
SHA-512<2^12864512
  • SHA-512逻辑
  • 附加填充位
    填充消息使其长度模1024与896同余,即使消息长度已经满足要求,仍然需要进行填充原因是最后填充的字节信息包含了填充位数信息
  • 附加长度
    在消息后附加一个128位的块,包含了填充前消息的长度
  • 初始化Hash缓冲区
    hash函数的中间结果和最终结果均保存于512位的缓冲区中,缓冲区用8个64位寄存器表示
  • 以1024位的分组(128字节)为单位处理信息
    算法的核心是具有80轮运算的模块
  • 输出
    处理完毕后,从第n轮输出512位摘要

*SHA-3

2. 消息认证码
对消息认证的要求
  • 攻击类型

    (1) 消息泄露
    (2) 传输分析
    (3) 伪装
    (4) 内容修改
    (5) 顺序修改
    (6) 计时修改
    (7) 发送方否认
    (8) 接受放否认

  • 要求

    对(1),(2),要求保密性
    对(3)~(6),要求消息认证或数字签名
    对(7),要求数字签名
    对(8),要求数字签名及抵抗此种攻击的协议

消息认证函数

任何消息认证或数字签名机制在功能上都有两层,下层是认证或签名函数,上层是与之匹配的协议
函数分类

  • Hash函数

    将任意长的消息映射为定长的Hash值的函数,以该值作为认证符

  • 消息加密

    对整个消息进行加密后的密文作为认证符

  • 内部错误控制(可以提供认证)
>M>
K
K
>FCS(M)'>
明文M
FCS(M)
||
E
E( K,[M||F] )
D
FCS(M)
比较
  • 外部错误控制(可能被攻击者造成混淆影响通信)
K
K
与原来的比较
明文M
E
E(K,M)
FCS(M)
||
E(K,M),F(E(K,M))
D
M
FCS(E(K,M))'
  • 消息认证码

    它是消息和密钥的函数,它产生定长的值,该值作为认证符附在消息后

对消息认证码的要求

MAC也称密码校验和,由T=MAC(K,M)产生,其中M是一个变长消息,K是收发双方共享的密钥,MAC(K,M)是一个定长的认证符

消息认证码中,消息的每个部分“均匀”地影响结果,因此很难差分攻击

  • MAC函数应该具有以下性质
    • 若攻击者已知M和MAC(K,M),则他构造MAC(K,M’)=MAC(K,M)在计算上是不可行的
    • MAC(K,M)应是均匀分布的
    • 设M’是M的一个已知变换,要求Pr[MAC(K,M)=MAC(K,M’)]=2^-n
MAC的安全性
  • 抗计算性

    对给定的消息x,攻击者可以通过攻击密钥空间和攻击MAC值来找出其MAC

  • 密码分析

    对MAC的算法的密码分析攻击同样是利用算法得到某种性质而不是穷举攻击来进行的,理想的MAC算法要求密码分析攻击的代价大于或等于穷举攻击

基于HASH函数的MAC:HMAC
  • 利用密码学hash函数来设计MAC的原因:
    • 一般像MD5和SHA这样的密码学hash函数,其软件执行速度比诸如DES这样的分组密码要快
    • 有许多共享的密码学hash函数代码库
  • HMAC设计目标
    • 不必修改而直接使用现有的hash函数,特别的,很容易免费得到软件上执行速度较快的hash函数及其代码
    • 如果找到更快或更安全的hash函数,应很容易替代原来嵌入的hash函数
    • 应保持hash函数原有的性能,不过分降低其性能
    • 对密钥的使用和处理应该相对简单
    • 如果已知嵌入的hash函数的强度,则完全可以知道认证机制抗密码分析的强度
  • HMAC的安全性
    成功攻击HMAC概率等价于对嵌入的hash函数的以下攻击之一:
    (1)对攻击者而言,即使初始向量IV是随机的,秘密的和是未知的,攻击者也能计算压缩函数的输出
    (2)即使IV是随机和秘密的,攻击者也能找到hash函数的碰撞
基于分组密码的MAC:DAA和CMAC
  • 数据认证算法(FIPS PUB 113)(DAA)
    采用DES运算的CBC(密文块连接方式)

    其初始向量为0,需要认证的数据分成连续的64位的分组,最后一组不足64位则补齐。

  • 基于密码的消息验证码(CMAC)
认证加密CCM和GCM

对消息M有四种同时提供认证和加密的通用方案,安全性还与消息结构有关

  • 先hash再加密(HASH–>E)
    M–>H(M)–>M||H(M)–>E(M||H(M))
  • 先认证再加密(A–>E)
    T=MAC(K1,M)–>E(K2,[M||T])
  • 先加密再认证
    C=E(K2,M)–>T=MAC(K1,C)
  • 独立进行加密和认证(E+A)
    C=E(K2,M)–>T=MAC(K1,M),先后顺序可以改变
3. 数字签名

数字签名是共要密码体制发展过程中重要的概念之一,它提供其他方法难以实现的安全性

  • 数字签名必须具有以下特征:

    • 必须能验证签名者、签名日期和时间
    • 必须能认证被签名的戏消息内容
    • 签名应能有第三方仲裁,以解决争执
  • 文献[GOLD88]给出了危害程度从高到低排列的攻击类型

    • 唯密钥攻击
    • 已知消息攻击
    • 一般选择消息攻击
    • 定向选择消息攻击
    • 适应性选择消息攻击
  • 文献[GOLD88]给出了攻击成功的签名方案

    • 完全破译
    • 通用伪造
    • 选择伪造
    • 存在性伪造
  • 数字签名需求

    • 必须是与消息相关的二进制字符串
    • 必须使用发送方某些独有的信息,以防伪造和否分
    • 产生数字签名比较容易
    • 识别和验证签名比较容易
    • 伪造数字签名在计算上不可行,无论是从给定的数字签名伪造消息,还是从给定的消息伪造数字签名
    • 保存数字签名的副本是可行的
  • 直接数字签名

    指只涉及通信双方的数字签名方案
    用共享的密钥对整个消息和签名进行加密,以获得保密性
    注意这里是先签名后加密,这样在发生争执时,第三方可以查看消息及其签名,否则第三方必须知道密钥才能读取原始消息
    此方案的弱点是有效性依赖于私钥的安全性,否则发送方可以否认

ElGamal数字签名方案

对于素数q,如果α是q的原根,则有
  a , a 2 , . . . , a q − 1   ( m o d   q ) \ a,a^{2},...,a^{q-1}\ (mod\ q)  a,a2,...,aq1 (mod q)
的值各不相同,如果α是q的原根,进一步有
(1)对于任意整数m,   a m ≡ 1 ( m o d   q ) \ a^{m}\equiv1(mod\ q)  am1(mod q)当且仅当   m ≡ 0 ( m o d   q − 1 ) \ m\equiv0(mod\ q-1)  m0(mod q1)
(2)对于任意整数i,j,   α i ≡ α j ( m o d   q ) \ \alpha^{i}\equiv\alpha^{j}(mod\ q)  αiαj(mod q)当且仅当   i ≡ j ( m o d   q − 1 ) \ i\equiv j(mod\ q-1)  ij(mod q1)

  • 用户A产生公/私钥对:

    (1)生产随机整数   X A \ X_{A}  XA,使得   1 &lt; X A &lt; q − 1 \ 1&lt;X_{A}&lt;q-1  1<XA<q1
    (2)计算   Y A = α X A ( m o d   q ) \ Y_{A}=\alpha^{X_{A}}(mod\ q)  YA=αXA(mod q)
    (3)A的私钥是   X A \ X_{A}  XA,公钥是 { q , α , Y A \{q,α, Y_{A} {q,α,YA}

  • 用户A对消息M进行签名,首先计算m=H(M),0≤m≤q-1

    (1)选择随机整数   K \ K  K,使得其满足1≤K≤q-1以及   g c d ( K , q − 1 ) = 1 \ gcd(K,q-1)=1  gcd(K,q1)=1事实上K是瞬时私钥
    (2)计算   S 1 = α K ( m o d   q ) ,   S 1 \ S_{1}=α^{K}(mod\ q),\ S_{1}  S1=αK(mod q), S1是瞬时公钥
    (3)计算   K − 1 ( m o d   q − 1 ) \ K^{-1}(mod\ q-1)  K1(mod q1),即计算K模q-1的逆元
    (4)计算   S 2 = K − 1 ( m − X A S 1 ) ( m o d q − 1 ) \ S_{2}=K^{-1}(m-X_{A}S_{1})(mod q-1)  S2=K1(mXAS1)(modq1)
    (5)签名包括   ( S 1 , S 2 ) \ (S_{1},S{2})  (S1,S2)

  • 任意用户B都能通过以下步骤验证签名

    (1)计算   V 1 = α m ( m o d   q ) \ V_{1}=α^{m}(mod\ q)  V1=αm(mod q)
    (2)计算   V 2 = Y A S 1 S 1 S 2 ( m o d   q ) \ V_{2}=Y_{A}^{S_{1}}S_{1}^{S_{2}}(mod\ q)  V2=YAS1S1S2(mod q)
    (3)如果   V 1 = V 2 \ V_{1}=V_{2}  V1=V2则签名合法
    (4)例子P293

*ElGamal数字签名方案对q的长度没有严格要求,只要小于1024即可,因此可以构建安全性较高的算法

Schnorr数字签名方案

同ElGamal数字签名方案相同,SChnorr数字签名方案也是基于离散对数,其中p是1024位整数,q是160位整数

  • 生成公钥/私钥对

    (1)择素数p和q,使得q是p-1的素因子
    (2)选择整数α,使得   α q = 1 ( m o d   q ) \ α^{q}=1(mod\ q)  αq=1(mod q),值α、p和q构成全局公钥参数,
    在用户组内的每个用户都可以选用此值
    (3)选择随机整数s,0<s<q,作为用户的私钥
    (4)计算   v = α − s ( m o d   p ) \ v=α^{-s}(mod\ p)  v=αs(mod p),作为用户的公钥

  • 产生数字签名

    (1)选择随机整数r,0<r<q,计算   x = α r ( m o d   p ) \ x=α^{r}(mod\ p)  x=αr(mod p),该过程与待签名消息M无关,可以在预处理过程计算
    (2)将x附在消息后面一起计算Hash值e,   e = H ( M ∣ ∣ x ) \ e=H(M||x)  e=H(Mx)
    (3)计算   y = ( r + s e ) ( m o d   q ) \ y=(r+se)(mod\ q)  y=(r+se)(mod q),签名包括(e,y)对

  • 其他用户能够通过以下计算验证

    (1)计算   x ′ = α y v e ( m o d   p ) \ x&#x27;=α^{y}v^{e}(mod\ p)  x=αyve(mod p)
    (2)验证是否   e = H ( M ∣ ∣ x ) \ e=H(M||x)  e=H(Mx)

数字签名标准DSA

DSA使用安全Hash算法(SHA)

  • DSA方法
    DSA使用是只提供数字签名功能的算法,与RSA不同,DSA虽然是一种公钥密码方案,但是并不能用于加密或密钥交换
PUG,PRa,k
PUG,PRa
s,r
M
||
H
sig
M,s,r
H
Ver

*k是随机数,即瞬时私钥,使相同的明文产生不同的密文,PUG是公开参数,PRa是发送方的私钥,PUa是发送方的公钥最终比较r’与r是否相等

  • 数字签名算法
    • 全局公钥组成

    p为素数,其中   2 L − 1 &lt; p &lt; 2 L , 512 &lt; L &lt; 1024 \ 2^{L-1}&lt;p&lt;2^{L},512&lt;L&lt;1024  2L1<p<2L,512<L<1024,且L是64的倍数
    q为(p-1)的素因子,其中   2 N − 1 &lt; q &lt; 2 N \ 2^{N-1}&lt;q&lt;2^{N}  2N1<q<2N,即位长为N位
      g = h ( p − 1 ) / q ( m o d   p ) \ g=h(p-1)/q(mod\ p)  g=h(p1)/q(mod p),其中h是满足1<h<p-1,并且   h ( p − 1 ) / q ( m o d   p ) \ h^{(p-1)/q}(mod\ p)  h(p1)/q(mod p)>1的任何整数

    • 用户的私钥

    x为随机或伪随机整数且0<k<q

    • 用户的公钥

      y = g x ( m o d   p ) \ y=g^{x}(mod\ p)  y=gx(mod p)

    • 与用户每条消息相关的秘密值

    k为随机或伪随机整数且0<k<q

    • 签名

      r = ( g k ( m o d   p ) ( ) m o d   q ) \ r=(g^{k}(mod\ p)()mod\ q)  r=(gk(mod p)()mod q)
      s = [ k − 1 ( H ( M ) + x r ) ] m o d   q \ s=[k^{-1}(H(M)+xr)]mod\ q  s=[k1(H(M)+xr)]mod q
    签名=(r,s)

    • 验证

      w = ( s ′ ) − 1 ( m o d   q ) \ w=(s&#x27;)^{-1}(mod\ q)  w=(s)1(mod q)
      u 1 = [ H ( M ′ ) w ] m o d   q \ u_{1}=[H(M&#x27;)w]mod\ q  u1=[H(M)w]mod q
      u 2 = ( r ) ′ w ( m o d   q ) \ u_{2}=(r)&#x27;w(mod\ q)  u2=(r)w(mod q)
      v = [ ( g u 1 y u 2 ) m o d   p ] m o d   q \ v=[(g^{u_{1}}y^{u_{2}})mod\ p]mod\ q  v=[(gu1yu2)mod p]mod q
    检验v=r’

四、密钥管理和分发

1. 基于对称加密的对称密钥分发

通信双方必须使用相同的密钥并且该密钥要对其他人保密

  • 实现方式
  • A选择一个密钥后以物理的方式传递给B
  • 第三方选择密钥后物理地传递给A和B
  • 如果A和B先前或者最近使用过一个密钥,则一方可以用旧密钥加密新密钥后发送给另一方
  • 如果A和B到第三方C有加密链接,C可以在加密链接上传送密钥给A和B

@Nickname4th 2018.12.25 HainuUniversity

  • 7
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值