分布式协作服务器群中身份验证的研究

2019-12-23 15:57◆周
网络安全技术与应用 2019年11期
关键词:身份验证哈希校验

◆周 凯 魏 宁

(南京艺术学院信息化建设管理中心 江苏 210013)

目前在很多分布式协作业务系统群中实行的统一身份认证,可以有效实现对用户的统一认证和管理。这种形式不仅提高了用户的使用体验,而且还在一定程度上加强了信息的安全性。但它对用户身份验证只局限于用户登录层面,即用户客户端与登录服务器之间的验证,当用户验证通过后,将断开与登录服务器之间的关系,开始和业务逻辑服务器进行数据的交互。从而缺失了业务会话过程中用户客户端与登录服务器、各业务逻辑服务器之间的验证关系,当具有这层验证关系后,它将建立起三者之间的相互关联性,从而达到更高的安全防御效果,有效地防范如:嗅探密码、中间人攻击、重放攻击等安全问题。

本文将从用户登录和业务会话两个时间维度来研究身份验证过程中的安全性问题,并给出一种整体身份验证方式的实例。这种身份认证方式本质上与数据包加密没有直接联系,但有些加密(公共/私有密钥)会提供类似的功能。

1 登录验证安全

登录验证:确定用户登录的凭证与主机数据库中的信息是否一致。主要方式有用户名/密码认证、手机/验证码认证、三方平台验证等。

1.1 保障用户登录的安全问题

(1)密码安全:用户登录密码的安全是第一位的。对系统登录的密码一定要遵循以下安全原则,即避免出现弱密码。密码口令位数要高于8位;字母、数字、大小写结合;避免使用有规则性的组合密码等;尽可能降低被破解的可能性。

(2)密码存储安全:密码存储介质是存放所有认证信息数据的容器,它的安全是重中之重。一旦出现设备故障或受到攻击,被黑客以明文方式读取到用户密码,那就是灾难性的。防御主要包括两个方面:一是网络信息安全;二是硬件设备安全。前者需要建立一套完整系统的网络安全防御体系,以避免存储服务器介质被黑客攻击。后者的安全问题可以采用双机热备方式、数据备份容灾机制来完善。

(3)嗅探:主要是没有使用安全套接协议层或密码加密协议,而被黑客通过一种包嗅取器获得明文密码;或通过一些社会工程学原理将一些恶意木马程序安装到用户客户机上,从而嗅探记录用户的键盘输入信息获取到用户名密码。

(4)多次登录:不允许同一账号同时在多个相同终端上登录系统,这不仅会给系统数据同步带来更高的要求,而且无法确认用户客户端来源,不利于安全。

1.2 登录验证方式

(1)哈希验证

客户端接收到服务器发送来的一个随机数(challenge)并与输入密码计算出一个哈希值,而后将值返回给服务器,服务器会将客户端提交的哈希值与服务器之前的哈希值(随机数与存储的密码)进行校验,若匹配即校验通过。它的优势在于:密码没有直接被传送,通过嗅探无法拿到密码;随机数在每次登录请求的时候都不一样,校验时相当于“本次值”与“上次值”的校验;服务器端的明文密码是被交互的两端秘密共享的,可以用来加密客户端所有发送/接受的数据。但需要注意的是密钥的加密算法不能被轻易破解;其次明文密码的哈希值作为交互的密钥不要与验证使用同一个哈希,不然就丧失了“不可嗅探”的共享密钥的优势。

(2)秘密交换验证

客户端提交文本式密码,由服务器计算出这个文本密码的哈希值后再与服务器存储的密码哈希值进行匹配,而确定信息是否正确。这种方式的优点在于文本式密码进入服务器后被哈希,当服务器受到攻击,攻击者不会通过哈希值而得到密码。缺点在于每次向业务系统发送登录请求时用户名/密码都会被传递,若攻击者嗅探,易被窃取到相关信息;因为客户端发送到服务器的是明文密码,所以服务器会暂时存有明文密码,若攻击者能够读到服务器相关进程的内存,那也会被窃取到相关信息。

(3)公共/私有密钥

公共/私有密钥的加密系统,如安全套接层(SSL)技术,通过加密信息和提供鉴权,保护业务系统安全。SSL证书具有一个用于加密的公共密钥和一个用于解密的私有密钥。它可以同步确认客户端与服务器,并创建一种加密方式和一个会话密钥。从而建立一个具有隐私性和完整性的安全会话[1]。也可采用一些加密算法如RSA来发布密钥。

2 业务会话安全

业务会话验证:确认一个网络数据包是否由已声明认证的用户发送。

2.1 验证标签认证

用户成功登录与业务服务器进行通讯后,业务服务器计算出带有客户端ID、会话过期时间和一个服务器专用加密符号的哈希值。这个哈希值再与客户端ID、会话过期时间组成一个标签发送给客户端。而后客户端将数据头部加上标签发送给服务器,业务服务器收到数据后取出标签里的信息(哈希值、客户端ID、会话过期时间),并使用服务器内部专用加密符号重新计算哈希值,并与标签中哈希值进行匹配。若匹配,即可确认数据包来源为合法用户,反之则为过期用户。

2.2 共享密码验证

另一种方式可以采用客户端与服务器共享密码形式,这个共享密码可以是文本密码也可以是由一个密码加一个随机数的哈希值。客户端发送给服务器的数据包将包含三部分:1、客户端ID;2、由共享密码(密钥)加密过的数据包;3、未加密数据的校验和。服务器收到数据包后,从内部表中查找到用户的共享密码解密这个消息,并检查校验和。如果校验和不匹配,那么这个数据包就不是由正确的客户端发送而来。

2.3 IP地址认证

服务器查看接收数据包的源IP地址/端口号,并与服务器内部维护的所属用户的地址/端口表,进行校验。若相同,则确认数据包来源为合法用户。这种认证方式首先要保证网络中不会接收到欺骗地址包,如果有欺骗地址包的存在,导致用户认证异常,可以使用一种特定怀疑命令的直接回包形式进行确认[2]。也可以从一个随机初始位置进行循环序列索引。

3 实例设计

在一个分布式协作服务器群中,实行身份验证如下所述。

分布式协作服务器群共享一个群密码(challenge);客户端通过未加密的TCP连接登录服务器;服务器向客户端发送一个challenge值,客户端计算出该值和密码的哈希值,发送给服务器;登录服务器计算出本机储存的密码与challenge的哈希值,并与客户端发送来的进行校验,若匹配验证通过。

然后登录服务器向客户端发送一个验证授权(用户ID、授权过期时间,以及这两者与群密码的哈希值)。它还会生成一个在此会话期间客户端使用的随机密钥(用户密码和salt哈希生成的密钥),发送给客户端,并记录用户的密钥和授权过期时间。

客户端连接到协作服务器群中任意一台服务器,并通过先前获得的验证授权启动与新服务器连接。新服务器验证授权是否到期,以及哈希是否正确。并使用授权中的用户ID,从登录服务器检索客户端的加密密钥。此时,新服务器和客户端还会协商出将来用于通信的序列号。

一旦验证通过,新服务器和客户端就会交换使用会话密钥加密的数据,其中加密数据包括正确数据的散列(作为校验和)和一个序列号。并且每一个数据包都包含客户端ID和授权标识符作为包头。

客户端当前连接到的服务器会周期性的检查会话验证授权是否即将过期;如果是,它将向登录服务器请求一个新的授权并发送给客户端。

4 结语

身份验证是确认用户身份的过程,即用户客户端与一台或一组服务器主机相互通讯交互的确认。本文通过分析阐述登录时、业务会话时两阶段的多种验证方式,建立了一套系统的身份验证体系。这种身份验证体系可以完善分布式协作服务器群中各服务器之间的通信安全,有效防御嗅探、中间人攻击、重放攻击等。

猜你喜欢
身份验证哈希校验
使用Excel朗读功能校验工作表中的数据
基于特征选择的局部敏感哈希位选择算法
电能表在线不停电校验技术
哈希值处理 功能全面更易用
文件哈希值处理一条龙
声纹识别认证云落户贵州
基于Windows下的文件保密隐藏系统的设计与实现
基于FPGA的CRC32校验查找表算法的设计
巧用哈希数值传递文件
浅谈微电子故障校验