gpt4 book ai didi

ssl - 了解 SSL

转载 作者:太空宇宙 更新时间:2023-11-03 12:37:19 24 4
gpt4 key购买 nike

我有三个关于 SSL 的问题,但我并不完全理解。

  • 如果我理解正确,服务器 A向某个 CA 提交请求。然后,它接收(在验证等之后)一个数字证书,该证书由公钥 + 身份 + 使用 CA 的私钥对该信息的加密组成。

    后来,一个客户B想与 A 建立 SSL 通信, 所以 A发送 B其数字证书。

    我的问题是不能 B就拿这个证书,从而窃取身份A - 这将允许他们以 A 身份进行身份验证至 C , 例如。我明白 C将使用 CA 的公钥解密证书,然后加密其对称 key ,该 key 只​​能由真实的 A 解密。 .

    但是,如果 B,我看不到身份验证的作用。居然可以偷A的身份。除非我错过了什么。
  • 第二个问题:如果证书的一部分已经被 CA 加密,为什么要在证书上使用散列?这是否意味着无论如何都没有人可以乱用数字证书(很有可能)?
  • 如果我是 stackoverflow 并且我有 3 个服务器在做同样的事情——允许客户端访问、读取、识别等——我是否必须为 3 个服务器中的每一个都有不同的数字证书。

  • 非常感谢。

    最佳答案

    SSL 身份由四个部分组成:

  • 不与任何人共享的私钥。
  • 可以与任何人共享的公钥。

    私钥和公钥形成一对匹配:你用一个加密的任何东西都可以用另一个解密,但你不能在没有私钥的情况下解密用公钥加密的东西,反之亦然。这是真正的数学魔法。
  • 附加到公钥的元数据,说明它在谈论谁。对于服务器 key ,这将标识 protected 服务的 DNS 名称(除其他外)。此处的其他数据包括预期用途(主要用于限制被盗证书的人可以造成的损害程度)和到期日期(限制被盗证书可以使用多长时间)。
  • 公钥和元数据组合的数字签名,这样它们就不会被弄乱,并且其他人可以知道对元数据的信任程度。有多种方法可以处理签名的人:
  • 使用私钥签名(来自上面的第 1 部分);自签名证书。任何人都可以做到这一点,但它并没有传达出太多的信任(正是因为任何人都可以做到这一点)。
  • 通过签署证书,让一群相互信任的人为你担保;信任网络(之所以这么称呼,是因为信任关系是可传递的,而且通常是对称的,因为人们会互相签署证书)。
  • 让受信任的第三方进行签名;证书颁发机构 (CA)。 CA 的身份由信任链中的另一个更高级别的 CA 保证,回到“每个人”信任的某个根权限(即,您的 SSL 库中内置了一个列表,可以在部署时更新)。

  • 上述三种类型的权威之间没有基本的技术差异,但人们对它们的信任性质千差万别。为什么会这样的细节确实需要一个很长的答案!
    第 2-4 项是数字证书的组成部分。

    当客户端 B 启动与服务器 A 的 SSL 协议(protocol)时,服务器的数字证书作为协议(protocol)的一部分传送给 B。 A的私钥没有发送,但是因为B可以用数字证书中的公钥成功解密另一端发来的消息,所以B可以知道A有匹配的私钥。然后 B 可以查看证书中的元数据,看到另一端声称是 A,并且可以检查签名以查看该断言的可信度;如果元数据由 B 信任(直接或间接)的权威签名,则 B 可以相信另一端具有 A 的 SSL 身份。如果该身份是他们期望的身份(即,他们想与 A 交谈:实际上,这是通过将证书中的 DNS 名称与他们在查找服务器地址时使用的名称进行比较来完成的),那么他们可以知道他们有一个安全的通信 channel :他们很高兴。

    B 不能用这些信息模拟 A:B 没有得到 A 的私钥,所以它会在验证的第一阶段分崩离析。为了让某个第三方冒充 B,他们需要(至少)两个:
  • 私钥。身份的所有者需要注意阻止这种情况发生,但这最终掌握在他们手中。
  • 做出虚假陈述的可信权威。这里偶尔有弱点——自签名的权威从来都不是非常值得信赖的,信任网络会遇到问题,因为信任是一种难以传递的尴尬事物,一些 CA 完全不择手段,而另一些 CA 则倾向于不排除渣滓——但大多数情况下这很有效,因为大多数政党都热衷于不引起问题,通常是出于经济原因。
  • 一种毒害 DNS 的方法,使目标相信不同的服务器确实是被冒充的。不幸的是,如果没有 DNSsec,这有点容易,但这个特殊问题正在减少。

  • 至于你的其他问题……

    Why use hashing on the certificate if a part of it is already encrypted by the CA? Doesn't this mean that no one can mess around with a digital certificate (in high probability) anyway?



    虽然 key 相当长,但证书更长(一方面,它们无论如何都包括签名者的公钥,通常与被签名的 key 长度相同)。无论如何,散列是签署文档的通用算法的一部分,因为没有人希望被限制为只签署非常短的内容。鉴于需要该算法,因此将其用于此目的是有意义的。

    If I am stackoverflow and I have 3 servers doing the same thing - allowing clients to access, read, identify etc. - do I have to have a different digital certificate for each of the 3 servers.



    如果您有多个服务器提供相同的 DNS 名称(有很多方法可以做到这一点,最简单的方法之一是循环 DNS 服务),您可以在每个服务器上放置相同的身份。这稍微降低了安全性,但只是非常轻微;它仍然是一种服务,恰好由多个服务器实现。理论上,您可以给每个人一个不同的身份(尽管名称相同),但我想不出任何实际这样做的充分理由;与替代方案相比,它更可能让人们担心。

    另请注意,可以同时拥有多个服务名称的证书。有两种机制可以做到这一点(向证书添加备用名称或在证书中的名称中使用通配符),但 CA 往往会收取相当多的费用来签署证书。

    关于ssl - 了解 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6117315/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com