加密二 加密算法使用场景以及HTTPS加密机制

加密二 加密算法使用场景以及HTTPS加密机制,第1张

上一篇文章主要向大家介绍了三种加密算法和它们的特点,这篇文章作为上一篇文章的续就来讲讲它们的应用场景,也顺带着讲一下HTTPS相对于HTTP的安全性是做了哪些防护。

首先假定一个场景,应用的开发需要加密大量的数据,且要密钥需要在使用过程中传输。在这种情况下使用非对称加密能够保证分发密钥的安全性,因为只需要将公钥分发给用户,私钥保存在自己手里,只要不被盗窃走或者被破解是没有问题的。但是别忘了,这里的要求是对大量的数据进行加密,这种情况下使用非对称加密会使得加密的时间变得漫长,所以这里显然是不适合非对称加密的。再来看看对称加密,速度加快了,这很好,但是别忘了密钥传输的问题,一旦密钥在传输过程中被截取,数据的安全性也无从谈起了,这就必须专门安排安全的信道给密钥,似乎也不是一个很好的方法。

这个情况下不同解密算法的灵活结合就成了更为合理的解决方式。数字信封这种结合的一个优秀典范。数字信封采用对称加密算法加密数据,非对称加密算法加密对称密钥的方式解决了以上的问题,也适用于一些其他的加密场景。以下是其示意图。

SSL(Secure Sockets Layer)协议是HTTPS协议的安全性基石,相较于HTTP,HTTPS正是加入了SSL层来确保数据传输的安全性。以下通过模拟几种数据传输过程来了解SSL协议。

客户端 >>>> 服务器:你好!

服务器 >>>> 客户端:你好!这是我们传输过程中需要的公钥{公钥|RSA}

客户端 >>>> 服务器:收到公钥,让我们来验证一下,这是我加密的一个随机数,解出来给我看看。{加密过的随机数}[公钥|RSA]

服务器 >>>> 客户端:{解密过的随机数}[私钥|RSA]

客户端 >>>> 服务器:验证成功,这是我的账号和密码,给我看看我的私密日记{用户名,密码}[公钥|RSA]

服务器 >>>> 客户端:{我喜欢xxx}[私钥|RSA]

这种加密方式粗看起来没有问题,数据都是加密后再传输,但是仔细想想,似乎有很大的问题。首先回忆一下,RSA的公钥是共享的,一旦数据在传输过程中被抓取,再通过公开的公钥进行解密,数据的安全性就不能得到保障了。在数据传输过程中,单独使用非对称加密似乎是不可靠的,这种情况下上面介绍的数组信封就起作用了。

<pre><code>

客户端>>>>服务器:你好!

服务器>>>>客户端:你好!这是我们传输过程中需要的公钥{公钥|RSA}

客户端>>>>服务器:收到公钥,让我们来验证一下,这是我加密的一个随机数,解出来给我看看。{加密过的随机数}[公钥|RSA]

服务器>>>>客户端:{解密过的随机数}[私钥|RSA]

客户端>>>>服务器:验证成功,这是数据传输过程中需要用到的对称密钥,{对称密钥}[公钥|RSA]

服务器>>>>客户端:{收到密钥}[密钥|AES]

客户端>>>>服务器:这是我的银行卡号和密码,给我查查余额{卡号,密码}[密钥|AES]

服务器>>>>客户端:{你的银行卡余额,五毛}[密钥}|AES]

</code></pre>

相比Round1,Round2的数据传输的安全性得到了保障,只要不发生密钥被盗或者破解,就不会出现数据安全问题,但是这样就真的安全了吗?来看看Round3。

<pre><code>客户端>>>>黑 客:你好!

黑 客>>>>客户端:你好!这是我们传输过程中需要的公钥{公钥|RSA}

客户端>>>>黑 客:收到公钥,让我们来验证一下,这是我加密的一个随机数,解出来给我看看。{加密过的随机数}[公钥|RSA]

黑 客>>>>客户端:{解密过的随机数}[私钥|RSA]

客户端>>>>黑 客:验证成功,这是数据传输过程中需要用到的对称密钥,{对称密钥}[公钥|RSA]

黑 客>>>>客户端:{收到密钥}[密钥|AES]

客户端>>>>黑 客:这是我的银行卡号和密码,给我查查余额{卡号,密码}[密钥|AES]

黑 客>>>>客户端:嘿嘿,你上当了</code></pre>

所以在实际的数据传输中存在一个问题,当前的服务器真的是真正的服务器吗?怎么才能确定这个服务器的身份?这个时候,数字证书的作用就显现出来了。大家都知道,使用HTTPS需要申请数字证书,这个证书是保证HTTPS安全数据传输的基石。这个证书就是SSL证书,在这个证书中包含以下内容:

证书的有效期

公钥

证书所有者(Subject)

签名使用的算法

指纹以及指纹使用的算法

在了解数字证书的内容后,下面一轮模拟数据传输将会使用到上一篇文章讲到的三种加密方式,也能大致了解到HTTPS的安全机制。

<pre><code>客户端>>>>服务器:你好!

服务器>>>>客户端:你好!这是我的数字证书

客户端>>>>服务器:我已收到并验证了数字证书的合法性,验证你是证书的合法拥有者,这是证书的公钥加密的随机数{随机数}[公钥|RSA]

服务器>>>>客户端:{解密过的随机数}[私钥|RSA]

客户端>>>>服务器:验证成功,这是数据传输过程中需要用到的对称密钥,{对称密钥}[公钥|RSA]

服务器>>>>客户端:{收到密钥}[密钥|AES]

客户端>>>>服务器:这是我的银行卡号和密码,给我查查余额{卡号,密码}[密钥|AES]

服务器>>>>客户端:{你的银行卡余额,一个亿}[密钥}|AES] </code></pre>

在Round4,服务器发送给客户端的数字证书中,包含数字摘要算法产生的指纹以及所使用的数字摘要算法,这部分使用来验证数字证书的完整性以及合法性的。如果指纹(可以认为是MD5或者SHA对证书加密产生的字符串)能够与客户端对证书加密产生的指纹对应(使用证书中的数字摘要算法对证书加密),就能够证明证书没有被篡改过,其合法性也就得到验证。一下的步骤就与上面介绍的数字信封类似了。通过以上的模拟,能够知道使用SSL协议的HTTPS协议既能保证数据传输中的安全,也能保证客户端与服务器连接的安全。

HTTPS虽然安全,但不能完全保护数据安全,它能够做的是在数据传输过程中保护数据的安全,服务器和客户端中数据安全也是需要注意的。

通过这两篇文章的介绍,大家能够大体了解到现在主要的加密方式以及它们的使用场景,也稍微接触到了HTTPS的安全加密机制,虽然这在开发中的使用机会不大,但能够了解到这些优秀的机制,以后在有加密需求的时候也能够多一些思路。

旁道攻击不攻击密码本身,而是攻击那些实现于不安全系统(会在不经意间泄漏信息)上的加密系统。

2005年4月,DJ Bernstein公布了一种缓存时序攻击法,他以此破解了一个装载OpenSSL AES加密系统的客户服务器。为了设计使该服务器公布所有的时序信息,攻击算法使用了2亿多条筛选过的明码。有人认为,对于需要多个跳跃的国际互联网而言,这样的攻击方法并不实用。

2005年10月,Eran Tromer和另外两个研究员发表了一篇论文,展示了数种针对AES的缓存时序攻击法[8]。其中一种攻击法只需要800个写入动作,费时65毫秒,就能得到一把完整的AES密钥。但攻击者必须在运行加密的系统上拥有运行程序的权限,方能以此法破解该密码系统。

一、安全性能不同

TKIP本质上是一个WEP补丁,解决了攻击者通过获得少量的路由器流量解析出路由器密钥的问题。TKIP还提供了一个较为完善的安全升级,但是对于保护网络不受黑客攻击上不够全面。

AES是一个完全独立的加密算法,远远优于任何TKIP提供的算法,该算法有128位,192位或256位的分组密码。所以AES安全性能比TKIP好。

二、速度不同

TKIP是一种过时的加密方法,而且除了安全问题,它还会减缓系统运行速度,速度会减慢至54Mbps。

支持WPA2-AES加密的80211ac理想条件下最大速度为346Gbps。所以AES的运行速度相较于TKIP要快。

三、密钥长度不同

TKIP中密码使用的密钥长度为128位,这就解决了WEP密码使用的密钥长度过短的问题。

AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。

-TKIP

-AES

服务层包括密码服务、通信、归档、用户接口和访问控制等模块,提供安全通信服务;传输层包括发送、接收、组织张掖活动所需的数据信息,实现客户和服务器之间根据规定的安全角色来传递数据信息;传输层包括付款模块、文档服务模块和证书服务模块;交换层包括提供封装数据的公平交换服务,所谓公平是至甲方和乙方同意进行交换,甲方收到乙方的封装数据的充要条件是乙方收到甲方的封装数据条;商务层包括提供的商业方。

aes:高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。

rsa:RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。

从性能和安全性的角度来说,WPA2-PSK(AES)是最好的,一般的路由器对于该类型的加密都能游刃有余的处理,而且,WPA2-PSK(AES)是目前为止最安全,也是使用最广泛的无线加密协议

WEP是Wired Equivalent Privacy的简称,有线等效保密(WEP)协议是对在两台设备间无线传输的数据进行加密的方式,用以防止非法用户窃听或侵入无线网络。不过密码分析学家已经找出 WEP 好几个弱点,因此在2003年被 Wi-Fi Protected Access (WPA) 淘汰,又在2004年由完整的 IEEE 80211i 标准(又称为 WPA2)所取代。

WPA全名为Wi-Fi Protected Access,有WPA和WPA2两个标准,是一种保护无线电脑网络(Wi-Fi)安全的系统,WPA实作了IEEE 80211i标准的大部分,是在80211i完备之前替代WEP的过渡方案。WPA的设计可以用在所有的无线网卡上,但未必能用在第一代的无线取用点上。

WPA2 是经由 Wi-Fi 联盟验证过的 IEEE 80211i 标准的认证形式。WPA2 实现了 80211i 的强制性元素 ,特别是 Michael 算法由公认彻底安全的 CCMP 讯息认证码所取代、而 RC4 也被 AES 取代。WPA2具备完整的标准体系,但其不能被应用在某些老旧型号的网卡上。

WPA/WPA2下的加密方式有TKIP和AES两种,TKIP: Temporal Key Integrity Protocol(临时密钥完整性协议)负责处理无线安全问题的加密部分。TKIP在设计时考虑了当时非常苛刻的限制因素:必须在现有硬件上运行,因此不能使用计算先进的加密算法。而AES(高级加密标准),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

AES加密有四种工作模式:ECB、CBC、CFB和OFB,其中IOS支持ECB(kCCOptionPKCS7Padding 对应Java中的kCCOptionPKCS5Padding)和CBC(kCCOptionECBMode)

AES是开发中常用的加密算法之一。然而由于前后端开发使用的语言不统一,导致经常出现前端加密而后端不能解密的情况出现。然而无论什么语言系统,AES的算法总是相同的, 因此导致结果不一致的原因在于 加密设置的参数不一致 。于是先来看看在两个平台使用AES加密时需要统一的几个参数。

参考: https://welkinxcom/2016/07/30/10/

ios中使用AES128位 ECB模式加密 结果转换16进制

https://tiebabaiducom/p/4581819586

与服务器通讯的时候,除了确定密钥外,加密模式和填充方式也要确定。第一个例子中,就是使用了kCCOptionPKCS7Padding加密模式,并且有IV(初始向量),而第二个例子中使用了ECB(没有补码方式)。

此外也要注意转码后的密文是转成16进制,还是base64编码。

参考链接:

http://blog51ctocom/ciphertext/1420338

https://welkinxcom/2016/07/30/10/

https://tiebabaiducom/p/4581819586

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 加密二 加密算法使用场景以及HTTPS加密机制

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情