国密算法,即国家商用密码算法,如SM系列的密码,常用的国密密码有:
密码分类 | 国产商用密码 | 国际商用密码 | |
---|---|---|---|
对称加密 | 分组加密(块加密) | SM1/SCB2 SM4/SMS4 SM7 | DES IDEA AES RC5 RC6 |
序列加密(流加密) | ZUC(祖冲之算法) SSF46 | RC4 | |
非对称/公钥加密 | 大数分解 | - | RSA DSA ECDSA Rabin |
离散对数 | SM2 SM9 | DH DSA ECC ECDH | |
密码杂凑(散列) | SM3 | MD5 SHA-1 SHA-2 |
SM1算法的加密强度与AES相当,但算法未公开,仅以IP核的形式存在于芯片中,调用该算法时,需要通过加密芯片的接口进行调用。
SM4算法,是无线局域网标准的分组数据算法,其加密流程介绍请阅读:SM4分组密码算法
SM7算法未公开,适用于非接IC卡应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通、公交一卡通)。
分组加密(块加密)— Block Cyper:将明文分组成块,一次加密一个明文分组块。
从国密算法中可以知道,分组加密是对128比特的明文输入和128比特的加密密钥进行处理,生成128比特的密文输出,即分组加密算法只能加密固定长度的明文分组块。
但实际情况往往是明文的长度会远超过密码分组的长度,因此需要对分组加密算法进行迭代,才能将明文全部加密,采用的迭代方法就是分组加密算法的加密工作模式。
ECB模式:Electronic CodeBook mode,电子密码本模式
ECB模式是将明文分成固定长度的组块,然后对每个明文分组块使用相同的密钥进行独立加密或解密,且该加密的结果将直接作为密文分组。
ECB模式是最简单的分组加密算法的一种工作模式。
当最后一个明文分组的内容小于分组长度时,需要用一些特定的数据行进填充。
ECB模式是存在一定风险的!
由上述介绍可知,ECB模式只进行了分组和加密操作,且相同的明文分组加密后会得到相同的密文分组,于是需要设计让相同的明文分组和相同的密钥加密后得到不同的密文分组。基于此思想,在明文分组和密钥加密运算中加入一个干扰项,因此,引入以下工作模式。
CBC模式:Cipher Block Chaining mode,密文分组链接模式
CBC模式是先将明文分成若干个组块,然后每个明文分组与前一密文分组进行异或 \(XOR\) 运算,然后再进行加密。因此,每个密文分组都依赖于它前面的所有明文分组。
由于密文分组像链条一样相互连接在一起,因此称为密文分组链接模式。
从加密过程可知,第0块明文分组没有上一块密文分组来进行异或,于是引入一个初始化向量 \(IV(Initialization\ Vector)\) 来充当第一个干扰项,保证每条消息的唯一性。
加密过程:
解密过程:
若密文分组中有一个分组损坏了
Case 1:该损坏的密文分组的长度没有改变,只有内容发生改变
解密时最多只有2个分组受到数据损坏的影响。
Case 2:该损坏的密文分组的长度发生改变(缺失或增添)
一旦密文分组中缺失或增添一些比特,则会导致密文分组的长度发生改变,之后的分组也会发生错位,将密文分组排列后进行解密,则会影响损坏的密文分组及后续所有的解密过程。
CFB模式:Cipher FeedBack mode,密文反馈模式
CFB模式中密码算法的输入是前一个密文分组,再将该密文分组送到密码算法的输入端产生自同步的密钥流。其解密过程几乎就是颠倒的CBC的加密过程。
由于是将密文分组反馈到密码算法中,因此称为密文反馈模式。
加密过程:
需要使用一个与块的大小相同的移位寄存器,并用IV将寄存器初始化。然后,将寄存器内容使用块密码加密,然后将结果的最高x位与平文的x进行异或,以产生密文的x位。下一步将生成的x位密文移入寄存器中,并对下面的x位平文重复这一过程。解密过程与加密过程相似,以IV开始,对寄存器加密,将结果的高x与密文异或,产生x位平文,再将密文的下面x位移入寄存器。
与CBC相似,平文的改变会影响接下来所有的密文,因此加密过程不能并行化;而同样的,与CBC类似,解密过程是可以并行化的。
摘自分组加密的四种模式(ECB、CBC、CFB、OFB)
解密过程:
CFB模式的解密过程几乎就是颠倒的CBC模式的加密过程。
OFB模式:Output FeedBack mode,输出反馈模式
由于是将密码算法的输出反馈给密码算法中,因此称为输出反馈模式。
加密过程:
解密过程:
输出反馈模式(Output feedback, OFB)可以将块密码变成同步的流密码。它产生密钥流的块,然后将其与平文块进行异或,得到密文。与其它流密码一样,密文中一个位的翻转会使平文中同样位置的位也产生翻转。这种特性使得许多错误校正码,例如奇偶校验位,即使在加密前计算而在加密后进行校验也可以得出正确结果。
摘自分组加密的四种模式(ECB、CBC、CFB、OFB)
CTR模式:CounTeR mode,计数器模式
CTR模式与CFB模式和OFB模式一样,把分组密码转化为序列密码(流密码)。在本质上是通过将逐次累加的计数器采用分组密码加密产生密钥序列,按序列密码的方式进行加解密。最终的密文分组是通过将计数器加密得到的比特序列与明文分组进行异或 \(XOR\) 而得到的。
CTR模式的优点是可并行、效率高、Oi的计算可预处理、适合任意长度的数据、加解密速度快,而且在加解密处理方式上适合随机存取数据的加解密。因此,特别适合计算机随机文件的加密,因为随机文件要求能随机地访问。这对数据库加密是有重要意义的。
ECB模式将明文分组直接单独进行加密得到密文分组。 \(\rightarrow\) 直接加密明文分组
CBC模式将明文分组先与前一个密文分组(或$ IV$)异或后再加密得到密文分组。 \(\rightarrow\) 对明文分组与前一个明文分组的异或结果加密
CFB模式将前一个密文(或 \(IV\))进行加密后再与明文异或得到密文。 \(\rightarrow\) 先加密前一个密文再与明文异或
OFB模式将 \(IV\) 进行加密得到密钥流,再将该密钥流与明文异或得到密文。 \(\rightarrow\) 先生成密钥流再与明文异或
CTR模式将计数器加密后再与明文分组异或得到密文分组。
其中,CFB、OFB、CTR三种模式属于流密码。
参考:
CBC模式解读
OFB模式解读
技术分享丨这是一篇简单的小科普——什么是对称加密算法?(下)
分组加密, 算法模式(ECB CBC CFB OFB)
可不可以通俗的解释一下加密相关系统中的iv(初始化向量)?
分组加密的四种模式(ECB、CBC、CFB、OFB)
CTR(Counter Mode Encryption)模式-信息安全工程师知识点
原文:https://www.cnblogs.com/11sgXL/p/13607083.html