vault 应用程序[!WARNING] 将您自己的固件加载到徽章上会擦除光加密密钥,并导致您的徽章进入开发者模式。
注意:此仓库现已孤立,即将归档,因为它已合并到 xous-core 中。它之所以存在于 bunnie 的 GitHub 仓库中,是因为在会议之前它必须是私有的;现在它已公开,将作为 xous-core 的一部分进行维护。请将所有未来的 PR 提交到 xous-core。Tetris PR 最终将作为独立应用程序迁移,因此该仓库将保持活跃,直到该待办事项完成。
这是为 Defcon34 定制的 vault 应用程序。
它提供会议期间的徽章交互功能,即通过扫描徽章之间加密的二维码来自定义灯光。
代码中隐藏着一些彩蛋,如果您有兴趣寻找的话,甚至可能有一面旗帜等着您去捕获,只要您足够仔细地寻找。
假定以下目录结构:
.
├── dc34-api
├── dc34-console
├── dc34-vault
└── xous-core
并且这些命令是从 xous-core 目录内部运行的。先决条件:
xous-core 仓库内运行 cargo xtask install-toolkitecho "===== Building Console ====="
(
cd ../dc34-console &&
cargo build --release --target riscv32imac-unknown-xous-elf --features board-baosec --features oem-baosec-lite --features bao1x --features utralib/bao1x &&
) || {
echo "dc34-console build failed!"
exit 1
}
echo "===== Building Vault ====="
(
cd ../dc34-vault &&
cargo build --release --target riscv32imac-unknown-xous-elf --features board-baosec &&
) || {
echo "dc34-vault build failed!"
exit 1
}
cargo xtask baosec-lite ../dc34-console/target/riscv32imac-unknown-xous-elf/release/dc34-console~flash ../dc34-vault/target/riscv32imac-unknown-xous-elf/release/dc34-vault \
--no-timestamp --feature usb --kernel-feature debug-proc --no-verify
当核心模块与徽章载板配对时,模块默认为"会议"模式,该模式显示 Defcon 徽标,如果您使用 https://github.com/bunnie/dc34-image 上传图像,则会与您选择的图像交替显示。
您可以通过扫描二维码与其他徽章"混合"灯光图案。灯光图案使用整个群体共享的公共密钥进行加密——如果您能提取该密钥,那么您实际上就可以成为任意灯光图案的"种子源"。然而,最初每个徽章的颜色范围有限,让您的徽章变得更加多彩的唯一方式是与拥有您所期望颜色的人进行交互。
交互过程如下:
有关加密交换的更多详细信息,请参阅 defcon_scheme.md。
当前计划是泄露共享密钥的一部分,以便任何想要展示其强大 ASIC 破解器的人都可以尝试暴力破解该密钥。如果在展会结束时仍没有人暴力破解或提取出密钥,将泄露足够的比特,使得使用高端桌面 GPU 和一天的精力即可完成暴力破解。
离开会议后,您可以卸下模块背面的两颗螺丝,将透明塑料核心模块分离下来。您的徽章套件中包含一对替换螺丝和一个硅胶帽,用于密封从徽章载板上分离后留下的孔洞。
分离后,您可以通过 USB 将徽章插入计算机,并将其用作 2FA(FIDO2)令牌。它还支持通过扫描二维码来存储 TOTP 和明文密码。二维码由安装此浏览器扩展生成。二维码编码当前时间。由于设备没有内置电池,如果您计划使用 TOTP 功能,需要在插入设备时扫描其中一个二维码来设置当前时间。
在 https://ci.betrusted.io/releases/latest/baochip/dc34-badge/latest.zip 获取固件更新。在复制到设备之前,必须将 zip 文件解压为三个组成文件(xous.uf2、swap.uf2、loader.uf2)!
执行更新:
这最后的启动步骤是必需的,以将任何部分写入的扇区刷新到磁盘;如果未启动就关闭设备,可能会导致最后一个扇区的一部分丢失,具体取决于操作系统。