细致分析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)模式。

大数据

如图所示,其实就是每个分组的明文均利用相同的密钥进行加密。

但是这种模式明显有个缺点,那就是所有的密钥都相同,导致相同的明文,一定会被加密成相同的密文。

这样很显然是一种不安全的模式。因为它不能提供严格的数据保密性。可以联想一下最简单的凯撒密码,相同的明文加密后得到相同的密文,导致这种方式难以阻挡频率攻击。

那么为了让我们加密后的信息更加难以破解,在1976年,IBM发明了密码分组链接(CBC,Cipher-block chaining)模式。

如下图所示。

大数据

我们可以看到,这里加入了一个初始向量(IV, Initialization Vector)。在第一块明文进行加密之前,需要先与初始向量进行异或。而产生的密文,将与下一组明文进行异或。在这种方法中,每个密文块都依赖于它前面的所有明文块。

这种模式使原本独立的分组密码加密过程形成迭代,使每次加密的结果影响到下一次加密。这样无疑比ECB模式要安全了许多。

上图分别是CBC模式下加密和解密的过程。我们可以看到在中间写着Block Cipher Encryption 的方块那里即是加密算法,本文中就用AES来举例。

而Initiallzation Vector(IV)即是初始向量,也是本攻击方式所重点利用的地方。

1.4 异或

在密码学里,异或是一种很重要的运算方式。

具体表现在,一个数字连着异或两次另一个数字后,得到的值还是它本身。

比方说,65 ^ 66 = 3

3 ^ 66 = 65

在下面我们会利用到这个重要的运算。

二、破解过程详解

文章开头说了,这是一种针对CBC模式的攻击。与你具体选择的是哪种加密方式是没有关系的。

也就是说,在上面CBC加密模式的图里,不管你在‘Block Cipher Decryption’那个框里选的是AES加密,还是DES加密,都无所谓,只要服务器配置不正确,我们都有机会破解。

那么这是如何做到的呢?在说明攻击方式之前,我们先来了解一下正常的解密方式是如何的。

2.1 正常解密过程

我们先来分析一下正常状态下,服务器的解密过程。

首先,CBC模式下AES的解密需要知道IV值与密钥。这个应该很好理解。‘Block Cipher Decryption’肯定需要知道密钥来解密,而CBC模式需要IV值来解密。

精英物联网-物联网大数据前沿科技信息资讯网,内容只代表作者观点,如有侵权请联系站务处理。

上一篇:基于YARN集群构建运行PySpark Application 下一篇:为什么说SQL正在击败NoSQL,这对数据的未来意味着
猜你喜欢
各类观点
热门排行
精彩图文