HTTPS的原理是什么

HTTPS作为HTTP的升级版本,最大的特点就是加了一层SSL/TLS协议将原来明文的HTTP变成了更安全的加密版本。

“裸奔”的HTTP

在HTTPS还没有普及的日子里,HTTP一直将报文作为明文传输。对于黑客来说,明文传输的报文简直就是在“裸奔”!我们举个例子来说明一下:

小明在某论坛上介绍自己是一名优秀的Java程序员,然后点下了浏览器上的发送按钮。

正常情况下,当发送方使用HTTP向接收方发送一个消息时,是能够正确传输的,但是一旦有黑客进行了中间人攻击,事情的发展就可能超出我们的控制了,比如:

于是,小明被论坛上的用户们疯狂嘲讽…

对称加密

既然裸奔的HTTP不能安全传输数据,那么我们如果使用对称加密是否就能保证消息传输的安全性了呢?继续往下看。

由于我们使用对称加密,因此需要发送方与接收方同时拥有密钥,能够进行消息的加密与解密。正常情况下是这样的:

看起来似乎使用对称加密要更安全一点了,但是密钥发送过程总一旦被黑客劫持那么依然是“裸奔”状态:

非对称加密

非对称加密有公钥和私钥两种密钥,公钥加密的信息只有私钥能解密,反过来私钥加密的信息只有公钥能解密。相较对称加密,非对称加密的加密和解密过程更加复杂,耗时更长。因此HTTPS使用非对称加密的方式传递密钥(注意这里的密钥用于对称加密,是由客户端自己生成的,不是前面提到的公私钥),然后用传递的密钥进行对称加密的操作:

需要注意的是,后续的加密操作都是用对称加密的密钥进行操作的,这样进行加解密的操作快速高效。但是,这种非对称加密+对称加密的方式真的就天衣无缝了吗?如果黑客把服务器端发给客户端的公钥拦截下来,用自己的一套公私钥来伪装服务器显然也是一种漏洞。客户端收到黑客的公钥傻乎乎的以为是安全的,就用这个假的公钥把对称加密的密钥进行加密并发送到黑客这里,黑客用自己的私钥解密获得密钥,用真的公钥对密钥进行加密发送给服务器就完成了一次截获密钥的过程,后续操作依然是“裸奔”的。

所以说,即便使用了非对称加密+对称加密也并不能保证安全,这就需要引入HTTPS用到的另一个保证安全性的措施了。

CA证书与数字签名

前面提到了采用非对称加密+对称加密的方式虽然已经相对安全了,但是因为不能确定公钥的来源是可靠的所以依然存在安全隐患,这里我们就需要引入第三方CA机构保证公钥的可靠性了,具体流程如下:

  1. 服务方向第三方CA机构提交公钥并提出申请。
  2. CA机构对申请方进行资格审核与真实性验证。
  3. 如果审核通过,CA机构会向申请者发送认证证书,证书内容主要包括申请者公钥、申请者的组织信息和个人信息、签发机构 CA的信息、有效时间、证书序列号等信息的明文以及一个数字签名。这个数字签名使用Hash函数计算公开信息得到一段摘要值,然后用CA证书的私钥对摘要值进行加密。
  4. 客户端发送请求后收到证书。
  5. 客户端通过层级关系找到证书的上级证书(客户端系统内置),通过上级证书的公钥对证书的签名进行解密得到x,再通过Hash算法对服务器证书的数据生成摘要值y进行比较,如果x和y一致就证明没有受到中间人攻击。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值