密码学简单总结

对称密钥

一次性密码本

一次性密码本的本质是使用与原文相同长度的比特序列进行异或运算。那么针对这种一次密码本的对称密钥的加密方式,那么当被加密密文的长度达到一定长度后,他的密钥空间将会十分的庞大,所以如果使用密钥穷举的方式去对密钥进行穷举的话是十分困难的。

DES对称加密

DES是一种对称加密,它是一种将64比特的明文加密成64比特的密文的对称密钥算法

但是从本质上来说DES加密算法使用的密钥长度是56比特,因为每隔7位的密钥就会添加1位用于错误检查的比特。

如果要对长比特的明文进行加密,那么就需要迭代的进行上述的加密流程

DES的加加密结构

Feistel网络

从简单来说DES的加密结构就是将明文拆分为两个部分,然后交替执行相同的加密操作

就这样迭代执行16轮,最后得到DES的加密密文。因为DES的输入明文的长度是64比特,所以如果想要加密多长度的明文的时候就需要进行多轮次的DES加密操作。

三重DES

三重DES从他的加密流程上来看,其实与DES相差并不是很大,顾名思义,三重DES的主要流程就是加密-解密-加密,如果三次的操作流程都使用的是相同的密钥,那么就可以说它是DES-EDE3,如果说前后两次使用的是相同的密钥,中间的解密过程使用的是不同的密钥,那么就说他是DES-EDE2.三重加密过程慢,具有一定的安全性。但是相比于后面的AES加密算法来说还是有所逊色。

AES对称加密的密钥长度有128,192,256三种的密钥长度

应该使用哪种对称密码。

DES不应再应用与任何新的用途,随着计算机技术的进步,现在已经可以再现实的时间内完成对DES的破译。

AES安全快速,而且可以再各种平台上使用,所以AES是首选的算法

无论是DES,AES还是三重DES,它们的加密分组的输入都是加密算法的规定的。针对DES来说,它的加密明文的长度是64比特,AES有128,192,256三种方式的加密比特,还有三重DES,他的加密比特也是64比特,因为从本质上来说,三重DES并没有再算法上做出什么更新,只不过是将DES的加密和解密流程糅杂进其中并做出了一定程度上的改革。

分组密码的模式

分组密码的模式比较常用的就是CBC,CTR。

其实分组密码的模式的本质就是为了保证密文在被加密后不呈现出一定的规律性,所以就使用这种迭代的方式对加密后的密文进行相关的小操作,虽然分组的模式有很多种,但是从本质上来说,它们做的都是引入额外的变量参数来打乱相同密文被加密后呈现出的规律性。

经典的分组模式

ECB

这种模式就是不对加密后的密文进行扰乱操作,于是这就会导致若明文中有诸多的相同的信息在被加密后,这些相同的明文信息被加密后的密文虽然不能被攻击者知晓其中的秘密,但是从宏观上看,这些相同形式的密文,若能够被攻击者猜透其中的规律,那么这就引起十分巨大的安全隐患。

所以我们只要从本质上就可以得知分组模式的作用到底是什么东西。它只是一个扰乱加密后的密文的相关排序。所以我们只要到时候知道要使用什么样的分组模式后就可以了。比较茶常用的分组模式有,CTR,CBC

公钥密码

公钥密码的出现,其实从本质上来说解决了密钥分发的问题。因为非对称加密这种天然的加密特性使得有些情况下,信息的传递的安全可以得到保证。在未使用非对称加密之前,密钥的发放方式:

  1. 预共享密钥:这种方式虽然简单,但是随之而来的当通信双方的数量达到一定程度后,所需的预共享密钥的个数也就更加的多,这就使得预共享密钥的保管其实是十分的多的。所以,这就带来了预共享密钥的相关保存困难。
  2. 密钥分配中心,密钥分配中心事先将相关的用户密钥在该设施上进行保存,每次通信的时候,密钥分配中心随机生成对应的通信密钥,然后使用对应的用户密钥将临时密钥进行加密然后发送给通信双方.
  3. DH算法是一种十分不错的密钥交换方式
  4. 非对称加密的方式解决密钥配置问题

RSA的加解密的计算方式

密文=明文的E方 mod N

明文=密文的D方 mod N

其中N是两个大素数pq的乘积,利用pq我们最后可以计算出L,然后使用L我们可以计算出E和D,EN与DN组成了公钥和私钥,也是非对称加密中十分重要的一块内容。

这里对RSA的相关密钥的生成进行了简化,可以理解为下面的几个步骤:

先找到两个大素数pq--->使用pqda素数生成中间参数L--->利用中间参数L计算出E和D

若我们以攻击者的视角去看待RSA的加密流程,攻击者可以获取的参数是E,N以及加密后的密文,所以攻击者如果要进行内容的破解第一种方式就是利用RSA的加解密公式:

明文=密文的D方 mod N

攻击者已知密文,D以及N,那么它可以通过该计算公式去计算出明文,但是这个是一个数学难题,N是一个大素数,要想计算这个公式几乎是不可能的,这是基于离散对数的难解性的原理,所以如果从这个角度上出发想去破解密文可以说是不行的。

第二种方式就是利用E和D的计算公式去尝试获取被pq,从而通过计算最终获取E和D

那么这种方式是否可行?毫无疑问是不行的,这就涉及到大素数的难分解性。因为大素数的难分解,所以通过这种方式想要去破解RSA的相关私钥也是不可能的

还有第三种方式就是进行穷举的攻击,通过穷举D,也是穷举私钥来不断地进行测试是否该私钥为最终的私钥

中间人攻击,攻击者通过伪装中间人,向目的对象发送自己的公钥,从而截获到目标的加密信息

RSA普遍使用的长度是2048,且密钥的长度指的是模运算的长度,也就是N的长度

高强度的混合密码系统

使用较为随机的伪随机数生成器

使用高强度的对称密码

使用高强度的公钥密码

平衡对称和非对称的密码长度

单向散列函数的几种特性

根据任意的长度小心计算出固定长度的散列值

能够快速计算出散列值

微小的消息改变将会导致巨大散列值的改变

抗碰撞性:抗碰撞性指的是几乎所有的消息经过单向散列函数进行计算之后都有自己独一无二的输出。

单项散列函数的实际应用

保证相关文件未被修改

基于口令的加密,使用单向散列函数加盐的方式就可以保证密码的存储不被轻易的泄露出去

消息认证码,通过将共享密钥与信息的结合后计算出来的散列值,因为对称密钥是相同的

所以只要这种对称密钥+消息+单向散列函数的这种组合,我们就可以知道消息的对端是知道对称密钥的那个人,所以就可以确认该信息的来源

数字签名,数字签名是一个应用十分广泛的一个东西,主要的应用在于数字证书中,CA通过对证书中某些内容进行单向散列函数的计算,然后得出散列值,然后在使用自己的私钥对其进行数字签名,当接收者接收到签名后的数字证书后,就使用CA的公钥将加密后的散列值解密,最后在使用相同的方式进行单向散列函数的计算,如果最后计算出来的数值是相同的,那么就说明该证书的来源是正确的。

伪随机数生成器

一次性口令

单向散列函数的攻击

利用单向散列函数的弱抗碰撞性来产生相对应的相同散列值的不同信息,比如给我一百块的单向散列值是100,而给我一千块的单向散列函数值也是100,那么当对端接受到这个单向散列值进行验证发现信息是没有被修改的,但是从信息的含义上来看已经发生了十分巨大的变化,所以单向散列函数会存在这种方式的攻击

单向散列函数的问题:

单向散列函数虽然可以保证文件的正确性,但是我们还必须保证信息的来源是正确的,单向散列函数是无法做到这一点的。对称加密中使用的对称密钥虽然可以保证通信双方的来源正确,但是它也有些克服不了的缺点,其中的一个缺点就是密钥的分发问题,第二个缺点就是对称加密的这种方式不具备不可否认性,也就是说第三方无法确定该信息的的发送者,因为密钥是在双方约定的,默认情况下,双方是互相相信的,所以这就使得当某一方发送了虚假的信息后,另一方是完全可以捏造说虚假信息不是自己发送的,而是对端发送的,那么这就造成了其中一个十分致命的问题。那么公钥加密下是否能够解决了一定的问题吗?其实也不然,对称密钥虽然可以解决密钥分发的安全性,但是它却无法保证该非对称加密密钥来源的正确性,所以这也是一个十分棘手的问题。

也就是说,书写到现在这个地方的时候,我们依然无法解决数据通信中的安全通信,那么我们到目前为止解决了哪些问题?

  1. 对称加密保证了在拥有相同密钥的情况下,通信双方的信息传递的安全性,但是对称加密没有办法去分发对称密钥。
  2. 非对称加密虽然可以利用他的特性完成对称密钥的发放,但是它却无法保证公钥的真实性,所以使用者在使用公钥的时候,很可能使用的是错误的公钥,那么这就导致使用公钥加密后的信息很可能落入攻击者的手中

非对称和对称的加密体系的组合下可以完成一个比较成型的安全的数据通信结构,几个缺点就是这种混合体系的组合无法保证数据为被篡改,所以这就使得错误的数据发送到对端之后可能会浪费时间去计算相关的错误信息,同时还有可能因为攻击者的精心设置微妙篡改,使得篡改后的信息可以被对称密钥解密出来,而且还是篡改者设计好的信息,这就造成了十分大的危害,而且非对称加密的体系有种十分明显的缺点就是无法保证公钥来源的正确性,所以虽然这种混合的加密结构可以说有一定的雏形,但是从本质上来说,还是不够完善。

  1. 单向散列函数主要解决的问题是可以保证数据没有被篡改,在数据通信中起到的作用也仅仅只有这个了,如果将它加入到上述的混合加密体系中,那么就上面的加密体系中的缺点就只有公钥的不确定性的问题了。

消息认证码

MAC,消息认证码

其本质的工作原理是使用密钥和消息进行单向散列函数的组合,最终求解出MAC值,因为双方都持有相同的预共享密钥,所以以这种方式进行验证可以很好的保证了信息的认证性,来源的正确性。所以如果在上述的混合加密体系中使用MAC消息认证码,那么一方面可以保证数据的完整性,同时也可以保证数据来源的正确性,只要在数据传输的过程中将MAC附加在加密信息的尾部,那么当对端接受到该组合后的信息的时候,将加密信息进行解密,然后明文信息与预共享密钥进行hash函数的计算,当计算出来的MAC和发送过来的MAC是相同的,那么就说明了数据来源的正确性,以及数据的完整性。

当然对称加密中的密钥分发的可以依靠多种方式进行,如果DH算法,密钥分发中心,其实本质上是使用其他的相关机构来完成密钥分发的职能。像TLS中就使用到了DH算法和非对称加密来进行对称密钥的生成。

IPsec中就使用到了MAC进行相关的预共享密钥+消息的方式进行消息源的确认以及信息完整性的确认。

消息认证码从本质上来说是一个使用十分广泛的东西,它既然

Encrypt then MAC

Encrypt and MAC

MAC then Encrypt

GCM的本质是利用了AES的分组模式来产生与HASH函数相同的效果,同时在AES的

这种加密多轮的函数迭代后,最后产生的数据也具有数据来源的验证功能。

HMAC,即使用HASH函数进行的MAC信息码的实现

AES-CMAC,即使用AES的某个分组模式实现的MAC的生成

GMAC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mllllk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值