多方计算时,每次结果竟然都存在着巨大隐患,此文告诉你可以这样解决!
多次计算时的防泄露难题
联邦多方计算场景,一方对于另一方的运行中数据是无法感知的, 通过MPC算法或者TEE安全硬件, 可以保证数据计算过程中的安全性。
但是当计算完成后,得到的结果中却包含了潜在的安全风险。
假设某机构希望从政务数据库中,获取某省市所有市民的税收总和,进行各省市的实力分析和统计。这类计算请求正常来说是合理的,因为做过聚合之后, 各市民的实际税收金额就被合并掩盖了。
select sum(xxx) from ...
但是当执行第二次统计作业时, 如果机构将交集中的某个人员进行剔除后, 发现税收的总和下降了x元,那么即可马上推断出该人员的税收, 而这个过程对于计算方、数据提供方是无法很好感知的。
华为差分隐私解决方案
针对这种问题, 华为云tics服务联合德国慕尼黑可信技术实验室, 推出了基于多方sql作业的差分隐私算法应用, 对于大规模的聚合类计算,可以实现对内部个体的数据保护。
以下是官方在产品文档里已公布的差分隐私算法应用方式:
- TICS数据联盟管理者在联盟管理中,选择打开“结果差分隐私”。
- 联盟中的数据提供方进行数据集发布时,将敏感数值数据勾选为“敏感”的字段分类, 并进行发布。
以下是TICS产品文档中对字段分类的解释
- 唯一标识:指用于标识某个事物实体身份的字段。例如身份证、工号、公司代码等。勾选后,会通过一定的语法限制和运行期校验,保护数据集内的id总集,确保无法被恶意逆推。
- 敏感:指会参与统计、计算的敏感数据。例如薪水、纳税、用电量。勾选后,其他参与方只能使用敏感进行不可逆推的四则运算、聚合计算(sum/avg)、条件过滤(where)。TICS会保护唯一标识和敏感数据不被成对地明文泄露,同时会对敏感数据的求和计算添加差分噪声,以保护敏感数据不被泄露。
- 非敏感:指不参与数值分析,也和唯一身份无关的数据。例如等级、公司类型。
- 发起方执行聚合类型的作业。
以统计各行业税收总和为例,sql可以如下
Select
industry,
sum(tax_bal),
sum(electric_bal)
from
数据提供方.tax a join
作业发起方.power_data b
on a.id = b.id
group by
industry
经过规则校验和审批后, 作业发起方通过平台安全计算,得到了如下的结果:
接着作业发起方再执行一个sql,这个sql中过滤掉了某个id,试图用差值去计算这个个体的税收值。
Select
industry,
sum(tax_bal),
sum(electric_bal)
from
数据提供方.tax a join
作业发起方.power_data b
on a.id = b.id
where a.id <> '123400558'
group by
industry
123400558这个id对应个体属于互联网,实际税收值为274
那让我们看一下发起方第二次执行该作业时,会得到什么结果
66539.583321490225131 - 66078.857559963717677 = -461
可以看到并不会像使用者预期的那样得到实际的274差值,而是一个负数,总聚合结果有误差,但在可以接受的范围内。
从上面可以看到,tics成功通过差分隐私算法,保护了大数量统计情况下的个体数据安全。
华为可信智能计算服务 TICS 官网链接:
https://www.huaweicloud.com/product/tics.html
欢迎参与最新版的体验。
tics服务交流社区:
- 点赞
- 收藏
- 关注作者
评论(0)