对于直接攻击有两种常用的应对方法:
1)访问控制
在访问控制的情况下只允许有权限的用户访问私密数据。在隐私保护问题上,细粒度访问控制(fine-grained access control)要比传统只在文件或表(或视图)层面上的访问控制要效果好。细粒度访问控制可以控制用户访问单独一行、一列或是一个单元(一行的一列)。例如,可以控制每个学生只能看到他/她自己的成绩,而看不到其他任何人的。一个职工只能看到他/她的个人工资而看不到其他人的。细粒度访问控制不仅在传统的数据库中已经实现,一些大数据系统(例如Accumulo)也具备该功能。
实现细粒度访问控制时并不考虑性能和易用性,因为细粒度访问控制需要记录大量的信息(谁有权限访问哪一行和哪一列),通常需要为大量用户设定不同权限。例如,以下SQL语句用来访问学生的成绩,X是输入的学生ID参数。
要使每个学生只能看到他/她自己的成绩,一种有效的改写方式是:(www.xing528.com)
这里,user.studentID就是执行该SQL语句的用户的学生ID。
2)数据加密
另一种保护隐私数据的方式就是将数据加密,这样,即使攻击者得到了数据也无法得到具体的数据值。对于那些重要的身份信息,例如社保号,加密技术很常用。
加密的挑战在于,当需要处理或分析数据时,需要对数据进行解密,这通常需要相当大的代价。和访问控制相似,对比较小的数据单元进行加密,例如一个单元或是一列可以降低解密的开销。另一种降低解密开销的技术叫做同态加密(homomorphic encryption),这项技术可以使一些计算直接在加密数据上完成,而不需要解密。例如,可以在加密数据上直接评估质量状况(例如比较两个数值是否相同只需要比较他们的加密值)。Paillier加密法[1]可以在不解密数据的情况下进行加和乘运算。完全同态加密[2]理论上对任何计算都有效,但实际应用中速度太慢。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。