为什么HTTP不安全?为什么HTTPS可以确认安全?

为什么HTTP不安全?

1. 明文传输(相当于写明信片)

HTTP 的所有数据(包括你的密码、银行卡号)在网络上都是以明文(Plaintext) 形式传输的

  • 风险: 从你的电脑到服务器的路径上,经过的每一个路由器、Wi-Fi 热点、运营商基站,都可以轻易地拦截并“看懂”这些数据 这就像你寄了一张没装信封的明信片,邮递员和路人都能看见内容

2. 无法验证身份(相当于被冒充)

HTTP 协议不验证通信方的身份

  • 风险: 你以为你在访问 google.com,但实际上可能是黑客伪造的一个假网站(钓鱼网站) 你发出的请求被黑客拦截,黑客假装成服务器给你回应,你完全无法察觉

3. 数据无法防篡改(相当于被涂改)

因为是明文且无校验,数据在传输过程中很容易被修改

  • 风险: 你请求在网页上看新闻,中间人攻击者(Man-in-the-Middle)可以拦截数据包,在里面插入一段恶意的广告代码或病毒脚本,然后再发给你 你收到的页面已经被“加料”了

为什么 HTTPS 可以保证安全?

在 HTTP 的基础上加入了一个安全层:SSL/TLS 协议

1. 只有你能看懂(加密 / Encryption)—— 解决窃听

HTTPS 使用了混合加密机制,结合了非对称加密和对称加密的优点:

  • 非对称加密(公钥/私钥): 在建立连接的初期(握手阶段),服务器把“公钥”给你,你用公钥加密一个“随机数”发给服务器 这把“锁”只有服务器手里的“私钥”能打开 这确保了密钥交换的安全性
  • 对称加密(共享密钥): 一旦双方安全地拿到了同一个“随机数”(会话密钥),之后的实际数据传输就全部用这个密钥进行高效率的对称加密
  • 结果: 即使黑客截获了数据包,看到的也是一堆乱码,因为他没有解密的钥匙

2. 只有你是真的(身份验证 / Authentication)—— 解决冒充

怎么证明发给你公钥的服务器就是真的淘宝或谷歌,而不是黑客呢?这就靠 数字证书(Certificate)

  • CA 机构背书: 服务器必须向权威的第三方机构(CA,证书授权中心)申请证书 证书里包含了服务器的网址、公钥以及 CA 的数字签名
  • 浏览器校验: 你的浏览器和操作系统内置了受信任的 CA 列表 当你访问 HTTPS 网站时,浏览器会检查证书:是不是受信任的 CA 签发的?证书有没有过期?证书上的网址和你要访问的网址一致吗?
  • 结果: 如果证书有问题,浏览器会直接报警(显示红色的“不安全”),防止你被钓鱼网站欺骗

3. 只有原装未动(数据完整性 / Integrity)—— 解决篡改

HTTPS 在传输数据时,会给数据加上一个摘要(Digest/Hash)

  • 哈希算法: 就像给数据按了一个“指纹”。如果黑客在传输途中修改了哪怕一个标点符号,计算出来的指纹就会完全不同
  • 校验机制: 接收方收到数据后,会重新计算指纹并与传送过来的指纹对比。如果不一致,说明数据被篡改了,丢弃该包
  • 结果: 确保你看到的内容就是服务器原本发送的内容,没有被运营商劫持插入广告

总结对照表

特性HTTPHTTPS
数据形态明文(所有人可见)密文(乱码,只有持有密钥者可见)
安全性极低,易被窃听、篡改、劫持高,防窃听、防篡改、防伪装
连接建立简单,TCP 三次握手后直接传数据复杂,TCP 握手后还需 SSL/TLS 握手
端口默认 80默认 443
成本免费需要购买或申请 SSL 证书(也有免费的)

剧本演绎

C: 我要给你数据,但我怕被劫持

S: 给你个带锁的盒子(公钥),用这个盒子把那个东西”(随机数/密钥)装进去发过来

  • (注意:S 说的是只装“那个东西”,先别急着装“数据”!)

C: 我生成了“那个东西”,放进盒子里锁好,发过去(此时真正的数据还在我手里,没发!)

S: 我用钥匙(私钥)打开盒子,拿到了“那个东西”

C, S: 【现在开始】 好,现在我们俩都有“那个东西”了

C: 我把“真正的数据”用“那个东西”加密,发给你

S: 我用“那个东西”解密,看到了数据

Life's a struggle, I'll conquer it.
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇