现在的位置: 首页 > IT运维 > 正文

ASP.NET的Padding Oracle Attack

2010年09月26日 IT运维 ⁄ 共 540字 暂无评论 ⁄ 被围观 1,019+

什么是Padding Oracle Attack?

有些文章把Padding和Oracle,与CSS样式表或是那个收购了Sun的甲骨文公司联系起来,这就驴唇不对马嘴了。

Padding在这里的含义是“填充”,因为对于加密算法来说,它们是基于等长的“数据块”进行操作的(如对于RC2,DES或TripleDES 算法来说这个长度是8字节,而对于Rijndael算法来说则是16、24或32字节)。但是,我们的输入数据长度是不规则的,因此必然需要进行“填充” 才能形成完整的“块”。“填充”时比较常用的是PKCS #5规则,简单地说,便是根据最后一个数据块所缺少的长度来选择填充的内容。

例如,数据块长度要求是8字节,如果输入的最后一个数据块只有5个字节的数据,那么则在最后补充三个字节的0x3。如果输入的最后一个数据块正好为 8字节长,则在最后补充一个完整的长为8字节的数据块,每个字节填0x8。使用这个规则,我们便可以根据填充的内容来得知填充的长度,以便在解密后去除填充的字节。

在解密时,如果算法发现解密后得到的结果,它的填充方式不符合规则,那么表示输入数据有问题,对于解密的类库来说,往往便会抛出一个异常,提示Padding不正确。

Oracle在这里便是“提示”的意思,和甲骨文公司没有任何关系。

给我留言

您必须 [ 登录 ] 才能发表留言!

×
#