Aunque las tarjetas DS no se vieron afectadas por la maldición del disco compacto, los trucos basados en marcas registradas ya no bastaban para frenar la producción de flashcarts. Por ello, esta vez Nintendo reforzó su seguridad tradicional con capas adicionales para recuperar el control sobre la distribución de juegos.
Mecanismos de seguridad
Para entender el nuevo sistema implantado, analicemos cada área por separado.
Sistema de cifrado
Aunque los datos del juego en la ROM siguen sin estar cifrados, la Nintendo DS estrena un sistema de cifrado simétrico para proteger la comunicación entre la Memory Interface y la tarjeta del Slot-1.
El área 'Cabecera' de la tarjeta contiene un valor denominado Gamecode, que sirve como identificador único del juego. La Memory Interface utiliza esta información para generar KEY1, la clave de cifrado. Usando el algoritmo de cifrado Blowfish en combinación con KEY1, la Memory Interface cifra los comandos adicionales enviados a la tarjeta .
A continuación, KEY1 se combina con el reloj interno y otros valores de la cabecera del cartucho para generar una nueva clave denominada KEY2. La diferencia fundamental respecto a KEY1 es que KEY2 incorpora aleatoriedad para resultar impredecible. Además, su cifrado se basa en múltiples operaciones XOR y desplazamientos de bits para ofuscar los datos .
KEY1 y KEY2 son utilizadas en distintas etapas por la interfaz del Slot-1 para cifrar la comunicación con la tarjeta. KEY1 también es utilizada por la BIOS del ARM7 para validar la tarjeta DS e inicializar la interfaz de la tarjeta.
Validación de la tarjeta DS
Para poner este nuevo sistema en funcionamiento, la BIOS incluye rutinas que validan la tarjeta del Slot-1 durante el arranque. El proceso es el siguiente :
- La BIOS del ARM7 recupera el ID del chip ROM de la tarjeta, lo guarda en RAM y procede a habilitar el cifrado KEY1 y KEY2.
- Los primeros 2 KB del 'Área segura' se copian a la RAM en orden aleatorio. Los primeros 8 bytes de este bloque almacenan una cadena denominada Secure Area ID, y los valores siguientes contienen sumas de comprobación (tipo CRC16) y otros metadatos. Todo esto llega cifrado con KEY1, y el Secure Area ID está cifrado dos veces con KEY1 usando distintos parámetros.
- La BIOS del ARM7 descifra el Secure Area ID y verifica que el resultado coincide con
encryObj. Si es así, la tarjeta ha superado la primera prueba. Tras esto, la cadena se destruye para no revelar el algoritmo. Si la validación falla, los 2 KB del Área segura se rellenan con datos basura, impidiendo el acceso posterior a la tarjeta. - La segunda prueba consiste en recuperar de nuevo el ID del chip. El número de lecturas depende del reloj interno. Al final, si el valor del ID del chip coincide con el primero almacenado, la segunda prueba se ha superado.
- Por último, el resto del Área segura se lee en orden aleatorio y se reconstruye en RAM. Tras esto, se ejecuta el firmware.
Si todo va bien, el firmware encontrará el ejecutable requerido de la tarjeta en RAM, lo que permitirá al usuario iniciar el juego. De lo contrario, la entrada del juego aparecerá atenuada.
Protección del Download Play
Los programas recibidos mediante Download Play deben estar firmados por Nintendo mediante un sistema de cifrado asimétrico independiente; en concreto, RSA-1024 combinado con SHA-1 . Por supuesto, solo Nintendo conoce la clave privada.
La verificación de la firma la realiza el firmware del sistema, que también almacena la clave pública.
Derrota
Si eras un asiduo usuario de homebrew de DS entre 2007 y 2011, es muy probable que te hayas topado con interminables catálogos de software creado por la comunidad —desde emuladores y ports de juegos hasta reproductores multimedia—, así como con las múltiples herramientas disponibles para ejecutarlo. Lo cierto es que, antes de que se descubriesen los métodos más accesibles, los hackers lo pasaron muy mal para sortear el complejo sistema de Nintendo.
Slot-2 existente
Dado que el subsistema de GBA sigue ejecutando cartuchos sin ninguna protección significativa (más allá de los trucos de marcas registradas), los flashcarts de GBA existentes siguieron siendo compatibles con la Nintendo DS. Esto permitía ejecutar homebrew de GBA, lo que funcionaba bien si no te importaba prescindir de las nuevas funciones exclusivas de los títulos de DS.
Como siempre, los flashcarts también permitían a los usuarios ejecutar ROMs piratas. Sin embargo, dado que Nintendo no podía alterar el sistema de protección de la GBA (ya que hacerlo podría dejar inutilizables los juegos existentes), no se implementaron medidas adicionales.
Slot-2 mejorado

Ejemplo de flashcart para el Slot-2 capaz de ejecutar juegos de DS. Requiere un método de passthrough para arrancarla.
Desde que la consola llegó a las tiendas, personas de todo el mundo realizaron investigaciones clandestinas para descifrar las complejidades del Slot-1, la BIOS del ARM7 y el firmware.
En enero de 2005, Rafael Vuijk (conocido como DarkFader) publicó un método para inyectar código arbitrario en modo DS. Este método utilizaba una FPGA conectada entre el socket del Slot-1 y los pines de la tarjeta de Metroid Prime Hunters: First Hunt . En esencia, Vuijk descubrió que, si se manipulaban los valores de la cabecera, la ejecución desde el Slot-1 podía redirigirse al Slot-2 (donde vivían los flashcarts de GBA). Sin embargo, como el sistema de cifrado de la DS no se había comprendido del todo, esto requería una tarjeta DS original para superar las comprobaciones de validación iniciales. En cualquier caso, este modelo se denominó DS Passthrough y sirvió de base para ejecutar programas del Slot-2 en modo DS.
Los meses siguientes vieron proliferar en el mercado flashcarts para el Slot-2. Estas nuevas variantes incorporaban código ARM9 que se ejecutaba una vez arrancado desde el Slot-1. Mientras tanto, el propio arranque se lograba mediante diversos 'métodos de passthrough' descubiertos a lo largo del mismo año, entre ellos:
- PassMe: Diseñados originalmente por
Natrium42, eran tarjetas del Slot-1 de terceros que incluían circuitos integrados y una ranura para una tarjeta del Slot-1 original. Se trataba, en esencia, de una versión comercializada del invento de Vuijk para el usuario medio. Con el tiempo, varios fabricantes desarrollaron revisiones más pequeñas y sencillas. - WiFiMe: Desarrollado por Tim Schuerewegen en abril de 2005, era un conjunto de herramientas que incluía un driver de Wi-Fi Ralink modificado y una utilidad de línea de comandos para Windows 2000 y XP. Mediante una tarjeta Wi-Fi compatible, un PC podía emitir un programa de DS personalizado que la consola podía descargar a través del Download Play . Una vez ejecutado, redirigía la ejecución al Slot-2. Esta técnica aprovechaba que el firmware no comprobaba las firmas RSA de determinadas áreas del binario.
- FlashMe: Desarrollado por
Loopyen abril de 2005 , este método abordaba los inconvenientes de los dos anteriores. Mediante un puente en el terminalSL1y la ejecución de un programa homebrew especialmente diseñado (arrancado mediante otro método), era posible modificar el firmware para que arrancase automáticamente el código del Slot-2 en modo DS.
Como era de esperar, los lotes posteriores de Nintendo DS se entregaron con firmwares actualizados que corregían estos trucos. Así, los hackers y fabricantes se volcaron en explotar deficiencias de la BIOS del ARM7 (mucho más difíciles de corregir). De ahí surgió el PassMe2 . Aun así, el juego del gato y el ratón continuó hasta que una nueva revelación asestó un duro golpe a Nintendo.
Slot-1 nativo

La 'R4 DS' fue una de las primeras flashcards para el Slot-1 en llegar al mercado. Poco después, una avalancha de réplicas lo inundó.
En enero de 2006, Martin Korth, desarrollador del emulador de Nintendo DS llamado 'NO$GBA', logró extraer la BIOS del ARM7 e hizo ingeniería inversa del sistema de seguridad del Slot-1 . Con ello, nuevas herramientas y documentación revelaron los verdaderos mecanismos de seguridad de la Nintendo DS. Como ya has visto en este artículo, el modelo de cifrado es efectivo hasta que se descubre la clave (esta es una debilidad de los sistemas de cifrado simétrico, a diferencia de los sistemas de cifrado asimétrico como RSA, donde una entidad diferente custodia la clave privada).
¿Qué ocurrió entonces? Pues bien, para empezar, las tarjetas PassMe fueron sustituidas rápidamente por tarjetas NoPass, que cumplían la misma función pero ya no requerían una tarjeta original insertada. La segunda gran disrupción llegó con una nueva oleada de flashcards plug-and-play para el Slot-1, que cargaban homebrew directamente desde el Slot-1 (ya fuera incluyendo una ranura para MicroSD o memoria interna regrabable).
Como el sistema de cifrado no podía modificarse sin introducir cambios incompatibles que afectasen a todos los juegos comerciales existentes, Nintendo perdió definitivamente esta batalla. La única alternativa viable era recurrir a la vía legal, tal como hizo con su consola anterior.
Reflexiones finales
A título personal, me parece asombroso lo sencillo que resultó adquirir y utilizar flashcards plug-and-play en comparación con consolas anteriores. En artículos anteriores he descrito que, si los usuarios querían ejecutar programas homebrew o juegos piratas, debían adentrarse en un proceso engorroso y lleno de pasos.
En el caso de la DS, sin embargo, las flashcards se vendían literalmente como juegos comerciales (aunque con un 'estilo' de marketing diferente), y apuesto a que debió de ser muy preocupante para los estudios ver con qué facilidad se podía recurrir a la piratería.

Las flashcards para el Slot-1 fueron una industria muy activa entre 2007 y 2011. Estas son solo algunas de las muchas opciones disponibles. ¡Gracias al donante anónimo por enviármelas!
Otro aspecto llamativo es la enorme cantidad de flashcards de marca (sin contar todos los clones) que aparecieron en el mercado. Si lo analizas desde una perspectiva técnica, el propósito de una flashcard es muy sencillo: redirigir los comandos a la tarjeta MicroSD (donde se almacena una ROM o un programa homebrew) . Pero a medida que la industria avanzó, algunos fabricantes dieron pasos adicionales para diseñar un software más elaborado dentro de la flashcard (denominado 'kernel' o 'firmware'), o incluso integraron hardware bastante inusual. Por ejemplo, la 'N-Card' ofrecía almacenamiento integrado, mientras que la 'SuperCard DSTwo' incluía un Ingenic Jz4740 (una CPU compatible con MIPS) a 360 MHz . No he visto este nivel de pasión desde la era de los cartuchos de expansión.