
ROT13 ( Rotate13 , " rotar 13 lugares ", a veces escrito con guión ROT-13 ) es un cifrado de sustitución de letras simple que reemplaza una letra con la decimotercera letra después de ella en el alfabeto latino . ROT13 es un caso especial del cifrado César que se desarrolló en la antigua Roma.
Debido a que hay 26 letras (2×13) en el alfabeto latino básico , ROT13 es su propio inverso ; es decir, para deshacer ROT13, se aplica el mismo algoritmo , por lo que se puede utilizar la misma acción para codificar y decodificar. El algoritmo prácticamente no proporciona seguridad criptográfica y a menudo se cita como un ejemplo canónico de cifrado débil . [1]
ROT13 se ha utilizado en foros en línea como un medio para ocultar spoilers , frases ingeniosas , soluciones de acertijos y materiales ofensivos a la vista de los demás. ROT13 ha inspirado una variedad de juegos de letras y palabras en línea, y se menciona con frecuencia en conversaciones de grupos de noticias .
Descripción
La aplicación de ROT13 a un fragmento de texto simplemente requiere examinar sus caracteres alfabéticos y reemplazar cada uno por la letra que se encuentra 13 lugares más adelante en el alfabeto , volviendo al principio si es necesario. [2] A se convierte en N, Bse convierte en O, y así sucesivamente hasta M, que se convierte en Z, luego la secuencia continúa al principio del alfabeto: Nse convierte en A, Ose convierte en B, y así sucesivamente hasta Z, que se convierte en M. Solo se ven afectadas las letras que aparecen en el alfabeto inglés ; los números, símbolos, puntuación, espacios en blanco y todos los demás caracteres no se modifican. Debido a que hay 26 letras en el alfabeto inglés y 26 = 2 × 13, la función ROT13 es su propia inversa : [2]
- para cualquier texto básico del alfabeto latino x .
En otras palabras, dos aplicaciones sucesivas de ROT13 restauran el texto original (en matemáticas , esto a veces se llama involución ; en criptografía, cifrado recíproco ).
La transformación se puede realizar utilizando una tabla de búsqueda , como la siguiente:
Por ejemplo, en el siguiente chiste, el final ha sido oscurecido por ROT13:
- ¿Por qué la gallina cruzó la calle?
- ¡Gb trg gb gur bgure fvqr!
Transformando todo el texto a través del formato ROT13, se revela la respuesta al chiste:
- Jul qvq gur puvpxra pebff gur ebnq?
- ¡Para llegar al otro lado!
Una segunda aplicación de ROT13 restauraría el original.
Uso
ROT13 es un caso especial del algoritmo de cifrado conocido como cifrado César , utilizado por Julio César en el siglo I a. C. [3]
Johann Ernst Elias Bessler , un relojero y constructor de máquinas de movimiento perpetuo del siglo XVIII , señaló que ROT13 codifica su apellido como Orffyre . Utilizó su forma latinizada , Orffyreus , como seudónimo. [4]
ROT13 se utilizó en el grupo de noticias net.jokes a principios de la década de 1980. [a] Se utiliza para ocultar chistes potencialmente ofensivos o para oscurecer una respuesta a un acertijo u otro spoiler . [2] [7] [ ¿ fuente poco confiable? ] Se eligió un cambio de trece sobre otros valores, como tres como en el cifrado César original , porque trece es el valor para el cual la codificación y la decodificación son equivalentes, lo que permite la conveniencia de un solo comando para ambos. [7] ROT13 generalmente se admite como una función incorporada en el software de lectura de noticias. [7] Las direcciones de correo electrónico también se codifican a veces con ROT13 para ocultarlas de los robots de spam menos sofisticados . [8] [ dudoso - discutir ] También se utiliza para eludir el filtrado de correo electrónico y spam. Al ocultar el contenido de un correo electrónico, el algoritmo de filtrado no puede identificar el correo electrónico como, por ejemplo, un riesgo de seguridad y lo permite en la bandeja de entrada del destinatario.
En textos en inglés cifrados, normales y de tamaño considerable, ROT13 se reconoce a partir de algunos patrones de letras y palabras. Las palabras "n", "V" (en mayúscula solamente) y "gur" (ROT13 para "a", "I" y "the"), y las palabras que terminan en "yl" ("ly") son ejemplos.
ROT13 no está pensado para usarse donde el secreto es un problema: el uso de un desplazamiento constante significa que el cifrado no tiene clave y el descifrado no requiere más conocimiento que el hecho de que ROT13 está en uso. Incluso sin este conocimiento, el algoritmo se puede descifrar fácilmente mediante análisis de frecuencia . [2] Debido a su absoluta inadecuación para el secreto real, ROT13 se ha convertido en un eslogan para referirse a cualquier esquema de cifrado notablemente débil; un crítico podría afirmar que " el DES de 56 bits es poco mejor que ROT13 en estos días". Además, en un juego de términos reales como "doble DES", los términos "doble ROT13", "ROT26" o "2ROT13" aparecen con intención humorística (debido al hecho de que, dado que aplicar ROT13 a un texto ya cifrado con ROT13 restaura el texto simple original , ROT26 es equivalente a no tener cifrado en absoluto), incluido un artículo académico falso titulado "Sobre el algoritmo de cifrado 2ROT13". [9] Por extensión, triple-ROT13 (usado en analogía jocosa con 3DES) es equivalente a ROT13 normal.
En diciembre de 1999, se descubrió que Netscape Communicator utilizaba ROT13 como parte de un esquema inseguro para almacenar contraseñas de correo electrónico. [10] En 2001, el programador ruso Dimitry Sklyarov demostró que un vendedor de libros electrónicos, New Paradigm Research Group (NPRG), utilizaba ROT13 para cifrar sus documentos; se ha especulado que NPRG puede haber confundido el ejemplo de juguete ROT13 (proporcionado con el kit de desarrollo de software de libros electrónicos de Adobe ) con un esquema de cifrado serio. [11] Windows XP utiliza ROT13 en algunas de sus claves de registro. [12] ROT13 también se utiliza en el programa fortune de Unix para ocultar dictados potencialmente ofensivos .
Juegos de letras y cultura en la red
ROT13 ofrece la oportunidad de realizar juegos de letras. Algunas palabras, al transformarse con ROT13, producirán otra palabra. Ejemplos de pares de 7 letras en el idioma inglés son abjurer y nowhere , y chechen y purpura . Otros ejemplos de palabras como estas se muestran en la tabla. [13] El par gnat y tang es un ejemplo de palabras que son recíprocas y reversas de ROT13.
El Concurso Internacional de Código C Ofuscado (IOCCC) de 1989 incluyó una propuesta de Brian Westley. El programa informático de Westley se puede codificar en ROT13 o en sentido inverso y aún así compila correctamente. Su operación, cuando se ejecuta, consiste en realizar la codificación ROT13 o en invertir su entrada. [14]
El grupo de noticias alt.folklore.urban acuñó una palabra , furrfu , que era la codificación ROT13 de la expresión frecuentemente codificada "sheesh". " Furrfu" surgió a mediados de 1992 como respuesta a las publicaciones que repetían mitos urbanos en alt.folklore.urban, después de que algunos usuarios se quejaran de que se estaba usando demasiado "Sheesh!" como respuesta a los recién llegados . [15]
Variantes
ROT5 es una práctica similar a ROT13 que se aplica a dígitos numéricos (del 0 al 9). ROT13 y ROT5 se pueden utilizar juntos en el mismo mensaje, a veces llamado ROT18 (18 = 13 + 5) o ROT13.5.
ROT47 es un derivado de ROT13 que, además de codificar las letras básicas, trata números y símbolos comunes. En lugar de utilizar la secuencia A–Zcomo alfabeto, ROT47 utiliza un conjunto más grande de caracteres de la codificación de caracteres común conocida como ASCII . Específicamente, los caracteres imprimibles de 7 bits, excluyendo el espacio, desde el decimal 33 ' !' hasta el 126 ' ~', 94 en total, tomados en el orden de los valores numéricos de sus códigos ASCII, se rotan 47 posiciones, sin consideración especial de mayúsculas y minúsculas. Por ejemplo, el carácter Ase asigna a p, mientras que ase asigna a 2. El uso de un alfabeto más grande produce una ofuscación más completa que la de ROT13; por ejemplo, un número de teléfono como +1-415-839-6885no es obvio a primera vista a partir del resultado codificado Z'\c`d\gbh\eggd. Por otro lado, debido a que ROT47 introduce números y símbolos en la mezcla sin discriminación, es más inmediatamente obvio que el texto ha sido codificado.
Ejemplo:
- The Quick Brown Fox Jumps Over The Lazy Dog.
cifra a
- %96 "F:4< qC@H? u@I yF>AD ~G6C %96 {2KJ s@8]
La biblioteca GNU C , un conjunto de rutinas estándar disponibles para su uso en programación informática , contiene una función — [16] — que tiene un propósito similar a ROT13, aunque está pensada para su uso con datos binarios arbitrarios. La función opera combinando cada byte con el patrón binario 00101010 ( 42 ) utilizando la operación o exclusiva (XOR). Esto produce un cifrado XOR simple . Al igual que ROT13, XOR (y por lo tanto ) es autorrecíproco y proporciona un nivel de seguridad similar, prácticamente inexistente. memfrob()memfrob()
Implementación
es
ROT13 y ROT47 son bastante fáciles de implementar usando la aplicación de terminal Unix tr; para cifrar la cadena "El rápido zorro marrón salta sobre el perro perezoso" en ROT13:
$ # Asigna mayúsculas AZ a N-ZA-M y minúsculas az a n-za-m
$ tr 'A-Za-z' 'N-ZA-Mn-za-m' <<< "El veloz zorro marrón salta sobre el perro perezoso" Gur Dhvpx Oebja Sbk Whzcf Bire Gur Ynml Qbt
y la misma cadena para ROT47:
$ echo "El veloz zorro marrón salta sobre el perro perezoso" | tr '\!-~' 'P-~\!-O' % 96 "F:4< qC@H? u@I yF>AD ~G6C %96 {2KJ s@8
Emacs y Vim
En Emacs , se puede realizar una operación ROT13 en el buffer o en una selección con los comandos [17] M-x toggle-rot13-mode , M-x rot13-other-window, o M-x rot13-region.
En el editor de texto Vim , se puede realizar una operación ROT13 en un búfer con el comando [18] ggg?G .
Pitón
El módulo codecs proporciona la transformación de texto 'rot13' . [19]
>>> importar códecs
>>> imprimir ( códecs.codificar ( 'El rápido zorro marrón salta sobre el perro perezoso' , 'rot13' ) ) Gur Dhvpx Oebja Sbk Whzcf Bire Gur Ynml Qbt
Sin importar ninguna biblioteca, se puede hacer en una lista de comprensión de dos líneas :
string = "Trabajo de glifo de cuarzo vext cwm porshrop finks?!"
para abcd en [ "abcdefghijklmnopqrstuvwxyz" , "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ]:
cadena = '' . join ([ abcd [( abcd . index ( char ) + 13 ) % 26 ] si char en abcd de lo contrario char para char en cadena ])
imprimir ( cadena )
# ¡¿Dhnegm tylcu wbo irkg pjz cbefuebc svaxf?!
Véase también
Referencias
- ^ Los primeros usos de ROT13 encontrados en el archivo USENET de Google se remontan al 8 de octubre de 1982, publicados en el net.jokesgrupo de noticias. [5] [6]
- ^ Christopher Swenson (17 de marzo de 2008). Criptoanálisis moderno: técnicas para descifrar códigos de manera avanzada. John Wiley & Sons. p. 5. ISBN 978-0-470-13593-8Archivado desde el original el 24 de junio de 2016 . Consultado el 5 de octubre de 2015 .
- ^ abcd Schneier, Bruce (1996). Criptografía aplicada (segunda edición). John Wiley & Sons. pp. 11. ISBN 0-471-11709-9.
- ^ Kahn, David . Los descifradores de códigos: la historia de la escritura secreta . Nueva York: Macmillan. ISBN 0-684-83130-9.
- ^ Simanek, Donald E. (2012). «Perpetual Futility: A short history of the search for perpetual motion» (Futilidad perpetua: una breve historia de la búsqueda del movimiento perpetuo). El Museo de los Dispositivos Impracticables . Archivado desde el original el 10 de octubre de 2020. Consultado el 28 de octubre de 2020 .
- ^ desoto!gog (8 de octubre de 1982). "chiste muy ligeramente obsceno, shift=13". Grupo de noticias : net.jokes.
- ^ utcsrgv!dave (8 de octubre de 1982). "chistes encriptados". Grupo de noticias : net.jokes.
- ^ abc Raymond, Eric S. , ed. (29 de diciembre de 2003). "ROT13". The Jargon File, 4.4.7 . Archivado desde el original el 13 de enero de 2012 . Consultado el 19 de septiembre de 2007 .
- ^ Ferner, Matt (9 de diciembre de 2010). "Cómo ocultar direcciones de correo electrónico de los robots de spam". PracticalEcommerce. Archivado desde el original el 8 de mayo de 2016. Consultado el 12 de junio de 2014 .
- ^ "Sobre el algoritmo de cifrado 2ROT13" (PDF) . Prüfziffernberechnung in der Praxis. 25 de septiembre de 2004. Archivado (PDF) desde el original el 15 de abril de 2012. Consultado el 20 de septiembre de 2007 .
- ^ Hollebeek, Tim; Viega, John . "Criptografía incorrecta en el navegador Netscape: un estudio de caso". CiteSeerX 10.1.1.15.9271 .
- ^ Perens, Bruce (1 de septiembre de 2001). "Dimitry Sklyarov: ¿enemigo o amigo?". ZDNet News . Archivado desde el original el 17 de octubre de 2014. Consultado el 3 de febrero de 2011 .
- ^ "ROT13 se utiliza en Windows". 24 de julio de 2006. Archivado desde el original el 20 de diciembre de 2016. Consultado el 15 de diciembre de 2016 .
- ^ De Mulder, Tom. "Palabras de ROT13". Furrfu! . Archivado desde el original el 2 de abril de 2012 . Consultado el 19 de septiembre de 2007 .
- ^ Westley, Brian (1989). "westley.c". IOCCC . Archivado desde el original el 9 de junio de 2012 . Consultado el 13 de agosto de 2007 .
- ^ "Furrfu". Foldoc . 25 de octubre de 1995. Archivado desde el original el 14 de julio de 2014 . Consultado el 3 de octubre de 2016 .
- ^ "5.13 Ofuscación de datos". Manual de referencia de la biblioteca C de GNU . Free Software Foundation . 3 de diciembre de 2006. Archivado desde el original el 2 de agosto de 2019. Consultado el 2 de agosto de 2019 .
- ^ "Rmail Rot13 – Manual de GNU Emacs" Archivado el 24 de marzo de 2016 en Wayback Machine . www.gnu.org .
- ^ "Lo mejor de los consejos de VIM, características clave de gVIM zzapper". rayninfo.co.uk . 3 de marzo de 2016. Archivado desde el original el 3 de marzo de 2016.
- ^ "codecs – Registro de códecs y clases base – Documentación de Python 3.9.6". ww6.python.org . 2 de noviembre de 2023. Archivado desde el original el 6 de octubre de 2020 . Consultado el 7 de octubre de 2020 .
Enlaces externos
- Convertidor en línea para cifrados ROT13, ROT5, ROT18, ROT47, Atbash y César .
- ROT13 a texto en PureTables.com