基于QQ聊天平台的安全通信研究本科毕业论文

上传人:aa****6 文档编号:29218239 上传时间:2018-01-22 格式:DOC 页数:15 大小:81KB
返回 下载 相关 举报
基于QQ聊天平台的安全通信研究本科毕业论文_第1页
第1页 / 共15页
基于QQ聊天平台的安全通信研究本科毕业论文_第2页
第2页 / 共15页
基于QQ聊天平台的安全通信研究本科毕业论文_第3页
第3页 / 共15页
基于QQ聊天平台的安全通信研究本科毕业论文_第4页
第4页 / 共15页
基于QQ聊天平台的安全通信研究本科毕业论文_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《基于QQ聊天平台的安全通信研究本科毕业论文》由会员分享,可在线阅读,更多相关《基于QQ聊天平台的安全通信研究本科毕业论文(15页珍藏版)》请在金锄头文库上搜索。

1、1基于 QQ聊天平台的安全通信研究摘 要:QQ 是中国使用最广泛的即时通信工具,其安全性对于用户安全和网络安全具有重要影响。QQ 账号被盗后,其危害和影响是可怕的,用户丢失的大量好友资料和联系方式在短时间内是很难完全找回的。本文将通过对 QQ 登陆协议的分析性研究,分析其安全性,指出其中存在的安全漏洞,并说明 QQ因此可能遭受的攻击,并对此提出改进意见,增强 QQ 通信的安全性!另外,本文也对 QQ 盗号也作了相应的研究,并提出了防范的方法。关键词:QQ;登录协议;安全漏洞;改进意见Secure communication based on QQ chat platformSchool of

2、Mathmatics and Computer ScienceAbstract: QQ is the most widely used instant communication tools in China, Its safety has important influence to user security and network security. QQ account stolen, The harm and influence is terrible, User data lost a lot of friends and contact way in a short period

3、 of time is difficult to completely recovered. This article through to the analysis of the landing of QQ protocol, Analysis of the security, Pointed out the existence of security vulnerabilities, and Indicating the QQ so vulnerable to attack, And proposed improvements, Strengthen the QQ communicatio

4、n security. In addition, This article has also made the corresponding research, handing over to QQ,And put forward the prevention methods.Keywords: QQ; Login agreement; Security vulnerabilities; Improvements2第 1章 QQ 登录协议QQ 的登陆协议是腾讯自己开发的一套基于二进制数据的应用层网络协议,QQ 登陆协议采用了固定的格式,客户端与服务器发送的报文格式上仅有一点点区别。协议用到的对称

5、加密算法为反馈随机交织填充的 TEA(Tiny Encryption Algorithm,一种分组加密算法)变形加密算法,记作 QQTEA ;用到的哈希函数为 MD5。QQ 登录分为 UDP 和 TCP 登录,还支持代理登录。大部分情况下使用 UDP 登录。 UDP 登录端口服务器为 8000,本地端口一般是从4000 开始选择,如果该端口已经被占用,则加 1 再测试,一直测试到一个没有被占用的端口。TCP 登录服务器一般是 443 端口,本地端口选择方式和 UDP 一样。登录方式可以在登录设置里自由设置,但是无论哪种方式登录,其登录流程和数据包格式都是一样。QQ 登陆主要分成下面 6 个步骤

6、:(1)Touch 包这个数据包是 QQ 客户端登录时发送的第一个包,它的作用在于测试远程服务器是否能够正常响应(2)获取验证码由于部分 QQ 号码可能存在异地登录的情况,或因 QQ 号码被盗发送大量的垃圾信息,或使用了挂机软件或者挂机网站挂机,腾讯服务器检验到这些非正常的 QQ 使用情况时便会要求输入验证码3(3)密码验证这个数据包的作用是将本地 QQ 的密码发送给服务器端进行验证。(4)验证令牌(Token )1这个数据包主要用于校验前几个数据包的 Token 数据,如果通过验证,服务器端会返回本次登录的时间和 IP 地址等相关信息。(5)验证令牌(Token )2(6)获取会话密钥这个数

7、据包是 QQ 登录流程的最后一个数据包,主要用于向 QQ 客户端返回会话密钥(Session Key) ,该会话密钥由服务器端生成。各步骤登录指令分别为 :0x0825、 0x0826、0x0826、0x0826、0x0826、0x0828。4图 QQ 登录协议相关符号说明: RKey: 用来表示随机生成的 16 字节长度的密钥。En(Key,P):表示使用密钥 Key 对明文 P 加密,这里是指 QQTEA 加密。Datai:表示尚不清楚具体意义的数据。 (i 取正整数)Keyi:表示 16 字节长度的密钥。 (i=0,1,2,3,4)MD5:它是一种哈希函数。客户端 服务器端RKey, E

8、n(RKey,Data0)RKey,En(RKey,En(M2P,Key0)En(Key1,Data4)En(Key1,Data5)RKey, En(RKey,Data2)En(Key1,Data7) En(Key3,SessionKey)En(RKey,Data1)En(RKey,Data3)En(Key0,Key1,Key2)En(Key2,Key2,Key3)En(Key4,Data6)5M2P:Md5(Md5(QQPassword)。 QQPassword:QQ 密码SessionKey:会话密钥。第 2章 QQ 登录协议的安全性2.1 TEA简介TEA 算法是由剑桥大学计算机实验室的

9、 David Wheeler 和 Roger Needham 于 1994 年发明。 TEA 是 Tiny Encryption Algorithm 的缩写。特点是加密速度极快,高速高效,但是抗差分攻击能力差。TEA 加密算法是一种分组密码算法,其明文密文块 64 比特( 8 字节) ,密钥长度 128 比特(16 字节) 。TEA 加密算法的迭代次数可以改变,建议的迭代次数为 32 轮,两个 TEA Feistel 周期算为一轮。TEA 算法被广泛应用于 QQ 的数据加密中,QQ 采用 16 轮的 TEA 算法加密,在这时采取 16 轮加密而不采取标准的 32 轮加密为了减少验证服务器的压力

10、。QQ 在数据加密前采用了密码学中的常用的填充及交织技术,减少加密数据的相关性,增加破译者的破解难度。TEA 算法代码如下:void qq_encipher(unsigned long *const plain, const unsigned long *const key, unsigned long *const crypt)/参数为 8 字节的明文输入和 16 字节的密钥,输出 8 字节密文unsigned long left = plain0,right = plain1,a = key0, b = key1,c = key2, d = key3,n = 32, sum = 0,del

11、ta = 0x9E3779b9;/ 明文输入被分为左右两部分,密钥分为四部分存入寄存器,n 表示加密轮数推荐 32。delta 是一个常数。while (n- 0) sum += delta;left += (right 5) + b);6right += (left 5) + d);crypt0 = left ;crypt1 = right ;void decrypt(unsigned long *v, unsigned long *k) /解密过程unsigned long y=v0, z=v1, sum=0xC6EF3720, i;unsigned long delta=0x9e3779

12、b9; /delta 黄金分割率。它的作用是使得每轮的加密不同。初始化为 0x9e3779b9unsigned long a=k0, b=k1, c=k2, d=k3;for(i=0; i5) + d);y -= (z5) + b);sum -= delta; /*结束循环*/v0=y;v1=z;2.2 QQTEA算法在本文第一章中提到,协议用到的对称加密算法为反馈随机交织填充的TEA( Tiny Encryption Algorithm,一种分组加密算法)变形加密算法,记作QQTEA。那么这里将主要介绍填充、交织和反馈这三点,如果大家对 TEA 算法的加密过程感兴趣,可参考相关文献1。(1)

13、填充算法为了适用 TEA 算法,需要使得明文的字节数是 8 的倍数。如果明文本身的长度不是 8 的倍数,那么还要进行填充以使其成为 8 的倍数。以字节为单位,令 N=原始字符串+10+填充字节数 n,则 N 应该是 8 的倍数。具体的填充方法:第一个字节为:(random()&0xf8)|n,随后填充(n+2)个字节 random()&0xff ,后面接原始数据,最后填充 7 个字节 0x00 。因为使用了不同的随机数,所以填充的结果使得即使对于相同的明文,密文的结果也会不同。7如图: 1Byte 填充长度(n)+2 明文长度 7Byte随机数 填充长度 随机数 明文 0x00random()

14、&0xf8 n random()&0xf83Byte填充长度(n)=8- (明文长度+2)%8)(2)交织算法消息被分为多个加密单元,每一个加密单元都是 8 字节,使用 TEA 进行加密,加密结果与下一个加密单元做异或运算后再作为待加密的明文。(3)反馈加密因为 TEA 是分组加密算法,所以需要将明文分块。 plaini表示明文的第 i个分组,cryptedi表示密文的第 i 个分组,所有分组加密使用的密钥是相同的,设为 key。具体的反馈加密过程如下图所示:plainicryptedi-1TEAplaini-1cryptedi当 i=1 时,cryptedi = E(key, plaini)

15、;当 i1 时,cryptedi = plaini-1 xor E(key, plaini xor cryptedi-1)。key8在参考文献1中提到要验证一个密钥是否是正确的,那么只需要取明文和密文的最后 16Byte(也就是两个分组)就行了。可是根据上面给出的式子,我们就会发现,对于第一个分组,其实并没有进行反馈处理,因此,只需要对前8Byte(即一个分组)出来解密,通过比较也能判断出测试密钥的正确性。2.3 伪随机数生成器在 QQ2012 客户端程序中使用了伪随机数生成器(PRNC ) ,下面简单介绍伪随机数及其安全性。(1)伪随机数真正意义上的随机数(或者随机事件)在某次产生过程中是按

16、照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的。而计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,是可见的。所以用计算机随机函数所产生的“随机数”并不随机,是伪随机数。(2)伪随机数生成器伪随机数字生成器(PRNG)是一种生成伪随机数的方法。在很多的加密算法以及诸多安全协议中都涉及到了随机数的生成,由此可以看出,一个安全的伪随机数生成器对于密码学来说是至关重要的。因此研究伪随机数的安全性是尤为必要的,但是由于计算机的确定性,那么研究伪随机数的安全性往往是指在多项式时间内不可预测。需要指出的是,QQ2012 客户端程序中使用的伪随机数生成器是一种线性同余发生器 LCG(Linear congruential generator) 。QQ2012 客户端使用

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号