安全聊天系统研究与实现.docx
《安全聊天系统研究与实现.docx》由会员分享,可在线阅读,更多相关《安全聊天系统研究与实现.docx(30页珍藏版)》请在冰豆网上搜索。
安全聊天系统研究与实现
安全聊天系统的设计与实现
学生姓名:
xxx指导老师:
xxx
摘要随着计算机的不断普及和互联网技术在全球领域的高速发展。
越来越多的人使用到了聊天程序。
聊天程序给人们带来通信便利的同时也存在着一些安全隐患,传统的聊天程序以明文方式传送聊天内容,这样就给一些用心不良的人大开方便之门。
本系统正是基于以上原因而设计的加密聊天程序。
聊天程序采用服务器/客户端模式。
在Linux环境下采用socket套接口编程,服务器程序以创建线程池的方式为每一个客户服务。
聊天内容由服务器转发。
在聊天程序中加入了对称加密算法DES和非对称加密算法RSA。
其基本实现是由服务器端生成RSA的公钥和私钥,由客户端生成DES对称密钥,服务器端传送公钥至客户端加密DES密钥之后回传服务器,服务器再用本地的私钥解密获得DES密钥。
此后双方的通信由DES密钥加密后传送,这样既能高效的加密明文又能在信道上安全的传送密钥使得密钥间的共享成为现实。
关键词对称加密算法;非对称加密算法;聊天系统
TheDesignandimplementationofsafechatsystem
Studentname:
CHENFan-xingAdvisor:
ZHOUShu-ren
AbstractAlongwithComputerbecomingmoreandmorepopularandInternettechnologydevelopingrapidly,alotofPeoplebegantousetheIM(chatprogram).Chatprogrambringspeoplemoreconvenience,butatthesametime,securityproblemexisted.Thetraditionalchatprogramsendsthemessagebyplaintext,whichopenthedoorforthebadman.Thisencryptedchatsystemisrightbasedonthepoint.ThesystemisinC/SarchitectureusingsocketbasedonLinux.Theserverprogramserveseachclientinthewayofestablishingthreadandisresponsibletotransfermessage.TheDESalgorithmandRSAalgorithmareusedtoencryptinthisprogram.ThebasicprincipleisthattheservergeneratesRSApublickeyandprivatekeyandclientgeneratesDESsymmetricalsecretkey.Firstly,theserversendsthepublickeytoclient,andthenclientsendsitbackafterencryptingDESsecretkey.Secondly,theServeruseslocalprivatekeytodecodetoobtaintheDESprivatekey.Afterthen,themessageissentafterencryptedbyDESsecretkey.Sotheplaintextcanbeencryptedeffectivelyandsentinchannelinsecurity.
Keywordssymmetryencryptingprogram。
unsymmetricalencryptingprogram。
chatsystem
1引言
1.1课题背景
自从TCP/IP协议族成为计算机通信的主要网络协议,基于该协议族开发的网络应用程序数不胜数。
聊天程序便是其中之一。
聊天程序使人们可以通过互联网及时传送消息,让远在千里之外的人们畅所欲言。
传统的聊天程序在给人们带来方便的同时也逐渐暴露出一些安全隐患。
前不久网上登出了这样一则新闻:
上海某银行的白领丽人,因为聊天程序受监控被同事知道了个人隐私,被迫辞去了月薪三万余元的工作。
于是聊天程序的安全性受到了人们的广泛关注。
1.2国内外研究现状
从国内外对聊天程序的加密情况看,大多数处理方式是在现有的聊天程序基础之上添加相应的加密插件来实现加密。
比较典型的例子是Linux平台下的多集成聊天程序Gaim,其中集成了ICQ、MSN、QQ等现今主流国内外聊天程序。
普遍的聊天程序没有经过加密而直接传输聊天明文。
Gaim通过添加插件程序对未加密的聊天程序进行加密传输,通信双方需要只要同时安装加密插件就可以顺利的对聊天内容进行加密解密。
这其中存在一个现而易见的问题:
要是一方加入了加密插件而另一方却没有相应的解密程序显然双方不能正确通信。
1.3本课题研究的意义
聊天程序是否加密关系着用户的切身利用。
为了保卫公民隐私权不受到网络黑客的不法侵犯,开发加密传输信息的聊天程序有着重大意义。
聊天程序的加密特性对用户应该是透明的。
正如前面分析,如果以安装插件的方式加密聊天程序很可能造成通信双方加密不一致的情况。
因此将加密算法内嵌入聊天程序可以保证通信双方均能正常通信。
传统的对称加密算法如DES虽然可以快速的加密和解密明文,然而其密钥难以分配和管理。
如果让通信双方相互约定密钥显然是不合适的,因此最好的方式是由一方产生密钥然后传送给另一方。
基于公钥的非对称加密体制的引入正是用于解决对称加密算法在密钥管理上的不足,但是非对称加密算法如RSA存在运算强度过大、费时较长等问题。
如果直接用于加密聊天程序,其生成密钥和加密解密所需时间是人们在通信过程中所不能容忍的,采取将两种加密算法相结合的方式可以很好的解决以上问题,从而达到安全快速的加密数据。
2所采用技术的先进性分析
2.1DES算法
DES是DataEncryptionStandard(数据加密标准)的缩写。
它是由IBM公司研制的一种加密算法,美国国家标准局于1977年公布把它作为非机要部门使用的数据加密标准,二十年来,它一直活跃在国际保密通信的舞台上,扮演了十分重要的角色。
DES是一个分组加密算法,它以64位为分组对数据加密。
同时DES也是一个对称算法:
加密和解密用的是同一个算法。
它的密钥长度是56位(因为每个第8位都用作奇偶校验),密钥也可以是任意的56位数,而且可以任意时候改变。
其中有极少量的数被认为是弱密钥,但是很容易避开它们。
所以保密性依赖于密钥。
2.2RSA算法
1978年,美国麻省理工学院(MIT)的研究小组成员RonaldLRivest、AdiShamir、LeonardAdleman提出了一种基于公开密钥密码体制的优秀加密算法--RSA算法。
RSA的取名就是来自这三位发明者姓氏的第一个字母。
该算法以其较高的保密强度逐渐成为一种广为接受的公钥密码体制算法。
RSA算法是一种分组密码体制算法,它的保密强度是建立在具有大素数因子的合数,其因子分解NP(NondeterministicPolynomial)完全问题这一数学难题的基础上的,因此RSA算法具有很强的保密性。
RSA算法研制的最初目标是解决DES算法秘密密钥利用公开信道传输分发困难的难题,而实际结果不但很好地解决了这个难题;还可利用RSA来完成对消息的数字签名以防对消息的抵赖;同时还可以利用数字签名发现攻击者对消息的非法篡改,以保护数据信息的完整性。
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。
RSA是被研究得最广泛的公钥算法,普遍认为是目前最优秀的公钥方案之一。
RSA得到了世界上的最广泛的应用,并于1992年ISO国际标准化组织在其颁发的国际标准X.509中,将RSA算法正式纳入国际标准。
2.3线程池
在传统的UNIX模型中,当一个进程需要另一个实体来完成某事时,它就fork一个子进程并让子进程去执行处理。
Unix上的大多数网络服务器程序就是这么编写的,父进程accept一个连接,fork一个子进程,该子进程处理与该连接对端的客户之间的通信。
尽管这种范式多少年来一直良好地服务着,fork调用却存在一些问题:
1
fork是昂贵的。
fork要把父进程的内存映象拷贝到子进程,并在子进程中复制所有描述字,如此等等。
2fork返回之后父进程之间信息的传递需要进程间通信(IPC)机制。
调用fork之前父进程向尚存在的子进程传递信息相当容易。
因为子进程将从父进程数据空间及所有描述字的一个拷贝开始运行。
然而从子进程往父进程返回信息却比较费力。
线程有助于解决这两个问题。
线程有时称为轻权进程(lightweightprocess),因为线程比进程“权重轻些”。
也就是说,线程的创建可能比进程的创建快10~100倍。
线程池是指在服务器启动阶段预先创建一系列线程阻塞于accept调用,每个客户由当前可用线程池中的某个(闲置)线程处理。
这种处理方式比通常的客户连接到来时临时创建线程为其服务要快得多。
可以获得很好的性能加速。
3系统需求分析
3.1聊天程序功能分析
1注册功能
通常聊天程序需要用户名和密码才能使用,所以需要实现web注册功能,这样用户可以很方便的通过web网站注册自己的用户名并取得密码,还可以在服务器上存储个人相关信息以便他人查看。
2登陆功能
用户在聊天之前需要输入用户名和密码进行登陆以便获取自身相关信息和好友相关信息,故登陆过程中服务器需对用户名和密码进行必要的核对。
3聊天功能
这是聊天程序的主要功能。
用户之间的相互通信必须及时快速的由服务器转发。
3.2加密算法
由于是加密聊天程序,故对聊天明文的加密算法应选取加密速度相对较快的对称加密算法(如:
DES),又由于DES的加密密钥是不能公开的秘密密钥,故对DES的密钥应加密传送,所以应采用非对称的公钥加密算法(如RSA)用以分发DES密钥。
DES加密算法:
作为对称加密算法中的DES加密算法由于其加密过程是固定不变的,故应考虑其密钥的生成。
由于弱密钥存在的可能性,还应该考虑如何避免生成弱密钥。
因为差分分析法的提出可以快速的破解少于16轮迭代的DES算法,故应保证其迭代次数至少为16轮。
RSA加密算法:
由于RSA是基于大素数因子分解这一数学难题提出的,故RSA中公钥和私钥的产生应重点考虑。
又由于RSA的运算强度较大,故还应考虑如何加速其运算速度。
4系统总体设计和模块划分
4.1系统总体设计
图4.1系统设计
如图4.1所示,本系统采用C/S模式。
1用户通过web应用程序注册帐号,然后用注册的帐号登陆聊天程序服务器。
2客户端产生生成DES密钥,服务器端在启动时初始化产生RSA公钥和私钥。
当客户端向服务器发起连接时,服务器送出RSA公钥,客户端用取得的公钥加密产生的DES私钥回传服务器。
3最后服务器与客户端双方的通信均由DES加密算法加密通信明文。
4.2模块划分
4.2.1DES算法模块
1加密算法3个主要步骤
第一步,初始置换IP
图4.2初始置换表IP
图4.2为初始置换表IP,64bit输入明文经过该表完成初始置换。
第二步,16轮迭代
图4.316轮迭代
图4.3为DES16轮迭代,将经过初始置换的数据分成Li和Ri两部分。
将Ri直接交换为Li+1,Li与Ri经过f函数处理后的数据相异或得Ri+1,最后一轮不做交换。
第三步,逆置换