本文主要介绍了QQ与支付协议中涉及的加密算法和安全机制,特别是QQ协议的加密方式,包括TEA算法的使用、交织算法的应用以及会话密钥的协商过程。
在QQ2013SP5之前的版本中,QQ协议采用了一种名为TEA(Tiny Encryption Algorithm)的加密算法。TEA是一种分组密码算法,其明文或密文块大小为64比特,即8字节。密钥长度为128比特,经过16轮的迭代加密,而建议的迭代次数是32轮以增强安全性。TEA算法的特点在于它利用了一个不断变化的Delta值(来源于黄金分割率),确保每轮加密的不同,增加破解的难度。
在加密过程中,为了适应不同长度的明文,会进行填充,使得明文长度满足8字节的整数倍。填充方式是先添加一个1字节,接着是n-2个随机字节,再加上传输长度Len(m)字节的表示,最后是7字节的随机数。通过解密头8字节并比较填充长度,可以验证测试密钥的正确性。
QQ协议还采用了交织算法来扰乱加密块之间的关系,但这种交织技术并未显著增加破解的复杂度。解密时,需要按照特定的步骤进行,以恢复原始数据。
在会话密钥的协商过程中,QQ协议采取了三次握手的方式。首先,客户端发送包含QQ号等信息的明文,生成临时密钥kt1,并用其加密数据发送给服务器。服务器接收到数据后,解密并验证,然后返回受口令保护的临时密钥作为下一次交互的密钥。在第二次握手时,客户端生成kc,结合密码信息创建新的密文,再次发送给服务器。服务器确认无误后,双方建立会话密钥,确保后续通信的安全。
整个密钥协商过程分为密钥协商和通信会话两个阶段,确保了用户身份验证、防止中间人攻击,并且每次会话都有不同的密钥,增加了通信的隐私性。
QQ协议结合了TEA加密算法、交织技术和三次握手的会话密钥协商,构建了一个相对安全的通信环境,尽管交织算法的效果有限,但整体上提升了数据的安全性。然而,随着密码学的发展,更先进的加密算法和技术已经出现,如AES等,以应对更复杂的网络安全挑战。