灵活的按需计算子组密钥的群组密钥交换
1 子组阶段流程
在涉及相邻位置的用户 Ui 和 Uj 的场景中,为避免在推导不同子组密钥时使用相同的 z′i,j 值,我们引入子组会话 ID ssidi,它是所有 Ui∈spid 的 (Ui, yi) 的连接,并将其作为额外输入提供给哈希函数 H。
1.1 子组阶段步骤
当输入任何子组 spid ⊂ pid 时,相应的用户会执行以下步骤。为便于表述,假设 spid = (U1, …, Um),其中 m < n,且 U0 = Um,Um+1 = U1。
1. 第一轮 :每个 Ui∈spid 按以下方式操作:
- 从 sidi 中提取 ssidi := (U1|y1, …, Um|ym);
- 计算 k′i−1,i := yxi i−1 和 k′i,i+1 := yxi i+1;
- 计算 z′i−1,i := H(k′i−1,i, ssidi) 和 z′i,i+1 := H(k′i,i+1, ssidi);
- 计算 zi := z′i−1,i ⊕ z′i,i+1;
- 计算 σi := Sign(ski, (Ui, zi, ssidi));
- 广播 (Ui, zi, σi)。
2. 子组密钥计算 :每个 Ui 检查 z1 ⊕ … ⊕ zm = 0 是否成立,以及所有收到的签名 σj 是否有效。若任何检查失败,则中止;否则,Ui 按以下方式操作:
- 对每个 j = i, …, i + m - 1 迭代计算:z′j,j+1 := z′j−1,j ⊕ zj;
超级会员免费看
订阅专栏 解锁全文
44

被折叠的 条评论
为什么被折叠?



