https的实现原理

HTTPS通过结合对称加密和非对称加密确保数据传输的安全,解决了隐私泄露、数据篡改和冒充服务器的问题。在对称加密中,内鬼可以截取密钥,而在非对称加密中,服务器和客户端使用公钥和私钥进行加密。为防止内鬼冒充服务器,引入了数字证书,由权威的证书颁发机构(CA)验证并颁发,确保服务器身份的真实性。证书中的数字签名用于验证公钥未被篡改,从而提供终极安全保障。
摘要由CSDN通过智能技术生成

http协议存在安全隐患

我们都知道http协议存在很多安全问题:

  • 隐私隐患:个人的登录密码、隐私信息什么的都可能会别坏人盗走。
  • 篡改隐患:很可能坏人会篡改我们要收到的数据,或者植入广告之类的。
  • 冒充隐患:坏人可能会冒充浏览器接收我们的请求然后做出一些不好的事情。
  • ……
    所以我们就会想要保护我们的信息安全,因此那些伟大的科学家们就想出了很多方法来解决http的安全问题。

初步加密(对称加密)

已知传输的数据不安全,因为http协议是基于tcp协议的基础上的,这期间数据都是明文传输的,所以坏人一看就懂。于是科学家们很容易就想到要用加密这个方法来解决http的安全问题。对嘛,既然是明文,那我们加个密坏人不就看不懂了。
所以我们都用同一个加密算法和密钥,不就可以传输加密信息了!于是我们只要在TCP握手的时候交流好密钥的内容就可以了,如下图。
对称加密
小黑在收到服务器返回的“有内鬼,中止交易!”这个密钥后就知道在每次传输数据的时候根据这个密钥使用加密算法得到密文再发送给服务器了,服务器收到小黑发来的密文也知道小黑要表达的实际内容是啥了,是不是很安全了?
好家伙当然不是了,为啥呢,请看下一张图:
为什么直接使用对称加密还是不安全
既然密钥也直接在网络上传输了,那我内鬼凭什么不能拦截到,既然我拦截到你的密钥了,我还怕不能得出你的实际数据吗。
那怎么办呢,这也不安全,这时候就又很容易想到:既然密钥也不能明文传输,那我再给密钥加个密?这个思路当然是对的啊,但是要怎么加密呢?你想想,如果直接再用对称加密的方式的话,那是不是还得明文传输密钥的密钥,那说到底内鬼还是能破解,不行,这不够安全!那怎么办呢,科学家们又想出了另一种方法——非对称加密。

进一步加密(非对称加密)

到这一步我们已经知道了数据是使用对称加密的方式进行加密的,而密钥因为不能直接明文传输也需要加密,但是不能用对称加密的方式,得使用非对称加密。
那么什么是非对称加密呢?非对称加密也就是使用一对密钥,公钥和私钥,私钥只有一个且存在服务器,用户使用公钥进行数据加密并传输。为啥这时候传送公钥就不会不安全了呢?这是因为非对称加密有私钥能解开公钥加密的数据,公钥能解开私钥加密的数据,而公钥不能解开公钥加密的数据的特点。如下图。
非对称加密加密密钥
看这下应该足够安全了吧,我们成功解决掉隐私泄露和篡改数据的隐患了对吧,那么冒充的隐患呢?

内鬼:其实我才是服务器!

如标题,内鬼完全可以冒充成服务端与小黑进行数据交流,反正公钥是服务端发给小黑的,那我也生成一对我自己的公钥私钥,再把公钥发给你不是一样的吗,你又看不出我是不是服务器是吧。
你看这张图:
内鬼冒充服务器
可把服务器委屈的,可那怎么办呢,小黑不知道,👉👈卟卟。
现在我们发现这个问题了,就得解决是不,那怎么解决呢?科学家们就说既然小黑你“有眼无珠”识别不出真正的服务器,那我们就帮你识别,我们给服务器加个证书,有这个证书的才能说自己是真正的服务器,内鬼这种冒牌货就乖乖滚蛋了是不。

安全的终极保障(证书)

上面说到了要给真正的服务器颁发一个证书,证明它是个真正的合格的服务器。这和学校给你发个三好学生奖状证明你真的很不戳一样一样的。又比如说你在小学的时候成为少先队员,每天都要你戴上红领巾,你不戴就不能说你是个少先队员。
所以当服务器拥有这个证书的时候,就能让小黑一看就知道哪个才是他该信任的服务器了,服务器终于不用受委屈了。但是问题又来了,证书是谁都能有的吗?傻子都知道肯定不能谁都有,那岂不是谁都是个少先队员了,你戴个绿领巾,老师能说你是个好少先队员吗?
所以这个证书得严格、公正、公开,那么就需要一个非常有权威的机构来颁发这个证书了,跟校长一样,这类机构统称CA(Certificate Authority)。CA就负责了证书的颁发以及证书的验证。
服务器向CA提交站点的信息比如域名、公司信息、公钥等等,当CA确认信息无误之后就会给该服务器颁发一个证书。小黑在和服务器通信的时候,服务器会传给小黑它的证书,小黑通过操作系统内置的CA公钥解开证书,获取证书里的服务器的公钥,小黑就能拿着这个公钥跟服务器继续交流了。
不知道你有没有发现,其实这里还有一个安全隐患哦!

如果内鬼截获证书,拿着CA的公钥解开后再修改里面的服务器公钥,改成自己的再发给小黑呢?

所以CA在生成证书的时候,还会根据证书计算出一个摘要,也可以说是数字签名,然后将证书和数字签名一起发给服务器。服务器也要把这个数字签名一起发给小黑的,小黑在用CA公钥小黑在用CA公钥获取到明文证书之后自己也计算一遍数字签名,对比一下就知道服务器公钥有没有被篡改了。
这下可就真的安全了!可喜可贺!!

总结

HTTPS的S其实是指SSL(Secure Sockets Layer 安全套接字协议),其实就是在TCP三次握手后,再进行第四次握手,将证书发送给客户端。

这是我学习后的总结,可能会有错误,欢迎指正!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值