iT邦幫忙

1

AES 為何IV值須隨機產生與不須保密?

aes
  • 分享至 

  • xImage

小弟我只是個普通的後端工程師,最近在研究AES加密,與同事聊天時發現各方文件都寫上'每次加密IV需使用完全隨機方式產生,而產生的IV本身並不需要保護,它是可以被公開的',但是卻找不到解釋為何IV需要使用隨機方式與IV值被公開為何不會有問題。

目前有個使用情境為確認AB站身分
A Server向B Server傳遞Data, B Server使用AES加密後將密文與IV回傳A Server, A Server將使用者Redirect到B Client並帶上密文與IV傳遞給B Server去解密確認身分。

想請問各位大神:
1.IV使用隨機方式產生並公開與使用固定IV並隱藏在Server中有什麼區別呢?
2.另外請問以上流程中是否存有安全疑慮呢?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
2
淺水員
iT邦大師 6 級 ‧ 2022-07-29 19:01:40
最佳解答

AES 只對 16 byte 加密
但現實中資料是任意長度的
所以會搭配區塊加密法工作模式來加密資料

假設有明文 A 跟明文 B
他們一開始有一段文字是相同的
那麼對 A 跟 B 加密的話,前面那段會產生相同的結果
這會讓攻擊者可以分析蒐集到的密文
IV 就是為了避免這種狀況而生

為何IV需要使用隨機方式

IV 共同的要求是「不要重複」
有時候也看得到用計數器的方式作為 IV
用計數器方式是否安全似乎與區塊加密法工作模式有關
(這部分我沒研究很深,目前我是都採用隨機就是)

IV值被公開為何不會有問題

因為缺了密鑰,就算有 IV 也無法解開。
而且 IV 因為不能重複使用,所以無法寫死在程式內,只能透過傳輸的方式給予對方。

bodera iT邦新手 4 級 ‧ 2022-08-01 08:55:36 檢舉

大大講到開頭重複的部分讓我想到了以前看過的一部電影,
德軍的加密電報中開頭都會使用'希特勒萬歲'導致加密被破解。
感謝提點 XD

淺水員 iT邦大師 6 級 ‧ 2022-08-01 10:52:24 檢舉

我那時候回答的時候也一直想到那部電影(模仿遊戲)

1
wiseguy
iT邦超人 1 級 ‧ 2022-07-29 20:37:27

IV 這個東西的用途,簡單說就是「讓你的資料,即使是相同的內容,用相同的密碼,加密後也會是不一樣的密文」。
如果沒有用 IV,那麼相同的內容,用相同的密碼,就會有一樣的加密結果。只要駭客拿到幾份你用同樣密碼加密的資料,暴力比對就能知道密文的意思,甚至不需要解密就能猜出內容。
不過 IV 只不過是幫助混淆,所以他不需要隱藏。但如果你又使用相同 IV 去加密每一份資料,那就失去它的意義了。又變成是一樣的資料、一樣的密碼、一樣的 IV,會有一樣的密文。
這樣知道 IV 的用處了嗎。

bodera iT邦新手 4 級 ‧ 2022-08-01 08:58:08 檢舉

了解~

1
海綿寶寶
iT邦大神 1 級 ‧ 2022-07-30 11:01:43

1.IV使用隨機方式產生並公開與使用固定IV並隱藏在Server中有什麼區別呢?

相對而言,安全性
隨機方式:較高/固定IV:較低
隱藏在Server:較高/公開:較低

2.另外請問以上流程中是否存有安全疑慮呢?

安全疑慮只有「相對」高低,沒有「絶對」的沒有
就像「用了 xx 比不用 xx 安全,但不代表用了 xx 就沒有安全疑慮」

與同事聊天時發現各方文件都寫上'每次加密IV需使用完全隨機方式產生,而產生的IV本身並不需要保護,它是可以被公開的'

我實在 Google 不到「各方文件」有提到這點(IV不需要保護,它是可以被公開的)
可以的話請提供一兩個連結,我去讀一下
/images/emoticon/emoticon41.gif

淺水員 iT邦大師 6 級 ‧ 2022-07-30 13:44:13 檢舉

SP 800-38A(Recommendation for Block Cipher Modes of Operation: Methods and Techniques)

5.3 Initialization Vectors

The IV need not be secret; however, for the CBC and CFB modes, the IV for any particular execution of the encryption process must be unpredictable, and, for the OFB mode, unique IVs must be used for each execution of the encryption process.

bodera iT邦新手 4 級 ‧ 2022-08-01 08:48:48 檢舉

羊小咩大大的文章中有提到:https://ithelp.ithome.com.tw/articles/10249953
還有另一篇文章:http://ijecorp.blogspot.com/2013/08/python-m2crypto-aes-encrypt-decrypt.html

bodera iT邦新手 4 級 ‧ 2022-08-01 08:49:42 檢舉

淺水員感謝提供 第8頁 5.3 有提到 'The IV need not be secret;'

我要發表回答

立即登入回答