1 简介因为最近要用到这个所以简单写写。定义Attestation Key是Android Key Attestation 的信任根用来给设备TEE/StrongBox里的认证证书链做信任背书让后端服务器可信地确认这个密钥真的跑在安全硬件里不是软件模拟、不是被导出的密钥。作用其实也不难它提供证据证明某个密钥受可信的 Android 安全硬件保护并报告设备当时的安全状态。其实就相当于鉴权的时候增加了机器。后续鉴权就是用户名/密码设备标志。这里的设备标志可以是App 自己代码生成 RSA 私钥存在自己沙盒。然后生成公钥每次和鉴权信息一起发送。也可以再进一步在 KeystoreTEE生成密钥 → 私钥拿不出来同时能附带 Attestation 证书给服务器服务器信任这个签名是安全硬件发出的。目前国内的服务基本上不会需要这个Google Attestation证书就算国外也很少只有很少一部分Passkey海外银行、支付 App政府电子身份 App可能会用到。整个完整流程如下App 调用 API请求 Keystore生成一把 EC/RSA 密钥并且指定isStrongBoxBackedtrue/ 要求硬件保护、开启 attestation指令送到 TEE/StrongBox在安全硬件内部生成公私钥公钥可以正常拿出来私钥永远留在硬件里无法导出同时 TEE 用本地的 Attestation Key 签名一份证明Attestation 证书链告诉外面这把密钥确实是在我这个安全硬件里生成的属性是 XXX不可导出、需要生物认证等证书链给到 AppApp 上传给后端后端用 Google 根公钥校验这条证书链采信这份证明。所以说白了就是设备生产的时候预置一个key就行了。这个key叫做Attestation Key。只是在安卓的key还是不少比如widevine drmattestationifaasoter key。比起我以前做Linux真的是天壤之别。现在是出厂的时候要预置这个如果没有会导致CTS出错。对于一般ODM商就是看看如何写进去。整个流程就是准备安全存储环境 → 导入证明私钥及证书链 → 验证并完成预置。2 启动RPMB这一步是准备安全存储环境。高通RPMBReplay Protected Memory Block重放保护内存块是一种专用于存储敏感数据的安全存储区域通常用于存储如认证密钥、加密密钥和其他安全性相关的数据。RPMB的主要特点是其重放保护功能确保数据的完整性和安全性。一般要用trustzone或者tee访问。参考下面高通的文档大概是以下的步骤。首先版本要是userdebug版本。然后用以下命令开启。adb root adb shell qseecom_sample_client smple64 v 15 1 或者qseecom_sample_client v samp 14 1 或者qseecom_sample_client -gk -d /path/to/device_firmware这里完成RPMB之后重启。3 烧写KEYadb root adb push keybox.xml /data/ adb shell cd /data/ LD_LIBRARY_PATH/vendor/lib/hw KmInstallKeybox keybox.xml device_ID true这里的device_ID就是xml里面的device_ID搞定。。。KmInstallKeybox是高通的工具大部分操作其实都给封装了。参数是keybox.xml待导入的证明密钥和证书链文件。device_ID选择 XML 中对应的DeviceID条目不是默认填写手机序列号或 IMEI。true同时预置设备标识信息用于设备 ID 证明并非“启用 Google 认证”的开关。从开发的角度来看还是挺简单的。但是从产线的角度来看手动步骤还是比较多的。。。。不过在Android 15 开始引入RKPRemote Key Provisioning远程密钥分发。Android 16 起新设备不再烧录工厂attestation key改成上线时向 Google 实时申领 attestation 密钥不再依赖出厂固化密钥根信任体系依然是 Google 维护Android De。好吧当成历史文件看就好。。。谷歌文档https://source.android.com/docs/security/features/keystore/attestation?hlzh-cn参考Android Attestation key导入步骤Qualcomm Platform-CSDN博客Key attestation-Google的密钥认证-腾讯云开发者社区-腾讯云
阅读完成 · 觉得有帮助?