add docs publish (#45)
本仓库用于存放隐私计算平台开放算法协议接口,旨在将算法接口通过程序化设计语言 Protobuf 更加全面、精确地表述出来,帮助隐私计算平台开发者更好地实施互联互通改造,促进隐私计算算法的互联互通。
协议文档地址:https://www.secretflow.org.cn/docs/interconnection/
本仓库接口按照北京金融科技产业联盟(简称:金科联盟)隐私计算跨平台互联互通团体标准、信通院牵头隐私计算联盟互联互通团体标准要求设计,每一个算法协议均由“参数获取与校验”,“算法主体运行” 两部分组成,其中”参数获取“的方式两个标准略有差异:
其余部分两个标准内容一致:
注: 仓库排名不分先后
. ├── PPCA # 存放隐私计算联盟归口的标准协议文件副本 ├── docs # 文档网站的网页源代码 └── interconnection # 所有接口文件 ├── common # 通用的接口定义 ├── handshake # 所有握手协议相关接口 │ ├── algos # 算法层的握手协议接口 │ ├── op # 安全算子层的握手协议接口 │ └── protocol_family # 密码协议层的握手协议接口 ├── legacy # 目前已经废弃的接口文件 ├── link # 传输层接口 ├── runtime # 算法运行主体所用的接口 └── service # 访问第三方公共基础服务所用的接口
当前已经定义的互联互通协议(接口)有:
注:本仓库收集、存放的互联互通接口仅为金科联盟、隐私计算联盟标准的子集,完整的接口、文档请参考各联盟的官方仓库。
隐私计算联盟标准体系中所有算法协议都通过握手协商的方式对齐算法参数,整个过程较为复杂,此处做一些补充介绍。
握手协商协议的执行过程和接口设计遵循以下原则:
interconnection/handshake/entry.proto
HandshakeRequest
HandshakeResponse
[SM2, CURVE25519]
算法协议中提到的 proto 一般并不直接用于 RPC 框架,而是用作跨语言、跨版本的序列化、反序列化工具使用。传输层只负责传输裸的二进制 buffer,不感知具体的 proto 格式,下图是一个示例:
┌─────────────┐ ┌─────────────┐ │ Algorithm │ │ Algorithm │ └──────┬──────┘ └──────▲──────┘ │Serialize │ │proto │Deserialize │to buffer │buffer ┌──────▼──────┐ ┌──────┴──────┐ │ Transport │ buffer │ Transport │ │ layer ├────────────────►│ layer │ └─────────────┘ http(s)/rpc └─────────────┘
示例图:
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
隐私计算平台开放算法协议
本仓库用于存放隐私计算平台开放算法协议接口,旨在将算法接口通过程序化设计语言 Protobuf 更加全面、精确地表述出来,帮助隐私计算平台开发者更好地实施互联互通改造,促进隐私计算算法的互联互通。
协议文档地址:https://www.secretflow.org.cn/docs/interconnection/
协议组成
本仓库接口按照北京金融科技产业联盟(简称:金科联盟)隐私计算跨平台互联互通团体标准、信通院牵头隐私计算联盟互联互通团体标准要求设计,每一个算法协议均由“参数获取与校验”,“算法主体运行” 两部分组成,其中”参数获取“的方式两个标准略有差异:
其余部分两个标准内容一致:
相关仓库
注: 仓库排名不分先后
Interconnection 仓库结构
当前已经定义的互联互通协议(接口)有:
注:本仓库收集、存放的互联互通接口仅为金科联盟、隐私计算联盟标准的子集,完整的接口、文档请参考各联盟的官方仓库。
握手协议设计原则
隐私计算联盟标准体系中所有算法协议都通过握手协商的方式对齐算法参数,整个过程较为复杂,此处做一些补充介绍。
握手协商协议的执行过程和接口设计遵循以下原则:
interconnection/handshake/entry.proto中定义的HandshakeRequest,所有算法的握手协商结果都使用HandshakeResponse格式。HandshakeRequest,rank-0 汇总所有参与方的请求后,得出一组公共参数,依次发送HandshakeResponse,如果参数协商失败,则依次发送错误消息。HandshakeRequest中每一类具体的参数项,其命名风格一般为 XxxProposal,HandshakeResponse中选定的参数项,其命名风格一般为 XxxResult。HandshakeResponse中发给大家。HandshakeRequest用一个列表表示,表示发送者支持列表所列的功能;并且这个列表是有序的,表示发送者更加偏爱列表中靠前的参数。例如 ECDH-PSI 中的椭圆曲线(EC)类型,假如请求列表是[SM2, CURVE25519],则表示发送者同时支持 SM2 和 CURVE25519,如果其他参与方也同时支持这两种 EC,则协商者应当优先选择 SM2, 因为 SM2 排在前面。当然,如果多个参数方发送的列表顺序是矛盾的,协商者会优先满足大多数参与方的偏爱。算法协议与传输层关系
算法协议中提到的 proto 一般并不直接用于 RPC 框架,而是用作跨语言、跨版本的序列化、反序列化工具使用。传输层只负责传输裸的二进制 buffer,不感知具体的 proto 格式,下图是一个示例:
示例图: