0

アプリケーションに、実行時にアプリケーション証明書を取得し、それをキーとして使用して機密情報を暗号化するコードがあります。

一部の攻撃者がbyte[]私のコードを逆コンパイルしてその証明書を取得することは可能ですか、それともその証明書は私のアプリケーションにのみ表示されますか?

証明書を取得する方法は次のとおりです。

    PackageManager pm = this.getPackageManager();
    String packageName = this.getPackageName();
    int field = PackageManager.GET_SIGNATURES;
    PackageInfo packageInfo;

    packageInfo = pm.getPackageInfo(packageName, field);

    Signature[] signatures = packageInfo.signatures;

    // and here we have the DER encoded X.509 certificate
    byte[] certificate = signatures[0].toByteArray()
4

2 に答える 2

2

PackageInfo署名は公開鍵であり、

秘密鍵ではありません。そして、このキーは、携帯電話にインストールされているすべてのアプリからアクセスできます。

于 2012-08-17T17:09:05.793 に答える
2

アプリケーション証明書は公開されています。アプリの署名に使用される秘密鍵は、(あなたがそれを手放さない限り)あなたの所有物を決して離れることはありません。秘密鍵を公開鍵から再構築することはできません。彼らがあなたの機密情報を解読できる唯一の方法は、ある種のブルートフォース攻撃によるものであり、それに対する防御は最終的にはありません。あなたにとって幸いなことに、そのようなブルー​​トフォースの試みを実行する費用は非常に大きいので、核の秘密などが内部にあると思わない限り、正しい心の誰もそれを試みません。

于 2012-08-17T17:09:41.267 に答える