区块链技术在企业即时通信系统中的应用

2018-09-04 09:37葛泽烽徐欣
软件导刊 2018年6期
关键词:去中心化企业级区块链

葛泽烽 徐欣

摘 要:随着网络技术的不断发展,即时通信产品种类层出不穷,在人们生活中扮演着越来越重要的角色。特别是企业随着规模增长,组织结构越来越复杂,员工之间的信息交流越来越频繁,对即时通信软件要求也越来越高。针对企业即时通系统服务器中心化问题,利用区块链技术实现数据分布式存储,结合公钥加密技术,设计一个去中心化的企业级即时通信系统。阐述了区块链技术和工作量证明的概念,详细介绍了系统整体结构设计以及各个模块的功能,最后通过系统安全性分析,验证了该系统的安全性与可靠性。

关键词:即时通信;区块链;公钥加密;企业级;去中心化

DOI:10.11907/rjdk.173329

中图分类号:TP399

文献标识码:A 文章编号:1672-7800(2018)006-0203-04

Abstract:With the continuous development of network technology,the varieties of instant messaging products emerge in an endless stream and play an increasingly important role in people's daily life.Especially as the scale of enterprises keeps growing,the organizational structure becomes more and more complicated,and the exchange of information among employees is becoming more and more frequent,the requirements for instant messaging software are higher and higher.Aiming at the centralization problem of enterprise instant messaging system,we use Blockchain technology to realize data distribution storage,and combine the technology of public key encryption to design a decentralized enterprise instant messaging system.The article explains the concept of Blockchain technology and proof-of-work,detailedly introduces the whole structure of the system and the function of each module.Finally,we analyze the security of the system,by which the safety and reliability of the system is verified.

Key Words:real-time communication; Blockchain; public key encryption; enterprise; decentration

0 引言

在计算机网络技术飞速发展的今天,人们沟通交流的方式越来越多,从早期的电话、短信沟通,到如今更多人选择使用即时通讯软件(如QQ、微信)交流[1]。随着互联网技术的不断发展,即时通讯软件的应用场景越来越多,已经从生活交流一步步渗透到办公场景。在现代企业环境中,企业内的沟通不断增多,对沟通效率的要求也不断提高。企业小组工作中的协调经常要在短时间内达成,否则会影响整个小组的项目进程[2]。

然而,目前企业(特别是军工、金融等保密要求较高的企业)应用的即时通信系统仍有许多不足,其中最为重要的一点是用户数据管理。尽管已经有公司推出了面向企业的私有云服务器部署方案,但由于主服务器的存在,中心化的模式依旧没有改变[3]。

区块链技术是比特币数字货币体系的核心技术,去中心化是其核心优势,区块链数据的生成、验证、存储和维护都基于分布式系统。区块链技术采用纯数学方法保证数据安全可靠,而不是以中心化机构建立节点间的信任关系[4]。为此,本文设计了一个基于区块链的去中心化企业即时通信系统,以解决企业用户的数据安全问题,实现企业间用户的通信。

1 相关技术介绍

1.1 区块链技术

区块链是以比特币为代表的数字加密货币体系的核心支撑技术,去中心化是区块链技术的核心优势。区块链通过运用数据加密、时间戳、分布式共识和经济激励等手段,实现基于去中心化信用的点对点协作[5]。区块链实现的信任不来自于任何第三方背书,而是所有参与者对于共识机制的认同。任何节点可以自由加入和离去,不需要审核节点信用,通过算法的约束,完全依靠工作量证明、共同认可创造公信力[6]。

区块链具有去中心化、开放性、集体维护和安全可信等特点。①去中心化。使用分布式计算和存储,不存在中心化的硬件或管理机构,任意节点的权利和义务都是均等的,区块链由系统中所有节点共同维护;②开放性。系统是开放的,除了交易各方的私有信息被加密外,区块链的数据对所有人公开,任何人都可以通过公开的接口查询区块链数据及开发相關应用,因此整个系统信息高度透明;③集体维护。区块链采用基于协商一致的规范和协议(比如一套公开透明的算法)使得整个系统中的所有节点能够在去信任环境下自由安全地交换数据,使得对“人”的信任改成了对机器的信任,任何人为干预不起作用[7];④安全可信。区块链技术采用非对称密码学原理对数据进行加密,同时借助分布式系统各节点的工作量证明等共识算法形成强大算力抵御外部攻击,保证区块链数据不可篡改和伪造,因而具有较高的安全性[8]。

区块链由一个个按时间顺序生成的区块组成,每隔一段时间就会产生一个区块。区块主要有3个要素:上一个区块散列、本区块随机数(工作量证明)和区块生成这段时间的所有数据。每个区块都会有生成时间戳,区块一旦生成就不能被更改[9]。区块链的局部结构如图1所示。

1.2 工作量证明

为了防止大量垃圾数据加入区块链中,区块链在生成过程中会有一定工作量[10]。而任何服务器上传本服务器数据希望加入区块链时,需要支付一定的费用,以此吸引其它拥有计算力的服务器参与区块链生成,获取一定的佣金[11]。

在完成工作之后需要工作量证明,系统设立以下规则:在确定一个区块之前要算出一个随机数,以至于将这个随机数与区块内容一起输人哈希函数时,得到二进制数的前位均为0。如前所述,无法预先选择一个前十位为0的数,并利用算法反推出这个随机数。唯一可行的办法是,随机抽取一个数将其与区块内容放入函数中进行计算,看结果是否满足要求,如果不满足就换一个随机数继续尝试,直到满足要求为止。只要设定的要求足够简单,要求全为0的个数不太多,寻找这个随机数的过程也就比较简单,只不过要花一定时间(例如几秒或几分钟)。这种过程虽然从表面上看没有产生任何价值,但却是解决互联网中信任问题的有效办法,是不可靠网络环境中一种较为可靠的信用证明[12]。

2 系统框架设计

整个系统由多个企业服务器和服务器下各自的用户组成,每个企业服务器都是对等的,不存在上下级关系。企业服务器可以随时加入或离开系统网络。企业拥有独立的企业服务器,能自行掌控服务器和存储账号的安全。同时,存储在服务器和区块链中的数据都经高强度加密,文件在传输过程中也都以密文形式存在,企业无需担心信息泄露。系统总体框架如图2所示。

客户端功能与普通即时通信软件的客户端相似,不同的是每个用户只属于某个企业服务器,用户的所有服务都由该企业服务器提供,在通信过程中所有数据都会用企业的公钥加密。

企业服务器主要由4个模块组成:用户管理模块、数据管理模块、区块管理模块和交互模块。用户管理模块负责与用户之间的交互,给用户提供服务;数据管理模块负责管理自身服务器下用户的数据;区块管理模块负责参与区块链的生成与校验;交互模块负责与网络中其它服务器节点之间的交互,如发送、收接数据,并筛选有用的数据。

3 系统核心模块设计

企业服务器都有一组公私钥对,这组公私钥对是服务器的唯一身份[13]。当用户在某个服务器下注册时,客户端先用该企业服务器的公钥对注册消息加密,再以组播的方式,把数据包发送到客户端中内置的一组稳定的服务器节点。服务器在收到数据包后,会尝试用自己的私钥对数据包解密。如果解密失败,表示该数据包不是发送给本服务器的,服务器会对其进行转发(服务器会维护一张服务器列表,列表上记录了系统其它服务器的IP和公钥);如果解密成功,服务器会认定这是向本服务请求的信息,对其进行处理。返回确认包,确认包中还包含了服务器IP信息,以便于与客户端直接建立连接,提供服务。客户端也会缓存一张服务器公钥和IP列表,任何成功建立连接的服务器都会记录在这张表中。

当两个服务器之间的用户进行通信时,如服务器A下的用户a发送消息给服务器B下的用户b时,用户a必须拥有服务器B的公钥[14]。具体过程如下:

(1)用户a给自己的服务器A发送消息,消息中包含服务器B的公钥和准备发送给用户b的内容,整个消息经过服务器A的公钥加密。

(2)服务器A收到消息后,先用自己的私钥对消息解密,并把准备发送给用户b的内容用私钥签名,最后用服务器B的公钥对消息加密,并将加密后的消息组播。

(3)服务器B收到消息后,用自己的私钥解密,并用服务器A的公钥验证。

(4)验证成功后,把消息发送给用户b,并发送确认消息给服务器A。

(5)服务器A收到确认消息后,发送给用户b。

3.1 交互模块

交互模块主要负责与其它服务器或用戶之间的通信,进行消息发送与接收。服务器在收到消息后,交互模块首先用私钥解密,解密成功则把消息传递给用户管理模块处理,如果失败就将消息转发。

该模块会维护一张服务器列表,服务器之间每隔一段时间会同步这张列表。新加入的服务器列表中只保存几个稳定的服务器信息,更新后列表会越来越丰富,同时会把自己服务器信息传递给其它服务器。

3.2 用户管理模块

用户管理模块与用户联系最为紧密,在服务器与客户端成功建立连接后,服务器中的绝大多数服务都是由用户管理模块提供的。该模块提供了注册与登录服务、用户状态实时更新服务、个人云空间服务和跨服务器通信服务等。

在注册与登录服务中,当交互模块成功获取到数据包连接请求之后,传递给用户管理模块,用户管理模块向客户端发送一个数据包,数据包中包含客户端IP、服务器IP和确认接收信息。客户端收到数据包后,开始注册、登录操作,发送注册、登录的请求包,请求包中含有客户端版本号和用户账号密码等信息。用户管理模块收到请求包后,如果是注册,则进行注册服务并返回注册结果;如果是登录,则进行登录验证,验证成功后,发送登录成功数据包,数据包中含有账户信息。

用户状态实时更新是指用户每次登录成功后,服务器会把用户的信息发送给用户,包括用户的账户信息、好友聊天记录、个人云空间消息以及好友信息状态。同时,在服务器端更新用户信息,并对该用户在线好友的信息进行更新。用户在修改自己信息后,服务器也会实时更新服务器端与其好友端的信息[15]。

个人云服务的功能类似于QQ云空间,用户可以把自己的文件存放在云空间中,存储在服务器里。当用户在其它设备中登录时,可以从云空间同步下载。

在跨服务器通信服务中,用户不仅可以与同一服务器的其它用户通信,还能与其它服务器下的用户互加好友并通信。当跨服务器添加好友时,请求用户需要发送被请求用户的ID和其所在服务器的公钥给自己所在服务器。用户管理模块会把添加好友消息传递给交互模块,交互模块会对消息私钥签名,然后用被请求服务器的公钥签名,最后把数据包发送出去。被请求服务器接受请求包后依次进行私钥解密和公钥验证操作,操作全都成功才会处理请求内容,并返回请求结果。请求服务器收到请求结果后转发给请求用户。跨服务器通信的过程与添加好友类似。

3.3 数据管理模块

数据管理模块管理的数据主要有用户数据、区块链数据和服务器列表。用户数据主要服务于用户管理模块,提供存储、更新和查询等服务。区块链数据则服务于区块管理模块,由区块管理模块生成、更新。

3.4 区块管理模块

区块管理模块主要参与区块的生成与校验。每隔一段时间,区块管理模块就会向网络中发送要加入到区块链中的数据。数据是经过服务器公钥加密的,其它服务器即使得到数据也无法解密查看。由于区块链记录了整个网络中所有数据,而网络中的数据量十分巨大,因此本系统区块链中保存的不是数据本身,而是数据经过哈希计算后的哈希值。哈希算法是不可逆算法,所以区块链中保存数据哈希值的目的是提供数据的校验[16]。

数据本身也会在网络中共享,任何服务器都有权限下载、保存。当本地服务器的数据因为各种原因损坏或丢失后,可以向网络中保存数据的服务器发送请求,获取数据后,通过区块链验证。一旦验证成功,本地服务器需要向请求的服务器支付一定费用,以激励网络中的贡献者。

服务器可以选择加入区块链与只保存在本地服务器的数据,但是保存在本地的数据一旦丢失或损坏,数据将无法恢复(或者也可以自己备份)。系统会根据加入的数据量收取一定费用,以激励其它服务器参与区块链的生成。

4 安全性设计

本系统中,数据包在任何一次通信过程中都经过加密,保证了数据的安全性。当用户发送数据给服务器时,数据通过服务器公钥加密,确保只有服务器能解密;当服务器发送数据给用户时,数据通过用户密码加密(对称加密),确保只有用户能解密;当服务器之间进行通信时,数据通过对方服务器公钥加密。在这3个过程中,他人即使获取数据密文,由于没有密钥,也就无法解密获取数据明文,保证了系统的安全性。

5 结语

传统的企业级即时通信系统都是中心化系统,基本不能实现企业间通信,企业用户的数据信息安全也存在着很大隐患。本文利用公钥加密技术、区块链技术设计了一个去中心化的企业级即时通信系统,将用户数据交还给企业自身管理,保证企业数据不外泄,同时解决了企业间通信的问题。本系统还采用区块链技术,即使企业服务器数据丢失或损坏,通过分布式网络仍可以重新找回数据,以保证企业数据的安全。然而,目前区块链技术处于探索和研究阶段,区块链的效率会直接影响系统效率,而区块链的效率问题仍需进一步研究。

参考文献:

[1] OGARA S O,KOH C E,PRYBUTOK V R.Investigating factors affecting social presence and user satisfaction with mobile instant messaging[J].Computers in Human Behavior,2014,36:453-459.

[2] CHURCH K,DE OLIVEIRA R.What's up with whatsapp:comparing mobile instant messaging behaviors with traditional SMS[C].Proceedings of the 15th International Conference on Human-Computer Interaction with mobile Devices and Services.ACM,2013:352-361.

[3] 周文瓊,王乐球,周桐,等.基于XMPP的企业即时通信系统研究与应用[J].吉林大学学报:信息科学版,2010(1):106-111.

[4] 袁勇,王飞跃.区块链技术发展现状与展望[J].自动化学报,2016(4):481-494.

[5] 蔡维德,郁莲,王荣,等.基于区块链的应用系统开发方法研究[J].软件学报,2017,28(6):1474-1487.

[6] 杨晓晨,张明.比特币:运行原理、典型特征与前景展望[J].金融评论,2014,6(1):38-53+124.

[7] 上海金融学会票据专业委员会课题组.区块链技术如何运用在票据领域[N].上海证券报,2016-04-23.

[8] ZYSKIND G,NATHAN O,PENTLAND A.Decentralizing privacy:using Blockchain to protect personal data[C].San Jose:2015 IEEE Security and Privacy Workshops,2015.

[9] 陈何清.基于区块链的IMIX传输系统的设计与实现[D].南京:南京大学,2016.

[10] WATANABE H,FUJIMURA S,NAKADAIRA A,et al.Blockchain contract:a complete consensus using Blockchain[C].Osaka:2015 IEEE 4th Global Conference on Consumer Electronics,2015.

[11] 沈鑫,裴庆祺,刘雪峰.区块链技术综述[J].网络与信息安全学报,2016,2(11):11-20.

[12] 杨晓晨,张明.比特币:运行原理、典型特征与前景展望[J].金融评论,2014(1):38-53+124.

[13] SCHAUB A,ROSSI D.Design and analysis of an improved bit message anti-spam mechanism[C].Boston:2015 IEEE International Conference on Peer-to-Peer Computing (P2P),2015.

[14] ADRIAN D,BHARGAVAN K,DURUMERIC Z,et al.Imperfect forward secrecy:how diffie-hellman fails in practice[C].Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security,2015:5-17.

[15] 雷文礼,任新成,高瑛.基于Linux平台的通信软件的设计与实现[J].现代电子技术,2015,17:30-33.

[16] DECKER C,WATTENHOFER R.Information propagation in the Bitcoin network[C].IEEE P2P 2013 Proceedings,2013:1-10.

(责任编辑:何 丽)

猜你喜欢
去中心化企业级区块链
企业级BOM数据管理概要
基于慕课网的“企业级应用开发”课堂教学改革探索
区块链技术的应用价值分析
“区块链”的苟且、诗和远方
“去中心化”电子商务背景下大学生网络创业前景分析
企业级信息系统应用级灾备建设与应用
用“区块链”助推中企走出去
城市轨道交通企业级BIM应用策划研究