2012-03-23 26 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關係的問題,而且由於您需要猜測密碼以及序列號,所以更難猜測。

相關問題