Alternate Reality Games: cifrados, una guía básica

Feliz 2019 queridos C506eros, este año esperamos traerles más noticias, informaciones necesarias e innecesarias y qué mejor momento que ya mismo.

Hemos estado hablando del fenómeno llamados ARG (alternate reality game), sin embargo, siempre he sentido que dar el brinco al agua cuando uno está comenzando puede ser sobrecogedor o abrumador debido a la falta de un punto de inicio. Es así como surge este intermedio en nuestra historia con la intención de dar un primer trago de agua a quienes quieren integrarse al mundo de la investigación online.

Hablemos de las constantes que encontramos en estos juegos y hoy nos centraremos en el elemento más básico de los ARG, la encriptación.

Si hay ARG hay cifrado, es el recurso más utilizado y evidente de primera entrada en la mayoría de los ARGs, y pretende esconder un mensaje tras una clave (BASE64, ROT13, hex, binario y muchas más).
Comprendamos los métodos más utilizados para ocultar el mensaje

numbers

Binario

Es talvez el más sencillo y fácil de identificar dado que es el lenguaje más vistoso del mundo de computadoras y es fácilmente identificable por solo contener 0 y 1 (abierto y cerrado) en bloques de 8 caracteres, de este modo si tenemos esto:

01001000 01101111 01101100 01100001 00100000 01000011 00110101 00110000 00110110 00100001

Esto es traducible a: «Hola C506!» cada bloque de números representa una letra, signo o espacio convertido a su equivalente en binario.

BASE64

Toma tres bytes, cada cuenta de ocho bits, y representa los cuatro caracteres imprimibles en el ASCII estándar para esto son necesarios dos pasos.

El primer paso es convertir tres bytes a cuatro números de seis bits. Cada carácter en el ASCII estándar consta de siete bits. Base64 sólo utiliza 6 bits (correspondiente a 2 ^ 6 = 64 caracteres) para garantizar que la información cifrada es imprimible y humanamente legible. Ninguno de los caracteres especiales disponibles en ASCII se utiliza.
Entonces si vemos el siguiente mensaje:

SG9sYSBtdWNoYWNob3MgZXN0byBlcyBCQVNFNjQ=

Esto se traduciría como: «Hola muchachos esto es BASE64».
Podemos identificar este tipo de encriptación por no contener espacios y terminar con el signo de igual (=)

ROT13 (-5,-18,-47)

«rotar 13 posiciones» es un sencillo cifrado César utilizado para ocultar un texto sustituyendo cada letra por la letra que está 13 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.

De esta manera:

ROT13-es

Es así entonces si vez esta frase:

«P506 gr rafrñn Ebg13»

Podrás deducir que ahí dice: “C506 te enseña ROT13

¿Vamos claros? Bien, porque hay más.

Hexadecimal

Cada dígito hexadecimal representa un valor de cero a quince. Para obtener el código ASCII para un valor de dígito inferior a diez [0–9], simplemente agregue 48 o 0x30, que es el código ASCII para el dígito “0”. Esto convierte el valor decimal en el carácter ASCII correspondiente: 0 se convierte en “0”, 1 se convierte en “1”,… , 9 se convierte en ‘9’.

Para valores de dígitos mayores que nueve, solo agregamos 64 o 0x40 (que es uno menos que el código ASCII para el capital ‘A’), si desea usar las letras A, B, C, D, E y F para representan dígitos con valores de diez, once, doce, trece, catorce y quince.

Es así que de esto: « 48 65 78 61 64 65 63 69 6d 61 6c 20 65 73 20 63 6f 6d 70 6c 69 63 61 64 6f»

Obtenemos: «Hexadecimal es complicado»

Es reconocible por su agrupación en pares y solo usa dígitos de 0-9 y letras de A a F, también es conocido como BASE16.

Cifrado Affine

El cifrado Affine es un tipo de cifrado de sustitución monoalfabética, en el que cada letra de un alfabeto se asigna a su equivalente numérico, se cifra mediante una función matemática simple y se convierte de nuevo en una letra. La fórmula utilizada significa que cada letra se encripta con otra letra, y viceversa, lo que significa que el cifrado es esencialmente un cifrado de sustitución estándar con una regla que rige qué letra va a cada letra.

Al descifrar el texto cifrado, debemos realizar las funciones opuestas (o inversas) en el texto cifrado para recuperar el texto plano. Una vez más, el primer paso es convertir cada una de las letras de texto cifrado en sus valores enteros.

Ahora debemos realizar el siguiente cálculo en cada entero:
D (x) = c (x – b) mod m

Donde c es el inverso multiplicativo modular de a. Es decir, a x c = 1 mod m (c es el número tal que cuando multiplicas a por él, y sigues quitando la longitud del alfabeto, obtienes 1).

Descifraremos el texto cifrado “IHHWVC SWFRCP“, usando una clave de a = 5, b = 8. El primer paso aquí es encontrar la inversa de a, que en este caso es 21 (ya que 21 x 5 = 105 = 1 mod 26, como 26 x 4 = 104, y 105 – 104 = 1).

Ahora debemos realizar los cálculos inversos sobre los valores enteros del texto cifrado. En este caso el cálculo en 21 (y – 8). Una vez más, debemos tomar estas respuestas, módulo 26, y finalmente convertir los números enteros de nuevo a letras de texto simple.

Affine

…Ehhhm clarísimo!

Octal

Cada caractér está representado por tres números. Octo u octal se refiere a un sistema de numeración de base 8. Se utilizan los dígitos 0 a 7. Los números binarios pueden componer un número octal. Para un sistema octal, cada posición decimal es una potencia de ocho, en contraste con un sistema decimal donde cada posición es una potencia de diez. Para pasar de octal a texto existen 3 pasos:

  1. Extraiga los números octales individuales (como 354) de la cadena de origen.
  2. Convierta cada representación de cadena octal a su equivalente decimal como un byte.
  3. Decodifique la secuencia de bytes como UTF-8.

De esta manera si tenemos esta cadena:

«117 143 164 141 154 040 145 163 040 142 151 145 156 041»

Nos dará como resultado: «Octal es bien!»

Estas son solamente unas cuantas de las ofuscaciones de texto que podrías encontrarte en un ARG, ahora bien, la cantidad de claves existentes es muy grande y solamente con práctica (o el clásico brute force) iremos viendo identificadores. Entre otras importantes podemos citar:

Como podemos ver de primera entrada la codificación de mensajes puede resultar muy intimidante, queda de más decir que para esta época dichas traducciones no las tendremos que hacer “de a pie” sino que existen herramientas que hacen todo el levantado de pesas por nosotros, mas saber de dónde vienen y cómo funcionan nos ayuda a comprender y abrazar la experiencia de manera más inmersiva.

Las que te recomendamos acá son:

cryptii.com: Con una fácil interfaz para experimentar con distintos cifrados, simplemente pega tu texto, elige el cifrado y obtén el resultado, su facilidad de uso hace que hasta los más inexpertos puedan operarla sin mucho esfuerzo, contiene las clases vistas y además un buen repertorio extra.

cryptii

crypto corner: Es un excelente cifrador y descifrador con una interfaz simple, a diferencia de cryptii cada cifrado tiene su propia sección lo que puede resultar un poco más tedioso si no sabemos el cifrado correcto y estamos probando suerte, por otro lado tiene concisas explicaciones de cómo trabaja cada uno de ellos, la historia del cifrado y foros de discusión.

Crypto Corner
Ahora bien, si quieres entrar de lleno a este mundillo existen varias redes que nos introducen a poco a los cifrados sin lo abrumador de un ARG, sino donde no haya prisa, vayas a tu propio ritmo y viendo con detalle qué exactamente estás haciendo, con este fin te recomendamos:

CIA: ehh sí, LA CIA, en sus recursos tienen ejercicios de principiante para llevarte de la mano.

 

gamedetectives: Toda una eminencia en los ARG y un recurso invaluable para novatos y veteranos, ellos tienen un pequeña academia donde puedes probar suerte.

Unas últimas recomendaciones antes de irnos:

  • Escanee a través del cifrado, en busca de palabras de una sola letra. Son casi definitivamente A o I.
  • Cuenta cuántas veces aparece cada símbolo en el rompecabezas. El símbolo más frecuente es probablemente E. También podría ser T, A u O, especialmente si el criptograma es bastante corto.
  • Cuenta con un lápiz. ¿Los fragmentos de palabras típicas comienzan a revelarse? ¡Prepárate para borrar y cambiar tus conjeturas!
  • Busca apóstrofes. Por lo general, les siguen S, T, D, M, LL o RE.
  • Busque la repetición de patrones de letras. Pueden ser grupos de letras comunes, como TH, SH, RE, CH, TR, ING, ION y ENT.
  • Intenta descifrar palabras de dos, tres y cuatro letras.
  • Las palabras de dos letras casi siempre tienen una vocal y una consonante. Las cinco palabras más comunes de dos letras, en orden de frecuencia, son OF, TO, IN, IS y IT.
  • Las palabras más comunes de tres letras, en orden de frecuencia, son THE, AND, FOR, WAS y HIS.
  • La palabra más común de cuatro letras es ESA. Una palabra encriptada con el patrón 1 – – 1 es probable que sea ESO. Sin embargo, el patrón 1 – – 1 también representa otras 30 palabras, así que ten esto en cuenta.
  • Escanear en busca de letras dobles. Es más probable que sean LL, seguidos en frecuencia por EE, SS, OO y TT (y en los dobles menos vistos con mayor frecuencia).

En los días venideros vendremos con más de la escuelita ARG dándote técnicas de estenografía, SSTV y muchas otras cosas del mundo de los ciberdetectives.

¿Qué te parece la criptografía? No encantaría oír tus comentarios:

Página de Facebook: C506

Grupo de Facebook: C506-Comunidad Geek

Twitter: C506 Latinoamérica

Instagram: C506 Latinoamérica

También puedes seguirnos en nuestro Canal de YouTube.

 

    

Y sigue leyendo

https://www.collectible506.com/hablemos-alternate-reality-games-i/

Fuentes:
Game Detectives
Wikipedia
ARGnet
CIA
Cryptii
Unfiction