ProtocolBuffer还有一个非常重要的优点就是可以保证同一消息报文新旧版本之间的兼容性。它独立于语言,独立于平台。由于它是一种二进制的格式,比使用xml进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换,作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域,属于开源项目。 3微信通信系统登录验证程序和通信程序 3.1移动端微信通信登录验证流程 移动端微信登录验证(初始化)流程。 1)移动客户端产生一个登录包(包括用户账号、密码、MD5加密信息、随机AES密钥)并使用RSA公钥加密登录包,然后将登录包发送到服务器。 2)服务器接收密文登录包,使用RSA私钥进行解密,获取登录包中的用户账号、密码、MD5加密信息、随机AES密钥等信息。 3)服务器对用户账号密码进行校验,确认用户身份后产生一个验证包,并使用AES密钥加密成验证包密文并发送给客户端。 4)客户端接收验证包密文后,使用AES密钥进行解密,获取验证信息。之后的通信内容均使用AES密钥进行加密通信。 具体流程如图3所示。 从流程图里可以看出,随机AES密钥(每次生成的密钥都是随机的没有规律可言)是由客户端随机生成包含在RSA加密的登录包里面,也就是说RSA私钥在整个通信服务里无法获取,RSA解密无法进行的情况下,就无法获取随机AES密钥,无法获取随机AES密钥也就无法解密服务器返回验证包密文,微信的通信流程环环相扣,普通手段除非暴力破解AES密钥否则无法获取通信内容。 3.2移动端微信通信交互流程 根据上面登录过程,客户端解密验证包后,会从验证包里得到一个从服务器计算出来的一个随机的AES密钥,以后的通信过程都是通过这个随机的AES密钥进行加解密通信。 微信的通信传输(文字聊天、语音等数据)全部是基于随机AES密钥,换句话来说,掌握了这个随机AES密钥就能够获取其通信内容。 具体通信交互流程如图4所示。 从流程图可以看出,微信的通信保密性很大程度依赖于随机AES密钥的不可破解性,但是从另一方面来说,只要获取了这个随机AES的密钥,微信的通信信息的保密性就会大大降低。 4结束语 本文详细分析了微信社交软件的加密方式和通信协议,提出能截获基于RSA加密和随机AES密钥加密方式的微信通信内容的一种方法,此方法可广泛应用于截获主流移动社交软件的通信内容,对通信保密方向的研究具有实践意义。 参考文献 [1]阳春华.RSA算法中几种可能泄密的参数选择[J].计算机工程2006年16期(10). [2]瞿白.RSA算法参数的选择[J].科技咨讯,2010年28期(10). [3]胡军.RSA加密算法的研究与实现[D].安徽工业大学,2011(12). [4]张月华,张新贺,刘鸿雁.AES算法优化及其在ARM上的实现[J].计算机应用,2011年06期(10). [5]赵雪梅.AES加密算法的实现及应用[J].现代经济信息,2009期23期(10). |
核心期刊网(www.hexinqk.com)秉承“诚以为基,信以为本”的宗旨,为广大学者老师提供投稿辅导、写作指导、核心期刊推荐等服务。 核心期刊网专业期刊发表机构,为学术研究工作者解决北大核心、CSSCI核心、统计源核心、EI核心等投稿辅导咨询与写作指导的问题。 投稿辅导咨询电话:18915033935 投稿辅导客服QQ: 投稿辅导投稿邮箱:1003158336@qq.com |