前言

当前,全球数据量呈现爆炸式增长,国家与政府通过数据分析实现服务质量提升和辅助决策决议,企业通过数据收集实现新业务开拓,基于数据价值挖掘的应用案例层出不穷,我们已经进入数据即黄金的时代。

然而,为了保护数据不被滥用和保障数据拥有者权益,《中华人民共和国网络安全法》、欧盟《通用数据保护条例》(GDPR)和《中华人民共和国密码法》等法制法规相继公布与实施,核心数据需加密存储已经成为基本的要求约束,保护核心数据不被窃取、在数据加密前提下挖掘数据价值和实现全密文计算,已经成为必然的发展趋势。然而,全密文计算不可能一蹴而成,还有很长的路要走。

密文计算是指在密文形式数据上的任意计算,全密文计算则特指数据产生、存储、共享、流转和使用的全过程都处于密文形式下的密文计算。计算又是一个宽泛的概念,可以是数据查询和统计分析,也可以是数学计算和科学计算,还可以是机器学习和价值挖掘。

01 先谈谈密文查询

密文查询是一种基本的全密文计算形态,是在加密的数据上执行大小比较、模糊查询、关键词匹配等计算的过程,解决的是数据加密后的可用性问题。众所周知,无论是采用对称密码还是非对称密码,数据加密都会破坏明文数据的操作特性。比如说,数值85356565加密后可能变成“U2Fs…8B3kI=”,很明显,密文难以执行数值的大小比较、求和平均等操作了。

相等查询是数据直接加密后能支持的基本查询。如果相同的明文被加密成相同的密文,也就是确定性加密,相等查询、连接查询和分组查询等数据库查询操作仍然可以支持。然而,确定性加密很容易遭受频率攻击,比如年龄数据,通过统计相同年龄的密文出现的次数,结合能掌握的年龄分布的信息,就可以完成特定密文的破解。

因此,确定性加密是密码应用的安全基线,而随机化加密成为全密文计算时代的首要选择。但是,随机化加密将导致基本的相等查询也变得困难,各类高效的密文查询策略仍然需要进一步的研究。

范围查询,用于查询属性取值在规定范围之内的元组,比如查询年龄在20到30之间的所有人员信息。密文上的范围查询可以采用保留顺序加密,它能产生具有与明文一样顺序的密文。当然,直接泄露明文顺序的加密自然不是很安全的加密手段,目前也遭受了很多统计攻击和推理攻击。顺序揭示加密一定程度上减少了泄露,使得密文执行比较操作后才会泄露对应明文的顺序,但在安全级别较高的场景里仍然无法直接应用。

关键词检索是最常用的查询操作,比如,从数据库里查询姓“刘”的老师、打开Windows操作系统查找一个忘记存到哪里的文件、进入邮件系统查询前几日收到的一封邮件等等。可搜索加密基于检索密文文件是否包含某关键词的问题而提出,具有广泛的应用前景。

值得强调的是,可搜索加密还可以支持密文的相等查询、模糊查询和范围查询等,举例而言,范围查询可以转化为范围内的多个关键词的查询。因此,可搜索加密已经成为密文查询当前的研究热点。

02 再谈谈密文计算

在数据即黄金的时代,从数据里挖掘价值实现价值共享,是时代和科技发展赋予的新使命。然而,价值共享是以不侵犯数据隐私的数据分析为前提的,而计算是数据分析的主要手段。

2.1 同态加密

在密文上实现任意的计算是同态加密的初衷和目标。同态加密的概念在20世纪70年代就被提出,但是直到2009年,第一个真正的全同态加密体制才由Gentry设计出来。全同态加密是指可以对密文进行任意类型计算和任意多次计算。一般而言,由于任意计算均可通过加法和乘法构造,若加密算法同时满足加法同态性和乘法同态性,则可称其满足全同态性。目前,HElib、SEAL等开源库已经可以支持全同态加密,用户可以基于这些库构建自己的密码应用。

全同态加密是达到全密文计算的理想技术手段,然而它还不能被广泛应用,制约其应用的最大问题就是它的实用性。明文上的运算之所以还能在密文上执行,一种简单做法就是扩充密文域,通过在更大空间里的数据计算来达到计算和安全的双重目的。甚至,密文上每做一次运算都会扩充一次密文,使得密文长度不断变大。这种密文扩充带来的存储和计算开销,对于任意次数的计算而言是无法接纳的。

如果支持对密文进行部分形式的计算,例如仅支持加法、仅支持乘法或支持有限次加法和乘法,则称其为半同态加密。半同态加密主要包括乘法同态加密RSA算法和ElGamal算法、加法同态加密Paillier算法等。目前,它们在数据库加密系统中求和平均为主要计算的统计查询、安全聚合的联邦机器学习等应用场景中都有了广泛应用。

2.2 安全多方计算

安全多方计算是实现全密文计算的另外一种主流技术,解决了互不信任的参与方之间联合计算的问题。在数据即黄金的时代,数据只有流动起来才能发挥其真正的价值,然而,数据流动共享和协同分析首先需要解决信任问题。

举个例子,服务者在得到消费者的数据后才能提升服务质量,而消费者却不希望公开他们的私密数据,或者不相信服务者不会滥用他们的数据。这个问题是同态加密无法解决的问题,因为同态加密关注相同密钥产生的密文上的任意计算,扩展到多方需要解决密钥共享问题,现实里很难实现。

安全多方计算是姚期智院士为解决互不信任的参与方在保护隐私且没有可信第三方的前提下协同计算问题而提出的理论框架,它确保参与方可以获知约定的协同计算结果,但无法获取或推算出数据的原始内容,有助于打破目前这种“数据孤岛”和互不信任的困境。

安全多方计算的研究工作面临通信量和计算性能的瓶颈。基于混淆电路的两方安全多方计算由一方将要计算的函数表示成算术电路或者布尔电路,另一方对电路逐层进行计算,直到运算完毕。整个过程基于茫然传输等技术实现电路相关的密钥或者算子的茫然化和保密化。

它的缺点很明显,一是电路不易扩展到多方,二是需要交换大量信息,比如每个电路的一次性密钥等,通信量大。基于秘密分享的多方安全计算协议加法计算效率高,已经在联邦机器学习等场景里应用,但是存在乘法效率低的明显缺点。秘密分享是将秘密分割存储的密码技术,为了提升乘法性能,需要在预处理阶段将信息分割生成关联随机数组,但每个关联随机数组只能用一次,带来极大通信开销和预处理的计算开销。

2.3 实用密文计算

很多应用不需要通用的密文计算方案,而是需要满足应用需求的特定密文计算。举例来说,游戏设备厂商希望精准的投放广告,考虑到腾讯有用户玩游戏的记录、京东有用户买游戏设备的记录,厂商希望把广告投放给既玩某一款游戏、又买某一款设备的用户,这样广告的转化率才更高,广告主才愿意花更多的钱。这实际就要求腾讯和京东将同时满足条件的用户选出来,是两个用户集合进行交集计算的问题。

在未来一段时间里,面向应用的密文计算会很流行。因为一方数据在特定维度下可以抽象为一个数据集合,密文集合运算作为特定的安全多方计算问题,包括并集、交集、基数大小、交集的势等,在很多领域得到了越来越多的应用。比如说,社交网络两个用户的共同好友,是一个集合求交的问题;保密投票中计算多少人投了某个特定人选,是一个交集求势的问题;多家不同银行联合计算储户的数量,是一个基数大小计算的问题。

联邦机器学习是一个机器学习框架,能有效帮助多个机构在满足用户隐私保护、数据安全和政府法规的要求下,进行数据使用和机器学习建模。

它通常会用到两类技术:第一,使用密文集合交集运算将不同数据集中重合的数据选出来;第二,在每一轮训练过程,参与方会将本地训练得到的模型参数加密后分享和运算,考虑性能,这个运算通常采用具有加法性质的同态加密或基于秘密分享的安全聚合等。目前,多个联邦机器学习框架已经开源,包括FedML、Fedlearner等。

03 全密文计算面临的挑战

加密是防止隐私泄露的根本办法,全密文计算就是基于密码机制来达成的。很多人存在一个错误认识,就是只要采用了公认的密码算法对数据加密,妥善保管了密钥就是安全的。

然而,事实并非如此,虽然密码算法本身具有可证明安全性,但是在应用中产生的信息泄露,使其容易被破解。除了前文讲过的性能开销大之外,全密文计算面临的最大挑战就是如何保护用户访问行为模式和减少密文计算过程产生的信息泄露。

信息泄露带来的攻击危害会有多大呢?

有些人可能会有疑惑。大家可能听说过侧信道攻击,它是针对加密电子设备在运行过程中的时间消耗、功率消耗或电磁辐射之类的侧信道信息泄露而对加密设备进行攻击的方法。这类攻击方法的有效性远高于密码分析的数学方法,猜出了密钥或者恢复了密文,给密码设备带来了严重的威胁。

对密文计算和密码应用而言,存在的信息泄露也会形成类似的数据隐性侧信道,攻击者利用掌握的辅助信息可以实施有效的攻击。

众所周知,确定性加密会泄露相同密文的个数而遭受频率攻击。那么,是不是指将相同的明文随机加密成不同的密文就可以了?

事实上,对该明文的一次相等查询就会泄露其所有不同的密文。这种泄露是为满足功能要求而带来的,还有一些泄露是为性能考虑而带来的。

以可搜索加密为例,考虑性能它通常采用倒排索引结构,即服务器维护一个加密关键词对应的文档ID列表,一旦查询某个关键词,通过其关联列表快速地返回所有的文档。当新增一个文档的时候,它加到哪个加密关键词对应的列表是泄露的,也就意味着泄露了新增文档是否包含这个加密关键词。此类信息泄露已经被用来设计文件注入攻击,只需要注入对数级个文件(破解100000个关键词只需要17个文件),就能攻破此类可搜索加密方案。

密文计算过程存在的信息泄露有很多,比如密文数据的访问次数、密文比较操作后的大小顺序、密文查询结果集的元素数量、是否是相同的密文查询、相同密文查询的次数等,这些信息泄露已经被用来发起推理攻击、快照攻击、通信量攻击、注入攻击、累积攻击等攻击,成功恢复了密文数据。

举例而言,在密文范围查询里,攻击者可以通过掌握的通信量信息,即查询返回的加密记录的个数,实施通信量攻击来恢复密文数据;在广告推荐等安全多方计算环境里,攻击者可以通过泄露的交集大小,成功推测参与方是否拥有特定用户或数据;等等。

要保护密码应用的各类信息泄露,理想的办法就是采用不经意随机存储机模型(ORAM)。它有三个要点:数据长度一致、相同数据只访问一次、读写行为隐藏。

它通常伴随着大量的虚假数据、虚假读写操作,使得操作和特征尽可能统一。比如,让任意关键词查询的结果集都填充到相同的长度,每个数据块访问后都随机换一个新的位置。很显然,这三个要求达到了安全的目的,却带来了极大的计算、存储和通信的开销,几乎不太可能在大数据量计算和存储里应用。面对特定的信息泄露、特定的攻击设计特定的保护方法,成为当前一种主流解决办法、解决安全和实用的折衷方案。但是,在推广应用中,这类方案容易遭受用户的质疑。

04 当前进展和未来发展

随着《中华人民共和国密码法》的颁布,实现数据价值的共享、用户隐私的保护,推出实用安全的密文计算解决方案或者应用系统成为当前阶段的一大要务,也成为未来的一种必然趋势。

目前,联邦机器学习、数据库加密系统、安全多方计算等领域陆续开源了很多项目,大大推动了密文计算落地的进展程度。

基于可信硬件的解决方案成为目前一种主流思路,比如华为推出了基于ARM TrustZone的数据库加密系统、阿里推出了基于Intel SGX的云加密数据库、百度开源了通用安全计算平台MesaTEE等。可信硬件通过隔离等技术在不可信环境提供了可信执行能力,使得密文甚至可以解密后在内部进行安全计算,大大提升了性能,是其大规模应用的主要原因。

当然,诚如披露的Intel幽灵和熔断等漏洞,基于可信硬件的解决方案需要抵御信息泄露带来的攻击,目前一些解决方法也已经陆续提出。

以Intel SGX为例,只要达到程序茫然和数据茫然就可以达到实用安全,程序茫然是使攻击者不知道程序执行了哪个路径,而数据茫然是指使攻击者不知道访问了哪个数据,这些可以通过不设置跳转语句、所有数据执行与或操作等方式来达成。对ARM Trustzone而言,因为它通过系统隔离技术保护了执行过程中的数据访问行为,所以更容易减少信息泄露,只要打破输入输出的关联性就可以达到一定程度的实用安全。

世界上没有绝对安全的系统,安全在攻防博弈中进展。随着效率提升的安全多方计算、全同态加密等密码协议的深入研究,泄露减少的可信硬件方案的持续推进,全密文计算时代早晚会到来。

当然,全密文计算强调从数据的诞生、流转、共享和使用全过程都是密文上的计算,从密文计算到全密文计算,它面临的挑战不只是技术上的问题,还需要解决伦理道德、法律法规、管理制度等相关问题,所以还有很长的一段路要走。

关于作者

刘哲理,虎符智库专家,南开大学计算机学院副院长、网络空间安全学院副院长,中国新一代人工智能发展战略研究院智能网安研究中心主任,南开大学百名青年学科带头人、天津市中青年科技领军人才。

声明:本文来自士冗科技,版权归作者所有。文章内容仅代表作者独立观点,不代表士冗科技立场,转载目的在于传递更多信息。如有侵权,请联系 service@expshell.com。