1.行业背景:
移动互联网时代,金融、电商、游戏等行业的 App 每天都在网络上传送敏感数据(登录凭证、支付信息、业务数据)。为保障传输安全,业内普遍采用混合加密方案:用 RSA 非对称加密安全传递 AES 对称密钥,再用 AES 高效加密业务数据。这套方案已成为 iOS 客户端通信安全的行业标准实践。
2.业务背景
本 Demo 模拟了一个真实业务场景:OS 客户端将用户消息加密后发送到服务器,服务器解密读取。
2.1 客户端:采用业界标准的 RSA + AES 混合加密。每次请求生成随机的 16 字节 AES session key 和随机 IV,AES-128-CBC + PKCS7 加密业务数据;用 2048 位 RSA 公钥以 OAEP-SHA256 加密 session key;按自定义二进制协议组包(2 字节大端长度前缀 + 加密 key + IV + 密文)后经 HTTP 发送
2.2 服务端(Python / Flask):用 RSA 私钥解密出 session key,再用 AES 解密出明文,全流程输出 hex 级日志,与客户端逐一比对,验证加密链路一致性
逆向侧(Frida):对 libcommonCrypto.dylib 的 CCCrypt 导出符号进行动态插桩,实时捕获加密调用中的密钥、IV、明文输入与密文输出,验证"密文在传输层不可读、但在进程内可还原"的安全边界。
2.3 开发过程中还原并解决了真实项目常见问题:padding 不匹配、字节序(大端/小端)不一致、密钥长度校验、协议字段边界错位等。
1. 混合加密通信(客户端)
AES-128-CBC + 随机 IV + PKCS7 加密业务数据,规避 ECB 模式风险;RSA-2048 OAEP-SHA256 加密每次独立生成的会话密钥,历史密钥泄露不影响后续通信;自定义二进制协议(2 字节大端长度前缀 + 加密 key + IV + 密文),HTTP POST 发送。
2. 密钥内存防护(客户端)
双熵源随机数(/dev/urandom 与 CCRandomGenerateBytes`异或),hook 单一源只能拿到一半比特;16 字节密钥拆为 4 个独立分片分散存放,内存扫描无法拼出完整密钥;完整密钥仅在加密调用瞬间于栈上临时拼装,调用后立即清零。
3. 服务端解密(Python / Flask)
RSA 私钥解密 session key → AES 解密 → 去填充 → 还原明文,全流程逐字段打印 hex 日志;含最小长度、key 长度范围、密文对齐等校验;私钥经环境变量或本地文件加载,不写入代码,*.pem 已加入 .gitignore。
4. 动态逆向分析(Frida)
Hook libcommonCrypto.dylib的CCCrypt,捕获全部 11 个参数(操作类型、算法、模式、密钥、IV、明文输入、密文输出),hex + ASCII 双格式输出;含空指针、异常长度等防御;支持 attach 与 spawn 两种注入方式。
本项目为单人开发的小型demo,核心是一条从客户端加密、网络传输、服务端解密到动态逆向的完整加密链路。
客户端使用 Objective-C 实现混合加密。每次请求通过双熵源随机数(/dev/urandom 与 CCRandomGenerateBytes 异或混合)生成 16 字节 AES 会话密钥,并拆分为四个独立分片分散存储,仅在加密调用瞬间于栈上临时拼装、用后立即清零,从内存层面提高密钥被动态抓取的难度。加密采用 AES-128-CBC 加随机 IV 和 PKCS7 填充,会话密钥再经 RSA-2048 公钥以 OAEP-SHA256 加密,最终按"2 字节大端长度前缀 + 加密密钥 + IV + 密文"的二进制协议组包,通过 HTTP POST 发送给服务器。
服务端基于 Python Flask 实现。私钥通过环境变量或本地文件加载,不写入代码。收到请求后先校验数据长度与字段范围,再读取长度前缀、切分协议段,用 RSA 私钥解密出会话密钥,进而完成 AES 解密、去填充和 UTF-8 解码,全程逐字段打印十六进制日志,与客户端参数一一对照。
逆向侧使用 Frida 动态插桩。脚本先枚举进程模块定位 libcommonCrypto.dylib,再通过导出符号表找到 CCCrypt 函数地址并注入拦截,实时捕获操作类型、算法、模式、密钥、IV、明文输入与密文输出,以十六进制和 ASCII 双格式输出。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论