HTTPS 初体验

随着互联网的发展,数据传输的安全性已经变得尤为重要,各大互联网公司已经纷纷切到了https来保证数据传输的安全,那么https是如何保证数据的安全传输呢?本文会用最简单通俗的例子来描述https的基本原理,不涉及具体的实现和算法。

http目前的现状:


数据流在互联网的传输过程,用传纸条的例子很贴切,比如,A一直心意班上的女同学B,所以会经常传纸条给B,A在纸条上写明了接收人是B,以及纸条的内容,还有署名,然后中间的同学看到这个纸条,就直接手递手地传过去,一直传送到B手上,B拿到纸条,一看是写给自己的,就阅读并回复内容,这是最简单的明文传输,也是目前http的传输方式,简单直接,但同时也伴随着以下三个风险:


1、数据被窃听
2、数据被篡改
3、第三方中间人冒充

问题1:如何保证数据不被窃听?纸条的内容需要保密

A后来发现班上的同学时不时会偷看纸条的内容,甚至是故意修改纸条的内容,弄的B同学也很尴尬,于是A就把纸条内容放在一个信封里,挂上一把锁,形成了密文传输的方式,只有拿到相同钥匙的人,才能解锁,这种加密和解密需要相同的密钥的加密方式,就是对称性加密,也叫单钥加密。

问题2:数据是加密了,钥匙怎么给B呢?
如果钥匙让大家人手过一遍,跟没有加密是一样的,所以先得解决钥匙传递的问题。A又想了一个办法,先让B把B本地的一把锁传过来,A用这把锁对信封进行上锁后,再传给B,这样的话,就只有B才能打开并拿到信封里的钥匙,非对称加密就是这样,有一对公钥和私钥,互为锁和钥匙,如果用公钥加密,就只能用私钥解密,用私钥加密,就只能用公钥解密,非对称加密也叫双钥加密。B传过来的,就是B手上的锁,这个人手一把都没事,因为这把锁是用来加密的,是不能解密的,只要钥匙不泄露就行。

这里写图片描述

没过多久,内容还是被泄密了,A很纳闷,B的锁只能B解开,为啥还是被泄露了呢,A在长期的观察和推敲过程中发现,目前的传递还是有纰漏,因为没有任何证据证明自己收到的就是B的锁,而每次这个信封都会经手班长C,B的锁很可能已经被班长C掉包了,C传递给A的锁,C当然可以解密,内容变成了明文,同时,C还可以用之前B传递的锁,进行加密,再传给B,B进行解锁,这样,A和B完全察觉不出自己的内容被泄露了,这就是上面说的中间人冒充的风险。

这里写图片描述

问题3:如何保证,A收到的一定是B的锁呢?演变成一个身份验证的问题
A想了半天,找到了学校教务处,教务处把B的锁又放进一个信封里面,挂上教务处的锁,然后把打开锁的钥匙给了A,每次传递过来后,A能打开,那就是教务处认证了的,A觉得有点道理,可是不久又发现,班长C也是学生,教务处肯定要一视同仁,所以C在教务处也顺利进行了登记,这样,C也还是可以打开教务处的信封,A还是区分不出来到底是C还是B的锁
教务处实在没辙了,就让大家拿着自己的锁来教务处登记,然后给每个学生都发了一个学生证,证件上面有学生的基本信息,证件的有效期,颁发机构,以及每个人各自登记的锁,同时,证书上还贴上了一个信封,上面带了教务处的锁
这样,A在跟B建立通信连接的时候,B会先传递给A自己的学生证,A首先确认学生证上的人是不是B,查一下学生证上的有效期以及颁发机构,A发现颁发机构是学校教务处,就在本地系统拿出该机构对应的钥匙来打开信封,如果能打开这个信封,可以肯定这个信封是教务处给的。
问题4:跟信封绑定的B学生证上的信息是否是真实可靠,没有被篡改呢?毕竟,能在教务处拿到学生证的人都可以打开这个信封,但是学生证是可以造假的,显然,这样的验证还不够
后来教务处告诉A,信封里面的东西才是关键,教务处在给每个学生登记的时候,会生成的一个唯一的学生编号,如果A在收到B的学生证后,用相同的规则将学生证信息提取出来生成学生编号,进行比对,数据一致,那么A收到的这个学生证内容跟教务处颁发的学生证内容是一致的,保证了数据没有被篡改,是安全可靠的。
这样,B的锁传递问题也就解决了,A终于可以放心地跟B传纸条了

这里写图片描述

现实中的https基本的原理也是这样,CA就是类似于学校教务处等认证机构,客户端在收到服务端的证书后,会通过本地操作系统或者是浏览器的第三方证书列表进行校验,如果没有安装该机构的证书,则通过证书链向上查找,直到找到根证书,如果证书没有在证书链上,则证书不可信
数字证书就是每个学生的学生证,数字签名就是证书上附带的教务处给学生发的带锁的信封
采用摘要算法进行学生信息的提取,经常用的比如MD5散列算法
通信内容的加密,使用的是对称性加密算法,如DES,AES加密算法
对称性秘钥的加密,使用的是非对称性加密算法,如RSA加密算法

总结HTTPS
HTTPS本身实在太复杂,在这里也只能是简单地概述一下原理:
HTTPS要使客户端与服务器端的通信过程得到安全保证,使用对称加密算法对通讯内容进行加密,针对秘钥的加密,又使用的非对称加密算法,为了保证非对称性加密的公钥不被篡改,防止被中间人掉包,所以公钥是不能直接传输,而是嵌入到了权威的证书机构(CA)颁发的数字证书里面,数字证书可以进行身份验证,而数字签名则是来保证数字证书上信息的真实性

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值