随机数发生器
重点:线性反馈移位寄存器、转移矩阵、特征多项式、m-序列、Golomb 伪随机性
Golomb 随机性公设:
- GF(2) 上的 n 长 m-sequence {ai} 应该满足下面的三个条件:
- 在一个周期内,0、1 出现的次数分别是 $$2^{n-1} - 1$$ 和 $$2^{n - 1}$$;
 - 在一个周期内,总游程数为 $$2^{n-1}$$;对长为 $$i (1 \le i \le n-1)$$ 的游程有 $$2^{n-1-i}$$ 个,0、1 各半;
 - $${a_i}$$ 的自相关函数为 $$\displaystyle R(\tau) = \begin{cases} 1, & \tau = 0 \\displaystyle -\frac{1}{2^n - 1}, & 0 < \tau \le 2^n - 2 \end{cases}$$
 
 
自相关函数:
- GF(2) 上周期为 T 的序列 $${a_i}$$ 的自相关函数定义为:
 - $$\displaystyle R(\tau) = \frac{1}{T} \sum_{k = 1}^{T} (-1)^{a_k} (-1)^{a_{k+\tau}}$$
 
流密码
流密码的加密原理:将明文比特流 m 与随机比特流 k 按位异或得到加密比特流 c;
随机比特流通常是由多个 LFSR,通过一些方式组合而成:
- Geffe 序列生成器、JK 触发器、Pless 触发器、钟控序列生成器
 
一些常见的流密码:
- 手机通信的加密方式 
A5/1、蓝牙的加密方式E0、WiFi-WEP 的加密方式RC4; 
分组密码
分组密码常用的方法:
- 代换:一个离散可逆函数;
 - 扩散和混淆:香农提出的密码设计两个基本方法。扩散破坏明文和密文的统计关系,混淆破坏密钥和密文的统计关系;
 - Feistel 加密结构:
- 将明文分为 L、R 左右两个部分,进行多轮迭代计算。每轮计算通过下面的方式:
 - $$L_i = R_{i-1}$$、$$R_i = L_{i-1} \oplus F(R_{i-1}, K_i)$$
 
 
分组密码的运行模式:
- ECB(Electronic Code Book):电子密码本模式;
 - CBC(Cipher Block Chaining):密码分组链接模式;
 - CFB(Cipher FeedBack):密码反馈模式;
 - OFB(Ouput FeedBack):输出反馈模式;
 
一些常见的分组密码:
- DES(Data Encryption Standard):由 IBM 公司研制,最初是 Luciffer 密码的发展和修改;
 - IDEA(International Data Encryption Algorithm):由 X.J.Lai 与 J.L.Massey 提出,当时被称为 PES(Proposed Encryption Standard);在差分密码分析提出之后又改进为 IPES,最后更名为 IDEA;
 - AES(Advanced Encryption Standard):多个机构提出、攻击、选举的结果,最初名为 Rijndael;
 - 祖冲之密码(ZUC):国家信息安全重点实验室研制,2011 年 9 月成为 LTE 4G 国际标准;
 - SM4:中国商用密码算法,用于 WEPI 的分组密码算法;
 
公钥密码
常见的公钥密码:
- RSA 算法、背包密码体制、Robin 密码体制、ElGamal 椭圆曲线密码体制、SM2 椭圆曲线加密算法;
 
椭圆曲线上的加法和倍乘运算:
对于椭圆曲线 $$E_p(a, b): y^2 \equiv x^3 +ax +b \pmod{p}$$。设 $$P_1 = (x_1, y_1), P_2 = (x_2, y_2)$$ 是上异于无穷远点 O 的两个点。则:
负元公式:$$-P_1 = (x_1, y_1)$$
加法公式:考虑 $$P_3 = (x_3, y_3) = P_1 + P_2$$:
- 可得 $$\begin{cases} x_3 = k^2 -x_1 - x_2 \ y_3 = k(x_1 - x_3) - y_1\end{cases}$$,其中 $$k = \begin{cases}\displaystyle \frac{y_2 - y_1}{x_2 - x_1} & x_1 \not= x_2 \ \displaystyle \frac{3x_1^2 + a}{2y_1} & x_1 = x_2\end{cases}$$
 
密码分配
公钥的分配方式有以下几种:
- 公开发布、公用目录表、公钥管理机构、公钥证书;
 
秘密分割:
- Shamir 门限方案、基于中国剩余定理的门限方案;