在計劃攻擊之前對手已經知道的事情
這是一個非常基礎和實用的問題。自從我最近開始閱讀密碼學以來,這些事情一直困擾著我。
對手在計劃攻擊之前通常會知道哪些事情?假設一個對手計劃對一家大公司的伺服器進行攻擊。
- 他是否知道公司正在使用什麼加密方案/模型來保護其儲存在伺服器中的數據?
我認為通常公司使用加密社區已經知道的非常標準和流行的方案,因為使用完全未知的方案可能會導致公司無法發現的巨大數據洩漏。
- 假設對手知道該模型。那麼它們中使用的具體功能呢?例如。流密碼中使用的偽隨機生成器(顯然,密鑰不知道),或者在 DES 等情況下使用 S-box。對手是否已經知道這些東西?
我認為這些事情通常在實施模型時是固定的。並且即使這些東西是已知的,例如 DES 中的 S-box 是已知的,它仍然不會改變方案的安全性。但即使公司試圖隱藏上述功能,它真的能增加數據的安全性嗎?
- 鑰匙
我認為這主要是區分使用者和對手的資訊。但是你能說出實際實現中隱藏的其他東西嗎?
我的假設是基於應該只使用密碼學社區信任的加密方案的報價。否則,很可能存在攻擊者可以利用的未知洩漏。
我認為通常公司使用加密社區已經知道的非常標準和流行的方案,因為使用完全未知的方案可能會導致公司無法發現的巨大數據洩漏。
確實。並提醒自己,實施密碼學也很困難。自製方案可能有旁道攻擊、數據洩露等等。
經常使用的算法是事先知道的。它們在設計文件中,由開發人員洩漏,可以直接從協議配置中確定,指定給認證機構等等等。所以我們簡單地假設 Kerckhoff 原則適用。
這也是為什麼密碼學家在面對沒有指定算法的密文時不會認真對待人們的原因。尋找算法通常不是我們試圖解決的問題。
我認為這些事情通常在實施模型時是固定的。並且即使這些東西是已知的,例如 DES 中的 S-box 是已知的,它仍然不會改變方案的安全性。但即使公司試圖隱藏上述功能,它真的能增加數據的安全性嗎?
與上述相同。
我認為這主要是區分使用者和對手的資訊。但是你能說出實際實現中隱藏的其他東西嗎?
任何被稱為秘密的東西。這包括密鑰,還包括密碼、PIN、生物特徵數據(如適用)。除了保密之外,當然還有其他的應對措施,例如訪問條件、重試次數等等。系統從不單獨依賴密碼學,即密碼學永遠不是解決方案,但它可能是解決方案的一部分。
我的假設是基於應該只使用密碼學社區信任的加密方案的報價。否則,很可能存在攻擊者可以利用的未知洩漏。
正確的。正如布魯斯·施奈爾(Bruce Schneier)著名地總結的那樣:
任何人,從最無知的業餘愛好者到最好的密碼學家,都可以創建一個他自己無法破解的算法。
來自 Cory Doctorow 的推論:
任何人都可以發明一個如此聰明的安全系統,以至於她或他想不出如何破解它。