1、参数字段
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
hash_algo | 是 | Enum | 摘要算法。标准值:SHA-256。用于生成协议内容的唯一特征值。 |
signature | 是 | String | 数字签名值。使用创作者私钥对哈希值进行加密后的结果。 |
encoding | 否 | String | 签名编码格式。默认 hex 或 base64。 |
2、安全校验流程 (Verification Flow)
当runly-cli 或执行引擎加载一个 .runly 文件时,必须强制执行以下算法流程:
- 分体提取 (Payload Extraction):
- 提取
security域之前的所有内容作为待验签原文(Canonical Body)。
- 提取
- 标准化 (Canonicalization):
- 对 YAML 键值对进行字母序排序(Key Sorting),消除空格、换行符差异,确保在不同操作系统下生成的哈希值完全一致。
- 哈希计算 (Hashing):
- 使用
hash_algo声明的算法(如 SHA-256)计算 Body 的摘要。
- 使用
- 签名验证 (Signature Verification):
- 提取
manifest.creator.pub_key中的 Ed25519 公钥。 - 验证
signature是否为该公钥对 Body 哈希值的合法签名。 - 判定:若验证通过,标记资产为
TRUSTED;若失败,立即终止加载,报错AssetTamperedError。
- 提取
3、为什么选择 Ed25519 算法?
- 高性能: 签名和验证速度极快,适合 CLI 高频校验。
- 短签名: 生成的签名长度固定且较短,方便嵌入 YAML 且不影响阅读。
- 安全性: 具备极高的抗碰撞性和抗侧信道攻击能力,是目前区块链和工业级通信协议的首选。
