Skip to content

Security: mikelhm/Phantom

Security

docs/security.md

Phantom 安全签名校验

为什么要签名校验

由于是插件化框架,需要动态加载第三方 apk,因此,为了保证第三方 apk 软件的可信赖性,将进行对引入的第三方 apk 软件进行安全与合法检测。检测分两个方面,第一是检测第三方 apk 是否经过签名认证,第二是限定宿主程序信任的某些证书的 apk 软件。

安全签名校验

在 Phantom 框架中,想要插件 apk 能够被宿主安装,有如下三种方式:

增加插件到信任列表(推荐):

  • 插件的签名在宿主声明的可信签名列表中,宿主在安装插件时会认为该插件是安全的插件,则校验通过并安装;方法是在初始化 Phantom 服务时调用 PhantomCore.Config 中的 setCheckSignature(true) 并调用 addTrustedSignatures(...) 函数,该函数支持 String 类型可变长参数,传递插件签名时的 keystore 文件的 signature。代码如下:

    PhantomCore.getInstance().init(this, new PhantomCore.Config()
                    .setCheckSignature(true)
                    .addTrustedSignatures("A489D17B23B2861CE7344264BBF83D5F"));

插件和宿主的签名一致(推荐):

  • 推荐使用,此方法不需要配置相关内容,宿主与插件签名匹配,在企业内部多个产品时较为常用。

宿主不校验插件的签名(不推荐):

  • 此方法在安装插件时跳过签名校验步骤,在初始化 Phantom 服务时调用 PhantomCore.Config 中的 setCheckSignature(false),参数传递 false 即可,代码如下:

    PhantomCore.getInstance().init(this, new PhantomCore.Config()
                    .setCheckSignature(false));

    ***注:***不推荐使用,因为它存在一定的风险性

There aren’t any published security advisories