大数据运维及安全信息安全

实现差分隐私技术的简单应用

2020-05-23  本文已影响0人  爱看时事的通信崔

大数据时代,数据发布是信息资源共享的最重要途径之一,然而如果考虑不到数据保护的话,就会导致隐私信息泄露问题,甚至造成严重后果。为有效应对隐私泄露问题,人们通常采用以下几种方式:一是通过失真等降低数据敏感性--数据脱敏;二是通过“去标识化”实现隐私保护--匿名化;三是通过加噪声来抵抗差分攻击--差分隐私。

这其中,数据脱敏简单地删除敏感字段,其使用性差,而且仍然存在隐私泄露隐患。匿名化技术不断被发现存在漏洞和缺陷,其不可靠性比较差。差分隐私技术对比前两者,具有严格的数学模型,安全性级别可量化可证明,是当前最热门的隐私保护技术之一。

对于差分隐私技术,我们不需要掌握它复杂的数学原理,只需要清楚差分隐私技术比较可靠,学会如何应用即可。

下面我们通过一段Python代码来演示。
假设公司提供的人事资料供大家查询,资料中包括姓名和薪水信息,其中姓名是公开的,而薪水是需要隐私保护的。

数据见下表:

姓名 薪水
王二 5000
张三 6000
李四 7000

Python代码的具体实现如下:

import numpy as np # 导入numpy库

def get_noisy_digit(value, epsilon): 
# 符合普拉斯分布的噪声
# 数学公式无需完全理解
    u = np.random.random() - 0.5
    noisy_digit = 0.0 - value/epsilon*np.sign(u)*np.log(1.0-2*np.abs(u))
    return np.rint(noisy_digit)

if __name__ == '__main__':
    company_salary = {'王二':5000,'张三':6000,'李四':7000} # 真实的人力资源数据
    noisy_salary = company_salary.copy() # 新建的人力资源数据
    value = 3000 # 薪水最大差距3000
    epsilon = 4 # 隐私保护预算,值越小泄露风越小,噪声越大
    for i in pseudo_val: 
        noisy_salary[i] = (noisy_salary[i] + get_noisy_digit(value, epsilon)) # 逐个加噪声

    print('真实的数据如下:{}'.format(company_salary))
    print('差分隐私后的数据如下:{}'.format(noisy_salary))

运行代码后,得到结果如下:

真实的数据如下:{'王二': 5000, '张三': 6000, '李四': 7000}
差分隐私后的数据如下:{'王二': 6052.0, '张三': 6306.0, '李四': 7188.0}

可以看到,薪水数据经过差分隐私技术处理,发生了明显变化,从而有效的保护了薪水隐私。

上一篇下一篇

猜你喜欢

热点阅读