置換式密碼
置換式密碼(也稱換位式密碼,轉置密碼或移項式密碼,英語:Transposition Cipher)是一種密碼學中的加密方法,通過打亂明文中各字符的相對位置實現加密。打亂後生成的文本稱為密文。與之相反的是,替換式密碼不改變明文中各字符的位置,而是改變字符本身。
替換和置換兩種加密手段經常組合在一起使用,如ADFGVX密碼等古典密碼或現代高級加密算法(AES)等複雜、高質量的加密方法。
基本原則
使用密鑰可以將明文重新排列成密文,使得密文的字符看起來就像打亂的拼圖一樣雜亂無章。例如,明文 THIS IS WIKIPEDIA 可以加密為 TWDIP SIHII IKASE。在沒有密鑰的情況下,生成的消息極難破譯,因為字符有意義的排間列方式可以有很多種。
即使沒有密鑰,密碼分析者仍可以通過猜測可能的單詞或短語破譯密文,但這樣重建明文需要耗費大量時間。相比之下,擁有密鑰的人可以輕鬆地完成重建。
假設以密鑰 CIPHER 加密一段文字 THIS IS WIKIPEDIA,可以先將明文中的各字母依次寫在方格中,然後按照密鑰中各字母的字母順序(例如,「C」為第一個,而「E」為第二個)按列讀取,形成密文。實際流程如下:
C I P H E R 密钥 1 4 5 3 2 6 顺序(密钥中的字母,按字母序) T H I S I S 明文(THIS IS WIKIPEDIA) W I K I P E D I A * * *
按順序讀取列得到:
#1 TWD, #2 IP, #3 SI, #4 HII, #5 IKA, #6 SE
故密文為:
TWDIP SIHII IKASE
以上的密文刻意以5個字母為一「組」書寫,這是使密文更易於閱讀的常用技術。「組」間的間隔與明文中單詞間的間隔無關,因此不攜帶任何有關明文的信息。
實踐中,像這樣簡短且帶有可預測關鍵詞的密文幾乎可以立即通過密碼分析技術破解。同時,加密過程中的一點小錯誤可能會使整個密文毫無意義。
但如果使用正確——滿足明文較長(100個字母以上)、沒有可以簡單猜到的字詞,每條密文對應唯一密鑰、使用複雜的置換方法等要求——僅靠猜測破解密文從數學角度上說是不可能的。
密碼棒
密碼棒(英文:Scytale)是古希臘人使用的一種產生置換密碼的機械裝置。該裝置由一個圓柱體和纏繞其上的帶狀物組成。將寫有明文信息的絲帶纏繞到圓筒外側後觀察圓筒,即可得到字母被重新排列的密文。然而,由於密文中字母的排列順序只與所用圓筒的直徑相關,只要有直徑足夠相近的圓柱體,就可以很容易地解密。 [1]
例如,加密信息 WE ARE DISCOVERED FLEE AT ONCE(意為:我們被發現了,立即撤退),將圓筒水平放置,而帶狀物在垂直方向上纏繞。如果圓柱體一周容納三個字母,則密碼器寫出:
W . . E . . A . . R . . E . . D . . I . . S . . C . O . . V . . E . . R . . E . . D . . F . . L . . . . E . . E . . A . . T . . O . . N . . C . . E .
密碼器讀出:
WOEEV EAEAR RTEEO DDNIF CSLEC
柵欄密碼
柵欄密碼(英文:Rail Fence Cipher,也稱籬笆密碼)是置換密碼的一種形式,因其編碼方式而得名。在柵欄密碼中,明文向斜下方寫入假想的柵欄和連續的「軌道」上,觸底時向斜上方繼續書寫,如此反覆。最後按行讀取,形成密文。
加密信息 WE ARE DISCOVERED FLEE AT ONCE,如果使用三條「軌道」加密,則密碼器寫出:
W . . . E . . . C . . . R . . . L . . . T . . . E . E . R . D . S . O . E . E . F . E . A . O . C . . . A . . . I . . . V . . . D . . . E . . . N . .
讀出:
WECRL TEERD SOEEF EAOCA IVDEN
路徑密碼
在路徑密碼(英文:Route Cipher)中,明文首先以給定尺寸的網格寫出,然後以密鑰中給定的模式讀出。例如,加密信息 WE ARE DISCOVERED FLEE AT ONCE:
W R I O R F E O E E E S V E L A N J A D C E D E T C X
如果密鑰指定「從右上角開始,順時針向內螺旋讀取」,則密文為:
EJXCTEDEC DAEWRIORF EONALEVSE
比起柵欄密碼,路徑密碼的密鑰存在更多的可能性。對於有一定的長度的消息,可能的密鑰數量非常多,即使是現代計算機器也難以枚舉。但這並不意味著加密者可以高枕無憂。如果密鑰的路徑使密文中留下過多的明文塊,甚至只是簡單地反轉文本,密碼分析者可能可以很快理解路徑,從而破解密文。
列位移密碼
在列位移密碼中,消息按行寫下,然後按列讀取。其中,行的寬度和列的讀取順序都由一個關鍵詞決定。例如,關鍵詞 ZEBRAS 由6個字母組成,因此行的長度為6;關鍵詞中各字母的字母順序為「6、3、2、4、1、5」,說明按列讀取時最先讀從左起第5列。
在按行寫下消息時,有可能出現最後一行長度不同的情況。一般來說,列位移密碼中任何空白都應以空值填充;在不規則的列位移密碼中,空白部分留空。用作空值的字母可以由加密方隨意選擇,因為它們只是填滿不完整的行(或列),其本身並不是消息的一部分。
例如,假設我們使用關鍵詞 ZEBRAS 加密明文 WE ARE DISCOVERED FLEE AT ONCE,並添上五個空值(QKJEU)。在常規的列位移密碼中,寫入方格如下所示:
Z E B R A S 密钥 6 3 2 4 1 5 顺序 W E A R E D 明文 I S C O V E R E D F L E E A T O N C E Q K J E U
密文讀出為:
EVLNE ACDTK ESEAQ ROFOJ DEECU WIREE
若為不規則的列位移密碼,寫入方格:
Z E B R A S 6 3 2 4 1 5 W E A R E D I S C O V E R E D F L E E A T O N C E
密文讀出為:
EVLNA CDTES EAROF ODEEC WIREE
破譯列位移密碼時,接收者必須通過將密文長度除以密鑰長度來計算出列長度,將密文按列寫進方格中,然後通過密鑰給出的順序來重新排序列。
參見
參考資料
- ^ Smith, Laurence Dwight, Cryptography / The Science of Secret Writing, New York: Dover: 16, 92–93, 1955 [1943]