逆向分析安卓移动端加密过程

      随着移动通信技术的快速发展和智能移动终端的普及,即时通信软件已经成为大多数用户生活和工作中不可或缺的一部分。由于情报部门的大规模监控行为和层出不穷的数据泄露事件,许多人使用替代解决方案来保护他们在互联网上的通信安全和隐私。所以国外很多即时通讯软件都采用了端到端加密算法。端到端加密不使用服务器加解密消息,而是在通信双方使用的终端上加密或解密消息。服务器只负责传输消息,通信服务商无法查看通信内容。

本文基于Android逆向分析技术,对广泛使用的端到端加密即时通信应用进行逆向工程,研究了端到端加密即时通信软件如何处理用户之间的消息、端到端加密流程和端到端加密算法的安全属性。论文的主要工作如下:

outputo-20210812-081924-094-ytrk.png

(1)研究Android平台下的相关知识和逆向分析技术,提出了一套逆向分析方案。该方案以原始APK文件为出发点,从APK重包装重签名技术、静态分析技术、无源代码调试技术和动态插桩技术四个角度分析Android系统的两个代码层次(Java层代码和Native层代码)。

(2)根据提出的逆向分析方案构建逆向分析系统。整个逆向系统分为三个模块:静态分析模块、动态调试模块和动态插桩模块。整个系统兼顾Java层代码和Native层代码的逆向分析,侧重于Native层代码的分析。整个逆向分析系统可以在保证数级数据,如函数运行、函数调用、寄存器内容等。,以确定与特定功能相关的函数位置和函数运行,避免分析与目标无关的代码。

(3)利用逆向分析系统分析两种常用的端到端加密即时通讯软件,分析选择的两种即时通讯软件是Signal和Xxxx,并根据逆向分析结果总结应用程序中的端到端加密过程和涉及的密钥调度。逆向分析开源软件Signal验证了逆向分析方案的可行性,从而对Xxxx进行了更有效的逆向分析。两个即时通讯软件的端到端加密过程包括四个阶段:注册阶段、会话建立阶段、不对称棘轮更新阶段和对称棘轮更新阶段。经过四个阶段的处理,即时通讯的端到端加密终于实现了。两种应用中的端到端加密算法主要包括X3DH算法和双棘轮加密算法,但算法实现细节不同。对于非对称棘轮更新阶段,Signal应用将在收到对方的非对称棘轮公钥后连续两次进行棘轮步进,第一次用于更新接收链,然后第二次用于更新发送链;Xxxx应用收到非对称棘轮的消息后,只会用非对称棘轮更新接收轮的密钥,直到消息接收方变成消息发送方才会更新发送轮的密钥。在对称棘轮更新阶段,Signal应用程序通过密钥生成链派生对称密钥来更新对称棘轮,而Xxx应用程序通过两次Salsa20流加密算法来保证消息的私密性。

分享: