群组密钥协商(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)。
1976年,Whit Diffie和Martin Hellman共同提出了Diffie-Hellman[1]算法(简称DH),这是一种两方密钥交换协议,用于两个对等实体安全地协商共享密钥。DH算法实质是一个通信双方进行密钥协定的协议,它的安全性基于有限域上计算离散对数的困难性。
Diffie-Hellman密钥交换协议如下:
首先,Alice和Bob双方约定2个大整数n和g,其中1<g<n,这两个整数无需保密,然后,执行下面的过程
1) Alice随机选择一个大整数x(保密),并计算X=gx mod n
2) Bob随机选择一个大整数y(保密),并计算Y=gy mod n
3) Alice把X发送给B,B把Y发送给ALICE
4) Alice计算K=Yx mod n
5) Bob计算K=Xy mod n
K即是共享的密钥。
监听者Oscar在网络上只能监听到X和Y,但无法通过X,Y计算出x和y,因此,Oscar无法计算出K= gxy mod n。