我正在開發一個存儲高度安全信息的Windows Phone 7項目。這些數據受密碼保護。如果我在其他3個CryptoStream中加密一個CryptoStream(總共4個加密碼流相互嵌入,每個加密碼流使用不同的方法生成密鑰,初始化向量和鹽)。這種方法是否足夠安全,還是我需要更多的CryptoStreams(每個都使用256位AES加密)?在其他幾個封裝一個CryptoStream提高安全性?
2
A
回答
7
由於密碼通常比密鑰具有更小的位空間,因此有人更可能使用暴力破解或社交工程設計密碼,甚至破解單一加密的流。所有對它進行多次加密確實會增加用O(n)強制密碼所需的時間或精力(你真的希望複雜度增加O(n^2)或更多)。
但是,如果您需要超安全加密,請不要推出自己的策略,選擇DOD標準(或同等標準)並實施它。
爲了進一步解釋,AES是具有三種不同密鑰長度的分組密碼。戰略的第一部分是確定您想要使用的密鑰長度。你可以隨機選擇一個,也可以選擇最大的一個,但你真的想爲你的情況選擇最佳選擇。接下來是AES的實際使用情況。由於它是一個分組密碼,因此它會將相同的明文編碼爲相同的密文,因此您需要使用初始化向量和鹽以及其他此類技術來確保明文會變成不同的密文。
然後就是如何從密碼中派生密鑰,這可能很弱。如果每次生成密鑰,都可能意外縮小了密鑰空間並削弱了密鑰空間。您還必須考慮使用的隨機數生成器,因爲它可能會產生可預測的值。如果您以某種方式使用密碼解鎖密鑰存儲,那麼您的數據只受密鑰存儲的保護。如果您只有在成功接收密碼後才能遠程獲取密鑰,那麼您已經阻止了數據的離線攻擊,並且可以主動檢測暴力攻擊。
最後還有密碼本身的方面,這是迄今爲止加密策略中最薄弱的一點。如果用戶選擇弱密碼,則使用多少密碼無關緊要。這就是爲什麼即使您只使用單個128位AES加密來加密數據,攻擊者也會嘗試破解密碼的可能性高於試圖破解加密的原因。
除非您計劃在滲透測試和安全審計上花費必要的資金,否則挑選一套已經過測試的策略將爲您提供比您自己想要的更好的策略。
爲了好玩,如何TrueCrypt does it讀了。
1
單個AES-256加密應該足夠強大。 4聽起來足夠偏執。
0
您可以使用AesManaged加密和解密密碼,您可以在本文中找到更多信息和示例源代碼。
相關問題
- 1. MYSQL:其中一個特定的屬性比其他幾個
- 2. 創建一個可執行封裝2個其他項目
- 3. 提高wordpress安全性
- 4. 安裝幾個.apk和設置其他東西
- 5. 一個div更改其他幾個
- 6. 彈性搜索如何不安全以及如何提高其安全性?
- 7. 提高性能裝載幾個標記與地圖V3
- 8. Python對象封裝安全
- 9. CakePHP的安全性如何,我們如何提高安全性?
- 10. 封裝在淨MDI其他應用
- 11. 我怎樣才能提高這個php代碼的安全性?
- 12. preg_replace for bbcodes:如何提高安全性?
- 13. 提高DB INSERT的安全性
- 14. 最佳PHP.ini設置提高安全性
- 15. 發佈到twitter,提高安全性
- 16. 在一個頁面中從其他博客獲取幾個rss提要
- 17. 計數基於幾個其他的一個屬性實例的屬性
- 18. 如何在一個pom.xml中安裝其他Maven包?
- 19. PostgreSQL的幾個COUNT在其他領域
- 20. HTML/Body沒有封裝整個高度
- 21. 設計類:每個類封裝其他相關類的對象
- 22. 如何安裝應用程序時從同一個項目安裝其他apk?
- 23. RequestDispatcher的一個JSP在同一封裝
- 24. 顯示一個imageview高於其他?
- 25. 是否需要兩個或多個密碼才能提高安全性?
- 26. 線程安全緩衝區封裝流
- 27. 此MessageDigest封裝線程安全嗎?
- 28. 散列算法SHA256,我的方法是否安全?我如何添加一個鹽值來提高安全性
- 29. 創建一個安裝有其他視圖的軟鍵盤
- 30. Git:創建分支從幾個特定的提交,但在幾百個其他提交
*得到他的錫箔帽*永遠沒有人能有足夠的安全性! – 2011-04-29 02:59:44
錫紙會阻止思維探測器嗎? – 2011-04-29 03:11:28
您是否確保數據在內存中時保持受保護狀態?你如何從手機上獲取數據,以及如何訪問它?獲取/猜測密碼有多容易(你是讓他們選擇任何舊密碼,還是對內容和長度有嚴格要求?)如果他們忘記密碼會怎麼樣?您應該關注數據的整個生命週期和使用情況,而不僅僅是在該生命週期的單個階段中它的安全程度。另外,我還沒有聽說過任何人在同一個數據的單個表單/存儲上使用這麼多級別的加密。 – 2011-04-29 03:56:27