• 基于散列和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完成了在加密状态下求取相交的用户集合的任务

     

    北邮硕士、二胎妈妈、初创公司合伙人,关注区块链、数字经济、网络安全等领域的研究
  • 相关阅读:
    如何判断单链表是否存在环
    语法面试等题目汇总
    数据分析师常见的10道面试题解答
    Python 的函数
    Python 的错误和异常处理
    Python 的条件语句和循环语句
    Python 的基本运算和内置函数
    Python 的数据表示
    Python 基础
    关于 Python
  • 原文地址:https://www.cnblogs.com/ccbupt/p/15117853.html
Copyright © 2020-2023  润新知