动漫网站建设规划书模板,ie 插件 wordpress,怎样使用仿站小工具做网站,泡泡h5网页制作一.HTTPS的定义 大家在刚开始学习的时候是不是也是非常好奇HTTP与HTTPS之间有什么区别和联系#xff0c;两者都是应用层协议#xff0c;而HTTPS是在HTTP的基础上引入了加密层#xff0c;从而将HTTP的明文传输进行加密#xff0c;保障数据的安全性 二.加密与解密 定义#… 一.HTTPS的定义 大家在刚开始学习的时候是不是也是非常好奇HTTP与HTTPS之间有什么区别和联系两者都是应用层协议而HTTPS是在HTTP的基础上引入了加密层从而将HTTP的明文传输进行加密保障数据的安全性 二.加密与解密 定义将明文要传输的数据通过一系列变化转换成密文的过程就是加密 将密文通过密钥转换成明文的过程称为解密 关于加密的原因不用想大家肯定都知道是为了防止信息泄露那么我们就通过另外一个例子来了解加密的重要性; 假如现在你要下载一个名为A的程序软件但当你的请求在网络中传输时由于是明文传输网络运营商就可以获取到你的请求并且可以将其劫持然后发送其想要你下载的软件然后你就会发现下载好的内容不对但是期间就会浪费大量时间与陈本如果你的下次下载请求还是被劫持这样是不是就会非常难受这就是运营商劫持这也体现出明文传输在网络中的巨大缺点 如下图; 下面我们来了解下加密的方式 对称加密 定义通过单密钥的加密方式同一个密钥可以同时用作信息的加密和解密这种加密方法称为对称加密 也称为单密钥加密 常见对称加密算法(了解) DES、 3DES、 AES、 TDEA、 Blowfish、 RC2 等 特点 算法公开、 计算量⼩、 加密速度快、 加密效率⾼ 例如 密钥是按位异或假设原始数据时a通过密钥key加密得到b此时接受端得到b对b^key就得到a此时就完成解密双方使同一密钥当然实际当然不会如此简单 非对称加密 定义 通过两个密钥来进行加密和解密 这两个密钥是公开密钥public key 简称公钥 和私有密钥private key 简称私钥 公钥是指即使泄露也没关系的密钥而非是指直接公开的密钥 私钥;是指不能泄露的密钥 常见非对称加密算法(了解) RSA DSA ECDSA 特点 算法强度复杂、 安全性依赖于算法与密钥但是由于其算法复杂 而使得加 密解密速度没有对称加密解密的速度快 补充点 我们是可以用公钥加密也可以用私钥加密当然需要对应的另一个来解密 公钥和私钥是配对的. 最大的缺点就是运算速度非常慢 比对称加密要慢很多 例如 假设A持有B给的一把锁当其将文件放入柜子时将柜子锁上而锁可以有多把也可以给C但是钥匙只有B持有即公钥是指锁私钥是指钥匙 三.数据摘要 数据指纹 数字指纹(数据摘要),其基本原理是利用单向散列函数(Hash 函数)对信息进行运算,生成一串固定⻓度的数字摘要。 数字指纹并不是一种加密机制,但可以用来判断数据有没有被篡改。 摘要常见算法 有 MD5、 SHA1、 SHA256、 SHA512 等 算法把无限的映射成有限 因此可能会有碰撞两个不同的信息 算出的摘要相同 但是概率非常低 摘要特征 和加密算法的区别是 摘要严格意义不是加密 因为没有解密 只不 过从摘要很难反推原信息 通常用来进行数据对比 四,HTTPS加密所用的方案 1.只使用对称加密 如果通信双方都各自持有同一个密钥 X 且没有别人知道 这两方的通信安全当然是可以被保证的除非密钥被破解 我们知道服务器会同时与多个客户端建立连接而每一个连接的对称的密钥肯定要保证不同所以每一个连接都需要双方协商所以密钥是不是就要传输从而保证双方都拿到同一个密钥来保证通信但是密钥如果在传输过程中被截获双方的通信是不是就相当于对窃取者透明如果截取者再对密钥修改是双方的内容必须通过截取者这个中间人那么信息就会完全泄露而且内容也可能被修改 2.只使用非对称加密 鉴于非对称机制如果服务器将公钥发送给客户端那么客户端将信息加密通过公钥传递给服务器服务器就可以通过私钥解密这样看起来信息就不会泄露那么不妨我们多想想如果服务器需要将信息发送客户端那么服务器是不是就需要用私钥加密但是我们知道公钥是可以被截取的那么其他人也可以通过公钥对服务器发送的信息进行解密这样就会出现信息泄露所以这种方法也是不安全的 3.双方同时进行非对称加密 服务器持有私钥S和公钥S客户端持有私钥C和公钥C双方同时将公钥发送给对方然后这样是不是就看起来可以实现通信并且保证安全 这种方法首先最严重的问题是效率太低了并且其实也无法保证安全后面会讲而在网络通信时时间是非常重要的所以也不是最优解 4.非对称加密和对称加密 服务器持有私钥S和公钥S当客户端发送https请求时服务器将公钥发送给客户端客户端得到公钥后生成对称加密的密钥X然后利用公钥加密X发送给服务器服务器通过私钥S解密得到对称加密的密钥X然后双方就可以通过来进行对称加密 由于对称加密效率远高于非对称加密该方案在后续过程中一直使用对称加密效率明显提高那么这种方法是否安全 如果中间人将后序信息窃取是无法破解的但是如果中间人在服务器发送公钥S时就对信息截取并将原本发送给客户端的公钥S修改成中间人自己的公钥M这样客户端收到公钥M’,然后将X发送给中间人这样中间人就毫不费力的截取到对撑加密的密钥后续的所有信息还是回完全泄露。 目前来看所有的组合是都存在问题的那么该如何破局呢 五.证书与签名 服务器在使用HTTPS之前去CA认证一份数字证书证书中包含了服务器的诸多信息以及公钥然后服务器将证书发送给浏览器浏览器得到证书后可以得到对应的公钥然后双方即可进行通信下面我们就来一一认识具体的细节 1.证书的申请 服务器生成一个公钥S’和私钥S然后将自身的诸多信息发送给CA认证机构注意私钥是不发送的公钥要发送给CACA机构对信息进行审核然后生成一份包含服务器公钥的证书 对于证书大家可以看成一个结构化的字符串里面包含了以下信息: • 证书发布机构 • 证书有效期 • 公钥 • 证书所有者 • 签名 • ...... 2.签名的理解 当CA机构得到服务器的申请时会在自身生成一个公钥A私钥A然后将服务器发送的数据形成一份散列值然后将散列值通过A进行加密形成签名。如果此时在将数据和签名整合就会形成一份数字签名的数据后面CA的公钥A会发送给浏览器此时就可以通过将签名解密和数据形成的散列值进行对比此时就可以确定数据是否合法当然这些我们后面会讲这里简单提下这个过程叫验证 现在我们知道了证书的相关概念那么我们是否可以通过证书来实现安全的网络传输呢 六.非对称加密对称加密证书机制 首先当浏览器对一个服务器明文发送一个请求时服务器会将一份经过CA机构认证的证书发送给浏览器证书中包含了服务器的公钥S然后在浏览器端将数据散列值和签名用公钥解密得到的散列值进行对比如果相等说明得到的是安全的数据然后客户端生成一个对称加密的密钥X然后通过证书中的服务器公钥进行加密发送给服务器服务器通过私钥解密得到密钥X然后双方就可以对称加密通信 现在问题来了该方法是如何保证通信安全的呢 我们知道非对称加密和对称加密的组合只有在服务器第一次发送响应时可以被中间人截取信息那么证书机制如何保证这个过程的安全呢 首先当服务器发送的证书被中间人截获后其可能已经得到了对应的公钥所以可以对其解包得到数据和签名但是签名由于其根本不掌握对应的私钥是无法修改的当用户进行验证时如果中间人对数据做过修改散列值和签名解密得到的内容是无法做到相等的。 此时你可能好奇中间人不可以用自己的私钥重新生成一份签名然后和数据整合形成一份证书吗 问题来了我客户端为什么要认中间人的公钥呢如果我不认中间人对应的公钥是不是就无法做到对签名解密那么肯定是网络传输中出现了问题客户端直接丢弃该内容即可 通过以上方案就可以实现网络通信的安全保障了 最后感谢大家的支持