基于P2P的安全内联网即时通信系统
2017-04-18朱贺徐靖王贵萱
朱贺 徐靖 王贵萱
【摘 要】本文描述了一个基于P2P技术的安全内联网即时通信系统的实现技术,企业用户交互数据无需通过外部服务器传输,防止内部数据流入公网,最大限度保護内部数据安全,提高系统可靠性,满足企业内部可性,安全便捷通信的需求。
【关键词】P2P;NAT穿透;即时通信;行为识别
0 引言
当前企业员工间基本都是通过QQ、Skype等常见的商用软件来进行沟通交流。但这些常见的基于C/S模型的即时通信软件过分依赖于中心服务器,所有的数据均需经过外网服务器转发,若服务器或互联网链接出现问题,那么整个通信系统将无法正常工作。另外企业内部工作中的沟通交流会涉及商业机密,如果利用市面上的即时通信软件进行传输,数据可能会以可破解的形式出现在相应软件的服务器上,当服务器遭受攻击,这些机密的数据就会被泄露,且绝大多数的传统即时通信软件采用的都是用户名、密码的登录认证模式,这样的认证方式很容易被攻击,从而带来不可估量的危害。因此,针对目前即时通信软件在企业应用中表现出的种种不足,设计并实现一个企业级的内联网安全通信系统是十分有必要的。
1 系统设计方案
本系统分为客户端和服务端两部分,采用P2P与C/S相结合的系统架构。服务端提供用户登录身份验证,状态通知(离线、上线等),信息查询,数据存储管理等功能。客户端实现用户数据的封装、加密和发送,处理来自其他客户端的文件传输请求,实现局域网内客户端之间的快速文件传输,在离线数据传输的过程中,分担服务器负担,处理相应的中转数据。
2 具体实现技术
2.1 NAT内网穿透
穿透模块是通信的基础模块,系统中的 P2P 文件传输是网络资源共享的重要方式之一,且只适合两个在线用户之间发起,主动发起用户先发消息给被传用户,对方同意后接收,建立点对点连接。因此要在有 NAT 设备的环境中实现点对点通信,首先要解决的就是NAT穿透问题。根据 NAT 类型的探测的结果可以采取不同的穿透方案,在本系统中主要用到的就是UDP打洞和TCP打洞,它们的最终目的是将位于两个不同子网中的两个计算机连接起来。在进行穿透前会进行一个测试,判断当前网络环境是否需要穿透,首先用户A向用户B发送一条测试消息,若A能成功接收用户B的反馈消息则A就可以直接连接B进行通信,否则需要进行NAT穿透。
2.2 安全登录认证
传统的即时通信软件用户的密码是由用户自己设定的。在登录系统时输入正确的密码,计算机便认为操作者就是合法用户。实际上,由于许多用户为了防止忘记密码,经常采用诸如生日、电话号码等容易被猜测的字符串作为密码,这样很容易造成密码泄漏。用户名、密码机制虽然在使用和部署上都非简便,但从安全角度来说,并不是是一种安全的身份认证方式。而基于计算机输入行为特征的认证方法,具有行为方式难以模仿,行为方式无需记忆,行为数据量大,行为密码不具有明显的特征等众多优点。所以,在本系统中采用基于鼠标键盘行为方式分析的方法实现系统登录的安全认证。
2.3 数据加密
目前主流的加密算法主要有对称加密算法和非对称加密算法。对称加密算法资源消耗较小,但是对称加密算法的密钥需要通过直接复制或网络传输的方式由发送方传给接收方,同时无论加密还是解密都使用同一个密钥,所以密钥的管理和使用很不安全,如果密钥泄露,则此密码系统便被攻破。非对称加密通过公钥进行加密,用私钥进行解密,不需要通过安全通道来传输密钥,且能够公开加密密钥,仅需要保密解密密钥,所以不存在密钥管理问题。但是非对称算法非常复杂,密钥对的生成、数据的加解密都会消耗很多资源,对于企业即时通信系统来说采用非对称加密算法加密密钥信息是无法满足其即时性需求的。因此,本软件合对称和非对称加密算法的优点设计出了客户端和服务器间数据传输的混合加密方案。
Server初始化后会通过非对称算法生成公钥和私钥,当有Client和Server进行通信时,Server便会将Server的公钥发送给Client。
Client在登录或者注册时,会先用非对称算法生成公钥和私钥,然后将公钥发送给Server,Server记录下这个Client对应的公钥。然后将这个公钥广播给所有在线的Client。某个Client在离线后,Server会将该Client对应的公钥删除。
如果ClientA要向ClientB发送信息,首先通过对称加密生成密钥key,然后在Server广播的所有在线Client的公钥中找到ClientB的公钥,然后用这个公钥加密密钥key,然后将加密后的密钥发送给ClientB,ClientB使用自己的私钥解密,获得ClientA和ClientB进行通信的密钥key。之后ClientA和ClientB之间的通信都是用密钥key进行加密和解密。
2.4 数据封装
为了保证数据交换的方便、解析的高效以及加密解密的效率,本系统采用的数据封装格式为(消息类型、用户名、密码、信息内容、日期、文件名)。将要进行传输的数据按照上述规则封装之后,按照响应的加密方式进行加密,加密之后的数据为d,然后再对d进行MD5消息摘要,以保证通信数据的完整性,将MD5放在数据d的头部,形成最终可以发送的数据d2,最后将数据d2发送出去。
收到数据后,首先将头部的MD5数值取出,计算剩下部分的MD5是否和头部的MD5数值相等,如果相等则数据发送完整,进行下一步的解析,否则认为数据发送失败,丢弃这个数据包,并且向发送者发送反馈。
3 结束语
本系统采用C/S和P2P混合通信模型,在系统中的每个节点作为客户端请求服务的同时,也可以作为服务端提供服务,大大减轻了对服务器的依赖。而且当服务器发生故障时整个通信系统不会立即瘫痪,内部通信依旧能进行。基于鼠标键盘行为方式分析的安全登录认证机制解决了传统用户名/密码模式易攻破易泄露的问题,大大提高了用户账号的安全性。另外,为进一步提高通信的安全性还引入了通信加密机制,使数据以密文的形式进行传输和储存,最大限度的保证了整个系统的稳定性与安全性。
【参考文献】
[1]郭晓静.基于统计学的击键序列身份认证算法研究与改进[J].北京邮电大学,2013.
[2]沈超,蔡忠闽,管晓宏,等.基于鼠标行为特征的用户身份认证与监控[J].通信学报,2010(7).
[3]张伟欣,韩秀玲.TCP穿透NAT的P2P通信技术研究[J].计算机时代,2008(11).
[4]杨天路,刘宇宏,张文.P2P网络技术原理与系统开发案例[M].北京:人民邮电出版社,2007.
[责任编辑:田吉捷]