白盒攻击
白盒攻击者对终端具有完全控制的能力,能够观测和修改程序运行时的内部数据,包括内存信息,磁盘的读写权限等。在程序运行时就可以dump出内存中的数据,从而使运行在内存中的密钥不再安全。这种攻击环境称为白盒攻击。
像拥有最高权限的Android、iOS等设备(Root或者越狱后)的情况下就是一个白盒攻击环境。
一般常用的白盒攻击分析工具有JEB,IDA Pro,OllyDbg,VMware,Hopper等
白盒密码
白盒密码是指能够在白盒环境下抵御攻击的一种特殊的加密方法。它的目是不在运行环境中出现完整的密钥。为此,需要对密钥本身做尽量复杂的混淆,同时提供函数来处理。
白盒加密技术需要抵抗白盒攻击,核心思想是把秘钥隐藏起来, 加密执行过程中, 内存中不会出现秘钥的值.
白盒密码构造白盒密码算法有两种策略,标准密码算法白盒化和构造全新密码算法。现在通用的技术是查找表技术, 即把秘钥隐藏在查找表中。
标准密码算法白盒化,在标准密码算法安全理论的基础上和不改变原算法功能的前提下,将原有密码算法通过白盒密码技术进行设计,在白盒攻击环境下能够有效保证其密钥安全。
构造全新密码算法,新算法密码分析结果不能弱于标准密码算法同时具备抵抗白盒攻击的能力。
密码学简介
- 密码算法
用于解决复杂问题的步骤,通常称为算法(algorithm)。从明文生成密文的步骤,也就是加密的步骤,称为加密算法,而解密的步骤则称为解密算法。加密、解密的算法合在一起统称为密码算法。
- 密钥
密码算法中需要密钥(key)。根据柯克霍夫原则,密码算法是标准的,而密钥是需要保密的,因此密钥的安全对密码系统至关重要。
- 对称密码算法
通信双方共享一个密钥,用于加密任意大小的数据块或数据流的内容,包括消息、文件、加密密钥和口令。常用对称密码算法有DES、AES。
- 非对称密码算法
非对称密码又称公钥密码,加密和解密分别使用不同的密钥,即私钥和公钥。公钥密码算法多用于加密小的数据块,如加密密钥或者数字签名中使用的Hash函数值。常用公钥密码算法包括RSA、ECC。
- 密码协议
密码协议是指针对密码算法的应用。常见协议有SSL/TLS、Https。
- 其它密码技术
hash函数、MAC、数字签名、数字证书、随机数生成器。
开发人员实用密码学: https://cryptobook.nakov.com/
1.白盒密码实现
白盒密码技术从实现方式上可以分为两类:静态白盒和动态白盒。
静态白盒是指密码算法结合特定的密钥经过白盒密码技术处理后形成特定的密码算法库,称为白盒库,白盒库具备特定的密码功能(加密、解密以及加解密),并能在白盒攻击环境下有效保护原有密钥的安全。静态白盒更新密钥,需要重新生成白盒库。
动态白盒是指白盒库生成后就不需要再更新,原始密钥经过同样的白盒密码技术转化为白盒密钥。白盒密钥传入相匹配的白盒库可以进行正常的加密或解密功能。白盒密钥是安全的,攻击者不能通过分析白盒密钥得到任何关于原始密钥的信息。
2.白盒加密案例分析
常见的白盒算法有:白盒AES,白盒SMS4。
白盒SMS4的简单实现见:https://github.com/ohhoo/White-box-Cryptographic/blob/master/wbSM4_Shang/wbSM4.cpp
白盒AES的简单实现见:https://github.com/Gr1zz/WhiteBoxAES
AES算是我们日常开发中最常用一种对称加密算法了,主要由如下四个过程实现:
1.S盒字节替换 (SubBytes)
2.行移位(ShiftRows)
3.列混淆(MixColumns)
4.轮秘钥加 (AddRoundKey)
参考:安卓App安全
地址:https://www.aqniukt.com/course/9415
来源:freebuf.com 2020-09-24 21:35:56 by: secguo
请登录后发表评论
注册