6

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 を使用できるかどうか知っていますか?

ありがとう

4

3 に答える 3

0

現在の Android バージョンには、Bouncycastle の短縮バージョンが含まれており、楕円曲線暗号は完全にはサポートされていません。

Android P が ECC アルゴリズムをサポートするかどうかはわかりませんが、現時点で最も実用的な解決策は、Android のネイティブ サポートに依存せずに、BouncyCastle パッケージを含むアプリケーションを配布することです。

于 2018-07-11T14:09:30.917 に答える