对称加密与进攻案例说明
输出:
在密钥未知的环境下,依然乐成还原了1.txt的明文内容。防止这种进攻的要领就是尽也许不要重用流加密的密钥,常见的实现是在加密前将密钥与随机数nonce举办运算。 2. ECB块重排进攻 前文说过,在块加密中ECB模式中每个块都是独立加密的。因此进攻者可以在未知密钥的环境下,对密文中的块举办从头分列,组合成正当的可解密的新密文。 思量这么一种场景,某CMS的cookie名目为DES-ECB加密后的数据,而明文名目如下:
因为DES行使的块巨细是8字节,因此上述明文可以切分成三个块,个中@为添补标记:
假设我们可以节制本身的用户名(在注册时),那么有什么步伐可以在不知道密钥的环境下将本身提取为打点员呢(即admin=1)?起首将用户名配置为pan@@@@admin=1;,此时明文块的内容如下:
我们所必要做的,就是在加密完成后,将处事器返回的cookie行使最后一个块替代第一个块,这样一来就得到了一个具有打点员权限的正当cookie了。 完备例子就不整了,这里只证明一下这种方法的可行性,起首行使DES-ECB加密明文:
然后修改密文,将前两个块(8字节)替代,然后行使沟通的密钥举办解密:
可以看到,该进攻要领确实是对ECB块加密算法有用的。 相同的操作方法尚有在可以或许解密的环境下,将其他密文的对应块替代到本身的密文块中,从而获取其他密文块的明文数据。好比上述例子假如可以通过cookie获取用户名,那么可以将其他密文块放到用户名部门从而获取其他加密的信息。 该进攻和其他相同的进攻着实有一个配合点,我们无法获取和猜解原始数据,但可以通过修改密文数据并让处事器去乐成解密。因此应对此进攻的要领就很明明晰,即在加密后再添加MAC校验。 留意这里说的是先加密后MAC,假如次序反了,那在处理赏罚数据时就要先解密再校验MAC,这有也许会导致一系列安详题目,好比下面将提到的密文填塞(Padding Oracle)进攻。 3. Padding Oracle Attack 在先容该进攻之前,可以先回首一下关于添补的常识。在PKCS#7体系中,我们可以通过最后一个块的最后一个字节得知添补的巨细以及校验添补是否正当。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |