docs: tighten wording, soften node capability claims, link architecture to code
- Remove the node capability paragraph from README; soften "pure collector" and "no self-update" statements in docs, AGENTS.md and READMEs - architecture.md: drop scalability goals, design decisions and open items; add a component-to-code table and code links - Replace rhetorical contrasts in security docs with direct statements - AGENTS.md: add project mental model, change map and writing style rules
This commit is contained in:
1 parent
a9bf849697
commit
d5ebf29e57
11 files changed
+89
-100
No files matched your search
@@ -2,7 +2,7 @@
|
||||
|
||||
> 实现状态:协议方向声明表和卡口、Probe 自己生成密钥、预握手敲门、操作员集合与创世固定、服务器身份和安全链路、属主固定都已实现;测量数据的产生者签名、入库配额、Probe 拨号地址限制等还没做(第 3 节有逐项状态)。
|
||||
|
||||
Agent、Backend、Probe 之间互相不信任。这份文档回答三个问题:现在谁听谁的、被攻破之后最坏会怎样、怎么用密码学把信任从 Backend 身上拿走。账户、能力、passkey 和入网信任链的具体做法见 [access.md](access.md);纯采集的边界、本地硬上限和签名更新见 [architecture.md](../design/architecture.md) 第 5 节,这里不重复。
|
||||
Agent、Backend、Probe 之间互相不信任。这份文档回答三个问题:现在谁听谁的、被攻破之后最坏会怎样、怎么用密码学把信任从 Backend 身上拿走。账户、能力、passkey 和入网信任链的具体做法见 [access.md](access.md);节点能力边界、本地硬上限和签名更新见 [architecture.md](../design/architecture.md) 第 5 节,这里不重复。
|
||||
|
||||
## 1. 范围
|
||||
|
||||
@@ -58,9 +58,9 @@ Agent、Backend、Probe 之间互相不信任。这份文档回答三个问题
|
||||
|
||||
没有问题的部分:UDP 端口对未认证的包静默丢弃,不回应(`DropInvalid`,有测试);Probe 本身没有 TCP 监听;任务有本地硬上限;更新清单有签名和 `seq` 防回滚。
|
||||
|
||||
## 4. 核心思路:信任锚点从 Backend 移走
|
||||
## 4. 信任锚点
|
||||
|
||||
要防 Backend 被攻破,改变信任的内容必须由 Backend 之外的密钥授权。Backend 只搬运、计算和存储,不创造信任:
|
||||
改变信任的内容由 Backend 之外的密钥授权,Backend 只搬运、计算和存储:
|
||||
|
||||
```text
|
||||
① 发布密钥(CI) ──▶ 「跑什么代码」 清单签名、seq 防重放
|
||||
@@ -107,7 +107,7 @@ Agent、Backend、Probe 之间互相不信任。这份文档回答三个问题
|
||||
3. 违规处理:`RpcSession` 和服务端的 `NodeConnection` 对违规计数,超过上限(`MaxViolations`,默认 20)就断开连接;二进制通道也在服务端按声明核对。
|
||||
4. 响应匹配:只接受对应未决请求 ID 的响应,不接受主动「响应」。
|
||||
5. 对账测试:`Fleet.Tests/MethodDirectionTests` 覆盖卡口本身;`MoShiro.Backend.Tests/ProtocolDeclarationTests` 核对「每个方法常量都声明了」「文档里写了每个方法」「各角色该处理的方法都注册了处理函数」「每条声明的通道都有收件箱」。
|
||||
6. 下行消息只是建议,不是命令:节点按本地硬上限执行或拒绝;任何带副作用的敏感能力都不走核心的下行消息,见第 9 节。
|
||||
6. 下行消息是建议:节点按本地硬上限执行或拒绝;任何带副作用的敏感能力都不走核心的下行消息,见第 9 节。
|
||||
|
||||
### 6.3 各类下行消息怎么处置
|
||||
|
||||
@@ -118,7 +118,7 @@ Agent、Backend、Probe 之间互相不信任。这份文档回答三个问题
|
||||
| 成员名册、对端公钥、Agent 地址 | Backend(G3、G6 未解决) | 能把恶意 Probe 加进 Agent 的白名单,或把 Probe 指向恶意 Agent |
|
||||
| 任务集、测试请求 | Backend 计算;节点本地硬上限兜底 | 只能在本地速率和端口上限内发测量流量 |
|
||||
| 重启计划(`moshiro.schedule`) | Backend;节点本地启动后 10 分钟内不触发 | 最多让节点每 10 分钟重启一次 |
|
||||
| 未来的 `extension`(exec 等) | 属主 passkey 签名的一次性能力令牌,见第 9 节 | 什么都做不了 |
|
||||
| 未来的 `extension`(exec 等,尚未实现) | 属主 passkey 签名的一次性能力令牌,见第 9 节 | 设计目标是没有属主签名就无法调用 |
|
||||
|
||||
## 7. 节点自己被攻破时(设计,未实现)
|
||||
|
||||
@@ -167,14 +167,14 @@ Agent、Backend、Probe 之间互相不信任。这份文档回答三个问题
|
||||
|
||||
## 9. extension:敏感能力的归宿
|
||||
|
||||
Agent 和 Probe 的核心永远是纯采集器。所有敏感能力(exec、web ssh 和终端、文件读写、抓包等)都不进核心,做成 extension,用户可选安装,默认没有,现在都没有实现。
|
||||
当前 Agent 和 Probe 的核心只包含测量与上报。敏感能力(exec、web ssh 和终端、文件读写、抓包等)计划做成 extension,由用户选择安装,默认不启用,目前都没有实现。
|
||||
|
||||
- 独立进程,不是插件:单独的二进制和镜像,和核心之间没有进程内接口,核心不加载任何外部代码、不用反射和动态加载,核心的 NativeAOT 和「不能 exec」都不受影响。
|
||||
- 独立进程:单独的二进制和镜像,和核心之间没有进程内接口,核心不加载外部代码、不用反射和动态加载,核心的 NativeAOT 和构建期限制不受影响。
|
||||
- 授权只认节点的属主:每次调用的能力令牌必须由这个节点绑定的属主 passkey 签名,账户角色不赋予权力;管理员只能删除节点或卸载 extension。交互式会话端到端加密,Backend 只转发密文。属主和会话密钥的设计见 [access.md](access.md) 第 9 节。
|
||||
- 独立身份和发布:extension 有自己的密钥、自己向 Backend 注册,在名册里是单独的成员(记录它依附的节点 ID);独立的镜像和清单(`component` 不同,例如 `ext-ssh`),装不装、升不升级都不影响核心。
|
||||
- 独立命名空间:extension 的方法只能是 `ext.<名字>.*`,同样进方向声明表;核心的声明表里没有 `ext.*`,核心收到一律拒绝。
|
||||
- 独立命名空间:extension 的方法只能是 `ext.<名字>.*`,同样进方向声明表;核心的声明表里没有 `ext.*`,核心收到会拒绝。
|
||||
- 本地显式启用:extension 的本地配置里有 `enabled`、允许的操作员凭证、允许的命令集或目标范围,默认关闭。
|
||||
- 不做的:核心里的任何 exec、文件写、加载 extension;用 extension 绕过核心的本地硬上限。
|
||||
- 设计约束:不在核心里加入 exec、文件写或加载 extension 的能力;extension 不能绕过核心的本地硬上限。
|
||||
|
||||
## 10. 密码学原语
|
||||
|
||||
|
||||
Reference in new issue
Block a user