20 信任链:为什么可以相信一个 HTTPS 网站?

这篇具有很好参考价值的文章主要介绍了20 信任链:为什么可以相信一个 HTTPS 网站?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

摘要和签名

现实的生活当中,如果想证明一份合同没有被修改过,人们会在合同上盖一个齐缝章,并附上自己的签名。签名和盖章其实是一个含义,目的是证明自己签署过某份协议,而且一经签署,协议就不能再变更。

如果想阻止一份合同被修改,最容易想到的方式是加密。合同一旦被加密了,要修改就必须原文和密文一起修改。虽然这没有解决最本质的问题——谁来提供信用。但是这样的种做法解决了一个最基础的问题。如果有人想修改合同,就必须知道密钥。

摘要算法

但是加密算法的计算量较大,而且结果通常比原文体积大。那是否有其他更好的处理方式呢?其实一个更简单的做法,就是利用摘要算法。摘要,顾名思义,和现实中文章的摘要是一样的。相当于给一篇文章,形成一个提要。只不过,计算机世界的摘要算法算出来的结果并不是对原文真的概括总结,而是一个大数字。

给计算机一篇文章,计算机用摘要算法(主要是哈希类算法)生成一个字符串,如果文章内容改变,哪怕是一个字,一个标点符号,摘要也会完全改变。和完全加密一篇文章相比,摘要的体积很小,因此非常有利于存储和传输。

通常对于一个给定的摘要算法,无论你的文章多大,有多少字节,最终生成摘要的字节数是固定的。以 MD5 摘要算法为例:

md5(1字节数据)
md5(1M数据)

无论数据多大,经过 MD5 计算后,都会形成一个 128 位的值,换算成 16 进制是 16 个字符。可见,摘要算法是比较省空间的,如果用加密算法,那么体积会和原文大小正相关。用 MD5 摘要一个 100M 的视频文件,也会形成只有 128 位的值。

摘要的价值

摘要是对原文的证明,从原文到摘要是一个不可逆的过程

通过原文可以计算出摘要,一旦原文发生变化,哪怕是一个标点符号,摘要也会发生变化。而已知一个摘要,想要反推出原文,几乎是不可能的。因为摘要和原文并不是一对一的关系,是多个原文对应一个摘要。而且,想要找到两个摘要碰撞的原文是非常困难的发生概率相当于买彩票中大奖 。而且就算黑客找到了碰撞的原文,也未必可以起到作用。当然,摘要碰撞是危险的,下面我们会讨论摘要碰撞的危害。因此,我们通常会选择碰撞难度更高的摘要算法,这里推荐你在实战中用 SHA-1 摘要算法

下面我们聊聊摘要碰撞的危害,举个具体的例子:目前多数网站用户的密码是以摘要的形式保存的。你可能会问,为什么不以原文形式保存呢?这是因为程序员会经常接触到数据库,而黑客也有可能黑进公司的数据库,因此密码以摘要显示保存更加安全,可以有效防止用户敏感数据被盗。因此,网站的设计,一般不存储用户的密码,只存储用户密码的摘要。如果网站的数据库被攻破,黑客拿到的是用户密码的摘要。拥有摘要什么也做不了,因为通过摘要找不到用户密码的原文,仍然不能登录这个网站。但是如果黑客能找到一个和密码碰撞的原文呢? 那黑客就可以正常登录了。因此摘要碰撞是非常危险的,好在目前的算法都足够安全。

稍微小结一下,摘要算法解决了以下这几个问题:

  1. 为原文生成固定长度的内容证明(内容摘要);

  2. 摘要无法被逆向得到原文,看上去是随机的,黑客拿到了也不知道原文;

  3. 极少概率碰撞:不同的内容极大概率(绝大多数接近 100%)会生成不同的摘要。

但是,你要明白,摘要只是一个工具,它可以用来解决很多问题,比如说用户密码存储问题。对于互联网的信用,它还只是工具。

签名

摘要的另一个非常重要的用途就是签名。举个例子,张三和李四签署一份合同。

如果张三将合同生成摘要,再用自己的私钥加密摘要,得到一个密文串,那么这个串就是张三对合同的数字签名(DIgital Sign)

张三生成好数字签名,将自己的公钥、合同原文以及数字签名交给李四保管,就基本上达成了今天我们签约双方交换合同的效果。

你可以这样思考,数字签名是对摘要的加密,因此数字签名本身还拥有摘要能力的

如果原文没有被修改,那么下面的条件会满足:

公钥解密(数字签名) == 签订合同时的原文摘要 == 摘要算法(当前原文) == 当前摘要

比如原文被修改,那么可以通过重新计算摘要,对比解密后的数字签名(其实就是早先的摘要)。对张三而言,李四不知道自己私钥,因此他篡改不了自己签名的这份合同。对李四而言,张三无法抵赖自己没有签署过这份合同,因为李四可以拿着张三的公钥解密得到摘要,然后再对比合同原文的摘要。因为是张三私钥加密,如果张三的公钥能解开,那说明就是张三签署的合同。

证书

在上面张三和李四的例子当中还存在着一个重要的缺陷,就是张三、李四的公钥凭什么具有公信力?一份合同,张三李四都要签名,然后互相交换签名的数据。但是请你注意,这里咱们只是用到了技术的手段,或者你可以理解成这是一个数学的方式。信用本身不能用数学解决,数学只是工具。这里还存在着一个重要的缺陷,就是谁来证明,张三给李四的公钥,就是张三的公钥;李四给张三的公钥,就是李四的公钥。而谁又来证明张三和李四,是合法的两个个人,具有签署合同的权利。

信用的提供

这里涉及的一个最基本问题是,信用必须有人提供。只有权威机构(比如公安局)可以证明张三是张三,李四是李四。同理,互联网世界也需要机构提供证书,由机构证明他们的公钥。这并不是说,张三自己不能制作自己的证书,只不过张三做的证书没有公信力。互联网中,加密算法、签名算法都是公开的,只不过张三自己制作的证书背后没有信用的支持。

证书制作

证书是一个身份证明文件,比如互联网中,经常会为一个域名制作证书。通常的一个域名证书会有一些基础信息:

  • 覆盖的域名

  • 证书的用途

  • 签发时间

  • 到期时间

  • 域名方的公钥

  • ……

除了证明身份,证书还有一个重要的作用就是让其他人可以使用自己的公钥。比如自己签名的数据,就可以用自己的公钥解密对照。总的来说,你可以把这些基础信息视作文本,最重要的,就是要有权威机构对证书的签名。权威机构用自己的私钥对证书进行签名,于是证书上还需要增加 3 个信息:

  • 权威机构的名称

  • 权威机构的签名

  • 权威机构的网址

最后这步签名操作就好像护照上要盖个章一样,有了这个权威机构的签名,证书就合法了。

下面是拉勾的 HTTPS 证书,你可以做个对比学习:

20 信任链:为什么可以相信一个 HTTPS 网站?,计算机网络,信任链,https,网络协议

有一些关键信息,比如签名和公钥,虽然没有在这个图片中体现,但这些信息也是在证书中的。

信用链的验证

现在问题来了,张三把证书给了李四,李四拿到张三的证书,并看到某权威机构的签名。李四的第一反应就是——这个签名是权威机构的吗?比如上图中拉勾的签名,当你打开拉勾教育的时候,你相信这个证书是 GlobalSign 签发的吗?大部分同学都不知道 GlobalSign吧? 其实我也不知道这家机构。但是这不重要,用户甚至不需要理解 GlobalSign,计算机产业的底层建筑帮助大家解决了这个问题——这个被称作信用链

当我们用 HTTPS 协议打开拉勾教育的页面时,这个证书会随着 HTTPS 的握手被下载到本地。浏览器打开证书,发现提供方式 GlobalSign。GlobalSign(Certificate Authority,CA)是一家证书颁发机构。

浏览器并不需要理解 GlobalSign 是谁,在验证过程中,浏览器会查找操作系统中,是否已经安装了 GlobalSign 的证书。如果已经安装了,浏览器就会相信这个证书。操作系统的提供商,比如微软、苹果、谷歌总不会恶意安装非法证书砸自己的招牌。只要用户本机安装了 GlobalSign 证书,那么 GlobalSign 证书的公钥就应该可以解密网站证书的签名,得到网站证书的摘要,那么就可以信任 GlobalSign 签发的这张拉勾的证书。

如果操作系统中没有安装 GlobalSign 的证书该怎么办呢?不要着急,这个时候,浏览器会去 GlobalSign 的网站下载证书,拿到 GlobalSign 证书后,浏览器也不确定 GlobalSign 是一个权威机构,这个时候浏览器会看 GlobalSign 证书上有没有签发方。如果有,递归进行检查签发方的证书是否安装在操作系统本地,直到找到根证书。根证书的特点是,这个机构的证书没有其他机构为它签名。只要操作系统中有根证书,那么 GlobalSign 就值得信任,因此拉勾值得信任。

在上述过程中,操作系统的提供商起到重要的作用。操作系统安装的时候,会预装一些证书。这些证书我们称为根证书,能签发根证书的机构就是根证书提供商。根证书提供商在全球很少,通常只有信誉非常棒的机构才能担当。而且成为根证书要得到很多资质,如果中间出现问题,还会被取消资格,特别是还需要和多家操作系统提供商达成合作,比如微软、苹果、谷歌等。

信任链的具体形式

以上的层层证明形式,构成了一个信任链。

一般的,信任链有 3 层。最顶层是根证书和根证书机构(Root Certificate,Root CA)。前面我们提到,根证书往往是随着操作系统安装的,特殊情况需要用户自己安装。比如说一些抓包工具,会要求用户自己安装一个根证书。

中间的是中间证书机构,它们自己的证书是由 Root CA 签名颁发的,同时它们向最底层的终端机构提供证书。

20 信任链:为什么可以相信一个 HTTPS 网站?,计算机网络,信任链,https,网络协议

根证书是自签名,中间证书是根证机构书签名,终端证书(比如拉勾网)是中间证书机构签名。这样就构成了一个信任链,并且也增加了犯罪的成本。犯罪分子如果想要冒充证书,那么它的证书就需要获得中间证书提供商的签名,而获得签名需要购买证书。犯罪分子就算购买了证书,也只能购买自己域名的证书,因此无法伪装成其他网站。但要特别注意的是,如果犯罪分子设法在你的个人电脑上安装了它的根证书,那后果就严重了,它可以冒充成任何网站

总结

总结下,解决信用不是一个数学问题。基于信任关系塑造信用是当今社会的主流做法,比如基于社交关系的信用、基于国家机器的信用、基于公司信誉的信用……另一方面,当然工具也是必不可少的。

摘要,是一种数学的证明,本身体积很小,还不存在密钥管理和分发问题,适合在网络环境中工作。在摘要上用私钥加密就是签名,签名可以防止数据被篡改、伪造等。在摘要和签名的基础上,可以利用原本的社会关系,让一些信用优秀的机构提供信用,这就是证书的颁发和信用链体系。

好的,现在你可以尝试来回答本讲关联的面试题目:为什么可以相信一个 HTTPS 网站?

解析】当用户用浏览器打开一个 HTTPS 网站时,会到目标网站下载目标网站的证书。接下来,浏览器会去验证证书上的签名,一直验证到根证书。如果根证书被预装,那么就会信任这个网站。也就是说,网站的信用是由操作系统的提供商、根证书机构、中间证书机构一起在担保文章来源地址https://www.toymoban.com/news/detail-833583.html


到了这里,关于20 信任链:为什么可以相信一个 HTTPS 网站?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 什么是https?https为什么安全?

    随着互联网的发展,HTTPS 协议在互联网通信中的应用越来越广泛,被越来越多的网站采用。相比于 HTTP 协议,HTTPS 协议的安全性更高,使得网络通信更加安全。那么,为什么 HTTPS 协议能够保证通信安全呢? 本文将从以下几个方面进行探讨:HTTPS 协议的基本原理,HTTPS 协议与

    2023年04月09日
    浏览(40)
  • 【计算机网络】什么是HTTPS?HTTPS为什么是安全的?

    【面试经典题】 前言: HTTP最初的设计就是用于数据的共享和传输,并没有考虑到数据的安全性,如窃听风险,篡改风险和冒充风险。HTTPS是在 HTTP 的基础上引入了一个加密层。HTTPS通过数据加密,数据完整性检验和身份认证有效的保证了数据传输的安全性。HTTP默认端口号8

    2024年02月08日
    浏览(38)
  • HTTPS为什么安全,流程?

    对称、非对称混合加密 首先,我们先来看 HTTP 为什么 不安全 。 HTTP没有对通信内容进行加密,是 明文传输 ,信息可能会被 劫持、篡改 等,相当于在互联网上裸奔,所以是不安全的。 那么HTTPS主要就是为了解决这个问题,而解决这个问题肯定要对传输的明文进行 加密 ,让

    2023年04月20日
    浏览(44)
  • 神经网络为什么可以学习

    本资料转载于B站up主:大模型成长之路,仅用于学习和讨论,如有侵权请联系 动画解析神经网络为什么可以学习_哔哩哔哩_bilibilis 1.1 也可以是一层,也可以是多层  2.1 每两个神经元之间有两个参数,我们称之为权重 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1  17.1 18.1

    2024年02月12日
    浏览(121)
  • WebSocket 是什么原理?为什么可以实现持久连接?

    WebSocket 是一种用于实现持久连接的通信协议,它的原理和工作方式相对复杂,但我们可以尝试以尽可能简单和清晰的方式来解释它。 WebSocket 的原理 在理解 WebSocket 的工作原理之前,我们首先要了解 HTTP 协议的短连接性质。在传统的 HTTP 通信中,客户端发送一个请求到服务器

    2024年02月05日
    浏览(64)
  • 为什么HTTPS是安全的?

    1.1 HTTP 协议介绍 HTTP 协议是一种基于文本的传输协议,它位于 OSI 网络模型中的应用层。  HTTP 协议是通过客户端和服务器的请求应答来进行通讯,目前协议由之前的 RFC 2616 拆分成立六个单独的协议说明(RFC 7230、RFC 7231、RFC 7232、RFC 7233、RFC 7234、RFC 7235),通讯报文如下: 请

    2024年02月08日
    浏览(39)
  • 为什么说 HTTPS 是安全的?

    在这个数字化高速发展的时代,网络安全变得前所未有的重要。 个人信息、金融交易、国家安全乃至民生便捷,几乎每一个环节都与网络安全息息相关。 HTTPS作为当今网络传输协议中的重要一员,是保障网络传输安全的基石之一。 本文将深入探讨HTTPS的安全性,解析其背后的

    2024年01月19日
    浏览(37)
  • 为什么 HTTPS 比 HTTP 安全

    HTTP(超文本传输协议)是目前互联网应用最广泛的协议,伴随着人们网络安全意识的加强,HTTPS 被越来越多地采纳。不论是访问一些购物网站,或是登录一些博客、论坛等,我们都被 HTTPS 保护着,甚至 Google Chrome、Firefox 等主流浏览器已经将所有基于 HTTP 的站点都标记为不安全

    2024年02月19日
    浏览(44)
  • 为什么 https 比 http 更安全?

    http 和 https 在许多网站都有用到,但是现在都是极力倡导使用 https ,究其原因就是 http 的安全性不够高,在数据传输过程中可能会遭到黑客窃取。 本篇文章会先讲解 http 缺点,然后再讲解 https 是如何解决这些问题来保证安全的。 一、http 缺点 通信使用明文(不加密),内容

    2024年01月24日
    浏览(41)
  • HTTPS 为什么是安全的 _ (下)

    有了这些前置知识,下面就来深入剖析 HTTPS 。 为什么需要 HTTPS ? 因为 HTTP 在裸奔 。 针对上篇文章中提到过的安全传输信息的几个要素: 保证传输内容的安全,即不传输明文 防止传输内容被篡改,即可以识别篡改 确认对方真的是对方,即通信双方身份的认证 由于 HTTP 是

    2024年04月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包