Byzantine故障环境下安全群组通信方案

2010-06-06 06:56吕金娜张志军
关键词:通信安全访问控制群组

吕金娜,张志军

(1.河南科技学院,河南 新乡 453003;2.空军 95824部队,北京 100195)

安全群组通信系统[1]是构建可靠到网络应用程序的中间件,有利于实现程序设计的模块化结构,降低程序设计的时间与减少程序的漏洞.最近几年,在学术与工业领域,安全群组通信系统已成为集群服务器和复制产品的标准构件.

现有安全群组通信只能防止一些主动攻击或者被动攻击,基本上还是第一代网络安全防御技术的思想,能够实现数据的保密性、独立性、前向保密性及后向保密性等,但是很难预防带有容忍入侵式攻击,如内部攻击、叛变攻击等.大部分群组通信系统[2-3]忽视Byzantine故障的原因是群组通信系统用于集群应用中,这些应用程序运行在局域网内,在这较为紧凑的环境内都假设成员是可信的.现在大部分工作均处在异步异构网络环境下,如Internet环境,所以群组成员的可信度是很低的,达不到可信组成员的标准.一些组成员的恶意攻击,如进程出错,发布不一致的消息或者群组协商时让其它成员无限等待消息.基于这种思想,设计一种Byzantine故障环境下的安全群组通信方案,旨在抵抗群组成员的叛变攻击.

1 Byzantine故障环境下安全群组通信体系结构

1.1 体系结构

在Byzantine故障环境下,安全群组通信系统从结构上可划分为四层:可靠多播层,全序多播层,群组管理层,通信安全层(图1).其中可靠多播层用于发送的信息被接收方正确接收到要通过通过可靠性保证措施,即数据重传机制;全序多播层用于通过全序多播协议提供发送方到接收方群组各成员的可靠、有序的信息传送的保证;群组管理层包括群组地址分配、群组的建立、群组的关闭、群组成员的动态加入和退出、错误恢复等功能,通过为群组群组分配地址,所有发送到这个群组的信息都以这个群组地址为接收方地址,所有组成员都接收发送到该群组的数据;通信安全层主要从群组管理层的安全性角度出发,进行群组密钥管理,保证成员加入的合法性、离开后的安全性等性质,群组密钥管理主要包括密钥的产生、交换、存储、更新和销毁等操作.

图1 安全群组通信分层结构

完善的通信安全层需要提供的安全服务,包括认证服务、访问控制服务、数据机密服务、数据完整性服务、数据源点认证服务等.通过密钥协商协议维护一个组成员共享的群组密钥保护组内数据不被非组成员破译;使用加密算法保证数据机密性.数据完整性由高速MAC算法保证;对客户端加入或离开进行身份认证,对系统资源进行访问控制;对于在Byzantine故障环境下,能够应对组成员的恶意攻击等.为了实现上述安全服务,设计通信安全层至少包含四个模块:加密模块、密钥协商模块、Byzantine模块和认证与访问控制模块(图2).

图2 通信安全层结构

(1)认证与访问控制模块当一个客户端应用程序连接服务器组时,服务器组对其进行认证[4],必须是合法用户.当客户端应用程序加入群组后,对群组的信息源认证以及资源的访问控制.

(2)Byzantine模块Byzantine探测模块进行心跳检测,当发现有群组成员进行异常时,就调用Byzantine协议模块进行协商,通过认证模块确定叛变成员以避免恶意攻击行为保证系统正常运行.

(3)加密模块客户端发送数据要进行加密时,调用加密模块.该模块共有三个部分:①加密引擎,当检测到发送消息时,该模块传递信息给加密选择器;②加密选择器,当加密引擎送来信号时,加密选择器就调用一个加密算法;③加密算法,加密算法序列集合提供DES,AES,Blowfish加密算法.

(4)密钥协商模块该模块功能是根据加密算法协商群组密钥用于加密组内数据.当群组成员有加入、离开或更新密钥时,密钥协商协议重新协商群组密钥.该模块也分三个部分:①密钥协商引擎,当客户端应用程序加入、离开或者密钥更新时,密钥协商引擎被触发,并传递值到密钥协商选择器;②密钥协商选择器,当密钥协商引擎送来信号时,密钥协商选择器就调用密钥协商协议;③密钥协商协议,密钥协商协议序列集合提供TGDH协议,STR协议,GDH协议,BD协议及CKD协议[5].

1.2 Byzantine协议

假定有m个叛徒的Byzantine[6]环境,其算法OM(m),m>0

(1)司令官发送他的值给每一个副官;

(2)对于每一个i,用vi表示第i个副官从司令官处接收到的消息.当它没有接收到来自司令官的值时,则采用默认值.第i个副官扮演算法OM(m-1)中的司令官,将值vi发送给其它n-2个副官中的每一个;

(3)对于每一个i,以及不等于i的每一个j,用vj表示在算法OM(m-1)的第2步中将军i从将军j处接收到的消息.当它没有接收到任何消息时,则采用默认值.将军i使用majority(v1,...,vn-1)求出最终的值.

2 方案运行

从通信安全层具体的实现模式上把通信安全层的安全服务分为两部分,认证与访问控制模块与密钥协商模块放在服务器端,把加密算法模块与Byzantine模块放在客户端函数库内.在服务器端主要有认证与访问控制模块与密钥协商模块.通过在客户端函数库设计一个函数来完成从服务器组密钥到客户端群组密钥的映射.服务器端通信安全层为如下图3所示.

图3 服务器端通信安全层

客户端函数库内容由加密模块与一个单向函数f_key_s-c(…)构成如图4所示.

图4 客户端函数库

其中设计单向函数目的是完成从服务器组密钥到客户端群组密钥的映射.函数参数:服务器组密钥、群组名与群组成员数量.服务器组密钥:服务器组间调用群组密钥协商协议协商的组密钥;群组名:客户端申请加入群组名称;群组成员数量:一个群组动态标识.此设计单向函数:f_key_s-c(chararray[i],chara[j],intk).该函数功能:通过三个输入参数返回一个字符数组;具体函数伪代码如下:

(1)输入 chararray[i],chara[j],intk;

(2)求出数组 array[i],的长度 length(array[i]);

(3)求出字符数组 a[j]的长度 length(a[j]);

(4)求 length(a[j])与 k 的和 num=length(a[j])+k;

(5)if(num=length(array[i]))thennum+=1;

(6)if(length(array[i]%2=0))循环左移num次;

(7)else循环右移num次;

(8)returnarray[i];

本方案运行分为服务器启动、客户端端连接、客户端加入群组.服务器启动包括连接服务器成为一个服务器组,为后来客户端应用程序通信提供消息传输等服务;客户端连接主要是指服务器与客户端的连接,基于负载均衡的思想,使安全服务包含在客户端与服务器两端.客户端经过连接服务器后要进行群组通信就要加入群组,组通信维护于连接的客户端应用程序之中,具有实时性.

2.1 服务器组启动

假定服务器组为S={S1,S2,…,Sm}.客户端应用程序组为C={C1,C2,…,Cn}.一般情况下m<

Step1:服务器Sj请求加入服务器组S;

Step2:检查服务器组的请求服务器的IP列表是否与匹配.如果匹配,允许加入,否则不允许加入;Step3:服务器组生成新的成员关系ID发送给每一服务器组成员.

2.2 客户端连接服务器组

客户端应用程序Ci连接服务器组S,客户端通过调用连接函数连接客户端,安全群组通信采用C/S通信模式,在这个过程要对客户端应用程序Ci进行认证.认证机制的目的在于确认潜在的组成员的身份,并为访问控制模块提供必要的主体信息.认证主要是对客户端所宣称的身份认证,在客户端与服务器端均有认证模块,分为客户端认证模块与服务器端认证模块,其认证过程如下:

Step1:客户端Ci调用客户端函数库的设置认证方法函数;

Step2:客户端向服务器端请求连接并发送用户ID与其他信息给服务器组S;

Step3:服务器组S接收到连接后发送一个所有允许认证方法列表给客户端Ci;

Step4:客户端Ci根据返回的列表,选择认证方法并提供相关信息客户端ID,用户名称等并发送给服务器组S;

Step5:服务器组就调用对应的认证函数对客户端Ci进行认证;

Step6:如果认证超过时间阈值△t,就调用对应的回调函数终止认证过程,断开连接;

Step7:认证模块把认证结果返回给后台程序;

Step8:如果认证成功后台程序允许该连接请求,否则断开连接.

2.3 客户端加入群组

认证是由客户端与服务器之间完成,主要有服务器组对客户端进行认证.认证结束后进行访问控制,访问控制机制在群组成员之间完成.由于各成员之间都是对等的关系,不存在中心控制点,所以每当新成员加入时,所有该群成员都要参与新成员加入的决策.加入策略应由群组创建者来确定,并且由当前群组成员共同协商完成维护.因此,访问控制机制应分为两部分,组创建过程与新成员加入.在对等群组通信中,组策略应该有组创建者首先创建并有以后加入的所有成员共同维护.组创建者要规定自己的组策略,其组策略创建过程如图5所示.

图5 组策略创建过程

在这个阶段客户端程序Cn+1要加入群组C进行通信,群组C是由客户端程序组成C={C1,C2,…,Cn}.新成员Cn+1加入之前,组策略不变的.若需要改变,组成员共同协定.组创建者应规定组成员是否允许加入其它组、单播、多播、广播等,因此当允许新成员Cn+1加入时,其组策略只需要由组成员发送给其新成员即可.

Step1:新成员Cn+1发送一条加入请求消息给群组C;

Step2:群组C的所有组成员协商完成加入组策略;

Step3:所有成员发送赞成消息或拒绝消息给其他成员;

Step4:每个群组成员计算收到的信息来确定是否同意新成员加入,若拒绝加入群组C,所有组成员发送拒绝消息给新成员Cn+1,否则转入下一步;

Step5:群组C的任意一个成员发送加入策略给新成员Cn+1;

Step6:新成员Cn+1收到允许加入群组C的消息并收到组策略;

Step7:服务器组检测群组成员关系变化或密钥更新请求时,服务器组调用密钥协商协议计算服务器组密钥;

Step8:群组C的所有成员调用客户端函数库群组密钥计算函数f_key_s-c(chararray[i],chara[j],int k)计算出群组C的群组密钥;

Step9:客户端运行Byzantine协议,检测所有组成员为忠诚的组成员进入下一步,否则删除掉叛变者,进入Step3;

Step10:检查客户端是否请求加入其他群组.如果是,则转到Step7,否则下一步;

Step11:服务器组S检测是否更新服务器组密钥,如果是,则转到Step19,否则下一步;

Step12:服务器组S检测是否客户端离开群组C,如果是,则转到Step10,否则下一步;

Step13:服务器组S检测是否客户端加入群组C,如果是,则转到Step1,否则停止.

3 结论

为了提高群组通信系统安全性及具有容忍入侵性,本文提出了一种Byzantine故障环境下的安全群组通信方案:在安全群组通信的通信安全层中引入Byzantine协议.通过采用Byzantine机制在组成员间达成一致的意见,从而检测出叛变者.在忠诚的组成员之间进行密钥协商,从而能够保证在组密钥协商之前参与协商的群组成员不是叛变者,与以前方案相比,该方案能够防御内部攻击,但是它在通信开销与计算开销都有所增加.

[1]CristinaNita-Rotaru.High-Performance Secure GroupCommunication[M].Baltimore,Maryland,2003.

[2]Ohad R,Kenneth P B,Danny D.The Architecture and Performance of Security Protocols in the Ensemble Group Communication SystemUsingDiamonds toguardthe castle[J].ACMTrans onInformationandSystemSecurity(TISSEC),2001,4(3):289-319.

[3]YairAmir.Secure Spread An integrated Architecture forsecure Group Communication[J].IEEE transactions on dependable and secure computing,2005,2(3):248-261.

[4]YairA,Nita-Rotaru C,Stanton J.Framework forauthentication and access control of client-servergroup communication systems[R/OL].CNDS2001-2,Johns Hopkins University,Center of Networking and Distributed Systems,2001.http://www.cnds.jhu.edu/publications/.

[5]YairAmir.Onthe Performance ofGroupKeyAgreementProtocols[J].ACMTransactions oninformation,2004,7(3):457-488.

[6]Leslie Lamport.The Byzantine Generals Problem[J].ACMTransactions on Programming Languages and Systems,1982,4(3):382-401.

猜你喜欢
通信安全访问控制群组
数据加密技术在计算机网络通信安全中的应用
RSMSobol法的参数群组敏感性快速定量评估分析
ONVIF的全新主张:一致性及最访问控制的Profile A
动态自适应访问控制模型
浅析电力系统通信安全措施
浅析云计算环境下等级保护访问控制测评技术
大数据平台访问控制方法的设计与实现
基于统计模型的空间群组目标空间位置计算研究
接触网无线遥控开关站的通信安全技术研究
网络应用软件数据安全隐患与防范策略