Raspberry Pi RP2350 破解挑战:提取受安全启动和 OTP 锁定保护的 128 位 OTP 密钥,附带适用于 Pico 2 开发板的安装脚本和固件。
欢迎参加 Raspberry Pi RP2350 黑客挑战赛和漏洞赏金计划!
恭喜4位获奖者!在这里了解他们的全部信息。
衷心感谢 Thomas Roth 和 Hextree.io 团队在2024年帮助我们开发和启动这项挑战!
RP2350 黑客挑战赛已结束。
我们收到了许多精彩的提交!我们将在2025年1月14日公布获奖者并发布详细信息。
目前尚未收到任何破解报告。
我们将奖金翻倍至 $20,000!
我们延长了挑战赛的期限,现在截止到2024年12月31日午夜(英国时间)
目标很简单:找到一种攻击方法,能够导出隐藏在 OTP ROW 0xc08 中的秘密——该秘密为128位长,受 OTP_DATA_PAGE48_LOCK1 和 RP2350 安全启动的保护!
如果你认为自己找到了破解方法,请发送邮件至 [email protected] 并提供详细信息——我们将寄给你一块 Pico2,其中隐藏了一个自定义秘密。如果你能成功提取它,就能赢得 $20,000!
祝你好运!
对于本次挑战,我们将对你的 RP2350 进行以下永久性且不可逆的更改:
crit1.secure_boot_enable 启用安全启动(但使用公钥)crit1.debug_disable 禁用调试ec_private_key.pem 和 ec_public_key.pem。如果你想生成自己的密钥,可以运行 keygen.sh 使用 openSSL 生成新密钥。./write_otp_secret.sh——这是不可逆的,因为我们无法“擦除”OTP。./read_otp_secret.sh 来检查写入是否成功mkdir buildcd buildcmake -DPICO_PLATFORM=rp2350 -DPICO_BOARD=pico2 ..makecd ..enable_secureboot.sh 在芯片上启用安全启动(这将不可逆地启用安全启动!请确保备份你的密钥!)
lock_chip.sh调试版本展示了如何读取你需要提取的 OTP 秘密,同时还提供了一些关于芯片内部运行情况的调试输出。
由于 printf 等输出可能容易受到故障注入攻击,我们在安全版本中禁用了它们。
我们的“黄金”挑战 Pico 2 将运行安全版本的固件,二进制文件被复制到 RAM 中。
参与本次挑战即表示你将在设备上永久启用安全启动。
你将来想要安装的任何固件都需要自行签名。你可以通过简单地将以下内容添加到 CMakeLists.txt(需要放在 pico_add_extra_outputs 之上)并将 ec_private_key.pem 复制到你的源目录来为其他项目启用签名。
# Signing and hashing
pico_sign_binary(project_name ${CMAKE_CURRENT_SOURCE_DIR}/ec_private_key.pem)
pico_hash_binary(project_name)
pico_set_otp_key_output_file(project_name ${CMAKE_CURRENT_LIST_DIR}/otp.json)
请参阅此处了解本次挑战的条款、条件和规则。
rp2350_hacking_challenge_debug_version.uf2 或 rp2350_hacking_challenge_secure_version.uf2