本模块提供了一些PSI(Private Set Intersection)的方法。
RSA Intersection此模式实现了基于RSA求交的算法。在FATE,eggroll 和 federation API 之上构建安全、分布式和并行的基础设施。
本求交模块试图解决隐私保护样本ID匹配问题。此模块帮助两方或多方查找共有样本ID,而不会泄漏非重叠ID。该过程如下图所示。
在图中,甲方有用户id u1、u2、u3、u4,而乙方有用户id u1、u2、u3、u5。求交后,甲、乙双方都学习各自的公共样本ID,即u1、u2、u3,而甲、乙双方都无法解密对方的非重叠样本ID。传输处理的id向另一方,如(Y-A)和(Z-B),不会显示原始id。由于乙方的隐私密钥,处理过的(Z-B)是安全的。每个(Y-A)都包含不同的随机值,这些随机值绑定到(X-A)中的每个值,并且也是安全的。
FATE 1.6版中引入了split_calculation选项以提高效率。与上述流程不同,split_calculation流程首先将经过哈希处理的ID拆分为偶数组和奇数组;然后,每个组以host或guest作为加入角色运行RSA求交过程。 注意:host总是知道它们与guest的公共偶数ID,因为它们负责查找公共偶数ID。
使用RSA求交,参与者可以安全高效地获取其交集样本ID。
RAW Intersection此模式实现简单的求交方法,其中一个参与者将其所有ID发送给另一个参与者,而另一个参与者则查找其公共ID,最后将把交集ID发送给发送者。
DH Intersection此模式使用Pohlig–Hellman交换密码实现基于对称加密的安全求交。DH求交也用于安全信息检索(SIR)模块。
Intersection With Cache求交可在线/离线阶段进行,RSA和DH求交都支持缓存。
Multi-Host IntersectionRSA, RAW, and DH 求交支持多host方案。这意味着guest可以同时与多个host执行求交,并获取所有参与者的公共ID。
上图演示了一个guest与两个host求交的过程;同样的过程也适用于两个以上host的情况。首先,guest将与每个host执行求交,并获得各自的重叠ID。然后,guest将从所有交集结果中找到公共ID。guest可选择向每个host发送公共ID。
Match ID(Repeated ID) intersection从1.7版开始,推荐为上传的数据分配随机sid,然后求交模块自动检查并处理实例ID的数据。
请注意,在1.7版中不推荐使用原始重复ID进程(如repeated_id_process)的参数。
RSA、RAW和DH求交方法支持:- 多主机PSI任务。
- 使用ID扩展自动匹配ID求交(当数据包含实例ID时)。
- 可配置的散列方法,包括sha256、md5和sm3;RSA intersection的哈希运算符可以单独配置。
- 预处理步骤,用于预筛选host数据以获得更快的PSI
RAW和DH求交方法支持:
- 带缓存的PSI
RAW求交支持以下额外功能:
- base64编码可用于所有哈希方法。
RSA求交用于交集基数估计。
隐私求交配置使用指南-
RAW Intersection:
- dsl: test_intersect_job_dsl.json
- runtime_config : test_intersect_job_raw_conf.json
-
RAW Intersection with SM3 Hashing:
- dsl: test_intersect_job_dsl.json
- runtime_config : test_intersect_job_raw_sm3_conf.json
-
RSA Intersection:
- dsl: test_intersect_job_dsl.json
- runtime_config : test_intersect_job_rsa_conf.json
-
RSA Intersection with Random Base Fraction set to 0.5:
- dsl: test_intersect_job_dsl.json
- runtime_config : test_intersect_job_rsa_fraction_conf.json
-
RSA Intersection with Calculation Split:
- dsl: test_intersect_job_dsl.json
- runtime_config : test_intersect_job_rsa_split_conf.json
-
RSA Multi-hosts Intersection:
- dsl: test_intersect_job_dsl.json
- runtime_config : test_intersect_job_rsa_multi_host_conf.json
此dsl是guest与两个host进行RSA求交的示例。它可以使用两个以上的host。
-
RAW Multi-hosts Intersection:
- dsl: test_intersect_job_dsl.json
- runtime_config : test_intersect_job_raw_multi_host_conf.json
此dsl是guest与两个host进行RAW求交的示例。它可以使用两个以上的host。
-
DH Intersection:
- dsl: test_intersect_job_dsl.json
- runtime_config : test_intersect_job_dh_conf.json
-
DH Multi-host Intersection:
- dsl: test_intersect_job_dsl.json
- runtime_config : test_intersect_job_dh_multi_conf.json
-
RSA Intersection with Cache:
- dsl: test_intersect_job_cache_dsl.json
- runtime_config : test_intersect_job_rsa_cache_conf.json
-
DH Intersection with Cache:
- dsl: test_intersect_job_cache_dsl.json
- runtime_config : test_intersect_job_dh_cache_conf.json
-
RSA Intersection with Cache Loader:
- dsl: test_intersect_job_cache_loader_dsl.json
- runtime_config : test_intersect_job_rsa_cache_loader_conf.json
-
Intersect Cardinality:
- dsl: test_intersect_job_dsl.json
- runtime_config: "test_intersect_job_cardinality_conf.json
用户可以使用以下命令来运行任务:
flow job submit -c ${runtime_config} -d ${dsl}
注意:因为运行配置中的only_output_key参数,隐私求交输出仅包含求交ID。