最近 联邦学习 概念很是火热,同态加密
、不经意传输
、秘密共享
这些名词也常有耳闻,大多数相关的文章都写得很专业,专业到把我们这些刚想入门的新手直接就给拒之门外了。
今天尝试通过一个小故事来简单理解 基于秘密共享的多方安全计算,关于这个名词的定义我就不用专业词汇赘述了,直接看故事。
- 我、小王、小张是同一家公司的员工
- 我们各自不知道对方的工资
- 我们都不想让其他人知道自己的真实薪资
- 但我们特别想知道我们间的平均工资,来决定自己是否应该申请涨薪
今天的主角 秘密共享
就是来解决这个问题的,大家可以在保证自己薪资不泄露的前提下求得平均工资。咋一听这简直天方夜谭,逗我呢,那咋算嘛?
其实通过一些简单的数学知识就能做到了,接下来大家就跟着我的方法来试着算一下,假设大家工资是:
- 我 5000
- 小王 4000
- 小张 9000
第一步,我们三人分别将自己的薪资拆成任意三个数相加的和,如:
- 我 5000 = 1000 + 1000 + 3000
- 小王 4000 = 2000 + 1000 + 1000
- 小张 9000 = 4000 + 3000 + 2000
现在每个人手上都有了 3 个数字,选其中 2 个数字分别告诉其他俩人,留下 1 个数字只有自己知道。
如下图所示,经过这样的 “秘密” 交换,每个人手上拥有了 3 个新的数字,其中一个是之前自己留下的,另外两个分别来自其他俩人。大家都将自己的信息以特定的方式共享了出来,并且因为大家都保留了 1 个只有自己知道的数字,所以这种共享是安全的,不会泄露自己的真实薪资的。
接下来,如果要求 3 个人的工资总和,只需要每个人将手上新的 3 个数相加之和(图中黄圈)公布给大家即可,再次加总就能得到 18000 的总数,除以 3 就是平均工资 6000。
原来我每天辛辛苦苦工作,拿到的钱还不及平均数!知道真相后的我第二天就向老板提出了加薪申请。
当然,实际工程中的算法并不会这么简单,这个示例只是帮助正要入门的新手理解一些基本的理念,数据科学并没有想象中那么可怕~