返回 Skill 列表
extension
分类: 开发与工程无需 API Key

脚本跨设备加密授权(零暴露)

要把自己的脚本授权给别人使用,但又不想让别人看到自己的核心逻辑怎么办?本技能通过MGC Blackbox实现零暴露跨设备脚本授权。脚本使用目标节点公钥加密,以密文形式传输,仅在授权节点执行时解密运行。

person作者: zkevinyhubModelScope

概述

脚本跨设备加密授权是一个文档技能,教授如何跨设备授权脚本执行而不暴露明文

本技能实现:

  • 使用目标节点公钥密封脚本
  • 将加密脚本安全传输给授权节点
  • 在授权节点执行密封脚本
  • 构建跨设备信任链

本技能不包含可执行代码,自动审批安全。


本技能实现的功能

阅读本文档后,AI 代理将了解如何:

  • 获取节点公钥用于密封
  • 使用 RSA 加密密封脚本
  • 安全传输密封脚本
  • 在目标节点执行密封脚本
  • 理解依赖要求

前置条件

  1. 安装 MGC Blackboxpip install mgc-blackbox(建议 1.4.6+)
  2. 启动 MGC 服务mgc(运行于 http://127.0.0.1:57219)
  3. MCP 工具可用:使用 mgc_getmgc_sealmgc_save
  4. 两个 MGC 节点:一个用于脚本归属,一个用于授权节点,单节点可自用进行验证
  5. Token 文件~/.mgc/database/mgc_black_box/.mgc_token

核心概念

为什么要跨设备授权?

传统方式:脚本归属节点 → 发送脚本(明文)→ 授权节点
MGC 方式:脚本归属节点 → 用 node_pub 密封 → 加密 → 授权节点
                                      ↓
                          始终加密,从不暴露

脚本在整个过程中保持加密:

  • 传输过程
  • 授权节点存储
  • 沙箱执行

应用场景

场景 1:跨组织脚本共享

组织 A 有脚本想共享给组织 B,但不暴露脚本内容。

  1. 组织 B 安装 MGC 并提供 node_pub
  2. 组织 A 用 node_pub 密封脚本
  3. 组织 B 存储密封脚本并执行

场景 2:可信合作伙伴自动化

公司想向合作伙伴提供自动化脚本,但不暴露脚本逻辑。

  1. 合作伙伴安装 MGC 并提供 node_pub
  2. 公司用合作伙伴的 node_pub 密封脚本
  3. 合作伙伴本地执行密封脚本

场景 3:委托任务执行

中央服务器向边缘设备委托任务,但不暴露任务逻辑。

  1. 边缘设备向中央服务器提供 node_pub
  2. 中央服务器密封任务脚本
  3. 边缘设备执行密封任务

工作流程

步骤 1:授权节点获取节点公钥

运行密封脚本的节点必须提供其公钥。

# 通过 MCP 获取节点公钥
node_pub = mgc_get(
    info_type="__NODE_PUB__",
    info_owner="__NODE_PUB__"
)

注意:如果不存在节点密钥,MGC 首次访问时自动生成。

步骤 2:脚本归属节点密封脚本

脚本归属节点使用授权节点的公钥密封脚本。

# 先存储原始脚本
mgc_save(
    info_type="script",
    info_owner="my_script",
    ext01="python",
    content="print('Confidential script')"
)

# 用目标节点公钥密封脚本
sealed_script = mgc_seal(
    info_type="script",
    info_owner="my_script",
    ext04=node_pub  # 目标节点公钥
)

步骤 3:传输密封脚本

将密封脚本传输给授权节点。密封内容是密文。

# sealed_script 包含加密数据
print(sealed_script)  # 仅将此发送给授权节点

步骤 4:授权节点存储密封脚本

授权节点将密封脚本存入其 MGC。

# 存储密封版本
mgc_save(
    info_type="script",
    info_owner="partner_script",
    ext01="python",
    content=sealed_script  # 已经是加密的
)

步骤 5:执行密封脚本

授权节点执行密封脚本。

# 执行密封脚本
result = mgc_get(
    info_type="script",
    info_owner="partner_script",
    action="run"
)
# 返回结果,脚本从未暴露

依赖要求

密封脚本时,确保目标节点上有所需依赖:

| 依赖 | 如何处理 | |------|---------| | MGC 凭据 | 用相同 info_type/info_owner 存入目标节点,格式必须一致但内容根据节点变化 | | 外部文件 | 必须存在于目标节点,且路径应保持一致,建议最好一同存入MGC,通过MGC调用 | | 环境变量 | 必须在目标节点上设置 |

重要:如果脚本依赖 MGC 凭据或外部资源,确保执行前在目标节点可用。


安全说明

  1. 零暴露:脚本在存储和传输时加密
  2. 沙箱执行:密封脚本在沙箱中运行,无法绕过系统安全
  3. 无 root 防护:恶意 root 可检查内存,授权前请确保目标节点可信
  4. 单向密封:一旦密封,仅在目标节点运行时解密,无法被其它节点解密(含源节点)

MCP 工具参考

mgc_get

获取节点公钥:

{
  "info_type": "__NODE_PUB__",
  "info_owner": "__NODE_PUB__"
}

执行密封脚本:

{
  "info_type": "script",
  "info_owner": "sealed_script_identifier",
  "action": "run"
}

mgc_seal

参数:

{
  "info_type": "script",
  "info_owner": "original_script_identifier",
  "ext04": "target_node_public_key"
}

返回: 密封(加密)脚本内容/密钥/启动命令等

mgc_save

存储原始脚本:

{
  "info_type": "script",
  "info_owner": "script_identifier",
  "ext01": "python",
  "content": "script plaintext"
}

存储密封脚本:

{
  "info_type": "script",
  "info_owner": "sealed_script_identifier",
  "ext01": "python",
  "content": "sealed_encrypted_content"
}

问题排查

| 问题 | 解决方案 | |------|---------| | 脚本运行失败 | 检查 MGC 版本,需 1.4.6+ | | 凭据未找到 | 确保凭据用相同 info_type/info_owner 存入目标节点 | | 密封失败 | 验证 node_pub 是有效的 RSA 公钥 | | 执行超时 | 检查脚本依赖是否可用 |


相关链接

  • 主仓库:https://github.com/zkeviny/MGC-Blackbox
  • 问题反馈:https://github.com/zkeviny/MGC-Blackbox/issues
  • 联系方式:mirgincipher@outlook.com