前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >斯坦福大学密码学-使用分组密码 04

斯坦福大学密码学-使用分组密码 04

原创
作者头像
Daffy
修改2020-11-04 10:31:41
1.3K0
修改2020-11-04 10:31:41
举报

ppt链接:

回顾:PRPs和PRFs

安全的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取值太少。

使用一次性密钥的分组加密。(One Time Key)

电子密码本(ECB)

这个并不安全,加密相同的明文产生相同的密文。

使用一次性密钥的语义安全。

一次性密钥的安全,意味着一个密钥只能使用一次,只加密一个明文,攻击者只能看到一个用这个密钥加密的密文。

ECB不是语义安全的。

安全的构造-确定的计数器模式。

由分组密码构建一个流密码。用一个PRF (即AES),计算AES在0的值,在1的值......一直到L。产生一个伪随机密码本与明文异或。

定理。

证明。和之前的PRG证明差不多一样。

使用多次性密钥的分组加密。(Many Time Key)

使用多次密钥的语义安全。

选择明文攻击在于 m_{j,0}=m_{j,1}=m ,这样攻击者就可以获得特定明文m的密文。

ECB和确定的计数器在CPA下都是不安全的,可以说,任意确定的加密在CPA下都不可能是语义安全的。

教训:

解决办法1:随机加密。

缺点:密文长度长于明文长度,在某些情况下,造成一定的开销。

例题。

解决办法2-基于新鲜值的加密。

(k,n)不能用两次,一个办法是为每个明文选择新的随机密钥,另一个办法是保持密钥不变,选择新的新鲜值。

新鲜值不需要是随机的,也不需要是私密的。只需要是唯一的。生成新鲜值的两种办法。

办法2的话,就变成了随机加密。

基于新鲜值的加密是CPA安全的。

这里所有的新鲜值都是不同的,是因为攻击者选择了相同的明文让Alice进行加密,Alice也不会用相同的新鲜值加密。

例题。

CBC 密码分组链接模式

加密

解密

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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 回顾:PRPs和PRFs
  • 使用一次性密钥的分组加密。(One Time Key)
  • 使用多次性密钥的分组加密。(Many Time Key)
  • CBC 密码分组链接模式
  • 随机计数器模式。
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档