-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
类似《配置文件明文密码 V1.0》
AK/SK的安全
AK/SK代表用户身份的钥匙,如果将AK/SK保存在应用程序的配置文件中,有两个问题:
1、保密性——不管AK以何种形式存在于实例中,它都可能随着快照、镜像及镜像创建出来的实例被泄露
2、运维难——如果要更换AK/SK,那么需要对每个实例和镜像进行更新、再重新部署
针对保密性问题,解决方案有两种技术:加解密(Crypto)、访问控制(Access Control)
公有云技术方案:通过给ECS实例配置RAM角色来避免AK/SK泄露及运维难的问题
