2012-03-23 103 views
2

假设以下想象的场景验证电子邮件地址:不能够查看电子邮件地址

  • 我有用于新兵网站。
  • 新兵和军人只能在本网站注册。 - 最简单的身份验证方法是获取预先授权的电子邮件地址列表。但是,军方显然不会公布他们的电子邮件地址列表。
  • 我将如何验证这些个人注册?

我最初的想法是我可以得到sha3电子邮件地址的散列。然后,当人们注册时,我会检查他们输入的数据库的电子邮件地址sha3。基本上,这将是一种获取布尔值的方式,以确定电子邮件是否在系统中而不知道电子邮件地址。

这听起来像一个现实的方法,这将确保电子邮件地址的匿名性?任何更好的想法来完成这个?

+3

你的想法对我来说听起来很不错,当然假设新兵有一个电子邮件地址,他们用于一切。 – 2012-03-23 18:36:03

回答

1

听起来不错,只要“军队”确信或不正确地认为散列确实是不可逆的,并且愿意用散列列表的地址信任你。 (顺便提一下,sha5是什么?Afaik sha3是最新一代)。

如果他们不会委托你的密码哈希列表,替代方案是委派身份验证:您通过安全连接将电子邮件地址转发给军方,并且他们会告诉您是否可以。它会变慢,但你只需要在注册时做一次。

+0

感谢您的纠正,我将其更改为sha3 – David542 2012-03-24 18:32:04

0

我认为只有电子邮件地址的哈希值是不安全的,因为哈希算法是不可逆的,但理论上可能有不正确的电子邮件与正确的哈希值具有相同的哈希值。这对于md5散列算法是正确的,理论上对于任何其他算法都是如此。

我建议使用某种盐(额外的散列函数有效载荷)或个人注册密钥,并且原因不要使用md5。

用你知道的盐和“军事”知道你只能接收来自“军事”的散列,并且请确保加密是足够公平的,以通过电子邮件识别新兵。但是这种技术容易受到随机散列一致性的影响。

也许,确保招募人员的电子邮件真正有效的最佳方式是在“军事”方面为招募人员提供唯一的注册码,而不是他们需要给予注册码和代码散列以及相应的电子邮件。与每个招聘人员需要提供该注册码相比,您将能够从他的电子邮件和注册码中重新计算招聘人员的个人散列码。

第二种方式的好处是,即使你不能轻松地将哈希强制转换为电子邮件,如果“军事”不仅会给你的代码/哈希对,而是每个代码的列表散列,其中只有一个是正确的。

更新:妄想高潮的方式。你从“军队”接收的数量比新兵数量多两倍。每个招聘人员都收到唯一的注册码。比你需要首先计算注册码哈希,并检查是否有它。比你需要将这个散列与电子邮件结合起来,并检查你是否有第二个散列。这样你将无法自己反转电子邮件。

+0

碰撞的理论可能性是一个有争议的问题。已经很难找到碰撞。发现一个也有RFC822电子邮件地址格式的冲突的难度要大几个数量级。 – 2012-03-24 18:37:35

0

这是一个可行的零知识证明。但是,如果你有军方的合作,人们会认为你可以做得更好......你可以从军方那里得到一个(否则是非感性的)序列号和初始密码,然后让新兵登录使用那。

这样可以解决人们与电子邮件地址之间不存在1:1关系的问题,而且由于您需要猜测密码以及序列号,所以更难猜测。

相关问题