Skip to content

密码学基础

破解的两种方法

  • 密码学分析
  • 穷举

传统密码

Caesar密码

单表代替密码: 用字母表的置换作为密钥,密钥空间从26变到26!

破解: Frequency Analysis

Vigenere密码

\(C_i=(p_i+k_{i\bmod m})\bmod 26\)

多表代替密码

b7a9f3605d957bc62c30651ca494621b.png

破解: 1. 计算重复密文序列间距的公约数,猜测密钥词的长度m 2. 如果密钥词的长度是m,那么密码实际上是m个单表密码组成(如1,1+m,1+2m...位置上的加密) 对指定位置进行频率分析

book cipher

Enigma

轮子的初始位置是密钥 多表加密 26^3才会重复

day key/message key

对称密钥密码学

对称|共享|保密 密钥加密: 加密者和解密者共用同一个密钥

block ciphers

  • 将明文分成多个大小为n bit的块
  • 对每个块: each output bit is a function of all n input bits and k key bits.

Feistel

雪崩效应

  • Diffusion 扩散:使得明文和密文的关系更复杂(迭代交换左右两半
  • Confusion 扰乱: 使得密文和密钥的统计关系更复杂(增大block size, 密钥长度,迭代轮数,sub-key generation algorithm,轮函数

DES

n=64, k=56

破解: 密钥长度不够, 穷举

triple DES: \(C=E_{K3}[D_{K2}[E_{K1}]]\) 其中\(E\)代表加密,\(D\)代表解密,K1~K3是3个Key. 当K1=K2时就是普通DES(为了兼容性)

AES

n=128,k=128/192/256

Mode of Operation

如何把大的明文分成长度为n的block

  • ECB(块之间是独立的, 所以相同的明文块会产生相同的密文)
  • CBC

7a3913c19e2810645f50b339826fc406.png

Stream cipher

不分块。用key生成一个伪随机数序列,用随机数序列和明文的每一位XOR

Key Distribution

Comments