ROT13

ROT13 table with example.svg

ROT13 („ obróć o 13 miejsc ”, czasami z łącznikiem ROT-13 ) to prosty szyfr zastępczy , który zastępuje literę 13. literą po niej w alfabecie. ROT13 to szczególny przypadek szyfru Cezara , który został opracowany w starożytnym Rzymie.

podstawowym alfabecie łacińskim jest 26 liter (2×13) , ROT13 jest swoją własną odwrotnością ; to znaczy, aby cofnąć ROT13, stosowany jest ten sam algorytm , więc to samo działanie może być użyte do kodowania i dekodowania. Algorytm nie zapewnia praktycznie żadnych zabezpieczeń kryptograficznych i jest często cytowany jako kanoniczny przykład słabego szyfrowania.

ROT13 jest używany na forach internetowych jako sposób na ukrywanie spojlerów , puent , rozwiązań zagadek i obraźliwych materiałów przed przypadkowym spojrzeniem. ROT13 zainspirował wiele internetowych gier literowych i słownych i jest często wspominany w na grupach dyskusyjnych .

Opis

Zastosowanie ROT13 do fragmentu tekstu wymaga jedynie zbadania jego znaków alfabetu i zastąpienia każdego z nich literą 13 miejsc dalej w alfabecie , w razie potrzeby cofając się do początku. A staje się N , B staje się O , i tak dalej aż do M , które staje się Z , następnie sekwencja jest kontynuowana na początku alfabetu: N staje się A , O staje się B i tak dalej do Z , które staje się M. _ Dotyczy to tylko tych liter, które występują w alfabecie angielskim ; cyfry, symbole, znaki interpunkcyjne, odstępy i wszystkie inne znaki pozostają niezmienione. Ponieważ w alfabecie angielskim jest 26 liter, a 26 = 2 × 13, funkcja ROT13 jest swoją własną odwrotnością :

dla dowolnego podstawowego alfabetu łacińskiego tekst x .

Innymi słowy, dwa kolejne zastosowania ROT13 przywracają oryginalny tekst (w matematyce nazywa się to czasem inwolucją ; w kryptografii szyfrem odwrotnym ).

Transformację można wykonać za pomocą tabeli przeglądowej , takiej jak ta:

Wejście ABCDEFGHIJKLM NOPQRSTUVWXYZ abcdefghijklm nopqrstuvwxyz
Wyjście NOPQRSTUVWXYZ ABCDEFGHIJKLM nopqrstuvwxyz abcdefghijklm

Na przykład w poniższym dowcipie puenta została zasłonięta przez ROT13:

Dlaczego kurczak przeszedł przez ulice?
Gb trg gb gur bgure fvqr!

Przekształcając cały tekst za pomocą formularza ROT13, ujawnia się odpowiedź na żart:

Jul qvq gur puvpxra pebff gur ebnq?
Dostać się na drugą stronę!

Drugie zastosowanie ROT13 przywróciłoby oryginał.

Stosowanie

ROT13 to szczególny przypadek algorytmu szyfrowania znanego jako szyfr Cezara , używanego przez Juliusza Cezara w I wieku pne.

Johann Ernst Elias Bessler , XVIII-wieczny zegarmistrz i konstruktor perpetuum mobile , zwrócił uwagę, że ROT13 koduje jego nazwisko jako Orffyre . Użył jego zlatynizowanej formy, Orffyreus , jako swojego pseudonimu.

ROT13 był używany w grupie dyskusyjnej net.jokes na początku lat 80. Służy do ukrywania potencjalnie obraźliwych żartów lub ukrywania odpowiedzi na zagadkę lub innego spoilera . [ niewiarygodne źródło? ] Wybrano przesunięcie o trzynaście w stosunku do innych wartości, takich jak trzy, jak w oryginalnym szyfrze Cezara , ponieważ trzynaście to wartość, dla której kodowanie i dekodowanie są równoważne, umożliwiając w ten sposób wygodę jednego polecenia dla obu. ROT13 jest zwykle obsługiwany jako wbudowana funkcja oprogramowania do czytania wiadomości. Adresy e-mail są czasami kodowane za pomocą ROT13, aby ukryć je przed mniej wyrafinowanymi robotami spamującymi . [ wątpliwe ] Jest również używany do obejścia kontroli poczty e-mail i filtrowania spamu. Zasłaniając treść wiadomości e-mail, algorytm sprawdzający nie jest w stanie zidentyfikować wiadomości e-mail, na przykład jako zagrożenia bezpieczeństwa, i przepuszcza ją do skrzynki odbiorczej odbiorcy.

W zaszyfrowanym, normalnym, anglojęzycznym tekście o dowolnym znaczącym rozmiarze, ROT13 można rozpoznać po niektórych wzorach liter/słów. Przykładami są słowa „n”, „V” (tylko pisane wielką literą) i „gur” (ROT13 dla „a”, „I” i „the”) oraz słowa kończące się na „yl” („ly”).

ROT13 nie jest przeznaczony do użycia tam, gdzie zachowanie tajemnicy ma jakiekolwiek znaczenie — użycie ciągłego przesunięcia oznacza, że ​​szyfrowanie faktycznie nie ma klucza , a odszyfrowanie nie wymaga większej wiedzy niż fakt, że ROT13 jest w użyciu. Nawet bez tej wiedzy algorytm można łatwo złamać za pomocą analizy częstotliwości . Ze względu na swoją całkowitą nieprzydatność dla prawdziwej tajemnicy, ROT13 stał się hasłem odnoszącym się do każdego wyraźnie słabego szyfrowania ; krytyk może twierdzić, że „56-bitowy DES jest obecnie niewiele lepszy niż ROT13 ”. Ponadto w grze na prawdziwych warunkach, takich jak „podwójny DES”, terminy „podwójny ROT13”, „ROT26” lub „2ROT13” pojawiają się w humorystycznych intencjach (ze względu na fakt, że ponieważ zastosowanie ROT13 do już zaszyfrowanego tekstu ROT13 przywraca oryginalny tekst jawny , ROT26 jest równoznaczne z całkowitym brakiem szyfrowania), w tym fałszywy artykuł naukowy zatytułowany „O algorytmie szyfrowania 2ROT13”. Co za tym idzie, potrójny ROT13 (używany w żartobliwej analogii z 3DES) jest odpowiednikiem zwykłego ROT13.

W grudniu 1999 roku odkryto, że Netscape Communicator używał ROT13 jako części niezabezpieczonego schematu przechowywania haseł e-mail. W 2001 roku rosyjski programista Dimitry Sklyarov wykazał, że sprzedawca e-booków, New Paradigm Research Group (NPRG), używał ROT13 do szyfrowania swoich dokumentów; spekulowano, że NPRG mogło pomylić przykładową zabawkę ROT13 - dostarczoną z zestawem deweloperskim oprogramowania Adobe eBook - z poważnym schematem szyfrowania. Windows XP używa ROT13 w niektórych swoich kluczach rejestru. ROT13 jest również używany w uniksowym programie fortune aby ukryć potencjalnie obraźliwe dicta.

Gry literowe i kultura sieciowa


abcdefghijklmnopqrstuvwxyz NOPQRSTUVWXYZABCDEFGHIJKLM
aha zakonnica mrówka nag
balk onyks słupek jeden
barf jedności być lub
kosz jaja odpływy dach
zazdrość kolej er re
błądzi rafa klapa synchronizacja
futro ona żel spróbuj
komar trzpień irk irytacja
urzędnik pyreks czysto cheryl
PNG kot SHA zabawa
furby szeol terra zielony
co Jung URL hej
plamica czeczeński świeciło FUBAR
Ares Nerf abjurer nigdzie

ROT13 stwarza okazję do gier literowych. Niektóre słowa, po przekształceniu za pomocą ROT13, utworzą inne słowo. Przykładami 7-literowych par w języku angielskim abjurer i nigdzie oraz czeczeński i purpura . Inne przykłady takich słów przedstawiono w tabeli. Para gnat i tang jest przykładem słów, które są zarówno odwrotnościami, jak i odwrotnościami ROT13.

W konkursie International Obfuscated C Code Contest (IOCCC) z 1989 r. wystąpił Brian Westley. Program komputerowy Westleya może być zakodowany w ROT13 lub odwrócony i nadal kompiluje się poprawnie. Jego działanie, gdy jest wykonywane, polega na wykonaniu kodowania ROT13 na lub odwróceniu wejścia.

Grupa dyskusyjna alt.folklore.urban ukuła słowo — furrfu — które było kodowaniem ROT13 często kodowanej wypowiedzi „ sheesh ”. „ Furrfu ” powstało w połowie 1992 roku jako odpowiedź na posty powtarzające miejskie mity na alt.folklore.urban, po tym, jak niektóre plakaty narzekały, że „Sheesh!” jako odpowiedź na przybyszów była nadużywana.

Warianty

ROT5 to praktyka podobna do ROT13, która dotyczy cyfr (od 0 do 9). ROT13 i ROT5 mogą być używane razem w tej samej wiadomości, czasami nazywanej ROT18 (18 = 13 + 5) lub ROT13.5.

ROT47 jest pochodną ROT13, która oprócz szyfrowania podstawowych liter obsługuje cyfry i popularne symbole. Zamiast używać sekwencji A–Z jako alfabetu, ROT47 używa większego zestawu znaków z powszechnego kodowania znaków znanego jako ASCII . W szczególności 7-bitowe drukowalne znaki, z wyłączeniem spacji, od dziesiętnych 33 ' ! ' do 126 ' ~ ', łącznie 94, w kolejności wartości liczbowych ich kodów ASCII, są obracane o 47 pozycji, bez specjalnego uwzględniania wielkości liter. Na przykład postać A jest odwzorowany na p , podczas gdy a jest odwzorowany na 2 . Użycie większego alfabetu powoduje dokładniejsze zaciemnienie niż w przypadku ROT13; na przykład numer telefonu, taki jak +1-415-839-6885 , nie jest oczywisty na pierwszy rzut oka z zaszyfrowanego wyniku Z'\c`d\gbh\eggd . Z drugiej strony, ponieważ ROT47 wprowadza do miksu cyfry i symbole bez dyskryminacji, od razu widać, że tekst został zakodowany.

Przykład:

Szybki brązowy lis przeskakuje nad leniwym psem.

szyfry do

%96 "F:4< qC@H? u@I yF>AD ~G6C %96 {2KJ s@8]

Biblioteka GNU C , zestaw standardowych procedur dostępnych do użytku w programowaniu komputerowym , zawiera funkcję mem frob () — która ma podobny cel do ROT13, chociaż jest przeznaczona do użycia z dowolnymi danymi binarnymi. Funkcja działa poprzez łączenie każdego bajtu ze wzorcem binarnym 00101010 ( 42 ) przy użyciu operacji wyłączności lub (XOR). Powoduje to prosty szyfr XOR . Jak ROT13, XOR (a więc memfrob() ) jest samoobsługowe i zapewnia podobny, praktycznie nieobecny poziom bezpieczeństwa.

Realizacja

tr

ROT13 i ROT47 są dość łatwe do zaimplementowania przy użyciu uniksowej aplikacji terminalowej tr ; aby zaszyfrować ciąg „Szybki brunatny lis skacze przez leniwego psa” w ROT13:


   
 $  # Odwzoruj wielkie litery AZ na N-ZA-M i małe litery az na n-za-m  $  tr  'A-Za-z'  'N-ZA-Mn-za-m'  <<<  "Szybki lis brunatny Skoki przez leniwego psa"  Gur Dhvpx Oebja Sbk Whzcf Bire Gur Ynml Qbt 

i ten sam ciąg dla ROT47:

   
  $  echo  „Szybki brązowy lis przeskakuje przez leniwego psa”  |  tr  '\!-~'  'P-~\!-O'  %  96  "F:4< qC@H? u@I yF>AD ~G6C %96 {2KJ s@8 

Emacsa i Vima

W Emacsie można ROT13 bufor lub zaznaczenie za pomocą następujących poleceń:

Mx toggle-rot13-mode Mx rot13-inne okno Mx rot13-region

aw edytorze tekstu Vima można ROT13 bufora za pomocą polecenia:

gg? G

Pyton

Kodeki modułu zapewniają transformację tekstu „rot13” .

 
 
 >>>  importuj  kodeki  >>>  print  (  kodeki  .  encode  (  'Szybki brązowy lis przeskakuje nad leniwym psem'  ,  'rot13'  ))  Gur Dhvpx Oebja Sbk Whzcf Bire Gur Ynml Qbt 

Zobacz też

Linki zewnętrzne