本来不想看这个的,但是工作需要,要考证书,所以不得不看

基础概念

术语&基础知识

  1. 1976年,提出公钥密码学系统的学者是Diffie & Hellman
  2. 发送者(Sender)是信息的发起方
  3. 接收者(Receiver)或信宿是信息的接收方
  4. 信道(Channel)是信息传输的媒介
  5. 原始信息通常称为明文(Plaintext),加密后的信息称为密文(Ciphertext)
  6. 密码学理论研究分支
    1. 密码编码学
    2. 密码分析学
  7. 我国商密纳入国际标准组织ISO/IEC
    1. SM2数字签名算法
    2. SM3密码杂凑算法
    3. SM4分组密码算法
    4. 祖冲之密码算法
  8. 对称加密算法
    1. DES算法
    2. SM4算法
    3. AES算法
  9. 非对称加密算法
    1. 算法
      1. Diffie-Hellman算法
      2. RSA算法
    2. 目前公开密钥密码【非对称加密】主要用来进行数字签名,或用于保护传统密码的密钥,而不主要用于数据加密,主要因为公钥密码的效率比较低
  10. 同步序列密码
    1. 概念:密钥序列的产生独立于明文和密文消息
    2. 特点:密钥流的生成仅依赖于初始密钥和内部状态,与明文/密文无关。
    3. 安全性取决于密钥流
    4. 优势:无错误传播
    5. 示例:RC4、AES-CTR模式、ChaCha20
    6. 其他
      1. 非同步序列密码:密钥流受明文或密文影响
      2. 自同步序列密码:密钥流由前若干位密文推导(如CFB模式),属于非同步的一种。
  11. 杂凑函数,又称哈希函数散列函数,是一种将任意长度的输入数据(如消息、文件)转换为固定长度的输出(称为哈希值、摘要或指纹)的数学函数。核心特点是不可逆性唯一性
    1. 核心特性
      1. 确定性:相同的输入永远生成相同的哈希值。
      2. 不可逆性(单向性):从哈希值无法还原原始输入(除非暴力穷举)
      3. 抗碰撞性:极难找到两个不同的输入产生相同的哈希值(即避免哈希碰撞)
        1. 输出长度位n,则抗碰撞复杂度位O(2^{n/2})
      4. 雪崩效应:输入数据的微小变化(如1比特)会导致哈希值完全不同
    2. 常见hash函数
      1. MD5:128位
      2. SHA-1:160位
      3. SHA-256:256位
      4. SHA-3:可变长度
  12. 密码体制要素
    1. 明文
    2. 密文
    3. 加密算法
    4. 解密算法
    5. 密钥
    6. 密钥空间
    7. 初始向量
    8. 工作模式
    9. 认证与完整性机制
    10. 随机数生成器
  13. 序列密码(流密码)的安全强度
    1. 取决于 密钥流生成器的设计:序列密码的核心是通过密钥流生成器产生伪随机密钥流,与明文逐比特(或逐字节)异或加密
    2. 次要因素初始向量长度:初始向量(IV)用于避免重复密钥流,但其安全性建立在密钥流生成器本身的设计上
  14. 安全性基础原理
    1. 多变量公钥密码:求解有限域上随机生成的多变量非线性多项式方程组的困难性NP-Hard
    2. RSA:大整数分解
    3. 编码密码(如McEliece):任意线性码的译码问题
    4. 格密码:最小整数解问题
  15. 密码协议攻击方法
    1. 重放攻击
    2. 并行会话攻击
    3. 中间人攻击
    4. 预言者会话攻击

Kerckhoffs

Kerckhoffs原则:密码系统的安全性主要依赖密钥

密码分析

  • 根据密码分析者所掌握的分析资料的不同
    • 唯密文攻击【公开的网络中能获得的最现实的能力
    • 已知明文攻击
    • 选择明文攻击
    • 选择密文攻击

密码算法

对称密码

  • 特点:加解密密钥相同,效率高

分组密码

  • 算法
    • DES:56位有效密钥
    • AES:SP结构,轮数依密钥长度定
      • 步骤
        • 字节代替
        • 行移位
        • 列混淆
        • 轮密钥加
    • SM4:非平衡Feistel结构,32轮,128位分组/密钥
    • IDEA:128位密钥
  • 工作模式
    • ECB:无扩散,并行
    • CBC:错误扩散,需填充
    • CTR/OFB/CFB:流模式,无需填充,错误不扩散

序列密码

  • 核心:密钥流生成器设计
  • 算法
    • ZUC:128位密钥/IV,同步流密码,用于4G/5G
    • RC4
扩散和混淆
  • 理想的扩散
    • 让密文中的每一位受明文中每一位的影响
    • 让明文中的每一位影响密文中的所有位
  • 理想的混淆
    • 使密文和密钥之间的统计关系变得尽可能复杂
    • 使得对手即使获得了关于密文的一些统计特性,也无法推测密钥
    • 使用复杂的非线性代换

非对称密码

  • 特点:加解密密钥分离,效率低,用于密钥交换/签名
  • 数学难题基础
    • 大整数分解:RSA
    • 离散对数:ElGamal、ECC
    • 椭圆曲线离散对数:SM2(256位密钥)
    • 多变量方程组:多变量公钥密码

SM2

RSA

SM9

密码杂凑函数

  • 特性:单向性、抗碰撞、固定长度输出

SM3

MD结构,256位输出,512位分组,64轮压缩
应用:数字签名、消息认证、密钥派生
国际算法:SHA-256(MD结构)、SHA-3(Sponge结构,题1042)

  • 攻击
    • 生日攻击
    • 长度扩展攻击(MD结构缺陷)

消息认证码(MAC)

作用:完整性 + 消息源认证

  • 实现方式
    • HMAC(基于杂凑函数)
    • CBC-MAC(基于分组密码)
  • 防重放攻击:时间戳、Nonce、序号

中国商用密码体系

SM2

椭圆曲线公钥算法(数字签名、加密、密钥交换)

SM3

杂凑算法,256位输出,ISO标准

算法执行过程

sm3算法的执行过程共有五部分,分别是:消息填充、消息分组、消息扩展、迭代压缩、输出结果。sm3算法是一个分组加密算法,即加密过程需要先将消息按每512比特(64字节)进行分组,然后对每组都进行消息扩展、消息压缩,执行到最后一组时进行消息填充,再压缩,最后输出结果,其执行过程如下图:

  • 初始IV:sm3使用8个字寄存器来存储每一轮迭代压缩的过程数据及结果,压缩过程中也会使用到这8个寄存器,规范中这8个寄存器分别定义为A,B,C,D,E,F,G,H,我们可以理解成8个unsigned int变量。

SM4

分组密码,非平衡Feistel结构,128位分组/密钥

ZUC

序列密码,128位密钥,3GPP标准。祖冲之算法集是由我国学者自主设计的加密和完整性算法,包括祖冲之算法(ZUC)、加密算法128-EEA3和完整性算法128-EIA3

结构

  1. 上层是16级线性反馈移位寄存器(LFSR)
  2. 中层是比特重组(BR)
  3. 下层是非线性函数F

LFSR

31上层的LFSR由16个31比特寄存器单元变量组成,每个变量在集合{1,2,3,…,2^31-1}中取值。线性反馈移位寄存器以有限域GF(231-1)上的16次本原多项式

线性反馈移位寄存器的运行模式有两种:初始化模式和工作模式。

  • 初始化模式

  • 工作模式

BR

非线性F函数

SM9

标识密码


考试速成

第二次记录

  • AES

    • 迭代【整体】:SP
    • 轮次
      • 256位:14
      • 192位:12
      • 128位:10
    • 字节代换由如下运算构成
      • 有限域乘法逆元
      • 字节仿射变换
    • 非线性模块
      • 行位移
      • 列混淆
      • 轮密钥加
    • 线性模块
      • 字节代换
    • 明文长128比特
      • 明文状态4X4
  • DES

    • 密钥有效长度:56
    • 迭代运算:16
    • 扩展运算E:32位数据组 => 48位
    • DES变异版本
      • 2DES
      • 3DES
  • ECC

    • 关键点:倍点运算
  • idea

    • 密钥长度:128
    • 加密轮次:8
    • 分组:64
  • SM2

    • 规定256比特椭圆曲线参数【安全级别】
    • ECDSA相同数学难题:椭圆曲线离散对数问题
      • 复杂度指数级
      • 强度相当于3072比特长的RSA
    • 公开基点:椭圆曲线群的生成元
    • 签名值包含两部分
    • 密文值包含3部分
    • 公钥包含1个椭圆曲线点
    • 签名函数一次点乘
    • Fp-256,公钥长度位512
    • 对1024比特明文加密,需要2次点乘
    • 明文长128,密文896【x7】
    • 密文长度2048,明文1280
    • 加密调用了SM3
    • 签名验证涉及运算
      • 凑杂计算
      • 椭圆曲线点乘
    • 密钥生成涉及运算
      • 椭圆曲线点乘
      • 随机数生成
    • 同一类数学结构
      • ECDSA
      • ECDH
  • SM3

    • SHA256强度相当
    • 分组512,输出256
    • 迭代结构:MD
    • 链接变量长度:256/8个消息字【一个消息字=32位】
    • 布尔函数输入有3个消息字
    • 扩展生成132个消息字
    • 压缩函数输入:768
    • 输入448比特消息,压缩2次
    • 输入最大消息长度:2^64
    • 最少填充65比特,最多填充576
    • p0和p1置换有4个异或
    • 字长32
    • 初始IV256比特
    • p置换中有1比特输入差分,输出差分至少3比特
    • abc,填充14个0,长度24比特
    • abcd,填充3个非0 32比特字
      • 0x00000020
    • 起到混淆的运算
      • 布尔运算
      • 模加
  • SHA-3

    • 凑杂结构:Sponge
  • SM4

    • s盒输入:8位
    • s盒输出:8位
    • 加密轮次:32
    • 分组128bit,密钥也是128bit
    • 非线性变换由4个S盒构成
    • 线性变换输入为32位
    • 轮加密线性变换由输入及循环左移5项异或
    • 扩展算法线性变换由输入及循环左移3项异或
    • CBC-MAC输出标签无法支持256比特长度
    • 轮函数运算
      • 非线性变换
      • 异或
      • 线性变换
  • SM9

    • 使用的分组密码标准是SM4
    • 辅助函数不包括分组密码
    • 无穷远点用0字节表示
    • 嵌入次数12
    • SM3辅助函数
    • 签名生成用主公钥
    • KGC通过随机数发生器生成主私钥
    • KGC通过主私钥生成用户标识
    • 通信需要2或3次消息传递
  • Skipjack

    • 密钥长度:80
  • 分组密码模式

    • CBC
      • 错误扩散
    • ECB
      • 电码本模式
      • 并行处理
      • 转账问题
    • CTR
      • 生成伪随机流
      • 加密模式
      • 加解密都可并行
    • OFB
      • 加密模式
    • CFB
      • 密文反馈模式
    • EtM
      • 可鉴别模式
    • OCB
      • 只处理一次明文
    • CMAC
      • 不并行处理
    • OMAC
      • 密钥最少
    • Enc-then-MAC
      • 认证加密
    • GCM
      • 认证加密
  • 解密并行

    • CBC
    • CTR
    • ECB
  • ZUC

    • 一次输出密钥:32位
    • LFSR采用线性移位寄存器产生源序列
    • 线性移位寄存器长度496
    • LFSR产生二元序列周期:2^496
    • LFSR由16个31比特子单元变量构成
    • 驱动使用模2^31-1的环上的LFSR
    • 非线性函数F采用 48 x 8比特S盒 【类似SM4】
    • 非线性函数F包含2个32比特记忆单元
    • 非线性函数F输出需要右移1位产于LFSR反馈运算中
    • 非线性函数F输入输出长度位96,32
    • 记忆单元载入设置位全0
    • 128EEA-3:保密性算法
    • 128EIA-3:完整性算法
    • 比特重组部分从寄存器单元抽取128比特供非线性函数和密钥导出函数使用
    • 涉及的运算
      • 模2^{31}-1加法
      • 左循环移位
      • 模2^{32}加法
  • IPSec

    • IPSec SA单向;IKE SA双向【防重放】
  • SSL

    • 预主密钥 = > 主密钥 => 工作密钥
    • 隧道模式ESP协议支持NAT穿越
  • m序列:最长线性移位寄存器序列

  • 第二原像攻击复杂度:O(2^n)

  • ELGamal算法最小密钥长度:1024

  • Rabin安全性:大整数分解问题

  • 显著性水平:0.01

  • 多线性逼近方法:kaliski&Robshaw

  • 密码分析方法

    • 差分
    • 线性
  • 计算安全

    • AES
    • ECC
    • RSA
  • 同样密钥同样数据加密结果不同

    • SM2加密 & 签名
  • XTS & HCTR模式适合用于磁盘加密

  • 消息鉴别码攻击:密钥推测

  • RSA-PKCS1-v1_5签名是确定性签名算法

  • ECDH密钥交换单个用户需要2次点乘运算

  • 非背包公钥加密体制

    • McEliece
    • LWE
    • ECC
  • 背包公钥加密体制

    • Merkle-Hellman
  • 时间

    • SM3 2012年批位行业标准
    • 2017年SM8、SM2密钥交换协议没有成为国际标准