细致分析Padding Oracle渗透测试全解析

大数据

作者:Sherkey

最近在研究Padding Oracle渗透测试,发现网上没有详细讲原理的文章。因此自己整理了这样一篇,希望哪怕是没有密码学基础的朋友也能看完后完全理解攻击的原理。

一、基础知识介绍

本节针对无密码学基础的读者,若均理解可直接跳过。

1.1 什么是分组密码?

以下定义来自维基百科:

在密码学中,分组加密(英语:Block cipher),又称分块加密块密码,是一种对称密钥算法。它将明文分成多个等长的模块(block),使用确定的算法和 对称密钥对每组分别加密解密。

简单来说,就是将明文进行分组,每组分别加密,最后再连在一起形成密文。AES, DES等加密方法均属于分组加密。

1.2 什么是PKCS#5?

正如1.1中所说,分组密码中,需要对明文进行分组。

但是分组要求每个块的大小都要相同。

那么问题就来了,如果说我的明文是‘testabc’,而我用的分组密码是五个一组。这样第一组内容是‘testa’,那么第二组只剩下了‘bc’,不够五个,应该怎么办呢?

这是就要用到一种填充方式,用来把最后空出来的几位填满。

而PKCS#5,就是一种由RSA信息安全公司设计的填充标准。

对于PKCS#5标准来说,一般缺少几位,就填充几位那个数字。

比方说,在上面的例子里,我们有三位空缺,那么就要在空缺处都填上3 。这样,第二组的内容就变成了‘bc333’ 。

这里需要注意的是,比如说,如果每个分组是8字节,我的明文是‘testabcd’,这样恰好是8字节了。但是按照PKCS#5的标准,我们仍然需要在后面添加一个块,块里的内容全部填充为8 (因为一个块大小为8字节,而第二个块全部为空,因此有8位需要填充)。

1.3 CBC模式

在密码学中,分组密码有许多的工作模式。

可能有人会问,我们直接分组以后加密不就好了吗,为什么需要设计模式呢?

没错,其实分组后直接加密也是一种设计模式,名为电子密码本(Electronic codebook,ECB)模式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值