HTTP与HTTPS相关介绍
- HTTP与HTTPS简述
- HTTPS和HTTP的区别主要如下
- HTTPS的工作原理
- 前言
- 工作步骤
- 总结
- HTTPS的缺点
- SSL与TLS
- SSL:
- TLS:
- TLS和SSL的关系
- 对称加密与非对称加密
- 对称加密
- 非对称加密
HTTP与HTTPS简述
超文本传输协议(Hyper Text [Transfer Protocol](https://baike.baidu.com/item/Transfer Protocol/612755?fromModule=lemma_inlink),HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供数据加密,如果中间人截取了浏览器和服务器间的传输报文,就可以获得其中的信息,所以,HTTP协议不适合传输一些敏感信息。因此,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。
HTTPS (Hypertext Transfer Protocol Secure),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面
简单来说:
- http 协议:不安全,未加密
- https 协议:安全,对请求报文和响应报文做加密
HTTPS和HTTP的区别主要如下
- https协议需要到ca申请证书,一般免费证书较少,需要一定费用。
- http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
- http 和 https 使用的是完全不同的连接方式,用的端口也不一样,HTTP 的端⼝号是 80,HTTPS 的端⼝号是 443。
- HTTP 连接建⽴相对简单, TCP 三次握⼿之后便可进⾏ HTTP 的报⽂传输,是无状态的。⽽ HTTPS 在 TCP 三次握⼿之后,还需进⾏ SSL/TLS 的握⼿过程,才可进入加密报文传输。比http协议安全。
HTTPS的工作原理
前言
第一:HTTPS实现了加密通信,加密了通信,然后就可以安全通信了吗?
不能,不管是对称加密,还是非对称加密,都是明文传输,中间人都可以知道。
对称加密:传输的时候客服端发送时会把请求报文和秘钥一同发过去,中间人可以就会获得会话秘钥,从而篡改和截取数据。
非对称加密:公匙不是保密的,任何人都可以拿到,中间人也可以,中间人可以做两件事,第一,中间人可以在客户端与服务器交换公匙的时候,将服务端的公匙替换成自己的。这样客户端拿到的公匙将不是服务端的,而是中间人的。客户端无法判断正确性。第二件中间人可以不替换公匙,他可截获客户端的消息,篡改,然后用服务器的公匙加密发给服务器,服务器将说不到客户端正确的信息。
第二:如何解决不让中间人截获篡改数据呢。
引入公信机构CA,服务端把自己的公钥给 CA,让 CA 用 CA 的私钥加密,返回加密结果,然后用CA的公钥解密,就算中间人有CA的公钥,如果要篡改结果,必须再次用 CA 的私钥加密,但是中间人没法获取私钥,所以无法篡改。从而可使得我们传输自己的公钥时可以保证不会被篡改。
工作步骤
步骤图片
第一步:网站A 获取CA公信机构的认证证书
-
首先要拥有自己的 公钥A 和 私钥A
-
在找认证机构 生成 网站A证书,获取到证书并保存在服务器中。
证书包含的信息:
- 网站的域名,证书有效期,⽤途、颁发者
- 网站自己的公钥A等
第二步:客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。客户端请求获取 网站A证书
**第三步:**Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
**第四步:**客户端自己操作系统内置的机构证书进行认证用 机构公钥 解密 网站A证书
- 解密成功:获取 网站A公钥,只要解密成功,就说明 证书是机构认证的,证书是可信的,从而公钥就是可信的。
- 解密失败:认证失败
第五步:需要客户端将自己对称加密算法生成的会话秘钥发给服务器
- 使用对称加密算法生成会话秘钥B(对称加密密钥)。
- 使用网站A公钥对会话秘钥B做加密,并发给服务器,服务器拿到了会话密钥,中间人没有所以,就无法截取和篡改内容了。
**最后一步:**这样就建立了通信,再然后再将要传输的明文通过会话密钥加密传输至服务器,然后服务器先前已经拿到了会话密钥并解密了。这样就解决非对称加密对于传输数据过大而导致的效低下的问题和对称加密的不安全问题。
总结
①. 在通信建⽴前采⽤⾮对称加密的⽅式,后续就不再使⽤⾮对称加密,使得中间人无法截取和篡改内容。
②. 在通信过程中全部使⽤对称加密的⽅式加密明⽂数据,因为中间人没有会话密钥。
③. 采⽤「混合加密」的⽅式的原因:
- 对称加密只使⽤⼀个密钥,运算速度快,密钥必须保密,⽆法做到安全的密钥交换。
- ⾮对称加密使⽤两个密钥:公钥和私钥,公钥可以任意分发⽽私钥保密,解决了密钥交换问题但速度慢。
HTTPS的缺点
-
HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。
-
HTTPS未经任何优化的情况下要比HTTP慢几百毫秒以上。
-
HTTPS要额外计算,要频繁地做加密和解密操作,几乎每一个字节都需要做加解密,这就产生了服务器成本。、
-
SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
-
大量的计算。SSL的每一个字节都涉及到较为复杂的计算。
SSL与TLS
SSL:
(Secure Socket Layer,安全套接字层)。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。
SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
安全套接层是Netscape公司率先采用的网络安全协议。它是在传输通信协议(TCP/IP)上实现的一种安全协议,采用公开密钥技术。SSL广泛支持各种类型的网络,同时提供三种基本的安全服务,它们都使用公开密钥技术。如下:
(1)信息保密:通过使用公开密钥和对称密钥技术以达到信息保密。
(2)信息完整性:确保SSL业务全部达到目的。SSL利用机密共享和hash函数组提供信息完整性服务。
(3)双向认证:客户机和服务器相互识别的过程。它们的识别号用公开密钥编码,并在SSL握手时交换各自的识别号。为了验证证明持有者是其合法用户。
TLS:
(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。TLS是HTTP与TCP协议之间的一层,通常TLS发生在TCP三次握手之后,此时进行TLS四次握手,然后再进行HTTP通信。TLS记录协议用于封装各种高层协议。作为这种封装协议之一的握手协议允许服务器与客户机在应用程序协议传输和接收其第一个数据字节前彼此之间相互认证,协商加密算法和加密密钥。
TLS包含三个基本阶段:
- 对等协商支援的密钥算法
- 基于非对称密钥的信息传输加密和身份认证、基于PKI证书的身份认证
- 基于对称密钥的数据传输保密
TLS和SSL的关系
IETF将SSL标准化,即RFC 2246,并将其称为TLS(Transport Layer Security)。从技术上讲,TLS 1.0与SSL 3.0的差异非常微小。TLS 1.0是SSL 3.0的后续版本。在TLS与SSL3.0之间存在着显著的差别,主要是它们所支持的加密算法不同,所以TLS与SSL3.0不能互操作。
TLS的主要目标是使SSL更安全,使协议规范更精确完善。 在SSL v3.0 的基础上,提供了增强内容:
- 更安全的MAC算法
- 更严密的警报
- “灰色区域”规范的更明确的定义
对称加密与非对称加密
对称加密
对称加密指的就是加密和解密使用同一个秘钥,所以叫对称加密。 对称加密只有一个秘钥,作为私钥。
加密过程:
加密: 原文+密钥 = 密文
解密:密文-密钥 = 原文
常见的对称加密算法: DES, AES, 3DES等
-
特点:
加解密使用 相同 秘钥 高效,适用于大量数据加密场景算法公开,安全性取决于秘钥大小,但秘钥越大效率越低,需要权衡在安全和效率中做权衡。
-
缺点:
算法本身安全,但使用场景不够安全,因为解密和加密都是同一个秘钥,密文如果被拦截,且密钥被劫持,那么信息很容易被破译。
非对称加密
- 加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥,私匙只有自己可见。 公钥加密的信息,只有私钥才能解密。
私钥加密的信息,只有公钥才能解密。 - 使用公有密匙加密的消息,只有对应的私有密匙才能解开。反过来,使用私有密匙加密的消息,只有公有密匙才能解开。这样客户端在发送消息前,先用服务器的公匙对消息进行加密,服务器收到后再用自己的私匙进行解密。
- 注意:公钥加密的数据 只能 用 对应的私钥解密,同理,私钥加密的数据 只能用 对应的公钥解密
- 算法:RSA、ECC、Elgamal、背包算法、Rabin、D-H 等
- 特点:安全性高
- 缺点:加解密复杂,效率低,耗时较长
- 用法概要:
- 加密:对数据做加密
- 签名:证明数据是谁发的
非对称加密的性能相对对称加密来说会慢上几倍甚至几百倍,比较消耗系统资源。正是因为如此,https将两种加密结合了起来。
借鉴文章:
https://blog.csdn.net/cxu123321/article/details/108830863
https://blog.csdn.net/amy_wang_1994/article/details/124837779
https://blog.csdn.net/qq_35642036/article/details/82788421
https://juejin.cn/post/7036551179517558791