做平面的素材网站,安徽建设工程安全监督总站网站,mr. tailor wordpress,网站建设与管理实训总结目录
前言
一、HTTPS协议
1、加密是什么
2、为什么要加密
二、常见加密方式
1、对称加密
2、非对称加密
三、数据摘要与数据指纹
1、数据摘要
2、数据指纹
四、HTTPS加密策略探究
1、只使用对称加密
2、只使用非对称加密
3、双方都使用非对称加密
4、对称加密非…目录
前言
一、HTTPS协议
1、加密是什么
2、为什么要加密
二、常见加密方式
1、对称加密
2、非对称加密
三、数据摘要与数据指纹
1、数据摘要
2、数据指纹
四、HTTPS加密策略探究
1、只使用对称加密
2、只使用非对称加密
3、双方都使用非对称加密
4、对称加密非对称加密
5、知识补充
1CA证书
2证书形成过程
3验证证书的过程
6、证书认证对称加密非对称加密
7、常见问题
1中间人有没有可能篡改证书
2中间人有没有可能掉包整个证书
3为什么CA形成证书时要形成数字签名
4为什么不直接将数据进行加密而是先进行哈希散列 前言 本章主要介绍关于HTTPS协议以及HTTPS协议加密解密整个过程这也是面试中常考的一个话题接下来我们一起进入网络的世界吧 一、HTTPS协议 HTTPS协议仅仅只是在HTTP协议上增加了一个加密层可以说HTTPS协议是HTTP协议的升级版 1、加密是什么 所谓加密就是将HTTP报文通过某种手段由明文变为密文比如我们之前可能都做过一道题目如何不创建变量来交换两个整型如有下面两个变量 int a 10; int b 20; 可能在没有学习异或运算符前这题确实很困难但是在我们学习完异或运算符后可以巧妙利用异或运算符的特性来解决这道题目异或运算符有如下特性 a ^ a 0; a ^ 0 a; 利用如上特性我们不难解出上题 a a ^ b; --- int c a ^ b; b a ^ b; --- b c ^ b - a ^ b ^ b; a a ^ b; --- a c ^ c ^ b; 我们可以将上面a与b异或的结果看作一个加密过程只有通过特定的解密才可得到真正的结果 2、为什么要加密 前面我们提过HTTP协议无论是通过GET请求提交参数或是POST请求提交参数都可能会被别看看到因为它们是明文显示的这会造成私人信息泄漏的风险除了私人信息泄漏风险同时在互联网早期时经常由于HTTP协议的不私密导致用户在发送HTTP请求时在传输过程中可能遇到中间人这个中间人可能会篡改HTTP请求内容导致出现各种情况如我们在网上发送一个下载QQ音乐的请求可能会被运营商等中间人劫持给我们发送一个下来网易云音乐的连接而普通用户并无法区分连接一股脑下载后发现下载的是另一个软件这种类似问题频频出现因此我们必须给我们的HTTP请求进行加密所以HTTPS协议因此诞生了 二、常见加密方式
1、对称加密 所谓对称加密就是采用单密钥的方式生成一对密钥对其中的每一个密钥都可以进行加密与解密的操作 特点算法公开、计算量小、加密速度快、效率高 常见对称加密算法DES、RC2等 2、非对称加密 这种通常需要两个密钥来进行加密解密其中这两个密钥一把叫做公钥这把密钥是可以被公开的另一把叫私钥这把密钥通常私密保存 特点算法强度复杂、加密解密速度对比对称加密慢很多 公钥加密只能通过私钥解密 私钥加密只能通过公钥解密 三、数据摘要与数据指纹
1、数据摘要 所谓数据摘要指的是将数据通过单散列哈希函数生成一串固定长度的字符串我们称其为数据摘要 特点唯一性很强通常不会发生冲突 数据摘要 VS 加密 数据摘要是单向的无法逆向还原原数据而加密可以通过解密来进行还原原数据 2、数据指纹 数据指纹指的是将我们的数据摘要再次进行加密形成的便是数据指纹也可以称作数字签名 四、HTTPS加密策略探究
1、只使用对称加密 如果通信双方各持有一对密钥X双方即可通过密钥X来进行通信 看着似乎合理双方各持有一个密钥客户端发送前将hello通过密钥X加密成加密报文然后服务端收到加密报文后将加密报文通过X进行解密成hello 那么问题来了如何让双方看到同一对密钥呢通过服务端生成后发送给客户端吗那样在发送密钥时也可能被截获吗截获后双方又不就不是加密通信了吗那样不就又回到了最开始的问题吗因此这种方案显然是不行的 2、只使用非对称加密 若只使用非对称加密策略此时假设我们服务端生成一把公钥Y和一把私钥X 当我们将公钥Y通过网络发送给客户端后公钥Y不怕被别人截获此时客户端可通过公钥Y进行加密通过公钥Y发送的信息只能由私钥X来进行解密因此即使中间人得到了公钥Y也无法进行解密这样看起来好像很合理实际上漏洞百出 我们如何保证服务端到客户端的安全呢这种只使用非对称加密的方式显然只能保证一端的安全性 3、双方都使用非对称加密 若双方都拥有一对非对称密钥对如客户端拥有公钥X与私钥X服务端拥有公钥Y与私钥Y。 客户端和服务端分别把自己的公钥给对方自己持有私钥此时每次进行通信时使用对端的公钥进行加密由于中间人没有双反私钥因此此时无法获取双方加密密文了这种方案看着似乎也可以实际上也存在漏洞上面的安全通信假设都是建立在双方已经建立好安全通信的准备了若是双方在交换公钥时中间人就已经开始出手了呢关于这个我们后面再继续讲解中间人是如何进行攻击的。 4、对称加密非对称加密 假设服务端拥有一对非对称密钥公钥X与私钥X’客户端拥有对称密钥Y 当服务端将公钥X传输给客户端时客户端将自己的对称密钥Y经过公钥X进行加密发送给服务端服务端收到后用自己的私钥X‘对客户端的对称密钥进行解密此后双方使用对称密钥Y进行通信 这种方案看起来似乎也没有多大问题可这一切都建立在双方已经成功建立好加密通信信道后若是在它们交换密钥过程中同样也会出现问题就如同上面那种情况一样关于如何破解同样我们将在下面进行介绍 当服务端将自己的公钥X发送给服务端时被中间人劫持获得了公钥X并且中间人也生成一对非对称密钥对将公钥Z给客户端此时客户端并不知道这个公钥Z是来自中间人的他认为他收到了来自服务端的公钥Z因此他将自己的对称密钥Y通过公钥Z进行加密并发送给服务端此时也被中间人劫持并用自己的私钥Z‘对其进行解密得到了客户端的对称密钥Y然后中间人还将Y用服务端的公钥X进行加密发送给服务端服务端也不知道这个来自于中间人也对其进行解密得到了客户端的对称密钥Y此后它们通过对称密钥Y进行通信时由于中间人也有对称密钥Y此时它们之间的通信都可以被中间人轻松获取这样就破解了上述方式第三种加密方式也可以通过该方法进行破解 5、知识补充
1CA证书 服务端使用HTTPS协议前都需要向CA机构申请一份CA证书证书就像身份证具有权威性证书中里最少包含如下信息 1证书发布机构 2证书有效期 3公钥 4证书所有者 5签名 6域名 等等信息 2证书形成过程 公司想要CA证书需要向CA机构提交申请资料CA机构会拿公司提供的资料的原文件内容经过哈希散列形成数据摘要再拿数据摘要使用CA私钥进行加密形成数字签名最后拿数字签名和证书资料合起来变成了我们一份完整的证书 3验证证书的过程 如何验证一份证书是否合法呢如下所示 我们拿到一份证书后取出其数据部分使用CA同样的哈希函数进行散列形成数据摘要然后拿着数字签名使用CA的公钥进行解密也得到一份数据摘要如果这两份数据摘要相同则表示这份证书没有任何问题因此若是对证书中的信息进行任何修改得到的两个数据摘要都不会相同 6、证书认证对称加密非对称加密 这种加密策略也就是HTTPS采用的加密策略 首先需要服务端向CA机构申请CA证书得到CA证书后每次有客户端发送连接请求时服务端首先都会给客户端发送一份自己的证书客户端拿到证书后对证书进行验证若验证通过客户端会取出证书中数据如域名、服务端公钥等若域名与我要访问的服务端域名匹配说明证书没有被完整掉包过然后生成自己的一对对称密钥然后用服务端的公钥对对称密钥进行加密接着将加密报文发送给服务端由于只有服务端有私钥因此只有服务端可以获得客户端的对称密钥服务端获得客户端的对称密钥后双方就可以使用这个对称密钥进行后续的通信了 7、常见问题
1中间人有没有可能篡改证书 若篡改证书数据内容在验证证书合法性时由于数据被修改形成的数据摘要与数字指纹形成的数据摘要不同因此可以判断出证书不合法 又由于中间人没有CA机构的私钥因此也不可能再用修改后的数据形成一份数字指纹因为大家都只使用CA机构的公钥而私钥和公钥是配对的因此中间人也不可能在生成一份修改数据后的数字指纹 2中间人有没有可能掉包整个证书 若中间人也想CA机构申请了一份证书在服务端发送证书给客户端时中间人直接掉包整个证书此时客户端在验证证书时发现证书数据中的域名与自己访问的域名不一致也会发现有问题因此防止了中间人掉包整个证书的可能 3为什么CA形成证书时要形成数字签名 数字签名是为了防止中间人对数据进行篡改若没有数字签名验证中间人可以修改证书中的数据此时客户端收到证书后也不知道证书内容是否被修改证书内的公钥一旦被修改又回到了之前的问题了形成数字签名可以确保服务端提供公钥的合法性 4为什么不直接将数据进行加密而是先进行哈希散列 因为哈希散列后的数据大小是固定的这样可以大大减小签名密文的长度加快验证数字签名的运算速度