ECC 暗号化を使用した Android アプリの開発を開始しています。Android にはいくつかの暗号化 ( https://developer.android.com/guide/topics/security/cryptographyで定義) が埋め込まれていることがわかりましたが、サポートされているアルゴリズムのパラメーターまたはサポートされている Android API バージョンに関して制限されています。たとえば、「EC」パラメーター (別名楕円曲線暗号) は、非常に制限的な Android API バージョン 26+ (= Android 8.0 以降) の AlgorithmParameters クラスでのみサポートされます。
これまでの解決策は、「Bouncy Castle」などの JCE プロバイダーを使用することでした。ただし、https: //android-developers.googleblog.com/2018/03/cryptography-changes-in-android-p.html で、将来の Android P では非推奨になることがわかりました。Android P は暗号化を使用します。 Conscrypt で利用可能な機能 (boringSSL に基づく)。
アプリケーションを現在の Android バージョン (>= API 21 まで) で動作させたいのですが、Android P でも動作させたいので、どの JCE プロバイダーを使用すればよいですか?
Android API バージョン 24 (= Android 7.0) を実行している Samsung Galaxy S7 でConscryptを使用しようとしましたが、セキュリティ プロバイダーとしてマウントするとクラッシュします。私の MainActivity.java クラスでは、次のものを使用しました。
static {
try {
Security.insertProviderAt(Conscrypt.newProvider(), 1);
} catch (NoClassDefFoundError e) {
e.printStackTrace();
}
}
次のクラッシュが発生します。
java.lang.UnsatisfiedLinkError: java.lang.String[] org.conscrypt.NativeCrypto.get_cipher_names(java.lang.String) の実装が見つかりません (Java_org_conscrypt_NativeCrypto_get_1cipher_1names と Java_org_conscrypt_NativeCrypto_get_1cipher_1names__Ljava_lang_String_2 を試しました)
現在の Android API バージョンで Conscript を使用できるかどうか知っていますか?
ありがとう