QORMQORM v0.8.4 docs 开始使用 EN

QORM 安全模型

目标模型 vs. 当前实现。 本文档描述的是 QORM 的目标安全模型。当前 Go 运行时已经强制执行的部分: ed25519 的"运行前先验证工件"式 Bundle 签名 + 内容完整性(完整性优先于签名);OTA 更新需要一个受信任的公钥 (--trust,否则拒绝);密钥吊销与实际的验证密钥绑定;本地服务器阻止跨源(CSRF/DNS-rebind)访问危险端点(/window eval、 /update/mcp);/update 的 source 拉取拒绝私网/链路本地/元数据地址,重定向逐跳复核(回环地址保持放行以支持本地开发 —— 详见 bundle-signing.md);移动端原生能力由系统权限提示把关,生成的项目会根据实际使用的组件派生出 Info.plist / AndroidManifest 声明。 尚未实现的部分(这里描述的目标;不要把它们当作已经生效的保证):一个独立的运行时"能力批准层"——即 按能力粒度的允许列表裁决、批准生命周期(吊销/过期),以及"桌面原生操作在传输层之外的把关"。桌面原生 操作目前并未独立批准;下文的"安全不变量"是设计意图,而非当前强制执行的要求。

QORM 支持动态 Bundle、Agent Patch、Host Capabilities、Plugin 和 Native Bridge,因此安全模型必须内建其中。

安全目标

信任边界

Source JSON
Bundle
Runtime
Host Capability
Native Bridge
Plugin
Agent
Platform

每一条边界都必须可验证。

决策边界

安全不变量

Bundle 安全

一个 Bundle 必须包含:

bundleVersion
minRuntimeVersion
hash
signature
keyId
capability requirements
source manifest

签名、规范化、信任根、轮换和吊销的规则由 bundle-signing.md 管辖。

Agent 安全

默认情况下,Agent 只能检查、验证和预览。诸如 apply、host.call、filesystem.saveFile 和 deploy 之类的写入类能力,必须经过策略以及任何必需的批准。

Agent 权限与系统权限之间的关系由 agent/permissions.mdpermission-model.md 管辖。

Host Capability 安全

每个 Host Capability 都必须声明:

name
input schema
output schema
permissions
platform support
requires approval

运行时权限优先级、批准生命周期和审计规则由 permission-model.mdhost-capability-spec.md 管辖。

Plugin 安全

一个 Plugin 需要:

manifest
permission declaration
sandbox strategy
version
signature

Plugin 只能收窄自身的能力;它不得放宽宿主策略所允许的范围。

Web / 自定义客户端安全边界

已打包应用的 OTA 信任模型

--update-url 打包时必须同时携带 --trust <key.pub>——两个 flag 强制成对。信任划分是刻意设计的:

——商店签名、TLS 来源——与交付 WASM 运行时本体的是同一渠道,启动时不重复验签。

在激活前都用内嵌信任公钥做 ed25519 验签;验签失败即丢弃并逐级回落 (上一次更新 → 随包 payload)。失败的更新永远不会触碰运行中的应用。

CLI 自更新信任

qorm update 只有在完成两步校验后才替换二进制:先用运行中二进制内嵌的公钥 验证 release 的 SHA256SUMS 清单的 ed25519 签名,再用清单比对下载文件的 sha256。签名缺失或无法验证时默认拒绝(--insecure-skip-verify 是显式逃生口); 内嵌公钥列表支持轮换(过渡版本同时内嵌新旧两把)。

禁止行为