使密码操作免受恶意修改的方法和装置与流程

文档序号:19302989发布日期:2019-12-03 18:33阅读:174来源:国知局
使密码操作免受恶意修改的方法和装置与流程

政府权力声明

本文描述的专利是在政府的支持下做出的,其由内政部/国际商务中心(doi/nbc)的高级情报研究计划署(iarpa)资助,合同号为d11pc20194。政府在本发明中享有某些权力。

本申请一般涉及密码学,并且更具体地,涉及用于使密码操作免受恶意修改的技术。



背景技术:

这部分介绍可以有助于促进更好地理解本发明的方面。因此,将就此来阅读这部分的内容,并且这部分的内容不被理解为承认什么是现有技术或什么不是现有技术。

异或(xor)加密(其还被称为香农加密)是在密码学中广泛使用的其中一种最简单的加密形式。它也能够非常高效地被实现。为了使用密钥k加密消息m,系统或设备仅计算c=m(xor)k,其中(xor)表示二进制异或操作符。虽然存在其它非常高效的加密方案(诸如高级加密标准(aes)),但是异或加密可能特别适用于基于乱码电路(gc)安全计算的应用。然而,此类应用可能易受恶意修改。



技术实现要素:

说明性实施例提供了用于保护密码操作(诸如但不限于异或加密操作)免受恶意修改的技术。

例如,在一个实施例中,一种方法包括以下步骤。获得消息和与所述消息相关联的标识参数。所述消息包括多个单元。生成多个一单元消息认证代码,其中每个一单元消息认证代码对应于所述消息的多个单元的各自单元,以及其中基于与所述消息相关联的标识参数、所述多个单元中的给定单元、以及所述消息中的给定单元的位置,生成每个一单元消息认证代码。

在一个示例中,所述消息可以是异或加密密钥,以及所述标识参数可以是与所述密钥相关联的唯一标识符。消息认证代码密钥用于生成所述多个一单元消息认证代码。在异或加密密钥示例中,单元可以是比特,从而导致多个一单元消息认证代码的生成。于是,可以在安全计算方法的内部(诸如,仅作为示例,gc),高效地执行异或加密密钥的每个比特的验证。

在另一个示例中,提供了一种制造品,所述制造品包括:处理器可读的存储介质,其具有编码在其中的一个或多个软件程序的可执行代码。当由至少一个处理设备执行所述一个或多个软件程序时,它实现上述方法的步骤。

在又一个实施例中,一种装置包括存储器和处理器,所述处理器被配置为执行上述方法的步骤。

有利地,在基于gc的安全计算应用中,针对异或加密密钥的每个比特的一比特消息认证代码的生成可以用于向gc高效地验证密钥的真实性,从而免受异或加密密钥的恶意修改。此外,说明性实施例提供了在与私有数据库系统相关联的验证器处,验证比特集合中的给定比特的正确性,同时使得验证的比特不被验证器知道。

从附图和以下详细描述,本文中描述的实施例的这些和其它特征和优点将变得明显。

附图说明

图1说明了根据一个实施例的具有保护的异或加密的私有数据库系统。

图2说明了根据一个实施例的用于保护异或加密的方法。

图3说明了处理平台,在该处理平台上,实现了根据一个或多个实施例的具有保护的异或加密的系统。

具体实施方式

将参照示例性计算系统、数据存储系统、数据库系统、通信网络、处理平台、系统、用户设备、网络节点、网络元素、客户端、服务器、以及相关联的通信协议来描述说明性实施例。例如,说明性实施例特别适用于与使用基于乱码电路(gc)安全计算或操作的应用结合使用和/或用于基于乱码电路(gc)安全计算或操作的应用。然而,应当理解的是,实施例不局限于与所描述的特定布置结合使用,而是更一般地应用于期望提供用于保护密码操作(例如异或加密)免受恶意修改的技术的任何环境。

在基于gc的计算中,一般而言,将被评估的功能被表示为包括一个或多个逻辑门的布尔电路,其中门的输入和输出端子被称为线路。随机(乱码)输入值被指配给与每个门相关联的每个线路。然后,构建乱码表,使得给定电路的每个输入线路的所指配的乱码输入值的情况下,针对该电路的每个输出线路,计算对应的乱码输出值。通过构建针对每个电路门的此类乱码表来评估电路(从而评估功能)。在基于gc的安全应用中,基于加密的输入数据来评估乱码电路。基于gc的安全计算的示例使用包括但不限于:被实现作为所谓的“私有数据库系统”的一部分的安全数据库搜索。私有数据库系统能够基于输入值来评估功能,同时保持输入值的隐私性。

因此,在私有db搜索中,因为在加密数据上执行gc,因此必须在gc内部移除加密。当使用异或加密时,这种移除任务具有最小的代价。然而,当使用所有其它流行加密方案(例如aes)时,移除任务能够导致过高的代价。

然而,使用异或加密的一个问题是,它高度易被控制(即,可被修改)。特别地,在不知道消息的情况下,持有加密密钥的一方(例如,敌对者)能够简单地通过反转(flipping)秘密密钥的对应比特(即,反转比特意味着,将逻辑0比特值改变为逻辑1比特值,反之亦然),对消息的比特进行反转。当由敌对者进行这种操作时,这种比特反转被称为“恶意修改”。

在某些私有数据库系统中,使用异或加密的另一个问题是,消息和密钥可能是非常大的,例如50-100千兆字节(gb)。因此,该系统不能负担密钥或消息的显著增加(例如,因为将需要额外的存储设备以存储辅助的认证信息)。

实施例提供了解决方案以通过高效地认证加密密钥来解决上述和其它问题。

现有的解决方案(诸如构建针对密钥k的消息认证代码(mac))主要关注于确保整个密钥是完全正确的,并且具有非常高的概率来检测密钥中的任何改变。这导致了至少两个缺点:

1)在电路复杂性方面,现有解决方案的效率较差(因此,在私有数据库设置中,与导致安全计算相关联的非常高的代价)。

2)现有的解决方案没有考虑到以下情况:当消息和密钥非常长时,能够摆脱如下方案:其考虑到基于密钥的每个比特来检测敌对密钥拥有者的小概率(例如,0.5)。如果密钥拥有者试图改变密钥的非常多比特,则将大概率抓到密钥拥有者,但是如果仅改变较少比特,则可能不能检测到。在许多应用中,仅改变较少比特不影响总的结果,如在私有数据库设置中就是这种情况。

一些实施例通过针对加密密钥k的每个比特生成各自的消息认证代码(mac)(与针对整个密钥k生成一个mac相对比),克服这些和其它缺点。在私有数据库应用中,每个消息具有唯一标识符,即msg-id。在这个实施例中,msg-id是与加密密钥k相关联的唯一标识符(标识参数),因为“消息”(针对该消息,生成mac)是加密密钥自身。因此,使用mac密钥、消息id、比特位置和密钥比特,生成各自mac。可以将这个mac给验证器,其能够确保加密密钥比特被正确地使用。

将了解的是,在此类实施例中,因为所生成的mac是非常短的(例如,一个比特),因此mac证明者的存储空间不是非常大并且是可接受的(注意的是,验证器具有mac密钥并且能够生成用于验证的mac自身)。此外,验证是非常高效的(可以在私有数据库应用中的gc内部来执行验证)。

图1说明了根据一个实施例的具有保护的异或加密的私有数据库系统的示例。然而,将了解的是,尽管本文中描述的密码操作保护技术特别适用于在私有数据库系统中提供保护的异或加密,但是可以可替代地使用其它密码操作和/或使用其它应用和系统来实现所述技术中的一个或多个技术。

如示出的,私有数据库系统100包括:经由网络130连接的客户端(c)110和服务器(s)120。客户端110和服务器120向两方安全计算协议140提供输入。两方安全计算协议140可以被实现为它自己的各自模块,其连接到网络130和/或直接连接到客户端110和服务器120中的一者或两者。两方安全计算协议的部分功能或全部功能可以可替代地被实现在客户端110、服务器120、或它们的某一组合上。众所周知的两方安全计算协议可以用于协议140,仅作为示例,在a.yao,“protocolsforsecurecomputations,”proceedingsoffocs,pp.160-164,1982中描述的姚乱码电路协议。可以用于协议140的两方安全计算协议的另一个示例可以是以下中的一个或多个:在g.baechler和v.y.kolesnikov于2013年7月16日提交的美国专利号8,488,791中描述的安全两方计算方法,其名称为“securingtwo-partycomputationagainstmaliciousadversaries”。

不管协议140是美国专利号8,488,791的协议还是任何众所周知的现有的两方安全计算协议,协议140生成计算输出,同时保持输入的隐私性。在私有数据库系统100的这个示例中,计算是加密的数据库搜索,输入是密钥(k)112,或其一部分,来自客户端110的认证字符串(auth)114,来自服务器120的加密索引(i)122,或其一部分(注意的是,加密整个索引的密钥可能是非常大的,应用可能仅希望对应于与其一起工作的比特的比特)。下面,将在图2的上下文中进一步解释这些输入。

将了解的是,可以实现可替代的实施例,其中一方不可信(在私有数据库示例中的客户端),它的输入(例如,加密密钥,一次一密(one-timepad)条目等)应当被验证,以及其中使保护失灵的后果是最小的。例如,在私有数据库示例中,布隆滤波器能够用于执行搜索,以及客户端将实际上必须连续欺骗(即,反转比特)多次以便成功,这不太可能发生。

图2说明了根据一个实施例的用于保护异或加密的方法。在图2中的方法200针对用于执行异或加密的加密密钥k的每个比特生成各自的一比特消息认证代码(mac)。除了其它优点之外,该方法确保解密密钥的正确使用。此外,以下说明性地被称为的各方(即,“密钥持有者”和“验证器”)可以分别是实现图1中的两方安全计算协议140的客户端110和模块。可替代地,一个或更多其它方(在图1中示出的或未示出的)能够执行密钥持有者和/或验证器的功能。

让msg-id是消息的某一标识参数(即,在这个实施例中,异或加密密钥)。

让k表示所使用的异或加密密钥(即,异或掩码)。

让在k中的比特的数量为n。

让mac是任何一比特消息认证代码(mac)。尽管有0.5的概率,能够令人信服地伪造一比特mac,但是在某些应用(即,本文中说明性描述的私有数据库应用)中,这个伪造概率是可以接受的。

仅作为示例,能够通过计算任意mac并且在该mac的输出上应用密码哈希函数(仅作为示例,sha-256),以及采用哈希函数的输出的最后比特,获得一比特mac。此外,在基于aesmac中,仅作为示例,可以采用输出的任何比特作为最后比特。

因此,给定密钥k,如下运行方法200:

步骤202:生成主mac密钥km。步骤204:针对k的每个比特i,1<=i<=n,让对应的第i个验证比特是一比特authi=mac{km}(msg-id|i|k[i])。

步骤206:向密钥k的持有者提供验证比特。注意的是,在一个实施例中,客户端接收这些验证比特,并且随后能够承担证明者的作用,使用这些比特,以证明k的对应的比特是真实的。

步骤208:向希望验证k的提交的比特的任何方(即,验证器)提供mac密钥km。

步骤210:当持有密钥k的一方(即密钥持有者)提交(可能改变的)比特k’i时,该方也将提交(可能改变的)比特auth’i。验证器计算auth”i=mac{km}(k’i),并且只有auth”i=auth’时,才接受(向系统提供成功验证的指示)。注意的是,因此k’i声称是ki。

步骤212:如果不允许验证器获知k’i(如在说明性的私有数据库系统设置中)并且在gc内部执行评估,则验证器将ki的可能值和对应的认证符(authi值)输入到gc中。

步骤214:然后,在gc内部,执行验证操作以确定至少一对匹配。验证计算可以被实现为在使用gc执行的安全计算中的子例程作为底层技术。特别地,如果由证明者(例如,客户端)提供的<密钥比特,auth比特>对与由验证器(例如,服务器能够托管验证操作,从而是验证器)提供的两个可能的对(即,<0,auth0>,<1,auth1>)中的一对匹配,则安全计算输出‘接受’。

观察到的是,如果密钥持有者是诚实的(即,不是敌对者),则k”i=ki。否则,如果k’i或auth’i被修改(即,被敌对者修改),则有0.5的概率,输出比特k”i等于ki。特别地,有0.5的概率,任何尝试改变密钥的特定比特将导致不正确的mac。

有利地,说明性实施例促进了在私有数据库系统中的重要特征,即,高效地验证长字符串的任何比特的正确性,同时允许对验证器隐藏验证比特。这是期望的,因为未授权的字符串修改可能导致私有数据库系统中的隐私保证失灵。在时间方面上,现有的解决方案代价是非常高的,例如在一秒的量级上,与之相比,本文中描述的一比特mac方法是毫秒量级的。

将理解的是,尽管本文中描述的说明性实施例提供了针对消息(例如异或加密密钥)的每个比特生成各自mac,但是可替代的实施例提供针对小于消息的每个比特生成各自mac。例如,在消息包括n个比特的情况下,可以针对n-x个比特的每个比特生成各自mac,其中x是多个比特(例如,1,2,3,…)(针对x,将不生成mac),这种针对那些特定比特不生成mac将不会显著地影响本文中描述的密码保护技术的益处中的一个或多个益处。

此外,将理解的是,尽管在本文中,比特被说明为用于定义消息的长度的最小测量单元(即,其中消息包括多个比特),但是更一般地,消息可以包括多个单元,从而导致生成各自的多个一单元mac。除了比特之外,单元的一个示例包括但不限于多个比特单元,其中消息包括多个此类多比特单元(针对它们,生成各自多个mac)(即,针对消息的每个多比特单元的各自mac)。

现在参照图3,示出了处理平台,在该处理平台上实现根据一个或多个实施例的具有保护的异或加密的系统(例如,实现图2中的方法200的图1中的系统100)(例如,私有数据库系统)。在这个实施例中的处理平台300包括多个处理设备,其被表示为302-1、302-2、302-3、…、302-p,它们通过网络304彼此通信。因此,私有数据库系统100的组件和/或模块中的一个或多个组件和/或模块(例如,客户端110、服务器120、协议模块140、和没有明确示出的各种其它模块)每个可以在一个或多个计算机或其它处理平台元件上运行,它们中的每个可以被视为在本文中更一般地被称为“处理设备”的示例。如在图3中说明的,此类设备一般包括至少一个处理器和相关联的存储器,并且实现一个或多个功能模块以用于实例化和/或控制系统的特征和本文中描述的方法。在给定的实施例中,可以由单个处理设备来实现多个元件或模块。

在处理平台300中的处理设备302-1包括:耦合到存储器312的处理器310。处理器310可以包括:微处理器、微控制器、专用集成电路(asic)、现场可编程门阵列(fpga)或其他类型的处理电路,以及此类电路元件的一部分或组合。如本文中公开的系统的组件可以至少被实现在存储在存储器中并且被诸如处理器310的处理设备的处理器执行的一个或多个软件程序的形式。在其中包含了此类程序代码的存储器312(或其它存储设备)是在本文中一般被称为处理器可读存储介质的一个示例。包括此类处理器可读存储介质的制造品被认为是实施例。给定的此类制造品可以包括:例如,诸如存储盘的存储设备,存储阵列或包含存储器的集成电路。如本文中使用的词语“制造品”应当被理解为不包括短暂性的传播信号。

此外,存储器312可以包括:电子存储器,诸如随机访问存储器(ram),只读存储器(rom)或在任何组合中的其他类型的存储器。当由诸如处理设备302-1的处理设备运行一个或多个软件程序时,它们使得设备执行与系统100和方法200的组件/步骤中的一个或多个组件/步骤相关联的功能。给定本文中提供的教导,本领域的技术人员将能够容易实现此类软件。具体化实施例的处理器可读存储介质的其它示例可以包括:例如,光盘或磁盘。

在处理设备302-1中也包含网络接口电路314,其用于使处理设备与网络304和其它系统组件进行接口。此类电路可以包括:本领域众所周知类型的常规收发器。

处理平台300的其它处理设备302被认为以类似于针对图中的处理设备302-1而示出的方式而被配置。

在图3中示出的处理平台300可以包括:另外已知的组件,诸如批处理系统、并行处理系统、物理机器、虚拟机、虚拟交换机、存储卷、逻辑单元等。此外,仅作为示例而给出图3中示出的特定处理平台,以及图1的私有数据库系统100可以包括:另外的或可替代的处理平台,以及在任何组合中的多个不同的处理平台。

此外,客户端、服务器、计算机、存储设备或其它组件的多个其它布置是可能的。此类组件可以通过任何类型的网络(例如,图1中的网络130和/或图3中的网络304)(诸如广域网(wan)、局域网(lan)、卫星网络、电话或电缆网络、存储网络、聚合网络、或这些和其它类型的网络的各种部分或组合)与系统的其它元件通信。

尽管在使用特定通信协议的系统和网络的上下文中描述了某些说明性实施例,但是在其它实施例中可以使用其它类型的系统和网络。如上所述,因此,如本文中使用的词语“系统”和“网络”旨在被广泛地解释。此外,应当强调的是,上述实施例仅用于说明的目的,不应当以任何方式被解释为限制含义。其它实施例可以使用不同类型的网络、设备和模块配置,以及可替代的通信协议、过程步骤和操作以用于实现保护的密码(例如,异或加密)功能。在其它实施例中,网络节点通信的特定方式可以变化。此外,应当理解的是,在描述说明性实施例的上下文中做出的特定假设不应当被解释为本发明的要求。本发明可以被实现在这些特定假设不应用的其它实施例中。对于本领域的技术人员而言,在所附权利要求书的范围内的这些和许多其它可替代的实施例是非常明显的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1