1. 定义与目的
Security 块通常位于.runly 文件的末尾。它是由 Runly CLI 或 SDK 在资产编译打包阶段自动注入的数字签名。其目的是验证文件内容是否与创作者(Creator)发布时完全一致,防止恶意代码注入或商业参数(如分账比例)被篡改。
2. 参数字段规范
| 参数名 | 必填 | 数据类型 | 规范说明 |
|---|---|---|---|
hash_algo | 是 | String | 摘要算法。强制标准为 SHA-256。用于将整个协议内容压缩为唯一的哈希值。 |
signature | 是 | String | 数字签名。使用创作者的 private_key 对哈希值进行签名的结果。 |
signer_id | 否 | String | 签名者标识。默认指向 manifest.creator.me_id。 |
encoding | 否 | Enum | 签名编码格式。可选:hex (默认), base64。 |
3. 签名生成流程 (Signing Process)
当执行runly-cli build 命令时,系统遵循以下算法逻辑:
- 标准化 (Canonicalization):将协议中除了
security块以外的所有内容(Manifest, Dictionary, Topology, Commerce)按照 Key 的字母顺序排列,并移除多余空格和换行。 - 哈希计算 (Hashing):使用
SHA-256算法生成该标准字符串的二进制摘要。 - 非对称加密 (Signing):
- 算法:采用 Ed25519 指令集(高性能且抗量子攻击)。
- 私钥:使用创作者本地存储的
private.key。
- 结果封装:将生成的十六进制字符串填充至
signature字段。
4. 校验与拒绝执行机制 (Validation)
Runly Executor (执行引擎) 在加载任何.runly 资产时,必须首先执行“验签”操作:
- 身份比对:提取
manifest.creator.pub_key。 - 计算验证:使用该公钥对
security.signature进行解密验证。 - 拒绝策略:
- Signature Mismatch:若校验失败(说明内容被改动),引擎强制终止初始化,抛出
SECURITY_COMPROMISED异常。 - Pubkey Missing:若 Manifest 中无公钥或格式错误,视为非法资产,拒绝执行。
- Signature Mismatch:若校验失败(说明内容被改动),引擎强制终止初始化,抛出
