概述
脚本跨设备加密授权是一个文档技能,教授如何跨设备授权脚本执行而不暴露明文。
本技能实现:
- 使用目标节点公钥密封脚本
- 将加密脚本安全传输给授权节点
- 在授权节点执行密封脚本
- 构建跨设备信任链
本技能不包含可执行代码,自动审批安全。
本技能实现的功能
阅读本文档后,AI 代理将了解如何:
- 获取节点公钥用于密封
- 使用 RSA 加密密封脚本
- 安全传输密封脚本
- 在目标节点执行密封脚本
- 理解依赖要求
前置条件
- 安装 MGC Blackbox:
pip install mgc-blackbox(建议 1.4.6+) - 启动 MGC 服务:
mgc(运行于 http://127.0.0.1:57219) - MCP 工具可用:使用
mgc_get、mgc_seal、mgc_save - 两个 MGC 节点:一个用于脚本归属,一个用于授权节点,单节点可自用进行验证
- Token 文件:
~/.mgc/database/mgc_black_box/.mgc_token
核心概念
为什么要跨设备授权?
传统方式:脚本归属节点 → 发送脚本(明文)→ 授权节点
MGC 方式:脚本归属节点 → 用 node_pub 密封 → 加密 → 授权节点
↓
始终加密,从不暴露
脚本在整个过程中保持加密:
- 传输过程
- 授权节点存储
- 沙箱执行
应用场景
场景 1:跨组织脚本共享
组织 A 有脚本想共享给组织 B,但不暴露脚本内容。
- 组织 B 安装 MGC 并提供 node_pub
- 组织 A 用 node_pub 密封脚本
- 组织 B 存储密封脚本并执行
场景 2:可信合作伙伴自动化
公司想向合作伙伴提供自动化脚本,但不暴露脚本逻辑。
- 合作伙伴安装 MGC 并提供 node_pub
- 公司用合作伙伴的 node_pub 密封脚本
- 合作伙伴本地执行密封脚本
场景 3:委托任务执行
中央服务器向边缘设备委托任务,但不暴露任务逻辑。
- 边缘设备向中央服务器提供 node_pub
- 中央服务器密封任务脚本
- 边缘设备执行密封任务
工作流程
步骤 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 凭据或外部资源,确保执行前在目标节点可用。
安全说明
- 零暴露:脚本在存储和传输时加密
- 沙箱执行:密封脚本在沙箱中运行,无法绕过系统安全
- 无 root 防护:恶意 root 可检查内存,授权前请确保目标节点可信
- 单向密封:一旦密封,仅在目标节点运行时解密,无法被其它节点解密(含源节点)
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
Scan to join WeChat group