mpc4j(Multi-Party Computation for Java)开源库是一个高效且易于使用的安全多方计算(MPC)和差分隐私(DP)库,主要用Java实现。mpc4j中提供了最先进的MPC协议和DP算法的实现,研究人员可以利用mpc4j对主流的隐私计算协议实现公平的性能比较。瓴羊Dataphin隐私计算目前可以直接调用mpc4j将协议商业化落地。
1. mpc4j的目标
mpc4j的目标可以遵循为下述几个关键字:
• 实现严谨:mpc4j参考了学术领域几乎全部安全多方计算、差分隐私、联邦学习开源库,采用学术界认同的方式完成库的实现。与此同时,结合对于密码学的理解,对外提供统一的接口,后续开发人员无需理解如何实现底层密码学库,只需要直接调用。
• 易于上手:mpc4j应用Java语言实现,开发非常容易上手。经过验证,具备开发能力的博士研究生可以在2小时内上手开发新的协议。不具备开发能力的博士可以在一周内学习Java语言后,应用1-2周的时间即可实现新的协议。
• 统一实现:mpc4j采用了模块化拆分,约束了数据包的编解码标准、数据包格式、通信接口等。学术开发人员无需考虑如何实现通信,只需要聚焦于协议本身的实现。mpc4j打通了C/C++的SIMD指令集实现和Java层、统一数据格式、支持国密算法。这样一来,所有协议可以在统一的框架下对比性能、在统一的框架下二次开发。
• 工程思维:mpc4j是安全算法团队与工程团队约定实现的。工程人员可以参考实现,对通信接口进行改造,无需修改协议底层。进一步,工程团队可以对协议进行分布式改造,从而构建商业化产品。
2. mpc4j的架构图
mpc4j的整体架构如下图所示:
mpc4j可以在x86_64和aarch64上运行。使用者可以在Macbook M1(aarch64)上开发和测试协议,然后在Linux OS(x86_64)上运行实验。
开发人员可能希望使用国产密码算法SM系列算法(SM2用于公钥操作,SM3用于散列,SM4用于块密码操作)而不是常规算法(如secp256k1用于公钥操作,SHA256用于散列和AES用于块密码操作)。mpc4j支持SM系列的国产密码算法与常规密码算法的切换,mpc4j利用Bouncy Castle支持SM系列算法。
3. mpc4j的阶段性成果
2022年9月21日,中国信息通信研究院云计算与大数据研究所宣布,mpc4j首批入选了隐私计算联盟开源项目组。mpc4j每三个月会进行一次更新,目前版本为1.0.6。