安全与隐私
Babel Mesh 怎样分配请求、保护账户、校验节点,以及哪些事情它做不到。
你发送的内容去了哪里
你的请求先到达 Babel Mesh 网关,网关按请求的数据级别挑选节点并把请求转给它。节点用它的模型算出结果,再通过网关返回。
- 处理请求的节点能读到它。目前的工作方式就是这样:节点要读到提示词才能回答。所以不要发送密码、身份证号或商业机密。
- 节点看不到你是谁。节点收到的请求不带账户名,也没有密钥,只有一个匿名标记。
- Babel Mesh 不保存对话。网关的记录只有请求的时间、模型、结果和用量。对话留在你自己的客户端或浏览器里。
- Babel Mesh 不审核内容。网关不按内容规则检查、拦截或过滤输入和输出,也不会因为内容留下摘录或记下账户名。内容的使用责任在使用者一方,请不要发送违法内容。
- 抽查会重算请求。为了验证贡献者返回的结果,一小部分公开级请求会在运营方自己的节点上重新计算,再比较两份结果。
数据级别
每个账户和每个请求都有一个数据级别。自己注册的账户从“公开”开始。贡献者的节点只会收到“公开”级的请求。更高级别只交给运营方自己的节点。目前图像和视频也只由运营方的节点处理,因为它们的结果不能像文本那样抽查。
连接与密钥
- 网站和 API 都使用 HTTPS。背后的各个组件(控制器、网关、账本、中继、节点)通过加密连接通信,并双向验证证书;节点的身份就在它的证书里。
- 节点只向外连接,不开放入站端口,通过中继提供服务。
- 客户端把你的 API 密钥保存在你的电脑上,只有你的系统账户能读取。客户端的页面从不接触密钥,请求由客户端代你发出。
- 客户端更新会对照已签名的清单检查:公钥内置在客户端里,签名有问题或版本不是更新的,都不会安装。
记账与验证
- 双方签名的回执。每个请求,网关和节点都对同一份回执签名,两边一致账本才会记录。回执里只有请求和结果的哈希以及用量,没有内容。
- 随机抽查。新节点查得更勤,长期记录良好的节点查得少些。结果对不上的节点会被隔离;运营方确认作弊后,其收入作废并按规则处罚。
- 收入会先被暂扣。贡献者的收入要等几天才到账,期间检查仍在继续。
Hive:服务器看不到你的任务
Hive 是另一条路:你交给它的任务和文件在你的浏览器里就加密了,调度器和存储只拿到密文。下面是它现在的实际做法,包括它做不到的部分。
- 加密在浏览器里完成。每个任务有自己的主密钥;任务、文件和结果都用它封装,主密钥再分别封给“允许运行这个任务的机器”。调度器、存储和网关看到的是密文、大小、时间和你的账户号,看不到内容。
- 运行任务的机器能看到内容。机器必须解开才能干活,这一点无法避免。所以机器按数据级别分开:公开档任何通过准入的机器都可以;可信档只给平台自己的机器、签约机构和通过远程证明的机器;机密档只给平台自己的机器和通过远程证明的机器。你自己名下的机器永远优先,也只有你自己的机器能不受档位限制地接你的任务。
- 机器在隔离环境里运行。任务在 gVisor 沙箱里跑,默认没有网络,只能读写它自己的工作目录。新加入的机器要先通过多次检查才会拿到真实任务,检查失败的机器会被隔离或封禁。
- 每个任务一把一次性模型密钥。机器拿不到你的账户密钥;任务用的是专为它生成、有花费上限的密钥。任务一结束,服务器就把它撤销,不依赖你的页面是否开着。
- 保留多久。任务和结果(密文)在服务器上保留 7 天,之后自动删除;页面会写明日期。取消任务立即清除。你的任务记录和解密用的钥匙只在你的浏览器里:清除浏览器数据或换浏览器就打不开了,除非你开启“跨设备同步”(用只有你知道的口令加密,口令忘了没人能找回)。
- 我的资料库同样在浏览器里加密。文件切块、用每个文件自己的钥匙加密后才上传,存储只有密文,并保存在不止一台机器上,清单也加密。授权给任务的文件是“只读、限时、只限那几块”。
- 可以核对。核心代码计划开源;发布的程序已经可以可复现构建,哈希将登记进透明日志,供你核对手里的程序就是源码编出来的(这一步还没开始);浏览器端密码学是单独一个文件,与服务端实现用同一批测试向量互相核对。
Hive 做不到的:不能让运行任务的机器看不到它在处理的内容(机密档靠硬件远程证明,目前只有平台自己的机器);防不住被攻破的浏览器或装了恶意扩展的电脑;服务器仍然知道“某个账户在某个时间交了一个多大的任务”这类元数据;公开档任务可能由陌生人的机器处理,不要把私密内容放进去;还没有经过第三方安全审计。
它做不到的事
- 目前还没有可信执行环境(TEE):无法保证节点看不到内容,所以请求才分级别。
- 它还没有经过第三方安全审计。
- 不承诺可用性:节点随时可能离开,请求会在另一个节点上重试,但不保证成功。
本页说明系统目前实际是怎么做的。正式的服务条款和隐私政策由运营主体另行发布。