Core War y Redcode: La Competición que Inspiró los Primeros Virus Informáticos
Core War, el juego de programación donde programas luchan por sobrevivir en memoria compartida, fue la inspiración directa para los primeros virus informáticos. Historia de Redcode, los warriors y su influencia en la cultura VX y el malware moderno.
Antes de los virus: la guerra en la memoria
Antes de que el primer virus informático infectara un disquete, antes de que los gusanos recorrieran las redes y antes de que existiera la industria antivirus, un juego de programación planteó la pregunta fundamental que daría origen a toda la escena VX: ¿qué ocurre cuando dos programas compiten por sobrevivir en un espacio de memoria compartido?
Core War es ese juego. Concebido originalmente en los años 60 como un experimento en los laboratorios de Bell, popularizado en 1984 por la revista Scientific American y jugado durante décadas por programadores de todo el mundo, Core War es el ancestro intelectual más directo de los virus informáticos. No porque Core War fuera malicioso (era un juego legítimo), sino porque demostró que un programa podía autorreplicarse, atacar a otros programas y sobrevivir en un entorno hostil.
Los orígenes: Darwin en Bell Labs
La historia de Core War comienza en 1961 en los laboratorios Bell de AT&T, cuando tres programadores (Victor Vyssotsky, Robert Morris Sr. y Dennis Ritchie, este último futuro creador de C y co-creador de Unix) inventaron un juego llamado Darwin.
En Darwin, cada jugador escribía un programa en ensamblador para la máquina IBM 7090. Los programas se cargaban en una zona de memoria compartida y un programa árbitro les daba turnos de ejecución. El objetivo de cada programa era localizar y sobrescribir a su oponente en memoria, "matándolo" al destruir sus instrucciones. Un programa "muerto" dejaba de recibir turnos y el último en pie ganaba.
Darwin fue un juego interno de Bell Labs que nunca se publicó ampliamente. Pero estableció el concepto central que Core War retomaría dos décadas después: la competición de programas en memoria compartida.
Es notable que Robert Morris Sr. fue el padre de Robert Tappan Morris, creador del famoso gusano Morris de 1988. La conexión no es directa (el Morris padre nunca alentó actividades ilegales), pero ilustra cómo las ideas sobre programas autorreplicantes estaban presentes en la cultura de investigación informática mucho antes de que se materializaran en virus reales.
1984: Scientific American lo hace público
En mayo de 1984, A.K. Dewdney publicó un artículo titulado "In the game called Core War hostile programs engage in a battle of bits" en su columna "Computer Recreations" de Scientific American. Este artículo transformó un concepto de nicho en un fenómeno global.
Dewdney describía un juego basado en la idea de Darwin pero simplificado y estandarizado. Dos programas, escritos en un lenguaje ensamblador diseñado específicamente para el juego llamado Redcode, se cargaban en posiciones aleatorias de una memoria circular de 8000 posiciones. Un programa supervisador llamado MARS (Memory Array Redcode Simulator) ejecutaba alternativamente una instrucción de cada programa. El objetivo era hacer que el programa oponente ejecutara una instrucción inválida (DAT), lo que lo "mataba".
La respuesta fue masiva. Miles de lectores enviaron cartas, propuestas de warriors (los programas competidores) y sugerencias de mejoras. Dewdney publicó artículos de seguimiento en marzo y septiembre de 1985, documentando las estrategias que los lectores habían desarrollado.
Redcode: el lenguaje de la guerra
Redcode es un lenguaje ensamblador simplificado con un conjunto reducido de instrucciones, diseñado para ser lo suficientemente expresivo para permitir estrategias complejas pero lo suficientemente simple para ser simulado eficientemente.
Instrucciones fundamentales
Las instrucciones originales de Redcode incluían:
MOV (move): copia el contenido de una posición de memoria a otra. Es la instrucción fundamental para la autorreplicación: un warrior puede copiar su propio código a otra posición de memoria.
ADD (add): suma el contenido de una posición al de otra. Utilizada para calcular direcciones dinámicamente, permitiendo a los warriors moverse por la memoria de forma impredecible.
SUB (subtract): resta valores. Similar a ADD en su uso para cálculos de direcciones.
JMP (jump): salta a una dirección. Fundamental para los bucles y el flujo de control.
JMZ (jump if zero): salta si el contenido de la dirección es cero. Permite tomar decisiones basadas en el estado de la memoria.
DJN (decrement and jump if not zero): combina decremento y salto condicional. Extremadamente útil para bucles de bombardeo.
CMP (compare): compara dos valores y salta si son iguales. Usada para detectar la presencia de código enemigo.
DAT (data): no es una instrucción ejecutable. Un proceso que ejecuta DAT muere. Es el "arma" fundamental de Core War: si logras que tu oponente ejecute un DAT, ganas.
SPL (split): crea un nuevo proceso en la dirección indicada. Permite a un warrior tener múltiples hilos de ejecución, una ventaja estratégica significativa.
El espacio de memoria circular
La memoria de Core War es circular: la posición después de la última conecta con la primera. Esto significa que un warrior no puede "esconderse en una esquina". Todos los programas comparten el mismo espacio y eventualmente se encontrarán.
El tamaño estándar de la memoria (8000 posiciones en el estándar ICWS-94) fue calibrado para crear un equilibrio entre la capacidad de ocultación y la probabilidad de contacto. Un espacio demasiado grande haría que los programas raramente se encontraran; uno demasiado pequeño haría que la colisión fuera inmediata y predecible.
Estrategias fundamentales: la taxonomía de los warriors
A lo largo de los años, los jugadores de Core War desarrollaron una taxonomía de estrategias que tiene paralelismos directos con las estrategias del malware real.
Imp (el replicador simple)
El warrior más simple posible en Redcode es el Imp: una sola instrucción MOV que se copia a sí misma a la siguiente posición de memoria, avanzando indefinidamente por el core. El Imp no puede ganar (no ataca al oponente), pero tampoco puede ser destruido fácilmente: incluso si su posición actual es sobrescrita, la copia que ya realizó sigue avanzando.
El Imp es el análogo directo de un virus parásito simple: un programa cuya única función es replicarse. Su relevancia en Core War radica en que demostró el principio de la autorreplicación como mecanismo de supervivencia.
Dwarf (el bombardero)
El Dwarf es un warrior que escribe instrucciones DAT en posiciones regulares de la memoria, esperando que alguna de esas posiciones contenga código del oponente. Si el oponente ejecuta un DAT, muere.
La estrategia del Dwarf es análoga a los payloads destructivos del malware: modificación indiscriminada de datos con la esperanza de impactar al objetivo. La limitación del Dwarf es que bombardea a ciegas, sin saber dónde está el oponente.
Scanner (el cazador)
Los scanners buscan activamente al oponente en la memoria antes de atacar. Recorren el core comparando posiciones de memoria con cero (o con otro valor esperado) para detectar código no propio. Cuando encuentran algo, lanzan un ataque dirigido.
Esta estrategia es análoga a los gusanos que escanean la red buscando hosts vulnerables antes de intentar la infección. La eficiencia del scanner depende de su capacidad para distinguir el código enemigo del vacío o de su propio código.
Replicator (el ejército)
Los replicators crean copias de sí mismos en múltiples posiciones de la memoria. Si una copia es destruida, las demás siguen operando. Los replicators avanzados incluyen lógica de ataque en cada copia, creando un ejército distribuido.
Esta estrategia es el antecedente conceptual del malware polimórfico y de los botnets: múltiples instancias del mismo programa operando de forma distribuida, con redundancia contra la eliminación.
Vampire (el capturador)
Los vampires no destruyen al oponente: lo redirigen. Escriben instrucciones JMP en la memoria que apuntan al código del vampire, haciendo que los procesos del oponente "deserten" y empiecen a ejecutar código del vampire. El oponente pierde procesos progresivamente hasta quedarse sin ninguno.
Esta estrategia es análoga al hijacking de procesos en malware real: en lugar de destruir un programa, se modifica para que ejecute código controlado por el atacante.
La influencia directa en la cultura VX
El artículo de Dewdney como catalizador
El artículo de Scientific American de 1984 tuvo un impacto directo en la emergencia de la escena VX. Al presentar la idea de programas autorreplicantes que compiten por supervivencia en un entorno compartido, Dewdney plantó una semilla en la mente de miles de lectores.
Dewdney era consciente de la analogía con los virus biológicos y la exploró explícitamente en sus artículos. En su seguimiento de 1985, discutió la posibilidad de que las técnicas de Core War pudieran aplicarse a virus informáticos reales. Esta discusión, publicada en una revista de gran circulación, contribuyó a la concienciación sobre el concepto de virus informáticos.
Fred Cohen y la formalización
Fred Cohen, quien en 1984 (el mismo año del artículo de Dewdney) presentó la primera definición formal de virus informático en su tesis doctoral en la Universidad de Southern California, reconoció la conexión intelectual entre Core War y los virus informáticos. Cohen definió un virus como "un programa que puede infectar otros programas modificándolos para incluir una copia, posiblemente evolucionada, de sí mismo", una definición que describe tanto a un virus informático real como a ciertos warriors de Core War.
Virus writers que citaron Core War
Múltiples virus writers de los 80 y 90, en entrevistas y en las páginas de las ezines VX, citaron Core War como una de sus primeras experiencias con la idea de programas autorreplicantes. La conexión no era de implementación (Redcode no tiene relación con el ensamblador x86) sino conceptual: Core War demostró que la autorreplicación era posible y la convirtió en un desafío técnico atractivo.
Core War como modelo de ecosistema
Más allá de la influencia directa en la escena VX, Core War es un modelo simplificado pero útil para entender las dinámicas del ecosistema del malware.
La carrera armamentista. En Core War, cada nueva estrategia defensiva genera una contramedida ofensiva, y viceversa. Exactamente lo mismo ocurre en la industria de seguridad: cada nueva técnica de detección genera una nueva técnica de evasión.
La diversidad como defensa. En Core War, no existe un warrior que gane contra todos los demás. Las estrategias óptimas dependen del oponente. En seguridad informática, la diversidad de defensas (defense in depth) es más efectiva que cualquier defensa única.
La importancia del tamaño. En Core War, los warriors más pequeños son más difíciles de detectar y más rápidos de replicar, pero tienen menos funcionalidad. En el malware real, existe el mismo trade-off entre tamaño, funcionalidad y detectabilidad.
La autorreplicación como supervivencia. Core War demostró que la capacidad de replicarse es una estrategia de supervivencia fundamental. Un warrior con una sola copia puede ser destruido por un impacto afortunado; uno con múltiples copias es resiliente. El mismo principio aplica a los botnets y al malware persistente.
El legado educativo
Core War sigue siendo utilizado como herramienta educativa en ciencia computacional. Enseña conceptos fundamentales de programación de bajo nivel (registros, direccionamiento, flujo de control), introduce la idea de programas como datos que pueden ser manipulados, y proporciona un entorno seguro para experimentar con conceptos que, en el mundo real, serían malware.
Varias universidades han utilizado Core War en cursos de seguridad informática para enseñar los principios de la infección de código, la autorreplicación y las estrategias de defensa sin los riesgos legales y éticos de trabajar con malware real.
Conclusión: la semilla que germinó
Core War no creó los virus informáticos, pero proporcionó el marco conceptual que los hizo inevitables. Demostró que la autorreplicación, la competición por recursos y la destrucción de código ajeno eran problemas de programación resolubles y fascinantes. Cuando los ordenadores personales se masificaron y los programadores de la escena underground buscaron desafíos técnicos, las ideas que Core War había sembrado germinaron en la cultura VX.
La diferencia fundamental entre Core War y un virus real es el consentimiento: en Core War, ambos jugadores aceptan las reglas. En el mundo real, la víctima de un virus no es un participante voluntario. Esta distinción ética, clara en teoría pero borrosa en la práctica, sería el centro del debate sobre la ética del virus writing durante las siguientes dos décadas.
Fuentes y lecturas recomendadas
- Dewdney, A.K. "In the game called Core War hostile programs engage in a battle of bits". Scientific American, mayo 1984.
- Dewdney, A.K. "A Core War bestiary of viruses, worms and other threats to computer memories". Scientific American, marzo 1985.
- Cohen, Fred. "Computer Viruses: Theory and Experiments". Tesis doctoral, University of Southern California, 1986.
- Estándar ICWS-94: International Core War Society Standard, 1994.
- corewar.co.uk: archivo de warriors y documentación de la comunidad moderna.
Preguntas frecuentes
Artículos relacionados
Cultura VX: Orígenes del Underground del Virus Writing
Creeper y Reaper: El Primer Programa Autorreplicante y el Nacimiento del Antivirus (1971)
El Legado de la Escena VX en la Ciberseguridad Moderna
Polimorfismo y Metamorfismo: La Evolución de los Motores de Mutación del Malware
Este contenido tiene fines exclusivamente educativos y de investigación en ciberseguridad defensiva. No se proporcionan binarios maliciosos ni payloads ejecutables. El uso indebido de esta información es responsabilidad exclusiva del usuario. Leer disclaimer completo.