《图解密码技术》[02] 对称密码

所谓对称密码,是指在加密和解密时使用的都是同一密钥,比如之前提到的恺撒密码。而非对称密码,也称之为公钥密码,是指在加密和解密时使用不同密钥的方式。

本章会主要介绍几种对称密码,如DES、三重DES、AES等,在这之前,要先了解一下什么是比特序列运算。

1、比特序列运算

在这之前,我们先来看一个异或运算(不同取1,相同取0),假如有二进制数01001100为A,10101010为B,则两者异或结果为C:

  1. A 0100 1100
  2. B 1010 1010
  3. C 1110 0110

将异或的结果C和B再进行异或运算,结果又会变回A:

  1. C 1110 0110
  2. B 1010 1010
  3. A 0100 1100

上面的计算,就和加解密的步骤非常相似:

  • A是明文,B是密钥,C是密文
  • 发送者将A通过密钥B加密得到C,接收者将收到的C通过密钥B解密得到A

而我们知道,计算机的操作对象并不是文字,而是由0和1排列组成的比特序列。所以加密的过程,实际上就是将表示明文的比特序列,转换为表示密文的比特序列

由于同一个比特序列进行两次异或运算后会回到最初的状态,不妨来一个由很多点组成的图像“字母D”,如下图,白点作为0,黑点作为1:

由此看到,这里使用的蒙版就是一个比特序列,使用异或运算将原来的图像进行了掩盖。 当然,这里只是为了形象地表示,实际上在计算机中,图片虽然也是0和1的序列,但并不是按如上使用0和1进行类似像素描点来展示的。但不论如何我们已经知道,数据可以通过一个随机的比特序列进行异或运算,达到加密的目的。


2、DES

Data Encryption Standard 是1977年美国联邦信息处理标准中采用的一种对称密码,但是随着计算机的进步,DES已经能够在数小时能被暴力破解,所以我们现在也不应该再使用DES了。

DES是一种将64比特的明文加密成64比特的密文的对称密码算法,这里的64比特的单位成为分组。DES的密钥长度为56比特,另外还有7比特用于设置错误检查。由于其基本结构是由Horst Feistel设计,因此也称为Feistel网络

2.1 Feistel网络的加密

Feistel网络中,加密的各个步骤称之为“轮”,整个加密过程就是进行若干次轮循环。

Feistel网络中,每一轮都需要使用不同的密钥,因为它只是一个局部密钥,所以称为子密钥。加密算法如上图,明文被分为左侧和右侧两部分,轮函数根据右侧数据和子密钥,计算出一串比特序列,用该序列和左侧数据进行异或运算,作为加密后的左侧数据。

但这样一来右侧根本就没有加密,所以在下一轮需要将左右侧数据对调,再换一个子密钥继续进行加密,说白了,就是把之前没加密的右侧数据也加密。每轮处理32比特,最后一轮结束后不需要对调。

如下图加密96比特明文,即进行三轮加密:

2.2 Feistel网络的解密

不论轮函数具体是什么,根据异或运算的特性,Feistel网络的解密,只需要把每轮加密的结果使用相同的子密钥重新运算一次,即可还原为明文,如下图:

2.3 Feistel网络的性质

  • 无论使用任何轮函数都可以正确解密
  • 加密和解密可以用完全相同的结构来实现,只是循环次数不同

2.4 三重DES

三重DES就是将DES重复三次得到的一种密码算法,通常缩写为3DES。它的加密机制如下图所示:

由于DES密钥长度为56比特,所以三重DES的密钥长度则为56*3=168比特。

从上图我们可以看出,3DES并不是进行三次加密,而是进行了加密、解密、加密。这里加入解密是为了兼容原来的DES,将三重加密都使用相同密钥,那么在加密和解密后得到的还是明文,再进行第三次加密,即和原来的DES效果相同。因此,以前DES加密的秘闻,也可以通过3DES解密。

  • 如果所有密钥都相同,则结果和普通的DES等价
  • 如果密钥1、3相同,2不同,则称为DES-EDE2
  • 密钥完全不同,则称为DES-EDE3

3DES的解密过程和加密过程正好相反,是以密钥3、2、1的顺序执行 “解密、加密、解密” 的操作。

尽管3DES目前还被银行等机构使用,但是其处理速度不高,且安全性方面也逐渐显现了一些问题。


3、AES

DES的安全性逐渐出现了一些问题,自然就出现了取代它的 Advanced Encryption Standard,这种加密算法是从众多候选算法中评选出的名为Rijndael的对称密码算法,确定其成为AES。Rijndael没有使用Feistel网络,而是使用了SPN结构。

DES的分组是64比特,而Rijndael的分组则是128比特,也就是16字节,它的算法首先需要逐个字节地进行SubBytes处理,所谓SubBytes,即以每个字节的值(0~255中任意值)为索引,从一张拥有256个值得替换表中找出对应值的处理,也就是说,把一个1字节的值替换为另一个1字节的值,这类似于简单替换密码,不过是256个字母的版本。

SubBytes之后要进行ShiftRows处理,即将SubBytes的输出以字节为单位进行打乱,这种打乱是有规律的。ShiftRows之后进行MixColumns处理,即对一个4字节的值进行比特运算,将其变为另一个4字节值。

最后,将MixColumns的输出与轮密钥进行异或运算(Rijndael算法也是和Feistel一样是采取轮的),即进行AddRoundKey,到这里,Rijndael的一轮就结束了。实际上,在Rijndael中需要重复进行10~14轮计算。这种算法和之前的Feistel相比,因为输入的所有比特都会被加密,而不是每轮只加密一半,所以优势在于加密所需要的轮数更少。

小结一下加密过程就是:

  • SubBytes:16个字节,每个字节进行替换表替换
  • ShiftRows:平移行(有规律平移,如下图,第一个字节移动到对应MixColumns的第一个字节,第二个字节对应第二个MixColumns的第二个字节,第三个对应第三个MixColumns的第三个,以此类推)
  • MixColumns:对每4字节进行比特运算,变成另外的4字节值
  • AddRoundKey:与轮密钥进行异或运算

解密过程则分别存在反向运算InvSubBytes、InvShiftRows、InvMixColumns,这是因为Rijndale不像Feistel网络一样可以使用同种结构实现加密和解密。

在书中提到,Rijndael还没有出现针对性的有效攻击,但因其背后有着严谨的数学结构,从明文到密文的计算过程可以全部用公式表达,意味着能够通过数学方法进行破译,这为新的攻击方式产生了可能。

尽管作者提到DES已能在数小时内破译,但可能涉于篇幅对于DES也没有案例进行破译讲解。所以DES和AES这部分的知识点大概也就这样理解吧,了解就行。核心还是在于对称密码的特点,即加密和解密使用相同的密钥,这里的两个算法都涉及以异或运算作为基础。

时间: 2024-10-26 21:35:04

《图解密码技术》[02] 对称密码的相关文章

《图解密码技术》——记录1

[MENU] 主要角色 名称 说明 Alice 一般角色 Bob 一般角色 Eve 窃听者,可窃听通讯内容 Mallory 主动攻击者,可妨碍通信.伪造消息等 Trent 可信的第三方 Victor 验证者 关键词 加密前的消息称为明文,加密后的消息称为密文. 对称密码是指在加密和解密时使用同一密钥的方式. 对称密码的别名:公共密钥密码.传统密码.私钥密码.共享密钥密码等. 首次见到此书.读此书,是在学校的图书馆. 参考资料 图解密码技术,结城浩 著 原文地址:https://www.cnblo

图解密码技术一些笔记

因为明年的工作可能要涉及到加密的问题,所以要看一下加密方面,刚好之前对于web开发方面的加密,https也一直有疑问,于是就买了本图解密码技术来看看 1.如何保证数据只能单向解密: 比较流行的一个就是公钥和私钥,公钥负责加密,私钥负责解密,只要私钥没有被拿到,数据就不会被破解,比较流行的 就是RSA算法,公司项目也用过,不过当时搞不清公钥和私钥,迷迷糊糊的 2.如何保证收到的数据没有被修改过利用私钥加密,然后用公钥解密 这个就是数字签名,在发送给客户端的时候,除了原有的数据以外,还要再发送一个对

《图解密码技术》[01] 密码概述

<图解密码技术>(点击查看详情) 1.写在前面的话 因为接触了微信公众号开发,之中涉及支付功能时用到了大量签名加密之类的东西,对于密码安全这一块,其实一直不是很明白,大部分方法自己在用到时也是去直接google,然后复制粘贴,可以说完全不知其所以然. 加密这一块查了下有很多人推荐这本书,于是就决定看看.我个人涉及到真正的加密技术的实际应用可能不算那么多,所以这里笔记准备记录一些浅显和核心的东西. 2.加密和解密 发送信息和接受信息的过程中,因为传递过程涉及多方,可能会存在窃听者.就像你给别人写

《图解密码技术》-1.环游密码世界

1.对称密码和公钥密码 对称密码:是指在加密和解密时使用同一秘钥的方式 公钥密码:又称非对称加密,指在加密和解码时使用的不是用一秘钥的方式 2.混合密码系统 将对称密码和非对称密码结合起来的密码方式称为混合密码系统, 这种系统结合了对称加密和非对称加密的优势. 3.其他密码技术 1.单项散列函数:是一种保证完整性的密码技术. 2.消息认证码:消息认证码是一种能够保证完整性和提供认证的密码技术. 3.数字签名:能够防止伪装.篡改.和否认等威胁的技术. 4.伪随机数生成器:是一种能够模拟产生出随机数

阅《图解密码技术》一笔记1

1.密码保证了消息的机密性 2.密码算法:由将明文生成密文的加密算法和由密文解密成明文的解密算法组成. 密钥是密码算法中进行运算的key. 3.对称密码(symmetric cryptography):是指在加密和解密时使用同一密钥的方式. 4.公钥密码(public-key crypography):是指在加密和解密时使用不同密钥的方式.也称非对称密码(asymmetric cryptography) 5.其它密码技术 a.单向散列函数    ------>不保证机密性,保证完整性,用于检测数

《图解密码技术》-chaper1-概述

密码和信息安全常识:  (1)不要使用保密的密码算法.  (2)不要使用低强度密码算法.  (3)密码一定会被破解.  (4)密码只是信息安全的一部分.

《图解密码技术》Chapter4:分组密码的主要模式

Chapter4:分组密码的主要模式 ECB模式(Electronic CodeBook) CBC模式(Clipher Block Chainning) CFB模式(Cipher FeedBack) OFB模式(output-Feedback) CTR模式(CounTeR计数器模式) 0x01.ECB模式 将明文分组加密之后的结果将直接成为密文分组 对ECB模式进行*** 通过改变密文分组的顺序,相对应的明文分组的顺序也会被变动,***者无需破译密码就能够操纵明文. 0x02.CBC模式 -->

密码技术小总结

密码技术与编码技术不同,但现在很多人把两者的技术混在一起,但两者某些地方界限确实有些模糊.密码技术与信息隐藏也不同,密码技术是让你看得到但是看不懂,信息隐藏是让你看不到找不到 参考和查看更多内容推荐 本文只是简要总结 http://www.mamicode.com/info-detail-2252602.html https://blog.csdn.net/pdsu161530247/article/details/75667218 <码书 解码与编码的战争> <图解密码技术 第三版&g

深入理解密码技术

对称加密: DES DES是1977年美国联邦信息处理标准中使用的一种对称密码技术,曾今被美国和其他国家政府银行使用. 不过现在已被暴力破解,我们除了用它解密以前的密文外,已不再使用DES了.不过这里我们可以用它来了解下什么是对称加密. <!--more--> 加密和解密 DES是一种把64比特明文加密成64比特的密文的对称密码算法,密钥长度56位,其中每隔7比特有个错误检查比特.结果DES密钥总长度为64比特. 分组密码 DES以64比特明文为一个单位进行加密,这64比特单位称为分组.so,