Android 密钥库是如何受到保护的?

How is the Android keystore protected?

Android 如何在 4.4 及更高版本中保护密钥库?它是如何encrypt/decrypt的呢?是否有任何好的教程描述密钥库如何在设备上工作的内部结构?

密钥库的 encryption/decryption 由密钥库服务处理,该服务又与称为 "keymaster" 的硬件抽象层模块链接。 AOSP 提供软件 ("softkeymaster") 实现,但设备供应商可以提供对基于硬件的受保护存储的支持(如果可用)。在 ARM 架构上,这链接到 ARM "TrustZone"。

上层对实现完全不可知:keymaster HAL 导出方法来生成或删除密钥对、签名数据等,但实际上并不提供对任何私钥的公开。

教程明智,没有什么。但就书籍而言,有两本好书。第一个是 Nikolay Elenkov 的 "Android Security Internals"。他还写了一个名为 Android Explorations 的博客,其中(在几篇文章中)深入描述了密钥库。第二个是 Jonathan Levin 的 "Android Internals",它讨论了密钥库守护进程。