密码学基础

对称密码(Symmetric Encryption)
  • 分组密码:AES、DES/3DES
    模式:
    • ECB模式(Electronic CodeBook mode),电子密码本模式
    • CBC模式(Cipher Block Chaining mode),密码分组链接模式
    • CFB模式(Cipher FeedBack mode),密文反馈模式
    • OFB模式(Output FeedBack mode),输出反馈模式
    • CTR模式(CounteR mode),计数器模式
  • 流密码:RC4、ChaCha20
非对称密码(Asymmetric Encryption),又称公钥密码
  • 公钥加密,私钥解密
  • 公钥公开,私钥自己持有,且不能泄露
  • RSA、ECC
消息认证码(Message Authentication Code,MAC)
  1. 发送者Alice与接收者Bob事先共享密钥
  2. 发送者Alice根据请求消息计算MAC值(使用共享密钥)
  3. 发送者Alice将请求消息和MAC值两者发送给接收者Bob
  4. 接收者Bob根据接收到的请求消息计算MAC值(使用共享密钥)
  5. 接收者Bob将自己计算的MAC值与从Alice处收到的MAC值进行对比。如果一致,则证明此消息来自Alice,否则此消息不是来自Alice
单向散列函数
  • MD5、SHA1
数字签名
  • 算法:RSA,ElGamal,DSA,ECDSA,Rabin

  • 签名:私钥加密

  • 签名验签:公钥解密

  • 认证机构(Certification Authority,CA)

  • 注册机构(Registration Authority,RA)

  • 公钥基础设施(Public Key Infrastructure, PKI)

直接对消息签名

  1. Alice用自己的私钥对消息进行加密
  2. Alice将消息和签名发送给Bob
  3. Bob用Alice的公钥对收到的签名进行解密
  4. Bob将签名解密后得到的消息与Alice直接发送的消息进行对比

对消息的散列值签名

  1. Alice用单向散列函数计算消息的散列值
  2. Alice用自己的私钥对散列值进行加密
  3. Alice将消息和签名发送给Bob
  4. Bob用Alice的公钥对收到的签名进行解密
  5. Bob将签名解密后得到的散列值与Alice直接发送的消息的散列值进行对比
证书
  • 签发证书:1. 根CA使用自己的私钥给自己的公钥签名包装成证书 2. 根CA用自己的私钥给二级CA的公钥签名包装成证书 3. 二级CA用自己的私钥给终端的公钥签名包装成证书

  • 证书验签:1. 从根CA证书中获取公钥验签根CA证书 2. 从根CA证书中获取公钥验签二级CA证书 3. 从二级CA证书中获取公钥验签终端证书

  • 基于口令的密码(Password Based Encryption,PBE)

  • 初始化向量(Initialization Vector,IV)

  • 密钥分配中心(Key Distribution Center,KDC)

  • 椭圆曲线密码(Elliptic Curve Cryptography,ECC)

  • 密钥加密密钥(Key Encrypting Key,KEK)

  • 内容加密密钥(Contents Encrypting Key,CEK)

密钥配送方式

  • 非对称密码
  • DH密钥协商
  • 预共享密钥(PSK)
  • 硬件介质配送
  • 密钥分发中心(KDC)/证书授权中心(CA)
  • 量子密钥分发(QKD)

四种攻击方式

  • 唯密文攻击(Ciphertext-Only Attack, COA)
  • 已知明文攻击(Known-Plaintext Attack, KPA)
  • 选择明文攻击(Chosen-Plaintext Attack, CPA)
  • 选择密文攻击(Chosen-Ciphertext Attack, CCA)

密码系统五要素

  • 明文
  • 密文
  • 加密算法(公开)
  • 解密算法(公开)
  • 密钥(保密)

密码学工具箱6个工具

  • 对称密码
  • 非对称密码
  • 单向散列函数
  • 消息认证码
  • 数字签名
  • 伪随机数生成器

密码安全四大属性

  • 机密性:确保信息仅被授权主体访问,未授权者无法获取或解读。对称密码和非对称密码实现
  • 完整性:确保信息在存储、传输、使用过程中未被未授权篡改、伪造或破坏,保持原始状态。单向散列函数、消息认证码和数字签名实现
  • 认证:验证实体(人、设备、系统)或信息来源的真实性,确认对方是其所声称的身份。消息认证码和数字签名实现
  • 不可否认性:确保操作主体(人、系统)无法事后否认其已执行的操作(如发送消息、签署文件、发起交易)。数字签名实现

基于口令的密码(Password Based Encryption,PBE)

加密

  • 使用盐和口令生成KEK
  • 生成会话密钥并加密数据
  • 使用KEK加密会话密钥
  • 存储盐、加密会话密钥和加密数据

解密

  • 使用盐和口令重建KEK
  • 使用KEK解密会话密钥
  • 使用会话密钥解密数据
对比项 对称密码 非对称密码
发送者 用共享密钥加密 用公钥加密
接收者 用共享密钥加密 用私钥解密
密钥配送问题 存在 不存在,但公钥需要另外认证
机密性 保证 保证
对比项 消息认证码 数字签名
发送者 用共享密钥计算MAC值 用私钥生成签名
接收者 用共享密钥计算MAC值 用公钥验证签名
密钥配送问题 存在 不存在,但公钥需要另外认证
完整性 保证 保证
认证 保证(仅限通信对象双方) 保证(可适用于任何第三方)
不可否认 不保证 保证
相关推荐
洒家肉山大魔王2 小时前
PKCS#7填充
密码学·crypto·p7填充·填充处理
派大星爱吃鱼8 小时前
LFSR代数攻击
密码学
gfdhy3 天前
【c++】哈希算法深度解析:实现、核心作用与工业级应用
c语言·开发语言·c++·算法·密码学·哈希算法·哈希
Tony Bai3 天前
Go 2025 密码学年度报告:后量子时代的防御与 FIPS 的“纯 Go”革命
开发语言·后端·golang·密码学
搬砖魁首10 天前
密码学系列 - 介绍几种不同的签名方案
密码学·签名·schnorr·ecdsa·eddsa
帅次14 天前
信息安全的容灾与业务持续&安全管理的措施
安全·网络安全·系统安全·密码学·网络攻击模型·安全威胁分析·安全架构
奔跑吧邓邓子18 天前
【C语言实战(78)】C语言进阶:筑牢数据安全防线,密码学实战探秘
c语言·密码学·数据安全·开发实战
passxgx18 天前
10.7 密码学中的线性代数
线性代数·密码学
麦烤楽鸡翅20 天前
幂数加密(攻防世界)
网络安全·密码学·ctf·crypto·解密·攻防世界·幂数加密