ROT13 («rotar 13 posiciones», a veces con un guion: ROT-13) es un sencillo cifrado César utilizado para ocultar un texto sustituyendo cada letra por la letra que está trece posiciones por delante en el alfabeto. A se convierte en N, B se convierte en O y así hasta la M, que se convierte en Z. Luego la secuencia se invierte: N se convierte en A, O se convierte en B y así hasta la Z, que se convierte en M. Este algoritmo se utiliza en foros de Internet como medio para ocultar de miradas casuales el final de un chiste, la solución a un acertijo, un spoiler de una película o una historia, o algún texto ofensivo. ROT13 se ha descrito como el «equivalente en Usenet de una revista que imprime bocabajo la respuesta a un pasatiempo».
El nombre «ROT13» se originó en Usenet a principios de los años 1980, y el método se ha convertido en un estándar de facto. Al igual que el cifrado de César (un método de cifrado con miles de años), el ROT13 no proporciona seguridad criptográfica real y no se usa para tales fines; de hecho, a menudo se emplea como ejemplo canónico de cifrado débil. Otra característica de este cifrado es que es simétrico; esto es, para deshacer el ROT13, se aplica el mismo algoritmo, de manera que para cifrar y descrifrar se puede utilizar el mismo código.
Descripción
Aplicar el ROT13 a un texto se reduce a examinar sus caracteres alfabéticos y sustituirlos por la letra que está 13 posiciones por delante en el alfabeto, volviendo al principio si es necesario y conservando las mayúsculas y minúsculas: a se convierte en n, B se convierte en O, y así hasta la Z, que se convierte en M. Solo quedan afectadas las letras que aparecen en el alfabeto latino; los números, símbolos, espacios y otros caracteres se dejan igual. Como hay 26 letras en el alfabeto latino y 26 = 2 × 13, la función ROT13 es su propia inversa:
En otras palabras, dos aplicaciones sucesivas de ROT13 recuperan el texto original (en matemáticas, esto a veces se llama involución; en criptografía, un cifrado recíproco).
La transformación se puede hacer utilizando una tabla de búsqueda como la siguiente:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm
Por ejemplo, en este chiste, la respuesta se ha ocultado usando ROT13:
¿Cómo se puede distinguir a un extrovertido de un
introvertido en la NSA? Ra ybf nfprafberf,
ry rkgebiregvqb zven ybf mncngbf qr ybf BGEBF gvcbf.
Transformando todo el texto mediante el ROT13, se revela la respuesta al chiste:
¿Pbzb fr chrqr qvfgvathve n ha rkgebiregvqb qr ha
vagebiregvqb ra yn AFN? En los ascensores,
el extrovertido mira los zapatos de los OTROS tipos.
Una segunda aplicación del ROT13 recuperaría el original.
ROT13 como método de cifrado
ROT13 pertenece a un conjunto de algoritmos de cifrado conocidos como cifrados César, que son a su vez un tipo especialmente simple de cifrado por sustitución. El ROT13 no está pensado para los casos en los que el secreto tiene alguna importancia: 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 se está usando el método ROT13. Incluso sin este conocimiento, como con cualquier cifrado por sustitución, el algoritmo se puede romper fácilmente por análisis de frecuencias o mediante la explotación de palabras patrón (el ROT13 es un ejemplo de lo que Bruce Schneier llama «cifrado para la hermana pequeña»: como mucho servirá para mantener en secreto un documento contra tu hermana pequeña).
El efecto real del ROT13 es simplemente asegurarse de que el lector de un mensaje tenga que descifrarlo conscientemente, lo que normalmente suele implicar ejecutar el comando en cuestión en el software que lee el mensaje. En lugar de proteger un mensaje confidencial de los lectores no autorizados, el ROT13 salvaguarda a los lectores autorizados del material que pueden no querer leer involuntariamente, como los spoilers en una crítica de un libro o una película.
Debido a su completa inutilidad para una verdadera confidencialidad, el ROT13 se ha convertido en un eslogan para referirse a cualquier sistema de cifrado visiblemente débil; un crítico podría decir que «el DES de 56 bits es poco mejor que el ROT13 en estos días». Además, en juego con términos reales como «DES doble», surgen términos como ROT13 doble, ROT26 o 2ROT13 con intenciones jocosas, incluyendo un artículo académico paródico titulado "Sobre el algoritmo de cifrado ROT13". Como se explica arriba, aplicar el ROT13 a un texto que ya está cifrado con ROT13 recupera el texto en claro original, de manera que el ROT26 es equivalente a no cifrar en absoluto.
La idea del ROT26 se ha utilizado como una pulla satírica contra la Acta de derechos de autor Milenio Digital (DMCA) estadounidense; algunos usuarios de Internet firman sus mensajes en los foros con frases como «Codificado con ROT26: ¡los intentos de saltarse la protección serán perseguidos!» (el DMCA introdujo la prohibición general de saltarse los sistemas de protección de copia, sistemas que a menudo se descubre que internamente emplean métodos lamentablemente inseguros de criptografía). También se pueden observar menciones al «ROT13 triple», que, por supuesto, es equivalente al ROT13 normal (el término procede probablemente del Triple DES).
En 2001, el criptoanalista ruso Dmitry Sklyarov fue arrestado tras detallar las debilidades de los sistemas de protección de copia de los ebooks. Un vendedor de libros electrónicos, New Paradigm Research Group (NPRG), utilizó de hecho el ROT13 para cifrar sus documentos. Se especula que NPRG puede haber confundido un ejemplo de juguete —incluido en el kit de desarrollo de libros electrónicos de Adobe— con un sistema de cifrado serio.
Variantes
Hay otros sistemas de ofuscación poco utilizados con propósitos similares al ROT13. ROT13 sólo maneja letras y deja intactos el resto de caracteres, como los signos de puntuación, los números y los espacios en blanco. A causa de esto, el ROT13 es inapropiado para algunos propósitos, por ejemplo, ocultar la respuesta numérica de un enigma o manejar datos binarios arbitrarios.
ROT5
ROT5 es similar a ROT13 que se aplica a dígitos numéricos (0 a 9). ROT13 y ROT5 se pueden utilizar conjuntamente en el mismo mensaje.
El comando en Unix para aplicar el ROT5 es:
tr 0-9 5-90-4
ROT47
El ROT47 es una variante del ROT13 que, además de desordenar las letras básicas, también trata números y muchos otros caracteres. En lugar de usar la secuencia A-Z como alfabeto, el ROT47 utiliza un alfabeto más largo derivado de una codificación de caracteres llamada ASCII. El ASCII asocia letras, dígitos, signos de puntuación y otros caracteres especiales con una serie de números que van del 0 al 127. Visto en ASCII, el ROT13 cubre los códigos 65–90 y 97–122: las letras mayúsculas y minúsculas, respectivamente. En cambio, el ROT47 emplea 94 caracteres, desde ! (el signo de exclamación, código ASCII 33) a ~ (la tilde, código ASCII 126), rotándolos con un desplazamiento de 47. El uso de un alfabeto más largo está destinado a producir más ofuscación que el ROT13, pero el ROT47 se utiliza mucho menos.
Al aplicar el ROT47 al ejemplo anterior (entero en texto en claro) se obtiene:
¿ró>@ D6 AF656 5:DE:?8F:C 2 F? 6IEC@G6CE:5@ 56 F?
:?EC@G6CE:5@ 6? =2 }$pn t? =@D 2D46?D@C6D[
6= 6IEC@G6CE:5@ >:C2 =@D K2A2E@D 56 =@D ~%#~$ E:A@D]
El comando en Unix para aplicar el ROT47 es:
tr '!-~' 'P-~!-O'
memfrob()
La librería de C de GNU (un conjunto de rutinas estándar para su uso en programación informática) contiene una función — memfrob()8 — que tiene el mismo objetivo que el ROT13, aunque está destinada para usarla con datos binarios arbitrarios. La función trabaja combinando cada byte con la secuencia binaria 00101010 (42 en decimal) utilizando la operación o exclusivo (XOR). Esto efectúa un cifrado XOR sencillo. Al igual que el ROT13, memfrob() es autorrecíproco; también es igual de inseguro (es decir, es igual de trivial descifrarlo sin conocer la clave).
Comentarios