浏览器安全之网络安全(HTTPS)
为什么要使用 HTTPS 协议
在将 HTTP 数据提交给 TCP 层之后,数据会经过用户电脑、WiFi 路由器、运营商和目标服务器,在这中间的每个环节中,数据都有可能被窃取或篡改。比如用户电脑被黑客安装了恶意软件,那么恶意软件就能抓取和篡改所发出的 HTTP 请求的内容。或者用户一不小心连接上了 WiFi 钓鱼路由器,那么数据也都能被黑客抓取或篡改。
什么是 HTTPS 协议
实际上就是在 HTTP 协议栈中引入安全层,所有经过安全层的数据都会被加密或者解密
安全层有两个主要的职责:
- 对发起 HTTP 请求的数据进行加密操作。
- 对接收到 HTTP 的内容进行解密操作。
下面一步步实现一个从简单到复杂的 HTTPS 协议
第一版:使用对称加密
对称加密是指加密和解密都使用的是相同的密钥。
- 浏览器端弄个随机数(
client-random
),并发送它所支持的加密套件列表(指浏览器能支持多少种加密方法列表)。 - 服务器从发过来的加密套件列表里选择一个,并也整个随机数(
service_random
),并返回给浏览器 - 浏览器跟服务器分别返回确认信息。
按加密套件算法,将client-random
和service-random
混合起来生成一个密钥master secret
,然后基于这个密钥进行数据的加密传输。
缺点:
由于 client-random
与 service-random
都是明文传输,所以会被截获。
黑客拿到协商的加密套件和双方的随机数,生成密钥。
第二版:使用非对称加密
非对称加密算法有 A、B 两把密钥,如果你用 A 密钥来加密,那么只能使用 B 密钥来解密;反过来,如果你要 B 密钥来加密,那么只能用 A 密钥来解密。
- 浏览器发送它所支持的加密套件列表。
- 服务器会生成个公钥跟私钥,公钥是给浏览器加密使用的,所以将公钥跟选择的加密套件返回
- 浏览器跟服务器分别返回确认信息。
这样浏览器向服务端发送数据时,就可以采用公钥来加密数据,由于公钥的数据只有对应的私钥才能解密,即便黑客截取了数据和公钥,也是无法解密的。
缺点:
- 非对称加密的效率太低
- 无法保证服务器发送给浏览器的数据安全,因为服务端是采用私钥加密的,而黑客是可以拦截到公钥,这样服务端返回的数据就得不到保障。
第三版:对称加密和非对称加密搭配使用
在传输数据阶段依然使用对称加密,但是对称加密的密钥我们采用非对称加密来传输。
- 浏览器端弄个随机数(
client-random
),并发送它所支持的加密套件列表和非对称加密套件列表。 - 服务器会生成个公钥和私钥,并弄个随机数(
service-random
),返回该随机数、公钥、选择的加密套件、非对称加密套件 - 浏览器再生成个随机数
pre-master
,并采用公钥加密,进行浏览器确认 - 最后服务器拿出自己的私钥,解密出
pre-master
数据,并返回确认消息。
这样浏览器跟服务器就有了一致 client-random
, service-random
,pre-master
,根据这些生成对称密钥,由于两端采用的是一套对称加密套件,所以生成的密钥是一致的。
pre-master
是经过公钥加密之后传输的,所以黑客无法获取到 pre-master
,这样黑客就无法生成密钥,也就保证了黑客无法破解传输过程中的数据了。
缺点:
黑客通过 DNS
劫持将你所在官网的 IP 地址替换成了黑客的 IP 地址。
即无法证明服务器是可靠的。
第四版:添加数字证书
需要服务器向浏览器提供证明“我就是我”:
使用权威机构颁发的证书,这个权威机构称为 CA(Certificate Authority),颁发的证书就称为数字证书(Digital Certificate)。
对于浏览器来说,数字证书作用:
- 一个是通过数字证书向浏览器证明服务器的身份
- 另一个是数字证书里面包含了服务器公钥。
两点改造: - 服务器没有直接返回公钥给浏览器,而是返回了数字证书,而公钥包含在数字证书中;
- 在浏览器端多了一个证书验证的操作,验证了证书之后,才继续后续流程。
HTTPS 的握手过程
- 首先是
tcp
的三次握手建立连接 client
发送random1
+支持的加密算法集合(clientHello
)server
收到信息,返回选择一个加密算法 +random2
(serverHello
)+ 证书+ 确认clent
验证证书有效性,并生成随机数pre-master
,并通过服务器公钥加密 发送给server
server
收到premaster
,根据约定的加密算法对random1
+random2
+premaster
(解密)生成master-secret
,然后发送预定成功client
收到生成同样的master-secert
,对称加密秘钥传输完毕
浏览器安全之网络安全(HTTPS)相关推荐
- 谷歌chrome浏览器把不是https的网站标注为不安全
站长注意了,谷歌chrome浏览器把不是https的网站标注为不安全. 现在chrome浏览器市场占有率很高,大概在60%,所以站长还是把网站升级成https吧,安装一下SSL证书. 网络安全越来越重 ...
- 浏览器自动转到外国服务器,通过HSTS实现浏览器自动跳转https(非服务器响应跳转)...
全称 HTTP Strict Transport Security HSTS目的是让浏览器在访问网站的时候浏览器内部自动实现https协议访问(不需要服务器告诉浏览器跳转https). 在没有hsts ...
- 开启HSTS让浏览器强制跳转HTTPS访问
开启HSTS让浏览器强制跳转HTTPS访问 来源 https://www.cnblogs.com/luckcs/articles/6944535.html 在网站全站HTTPS后,如果用户手动敲入网站 ...
- 设置Web浏览器的HTTP或HTTPS代理(设置网页IP代理)
[1]设置Web浏览器的HTTP或HTTPS代理: 原理:非常简单,修改注册表中的两个键值,然后调用InternetSetOption函数更新即可. 步骤: 1.打开注册表:HKEY_CURRENT_ ...
- 浏览器安全——Web页面安全浏览器网络安全(HTTPS)浏览器系统安全
一.Web页面安全 同源和跨域: 什么是同源?如果两个页面拥有相同的协议(scheme).域名(host)和端口(port)(http默认port80,https默认端口号443),那么这两个页面具有 ...
- 浏览器同部署了https的服务器交互的过程
1 浏览器发起https请求 2 https服务器发送自己的公钥给浏览器 3 浏览器用https服务器发送过来的公钥加密一个用于双方通信的的对称密码 4 https服务器用自己的私钥解密,获取对称密码 ...
- charles浏览器抓包https_charles https抓包
1. 配置 Charles 根证书 首先打开 Charles: Charles 启动界面 主界面 然后如下图操作: 之后会弹出钥匙串,如果不弹出,请自行打开钥匙串,如下图: 钥匙串 系统默认是不信任 ...
- 浏览器是如何验证HTTPS证书合法性的?
一个新的网站去买了ca证书,用户通过浏览器去访问,这时候浏览器如何去验证这个证书的正确性,防止被中间人攻击? 是需要到ca网站上去验证吗还是什么? 下文通过介绍https证书的结构组成和浏览器如何验证 ...
- 为什么Chrome浏览器会告诉你HTTPS站点是“安全的
2019独角兽企业重金招聘Python工程师标准>>> 为配合挂锁图标,7个选项被进行测试,其中包括"私有的"和"加密的"...... 去年1 ...
最新文章
- R语言可视化包ggplot2绘制线性回归模型曲线实战( Linear Regression Line)
- Android中View绘制流程以及invalidate()等相关方法分析
- Windows文件被占用解决办法
- HDU-6290 奢侈的旅行 2018女赛 Dijkstra堆优化
- 解决cc1plus.exe: out of memory allocating bytes
- ACM数论之旅4---扩展欧几里德算法(欧几里德(・∀・)?是谁?)
- 点分治(简要讲解 + 模板)
- Tomacat乱码解决
- centos-7.2 node.js免编译安装
- python执行批处理文件_如何从Python中执行批处理文件,从而改变调用进程的环境?...
- 无插件实现大文件分片上传,断点续传
- 前端模板技术的全面总结
- CocoaPods pod install的时候报错:invalid byte sequence in UTF-8 (ArgumentError)解决办法
- Chrome 快捷键
- php 上传图片 裁剪,thinkphp_图片上传裁剪功能_已迁移
- 在Linux中连接和使用云存储的三种途径
- 会员管理系统,建议收藏!
- 美国空运专线 美国空运专线时效多久
- 计算机存储1pb等于多少kb,存储容量:1TB等于多少GB?1PB等于多少TB?1EB等于多少PB?
- 网络安全的魔法——社会工程学