用戶:MaxHasBeenUsed/置換式密碼
在密碼學中,置換式密碼(英文:Transposition Cipher,也稱換位式密碼)是一種加密方法,通過打亂明文(通常是字符或字符組)中的各字符所處的相對位置而實現加密。打亂後生成的文本稱為密文。相對地,替換式密碼不改變明文中各字符的位置,但會改變字符本身。
替換和置換兩種加密手段經常組合在一起使用,如ADFGVX 密碼等古典密碼或現代高級加密算法(AES)等複雜、高質量的加密方法。
基本原則
使用密鑰可以將明文重新排列成密文,使得密文的字符看起來就像打亂的拼圖一樣雜亂無章。在沒有密鑰的情況下,生成的消息極難破譯,因為字符有意義的排列方式可以有很多種。例如,明文 THIS IS WIKIPEDIA 可以加密為 TWDIP SIHII IKASE。
為了在沒有密鑰的情況下破譯密文,密碼分析者可以猜測可能的單詞或短語,如 DIATHESIS、DISSIPATE、WIDTH 等,但這樣重建明文需要耗費大量時間。相比之下,擁有密鑰的人可以輕鬆地重建消息。
假設以密鑰 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)是置換密碼的一種形式,因其編碼方式而得名。在柵欄密碼中,明文向斜下方寫入假想的柵欄和連續的「軌道」上,觸底時向斜上方繼續書寫,如此反覆。最後按行讀取,形成密文。
使用與之前相同的示例,如果使用三條「軌道」加密,則密碼器寫出:
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)中,明文首先以給定尺寸的網格寫出,然後以密鑰中給定的模式讀出。例如,使用與上文相同的明文:
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)。在常規的列位移密碼中,寫入方格如下所示:
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
若為不規則的列位移密碼,寫入方格:
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]