两个客户端Alice和Bob使用服务器登录并通过服务器交换消息。登录时,他们都发送公钥以存储在服务器上。当Alice想要与Bob通话时,她用Bob的公钥加密对称密钥,并通过服务器将其发送给Bob。

我如何确保服务器不会创建自己的公钥对并将其发送给 Alice 而不是 Bob 的公钥。这样,服务器将首先解密 Alice 发送的内容,然后使用 Bob 的真实公钥再次加密。

谢谢

有帮助吗?

解决方案

由于Alice和Bob不能信任的服务器,他们必须找到确认对方的密钥的另一种方法。一种可能性是依靠另一方。如果Bob信任康迪斯(并且知道小玉的公钥),谁知道爱丽丝,王红可以签署Alice的公钥然后发送签名版本鲍勃。这就是所谓的信任的网页。

其他提示

由于具有Bob的证书由受信任的第三方(威瑞信,你的公司,信任网等)签署,或由具有鲍勃通过一个单独的安全路径发送其证书给Alice带外(递给她一个USB在人例如密钥)。

这两个得到了什么Bob的证书应该指的是心脏。你只相信Bob的证书是Bob的证书,因为你信任的人已经认证了它。 “有人”可以是鲍勃本人或受信任的第三方签署谁Bob的证书。你,你信任的验证者只有永远可以信任这个之多。

在密码学中,你就是你所知道的。如果你想避免 MITM,那么 Alice 必须知道“Bob”是谁,这意味着 Bob 必须知道攻击者不知道的某些数据元素。在这里,您的攻击者是服务器,它是发起攻击的理想位置。

所以问题是:鲍勃是谁?服务器如何“不是鲍勃”?

例如,“Bob”可以定义为:“鲍勃是一个拥有驾驶执照的人,上面写着‘鲍勃’”。或者:“鲍勃是我在酒吧遇到并一起喝啤酒的那个人”。

使用非对称加密技术可以将问题简化为对公钥的信任问题。爱丽丝将使用她认为是鲍勃的公钥。因此,Alice只需要某种方式来确保她拥有的公钥确实属于Bob所拥有。公钥的所有权是通过相应私钥的控制来定义的:Bob 的公钥是私钥由 Bob 独家控制的密钥(例如只有鲍勃知道该密钥,或者私钥位于鲍勃保存在钱包中的硬件令牌(智能卡)中)。

基本的解决方案是直接交换公钥。当爱丽丝在酒吧遇见鲍勃时,他们互相提供了公钥。因此,爱丽丝可以“根据定义”信任鲍勃的公钥。为了更容易交换(特别是在喝了几杯啤酒之后),爱丽丝和鲍勃可能只交换“指纹”,即通过公钥计算的哈希值。这些值比公钥短(例如128 位,而不是典型 RSA 公钥的一千多个位)并且足以 核实 给定的公钥匹配。在该设置中,服务器有一个公钥存储库,Alice 和 Bob 仅重新计算指纹以确保服务器没有玩虚假游戏。

一种更先进的解决方案是使用 证书. 。证书是一个盒子,其中包含 身份 (例如。名称,例如“Bob”)和公钥。盒子上有签名 认证机构 (加拿大):CA 通过应用其签名来断言公钥确实属于 Bob。如果 Alice 知道 CA 公钥,那么她可以验证证书上的签名,然后获得公钥与证书中包含的身份之间的链接的信任。

认证是信任的委托。爱丽丝 代表们 她对 CA 的信任;据推测,CA(我们称之为查理)去酒吧见鲍勃;通过证书,查理告诉爱丽丝:“是的,这确实是鲍勃的钥匙,他在喝完第三品脱啤酒后向我展示了它”。事情在这里变得有点模糊,因为委托信任并不容易(特别是如果查理有酗酒的习惯)。当一个 CA 为另一个 CA 签署证书时,委派可以更进一步。在这里,查理告诉爱丽丝:“我没有见过Bob,但我见过Daphne,她可能见过Bob并担任过CA”。Alice 使用 Charlie 向 Daphne 颁发的证书以及 Daphne 向 Bob 颁发的证书,可以验证 的签名。

这里棘手的一点是,虽然爱丽丝可能认识查理并相信他有能力在遇见鲍勃时正确识别鲍勃,但即使在一加仑吉尼斯黑啤酒的影响下,爱丽丝也不认识达芙妮。在爱丽丝-查理-达芙妮-鲍勃链中,爱丽丝不仅必须相信查理是可靠的(他 做过 正确识别达芙妮)但查理并不容易受骗,即如果达芙妮本人不值得信任,查理就会拒绝为达芙妮签署证书。在实际情况中,当信任被委托时,信任会迅速下降。

使用证书时,主要有两种可能的结构:

  • 分层CA:有一个或几个“根CA”,每个人都知道它的构造。一个 CA 委托给另一个 CA(即它在身份中签署了一个证书,其中有一个传统标志,上面写着:仅在规定了双方 CA 在认证方面的法律责任的合同协议中,“此公钥可被信任用于验证证书上的签名”)。这意味着授权被正式定义,而恰巧这并不容易。与律师兼容的认证合同通常称为“认证政策声明”(CPS),是一份长达 200 页的文档。

  • 信任网:每个人都充当 CA。在缺乏“正式可信度”的情况下,每个单独的链只能产生非常少量的信任。这意味着需要大量的补偿。只有当爱丽丝可以验证时才会接受鲍勃的密钥 一些 (许多)不同的链条通过不同的参与者通向鲍勃。例如,爱丽丝将需要 Charlie-Daphne-Bob 链,但也需要 Elijah-Fiona-Bob 和 Gerald-Hillary-Ivan-Bob 链。他们都是酒鬼,但他们可能是 集体地 可靠,因为假鲍勃必须支付很多轮才能破坏爱丽丝使用的每条链的一个参与者(如果爱丽丝要求 n 具有不同证书的链,那么攻击者必须至少破坏 n 参与者)。

所以认证业务主要是程序问题:谁是 CA、CA 在颁发(签署)证书之前验证什么、从法律角度看整个事情如何,等等。这些过程本质上很复杂,并且必须得到证书格式中的详细信息的支持(例如标记“此公钥是 CA 密钥”)。目前定义的两种主要标准格式是 X.509前列腺素. 。X.509 对分层 CA 有很大的支持,并且是一个非常混乱的标准、格式、实践和委员会。PGP(标准化名称为“OpenPGP”)没有真正支持分层 CA;它旨在与信任网一起使用。OpenPGP 比 X.509 更简单,但也更受限制,特别是如果您希望证书背后具有强大的法律含义。

对于 IM 服务器来说,所有这些都可能是大材小用。爱丽丝真正想要的身份概念可能是 重复:“那个鲍勃和我昨天聊天的那个鲍勃是同一个人”。爱丽丝事先并不认识鲍勃,但与他交谈一旦确定了他在爱丽丝眼中的身份。她只是不想被另一个鲍勃愚弄。为此,一个简单的过程(例如“Alice 的软件保存任何新聊天记录的公开密钥,并在之后使用它”)就可以解决问题。请记住,关键问题是正确地 定义 你追求什么身份概念。

除非你控制的服务器,你不能。当然,除非你已经知道Bob的公钥但后来....我想你的鸡和蛋的问题在这里。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top