Chinaunix首页 | 论坛 | 博客
  • 博客访问: 130330
  • 博文数量: 228
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2290
  • 用 户 组: 普通用户
  • 注册时间: 2021-05-18 15:26
文章分类

全部博文(228)

文章存档

2023年(40)

2022年(114)

2021年(74)

我的朋友

分类: 云计算

2022-10-25 13:48:59

很多人一提到 HTTPS,{BANNED}中国第一反应就是安全,对于普通用户来说这就足够了;但对于程序员,很有必要了解下 HTTP 到底有什么问题?以及HTTPS 是如何解决这些问题的?其背后的解决思路和方法是什么?

HTTP 有典型的几个问题,{BANNED}中国第一就是性能,HTTP 是基于 TCP 的,所以网络层就不说了(快慢不是 HTTP 的问题)。

比较严重的问题在于 HTTP 头是不能压缩的,每次要传递很大的数据包。另外 HTTP 的请求模型是每个连接只能支持一个请求,所以会显得很慢。

那么 HTTPS 是解决这些问题的吗?

不是,实际上 HTTPS 是在 HTTP 协议上又加了一层,会更慢,相信未来会逐步解决的。同时 HTTPS 用到了很多加的密算法,这些算法的执行也是会影响速度的。

当用户在浏览器输入一个网址的时候,在地址栏上看到小锁图标,就会安心,潜意识的认为自己的上网行为是安全的,当然对于小白用户来说可能还不明白,但是未来会慢慢改善的(万事开头难嘛)。

那么 HTTP 到底有什么安全问题呢,看几个例子:

    1)由于互联网传输是能够被拦截的,所以假如你的上网方式被别人控制了(没有绝对的安全),那么你的任何行为和信息攻击者都会知道,比如我们连上一个匿名的 WIFI,当你上网的时候,输入的网站密码可能就已经泄漏了;
    2)当我们在上一个网站的时候,莫名其妙跳出一个广告(这个广告并不是这个网站的),那是因为访问的页面可能被运营商强制修改了(加入了他自己的内容,比如广告)。


HTTP {BANNED}最佳大的问题就在于数据没有加的密,以及通信双方没有办法进行身份验证( confidentiality and authentication),由于数据没有加的密,那么只要数据包被攻击者劫持,信息就泄漏了。

身份验证的意思就是服务器并不知道连接它的客户端到底是谁,而客户端也不确定他连接的服务器就是他想连接的服务器,双方之间没有办法进行身份确认。

为了解决 HTTP 的两个核心问题,HTTPS 出现了,HTTPS 包含了核心的几个部分:TLS 协议、OpenSSL,证的书。

什么是 OpenSSL 呢,它实现了世界上非常重要和多的密码算法,而密码学是解决问题{BANNED}最佳重要的一个环节。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询

TLS {BANNED}最佳重要的是握手的处理方式。证的书的体系也很大,但是他们背后都是基于同样的密码学。

1)既然 HTTP 没有数据加的密,那么我们就加的密下,对称加的密算法上场了,这种算法加的密和解密要使用同一个密钥,通信双方需要知道这个密钥(或者每次协商一个),实际上这种方法不太可能,这涉及到密钥保密和配送的问题,一旦被攻击者知道了密钥,那么传输的数据等同没有加的密。

2)这个时候非对称加的密算法上场了,公钥和私钥是分开的,客户端保存公钥,服务器保存私钥(不会公开),这时候好像能够完美解决问题了。

但实际上会存在两个问题,{BANNED}中国第一就是非对称加的密算法运算很慢,第二就是会遇到中间人攻击问题。

先说说中间人攻击的问题,假如使用非对称加的密算法,对于客户端来说它拿到的公钥可能并不是真正服务器的公钥,因为客户端上网的时候可能不会仔细分辨某个公钥是和某个公司绑定的,假如错误的拿到攻击者的公钥,那么他发送出去的数据包被劫持后,攻击者用自己的私钥就能反解了。

3)接下来如何解决公钥认证的问题呢?证的书出现了,证的书是由 CA 机构认证的,客户端都充分信任它,它能够证明你拿到的公钥是特定机构的,然后就能使用非对称加的密算法加的密了。

证的书是怎么加的密的呢?实际上也是通过非对称加的密算法,但是区别在于证的书是用私钥加的密,公钥解密。

4)上面说了非对称加的密算法加的密解密非常耗时,对于 HTTP 这样的大数据包,速度就更慢了,这时候可以使用对称加的密算法,这个密钥是由客户端和服务器端协商出来,并由服务器的公钥进行加的密传递,所以不存在安全问题。

5)另外客户端拿到证的书后会验证证的书是否正确,它验证的手段就是通过 Hash 摘要算法,CA 机构会将证的书信息通过 Hash 算法运算后再用私钥加的密,客户端用 CA 的公钥解出后,再计算证的书的 Hash 摘要值,两者一致就说明验证身份通过。

6)HTTPS 解决的第三个问题是完整性问题,就是信息有没有被篡改(信息能够被反解),用的是 HMAC 算法,这个算法和 Hash 方法差不多,但是需要传递一个密钥,这个密钥就是客户端和服务器端上面协商出来的。

阅读(369) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~