登录

  • 登录
  • 忘记密码?点击找回

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回
毕业论文网 > 毕业论文 > 电子信息类 > 通信工程 > 正文

基于端到端加密的多人聊天室系统的实现毕业论文

 2020-02-17 10:02  

摘 要

随着信息化的不断普及,以及互联网技术的不断发展,人们的生活方式相比以前有了巨大的变化。其中最显著的变化之一,便是即时通讯技术的发展给人们生活带来的便利。在如今这个时代,即时通讯工具已经成为了人们生活中十分重要的一部分,其承载的信息价值也越来越高。因此,针对即时通讯工具的攻击也越发频繁。

当前市场上的即时通讯工具大多可以保证信息传输过程中的安全性,但只有较少的一部分工具采用了更安全的端到端加密方式。尤其在多人聊天的场景下,端到端加密技术的运用更为少见。

本课题着眼于多人通信场景下的端到端加密技术的运用。在本文中,对目前市场上的即时通讯工具所采用的加密方案进行了分析与调查,对比了不同方案对性能和安全性产生的影响。在对现有的方案进行仔细地研究后,基于Signal协议中的X3DH密钥交换协议和双棘轮算法,结合相对而言更加安全和高效的现代化的密码学算法,本文提出了一套基于端到端加密的多人聊天室系统的实现方案。然后对整体系统的工作流程和结构进行了介绍,并分别对服务端和客户端的具体实现方法进行了详细的介绍。最后对整个系统进行了实现与测试,并对所采用的协议和所实现的系统的安全性进行了分析。

本文中实现了一套完整的基于端到端加密的多人聊天室系统,并对系统进行了测试和分析。测试结果表明:系统具有良好的安全性和可拓展型,具有广泛的应用价值,实现了预期目标。

关键词:多人聊天;端到端加密;密码学;即时通讯

Abstract

With the continuous popularization of informatization, and constant development of Internet, people’s lifestyle have changed tremendously in comparison with the past. One of the most significant change is the convenience brought by the development of instant message technology to people’s lift. In this day and age, instant messaging tools have become a very important part of people’s lift, and the value of information they carry is getting higher and higher. Therefore, attacks against these tools are becoming more and more frequent.

Most of the instant messaging tools on the market today can ensure the security during the transmission of message, but only a small part of these tools use end-to-end encryption, which is more secure. In the scene of group chat, the use of end-to-end encryption is even rarer.

This research project focuses on the use of end-to-end encryption in group chat scenarios. This paper analyzed and investigated current encryption scheme used by instant messaging tools in the market and compared the effect on performance and security when using different schemes. After carefully studying existing schemes, based on X3DH key exchange protocol and the Double Rachet algorithm in the Signal protocol, combined with relatively safer and more efficient modern cryptography algorithm, this project proposes an implementation of group chatroom system based on end-to-end encryption. Then the workflow and structure of the overall system are introduced, and the specific implementation methods of the server and client side are introduced in detail. Finally, this whole system was implemented and analyzed, and the security of protocols it adopted, and the overall system was analyzed.

This paper implemented a group chatroom system based on end-to-end, and test and analyzed the system. This test result shows that the system has good security and expansibility, has wide application value, and achieves the expected goal.

Key Words:Group chat; End-to-end encryption; Cryptography; Instant messaging

目 录

第1章 绪论 1

1.1 课题研究背景及意义 1

1.2 端到端加密系统的研究现状 1

1.3 课题研究内容 2

第2章 系统原理 3

2.1 密码学算法介绍 3

2.1.1 SHA密码学哈希函数 3

2.1.2 X25519椭圆曲线密钥交换算法 3

2.1.3 Ed25519椭圆曲线签名算法 4

2.1.4 HMAC消息验证码 4

2.1.5 HKDF密钥推导函数 4

2.1.6 AES-GCM对称加密算法 4

2.2 X3DH密钥协商协议 5

2.3 双棘轮算法 7

2.3.1 对称密钥棘轮 8

2.3.2 DH棘轮 8

2.3.3 双棘轮 10

2.4 系统介绍 10

2.4.1 系统结构介绍 10

2.4.2 系统流程介绍 11

2.4.3 数据交换的格式 13

2.5 本章小结 16

第3章 系统服务端实现 17

3.1 服务端结构介绍 17

3.2 服务端数据库设计 17

3.3 服务端API及实现 18

3.3.1 用户类API 18

3.3.2 群组类API 18

3.3.3 消息类API 20

3.4 本章小结 20

第4章 系统客户端设计 21

4.1 客户端结构介绍 21

4.2 客户端工作流程介绍 21

4.2.1 核心模块的工作流程 22

4.2.2 GUI的工作流程 24

4.3 本章小结 25

第5章 成果展示和系统分析 26

5.1 系统工作流程记录 26

5.2 安全性分析 31

5.2.1 X3DH协议的安全性分析 31

5.2.2 双棘轮算法的安全性分析 32

5.2.3 系统的安全性分析 32

第6章 总结 35

参考文献 36

致 谢 38

第1章 绪论

端到端加密是一个只有参与通讯的用户拥有读取消息的能力的通信系统。这样的系统可以保证:除了通信的双方以外,任何潜在的窃听者,包括互联网服务提供商,电信运营商,以及该通讯系统的提供者,都无法对通讯的内容进行解密。

1.1 课题研究背景及意义

在如今这个信息化的时代,计算机和网络技术的飞速发展使得人们的生活有了巨大的变化。其中,即时通讯工具的快速发展更是在很大程度上改变了我们生活的方式。从模拟电话到数字电话,再到如今基于互联网的各类即时通讯软件,人与人之间的联系变得更加便捷与多样化。从国家、军事的角度上来说,即时通讯系统的战略意义也十分重大。但与此同时,即时通讯的安全问题也逐渐变得更加严峻。由于人们对各类通讯软件的依赖性越来越强,通讯软件中所承载的信息的价值也越来越大。

在这样的背景下,各类针对通讯软件的攻击也层出不穷,各种因网络攻击导致的隐私泄露也时有发生。而在国防领域,即时通讯系统的安全性更为重要,如果机密信息被破译或者篡改,更是会威胁到国家的安危。因此,即时通讯工具的安全性在如今变得尤为重要。

传统的安全措施主要保障数据传输过程中的安全性,如目前常用的传输层安全协议(Transport Layer Security,TLS),通过综合运用各类数据加密技术,可以很好地保证数据在客户端和服务端的传输过程中不会被监听和篡改[1]。但这样的安全措施有一定的局限性,如果攻击者入侵了服务端,或者通过一些方法伪装成合法用户登陆系统,便可以获取到用户的数据。

而端到端的加密技术则解决了传统安全措施中的弊端[2]。这一技术通过对各类数据加密技术的综合运用,使得用户的数据在客户端被加密后,并不能在服务端进行数据的解密,只能在另一个客户端通过特定的方法进行读取[3]。这样的设计使得服务端只负责数据的分发工作,因此不需要担心因服务端被攻击而导致的数据泄露。同时,这一技术也保证了传输层的安全性,即使不采用TLS等传输层加密技术也不会使整个系统的安全性有太大的损失,对服务端的要求也相应地降低了很多。另一方面,由于端到端加密技术的特性,只要攻击者没有完全入侵用户的客户端,即使攻击者伪装成用户登陆到系统,或者攻击者入侵了系统的服务器,也一样无法获取到有价值的数据。

1.2 端到端加密系统的研究现状

目前国内市场上,最流行的即时通讯工具是腾讯公司研发的QQ和微信,这两款工具的共同特点是,虽然其在客户端与服务端的数据传输过程中采用了一定的加密措施,但都没有采用端到端的加密技术,因此所有的数据在服务器仍然可见。

而在国际市场上,主流的即时通讯工具如WhatsApp、Facebook Messenger、Signal等都在传输加密的基础上提供了基于Signal协议的端到端加密的选项[4],可以在一对一聊天中开启以提高安全性。Signal协议是一种新型的安全协议,可以为即时通讯提供端到端加密的特性,其通过引入棘轮的概念,在每次信息发送时对会话的密钥进行更新,来保证前向的安全性和入侵后的恢复性[5]。在群聊会话中,则一般采用基于Signal协议的Sender Keys变种协议来进行通信。这一协议会在一个群聊会话中使用同一个对称加密密钥,因此其安全性相对原版的Signal协议有所下降,但优势在于当初始化完成后,只需向服务器发送一份消息即可。

Apple公司的iMessage则将其一对一聊天的端到端加密机制复用到群聊中[6],对每一位参与者的每一台设备进行单独的加密过程。这样的方式需要在每次发送消息时,针对所有的接收者用独立的密钥分别进行消息的加密,因此这一方式所需的计算和带宽资源会随群聊规模的扩大而线性地增长,但其安全性也会相应地有所增强。

另外在近两年里,来自牛津大学和Facebook的Cohn-Gordon等人提出了一种被称为异步棘轮树(Asynchronous Ratcheting Tree,ART)的群组密钥交换协议[7],这一协议拥有上面两种协议的优点,足够安全[8],并且只需向服务器发送一份消息。在这一协议的基础上,互联网工程任务组(Internet Engineering Task Force,IETF)也正在设计被称为消息传递层安全(Messaging Layer Security,MLS)的协议,用于两人及以上的群组聊天。

此外,近年来逐渐流行的安全通讯工具Telegram则采用了一套其自行研发的MTProto协议[9][10][11]。该协议提供两种层次的加密等级,用于不同的场景。其中,私密聊天中使用的MTProto part II提供了端到端加密的特性[11]。但Telegram并没有在其群组聊天中启用端到端加密,而是采用与普通私人会话一致的客户端到服务端加密的模式(即MTProto part I)。另外,Telegram的MTProto协议的第一版存在一些安全隐患,目前在第二版中有一定的改进。

1.3 课题研究内容

本课题的目的是基于目前比较成熟的Signal协议,将其进行一定的拓展,并运用到群组聊天的场景中,实现一套完整的端到端加密的聊天系统。与目前大多数实现所采用的Sender Keys变种协议不同的是,本课题通过复用点对点的Signal协议来实现更好的安全性,并对所实现的系统进行安全性分析。

第2章 系统原理

本系统的加密层主要参考了Signal协议中提出的X3DH(Extended Triple Diffie-Hellman)密钥协商协议和双棘轮(Double Rachet)算法,然后将其与系统的工作流程结合,在此基础上实现了一套完整的客户端和服务端程序。

在本章中,将对本系统中所采用的算法,协议以及系统整体的流程及结构进行阐述。

2.1 密码学算法介绍

在这一小节中,首先对各协议中所共同涉及的密码学算法进行简单的介绍。

2.1.1 SHA密码学哈希函数

SHA(安全散列演算法,Secure Hash Algorithm)是一个密码学哈希函数家族的简称。其作用是对输入的二进制信息产生一个对应的,固定长度的二进制字符串,也叫做信息的摘要。这一过程被可以被认为是单向的,也就是说极难从一个已知的摘要反推出输入的二进制信息。

SHA家族包括SHA-0,SHA-1,SHA-2,SHA-3这几个系列,其中SHA-0已被废除,SHA-1已被宣布正式攻破。SHA-2采用与SHA-1类似的计算方法,但目前仍然被认为是安全的,其中又包括了SHA-256,SHA-512以及其他变种,他们分别会产生32字节和64字节长的信息摘要。SHA3的内部结构与之前的几种完全不同,是一种比较新式的密码学哈希函数,目前尚未得到大规模的普及。

2.1.2 X25519椭圆曲线密钥交换算法

X25519严格来说是Curve25519的别名。Curve25519是一种密码学中的椭圆曲线,被设计用于ECDH(椭圆曲线迪菲-赫尔曼,Elliptic curve Diffie–Hellman)密钥交换算法。Curve25519被认为是目前最快的ECC(椭圆曲线密码学,Elliptic Curve Cryptography)曲线之一[12]

最初的Curve25519草稿将其定义成一个DH(迪菲-赫尔曼,Diffie–Hellman)函数。其作用与其他类型的DH函数一样,都是为了在不安全的通信环境下协商出一个只有通信双方可以知道的共享密钥。在那之后Daniel J. Bernstein提出Curve25519应被作为底层曲线的名称,而将X25519作为其DH函数的名称。

X25519包含一对密钥对,分别为32字节长的私钥和32字节长的公钥。使用本地的私钥与另一对密钥对的公钥可以计算得到一个密钥,这一过程又叫做使用X25519密钥进行DH计算。同样的,使用本地的公钥与另一对密钥对的私钥可以计算得到相同的密钥。这一特性使得通信双方可以通过交换各自的公钥来协商得到一个只有双方知道的密钥。而潜在的攻击者即使监听到了两个公钥,也无法计算出该密钥。

在2013年,NIST(美国国家标准技术研究所,National Institute of Standards and Technology)提出的椭圆曲线被发现潜在漏洞后,Curve25519开始被广泛接受及应用。从2014年开始,OpenSSH便已经开始默认采用Curve25519来进行密钥协商。

2.1.3 Ed25519椭圆曲线签名算法

Ed25519是一种使用了SHA-512和Curve25519椭圆曲线的EdDSA(爱德华兹曲线数字签名算法,Edwards-curve Digital Signature Algorithm)签名方案。

Ed25519一般包含一对密钥对,分别为32字节长的私钥和32字节长的公钥。其私钥可用于对数据进行签名,并得到64字节长的签名数据,并可通过对应的公钥来验证签名的有效性。

Ed25519的优势在于极快的运算速度以及较高的安全性,其安全性能大致等效于128位的对称加密算法。同时Ed25519的设计使得其可以抵抗大多数的侧信道攻击,并且与传统的签名方案(如DSA,ECDSA)相比,其在签名时无需再依靠随机数生成器,因此可以避免因随机数生成器被破坏,从而在签名中泄露私钥的问题。Ed25519目前已被广泛用于OpenSSH,GnuPG,OpenSSL等主流密码学工具套件中。

2.1.4 HMAC消息验证码

HMAC(基于HASH的消息校验码,Hash-based Message Authentication Code)是一种通过结合密码学哈希函数和密钥来产生的消息校验码[13]。该校验码可以用来保证数据的完整性以及用于信息的身份验证,其长度一般与所采用的密码学哈希函数产生的摘要的长度一致。

2.1.5 HKDF密钥推导函数

HKDF(基于HMAC的提取和扩展密钥推导函数,HMAC-based Extract-and-Expand Key Derivation Function)是一种基于HMAC的简单密钥推导函数[14]

HKDF可以使用共享的密钥(如Diffie-Hellman的运算结果)以及一些额外的输入数据来生成任意长度的密码学安全的密钥,以用于对称加密等场景。

以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。

相关图片展示:

您需要先支付 80元 才能查看全部内容!立即支付

企业微信

Copyright © 2010-2022 毕业论文网 站点地图