CCF IVC智能汽车——Digital Key UWB SQLite题解
一、题目
某车型数字钥匙系统支持 BLE 唤醒和 UWB 测距。安全团队导出了一份车端数字钥匙取证日志,怀疑签名模块在某些认证会话中复用了随机数。请分析日志,恢复受保护的车端取证结果。
用DB Browser查看SQLite:
| 表名 | 作用 |
|---|---|
| auth_signatures | 数字钥匙认证过程里的签名记录 |
| protected_vehicle_blob | 加密后的车端取证结果 |
| meta | 车辆基本信息(VIN、车型)、公钥曲线 |
| ble_advertisements | BLW蓝牙唤醒日志 |
| uwb_ranging | UWB测距日志 |
二、思路
Meta
meta给出了公钥曲线的参数,且提示Two successful auth signatures share the same nonce_tag. In ECDSA this is fatal.说两条签名用了同一个随机数k
| public_key_curve | secp256r1 |
|---|---|
| public_key_x | 16aaeee15966846319a785c529d07407aa05287b1d1a0581d7ab23edcf9a0e41 |
| public_key_y | 26ce7aa4f29c0448e4220b287da05f195549d54f59e290b98b5fa3036733762c |
auth_signatures
给了两组(z,r,s),其中两条r是相同的,且题目告知k也是相同的
由ECDSA签名公式:$s=k^{-1}(z+r*d) \pmod n$
则:$s_1-s_2=k^{-1}(z_1-z_2) \Rightarrow k=(z_1-z_2)(s_1-s_2)^{-1} \pmod n$
然后:$d=(s_1k-z_1)r^{-1} \pmod n$即可恢复私钥
protected_vehicle_blob
| key_hint | sha256(recovered_ecdsa_private_key_32bytes_big_endian)[:16] |
|---|---|
| alg | SM4-CBC-PKCS7 |
| iv_hex | 20260729000102030405060708090a0b |
| ciphertext_b64 | VpQQ28WTcnOzLz4oZbJ2K+n45+lXynIcBOmIH61oAIbY3RkimUPcp7gtwXl6yLnhZWSBswbDYrdBRK5pPyc3tXEr204LX7dHx9YzRmw0QkZBky9jultrztbZNUeYBEW4ZJhX1ze+3eqQbTfLmOt6kHGGeY7IM6ccxFRJ2fhKkpY= |
用私钥d派生出SM4解密密钥,后再用SM4-CBC解密即可
三、解答
1 | import zipfile |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Lamb!