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 回答