自从著名的Diffie-Hellman协议提出以来,许多两方密钥协商协议和多方密钥协商协议被提了出来,其中多方密钥协商也叫会议密钥协商或群组密钥协商。它是一种群组成员在公开信道上通信,联合建立一个共享的秘密密钥,并利用该密钥来保证消息的保密性和完整性的密钥建立技术。随着网络应用的发展,越来越多的群组通信需要进行密钥协商,以建立共同的会话密钥进行加密传输,诸如电话会议、网格计算、视频会议等。
通常,在一个群组密钥协议中,每个成员的地位是平等的,在计算过程中无先后之分。群组中的每个成员都有一个基于公钥基础设施(PKI)的密钥(公钥、私钥),他们利用有关的认证协议把各自提供的参数安全地广播出去,最后每个成员利用自己的私钥及组群中所有成员提供的参数,计算出一个共同的组密钥。非组内成员虽然能够通过窃听等手段获得成员在网络中传递的参数,但却无法计算出相应的群组成员的共享密钥。
我们说,一个安全的群组通信至少要满足以下5个方面的安全性需求。
(1)群组安全。非群组成员无法得到群组通信密钥。
(2)前向安全。一个成员离开群组后,他无法再得到新的密钥,从而保证其无法解密离开后的通信数据。为实现前向安全,在成员离开群组后,必须进行密钥的更新。
(3)后向安全。新加入的成员无法得到先前的群密钥,从而保证其无法解密加入前的通信数据。为实现后向安全,在成员加入群组后,同样也需要进行密钥的更新。
(4)抵抗合谋攻击。避免多个群组成员联合起来破解系统(或减少发生的概率)。
(5)密钥独立。一个通信密钥的泄露不会导致其他密钥的泄露。
同时还要满足以下5种服务质量的需求。
(1)低带宽占用。尽量降低密钥更新时传送的消息数,特别是对于成员变化频繁的动态群组。最理想的情况是消息数独立于群组的规模。目前一些方案提出了常数轮密钥协商协议。
(2)低通信延迟。正如军事通信对数据传输要求低延迟一样,其他一些特殊的网络应用,比如实时的网络广播,对网络延迟的要求也比较高。因此,一个密钥管理方案的设计必须考虑尽量降低数据传输的延迟,以使群组成员能够及时地获得密钥。
(3)1影响N。在一个群组中,一个成员的变动可能会影响其他所有的群组成员。特别是在动态的群组管理中,一个成员的变动(加入、离开)会迫使其他所有的成员进行密钥的更新。这也正是子群密钥管理方案提出的主要动因。
(4)服务稳健性。在一个密钥管理方案中,当部分群组成员失效时,安全多播仍然能够正常进行。
(5)服务可靠性。确保密钥管理方案在不可靠的网络环境中正确实行。
2001年,Bresson等人提出了一个基于传统公钥技术设计并采用环形通信模式的群组密钥交换协议。协议过程大体分为两个阶段:群组中的每个成员在收到消息后首先都要进行验证,当验证通过后,会计算出一些秘密信息,并且将该信息按照一定的方法添加到收到的消息当中,再将此信息转发给下一个成员。当执行到组群中的第N个成员的时候,他会生成一个临时的验证密钥,再将含有此密钥的消息广播给所有的群组成员,至此,完成了协议的一次循环。下一阶段,群组中其他成员在收到广播消息后,根据消息中的内容和自己保存的一些信息也要计算出一个临时验证密钥,如果此密钥与收到的密钥相等,计算生成一个共享密钥。
假设用户Ui只接收来自Ui-1的消息并只将消息发送给Ui+1。规定下列符号:
•p:足够大的素数;
•q:素数,满足q|p-1;
•G:阶为q的Z*p的子群;
•g:G的生成元;
•U:协议参与者的集合;(www.daowen.com)
•n:U中成员个数;
•Ui:U中第i个成员;
•x:Ui在区间(0,p-1)中随机选取的整数;
•ID:群成员U1,U2,…,Un的身份的集合{U1,U2,…,Un};
•SigUi(Fli):Ui用其私钥对发送的消息Fli={ID,Xi}进行的签名;
•V(Fli):验证消息Fli的消息源和完整性,即验证签名的正确性;
•SK:共享的会话密钥;
•H(·):单向哈希函数。
协议的具体过程如下(如图4.67所示),以4个参与者为例,ID={U1,U2,U3,U4},SK=sk=H(U1,U2,U3,U4,Fl4,gx1x2x3x4)。
图4.67 协议AKE
(1)U1随机选择x1∈(0,p-1),计算X1={g,gx1},Fl1={ID,X1},向U2发送消息SigU1(Fl1)。
协议中还提供了两种认证机制。一是用户间的双向认证(如图4.68所示)。Un广播生成的验证信息AuthUn=H(skUn,n),群组中其他成员在收到广播消息后,根据消息中的内容和自己保存的一些信息,计算sk′Ui=H(skUi,0),然后验证和收到的信息是否相等,如果相等,计算生成一个共享密钥SK=sk′=H(sk,0)。协议规定只有通过了认证才能最终完成密钥协商,从而有效地保证了其安全性。二是相互认证。和双向认证相似,群组中的所有成员都广播消息AuthUi=H(sk,i),并验证收到的消息。
图4.68 用户间的双向认证(SK=sk′=H(sk,0))
该协议存在如下攻击。假设攻击者A通过窃听已经获得了协议AKE1某一次执行的所有消息,那么攻击者通过重放U1的消息Fl1可以在当前群组中触发新一轮的协议交互,因为攻击者重放的消息确实是U1产生的合法的消息,对U2来说是验证V(Fl1)=1是成功的。之后U2、U3和U4会按照真实的协议流程进行交互并最终生成新的群组密钥。最终U2、U3和U4产生新的群组密钥,由于U1并没有参与新的协议交互,其维护的群组密钥仍然为旧密钥。
协议执行结束后,U2、U3和U4会以为他们和U1成功地进行了一次群组密钥交换,但实际上U1并没有参与协议交互。而且由于群组中生成了新的密钥,这会导致U1无法正确地接收和发送群组消息,从当前群组中无辜地被隔离出去。因此协议AKE1在成员中生成了不一致的群组密钥,是一个不安全的协议。
群组会话密钥建立以后,有的情况下有成员动态变化的情况,显然重新运行协议建立新的会话密钥代价太高,不可行。我们称成员个数固定的协议为静态群组协议,可以有动态变化的协议称为动态群组协议。一般动态的群组协议包括在成员加入或退出时的密钥更新子协议。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。