Com*_*are 13 android android-keystore
Android 6.0+有一个KeyInfo类来获取保存在密钥中的密钥的信息AndroidKeyStore.在KeyInfo课堂上,我们拥有isInsideSecureHardware()和isUserAuthenticationRequirementEnforcedBySecureHardware()方法.我们也有isUserAuthenticationRequired().该文件,像往常一样,很烂.
基于方法名和(有限)的文件,它会看起来好像isUserAuthenticationRequirementEnforcedBySecureHardware()是一个简单的逻辑和
isInsideSecureHardware()和isUserAuthenticationRequired().
还有什么比这更重要的吗?如果是这样,除了安全硬件中的密钥之外,安全硬件强制执行用户身份验证要求意味着什么?
该方法isUserAuthenticationRequirementEnforcedBySecureHardware()不是 和 的逻辑isInsideSecureHardware()与isUserAuthenticationRequired()。
但如果你深入研究代码,你会发现它是三件事的逻辑与:
代码片段:
boolean userAuthenticationRequirementEnforcedBySecureHardware = (userAuthenticationRequired)
&& (keymasterHwEnforcedUserAuthenticators != 0)
&& (keymasterSwEnforcedUserAuthenticators == 0);
Run Code Online (Sandbox Code Playgroud)
区别不在于密钥在硬件中是否安全,而在于用户身份验证是否由硬件而不是软件支持。对于大多数(如果不是所有)带有指纹读取器的设备来说,安全硬件中的用户身份验证意味着 TEE 将包含与 Keymaster 可信应用程序交互的两个内容:
示例场景:
isUserAuthenticationRequirementEnforcedBySecureHardware()如果 和 都返回true,则可能返回false,但用户身份验证是在 SW 中完成的,而不是在 TEE 中完成的。(不见得)isInsideSecureHardware()isUserAuthenticationRequired()isUserAuthenticationRequirementEnforcedBySecureHardware()如果 返回falseisInsideSecureHardware()(设备的安全硬件不支持密钥),则可以返回true,并且isUserAuthenticationRequired()在硬件中完成用户身份验证时返回 true。(可能的)| 归档时间: |
|
| 查看次数: |
1118 次 |
| 最近记录: |