序列密码体制是理论上最安全的密码体制,因为Shannon证明了一次一密密码体制是绝对安全的,每个字节明文都对应这一个字节的密钥,而序列密码的设计就是基于此而设计。
序列密码
明
文
、
密
文
、
密
钥
以
位
(
或
者
字
符
)
为
单
位
进
行
加
解
密
,
由
一
个
短
的
种
子
密
钥
,
通
过
算
法
产
生
密
钥
序
列
。
明文、密文、密钥以位(或者字符)为单位进行加解密,由一个短的种子密钥,通过算法产生密钥序列。
明文、密文、密钥以位(或者字符)为单位进行加解密,由一个短的种子密钥,通过算法产生密钥序列。
模
型
\color{blue}模型
模型
序
列
密
码
的
分
类
\color{blue}序列密码的分类
序列密码的分类
要求密码和密钥必须同步,才能够还原正确的明文。
发送方与接收方的同步时钟出错,即密文在传输过程中有丢失的数据,而密钥正确导致解密时出现错位。
密
文
失
步
的
例
子
:
密文失步的例子:
密文失步的例子:
密
文
:
c
1
c
3
c
4
c
5
…
…
c
n
−
1
c
n
⨁
密
钥
:
k
1
k
2
k
3
k
4
…
…
k
n
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
明
文
:
m
1
错
误
错
误
错
误
错
误
错
误
错
误
\begin{matrix} & 密文:& c_1& c_3& c_4& c_5& ……& c_{n-1}& c_n \\ \bigoplus& 密钥:& k_1& k_2& k_3& k_4& ……& k_n\\ —&——&——&——&—— &—— &—— &—— &—— \\ &明文:&m_1&{\color{red}错误}&{\color{red}错误}&{\color{red}错误}&{\color{red}错误}&{\color{red}错误}&{\color{red}错误} \end{matrix}\\\;
⨁—密文:密钥:——明文:c1k1——m1c3k2——错误c4k3——错误c5k4——错误…………——错误cn−1kn——错误cn——错误
c2的丢失导致后续的明文都错误。
因
此
同
步
序
列
密
码
对
失
步
特
别
敏
感
,
很
容
易
检
测
出
插
入
删
除
,
重
播
等
主
动
攻
击
\color{gray}因此同步序列密码对失步特别敏感,很容易检测出插入删除,重播等主动攻击
因此同步序列密码对失步特别敏感,很容易检测出插入删除,重播等主动攻击
失步和错误是两个完全不同的概念,失步会导致之后的全都会错位,而错误只是使一个发生错误,其他的并不会发生错位。
假如c2错误,则仅会导致m2的错误。
密
文
:
c
1
c
2
c
3
c
4
…
…
c
n
⨁
密
钥
:
k
1
k
2
k
3
k
4
…
…
k
n
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
明
文
:
m
1
错
误
m
3
m
4
…
…
m
n
\begin{matrix} & 密文:& c_1& {\color{red}c_2}& c_3& c_4& ……& c_n \\ \bigoplus& 密钥:& k_1& k_2& k_3& k_4& ……& k_n\\ —&——&——&——&—— &—— &—— &—— \\ &明文:&m_1&{\color{red}错误}&m_3&m_4&……&m_n \end{matrix}\\\;
⨁—密文:密钥:——明文:c1k1——m1c2k2——错误c3k3——m3c4k4——m4…………——……cnkn——mn
使密钥产生算法与明文和密文相关联,解决了“同步”问题。
模
型
:
\color{blue}模型:
模型:
将一个单位(n位)的密文反馈给产生器,产生相应的k,
因此一个字节的错误会影响所在的一个单位(n位)范围内的错误,而过了这个单位,就不会再影响下一个单位了。
构造一个序列密码
利用移位寄存器产生序列密码的方法。
寄
存
器
分
为
线
性
寄
存
器
和
非
线
性
寄
存
器
。
\color{blue}寄存器分为线性寄存器和非线性寄存器。
寄存器分为线性寄存器和非线性寄存器。
一般模型:
S
0
到
S
n
−
1
S_0到S_{n-1}
S0到Sn−1构成了循环左移的寄存器,
S
0
S_0
S0经过
f
f
f函数的运算一方面作为密钥输出,另一方面再反馈给该寄存器,作为寄存器的
S
n
−
1
S_{n-1}
Sn−1,
S
n
−
1
S_{n-1}
Sn−1变为
S
n
−
2
S_{n-2}
Sn−2,以达到循环,以产生循环不断的密钥序列。
f
函
数
称
为
反
馈
函
数
,
这
个
函
数
是
否
为
线
性
函
数
,
决
定
了
这
个
寄
存
器
是
线
性
的
还
是
非
线
性
的
。
f函数称为反馈函数,这个函数是否为线性函数,决定了这个寄存器是线性的还是非线性的。
f函数称为反馈函数,这个函数是否为线性函数,决定了这个寄存器是线性的还是非线性的。
线性移位寄存器在已知明文攻击下是可破译的,所以应该尽力设计一种非线性的移位寄存器
线
性
移
位
寄
存
器
\color{blue}线性移位寄存器
线性移位寄存器
f
(
S
0
,
S
1
,
.
.
.
,
S
n
−
1
)
=
g
0
×
S
0
+
g
1
×
S
1
+
g
2
×
S
2
+
…
…
+
g
n
−
1
×
S
n
−
1
f(S_0,S_1,...,S_{n-1}) = g_0×S_0+g_1×S_1+g_2×S_2+……+g_{n-1}×S_{n-1}\\\;
f(S0,S1,...,Sn−1)=g0×S0+g1×S1+g2×S2+……+gn−1×Sn−1
g
0
,
g
1
,
…
…
g
n
−
1
为
反
馈
系
数
,
其
值
要
么
为
0
,
要
么
为
1
。
相
当
于
一
个
开
关
。
g_0,g_1,……g_{n-1}为反馈系数,其值要么为0,要么为1。相当于一个开关。
g0,g1,……gn−1为反馈系数,其值要么为0,要么为1。相当于一个开关。
一般模型:
线性移位寄存器加/脱密模型:
加
密
:
\color{blue}加密:
加密:
c
1
=
m
1
⨁
∑
i
=
0
n
−
1
g
i
⋅
s
i
c_1 = m_1\bigoplus\sum_{i=0}^{n-1}g_i·s_i\\\;
c1=m1⨁∑i=0n−1gi⋅si
c
2
=
m
2
⨁
∑
i
=
0
n
−
2
g
i
⋅
s
i
⨁
g
n
−
1
⋅
c
1
c_2 = m_2\bigoplus\sum_{i=0}^{n-2}g_i·s_i\bigoplus g_{n-1}·c_1\\\;
c2=m2⨁∑i=0n−2gi⋅si⨁gn−1⋅c1
c
3
=
m
1
⨁
∑
i
=
0
n
−
3
g
i
⋅
s
i
⨁
g
n
−
2
⋅
c
1
⨁
g
n
−
1
⋅
c
2
c_3 = m_1\bigoplus\sum_{i=0}^{n-3}g_i·s_i\bigoplus g_{n-2}·c_1\bigoplus g_{n-1}·c_2\\\;
c3=m1⨁∑i=0n−3gi⋅si⨁gn−2⋅c1⨁gn−1⋅c2
…
…
……\\\;
……
c
n
=
m
1
⨁
g
0
⋅
s
0
⨁
∑
i
=
1
n
−
1
g
n
−
i
⋅
c
i
c_n = m_1\bigoplus g_0·s_0\bigoplus \sum_{i=1}^{n-1}g_{n-i}·c_i\\\;
cn=m1⨁g0⋅s0⨁∑i=1n−1gn−i⋅ci
解
密
过
程
同
加
密
过
程
相
同
。
\color{blue}解密过程同加密过程相同。
解密过程同加密过程相同。
认
知
有
限
,
请
批
评
指
正
。
\color{gray}认知有限,请批评指正。
认知有限,请批评指正。