休息了好几天,开启新篇章!
看的这篇论文
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 → BB 获得: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距离最小:
就是
UAV3Leader。
所有无人机都会得到:一样结果。
不用投票。不用广播。
所以:特别快。
这正是论文第 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 = 40Leader:
UAV2第二次
时间变了。
Reference = 70距离:
10 →70 =60 30 →70 =40 55 →70 =15 80 →70 =10Leader:
UAV4是不是就自动轮换了?
而且:
没有任何投票。
所有无人机:
因为:
大家看到:
同一个时间。
都会得到:
同一个 Reference。
于是:
都会认为:
Leader = UAV4q.为什么不用随机数?
你可能想到:
为什么不用 random()?
这是密码协议里面最经典的问题。
假设:
UAV1:
random() = 5UAV2:
random() = 81UAV3:
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 ↓ CLeader:知道所有事情。
真正的 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 DRoot:
就是:
Group KeyTreeKEM:
利用这棵树。
快速生成、更新: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会进行变化,是动态的
把伪代码也看了一下 第一个算法也是这个步骤
组密钥协商还没有看