分散的用户身份验证 - 可能吗?

时间:2011-06-20 20:59:23

标签: authentication language-agnostic p2p software-design

我正在设计一个完全分布式的 P2P消息传递应用程序。

编辑:不仅仅是任何消息传递应用程序 - 特别是公共论坛。消息从邻居传递到邻居,因此消息可能来自原始作者以外的对等体。沟通的保密性并不重要。但是,验证消息的作者至关重要。

问题需要介绍:

在客户端 - 服务器模型中,每个客户端都可以确定消息的来源是消息所说的,因为有一个“中间人”认证服务器检查用户的凭据(用户名,密码)是否与条目匹配在将消息中继到接收客户端之前,在内部机密数据库中。

问题是:这可以在纯P2P中实现吗?

假设每个客户端都存储完整的用户凭据集。不同之处当然是不允许客户查看它们 - 因此它们将以加密格式存储。必须检查加密凭证是否与另一组加密凭证相等,而不必完全解密任何一组

可以这样做吗?有更好的方法吗?(记住:100%P2P。没有服务器。)

2 个答案:

答案 0 :(得分:1)

我建议你研究一个名为Web of trust的模型。它被例如PGP用于分散认证。

这句话很好地概括了它:

  

随着时间的推移,您将积累来自其他人的密钥,您可能希望将其指定为可信赖的介绍人。每个人都会选择自己值得信赖的介绍人。每个人都会逐渐积累和分发来自其他人的一系列认证签名,期望任何接收它的人都会信任至少一个或两个签名。这将导致所有公钥出现分散的容错信任网。

答案 1 :(得分:1)

您需要查看PKI。基本上,为用户分配一对公钥和私钥。要对邮件进行签名,只需使用私钥对其进行加密即可。任何人都可以使用您的公钥对其进行解密,因此如果有效,则必须由您签名。

有很多问题需要理解(主要是密钥交换),这是上面提到的“信任网”的答案......

它解决的问题基本上是 - “我们如何知道我们获得的公钥真正属于我们认为属于谁?”