一种针对密文数的运算方法及系统与流程

文档序号:12477515阅读:483来源:国知局

本发明属于信息安全领域,特别是一种针对密文数的运算方法及系统。



背景技术:

同态加密(homomorphic encryption)能在不对被加密的数(number)解密的情况下,通过对被加密的数的密文(即密文数,ciphertext number)的运算即可实现对密文的原数(即明文数,plaintext number)的运算,比如,设E是加密函数,D是解密函数,x、y是加密前的数(明文数),如果存在有效算法⊕(同态加密加法)使得:E(x+y)=E(x)⊕E(y),或x+y=D(E(x)⊕E(y))成立,则此加密算法E是加法同态加密算法;如果存在有效算法⊙(同态加密乘法)使得:E(x×y)=E(x)⊙E(y),或者 x×y=D(E(x)⊙E(y))成立,则此加密算法E是乘法同态加密算法。

同态加密算法又分为全同态加密算法和部分同态加密算法。所谓全同态加密算法即同时支持加、减、乘、除同态加密运算的同态加密算法,而所谓部分同态加密算法即仅支持加、减、乘、除中部分同态加密运算的同态加密算法,如仅支持加法或减法同态加密运算的同态加密算法。相对于全同态,部分同态加密算法比较简单,但支持的同态加密运算有限;全同态加密算法虽然支持的同态加密运算多,但很复杂。目前虽然有全同态加密算法,但由于其太复杂,离实际应用相差很远。

同态加密算法的重要用途之一是云计算,而云计算中使用同态加密算法的目的是在不泄漏参与运算的数的情况下,实现数的运算;实际上,只要能实现此目的,其实是否采用同态加密算法、采用怎样的同态加密算法并不重要;进一步地,可以注意到利用云计算平台进行资源委外(outsourcing) 的企业、机构大多也不会单独维护、运行自己的密码设备进行数据加密、解密(否则与其资源委外的策略相矛盾),而是同样会通过资源委外方式使用密码服务提供商提供的密码服务(进行数据加密、解密),因此,对于云计算中运算数的安全保护可以充分利用此一特点。



技术实现要素:

本发明的目的,在于结合云计算的安全需求和特点,提出一种不使用全同态加密算法就能在不泄漏参与运算的数的情况下,实现数的各种代数运算的方案。

为了实现上述目的,本发明的技术方案是一种针对密文数的运算方法,所述方法具体如下:

所述密文数是经加法同态加密算法加密后的数;所述针对密文数的运算是指针对密文数加密前的原数即明文数的代数运算,并得到运算结果的密文数;

当一个计算组件或装置进行包含密文数的代数运算时,计算组件或装置先从要运算的数导出n组数,每组数中包含有密文数(当然每组数中也许还包含明文数),然后将n组数分别提交到n个密码服务器请求进行对应的代数运算;

n个密码服务器接收到每组数后,分别解密其中的密文数,然后分别利用解密后的明文数进行计算组件或装置要求的代数运算,并将计算结果(经同态加密后)的密文数返回给计算组件或装置;

计算组件或装置接收到n个密码服务器返回的密文数结果后,利用同态加密的加法运算得到最后的运算结果;

所述从要运算的数导出的n组数的特征是每个密码服务器无法从接收到的一组数中恢复出计算组件或装置进行代数运算时包含的密文数或密文数加密前的明文数;

所述n大于或等于2,所述n在每次计算时不必相同(根据需要确定)。

为了防止密码服务器合作作弊恢复出计算组件或装置进行运算时包含的密文数或密文数对应的原明文数,计算组件或装置除了将导出的n组数提交给n个密码服务器外,还将多组用于迷惑的数分别提交给多个密码服务器,对于密码服务器利用用于迷惑的数计算得到的结果,计算组件或装置将其丢弃。

从以上描述并结合实施例可以看到,基于本发明的方案,仅使用加法同态加密算法即可实现密文数的各种代数运算,包括乘、除和幂运算(以及加法同态加密算法本身的同态加、减运算);在运算过程中,参与运算的密文数对应的原数本身是不会以明文形式出现的,所有出现在密码服务器、并被密码服务器解密的密文数并非参与运算的原始密文数,而是导出的密文数,只要不出现密码服务器合作作弊的情况,就可以避免原始密文数对应的明文数被泄露;在云计算应用中,基于如下安排和措施,可以有效避免密码服务器合作作弊的发生:

1)通过密码服务器提供在线密码服务的机构是与提供云计算服务不同的、由国家有关主管部门授权的机构;国家对提供密码服务的机构有严格的管理规定和监管措施(这是一个特殊的、严格管理的行业),若有违规、违法情况的发生,将遭受国家主管部门的严厉处理,因此,提供密码服务的机构进行作弊的可能性很低;

2)计算组件或装置除了将必要的n组数提交给n个密码服务器外,还可以发送额外的迷惑数据给多个密码服务器,进一步地,在云计算环境下,同一时刻会有大量并发计算发生,密码服务器要从大量的、包含迷惑数据的计算数据中恢复出原始密文数是很困难的,或者几乎不可能的;

3)接入云计算平台的密码服务器可以来自不同的密码服务提供机构,多个密码服务机构合作作弊的可能性更小。

故此,基于本发明的方案,可以在不使用全同态加密算法、不泄漏参与运算的数的情况下实现密文数的代数运算,包括乘、除和幂运算(当然,还包括加法同态加密算法本身的同态加、减运算)。

附图说明

图1 为本发明的密文数计算系统的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的描述。

本发明的具体实施首先是选择一个合适的加法同态加密算法,这种算法有很多,实施者可以根据需要选定。

在加法同态加密算法的基础上,针对乘运算中乘数的不同情况、除运算中被除数和除数的不同情况,本发明的具体实施方式如下。

实施例1:一个密文数乘以一个明文数

具体实施方式如下:

当一个计算组件或装置对一个密文数和一个明文数进行乘运算时,计算组件或装置先将密文数分解为n个密文数的同态加密加法和,然后以分解后的n个密文数中的每个密文数与要进行乘运算的明文数为一组形成n组数,然后将n组数分别提交到n个密码服务器请求进行乘运算;

n个密码服务器接收到每组数后,分别解密其中的密文数,然后分别用密文数解密后得到的明文数与接收到的明文数进行乘运算,并将计算结果用加法同态加密算法加密后返回给计算组件或装置;

计算组件或装置接收到n个密码服务器返回的密文数结果后,利用同态加密的加法运算得到最后的运算结果。

实施例2:一个密文数除以一个明文数

具体实施方式如下:

当一个计算组件或装置进行一个密文数除以一个明文数的除运算时,计算组件或装置先将密文数分解为n个密文数的同态加密加法和,然后以分解后的n个密文数中的每个密文数与作为除数的明文数为一组形成n组数,然后将n组数分别提交到n个密码服务器请求进行除运算;

n个密码服务器接收到每组数后,分别解密其中的密文数,然后分别用密文数解密后得到的明文数除以作为除数的明文数,并将计算结果用加法同态加密算法加密后返回给计算组件或装置;

计算组件或装置接收到n个密码服务器返回的密文数结果后,利用同态加密的加法运算得到最后的运算结果。

实施例3:一个明文数除以一个密文数

具体实施方式如下:

当一个计算组件或装置进行一个明文数除以一个密文数的运算时,计算组件或装置先用一个随机明文数乘以被除数明文数(作为被除数的明文数),形成新的被除数明文数,用所述针对密文数的运算方法计算除数密文数(作为除数的密文数)乘以同一个随机明文数,如用实施例1,形成新的除数密文数,然后将新的被除数明文数分解为n个明文数的和,分解后的n个明文数称为新的被除数明文数的分量,然后以分解后的n个新的被除数明文数的分量中的每个分量与新的除数密文数为一组形成n组数,然后将n组数分别提交到n个密码服务器请求进行除法运算;所述随机明文数是一个随机生成的数;

n个密码服务器接收到每组数后,分别解密其中的新的除数密文数,得到新的除数明文数(作为除数的明文数),然后分别用接收到的新的被除数明文分量除以解密得到的新的除数明文数,并将计算结果用加法同态加密算法加密后返回给计算组件或装置;

计算组件或装置接收到n个密码服务器返回的密文数结果后,利用同态加密的加法运算得到最后的运算结果。

实施例4:一个密文数乘以一个密文数

具体实施方式如下:

当一个计算组件或装置对两个密文进行乘运算时,计算组件或装置先将两个密文数分别分解为p个和q个密文数的同态加密加法和(一个密文数是p个密文数的同态加密和,另一个是q个密文数的同态加密和),然后分别从分解后的p个密文数和q个密文数中各选一个密文数作为一组数,共形成n=p×q组数,然后将n组数分别提交到n个密码服务器请求进行乘运算;所述p、q大于或等于2;

n个密码服务器接收到每组数后,分别解密其中的两个密文数,然后分别用解密后得到的两个明文数进行乘运算,并将计算结果用加法同态加密算法加密后返回给计算组件或装置;

计算组件或装置接收到n个密码服务器返回的密文数结果后,利用同态加密的加法运算得到最后的运算结果。

实施例5:一个密文数除以一个密文数

具体实施方式如下:

当一个计算组件或装置对两个密文数进行除运算时,计算组件或装置先将作为被除数和除数的两个密文数分别乘以同一个随机明文数,如用实施例1,形成新的被除数密文数和除数密文数,然后将新的被除数密文数分解为n个密文数的同态加密加法和,分解后的n个密文数称为新的被除数密文数的分量,之后将分解后的n个新的被除数密文数的分量中的每个分量与新的除数密文数形成一组数,共形成n组数,然后将n组数分别提交到n个密码服务器请求进行除运算;

n个密码服务器接收到每组数后,分别解密其中的两个密文数,然后分别用新的被除数密文数的分量解密后得到的明文数除以新的除数密文数解密后得到的明文数,并将计算结果用加法同态加密算法加密后返回给计算组件或装置;

计算组件或装置接收到n个密码服务器返回的密文数结果后,利用同态加密的加法运算得到最后的运算结果。

进一步地,基于本发明的方法可以计算一个密文数的幂。

利用实施例4可计算一个密文数的正整数幂:重复应用实施例4完成同一个密文数的多重乘积。

利用实施例4和实施例3可计算一个密文数的负整数幂:利用实施例4计算密文数的正整数幂,然后利用实施例3计算密文数的正整数幂的倒数。

再进一步地,基于本发明的运算方法能实现一个密文数的任意幂运算(包括整数幂和非整数幂),具体如下:

当一个计算组件或装置对一个密文数进行幂运算时(包括整数幂和非整数幂),计算组件或装置先将密文数乘以一个随机数明文数,如用实施例1,形成新的密文数,然后将新的密文数提交到一个密码服务器请求进行幂运算;

密码服务器接收到新的密文数后,解密新的密文数,然后对解密获得的明文数进行幂运算,并将计算结果用加法同态加密算法加密后返回给计算组件或装置;

计算组件或装置接收到密码服务器返回的密文数结果后,利用所述针对密文数的运算方法,将密码服务器返回的密文数除以前述随机数明文数的幂(同样的幂),如用实施例2,从而得到最终的密文数的幂运算的结果。

以上实施例涉及将一个密文数分解为多个密文数的同态加密加法和,为此,实施选择的加法同态加密计算需同时支持同态加密加运算和同态加密减运算(大部分的加法同态加密算法同时支持同态加密加、减运算),而计算组件或装置将一个密文数分解为n个密文数的同态加密加法和的一种方法如下:

生成n-1个随机数,用加法同态加密算法分别加密得到n-1个随机数的密文数,并计算得到n-1个随机数之和的密文数;

用加法同态加密算法的同态加密减运算,计算待分解的密文数对应的明文数减去n-1个随机数之和所得到的差的密文数,此计算得到的差的密文数以及n-1个随机数加密后的密文数即是分解获得的n个密文数。

对于将一个明文数分解为n个明文数的和,也可以采用类似的方式:生成n-1个随机数,用待分解的明文数减去n-1个随机数的和,此相减得到的结果以及n-1个随机数即是明文数分解后的n个明文数。

进一步地,针对本发明的所述针对密文数的运算方法可以构建或实施一个密文数计算系统,此密文数计算系统包括:计算组件或装置、多个密码服务器,如图1所示,其中:

计算组件或装置:一个对经加法同态加密算法加密的密文数进行代数运算的组件或装置;

密码服务器:接收计算组件或装置提交的运算请求,解密请求中的密文数,完成计算组件或装置请求完成的运算,并将运算结果用加法同态加密算法加密后返回给计算组件或装置的装置;

计算组件或装置以及密码服务器按前面所述针对密文数的运算方法完成针对密文数的代数运算;密码服务器的数量不少于执行所述针对密文数的运算方法所需的密码服务器的数量。

其他未说明的具体技术实施,对于相关领域的技术人员而言是众所周知,不言自明的。

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