2011-04-29 42 views
2

我正在開發一個存儲高度安全信息的Windows Phone 7項目。這些數據受密碼保護。如果我在其他3個CryptoStream中加密一個CryptoStream(總共4個加密碼流相互嵌入,每個加密碼流使用不同的方法生成密鑰,初始化向量和鹽)。這種方法是否足夠安全,還是我需要更多的CryptoStreams(每個都使用256位AES加密)?在其他幾個封裝一個CryptoStream提高安全性?

+1

*得到他的錫箔帽*永遠沒有人能有足夠的安全性! – 2011-04-29 02:59:44

+1

錫紙會阻止思維探測器嗎? – 2011-04-29 03:11:28

+0

您是否確保數據在內存中時保持受保護狀態?你如何從手機上獲取數據,以及如何訪問它?獲取/猜測密碼有多容易(你是讓他們選擇任何舊密碼,還是對內容和長度有嚴格要求?)如果他們忘記密碼會怎麼樣?您應該關注數據的整個生命週期和使用情況,而不僅僅是在該生命週期的單個階段中它的安全程度。另外,我還沒有聽說過任何人在同一個數據的單個表單/存儲上使用這麼多級別的加密。 – 2011-04-29 03:56:27

回答

7

由於密碼通常比密鑰具有更小的位空間,因此有人更可能使用暴力破解或社交工程設計密碼,甚至破解單一加密的流。所有對它進行多次加密確實會增加用O(n)強制密碼所需的時間或精力(你真的希望複雜度增加O(n^2)或更多)。

但是,如果您需要超安全加密,請不要推出自己的策略,選擇DOD標準(或同等標準)並實施它。


爲了進一步解釋,AES是具有三種不同密鑰長度的分組密碼。戰略的第一部分是確定您想要使用的密鑰長度。你可以隨機選擇一個,也可以選擇最大的一個,但你真的想爲你的情況選擇最佳選擇。接下來是AES的實際使用情況。由於它是一個分組密碼,因此它會將相同的明文編碼爲相同的密文,因此您需要使用初始化向量和鹽以及其他此類技術來確保明文會變成不同的密文。

然後就是如何從密碼中派生密鑰,這可能很弱。如果每次生成密鑰,都可能意外縮小了密鑰空間並削弱了密鑰空間。您還必須考慮使用的隨機數生成器,因爲它可能會產生可預測的值。如果您以某種方式使用密碼解鎖密鑰存儲,那麼您的數據只受密鑰存儲的保護。如果您只有在成功接收密碼後才能遠程獲取密鑰,那麼您已經阻止了數據的離線攻擊,並且可以主動檢測暴力攻擊。

最後還有密碼本身的方面,這是迄今爲止加密策略中最薄弱的一點。如果用戶選擇弱密碼,則使用多少密碼無關緊要。這就是爲什麼即使您只使用單個128位AES加密來加密數據,攻擊者也會嘗試破解密碼的可能性高於試圖破解加密的原因。

除非您計劃在滲透測試和安全審計上花費必要的資金,否則挑選一套已經過測試的策略將爲您提供比您自己想要的更好的策略。


爲了好玩,如何TrueCrypt does it讀了。

+0

AES本身是國防部的標準 – IDWMaster 2011-04-29 03:02:05

+2

是的,但您如何使用AES與國防部如何使用AES不同。如果您使用AES加密某些內容,然後在維基百科上發佈密鑰,則您使用的是DOD級加密,但採用的是不符合標準的加密策略。 – Talljoe 2011-04-29 03:06:08

+0

如果每種加密方式都是「標準」,那麼這不會使密鑰更容易破解? – IDWMaster 2011-04-29 03:06:47

1

單個AES-256加密應該足夠強大。 4聽起來足夠偏執。

相關問題