研0day3------协议论文一篇
2026/7/21 7:58:44 网站建设 项目流程

休息了好几天,开启新篇章!

看的这篇论文

An Efficient iTreeKEM-Based Group Key Agreement Protocol for Flying Ad-hoc Networks

一种高效的基于iTreeKEM的飞行自组织网络群密钥协商协议

又是新的

好先搜一下iTreeKEM,像是什么改进过的

果不其然

TreeKEM 原理解析-CSDN博客

还没看懂 先让gpt老师教我啦

一、分析题目

1.An Efficient说明作者第一目标:提高效率

为什么?说明以前的方法效率低。

2.作者不是重新发明一种密码算法。

而是在TreeKEM基础上,提出improved TreeKEM

简称iTreeKEM

3.Group Key Agreement组密钥协商。

eg.8架无人机一起执行任务。它们需要共享一个通信密钥。

4.Flying Ad-hoc Networks无人机自组织网络。

知识点

Raft


一、Raft 是什么?

一句话理解:

Raft 是一种分布式一致性协议(Consensus Protocol),它负责让很多台机器共同选出一个 Leader,并保证所有机器的数据一致。

举个生活中的例子。

假设有5 架无人机

UAV1 UAV2 UAV3 UAV4 UAV5

它们需要有一架负责:

  • 接收命令
  • 管理成员
  • 更新组密钥

于是需要选出:

Leader

问题来了:如果没有一个统一的规则,

可能发生:

UAV1认为自己是Leader UAV3也认为自己是Leader UAV5也认为自己是Leader

整个网络就乱了。

Raft 就是解决:

所有节点如何一致地选出同一个 Leader。


二、Raft 的工作过程

Raft 把节点分成三种状态。

Follower(跟随者) Candidate(候选者) Leader(领导者)

第一步:开始时

大家都是 Follower。

例如:

A Follower B Follower C Follower D Follower E Follower

没人发号施令。


第二步:Leader 消失

假设:

Leader 坏了。

大家发现:

很久没有收到 Leader 的消息(Heartbeat,心跳)。

例如:超过 300 ms。

于是:某个节点会说:

我要竞选!

例如:

B ↓ Candidate

第三步:拉票(Vote)

B 会给所有节点发消息:

Vote for me.

其它节点:

如果觉得B 合法。就投票。

例如:

A → B C → B D → B

B 获得:3票。

超过:5/2。

于是:

B ↓ Leader

整个系统:

统一。


第四步:发送 Heartbeat

Leader 会不停广播:

Heartbeat Heartbeat Heartbeat

告诉大家:

我还活着。

Follower 就不会重新竞选。


三、Raft 为什么很流行?

因为它解决了:

分布式系统最难的问题:

一致性(Consensus)

例如:数据库:ZooKeeper、etcd、Kubernetes

很多都用 Raft。


四、为什么这篇论文不用 Raft?

这是重点。

论文第二个贡献写的是:

不采用 Raft,而采用基于 Hash Ring 和 Smart Contract 的 Leader Election。

为什么?

因为:Raft太重。


Raft 每次选 Leader:

需要:

Leader挂掉 ↓ Candidate ↓ 广播Vote ↓ 大家回复 ↓ 统计票数 ↓ Leader产生

整个过程:需要很多通信。

假设:100架无人机通信量:非常大。

而且无人机:网络一直变化。

今天A在线。

明天A飞远了。

Raft:需要不断重新选举。

非常耗资源。


五、作者怎么改?

作者的方法:不用大家投票。

而是:所有无人机一起计算。

例如:假设:

Hash(UAV1)=20 Hash(UAV2)=80 Hash(UAV3)=35 Hash(UAV4)=55

再根据:当前时间:

计算:

Reference ↓ 40

然后:计算距离:

20→40 =20 80→40 =40 35→40 =5 55→40 =15

距离最小:

就是

UAV3

Leader。

所有无人机都会得到:一样结果。

不用投票。不用广播。

所以:特别快。

这正是论文第 IV-B 节Leader Election的设计思想:利用哈希环(Hash Ring)和当前区块时间戳计算参考值,选择距离最近的 UAV 作为 Leader。


六、总结

Raft本文方案
需要投票(Vote)不需要投票
多轮通信基本只需要哈希计算
Leader 失效重新选举开销较大Leader 可快速重新确定
适合服务器集群更适合资源受限、拓扑变化快的无人机网络

看的时候有点疑问,为什么要根据时间呢?

a:不是因为时间本身重要,而是作者需要一个所有无人机都能独立计算、且结果完全一致的随机参考值(Reference)。时间只是其中一种公共输入。

作者希望:

Leader 能够随着时间自动变化。

于是就需要一个:

所有人都知道、

所有人都一样、

而且不断变化的数字。

为什么这样就能换 Leader?

假设:

UAV1 Hash = 10 UAV2 Hash = 30 UAV3 Hash = 55 UAV4 Hash = 80
第一次
Reference = 40

距离:

10 → 40 = 30 30 → 40 = 10 55 → 40 = 15 80 → 40 = 40

Leader:

UAV2

第二次

时间变了。

Reference = 70

距离:

10 →70 =60 30 →70 =40 55 →70 =15 80 →70 =10

Leader:

UAV4

是不是就自动轮换了?

而且:

没有任何投票。

所有无人机:

因为:

大家看到:

同一个时间。

都会得到:

同一个 Reference。

于是:

都会认为:

Leader = UAV4

q.为什么不用随机数?

你可能想到:

为什么不用 random()?

这是密码协议里面最经典的问题。

假设:

UAV1:

random() = 5

UAV2:

random() = 81

UAV3:

random() = 22

大家得到三个不同随机数。

那么:Leader:三个版本。

整个系统崩了。

所以:

不能使用各自生成的随机数。

必须:

所有人:

输入一样。

输出一样。


为什么选择"时间"?

因为时间满足三个特点。

① 所有人都知道

例如:

2026-07-14 21:00

所有无人机都知道。


② 不需要通信

不用:

A: 我生成了40。 ↓ 告诉大家。

否则:又增加通信。

时间:天然共享。


③ 一直变化

所以:Leader自然轮换。

不用重新投票。


不过,这篇论文真正使用的是"区块链时间"

这里有一个细节,也是很多人第一次读会忽略的。

论文不是直接用:

本地系统时间(local clock)

因为:不同无人机的时钟可能不同步。

而是利用**区块链上的公共状态(例如区块时间戳或区块信息)**作为大家共同认可的输入,这样所有节点看到的是一致的数据,因此计算出的 Reference 也一致,避免了因为时钟误差导致不同节点选出不同 Leader。

PBFT(Practical Byzantine Fault Tolerance)实用拜占庭容错算法

区块链里面最经典的共识算法之一

1. 什么叫拜占庭问题?

这是一个经典故事。

例如:

有4位将军:

A B C D

他们需要:

一起进攻。

但是:

其中可能:

有叛徒。

例如:

A: 今晚进攻 ↓ B收到: 今晚撤退

不同的人收到:

不同消息。

怎么办?

需要一种算法:

保证:

即使有人撒谎,

大家最后:

仍然一致。

这就是:

拜占庭容错。


2. PBFT怎么工作?

PBFT 有三步。

第一阶段

Leader发消息:

Prepare

告诉大家:

这是我要提交的数据。


第二阶段

所有节点互相确认:

Prepare ↓ 收到 ↓ 回复

大家确认都一样。


第三阶段

Commit:

大家一起提交。

于是:

所有人保存同样数据。


最终:

所有节点数据库一致。


3. 为什么PBFT安全?

PBFT能够容忍:

3f+1 节点 ↓ 最多 f 坏节点

例如:

7台服务器。

最多:

2台坏。

仍然:

正确。


4. PBFT有什么缺点?

最大缺点:

通信太多。

假设:

100个节点。

每个人:

都要和别人通信。

消息数量:

大约:

O(n²)

100个节点:

约:

10000次消息。

如果:

1000节点:

100万。

所以:

PBFT:

适合:

几十个节点。

不适合:

大规模。


这也是为什么很多论文:

不用:

PBFT。

FANET(Flying Ad-hoc Network)

1. 什么是 Ad-hoc Network?

Ad-hoc 的意思是:

没有固定基础设施,由节点自己组成网络。

我们平时的 WiFi 是这样的:

手机 ──┐ 电脑 ──┼── 路由器(AP) 平板 ──┘

所有设备都依赖路由器。

但是 Ad-hoc 网络没有路由器。

例如:

A ---- B ---- C \ | \ | D

每个节点既是终端,也是路由器

消息可以不断转发。


2. 什么是 FANET?

FANET 就是:

由无人机(UAV)组成的 Ad-hoc 网络。

例如:

UAV1 / \ UAV2 UAV3 | | UAV4----UAV5

所有无人机:

  • 自己飞
  • 自己组网
  • 自己转发数据

没有:

  • 基站
  • WiFi
  • 中心服务器

3. FANET有什么特点?

论文研究 FANET,就是因为它和普通网络不一样。

(1)拓扑变化特别快

例如:

10秒前 A----B----C ↓ 10秒后 A C B

因为无人机一直在飞。

所以:网络连接不断变化。


(2)资源有限

无人机不像服务器。

只有:

  • 小CPU
  • 小内存
  • 电池

所以:密码算法不能太复杂。


(3)无线通信

无线:容易:

  • 被监听
  • 被篡改
  • 被伪造

所以:必须加密。


(4)动态成员

例如:

今天 10架 ↓ 执行任务 ↓ 加入2架 ↓ 坏掉1架 ↓ 回来3架

所以:

组密钥必须一直更新。


因此:

FANET 最大的问题就是:

如何让一群一直移动的无人机安全通信。

这就是这篇论文研究的问题。

GKA

一、什么是 GKA?

GKA 全称:Group Key Agreement

中文:组密钥协商协议

一句话理解:

让一组成员共同协商出一个只有他们知道的共享密钥(Group Key)。

注意两个词:

  • Group(组):不是两个人,而是很多人。
  • Agreement(协商):不是某个人发钥匙,而是大家共同计算出来。

二、为什么需要 GKA?

先不要看论文,我们举一个例子。

假设有 4 架无人机:

UAV A UAV B UAV C UAV D

它们要一起执行巡逻任务。通信内容:

敌人坐标 当前位置 飞行路线 攻击命令

这些都不能让别人知道。


方法一:每两架无人机都有一个密钥

A-B A-C A-D B-C B-D C-D

一共需要:

6 个密钥

如果有:

10 架无人机:

需要:

45 个密钥

100 架:

4950 个密钥

是不是越来越复杂?

管理几乎不可能。


方法二:所有人共享一个密钥

例如:

Group Key = Kgroup

所有成员:

A B C D

都知道:

Kgroup

以后:

所有消息:

都用:

AES(Kgroup)

加密。

这样:

整个网络:

只需要:

一个组密钥。


三、为什么叫 Agreement(协商)?

很多人第一次都会误会。

他们以为:

Leader:

随机生成:

Kgroup

然后发给大家。

这不是Agreement。

这是:

Key Distribution(密钥分发)

例如:

Leader ↓ Kgroup ↓ A ↓ B ↓ C

Leader:知道所有事情。


真正的 GKA:

不是。

例如:

A:产生随机数。

B:产生随机数。

C:产生随机数。

D:产生随机数。

最后:大家:一起:计算:

Kgroup

没有任何一个人:

提前知道:最终密钥。

所以:叫:Agreement。

即:共同协商。


四、GKA 和 DH(Diffie-Hellman)的关系

其实GKA:

就是:DH 的升级版。


两个人

Alice:

Bob:

利用:Diffie-Hellman共同得到:

K

这叫:Key Agreement。


多个人

如果:10个人。

不能一直两两:

DH。

于是发展出了:

Group Key Agreement。

例如:

Alice Bob Charlie David ... 一起 ↓ Kgroup

所以可以理解为:

GKA = 多人版 Diffie-Hellman。


五、GKA 应该满足哪些安全要求?


① Confidentiality(机密性)

攻击者不知道:

Kgroup

因此看不懂消息。


② Integrity(完整性)

攻击者:不能修改消息。

否则:MAC验证失败。


③ Authentication(身份认证)

只有合法成员才能加入。

假无人机:

不能获得:

Group Key。


④ Forward Secrecy(前向安全)

假设今天:

A B C

后来:D加入。

D:不能知道昨天Group Key。

这叫:前向安全。


⑤ Backward Secrecy(后向安全)

假设:B退出。

以后:新的Group Key。

B:不知道。

不能:继续偷听。


⑥ Dynamic Membership(动态成员)

现实中无人机:

一直加入。退出。

所以:GKA必须快速更新。

否则:整个系统:效率很低。


六、GKA 的工作流程

一个典型流程如下:

① 建立组 A B C D ↓ ② 协商 大家交换一些公开信息 ↓ ③ 计算 每个人都计算出 Kgroup ↓ ④ 加密通信 AES(Kgroup) ↓ ⑤ 成员变化 有人加入 ↓ 更新 Group Key ↓ 继续通信

所以:GKA其实:只有两个任务。


第一:

建立:

Group Key。

例如:

Kgroup

第二:

更新:

Group Key。

例如:有人退出。

不能继续知道:

以后通信。

所以:重新协商。


七、这篇论文为什么研究 GKA?

现在回到论文。

作者说:

FANET:

具有:

  • 无线通信
  • 节点一直移动
  • 成员动态变化

所以:

传统 GKA问题很多。

例如:有人加入。

传统方案:可能整棵树重新建立。很慢。

所以:作者提出:

iTreeKEM

目的:就是让GKA更新更快。


八、TreeKEM 与 GKA 的关系(最重要)

很多研一都会混淆。

一定要区分。

GKA (组密钥协商,目标) │ ┌─────────────┴─────────────┐ │ │ TreeKEM Burmester–Desmedt │ │ MLS TreeKEM CLIQUES │ iTreeKEM(本文)

这里:GKA 是"问题"。

TreeKEM:只是一种实现 GKA 的方法。

而:iTreeKEM又是:TreeKEM 的改进版。

所以:这篇论文提出:

一种更好的 GKA 实现方案。

TreeKEM

100个人。

传统方法:

大家一个一个交换密钥很慢。

TreeKEM:

想到:用一棵树管理密钥。

例如:

Root / \ Node1 Node2 / \ / \ A B C D

Root:

就是:

Group Key

TreeKEM:

利用这棵树。

快速生成、更新:Group Key。

所以:TreeKEM:只是实现GKA的一种办法。


最后,用一句话总结 GKA

**GKA(Group Key Agreement,组密钥协商)是一类密码协议,其目标是让多个合法成员通过协商共同建立一个共享的组密钥(Group Key),并利用该密钥实现安全组通信。相比两方密钥交换,GKA 需要支持成员动态加入和退出,同时保证机密性、完整性、身份认证以及前向安全、后向安全等安全属性。在这篇论文中,作者针对 FANET 中成员频繁变化、资源受限等特点,提出了基于 iTreeKEM 的高效 GKA 协议,以降低组密钥更新的计算和通信开销。

Path Keys(路径密钥)

Copath Public Keys(兄弟路径公钥)

画图吧

TreeKEM 将所有成员组织成一棵平衡二叉树,每个内部节点保存一个密钥。当某个成员加入、退出或主动更新密钥时,只需要更新从该成员到根节点这一条路径上的密钥(Path Keys),其他成员利用这条路径对应兄弟节点的公钥(Copath Public Keys)即可计算出新的组密钥,因此无需重新更新整棵树,从而把密钥更新的计算和通信开销从 O(n) 降低到了 O(log n)。

-->logarithmic complexity(对数复杂度)

自适应安全

1. 先理解普通攻击(Static Attack)

假设一个群组:

无人机: A B C D

攻击者提前决定:

我要攻击 A。

然后研究协议:

攻击目标: A 攻击方法: 窃取 A 的密钥

这叫:

静态攻击(Static Attack)

因为:攻击者在开始前目标已经确定。


2. 什么叫 Adaptive Attack(自适应攻击)?

现在升级。攻击者不是提前决定。

而是:

根据攻击结果不断调整。

例如:第一步攻击者尝试攻击 A。

结果:失败。

然后攻击者观察:

发现:

B 的密钥更新机制比较弱。

于是改变策略攻击 B。

第一次: 攻击 A ↓ 失败 第二次: 攻击 B ↓ 成功 第三次: 利用 B 的信息攻击 C

攻击路线:不是固定的。

而是动态变化。

这就是Adaptive。


3. 为什么密码协议害怕这种攻击?

因为很多安全证明有一个假设:

例如:

假设攻击者只能攻击某些固定节点。

那么:证明容易。


比如:证明:

A 不泄露 ↓ 所以系统安全

但是:

自适应攻击攻击者可能先观察系统。

然后:选择最容易攻击的位置。

例如:

无人机网络:

UAV1 UAV2 UAV3 UAV4

攻击者不知道哪架容易攻击。

于是:观察:发现:

UAV3:电量低通信频繁防护弱。

于是:

选择UAV3。

这就是:适应环境选择攻击目标。


4. 放到 TreeKEM 中理解

TreeKEM是一棵树:

例如:

Root / \ N1 N2 / \ / \ A B C D

每个节点:

有密钥。


假设攻击者:提前说:

我要攻击 A。

协议设计者:可以针对 A证明:

安全。


但是 Adaptive:

攻击者可能先攻击 A。

拿到一些信息。

然后根据结果选择:攻击:

N1。

再选择:攻击Root。

攻击路径:动态变化。


所以:

安全证明必须考虑:

攻击者在任何时间,根据已经获得的信息,任意选择攻击对象,协议仍然安全。

这个难很多。


5. 一个现实例子(无人机)

FANET:无人机不断移动。

攻击者监听。

例如:

时间1: UAV1 UAV2 UAV3

攻击者:不知道哪个容易攻击。


时间2:发现:UAV2离队。信号弱。

攻击:UAV2。


时间3:获得UAV2部分密钥。

然后:利用UAV2的信息攻击UAV1。

这就是:Adaptive Attack。

整体论文把握

也是先提出之前别人做的各种问题,然后提出一个新的解决方案,有关无人机组网的

1.算力弱2.带宽有限(无人机体积小,电池小) 3.动态组(无人机的状态一直在变)

4.spof(单点故障,意思就是有leader并且是固定的)

所以怎么解决呢?

提出一个方案,有5个步骤:

计算哈希,得到哈希环,利用时间戳作为参考,选出leader,这个leader会进行变化,是动态的

把伪代码也看了一下 第一个算法也是这个步骤

组密钥协商还没有看

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询