- ROT13
-
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]:
- для любого текста 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
NOPQRSTUVWXYZABCDEFGHIJKLMaha ↔ nun ant ↔ nag balk ↔ onyx bar ↔ one barf ↔ ones be ↔ or bin ↔ ova ebbs ↔ roof envy ↔ rail er ↔ re errs ↔ reef flap ↔ sync fur ↔ she gel ↔ try gnat ↔ tang irk ↔ vex clerk ↔ pyrex purely ↔ cheryl PNG ↔ cat SHA ↔ fun furby ↔ sheol terra ↔ green what ↔ Jung URL ↔ hey purpura ↔ Chechen shone ↔ FUBAR 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)
См. также
Примечания
- ↑ 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.
- ↑ 1 2 3 4 Schneier Bruce Applied Cryptography. — Second. — John Wiley & Sons, 1996. — P. 11. — ISBN 0-471-11709-9
- ↑ Early uses of ROT13 found in the Google USENET archive date back to 8 October 1982, posted to the net.jokes newsgroup [1][2]
- ↑ 1 2 Raymond, Eric S. (ed.) ROT13. The Jargon File, 4.4.7 (29 декабря 2003). Архивировано из первоисточника 8 июня 2012. Проверено 19 сентября 2007.
- ↑ Kahn David The odebreakers: The Story of Secret Writing. — New York: Macmillan. — ISBN 0-684-83130-9
- ↑ On the 2ROT13 Encryption Algorithm (PDF). Prüfziffernberechnung in der Praxis (25 сентября 2004). Архивировано из первоисточника 8 июня 2012. Проверено 20 сентября 2007.
- ↑ Hollebeek, Tim; Viega, John Bad Cryptography in the Netscape Browser: A Case Study. Reliable Software Technologies. Архивировано из первоисточника 8 июня 2012. Проверено 20 сентября 2007.
- ↑ Perens, Bruce Dimitry Sklyarov: Enemy or friend?. ZDNet News (1 сентября 2001).(недоступная ссылка — история) Проверено 20 сентября 2007.
- ↑ Ferri, Vic The Count Keys in the Windows Registry. ABC: All 'Bout Computers (4 января 2007). Архивировано из первоисточника 8 июня 2012. Проверено 20 сентября 2007.
- ↑ De Mulder, Tom ROT13 Words. Furrfu!. Архивировано из первоисточника 8 июня 2012. Проверено 19 сентября 2007.
- ↑ Westley, Brian westley.c. IOCCC (1989). Архивировано из первоисточника 8 июня 2012. Проверено 13 августа 2007.
- ↑ Furrfu. Foldoc (25 октября 1995). Архивировано из первоисточника 8 июня 2012. Проверено 13 августа 2007.
- ↑ irregularwebcomic.net
- ↑ 5.10 Trivial Encryption. The GNU C Library Reference Manual. Free Software Foundation (3 декабря 2006). Архивировано из первоисточника 8 июня 2012. Проверено 20 сентября 2007.
Ссылки
- Online Converter for ROT5 and ROT13 (no JavaScript) (англ.)
- Software for ROT13 in a large number of languages — includes a patch to ssh to add support for ROT13, and a cryptanalysis tool to automatically distinguish ROT13 text from plaintext. (англ.)
Категория:- Шифры
Wikimedia Foundation. 2010.