isInsideSecureHardware()和isUserAuthenticationRequirementEnforcedBySecureHardware()有什么区别?

时间:2018-01-29 23:39:43

标签: android android-keystore

Android 6.0+有一个KeyInfo课程,可获取AndroidKeyStore中保存的密钥的相关信息。在KeyInfo课程中,我们有isInsideSecureHardware()isUserAuthenticationRequirementEnforcedBySecureHardware()方法。我们还有isUserAuthenticationRequired()。像往常一样,documentation很糟糕。

基于方法名称和(有限的)文档,似乎isUserAuthenticationRequirementEnforcedBySecureHardware()只是一个逻辑AND isInsideSecureHardware()isUserAuthenticationRequired()

还有什么比这更重要的吗?如果是这样,除了安全硬件中的密钥之外,安全硬件强制执行用户身份验证要求意味着什么?

3 个答案:

答案 0 :(得分:2)

方法isUserAuthenticationRequirementEnforcedBySecureHardware()不是isInsideSecureHardware()isUserAuthenticationRequired()的逻辑与。

但是,如果您深入研究code,您会发现它是3件事的逻辑与:

  1. isUserAuthenticationRequired()
  2. 0个SW强制用户身份验证器
  3. 1个或更多HW强制用户身份验证器

代码段:

boolean userAuthenticationRequirementEnforcedBySecureHardware = (userAuthenticationRequired)
                && (keymasterHwEnforcedUserAuthenticators != 0)
                && (keymasterSwEnforcedUserAuthenticators == 0);

区别不在于密钥在硬件中是否安全,而是用户认证是由硬件而不是软件来支持的。对于大多数(如果不是全部)具有指纹读取器的设备,安全硬件中的用户身份验证意味着TEE将包含与Keymaster Trusted App交互的两件事:

  1. Gatekeeper密码/密码/图案可信软件
  2. Fingerprint可信应用程序,用于指纹认证

示例方案:

    如果isUserAuthenticationRequirementEnforcedBySecureHardware()isInsideSecureHardware()都返回true,则
  • isUserAuthenticationRequired()可能返回 false ,但是用户身份验证是在SW中完成的,而不是在TEE中完成的。 (不太可能)
  • 如果isUserAuthenticationRequirementEnforcedBySecureHardware()返回false(设备的安全硬件不支持密钥),并且isInsideSecureHardware()返回true,则
  • isUserAuthenticationRequired()可能返回 true 硬件(可能)

答案 1 :(得分:1)

  

isUserAuthenticationRequirementEnforcedBySecureHardware()只是isInsideSecureHardware()和isUserAuthenticationRequired()的逻辑AND。

我认为这不是真的(请参阅下面的方法)来自key的{​​{1}}。

  

还有什么比这更重要的吗?

KeyInfo.java 是来自KeyChain的{​​{1}}信息的容器类。 key是否绑定到安全硬件只知道一次导入了KeyChain

要了解,请使用:

key

来自KeyInfo.java

key

另见:  KeyStore.java

答案 2 :(得分:1)

  

isUserAuthenticationRequirementEnforcedBySecureHardware()就是一个   逻辑AND isInsideSecureHardware()和   isUserAuthenticationRequired()。

从给定的文档中,isUserAuthenticationRequirementEnforcedBySecureHardware方法不能是上述两种方法的逻辑AND。

出于观察目的,您可以考虑link这个问题,答案和评论。