查看原文
其他

基于FATE实现的可验证秘密共享算法

樊昕晔、李钰 FATE开源社区
2024-08-26


FATE(Federated AI Technology Enabler)开源社区是全球首个隐私计算、联邦学习开源社区,拥有全球首个工业级安全联邦学习框架。同时FATE开源社区以“开源开放,共力创新”为愿景,汇聚更多开发者、行业专家、创新力量,共同推动联邦学习技术发展及应用实践。基于此,目前社区向广大行业从业者征稿,希望给行业从业者打造一个技术交流的平台,欢迎大家踊跃投稿~

本期很荣幸为大家带来一篇光大科技的精彩投稿。光大科技基于丰富的联邦学习技术实践经验,分享了一种基于FATE的可验证秘密共享算法及工程实现。

文章由光大科技大数据研究团队工程师樊昕晔和李钰合力撰写,两位作者现致力于联邦学习、机器学习等相关领域的研究,感谢两位。以下是文章详细内容~


一、背景

对于跨机构数据统计问题,在传统的方案中,通常会建立一个大型的数据中心。各企业将数据上传至数据中心,最终由数据中心对汇总后的数据进行统计。但是随着社会对数据隐私问题的重视程度逐渐提升,同时由于金融行业的特殊性,各级立法和监管机构出台多项法律法规和监管规定,加强对个人金融数据隐私的保护力度,传统的跨机构统计方法已无法满足对个人金融数据隐私保护的监管要求。如何保证数据传输的安全性和可靠性、如何管理和审计涉及多方交互的数据,并在合法合规的前提下实现跨机构数据统计,成为重要的技术难题。

在光大科技的联邦学习技术实践过程中,针对跨机构数据统计这一场景,基于首个工业级联邦学习开源框架FATE,实现了可验证秘密共享(Verifiable Secret Sharing)的安全多方隐私求和方案,能够在数据不出本地的情况下,对多个机构的数据求和。

二、算法原理

可验证秘密共享利用了拉格朗日插值定理,  是一个n-1次多项式,  是  上的一个点,当得到  上不少于n个点时,可以还原出唯一的  。在实践过程中,以三个机构间利用可验证秘密共享对同一个ID进行资产值求和为例,在三个机构中想得到资产和的一方为Guest方,其余提供ID在本机构内资产值的为Host方。基本原理如图所示。

首先,Guest方生成一个大素数P及其生成元g,(P和g之间满足如下关系:  在  的取值恰好为  ),广播P和g用于数据验证。三方中每一方根据参与方个数n生成一个n-1次多项式(例子中n=3,生成二次多项式)。其中,  是同一个ID在各方的秘密值,

 则是随机数。


其次,各方均计算子秘密


  

       

       


再次,每个参与方将第j(这里的j代表其中一个参与方)个子秘密和该子秘密对应的一组校验值分享给第j个参与方,分享的分片形式为  ,校验值形式以Guest生成为例应为 

Host以此类推,根据多项式系数和j计算出每个子秘密对应的校验值。


参与方j利用生成元g对收到的子秘密进行验证(在正常情况下,以guest方生成为例,其它接收方可以验证 

成立,满足加法同态),在验证通过后对收到的所有子秘密求和。例如,第1个参与方收到各方在  上的子秘密  ,将子秘密求和得到    ,然后将其发送给Guest方。每个参与方只能得到其他参与方的一个子秘密 ,无法还原出其他方的真实数据。


最后,Guest方汇总所有子秘密之和,得到

   

在  的值。利用拉格朗日插值定理就可以还原出唯一的  ,其中参数  就是想要得到的同一个ID在三个机构的资产和,并且Guest方仅得到了  上的n个点,而没有得到足够的任意其他参与方生成的多项式上的点,因此无法还原出其他参与方的多项式,进而保证了Guest方无法得知其他参与方确切的秘密值,这就意味着在没有暴露任意机构秘密值的前提下,通过联邦统计的模式得到了正确的统计结果,满足了隐私求和的需要。

三、开源实现

在FATE开源框架上具体的实现流程如图所示,分为初始化、秘密分发、秘密求和、秘密恢复四个阶段。Guest方作为发起方,不仅承担普通参与方的职责,还负责执行初始化和秘密恢复两个阶段的任务。


四、应用实战


1 任务描述

使用FATE自带测试数据breast_homo_test.csv,并将这份数据用于三方,统计三方交集的x0,x1,x2各特征的求和结果。

2 测试过程


2.1配置数据上传文件upload_conf.json

2.2执行python /data/projects/fate/python/fate_flow/fate_flow_client.py -f upload -c upload_conf.json

2.3配置联邦模块的流程文件test_feldman_verifiable_sum_dsl.json与参数文件test_feldman_verifiable_sum_conf.json

为了演示方便,参数配置中用了两个节点模拟了三方的安全求和,这里面9999节点既充当了Guest又充当了Host节点,样例中的求和的字段设置的是前三个特征字段,精度配置为6位。DSL配置中的FeldmanVerifiableSum算法就是集成的VSS算法组件。

2.4执行python /data/projects/fate/python/fate_flow/fate_flow_client.py -f submit_job -d test_feldman_verifiable_sum_dsl.json -c test_feldman_verifiable_sum_conf.json


3 输出结果


在Guest的FATE-Board查看输出结果。

从Guest的结果可以看到相同ID记录的x0、x1、x2三个字段在三个节点分别进行了求和。


4 结果验证


随机选用两个特征x0,x1进行结果验证,验证情况见下表,对于三个参与方的交集ID,分别使用“可验证秘密共享算法”和“直接加和法”计算特征的三方之和。这里随机展示出10个交集ID,可以看到可验证秘密共享结果(VSS Result)与真实结果(Ground Truth)保持完全一致,证明算法准确无误。



五、性能测试

以四个参与方的测试数据为例,共同ID数据条数依次为20万、40万、60万、80万和100万条的情况下,任务耗时和数据量的关系如表所示。总耗时与通信耗时分别与数据量具有近似的线性相关关系,扩展性良好。

数据量

(万条)

总耗时

(秒)

通信耗时

(秒)

正确率

20

233

178

100%

40

408

294

100%

60

605

446

100%

80

806

608

100%

100

1106

746

100%

表1  数据量与任务耗时的关系


进一步测试,限制数据量为20万条,在参与方数量依次为2、3、4个的情况下,任务耗时如表所示。在此场景中,传输数据总量随参与方数量增加而增加,因此,总耗时与通信耗时均表现为与参与方数量具有近似的线性相关关系,扩展性良好。


从这两个例子的表现数据可知,利用基于可验证秘密共享的安全多方隐私求和方案可以准确计算求和结果,并且总耗时与数据传输量之间具有近似的线性相关关系。


参与方数量

(个)

总耗时

(秒)

通信耗时

(秒)

正确率

2

107

56

100%

3

164

106

100%

4

233

178

100%

表2  参与方数量与任务耗时关系


以上算法的具体应用场景已经收录到《联邦学习原理与应用》专著中,该书是光大科技对近年来在数据赋能探索工作的一个总结,既是关于联邦学习技术和上手实践方法的介绍,又有关于联邦学习在业界,特别是金融科技行业的应用实践。全书循序渐进,由浅入深,涵盖了联邦学习相关的背景历程、算法模型、平台框架、应用实战等丰富内容,还针对联邦学习与数据要素流通、自然语言处理等新兴领域的结合,提出了有益的思考与展望。同时,该书繁体中文版已经同步在台湾出版。


《联邦学习原理与应用》

对联邦学习和FATE开源项目感兴趣的读者可以深入阅读该书籍,相信大家在阅读中能充分领略到联邦学习的原理之美和应用之巧。

购书链接


END

1.精华合集 | 联邦学习 FATE 从入门到精通(建议收藏!!!)

2.资料合集 | 隐私计算行业规范、白皮书、研究报告等资料汇总(建议收藏!!)

扫码关注FATE开源社区


点击 阅读原文 查看购书链接,欢迎点赞分享~

继续滑动看下一个
FATE开源社区
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存