【问题标题】:Android KeyStore secure key import - getting KM_ERROR_UNKNOWN_ERRORAndroid KeyStore 安全密钥导入 - 获取 KM_ERROR_UNKNOWN_ERROR
【发布时间】:2021-08-28 17:32:56
【问题描述】:

我最近一直在围绕 Android (info here) 的 Secure Key Import 功能开发解决方案,但遇到了问题。

我按照记录的程序进行操作。在最后一步,当调用keyStore.setEntry(...) 时,我得到一个错误代码-1000,即KM_ERROR_UNKNOWN_ERROR (error codes)。我真的不知道如何从这里开始。关于问题可能出在哪里的任何想法?

一些相关代码:

// (app)    send attestation challenge request to server
// (server) generate and send challenge to the app
// (app)    use challenge to generate a PURPOSE_WRAP_KEY key pair
// (app)    get certificate and send to server
// (server) do wrap operations and return a blob (ASN.1 sequence as required in docs)
// (app) code below

byte[] wrappedKeySequence = response.body().getSequenceAsBytes();
AlgorithmParameterSpec spec = new KeyGenParameterSpec.Builder(WRAP_KEY_ALIAS, KeyProperties.PURPOSE_WRAP_KEY)
                .setDigests(KeyProperties.DIGEST_SHA256)
                .build();
KeyStore.Entry wrappedKeyEntry = new WrappedKeyEntry(wrappedKeySequence, WRAP_KEY_ALIAS, WRAP_ALGORITHM, spec);
String keyAlias = "SECRET_KEY";
keyStore.setEntry(keyAlias, wrappedKeyEntry, null);

更多随机细节:

  • 我正在尝试导入 AES128 密钥
  • 它将仅用于加密数据
  • 根据文档的要求定位 API 28 及更高版本

再次感谢任何帮助。

谢谢, G.

【问题讨论】:

    标签: android security import cryptography keystore


    【解决方案1】:

    更新:

    我已经找到了这个特定错误的原因,但又遇到了另一个错误。

    也就是说,我使用了定义MIN_SECONDS_BETWEEN_OPS的标签403。它在types.hal 文件中,人们希望它在任何地方都可以实现/有效,但似乎情况并非如此。但是,我只在一部三星手机上进行测试,因此它可能由其他制造商实施,甚至在其他三星手机上实现。

    无论如何,下一个错误是 INVALID_ARGUMENT (-38),不像名字所暗示的那样,它和这个一样神秘。文档说它应该发生在 RSA 的东西上(我正在尝试导入 AES 密钥),所以传奇继续。

    如果我发现任何其他内容,我会更新此答案。

    更新 2: 关于 INVALID_ARGUMENT 错误,我没有任何好消息。即使我执行未经编辑的 CTS 测试代码,它应该可以工作,因为制造商在出厂前使用 CTS 测试来验证设备是否工作。

    目前我已经暂停了该功能的工作,如果我再次使用它,我会根据需要进行更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-20
      • 2010-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-12
      • 2017-06-01
      • 2020-04-17
      相关资源
      最近更新 更多