The Nintendo 3DS, like every modern console, attempts to prevent the use of software that was not authorized by its manufacturer. This post will attempt to answer two questions:
- Why you can’t install unsigned software without custom firmware
- Why you can’t create custom game cards
The 3DS uses RSA to verify the authenticity of software. Nintendo signs software with a private key, and under normal circumstances, the 3DS will only execute software that can be verified with a public key.
Game card images (i.e. .3ds/CCI) contain signatures that are only valid to game cards. Digital software releases (i.e. CIA) contain signatures that are only valid to digital software.
Digital software that comes from Nintendo eShop come with a ticket that is signed for the particular console it’s for. This ticket can’t be installed to a different console.1
Flashcarts like Sky3DS / Sky3DS+ / Stargate will emulate a game card in a way that the 3DS accepts. And if an original, unmodified game card image is presented, this game can be played without any system modifications. However they cannot forge the signature, as the 3DS operating system will still verify that it’s valid. Any attempts to modify the data or create custom titles will fail this signature check.
As game cards and digital software have their own signatures, any attempt to “convert” a digital game to a game card image and vice versa will result in a title with a signature that does not validate against Nintendo’s public key.
Since we do not have Nintendo’s top secret and confidential retail signing keys, we cannot run software on the 3DS without exploiting holes in existing software. The relevant private keys have not appeared in any leaks.
The closest equivalent to a private key leakage for a game console was the PlayStation 3, however this was mainly due to Sony failing to do the math right.
- There’s an exception for software that comes pre-installed, tickets for these are signed for all consoles. ↩︎
