【图解Http 学习摘要】五、HTTPS 中的加密、证书介绍,不一直使用 HTTPS 的原因

简介: 【图解Http 学习摘要】五、HTTPS 中的加密、证书介绍,不一直使用 HTTPS 的原因

在上一文中,讲述了 HTTP 的种种安全性问题,要解决的话,就要用 HTTPS。


HTTP 加上加密处理认证以及完整性保护后即是 HTTPS。


1268169-20210704223808136-673746358.png


经常会在 Web 的登录页面和购物结算界面等使用 HTTPS 通信,比如打开淘宝的登录页。

1268169-20210704223908715-2092861157.png



  • 使用 HTTPS 通信时,不再用 http://,而是改用 https://


  • 当浏览器访问 HTTPS 通信有效的 Web 网站时,浏览器的地址栏内会出现一个带锁的标记。


一、HTTPS 是身披 SSL 外壳的 HTTP


首先要明确:HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用 SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。


1268169-20210704225259501-1432383699.png


  • 通常,HTTP 直接和 TCP 通信。
  • 当使用 SSL时,则演变成先和 SSL 通信,再由 SSL 和 TCP 通信了。

SSL 是独立于 HTTP 的协议。


所以,不光是 HTTP 协议,其他运行在应用层的协议,比如 SMTP 和 Telnet 等,均可配合 SSL 协议使用。可以说 SSL 是 当今世界上应用最为广泛网络安全技术。


二、相互交换密钥的公开密钥加密技术


SSL 采用一种叫做公开密钥加密(Public-key cryptography)的加密处理方式。

不过在继续了解之前,先看下这2种:


  • 共享密钥加密
  • 公开密钥加密


1. 共享密钥加密


加密和解密同用一个密钥(也叫对称密钥加密),加密时必须将密钥也发给对方,那么如何安全地把密钥交给对方是个问题。


1268169-20210704231044366-919531602.png


  • 如果在互联网上转发密钥时,通信被监听,那么密钥就可会落入攻击者之手,同时也就失去了加密的意义。
  • 此外,接收方还得设法安全地保管接收到的密钥。


2. 公开密钥加密


针对上面的问题,于是有了公开密钥加密方式。解决思路也很简单:既然担心密钥在发送过程中被盗走,那么我不发送密钥不就解决了?


于是,公开密钥加密使用一对非对称的密钥,分别是:


  • 私有密钥 (private key):私有密钥不能让其他任何人知道。
  • 公开密钥(public key):公开密钥则可以随意发布,任何人都可以获得。

交互过程是这样的(发送密文方A,接收方B):


  1. A 使用 B 的公开密钥进行加密。
  2. A 发送加密后的信息给 B。
  3. B 收到加密的信息后,用自己的私有钥匙进行解密。


利用这种方式,不需要发送用来解密的私有密钥,也就不必担心密钥被攻击者窃听而盗走。


另外,就算你知道了公开密钥密文,想要恢复到信息原文是异常困难的。


因为解密过程就是在对离散对数进行求值,这并非轻而易举就能办到。


再退一步讲,如果能对一个非常大的整数做到快速地因式分解,那么密码破解还是存在希望的。但就目前的技术来看是不太现实的。


1268169-20210704232632404-1160220606.png


3. HTTPS 采用混合加密机制


HTTPS 采用以上2种加密方式的混合加密机制


因为,公开密钥加密处理起来比共享密钥加密更加复杂,因此在通信中使用时,效率就更低


所以应充分利用两者各自的优势:


  • 交换密钥环节使用公开密钥加密方式。
  • 之后的建立通信交换报文阶段则使用共享密钥加密方式。


1268169-20210704233725838-2021248494.png


三、证明公开密钥正确性的证书


环环相扣,在上述的公开密钥加密方式还是存在一些问题:


  • 无法证明公开密钥本身就是货真价实的公开密钥。


比如,A 整准备和 B 服务器建立公开密钥加密方式下的通信,A 也确实收到了公开密钥。但是 A 不知道这个公开密钥是不是真的来自于 B,或许在传输途中,真的公开密钥已经被攻击者替换掉了。


于是,为了解决这个问题,需要使用由数字证书认证机构(CA,Certificate Authority)和其相关机关颁发的公开密钥证书


1. 什么是 数字证书认证机构?


是处于客户端与服务器双方都可信赖的第三方机构,比如威瑞信(VeriSign)。

业务流程


  1. 首先,服务器把自己的公开密钥登录至机构。
  2. 机构用自己的私有密钥像服务器的公开密钥数字签名,并颁发公钥证书(服务器公开密钥+机构的数字签名)。
  3. 服务器将证书发送个客户端。
  4. 接收到证书的客户端,使用机构的公开密钥对证书上的数字签名进行验证。

一旦验证通过,就说明:


  • 认证服务器的公开密钥的是真实有效的数字证书认证机构。
  • 服务器的公开密钥是值得信赖的。


OK,看起来很不错。但是在服务器转交认证的公开密钥给客户端的时候,如何安全转交也是一件困难的事情。


既然转交过程有风险,那么尽量不转交。因此,多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥


万事大吉后,客户端就可以使用公开密钥对报文加密后发送了,服务器收到后再用私有密钥对报文解密即可。


2. 证书的类型


  • 可证明组织真实性的 EV SSL 证书


证书的一个作用是用来证明作为通信一方的服务器是否规范,另外一个作用是可确认对方服务器背后运营的企业是否真实存在,EV SSL证书就有此特性。


  • 用以确认客户端的客户端证书
    HTTPS 中还可以使用客户端证书。以客户端证书进行客户端认证,证明服务器正在通信的对方始终是预料之内的客户端。这个在一些网上银行会有,比如登录网银时不仅 要求用户确认输入 ID 和密码,还会要求用户的客户端证书,就是用来确认用户是否从特定的终端访问网银。


  • 由自认证机构颁发的证书称为自签名证书
    通过使用 OpenSSL这套开源程序,每个人都可以构建一套属于自己的认证机构,从而自己给自己颁发服务器证书。但是这种证书浏览器很可能不认,访问时会显示“无法确认连接安全性”或“该网站的安全证书存在问题”等警告消息。


按理说,认证机构信誉第一,信用要绝对可靠。但是也存在遭到黑客入侵的风险。2011 年 7 月,荷兰的一家名叫 DigiNotar 的认证机构曾遭黑客不法入侵,颁布了 google.com 和 twitter.com 等网站的伪造证书事件。这一事件从根本上撼动了 SSL的可信度。


四、使用 SSL 影响了速度


SSL的慢分两种:通信慢、处理速度慢。


通信慢


和使用HTTP相比,HTTPS 除去和 TCP 连接、发送 HTTP 请求 • 响应以外,还必须进行 SSL通信,所以整体上处理通信量会增加。


相比之下,HTTPS 比 HTTP 要慢 2 到 100 倍


处理速度慢


由于 HTTPS 还需要做服务器、客户端双方加密、界面处理,因此会消耗更多的CPU和内存等硬件资源。


对此,没有根本性解决方案。不过有一种 SSL加速器(专用服务器)硬件可以来改善该问题。该硬件为 SSL通信专用硬件,相对软件来讲,能够提高数倍 SSL 的计算速 度。仅在 SSL 处理时发挥 SSL 加速器的功效,以分担负载。


五、为什么不一直使用 HTTPS


灵魂拷问:既然 HTTPS 那么安全可靠,那为何所有的 Web 网站不一直使用 HTTPS ?


原因 1


与纯文本通信相比,加密通信会消耗更多的 CPU 及内存资源。如果每次通信都加密,会消耗相当多的资源,平摊到一台计算机上时,能够处理的请求数量必定也会随之减少

而且有的web网站访问量很大,都加密处理,服务器鸭梨山大。


所以,一般对于敏感信息的处理,比如用户个人信息,才利用 HTTPS 加密通信。对一些其他非敏感的信息,就用 HTTP 通信即可。


原因 2


钱。


上面提到的证书是要花钱从认证机构那购买的。所以,那些购买证书并不合算的服务以及一些个人网站,可能只会选择采用 HTTP 的通信方式。

相关文章
|
3天前
|
安全 网络协议 网络安全
IP代理的三大协议:HTTP、HTTPS与SOCKS5的区别
**HTTP代理**适用于基本网页浏览,简单但不安全;**HTTPS代理**提供加密,适合保护隐私;**SOCKS5代理**灵活强大,支持TCP/UDP及认证,适用于绕过限制。选择代理协议应考虑安全、效率及匿名需求。
|
4天前
|
PHP
php 获取带http或https的域名
php 获取带http或https的域名
11 4
|
2天前
|
缓存 负载均衡 NoSQL
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
8 1
|
12天前
|
JavaScript
【干货】js判断url是否是合法http/https
【干货】js判断url是否是合法http/https
24 1
|
25天前
|
安全 前端开发 中间件
中间件中HTTP/HTTPS 协议
【6月更文挑战第3天】
18 3
|
26天前
|
网络协议 前端开发 Java
网络原理 - HTTP / HTTPS(4)——构造http请求
网络原理 - HTTP / HTTPS(4)——构造http请求
17 1
|
13天前
|
网络协议 安全 网络性能优化
HTTP、HTTPS和TCP的特点和三者的区别
TCP提供连接、可靠性、流量和拥塞控制,HTTP基于请求-响应模型且无连接、无状态,HTTPS则通过数字证书确保服务器身份验证和加密通信。
|
23天前
|
JSON 安全 Java
JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求
JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求
22 0
|
1天前
|
SQL 安全 网络安全
网络防线的守护者:探索加密技术与安全意识在现代网络安全中的角色
【6月更文挑战第28天】在数字时代的浪潮下,网络安全已成为保护个人隐私和企业资产的重要屏障。本文深入探讨了网络安全漏洞的成因,分析了加密技术如何成为防御策略的关键一环,并强调了提升公众安全意识的必要性。通过揭示网络攻击的常见模式、评估现有加密方法的有效性以及提出培养安全习惯的途径,文章旨在为读者提供一套综合性的网络防护知识体系,以期在日益复杂的网络环境中筑牢安全的防线。
12 4
|
3天前
|
安全 Java 网络安全
网络安全与信息安全:漏洞、加密技术与安全意识的三重奏
在数字时代的交响乐中,网络安全和信息安全扮演着至关重要的角色。本文将深入探讨网络安全的脆弱性,包括常见漏洞及其潜在威胁;阐述加密技术如何作为数据保护的坚固盾牌,以及它在现代通信中的应用;强调培养安全意识的必要性,并分享提升个人和组织安全防御能力的策略。通过结合最新的研究成果和实际案例分析,本文旨在为读者提供一场关于网络空间安全的全面剖析,揭示保护我们数字生活的关键要素。