SM1算法的EBC、CBC、OFB模式及其介绍

SM1算法的EBC、CBC、OFB模式及其介绍

  • SM1
    • 初始向量(IV)
    • 填充
    • ECB模式
    • CBC模式(密码分组链接)
    • OFB模式(输出反馈模式)

SM1

SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。

初始向量(IV)

初始向量(IV)是一个比特块,被几种模式用于随机加密,从而产生不同的密文,即使相同的明文被加密多次, 初始化向量的安全性要求与密钥不同,因此IV通常不需要是机密的。

填充

加密器处理固定大小的单元称为块,但是消息的长度各不相同。因此,某些模式(即ECB和CBC)要求在加密之前填充最后一个块。存在几种填充方案。最简单的方法是向明文添加空字节,使其长度达到块大小的倍数,但是必须注意恢复明文的原始长度。

ECB模式

SM1算法的EBC、CBC、OFB模式及其介绍_第1张图片
该方法的缺点是将相同的明文块加密为相同的密文块;因此,它不能很好地隐藏数据模式。在某种意义上,它不提供严格的消息机密性,并且不建议在加密协议中使用它。

SM1算法的EBC、CBC、OFB模式及其介绍_第2张图片

CBC模式(密码分组链接)

在CBC模式下,每一个明文块在被加密之前都被前一个密文块进行了加密。这样,每个密文块都依赖于在此之前处理的所有明文块。要使每个消息唯一,必须在第一个块中使用初始化向量IV。
SM1算法的EBC、CBC、OFB模式及其介绍_第3张图片
CBC加密公式
在这里插入图片描述

CBC解密公式
在这里插入图片描述
CBC一直是最常用的操作模式。它的主要缺点是加密是顺序的,并且消息必须被填充成密码块大小的倍数。注意,明文或IV中的一个位变化会影响后面的所有密文块。用不正确的IV解密会导致第一个明文块被破坏,但随后的明文块将是正确的。这是因为每个块都用前一个块的密文而不是明文进行了加密,所以在使用前一个块作为当前块的IV进行解密之前,不需要对它进行解密。这意味着一个明文块可以从两个相邻的密文块中恢复。因此,解密可以并行化。注意,对密文的一个位的更改会导致明文的相应块完全损坏,并且在下一个明文块中反转相应的位,但其余块保持不变。

OFB模式(输出反馈模式)

OFB模式使分组密码变为同步流密码。它生成密钥流块,然后用明文块对其进行赋值以获得密文。与其他流密码一样,在密文中翻转一个位会在明文的相同位置产生一个翻转位。此属性允许许多错误纠正代码正常工作,即使在加密之前应用也是如此。
SM1算法的EBC、CBC、OFB模式及其介绍_第4张图片
由于XOR操作的对称性,加密和解密完全相同
SM1算法的EBC、CBC、OFB模式及其介绍_第5张图片这里的Oj就是上图中的乱数分组
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
每个输出反馈块密码操作都依赖于前面的所有操作,因此不能并行执行。但是,由于明文或密文只用于最后的异或,所以可以提前执行分组密码操作,允许在明文或密文可用时并行执行最后一步。

你可能感兴趣的:(SM1算法的EBC、CBC、OFB模式及其介绍)