ppt链接:
安全的PRFs定义。
安全的PRPs定义。
例题。
Perms[x]的分布和E(k,x)的分布是一样的。
可以设计出攻击者A,询问 x=0和 x=1,因为PRP中没有f(0)=f(1)的情况,所以当f(0)=f(1)时,一定是实验1,所以输出1,否则,输出0。所以实验0 PRP没有f(0)=f(1)的情况,所以输出1的概率为0,而实验1输出1的概率为1/2。
PRF转换定理。
上述例子PRF不是安全的,是因为x取值太少。
电子密码本(ECB)
这个并不安全,加密相同的明文产生相同的密文。
使用一次性密钥的语义安全。
一次性密钥的安全,意味着一个密钥只能使用一次,只加密一个明文,攻击者只能看到一个用这个密钥加密的密文。
ECB不是语义安全的。
安全的构造-确定的计数器模式。
由分组密码构建一个流密码。用一个PRF (即AES),计算AES在0的值,在1的值......一直到L。产生一个伪随机密码本与明文异或。
定理。
证明。和之前的PRG证明差不多一样。
使用多次密钥的语义安全。
选择明文攻击在于 m_{j,0}=m_{j,1}=m ,这样攻击者就可以获得特定明文m的密文。
ECB和确定的计数器在CPA下都是不安全的,可以说,任意确定的加密在CPA下都不可能是语义安全的。
教训:
解决办法1:随机加密。
缺点:密文长度长于明文长度,在某些情况下,造成一定的开销。
例题。
解决办法2-基于新鲜值的加密。
(k,n)不能用两次,一个办法是为每个明文选择新的随机密钥,另一个办法是保持密钥不变,选择新的新鲜值。
新鲜值不需要是随机的,也不需要是私密的。只需要是唯一的。生成新鲜值的两种办法。
办法2的话,就变成了随机加密。
基于新鲜值的加密是CPA安全的。
这里所有的新鲜值都是不同的,是因为攻击者选择了相同的明文让Alice进行加密,Alice也不会用相同的新鲜值加密。
例题。
加密
解密
CBC是CPA安全的。在q^2L^2<<|X| 的情况下。
L是加密的明文长度,q是攻击者A进行询问的次数,即其可获得的密文数。
举例:意味着CBC在密钥用来加密2的48次方后个不同的分组后就不再是安全的了。对于3DES而言,在大约1/2个MB后就需要更换密钥。
常见错误。利用带IV的CBC加密时,IV的不可预测必须要满足。否则将是不安全的。
假设给定一个明文信息的加密,攻击者正好可以预测出加密下一条明文的IV。这样子则是不安全的。
注意:加密 m_0时, c[1]=E(k,IV_1)=(IV\oplus IV_1)\oplus IV =IV_1 c_1(1)=E(k,0\oplus IV_1)=IV_1
基于新鲜值的CBC构造。
注意:1.如何新鲜值接收方也知道的话,不需要添加在密文中进行传递。
2.一定要对新鲜值进行一次E(k_1,\cdot) ,否则是不安全的。
3.k_1 和 k 不能是一样的值。
注意:OpenSSL中的加密API中的IV,需要用户自己输入,输入时一定要选择随机的IV。如果选择了新鲜值,一定要提前用PRP(AES)进行加密。
填充。当加密的明文长度不是分组密码的分组长度时,需要进行填充。例如填充5个字节,则最后5个字节为 5 5 5 5 5
如果明文正好是16的整数倍,则增加一个分组,为16 16......16 16个16
这里用PRF就够了,不需要像CBC一样要用PRP。并且可以并行,CBC只能串行。
基于新鲜值的随机计数器。最多加密2^{64} 。
Random-CTR CPA安全性分析。
举例。
使用Random-CTR比用CBC在更换密钥前可以加密更多的分组。
CTR vs CBC。CTR完爆CBC。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。