基於散列和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完成了在加密狀態下求取相交的用戶集合的任務

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM