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

上传人:s9****2 文档编号:431989753 上传时间:2024-02-10 格式:DOC 页数:15 大小:78.51KB
返回 下载 相关 举报
毕业论文基于QQ聊天平台的安全通信_第1页
第1页 / 共15页
毕业论文基于QQ聊天平台的安全通信_第2页
第2页 / 共15页
毕业论文基于QQ聊天平台的安全通信_第3页
第3页 / 共15页
毕业论文基于QQ聊天平台的安全通信_第4页
第4页 / 共15页
毕业论文基于QQ聊天平台的安全通信_第5页
第5页 / 共15页
点击查看更多>>
资源描述

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

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

2、thmatics 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 o

3、f 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 communication

4、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; Improvements第1章 QQ登录协议QQ的登陆协议是腾讯自己开发的一套基于二进制数据的应用层网络协议,QQ登陆协议采用了固定的格式,客户端与服务器发送的报文格式上仅有一点点区别。协议用到的对称加密算法为反馈

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

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

7、该会话密钥由服务器端生成。各步骤登录指令分别为 :0x0825、0x0826、0x0826、0x0826、0x0826、0x0828。服务器端客户端En(Key1,Data7)En(Key1,Data5)En(Key1,Data4)RKey,En(RKey,En(M2P,Key0)RKey, En(RKey,Data2)RKey, En(RKey,Data0)En(Key3,SessionKey)En(Key4,Data6)En(Key2,Key2,Key3)En(Key0,Key1,Key2)En(RKey,Data3)En(RKey,Data1) 图 QQ登录协议相关符号说明: RKey:

8、用来表示随机生成的16字节长度的密钥。En(Key,P):表示使用密钥Key对明文P加密,这里是指QQTEA加密。Datai:表示尚不清楚具体意义的数据。(i取正整数)Keyi:表示16字节长度的密钥。(i=0,1,2,3,4)MD5:它是一种哈希函数。M2P:Md5(Md5(QQPassword)。 QQPassword:QQ密码SessionKey:会话密钥。第2章 QQ登录协议的安全性2.1 TEA简介TEA算法是由剑桥大学计算机实验室的 David Wheeler和 Roger Needham 于1994年发明。 TEA是Tiny Encryption Algorithm的缩写。特点是

9、加密速度极快,高速高效,但是抗差分攻击能力差。TEA加密算法是一种分组密码算法,其明文密文块64比特(8字节),密钥长度128比特(16字节)。TEA加密算法的迭代次数可以改变,建议的迭代次数为32轮,两个TEA Feistel周期算为一轮。TEA算法被广泛应用于QQ的数据加密中,QQ采用16轮的TEA算法加密,在这时采取16轮加密而不采取标准的32轮加密为了减少验证服务器的压力。QQ在数据加密前采用了密码学中的常用的填充及交织技术,减少加密数据的相关性,增加破译者的破解难度。TEA算法代码如下:void qq_encipher(unsigned long *const plain, cons

10、t 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,delta = 0x9E3779b9;/ 明文输入被分为左右两部分,密钥分为四部分存入寄存器,n表示加密轮数推荐32。delta是一个常数。while (n- 0) sum += delta;left += (right 5) + b);r

11、ight += (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=0x9e3779b9; /delta黄金分割率。它的作用是使得每轮的加密不同。初始化为0x9e3779b9unsigned long a=k0, b=k1, c=k2, d=k3;for(i=0; i32; i+) /循环入口 z -= (y5) + d);

12、y -= (z5) + b);sum -= delta; /*结束循环*/v0=y;v1=z;2.2 QQTEA算法在本文第一章中提到,协议用到的对称加密算法为反馈随机交织填充的TEA(Tiny Encryption Algorithm,一种分组加密算法)变形加密算法,记作QQTEA。那么这里将主要介绍填充、交织和反馈这三点,如果大家对TEA算法的加密过程感兴趣,可参考相关文献1。(1)填充算法为了适用TEA算法,需要使得明文的字节数是8的倍数。如果明文本身的长度不是8的倍数,那么还要进行填充以使其成为8的倍数。以字节为单位,令N=原始字符串+10+填充字节数n,则N应该是8的倍数。具体的填充

13、方法:第一个字节为:(random()&0xf8)|n,随后填充(n+2)个字节random()&0xff ,后面接原始数据,最后填充7 个字节0x00 。因为使用了不同的随机数,所以填充的结果使得即使对于相同的明文,密文的结果也会不同。如图: 1Byte填充长度(n)+2 明文长度7Byte随机数 填充长度 随机数明文0x00random()&0xf8 n random()&0xf83Byte填充长度(n)=8-(明文长度+2)%8)(2)交织算法消息被分为多个加密单元,每一个加密单元都是8字节,使用TEA进行加密,加密结果与下一个加密单元做异或运算后再作为待加密的明文。(3)反馈加密因为T

14、EA是分组加密算法,所以需要将明文分块。plaini表示明文的第i个分组,cryptedi表示密文的第i个分组,所有分组加密使用的密钥是相同的,设为key。具体的反馈加密过程如下图所示:plaini cryptedi-1key TEAplaini-1 cryptedi当i=1时,cryptedi = E(key, plaini);当i1时,cryptedi = plaini-1 xor E(key, plaini xor cryptedi-1)。在参考文献1中提到要验证一个密钥是否是正确的,那么只需要取明文和密文的最后16Byte(也就是两个分组)就行了。可是根据上面给出的式子,我们就会发现,对于第一个分组,其实并没有进行反馈处理,因此,只需要对前8Byte(即一个分组)出来解密,通过比较也能判断出测试密钥的正确性。2.3 伪随机数生成器在QQ2012客户端程序中使用了伪随机数生成器(PRNC),下面简单介绍伪随机数及其安全性。(1)伪随机数真正意义上的

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

当前位置:首页 > 建筑/环境 > 施工组织

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