本周完成了有关伪随机的内容。
在这之前了解了伪随机性的概念,也用伪随机发生器、伪随机函数和伪随机置换这
3
3
3个原语构造过安全的加密方案,但是却对这些原语的构造没有什么了解。这次就从单向函数存在这个假设出发,构造这些原语。这样,安全的对称密钥加密方案就可以基于更弱的假设,也就更加的具有说服力,需要说明的是,这里没有考虑构造方案的执行效率,仅从假设方面出发。
虽然构造伪随机发生器等原语是可以用单向函数存在这一假设的,但是证明过程过于复杂,作者介绍的是基于任何单向置换构造出伪随机发生器、伪随机函数、伪随机置换和强伪随机置换。
X
f
(
x
)
X~~f(x)
X f(x)
伪随机发生器的构造:伪随机发生器可以用任意的单向置换和该函数的硬核谓词来构造。即
G
(
s
)
=
(
f
(
s
)
,
h
c
(
s
)
)
G(s)=(f(s),hc(s))
G(s)=(f(s),hc(s))。
伪随机函数的构造:伪随机函数其实就是一个带密钥的函数,它可以用伪随机发生器来构造。即
F
k
(
x
)
=
G
x
n
(
…
G
x
2
(
G
x
1
(
k
)
)
…
)
F_{k(x)}=G{x_n}(…G_{x_2}(G_{x_1}(k))…)
Fk(x)=Gxn(…Gx2(Gx1(k))…),
G
G
G就是伪随机发生器,
x
1
.
.
x
n
x_1..x_n
x1..xn分别是
x
x
x的单个比特,
k
k
k是均匀随机选取的,
G
x
1
(
k
)
G_{x_1}(k)
Gx1(k)的意思就是将
1
1
1比特的字符扩展成n比特的字符串。
G
x
n
(
…
G
x
2
(
G
x
1
(
k
)
)
…
)
G_{x_n}(…G_{x_2}(G_{x_1}(k))…)
Gxn(…Gx2(Gx1(k))…)就是由内而外重复迭代,伪随机发生器生成的字符串是伪随机的,因此最终得到的字符串也是伪随机的,所以
F
k
(
x
)
F_k(x)
Fk(x)得出的字符串是伪随机的。
伪随机置换的构造:伪随机置换是一个可以高效求逆的伪随机函数。作者通过使用
F
e
i
s
t
e
l
Feistel
Feistel网络来构造伪随机置换。在
F
e
i
s
t
e
l
Feistel
Feistel网络中,轮函数使用伪随机函数,通过三轮的
F
e
i
s
t
e
l
Feistel
Feistel网络是伪随机的。通过四轮的
F
e
i
s
t
e
l
Feistel
Feistel网络是强伪随机的。
最终可以得出结论:如果单向函数存在,那么就可以构造出伪随机发生器、伪随机函数和伪随机置换。那么,只要存在单向函数,就存在选择密文攻击安全的对称密钥加密方案,以及存在适应性选择消息攻击条件下的存在性不可伪造的消息认证码。
分组密码是效率更高的伪随机置换,常在实践中使用。最熟知的分组密码应该就是
D
E
S
DES
DES和
A
E
S
AES
AES。
D
E
S
DES
DES是一个拥有
16
16
16轮的
F
e
i
s
t
e
l
网
络
Feistel网络
Feistel网络,分块长度为
64
64
64比特,密钥长度为
56
56
56比特,它的轮函数是不可逆的唯一机密的是主密钥本身,其他都是公开的。它的原理大致是:
(1)将
64
64
64比特的明文进行初始置换。
(2)生成
48
48
48比特的子密钥
(3)生成
48
48
48比特的明文
(4)生成中间密文
(5)
S
S
S盒的处理
(6)逆初始置换
其中,
(
2
)
(2)
(2)~
(
5
)
(5)
(5)步骤需经过
16
16
16轮迭代运算。
D
E
S
DES
DES的基本形式已经不再安全,因为它的密钥太短,这跟他的内部结构和设计无关。他的变体
3
D
E
S
3DES
3DES被广泛认为是高度安全的。但是由于它需要三个完整的分组密码运算,导致速度上慢了很多,它的分块长度也相对较短。这也正是
A
E
S
AES
AES出现的原因,
A
E
S
AES
AES就是为了解决短密钥和短分块长度问题而被设计出来的。
A
E
S
AES
AES拥有
128
128
128比特的分块长度,可以使用
128
128
128、
192
192
192、
256
256
256比特的密钥。
A
E
S
AES
AES本质上是一个
S
P
N
SPN
SPN,以
128
128
128比特为例,其原理大致是这样的:它需要经过一次
a
d
d
R
o
u
n
d
K
e
y
addRoundKey
addRoundKey(轮密钥加)和
9
9
9次字节代换、行移位、列混合和轮密钥加,最后经过字节代换、行移位和轮密钥加,得到的就是密文了。
A
E
S
AES
AES也有很多攻击,但都是针对轮数减少的
A
E
S
AES
AES,至今还没有发现更好的攻击来攻破它。所以
A
E
S
AES
AES是很安全的。
(
3
)
(3)
(3)总结
本周的内容不能说都看懂了,比如,在构造过程中使用的技术:混合参数(
h
y
b
r
i
d
a
r
g
u
m
e
n
t
hybrid~argument
hybrid argument)就没有看的通透。之前只知道,在多项式时间里,如果一个字符串是伪随机的,那么它与相同长度的均匀分布的字符串是不可区分的。有了本周的学习,伪随机性的概念更加深刻了。