引言
我们在一些浏览器的地址栏可以看见有些网站显示安全,有些网站显示不安全,那么什么是安全的?什么是不安全的?在2017年1月发布的Chrome 56浏览器开始收集密码或信用卡数据的HTTP页面标记为"不安全",用户使用Chrome 62,带有输入数据的HTTP页面和所有以无痕模式浏览的HTTp页面都会被标记"不安全",此外,苹果公司强制所有IOS APP在2017年1月1日使用HTTPS加密
HTTP和HTTPS发展史
什么是HTTP?
HTTP超文本传输协议,是一个基于请求响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有www文件都必须遵守这个协议.设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法.
版本 | 产生时间 | 内容 | 发展现状 |
---|---|---|---|
HTTP/0.9 | 1991年 | 不涉及数据包传输,规定客户端和服务器之间通信格式,只能GET请求 | 没有作为正式的标准 |
HTTP/1.0 | 1996年 | 传输内容格式不限制,增加PUT、PATCH、HEAD、 OPTIONS、DELETE命令 | 正式作为标准 |
HTTP/1.1 | 1997年 | 持久连接(长连接)、节约带宽、HOST域、管道机制、分块传输编码 | 2015年前使用最广泛 |
HTTP/2 | 2015年 | 多路复用、服务器推送、头信息压缩、二进制协议等 | 逐渐覆盖市场 |
HTTP 和 HTTPS区别
HTTP特点:
- 无状态: 协议对客户端没有存储状态,对事物处理没有记忆能力,比如访问一个网站需要反复进行登录CEO做
- 无连接: HTTP/1.1之前,由于无状态的特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接.
- 基于请求和响应: 基本的特性,有客户端发起请求,服务券响应
- 简单,灵活
- 通信使用明文,请求和响应不会对通信方进行确认,无法保护数据的完整
HTTPS特点:
基于HTTP协议,通过SSL或LTS提供加密处理数据,验证对方身份以及数据完整性保护
- 内容加密: 采用混合加密技术,中间者无法直接查看明文内容
- 验证身份: 通过整数认证客户端访问的是自己的服务器
- 保护数据完整性: 防止传输的内容被中间人冒充或篡改
**混合加密:**结合非对称加密和对称加密技术。客户端使用对称加密生成密钥对传输数据进行加密,然后使用非对称加密的公钥再对秘钥进行加密,所以网络上传输的数据是被秘钥加密的密文和用公钥加密后的秘密秘钥,因此即使被黑客截取,由于没有私钥,无法获取到加密明文的秘钥,便无法获取到明文数据。
**数字摘要:**通过单向hash函数对原文进行哈希,将需
加密的明文“摘要”成一串固定长度(如128bit)的密文,不同的明文摘要成的密文其结果总是不相同,同样的明文其摘要必定一致,并且即使知道了摘要也不能反推出明文。
**数字签名技术:**数字签名建立在公钥加密体制基础上,是公钥加密技术的另一类应用。它把公钥加密技术和数字摘要结合起来,形成了实用的数字签名技术。
- 收方能够正式发送方真实身份;
- 发送方事后不能否认所发送过的报文;
- 收方或非法这不能伪造,篡改报文;
HTTP通信传输
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Q9zeYj5-1615427391529)(https://i.loli.net/2020/11/02/41RQvteZazUD3g9.jpg)]
客户端输入URL回车,DNS解析域名得到服务器的IP地址,服务器在80端口监听客户端请求,端口通过TCP/IP协议(可以通过Socket实现)建立连接.HTTP属于TCP/IP模型中的应用层,所以通信的过程其实是对应数据的入栈和出栈
什么是HTTPS
一. 引言
1990年互联网诞生之初,就开始用超文本传输协议HTTp传输数据,这也是为什么现在网页地址都是以http开头的原因.但是HTTP协议传输数据是明文传输,任意的人抓包就能看到传输的数据,这显然不安全,1994年,Netscape公司加密协议增加了HTTP,开始在HTTP的基础上加入SSL (Secure Socket Layer).称为"HTTP over SSL"或者"HTTP Secure",也就是我们现在熟知的HTTPS
二. SSL/TLS
SSL(SSL 是洋文“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。)/TLS(TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”。)很多相关的文章都把这两者并列称呼(SSL/TLS),因为这两者可以视作同一个东西的不同阶段。SSL/TLS是位于TCp/IP协议中的的会话层,用于认证用户和服务器.加密数据以及维护数据的完整性,确保在传输过程中不会修改
SSL/TLS分为对称加密和非对称加密两种
对称加密
对称加密是指加密和解密都用同一份秘钥
常用的对称加密算法有AES-128,AES-192,AES-256.
非对称加密
非对称加密对应一对秘钥,称为私钥和公钥,用私钥加密后需要用公钥解密,用公钥加密后需要使用私钥进行解密
对称加密的有点是运算速度快,缺点是互联网环境下无法将秘钥安全的传给对方.非对称加密的有点是可以安全的将公钥传递给对方,但是运算速度慢
那么HTTPS究竟是采用对称加密还是非对称加密呢?答案是都有.先采用对称加密传输协商对称加密的秘钥,然后对称加密通信
HTTPS过程是这样的
- 客户端浏览器发起连接
- WEB服务器将公钥发给客户端
- 客户端生成一个session key,并且将session key用公钥加密后发送给服务器
- 服务器用私钥将session key解密出来
- 客户端和服务器用session key做对称加密通信
SSL建立连接过程详细
- client向server发送请求https://baidu.com,然后连接到server的443端口,发送的信息主要是随机值1和客户端支持的加密算法。
- server接收到信息之后给予client响应握手信息,包括随机值2和匹配好的协商加密算法,这个加密算法一定是client发送给server加密算法的子集。
- 随即server给client发送第二个响应报文是数字证书。服务端必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面,这套证书其实就是一对公钥和私钥。传送证书,这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间、服务端的公钥,第三方证书认证机构(CA)的签名,服务端的域名信息等内容。
- 客户端解析证书,这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值(预主秘钥)。
- 客户端认证证书通过之后,接下来是通过随机值1、随机值2和预主秘钥组装会话秘钥。然后通过证书的公钥加密会话秘钥。
- 传送加密信息,这部分传送的是用证书加密后的会话秘钥,目的就是让服务端使用秘钥解密得到随机值1、随机值2和预主秘钥。
- 服务端解密得到随机值1、随机值2和预主秘钥,然后组装会话秘钥,跟客户端会话秘钥相同。
- 客户端通过会话秘钥加密一条消息发送给服务端,主要验证服务端是否正常接受客户端加密的消息。
- 同样服务端也会通过会话秘钥加密一条消息回传给客户端,如果客户端能够正常接受的话表明SSL层连接建立完成了。
运用与总结
安全性考虑:
- HTTPS的加密范围比较有限,在黑客攻击,拒绝服务攻击,服务器劫持等方面几乎起不到什么作用
- SSL整数的信用链体并不安全,特别是在某些国家可以控制CA整数的情况下,中间人攻击一样可以
成本考虑:
- SSL整数需要购买申请,功能强大的整数费用越高
- SSL证书通常需要绑定IP,不能在同一个IP上绑定多个域名,IPv4资源不可能支撑这个消耗
- 根据ACM CoNEXT数据显示,使用HTTPS协议会使页面的加载时间延长近50%,增加10%到20%的耗电。
- HTTPS连接缓存不如HTTP高效,流量成本高。
- HTTPS连接服务器端资源占用高很多,支持访客多的网站需要投入更大的成本。
- HTTPS协议握手阶段比较费时,对网站的响应速度有影响,影响用户体验。比较好的方式是采用分而治之,类似12306网站的主页使用HTTP协议,有关于用户信息等方面使用HTTPS。