密码安全之古典密码、对称密码

密码安全(2019.11.19)

阅读前推荐观看我之前做的分类图URL:https://blog.csdn.net/qq_26139045/article/details/103113818

密码算法

密码学可以分为古典密码学和现代密码学。其中现代密码学的出现于一个熟悉的人脱不了关系,他就是香农了,绝对的大佬。

古典密码于现代密码的区别之处,我认为就是古典密码是依赖于加密算法的精心设计和保密性,而现代密码这是公开了加密所用的算法,注重的是对密钥的保密。两者的侧重点不同,一个在算法的保密上,另一个则是在密钥的保密上。而将现代密码在以密钥细分就会分为,对称加密和非对称加密。所谓的对称加密,就是加密时和解密时的密钥是一样的;而非对称加密则是加密密钥和解密密钥不同,在我看来就目前而言,似乎非对称加密会使用更多,最近经常看到的RSA就是一种非对称加密方法,只可惜还没有搞明白RSA。

古典密码

置换密码

所谓置换密码真的就只是置换,把明文通过一些方法排列,然后按你想要的方向或者顺序读出,就成为一个密文。这是一种比较简单的加密方式。正是由于这种方法过于简单,所以它禁不起穷举的,是可以进行爆破的。置换密码可能是先排矩阵再按列读取,也有可能会使用密钥,但是这里的密钥只是为了助记,与现代密码的密钥大不相同。通过密钥去除重复字母后,按字典序编号,然后按编号读出相应的列,实现加密。

例如:明文:this is transposition cipher

密钥:password

数字序列:4167352

密文:hath ts iiphtripsocin iessor

注意!!!密文要写的与明文格式相同。

thisjst
ranspos
itionei
pher

替代密码

说到替代密码,大家最熟悉的可能就是凯撒密码。替代密码是利用了替代法进行加密的,通过将明文中的字符使用其他的字符替代后形成密文。

它还有很多类型,比如单表替代密码,多明码替代密码,多字母替代密码,多表替代密码。凯撒加密就是单表替代密码了,所有的字母都是相同的偏移量,所以凯撒是可以被轻易的破解的,直接暴力破解,CTFCracker就可以实现凯撒爆破。而多表替代密码就提高了破解的难度,像维吉尼亚密码、希尔密码,一次一密钥密码、Playfair密码等等,由于使用了多个替换表,情况更加复杂,爆破难度就蹭蹭蹭上去。

在我看来维吉尼亚其实就是凯撒的加强版,只不过是每个字符都有自己独特的偏移量了,不在如凯撒一样统一偏移量,所以对于破解而言就提高难度了。

加密:Ci=(Mi+Ki)mod26

解密就是i一个逆过程,Mi=(Ki-Ci)mod26

例如密钥可能为:cipher即(3,9,16,8,5,18)

明文 :this is substitution cipher

密文:vpxz mj ucqzxzvcipse eqeoii

对称密码

对称密码可以分为分组密码和序列密码。分组密码是以一个固定大小作为每次处理的基本单元,而序列密码则是以一个单位元素(通常是一个字母或一个比特)作为基本的处理单元。当分组长度等于单位长度的是否,分组密码也就是序列密码,所以你可以这样理解,序列密码是分组密码中特殊的一种情况,即分组长=单位长。

分组密码的常用工作模式:

1、电子密码本(ECB)

最简单的加密模式即电子密码本模式,将加密的消息按照密码块的块大小分为数块,对每一块进行独立加密。

优点:实现简单、效率高;有利于并行计算;误差不会被传送。

缺点:不能隐藏明文的模式,相同的明文会产生相同的密文;可能对明文进行主动攻击,比如说黑客可以通过获取账号对应的密文段,进行密文段替换,成功实施ECB重放攻击

2、密码块链接(CBC)

在CBC模式下,每个密文块先要与前一个密文进行异或,然后再加密,所以它高度依赖于上一个密文块,这就对数据完整性要求很高。因为第一个明文没有上一个密文,所以就要引入一个初始化矢量(IV)。

优点:不易被主动攻击,这也是得益于它的这种像串行的机密模式,安全性高于ECB,适合传输长度较长的报文,是目前SSL和IPSec安全协议的应用标准。

缺点:不利于并行计算;有误差传输效应;需要维护初始化矢量IV。

3、密文反馈(CFB)

密文反馈模式我觉得和CBC非常相似,区别上我觉得就是,一个先异或,一个后异或,它把上一个密文进行分组密码加密,然后再和明文进行异或。与CBC一样,也需要一开始引入一个初始化矢量。

优点:隐藏了明文模式;分组密码转化为流模式,增强了安全强度;可以及时加密传送小于分组的数据。

缺点:不利于并行运算;存在误差传送效应,即一个明文单元受损可以影响多个单元;需要维护一个IV。

分组密码包括DES、IDEA、SAFER、Blowfish和Skipjack等等,最新国际标准算法是AES,以前使用的是DES/3DES算法。分组密码的一个核心变换——Feistel结构。大多数分组密码的结构本质上都是基于Feistel网格结构,所以这是一个很重要的地方。

Feistel网络的安全性与一下参数有关。

(1)分组大小

(2)密钥大小

(3)子密钥产生算法:该算法复杂性越高,则密码分析越困难

(4)轮数n:单轮结构远不足以保证安全,一般轮数选取16

(5)轮函数F:结构越复杂越难分析

分组加密算法DES

DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。明文按64bit进行分组,密钥长64bit。

DES算法具有极高的安全性,到日前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。但是随着计算处理能力的提升,为了克服DES密钥空间小的缺陷,研究人员提出了三重DES的变形方式,即采用了两个密钥共128bit长度,仅加大了穷举密钥的计算复杂度。

分组加密标准AES

AES算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES使用几种不同的方法来执行排列和置换运算。AES是一个迭代的、对称的密钥分组的密码,它可以使用128、192、256位密钥,并且通过128bit分组加密或解密数据,既然是对称加密,所以它使用相同的密钥进行加密解密。迭代加密时就要使用一个循环结构,在循环中重复置换和替换输入数据。

序列密码

序列密码是一个随时间变化的加密变换,具有转换速度快、低错误传播的有点,硬件实现电路简单,缺点是有低扩散、插入或修改等不敏感性。
目前序列密码研究成果没有完全公开,因为序列密码更多应用于外交和军事部门等机密部门。目前公开的序列密码算法有RC4、SEAL等。 说到序列密码必须说一次一密,如果序列密码所使用的是真正随机方式的、与消息流长度相同的密钥流,那么这个序列密码就是一次一密的密码体制(One-Time Password)。

至于序列密码加密和解密,加密过程大概就是密钥K通过密钥流生成器生成密钥流,使用密钥流和明文进行异或运算得到密文;解密过程这是使用密钥K通过密钥生成器生成密钥流,在用密钥流和密文进行异或得到明文。

注:密钥流生成器的核心是一个伪随机数发生器,而密钥K为该随机数发生器的种子。应用最广的随机数发生器为线性反馈一位寄存器(LFSR)。当LFSR周期无限长即可形成OTP一次一密系统,OPT是一种理想的安全流密码体制。

一次一密系统应用目前面临的挑战:

1、密钥配送问题,OTP的密钥长度和明文长度相同,若能把密钥安全有效地发生出去,那还加什么密呢??

2、密钥的保存问题,OTP把保存明文问题转化为保存于明文等长的密钥问题

3、密钥的复用:OTP不能使用过去用过的随机比特序列,否则就会泄露之前的通讯内容,这也叫前向安全。

4、密钥的同步,明文很长的时候,密钥也会一样长,在同步密钥的过程中一旦出现错误,后续通讯就无法解密,有时也被称为后向安全。

5、密钥的生成问题,OTP需要生成大量的随机数,而我们目前只能使用计算机生成伪随机数来暂时替代,凯撒伪随机数终究不是随机数,无法满足需求,而想要无重现性的真正随机数生成的难度极大。

流密码的安全性主要依赖于主控密钥K的保密性和密钥流发生器的可靠性。密钥序列产生算法最为关键,其生成的密钥必须具备伪随机性,至于什么是伪随机性,就留给大家自行百度了。序列密码的安全性确实高,加密速度也快,实时性好,就是过于要求同步,要实现严格同步,需要付出很高的代价。

RC4序列密码

RC4由RSA Security的Ron Rivest在1987年设计的一种高速简洁的流密码,被广泛用于常用协议,比如无线网络安全算法、SSL/TLS、HTTPS等安全协议。RC4加密分为两步:

1、Key-Scheduling Algorithm(KSA)密钥调度算法,采用可变长度的加密密钥产生密钥流生成器的初始状态。

2、Pseudo-Random Generation Algorithm(PRGA)伪随机子密码生成算法,根据初始状态生成密码流,并于明文进行相异或产生密文。

RC4采用的是XOR运算,一旦子密码序列出现了重复,密文就有可能被破解。存在部分弱密钥,是子密序列在不到100B内就出现重复。那么就可能在10万字节内就发生完全重复风险。所以在使用RC4算法时候,必须对加密密钥进行安全测试,避免出现弱密钥问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值