【问题标题】:Transfer PrivateKey from KeyStore, use in OpenSSL with JNI从 KeyStore 传输 PrivateKey,在 OpenSSL 和 JNI 中使用
【发布时间】:2016-09-28 00:30:55
【问题描述】:

我有使用 WebRTC 的 Android 应用程序。一切都很完美。但现在,主要问题是加密。

为了进行呼叫和传输数据,WebRTC 会为每个呼叫创建并使用一个 KeyPair。但我想使用来自AndroidKeyStore 的自定义KeyPair。对于这个问题,我需要将自己的KeyPair 发送到 OpenSSL 共享对象才能工作。

修复将在 NATIVE OpenSSL 代码中进行,其中 WebRTC 正在使用此函数 (opensslidnetity.cc) 获取用于加密数据的 OpenSSL 上下文:

bool OpenSSLIdentity::ConfigureIdentity
{
    ...
}

如何将 PK 从 AndroidKeyStore 转移到 WebRTC 原生代码? 另一种情况,WebRTC 加密的自定义 PK 是如何工作的?


AndroidKeyStore

在 Java 中,我可以打开 KeyStore (AndroidKeyStore) 并获取公钥 - 准备好传输(具有方法的密钥字节 - getEncoded())。我也可以获得加密数据的私钥,但我不能以字节为单位发送这个密钥,因为getEncoded() 返回 null。在这种情况下,我想,我可以得到PublicKeyPrivateKey 并将它们保存在字节数组中。之后,在本机代码中调用准备好的方法。


更新:在 google.source.chromium 中有类似的内容。他们从 Android KeyStore 获取密钥并在本机代码中创建 OpenSSL 上下文的位置。用于获取和使用用于 TLS 的 AndroidKeyStore 的本机类 - Link 1Link 2

【问题讨论】:

  • 我认为亚历克斯是对的。但是,您可以使用反射做很多有趣的事情。
  • 我不这么认为,因为它是加密工作的,并且基于native的java实现......如果有反射它会那么容易,没有保护......
  • 请确保我对标题的编辑是正确的。我虽然您使用的是 Java,然后通过 JNI 调用 OpenSSL(或其他共享对象)。但听起来我错了。
  • 没关系,感谢您的有用编辑..

标签: java android encryption openssl


【解决方案1】:

Android Keystore 不会根据设计公开私钥或秘密密钥的密钥材料(请参阅https://developer.android.com/training/articles/keystore.html)。你的选择是:

  • 将 Android Keystore PrivateKey + Signature 或 Cipher 显示为 OpenSSL EVP_PKEY。

  • 不要使用 Android 密钥库。与将私钥存储在进程中相比,您可能不需要它提供的额外保护?

【讨论】:

  • 2) 不要使用 Android Keystore - 我需要 AndroidKeyStore,但我知道,这不是最佳解决方案。
  • 1) 提供 Android Keystore PrivateKey - 也许这是我的选择。但是怎么做呢?问题我只有 Alias 和 KeyStore,没有密码或签名...
  • 您可以使用 KeyStore ks = KeyStore.getInstance("AndroidKeyStore"); 从 Android Keystore 获取 PrivateKey 实例ks.init(null); PrivateKey key = (PrivateKey) ks.getKey(alias, null);
  • 我现在如何在 Android 中获取 PrivateKey。我的意思是,现在如何将此密钥发送到本机 OpenSSL 代码!
  • 有关方法,请参阅 Android 的默认 TLS 堆栈(由 BoringSSL 支持)如何使用任意 PrivateKey 实例。请参阅android.googlesource.com/platform/external/conscrypt/+/master/… 使用的android.googlesource.com/platform/external/conscrypt/+/master/…
猜你喜欢
  • 2018-12-09
  • 2013-12-06
  • 1970-01-01
  • 2015-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多