Hash

什麼是加密散列函式的“致盲”?

  • April 17, 2021

什麼是 SHA256() 或類似的加密散列函式致盲?

它有哪些應用?

最近一個問題的答案簡要提到了“在呼叫外部函式之前考慮致盲

$$ such as $$SHA256()”。(https://security.stackexchange.com/questions/246209/is-it-safe-to-publish-the-password-hashes-from-my-sha256-md5-custom-password-h/ 246275#246275 ) Wikipedia 文章“blinding (cryptography)” 目前提到了幾種不同類型的blinding,包括非對稱加密、非對稱數字簽名和一次性密碼(一種對稱加密),但從未提及散列函式。那篇文章中的大多數應用程序都涉及稍微調整明文,然後通過一些(不受信任的)函式執行調整後的明文以獲得一些中間輸出,然後取消調整以獲得最終輸出,這樣我們在沒有調整的情況下獲得相同的最終輸出和 untweaking,但沒有將明文交給(不受信任的)函式。SHA256() 是否支持這種調整和取消調整?無論是否這樣做,使用 SHA256() 或其他加密散列函式致盲的正確方法是什麼?

在涉及諸如 SHA-256 之類的雜湊的上下文中,加密中至少存在三種可能的致盲感。在所有情況下,目的都是為了隱藏某些被操縱的數據元素的某些東西(值或真實含義)。

  1. 散列作為黑匣子的工具來致盲。確切的含義取決於目的。可以進一步細分為
  • 我們只需要比較數據元素是否相等,所以我們可以散列它們,然後比較散列
  • 我們使用與數據元素組合的雜湊輸出(例如通過 XOR)來屏蔽。
  1. SHA -256 的實現中設置盲點,以阻止試圖從某個側通道(如電磁輻射)查找雜湊輸入的攻擊。
  2. 對雜湊的輸入進行盲化。這是連結文本中的意義

在呼叫外部函式之前考慮盲法。
您將密碼傳遞給MD5() SHA256()函式純文字樣式。如果其中任何一個是後門的,那麼他們就會得到你的密碼。考慮致盲。

這裡的目標似乎是隱藏密碼以防止攻擊者使用MD5()SHA256()API(也可能是:能夠使用彩虹表反轉這些函式)。我認為作者建議在散列之前轉換密碼。這可能是用一個秘密常數對它進行異或運算,或者應用一些帶有固定密鑰的基本密碼。這不是加密,而是試圖通過默默無聞的安全性使程式碼更難逆向工程,或更具體的攻擊。

我在 infosec stackexchange 中的答案已被刪除,但無論如何它已遷移到此處。好吧,我還沒有聽說這種調整是否可行。看,散列函式旨在盡可能地模擬隨機預言。當然,隨機預言機不可能真正存在。在任何隨機預言機中,“調整”輸入的輸出完全獨立於原始輸入的輸出,因此我們無法對輸出執行反向調整以從原始消息中獲取輸出。雖然 sha256 並沒有以許多已知的方式模擬隨機預言機,但據我所知,這個特殊的屬性對於真正的隨機預言機來說是不可能的,請參閱長度擴展攻擊。

其他人可能在這裡有更好的答案,但我認為如果您建議以某種方式調整輸入,對其進行散列並“取消調整”以獲得原始消息的輸出,這是不可能的。如果可能,它不會被認為是安全的。

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