如何在 AES 中增加或減少複雜性?
我研究數據壓縮已經有一段時間了。出於教育目的,經過大量閱讀後,我設法創建了一個使用 AES256-GCM 執行加密和身份驗證的軟體。但是,我現在已經達到了一個點,之後我找不到可能的答案,這讓我感到困惑。
我的軟體允許使用者選擇加密的“硬度”,範圍從 0% 到 100%(一個刻度)。儘管如此,我還沒有完全掌握如何將“硬度”的邏輯與 AES 的邏輯混合在一起。是的,我對使用密鑰、IV、結果數據等有很多想法,但我在這方面學到的一點是,當已經有相同方面的研究時,你永遠不應該重新發明井並且他們的結果被一遍又一遍地檢查和重新檢查。
因此,執行此類工作的最佳方式是什麼?我尋求理論,不一定是編碼。
看看https://en.wikipedia.org/wiki/Triple_DES
它是原始的 DES,三個不同的密鑰依次為 3 × 56 = 168。這樣密鑰的長度增加了 3 倍,但硬度要高得多。
您將使用
這就引出了一個問題,為什麼在現實世界的任何情況下,您都希望降低攻擊者破解您的密碼系統的難度?
要實際回答您的問題,我能想到的唯一合理方法是簡單地減少密鑰中的熵。在 100% 時,使用所有 128 位密鑰。在 50% 時,使用 64 位密鑰,其餘設置為某個靜態值(例如,0)。在 25% 時,使用 32 位密鑰,依此類推。
也就是說,我想重申,除了純粹的好奇心之外,我沒有理由支持這樣的功能。
編輯:請注意,這將導致安全性呈指數下降,這很好地反映了密碼學家通常如何看待系統的安全性。像 AES-128 這樣的現代密碼如此強大,以至於將破解難度降低 100 倍仍然使蠻力遠遠超出了人類可以想像的範圍( $ \frac{2^{128}}{10^{2}} \equiv 2^{121} $ ).