Hash

在允許匹配的同時隱藏辨識數據?

  • September 12, 2015

我與人們一起研究他們的非法藥物使用情況,對於一個項目,當他們訪問針頭交換時,我正在與他們一起進行調查。因此,隨著時間的推移,同一個人在多次訪問交易所時會被反複調查。

為了將同一個人跨時間的多項調查聯繫在一起(因為我們想要跟踪諸如參與藥物治療和藥物使用水平的變化之類的事情),我要求他們給我一些他們可以記住的資訊但這至少會適度限制某人從中辨識他們的能力:他們母親名字的前兩個字母、他們出生的月份和性別。例如,女性 ( F) 出生於

$$ month $$/20/$$ year $$其母親的名字是 Jane 將獲得密碼JA20F。 因此,每項調查都會將此程式碼作為唯一標識符,您可以將同一個人完成的多項調查聯繫起來,而無需記錄諸如姓名和出生日期之類的公然辨識資訊(或詢問街頭吸毒者,可能有心理健康問題以及,記住每次訪問的唯一研究 ID)。從安全的角度來看並不完美,如果您有成千上萬的人,也不是唯一的,但是當數據被輸入到具有全盤加密的單個筆記型電腦上並且所有研究文件都被加密儲存並且您擁有聯邦機密證書時(保護有關非法活動的研究數據免受傳票),並且只有大約一千人使用該服務,可能已經足夠了。

但是儲存該標識符仍然困擾著我。我真的很想在數據輸入時對它做點什麼,這樣它就不能“逆轉”回可能辨識的出生日期、性別和母親名字的前兩個字母。我最初的想法是在儲存唯一標識符之前對其進行雜湊處理,這總比沒有好,但任何知道唯一標識符格式的人都可以輕鬆地使用彩虹表方法來取消屏蔽它。據我了解加鹽,自我加鹽意味著同一個人的雜湊每次都不同,因此我將失去連結同一個人完成的調查的能力。使用單一的鹽只會使鹽成為易受攻擊的數據。

有沒有人對單向散列字元串有任何想法(或我只是不知道的成熟技術)a)不容易受到彩虹表的影響,但 b)每次從相同的輸入產生相同的輸出?

標識符的任何轉換,包括問題中的那些,都必然有至少一個缺點:在加密質量轉換之後,幾乎不可能重新聚合指向同一個人但略有亂碼的標識符(也許是因為母親的名字有兩種常見的拼寫)。

即使忽略這一點,我也看不到一個方便且防彈的解決方案,主要是因為您從一個非常短的標識符開始。

一種改進是使用密鑰對標識符進行加密,並採用格式保留加密,以便加密結果保持簡短,與現有實踐兼容,並且加密顯然不會引入比原來更多的衝突。一個最嚴重的問題是保護密鑰,並限制它的使用(這是必要的,因為它足以加密一些選定的輸入來破壞系統)。

讓這個密鑰受到密碼保護(就像 PGP 密鑰一樣)總比沒有好,合法使用者在數據收集活動開始時在筆記型電腦上輸入密碼。標準的密鑰擴展技術可以使其對密碼片語搜尋非常安全,同時仍能可靠地檢測意外的鍵入錯誤。在此過程中,所有收集的數據都應使用標準技術進行加密(使用不同的密鑰,為方便起見,可能受相同的密碼保護)。

更好的是移動智能卡中的密鑰,由具有連續錯誤計數器的使用者 PIN 保護。下一步(推薦,即使使用標準智能卡也很容易)如果將至少一個格式保留加密的建構塊移動到智能卡本身,以便密鑰永遠不會離開智能卡(所述建構塊可以是 AES 或一個 MAC 和相應的密鑰,用於 Feistel 密碼的輪函式)。最終,敏感數據可以保存在智能卡本身中,並且在沒有 PIN 的情況下無法訪問。

但請注意,上述任何內容都無法阻止在輸入敏感數據之前對筆記型電腦(例如鍵盤記錄器)進行的主動攻擊。

在這種情況下,不需要彩虹表,因為標識符最多有大約 15 位資訊。您可以循環遍歷所有可能的值(有 $ 26^2 \cdot 31 \cdot 2 = 41912 $ ),即使它們是用鹽散列的,你也會在幾分之一秒內找到原像。

因此,保護資訊的唯一方法是使用密鑰,如果數據是,則可能會受到損害,或者使用另一個身份驗證因素(如密碼)可能不會。當然,每當您輸入數據時,您都需要該因素,因此此時數據必然是易受攻擊的。如果您已經使用密碼加密了您的數據,這並沒有真正添加任何內容。


如果您收集了更多資訊,您可以獲得足夠高的“熵”,加鹽密碼雜湊可能會使原像查找變得困難,但這需要大量資訊,然後您才能確定身份。我不建議這樣做。

相反,您能做的最好的事情就是確保筆記型電腦的安全。只收集足夠的資訊,但僅此而已。並且在完成所有數據的收集和整理後,立即用非辨識數字(例如隨機數字)移除/替換標識符,這樣之後就沒有什麼可妥協的了。

引用自:https://crypto.stackexchange.com/questions/29105