nhowardtli/virp
GitHub: nhowardtli/virp
VIRP 是一套通过密码学签名在采集点锁定设备输出、确保 AI 智能体对网络基础设施操作真实可验证的信任协议。
Stars: 5 | Forks: 1
# VIRP — 经验证的基础设施响应协议
**为操作真实基础设施的 AI 智能体提供的密码学信任原语。**
当 AI 智能体告诉你防火墙策略配置错误时,你能证明它真的检查过吗?
当它说 BGP 会话已建立时,它是从真实设备读取的 —— 还是伪造的?
当它声称配置更改成功时,证据在哪里?
**VIRP 使每一个智能体声明都可验证。不是通过提示词。不是通过护栏。而是通过密码学。**
## VIRP 的功能
VIRP 是一个开放协议,它在收集点签署每一个设备观测数据,在 AI 看到数据之前。
一个专用进程 —— **O-Node** —— 连接到你的网络设备,捕获原始输出,并使用 HMAC-SHA256 对其进行签名。AI 智能体接收预签名数据。它可以推理设备返回的内容。它无法伪造、修改或捏造数据 —— 因为它从未持有签名密钥。
这不是策略。这是代码路径。
```
Agent: "FortiGate policy 2 allows all traffic with no AV/IPS."
VIRP:
verdict: VERIFIED
HMAC: da383afe...c18
chain_seq: 4882
session_id: f84c1a3e...
device_id: 0x00000002 (FW-01)
command_hash: 7c2b4d3a... (show firewall policy 2)
timestamp: 2026-03-11T14:30:22.917384Z
Verify it yourself.
```
## 存在原因
在开发 IronClaw 期间,我们观察到 AI 系统:
- 生成具有有效 UUID 但实际上不存在的防火墙策略
- 报告来自 RFC 5737 文档地址的威胁
- 基于伪造的 OSPF 邻接状态提出路由更改
每个输出在技术上都是合理的。但没有一个是真实的。
提示词工程、输出验证和行为护栏无法修复此问题。AI 直接在其响应文本中伪造输出,而未调用签名执行路径。
**VIRP 是结构性的修复方案。**
## 架构
```
┌─────────────────────┐ ┌─────────────────────┐
│ AI Node (CT 210) │ │ O-Node (CT 211) │
│ │ │ │
│ Agent + LLM │─────▶│ VIRP C Library │
│ │ │ Device Credentials │
│ Zero credentials │ │ Signing Keys │
│ Zero signing keys │◀─────│ Chain Database │
└─────────────────────┘ └──────────┬──────────┘
│ SSH
┌──────────┼──────────┐
Cisco IOS FortiGate PA-850
```
**隔离笼 (The Cage)** — 三道结构墙强制隔离:
| 墙 | 机制 |
|---|---|
| 1 | AI 节点没有通往设备的网络路由 |
| 2 | 设备 ACL 仅接受来自 O-Node IP 的 SSH |
| 3 | O-Node 套接字锁定为授权进程 |
## 七个信任原语
| # | 名称 | 作用 | 状态 |
|---|---|---|---|
| P1 | 经验证的观测 | 设备输出在收集时进行 HMAC 签名 | 生产环境 |
| P2 | 分层授权 | 在 AI 之下强制执行命令分类 | 生产环境 |
| P3 | 经验证的意图 | 执行前的签名提议 | 已实现 |
| P4 | 经验证的结果 | 执行前/后的签名比对 | 已实现 |
| P5 | 基线记忆 | 基于签名历史检测偏差 | 已实现 |
| P6 | 信任链 | SQLite 防篡改链 | 已实现 |
| P7 | 信任联邦 | Ed25519 跨租户验证 | 已实现 |
## 快速开始
```
# 依赖
sudo apt install -y build-essential git \
libssl-dev libsodium-dev libsqlite3-dev \
libssh2-1-dev libcurl4-openssl-dev libjson-c-dev
# Build
git clone https://github.com/nhowardtli/virp.git && cd virp
make CISCO=1 FORTIGATE=1 PANOS=1 ASA=1 LINUX=1
make CISCO=1 FORTIGATE=1 PANOS=1 ASA=1 LINUX=1 prod
# Test
make all-tests
make test-session
make test-session-key
# Deploy
./build/virp-tool keygen -o /etc/virp/keys/onode.key
./build/virp-onode-prod \
-k /etc/virp/keys/onode.key \
-s /tmp/virp-onode.sock \
-d /etc/virp/devices.json \
-c /var/lib/virp/chain.db
```
Systemd 服务:`deploy/virp-onode.service`
## 生产环境结果
在真实硬件上测试:
- 40 台设备处于 VIRP 主动管理下
- 35 台路由器的 BGP 拓扑,在 60 秒内完成完整验证
- FortiGate 审计:15 个真实发现,零误报
- 假设 O-Node 受信且未被入侵,协议设计即可防止伪造
## 文档
| 主题 | 位置 |
|---|---|
| 查询如何变为签名观测 | [Wiki: Observation Flow](../../wiki/Observation-Flow-End-to-End) |
| 会话握手深入解析 | [Wiki: Session Establishment](../../wiki/Session-Establishment) |
| 线上格式 v1 和 v2 | [Wiki: Wire Format Reference](../../wiki/Wire-Format-Reference) |
| 安全架构 (隔离笼) | [Wiki: The Cage](../../wiki/The-Cage-Security-Architecture) |
| 加固的 KVM 部署 | [Wiki: KVM Deployment](../../wiki/KVM-Hardened-Deployment) |
| 威胁模型 | [Wiki: Threat Model](../../wiki/Threat-Model) |
| 信任层级说明 | [Wiki: Trust Tiers](../../wiki/Trust-Tiers) |
| 添加设备 | [Wiki: Device Onboarding](../../wiki/Device-Onboarding) |
| 常见问题 | [Wiki: FAQ](../../wiki/FAQ) |
| 协议规范 | `VIRP-SPEC-RFC-v2.md` |
| 线上格式规范 | `VIRP-WIRE-FORMAT.md` |
## 包含内容
- **C 库** — 约 8,500 行,C11,`-Wall -Wextra -Werror -pedantic`
- **供应商驱动程序** — Cisco IOS, FortiOS, PAN-OS, Cisco ASA, Linux
- **Go 实现 (Go implementation)** — 2,700+ 行,相同的线上格式,互操作性已测试
- **会话握手** — HELLO/HELLO_ACK/SESSION_BIND 状态机
- **HKDF 会话密钥** — 主密钥从不直接签署运行时观测数据
- **信任链** — SQLite,防篡改,崩溃安全
- **联邦** — 通过 libsodium 实现 Ed25519
- **46 个测试** — 单元测试、集成测试、互操作性测试、模糊测试、负面路径会话测试
## 协议规范
- **RFC 草案:** `draft-howard-virp-02`
- **IETF RATS:** 已提交
- **Zenodo DOI:** 已注册
- **许可证:** Apache 2.0
## 贡献
基础设施工程师 · 安全研究人员 · 驱动程序作者 (Juniper, Arista, Meraki, 云 API) · 协议设计师
**Nathan M. Howard** — Third Level IT LLC — nhoward@thirdlevelit.com
标签:AI安全, BGP, Chat Copilot, Fortinet, HMAC-SHA256, JSONLines, Zenmap, 全文检索, 可信执行, 可验证计算, 安全测试工具, 审计追踪, 客户端加密, 密码学, 幻觉缓解, 开源协议, 手动系统调用, 数据完整性, 日志审计, 网络信任锚, 网络安全, 网络自动化, 防伪验证, 防火墙策略, 隐私保护, 零信任