简体   繁体   English

分布式P2P网络中的识别

[英]Identification in a distributed p2p network

SCENARIO: a P2P distributed network in which users connect by a DHT. 场景:用户通过DHT连接的P2P分布式网络。 They identify themselves by a hexadecimal 76-character string. 它们以十六进制的76个字符的字符串标识自己。

PROBLEM: users need to choose their own ID, not have a really long and random one assigned to them. 问题:用户需要选择自己的ID,而不是分配给他们一个很长且随机的ID。 And with security in mind, the network needs to remain 100% distributed, so servers with pubkey:username aren't possible. 考虑到安全性,网络需要保持100%分布式,因此不可能使用pubkey:username的服务器。

POSSIBLE SOLUTION: distributed databases. 可能的解决方案:分布式数据库。 However, how can we guarantee the uniqueness of the username? 但是,我们如何保证用户名的唯一性? A blockchain à la bitcoin isn't a possibility because downloading gigabytes of data also isn't user friendly and also not useful for dynamic content. 不可能使用比特币这样的区块链,因为下载千兆字节的数据也不友好,并且对动态内容也没有用。

POSSIBLE SOLUTION: Distributed file systems such as Tahoe-LAFS. 可能的解决方案:分布式文件系统,例如Tahoe-LAFS。 Extremely complicated and overkill, not easily or cleanly implemented. 非常复杂和过度杀伤,不容易或干净地实施。

So, the issue is having user-friendliness and security/distribution at the same time. 因此,问题在于同时具有用户友好性和安全性/分发性。

Any ideas? 有任何想法吗?

So the question is - do you assume the users to be friendly or evil? 因此,问题是-您认为用户是友善还是邪恶? That means - do you assume, the users will try to steal each others IDs or if you tell them that such an ID is already taken, they will accept it and simply choose another? 这意味着-您是否假设用户将尝试窃取彼此的ID,或者如果您告诉他们已经使用了这样的ID,他们将接受它并只是选择另一个?

When you assume friendliness of the users, you could simply use a DHT and generate a dummy entry for each user name or user id. 当您假定用户友好时,只需使用DHT并为每个用户名或用户ID生成一个虚拟条目。 This way you can check easily if such an entry already exists or not and also create it. 这样,您可以轻松检查此类条目是否已经存在并创建它。 This shouldn't allow any duplicate entries (when the DHT is written properly). 这应该不允许任何重复的条目(正确编写DHT时)。

When you assume that users will try to impersonate others, than you need much stronger security mechanisms and should probably go for GnuPG or other PGP or PPK (Public Private Key) implementations. 当您假设用户将尝试假冒他人时,您将需要更强大的安全机制,并且可能应该使用GnuPG或其他PGP或PPK(公共私钥)实现。 That is - to my knowledge - the simplest decentralised way to ensure someones identity. 据我所知,这是确保某人身份的最简单的分散方式。 However in that case you'd need to store the public keys of the user. 但是,在这种情况下,您需要存储用户的公共密钥。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM