• 一个好用的多方隐私求交算法库JasonCeng/MultipartyPSI-Pro


    Github链接传送:JasonCeng/MultipartyPSI-Pro

    大家好,我是阿创,这是我的第29篇原创文章。

    今天是一篇纯技术性文章,希望对工程狮们🦁有所帮助。

    向大家推荐一个我最近改造的算法库(JasonCeng/MultipartyPSI-Pro

    主要涉及隐私计算、联邦学习领域,是一个支持多方的隐私求交算法库,主要是是基于osu-crypto/MultipartyPSI****的增强实现。

    详细介绍就是下方的README啦~

    基于可编程不经意伪随机数的多方隐私求交算法库

    Programmable Oblivious PRF & multi-party PSI

    📣 简介#

    本算法库是基于osu-crypto/MultipartyPSI的增强实现。

    该算法的原论文来自 CCS 2017 : Practical Multi-party Private Set Intersection from Symmetric-Key Techniques[ePrint]

    ✨ 特性#

    • 简洁的 API 设计,使用如丝滑般流畅
    • 支持多方隐私求交
    • 支持读取文件数据
    • 支持多机通信
    • 增强半诚实模型标准半诚实模型中实现了多方PSI(nPSI),安全性有保障
    • 核心算法可编程OPRF(Programmable Oblivious PRF),包含以下多种实现:
      • Table-based OPPRF
      • Polynomial-based OPPRF
      • BloomFilter-based OPPRF
    • 详细的文档和示例,帮助开发者更快的上手项目

    🛠️ 验证情况#

    • 机器配置: 1C 2G (Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz)
    • 数量:3台(3方)
    • 数据集大小:8条
    • 数据长度:128bit
    • 3方求交耗时:1.035 s

    📝 使用#

    依赖库#

    注:对于libOTe,它需要支持PCLMULAES-NISSE4.1的CPU。 可选:nasm 用于改进 SHA1 性能。

    1. 克隆代码#

    git clone https://github.com/JasonCeng/MultipartyPSI-Pro.git

    2. 安装依赖#

    代码已经在 Windows (Microsoft Visual Studio) 和 Linux 上进行了测试。安装所需的库:

    • windows:
    1. 打开 PowerShell
    2. cd ./thirdparty
    3. .\all_win.ps1 (该脚本适用于 Visual Studio 2015。对于其他版本,您应该修改 MSBuild 脚本中的几个地方。)
    • linux:
    1. cd ./thirdparty
    2. bash .\all_linux.get.

    注意:如果您遇到构建 boost、miracl 和 libOTe 的 all_win.ps1all_linux.get 的问题,请按照 libOTe 上的更多手动说明进行操作)

    3. 编译#

    • Windows:
    1. 按顺序构建 cryptoTools、libOTelibOPRF项目。
    2. bOPRFmain项目添加参数(例如:-u)
    3. 运行bOPRFmain
    • Linux:
    1. make (依赖: CMake, Make, g++)
    2. 单元测试: ./bin/frontend.exe -u

    4. 运行#

    输出包括online/offline/total平均运行时长。

    参数列表:#

    Copy
    -u 单元测试:computes PSI of 5 paries, 2 dishonestly colluding, each with set size 2^12 in semihonest setting -n 参与方数量 -p 参与方ID,ID最大的参与方为结果接收方 -m set size -t 恶意参与方数量(在不诚实模型设置中生效) -a 以增强半诚实模型模式运行。默认使用Table-based OPPRF算法。 0: Table-based; 1: POLY-seperated; 2-POLY-combined; 3-BloomFilter -r 当 r = 1 时使用优化的3方PSI算法 -f 输入数据的文本文件(绝对路径或相对路径均可以) -ip 其他参与方ip,且相对顺序需与-p的编号保持一致。比如-p 0所带的-ip的顺序需为<-p 1 ip>,<-p 2 ip>

    示例:#

    1. 单元测试
    Copy
    ./bin/frontend.exe -u
    2. nPSI

    在半诚实模型设置中,计算3方的PSI,其中包含2个不诚实方,数据存储在data.bin中。

    三台机器的ip分别是:192.168.1.10,192.168.1.11,192.168.1.12

    Copy
    # 机器1-192.168.1.10: ./bin/frontend.exe -n 3 -t 2 -m 12 -p 0 -f ./data.bin -ip 192.168.1.11,192.168.1.12 > log01.log # 机器2-192.168.1.11: ./bin/frontend.exe -n 3 -t 2 -m 12 -p 1 -f ./data.bin -ip 192.168.1.10,192.168.1.12 > log02.log # 机器3-192.168.1.12: ./bin/frontend.exe -n 3 -t 2 -m 12 -p 2 -f ./data.bin -ip 192.168.1.10,192.168.1.11 > log03.log

    注意:-ip后所带的ip为其他参与方ip,且相对顺序需与-p的编号保持一致。比如-p 0所带的-ip的顺序需为<-p 1 ip>,<-p 2 ip>

    5. 总结#

    Copy
    1. git clone https://github.com/JasonCeng/MultipartyPSI-Pro.git 2. cd thirdparty/ 3. bash all_linux.get 4. cd .. 5. cmake . 6. make -j 7. 在三台机器上执行: # 机器1: ./bin/frontend.exe -n 3 -t 2 -m 12 -p 0 -f ./data.bin -ip 192.168.1.11,192.168.1.12 > log01.log # 机器2: ./bin/frontend.exe -n 3 -t 2 -m 12 -p 1 -f ./data.bin -ip 192.168.1.10,192.168.1.12 > log02.log # 机器3: ./bin/frontend.exe -n 3 -t 2 -m 12 -p 2 -f ./data.bin -ip 192.168.1.10,192.168.1.11 > log03.log

    💡 后续工作#

    • 移除运行时非必要参数,如
    • 所有分支均支持-f
    • 所有分支均支持-ip

    📃 帮助#

    有关构建或运行该算法库的任何问题,请联系 JasonCeng by email: zengzhaochuangx@qq.com

    如果你觉得写得不错

    麻烦给个赞~

    关注我,带你了解区块链行业

    推荐阅读:

    1、《区块链是构建产业互联网的可信基础设施》

    2、《隐私计算布局思考》

    3、读书 |《数据资产论》:数据如何资产化?

    4、区块链产业发展五大趋势:数据安全、科技监管、自主可控、双碳战略、数字经济

    5、揭秘北京冬奥会开幕式“数字雪花”背后的区块链技术

    6、Web3对于我们普通人意味着什么?

    7、最近火爆的数字藏品究竟是什么?


    提前看到未来的人,
    和花一辈子都看不清的人,
    注定是截然不同的命运。

    点击下方卡片关注101链视界,和1000+读者**一起**

    洞察技术本质

    101链视界

    区块链、隐私计算与金融科技领域的专业知识分享者。

    29篇原创内容

    公众号

    ▲ 点击上方卡片关注101链视界,洞察技术本质

    技术交流 | 行业研报 | 前沿洞察 | 转载开白 | 加入社群

    请在公众号后台回复 合作

    欢迎把文章分享到朋友圈

    图片点击JasonCeng/MultipartyPSI-Pro直达Github****链接

  • 相关阅读:
    C# 参数名加冒号,可以打乱参数顺序
    npm 重要知识
    使用vue-sign插件
    C++代码示例:进制数简单生成工具
    Zookeeper、Nacos、Dubbo、Kafka之间的关系
    魔众文库系统 v5.3.0 小程序激励视频广告、下载收藏喜欢虚拟数量、用户注册站内信和欢迎邮件
    大模型系统和应用——神经网络基础
    Illustrator 2024 mac/win版:创新设计,一触即发
    数学基础之最大似然准则
    Machine learning week 7(Andrew Ng)
  • 原文地址:https://www.cnblogs.com/JasonCeng/p/15885775.html