我一點點混淆如何以適當的方式從服務器發送時的加密的消息發送給客戶端,或反之亦然困惑如何使用AES和HMAC
使用AES和HMAC(基於SHA-256)糾正我,請,如果下面的方法是錯誤的:
- 採取從密鑰文件中的安全密鑰(例如,我們建議使用AES-256,我們已經有了一個有效的256位長度的密鑰)
- 生成隨機IV用於AES-256以確保相同的純文本將具有不同的加密輸出。
- 使用純文本和安全密鑰計算HMAC-SHA-256。 (第一個問題:我應該使用IV來進行HMAC計算嗎?例如追加到安全密鑰?)
- 使用AES-256加密純文本。如下
- 爲客戶撰寫消息:HMAC + IV + ENCRYPTED_MESSAGE
最大的問題是:是否有可能以某種方式不派IV客戶,而是產生同樣的方式,仍然是加密安全嗎?或者也可以發送IV嗎?
我最終得到隨機的第四代,因爲需要相同的純文本在不同的加密結果中結束。
你會推薦什麼操作模式? CBC有其開銷,我們應該處理填充。我想我的選擇ic OFB/CFB。 – Valentin 2012-04-30 12:05:18
從安全角度來看,它們都是一樣的(ECB除外,不要用)。如果系統需要IV,請確保使用新的IV。如果你想節省一些努力,那麼有認證模式,不需要hmac。 GCM是其中最好的。你在用什麼語言? – imichaelmiers 2012-04-30 15:20:14
我不建議將第一個密鑰的SHA1和作爲第二個密鑰。相反,您可以從密碼中派生兩個不同的參數和不同的參數和PBKDF2。最好的事情是擁有兩個獨立的密鑰,而不是依賴(可能)弱密碼。 – 2012-05-17 09:18:23