包头建站,怎样在手机上做自己的网站,网页微信版下载不了大文件,网页文件打印乱码目录 前言
1.理解加密和解密
2.为什么要加密
3.常见的加密方式
3.1对称加密
3.2非对称加密
4.数据摘要和数据指纹
5. 数字签名
6.HTTPS的加密策略
6.1只使用对称加密
6.2使用非对称加密
6.2.1服务端使用非对称加密
6.2.2双方都使用非对称加密
6.3对称加密非对称加…目录 前言
1.理解加密和解密
2.为什么要加密
3.常见的加密方式
3.1对称加密
3.2非对称加密
4.数据摘要和数据指纹
5. 数字签名
6.HTTPS的加密策略
6.1只使用对称加密
6.2使用非对称加密
6.2.1服务端使用非对称加密
6.2.2双方都使用非对称加密
6.3对称加密非对称加密
7.中间人攻击
8.证书
9.最终方案
总结 前言 上一篇文章我们介绍了HTTP协议是用来客户端向服务端请求资源的通过编码的方式验证了HTTP协议请求和响应的格式但是存在的一个问题就是HTTP协议在网络中数据传输是以明文的形式进行传输的今天我们要介绍的HTTPS协议是基于HTTP协议解决数据以明文的形式传输存在不安全的问题解决的方式是通过加密在网络中传输加密后的数据下面我们就一起来看看是如何实现加密保证安全性的。
1.理解加密和解密
加密就是把明⽂(要传输的信息)进⾏⼀系列变换,⽣成密⽂。 解密就是把密⽂再进⾏⼀系列变换,还原成明⽂。
2.为什么要加密
例下载⼀个天天动听 未被劫持的效果,点击下载按钮,就会弹出天天动听的下载链接. 已被劫持的效果,点击下载按钮,就会弹出QQ浏览器的下载链接 由于我们通过网络传输的任何的数据包都会经过运营商的网络设备(路由器,交换机等),那么运营商的网络设备就可以解析出你传输的数据内容,并进⾏篡改.点击下载按钮,其实就是在给服务器发送了⼀个HTTP请求,获取到的HTTP响应其实就包含了APP的下载链接.运营商劫持之后,就发现这个请求是要下载天天动听,那么就⾃动的把交给用户的响应给篡改成QQ浏览器的下载地址了。
如图所示 所以因为http的内容是明⽂传输的明⽂数据会经过路由器、wifi热点、通信服务运营商、代理服务器等多个物理节点如果信息在传输过程中被劫持传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双⽅察觉这就是 中间⼈攻击 所以我们才需要对信息进行加密。
3.常见的加密方式
3.1对称加密 • 采用单钥密码系统的加密法同⼀个密钥可以同时⽤作信息的加密和解密这种加密⽅法称为对称加密也称为单密钥加密特征加密和解密所用的密钥是相同的 • 常见对称加密算法DES、3DES、AES、TDEA、Blowfish、RC2等 • 特点算法公开、计算量小、加密速度快、加密效率高 对称加密其实就是通过同⼀个密钥,把明⽂加密成密文,并且也能把密文解密成明文. ⼀个简单的对称加密,按位异或 假设明⽂a1234,密钥key8888 则加密a^key得到的密⽂b为9834 然后针对密⽂9834再次进⾏运算b^key,得到的就是原来的明⽂1234
3.2非对称加密 • 需要两个密钥来进⾏加密和解密这两个密钥是公开密钥publickey简称公钥和私有密钥privatekey简称私钥 • 常见非对称加密算法RSADSAECDSA • 特点算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂⽽使得加密解密速度没有对称加密解密的速度快。 非对称加密要⽤到两个密钥,⼀个叫做公钥,⼀个叫做私钥 公钥和私钥是配对的.最⼤的缺点就是运算速度非常慢比对称加密要慢很多 • 通过公钥对明⽂加密,变成密文 • 通过私钥对密⽂解密,变成明文 4.数据摘要和数据指纹 数字指纹(数据摘要),其基本原理是利用单向散列函数(Hash函数)对信息进⾏运算,⽣成⼀串固定⻓度的数字摘要。数字指纹并不是⼀种加密机制,但可以用来判断数据有没有被窜改。 • 摘要常见算法有MD5、SHA1、SHA256、SHA512等 摘要特征和加密算法的区别是摘要严格意义不是加密因为没有解密只不过从摘要很难反推原信息通常用来进行数据对比 5. 数字签名
摘要经过加密就得到数字签名
6.HTTPS的加密策略
说明网络通信中谈到安全我们必须要解决两个问题一个是数据被监听的问题一个数据被篡改的问题在这里HTTPS实现安全也是围绕这两个问题逐步解决的。
6.1只使用对称加密
客户端使用密钥将数据加密之后发送给服务端在网络中传输的过程中将密钥和密文一起发给服务端服务端收到密钥和密文之后对密文进行解密存在的问题中间人可以获取到密文和密钥一旦获取到密文和密钥之后中间人也可以解密获得数据此时只是单纯的使用对称加密是无法解决数据不安全的问题的。
6.2使用非对称加密
6.2.1服务端使用非对称加密
如图所示 6.2.2双方都使用非对称加密 a.服务端拥有公钥S与对应的私钥S客⼾端拥有公钥C与对应的私钥C b.客户和服务端交换公钥 c.客⼾端给服务端发信息先⽤S对数据加密再发送只能由服务器解密因为只有服务器有私钥S d. 服务端给客⼾端发信息先⽤C对数据加密在发送只能由客⼾端解密因为只有客⼾端有私钥C 如图所示 说明双方都使用非对称加密的方式好像解决了安全问题但是这里依旧是存在安全问题的后面继续介绍为什么会有问题除了会有安全问题之外双方都采用非对称会导致效率太低双方需要先进行交换公钥然后再加密发送数据。首先解决效率问题可以采用对称加密结合非对称加密的方式进行解决。
6.3对称加密非对称加密 •服务端具有非对称公钥S和私钥S • 客⼾端发起https请求获取服务端公钥S • 客⼾端在本地⽣成对称密钥C,通过公钥S加密,发送给服务器. • 由于中间的⽹络设备没有私钥,即使截获了数据,也⽆法还原出内部的原⽂,也就⽆法获取到对称密钥(真的吗) • 服务器通过私钥S解密,还原出客⼾端发送的对称密钥C.并且使⽤这个对称密钥加密给客⼾端返回的响应数据. • 后续客⼾端和服务器的通信都只⽤对称加密即可.由于该密钥只有客⼾端和服务器两个主机知道,其他主机/设备不知道密钥即使截获数据也没有意义. 如图所示 注虽然上面的方案好像已经解决了安全问题但是其实并不然下面我们就一起来看看为什么依旧会存在安全问题以及该如何解决呢
7.中间人攻击
Man-in-the-MiddleAttack简称“MITM攻击”
客户端获取到公钥S之后对客⼾端形成的对称秘钥X⽤服务端给客⼾端的公钥S进⾏加密中间⼈即使窃取到了数据此时中间人确实⽆法解出客⼾端形成的密钥X因为只有服务器有私钥S但是中间人的攻击如果在最开始握⼿协商的时候就进⾏了那就不⼀定了假设hacker已经成功成为中间人。 1. 服务器具有非对称加密算法的公钥S私钥S 2. 中间⼈具有非对称加密算法的公钥M私钥M 3. 客户端向服务器发起请求服务器明⽂传送公钥S给客⼾端? 4. 中间⼈劫持数据报⽂提取公钥S并保存好然后将被劫持报⽂中的公钥S替换成为⾃⼰的公钥M并将伪造报⽂发给客户端 5. 客户端收到报⽂提取公钥M(⾃⼰当然不知道公钥被更换过了)自己形成对称秘钥X⽤公钥M加密X形成报⽂发送给服务器 6. 中间⼈劫持后直接⽤自己的私钥M进⾏解密得到通信秘钥X再⽤曾经保存的服务端公钥S加密后将报⽂推送给服务器 7. 服务器拿到报文用自己的私钥S解密得到通信秘钥X 8. 双⽅开始采⽤X进行对称加密进⾏通信。但是⼀切都在中间⼈的掌握中劫持数据进行窃听甚至修改都是可以的 如图所示
所以问题的本质出在哪里了呢
客户端无法确定收到的含有公钥的数据报文就是目标标服务器发送过来的那该如何解决呢答案是使用证书进行解决下面我们就一起看看什么是证书以及证书是如何解决的。
8.证书
服务端在使⽤HTTPS前需要向CA机构申领⼀份数字证书数字证书⾥含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器浏览器从证书⾥获取公钥就⾏了证书就如⾝份证证明服务端公钥的权威性
如图所示 证书申请成功后会使用hash形成摘要然后使用CA认证的私钥对摘要进行加密形成数据签名然后将签名和证书结合起来如图所示 当客户端收到服务端的证书之后会根据证书中的内容进行hash的方法形成摘要然后使用证书中的公钥形成数据签名然后CA会在浏览器中内置自己的公钥使用自己内置的公钥形成数据签名两者进行对比如果相等则证明服务端发给客户端的公钥没有没修改过如果不相等就证明是被修改过通过这样的方式就可以确认是否是目标服务器发过来的。
9.最终方案
通过上面的介绍HTTPS实现安全高效的加密和解密是通过证书非对称加密对称加密的方式进行解决的如图所示 总结 本篇文章为大家介绍了HTTPS实现数据传输时如何保证安全性采取的策略希望能够对大家有所帮助感谢大家的阅读我们下次再见