KeyDroid: Android应用中安全密钥存储的大规模分析
摘要
大多数现代移动设备提供硬件支持的加密密钥、用户数据和其他敏感凭证的存储。此类硬件可保护凭证免受已入侵主操作系统(如恶意第三方应用)的攻击者的提取。自2011年起,Android应用开发者可通过Android Keystore API访问可信硬件。
在本研究中,我们进行了首次针对Android设备硬件支持密钥存储的全面调查。我们分析了490,119个Android应用,收集了关于应用开发者如何使用可信硬件(如果使用的话)的数据,并将我们的发现与每个应用收集的敏感用户数据进行了交叉引用,这些数据由开发者通过Play Store的数据安全标签自行报告。
我们发现,尽管有全行业倡议鼓励采用,但56.3%自行报告处理敏感用户数据的应用完全不使用Android的可信硬件功能,而仅5.03%收集某种形式敏感数据的应用使用了最强大的可信硬件形式,即与主处理器分离的安全元件。
为了更好地理解使用安全硬件的潜在缺点,我们进行了首次移动设备可信硬件性能的实证分析,测量了软件支持和硬件支持密钥库中常见加密操作的运行时间。我们发现,虽然使用协处理器的硬件支持密钥存储对于大多数常见加密操作是可行的,但能够防止更高级攻击的安全元件使得对称加密(具有不可忽略的有效载荷)和任何类型的非对称加密的性能变得不可行。
研究背景
Android Keystore系统自2011年引入以来,为应用开发者提供了访问设备安全硬件的标准化接口。该系统设计用于保护加密密钥免受软件攻击和某些硬件攻击。
研究方法
研究团队分析了来自Google Play Store的490,119个应用,通过静态分析和动态分析相结合的方法:
- 检查应用是否使用Android Keystore API
- 分析密钥使用模式和加密操作类型
- 与开发者自行报告的数据安全标签进行关联分析
- 性能测试涵盖不同硬件安全级别的设备
主要发现
采用率不足
尽管存在安全优势,超过一半处理敏感数据的应用(56.3%)未使用任何形式的硬件支持密钥存储。
安全级别使用差异
仅少数应用(5.03%)使用了最高安全级别的独立安全元件(Secure Element),这种元件提供最强的攻击防护能力。
性能权衡
研究首次量化了安全硬件使用的性能影响:
- 协处理器级别的硬件密钥存储对大多数操作性能影响可接受
- 独立安全元件级别的保护会导致显著的性能下降,特别是在:
- 非对称加密操作
- 大数据量的对称加密
技术细节
测试方法
性能测试覆盖了多种加密操作:
- RSA密钥生成和操作
- AES加密和解密
- ECDSA签名和验证
- 在不同payload大小下的性能表现
硬件分类
研究将Android设备的安全硬件分为三个级别:
- 软件实现的密钥库
- 基于TrustZone或类似技术的硬件支持密钥库
- 独立安全元件(SE)
安全影响
研究发现的安全实践差距表明:
- 许多应用在处理敏感数据时未能利用现有的硬件安全功能
- 开发者可能因性能考虑而避免使用最高安全级别的保护
- 需要更好的开发工具和教育来促进安全最佳实践
结论
这项研究揭示了Android生态系统在硬件支持密钥存储采用方面的重要差距。虽然硬件安全功能可用已超过十年,但大多数处理敏感数据的应用仍未充分利用这些功能。研究结果为移动安全社区提供了重要的基准数据,并强调了在安全性和性能之间需要谨慎权衡。
注:本研究基于2025年7月提交的预印本论文,相关数据和分析方法可能随最终出版版本有所调整。