跳转到主要内容
# 此部分由 Runly SDK 自动生成,禁止手动修改
security:
  hash_algo: "SHA-256"
  encoding: "hex"
  # 签名包含了对分账比例、AI 提示词、外部接口地址的全量保护
  signature: "0x30450221008f2a6e...e41c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9"

1. 定义与目的

Security 块通常位于 .runly 文件的末尾。它是由 Runly CLISDK 在资产编译打包阶段自动注入的数字签名。其目的是验证文件内容是否与创作者(Creator)发布时完全一致,防止恶意代码注入或商业参数(如分账比例)被篡改。

2. 参数字段规范

参数名必填数据类型规范说明
hash_algoString摘要算法。强制标准为 SHA-256。用于将整个协议内容压缩为唯一的哈希值。
signatureString数字签名。使用创作者的 private_key 对哈希值进行签名的结果。
signer_idString签名者标识。默认指向 manifest.creator.me_id
encodingEnum签名编码格式。可选:hex (默认), base64

3. 签名生成流程 (Signing Process)

当执行 runly-cli build 命令时,系统遵循以下算法逻辑:
  1. 标准化 (Canonicalization):将协议中除了 security 块以外的所有内容(Manifest, Dictionary, Topology, Commerce)按照 Key 的字母顺序排列,并移除多余空格和换行。
  2. 哈希计算 (Hashing):使用 SHA-256 算法生成该标准字符串的二进制摘要。
  3. 非对称加密 (Signing)
    • 算法:采用 Ed25519 指令集(高性能且抗量子攻击)。
    • 私钥:使用创作者本地存储的 private.key
  4. 结果封装:将生成的十六进制字符串填充至 signature 字段。

4. 校验与拒绝执行机制 (Validation)

Runly Executor (执行引擎) 在加载任何 .runly 资产时,必须首先执行“验签”操作:
  • 身份比对:提取 manifest.creator.pub_key
  • 计算验证:使用该公钥对 security.signature 进行解密验证。
  • 拒绝策略
    • Signature Mismatch:若校验失败(说明内容被改动),引擎强制终止初始化,抛出 SECURITY_COMPROMISED 异常。
    • Pubkey Missing:若 Manifest 中无公钥或格式错误,视为非法资产,拒绝执行。