网络编程——Https

HTTPS是HTTP协议的安全版,通过SSL/TLS提供数据加密、服务器身份验证和数据完整性保护。HTTPS结合了对称加密和非对称加密,使用证书确保通信安全。在连接建立过程中,客户端与服务器通过交换公钥和随机密钥进行加密,防止窃听、篡改和冒充。尽管HTTPS存在性能和经济上的缺点,但其安全特性对于保护敏感信息至关重要。

HTTP协议特点

1、HTTP协议以明文形式传输数据,
      为了数据传输的安全,在HTTP 的基础上加入了 SSL 协议,SSL 依靠证书来验证服务器的身份。即,HTTPS。

2、Http是无状态协议,它通过Cookie/Session技术实现状态保存
      比如:电商需要对用户一段时间的HTTP通信状态进行保存,执行一次登陆操作,在30分钟内所有的请求都不需要再次登陆。


3、有限的持久连接,HTTP/1.1持久连接(HTTP keep-alive)方法,只要任意一端没有明确提出断开连接,则保持TCP连接状态,在请求首部字段中的Connection: keep-alive即为表明使用了持久连接。 

 

HTTP协议缺陷

Http三大风险

(1) 窃听风险:第三方可以获知通信内容。 明文,数据加密
(2) 篡改风险:第三方可以修改通信内容。 明文没有校验,数据完整性保护
(3) 冒充风险:第三方可以冒充他人身份参与通信。 身份验证

 

HTTPS

优势

基于HTTP协议,通过SSL,提供数据加密、身份验证以及数据完整性保护。https传输的数据不是明文的。

HTTPS有如下特点:

内容加密:采用混合加密技术,中间者无法直接查看明文内容
验证身份:通过证书认证客户端访问的是自己的服务器
保护数据完整性:防止传输的内容被中间人冒充或者篡改

收方能够证实发送方的真实身份;
发送方事后不能否认所发送过的报文;
收方或非法者不能伪造、篡改报文。

 

HTTPS 传输更加安全

  • 所有信息都是加密传播,黑客无法窃听。
  • 具有校验机制,一旦被篡改,通信双方会立刻发现。
  • 配备身份证书,防止身份被冒充。

https加密是在传输层

https报文在被包装成tcp报文的时候完成加密的过程,无论是https的header域也好,body域也罢都是会被加密的。

当使用tcpdump或者wireshark之类的tcp层工具抓包,获取是加密的内容,而如果用应用层抓包,使用Charels(Mac)、Fildder(Windows)抓包工具,那当然看到是明文的。

加密 

对称加密

对称加密,双方拥有相同的密钥,信息得到安全传输

对称加密的缺点:

(1)客户端、服务器数量庞大,如果双方都维护大量的密钥,维护成本很高
(2)因每个客户端、服务器的安全级别不同,密钥极易泄露

非对称加密

非对称加密过程需要用到公钥进行加密,公钥被包含在数字证书中,数字证书由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,证书中包含了一个密钥对(公钥和私钥)和所有者识别信息。数字证书被放到服务端,具有验证服务器身份和数据加密功能。

HTTPS通常使用的加密算法与HASH算法如下:

非对称加密算法:RSA,DSA/DSS
对称加密算法:AES,RC4,3DES
HASH算法:MD5,SHA1,SHA256

为了兼顾安全与效率,HTTPS同时使用了对称加密和非对称加密。传输的数据是被对称加密的,对称加密过程需要客户端的一个密钥,为了确保能把该密钥安全地传输到服务器端,采用非对称加密对该密钥进行加密传输,总的来说,对数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。

HTTPS在传输的过程中会涉及到三个密钥:

服务器端的公钥和私钥,用来进行非对称加密
客户端生成的随机密钥,用来进行对称加密

一个HTTPS请求细节

一个HTTPS请求,包含了两次HTTP传输。

  1. 客户端向服务器发起HTTPS请求,连接到服务器的443端口。
  2. 服务器端有一个密钥对,即公钥和私钥,是用来非对称加密的,服务器端妥善保管私钥(不能泄露),公钥向世界公开。
  3. 服务器将包含公钥的由CA认证签发的数字证书,发送给客户端。
  4. 客户端收到服务器端发来的证书后,验证数字证书的合法性,如果证书有问题,HTTPS请求就此终止。
    如果证书没问题,客户端会生成一个随机值,这个随机值就是用于对称加密的密钥,为了与服务器端的密钥区分,我们称之为client key,即客户端密钥。然后用服务器的公钥对客户端的密钥(随机值)进行非对称加密,这样客户端密钥就变成密文了,HTTPS中的第一次HTTP请求就此结束。
  5. 到此时,客户端会发起(HTTPS中的)第二个HTTP请求,将加密后的客户端密钥发送给服务器。
  6. 服务器接收到客户端发来的密文(客户端密钥)之后,会用自己的私钥对其进行非对称解密,解密后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。
  7. 然后服务器将加密后的密文发送给客户端。
  8. 客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成。

SSL/TLS 是什么

SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。

TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本由网景公司开发,1999年开始被标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。目前使用最广泛的是TLS 1.1、TLS 1.2。

SSL及其继任者TLS是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

SSL 协议提供的安全通道有以下三个特性:

机密性:SSL 协议使用密钥加密通信数据。
可靠性:服务器和客户都会被认证,客户的认证是可选的。
完整性:SSL 协议会对传送的数据进行完整性检查

SSL 证书

SSL 证书是数字证书的一种,因为配置在服务器上,也称为 SSL 服务器证书。类似于驾驶证、护照和营业执照的电子副本。

SSL 证书就是遵守 SSL 协议,由受信任的数字证书颁发机构 CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。

SSL 证书依据功能和品牌不同分类有所不同,但 SSL 证书作为国际通用的产品,最为重要的便是产品兼容性(即证书根预埋技术),因为他解决了网民登录网站的信任问题,网民可以通过 SSL 证书轻松识别网站的真实身份。

总结一下,HTTP 和 HTTPS 都是超文本传输协议,HTTPS 属于加密类型,但需要在服务器安装 SSL 数字证书实现。

权威机构CA的公钥不用传输,会直接内置在各大操作系统(或者浏览器)的出厂设置里。 操作系统只会存储权威机构的公钥。因为权威机构数量有限,所以操作系统厂商相对来说容易管理。各个公司要先去权威机构(CA)认证,申请证书。

 

HTTPS的缺点

技术方面

1、HTTPS连接缓存不如HTTP高效,大流量网站如非必要也不会采用,流量成本太高。使用HTTPS协议会使页面的加载时间延长近50%,增加10%到20%的耗电,此外,HTTPS协议还会影响缓存,增加数据开销和功耗,甚至已有安全措施也会受到影响也会因此而受到影响。

2、HTTPS协议的安全是有范围的,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。

3、HTTPS 肯定会慢一点,时间主要花费在两组 SSL 之间的耗时和证书的读取验证上,对称算法的加解密时间几乎可以忽略不计。

经济方面

SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。

 

其他方面

最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值