假设我们有一个分散的服务S,分布在由1000个节点/服务器组成的网络上。是否可能有一个注册/注册计划使用电子邮件地址作为登录?
我看到两个问题:
S (例如,在网络提供的一个网站镜像上的注册表格)。f9x372d2aff0由其中一个节点存储在网络的PendingRegistrations数据库中,其中一个节点向userA@example.com发送确认电子邮件。PendingRegistrations数据库中的令牌进行比较,如果匹配,他可以完成注册过程,因为他已经证明自己是userA@example.com的合法所有者。现在:
PendingRegistrations数据库,获取令牌并自己注册帐户。或者:他可以观察服务器发出的电子邮件,查看将发送到userA@example.com的链接,并获得确认链接。这与佐科三角原理很接近,但我看不出著名的解决方案(如斯沃茨解)如何解决这里的问题。
使用电子邮件地址作为登录的分散服务是不可能的,还是非对称加密(公钥/私钥)在这里有帮助?
注意:任何从节点发送给用户的电子邮件,都必须由网络的一个节点“编写”。所以我想说的是:“任何将由电子邮件接收者打开其邮箱中收到的电子邮件的字符串,也可以由节点所有者/电子邮件发送服务器所有者查看”,从而使问题变得更加困难。这似乎很明显,但也许有一个聪明的解决方案?
发布于 2018-01-30 23:06:02
您问题的核心是“是否有一个userA@example.com的‘所有者’可以被证明具有的属性,而在其他方面没有一个属性可以被证明具有?”这在很大程度上取决于电子邮件系统的安全性,总的来说,电子邮件系统相当差。另一个核心问题是,“登记”甚至意味着什么。想必,它意味着“证明”一个人的身份,但向谁证明它,以及其他人如何知道它已经被证明?必须有“网络”验证身份的过程,然后必须有用户验证网络已验证身份的过程。要想完全回答你的问题,就需要对这些过程进行精确的表述。
最终,“所有者”唯一可能拥有的两个独特属性是发送电子邮件的能力和接收/读取电子邮件的能力。任何其他属性,比如使用私钥(非对称加密)签名的能力,都意味着您不再仅仅基于电子邮件。在这一点上,这就像问“如果你也有一个开瓶器的话,用勺子打开瓶子可以吗?”
如果您有信心能够检测到电子邮件欺骗,那么您就可以让某人选择一个私钥和公钥,将他们的公钥从他们的电子邮件发送到节点,然后用他们的私钥签名所有东西。
如果您不确信可以检测到电子邮件欺骗,但您确信有可能以只有电子邮件地址的“所有者”才能读取邮件的方式发送消息,那么任何一条消息都不可能生成新用户特有的任何属性;在电子邮件中发送的任何信息,发送节点也有。因此,通常您必须让“网络”从多个节点发送多条消息,每个节点都有自己的令牌。
发布于 2018-01-30 21:12:45
这里有很多‘if’,但是您的具体问题可以通过在数据库中存储公钥而不是注册令牌来解决,私钥被发送到userA@example.com,注册是通过用户用这个私钥签名来完成的。
但是,如果您想继续进行这种设置(网络中的某些节点可能是恶意的),则必须更详细地定义攻击者模型。
https://crypto.stackexchange.com/questions/55168
复制相似问题