用 HTTP 数据加密和 HTTPS 有什么区别?

发布于 2017-03-03 13:25:14

HTTPS 是将传输数据加密,如果用 HTTP 协议但将数据加密后再进行传输,这两者有什么区别,我觉得没什么区别


查看更多

关注者
2
被浏览
3.5k
6 个回答
PANDA墨森
PANDA墨森 2017-04-19

从原理上来说,题目的观点没错,“加密内容在公开信道传输”并不比“未加密内容在加密信道传输”更不安全;但是,在实际应用中,还是有不同的:前一种方式下,接收方要解密内容,就需要拿到发送方使用的密钥;如果不能保证密钥传递是可靠且隐秘的,就没什么安全性可言。可如何安全地传递密钥呢?这实际上与建立“加密信道”的过程基本一致。


ONTH3ROAD
ONTH3ROAD 2017-08-19

HTTP 是应用层上的纯文本协议,就是说,从传输层 socket 拿到字节再将它们转换成字符串之后看到的内容就是另一端发给你的内容,毫无秘密可言。如果有人在传输过程中的某个节点劫持传输的数据,就能完完全全地读取到 Client 与 Server 之间传输的内容,你传的是用户名和密码,那就悲剧了。

为了避免这种悲剧发生,就有了 HTTPS,S 代表 SSL,也可以是 TLS,可以将 TLS 理解为 SSL 3.1 版本。

HTTPS 主要解决了两个问题,

  1. 加密:如何防止通信内容被直接读取
  2. 信任:如何确认正在通信的服务器就是想要通信的服务器

先说加密,为了不让别人看到发送的文本,就需要先对文本进行加密,加密一般有两种方式,对称加密和非对称加密。对称加密只需要一个密钥,通信双方都用同一个密钥进行加密和解密;非对称加密需要一个密钥对,公钥和私钥对,由通信的一方(服务器)创建,保留私钥,将公钥发给另一方(客户端)。凡是用公钥加密过的信息,只能由私钥进行解密。你自然会想到,只要在发起 HTTP 请求前,先从服务器拿到公钥,然后将 HTTP 内容用公钥加密后发送给服务器就可以保证不会被别人读到。加密过的内容确实只能由服务器的私钥解密过后才能读取到。

但是还有一种情况,在请求公钥的过程中,有坏人在中间假扮真正的服务器,发给你自己的公钥,之后再一直跟你通信,那你发送的内容都被坏人看到了。这就引出了如何验证服务器的身份问题。为了解决这个问题,人们整了一个可信的第三方,叫做 CA,由它来协助验证服务器。服务器向 CA 提供服务器的信息,CA 会生成一个密钥对(公钥和私钥)以及一个证书,其中公钥是证书的一部分。CA 还会对证书进行数字签名,这个数字签名是将证书经过一次哈希函数后用 CA 的私钥加密后的加密文本。客户端每次跟服务器通信时,服务器先把带有数字签名的证书发给客户端,客户端用 CA 公开的公钥对数字签名进行解密,得到的哈希值与证书的哈希值进行比较,两个值相同,说明身份是真实的,这样客户端就拿到了真实的服务器公钥。

但事实上,HTTP 文本是用对称加密算法加密,原因是

  1. 非对称加密比较慢
  2. 非对称加密对文本长度有限制

那之前费很大劲儿拿到的公钥有什么用呢?它是用来加密传输对称加密使用的密钥。


泅渡
泅渡 2017-08-19

HTTP虽然能使用JavaScript等方式加密数据,但是不能验证通讯双方的身份,如果HTTP遇到了中间人攻击,攻击者可以拦截通讯双方的通话并插入新的内容。如果被劫持了DNS和网页内容,你可能会打开一个假的网站。HTTPS可以防止以上情况的发生。


我不脱发
我不脱发 2017-05-19

最主要的区别就是用 HTTPS 的时候可以验证内容提供方的身份,而 HTTP 不可以。


使用 HTTPS 的时候,客户端首先会验证内容提供方的身份,然后再传输数据。如果经过验证后发现内容提供方提供的证书不正确,客户端会阻止用户连接到该内容提供方。

而用 HTTP 的时候则缺少这一步验证。用户在请求数据的时候,有可能被重定向至一个假内容提供方,这样用户根本就不是连接到你的服务器,因此就无从谈起用 HTTP 进行数据加密了。


console.error
console.error 2017-03-19

因为Https是全程加密的!
虽然有可能被降级可能!
但是https还是应对运营商劫持的最好办法!

自己用http被劫持一点办法没有~
HTTPS最起码有个可信任的根证书!


南风知我意
南风知我意 2017-08-19

区别很大,https是全文加密,整个流量包抓包看就是普通的TCP协议流量,而你说的将以http协议将数据加密后再传输,实际上还是http协议的流量,这在抓包分析中还是能看到http包头信息。再加上你用的加密算法,能和主流的RSA非对称加密比吗?安全性不是在一个档次。如果你想要全文加密,对不起你必须遵从现今的浏览器支持的加密方式,不然你的网页不会给你显示,绕回来你还是必须用https协议才能达到全文加密。


撰写答案

请登录后再发布答案,点击登录

分享
好友

手机
浏览

扫码手机浏览