欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

深度详细的研究探讨Padding Oracle渗透测试全解析专题

来源:本站整理 作者:佚名 时间:2017-10-18 TAG: 我要投稿

最近在研讨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值来解密。
而服务器端仅仅保留了密钥,没有保留IV值。由于默许环境下加密后的文件会把IV值附在文件开首,是以服务器会间接利用传给它的文件开首8或16位(视加密办法而定),作为IV值。
在此咱们停一下,先举个例子,具体阐明一下CBC形式下AES加密过的密文若何失常解密获得明文。
比方说,咱们有密文’9F0B13944841A832B2421B9EAF6D9836813EC9D944A5C8347A7CA69AA34D8DC0DF70E343C4000A2AE35874CE75E64C31′ 。这段密文用CBC形式下AES加密,而且已知key和IV值。
接下来咱们停止解密。
起首,AES是一种分组暗码,每组由16字节构成。密文是用十六进制表现的,也便是相邻两位数字合在一起构成一个十六进制数,用来表现一字节。密文长度为96,依照32一组停止分组,则正好能够分为三组。咱们把这三组密文存到一个数组C里,今后用C[0], C[1], C[2]来表现这三组密文。
而后咱们看一下解密用的图。

如上图所示,我曾经在图中标出了C[0], C[1], C[2]的地位。咱们失常解密时,先用C[0]与Key解密AES,而后获得一个中央值,这个中央值与IV值停止异或,获得第一段明文。而C[0]作为新的IV值,与C[1]在AES解密后的中央值停止异或,从而获得第二段明文。第三段以此类推。这便是一个失常解密的进程。

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载