密码学初探|对称密码算法

高树
luomo_i
分组密码是指将需要进行加密的明文分割成指定长度的分组,使用密钥数据对每一个明文分组进行进行加密。

密码学算法|对称密码算法

2345截图20211028093243.png

一、什么是对称算法

不知道大家有没有看过福尔摩斯探案中的《跳舞的人》,在这个故事中,斯兰尼使用跳舞的小人替代字母表中的字符,实现消息的秘密传递。

这种方式其实属于古典密码学中的代换,只有对方同样了解代换的规则,才能解出隐含的信息,同时也避免了不了解规则的人获取其中的信息,是一种简单的对称算法。

而现代密码学中的对称算法,也是采用了类似的流程实现数据的保密:通信双方alice和bob约定一个字符串作为密钥,Alice使用密钥,通过数学运算,将明文转换为密文交给bob,而bob使用相同的密钥和数学运算过程,获取明文(注1)。

在使用对称算法的过程中,alice发送的明文长度是不定的,但是双方约定的密钥长度是定长,如何使用定长的密钥对不定长的明文进行加密呢?

通常有两种方法:将密钥转换为与明文相同长度-这种方法称为序列密码(也称为流密码),或者将明文进行切割,切割的长度等于密钥的长度-这种方式称为分组密码(也称为块密码)

2345截图20211028093243.png

图1序列密码和分组密码

二序列密码

序列密码单独加密每个明文位,通过将密钥序列中的每个位与每个明文位进行异或操作实现,解密过程也是如此。

从序列密码的实现过程中可以发现,其安全性取决于密钥序列的安全性。

最理想的密钥序列当然是一次一密(OTP):每个密钥序列要求完全随机;只能用于一个明文,不能重复使用;每次发送明文之前都要将密钥序列安全的发给对方。

在现实应用中,构建完全符合OTP特征的密码体系无疑是困难的(注2):

1)密钥序列的长度完全等于明文长度,在明文长度足够长的情况下,密钥的产生是一个很困难的事情(宏思电子的高速随机数源的速率也只有20Mbps)(注3);

2)能够生成完全随机的设备价格昂贵;

3)密钥序列需要安全的进行传输,而且每加密一次需要传输一次;

因此,在现代密码学中,一般采用通过密钥算法将固定长度的密钥种子进行分散,生成需求长度的密钥序列。

2345截图20211028093243.png

图2序列密码加密过程

当前比较流行的序列密码算法有:RC4和ZUC,ZUC算法也叫祖冲之算法,由我国学者自主设计的加密和完整性算法,已经被国际组织3GPP推荐为4G无线通信的第三套国际加密和完整性标准的候选算法。

三、分组密码

在现实生活中,分组密码的使用场景要比序列密码更加广泛,在通常的互联网应用中,通常使用分组密码进行数据保护。

分组密码是指将需要进行加密的明文分割成指定长度的分组,使用密钥数据对每一个明文分组进行进行加密。

当前比较常用的分组密码算法为DES/3DES、AES,国内也提出了与之对标的算法SM1和SM4(国密算法会在后续有专门的文章介绍)

1)DES/3DES算法

DES算法是1977年由IBM提供,最初发布时,DES算法的有效期只有10年,但是由于DES算法良好的安全性,其得到了广泛的应用,有效期被推迟到新世纪初,之后才由AES替代。

DES算法通过IP置换的方式,将64bits明文分为两部分32bits L0和32bits R0,然后分别带入到Festiel网络中,经过16轮操作,进行IP逆置换,获得最终的密文,计算过程可参考下图

(注:此处仅是简单描述DES算法工作原理,如需深入了解,可在网上查找相关资料,也可自行进行算法实现)。

2345截图20211028093243.png

图3 DES算法流程

在DES算法被公布不再安全的时候,人们提出了各种改进方案,其中比较常用的方案就是三重DES(Triple DES),可以表示为:

2345截图20211028093243.png

图4 3DES算法

在这个方案中,如果k1=k2=k3,则可以执行单重DES运算。

由于DES算法早就过了有效期,当前的机器性能也能以很小的代价获取相应的密钥数据,所以DES/3DES算法已经不再安全,尽量不要使用该算法

2)AES算法

为了应对DES算法存在的问题,1997年,美国NIST开始征集新的对称密码算法,最终于2001年发布了新的对称密码算法标准-AES

AES是一种基于伽罗瓦域的多轮转换运算,支持128bits,192bits和256bits长度的密钥,分组长度为128bits,且在软硬件实现上更加高效,计算流程如下:

2345截图20211028093243.png

图5 AES算法流程

从AES相关标准发布以来,众多密码领域的专家对AES进行了广泛研究,目前还没有找到相对高效的攻击方法。

最近几年,AES已经逐步取代DES,在多个领域使用

除了以上两种比较常用的分组密码算法外,还有PRESENT算法、RC6算法等,感兴趣的朋友可以与笔者进行交流或者在网络上查找相关资源了解。

四、应用

对称算法主要应用于数据的加密保护,

如通信过程中安全信道数据的保护,https网络请求数据,IM即时通讯聊天数据,游戏交互数据保护等

如存储介质数据保护:磁盘内数据保护,数据库数据保护等

如智能终端数据保护:智能卡内数据保护等

五、问题

分组密码中有一个要求,明文的长度要等于固定值(DES/3DES为64bits,AES为128bits),对于长度大于固定值得数据,我们可以将其分割为对应的长度,但明文数据长度不能够整除时该如何处理剩余部分的数据呢?

或许我们需要有一种方法,使明文数据的长度满足我们的需求

注:

1、在现代密码学中,一般使用alice和bob分别指代通信双方,Oscar指代恶意第三方

2、在量子密码中,由于量子通信的特性,OTP或许会有新的发展

3、宏思电子为国内主要的随机数生成器厂商

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论