ROT13迴轉13位,英語:rotate by 13 places,有時也記為ROT-13)是一種簡易的替換式密碼。ROT13是一種在英文網路論壇用作隱藏八卦(spoiler)、妙句、謎題解答以及某些髒話的工具,目的是逃過版主或管理员的匆匆一瞥。ROT13被描述成「雜誌字謎上下顛倒解答的Usenet對等體」。(Usenet equivalent of a magazine printing the answer to a quiz upside down.)[1] ROT13 也是過去在古羅馬開發的凱撒加密的一種變體。

ROT13透過與其成對的13個字母一對一置換,如HELLO變成URYYB(或者將之解碼,URYYB再度變回HELLO)。

ROT13是它自己本身的逆反;也就是說,要還原ROT13,套用加密同樣的演算法即可得,故同樣的操作可用再加密與解密。該演算法並沒有提供真正的密碼學上的保全,故它不應該被套用在需要保全的用途上。它常常被當作弱加密範例的典型。ROT13激勵了廣泛的線上書信撰寫與字母遊戲,且它常於新聞群組對話中被提及。

描述 编辑

套用ROT13到一段文字上僅僅只需要檢查字元字母順序並取代它在13位之後的對應字母,有需要超過時則重新繞回26英文字母開頭即可[2]A換成NB換成O、依此類推到M換成Z,然後序列反轉:N換成AO換成B、最後Z換成M。只有這些出現在英文字母裡頭的字元受影響;數字符號空白字元以及所有其他字元都不變。因為只有在英文字母表裡頭只有26個,並且26 = 2 × 13,ROT13函數是它自己的逆反[2]

對任何字元 x 

換句話說,兩個連續的ROT13應用函式會回復原始文字(在數學上,這有時稱之為對合(involution);在密碼學上,這叫做對等加密(reciprocal cipher))。

轉換可以利用查找表完成,如下例所示:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm

例如,下面的英文笑話,精華句為ROT13所隱匿:

How can you tell an extrovert from an
introvert at NSA? Va gur ryringbef,
gur rkgebireg ybbxf ng gur BGURE thl'f fubrf. 

透過ROT13表格轉換整片文字,該笑話的解答揭露如下:

Ubj pna lbh gryy na rkgebireg sebz na
vagebireg ng AFN? In the elevators,
the extrovert looks at the OTHER guy's shoes.

第二次ROT13函數將轉回原始文字。

用途 编辑

ROT13過去在1980年代早期的net.jokes新聞群組裡使用[3]。它被用來隱藏某些可能侮辱到特定讀者的笑話、隱晦某個謎題的答案或八卦性的內容。[2][4]。之所以選一次13個字母的位移而不是其他值(例如原本凱撒加密裡的3字母位移)乃因13位這個值剛剛好加密解密都是一樣,故只要一行命令就可以簡潔的滿足兩者需要[4]。ROT13一般是新聞閱讀軟體內建支援的功能[4]。電子郵件位址有時也以ROT13編碼以躲過較不複雜的垃圾郵件機器人耳目。[5]

ROT13是凱撒密碼加密演算法的特例。西元前一世紀尤利烏斯·凱撒發明凱薩加密法[6]更具體的例子是伐蹉衍那加密(Vatsyayana cipher),該密碼描述了《欲经》整本經文。[來源請求]

ROT13並不意圖用在重視機密性的場合。固定位移的使用意味著該加密實際上並沒有金鑰,而且解碼不需要對ROT13實際上的使用有較深了解。即使沒有ROT13使用的知識,該演算法也相當容易透過頻率分析破解[2]。正因為其完全不適合真正的機密用途,ROT13已經變成了一種警句,用來影射任何顯著的弱加密體系;例如批評家可能會這樣說:「56位元DES這些日子以來只比ROT13要好一點。」另外,作為對真正術語像“雙重DES”的嘲諷,半路殺出的術語“雙重ROT13”、“ROT26”、“2ROT13”、以及玩笑性質的學術論文「關於2ROT13加密演算法」[7] 都閃爍著幽默的心思。因為套用ROT13到已經加密過的ROT13文字,將會打回原形;也就是說,ROT26等於沒有加密。延伸下去,三重ROT13(用來取笑其對比的 3DES)等同於1次ROT13而已。

於1999年12月,人們發現網景通訊家利用ROT13作為其儲存email密碼的不安全體系。[8]。在2001年,俄羅斯程式設計師狄米區·史蓋里亞羅夫(Dimitry Sklyarov)展示eBook販賣商New Paradigm Research Group(NPRG)使用ROT13來對它們的文件加密;據推測NPRG可能把ROT13玩具樣本——跟著Adobe eBook软件开发工具包一起提供——用錯在重大加密體系上。[9]Windows XP也在某些注册表键上使用ROT13。[10]

字母遊戲與網路文化 编辑

abcdefghijklmnopqrstuvwxyz
NOPQRSTUVWXYZABCDEFGHIJKLM
ahanun antnag
balkonyx barone
barfones beor
binova ebbsroof
envyrail erre
errsreef flapsync
furshe geltry
gnattang irkvex
clerkpyrex purelycheryl
PNGcat SHAfun
furbysheol terragreen
whatJung URLhey
purpuraChechen shoneFUBAR

ROT13為字母遊戲提供了良機。許多字經過ROT13轉換後,會產生另一個字。英文裡字最長的範例是一組7個字母的字 abjurernowhere;另一組七字母的是chechenpurpura。其他字的範例如表中所示。[11]

1989年国际C语言混乱代码大赛(IOCCC)收錄了一個來自布來恩·衛斯里(Brian Westley)的作品。衛斯里的计算机程序可被ROT13編解碼,並且仍舊正確的通過編譯。該程式主要是進行ROT13編碼,或者反過來解碼其輸入。[12]

新聞群組alt.folklore.urban創造了生字:furrfu,該字是常用狀聲辭「噓」(sheesh)的ROT13編碼。「Furrfu」在1992年中期首度出現。當時在alt.folklore.urban新聞群組裡許多都會傳奇的眾多水帖裡,新手過度使用「Sheesh!」而遭到某些發帖人抱怨,而這些新手對此所作的回應。[13]

變體 编辑

ROT47是ROT13的衍生物,它除了打亂基本字母外,也對數字與常見符號做處理。除了使用A–Z系列外,ROT47使用範圍較廣的ASCII字符集。具體而言,所有7-bit可列印字元,除空白以外,從十進位 33 '!' 到 126 '~'都被毫無保留的用來做47位循環。使用較廣的字母集原意是產生比ROT13更徹底的亂碼,不過因為ROT47無差別地將數字與符號混合導入,導致這種方式較容易看出某串文字被動過手腳。

ROT47的範例:
The Quick Brown Fox Jumps Over The Lazy Dog.
...加密成為...
%96 "F:4< qC@H? u@I yF>AD ~G6C %96 {2KJ s@8]

程序设计裡標準的GNU C 函式庫包含了一個函式memfrob()[14]— 它與ROT13有類似的效果,儘管該函式使用對象是任意雙位元組資料。memfrob()透過每個位元雙位元模板00101010(42)做互斥(XOR)運算合併。這個效果是一種簡單的XOR操作。與ROT13相似, memfrob()也是自我逆反的,故提供的保全程度好不到哪裡去。

參見 编辑

注釋與參考資料 编辑

  1. ^ Horrocks, Bruce. UCSM Cabal Circular #207-a. Usenet group uk.comp.sys.mac. 28 June 2003 [2007-09-17] (英语). 
  2. ^ 2.0 2.1 2.2 2.3 Schneier, Bruce. Applied Cryptography Second. John Wiley & Sons. 1996: 11. ISBN 0-471-11709-9 (英语). 
  3. ^ 早期ROT13的使用可從Google USENET存檔資料回溯至1982年10月8日當日張貼net.jokes新聞群組的帖子 [1][2]
  4. ^ 4.0 4.1 4.2 Raymond, Eric S. (ed.). ROT13. The Jargon File, 4.4.7. 2003-12-29 [2007-09-19]. (原始内容存档于2014-06-11) (英语). 
  5. ^ Ferner, Matt. How to Hide Email Addresses From Spam Bots. PracticalEcommerce. [12 June 2014]. (原始内容存档于2016-05-08) (英语). 
  6. ^ Kahn, David. The Codebreakers: The Story of Secret Writing. New York: Macmillan. 1967. ISBN 0-684-83130-9 (英语). 
  7. ^ On the 2ROT13 Encryption Algorithm (PDF). Prüfziffernberechnung in der Praxis. 2004-09-25 [2007-09-20]. (原始内容存档 (PDF)于2014-06-11) (英语). 
  8. ^ Hollebeek, Tim; Viega, John. Bad Cryptography in the Netscape Browser: A Case Study. Reliable Software Technologies. [2007-09-20]. (原始内容存档于2014-09-04) (英语). 
  9. ^ Perens, Bruce. Dimitry Sklyarov: Enemy or friend?. ZDNet News. 2001-09-01 [2007-09-20]. (原始内容存档于2014-06-11) (英语). 
  10. ^ Ferri, Vic. The Count Keys in the Windows Registry. ABC: All 'Bout Computers. 2007-01-04 [2007-09-20]. (原始内容存档于2007-10-22) (英语). 
  11. ^ De Mulder, Tom. ROT13 Words. Furrfu!. [2007-09-19]. (原始内容存档于2014-06-11) (英语). 
  12. ^ Westley, Brian. westley.c. IOCCC. 1989 [2007-08-13]. (原始内容存档于2012-06-08) (英语). 
  13. ^ Furrfu. Foldoc. 1995-10-25 [2007-08-13]. (原始内容存档于2005-11-29) (英语). 
  14. ^ 5.10 Trivial Encryption. The GNU C Library Reference Manual. 自由软件基金会. 2006-12-03 [2007-09-20]. (原始内容存档于2014-06-11) (英语). 

外部連結 编辑