# 安全与系统架构

## 🏗 系统架构设计

Butterfly 协议采用模块化的四层架构设计，确保了系统的可扩展性、安全性以及对未来技术升级的适应性。

### 🥞 协议堆栈详解

| 层级              | 组件                   | 功能描述                                                  |
| --------------- | -------------------- | ----------------------------------------------------- |
| **应用与 DeSoc 层** | ButterflyMessage, 频道 | 处理消息生成、确认、公共频道和私密聊天的逻辑。DID 身份管理。                      |
| **会话层**         | Packet, TTL          | 负责数据包封装、定义消息 TTL、序列化。集成 **Nostr** 协议 (NIP-17) 实现隐私保护。 |
| **传输层**         | BLE, 连接管理            | 核心传输控制。管理 BLE 广播/接收。物理介质抽象层。                          |
| **加密安全层**       | **Noise, Ed25519**   | 协议基石。提供端到端安全保障。                                       |

### 🕵️ 加密与安全层：Noise 协议栈

在一个基于广播的网络中，所有信号在物理上都是公开的。Butterfly 集成了 **Noise 协议栈**。

* **握手模式 (Handshake):** 使用 Noise XX 或 IK 模式。这种模式提供了双向身份认证 (Mutual Authentication) 和前向保密 (Forward Secrecy)。
* **密码学原语:**
  * **密钥交换:** X25519 (Elliptic Curve Diffie-Hellman)。
  * **身份认证:** **Ed25519** 数字签名。
  * **对称加密:** **AES-256-GCM** 或 ChaCha20-Poly1305。

### 🕶 隐私保护设计

**1. 零知识证明 (ZKP)**&#x20;

为了在验证连接的同时不暴露用户具体的行动轨迹，我们引入 **ZK-SNARKs**。用户只需证明其拥有符合 $$Verify(E\_{poc})$$条件的数据（如 RSSI 和时间戳），而无需在链上公开原始的$$ID$$和精确$$GPS$$。

**2. 匿名性与假名系统**

* **MAC 地址随机化:** 防止物理追踪。
* **Ephemeral ID 轮换:** 应用层广播的 ID 每 15 分钟更换一次。对于陌生人，每个用户看起来都是一个新的、不相关的节点，直到握手发生。

### 📱 跨平台挑战：iOS 与 Android

在智能手机上实现持续的 Mesh 网络面临巨大的操作系统限制。

{% hint style="danger" %}
**后台限制**

* **iOS**：倾向于杀死后台高功耗进程，并限制广播频率。
* **Android**：限制短时间内的扫描次数。
  {% endhint %}

#### 💡 我们的解决方案

1. **混合唤醒机制**：利用 Location Updates 或 Audio Background Mode 辅助保活。
2. **受限广播 (Duty Cycling)**：后台模式下切换到低频广播，仅发送最小化信标。
3. **本地通知激励**：检测到附近节点时，通过推送通知唤醒用户打开 App。
