6

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

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

谢谢

4

4 回答 4

5

由于 Alice 和 Bob 不能信任服务器,他们必须找到另一种方式来确认彼此的密钥。一种可能性是依赖另一方。如果 Bob 信任知道 Alice 的 Candice(并且知道 Candice 的公钥),Candice 可以签署 Alice 的公钥,然后将签名版本发送给 Bob。这称为信任网络

于 2010-02-17T14:41:14.183 回答
5

通过让受信任的第三方(威瑞信、您的公司、信任网络等)签署 Bob 的证书,或者让 Bob 通过单独的带外安全路径将他的证书发送给 Alice(亲自交给她一个 USB 密钥例如)。

这两者都触及了 Bob 证书的核心含义。您只相信 Bob 的证书就是 Bob 的证书,因为您信任的人已经对其进行了认证。这个“某人”可以是 Bob 本人,也可以是签署 Bob 证书的可信第三方。您只能像信任验证者一样信任它。

于 2010-02-17T14:42:32.337 回答
2

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

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

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

使用非对称加密可以让您将问题简化为对公钥的信任问题。Alice 将使用她认为是 Bob 的公钥。因此,Alice 只需要某种方式来确保她拥有的公钥确实为 Bob 所拥有。公钥的所有权由对应私钥的控制来定义: Bob 的公钥是私钥在 Bob 的独占控制下的密钥(例如,只有 Bob 知道该密钥,或者私钥在硬件令牌中-- 一张智能卡 -- Bob 放在他的钱包里)。

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

一个更先进的解决方案是使用证书,以减少直接饮酒的需要。证书是一个包含身份(例如名称,例如“Bob”)和公钥的盒子。该框由证书颁发机构(CA) 签名:CA 通过应用其签名来断言公钥确实属于 Bob。如果 Alice 知道 CA 公钥,那么她就可以验证证书上的签名,然后在公钥和证书中包含的身份之间的链接中获得信任。

认证是信任的委托。Alice她的信任委托给 CA;据说,CA(我们称它为查理)去酒吧会见鲍勃;通过证书,查理告诉爱丽丝:“是的,那真的是鲍勃的钥匙,他在喝完第三品脱后给我看了”。事情在这里变得有点模糊,因为委派信任并不容易(尤其是如果查理有酗酒的习惯)。当一个 CA 为另一个 CA 签署证书时,委托可以走得更远。在这里,查理告诉爱丽丝:“我没有见过鲍勃,但我见过达芙妮,她可能见过鲍勃并担任 CA”。Alice 可以使用 Charlie 颁发给 Daphne 的证书和 Daphne 颁发给 Bob 的证书来验证该签名

这里的棘手点是,虽然爱丽丝可能认识查理,并相信他有能力在遇到鲍勃时正确识别鲍勃,即使在一加仑吉尼斯啤酒的影响下,爱丽丝也不认识达芙妮。在 Alice-Charlie-Daphne-Bob 链中,Alice 不仅要相信 Charlie 是可靠的(他确实正确地识别了 Daphne),而且还要相信 Charlie 不会轻信,即如果 Daphne 是,Charlie 会拒绝为 Daphne 签署证书。自己不值得信赖。在实际情况下,信任在被授权时会迅速下降。

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

  • 分层CA:有一个或几个“根CA”,每个人都通过构造知道。一个 CA 仅在建立法律的合同协议中委托另一个 CA(即,它在身份中使用常规标志签署证书,该标志表示:“此公钥可被信任以验证证书上的签名”)两个 CA 在认证方面的责任。这意味着委托是正式定义的,碰巧这并不容易。与律师兼容的认证合同,通常称为“认证政策声明”(CPS),是一份长达 200 页的文件。

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

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

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

于 2010-02-17T15:44:15.307 回答
0

除非您控制服务器,否则您无法控制。当然,除非您已经知道 Bob 的公钥,但是……我认为您在这里遇到了鸡与蛋的问题。

于 2010-02-17T14:40:06.417 回答