随机序列
基本概念
https://www.cnblogs.com/luminescence/p/18938331
最终周期序列
设\(\{s_i\}^{\infty}_{i=1}\)是一条序列,假如存在正整数\(t\)和\(r\),使得对于任意\(i>=t\)都有\(s_{i+r} = s_i\)
则最小整数\(t\)为序列的支长,\(r\)为周期,序列称为最终周期序列
随机序列一定不是最终周期序列,伪随机序列的周期不要太小
基本模型
密钥\(k\)和始终\(i\),通过乱数发生器生成\(d_i\)
明文\(m_i\)经过拉丁方变换\(E(d_i,m_i)\)得到密文\(c_i\)
一般模型
乱数生成:\(d_i = f(k, i, S_i, M_i, C_i)\)
- 输入参数:
- 密钥 \(k\);时钟 \(i\);当前记忆状态 \(S_i\)
- 明文反馈向量 \(M_i = (m_{i-1}, m_{i-2}, \dots, m_{i-r})\)
- 密文反馈向量 \(C_i = (c_{i-1}, c_{i-2}, \dots, c_{i-t})\)
- 输出:
- 乱数 \(d_i\)
- 下一时刻记忆状态 \(S_{i+1}\)
记忆刷新:\(S_{i+1} = g(k, i, S_i, M_i, C_i)\)
明密结合变换:\(c_i = E(k, d_i, m_i)\)
反馈机制:
- 内部记忆:存储状态\(S_i\),用于下一轮运算
- 明文反馈:通过左移寄存器存储前\(r\)个明文块
- 密文反馈:通过右移寄存器存储前\(t\)个密文块
数据流向:
- 明文路径:\(m_i \rightarrow\) 左移寄存器 \(\rightarrow\) 生成\(M_i \rightarrow\) 输入乱数发生器
- 密文路径:\(c_i \rightarrow\) 右移寄存器 \(\rightarrow\) 生成\(C_i \rightarrow\) 输入乱数发生器
- 记忆更新:\(S_{i+1} \rightarrow\) 反馈回乱数发生器作为下一轮记忆状态
根据乱数生成模块或内部记忆变换模块与明文或者密文的关系分为:明密文反馈模型;明文反馈模型;密文反馈模型
优点:能减轻会话秘钥重用造成的危害;产生的乱数序列一般没有周期;抗破译能力强
自同步密码模型
丢失部分密文信号后,仍然能正确脱密后续密文信号
自同步密码中使用的密码函数:
(1)不依赖于时钟信号
(2)没有记忆刷新变换;
(3)没有明文反馈。
自同步密码模型的乱数生成模块依赖于之前一定数量的密文
t步恢复自同步密码数字模型
乱数生成模块: 输入密钥和前t个密文比特,输出当前密文比特
明密结合模块: 将当前明文比特与当前密文比特进行异或运算,得到当前密文比特
脱密函数: 输入密钥和前t个密文比特,输出当前明文比特
例如:
\(d_i=k_i⊕c_{i−1}\)
\(c_i=m_i⊕d_i\)
\(m_i=c_i⊕d_i\)
此时恢复步数t=1,即只需要前一个密文比特就可以恢复丢失的密钥序列
前馈模型
序列密码的线性反馈移位寄存器
初始乱源发生器经过非线性变换\(g(x)\)和密钥\(K\)生成乱数
初始乱源发生器可以是一个或者多个线性反馈移位寄存器或者非线性移位反馈寄存器
设计要求:
乱源序列周期长
平衡性等统计特性好
线性复杂度大
实际找不出乱数序列的不随机性
利用乱数序列不能求出密钥
非线性滤波模型
非线性滤波函数g(x)以LFSR在某一时刻的全部或部分寄存器状态作为输入,经过非线性变换后,输出一个比特作为最终的乱数
