padding oracle attack相关之CBC模式

前段时间遇到一个挺有意思是的题目,用到了padding oracle attack的相关知识,于是恶补了一下padding oracle attack相关内容,本着取之于民用之于民同时也可以方便自己以后复习的心态,我决定整理一下这几天的所学所得,也算是留下点什么hhh。
先码一下原题吧:

In thisassignment, you must decrypt a challenge ciphertext generated using AES inCBC-mode with PKCS #5 padding. (Note: technically this is PKCS #7 padding,since the block size of AES is 16 bytes. But the padding is done in exactly thesame way as PKCS #5 padding.) To do so, you will be given access to a server thatwill decrypt any ciphertexts you send it (using the same key that was used togenerate the challenge ciphertext)...but that will only tell you whether or notdecryption results in an error!


大概要求就是,给你一串CBC模式下使用AES算法加密的密文(密文按照PKCS #5标准填充)以及一个可以解密发送的任何密文的服务器(使用的密钥与生成密文的密钥相同)并且这个服务器会告诉我们密文解密是否错误,尝试解密得到明文(明文编码对应的ascii字符可以组成有意义的信息)。原题题目还提示我们使用padding oracle attack来进行解密工作,因此理解padding oracle attack的工作原理是解决这个问题的关键。

在说padding oracle attack之前,先简单介绍一下CBC模式以及PKCS #5的相关知识。

首先是CBC模式:CBC模式是一种分组链接模式,目的是为了使原本独立的分组密码加密过程形成迭代,使每次加密的结果影响到下一次加密。这可以强化加密算法的”敏感性”,即实现所谓的”雪崩效应”,在香浓理论中这就是”扰乱原则”。加密过程直接看下图:

解密过程就是加密过程的逆过程,如下图:

采用不同的加密算法,密文块(Block Cipher)的长度会不一样,具体看分组密码算法的要求,以AES算法为例,每个分组的长度为16字节。CBC模式下的AES加密过程简单说就是提交一个IV值(长度为16字节)和密钥key,将待加密的内容每十六字节分为一块划分为n块,然后第一块与IV值异或,第二块和第一块异或...第n块和第n-1块异或,将异或得到的值作为明文输入,用AES算法进行加密,密钥都是key,这样就可以得到密文了。

解密过程是加密过程的逆过程,还是接着上面的例子,以AES算法为例,将密文每十六字节一组划分开,然后用AES算法进行解密,解密后得到中间值(Intermediary Value

),第一块中间值与加密时提交的IV值异或,第二块中间值与第一块密文异或...第n块中间值与第n-1块密文异或,异或得到的结果便是明文。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值