许多现成的分布式软件需要为各个群组成员间传送群组信息和群成员资格认证,然而,IP多播仅可以提供不可靠的无序的信息传输服务,TCP提供的可靠的信息传递但是仅限于两个群组成员之间。因此,一种类似TCP的可靠的为群组(任意大小)成员提供多点信息传输服务的IP多播协议成为我关注的主题。
一个在Internet上的群组为例子将更有助于问题的具体化,先假设这个群组具有以下的特点:
1) 群的大小任意
2) 网络传输具有时延
3) 群的消息是异步的
4) 群不断发生多种事件如群组成员加入或离开, 群组间合并或拆分。
针对上面的需求,一种简单的思路是:
a) 假设群里面只有一个消息发送者,确保消息的有序性
b) 群组成员的接收模块采用请求-重传机制,以保障网络的不确定性
虽然,这些传输机制基本上能满足一些简单的群组通讯需求,但是,如果群中有多个消息发送者而且网络环境是P2P呢?消息该如何同步且多播协议如何实现?
群组密钥协商(Group Key Agreement)是一个群组之间实现安全通讯的基础部分。它基于分布式的思想,特点是:1)群组的多个成员一起参与密钥生成 2) 群组中的密钥是由每个成员提供的参数以及密钥生成算法共同决定的 3) 群组中任何成员均不能事先确定密钥。有几种流行的的群组密钥协商及分配方法,包括CKD(Centralized Group Key Distribution),BD(Burmester-Desmedt),STR(Steer et al.),GDH(Group Diffie-Hellman)和TGDH(Tree-Based Group Diffie-Hellman)。
其中,GDH是基于环的思想,TGDH 基于Key Tree的思想,BD基于全广播的思想。三种算法在群组密钥协商协议中均有自己的优缺点,某些协议太过于理想化,没考虑到某些网络节点之间可能存在不可达性;某些协议过于复杂,很难实现。以join操作为例,对GDH和TGDH协议在四个方面进行考察:
(n为群组成员个数)
密钥协商轮数 消息数目 环单向广播 IP多播
GDH 4 n+3 n+1 2
TGDH 2 3 不需要 1
BD 2 2n+2 不需要 2n+2
综合上述,可知TGDH是基于Key树的思想,在分布式网络(尤其是P2P网络)中,更能显示其健壮性。但是,如何确定Key树,如何在Key树中实现IP多播,这正是我要研究的课题——P2P环境下的群组密钥协商。
我的研究分为两部分,第一层是传输层协议设计,参考JGroup,InterGroup和JXTA;第二层是群组密钥协商协议(以TGDH协议为主)实现。
我打算分三阶段进行研究,设计了三个里程碑:
第一阶段,借鉴JGroup, InterGroup和JXTA Group的IP MultiCast功能,定义并实现网络传输层接口。
第二阶段,借鉴TGDH协议,并在Group内的多个Peer间建立Key树(Tree,即TGDH中的T),此阶段的重点是多个Peer(可能跨越多个网络)之间如何形成群组关系(Group Membership)。
第三阶段,实现群组的密钥协商协议,即通过计算实现Group Key Agreement。