Yk2eR0's Blog.

(ECB,CBC)分组密码的算法类型及模式

字数统计: 1.2k阅读时长: 3 min
2019/11/01 Share

电子密码本(ECB)

使用分组密码最明显的方式:一个铭文分组加密成一个密文分组因为相同的明文分组永远被加密成相同的密文分组,而且理论上制作成一个包含明文和相应密文的密码本是可能的.然而,如果分组的大小为64位,那么密码本就有2^64项–对于预计算和存储来说太大了.
每个明文分组可被独立地进行加密.不必按次序进行.ECB的问题在于:如果密码分析者有很多明文和密文,那他就可在不知道密钥的情况下获得密码本.在实际情况下,消息格式趋于重复,不同的消息可能会有一些位序列是相同的.这些消息在很大程度上是冗余的或者有很长一段字符串是0和space.
如果密码分析者知道明文A对应密文B,那么无论什么时候这段密文出现在另一段消息中,他都能将其解密.
消息的开头和结尾是致命之处.那里一般规定了消息头和消息尾,会有固定格式.

填充

将非64位的密码填充至64位.前面用0,1等有规律的模式填充,最后标记共填充了多少位.

分组重放

ECB最严重的问题在敌人可以在不知道密钥的前提下修改加密过的消息,用这种方法可以欺骗指定的接收者,如双花攻击.
解决方法:加时间戳
新攻击方法:截取时间戳正确的消息,然后更换对应的账户和名称,即可产生一条时间戳正确的恶意明文.

比特币系统解决方法:
UTXO(Unspent Transaction Outpu),即未花费交易输出,它在区块链系统中用以记算钱包账户中的余额。对于货币玩家们而言,UTXO就像是你的余额宝,它会随时计算你的仅剩资产。同时由于编码的存在,UXTO的优越性也在于资产的销毁和产生过程都是便于追溯的。时间戳和UTXO的存在标志着,当某个用户意图用同一笔资金进行两次付款的时候,时间戳会自动选择承认最先发出的那笔交易。而UTXO则会确认并验证用于每一笔交易的资产是否存在、是否被花费。如果要在区块链中发起双花攻击,就势必会令系统产生分叉,而多出来的这条岔道,通常不会被系统所承认。
DES解决方法:密码分组连链接模式(CBC)
采用多次分组加密,每一次分组加密用来修改下一次分组的加密.

密码分组连链接模式(CBC)

  • 采用多次分组加密,每一次分组加密用来修改下一次分组的加密.
    CBC模式仅在前面的明文分组不同时,才能将完全相同的明文分组加密成不同的密文分组.因此两个相同的信息仍被加密成相同的密文.更糟糕的是:两组信息在它们第一个不同之处出现之前,会被加密成相同的结果
    有些信息(如发件人,信头)有相同的开头,虽然不能进行分组重放,但这些相同开头的确给分析者提供了帮助.
    防止这种情况发生的办法是用加密随机数据作为第一个分组,这个随机数据被称为初始化向量(IV),它的唯一作用是让信息唯一化.接收者进行解密时,只是用它来填充反馈寄存器.时间标记是一个好的IV.使用IV后相同信息可以被加密乘不同的密文内容.这样窃听者就无法进行分组重放攻击.
  • IV不需要保密

    错误扩散

    CBC模式具有 在加密端是密文反馈,在解密端是密文前馈 的性质,这意味着要对错误进行处理.明文分组的单独一位出错将影响密文分以及后面的密文分组.
    密文的小错误能够转变为明文的更大错误,这就叫错误扩散.在CBC中,出错的分组后的第二分组不会受到影响.尽管CBC能将位错误恢复,但不能回复同步错误.所以CBC必须保证分组结构的完整.

原文作者:Yk2eR0

原文链接:https://www.yk2er0.fun/2019/11/01/ecbcbc-md/

发表日期:十一月 1日 2019, 12:35:11 凌晨

更新日期:November 1st 2019, 12:36:56 am

版权声明:非商业用允许转载

CATALOG
  1. 1. 电子密码本(ECB)
    1. 1.1. 填充
    2. 1.2. 分组重放
  2. 2. 密码分组连链接模式(CBC)
    1. 2.1. 错误扩散