在CBC模式下使用AES加密給定密鑰並使用IV(當然)時,是否存在任何安全缺陷?使用與密鑰相同的字符串加密字符串是否安全?
原則是尊重的:關鍵是祕密,第四是公開的(因爲這不影響加密的安全性)。
但是,潛在攻擊者將知道(因爲他可以訪問源代碼),該字符串使用自己作爲密鑰加密。
我的判斷沒有看到任何問題,但我試圖確定。
謝謝。
編輯 - 任務,我希望我能夠跨越明確通過他們,這還不是很清楚我自己的細節:
我的系統使用加密某些值存儲在MySQL表。加密是在PHP代碼上執行的(而不是MySQL內置的AES)。顯然,我需要一個祕密密鑰,系統設置時需要由系統管理員設置,只需一次。這是至關重要的,因爲在保存任何加密數據之後更改密鑰會使數據不可解密。
管理員可以通過簡單地通過FTP(或其他)編輯PHP腳本文件來設置密鑰。但那不是我想要的。
我想要的是有一個安裝腳本,在這個腳本期間,管理員選擇密鑰,該密鑰被自己加密並存儲到表中。誠然,下面提出的一個有效的觀點是,你需要密鑰來解密密鑰......我的推理沒有得到太多,我處於調查是否用自己加密密鑰的階段因爲關鍵仍然是一件安全的事情。
如果您對上述有任何想法,將非常感激。
謝謝。
起初我與@Piskor達成一致,「有什麼意義?」但是我看到,如果您用自己加密了密碼,然後存儲了結果密碼,您可以通過嘗試使用提供的密碼解密密碼來驗證正確的密碼。這與您的用例類似嗎? – Greg 2010-09-03 18:00:52
只是我還是你的頭銜和問題不同? :S – 2010-09-03 18:02:50
@Greg如果他只是測試以查看密碼是否正確,那麼最好是存儲密碼的密碼散列。您散列用戶的輸入,如果散列匹配,則知道輸入密碼正確。 – JMarsch 2010-09-03 18:05:24