@c956180462/awbs 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AWBS_CORE_DESIGN.md +983 -0
- package/AWBS_CURRENT_FEATURES.md +463 -0
- package/LICENSE +21 -0
- package/README.md +265 -0
- package/TASK_001_VIEW_AUTHORITY.md +446 -0
- package/TASK_003_AUTHORITY_LEDGER_AND_DB_AUDIT.md +268 -0
- package/TASK_004_TRUSTED_AUTHORITY_LAYER.md +547 -0
- package/TASK_005_AUTHORITY_SESSION.md +218 -0
- package/TASK_006_TRUST_BOUNDARY_HARDENING.md +381 -0
- package/TASK_007_TRUSTED_OPERATION_ENTRY.md +129 -0
- package/bin/awbs.js +2 -0
- package/docs/DEVELOPMENT_LEARNING.md +319 -0
- package/docs/FULL_CHAIN.md +295 -0
- package/docs/PRODUCT.md +188 -0
- package/docs/USAGE.md +294 -0
- package/package.json +45 -0
- package/src/adapters/file-summary-store.ts +88 -0
- package/src/adapters/git-cli.ts +107 -0
- package/src/adapters/local-authority-session.ts +606 -0
- package/src/adapters/local-file-database.ts +199 -0
- package/src/adapters/sealed-authority.ts +725 -0
- package/src/adapters/session-authority-client.ts +176 -0
- package/src/adapters/sqlite-index-store.ts +176 -0
- package/src/cli.ts +491 -0
- package/src/domain/authority-types.ts +194 -0
- package/src/domain/constants.ts +11 -0
- package/src/domain/errors.ts +6 -0
- package/src/domain/hash.ts +27 -0
- package/src/domain/path-policy.ts +36 -0
- package/src/domain/paths.ts +65 -0
- package/src/domain/session-proof.ts +140 -0
- package/src/domain/session-types.ts +101 -0
- package/src/domain/types.ts +94 -0
- package/src/ports/authority-session.ts +8 -0
- package/src/ports/authority.ts +26 -0
- package/src/ports/file-database.ts +18 -0
- package/src/ports/git.ts +23 -0
- package/src/ports/index-store.ts +7 -0
- package/src/ports/summary-store.ts +16 -0
- package/src/runtime.ts +56 -0
- package/src/session-entry.ts +1 -0
- package/src/usecases/authority.ts +53 -0
- package/src/usecases/changeset.ts +437 -0
- package/src/usecases/db.ts +192 -0
- package/src/usecases/index.ts +136 -0
- package/src/usecases/init.ts +48 -0
- package/src/usecases/ledger.ts +146 -0
- package/src/usecases/session.ts +48 -0
- package/src/usecases/trusted-chain.ts +56 -0
- package/src/usecases/view.ts +166 -0
|
@@ -0,0 +1,547 @@
|
|
|
1
|
+
# AWBS 004:可信事实层与 Authority Service
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
004 的目标是把 003 已经实现的 `sealed ledger + refs/awbs/trusted`,从“可用的可信链”提升为完整的 **AWBS Trusted Authority Layer / AWBS 可信事实层** 设计。
|
|
6
|
+
|
|
7
|
+
核心定性是:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
文件系统保存开放内容。
|
|
11
|
+
Git 保存全部历史。
|
|
12
|
+
Trusted Authority Layer 决定 AWBS 承认哪条数据库事实链。
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
AWBS 不靠隐藏算法可信。公开仓库意味着 agent 可以阅读源码、理解规则、知道 hash 如何计算、知道 ledger 如何验证。真正的设计目标不是“让 agent 不知道”,而是:
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
agent 知道规则,也不能仅凭 repo 文件和普通工作权限伪造 trusted chain。
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
004 要把普通 agent 绕过 AWBS 的行为,从“改一个文件、改一个 JSON、重算一段 hash”,提升为显式、高成本、可审计的 authority 攻击。
|
|
22
|
+
|
|
23
|
+
## Design Position
|
|
24
|
+
|
|
25
|
+
AWBS 可信事实层不是沙箱系统,也不是操作系统权限系统。它回答的是一个更底层的问题:
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
AWBS 到底承认什么?
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
003 后,AWBS 已经有:
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
sealed view contract
|
|
35
|
+
sealed ledger
|
|
36
|
+
refs/awbs/trusted
|
|
37
|
+
db audit
|
|
38
|
+
clean-rebuild
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
004 要把它们统一成一个整体:
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
Trusted Authority Layer
|
|
45
|
+
= repo identity
|
|
46
|
+
+ sealed view contracts
|
|
47
|
+
+ hash-linked trusted ledger
|
|
48
|
+
+ trusted head
|
|
49
|
+
+ verified operation apply
|
|
50
|
+
+ audit / rebuild rules
|
|
51
|
+
+ signer / trust anchor
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
这层统一回答四个问题:
|
|
55
|
+
|
|
56
|
+
```text
|
|
57
|
+
1. 当前 AWBS 认证数据库是哪一个 trusted commit?
|
|
58
|
+
2. 某个 workspace / view 是不是 AWBS 承认的?
|
|
59
|
+
3. 某个 changeset / operation 能不能推进认证数据库?
|
|
60
|
+
4. 当前目录偏离可信链后,如何回到 AWBS 承认的状态?
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Trusted State Model
|
|
64
|
+
|
|
65
|
+
AWBS 的认证数据库状态应当被理解为一条可信状态推进链:
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
Trusted State T0
|
|
69
|
+
-> apply verified operation O1
|
|
70
|
+
-> Trusted State T1
|
|
71
|
+
-> apply verified operation O2
|
|
72
|
+
-> Trusted State T2
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
在文件系统数据库中:
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
trusted state
|
|
79
|
+
= trusted commit 对应的 Git tree
|
|
80
|
+
|
|
81
|
+
verified operation
|
|
82
|
+
= 被 Authority 验证并接受的状态转换
|
|
83
|
+
|
|
84
|
+
ledger entry
|
|
85
|
+
= 对这次状态转换的认证记录
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
普通 Git `HEAD`、当前工作区、外部 commit、未提交文件,都不是 AWBS 认证数据库头。AWBS 当前认证数据库头由:
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
refs/awbs/trusted
|
|
92
|
+
sealed trusted ledger
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
共同确认。
|
|
96
|
+
|
|
97
|
+
## Operation As The Trusted Unit
|
|
98
|
+
|
|
99
|
+
AWBS 可信链的最小推进单元不是文件,也不是普通 Git commit,而是:
|
|
100
|
+
|
|
101
|
+
```text
|
|
102
|
+
verified operation
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
当前最主要的 operation 是:
|
|
106
|
+
|
|
107
|
+
```text
|
|
108
|
+
data changeset apply
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
也就是说:
|
|
112
|
+
|
|
113
|
+
```text
|
|
114
|
+
changeset
|
|
115
|
+
= 状态变化请求
|
|
116
|
+
|
|
117
|
+
apply
|
|
118
|
+
= 状态转换动作
|
|
119
|
+
|
|
120
|
+
trusted commit
|
|
121
|
+
= 转换后的数据库状态
|
|
122
|
+
|
|
123
|
+
ledger entry
|
|
124
|
+
= 对这次转换的认证记录
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
004 设计上允许未来扩展 operation 类型:
|
|
128
|
+
|
|
129
|
+
```text
|
|
130
|
+
genesis
|
|
131
|
+
data changeset apply
|
|
132
|
+
authority update
|
|
133
|
+
view revoke
|
|
134
|
+
summary update
|
|
135
|
+
clean rebuild receipt
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
这些 operation 都应当进入同一条可信事实链,但它们的语义不同:
|
|
139
|
+
|
|
140
|
+
- `genesis`:创建初始 AWBS 认证数据库状态。
|
|
141
|
+
- `data changeset apply`:把业务文件变化写入可信数据库。
|
|
142
|
+
- `authority update`:更新 AWBS 自身的可信事实层。
|
|
143
|
+
- `view revoke`:撤销 view,使未来 collect / apply 拒绝该 view。
|
|
144
|
+
- `summary update`:记录上层业务写入的摘要变化。
|
|
145
|
+
- `clean rebuild receipt`:记录一次可信重建行为,但不把备份目录删除当作自动动作。
|
|
146
|
+
|
|
147
|
+
## Hash-Linked Ledger
|
|
148
|
+
|
|
149
|
+
003 的 ledger 已经能记录可信写入。004 要把它进一步设计成真正的 hash-linked ledger。
|
|
150
|
+
|
|
151
|
+
每条 entry 应当包含:
|
|
152
|
+
|
|
153
|
+
```text
|
|
154
|
+
entryId
|
|
155
|
+
entryType
|
|
156
|
+
previousEntryHash
|
|
157
|
+
entryHash
|
|
158
|
+
operationHash
|
|
159
|
+
parentTrustedCommit
|
|
160
|
+
currentTrustedCommit
|
|
161
|
+
createdAt
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
其中:
|
|
165
|
+
|
|
166
|
+
- `previousEntryHash` 指向上一条 ledger entry 的 hash。
|
|
167
|
+
- `entryHash` 是当前 entry 的 canonical hash。
|
|
168
|
+
- `operationHash` 是本次 operation 全部关键材料的 hash。
|
|
169
|
+
- `parentTrustedCommit` 是本次操作基于的上一个 trusted commit。
|
|
170
|
+
- `currentTrustedCommit` 是本次操作推进后的 trusted commit。
|
|
171
|
+
|
|
172
|
+
链式关系是:
|
|
173
|
+
|
|
174
|
+
```text
|
|
175
|
+
entryHash(Tn)
|
|
176
|
+
= hash(canonical entry at Tn)
|
|
177
|
+
|
|
178
|
+
entryHash(Tn+1)
|
|
179
|
+
= hash(canonical entry at Tn+1, previousEntryHash = entryHash(Tn))
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
这样,如果有人改了中间某条 entry,后续 entry 的 hash 链会断。AWBS 不能阻止别人乱改文件,但可以拒绝承认对不上的链。
|
|
183
|
+
|
|
184
|
+
## Operation Hash
|
|
185
|
+
|
|
186
|
+
`operationHash` 不应只 hash 一个 changeset id,而应覆盖这次状态转换的全部关键材料。
|
|
187
|
+
|
|
188
|
+
对于 `data changeset apply`,至少应覆盖:
|
|
189
|
+
|
|
190
|
+
```text
|
|
191
|
+
view contract hash
|
|
192
|
+
changeset manifest hash
|
|
193
|
+
changeset payload hash
|
|
194
|
+
allowed applied paths
|
|
195
|
+
parentTrustedCommit
|
|
196
|
+
operation type
|
|
197
|
+
authority policy version
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Authority 验证 operation 时,必须重新计算这些 hash,而不是相信请求方提交的 hash。
|
|
201
|
+
|
|
202
|
+
## Authority Service
|
|
203
|
+
|
|
204
|
+
004 的主方向是引入 **AWBS Authority Service**。
|
|
205
|
+
|
|
206
|
+
005 的实现选择先落 A 模式:同用户的 **Ephemeral Key Session / 运行期本地钥匙托管**。它不创建 OS 用户,不接系统 keychain,不实现独立系统服务。B 模式,也就是独立 OS 身份、系统级 key 存储和真正的 `awbsd` 服务,仍然是后续方向。
|
|
207
|
+
|
|
208
|
+
它是一个独立运行的本地可信服务:
|
|
209
|
+
|
|
210
|
+
```text
|
|
211
|
+
awbsd / AWBS Authority Service
|
|
212
|
+
以独立 OS 身份运行
|
|
213
|
+
持有 signer / trust anchor
|
|
214
|
+
验证 operation
|
|
215
|
+
写入 sealed ledger
|
|
216
|
+
推进 refs/awbs/trusted
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
agent、Codex、Claude Code 或普通 CLI 不持有根信任。它们只提交请求:
|
|
220
|
+
|
|
221
|
+
```text
|
|
222
|
+
agent / CLI
|
|
223
|
+
-> create workspace
|
|
224
|
+
-> collect changeset
|
|
225
|
+
-> submit operation request
|
|
226
|
+
|
|
227
|
+
Authority Service
|
|
228
|
+
-> verify operation
|
|
229
|
+
-> sign operation
|
|
230
|
+
-> apply operation
|
|
231
|
+
-> advance trusted chain
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
关键规则:
|
|
235
|
+
|
|
236
|
+
```text
|
|
237
|
+
Authority Service 不能提供 sign(rawHash)。
|
|
238
|
+
Authority Service 只能提供 applyVerifiedOperation / applyVerifiedChangeset。
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
也就是说,服务不能变成“给任意字符串盖章”的接口。它必须自己读取 sealed view contract、changeset manifest、payload、trusted head 和 policy,然后重新计算 operation hash。只有验证通过,才允许签名和推进可信链。
|
|
242
|
+
|
|
243
|
+
## Authority Bootstrap
|
|
244
|
+
|
|
245
|
+
AWBS core 不应该在没有 authority session 的情况下进入可信写入状态。
|
|
246
|
+
|
|
247
|
+
启动顺序应当是:
|
|
248
|
+
|
|
249
|
+
```text
|
|
250
|
+
1. 检测运行平台
|
|
251
|
+
Windows / Linux / unknown
|
|
252
|
+
|
|
253
|
+
2. 检测 authority mode
|
|
254
|
+
repo-local sealed key
|
|
255
|
+
ephemeral key session
|
|
256
|
+
OS key store
|
|
257
|
+
local Authority Service
|
|
258
|
+
remote signer
|
|
259
|
+
|
|
260
|
+
3. 建立 trust anchor
|
|
261
|
+
获取解封能力、签名能力或 authority service session
|
|
262
|
+
|
|
263
|
+
4. 验证 repo authority
|
|
264
|
+
repoId
|
|
265
|
+
sealed catalog
|
|
266
|
+
sealed ledger
|
|
267
|
+
refs/awbs/trusted
|
|
268
|
+
|
|
269
|
+
5. 启动 AWBS core
|
|
270
|
+
只有 authority ready 后,可信写入才允许执行
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
如果任一关键步骤失败,系统不能伪成功。它必须进入明确状态:
|
|
274
|
+
|
|
275
|
+
```text
|
|
276
|
+
ready
|
|
277
|
+
可以执行可信读写。
|
|
278
|
+
|
|
279
|
+
degraded-readonly
|
|
280
|
+
可以读取、审计、诊断,但不能推进 trusted chain。
|
|
281
|
+
|
|
282
|
+
unavailable
|
|
283
|
+
不能打开可信事实层,需要人工修复或重新建立 authority。
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
对应失败原因包括:
|
|
287
|
+
|
|
288
|
+
```text
|
|
289
|
+
platform unsupported
|
|
290
|
+
authority mode unavailable
|
|
291
|
+
key file missing
|
|
292
|
+
key already checked out by another session
|
|
293
|
+
OS key store unavailable
|
|
294
|
+
Authority Service unreachable
|
|
295
|
+
ledger cannot be opened
|
|
296
|
+
trusted head cannot be verified
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
004 要把这个启动过程定义成 AWBS 核心的一部分,而不是某个外围工具命令。因为 AWBS 真正管理的是:
|
|
300
|
+
|
|
301
|
+
```text
|
|
302
|
+
输入如何变成 verified operation。
|
|
303
|
+
输出如何永久记录进 trusted chain。
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
没有 authority session,就没有可信写入。
|
|
307
|
+
|
|
308
|
+
## Independent OS Identity
|
|
309
|
+
|
|
310
|
+
Authority Service 应当支持以独立 OS 用户身份运行。
|
|
311
|
+
|
|
312
|
+
Windows 方向:
|
|
313
|
+
|
|
314
|
+
```text
|
|
315
|
+
本地用户:awbs-authority
|
|
316
|
+
服务进程:awbsd
|
|
317
|
+
密钥存储:DPAPI / Credential Manager / CNG KSP / TPM-backed provider
|
|
318
|
+
通信方式:named pipe / localhost IPC
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
Linux 方向:
|
|
322
|
+
|
|
323
|
+
```text
|
|
324
|
+
system user:awbs
|
|
325
|
+
服务进程:awbsd
|
|
326
|
+
密钥存储:kernel keyring / Secret Service / TPM trusted key
|
|
327
|
+
通信方式:Unix socket
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
这样,普通用户身份下运行的 agent 即使能读仓库、读源码、写 workspace,也不能直接读取 `awbs-authority` 身份下的 signer key。
|
|
331
|
+
|
|
332
|
+
这不等于对 admin/root 绝对安全。它的目标是把普通 agent 的绕过成本提高到:
|
|
333
|
+
|
|
334
|
+
```text
|
|
335
|
+
攻击 Authority Service
|
|
336
|
+
攻击 OS 用户边界
|
|
337
|
+
攻击 signer / trust anchor
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
这已经明显不同于“改一个 JSON 就能绕过”。
|
|
341
|
+
|
|
342
|
+
## Ephemeral Key Session
|
|
343
|
+
|
|
344
|
+
004 还应当记录一个轻量但很有价值的模式:**Ephemeral Key Session / 运行期钥匙托管**。
|
|
345
|
+
|
|
346
|
+
它的核心思路是:
|
|
347
|
+
|
|
348
|
+
```text
|
|
349
|
+
应用初始化时:
|
|
350
|
+
AWBS 生成或读取 key 文件。
|
|
351
|
+
应用把 key 读入内存。
|
|
352
|
+
应用立即删除磁盘上的 key 副本。
|
|
353
|
+
|
|
354
|
+
应用运行中:
|
|
355
|
+
key 只存在于当前 AWBS authority session 的内存中。
|
|
356
|
+
agent 在自己的工作生命周期中无法通过文件系统直接读取 key。
|
|
357
|
+
|
|
358
|
+
应用收尾时:
|
|
359
|
+
AWBS 停止接受新的可信写入。
|
|
360
|
+
authority session 把 key 写回持久位置。
|
|
361
|
+
应用退出。
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
这个模式的价值不是对抗 admin/root,也不是替代 Authority Service。它解决的是一个非常实际的问题:
|
|
365
|
+
|
|
366
|
+
```text
|
|
367
|
+
不要让强 agent 在普通任务中顺手读到 repo 里的 key 文件。
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
如果 agent 的生命周期发生在 key 已经被读入内存、磁盘副本已经删除之后,那么对这个 agent 来说,key 在文件系统层面就是不可见的。它即使知道 AWBS 源码,也不能只靠搜索 repo 文件拿到 key。
|
|
371
|
+
|
|
372
|
+
因此,运行期钥匙托管可以作为 004 的中间层:
|
|
373
|
+
|
|
374
|
+
```text
|
|
375
|
+
Level 1: repo-local sealed key
|
|
376
|
+
Level 1.5: ephemeral key session
|
|
377
|
+
Level 2: OS secret store / OS keychain
|
|
378
|
+
Level 3: local Authority Service
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
这个模式的边界也必须写清:
|
|
382
|
+
|
|
383
|
+
- 它依赖应用正确管理生命周期。
|
|
384
|
+
- 它要求 key 装载后删除磁盘副本,退出前再写回。
|
|
385
|
+
- 如果进程崩溃,必须有恢复策略,例如人工恢复、备份密封包或重新建立 authority。
|
|
386
|
+
- 如果另一个不受控 agent 在 AWBS 应用未运行时扫整个机器并读取 key 文件,这不属于 AWBS 单独能解决的问题。
|
|
387
|
+
- 如果应用构建者让 agent 在整个文件系统中无边界乱跑,那属于上层应用的 agent 管理失败,不应由 AWBS 假装兜底。
|
|
388
|
+
|
|
389
|
+
这不是放弃安全,而是明确职责边界:
|
|
390
|
+
|
|
391
|
+
```text
|
|
392
|
+
AWBS 负责让自己的可信写入链路不暴露 key。
|
|
393
|
+
上层应用负责约束自己启动的 agent 何时运行、能访问哪里、能不能在 AWBS 未托管 key 时乱扫文件。
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
在产品形态上,可以把它理解为:
|
|
397
|
+
|
|
398
|
+
```text
|
|
399
|
+
awbs authority session start --control-stdin
|
|
400
|
+
-> load key into memory
|
|
401
|
+
-> remove persisted key copy
|
|
402
|
+
-> mark authority ready
|
|
403
|
+
|
|
404
|
+
awbs authority session stop --control-token-stdin
|
|
405
|
+
-> stop trusted writes
|
|
406
|
+
-> persist key
|
|
407
|
+
-> mark authority unavailable
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
005 已经实现了 A 模式的 session 生命周期。恢复因子由上层应用的非 AI 控制层通过 stdin 注入,不由 agent 工作流持有,也不默认要求人类在第一次运行时交互输入。
|
|
411
|
+
|
|
412
|
+
## Trust Anchor Levels
|
|
413
|
+
|
|
414
|
+
004 采用服务优先的路线,但设计上保留分级能力:
|
|
415
|
+
|
|
416
|
+
```text
|
|
417
|
+
Level 0: Hash chain only
|
|
418
|
+
只做 hash-linked ledger。
|
|
419
|
+
防误改、防损坏、防低级伪造。
|
|
420
|
+
不防强 agent 全量重算链。
|
|
421
|
+
|
|
422
|
+
Level 1: Repo-local sealed key
|
|
423
|
+
key 派生材料在本地 repo 或本机上下文中。
|
|
424
|
+
提高绕过成本,但同用户强 agent 仍可能寻找材料。
|
|
425
|
+
|
|
426
|
+
Level 1.5: Ephemeral key session
|
|
427
|
+
应用启动时把 key 读入内存并删除磁盘副本。
|
|
428
|
+
应用结束时再把 key 写回持久位置。
|
|
429
|
+
适合单应用会话,能阻止 agent 在任务生命周期中顺手读 key 文件。
|
|
430
|
+
|
|
431
|
+
Level 2: OS secret store / OS keychain
|
|
432
|
+
key 不明文落在 repo。
|
|
433
|
+
使用 Windows DPAPI / Credential Manager,或 Linux keyring / Secret Service。
|
|
434
|
+
|
|
435
|
+
Level 3: Local Authority Service
|
|
436
|
+
独立 OS 身份运行。
|
|
437
|
+
CLI 和 agent 只请求验证 operation,不持有 signer。
|
|
438
|
+
|
|
439
|
+
Level 4: Remote signer / external append-only checkpoint
|
|
440
|
+
信任锚移出当前机器。
|
|
441
|
+
用远程 signer、protected environment 或外部 append-only log 做 checkpoint。
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
AWBS 不需要一开始就实现全部级别,但文档和接口设计不能把系统锁死在 Level 1。
|
|
445
|
+
|
|
446
|
+
## Security Boundary
|
|
447
|
+
|
|
448
|
+
AWBS 可信事实层的承诺是:
|
|
449
|
+
|
|
450
|
+
```text
|
|
451
|
+
源码公开不破坏安全。
|
|
452
|
+
普通权限 agent 不能仅凭 repo 文件伪造 trusted chain。
|
|
453
|
+
绕过 trusted chain 的行为会变成显式、高成本、可审计的 authority 攻击。
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
AWBS 不承诺:
|
|
457
|
+
|
|
458
|
+
```text
|
|
459
|
+
在 agent 拥有 admin/root 后仍然不可伪造。
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
拥有 admin/root 的 actor 理论上可以:
|
|
463
|
+
|
|
464
|
+
```text
|
|
465
|
+
替换服务程序
|
|
466
|
+
读取服务进程内存
|
|
467
|
+
修改服务配置
|
|
468
|
+
切换到 authority 用户
|
|
469
|
+
拦截 IPC
|
|
470
|
+
调用 signer 帮它签
|
|
471
|
+
修改系统策略
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
这属于主机最高信任边界被攻破。AWBS 的正确表述应当是:
|
|
475
|
+
|
|
476
|
+
```text
|
|
477
|
+
AWBS trusted chain protects against untrusted workflow actors.
|
|
478
|
+
It does not protect against a fully compromised host administrator.
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
中文表述:
|
|
482
|
+
|
|
483
|
+
```text
|
|
484
|
+
AWBS 可信链防的是不可信工作流执行者,
|
|
485
|
+
不防已被完全攻破的主机管理员。
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
## Relation To Blockchain
|
|
489
|
+
|
|
490
|
+
004 不引入币、共识、挖矿、P2P 网络、经济激励或链上资产。
|
|
491
|
+
|
|
492
|
+
AWBS 只借用区块链中最适合本系统的一部分:
|
|
493
|
+
|
|
494
|
+
```text
|
|
495
|
+
后一条记录承认前一条记录。
|
|
496
|
+
任何人改了中间记录,后面的链都会对不上。
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
在 AWBS 中:
|
|
500
|
+
|
|
501
|
+
```text
|
|
502
|
+
区块链交易
|
|
503
|
+
-> AWBS verified operation / changeset
|
|
504
|
+
|
|
505
|
+
区块链状态
|
|
506
|
+
-> AWBS trusted commit 对应的文件系统数据库状态
|
|
507
|
+
|
|
508
|
+
区块链区块头
|
|
509
|
+
-> AWBS ledger entry hash
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
AWBS 不需要全网共识,因为 AWBS 的问题不是“多人无中心共识”,而是“本地 agent 工作流中,哪些状态被 AWBS 承认”。
|
|
513
|
+
|
|
514
|
+
## Summary Boundary
|
|
515
|
+
|
|
516
|
+
摘要仍然永远由上层写入,AWBS 不内置 AI 摘要。
|
|
517
|
+
|
|
518
|
+
Trusted Authority Layer 可以记录 summary update 这种 operation,但它不负责生成摘要、不配置模型、不保存 API key、不理解业务语义。
|
|
519
|
+
|
|
520
|
+
正确边界是:
|
|
521
|
+
|
|
522
|
+
```text
|
|
523
|
+
上层业务生成摘要。
|
|
524
|
+
AWBS 保存摘要记录。
|
|
525
|
+
Trusted Authority Layer 决定摘要记录是否进入可信链。
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
## Future Implementation Direction
|
|
529
|
+
|
|
530
|
+
004 只写设计文档,不实现代码。
|
|
531
|
+
|
|
532
|
+
后续实现可以拆成:
|
|
533
|
+
|
|
534
|
+
```text
|
|
535
|
+
005: hash-linked ledger schema
|
|
536
|
+
006: AuthoritySignerPort
|
|
537
|
+
007: local Authority Service prototype
|
|
538
|
+
008: OS key store integration
|
|
539
|
+
009: external checkpoint / remote signer
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
实现时应保持一个原则:
|
|
543
|
+
|
|
544
|
+
```text
|
|
545
|
+
不要让 CLI 成为事实上的 root authority。
|
|
546
|
+
CLI 是客户端;Authority Service 才是可信状态推进者。
|
|
547
|
+
```
|