Agent Skills
返回列表
🔒

技能签名

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_2a52e6b3/skill-sign。

技能介绍

问题:只校验哈希无法证明作者身份

技能目录一旦发布,接收者通常只能检查内容是否变化。一个 SHA-256 哈希可以发现意外修改,但攻击者也可以拿到原技能、重新计算哈希,再以你的名义发布。结果是:接收者能确认“文件没变”,却无法确认“是谁签的”。对于跨机器、跨组织传播的技能,这个缺口足够危险。

工作方式:把元数据和文件一起签进 sign.key

Skill Sign 用 Ed25519 对技能目录签名。签名不是对单个文件做哈希,而是覆盖一个规范化 JSON 元数据,以及目录内按路径递归排序后的文件内容;sign.key、.git/、__pycache__/、node_modules/、*.pyc 等会被排除。验证时可用两种模式:自验证只检查签名后是否被改动;信任验证则额外比对预先取得的作者公钥,从而同时证明完整性和作者身份。发布者先运行 scripts/init.py 生成密钥对,再用 scripts/sign.py my-skill --version 1.0.0 签名,并把 sign.key 与技能一起提交;接收者拿到作者公钥后,即可用 scripts/verify.py --trust-key 持续验证后续版本。

边界:信任仍要一次性带外建立

这个方案没有改变信任模型:你必须通过可信渠道一次性获得作者公钥,例如官方仓库、已验证博客发布的指纹,或当面交付的密钥文件。否则任何人都可以用自己的私钥签名,接收者只能看到“有人签了”,却无法判断是谁。v1.0 也不支持密钥轮换和吊销;私钥丢失意味着无法再以同一身份签名,私钥泄露则必须发布新公钥并通知接收者重新信任。纯 Python Ed25519 单次签名或验证约 5ms,适合技能发布频率,不适合高频或敌意环境;如需要更强实现,可替换底层密码库,sign.key 格式保持互通。

使用场景

  • 技能发布者在提交前需为目录生成签名并附带 sign.key 文件
  • 接收者通过预置作者公钥验证技能未被篡改且来源可信
  • 用户丢失私钥后需立即备份并通知接收者更换公钥
  • 跨平台分发时验证方需确认签名文件与公钥匹配

适合人员

  • 技能开发者需确保发布内容未被第三方篡改
  • 安全工程师负责校验第三方技能来源真实性
  • DevOps 人员需集中管理签名密钥并处理泄露事件
  • 开源维护者需建立跨社区签名信任机制