对称加密:
使用相同的秘钥进行加密和解密,因为对称加密的秘钥长度有限,所以往往根据秘钥长度对明文进行分组。
分组模式
如何对明文分组,这就构成了分组模式。分组模式一般有下面几种(摘自《图解密码技术 第三版》)
ECB模式其实就是简单的分组,按照顺序把明文分成和秘钥长度相同的多组,每组加密完再拼起来
ECB模式进行攻击
这种模式加密其实很危险,比如
明文分组1: xxxxxxx (付款人 A)
明文分组2: xxxxxxx (收款人 B)
明文分组2: xxxxxxx (付款1亿元)
加密后的分组
密文分组1: xxxxxxx (付款人 A)
密文分组2: xxxxxxx (收款人 B)
密文分组2: xxxxxxx (付款1亿元)
这时候我们把密文分组1和密文分组2进行调换
密文分组2: xxxxxxx (付款人 B)
密文分组1: xxxxxxx (收款人 A)
密文分组2: xxxxxxx (付款1亿元)
这时候解密出来的明文则是
明文分组2: xxxxxxx (付款人 B)
明文分组1: xxxxxxx (收款人 A)
明文分组2: xxxxxxx (付款1亿元)
本来应该是A付给B 1亿元经过中途篡改攻击后变成了 B给A付款 1亿元
这样就通过不破解密文的情况下实施了攻击
再举例
我们知道服务器密码是用ECB模式加密保存的
明文分组1:xxxxxxx (用户名)
明文分组2:xxxxxxx (密码)
加密后的分组为
密文分组1:xxxxxxx (用户名)
密文分组2:xxxxxxx (密码)
我们如何破解呢?
我们只需要把密文分组1的内容覆盖到密文分组2中
密文分组1:xxxxxxx (用户名)
密文分组2:xxxxxxx (用户名)
这样解密出来的明文分组为
明文分组1:xxxxxxx (用户名)
明文分组2:xxxxxxx (用户名)
这样我们就可以知道用户名的情况下进行登录了