【问题标题】:Android PrivateKey to BouncyCastle PrivateKeyInfo?Android PrivateKey 到 BouncyCastle PrivateKeyInfo?
【发布时间】:2017-03-03 09:46:25
【问题描述】:

我正在尝试使用 Bouncy/SpongyCastle 的 OAEP 编码来解码一些包装数据。但是,用于初始化 OAEPEncoding 类的 SpongyCastle API 需要 CipherParameters。就我而言,我正在尝试使用 Android PrivateKey 解包某些东西,所以我认为我需要以某种方式将密钥转换为 AsymmetricKeyParam 并将其粘贴在 OAEPEncoding.init 函数中。但是,我真的尝试搜索类似的东西,但大多数示例显示通过执行getPrivate().getEncoded() 来初始化它。但是,Android 不允许您获取原始私钥,所以我不确定如何处理这个...
编辑:我使用 BC 的 OAEP 类的原因是将 OAEP 与 SHA-256 结合使用

【问题讨论】:

  • "Android PrivateKey" 表示您正在使用 Android Keystore 生成密钥?
  • 是的,密钥在 Android 密钥库中。我可以使用常规的 Android API 将 OAEP 与 SHA-1 一起使用,但是,我无法让它与 SHA-256 一起使用,我现在正在尝试使用 BC。

标签: java android rsa bouncycastle spongycastle


【解决方案1】:

无法访问存储在 Android Keystore 中的密钥材料。您可以使用密钥,但不能提取它们。这是一个安全限制。 privateKey.getEncoded() 将始终为空,您将无法提取参数以使用 SpongyCastle 创建密钥。

查看Android Keystore 的安全功能

提取预防

使用两种安全措施保护 Android Keystore 密钥的密钥材料不被提取:

  • 密钥材料永远不会进入应用程序进程。 当应用程序使用 Android Keystore 密钥执行加密操作时,在后台将要签名或验证的明文、密文和消息馈送到系统进程,该系统进程执行加密操作。如果应用程序的进程受到威胁,他攻击者可能能够使用应用程序的密钥,但无法提取其密钥材料(例如,在 Android 设备之外使用)。

如果您想使用 OAEP,您需要自己创建和存储密钥或以 Android 为目标>=23

【讨论】:

  • 是的,我明白这一点,但我认为我的问题实际上是使用 BC API。我知道我无法获取原始密钥并且仅使用通过 PrivateKey 的引用,但没有一个 BC API 接受 Android PrivateKey。我确实使用了带有 OAEP 和 SHA-256 的 Cipher,但我得到了 javax.crypto.IllegalBlockSizeException Caused by: android.security.KeyStoreException: Unknown error,这并没有真正的帮助......
  • 我正在使用的代码:Cipher cipher = Cipher.getInstance("RSA/None/OAEPwithSHA-256andMGF1Padding"); cipher.init(keyPair.getPrivate()); return cipher.doFinal(wrapped_data); IllegalBlockSizeException 被抛出 .doFinal()
  • 这就是重点。您不能将 Android 私钥与 bouncycastle 一起使用,因为要执行加密操作,它需要访问密钥参数并且实现不允许这样做。 Android 密钥只能与 AndroidKeystore 加密提供程序一起使用
  • 啊,我明白了...有什么想法可以在使用 Android API 时解决异常问题?
  • AndroidKeystore api 应该可以工作。支持RSA/ECB/OAEPWithSHA-1AndMGF1PaddingRSA/ECB/OAEPWithSHA-256AndMGF1Padding。这是 SHA256 stackoverflow.com/a/36021145/6371459 的示例
猜你喜欢
  • 2021-03-09
  • 2019-01-29
  • 2018-06-11
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
  • 2019-07-13
相关资源
最近更新 更多