1. 项目愿景与设计哲学

CipherPulse 是一套专为 高丢包、高延迟、非受控 网络环境(如跨境 VPS、IoT 边缘设备)设计的轻量级服务器遥测系统。

不同于传统的 Prometheus/Zabbix,CipherPulse 假设网络是恶劣的,节点是不可信的,并基于此前提构建了以下核心哲学:

🔕 聋子模式 (Deaf Mode)

Agent 采用单向广播设计,0 入站端口。从物理层面杜绝攻击者通过监控端口渗透服务器的可能。

🚀 UDP 优先 (UDP First)

放弃 TCP 的握手与重传机制,采用应用层 滑动窗口冗余 (Sliding Window Redundancy) 对抗丢包,实现”发射后不管”。

🛡️ 先锋令牌 (Token-First)

将鉴权前置到数据包头部,配合 Master 端内存缓存,实现纳秒级的抗 DDoS 解析能力。

🔐 动态握手 (TOTP-Handshake)

基于时间因子的动态密钥派生机制,结合严格的注册窗口,彻底解决密钥泄露导致的女巫攻击风险。


2. 系统架构

2.1 Agent (探针端)

职责: 采集系统指标 → 组装 UDP 包 → 多路单向广播

核心特性:

  • Client-side HA: 支持向多个 Master IP 同时广播,实现客户端侧的高可用,无单点故障
  • JIT Memory: 无配置文件落地,配置通过环境变量注入,硬盘无痕迹
  • Resource: 目标 < 10MB 内存,CPU 占用 < 0.1%

2.2 Master (服务端)

职责: 接收 UDP → 安全过滤 → 冗余去重 → 批量落库

核心组件:

组件职责
Packet Filter基于 Token 和 Timestamp 的极速防火墙 (Fast Path)
Hot Pool内存环形队列 (RingBuffer),暂存最近 60 秒的高频数据
Batch Dumper异步任务,每 10 秒将聚合数据写入 SQL 数据库

3. PulseProto 通信协议标准 (v1.1)

传输层: UDP
字节序: Big-Endian (网络字节序)
包大小: 控制在 MTU 安全值 (508 Bytes) 以内

3.1 类型 A:脉冲包 (Pulse Packet)

用途: 高频上报监控数据(1Hz)
鉴权: SessionToken + Strict Time Window + IP Binding

OffsetLengthFieldDescription
0x008SessionToken会话令牌。Master 查表验证,并校验源 IP 是否匹配
0x084TimestampUnix 时间戳。Master 校验 abs(Now - TS) < 5s,超时丢弃
0x0C1Redundancy冗余度 N (固定为 3,包含 T, T-1, T-2)
0x0D1SchemaID数据格式版本。支持未来扩展 (0x01: 基础,0x02: IO 增强)
0x0EVarPayload3 组 MetricBlock 数据体

数据体结构 (SchemaID = 0x01) — 12 Bytes / 组

[0]     uint8  : CPU 使用率 (0-100)
[1]     uint8  : 内存 使用率 (0-100)
[2-3]   uint16 : Ping 延迟 (ms)
[4-7]   uint32 : 入网流量增量 (Bytes)
[8-11]  uint32 : 出网流量增量 (Bytes)

3.2 类型 B:先锋包 (Pioneer Packet)

用途: 探针启动时的自动注册 / Token 过期重协商
加密: ChaCha20-Poly1305 + TOTP Key

OffsetLengthFieldDescription
0x008NodeID机器指纹 (用于查找对应的解密密钥)
0x0816AuthTagPoly1305 校验码。校验失败直接丢弃,不消耗 CPU
0x1812Nonce随机数 (防止重放)
0x24VarEncrypted密文 (含:申请的新 Token、Hostname、IP、OS info)

4. 安全与抗攻击模型

4.1 动态握手流程 (TOTP Handshake)

为了防止 Global Deployment Secret 泄露导致全网风险,v1.1 引入动态密钥派生。

密钥派生:

TimeWindow = CurrentUnixTime / 30
DerivedKey = SHA256(GlobalSecret + TimeWindow)

验证逻辑:

Master 收到先锋包,分别计算 CurrentWindow 和 PrevWindow 的 Key 进行尝试。如果 AuthTag 验证通过,则解密 Payload。

注册开关 (Registration Switch):

Master 默认 拒绝所有先锋包。仅在管理员开启维护窗口 (Maintenance Window) 期间(如 5 分钟内),才允许新节点注册。

4.2 纵深防御体系 (Defense in Depth)

防御层级针对威胁防御手段
L1格式防御 / 解析炸弹包长度不合法或 SchemaID 未知,直接丢弃
L2时效防御 / 重放攻击检查 Timestamp。超过 ±5 秒的包直接丢弃
L3信任防御 / 借刀杀人 (DDoS)TOFU 原则。Token 首次使用时绑定源 IP,后续 IP 变更即报警
L4签名防御 / 伪造握手检查先锋包 AuthTag。无正确派生密钥无法伪造签名
L5限流防御 / 爆破 / 扫描全局每秒仅限 5 个新注册;单 IP 频繁错误触发黑洞策略

5. 数据可靠性策略

滑动窗口冗余 (Sliding Window Redundancy)

为了在恶劣网络下保持监控曲线平滑,每个数据包携带当前秒 + 过去 2 秒的数据。

发送端: 维护一个长度为 3 的 RingBuffer,每次发送 [T, T-1, T-2]

接收端:

  • 收到包 N。如果 T-1 数据已存在(之前的包 N-1 到达了),忽略冗余数据
  • 如果 T-1 数据缺失(之前的包 N-1 丢了),从包 N 中提取 T-1 并自动补全

效果: 容忍 66% 的连续丢包率,监控图表依然连续无断点。


6. 开发路线图

Phase 1: 核心验证 (Current Focus)

  • 使用 Go 语言实现 pulse-proto 库 (Header/Payload 序列化)
  • 实现 TOTP Key Derivation 算法
  • 实现 UDP Server 原型,打印接收到的指标

Phase 2: Agent 构建

  • 实现 /proc/stat 读取与 ethtool 网卡流量采集
  • 实现多 Master 轮询发送逻辑

Phase 3: Master 工程化

  • 实现 RingBuffer 内存池与滑动窗口去重逻辑
  • 集成 SQLite 持久化

Phase 4: 可视化

  • 提供 Snapshot API
  • 开发极简 HTML 前端展示

Copyright © 2026 CipherPulse Project
版本: v1.1 (Stable Draft)
代号: StarRiver
Slogan: 静水流深,暗流脉冲 (Still waters run deep, dark currents pulse within.)