ROT13

ROT13
Алгоритм ROT13 заменяет каждую букву на парную ей из второй половины латинского алфавита, образовывая два набора по тринадцать символов. Например, HELLO становится URYYB (или, наоборот, URYYB переводится в HELLO повторным действием алгоритма).

ROT13 (англ. rotate; «сдвинуть на 13 позиций», иногда используется написание через дефис — ROT-13) представляет собой шифр подстановки простой заменой, используемый в интернет-форумах, как средство для сокрытия спойлеров, основных мыслей, решений загадок и оскорбительных материалов от случайного взгляда. ROT13 был охарактеризован как «сетевой эквивалент того, как в журналах печатают ответы на вопросы викторин — перевёрнутыми буквами»[1]. ROT13 — это вариация шифра Цезаря, разработанного ещё в Древнем Риме.

ROT13 является обратным алгоритмом, то есть отменить ROT13 можно, применив тот же алгоритм; одни и те же действия могут быть использованы для кодирования и декодирования. Алгоритм не дает никакой реальной криптографической безопасности и никогда не должен использоваться для этого. Он часто приводится в качестве канонического примера слабого метода шифрования. Алгоритм ROT13 породил разнообразные он-лайн игры с буквами и словами; алгоритм часто применяется в новостных форумах.

Содержание

Описание

Применение алгоритма ROT13 к части текста требует простой замены каждого буквенного символа на соответствующий ему со сдвигом на 13 позиций в алфавите[2]. A становится N, B становится O, и т. д. до М, которое становится Z, а затем последовательно применяются буквы из начала алфавита: N становится A, O становится B, и так далее до Z, которая становится М. Затронуты лишь те буквы, которые используются в английском алфавите; цифры, символы, пробелы и все остальные символы остаются без изменений. Поскольку в английском алфавите всего 26 букв, а 26 = 2 × 13, то функция ROT13 является обратной для самой себя[2]:

\mbox{ROT}_{13}(\mbox{ROT}_{13}(x))=\mbox{ROT}_{26}(x)=x для любого текста x.

Иными словами, два последовательных использования ROT13 восстанавливают первоначальный текст (в математике это иногда называют инволюцией; в криптографии — взаимные шифры).


Преобразования можно сделать с помощью таблицы поиска, такие как:

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 использовался в новостном форуме net.jokes в начале 1980-х[3]. Он использовался, чтобы скрыть потенциально оскорбительные шутки или ответ на головоломку или спойлер. Сдвиг на тринадцать знаков был выбран по сравнению с другими значениями, такими как три, как в оригинале шифра Цезаря, потому что тринадцать это число, которое обеспечивает как кодирование, так и декодирование, тем самым предоставляя единое удобство для обеих команд[2][4]. ROT13, как правило, поддерживается в качестве встроенной функции в функциях программного обеспечения для чтения лент новостей[4]. Адреса электронной почты также иногда кодируют алгоритмом ROT13, чтобы скрыть их от не самых продвинутых спам-ботов.

ROT13 представляет собой частный случай алгоритма шифрования, известного как шифр Цезаря, приписываемый Юлию Цезарю в I веке до нашей эры[5]. Более специфичный случай использования шифрования — индийским философом Ватсьяяна Малланага, автором секс-руководства Кама Сутра.


ROT13 не предназначен для использования с конфиденциальной информацией; использование постоянного сдвига означает, что шифрование фактически не имеет ключа и для расшифровки требуется не больше знаний, чем тот факт, что может использоваться ROT13. Даже без этих знаний, алгоритм легко дешифруется посредством частотного анализа[2]. Поскольку он полностью несоответствует реальной защите тайны, ROT13 стал жаргонным словом для обозначения какой-либо явно слабой схемы шифрования; критика может утверждать, что «56-битный DES это немного лучше, чем ROT13 в прошлом». Кроме того, часто используется сходство с реальными выражениями, например, «double DES», используют с чувством юмора «double ROT13», «ROT26» или «2ROT13», в том числе в пародийной академической работе «On the 2ROT13 Encryption Algorithm»[6].

Применив алгоритм ROT13 к уже ROT13-зашифрованному тексту, получим первоначальный текст; ROT26 — эквивалент отсутствия шифрования как такового. В дополнение, тройное применение ROT13 или 3ROT13 (используется по шутливой аналогии с 3DES) эквивалентно обычному ROT13.

В декабре 1999 года было установлено, что Netscape Communicator использовал RОТ-13 в рамках небезопасной схемы для хранения паролей электронной почты[7]. В 2001 году русский программист Дмитрий Скляров продемонстрировал, что поставщик eBook, компания New Paradigm Research Group (NPRG), использовала ROT13 для шифрования своих документов; предположительно, что в NPRG ошибочно применили ROT13 в игрушке, для примера предоставляемой Adobe с инструментарием Software Development Kit для eBook для серьёзного шифрования[8] Windows XP использует ROT13 для некоторых ключей своего реестра[9].

Игры с буквами и «сетевая» культура

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, производят другое известное слово. Самые длинные примеры из английского языка состоят из семи букв: «abjurer» (отрекающийся от своих убеждений) ↔ «nowhere» (нигде) и «Chechen» (чеченец) ↔ «purpura» (пурпура). Другие примеры слов приведены в таблице[10].

В 1989 году ассоциация International Obfuscated C Code Contest (IOCCC) добавила нотацию Brian Westley. Компьютерная программа Westley может корректно компилировать как простые, так и кодированные алгоритмом ROT13 исходники. Программа действует либо для выполнения кодировки ROT13, либо для обратного кодирования закодированного введённого текста[11].

В группе новостей alt.folklore.urban придумали слово «furrfu», что является закодированным в ROT13 часто используемым словом «sheesh» (тьфу!). «Furrfu» активно использовался в середине 1992 года в ответ на часто публикующиеся повторения городских мифов на сайте alt.folklore.urban, на что многие жаловались, что такие ответы на публикации новичков были чрезмерностью[12].

В веб-комиксах «Darths and Droids»[13] один герой (Jim, играет Квай-Гон Джинн) утверждает, что в ROT13 слово «Jedi» (джедай) кодируется как «monk» (монах). Другой герой (Pete, играет робота R2-D2) немедленно корректирует его, отмечая, что «monk» в ROT13 соответствует «Zbax».

Варианты алгоритма

ROT47 является производным от алгоритма ROT13, в дополнение к основному набору букв, также использует числа и вспомогательные символы. Вместо использования алфавитной последовательности A–Z, ROT47 использует больший набор символов, известный как кодировка ASCII. В частности, 7-битные символы для печати, за исключением пробела, от десятичного 33-го символа '!' до 126-го символа '~' — 94 символа в общей сложности, принятых в порядке числовых значений их кодов ASCII, способны смещаться на 47 позиций без специальных договорённостей. Например, символ A отображается на p, символ a отображается на 2. Использование большего алфавита производит более тщательную обфускацию, чем у ROT13, например, неочевидно, что Z`\c`d\gbh\eggd — это закодированный телефонный номер +1-415-839-6885. С другой стороны, поскольку 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, хотя она предназначена для использования с произвольными бинарными данными. Эта функция работает оперируя с каждым байтом в сочетании с двоичной схемой 00101010 (число 42) с использованием операции исключающего ИЛИ (XOR). Это работает как простой XOR-шифр. Как и ROT13, memfrob() взаимнообратна, и предоставляет аналогичный, практически отсутствующий, уровень безопасности.

Примеры

На языке программирования Python алгоритм выглядит следующим образом:

def rot13(text): 
        rot13ed = str()
        for letter in xrange(len(text)):
                byte = ord(text[letter])
                capital = (byte & 32) 
                byte = (byte & (~capital))
                if (byte >= ord('A')) and (byte <= ord('Z')):
                        byte = ((byte - ord('A') + 13) % 26 + ord('A'))
                byte = (byte | capital)
                rot13ed=rot13ed+(chr(byte))
        return rot13ed

Оптимизированный вариант:

def rot13(text):
        sub = 'NOPQRSTUVWXYZABCDEFGHIJKLM[\]^_`nopqrstuvwxyzabcdefghijklm'
        restext = []
        for c in text:
                restext.append(sub[ord(c)-65])
        return ''.join(restext)

См. также

Примечания

  1. Horrocks, Bruce UCSM Cabal Circular #207-a. Usenet group uk.comp.sys.mac (Message ID UZ36hgCSoh$+EwqG@nodomain.nodomain.us) (28 June 2003). Проверено 17 сентября 2007.
  2. 1 2 3 4 Schneier Bruce Applied Cryptography. — Second. — John Wiley & Sons, 1996. — P. 11. — ISBN 0-471-11709-9
  3. Early uses of ROT13 found in the Google USENET archive date back to 8 October 1982, posted to the net.jokes newsgroup [1][2]
  4. 1 2 Raymond, Eric S. (ed.) ROT13. The Jargon File, 4.4.7 (29 декабря 2003). Архивировано из первоисточника 8 июня 2012. Проверено 19 сентября 2007.
  5. Kahn David The odebreakers: The Story of Secret Writing. — New York: Macmillan. — ISBN 0-684-83130-9
  6. On the 2ROT13 Encryption Algorithm (PDF). Prüfziffernberechnung in der Praxis (25 сентября 2004). Архивировано из первоисточника 8 июня 2012. Проверено 20 сентября 2007.
  7. Hollebeek, Tim; Viega, John Bad Cryptography in the Netscape Browser: A Case Study. Reliable Software Technologies. Архивировано из первоисточника 8 июня 2012. Проверено 20 сентября 2007.
  8. Perens, Bruce Dimitry Sklyarov: Enemy or friend?. ZDNet News (1 сентября 2001).(недоступная ссылка — история) Проверено 20 сентября 2007.
  9. Ferri, Vic The Count Keys in the Windows Registry. ABC: All 'Bout Computers (4 января 2007). Архивировано из первоисточника 8 июня 2012. Проверено 20 сентября 2007.
  10. De Mulder, Tom ROT13 Words. Furrfu!. Архивировано из первоисточника 8 июня 2012. Проверено 19 сентября 2007.
  11. Westley, Brian westley.c. IOCCC (1989). Архивировано из первоисточника 8 июня 2012. Проверено 13 августа 2007.
  12. Furrfu. Foldoc (25 октября 1995). Архивировано из первоисточника 8 июня 2012. Проверено 13 августа 2007.
  13. irregularwebcomic.net
  14. 5.10 Trivial Encryption. The GNU C Library Reference Manual. Free Software Foundation (3 декабря 2006). Архивировано из первоисточника 8 июня 2012. Проверено 20 сентября 2007.

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужна курсовая?

Полезное


Смотреть что такое "ROT13" в других словарях:

  • ROT13 — ersetzt jeden Buchstaben durch seine Entsprechung 13 Stellen weiter im Alphabet. Im gezeigten Beispiel wird „HELLO“ zu „URYYB“. ROT13 (engl. rotate by 13 places, zu Deutsch in etwa „rotiere um 13 Stellen“) ist eine Verschiebechiffre (auch Caesar… …   Deutsch Wikipedia

  • ROT13 — El ROT13 sustituye cada letra por su pareja, 13 caracteres por delante en el alfabeto. Por ejemplo, HOLA se convierte en UBYN (o, descifrando, UBYN se convierte en HOLA de nuevo) …   Wikipedia Español

  • ROT13 — replaces each letter by its partner 13 characters further along the alphabet. For example, HELLO becomes URYYB (or, rev …   Wikipedia

  • ROT13 — Chiffré avec ROT13, le mot « HELLO » devient « URYYB » (et inversement). Le ROT13 (rotate by 13 places) est un cas particulier du chiffre de César, un algorithme simpliste de chiffrement de texte. Comme son nom l’indique, il… …   Wikipédia en Français

  • Rot13 — ROT ersetzt jeden Buchstaben durch seine Entsprechung, 13 Stellen weiter im Alphabet. Im gezeigten Beispiel wird „HELLO“ zu „URYYB“. ROT13 (engl. rotate by 13 places, zu deutsch in etwa „rotiere um 13 Stellen“) ist eine Verschiebechiffre (auch… …   Deutsch Wikipedia

  • ROT13-Verschlüsselung —   [Abk. für rotate 13, dt. »rotiere um 13«], ein sehr einfaches Verschlüsselungsverfahren (Datenverschlüsselung), das im Internet, v. a. im E Mail und News Bereich, verbreitet ist. Es beruht darauf, dass jeder Buchstabe durch den im Alphabet 13… …   Universal-Lexikon

  • rot13 — Rotiertes Alphabet um 13 Buchstaben bei News benutzte Methode, um Nachrichten so zu kodieren, dass wer es liest, selbst Schuld hat …   Acronyms

  • rot13 — ● n. m. ►CRYPTO ROTation 13. Méthode de chiffrement très simple qui consiste à remplacer un caractère par un autre à 13 caractères de là. A devient N , par exemple. Utilisé pour coder les fichiers donnant la fin d un film, l humour noir ou… …   Dictionnaire d'informatique francophone

  • rot13 — Rotiertes Alphabet um 13 Buchstaben bei News benutzte Methode, um Nachrichten so zu kodieren, dass wer es liest, selbst Schuld hat …   Acronyms von A bis Z

  • rot13 — сокр. от rotate alphabet 13 places поменять местами буквы в алфавите. Простейший шифр все буквы меняются на смещенные на 13 удобно в английском алфавите так же дешифруется (в англиском алфавите 26 букв) …   Hacker's dictionary


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»