Resumen
En este episodio de enCoders se explican cuatro conceptos que consisten en cambiar la forma en que se presenta la información: encoding, encriptación, hashing y ofuscación. Se describe qué hace cada uno y cómo se relaciona con la ciencia de datos y la ciberseguridad. Encoding sirve para representar la información de forma legible (por ejemplo, UTF-8 y los problemas con los acentos). Encriptación protege la confidencialidad mediante una llave. Hashing verifica integridad (archivos corruptos o modificados, commits de git). Ofuscación vuelve el código ininteligible sin cambiar su funcionamiento. Se discute la hipótesis P = NP y su impacto en la criptografía. Luego se profundiza en la ofuscación con ejemplos del concurso IOCCC, lenguajes esotéricos como Malbolge, y casos de ciberseguridad (un PDF con PowerShell codificado en Base64, un archivo batch con variables de entorno y desofuscación de un script en Visual Basic). La conclusión es que ofuscar sirve para proteger código, pero analizar código ofuscado es clave para defenderse, y que conviene conocer estos conceptos aunque no se usen a diario.
Capítulos
- 00:00IntroPresentación de la quinta sesión: se definirán encoding, hashing, encriptación y ofuscación, sus usos en Data Science y ciberseguridad, y se adelantan ejemplos de ofuscación y lenguajes esotéricos.
- 00:53EncodingEs cambiar el formato en que se interpretan los bytes (UTF-8, el de Windows), lo que explica los caracteres raros con acentos entre sistemas operativos. En Data Science es común tener que indicar el encoding al leer bases de datos en español; recomiendan evitar tildes, espacios y caracteres especiales al nombrar cosas.
- 04:18EncriptaciónMétodo para que otros no accedan a la información original, que solo se recupera con una llave. Se usa para datos sensibles (direcciones, teléfonos, nombres) y en conexiones SSH con llave pública y privada, explicadas como cerrojo y llave.
- 06:08HashingGenera una cadena aparentemente aleatoria que cambia con cualquier modificación mínima del objeto, útil para comprobar integridad sin comparar el archivo completo. Se menciona su uso en criptomonedas, en comparar archivos de un repositorio en vez de la fecha de modificación, y en la verificación de descargas en Linux y de archivos corruptos o falsos.
- 09:50OfuscationHacer el código menos legible a propósito sin necesidad de una llave, aunque hay que conocer el proceso usado para revertirlo. Tiene pocas aplicaciones en Data Science pero muchas en ciberseguridad (analizar malware), protección de código y de valores en juegos (como el nivel del personaje).
- 15:45P = NPExplican la hipótesis: P son los problemas resolubles en tiempo polinomial y NP los demás; si fueran iguales existiría una forma de romper todos los algoritmos de encriptación en tiempo razonable. La mayoría cree que son distintos, pero no está demostrado; también comentan con escepticismo la amenaza de la computación cuántica.
- 19:43Resumen de las difiniciones y algunas aplicacionesRepaso de las definiciones. Hashing se usa también como identificador único de commits en git; se menciona SHA-256 y que algunos algoritmos de hash fueron rotos. HTTPS y el certificado gratuito Let's Encrypt aparecen como ejemplos de seguridad en la comunicación.
- 23:00Ejemplo de ofuscación con códigoSe muestra un Hello World en C y una versión ofuscada que guarda el texto como números flotantes con exponentes grandes, que se transforman en caracteres e imprimen con puts. Se comenta que se necesita conocer muy bien el lenguaje y el compilador.
- 27:38IOCCC y ejemplos de ofuscaciónPresentan el concurso internacional de código C ofuscado (desde 1984) y tres ejemplos: un programa de una línea que imprime un número en binario, una dona 3D animada cuyo código tiene forma de dona, y una simulación de fluidos con el método SPH. También mencionan make y Snakemake, y el uso de C en Tesla.
- 54:14Lenguajes de programación esotéricosSe presentan lenguajes pensados para ser casi imposibles de programar; destaca Malbolge, cuyo Hello World tardó unos dos años y lo encontró un computador probando combinaciones. Luego se discute si códigos como el de la máquina Enigma o el del asesino del Zodiaco serían encriptación o encoding.
- 01:00:36Cómo ofuscar un virus en un PDFSe muestra la estructura interna de un PDF y un caso de un curso de ciberseguridad donde un objeto con acción de apertura ejecuta PowerShell con un comando codificado en Base64, que descarga y ejecuta un archivo. Recomiendan mantener el software actualizado, usar antivirus y no ejecutar archivos de origen dudoso.
- 01:16:10Ofuscación de virus en archivo Batsh de WindowsCon el comando set en cmd se definen variables de entorno con nombres y fragmentos crípticos que se concatenan para construir comandos. Se muestra un video donde se genera un script en Python con cadenas aleatorias para abrir la calculadora, y se resumen los usos de ofuscar y desofuscar.
- 01:22:47Ejemplo de desofuscación en Visual BasicTécnicas de ofuscación como meter basura que no hace nada, usar el operador coma y llamadas recursivas. Para desofuscar se eliminan definiciones inútiles buscando con Ctrl+F y se renombran variables a nombres con sentido; se menciona la ingeniería social como técnica efectiva.
- 01:27:23CierreResumen del episodio y la utilidad de conocer estas técnicas: leer código ofuscado enseña qué no hacer al escribir código mantenible. Recuerdan el encoding como causa frecuente de errores de lectura de datos y el hash para validar descargas y archivos; invitan al Discord y a la lista de correos.