白盒密钥

-Android应用的白盒加密
-Android應用的白盒加密

目的

业务执行AES对称加密算法,必然要考虑如何安全存储加密密钥key的问题,白盒密钥实现在整个加密过程中不再明文出现(非)对称密钥

图解

白盒密钥工作方式

算法支持

支持对称与非对称算法如SM4、AES、DES、3DES、RSA(看厂商支持情况),AES算法最广

实现方式

白盒的实现方式主要有三种:

  • 查找表技术
  • 插入扰乱项
  • 多变量密码

即使有了白盒的保护,密钥也并不绝对安全,白盒也面临着多种多样的攻击(BGE攻击、DFA攻击)。

应用场景

  • 移动应用客户端要保存敏感数据的场景
    涉及到账号、密码类敏感信息,要避免移动端保存,验证过程需要以安全信道发送到服务端来验证。对于一定要移动端保存的一些涉密信息,建议采用对称白盒加密的方法,集成安全SDK,白盒加密在整个运行环境中不出现加解密密钥key

  • 保护APIKey的场景
    不同服务系统之间调用API,针对AK/SK的保护可以使用白盒密钥解决
    目标:调用方存储APIKey密文,使用时在内存中解密成APIKey明文
    方式:
    ①不使用白盒密钥:配置文件中APIKey密文+AES对称密钥key—–>解密到内存得到明文APIKey
    ②使用白盒密钥: 配置文件中APIKey密文+AES白盒密钥.bin文件+白盒SDK—–>解密到内存得到明文APIKey
    白盒密钥应用在APIKey的场景
    类似《配置文件明文密码 V1.0》

AK/SK的安全

AK/SK代表用户身份的钥匙,如果将AK/SK保存在应用程序的配置文件中,有两个问题:
1、保密性——不管AK以何种形式存在于实例中,它都可能随着快照、镜像及镜像创建出来的实例被泄露
2、运维难——如果要更换AK/SK,那么需要对每个实例和镜像进行更新、再重新部署

针对保密性问题,解决方案有两种技术:加解密(Crypto)、访问控制(Access Control)
公有云技术方案:通过给ECS实例配置RAM角色来避免AK/SK泄露及运维难的问题