CN104620533B - 用于数据库查询的同态加密 - Google Patents
用于数据库查询的同态加密 Download PDFInfo
- Publication number
- CN104620533B CN104620533B CN201380043719.7A CN201380043719A CN104620533B CN 104620533 B CN104620533 B CN 104620533B CN 201380043719 A CN201380043719 A CN 201380043719A CN 104620533 B CN104620533 B CN 104620533B
- Authority
- CN
- China
- Prior art keywords
- ciphertext
- sub
- key
- database
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims abstract description 104
- 239000000654 additive Substances 0.000 claims description 14
- 230000000996 additive effect Effects 0.000 claims description 14
- 238000004364 calculation method Methods 0.000 claims description 6
- 230000014509 gene expression Effects 0.000 description 37
- 230000006870 function Effects 0.000 description 19
- 239000003795 chemical substances by application Substances 0.000 description 18
- 230000008901 benefit Effects 0.000 description 15
- 230000002776 aggregation Effects 0.000 description 7
- 238000004220 aggregation Methods 0.000 description 7
- 241000153282 Theope Species 0.000 description 5
- 230000001010 compromised effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 241000700605 Viruses Species 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 230000004931 aggregating effect Effects 0.000 description 3
- 230000004927 fusion Effects 0.000 description 3
- 101100217298 Mus musculus Aspm gene Proteins 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
- 230000009385 viral infection Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本公开涉及用于数据库查询的同态加密。使用密钥(图6)和随机数(图7)来加密数值(图5)以产生密文。该密文是同态的且其包括两个或更多个子密文(图8)。基于加法(图10)、平均(图11)和乘法操作的查询可以在不对与该查询相关的数值进行解密的情况下执行。每一子密文(图8)存储在单个记录中且在单独的属性中。公开了加密(402)和解密、创建适合的表(400)、查询这样的数据库(412)以及更新这样的数据库(408、410)的方法。
Description
技术领域
本公开涉及用于数据库查询的同态加密。
本公开包括用于对要存储在数据库中的数值进行加密、对数据库中存储的密文进行解密、对存储密文的数据库执行聚合和乘法查询、在数据库中创建表格以存储密文、以及插入包括密文的记录的计算机实现的方法。
其他方面包括数据库、软件和计算机系统。
本领域的技术人员(除了其他的以外)已经知道通用计算机系统,包括硬件和软件。
背景技术
在诸如金融应用和医疗电子健康应用之类的许多应用中,数据库是集成的部分。数据库可能非常敏感,其包含对企业或个人有价值的数据。对个人、企业和政府而言,偷窃敏感数据越来越受到关注。
通过使用诸如Oracle Database、MySQL、Microsoft SQL Server等之类的数据库管理系统(DBMSs)来管理数据库。数据库可以部署在企业内的服务器上、云中的虚拟服务器上、或云中的DBMS服务上。对于部署的每一种类型,数据偷窃都是关注点。
当在企业的经营场所内的服务器上部署数据库时,服务器物理上在企业的控制之下。如果服务器受到恶意软件或病毒的入侵或感染,则攻击者可能能够通过绕过任何企业访问控制机制,来访问原始数据库数据文件并偷窃数据。在另一方面,由于企业中的数据库管理员能够访问所存储的数据以执行数据库管理任务,因此其有机会(故意地或者意外地)违反数据的隐私和完整性。
数据库系统也可以被企业部署在虚拟服务器上,其运行在像Amazon ElasticCompute Cloud(Amazon EC2)的云上。在该情况下,在数据库底层的虚拟服务器在物理上处于云提供商的控制之下,且企业在虚拟服务器上安装DBMS来管理其数据库。类似于上面的情况,在该情况下,如果云基础设施被攻击者入侵、被恶意软件或病毒感染,则也会发生数据偷窃,且企业数据库管理员可能违反数据库的隐私和完整性。此外,如果云提供商不值得信任,则他们可以偷窃在他们所提供的虚拟服务器中的数据库数据。
当前存在由云提供商提供的DBMS服务,例如Amazon Relational DatabaseService(Amazon RDS)和Micros SQL Azure Database。通过使用DBMS服务,企业可以将其数据库放入云上的虚拟DBMS中。在该情况下,企业无需购买并安装其自身的DBMS软件,且可以减少雇佣高技能的数据库管理员(DBA)的成本。云提供商负责数据库系统的管理、升级和性能调优。类似地,如果入侵了数据库服务,则攻击或病毒感染可以偷窃数据。此外,由于数据库直接在云提供商的管理之下,则提供商仅通过使用标准的数据库访问接口就可以容易地偷窃企业数据。
针对数据库的数据偷窃问题的直截了当的方法是对数据库中的数据进行加密。即,数据在被存入数据库中时被加密,或整个数据文件被加密,如Microsoft SQL Server2008和Oracle 10g Database所允许的。以此方式,可以保护数据库中的数据不受入侵服务器的攻击者和数据库管理员(如果他们不知道加密密钥)的危害。但是,在加密之后,在Microsoft SQL Server 2008和Oracle 10g数据库中不再可以直接查询数据库了,或者在执行查询之前不得不先解密数据。
发明内容
在第一方面,提供了一种计算机实现的方法,其用于加密要存储在数据库中的数值,该方法包括:
使用加法同态加密确定针对数值的密文,其中密文包括两个或更多个子密文;以及
使每一子密文单独地并在单个记录中存储在数据库中。
一优点是,数字(纯文本)值不被加密为单个密文。任何用于确定数值的密文或纯文本攻击将需要解密使加密方法健壮的多个子密文。此外,在不访问数据库模式的情况下(通过使用适当的不提供信息的名称,这可能会混淆例如数据库的表的属性的本质),恶意的第三方可能不知道多少子密文或哪个子密文表示哪个纯文本值。
此外,单独存储子密文意味着子密文也与记录中的其他值分开存储。这提供了更大的灵活性,包括对包含记录的特定值执行查询的能力,而无需解密整个记录。
重要的是,另外的优点是加密是加法同态的。这允许在不解密密文的情况下,对数据库中的数值执行聚合查询,例如使用求和和平均操作的查询。
该加法同态加密也可以是乘法同态。
确定密文的步骤可以是基于包括一组密钥分量的密钥的,其中在该组密钥分量中的密钥分量的数目等于子密文的数目。
每一密钥分量可以包括一个或多个子分量,且密钥或每一密钥子分量可以是加密密钥。
一优点是,使用多个密钥分量使加密方法对密文或纯文本攻击而言是健壮的。更多的子密文意味着使用更多的密钥,且继而加密更安全。另一优点是,可以在不增加每一子密文的存储大小的情况下增加加密的健壮性。
每一密钥分量可以基于包含密文的子密文的数目。
该方法还可以包括:
基于子密文的数目确定该组密钥分量。
一优点是,该方法适合用于包括大量子密文的两个或更多的子密文。
密钥可以满足以下等式:
其中,
V是该值,
n是子密文的数目,
K(n)是密钥,
fi是密钥的第i个函数,且
Valuei是K(n)和V的第i个函数。
fi和Valuei可以相对于n具有线性的时间复杂度。
确定密文可以包括确定用于满足以下等式的子密文:
其中,
V是该值,
n是子密文的数目,
K(n)是密钥,
fi是密钥的第i个函数,且
Vi是第i个子密文。
fi可以相对于n具有线性的时间复杂度。
一优点是,本实施例不需要知道所有可能的输入的最大和,且适合用于现有数据库中而无需修改,且其中无需限制聚合值。还有一优点是,在加密时无需知道要添加到数据库的记录的数目,且可以被添加到数据库的密文记录的数目可以任意大。不使用减小加密方法的健壮性和对密文执行的查询的准确性的取模(modulo)或地板算术(floorarithmetic)操作来获得该优点。
确定密文可以包括确定满足以下等式的子密文:
Vi=Valuei(K(n),V)+Noisei(K(n),R)
其中,
V是该值,
n是子密文的数目,
K(n)是密钥,
R是一组随机数,
Vi是第i个子密文,
Valuei是K(n)和V的第i个函数,且
Noisei是K(n)和R的第i个函数。
Valuei和Noisei相对于n可能具有线性的时间复杂度。
每一子密文可以包括将第一结果和第二结果相加,其中第一结果是基于与该子密文相关联的密钥和数值的函数的值,且第二结果是基于与该子密文相关联的密钥和一个或多个随机数的函数的值。
这两个函数都可以相对于子密文的数目具有线性时间复杂度,即这些函数相对于子密文的数目不成指数时间复杂度,从而可扩展以增加子密文数目。
确定密文可能与密钥的存储大小在复杂度上成线性。
确定每一子密文可以基于数值和密钥的乘法(或除法)。与也由该方法加密的、每个与不同密钥相关联的其他数值相比,该密钥对于该数值而言可以是唯一的。
每一子密文可以基于整个数值或根本不基于数值。在确定子密文时,没有数值的总计(summary)、取整(rounding)或子部分(sub-part)。
每一子密文可以独立于数值的其他子密文。即,子密文不用于确定数值的其他子密文。
该方法还可以包括以下步骤:
确定一组随机数分量;
其中确定密文的步骤还基于该组随机数分量。
随机数分量可以包括一个或多个随机数。
一优点是,由随机数将噪声引入密文中,使产生的密文难以破解。在该情况下,使用的子密文越多,随机数越多,则继而加密越安全。
确定密文的步骤可以基于包括一组密钥分量的密钥,其中该组密钥分量中的密钥分量的数目等于子密文的数目,且确定该组随机数分量的步骤包括确定满足如下等式的一组随机数:
其中,
n是子密文的数目,
K(n)是密钥,
fi是密钥的第i个函数,
R是一组随机数分量;且
Noisei是K(n)和R的第i个函数。
fi和Noisei相对于n可能具有线性的时间复杂度。
至少一些实施例的优点是,通过遵守正确性条件,该方法是可定制的,即用户可以定义满足上文的公式的特定同态加密算法。
该等式可能是可组合的且该方法还包括:
将加密的方法的一个或多个实例的加密的方法的密钥融合,以创建
该加密的方法的新的实例。
该数据库在包括属性的结构中可以存储值,且使每一子密文被存储的步骤还包括在单独的属性中存储每一子密文。
一优点是,标准数据库结构可被用于存储密文。因而,由于无需扩展或改变当前的数据库管理系统,从而避免了使用特殊设计的存储结构,且仍然可以使用使用数据库的标准协议。
每一子密文具有数值类型。
数据库可以是关系数据库。
可以重复该方法以使多个数值的密文存储在数据库中,其中每一密文作为单独的记录存储在单个数据库中的相同的表或相关的表中。
由于该加密方法对于选择密文或纯文本的攻击是健壮的,所以一优点是,不同且相关的值的密文可以存储在单个数据库中且避免了扩展不同数据库之间的密文以提高加密的健壮性的需要。
每一子密文可以存储在数据库中作为数值类型。一优点是,子密文不会太大而不能被存储为数值。通过将子密文存储为数值,允许类似于要对那些子密文执行的求和以及平均这样的操作。
在第二方面,提供了软件,其是存储在计算机可读介质上的计算机可读指令,该指令当由计算机执行时使计算机执行前述权利要求中任何一项的方法。
在第三方面,提供了一种用于加密要在数据库中存储的数值的计算机系统,其包括:
处理器,用于使用加法同态加密确定针对该数值的密文,其中该密
文包括两个或更多个子密文;且用于使每一子密文单独地且在单个记录
中存储在数据库中。
该方法可以由安全管理系统执行,该安全管理系统与数据库和由用户使用以查询数据库的客户端应用进行通信。
在又一方面,提供了一种记录在计算机可读介质上的数据库,其中该数据库存储具有两个或更多属性的记录,其中每一记录包含表示数值并使用加法同态加密确定的密文,该密文被存储在记录中作为两个或更多个子密文,且每一子密文被存储在不同的属性中。
数值也可以表示成第二密文,第二密文与原始密文不同。数据库还可以包括用于存储第二密文的子密文的第二组属性。一优点是,密文形式的数值的冗余拷贝被存储意味着可以使用第二版本来验证对原始密文的任何处理,例如查询。
数据库可以由数据库管理系统(DBMS)管理。
在另外的方面,提供了一种用于对存储在数据库中的密文进行解密的计算机实现的方法,该方法包括:
接收或访问使用加法同态加密来确定的密文,其中该密文表示数值且其包括两个或更多个子密文;以及
基于每一子密文且使用包括一组密钥分量的加密密钥来解密该密文,其中密钥分量的数目与密文的数目相同。
在合适的情况下,该解密的方法可以满足上文陈述的公式。
上述方法的另外的方面包括计算机系统和软件。
另一方面提供了一种计算机实现的方法,其用于对数据库执行聚合查询,其中查询的每一数值对象被存储为使用加法同态加密确定的密文,该密文包括单独存储在记录中的两个或更多个子密文,且记录的每一子密文与不同的属性关联,该方法包括:
对于每一属性,聚合与该属性相关联的每一子密文以确定加密的聚合值;以及
通过聚合每一加密的聚合值确定针对该查询的加密答案。
聚合可以通过求和计算或平均值计算。每一加密的聚合值可以任意大。
上文的方法还包括:
基于用于对该查询的所有数值对象进行加密的密钥来解密针对查询的加密的答案。
上文的方法还可以包括:
基于用于对该查询的所有数值对象进行加密的随机数来解密针对查询的加密答案。
上文的方法的另外的方面包括计算机系统和软件。
另一方面提供了一种计算机实现的方法,其用于执行基于乘法的对数据库的查询,其中该查询的每一数值对象被存储为使用乘法同态加密确定的密文,该密文包括单独存储在记录中的两个或更多个子密文,该方法包括:
针对该查询的每一对数值对象,执行该对数值的子密文的外积,以确定加密的相乘值。
基于用于对该查询的所有数值进行加密的密钥来解密针对该查询的加密的答案。
该方法还可以包括聚合加密的相乘值。这可以通过上文所描述的方法。
该方法还可以包括以上文描述的方式乘以聚合的加密的相乘值。上文的方法的另外的方面包括计算机系统和软件。
在另一方法中,提供了一种计算机实现的方法,其在数据库中创建表以存储表示数值并使用加法同态加密确定的密文,其中每一密文包括两个或更多个子密文,其中该方法包括:
创建两个或更多个属性,以每一个存储每一密文的不同子密文;
其中子密文的数目与所创建的属性的数目相同。
用于确定存储在属性中的每一子密文的加密方法可以是相同的但是通常具有不同的参数,例如密钥值和随机数值。
表中的属性的顺序可以被随机化。
该表可能与表名称相关联,且该方法还可以包括存储表名称的加密版本。
每一属性可以与属性名称相关联,且该方法还可以包括针对每一属性存储相关联的属性名称的加密版本。
上文的方法的另外的方法包括计算机系统和软件。
在另外的方面提供了一种将记录插入到数据库的表中的计算机实现的方法,该记录包括表示数值并使用加法同态加密确定的密文,其中该密文包括两个或更多子密文,其中该方法包括:
将记录插入到数据库中,其中每一子密文存储在不同的属性中。
上文的方法的另外的方面包括计算机系统和软件。
第一方面的可选特征也是(在适当的情况下)也在此描述的其他方面的可选特征。
附图说明
现在将参考下面的附图来描述非限制性的示例,其中:
图1至图3示出了DBMS的不同部署(应用环境);
图4是示出加密的方法的流程图;
图5提供了5个数值;
图6提供了包括加密密钥的示例密钥组件值;
图7提供了一组示例的随机数值;
图8至图11示出了使用在图5至图7中的值的加密、解密和查询方法的第一实例;
图12至图15示出了使用在图5至图7中的值的加密、解密和查询方法的第二实例;
图16至图19示出了使用在图5至图7中的值的加密、解密和查询方法的第三实例;以及
图20示出了调整记录/元组内的分享以适应表的随机属性/列。
具体实施方式
介绍
该示例描述了技术的使用,包括云计算,其应用到许多区域或领域,其使用数据库来包含敏感数据,例如银行中的金融数据库、医院和保险公司中的健康记录数据库、军事和政府数据库、以及在云上外包和部署的其他数据库。根据该示例,数据库是安全的,即使当数据库底层的服务器受到攻击者的入侵、被恶意软件或病毒感染、或甚至由不信任的数据库管理员或数据库服务提供商管理时。
在该示例中,这一点通过用于在一个或多个数据库中加密数值并对加密的数据直接执行查询的同态加密方法和系统来实现。具体地,在该示例中提供了有效地执行和(SUM)和平均值(AVG)的聚合操作,且不改变或扩展当前的DBMS。该示例还包括验证查询结果的完整性的方法。
在该示例中,将数值(纯文本)加密到密文中,其中密文由多个部分组成,上述多个部分中的每一部分称为子密文(秘密分享(secret share))。由加密密钥来确定分享的数目。可以将秘密分享存储到数据库表中的不同属性(列)中但是在相同的元组(当在数据库中执行时的记录)中。每一分享包括噪声(随机数),使得相同的数值被加密到不同的密文中,从而使得加密健壮以对抗选择纯文本的攻击和选择密文的攻击。加密方案的安全性只取决于加密密钥的保密性。
为了对加密的值进行解密,该方法指示DBMS将该值的所有的秘密分享返回。将这些分享与秘密密钥组合允许将加密的值从分享解密。
为了对一个表记录或属性执行SUM和AVG的聚合操作,该方法指示DBMS单独对属性的每一相关的分享列来执行SUM或AVG操作,并且然后如果已知秘密密钥,则可以从聚合分享的和或者平均值解密所期望的和或者平均值。
为了对两个属性值执行乘法,该方法指示DBMS计算子密文的两个向量的外积,其中的每一个与一个属性值的密文对应,且然后如果已知秘密密钥,则可以从外积解密乘积。属性值的乘积可以被进一步聚合。
该示例还提供了对查询结果的完整性的验证,所述查询结果包括SUM和AVG的结果。这涉及将值存储到冗余拷贝中,其中每一拷贝在数据库表中具有其加密的分享。对每一拷贝执行查询,且然后通过比较每一拷贝上的结果来验证其结果,如果上述结果底层的分享没有被篡改,则所述结果应该相等。
在该示例中,通过以本领域的技术人员理解的方式定义数据库模式(表及其属性)来设计数据库。但是,当在DBMS中实现数据库设计时,创建了表及其属性,其中无意义的散列值作为其名称。此外,设计中的属性通常被实现成若干属性,其中的每一个对应于:由加密方案生成的秘密分享或用于支持具有相等或不相等比较的查询的索引。以此方式,该实现中的数据库模式(表及其属性)在设计中不泄漏关于数据库的任何信息。
此外,在该示例中,当查询数据库时,仍然是基于设计中的数据库模式来制定查询。由于DBMS所看见的数据库模式是不同的,所以这样的查询不能直接由DBMS执行。该示例包括一种将基于设计中的数据库模式制定的查询重新写为可以在加密的数据库(在其中模式被散列)上直接执行的一个查询或多个查询的方法。在将结果返回数据库应用之前,通过使用该示例的方法来处理和验证来自DBMS的查询结果。
示例部署
本领域的技术人员将明白可以部署许多不同的计算系统来支持DBMS。在此我们提供了这样的计算系统的三个示例。在第一个部署(应用)环境中,企业使其数据库在DBMS中管理,其运行在物理上在企业内维护的服务器上,如图1中所示出的。在第二个应用环境中,企业仍然具有其自身的DBMS,但是其运行在云中的虚拟服务器上,如图2中所示出的。即,服务器未处于企业的物理控制下。在第三个环境中,企业在云中设置的DBMS服务上维护其数据库,如在图3中所示出的。现在将更详细地描述这三个计算系统。
在图1中,服务器108位于企业100的管理界限之内,所述企业还管理多个机器客户端101和安全管理机器103。在此,机器被理解为任何适当的计算系统。客户端101运行数据库应用102。为了执行查询(包括数据库创建和更新语句),数据库应用102向安全管理机器103上的查询代理104发送查询。基于秘密密钥105,查询代理104将查询翻译成将由DBMS107执行以创建、查询或更新加密的数据库106的一个或多个查询。当从DBMS107返回查询结果时,查询代理104处理该结果并向应用102发送最后的查询结果。
现在转向在图1中示出的第一个应用环境中的数据库的安全性,DBMS107运行在服务器108上,其处于企业100的物理控制之下。当服务器108被入侵或感染时,攻击者或病毒或恶意软件可以访问数据库106中的数据。但是,由于其被加密,所以数据仍然是安全的。在另一方面,由于根据单独的职责原则的原则,数据库管理员不应访问秘密密钥105,因此其无法读取数据库106的数据内容。通过使用其他的分离机制,可以提高应用环境的安全性。例如,105中的密钥可以在加密之后存储,且可以在访问控制下调节对来自查询代理104的DBMS 107的访问。
在图2中,企业200安装其DBMS 207,并且然后将其加密的数据库206加载到运行在云209中的虚拟服务器208上。在图3中,企业300依赖于DBMS服务307来管理其加密的数据库306。DBMS服务由云308提供。在这两个应用环境中,由于底层的虚拟服务器208和DBMS服务器307在物理上是由云209或云308的提供商管理的,所以企业200或300失去了对其自身加密的数据库206或306的物理控制。但是,加密的数据库206或306中的数据内容由于是加密的,所以其对云提供商或攻击者而言是安全的。查询代理204和304分别处于企业200和300的物理控制下。它们由数据库应用202和302访问(当数据库应用102访问查询代理104时)。
要注意的是,在此描述的加密方案可以被应用于与上文所描述的三个环境不同的环境。例如,如下文所示出的,加密密钥由多个独立的分量组成,且如果这些分量由不同的主体保管,则仅当所有的主体都同意使用其密钥分量时才可以解密值。在另一方面,加密的值由多个分享组成,其可以分布地存储在多个加密的数据库中。
在相关的应用环境中,通过安全管理模块103、203或303来实现下文进一步描述的方法。安全管理模块与客户端和DBMS服务通信。安全管理模块应该被视为软件和硬件的混合,其为根据形成软件的计算机指令作用于指令的计算机处理器。安全管理系统可以访问(通常是本地访问)存储了相关密钥和模式105、205或305信息的存储介质。未被示出的是,由安全管理系统用来执行诸如从客户端接收查询以及从DBMS接收数据之类的方法的输入和输出。本领域的技术人员将明白在客户端、安全管理计算机系统以及服务器/云之间可以使用不同的通信协议,例如适合在安全管理系统与客户端之间的LAN通信、以及在安全管理系统与作为DBMS服务的主机的计算机系统之间的WAN通信的协议。
现在将参考图4中的流程图描述该示例的方法。首先,适合与这些方法一起使用的数据库必须被创建400并存储在存储器106、206或306中。数据库的模式也存储在存储器105、205或305中。
然后,针对每一数值,确定402分享。这参考也存储在存储器105、205和305中的密钥和随机数来完成。然后,安全管理模块103、203、或303使这些分享存储404在数据库106、206或306中。这通过向然后存储406分享的DBMS 107、207和307发送相关指令来完成。
从而,一旦利用分享填充数据库,就可以对数据库106、206和306执行操作,例如更新记录408、删除记录410以及执行查询412。由安全管理模块执行的这些方法中的每一个经由加密数据库上的DBMS进行通信。
下面将进一步详细描述这些步骤中的每一个。
加密和解密算法
我们在此描述了同态加密方案的通用定义。同态是一种允许对密文执行特定类型的计算并获得加密结果的加密的形式,其中该加密结果也是对纯文本执行的操作的结果的密文。
在这部分中,加密方案中的密钥由K(n)来表示,其中n(n>1)是密钥K中包含的用于指示在加密结果中的秘密分享的数目的信息。较大的n导致对蛮力攻击(brute-force)更健壮的加密结果。
让Enc为加密方案的加密算法,其被称为加密方案的实例。假设V是要加密的数值。要注意的是,可以将其他数据类型(像字符串)转换成数值类型以使用加密方案。然后,加密方案被设计成具有如下形式。
Enc(V,K(n))=(V1,...,Vn) (1)
在(1)中,加密结果是n个分量的元组,其对应于n个子密文(秘密分享),其可以被放入数据库表中的n个列中。在加密期间,算法Enc将噪声(随机数)添加到每一分享Vi。让R表示在V的一个加密中使用的该组随机数。然后,将加密结果中的Vi定义为如下。
Vi=Valuei(K(n),V)+Noisei(K(n),R) (2)
在(2)中Vi的定义中,Valuei是K(n)和V的函数,尤其是与V成线性关系;Noisei是K(n)和R的函数,计算用于将Vi随机化的随机数。为了使我们的方案随着分享数目的增加可扩展,函数Valuei和Noisei相对于分享数目n的数目具有线性时间复杂度。由于R,由于在每一加密中的不同随机数,加密方案确保了利用相同的密钥对相同值的两个加密具有不同的结果。以此方式,因为由于每一密文中的噪声和包含更多噪声的更多对,导致了秘密密钥无法通过选择纯文本及其密文的对而被恢复,所以加密方案相对于选择纯文本的攻击和选择密文的攻击是健壮的。
解密方案被设计成具有以下形式,从该形式我们可以看见所有的秘密分享都需要执行成功的解密。
Decry((V1,...,Vn),K(n))=V (3)
为了其正确性,加密方案必须具有以下属性。即,解密结果应该与正被加密的值相同。
Decry(Enc(V,K(n)),K(n))=V (4)
在本发明中Decry算法被定义为下面的表达式,其中秘密分享Vi上的系数fi(K(n))是密钥K(n)上的函数。再次,为了使我们的方案在分享数目n增加时可扩展,函数fi相对于分享数目n在时间复杂度上为线性的。该表达式使得加密方案同态,如下文进一步描述的。
基于(2)中Vi的定义,表达式(5)被重新写入表达式(6)中,其等于表达式(7)。
为了满足正确性的属性(4),必须由函数fi(K(n))、Noisei和Valuei确保下面的两个条件成立,其确定加密方案中的加密算法和解密算法。
即,如果已知秘密密钥K(n),则根据条件(8)可以抵消所有分享中的噪声,且可以根据条件(9)恢复原始值V。当已知秘密密钥时,通过线性地处理所有分享可以抵消分配到所有分享中的噪声。下面将进一步描述加密方案的三个实例,其中通过表明其满足条件(8)和(9)来证明其正确性。
同态
加密方案是加法同态且其也被示出是乘法同态。这使得加密方案能够支持在对加密的数据库的查询中的SUM和AVG的聚合操作。在下文中,将证明的是,当满足条件(8)和(9)时,加密方案是同态的。
假设K(n)是秘密密钥。如下面所示出的,存在全部都是利用K(n)加密的m个值V1,…,Vm。
Enc(V1,K(n))=(V11,...,V1n) (10)
Enc(Vm,K(n))=(Vm1,...,Vmn) (11)
为了证明本发明中的加密方案针对SQL中的SUM操作是同态的,则下面的约束必须成立。要注意的是,以分量方式将加密的值添加到(12)中。
基于(5)中的Decry定义,等式(12)的左手侧等于下面的表达式,通过用来替换(5)中的Vi来获得。
通过使用初等代数中的分配律,可以将表达式(13)重新写入下面的表达式。
通过使用初等代数中的交换律,将表达式(14)重新写入下面的表达式中。
如果满足了条件(8)和(9),根据(5)中Decry的定义,我们有Vj=从而,表达式(15)等于且当满足条件(8)和(9)时,约束条件(12)成立。
对于针对AVG操作的加密方案的同态,证据表明针对本发明中的正确加密和解密算法,下面的约束条件被满足。要注意的是,通过将每一分享的和除以加密的值的数目m来获得加密的值的平均值。
在用于SUM操作的证明过程之后,等式(16)的左手侧等于下面的表达式。
(17)中的表达式被进一步减少为以下的表达式。
基于减少的(15)的结果,如果条件(8)和(9)都被满足,则上面的表达式等于等式(16)的右手侧。从而,对于正确的加密和解密算法,约束条件(16)成立。
此外,也通过乘法同态,加密方案可以是完全同态的。在数据库上对需要乘法操作的加密的值运行查询的场景是有用的场景。例如,员工表包括速率列和小时列。然后,来自员工的SQL查询“选择SUM(速率*小时)”需要是加法和乘法同态。
假设存在两个纯文本消息V和V’、以及两个密钥K(n)和K’(n’),其可以是相同的密钥或不同密钥。使用上文的加密方案,可以产生下文的密文。
Enc(V,K(n))=(V1,...,Vn)
Enc(V′,K′(n′))=(V′1,...,V′n′)
然后,两个密文乘法是其外积,如下文所示出的。
(V1*V′1,...,V1*V′n′,
Vn*V′1,...,Vn*V′n′)
解密该密文将产生期望的乘法V*V’。解密由以下的步骤组成。
步骤1:针对i,从1到n,执行以下的解密以得到Vi*V’。
Decry((Vi*V′1,...,Vi*V′n′),K′(n′))=Vi*V′
步骤2:执行以下的解密以得到V*V’。
Decry((V1*V′,...,Vn*V′),K(n))=V*V′
加密方案的实例
通过给出对在Enc和Decry算法的定义中使用的函数值、噪声和f(K(n))的不同定义,加密方案可以被实现成不同的实例。在此描述了加密方案的5个实例,其正确性条件(8)和(9)被证明。其可以在应用环境中使用以保护数据库数据的隐私性,且也被用作用于指导其他实例的定义的示例。
在该第一实例中,密钥K(n)是具有n个元素(n>1)的列表,其被写为[k1,...,kn],其中每一ki是实数。对于攻击者而言,猜测实数密钥来执行蛮力攻击更难,这是因为即使是在小范围(例如,从1到10)内,也存在可以在计算机中表示的大量的实数。对于该实例,需要k1+...+kn-1≠0且kn≠0。要加密的数值被表示成V且加密结果被表示成元组(V1,...,Vn)。对于该实例,通过以下步骤来定义加密算法Enc。
步骤1:生成n-1个随机数{r1,...rn-1}的集合R。
步骤2:通过估计表达式k1*V+ri来产生Vi(1≤i≤n-1)。即,对于1≤i≤n-1,Valuei(K(n),V)=ki*V且Noisei(K(n),R)=ri。
步骤3:通过估计表达式kn*(r1+...+rn-1)生成最后的分量Vn。即,Valuen(K(n),V)=0且Noisen(K(n),R)=kn*(r1+...+rn-1)。
让(V1,...,Vn)成为要解密的元组。在这个实例中由以下步骤来定义解密算法Decry。
步骤1:计算L,其被定义成
步骤2:针对该结果估计表达式即,针对1≤i≤n-1,
fi(K(n))=1/L,且fn(K(n))=-1/(L*kn)。
针对该实例,等式(8)的左手侧是其被减小至0,且等式(9)的左手侧是其被减小至V。从而,在该实例中,Enc和Decry算法满足该正确性条件。
在第二实例中,更多的随机噪声被添加到加密的元组。在该实例中,密钥K(n)是一组实数对的列表,其由[(k1,s1),…,(kn,sn)]表示,其中n>1。对于1≤i≤n需要ki≠0,s1+…+sn-1≠0且sn≠0。让V成为要加密的数值。加密算法Enc采用以下步骤来产生加密的元组(V1,…,Vn)。
步骤1:产生n-1对随机数{(r1,p1),…,(rn-1,pn-1)}的组R。
步骤2:通过使用表达ki*(si*V+pi)+ri产生Vi(1≤i≤n-1)。即,对于1≤i≤n-1,Valuei(K(n),V)=ki*si*V且Noisei(K(n),R)=ki*pi+ri。
步骤3:通过估计表达式来计算Vn。即,Valuen(K(n),V)=0且
算法Decry通过以下步骤将元组(V1,…,Vn)解密成V:
步骤1:计算S,其为
步骤2:针对该结果,减小表达式即,对于1≤i≤n-1,fi(K(n))=1/(kiS),且fn(K(n))=-1/(kn*sn*S)。
与第一实例中的解密相比,如果所有的密钥ki都不同,则该解密算法中的每一Vi具有不同的系数fi(K(n))。这增加了蛮力攻击的困难,其中为了解密V,不得不全面地搜索每一Vi的系数。
根据如下所述的检查该实例的正确性。对于该实例,等式(8)的左手侧是表达式其被减小至0。对于该实例,等式(9)的左手侧是以下表达式如所期望的,其被减小至V。
在该第三实例中,密钥K(n)被表示成[(k1,s1),…(kn,sn)],其中n>1,且ki和si是实数。该第三实例针对1≤i≤n需要ki≠0,s1+…+sn≠0。假设值V将被加密到元组(V1,…,Vn)中。下文示出了Enc算法的加密步骤。
步骤1:产生n对随机数{(r1,p1),…,(rn,pn)}的组R。
步骤2:通过使用表达式产生V1。即,Value1(K(n),V)=k1*s1*V且
步骤3:对于2≤i≤n-1,通过估计表达式来计算每一Vi。即,对于2≤i≤n-1,Valuei(K(n),V)=ki*si*V且
步骤4:通过使用表达式来计算Vn。即,Valuen(K(n),V)=kn*sn*V且为了解密元组(V1,…,Vn),算法Decry采用以下步骤。
步骤1:计算S,其为
步骤2:针对该结果,减小表达式即,对于1≤i≤n,fi(K(n))=1/(ki*S)。
下面是该实例的正确性验证。针对该实例的等式(8)的左手侧是表达式N1+N2+N3,其每一项在下面定义。
由于每一正项或分别具有相应的负项或且每一正项具有相应的负项,这一表达式被减小至0。
对于该实例,等式(9)的左手侧是表达式其被减小至V。
通过在子密文中添加更多的噪声项,从第二实例导出第四实例。该实例中的密钥K(n)是列表[k1,…,kn],且n≥4。从而,存在正整数h和m,使得n=h+m+2。基于h和m的选择,n个密钥分量是实数的元组,如下文所定义的。
●对于1≤i≤h,每一ki是元组(wi,si1,…,sim,ti);
●对于h+1≤i≤h+m,每一ki是元组(siu,…,sim,ti),其中u=i-h;
●对于h+m+1≤i≤n,每一ki是单元组(singleton tuple)(ti)。
对于值V,加密算法Enc通过使用以下的步骤利用密钥K(n)来产生密文(V1,…,Vn)。
步骤1:产生n-1个随机数:r1,r2,…,rh,rr,rs1,rs2,…和rsm;
步骤2:对于1≤i≤h,
步骤3:对于i=h+1,
步骤4:对于h+2≤i≤h+m,其中u=i–(h+1);
步骤5:Vn-1=rsm+tn-1*rr;
步骤6:Vn=tn*rr。
给定密文(V1,…,Vn),解密算法采用以下步骤来产生V。
步骤1:RR=Vn/tn;
步骤2:RSm=Vn-1–tn-1*RR;
步骤3:对于m-1≤u≤1且i=u+h+1,
步骤4:对于i=h+1,
步骤5:
步骤6:
通过在子密文中添加更多的噪声项从第三实例导出第五实例。该实例中的密钥K(n)也是列表[k1,…kn],且n≥4。从而,存在正整数h和m,使得n=h+m+2。基于选择的h和m,n个密钥分量是实数的元组,如下文所定义的。
●对于1≤i≤h+1,每一k1是元组(wi,si1,…,sim,ti);
●对于h+2≤i≤h+m,每一k1是元组(siu,…,sim,ti),其中u=i–h;
●对于h+m+1≤i≤n,每一ki是单元组(ti)。
对于值V,加密算法Enc通过使用以下的步骤利用密钥K(n)来产生密文(V1,…,Vn)。
步骤1:产生n个随机数:r1,r2,…,rh,rh+1,rr,rs1,rs2,…和rsm;
步骤2:
步骤3:对于2≤i≤h+1,
步骤4:对于h+2≤i≤h+m,其中u=i–(h+1);
步骤5:Vn-1=rsm+tn-1*rr;
步骤6:Vn=tn*rr。
给定密文(V1,…,Vn),解密算法Decry工作如下来产生V。
步骤1:RR=Vn/tn;
步骤2:RSm=Vn-1–tn-1*RR;
步骤3:对于m–1≤u≤1且i=u+h+1,
步骤4:
步骤5:
本发明中的加密方案的实例是可组合的。想法是来自一个实例的一个分享可以被另一实例进一步加密,而对于解密,该过程反过来。此外,可以融合来自两个实例的密钥、加密和解密算法,这提供一种容易的创建新实例的方法。即,通过创建新的等同的实例,融合实现对两个实例的组合。
在下文中,以上文的第一实例和上文也阐述的第二实例作为用来解释密钥的融合、其加密和解密算法的融合的示例。
新实例中的融合的密钥具有以下的形式,其组合了第一和第二实例的密钥。
[(k1,k1 1,s1 1),(k1,k1 2,s1 2),….,(k1,k1 n’,s1 n’),
…,
(kn,kn1,sn 1),(kn,kn 2,sn 2),….,(kn,kn n’,sn n’)]。
直观地,[k1,…,kn]是针对第一实例的密钥,且针对来自第一实例的每一分享i,针对第二实例的密钥是[(ki 1,si 1),…,(ki n’,si n’)]。即,通过第二实例利用不同的密钥来对来自第一实例的每一分享进行加密。
融合加密:
步骤1:产生随机数:一组n-1个随机数{r1,…,rn-1}以及其它的n组(n’-1)对随机数{(ri 1,pi 1),…,(ri (n’-1),pi (n’-1))},其中i是从1到n。即,通过第二实例利用不同的随机数对来自第一实例的每一分享进行加密。
步骤2:针对每一密钥分量产生以下的n*n’分享:
(V1 1,V1 2,….,V1 n’,
…,
Vn 1,Vn 2,….,Vn n’)。
对于与密钥分量对应的分享Vij,其在以下的情况中的一个
中计算:
情况1:如果i<n且j<n’,则
情况2:如果i=n且j<n’,则
情况3:如果j=n’,则对于1<=i<=n,融合的加密:
步骤1:计算L,其被定义成
步骤2:对于每一i,其中1<=i<=n,执行以下的两个步骤
步骤2a:计算Si,其是
步骤2b:计算中间分享
步骤3:计算最后的值
加密示例
图5给出了将通过使用先前所描述的三个算法加密的5个值。值I1和I3被设计成为相同的值1383.2。值I2和I4非常接近,一个为2965.8,另一个为2965.7。值I5是3196.1。
图6中给出了加密算法所使用的密钥。第一算法仅使用k1、k2和k3,而第二和第三也使用s1,s2和s3。要注意的是,三个加密算法允许密钥为实数,因此密钥可以是负数。
每一个值的密钥需要一组随机数。图7给出了要在示例中使用的该组随机数。并非全部的三个加密算法的都需要图7中的所有随机数。每一随机数为了引用都有名字。例如,随机数178.2具有名字r11。
在第一个加密算法示例中,这5个值被加密成图8中示出的值。由于密钥具有分量k1、k2和k3,密钥结果由三个分享组成。例如,利用用符号I1E11、I1E12和I1E13提及的三个分享-1016888.76、7284791.54以及26137991.5将值I1加密成I1E1。在图8中,在分享下面给出了计算每一分享的表达式。例如,分享I1E11来自表达式k1*I1+r11。
在图9中示出了使用第一算法的解密结果。值I1D1是I1E1的解密,其与I1相同。其他的四个解密值也类似命名且等于其相应的纯文本。用于解密的表达式被示出在解密的值下方。在图9中,L是解密算法所使用的中间值。
图10示出了值SumIE1,其是解密值的和。SumIE1由三个分享组成,其每一个是相应分享的和。例如,第一分享是5个加密值中第一分享的和。图10也示出了值SumID1,其是SumIE1的解密结果。在解密SumIE1的表达式中,SumIE11表示第一解密分享的和。值SumID1与I1+I2+I3+I4+I5的和相同。L在图9中定义。与图10类似,图11示出了5个加密值的平均值,以及平均值的解密。解密的平均值是2378.8,等于所期望的平均值(I1+I2+I3+I4+I5)/5。
图12给出了使用第二算法来加密第二示例中图5中的5个值的结果。利用I1E2、I2E2、I3E2、I4E2和I5E2来表示解密的结果。由于密钥具有三个分量[(kl,s1),(k2,s2),(k3,s3)],所以每一结果具有三个分享。在图11中在分享下方示出了用于产生每一分享的表达式。
在图13中示出了针对单个值的解密结果,其中S是由解密算法使用的中间值。可以检查的是,所有解密的值I1D2、I2D2、I3D2、I4D2和I5D2等于相应的值I1、I2、I3、I4和I5。用于解密的表达式也示出在每一解密结果的下方。
解密的值I1E2、I2E2、I3E2、I4E2和I5E2在图14中求和。和SumIE2中的每一分享是相应分享的和。在图14中也示出了使用第二解密的和SumIE2的解密。解密结果是11894,与I1、I2、I3、I4和I5的和相同。图15给出了加密值的平均值,且其解密使用第二解密算法。
在该示例中,第三算法被应用于加密I1、I2、I3、I4和I5,且在图16中示出了结果。在该算法中,使用了图7中的所有随机数。用于产生每一分享的表达式在每一解密结果下方示出。
图17示出了每一单个加密值的解密,且图18示出了解密加密值的和的结果。所有解密的值是正确的,由于其等于相应的值(I1、I2、I3、I4和I5)或那些值的和。最后,在图19中解密加密值的平均值。
对加密数据库的管理
图1、图2和图3中示出的、在三个应用环境中的查询代理充当创建加密数据库、查询加密数据库、以及更新加密的数据库的角色。
数据库通常由一组表组成,且每一表包括一组记录。表的结构由一模式(schema)描述。我们将记录表示成元组(V1,...,Vn),且相应的模式表示为(A1:Type1,....,An:Typen),其中Ai是表的属性,且Typei是属性Ai的类型。记录必须符合表模式。即,Vi必须具有类型Typei。
在此,示例涉及数字数据的加密以及如何对其执行SUM和AVG的聚合操作。从而,我们聚焦在表中的数字属性上。数值类型,表示成NUM,可以是整数、浮点数、或双精度数。此外,在本发明中,独立地保护表中的属性。于是我们在下面描述如何保护一个数值属性。
对于数值属性,我们可以为其加密分配一个或多个密钥。所有的密钥通过查询代理单独用于加密属性值。如果存在m个密钥,则属性值被单独加密m次,产生m个加密值。为了检查加密值的完整性,查询代理对其全部进行解密,并且然后检查其是否相等。在下文中,我们说明了通过向数值属性分配两个密钥K1(n)和K2(n)进行管理。
为了利用相等和不相等比较来支持查询,查询代理需要散列算法,例如SHA1算法,以及保序加密(OPE)算法。所以查询代理需要保留用于OPE算法的其他密钥。为了简单起见,我们假定OPE算法针对一个属性使用密钥ikey。
用于将值V散列的算法被表示成Hash(V)。散列算法也用于散列数据库名称、表和属性名称。让OPE(ikey,V)表示通过使用OPE算法利用密钥ikey的V的加密。然后,针对两值V1<V2,OPE算法在加密之后保持其顺序,即OPE(ikey,V1)<OPE(ikey,V2)。
现在转到在SQL中创建加密数据库和表,下面的说明是用于创建名称为dbname的数据库。
CREATE DATABASE dbname
在从数据库应用接收该声明之后,查询代理将其重新写入下面的声明中并将其发送至DBMS或DBMS服务。所以,数据库名称被安全地散列到无意义的字符串中。
CREATE DATABASE Hash(dbname)
当数据库应用想要创建表tblname(colnamel:NUM,...)时,其向查询代理发送以下的SQL声明。
CREATE TABLE tblname(colname1NUM,…)
针对该声明,查询代理首选存储表模式tblname(colname1:NUM,…)。然后,产生随机整数(0<i<n),其中n从K1(n)or K2(n)获得。最后,将声明重新写入针对DBMS或DBMS服务的下面一个。
CREATE TABLE Hash(tblname)
(
Hash(colname1+”eq”)String,
Hash(colname1+”neq”)INT,
Hash(colname1+”k1”+string(i))Double,
Hash(colname1+”k1”+string(i+1mod n))Double,
…,
Hash(colname1+”k1”+string(i+n-1mod n))Double,
Hash(colname1+”k2”+string(i))Double,
Hash(colname1+”k2”+string(i+1mod n))Double,
…,
Hash(colname1+”k2”+string(i+n-1mod n))Double,
…
)
在上文的查询中,字符串是将整数转换成字符串的运算符,运算符+用于连接两个字符串,且mod是取模运算符。最先的两个列分别存储用于相等和不相等比较的值的索引。接下来的n个列存储使用同态加密算法利用密钥K1(n)来加密值的分享,且最后的n个列用来存储使用密钥K2(n)的加密分享。被加密的表中的分享的顺序由随机整数i随机化。由于加密结果是用于同态加密的双精度值或用于OPE算法[5]的32比特整数,所以针对相应的列,我们使用双精度或整数数据类型。散列算法HMAC产生用于SHA1算法的具有20字节长度的字符串,因此第一列的类型是字符串。
现在转到表插入,假设已经创建了一些数据库和表。然后,数据库应用通过使用以下两个声明中的任何一个可以将新的记录插入到表中。
INSERT INTO tblname(colname1,...)VALUES(V,...)
INSERT INTO tblname VALUES(V,...)
由于代理服务器保留该表模式,所以第二插入声明可以被转换成第一个。从而,仅示出了重写第一插入声明。对于插入,根据V是否为NULL存在两种情况。在V不为NULL的情况下,使用以下步骤来实现插入声明。首先,通过使用本发明中的同态算法来加密值V。
Enc(V,K1(n))=(V11,...,V1n)和Enc(V,K2(n))=(V21,...,V2n)
然后,产生随机整数i(0<i<n),其中n从K1(n)或K2(n)获得。第三,针对DBMS或DBMS服务产生以下的插入声明。
INSERT INTO Hash(tblname)
(
Hash(colname1+”eq”),
Hash(colname1+”neq”),
Hash(colname1+”k1”+string(i)),
Hash(colname1+”k1”+string(i+1mod n)),
…,
Hash(colname1+”k1”+string(i+n-1mod n)),
Hash(colname1+”k2”+string(i)),
Hash(colname1+”k2”+string(i+1mod n)),
…,
Hash(colname1+”k2”+string(i+n-1mod n)),
…
)
VALUES(Hash(V),OPE(ikey,V))+rotateL((V11,…,V1n),i)+rotateL((V21,…,V2n),i)
在上文的插入声明中,运算符+也用于将若干元组连接到更大的元组中。针对分享的列名的顺序被随机化,且相应地,通过使用图20中定义的运算符rotateL来调整分享的元组以匹配其列名。
在V为NULL的情况下,代理查询不加密NULL。以下插入声明被发送至DBMS或DBMS服务,其中i是如上文的随机整数。
INSERT INTO Hash(tblname)
(
Hash(colname1+”eq”),
Hash(colname1+”neq”),
Hash(colname1+”k1”+string(i)),
Hash(colname1+”k1”+string(i+1mod n)),
…,
Hash(colname1+”k1”+string(i+n-1mod n)),
Hash(colname1+”k2”+string(i)),
Hash(colname1+”k2”+string(i+1mod n)),
…,
Hash(colname1+”k2”+string(i+n-1mod n)),
…
)
VALUES(NULL,NULL,...,NULL)
在上面的声明中,记录中NULL的数目与属性列的数目相同。
现在转向查询条件,在SQL声明中通常包括排序和分组。条件通常是逻辑公式,其由具有逻辑连接的原子公式组成。存在三种类型的原子公式,colname=V,colname>V,colname<V,以及colname=colname’。当转换SQL声明中的条件时,查询代理仅转换原子公式而不改变其是如何连接的,如下文所示出的。
公式colname=V被转换成
Hash(colname+”eq”)=Hash(V)。
公式colname>V被转换成
Hash(colname+”neq”)>OPE(ikey,V)。
公式colname<V被转换成
Hash(colname+”neq”)<OPE(ikey,V)。
公式colname=colname'被转换成
Hash(colname+”eq”)=Hash(colname’+”eq”)。
查询中的条件“按colname排序”根据列colname的值来对查询结果排序。由于该条件需要加密值的保序属性,所以其被转换成“按Hash(colname+”neq”)排序”。
查询中的条件“按cloname分组”基于列colname的值将查询结果分组。将其转换成“按Hash(colname+”eq”)分组”,由于条件仅关注于列colname中的值的相等。
也适应表的更新和删除。数据库应用可以向代理服务器发送以下更新声明,以更新满足条件cond的记录。
UPDATE tblname SET colname1=V,…WHERE cond
如果V不为NULL,则查询代理在以下的步骤中重写上面的声明,类似于插入声明,首先,分别通过使用K1(n)或K2(n)来加密V。
Enc(V,K1(n))=(V11,...,V1n)和Enc(V,K2(n))=(V21,...,V2n)
然后,产生随机整数i(0<i<n),其中n从K1(n)或K2(n)获得。
让rotateL((V11,…,V1n),i)=(V’11,…,V’1n)且rotateL((V21,…,V2n),i)=(V’21,…,V’2n)。
第三,以下的更新声明用于DBMS或DBMS服务。
UPDATE Hash(tblname)
SET Hash(colname1+”eq”)=Hash(V),
SET Hash(colname1+”neq”)=OPE(ikey,V),
SET Hash(colname1+”k1”+string(i))=V’11,
SET Hash(colname1+”k1”+string(i+1mod n))=V’12,
…,
SET Hash(colname1+”k1”+string(i+n-1mod n))=V’1n,
SET Hash(colname1+”k2”+string(i))=V’21,
SET Hash(colname1+”k2”+string(i+1mod n))=V’22,
…,
SET Hash(colname1+”k2”+string(i+n-1mod n))=V’2n,
…
WHERE cond’
在上文的声明中,条件cond'是条件cond的重写结果。如果V为NULL,则产生以下的更新声明。
UPDATE Hash(tblname)
SET Hash(colname1+”eq”)=NULL,
SET Hash(colname1+”neq”)=NULL,
SET Hash(colname1+”k1”+string(i))=NULL,
SET Hash(colname1+”k1”+string(i+1mod n))=NULL,
…,
SET Hash(colname1+”k1”+string(i+n-1mod n))=NULL,
SET Hash(colname1+”k2”+string(i))=NULL,
SET Hash(colname1+”k2”+string(i+1mod n))=NULL,
…,
SET Hash(colname1+”k2”+string(i+n-1mod n))=NULL,
…
WHERE cond’
为了删除表中的一些记录,数据库应用可以使用以下声明。
DELETE FROM tblname WHERE cond
通过查询代理将该声明重写入以下一个中。条件cond'是cond的转换。
DELETE FROM tblname WHERE cond’
查询可以包括哪里条件、排序和分组。在先前的部分中已经说明了其转换。在该部分中,我们假设以下的查询声明由数据库应用使用。
SELECT colname1,…FROM tblname
为了实现该查询,通过查询代理产生随机整数i(0<i<n),其中n从K1(n)或K2(n)获得。然后,其向DBMS或DBMS服务发送以下内容。
SELECT Hash(colname1+”k1”+string(i)),
Hash(colname1+”k1”+string(i+1mod n)),
…,
Hash(colname1+”k1”+string(i+n-1mod n)),
Hash(colname1+”k2”+string(i)),
Hash(colname1+”k2”+string(i+1mod n)),
…,
Hash(colname1+”k2”+string(i+n-1mod n)),
…
FROM Hash(tblname)
在执行上述查询之后,DBMS或DBMS服务向查询代理返回一组记录。让Rec表示记录中的一个。基于上述查询的语意,表示成Rec[1,n]的记录Rec中的前n个分量是要利用密钥K1(n)来解密的分享,且要利用密钥K2(n)来解密的接下来的n个分量表示成Rec[n+1,2n]。在解密之前,需要通过使用图20中定义的运算符rotateR来调整这些分享的顺序,使得每一分享对应于正确的密钥分量。
V=Decry(rotateR(Rec[1,n],i),K1(n))和V’=Decry(rotateR(Rec[n+1,2n],i),K2(n))
查询代理通过比较V和V’来验证加密数据库中分享的完整性。如果它们相等,则记录(V,…)被添加到针对数据库应用的查询结果。
通过使用以下声明,数据库应用可以查询表中的所有属性值。
SELECT*FROM tblname
要注意的是,作为查询对象的所有数值是满足查询条件的数值且将被考虑以处理所述查询。
假设表tblname具有模式(colname1:Type1,…)。要注意的是,在应用环境中,由查询代理保留每一模式。查询代理转换以下的等同查询,其明确地选择每一列。然后,可以将该查询重写为如先前所描述的。
SELECT colname 1,...FROM tblname
来自数据库应用的SQL查询可以包括聚合操作SUM或AVG,如通过下文所示出的。
SELECT Sum(colnamel),...FROM tblname
SELECT Avg(colnamel),...FROM tblname
让i为0与n之间的随机整数。查询代理产生以下声明以请求DBMS或DBMS服务对各个分享列求和。
SELECT Sum(Hash(colname1+”k1”+string(i))),
Sum(Hash(colname1+”k1”+string(i+1mod n))),
…,
Sum(Hash(colname1+”k1”+string(i+n-1mod n))),
Sum(Hash(colname1+”k2”+string(i))),
Sum(Hash(colname1+”k2”+string(i+1mod n))),
…,
Sum(Hash(colname1+”k2”+string(i+n-1mod n))),
…
FROM Hash(tblname)
让Rec表示DBMS或DBMS服务返回的记录中的一个。然后,在通过使用运算符rotateR调整其顺序之后,Rec中的前n个分量利用密钥K1(n)来解密,且接下来的n个分量利用密钥K2(n)来解密。如果V和V’相等,则其意味着总和的底层的所有数据都是完整的,且V是列colname1的总和。
V=Decry(rotateR(Rec[1,n],i),K1(n))和V’=Decry(rotateR(Rec[n+1,2n],i),K2(n))
类似地,利用AVG聚合操作的查询被转换成下面一个。与上文类似地解密并检查来自DBMS或DBMS服务的查询结果。
SELECT Avg(Hash(colname1+”k1”+string(i))),
Avg(Hash(colname1+”k1”+string(i+1mod n))),
…,
Avg(Hash(colname1+”k1”+string(i+n-1mod n))),
Avg(Hash(colname1+”k2”+string(i))),
Avg(Hash(colname1+”k2”+string(i+1mod n))),
…,
Avg(Hash(colname1+”k2”+string(i+n-1mod n))),
…
FROM Hash(tblname)
利用MAX和MIN的查询查询起来更复杂。假设从数据库应用向查询代理发送以下查询。
SELECT MAX(colname)FROM tblname
让i为0与n之间的随机整数,其中n从K1(n)或K2(n)导出。
查询代理产生以下查询。
SELECT Hash(colname1+”k1”+string(i)),
Hash(colname1+”k1”+string(i+1mod n)),
…,
Hash(colname1+”k1”+string(i+n-1mod n)),
Hash(colname1+”k2”+string(i)),
Hash(colname1+”k2”+string(i+1mod n)),
…,
Hash(colname1+”k2”+string(i+n-1mod n)),
…
FROM Hash(tblname)
WHERE Hash(colname+”eq”)=
(SELECT MAX(Hash(colname+”neq”))FROM Hash(tblname))
上面的查询是嵌套的查询。子查询从列Hash(colname+”neq”)返回最大值,然后相同记录中的所有分享都作为最大值被返回到查询代理以通过使用密钥K1(n)和K2(n)来解密。解密的结果是针对数据库应用的列colname的最大值。涉及MIN操作的查询被类似地转换。
公钥加密
加密方案可以用作公钥加密方案。例如,包含密文的记录可以由没有足够的信息来解密数据库中所存在的密文的人添加到数据库。
要实现这,私钥是相同的K(n)。
公钥是两组密文
i.对0的加密,通过执行以下许多次的加密来获得。要注意的是,由于随机数,每一加密产生新的密文。通过特定的实现可以确定加密的数目。
Enc(O,K(n))=(V1,...,Vn)
ii.对1的加密,通过执行以下许多次的加密来获得。要注意的是,由于随机数,每一加密产生新的密文。通过特定的实现可以确定加密的数目。
Enc(1,K(n))=(V′1,...,V′n)
然后,为了加密V,可以随后可以有下面的步骤。
步骤1:随机地选择1的加密,利用(V′1,...,V′n)来表示。
步骤2:利用V乘以该加密中的每一子密文,获得(V′1*V,...,V′n*V)
步骤3:随机地选择0加密的子集。假设该子集具有m个密文且被表示如下。
{(V11,...,Vn1),(V12,...,Vn2),...,(V1m,...,Vnm)}
步骤4:将来自步骤3的子集中的所有0加密相加,获得密文
步骤5:将步骤2和步骤4中的密文相加,获得以下结果
与现有方法或系统相比较,整体上该示例具有以下优点:
可直接适用于当前的数据库管理系统,即其是可改造的。一些其他的技术需要扩展或改变当前的数据库管理系统。不需要输入值的最大和,从而适合存在已久的数据库。
具有子结构的加密值可以单独地在一个表或多个表中的列中存储为数值数据。一些其他技术产生较大的密文(例如,1024比特)作为二进制大对象,其无法被存储为数值数据,从而阻碍了涉及算术操作(例如,SUM和AVG)的查询。
通过增加密文分享增加了加密健壮性,而无需增加每一分享的大小。加密和解密算法可扩展至分享数目的增加。
允许数据库表结构用于存储经加密的分享。
因为利用随机噪声来加密值,所有我们的加密方案对于选择密文或纯文本的攻击而言是健壮的。
通过增加分享的数目(随着增加密钥分量的数目)可以增加加密方案的健壮性,而无需增加每一分享的大小,其可以在当前的DBMS中被存储为数值。
加密方法拥有具有正确性条件的通用定义,其允许从通用定义导出加密算法的新实例。允许用户定义仅由其使用以保护其数据库的其特定算法。
我们的同态加密中每一加密的分享的大小不随着分享数目增加,且分享数目的增加不以指数方式增加计算开销。由于仅是线性操作被应用了与加密密钥的大小成线性的次数,所以这是高效的。
方法被提供用于重写SQL查询以及与其他SQL查询集成,例如使用相等和不相等比较。此外,验证结果的完整性的能力示出该示例可以支持数据库的隐私性和完整性。
通过遵守一些正确性条件可定制。即,通过遵守本专利中的正确性条件用户可以定义特定的同态加密算法。
本领域的技术人员将明白,可以对上文描述的实施例进行许多变化和/或修改,而不偏离本公开的广泛的一般保护范围。
应该理解的是,本公开的技术可以使用各种技术来实现。例如,在本文中描述的方法可以通过驻留在适当的计算机可读介质上的一系列计算机可读指令来实现。适当的计算机可读介质可以包括易失性(例如,RAM)和/或非易失性(例如,ROM,磁盘)存储器、载波和传输介质。示例性的载波可以采用沿局域网或诸如互联网之类的公共可访问的网络传送数字数据流的电、电磁、或光学信号的形式。
还应该理解的是,除非明确说明,否则根据下面的讨论显而易见的,贯穿本说明应明白,使用诸如“估计”或“处理”或“运算”或“计算”、“优化”或“确定”或“显示”或“最大化”等之类的术语的讨论,指的是计算机系统、或类似的电子计算设备的动作和处理,其将在计算机系统的寄存器和存储器中表示成物理(电子)量的数据处理并转换为在计算机系统存储器或寄存器或其他这样的信息存储、传输或显示设备中被类似表示成物理量的其他数据。
因此,在所有方面应将本发明的实施例认为是示例性的而不是限制性的。
Claims (20)
1.一种计算机实现的方法,其用于对数据库执行查询,其中,所述查询的数值对象被表示为使用加法同态加密确定的密文,并且所述密文包括多个部分,所述多个部分包括至少第一子密文和第二子密文,所述方法包括:
将所述第一子密文和所述第二子密文存储在所述数据库中,其中,所述第一子密文和所述第二子密文是所述密文的部分分量,以使得对所述密文的解密需要至少所述第一子密文和所述第二子密文,所述第一子密文和所述第二子密文在所述数据库中在单独的属性中存储,并且所述第一子密文和所述第二子密文中的每个是基于整个数值来确定的,其中,对所述第二子密文进行确定是独立于对所述第一子密文的确定的;
生成查询,所述查询涉及要对存储在所述数据库中的所述第一子密文和所述第二子密文执行的计算;以及
对所述第一子密文和所述第二子密文执行所述计算以确定针对所述查询的加密答案,而不需要解密所述第一子密文和所述第二子密文。
2.根据权利要求1所述的计算机实现的方法,其中所述加法同态加密也是乘法同态的。
3.根据权利要求1所述的计算机实现的方法,其中所述方法还包括以下步骤:
基于包括一组密钥分量的密钥来确定所述密文,其中在该组密钥分量中的密钥分量的数目等于子密文的数目。
4.根据权利要求3所述的计算机实现的方法,其中所述方法还包括:
基于子密文的数目确定该组密钥分量。
5.根据权利要求3所述的计算机实现的方法,其中所述密钥满足以下等式:
其中,
V是所述数值,
n是子密文的数目,
K(n)是所述密钥,
fi是所述密钥的第i个函数,且
Valuei是K(n)和V的第i个函数。
6.根据权利要求3所述的计算机实现的方法,其中确定所述密文包括确定满足以下等式的子密文:
其中,
V是所述数值,
n是子密文的数目,
K(n)是所述密钥,
fi是所述密钥的第i个函数,且
Vi是第i个子密文。
7.根据权利要求3所述的计算机实现的方法,其中确定所述密文包括确定满足以下等式的子密文:
Vi=Valuei(K(n),V)+Noisei(K(n),R)
其中,
V是所述数值,
n是子密文的数目,
K(n)是所述密钥,
R是一组随机数,
Vi是第i个子密文,
Valuei是K(n)和V的第i个函数,且
Noisei是K(n)和R的第i个函数。
8.根据权利要求1所述的计算机实现的方法,其中所述方法包括以下步骤:
通过以下来确定所述密文:针对每一子密文,将第一结果和第二结果相加,其中所述第一结果是基于与该子密文相关联的密钥和所述数值的函数的值,且所述第二结果是基于与该子密文相关联的所述密钥和一个或多个随机数的函数的值。
9.根据权利要求1所述的计算机实现的方法,其中所述方法包括以下步骤:
确定所述密文,其不包括使用取模或地板算术运算。
10.根据权利要求1所述的计算机实现的方法,其中所述方法还包括如下步骤:
确定一组随机数分量;以及
基于该组随机数分量确定所述密文。
11.根据权利要求10所述的计算机实现的方法,其中确定所述密文基于包括一组密钥分量的密钥,其中该组密钥分量中的密钥分量的数目等于子密文的数目,且确定该组随机数分量包括确定满足如下等式的一组随机数:
其中,
n是子密文的数目,
K(n)是所述密钥,
fi是所述密钥的第i个函数,
R是一组随机数分量;且
Noisei是K(n)和R的第i个函数。
12.根据权利要求11所述的计算机实现的方法,其中所述等式可组合且所述方法还包括:
将所述密钥的多个实例融合以创建新的密钥实例。
13.根据权利要求1所述的计算机实现的方法,其中所述方法还包括:
基于用于对数值进行加密的密钥来解密针对所述查询的加密的答案。
14.根据权利要求1所述的计算机实现的方法,其中所述计算是基于乘法的对所述数据库的查询,所述计算包括:
针对所述查询的每一对数值对象,执行用于该对数值的所述子密文的外积,以确定加密的相乘值。
15.根据权利要求1所述的计算机实现的方法,其中存储所述第一子密文和所述第二子密文是通过创建具有用于存储所述第一子密文的第一属性和用于存储所述第二子密文的第二属性的表来执行的。
16.根据权利要求1所述的计算机实现的方法,其中所述方法包括通过将记录插入到具有所述单独的属性的所述数据库中来存储所述第一子密文和所述第二子密文。
17.一种非暂态计算机可读介质,包括存储在其上的计算机可执行指令,所述指令当被执行时使得所述计算机执行对数据库的查询,其中,所述查询的数值对象被表示为使用加法同态加密确定的密文,并且所述密文包括多个部分,所述多个部分包括至少第一子密文和第二子密文,所述方法包括:
将所述第一子密文和所述第二子密文存储在所述数据库中,其中,所述第一子密文和所述第二子密文是所述密文的部分分量,以使得对所述密文的解密需要至少所述第一子密文和所述第二子密文,所述第一子密文和所述第二子密文在所述数据库中在单独的属性中存储,并且所述第一子密文和所述第二子密文中的每个是基于整个数值来确定的,并且其中,对所述第二子密文进行确定是独立于对所述第一子密文的确定的;
生成查询,所述查询涉及要对存储在所述数据库中的所述第一子密文和所述第二子密文执行的计算;以及
对所述第一子密文和所述第二子密文执行所述计算以确定针对所述查询的加密答案,而不需要解密所述第一子密文和所述第二子密文。
18.一种用于加密要在非暂态数据库中存储的数值的计算机系统,包括:
处理器,用于:
使用加法同态加密确定针对所述数值的密文,其中所述密文包括多个部分,所述多个部分包括至少第一子密文和第二子密文,所述第一子密文和所述第二子密文是所述密文的部分分量,以使得对所述密文的解密需要至少所述第一子密文和所述第二子密文,并且所述第一子密文和所述第二子密文是基于整个数值来确定的,并且对所述第二子密文进行确定是独立于对所述第一子密文的确定的;以及
使所述第一子密文和所述第二子密文在所述数据库中在单独的属性中存储,以使得对所述第一子密文和所述第二子密文的计算确定加密结果而不解密所述第一子密文和所述第二子密文,其中所述加密结果是对所述数值执行的所述计算的结果的密文。
19.一种服务器,包括:
数据库,记录在非暂态计算机可读介质上,其中,所述数据库存储具有两个或更多个属性的记录,其中每一记录包含使用加法同态加密确定的表示数值的密文,并且所述密文包括多个部分,所述多个部分包括至少第一子密文和第二子密文,所述第一子密文和所述第二子密文是所述密文的部分分量,以使得对所述密文的解密需要至少所述第一子密文和所述第二子密文,并且所述第一子密文和所述第二子密文是基于整个数值来确定的,并且对所述第二子密文进行确定是独立于对所述第一子密文的确定的,并且所述第一子密文和所述第二子密文是在单独的属性中存储的,以使得,基于所述第一子密文和所述第二子密文的计算确定加密结果,其中所述加密结果是对所述数值执行的所述计算的结果的密文。
20.一种用于对在数据库中存储的密文进行解密的计算机实现的方法,所述方法包括:
接收或访问使用加法同态加密确定的密文,其中所述密文包括多个部分,所述多个部分包括至少第一子密文和第二子密文,所述第一子密文和所述第二子密文是所述密文的部分分量,以使得对所述密文的解密需要至少所述第一子密文和所述第二子密文,所述第一子密文和所述第二子密文是基于整个数值来确定的并且是在单独的属性中存储的,并且对所述第二子密文进行确定是独立于对所述第一子密文的确定的;以及
基于所述第一子密文和所述第二子密文且使用包括一组密钥分量的加密密钥来解密所述密文,其中密钥分量的数目与密文的数目相同。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2012902653 | 2012-06-22 | ||
AU2012902653A AU2012902653A0 (en) | 2012-06-22 | Homomorphic encryption for database querying | |
PCT/AU2013/000674 WO2013188929A1 (en) | 2012-06-22 | 2013-06-21 | Homomorphic encryption for database querying |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104620533A CN104620533A (zh) | 2015-05-13 |
CN104620533B true CN104620533B (zh) | 2018-08-21 |
Family
ID=49767951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380043719.7A Expired - Fee Related CN104620533B (zh) | 2012-06-22 | 2013-06-21 | 用于数据库查询的同态加密 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10027486B2 (zh) |
EP (1) | EP2865127A4 (zh) |
CN (1) | CN104620533B (zh) |
AU (1) | AU2013277948B9 (zh) |
WO (1) | WO2013188929A1 (zh) |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9031229B1 (en) * | 2012-03-26 | 2015-05-12 | Newline Software, Inc. | Computer-implemented system and method for providing data privacy in a cloud using discrete homomorphic encryption |
WO2015163822A1 (en) * | 2014-04-23 | 2015-10-29 | Agency For Science, Technology And Research | Method and system for generating / decrypting ciphertext, and method and system for searching ciphertexts in a database |
JP6381128B2 (ja) * | 2015-02-05 | 2018-08-29 | 国立研究開発法人産業技術総合研究所 | 検索システム、クライアント、サーバ、検索プログラムおよび検索方法 |
CN107852324B (zh) * | 2015-06-02 | 2020-11-10 | 瑞典爱立信有限公司 | 用于加密消息的方法和加密节点 |
EP3119031A1 (en) | 2015-07-16 | 2017-01-18 | ABB Schweiz AG | Encryption scheme using multiple parties |
US9846785B2 (en) | 2015-11-25 | 2017-12-19 | International Business Machines Corporation | Efficient two party oblivious transfer using a leveled fully homomorphic encryption |
US10554384B2 (en) | 2016-03-17 | 2020-02-04 | Microsoft Technology Licensing, Llc | Aggregation of encrypted data |
US10055602B2 (en) * | 2016-04-19 | 2018-08-21 | International Business Machines Corporation | Securely processing range predicates on cloud databases |
US10210266B2 (en) | 2016-05-25 | 2019-02-19 | Microsoft Technology Licensing, Llc | Database query processing on encrypted data |
US10095880B2 (en) | 2016-09-01 | 2018-10-09 | International Business Machines Corporation | Performing secure queries from a higher security domain of information in a lower security domain |
US10187199B2 (en) | 2016-09-09 | 2019-01-22 | Microsoft Technology Licensing, Llc | Aggregation based on splayed data |
CN106571905B (zh) * | 2016-11-02 | 2019-05-17 | 南京邮电大学 | 一种数值型数据同态保序加密方法 |
CN106506165B (zh) * | 2016-11-02 | 2019-06-21 | 西安电子科技大学 | 基于同态加密的虚拟资产匿名排序方法 |
WO2018082008A1 (en) * | 2016-11-04 | 2018-05-11 | Nokia Technologies Oy | Secure distributed data processing |
CN106788994B (zh) * | 2016-12-06 | 2020-04-07 | 中国电子科技集团公司第三十二研究所 | 适用于云存储系统的密钥更新方法 |
US10812252B2 (en) | 2017-01-09 | 2020-10-20 | Microsoft Technology Licensing, Llc | String matching in encrypted data |
US11196541B2 (en) | 2017-01-20 | 2021-12-07 | Enveil, Inc. | Secure machine learning analytics using homomorphic encryption |
US11290252B2 (en) | 2017-01-20 | 2022-03-29 | Enveil, Inc. | Compression and homomorphic encryption in secure query and analytics |
US10771237B2 (en) | 2017-01-20 | 2020-09-08 | Enveil, Inc. | Secure analytics using an encrypted analytics matrix |
US10873568B2 (en) | 2017-01-20 | 2020-12-22 | Enveil, Inc. | Secure analytics using homomorphic and injective format-preserving encryption and an encrypted analytics matrix |
US11777729B2 (en) | 2017-01-20 | 2023-10-03 | Enveil, Inc. | Secure analytics using term generation and homomorphic encryption |
US11507683B2 (en) | 2017-01-20 | 2022-11-22 | Enveil, Inc. | Query processing with adaptive risk decisioning |
FR3062936B1 (fr) | 2017-02-15 | 2021-01-01 | Wallix | Procede de recherche d'informations dans un corpus chiffre stocke sur un serveur |
US11196539B2 (en) | 2017-06-22 | 2021-12-07 | Microsoft Technology Licensing, Llc | Multiplication operations on homomorphic encrypted data |
US10541805B2 (en) | 2017-06-26 | 2020-01-21 | Microsoft Technology Licensing, Llc | Variable relinearization in homomorphic encryption |
US10749665B2 (en) | 2017-06-29 | 2020-08-18 | Microsoft Technology Licensing, Llc | High-precision rational number arithmetic in homomorphic encryption |
WO2019010430A2 (en) * | 2017-07-06 | 2019-01-10 | Robert Bosch Gmbh | METHOD AND SYSTEM FOR PUBLICITY BY SOCIAL MEDIA PRESERVING CONFIDENTIALITY |
US10540356B2 (en) | 2017-10-25 | 2020-01-21 | International Business Machines Corporation | Transparent analytical query accelerator over encrypted data |
US10698883B2 (en) | 2017-10-25 | 2020-06-30 | International Business Machines Corporation | Data coherency between trusted DBMS and untrusted DBMS |
US10601580B2 (en) | 2017-11-20 | 2020-03-24 | International Business Machines Corporation | Secure order preserving string compression |
US11194922B2 (en) | 2018-02-28 | 2021-12-07 | International Business Machines Corporation | Protecting study participant data for aggregate analysis |
US20200367834A1 (en) * | 2018-03-05 | 2020-11-26 | Omron Corporation | Device for predicting body weight of a person and device and method for health management |
CN108829774A (zh) * | 2018-05-30 | 2018-11-16 | 东南大学 | 一种使用双密钥的云存储密文全文检索方法 |
US11818204B2 (en) * | 2018-08-29 | 2023-11-14 | Credit Suisse Securities (Usa) Llc | Systems and methods for calculating consensus data on a decentralized peer-to-peer network using distributed ledger |
CN109117676B (zh) * | 2018-10-23 | 2022-02-25 | 杭州弗兰科信息安全科技有限公司 | 一种基于泄序算法的数据库密文比较检索方法 |
US10902133B2 (en) | 2018-10-25 | 2021-01-26 | Enveil, Inc. | Computational operations in enclave computing environments |
US10817262B2 (en) | 2018-11-08 | 2020-10-27 | Enveil, Inc. | Reduced and pipelined hardware architecture for Montgomery Modular Multiplication |
CN109522320B (zh) * | 2018-11-12 | 2022-08-02 | 杭州弗兰科信息安全科技有限公司 | 一种服务于数据库同态加密的优化方法 |
JP7514232B2 (ja) * | 2018-11-15 | 2024-07-10 | ラヴェル テクノロジーズ エスアーエールエル | ゼロ知識広告方法、装置、およびシステムのための暗号化匿名化 |
US11184149B2 (en) * | 2019-02-19 | 2021-11-23 | International Business Machines Corporation | Computing range queries over encrypted data |
US11205194B2 (en) | 2019-04-30 | 2021-12-21 | Advanced New Technologies Co., Ltd. | Reliable user service system and method |
US11539517B2 (en) * | 2019-09-09 | 2022-12-27 | Cisco Technology, Inc. | Private association of customer information across subscribers |
US11941619B2 (en) * | 2019-12-12 | 2024-03-26 | Paypal, Inc. | Validation and storage of transaction data for a blockchain |
US11222134B2 (en) | 2020-03-04 | 2022-01-11 | Sotero, Inc. | System and methods for data encryption and application-agnostic querying of encrypted data |
CN111931253B (zh) * | 2020-09-15 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 基于节点群的数据处理方法、系统、设备和介质 |
US11601258B2 (en) | 2020-10-08 | 2023-03-07 | Enveil, Inc. | Selector derived encryption systems and methods |
US11677549B2 (en) | 2021-03-30 | 2023-06-13 | International Business Machines Corporation | Maintaining confidentiality in decentralized policies |
WO2023283423A1 (en) | 2021-07-09 | 2023-01-12 | Sotero, Inc. | Autonomous machine learning methods for detecting and thwarting malicious database access |
US12032694B2 (en) | 2022-09-14 | 2024-07-09 | Sotero, Inc. | Autonomous machine learning methods for detecting and thwarting ransomware attacks |
CN118363986A (zh) * | 2024-04-18 | 2024-07-19 | 贝格迈思(深圳)技术有限公司 | 密态数据库的加密和解密方法以及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1786963A (zh) * | 2005-07-21 | 2006-06-14 | 曾致中 | 一种数据库密文查询的方法 |
CN102314580A (zh) * | 2011-09-20 | 2012-01-11 | 西安交通大学 | 一种基于向量和矩阵运算的支持计算的加密方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7395437B2 (en) * | 2004-01-05 | 2008-07-01 | International Business Machines Corporation | System and method for fast querying of encrypted databases |
WO2006017362A2 (en) * | 2004-07-13 | 2006-02-16 | Freedom Software, Inc. | Storing and distributing encrypted digital content |
US20100146299A1 (en) * | 2008-10-29 | 2010-06-10 | Ashwin Swaminathan | System and method for confidentiality-preserving rank-ordered search |
US8861716B2 (en) * | 2010-03-30 | 2014-10-14 | International Business Machines Corporation | Efficient homomorphic encryption scheme for bilinear forms |
US8862895B2 (en) * | 2010-04-27 | 2014-10-14 | Fuji Xerox Co., Ltd. | Systems and methods for communication, storage, retrieval, and computation of simple statistics and logical operations on encrypted data |
US8681973B2 (en) * | 2010-09-15 | 2014-03-25 | At&T Intellectual Property I, L.P. | Methods, systems, and computer program products for performing homomorphic encryption and decryption on individual operations |
-
2013
- 2013-06-21 US US14/410,548 patent/US10027486B2/en active Active
- 2013-06-21 CN CN201380043719.7A patent/CN104620533B/zh not_active Expired - Fee Related
- 2013-06-21 EP EP13806581.8A patent/EP2865127A4/en not_active Withdrawn
- 2013-06-21 AU AU2013277948A patent/AU2013277948B9/en active Active
- 2013-06-21 WO PCT/AU2013/000674 patent/WO2013188929A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1786963A (zh) * | 2005-07-21 | 2006-06-14 | 曾致中 | 一种数据库密文查询的方法 |
CN102314580A (zh) * | 2011-09-20 | 2012-01-11 | 西安交通大学 | 一种基于向量和矩阵运算的支持计算的加密方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2013188929A1 (en) | 2013-12-27 |
EP2865127A1 (en) | 2015-04-29 |
CN104620533A (zh) | 2015-05-13 |
AU2013277948B9 (en) | 2018-02-15 |
AU2013277948B2 (en) | 2017-08-17 |
US10027486B2 (en) | 2018-07-17 |
EP2865127A4 (en) | 2016-03-09 |
AU2013277948A1 (en) | 2015-02-05 |
US20150295716A1 (en) | 2015-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104620533B (zh) | 用于数据库查询的同态加密 | |
Yang et al. | Lightweight and privacy-preserving delegatable proofs of storage with data dynamics in cloud storage | |
Nabeel et al. | Privacy preserving policy-based content sharing in public clouds | |
Rady et al. | Integrity and confidentiality in cloud outsourced data | |
Kumar et al. | Data integrity proofs in cloud storage | |
Abadi et al. | O-PSI: delegated private set intersection on outsourced datasets | |
Yang et al. | Achieving efficient and privacy-preserving cross-domain big data deduplication in cloud | |
Bösch et al. | Distributed searchable symmetric encryption | |
Xiang et al. | Achieving verifiable, dynamic and efficient auditing for outsourced database in cloud | |
Wang et al. | Is homomorphic encryption the holy grail for database queries on encrypted data? | |
Ying et al. | Reliable policy updating under efficient policy hidden fine-grained access control framework for cloud data sharing | |
Gahi et al. | A secure multi-user database-as-a-service approach for cloud computing privacy | |
Liu | Securing outsourced databases in the cloud | |
Rong et al. | Privacy‐Preserving k‐Means Clustering under Multiowner Setting in Distributed Cloud Environments | |
Park et al. | PKIS: practical keyword index search on cloud datacenter | |
Mei et al. | Practical Multi-Source Multi-Client Searchable Encryption With Forward Privacy: Refined Security Notion and New Constructions | |
Muhammad et al. | A secure data outsourcing scheme based on Asmuth–Bloom secret sharing | |
Barouti et al. | Symmetrically-private database search in cloud computing | |
Manasrah et al. | An investigation study of privacy preserving in cloud computing environment | |
Yoosuf et al. | FogDedupe: A Fog‐Centric Deduplication Approach Using Multi‐Key Homomorphic Encryption Technique | |
Blömer et al. | Cloud architectures for searchable encryption | |
Shen et al. | Ensuring query completeness in outsourced database using order-preserving encryption | |
Carbunar et al. | Joining privately on outsourced data | |
CN115361218B (zh) | 一种具有查询隐匿特性的云端数据存在性验证方法 | |
Ma et al. | PPGJ: A privacy‐preserving general join for outsourced encrypted database |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180821 Termination date: 20200621 |
|
CF01 | Termination of patent right due to non-payment of annual fee |