基于散列和RSA的纵向联邦学习样本对齐实现方案

      在纵向联邦学习联合建模过程中,两家公司用户群体不可能完全重叠,第一步需要找到相同的用户ID集合。在不泄露数据前提下,找到双方公共ID集合的技术称为私有集交集(Private Set Intersection, PSI)。下面介绍一下基于散列和RSA算法的实现方案。

假设:

公司A的集合是UA={u1,u2,u3,u4}

公司B的集合是UB={u1,u2,u3,u5}

步骤1:公司B通过RSA算法生成公钥对(n,e)和私钥对(n,d),其中公钥对(n,e)发送给公司A。

 

步骤2:公司A针对其本地的用户集合UA中的每个元素ui,生成一个对应的随机数ri。这时,通过公钥对 对随机数ri进行加密得到rie%n,将ui代入散列函数H中得到H(ui)。将两者相乘,得到

H(ui)。将两者相乘,得到

(YAi=((ri)e%n).(H(ui))%n    ,其中ui、ri与(YAi三者之间是一一对应的。

将YA发送给公司B,同时公司A中保存YA与uA值的一一对应关系映射表。

 

步骤3:公司B 利用私钥对(n,d),对YA进行解密,记为ZA,得到

(ZAi=((YAi)d%n=((ri)e%n)d.(H(ui))d%n  =ri.(H(ui))d%n,

 可见YA的元素与ZA的元素是一一对应的。同时公司B利用散列函数H作用与本地的用户集合uB中的每一个元素得到H(uB),在利用私钥(n,d)对H(uB)加密,重新输入散列函数H中,得到ZB:

(ZBi=H((H(ui))d%n),注意到uB的元素与ZB的元素是一一对应的关系,记为映射(uB->ZA),将ZA,ZB和映射一起发送给公司A。

 

步骤4,公司A首先将映射表(YA->UA)与映射表(YA->ZA)进行连接运算,得到新的映射表(ZA- >UA)。同时,(ZAi除以随机数ri,并代入散列函数H 中,得到

(DAi  =H((H(ui))d)

注意到ZA的元素与DA的元素是一一对应的关系,记为映射(ZA->DA),将(ZA->DA)与映射表进行连接运算得到新的映射表(DA->uA)。

 

步骤5,将DA与ZB执行相交运算,得到加密和散列组合状态下的ID交易,记为I:

集合I中的元素是映射表(DA-》uA)中的key值,因此我们利用该映射表找出对应的明文集合,这样公司A就得到了交集的结果。但我们不能直接发送明文结果给公司B,而是将集合I发送给公司B,由公司B利用自身的映射表单单独求取明文结果。

 

步骤6:同理,集合I中的元素同样是公司B本地映射表(DB-》UB)的Key值,利用该映射表,同样能够查出I对应的明文状态下的交集,致辞公司A和公司B完成了在加密状态下求取相交的用户集合的任务

 

 

posted on 2021-08-09 11:27  ccbupt  阅读(843)  评论(0编辑  收藏  举报

导航