APP下载

基于分布式系统的加密实时通信架构设计

2020-10-26王镇威朱命冬

无线互联科技 2020年14期
关键词:透明性线程密钥

王镇威,张 皓,朱命冬

(河南工学院,河南 新乡 453003)

1单服务器通信

在通信模式中,单服务器通信架构将服务器作为中转,采用传输控制协议(Transmission Control Protocol,TCP),实时监听通信端链接请求,并完成端到端通信。当通信端向服务器发起通信请求时,实时监听的服务器会接收通信端的通信请求,采用TCP建立链接(3次握手),并且在通信端与服务器之间建立一个套接字(socket)信道[1]。

当通信端向其他通信端发起通信时,服务器作为通信的中转站,通过与各个服务端之间的socket信道完成信息的交互,达到通信的目的。在单服务器通信模式中不难发现,通信过程没有任何保密措施,服务器持续监听,通信端和服务端的身份得不到验证和授权。服务器端和通信端都可以被伪装,进而窃取通信信息。

2 分布式系统解决的问题

对于分布式系统来说,相关的挑战主要有7个:异构性、开放性、安全性、可伸缩性、故障处理、并发性、透明性[2]。本文主要关注并发性和透明性对实时通信系统的影响。

2.1 并发性

多个通信端同时请求访问一个资源,将导致并发问题的出现。例如,在实时通信系统中,如果多个通信端试图阅读当前通信用户列表,而又有多个通信端同时退出通信。当每个通信端连接到服务器时,服务器中将有一个新线程,线程将遇到并发问题。有些线程的操作可能被其他线程覆盖,数据存储室列表可能与预期结果不符。因此,在操作相同的资源时,需要同步线程。

当两个或多个线程同时访问一个对象的相同资源时,可以使用同步方法和同步块。至于同步方法,不同对象实例中的不同同步方法是不相关的,意味着其他线程仍然可以访问同步方法,即使在同一个类中,只要方法属于不同的对象。

如果两个线程需要访问同一对象中的同一个同步方法,则必须按顺序访问。一个线程将先访问资源,另一个线程必须等到前一个线程完成任务。使用同步方法也有缺点,同步方法的访问效率会降低。另一种方法是使用同步块,可以将块分配给任何对象,因为可以针对特定的代码块,在同时访问同一资源时线程将按顺序执行事务。

2.2 透明性

对透明性而言,一个分布式系统主要有8个方面的透明性:访问透明、位置透明、并发透明、复制透明、故障透明、移动透明、性能透明和伸缩透明[2]。在单服务器实时通信中,位置透明是显而易见的,因为通信端不需要知道服务器在哪里,也不需要知道其他通信端的位置信息,而是需要通过服务器的IP地址连接到服务器。

在系统中,故障透明性是可靠的,因为如果通信系统接收到异常,不会将其抛给通信端,而是处理异常并向通信端提供反馈,用户仍然可以根据反馈完成任务,而不是退出。还有一些透明度在通信系统中不可用,比如,访问透明,因为所有的资源都在同一个服务器上。换句话说,服务器不是分布式的,因为只有一个服务器。

3 分布式服务端架构

分布式多服务端体系结构也基于通信端-服务器模型。然而,多服务器体系结构中的通信端和服务器是分布式的,与基本的通信端和服务器模型有所区别。

如果传统的通信端和服务器模型中有两台服务器,模型如图1所示。

图1 分布式服务端通信架构

两个服务器可以互相交换消息,因为之间有一个链接,可以看作是一个简单的分布式服务器系统。每台服务器将为一组特定的通信端维护一个数据库或数据结构,服务器还将保留其他服务器的信息。不同的服务器位于不同的位置,但仍然可以相互通信。例如,如果通信端A需要与通信端C和D通信,首先,向服务器1发送一个请求,当服务器1开始处理该请求时,会在本地通信端列表中搜索通信端C和通信端D。如果不在本地通信端列表中,则服务器1将向服务器2发送一个请求,以进行通信端通信。当服务器2收到请求时,将在处理请求后响应服务器1。通信端A可以与通信端C和通信端D进行通信,而不需要服务器2的端口和地址,信息将由分布式服务器处理。

3.1 分布式服务器交互

对于多服务器分布式通信系统的实现,服务器将在不同的地方接入互联网。通信端将只连接到自己的服务器,因此,服务器的拓扑结构应该是一个网络映射,如果通信端需要与属于远程服务器的其他通信端通信,则为该通信端创建的本地服务器中的线程将向远程服务器发送请求。

对于本地服务器和远程服务器之间的通信,可以看作是一个简单的通信端和服务器模型。本地服务器将扮演通信端的角色,而远程服务器将接收本地服务器发送的请求。将在本地和远程服务器的两个线程之间构建一个socket信道。该模型中的服务器不仅要维护本地通信端信息,还要维护其他服务器的部分或全部信息,如IP地址、端口号以及特定数据结构中其他服务器的通信端列表。当本地通信端需要与远程通信端建立连接时,本地服务器就可以准确地连接到特定的远程服务器。

3.2 服务器间数据分布

在单服务器模型中,数据将存储在同一个服务器中,而在多服务器模型中,数据是分布式的。拓扑结构中的每个服务器将只维护属于本地服务器区域的通信端数据,此外,还将使用一个数据结构来保存其他服务器的信息。数据结构可以轻松帮助本地服务器建立与远程服务器的连接,就像一个分层的数据管理系统。数据将存储在不同的地区,并在当地建立索引和索引目录。

从单服务器系统到多服务器系统,由于多服务器体系结构的高透明度,通信端操作不需要改变。当用户请求本地或远程服务器上的资源时,用户不知道自己访问的是哪个服务器,从通信端的角度来看,所有服务器都可以看作是一台服务器。与单服务器系统相比,多服务器系统只改变了服务器的体系结构,使服务器能够相互通信。对于通信端,架构可以是相通的。当一个通信端运行两个线程时将连接到服务器,一个读、一个写。

3.3 分布式实时通信模型评估

使用多服务器体系结构有许多好处,其效率高于单服务器系统。例如,如果一个任务有10个子任务,则每个子任务需要1 h才能完成,所以,使用单服务器系统需要10 h才能完成任务。但是如果系统有10台服务器,可以同时处理10个子任务。理想状态下完成任务只需要1 h左右,此外,故障容忍度比单服务器系统更高。例如,如果一个服务器在一个服务器系统中发生故障,那么所有的通信端都将受到影响。如果系统中有多台服务器,其中,一台服务器发生故障不会影响其他服务器,用户就可以在其他服务器上完成自己的任务。此外,多服务器系统的可扩展性很高,因为可以增加或减少多个服务器中的通信端数量,而不会影响系统的体系结构。

多服务器架构也有缺点:首先,不同服务器的维护将花费大量资源。其次,多服务器体系结构的安全性很难保证,因为任何一个服务器都有可能受到攻击并引发问题。最后,由于服务器的位置和数量的限制,管理和复杂度控制变得困难。

4 加密实现

密码学的基本概念是对信息进行加密和解密。原始数据称为明文,具体来说,通过使用一些算法和密钥,可以将明文转换为一些不规则的数据,数据被称为“密文”,过程称为加密,算法称为加密算法。同理,只要得到密钥和算法,解密就是加密的相反过程。在实时通信的过程当中,通信的加密大致分为两种,分别是对称加密和非对称加密[3]。

4.1 证书和安全的套接层

在通信系统中,服务器拥有一个官方证书,可以看作是一个可靠的第三方[4]。服务器将向通信端授予公钥证书,以便通信端可以获取服务器的公钥,然后通信端可以使用公钥加密发送到服务器的信息。服务器可以使用自己的私钥来解密信息,使用非对称加密的方法保证信息准确性。SSL协议为基于TCP/IP协议和通信端-服务器模型的Web应用提供了数据完整性和安全传输等安全措施。实际上SSL协议可以看作是开发系统模型(Open System Infrastructure,OSI)中传输层和应用层之间的中间件,给信息交互提供一个安全的信道[6]。

基于SSL协议连接的特点:首先,安全连接。当初始握手完成后,SSL使用对称加密方法协商密钥。其次,SSL可以使用RSA等非对称加密(公钥)方法进行身份验证。最后,由于数据中含有校验和以保持数据的完整性,所以,可以保证传输的可靠性[7]。

4.2 加密信息交互

在通信系统中可以使用Java环境下的密钥和证书管理工具(Key tool)。Key tool可以生成一个密钥库来存储所有的密钥和证书,此密钥库也受密码保护。通信端和服务器将构建一个安全套接字,以确保传输通道是安全的。在构建过程中,服务器的证书将从服务器传输到通信端在传输层和应用层之间它为信息交换、数据加密和通信端-服务器身份验证提供了一个安全的传输通道。

从分布式服务端通信架构可以看出,首先,服务器会向通信端发送一条消息显示证书,证书中包含服务器的公钥和来自可靠第三方的身份验证。传输过程采用RSA算法进行保护。通信端使用服务器的公钥加密主控密钥。服务器可以通过密钥库中的私钥对其进行解密。其次,服务器将使用其他算法生成主密钥作为SSL会话的私钥。此时一个对称算法将在传输过程中保护信息,因为它需要较少的时间来加密和解密。主密钥是私钥,还可以提高通信端与服务器之间的通信效率。加密信息交互的结构如图2所示。

当通信端将其私有信息传输到服务器时,服务器将其放入处理块中,并使用PBE算法对数据进行加密。

图2 加密信息交互

然后将这些数据存储在存储器中。当服务器需要调用或传输这些数据时,它将获取数据并对其进行解密。基于密码的加密(Password Based Encryption, PBE)算法是一种基于密码和“盐”(“salt”)概念的结合。Salt实际上是内存中生成的一个随机数[8]。这两个因素结合后,还将采用其他多种加密算法对这两个因素进行加密,被认为是对称加密算法的一个密集版本,因为没有建立新的加密算法,而是基于AES和DES等算法。因此,在服务器中来加密信息更安全。

5 结语

显然,单服务器通信采用关键字同步的方式很容易控制并发问题,但还存在透明性、安全性和可扩展性等问题。在单服务器系统中,透明度的某些部分没有被覆盖。另外,如果服务器发生故障,所有通信端都将受到影响。一台服务器的能力也是有限的。对于分布式多服务器体系结构,服务器之间可以通过简单的通信端-服务器模型进行通信。此外,它还解决了单服务器模型中存在的一些透明性问题。而分布式加密通信也有很多优点。首先,可以使用SSL技术而不是普通的socket来保证传输的安全性,还采用RSA算法对算法和私钥进行了加密,所以在SSL中存在双重加密。其次,防止了其他人冒充官方服务器的风险,因为在建立SSL的过程中需要验证服务器。再次,存储在服务器中的数据也是安全的,因为是通过PBE算法加密的,降低信息泄露的风险。最后,所有的安全功能对用户是透明的。但是此通信系统仍然有一个局限性。与其他对称算法相比,PBE算法是安全的,但密码也存储在内存中,服务器中的信息仍然存在被非法解密的风险。

猜你喜欢

透明性线程密钥
探索企业创新密钥
日本建筑师蛇形画廊展馆的透明性特征探析
密码系统中密钥的状态与保护*
网络安全审查中的透明性研究*
一种对称密钥的密钥管理方法及系统
基于ECC的智能家居密钥管理机制的实现
浅谈linux多线程协作
基于离散小波变换和奇异值分解的版权保护视频水印算法研究
基于上下文定界的Fork/Join并行性的并发程序可达性分析*
Linux线程实现技术研究