在实际业务场景中,仅考虑业务数据的保密会给业务的方便性和可扩展性带来很大的局限。考虑一家小额贷款公司的情况,该公司使用第三方商业平台存储业务数据。显然,该公司的“数据库”包含诸如用户个人数据等的敏感信息,应予以保密。假设第三方存储平台采用的信息保护技术不充分,其平台的系统管理员就可以访问所存储的敏感信息导致敏感信息泄露。因此,贷款公司决定对其保存在数据库中的所有数据进行加密,并采取仅在办公室中可对数据进行解密的策略,确保第三方存储平台无法获取敏感数据,如图2-1所示。
●图2-1 贷款公司数据存储方案示意图
这种架构允许贷款公司使用第三方商业平台的存储服务,但是难以在不损害存储数据隐私的情况下使用第三方的计算服务。比如,贷款公司往往希望从数据存储中得到下述问题的答案。
1)现有贷款额平均值是多少?
2)贷款超过50000元的用户有多少?
3)上月营业额比上上月营业额增长多少?
4)贷款额中位数是多少?
5)业务增长率如何?
要回答这些问题,需要在存储数据中进行检索并进一步计算,然而加密数据无法检索、无法运算,这就会导致贷款公司在外包数据存储时 无法同时保证数据隐私性和计算方便性。
同态加密(Homomorphic Encryption,HE)是一种加密方法,它允许人们对密文进行特定形式的代数运算后,得到的仍然是加密的结果,将其解密所得到的结果与对明文进行同样的运算结果一样。换言之, 这项技术使人们可以在加密的数据中进行诸如检索、比较等操作,从而得出正确的结果,而在整个处理过程中无须对数据进行解密。
把同态加密和传统加密(即非同态的传统加密)进行对比(如图2-2所示)可以看出,使用传统加密算法加密的数据如果要进行运算,必须先解密,否则直接对密文进行运算会破坏密文的结构,无法满足密文运算效果与明文运算效果等同的要求;而同态加密能够直接对密文进行运算,其效果与明文进行相同运算的效果相同。并且密文运算的结果也是密文,这保证了明文数据自始至终都没有泄露。
●图2-2 同态加密和传统加密对比(以二元运算为例)
同态加密的“同态”(Homomorphic)一词来自代数领域, 在代数中,同态性是指两个代数结构(例如,群、环或向量空间)之间映射保持结构不变的一种性质。 这个概念延展到了密码学领域,人们使用“同态加密”来形容对加密后密文操作的效果等同于对明文进行同等操作的效果。
通常而言,加密方案是保护敏感信息机密性的关键机制。然而,传统的加密方案不能在已加密数据上进行操作。换句话说,用户为了使用云文件存储、共享和协作等服务,不得不牺牲数据的隐私。1978年,三位密码学家Ronald Rivest、Leonard Adleman和Michael Dertouzos在一篇论文中首次提出同态加密的概念。
在同态加密概念提出后的30年里,世界各地的研究人员多次尝试设计支持各种运算的全同态方案,但是进展甚微。
在同态加密概念提出后不久,很快就有人发现,RSA算法支持密文乘法同态运算,这是由RSA函数的运算性质决定的:假设 n 为RSA模数, e 为加密密钥, m 1 、 m 2 为两个明文,对应的密文分别为 c 1 = mod n 、 c 2 = mod n ,则密文乘法运算为 c 1 * c 1 =( mod n )*( mod n )=( m 1 * m 2 ) e mod n ,满足同态性。
在1985年的IEEE Symposium on Security and Privacy会议上提出了一个数据库加密方案,它支持在数据加密之后进行一些统计学运算。这个方案的意义在于,展示了实际应用场景中同态加密的可行性。1987年出现了更多更复杂的同态加密示例算法,1988年在加法同态算法次数方面出现突破,刷新了同态加密运算次数的纪录。直到1996年才出现同时支持两种同态运算的同态加密算法,不过遗憾的是,该算法的加解密后来被证明是不安全的。
上面几个方案都不支持不限制次数的密文同态运算,2008年有人提出了支持无限次同态加法运算、有限次同态乘法运算的同态加密算法,已经达到当时的极限。
历史性突破发生在 2009年,Gentry提出了一个真正的全同态加密方案, 能够支持无限次的加法和乘法运算。该方案历史性地解决了全同态加密从无到有的问题,之后还有多个改进方案和其他FHE方案出现。
目前能够提供数据隐私计算的技术除了同态加密以外,还包括安全多方计算(Secure Multi-Party Computation)、可检索加密(Searchable Encryption)、差分隐私(Differential Privacy)等。下面对这些技术进行简要介绍,并做对比。
1.安全多方计算
安全多方计算研究的是 一组互不信任的参与方,互相之间不想透露自己的数据,如何在不借助第三方的情况下,利用各自数据共同完成计算,并同时保证数据隐私性和输出结果的正确性, 如图2-3所示。安全多方计算的目的是解决在分布式环境下的隐私保护计算问题,是密码学领域的重要研究方向,最初由图灵奖获得者姚期智在1982年提出。此领域的研究内容主要包括几个方向:参与方数量上包括两方计算和多方计算;攻击者模型包括半诚实模型和恶意模型;研究问题包括安全模型建立、可行性分析、通用协议设计、具体问题的计算协议、实际应用和安全多方计算扩展问题等。
●图2-3 安全多方计算示意图
文献[8]中还提出了基于混淆电路(Garbled Circuit)构建安全两方计算方案的思想。这种方法中,参与方A首先生成一个混淆电路,然后将该电路发送给另一个参与方B,随后B使用自己的输入执行电路并将结果返回给A;之后双方通过交互一些消息,来达到都能得到正确计算结果并且互相不泄露输入信息的效果。不过该文献并未详细说明如何构造此类通用电路。之后出现的其他研究成果在两个参与方的情况下设计了高效的混沌电路,进一步节省了运行时间和存储空间。由于多个参与方进行隐私数据处理的特性,大量研究工作采用了混沌电路方法来设计协议,以满足多个实际应用场景,如生物识别、隐私线性分支程序、隐私保护的远程诊断、面部识别等。但是目前提出的方案均存在计算量过大、计算轮数过多等缺点。
另一种实现安全多方计算的方法是基于秘密共享来设计安全多方计算协议,协议中利用秘密共享(Secret Sharing)技术生成随机共享,并将共享分发给不同的参与方,这些参与方之间通过信息交互共同计算目标函数值。秘密共享技术由Shamir和Blakley等人发明,实现的功能是将一个机密信息划分成多份共享信息,并分发给多个利益相关者,只要足够多的共享信息汇总就能恢复原始的机密信息。现有方案能够对划分后的共享信息进行加法和乘法门(或者说,异或门和与门)运算,运算过程能够保证共享信息的隐私性,并且保证组合后可以恢复原始信息计算结果。任意组合上述电路门,可以完整实现任意函数的隐私计算。目前还出现了很多针对特定函数的安全多方计算协议设计,如安全多方乘积运算、安全多方标量积运算、安全多方排序、安全多方矩阵积、安全多方集合交集等。这些协议的组合可以用于安全多方数据挖掘、协作科学计算、生物信息计算等应用场景。
2.可检索加密
为了解决 数据加密之后的检索问题, 研究人员提出了可检索加密技术。可检索加密根据加密算法机制特点可以分为两类:对称可检索加密、非对称可检索加密。首个对称可检索加密出现在2000年,对数据加密的算法是对称加密算法,并且可实现对加密数据的线性查找;非对称的可检索加密算法采用公钥加密算法对数据进行加密,其特点是可以授权第三方多用户进行检索,但是检索效率较低;另一方面,有些研究者提出了安全索引的概念,基于关键字构建安全索引,从而实现快速的检索算法。
第一个能够实现的对称可检索加密算法是由Song等人提出的,密文检索的实现过程中逐一对密文进行匹配,最后验证是否满足校验关系。整个检索过程需要对密文进行线性扫描,计算开销非常大,对于数据量较大的场合不适用。为了提升效率,有人提出了安全索引的概念,将关键字映射到过滤器中构建安全的索引,检索时将要查询的关键字映射到过滤器并提交给服务器,由服务器进行匹配。该方案的计算效率非常高,查询时间显著缩短。
另一方面,在安全模型方面也涌现出很多研究工作,首先是相关语义安全模型的定义,完善了可检索加密过程中的所有安全内容,包括数据安全、索引安全、检索陷门和返回结果安全。
非对称可检索加密算法是指基于公钥体制的可检索加密算法。第一个公钥可检索加密算法使用基于身份加密(Identity Based Encryption)的算法,通过双线性映射实现。目前大多数非对称的可检索加密算法基于椭圆曲线之上的双线性映射,结合基于身份的加密算法,其显著缺点是计算复杂度高,不适用于大规模应用。有些研究人员提出建立关键字索引机制,引入两个关键词之间的“编辑距离”概念,即把一个关键词转变为另一个关键词所需的修改次数,通过控制编辑距离小于某个阈值来实现模糊检索。为了进一步减少计算开销,在计算编辑距离时引入通识符,以一步操作代替字符的增加、删除、替代操作。关键字列表在云端服务器采取相似值树状索引结构存储,利用字典树遍历索引提高检索效率;同时通过距离建立关键字索引表,需要单独建立关键字及相对应的编辑距离表;整个系统实现过程过于复杂,不适应大数据的加密检索。同时,相似值树状存储结构抵御统计分析攻击能力不强。进一步地,有人提出利用布隆过滤器(Bloom Filter)转换器原理建立索引表,将检索请求与索引进行匹配的工作委托半可信第三方执行,并引入概率加密,通过字符频率距离与编辑距离的差值实现模糊检索的方案。此方案引入了半可信第三方,增加了实际开销,并且在数据量大时利用频率距离会检索到过多的不相关信息。
目前国内一些学者也持续开展可检索加密技术的研究,实现了在数据库上进行密文检索,利用分治原则构建安全的索引来对密文数据库进行高效的单关键字检索,保证了数据存储的安全性和可检索功能性等。
3.差分隐私
2006年出现的差分隐私技术的基本思想源自于一个很朴素的观察:当数据集 A 中包含某个人张三的数据时,对该数据集进行任意统计学查询操作(如,计数、求和、平均值、中位数或其他范围查询等)所得到的结果,和将张三从该数据集中排除后(此时数据集记为A')执行相同的查询得到的结果不同,则查询结果泄露了“张三是否在数据集中”的信息。如果上述两个查询的结果相同,或者差别极其微小、无法分辨,则可以认为,张三的信息并没有因为被包含在数据集中而产生统计查询相关风险。差分隐私保护就是要保证任一个体在数据集中或者不在数据集中时,对最终发布的查询结果几乎没有影响。具体来说,是通过对原始数据的转换或者是对统计结果添加噪声来达到隐私保护效果。
差分隐私的概念来自于密码学中语义安全的概念,即攻击者无法区分出不同明文的加密结果。在差分隐私方法的安全性定义中, 要求攻击者无法根据发布后的结果推测出哪一条结果对应于哪一个数据集, 这是通过加入随机噪声的方法来确保公开的输出结果不会因为一个个体是否在数据集中而产生明显的变化。更进一步地,该模型对隐私泄露程度给出了定量化的模型,这对于分析隐私保护程度是一个很好的度量。因为一个个体的变化不会对数据查询结果有显著的影响,所以攻击者无法以明显的优势通过公开发布的结果推断出个体样本的隐私信息,对隐私信息提供了更高级别的语义安全,因此被作为一种新型的隐私保护模型而广泛使用。
如图2-4所示,差分隐私机制将一个正常的统计学查询函数Q()的查询结果映射到一个随机化的值域上,并按照一定的概率分布返回查询结果,只要两个概率分布足够接近(不需要同分布,只需要统计不可分辨或者计算不可分辨),就实现了差分隐私保护能力。
●图2-4 差分隐私示意图
4.各技术对比
表2-1是隐私计算技术之间的对比,从中可以看到, 同态加密技术具有普适性、无需交互的优点,是隐私保护计算的终极解决方案。 当然,同态加密技术目前仍存在运算效率较低的缺点,等待此领域技术突破加以解决。
表2-1 各技术之间对比
同态加密对于企业业务法规遵从性和数据隐私保护工作来说是一个重要手段。尤其是2018年之后对数据隐私合规的监管有了巨大的变化。欧盟的《一般数据保护条例》(GDPR)生效后,美国的《加州消费者隐私法》(CCPA)于2020年1月1日也开始实施,还有多达40个州正在考虑数据隐私法。GDPR之所以引人关注,是因为它对掌握用户数据企业严重违规行为的处罚力度极大,罚金为企业全球收入的4%,比如,在没有足够的客户同意处理数据情况下对数据进行处理就有可能触发处罚条款。而CCPA是一个“迷你GDPR”,可以让消费者控制自己数据的收集、使用和传输。
这些新的法规是为了改变过去互联网数据被严重破坏和滥用的乱象而产生的。不可否认的是,如今数据泄露现象非常严重,并非所有的漏洞都是外部攻击者造成的,据报道,内部威胁和特权访问约占违规行为的35%~60%。即使使用传统的加密(如静态加密和透明数据加密),数据库管理员也可以以明文形式访问用户所有数据,一旦没有监管,利用这些数据盈利对于数据管理人员来说是充满诱惑力的。
同态加密也可以是一种业务支持工具,可以用于实现云工作负载保护(“提升并转移”到云)、云/聚合分析(或隐私保护加密)、信息供应链整合(包含用户的数据以降低违约风险)以及自动化和协调(操作和触发加密数据以进行机对机通信)。
同态加密的应用还面临一个问题,即可能需要修改使用同态特性的应用程序。 由于同态加密的特点,需要事先了解程序中执行哪种类型的计算(加法、乘法等),这样使得具有不太可预测或更自由形式操作的业务必须重写或修改应用程序,以使同态加密可行,这对于规模化的企业应用有时是存在一定障碍的。
同态加密离有较大现实意义的实现还有一定的距离,但是在差异隐私和隐私保护技术方面已经有了实质性的进展。 有一些工具可以提供类似同态的加密,而没有同态加密带来的固有缺点,这样企业就可以强制执行更高的安全标准,而不会实际破坏流程或应用程序功能。企业不应该为了安全而牺牲速度,如果操作得当,安全性实际上可以加速用户的业务。消除安全和业务领导层之间的摩擦可以在部门之间建立信任,并创建更好的安全结果。
实用同态加密算法的广泛应用前景吸引着密码学家和学者。尽管同态加密是一个快速发展的领域,但在实际应用中,目前同态加密算法的低性能使其暂时还难以在企业环境中实现大规模应用。
2017年,来自学术界和工业界的密码学研究人员组建了 同态加密标准化开放联盟 (Homomorphic Encryption Community),并于当年7月召开了首届全同态加密标准化研讨会,开始共同推进全同态加密标准草案的编写工作,并发布了全同态加密安全标准、API标准、应用标准三份白皮书。
目前,HomomorphicEncryption.org已举办了五届全同态加密标准化会议,参与成员包括微软、三星SDS、英特尔、IBM、谷歌等企业,以及NIST、ITU等机构的代表和各大高校的学者。在标准化进展方面,HomomorphicEncryption.org已分别于2018年3月和11月发布和更新了全同态加密标准草案。该标准草案的依据是同态加密标准化开放联盟前期编写的三份白皮书,这三份白皮书分别讨论了同态加密的安全性、API和应用场景。目前版本的标准草案提供了方案描述、对其安全属性的详细解释以及安全参数表。该标准的未来版本将补充描述用于同态加密的标准API和编程模型。
1.同态加密安全性白皮书
2017年7月13日—14日,在微软Redmond召开的同态加密标准化会议上(Homomorphic Encryption Standardization Workshop),展示了6个不同的同态加密库及其演示程序,这6个同态加密库包括SEAL、HElib、Palisade、cuHE、NFLLib和HEAAN,全部都是基于环上LWE(Ring Learning With Errors)问题的系统,实现的同态加密算法分别是BGV或BFV.
标准化的一个重要部分是对不同参数集的安全级别达成一致。虽然学术界已经针对同态加密的安全参数集合进行了广泛的研究和基准测试,为这项工作奠定了基础,但是针对应用进行具体部署应设置哪些不同参数仍有待进一步研究。
对于同态加密方案,通常至少要考虑三个方面的性质:语义安全性(更具体来说,是选择明文攻击不可分辨性)、复合性(Compactness)、解密的效率。其中语义安全性是加密方案的基本安全性;复合性是指对密文执行同态运算造成密文长度膨胀的程度,复合性好的同态加密方案的密文长度膨胀程度较低;高效地解密意味着解密运算所需运行时间不取决于密文上所做过的同态运算。
大部分同态加密方案的安全性都可以规约到两个数学困难假设:带错误学习(Learning With Errors,LWE)假设、环上带错误学习(Ring Learning With Errors,RLWE)假设。这两个安全性假设将在第4章给出全同态加密方案具体实现之前进行详细定义。通过分析目前已有的针对LWE及RLWE的攻击手段,可以反推出要保证安全性至少应该如何设置参数。当基于RLWE的同态加密方案使用2指数幂圆分环时,目前还找不到比攻击LWE更好的RLWE攻击手段。
2.同态加密API白皮书
同态加密的应用是建立在底层“电路”运算的基础上的,因此其设计及使用是一项非常复杂、易出错的工作。很多时候要想正确使用同态加密算法,需要开发人员小心地考虑密文内数据的组织形式,这给开发人员带来很大的不便,因此将同态加密算法封装为API形式供开发人员调用成为降低其使用难度并大力推广的重要前提。组织开源同态加密库的主要开发人员撰写同态加密API白皮书的目的在于为进一步标准化提供基础。
为了给同态加密应用提供必要程度的抽象,需要标准化的最小同态加密API集合应包括:一个 存储模型 用于标记序列化和解序列化密钥、密文、明文、加密参数、实现相关数据,以支持同态计算;一门 类汇编的专用语言, 用于表示同态加密程序中底层库调用。这两部分是同态加密标准的最核心部分。虽然标准存储模型和同态加密汇编语言很有用,但是让开发人员理解并直接调用函数库仍然存在一定的困难,所以还需要创建一个电路编译器,用于将应用业务逻辑转换为底层运算电路,进而实现库调用。上述完整过程需要标准化的内容可分解为几个层次:描述同态加密的编程模型、业务逻辑层、电路编译交互层、编译器与代码库交互层。
虽然标准化应该支持单一同态加密方案和参考实现的标准化,但标准API还应该确保足够通用,支持多个同态加密方案,因为在不同的应用场景中会有多种同态加密方案选择的需求。尤其是API的设计应该足够灵活和兼容,以合理的性能指标支持不同的应用场景。最佳的方法是在电路编译生态系统中使用API,其中高级程序和动态、静态指定的参数可以在程序的编译阶段导入库的执行电路中。同时,不同的方案参数应该能够在执行开始时动态更新,以满足不同应用程序的需要。
从某种程度来说,存储模型API已经有一定基础了,因为只需要遵循现有加密API标准的设计模式即可。其唯一复杂性源于有多个同态加密方案需要标准化,目前聚焦于最广泛使用的同态加密方案,如FV方案、BGV方案等。存储模型中,基于格密码学的在存储中的最大挑战是参数较多,需要能够处理各类元素(公钥、私钥、密文、明文等)存储的通用处理方法,涉及向量、矩阵、多维张量的存储,这些向量、矩阵、多维张量用于表示同态加密法方案中使用的多项式系数、有限域元素、整数模数等。
需要存储的加密上下文能够表示当前同态加密或密文运算会话的状态,进而可以指示编译器如何生成电路,并标识加密库可提供的指令集。具体说来,加密上下文包括如下元素:方案ID(用于标识所使用的同态加密方案或同态加密方案变体)、方案独立参数(如RLWE参数、明文模数、明文维度等)、密钥负载(定义密钥的格式)。
为同态加密定义“合适的”类汇编语言可以有效地支持同态加密的大规模应用,该语言中主要包含电路描述信息,用于描述将执行的电路。所述的电路可以是设计人员手工设计,也可能来自同态加密电路编译器的输出,电路能够进行库函数的底层调用,也可以调用扩展库实现算法优化。设想一个系统架构,系统的计算模型由算术电路定义。开始时电路结构只包含较少的指令,随着同态加密编译器的演进,有更多的同态加密指令加入了指令集合。除了指令之外,还需要定义如何表示明文。作为第一种方法,假设明文可以编码为整数矩阵对明文模数取模。这里借用了MATLAB的思想,即所有的值,不管是标量还是向量等,都表示为矩阵。
3.同态加密应用场景白皮书
为了说明同态加密在各领域应用的潜力,微软研究院主办的同态加密标准化会议上还列举了 同态加密的典型潜在应用列表。 列表中包括基因组学、关键基础设施保护、教育应用、医疗健康和控制系统保护。
在基因组学领域,共享数据时能否保证数据隐私已经成为限制该领域技术发展的一个重要因素。以现有的研究条件,各种DNA和RNA序列可以迅速且低代价地在许多实验室和医疗机构中生成。据估计,在未来10年或20年内,许多人将受益于全基因组序列的研究,同时基因数据也是研究生物学和人类历史的有力工具。举例来说,许多复杂疾病或流行病学的研究都需要数千个样本来检测模式,并对结果产生影响。然而广泛共享这些数据对于隐私来说是个严重挑战。对于每个人来说,自身的DNA和RNA序列都是生物特征识别码,可以用来标识每个人,同时DNA和RNA序列也包含了重要的医学信息,如疾病风险等。
目前已有的保护基因组学数据隐私性的方法给研究人员带来了很大的额外开销。NIH资助的项目需要将基因组学数据存放在政府控制下的NCBI的dbGaP数据库中,或存放在少数“可信任的合作伙伴”掌握的数据库中。未来大规模的基因组学数据能否被dbGaP接受是个很大的问题,同时很多基因组学数据也找不到合适的地方存储。有人提出了构建基于云的替代存储方案,但目前尚未能实现。目前该领域仍处于不断变化的状态,因此有可能出现新的、更好的解决方案。基因组学数据共享的一些例子可以使用对数据的简单操作完成,因此非常适合用同态加密来实现。其中有两个称为ClinShare和Matchmaking的例子,通过数据共享分析揭示了基因变异在临床上的重大意义。其他的一些例子包括为全球基因组学和医疗保健联盟(GA4GH)创建的信标或其他工具。使用上述简单例子,可以组合完成对基因组的更复杂的分析,如GWAS和其他组合基因型、表型的统计分析。人类的基因组序列在3B碱基对上几乎完全相同,这意味着基因组数据可以简化为一个简单的差异载体。基因组序列的变化、变异、突变可以从基因序列中提取,并以一种称为VCF的简单格式共享。另外,包括相关的临床结果的表型数据可以打包成称为“Phenopacket”的交换格式。
关键基础设施对于社会正常运转、国家安全极其重要,保护其中信息的机密性以及不被非授权用户篡改非常重要。以电网为例,对电网数据分析结果可以用于控制电网和配电。攻击者通过篡改电网数据,可能会造成大规模停电事件。因此,电网数据即使要借用云计算来分析,也必须在云计算足够安全的前提下才可行。在此场景下,电网中每个节点的测量值都在不断获取后,以同态加密的方式发送到基于云的平台进行计算和分析。电网中的网络节点在收集到异常数据后(如电量非正常峰值),将异常数据加密后发送到云平台,以进行进一步的计算。计算后加密结果发送到电网决策中心进行分析和决策。
多种加密计算方式中同态加密是电网场景最合适的方法。从经济角度来看,同态加密只需要部署一台云服务器(不一定是可信的),而所有最终用户都仅需一个客户端接口就够用。其他加密计算方法(如MPC)则需要更重、更昂贵的投入(即更多的服务器)。另一种方案,基于硬件的数据保护解决方案(如Intel的SGX)具有信任模型不明确的缺点。此外,由于SGX的实现方法并未公开,因此无法验证算法和协议的正确性。因此,对于关键应用,如管理国家的电网或供水,更推荐使用同态加密方案。
另一个关键基础应用——智慧城市,也有类似情况,如为急救人员和救护车规划路线。假设发生了一场需要城市警察、消防和多辆救护车响应的事故,城市的云端平台可以快速加载一个服务器,向特定的城市部门(如警察、消防、救护车、交通)分配各科室的资产,规划从事故现场到合适医院的最佳路线。这些应用程序需要不同类型的算法,其中一些相对容易用同态加密来实现,但是有些算法的某些方面可能需要额外的研究。
医疗卫生系统中保存了大量用户隐私数据,因此其数据处理必须在能够保证敏感信息不被泄露的环境中进行。同态加密有助于解决医疗行业中某些应用程序的信息共享问题。依据理论来说,计费程序和医疗报告生成程序都需要访问个人医疗记录,并在医疗记录数据中进行计算和分析,同态加密可以实现允许进行这些计算而不“公开”披露这些记录,避免数据隐私暴露。
保护敏感数据的方法自然扩展到医疗保健的其他领域。举例来说,在精准医学领域,癌症病人的肿瘤往往各有特点,很少有完全相同的,肿瘤的这种异质性使得治疗方案的选择具有一定的挑战性,医生不仅需要根据患者的药物敏感性对治疗方案进行分析,还需要避免过度治疗(例如,如果肿瘤对一种或多种治疗没有反应),并预测不良健康事件。因此,将患者与个性化治疗相匹配就需要了解患者(即肿瘤)的基因组、患者的病史和表型特征,以及候选药物等具体情况,而这些知识纳入治疗选择过程就需要对高度可识别的数据进行密集计算,这种分析过程被称为药物基因组学。基于这种分析选择治疗方法的更广泛实践被称为精确医学。在整个治疗工作流程中,医院希望确定治疗的安全性和有效性,患者同时关心自己的隐私(希望医院能够遵守相关隐私保护准则),制药公司关心其知识产权是否被保护,特别是在其治疗方法专利获得授权之前。将同态加密应用于治疗评估过程能够同时确保治疗安全性和疗效、患者和制药公司的隐私。
在工业控制领域,控制系统或网络物理系统是控制信号操作物理系统的计算机系统,为了实现远程控制和智能化,往往会接入网络。整个控制系统可以分解为传感器、执行器、控制器。控制器用于接收来自传感器的传感数据,利用用户输入对其进行处理,以计算命令数据,并发送给执行器,执行器根据命令操作设备。为了保证数据的安全性和隐私,最近有研究人员建议使用同态加密方案来保护控制系统,具体来说,使用同态加密对传感数据进行加密,控制器不需要解密传感数据就可以进行处理,因此数据对控制器本身保密。同时保证了攻击者对加密数据的任何操作都可能被执行器的检测系统检测到。
4.标准草案
目前最新版的 同态加密标准草案版本为1.1,于2018年11月21日发布。 标准草案的内容主要包括两个部分: 同态加密方案的标准化、同态加密方案的推荐参数。
第一部分主要描述了三个同态加密算法,即 BGV算法、BFV算法、GSW算法。 在实现同态加密方案时,不同应用场景会有许多不同的选择来优化算法,所以直接比较不同同态加密算法性能的优劣有时没那么容易,要考虑诸多应用场景因素。当前运行效率较高的同态加密方案仅运行执行有限深度的电路计算,当然可以通过使用一种称为“自举”的技巧(第4章中将介绍相关内容)将其转换为全同态加密方案。“自举”操作包括对解密电路的同态执行,对效率的影响非常大,因此目前在对其进行标准化。在BGV方案和BFV方案中使用“自举”要求方案底层格问题在近似因子为超多项式增长时,仍保持困难性,该假设强度过大,因此也存在安全性规约方面的一些麻烦。GSW方案显然在这方面有一定的进步,其“自举”同态加密方案所基于的问题困难性近似因子仅为维度 n 的多项式。
标准草案中所描述的同态加密方案都基于 LWE问题 或 RLWE问题 。LWE问题由4个参数( n , m , q , χ )定义,其中 n 是维度参数, m 是抽样个数, q 是模数, χ 是有理数域上的一个概率分布,用于定义误差向量的分布。LWE问题困难性假设是指如下两个输出的概率分布计算不可分辨。
分布1:均匀随机选择 m 行 n 列矩阵 A ,从向量空间 中均匀随机选择向量 s ,依据误差分布 x 从 Z m 中选择误差向量 e ,计算 c = As + e mod q ,输出( A , c )。
分布2:均匀随机选择 m 行 n 列矩阵 A ,从向量空间 中均匀随机选择向量 c ,输出( A , c )。
RLWE问题是LWE问题的特殊形式,其中矩阵 A 具有特殊的代数结构,或者说取自一个环。具体说来,RLWE问题由三个参数( m , q , χ )定义,其中 m 是抽样个数, q 是模数, χ 是环 R = Z [ x ] /f [ x ]上的概率分布,用于定义误差向量的分布。RLWE困难性假设要求如下两个输出的概率分布计算不可分辨。
分布1:从环 R / qR 中均匀随机选择 m +1个元素( s , a 1 ,…, a m ),依据误差分布 χ 从环 R 中选择 m 个误差向量( e 1 ,…, e m ),计算 b i = sa i + e i ,输出( a i , b i ), i =1,2,…, m 。
分布2:从环 R / qR 中均匀随机选择2 m 个元素( a 1 ,…, a m ),( b 1 ,…, b m ),输出( a i , b i ), i =1,2,…, m 。
要给出能够足以保证同态加密方案安全性的参数建议,首先看分析对LWE和RLWE问题攻击的算法能力如何。如果攻击算法效率很高、攻击效果很好,则需要设置较大的参数以提升算法攻击难度;反之,如果攻击算法效率较低,可以适当放松参数设置要求,选用较小的参数。
综合考虑多种攻击算法的最新进展,其中包括著名的BKZ算法。BKZ算法是一个迭代、逐块执行的格基规约算法,可以用于解决格上最短向量问题,需调用LLL算法和一个求解低维格上SVP问题的算法作为子程序,这个SVP求解算法在实际应用中通常选用枚举算法或者筛法来实现。BKZ算法有多种代价假设,通常称为不同的代价模型(Cost Model),包括“Sieve”“ADPS16”等。
在实际应用场景中,影响同态加密方案安全性的参数包括维度 n 、密文模数 q 等。下述表格涉及 3个安全级别 (分别为128比特、192比特、256比特),在给定 n ,并指定误差分布的标准差为 σ ≈3.2的情况下推荐参数 q 的值,并指出 三种攻击手法 (uSVP、dec、dual)见效所需的运行时间(以2为底的指数)。表2-2与表2-3中考虑了秘密值的三种分布:均匀分布、误差分布、二元分布。
表2-2 代价模型=BKZ.sieve时的参数推荐设置
(续)
表2-3 代价模型=BKZ.qsieve时的参数推荐设置
(续)