密码学概述——精选推荐

阅读: 评论:0

密码学概述
为什么会有密码
在现代社会中,很多信息都存储在计算机⾥,这让信息的增删改查变得⾮常⽅便,信息可以通过多种⽅式传递给任何⼈。因此,保护好⾃⼰的秘密信息变得⾮常困难。为了解决这些问题,⼈们开发出形形⾊⾊的“密码技术”。
从密码、认证、应⽤技术三⽅⾯介绍。
⼀、密码
⾸先看⼀下历史上著名的密码,第⼀个是恺撒密码,恺撒密码是将明⽂中所使⽤的字母表按照⼀定位数平移得到密⽂。在我们得到⼀串密⽂之后,可通过穷举的⽅式进⾏暴⼒破解,因为恺撒密码的密钥空间为 26,很容易被破解出来。
Enjoy it while it lasts  平移三位得到密⽂
e->H  n->Q  j->M  o->R  y->B  i->L  w->Z  h->K  l->O  t->W  a->D s->V
HQMRB LW ZKLOH LW ODVWV
还有简单替换密码,是将明⽂中所使⽤的字母表替换为另⼀套字母表。
Enjoy it while it lasts  ->  XNVBK JQ CTJGX JQ GWLQL
对应关系是不定的,所以如果⽤暴⼒破解的话,密钥空间为 26*25*.. 即使每秒遍历 10 亿个密钥,也要遍历 120 亿年,所以极难破解。但是使⽤频率分析法破解就⾮常容易,统计密⽂中字符出现的频率,从其他样⽂中寻规律,⽐如⼀篇⽂章出现最多的字符是e,就可把密⽂中出现最多的字符替换为e。⽂中经常会出现 is  the this 这样的字眼,根据这些规律进⾏替换尝试。密⽂越长的话越容易被破解。
以上可知加密算法应要保证密钥空间强度,密⽂及密钥也不应有⼀定规律。
1、对称密码
对称密码⼜称共享密码,加密和解密密钥相同。
1.1、⼀次性密码本
⼀次性密码本是将明⽂与⼀串随机的⽐特序列进⾏异或运算得到密⽂。明⽂的⽐特序列与⼀串随机的⽐特序列进⾏异或运算得到密⽂,密⽂再与密钥进⾏异或运算得到明⽂。
⼀次性密码
⼀次性密码本为什么没有被使⽤,主要有以下⼏点:
1. 密钥如何发送给对⽅?
在⼀次性密码本中,密钥和原⽂是⼀样长度的,试想如果有办法能把密⽂安全的送达到对⽅,那么是否可以⽤这种⽅法把明⽂送达到对⽅呢?所以这是⼀个⽭盾的问题。
2. 密钥保存是⼀个问题
⼀次性密码本的密钥长度和原⽂⼀样长,密钥不能删除也不能丢弃。丢弃了密钥相当于丢弃了明⽂。所以“加密保护明⽂”的问题被转换成了“如何安全的保护和明⽂⼀样长度的密钥”的问题,实际上问题还是没有解决。
3. 密钥⽆法重⽤
如果加密的原⽂很长,那么密钥也要相同长度,并且密钥每次还要不同,因为如果是相同的,密钥⼀旦泄露以后,过去所有⽤这个密钥进⾏加密的原⽂全部都会被破译。
4. 密钥同步难
如果密钥每次都变化,那么密钥如何同步也是⼀个问题。密钥在传递过程中不能有任何错位,如果错位,从错位的那⼀位开始之后的每⼀位都⽆法解密。
5. 密钥⽣成难
⼀次性密码本想要真正的永远⽆法破解,就需要⽣成⼤量的真正的随机数,不能是计算机⽣成的伪随机数。
1.2、DES
DES (Data Encryption Standard) 是 1977 年美国联邦信息处理标准(FIPS)中所采⽤的⼀种对称密码(FIPS 46-3)。DES ⼀直以来被美国以及其他国家的政府和银⾏所使⽤。
1997 年 DES Challenge I ⽐赛中⽤了 96 天破解了 DES 密钥,1998 年的 DES Challenge II-1 ⽐赛中⽤了 41 天就破解了密钥。1998 年的 DES Challenge II-2 ⽐赛中⽤了 56 个⼩时,1999 年的 DES Challenge III ⽐赛中只⽤了 22 ⼩时 15 分钟。⽬前来说,DES 已经不再安全了。除了⽤来解密以前⽼的 DES 密⽂以外,不再使⽤ DES 进⾏加密了。
DES 是⼀种把 64 位明⽂加密成 64 位密⽂的对称加密算法。它的密钥长度为 64 ⽐特,但是除去每 7 个⼆进制位会设置⼀个⽤于错误检测的位以外,实际上密钥为 56 ⽐特。DES 会以 64 个⼆进制为⼀个分组进⾏加密。以分组为单位进⾏处理的密码算法成为分组密码。
DES 加密的基本结构是 Feistel ⽹络、Feistel 结构、Feistel 密码,这个结构不仅仅⽤在 DES 中,还
⽤在其他的加密算法中。
在 Feistel ⽹络中,加密的各个步骤称为轮(round),整个加密过程就是若⼲次轮的循环。DES 是⼀种 16 轮循环的 Feistel ⽹络。
64 位的输⼊被分为左右两侧的输⼊,右侧的 32 位直接向下得到右侧的数据,右侧数据和⼦密钥通过轮函数⽣成⼀串随机的⽐特序列,此串⽐特
序列和左侧32位输⼊进⾏异或运算得到左侧密⽂。
Feistel结构
⼀轮加密之后可以看到,左侧数据被加密了,右侧并没有,所以第⼆轮时左右两侧交换数据再次执⾏上图的步骤。
⼀个 3 轮的 Feistel ⽹络。3 轮⽹络有 3 个⼦密钥和 3 个轮函数,中间有 2 次左右对调的过程。注意:n 轮 Feistel ⽹络只交换 n-1 次,最后⼀次不⽤交换。
Feistel ⽹络的特点
加密的时候⽆论使⽤任何函数作为轮函数都可以正确的解密,⽆须担⼼⽆法解密。就算轮函数输出的结果⽆法逆向计算出输⼊的值也⽆须担⼼。Feistel ⽹络把加密算法中核⼼的加密本质封装成了这个轮函数,设计算法的⼈把所有的⼼思放在把轮函数设计的尽量负责即可。
加密和解密可以⽤完全相同的结构来实现。虽然每⼀轮只加密了⼀半的明⽂,放弃了加密效率,但是获得了可以⽤相同结构来实现,对于加密硬件设备设计也变得更加容易。
加解密
由于 Feistel ⽹络的这些优点,所以很多分组密码选择了它。⽐如 AES 候选算法中的 MARS、RC6、Twofish。不过最终 AES 定下的Rijndael 算法并没有选择它,⽽是选择的 SPN ⽹络。
1.3、三重DES
三重 DES (triple-DES) 是为了增加 DES 强度,所以将 DES 重复 3 次得到的⼀种算法。也称为 TDEA (Triple Data Encryption Algorithm),通常缩写为 3DES。使⽤加密、解密、加密的步骤是为了兼容 DES,当三个密钥相同时就是普通的 DES 加密。
3DES
3DES 由于处理速度不⾼,除了兼容之前的 DES 以外,⽬前基本不再使⽤它了。
1.4、AES
AES (Advanced Encrytion Standard) 是取代前任标准 DES ⽽成为新标准的⼀种对称密码算法。在全世界的范围内征集 AES 加密算法,最终于 2000 年从候选中选出了 Rijndael 算法,确定它为新的 AES。
1997 年开始征集 AES,1998 年满⾜条件并最终进⼊评审的有 15 个算法:CAST-256、Crypton、DEAL、DFC、E2、Frog、HPC、
LOK197、Magenta、MARS、RC6、Rijndael、SAFER+、Serpent、Twofish。2000 年 10 ⽉ 2 ⽇,Rijndael 并定位 AES 标准。AES 可以免费的使⽤。
Rijndael 的分组长度和密钥长度可以分别以 32 位⽐特为单位在 128 ⽐特到 256 ⽐特的范围内进⾏选择。不过在 AES 的规范中,分组长度被固定在 128 ⽐特,密钥长度只有 128、192 和 256 ⽐特三种。
AES 的加密也是由多个轮组成的,分为 4 轮,SubBytes、ShiftRows、MixColumns、AddRoundKey 这 4 步,即 SPN ⽹络。⼀般要进⾏10-14轮运算。
以 128 位分组长度为例,第⼀步字节替换,将 16 个字节依次和 s-box ⾥⾯的字节按照索引进⾏替换得到新的矩阵,第⼆步是⾏移位,除了第⼀⾏,其他⾏依次左移不同位数,第三部是列的矩阵相乘,最后⼀步是每⼀个字节和轮密钥进⾏异或运算,这是整个⼀轮的步骤。
1.5、分组模式
由于 DES 和 AES ⼀次加密都只能加密固定长度的明⽂,如果需要加密任意长度的明⽂,就需要对分组密码进⾏迭代,⽽分组密码的迭代⽅式就称为分组密码的“模式”。
分组密码有很多模式,如果模式选择的不恰当就⽆法充分保障机密性。
分组密码(block cipher) 是每次只能处理特定长度的⼀块数据的⼀类密码算法,这⾥的“⼀块”被称为分组。⼀个分组的⽐特数称为分组长度。例如 DES 和 3DES 的分组长度都是 64 位。AES 分组长度为 128 位。分组密码处理完⼀个分组以后就结束,不需要记录额外的状态。
分组模式:ECB  CBC CFB OFB CTR XTS
ECB 模式是分组模式⾥⾯最简单的,也是最没有安全性的。所以使⽤的⼈很少。
ECB 模式全称“Electronic CodeBook”模式,在 ECB 模式中,将明⽂分组加密之后的结果直接就是密⽂分组,中间不做任何的变换。攻击者可以很容易的分析密⽂中的规律进⾏破解,即使不知道密钥,攻击者也可将密⽂分组进⾏顺序交换,从⽽使接收者获取不到正确的数据。
CBC 模式的全称是 Cipher Block Chaining 模式,密⽂分组链接模式。名字中也展⽰它的实质,像链
条⼀样相互链接在⼀起。有⼀个随机的初始化向量 IV ,初始化向量⾸先和明⽂分组1进⾏异或运算,在进⾏加密,得到密⽂分组1,密⽂分组1和明⽂分组2进⾏异或,再进⾏加密得到密⽂分组2,依次执⾏。

本文发布于:2023-05-05 22:20:20,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/88898.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:密钥   分组   加密
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图