单卡联机
3DS dlplay有两个dlplay模式:3DS和DS。DS dlplay是只是普通的dsmode dlplay,使用了和从前同的接口和协议。 与DS游戏卡相同,进入dsmode dlplay应用时按住start +select,3DS会禁用拉伸屏幕。
Download Play 协议
3DS的Download Play 协议与 DS Wireless Multiboot (WMB) 协议完全不同。DS WMB协议用于无线以纯文本形式发送程序代码,而3DS的 download play协议使用WPA2加密的128位AES CTR广播应用程序。
广播的信标(beacons)有 以0.102400 / s的速度广播的静态的任天堂标签数据 和 WPA2广播的数据帧,他们的大小不尽相同。 客户端向主机请求身份验证,主机发送连接响应,响应包含了一个随机的ASCII十六进制SSID (如“EB6FAB77”)。 之后使用WPA2加密的数据帧进行系统的通讯和传输的二进制文件。
这是从猴子球3D(vendor 001f32)导出的一个任天堂标签。数据中包含的vendor tag数据是加密的:
000: 18 05 9f ae 17 c8 a5 1d 0b 81 28 be 74 0f d4 af 010: 97 30 04 60 fd 2d f3 d9 8d bc 22 80 51 60 3c 75 020: d9 89 6d 16 c4 f3 aa 89 26 d4 14 25 67 75 8e 4b 030: 3c 97 85 c9 83 15 d4 96 06 b1 29 b6 f5 51 57 71 040: cc b6 1f 4a c8 bd 4f c0 57 43 cb ab fa 37 74 b0 050: 64 6b 87 69 a1 de a4 05 7c 7c 49 5d f5 21 25 83 060: 4c f2 d0 70 38 14 7b 0f f4 97 f7 ff f3 ff 36 cd 070: c2 e2 c0 78 98 d1 d5 4d 3d d4 9b 57 84 6c e2 4f 080: 25 f2 56 c4 19 88 64 13 78 68 e2
WPA2密钥
用于引导单卡联机的可执行通信有一个单独的WPA2密钥,它是由 NWM 模块生成的一个随机的十六进制字符串。
广播应用数据
Download Play协议以CIA 格式广播3DS应用数据, 包含certificate chain, ticket, TMD各一,以及CXI format格式封装的应用本体。广播的归档数据临时存储在内部的NAND Flash直至其他游戏通过Download Play协议占用此空间。
CXI 应用数据使用了128-bit AES CBC加密. ticket中有加密的titlekey , 和titleID补零构成的IV。为了得到解密的titlekey,ticket中存储的titlekey必须使用128位AES-CBC的3DS公钥解密,以及前面提到的IV。
所以,事实上通过无线传输的3DS的应用程序,经过了3次加密:
- 第一次使用128位AES CTR加密的CXI格式的ExeFS
- 第二次使用128位AES CBC加密的归档数据
- 第三次使用128位AES的WPA2加密CTR。
远程分布式系统更新
作为分布式系统的一部分,一台3DS扮演了本地Download Play服务器的角色,可以给作为客户端的机器发送固件更新。首先发送系统升级包,然后给客户端发送指令安装升级包并重启。 在比如远程连接时 (缓存临时信息),如果在发现运行分布式子应用(比如多人游戏)必须进行系统更新,就像升级CTR卡的分区一样, 这不是一个“自动功能”,并没有在所有的Download Play titles中实现。