密码学相关基础一(对称加密篇)

  • Post author:
  • Post category:其他




一、加密



1.1、加密的定义

首先了解加密,我们先需要了解何为明文,何为密文?

  • 明文:是指没有加密的文字(或者字符串),一般人都能看懂的意思
  • 密文:密文是加了密的的文字,如果说明文是加密之前的文字,那么密文是对明文进行加密后的报文

密码学中,加密(英语:Encryption)是将明文信息改变为难以读取的密文内容,使之不可读的过程。

只有拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容。



1.2、加密算法



1.2.1、对称加密算法

在对称加密算法中,

使用的密钥只有一个

,发收信双方

都使用这个密钥

对数据进行加密和解密,这就要求

解密方事先必须知道加密密钥



在这里插入图片描述

常见的对称加密算法有DES,3DES,AES,RC2,RC4,RC5,SM4等算法。


  • AES算法

    :(英语:Advanced Encryption Standard)

是美国联邦政府采用的一种分组加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。

现在,高级加密标准已然成为对称密钥加密中最流行的算法之一。

所以,如果要使用对称加密算法,我们一般使用AES即可


  • SM4算法:

是中华人民共和国政府采用的一种分组密码标准,由国家密码管理局于2012年3月21日发布,相关标准为“GM/T 0002-2012《SM4分组密码算法》(原SMS4

分组密码算法

)”。2016年8月,成为中国国家密码标准(GB/T 32907-2016)。


如果要求使用国密加密的新创场景我们使用SM4即可



而想更深入AES,SM4就要说到分组算法,那么我们就要知道如何分组:



1.2.2、分组模式

常用的分组模式:比如ECB,CBC,CFB,OFB等等,具体的算法的优缺点如下图:

在这里插入图片描述

明文的长度不固定,而分组密码只能处理特定长度的一块数据,这就需要对分组密码的算法进行迭代,以便将一段很长的明文全部加密,而迭代的方法就是分组的模式。

我们这里讲用得比较多的ECB,CBC这两种模式


  • ECB – Electronic Code Book, 电子密码本模式

在这里插入图片描述

在ECB模式中,将

明文分组加密之后的结果将直接成为密文分组



相同的明文分组会被转换为相同的密文分组

,我们可以将其理解为是一个巨大的“

明文分组->密文分组

”的对应表,因此ECB模式也称为电子密码本模式。

当最后一个明文分组的内容

小于分组长度时,需要用一些特定的数据进行填充

  • 优点:

    简单,可以并发加密
  • 缺点:ECB模式中,明文分组与密文分组是一一对应的关系,因此,

    如果明文中存在多个相同的明文分组,则这些明文分组最终都将被转换为相同的密文分组

    。且

    加密长度只能是分组的倍数,不够会补齐

    ,这样一来,

    只要观察一下密文,就可以知道明文存在怎样的重复组合,并可以以此为线索来破译密码

    ,因此ECB模式是存在一定风险的。是不可抗攻击的
  • 举一个例子说明:

假设分组长度为128bit(16个字节),某银行的转账请求数据由以下3个分组构成。

分组1=付款人的银行账号

分组2=收款人的银行账号

分组3=转账金额。

场景是:从A-5374账号向B-6671账号转账1亿元

16进制数据表示如下:



将上面数据用ECB加密,加密后,看不出明文分组内容。

在这里插入图片描述

攻击者将密文分组1和2对调。

在这里插入图片描述

攻击者没有试图破译密码,但场景却发生了变化:

在这里插入图片描述

现在场景变成了:B-6671账号向A-5374账号转账1亿元。

完全相反,这就是ECB的弱点,

不破译密文的情况下操纵明文


  • CBC密文分组链接模式


    CBC模式的全称是Cipher Block Chaining模式(密文分组链接模式),之所以叫这个名字,是因为密文分组像链条一样相互连接在一起。

在CBC模式中,

首先将明文分组与前一个密文分组进行XOR异或运算,然后再进行加密

,过程如下图:

在这里插入图片描述

我们来比较一下ECB模式与CBC模式的区别

在这里插入图片描述


ECB模式只进行了加密,而CBC模式则在加密之前进行了一次XOR

  • 初始向量

    当加密第一个明文分组时,由于不存在“前一个密文分组”,因此需要事先准备一个长度为一个分组的比特序列来代替“前一个密文分组”,这个比特序列称为初始化向量(Initialization Vector),通常缩写为IV,一般来说,每次加密时都会随机产生一个不同的比特序列来作为初始化向量。
  • CBC模式的特点

明文分组在加密之前一定会与“前一个密文分组”进行XOR运算,因此

即使明文分组1和明文分组2的值是相等的,密文分组1和2的值也不一定是相等的

。这样一来,ECB模式的缺陷在CBC模式中就不存在了。

加密过程:在CBC模式中,无法单独对一个中间的明文分组进行加密。例如,如果要生成密文分组3,则至少需要凑齐明文分组1、2、3才行。

解密过程:假设CBC模式加密的密文分组中有一个分组损坏了。在这种情况下,只要密文分组的长度没有发生变化,则解密时最多只有2个分组受到数据损坏的影响。见下图:

在这里插入图片描述

假设CBC模式的密文分组中有一些比特缺失了,那么此时即便只缺失1比特,也会导致密文分组的长度发生变化,此后的分组发生错位,这样一来,缺失比特的位置之后的密文分组也就全部无法解密。见下图:

在这里插入图片描述

所以CBC优点在于安全性要高于ECB,不容易被主动攻击。

但是缺点也很明显,不利于并行计算,且需要额外的空间存储初始向量,容易出现误差影响后面的分组。

但是我们仍然推荐使用CBC。

下一篇为非对称加密和数字签证相关知识,有兴趣的同学可以浏览

https://blog.csdn.net/qq_44754515/article/details/123594255?spm=1001.2014.3001.5502



版权声明:本文为qq_44754515原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。