Vigenere 密碼衝突
我一直在閱讀 Aumasson 的《Serious Cryptography》一書以開始學習密碼學。有一部分作者建議使用置換的加密應該如何保護這些屬性
- 它應該是一個排列,它是字母 A 到 Z 的重新排列,這樣每個字母都有一個唯一的逆。例如,將字母 A、B、C 和 D 分別轉換為 C、A、D 和 B 的替換是置換,因為每個字母都映射到另一個字母。但是將 A、B、C、D 轉換為 D、A、A、C 的替換不是置換,因為 B 和 C 都映射到 A。通過置換,每個字母恰好有一個逆。
- 排列應由密鑰確定
- 不同的鍵應該導致不同的排列。
- 排列應該看起來是隨機的
對於第一個屬性,我想知道 Vigenere Cipher 是否可以被認為是安全的(主要基於上面的這些排列規則),因為某些密鑰可能會導致衝突。
例如,
Message
= “ABBA” //Key
= “BA”
=>Ciphertext
= “BBCA”,其中 “A” 和 “B” 有衝突的結果。
您所說的衝突實際上是一個固定點,其中加密映射不會“移動”或“更改”符號。
如果 vigenere 密鑰是均勻分佈的,則有時會發生這種情況。這不是問題。事實上,沒有固定點的密碼很弱,因為它看起來不夠隨機。
即使是現代分組密碼,如 AES,也被設計成看起來像隨機排列。所以它們有時會產生一個固定點。
特別是 Enigma 在 WWII 中受到攻擊,因為外掛板設計避免了固定點,因此在 Enigma 下沒有字母會映射到自身。請參閱有關更改 Enigma 設計以避免此弱點的可能性的問題。
一般來說,由於密碼的操作模式等各種因素,避免定點的現代密碼是否可以在實踐中受到攻擊是一個複雜得多的問題。問題是無定點排列固有的缺陷嗎?與一些非常詳細的答案進行了很好的討論。
您規定的規則適用於使用一個字母表的替換密碼,例如,當每個字母都由相同的密鑰加密時。
Vigenere Cipher 使用多個字母表(每個密鑰字母一個),因此規定的規則分別適用於每個字母表。
在您的範例中,您使用長度為 2 的密鑰。這意味著:第 1、第 3、第 5、第 7… 字母使用相同的排列(密鑰“A”)第 2、第 4、第 6、第 8… 字母進行加密使用相同但不同的排列加密(密鑰“B”)
“key A permutation”和“key B permutation”之間的衝突不算在內,因為您使用的是兩個不同的鍵。
基本上,您可以將使用 Vigenere Cipher 理解為對一個明文使用 n 個替換密碼,逐個字母地更改它們。