https 如何做到安全

HTTPS

我们都知道 HTTPS 传输安全,为什么安全呢?密码学保证?下面介绍一些 HTTPS 用到的技术。

SSL/TLS

SSL(Secure Sockets Layer),中文叫安全套接层,是网景公司 90 年代中期设计来解决 HTTP 协议明文传输的缺点(嗅探、劫持、篡改)。

到 1999 年,IETF 把 SSL 标准化,标准化之后名称改为 TLS(Transport Layer Security),中文叫传输层安全协议。

HTTPS

什么是 HTTPS?

HTTPS = HTTP + SSL/TLS。

即不安全的 HTTP 协议加上 SSL/TLS 等于安全的 HTTPS。

加密解密

加密和解密是一对互逆的数学运算:

加密:明文 + 密钥 = 密文

解密:密文 + 密钥 = 明文

对称加密

对称加密的意思就是加密和解密使用相同的密钥,例如在压缩文件上设置密码,解密就需要输入相同的密码。

非对称加密

非对称加密则使用不同的密钥(公钥和私钥)进行加密解密。

密钥交换

网站和浏览器之间要实现安全的密钥交换该如何实现?

方案一:使用对称加密算法

如果单纯使用对象加密算法,浏览器和网站之间必须要交换密钥,密钥直接用明文传输很容易被窃取,无法保证密钥的安全性。

方案二:使用非对称加密算法

  1. 网站基于非对称加密算法随机生成一对密钥对 x,y,目前还很安全,只有网站知道
  2. 网站把 x 留在手里,把 y 用明文传输到浏览器(y 有可能被窃取)
  3. 浏览器拿到 y 之后,先随机生成第三个对称加密的密钥 z,然后用 y 加密 z 得到最新的 f(本质上就是用非对称加密保证对称加密的安全性),将 f 发送到网站(因为 x,y 是成对的,只有 x 才能解密 y 加密的结果,所有 y 泄露也无法解密 k)
  4. 网站拿到 f 之后,用 x 解密得到 z,至此浏览器和网站都有对称加密的密钥 z,可以进行通信加密

思考一下,方案二是否安全和完美?

依旧不安全,方案二可以在一定程度上防止嗅探,但无法防范网络数据篡改(中间人攻击)。

在网站和浏览器交换密钥的过程中,中间人接收网站发送的密钥 y 保存下来,改用自己生成的密钥对伪造成网站与浏览器交互,同时使用密钥 y 伪造成浏览器与网站交互。

方案二不安全的根源是缺乏可靠的身份认证,浏览器无法鉴别自己收到的密钥是不是来自网站。

因此需要引入 CA 证书机制(身份认证),基于 CA 证书进行密钥交换(具体 CA 机制可查看另一篇介绍 CA 的文章)。

此时得到方案三:

  1. 网站首先花钱从权威 CA 机构那里购买一个数字证书,证书通常包含一个私钥和一个公钥证书文件
  2. 浏览器访问网站时将公钥证书文件发送给浏览器
  3. 浏览器验证收到的证书(权威机构担保真假,主流浏览器和操作系统都会内置权威 CA 机构的根证书)
  4. 如果证书可信,就随机生成一个对称加密密钥 k,使用公钥加密 k,得到密钥 c
  5. 将密钥 c 发送到网站,网站根据私钥解密出密钥 k,至此密钥交换完成

这就是 HTTPS 加密传输的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值