最近领导安排研究下大数据的安全,计算机安全是个系统工程,分很多层面:
1)硬件安全
2)应用软件安全
3)操作系统安全
4)数据库系统安全
5)网络安全技术
涉及到具体的技术又有
1)密码技术
2)计算机病毒&防范
3)防火墙技术
4)黑客的攻击和防范
等等。
大数据技术除了传统的系统级别,软件级别的安全外,我觉得要重点关注数据的安全和隐私。
数据安全有一个很有意思的加密方法,这种方法叫同态同态加密。
同态加密是指2009年,IBM公司的克雷格·金特里(Craig Gentry)发表了一篇文章,公布了一项关于密码学的全新发现:一项真正的突破。他发现,对加密的数据进行处理得到一个输出,将这一输出进行解密,其结果与用同一方法处理未加密的原始数据得到的输出结果是一样的。这听起来就像是不知道问题也能给出问题的答案一样。
记加密操作为 E,明文为 m,加密得 e,即 e = E(m),m = E'(e)。已知针对明文有操作 f,针对 E 可构造 F,使得 F(e) = E(f(m)),这样 E 就是一个针对 f 的同态加密算法。
假设 f 是个很复杂的操作,有了同态加密,我们就可以把加密得到的 e 交给第三方,第三方进行操作 F,我们拿回 F(e) 后,一解密,就得到了 f(m)。第三方替我们干了活,对 m 却仍一无所知,——多么融洽的关系啊。
找到这样的 E 并不容易,单纯从数学角度看,E(x) = x,就是同态的,但是可惜没有加密效果,说了等于白说。RSA 算法对于乘法操作是同态的,对应的操作 F 也是乘法,对别的比如加法就无法构造出对应的 F;而 Paillier 算法则是对加法同态的。如果一种加密算法,对于乘法和加法都能找到对应的操作,就称其为全同态加密算法。目前还没有真正可用的全同态加密算法,虽然 Craig Gentry 已经前进了一大步。
考虑一个匿名投票系统,投票方、计票方、宣布方三权分立,采用公钥加密,只有宣布方拥有私钥。投票方将加密的票送到计票方,计票方利用同态特性进行操作 F,得到汇总的结果,宣布方拿到该结果后解密之,即得总票数。宣布方不知道单独每张票的情况,从而实现了匿名;计票方解不出票面信息,于是可以防止计票方从中作梗。选择对加法同态的加密算法:投谁的票给谁记“1”,不投计“0”;也可选择对乘法同态的算法:投谁的票给谁记“N”,不投计“1”。大致原理如上所述,实现起来还有其它一些难点:1. 赞成/反对票加密出来的结果应该多种多样,以防计票方胡乱推测;2. 能在不解密的情况下对票的有效性进行校验,不能允许一个人一下子投 10000 票。
全同态加密的意义对于允许任意复杂的 f,都能构造出相应的 F。这样,就能得到一些匪夷所思的应用:我能解决你的问题,即使我并不知道你的问题。
当前同态加密最主要的问题是不太成熟,效率损失太大(损失10倍以上),未来成熟的话,应用前景很大。