竊聽 sha 256 由兩個條目組成,一個是公開的,是安全的
如果我需要使用對稱加密(AES),使用相同的密碼和初始值多次發送相同的消息是絕對不安全的(我不使用公鑰交換((在第一種方法中)‘PKI,CA等’) 我將使用無證書。
因此,如果我使用 sha-256 對具有公共值(目前日期和小時)的密碼進行雜湊處理,則使用雜湊值作為密碼
攻擊者能否從雜湊中檢索密碼的原始值(他還知道目前日期和時間)
問這個問題的原因:新的一個叫做(Certificateless cryptography)的pproch, Certificateless_cryptography
Certificate-Less_Authenticated
信任KGC伺服器或信任中心(TC)的步驟,是使用預定義的密碼(只有使用者和伺服器知道)對id進行加密,因此伺服器解密密碼並辨識ID並生成部分私鑰(加密)它與密碼)
如果使用者出於任何原因重複該過程,則它是相同的消息(使用者 ID)相同的密碼(使用 PKDF)
建議使用 $ \operatorname{SHA-256}(\mathsf{horodate}|\mathsf{password}) $ 作為 AES 或/和初始值的鍵(缺少唯一的 IV 被稱為激勵上下文)。
這是一個非常糟糕的主意。如果密碼名副其實並且是低熵的(就像大多數密碼一樣,並且由於摩爾定律的某些變體正在提高低熵的標準,因此越來越低),那麼攻擊者確實可以檢索密碼的原始值從雜湊和時間戳。
一個普遍的問題是忽略
現代加密貨幣的第一條規則:不要自己動手
忽略該規則是一個久經考驗的災難配方(並且在 CSE 上提出一個問題作為題外話而被拒絕,但我不會進一步提出這個問題)。
更具體地說,它被忽略
密碼的第一條規則:它們必須經過熵拉伸
不知道為什麼在將密碼轉換為密鑰時需要熵拉伸,密碼儲存需要不可逆的熵拉伸(以基於密碼的密鑰派生函式的名義),並且PBKDF 的第一次命中已經過時,這是一個明確的跡象人們應該學習,或者將手頭的問題留給知識淵博的人,包括應用加密的第一條規則(密碼第一條規則錯誤的商業產品數量眾多,並且從醜陋中辨識出好與壞需要了解問題和產品)。
更具體地說,如果按計劃執行,則很容易安裝密碼搜尋。是的,電影中的那個東西,除了人們只能在第一條密碼規則的最明顯無能的實現中一個接一個地找到字元(比如那些容易受到時間攻擊的)。
在這裡,將需要正常類型的暴力密碼搜尋:嘗試合理的密碼(大致從最可能到最不可能,可能並行),並且對於每個
- PBKDF 的災難性替代品 $ \operatorname{SHA-256}(\mathsf{horodate}|\mathsf{password}) $ 被申請;被應用 ( $ \mathsf{horodate} $ 假設已知,並且由於正常解密需要它,這是合理的);
- 嘗試解密一些密文;如果發生直接錯誤(例如不正確的填充),則該密碼將被拒絕;
- 將生成的明文送出給更多的合理性測試;最常見的是:
- 從適合上下文的幻數開始;
- 被卡方檢驗急劇拒絕為均勻隨機八位字節。
這將告訴攻擊何時達到正確的密碼,然後將允許解密在該密碼下加密的所有密文(並可能訪問使用該密碼的人的不相關的線上帳戶)。
建議的解決方案中還有其他較小的問題:
- 通常,IV 在密文開始時是明確的;這減輕了在蠻力密碼搜尋中對步驟 2 和 3 的需求。
- 如果使用 AES-256,SHA-256 不夠寬,無法導出 key 和 IV;使用帶有消息唯一密鑰的固定 IV 會降低理論上的安全性。
- 沒有提到確保消息完整性的努力,這通常比機密性更重要;參見現代加密的第一條規則。
注意:此答案適用於原始問題,沒有新的Certificate-Less Authenticated Encryption風格。
相同的消息多次使用相同的密碼和初始值是絕對不安全的
如果您要發送相同的消息,那可能還不錯(實際上具有 ECB 模式)。對手會知道這是消息,但不一定知道消息的內容。但在大多數情況下,這是個壞主意。並且存在使用具有相同密鑰和 IV 的不同消息的風險,這可能會完全破壞您的安全性。
因此,如果我使用 sha-256 對具有公共值(目前日期和小時)的密碼進行雜湊處理,則使用雜湊值作為密碼
如果密碼真的是密碼(低熵的東西),那麼使用 salt 和 PBKDF 生成密鑰。@fgrieu 寫了很好的答案。使用電腦到電腦通信時,您可以直接生成所需長度和熵的密鑰。.
我的建議是:假設目前日期和時間 (或時間戳)將是唯一的,那麼 - 為什麼不使用時間戳作為 IV?在您可以保證它是唯一的且不被重用之前,時間戳(或其雜湊)在大多數情況下應該沒問題(請注意,如果 IV 是可預測的,則某些塊模式非常敏感,例如 CBC)
攻擊者能否從雜湊中檢索密碼的原始值(他還知道目前日期和時間)
不,攻擊者不應該這樣做。但是 - 當攻擊者知道時間並且密碼具有低熵(很簡單)時,攻擊者可能會嘗試暴力破解密碼