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

2019-04-23 08:25

基于QQ聊天平台的安全通信研究

数学计算机科学学院

摘 要:QQ是中国使用最广泛的即时通信工具,其安全性对于用户安全和网络

安全具有重要影响。QQ账号被盗后,其危害和影响是可怕的,用户丢失的大量好友资料和联系方式在短时间内是很难完全找回的。本文将通过对QQ登陆协议的分析性研究,分析其安全性,指出其中存在的安全漏洞,并说明QQ因此可能遭受的攻击,并对此提出改进意见,增强QQ通信的安全性!另外,本文也对QQ盗号也作了相应的研究,并提出了防范的方法。

关键词:QQ;登录协议;安全漏洞;改进意见

Secure communication based on QQ chat platform

School of Mathmatics and Computer Science

Abstract: 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 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 communication 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

第1章 QQ登录协议

QQ的登陆协议是腾讯自己开发的一套基于二进制数据的应用层网络协议,QQ登陆协议采用了固定的格式,客户端与服务器发送的报文格式上仅有一点点区别。协议用到的对称加密算法为反馈随机交织填充的TEA(Tiny Encryption Algorithm,一种分组加密算法)变形加密算法,记作 QQTEA ;用到的哈希函数为MD5。QQ登录分为UDP和TCP登录,还支持代理登录。大部分情况下使用UDP登录。UDP登录端口服务器为8000,本地端口一般是从4000开始选择,如果该端口已经被占用,则加1再测试,一直测试到一个没有被占用的端口。

TCP登录服务器一般是443端口,本地端口选择方式和UDP一样。登录方式可以在登录设置里自由设置,但是无论哪种方式登录,其登录流程和数据包格式都是一样。

QQ登陆主要分成下面6个步骤: (1)Touch包

这个数据包是QQ客户端登录时发送的第一个包,它的作用在于测试远程服务器是否能够正常响应 (2)获取验证码

由于部分QQ号码可能存在异地登录的情况,或因QQ号码被盗发送大量的垃圾信息,或使用了挂机软件或者挂机网站挂机,腾讯服务器检验到这些非正常的QQ使用情况时便会要求输入验证码 (3)密码验证

这个数据包的作用是将本地QQ的密码发送给服务器端进行验证。 (4)验证令牌(Token)1

这个数据包主要用于校验前几个数据包的Token数据,如果通过验证,服务器端会返回本次登录的时间和IP地址等相关信息。 (5)验证令牌(Token)2 (6)获取会话密钥

这个数据包是QQ登录流程的最后一个数据包,主要用于向QQ客户端返回会话密钥(Session Key),该会话密钥由服务器端生成。

各步骤登录指令分别为 :0x0825、0x0826、0x0826、0x0826、0x0826、0x0828。

2

客户端服务器端3

RKey, En(RKey,Data0) En(RKey,Data1) RKey, En(RKey,Data2) En(RKey,Data3) RKey,En(RKey,En(M2P,Key0)) En(Key0,{Key1,Key2}) En(Key1,Data4) En(Key2,{Key2,Key3}) En(Key1,Data5) En(Key4,Data6) En(Key1,Data7) En(Key3,SessionKey) 图 QQ登录协议

相关符号说明:

RKey:用来表示随机生成的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:会话密钥。

4

第2章 QQ登录协议的安全性

2.1 TEA简介

TEA算法是由剑桥大学计算机实验室的 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轮加密为了减少验证服务器的压力。QQ在数据加密前采用了密码学中的常用的填充及交织技术,减少加密数据的相关性,增加破译者的破解难度。 TEA算法代码如下:

void qq_encipher(unsigned long *const plain, const unsigned long *const key, unsigned long *const crypt)

//参数为8字节的明文输入和16字节的密钥,输出8字节密文 {unsigned long left = plain[0],right = plain[1], a = key[0], b = key[1], c = key[2], d = key[3], n = 32, sum = 0, delta = 0x9E3779b9;

// 明文输入被分为左右两部分,密钥分为四部分存入寄存器,n表示加密轮数推荐32。delta是一个常数。 while (n-- > 0) { sum += delta;

left += ((right << 4) + a) ^ (right + sum) ^ ((right >> 5) + b); right += ((left << 4) + c) ^ (left + sum) ^ ((left >> 5) + d);} crypt[0] = left ; crypt[1] = right ; }

void decrypt(unsigned long *v, unsigned long *k) { //解密过程 unsigned long y=v[0], z=v[1], sum=0xC6EF3720, i; unsigned long delta=0x9e3779b9;

//delta黄金分割率。它的作用是使得每轮的加密不同。初始化为0x9e3779b9 unsigned long a=k[0], b=k[1], c=k[2], d=k[3]; for(i=0; i<32; i++){ //循环入口

z -= ((y<<4) + c) ^ (y + sum) ^ ((y>>5) + d); y -= ((z<<4) + a) ^ (z + sum) ^ ((z>>5) + b); sum -= delta; /*结束循环*/ } v[0]=y; v[1]=z;}

2.2 QQTEA算法

5


毕业论文--基于QQ聊天平台的安全通信.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:如何缔造完美教室

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: