图解密码技术

文章目录

  • 一、对称密码和公钥密码
    • 对称密码系统
    • 公钥密码系统
    • 公钥通信的流程
    • 对称密码与公钥密码的比较
    • 分组密码的模式
    • 中间人攻击(man-in-the-middle attack)
  • 二、混合密码系统
    • 加密流程
    • 解密流程
    • 伪随机数生成器
  • 三、消息鉴别——消息认证码(MAC)
    • 消息鉴别的流程
    • 单向散列函数
    • 重放攻击(replay attack)
    • 抵御重放攻击——不重数(nonce)
  • 四、实体鉴别——数字签名与证书
    • 数字签名的流程
    • 数字签名与消息认证码的比较
    • 证书和认证机构(CA)
  • 五、基于口令的密码(PBE)
    • 加密流程
    • 解密流程
  • 六、密码软件PGP的原理
    • 发送者A:生成数字签名并加密
    • 接收者B:解密并验证数字签名

参考书籍:《图解密码技术:第3版》


一、对称密码和公钥密码

对称密码系统

加密
加密
解密
解密
明文
密文
密钥
明文

公钥密码系统

加密
加密
解密
解密
明文
密文
公钥
私钥
明文

公钥通信的流程

消息发送者A 消息接收者B 消息 B的公钥 B的私钥 请把B的公钥发来 B的公钥 【A进行加密】 消息+B的公钥→密文 密文 【B进行解密】 密文+B的私钥→消息 消息发送者A 消息接收者B

对称密码与公钥密码的比较

项目 对称密码 公钥密码
发送者 用共享密钥加密 用公钥加密
接收者 用共享密钥解密 用私钥解密
密钥配送问题 存在(Diffie-Hellman密钥交换算法可解决) 不存在,但公钥需要另外认证
机密性
常见算法 DES、3DES、AES RSA、ElGamal、Rabin、椭圆曲线密码

Diffie-Hellman算法的有效性依赖于计算离散对数的难度,离散对数的概念:如果对于一个整数 b b b 和素数 p p p 的一个原根 a a a,可以找到一个唯一的指数 i i i,使得

b = a i m o d    p ,   0 ≤ i ≤ p − 1 b = a^i \mod p, \ 0 \leq i \leq p-1 b=aimodp, 0ip1

分组密码的模式

分组密码:每次只能处理特定长度的一组数据的一类密码算法。常用模式有:

  • ECB模式:电子密码本模式
  • CBC模式:密码分组链接模式
  • CFB模式:密文反馈模式
  • OFB模式:输出反馈模式
  • CTR模式:计数器模式

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

消息发送者A 中间攻击者M 消息接收者B 消息 伪消息 M的公钥 M的私钥 B的公钥 B的私钥 请把B的公钥发来 B的公钥 M拦截并保存B的公钥 M的公钥 【A进行加密】 消息+M的公钥(误以为B的公钥)→密文 密文 【M拦截并解密】 密文+M的公钥→消息 【M伪造消息】 伪消息+B的公钥→伪密文 伪密文 【B进行解密】 伪密文+B的私钥→伪消息 消息发送者A 中间攻击者M 消息接收者B

中间人攻击问题的实质是公钥分配问题,该问题的解决需要引入数字签名和证书功能。


二、混合密码系统

加密流程

生成
对称加密<明文>
对称加密<密钥>
公钥加密<明文>
公钥加密<密钥>
组合
组合
伪随机数生成器
会话密钥
消息明文
对称加密的消息密文
公钥加密的会话密钥
接收者B的公钥
会话密钥+消息密文

解密流程

分离
分离
对称解密<密文>
公钥解密<密文>
公钥解密<密钥>
对称解密<密钥>
会话密钥+消息密文
公钥加密的会话密钥
对称加密的消息密文
消息明文
会话密钥
接收者B的私钥

伪随机数生成器

随机数的分类:

随机数的种类 随机性 不可预测性 不可重现性
弱伪随机数(不可用于密码技术) x x
强伪随机数(可用于密码技术) x
真伪随机数(可用于密码技术)

随机数生成器:通过硬件生成的随机数列。

伪随机数生成器:通过软件生成的伪随机数列,需要种子(seed)对生成器的内部状态进行初始化。具体的伪随机数生成器有:

  • 线性同余法(不可用于安全相关的用途)
  • 单向散列函数法(如SHA-1等)
  • 密码法(如AES、RSA等)
  • ANSI X9.17
  • 梅森旋转算法(不可用于安全相关的用途)

三、消息鉴别——消息认证码(MAC)

消息鉴别的流程

发送方:

拼接
散列计算
散列计算
拼接
消息
消息+MAC
消息认证码MAC
共享密钥

接收方:

分离
分离
散列计算
散列计算
消息+MAC
MAC
消息
MAC
共享密钥
对比

单向散列函数

单向散列函数,又称为消息摘要函数、哈希函数:

消息
or
原像
单向散列函数
or
消息摘要函数
or
哈希函数
散列值
or
消息摘要
or
指纹

单向散列函数的常见算法:

算法 版本
MD MD4、MD5
SHA SHA-1、SHA-2(SHA-224、SHA-256、SHA-512/224、SHA-512/256、SHA-384、SHA-512)、SHA-3(Keccak)
RIPEMD RIPEMD-160、RIPEMD-128、RIPEMD-256、RIPEMD-320

重放攻击(replay attack)

消息发送者A 中间攻击者M 消息接收者B 发送者根据消息 计算MAC值 攻击者窃听、保存 接收者验证报文 是否被篡改 消息+正确MAC 攻击者在之后时间内, 不断发送窃听而来的消息 消息+正确MAC 消息+正确MAC 消息+正确MAC 消息发送者A 中间攻击者M 消息接收者B

抵御重放攻击——不重数(nonce)

消息发送者A 消息接收者B 消息 B的公钥 B的私钥 请把B的公钥发来 B的公钥 随机生成一个不重数R, B的私钥加密不重数R 加密的不重数R 用B的公钥解密得到不重数R 【A进行加密】 消息+不重数R+B的公钥→密文 密文 【B进行解密并核对不重数R】 密文+B的私钥→消息+不重数R 下一次通信时, 再随机生成另外的不重数R 消息发送者A 消息接收者B

四、实体鉴别——数字签名与证书

数字签名的流程

发送方:

拼接
散列计算
加密
加密
拼接
消息
消息+签名
消息摘要
发送方的私钥
签名

接收方:

分离
分离
散列计算
散列计算
散列计算
消息+签名
签名
消息
消息摘要
散列值
发送方的公钥
对比

数字签名与消息认证码的比较

项目 消息认证码(MAC) 数字签名
发送方 用共享密钥计算MAC值 用私钥生成签名
接收方 用共享密钥计算MAC值 用公钥验证签名
密钥配送问题 存在 不存在,但公钥需要另外认证
完整性
认证 仅限通信双方 可适用于任何第三方
防止否认 不能防止 可以防止

证书和认证机构(CA)

B的公钥
保存证书(=B的公钥+CA的数字签名)
下载证书(=B的公钥+CA的数字签名)
消息接收者B(B生成密钥对)
可靠的认证机构CA(注册B的公钥)
仓库(证书目录)
消息发送者A(确认B公钥的合法性)

五、基于口令的密码(PBE)

加密流程

散列计算
散列计算
对称加密<明文>
对称加密<密钥>
对称加密<密钥>
对称加密<明文>
用户记忆
口令
密钥加密密钥KEK
伪随机数生成器
会话密钥CEK
KEK加密后的CEK
用会话密钥加密的消息
消息

最后,用户将“盐”和“KEK加密后的CEK”保存在安全的地方。

解密流程

散列计算
散列计算
对称解密<密钥>
对称解密<密文>
对称解密<密钥>
对称解密<密文>
用户记忆
口令
密钥加密密钥KEK
会话密钥CEK
KEK加密后的CEK
消息
用会话密钥加密的消息

六、密码软件PGP的原理

发送者A:生成数字签名并加密

生成数字签名:

散列计算
散列计算
对称解密<密钥>
对称解密<密文>
散列计算
公钥加密<明文>
公钥加密<密钥>
发送者A的记忆
口令
私钥的解密密钥
A的私钥
已加密的A的私钥
消息
消息摘要
数字签名

消息加密:

拼接
拼接
压缩
对称加密<明文>
对称加密<密钥>
公钥加密<明文>
公钥加密<密钥>
拼接
拼接
数字签名
签名+消息
消息
压缩消息
加密的压缩消息
会话密钥
伪随机数生成器
加密的会话密钥
接收者B的公钥
报文数据

接收者B:解密并验证数字签名

消息解密:

散列计算
散列计算
对称解密<密钥>
对称解密<密文>
分解
公钥解密<密钥>
公钥解密<密文>
对称解密<密钥>
分解
对称解密<密文>
接收者B的记忆
口令
私钥的解密密钥
B的私钥
已加密的B的私钥
报文数据
加密的会话密钥
会话密钥
压缩消息
加密的压缩消息

验证数字签名:

解压缩
分解
分解
散列计算
公钥解密<密文>
公钥解密<密钥>
压缩消息
消息+签名
数字签名
消息
消息摘要
散列值
A的公钥
对比

你可能感兴趣的:(计算机专业基础课,密码学,安全,网络安全)