阈值PSI代码
阈值PSI
若交集数量超过某个给定阈值时,允许分布式的各个参与方在自己集合中找到交集,且除了交集外,得不到其他额外信息。
实现论文: Multi-Party Threshold Private Set Intersection with Sublinear Communication
源码地址:https://github.com/ontanj/tpsi
其中
用到的加密算法:
接口:
(1)AHE_Cryptosystem
和FHE_Cryptosystem
实现同态运算
type AHE_Cryptosystem interface {
// 密文+密文
Add(Ciphertext, Ciphertext) (sum Ciphertext, err error)
// 密文^{明文}
Scale(cipher Ciphertext, factor *big.Int) (product Ciphertext, err error)
// 加密
Encrypt(*big.Int) (Ciphertext, error)
// 聚合明文
CombinePartials([]Partial_decryption) (*big.Int, error)
// 计算加密矩阵
EvaluationSpace() gm.Space
// 明文空间大小
N() *big.Int
}
type FHE_Cryptosystem interface {
AHE_Cryptosystem
// 密文*密文
Multiply(Ciphertext, Ciphertext) (Ciphertext, error)
}
(2)AHE_setting
和FHE_setting
包含参与方数量、阈值大小和通信方式
type AHE_setting interface {
// 阈值
Threshold() int
// 参与方
Parties() int
// AHE
AHE_cryptosystem() AHE_Cryptosystem
// central方发布消息给其他方
Distribute(interface{})
// 其他方给central方传递消息
Send(interface{})
// central方给指定方发送消息
SendTo(int, interface{})
// central方等待来其他方的消息,并将其(按顺序)分组
ReceiveAll() []interface{}
// 接手central方的消息
Receive() interface{}
// 判断是否为central方
IsCentral() bool
}
type FHE_setting interface {
AHE_setting
// FHE
FHE_cryptosystem() FHE_Cryptosystem
}
本实验是在一台机器上模拟多方通信,通过goroutine
实现。
goroutine:在go语言中,每一个并发的执行单元叫做goroutine,如果一个程序中包含多个goroutine,对两个函数的调用则可能发生在同一时刻。
运行:
go run main/main.go diff dj 7 main/elements
其中FTPSI-diff
使用的是TAHE,阈值为7。
功能:
(1)TPSIdiffWorker
,在交集测试下求交集和差集
(2)TPSIintWorker
:在差集测试下求交集和差集
测试:
P1:0,3,6,9,13,16
P2:0,3,6,9,14,17
P3:0,3,6,9,14,15
P4:0,3,6,9,12,17
P5:0,3,6,9,13,15
T=7
//交集大时用TFHE求
go run main/main.go int bfv 7 main/elements
//差集小时用TAHE求
go run main/main.go diff dj 7 main/elements
//差集小时用TFHE求
go run main/main.go diff bfv 7 main/elements
s/秒 | int | diff |
---|---|---|
TFHE | 515.532007 | 2391.952714 |
TAHE | / | 26.436323 |
总结:
用FHE实现,效率是显而易见的!
作者:Hang Shao
出处:https://www.cnblogs.com/pam-sh/p/16479540.html
版权:本作品采用「知识共享」许可协议进行许可。
声明:欢迎交流! 原文链接 ,如有问题,可邮件(mir_soh@163.com)咨询.
分类:
网络安全 / 隐私计算
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!