Hash
如果給定兩個散列(來自不同的散列函式),對原始數據進行暴力破解會更容易嗎?
我有一個聊天伺服器,它使用公鑰來辨識他們的客戶。但是如果知道公鑰,那麼每個人都可以互相發送直接消息(DM),這很煩人。客戶應該選擇誰應該給他們發消息。
所以我決定獲取公鑰的兩個雜湊值,一個用於使用者身份驗證,另一個用於辨識用於加密直接消息傳遞的公鑰。
我的問題是:有兩個雜湊值會影響成功猜測原始數據的機率嗎?
IMO 這取決於您成功猜測原始數據的機率是什麼意思。由於散列函式將任何大小的輸入轉換為固定大小的輸出,因此存在(無限)許多衝突。這可能會給密碼帶來問題,任何衝突都會導致身份驗證成功。但是,您只關心正確的原像,因為任何其他輸入會產生相同的輸出,(很可能)不會洩露 Bob 的有效公鑰。
假設有一個攻擊者知道你的公鑰格式並且能夠暴力破解所有可能的密鑰。然後很可能會出現不止一個候選人(取決於您的雜湊和公鑰的長度)。然後,攻擊者從第二個雜湊中獲取更多資訊,以區分哪個候選者是正確的。
從這個意義上說,您通過提供第二個散列來增加猜測原始數據的機率。
但。我認為這種情況不必擔心 - 因為您需要將第一個函式的衝突輸入第二個函式以獲得優勢(反之亦然),如果散列函式選擇得當,這些很難獲得. 此外,鑑於此類候選者的數量可能不會太多,攻擊者不妨立即嘗試使用候選密鑰進行 DM。
如果您擔心有人找到給定雜湊(或兩個)的正確原像,請使用大小合適且隨機的鹽,每個使用者都不同。終極助推器:為每個雜湊使用不同的鹽。