我目前正在處理一個應用程序,我們收到私人健康信息。最大的問題之一是SSN。目前,我們並未將SSN用於任何事情,但將來我們希望能夠使用它來跨多個設施唯一識別患者。我能看到可靠地做到這一點的唯一途徑就是通過SSN。但是,我們(除了我們的客戶)真的不想存儲SSN。散列SSN和其他有限的域信息
所以很自然地,我想到了SHA哈希值,因爲我們只是用它來識別。問題是,如果攻擊者知道問題域(SSN),那麼他們可以專注於該域。所以計算十億個SSN要容易得多,而不是幾乎不限數量的密碼。我知道我應該使用鹽和鹽,但是我還有什麼可以做的,以防止攻擊者泄露SSN?我沒有使用SHA,而是計劃使用BCrypt,因爲Ruby有一個好的庫,它可以自動處理可擴展的複雜性和醃製。
它不會被用作密碼。本質上,我們從許多設施獲取消息,並且每個設備都描述一位患者。接近患者全球唯一標識符的唯一東西是SSN號碼。我們將使用散列來識別多個設施中的同一位患者。
您可能不希望以這種方式使用SSN:人們可能會在表單上誤寫它,或者它可能會[隨時間而改變](http://www.ssa.gov/pubs/10064.html) 。 – sarnold 2010-07-23 03:32:21
我第二個sarnold。我已經看到這種SSN信息的使用剛好失敗 - 另一種情況是當沒有SSN(立即)可用時。 – 2010-07-23 03:37:49
這是一個很好的觀點,但這是爲了更多的模糊解決方案,它不一定100%是正確的。此外,當沒有SSN可用時,該功能不會爲該患者工作。唯一的其他建議選項是使用他們的保險信息,這些信息在準確性和可用性方面有其自身的問題。 – 2010-07-23 03:41:16