CN109643359B - 控制密钥-值存储的验证 - Google Patents
控制密钥-值存储的验证 Download PDFInfo
- Publication number
- CN109643359B CN109643359B CN201780041173.XA CN201780041173A CN109643359B CN 109643359 B CN109643359 B CN 109643359B CN 201780041173 A CN201780041173 A CN 201780041173A CN 109643359 B CN109643359 B CN 109643359B
- Authority
- CN
- China
- Prior art keywords
- key
- value
- received
- data
- request
- 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.)
- Active
Links
Images
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/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/3234—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 involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
- G06F21/645—Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- 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/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
- H04L9/3242—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 involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
Abstract
对托管在不可信模块(UM)处的数据集的数据操作的完整性的延迟验证被控制。控制包括生成对数据集的数据操作的请求。该请求包括认证部分。向UM发送请求。从UM接收对请求的响应。响应包括密码验证信息,密码验证信息证明:数据操作关于对数据集的先前数据操作的完整性。响应包括来自可信模块(TM)处的延迟验证的结果。
Description
背景技术
电子设备的用户经常需要访问数据存储系统(例如,密钥-值存储),以获取各种类型的信息和/或执行各种操作。已经设计了很多不同的技术,用于控制数据存储系统中的数据项的存储和检索。数据操作的完整性是持续关注的问题,因为数据所有者可能不知道对他们的数据存储或对他们的数据的操作的功能的篡改。
发明内容
根据一个总体方面,一种用于对数据操作的完整性的验证进行控制的系统可以包括至少一个硬件设备处理器,以及存储器,存储客户端安全密钥值,并且存储可执行指令,可执行指令在被执行时引起至少一个硬件设备处理器中的一个或多个硬件设备处理器:对被托管在不可信模块(UM)处的数据集上的数据操作的完整性的延迟验证进行控制。该控制包括:生成对数据集上的至少一个数据操作的请求,请求包括认证部分。从UM接收对请求的响应。响应包括密码验证信息,密码验证信息证明:至少一个数据操作关于对数据集的先前数据操作的完整性,响应包括:来自可信模块(TM)处的延迟验证的结果。
根据另一方面,通过以下来对被托管在不可信模块(UM)处的数据集上的数据操作的完整性的验证进行控制:在可信模块(TM)处接收第一消息,第一消息指示:来自与TM共享密码密钥的客户端的请求,请求针对数据集上的至少一个数据操作,请求包括来自客户端的认证部分。发送指示对所接收的请求的响应的第二消息,响应包括密码验证信息,密码验证信息证明:至少一个数据操作关于对数据集的先前数据操作的完整性。
根据另一方面,一种系统包括至少一个服务器,该至少一个服务器包括至少一个硬件设备处理器;以及不可信模块(UM),该UM包括存储数据集并且存储可执行指令的存储器,可执行指令在被执行时引起至少一个硬件设备处理器中的一个或多个硬件设备处理器:从客户端接收对数据集上的至少一个数据操作的请求,请求包括认证部分。从可信模块(TM)接收对请求的响应,响应包括密码验证信息,密码验证信息证明:至少一个数据操作关于对数据集的先前数据操作的完整性。TM包括与客户端共享的密码密钥。向客户端转发对请求的所接收的响应。
提供本“发明内容”是为了以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“发明内容”不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。在附图和以下描述中阐述了一个或多个实现的细节。根据说明书和附图以及权利要求,其他特征将是很清楚的。
附图说明
图1是用于控制示例数据存储系统中的数据安全性的示例架构的框图。
图2是使用示例索引的示例不可信模块(UM)密钥-值数据库的框图。
图3示出了用于示例可信模块(TM)查找操作的示例伪代码。
图4示出了示例TM插入操作的示例伪代码。
图5示出了示例TM删除操作的示例伪代码。
图6示出了用于存储器操作的示例读取和写入的示例伪代码。
图7示出了用于示例历元(epoch)转变的示例伪代码。
图8是由示例UM生成的、用于TM处理的示例分批的框图。
图9是使用现场可编程门阵列(FPGA)的示例TM的示例实现的框图。
图10是示出示例可能攻击的示例客户端工作流的框图。
图11是用于控制加密数据库管理系统中的安全性的示例系统的示例架构的框图。
图12示出了示例MERKLE树实现。
图13示出了工作负载A的吞吐量的示例实验结果。
图14示出了工作负载B的吞吐量的示例实验结果。
图15示出了工作负载C的吞吐量的示例实验结果。
图16示出了工作负载D的吞吐量的示例实验结果。
图17示出了工作负载C的吞吐量的示例实验结果,其改变UM核和TM核的数目。
图18示出了PCIe利用的示例实验结果。
图19示出了等待时间的示例实验结果。
图20示出了在延迟验证下吞吐量的示例实验结果。
图21A-图21C是示出图11的系统的示例操作的流程图。
图22A-图22E是示出图11的系统的示例操作的流程图。
图23A-图23C是示出图11的系统的示例操作的流程图。
具体实施方式
I.导言
硬件平台的最新发展已经利用各种处理器和各种存储设备来努力提供更高的性能(例如,速度、效率)和更安全的机密数据处理。数据操作的完整性是持续关注的问题,因为数据所有者可能不知道对他们的数据存储或对他们的数据的操作的功能的篡改。
本文中讨论的示例技术可以提供密钥-值存储,该密钥-值存储提供强大的完整性保证,同时有利地保持与可能不提供这种保证的当前系统可竞争的高性能。如本文中使用的,“完整性保证”是指以下保证,该保证使得可以可证实地检测对密钥-值存储(例如,数据库)或其功能的任何篡改。本文中讨论的示例技术可以高度并行地来高效处理并发操作,并且可以使用小的可信计算基础(例如,安全的可信的计算基础)。
本文中讨论的示例技术可以提供不可信-可信功能的设计,以最小化可信功能痕迹(例如,可信计算基础)。
本文中讨论的示例技术可以提供用于实现不可信功能的优化。
此外,本文中讨论的示例技术可以提供用于实现可信功能的优化。
此外,本文中讨论的示例技术可以提供可信功能的并行化。
本文中讨论的示例技术可以包括用于在现场可编程门阵列(FPGA)上实现可信功能的技术。
设计防篡改数据库系统的示例目标是:使用密码技术确保未授权和潜在恶意用户不能改变数据库的状态。常规方法可以使用MERKLE树;然而,这种技术可能涉及最多每秒数百次量级的操作的性能。本文中讨论的示例技术可以提供:可以每秒处理数百万次操作的防篡改系统。这样的示例方法可以基于FPGA安全协处理器和定期验证数据库完整性的协议。这样的示例方法可以高度并行化,以处理并发请求。这样的示例方法可以进一步有利地涉及小的、可验证的可信代码库,使得漏洞可以不太可能危及系统的安全性。
完整性是很多云提供商可能希望向其客户提供的安全保证的示例。如本文中讨论的,实现完整性的系统检测未被授权的用户是否对服务状态(诸如文件系统、数据库系统或密钥-值存储)进行改变。例如,完整性保护措施可以检测:在运行这样的服务的计算机上获取根访问权限的攻击者是否改变HR(人力资源)数据库中员工的工资。例如,完整性还可以提供针对“回放攻击”的帮助,其中未被授权用户试图回滚(roll back)服务状态,从而消除诸如电子支付等最近变化的影响。
用于实现完整性的常规技术可以依赖于密码散列和MERKLE树。例如,系统状态(数据值)的密码散列可以存储在安全位置,该安全位置通常可以是客户端。散列的无冲突属性表示:对数据的任何未被授权的改变也改变其散列,并且因此可以通过将新计算的散列与存储在安全位置的散列进行比较来检测。MERKLE树是一种示例技术,其可以使这种密码散列增量可更新并且在本地可验证;因此,没有必要扫描整个数据库,以更新或验证散列。这种方法可以提供针对实质上强大的攻击者(诸如对服务和运行该服务的计算机具有根访问权限的系统管理员和数据库管理员)的完整性保证。在云方案中,这表示云提供商对于完整性验证是不可信的。这种方法的基础假定包括:散列的无冲突属性和存储散列的位置的安全性。
然而,基于MERKLE树的方法可能在以高效方式实现该方法的努力方面提出挑战。例如,最近的基于MERKLE树的实现(参见例如Proceedings of the 29th IEEEInternational Conference on Data Engineering(ICDE),2013,页码529-540,Jain等人,“Trustworthy Data from Untrusted Databases”)报告:每秒几百个密钥-值操作的吞吐量。对于很多云服务而言,这个性能可能是不足的,因此在实践中,只能针对少数高安全性应用实现完整性。基于MERKLE树的方法的一个潜在性能问题是:读取和写入操作可能涉及对数开销,以导航和更新MERKLE树的节点。另一潜在的问题是:MERKLE树可能会限制并发性,因为每个操作(包括读取)可能需要更新MERKLE树的根。结果,根节点可能成为热点,并且可能需要序列化所有操作,以便以正确的顺序更新MERKLE树的根。该序列化可以限制并行性,并且通过扩展可以限制潜在吞吐量。此外,使用客户端作为存储散列的安全位置的常规方法可能由于网络等待时间而引入性能开销。
已经在为外包数据库提供完整性保证方面做了大量工作(参见例如Jain等人的上述文献;Journal of Computer Security,11(3),2003,页码291-314,Devanbu等人的“Authentic Data Publication over the Internet”;Proceedings of the A CM SIGMODInternational Conference on Management of Data,2006,页码121-132,Li等人的“Dynamic Authenticated Index Structures for Outsourced Databases”;Proceedingsof the 11th International Conference on Extending Database Technology(EDBT),2008,页码476-486,Singh等人的“Ensuring Correctness over Untrusted PrivateDatabase”)。大部分工作依赖于MERKLE树(MHT)(参见例如Proceedings of the 1987Conference on the Theory and Applications of Cryptographic Techniques(CRYPTO),1987,页码369-378,RC Merkle的“A Digital Signature Based on aConventional Encryption Function”)变型,并且在客户端处存储MERKLE树的散列。如图12所示,MERKLE树可以用于生成存储在外包数据库中的数据的正确性和完整性的证明。图12示出了一种代表性的MHT变型;Li等人的如上所述的文献提供了对其他示例变型的调查。图12示出了基于B树的MHT 1202。如图12所示,密钥31(1204)的证明是包括节点P8、P2和P0(1206、1208、1210)的路径。具有P0 1210的密码散列1214的客户端1212能够验证密钥31(1204)存在于数据库中。相同的证明还表明密钥32不存在。
在这项工作的大部分中,MERKLE树直接在数据上构建,这表示树的叶节点包括数据库中的记录。该方法可能对更新不是友好的:对数据库的任何改变都可能导致MERKLE树的(非交换)结构改变,这可能涉及对根的独占访问,这可能会限制并发性。因此,很多常规工作集中在数据发布设置中,并且假定不频繁变化。例外的是Jain等人的上述文献的工作,其提供了用于确保来自多个客户端的更新的事务完整性的示例协议。该示例协议通过让特殊客户端(数据所有者)跟踪事务上的MHT根散列变化来工作。对于密钥-值工作负载,它们报告在每秒数百个事务的范围内的数字。但是,它们的解决方案是通用的。
使用客户端来存储MHT散列的趋势的例外在Proc.of the VLDB Endowment,6(7),2013,页码529-540,Bajaj等人的“CorrectDB:SQL Engine with Practical QueryAuthentication”中讨论,其讨论了使用服务器共同定位的安全硬件;但是它们的工作重点是分析性工作负载,而不是事务性工作负载。例如,Goodrich等人的(Proceedings of the2008 Cryptographers’Track at the RSA Conference(CTRSA),2008,页码407-424的“Super-efficient Verification of Dynamic Outsourced Databases”)提出了在MHT上的算法思想,导致了亚对数验证。
关于数据库完整性的一些工作依赖于公钥密码和数字签名(参见例如Proceedings of the 20th IEEE International Conference on Data Engineering(ICDE),2004,页码560-571,Pang等人的“Authenticating Query Results in EdgeComputing”;Proceedings of the ACM SIGMOD International Conference onManagement of Data,2005,页码407-418,Pang等人的“Verifying Completeness ofRelational Query Results in Data Publishing”;A CM Transactions on Storage(TOS),卷2,期号2,2006,页码107-138,Mykletun等人的“Authentication and Integrityin Outsourced Databases”。)然而,这些系统的性能可能不如使用MERKLE树的那些系统有利,因为它们依赖于明显较慢的公钥密码。上述Pang等人的“VerifyingCompleteness ofRelational Query Results in Data Publishing”提供了对相邻密钥对上的签名的示例概念。
使用本文中讨论的示例技术,至少可以实现完整性,并且保持每秒数百万次操作的吞吐量。高性能高度可扩展的密钥-值存储的一个示例设计和实现在本文中可以称为CVTREE,但是本文中的讨论不旨在限于这一个示例实现。尽管本文中在密钥-值存储的上下文中示出示例结果,但是本领域技术人员将理解,本文中讨论的示例技术也可以更广泛地应用于例如文件系统和更通用的数据库系统。
CVTREE中的完整性的示例实现以至少两种方式与常规技术不同。首先,CVTREE可以使用安全(例如,基于云)的硬件来存储秘密,并且对这些秘密执行计算。具体地,CVTREE可以使用安全(例如,基于云的)FPGA(参见例如International Conference on Field-Programmable Logic,Reconfigurable Computing,and Applications,2012,页码63-70,Eguro等人的“FPGAs for Trusted Cloud Computing”),其中每个服务器具有集成的FPGA,以允许在服务器内执行完整性检查,而不会导致网络等待时间。例如,FPGA的设计可以使得:在用户无法检测到违规行为的情况下,即使提供CVTREE服务的云提供商也无法篡改FPGA或违反完整性。
其次,CVTREE可以基于延迟验证模型。CVTREE可以例如调节Blum等人的算法(参见例如Algorithmica,卷12,期号2-3,1994,页码225-244,Blum等人的“Checking theCorrectness of Memories”),而非对每次读取或写入操作(通常用MERKLE树实现的模型)验证完整性。例如,可以周期性地验证整个密钥-值存储的完整性。检测到违规时,应用可能会将密钥值存储回滚到上一验证状态。因此,示例CVTREE实现可能会受到性能/可用性权衡的影响:验证频率越低,性能越高,但在完整性泄露事件中丢失的工作越多。
本文中讨论的示例技术可以将完整性验证集成到实质上高性能的密钥-值存储中。例如,这种适配可以包括:用于应用于密钥-值存储的特定模型并且通过利用诸如批处理等技术来实现有利性能的技术。该方法的一个示例有利益处是:每次读取和写入操作可以产生恒定的开销(例如,与用于基于MERKLE树的方法的对数开销相比)。
本文中讨论的示例技术可以实现基本上无限的并发和并行。实现完整性的常规方法(包括基于MERKLE树的方法和Blum等人讨论的方法(参见例如上述Blum等人的文献)涉及以连续顺序执行基本上所有操作。相对比地,CVTREE原则被设计用于实现并发操作并且最大化并行机会。相对比地,在测试本文中讨论的示例技术时,系统的性能已经很好地扩展到至少18个核,并且可能远远超出。
本文中讨论的示例技术可以利用FPGA,以便保持和计算可能对完整性问题的解决方案有利的秘密。
下面讨论CVTREE的端到端功能。示例CVTREE实现可以提供密钥-值存储功能。示例数据模型是密钥-值对,其具有从有序域抽取的密钥和从任意域抽取的值(未解释)。示例支持操作包括:插入新的密钥-值对,查找或更新与现有键相关联的值,以及删除存储的密钥-值对。通过修改,可以扩展示例CVTREE以支持其他常见的密钥-值存储操作,诸如更新插入(upsert)。
这四个操作可以由授权客户端同时调用,并且CVTREE可以确保并发操作的效果基本上等同于这些操作的某个串行执行。CVTREE也可以支持范围查找,但可能无法保证:范围查找的结果关于其他操作是串行的。此外,可以保证任何提交的操作的结果——其结果已经被传达回客户端的操作——是持久的。针对这些操作的示例语义是针对未经篡改的处理的情况。下面讨论当存在对抗性篡改时的示例保证和语义。
在本文中讨论的示例中,可以构建CVTREE使得其大部分处理和数据存储发生在不可信环境(例如,商品云基础设施)中。即使该示例基础架构受到损害,CVTREE也可以保证可以检测到篡改数据或处理的任何对手企图。CVTREE的示例实现依赖于在安全硬件上运行的小型可信模块(TM);TM与安全硬件一起形成CVTREE的示例可信计算基础(TCB),并且,对于该示例,这些是客户端需要信任以用于正确的密钥-值存储功能的唯一组件。
为了在依赖于安全硬件的同时形式化由示例CVTREE提供的保护,引入了示例恶意对手MALLORY。如本文中讨论的,除了安全硬件之外,MALLORY可以具有运行CVTREE的系统的管理特权。它们可以改变不可信系统中的CVTREE处理,修改存储器和磁盘内容以及任何外部和内部通信(包括安全硬件的通信)。它们不能观察或任意改变安全硬件或其内部数据中的处理;但是,它们可以重置安全硬件,这会导致在其中运行的可信模块恢复到其初始状态。
例如,CVTREE可以提供针对MALLORY的功能完整性。如本文中讨论的,这种“功能完整性”表示MALLORY不会在不被检测和标记的情况下引发错误。如果没有检测到异常行为,则对CVTREE的任何一组(可能是并发的)所提交操作的结果可能与针对对正确的、未受损害的密钥-值存储的这些操作的某个串行执行而获取的结果基本上相同。可以注意到,功能完整性可以暗示数据完整性,因为数据篡改将导致某些后续操作的不正确结果。对于该示例,CVTREE的持久性保证仅在MALLORY没有进行篡改时才有效——这可以删除数据库的全部内容。此外,对于范围扫描,完整性保证可能略有不同;范围返回的记录可以保证在某个连续的时间窗口内有效。
CVTREE的功能完整性保证可以通过后验验证来提供,其中(非正式地)TM可以在证明操作的结果之前验证MALLORY没有引入错误(例如,客户端在没有TM证明的情况下不信任操作的结果)。区分在线验证和延迟验证:在在线情况下,操作有效性的验证发生在操作提交之前,并且其结果被发送到客户端,而在延迟情况下,验证发生在特定客户端操作的上下文之外,例如每五分钟一次。例如,在这种情况下,MALLORY可能会在被检测到之前的五分钟的持续时间中进行篡改。
本文中的讨论呈现了用于延迟和在线验证两者的CVTREE的轻微变型。作为示例,可以利用对延迟验证的较弱保证,来获取更有利的性能和代码简单性。
虽然本文中讨论的焦点涉及功能完整性,并且很多讨论和评估涉及明文数据,但CVTREE能够处理加密数据。例如,存储在CVTREE中的值可能是未解释的二进制大对象,因此客户端可以存储加密值而不是明文值。四个示例基本密钥-值存储操作(插入、查找、删除和更新)可能仅涉及对密钥的相等操作;因此,本文中讨论的示例CVTREE可以支持确定性加密的密钥。
CVTREE的示例实现可能不提供与操作进度相关的保证。特别地,MALLORY可以任意减慢操作或诱使其中止。MALLORY也可能影响操作的序列化顺序。
在示例实现中,如图1所示,CVTREE服务器102可以包括在云服务器上运行的不可信模块(UM)104、以及在安全硬件上运行的可信模块(TM)106。例如,TM 106和UM 104在概念上可以是交换消息108以实现服务器功能的两个过程。示例设计目标可以包括保持TM 106功能简单:小型TM 106可以提供安全优势,允许形式验证,并且对安全硬件的选择施加更少的约束(参见例如Proceedings of the 31st IEEE International Conference on DataEngineering(ICDE),2015,Arasu等人的“Transaction Processing on ConfidentialData using Cipherbase”)。
示例CVTREE服务器102可以与使用上述操作的一个或多个客户端110交互,以生成和查询密钥-值数据。例如,服务器102可以使用标准公钥基础结构机制来认证合法客户端110。由于TM 106被客户端110信任,因此它们可以验证TM 106功能的完整性。这些细节可能是安全硬件特定的;例如,在INTEL SGX上,基于CPU的证明(参见例如Proceedings of the2nd Workshop on Hardware and Architectural Support for Security and Privacy(HASP),2013,Anati等人的“Innovative Technology for CPU Based Attestation andSealing”)可以用于该目的。
在下文中,为了简单起见,假定合法客户端110和TM 106共享在(密钥-值)数据库的生命周期内保持有效的秘密对称的密钥SKey 112。在实践中,可能希望使用短期会话密钥,并且本文中讨论的示例技术适用于处理该设置。
如下所示,表1总结了可以由客户端110用来发送密钥-值操作114并且由服务器102用来发送回(即,返回)结果116的示例协议。如图1所示,托管在客户端110处的应用118可以将密钥-值操作114发送到服务器102并且从服务器102接收结果116。
表1
表1所示的参数和结果是由使用SKey 112生成的消息认证码(MAC)来保护的完整性。如本文中使用的,消息认证码(MAC)(参见例如Chapman and Hall/CRC Press,2007,Katz等人的Introduction to Modern Cryptography)指的是:针对消息的、可以用于保护其完整性的密钥密码校验和。只有有权访问密钥的各方才能生成并且验证使用该密钥生成的MAC;此外,对消息的任何改变都会改变其MAC,并且因此可以以很大的概率被检测到。因此,只有有权访问SKey 112的客户端110和TM 106才能生成这样的MAC。特别地,客户端110可以针对查询结果采取服务器生成的MAC,其具有由TM 106做出的结果116有效的证明。
表1示出了用于成功的操作的示例客户端CVTREE协议。如表1所示,oid是唯一的操作id(标识符),L、I、U、D表示操作的标识符,并且succ编码成功的操作。服务器102针对失败的操作以<Oid,fail>,MACSKey(Oid||Succ)来响应。
注意到示例协议的两个细节:首先,每个操作与在所有客户端110上唯一的操作id(oid)相关联。例如,TM 106可以检查唯一性以防止MALLORY的任何回放攻击,它可能只是重新提交先前的合法客户端操作。其次,生成新值v、操作id为ov的插入/更新操作发送单独的MACSKey(ov||v)来保护该值。这可以简化服务器102中的值处理,其中ov可以用作值v的标识符,如下面进一步讨论的。如果服务器102需要为操作id为ol的后续查找操作返回值v,则它以<ol,ov,v>、MACSKey(ol||ov),和MACSKey(ov||v)进行响应;第二MAC仅是由客户端110先前发送的、生成操作ov的MAC。
CVTREE服务器102的示例实现可以依赖于经验证的存储器的抽象。例如,经验证的存储器的实例可以是在本文中称为经验证的单元(vcell)的被寻址的存储器位置的集合,被物理地存储在UM存储器120中,其仅允许TM 106授权的修改。TM 106未检测到未由TM 106发起的任何修改(诸如MALLORY启动的修改),并且这些修改被标记为完整性违规。对经验证的存储器的操作可以通过消息传递108来发生:UM 104将vcell的地址和内容发送到TM106,TM 106在任何改变的情况下进行响应。
以下进一步讨论经验证的存储器实现的示例。当UM 104将vcell发送到TM 106时,UM 104中的“较低”层添加单元未被篡改的证明;TM 106内的对应层检查证明,并且将vcell转发到“更高”的TM 106层,以进行进一步处理。下面讨论如何在示例CVTREE实现中实现示例密钥-值存储功能,假定经验证的存储器抽象。
经验证的存储器的实例VMKV可以用于存储密钥-值数据库。对于该讨论,(kl,vl),...,(kn,vn)表示数据库中的当前密钥-值对,并且ol,...,on分别表示最后更新这些密钥的操作的id。此外,在不失一般性的情况下,假定其中-∞和+∞分别表示密钥域的最小值和最大值(即,密钥可以假定的值)。例如,形式为<ki,ki+l,oi>的三元组被存储在VMKV的(n+1)个任意位置。VMKV的所有其他位置可以存储指示空单元的特殊值<-,-,->。VMKV与当前密钥-值数据库之间的这种关系在本文中可以称为状态不变量。图2示出了四个密钥-值对的数据库的一个可能的示例VMKV状态。图2示出了具有经验证的存储器VMKV 202的密钥-值数据库222的示例UM 104状态:操作15、17、21和12分别插入的<2,v15>、<3,v17>、<5,v21>和<7,v12>。如图所示,数据库222利用密钥索引204。经验证的存储器VMKV 202中的每个条目包括密钥值206、下一密钥值208和xid值210。此外,经验证的存储器VMKV 202中的每个条目可以通过地址值212来定位。
在以下讨论中,VMKV[a]表示地址a(212)处的vcell,并且VMKV[a].key、VMKV[a].nextkey和VMKV[a].oid表示这个单元的三个字段(206、208、210)。在图2中,VMKV[4].key=7。
单元VMKV[a]=<ki,ki+l,oi>被视为与半开区间[ki,ki+l)相关联。根据VMKV状态不变量,与非空单元相关联的间隔集合对密钥域进行分区。该观察结果可以用于将密钥k的“证明”单元定义为唯一单元VMKV[a]=<ki,ki+l,oi>,使得ki≤k<ki+l;注意,k的证明单元足以确定密钥k当前是否在数据库中。在图2中,密钥4的证明单元是VMKV[7]=<3,5,17>(其确定密钥4在数据库中不存在)。
如图2所示,UM 104还存储由oi索引的所有<oi,vi,MACSKey(oi||vi)>三元组的值表214,以将操作id oi(216)映射到值vi(218)和值MACs(220),MACSKey(oi|vi);后者是客户端110发送的值MAC,其发起如上所述的操作oi。
以下讨论四个密钥-值操作的示例实现。
图3示出了用于示例可信模块(TM)查找操作的示例伪代码300。对于具有密钥kl(304)和操作id ol(306)的查找操作302,UM 104向TM 106发送参数kl(304)、ol(306)、操作MAC(308)和kl的证明单元VMKV[a](310),操作MAC(308)是由客户端110发送的MAC,其保护ol和kl的完整性,如上所述。用于查找操作的TM 106步骤在图3中示出。TM 106使用操作MAC(308)来检查(312)查找操作的完整性,并且检查VMKV[a](310)是kl(306)的正确证明单元;可以执行第二检查,因为MALLORY可以诱导UM 104发送无效的证明单元。假定这些检查通过,如果VMKV[a].key=kl,则TM 106推断查找成功,否则失败。假定在VMKV[a]=<ki,ki+l,oi>(其中ki=kl)的情况下查找成功。TM 106将MACSKey(ol|oi)发送回UM 104。为了完成查找,UM104从值表214中查找,值MAC(220),MACSKey(oi||vi)和与ki相关联的值vi(218),并且向客户端110发送结果元组<ol,oi,vi>以及MACSKey(ol|oi)和MACSKey(oi||vi)。结果经由UM 104发送(314)到客户端110。
图4示出了用于示例TM插入操作的示例伪代码400。对于事务id为oins的<kins,vins>对的示例插入402,UM 104向TM 106发送参数oins(404)和kins(406)、操作MAC(408)、kins的证明单元TMKV[a1](410)、以及空单元TMKV[a2](412)。TM 106使用提供的MAC来检查插入参数的完整性,检查(414)VMKV[a1]是kins的正确证明单元,并且检查VMKV[a2]是空单元。假定VMKV[a1]=<ki,ki+1,oi>,如果ki<kins<ki+l,则插入成功。在这种情况下,TM 106更新(416)VMKV[a1]←<ki,kins,oi>并且VMKV[a2]←<kins,ki+1,Oi>。可以注意到,该更新保持VMKV状态不变。如果ki=kins,则kins是现有密钥ki的副本,并且插入失败而没有任何状态改变。TM 106向UM104发送(418)更新后的单元和证明操作成功或失败的MAC,MAC由UM 104转发到客户端110。如果插入成功,则UM 104还向值表214添加新条目<oins,vins,MACSKey(oins|vins)>。
图5示出了用于示例TM删除操作502的示例伪代码500。对于用于删除事务id为odel(504)的密钥kdel(504)的示例实现,UM 104发送MACop(508)、以及kdel的证明单元VMKV[a1](510)及其前一单元,单元VMKV[a2](512)的属性为VMKV[a2].nextkey=VMKV[a1].key。TM 106检查(514)参数以及单元VMKV[a1]和VMKV[a2]的有效性。假定VMKV[a1]=<ki,ki+1,oi>并且VMKV[a2]=<ki-1,ki,oi-1>。如果Kdel=ki,则删除成功并且TM 106更新(516)VMKV[a2]←<ki-l,ki+l,Oi-l>并且VMKV[a1]←<-,-,->以反映删除;否则,VMKV保持不变(518)。在任一情况下,TM 106发送(520)更新后的单元和证明操作结果的MAC,MAC由UM 104转发到客户端110。
更新操作的示例实现可以类似于其他操作的实现。对于所有四个操作,TM 106还可以检查操作id的唯一性,即,先前没有看到操作id。该检查的有效实现(例如,不要求TM106存储所有操作id)可以取决于客户端如何生成唯一操作id。例如,下面讨论的集合上的散列函数可以用于该目的。
在示例实现中,MALLORY不能影响密钥-值存储操作的完整性。MALLORY不可以引入其自身的操作,因为它不可以为操作生成MAC;由于TM 106检查操作id的唯一性,因此它不可以回放先前的操作。因此,TM 106可以仅评估合法的客户端操作。密钥-值数据库202的当前状态完全编码在事务id用作值的“代理”的VMKV的单元中。通过构造,MALLORY不可以改变VMKV,并且对VMKV的所有改变都在TM 106内安全地发生。最后,一旦TM 106确定了操作的结果,MALLORY不可以改变结果,因为TM生成的MAC保护该结果。
所有操作中的示例UM 104步骤包括标识证明单元VMKV[a]=<ki,ki+l,oi>,其针对客户指定密钥kop,具有ki≤kop<ki+l的属性。为了有效地实现该步骤,UM 104可以保持将密钥映射到VMKV地址的密钥-值索引204:对于每个非空VMKV[a]=<ki,ki+l,oi>,索引204存储<ki,a>对。该索引204不涉及任何完整性保护:如果MALLORY篡改索引204,则UM 104将挑选将由TM 106检测到的错误的证明单元(例如,图3中的步骤4)。
下面讨论可以在CVTREE中使用以使用延迟验证来实现经验证的存储器的示例技术。在TM读取和写入时查看对经验证的存储器的操作可能是方便的——每个vcell访问是读取或读取然后写入——注意UM 104选择TM 106读取/写入的vcell。因此,TM 106的目标可以是:验证每个读取看到最后的TM 106写入相同位置的内容。如本文中使用的,术语“有效载荷”可以是指存储在vcell中的实际内容;例如,如在上面的讨论中使用的,有效载荷可以是三元<ki,ki+l,oi>。
在延迟验证中,验证步骤可以与正常存储器操作去耦合。为了实现延迟验证,可以将存储器视为存在于历元中,并且可以在该历元内执行操作。周期性地,如外部配置所指定的,存储器可以转变到下一历元,并且可以在TM 106处运行验证步骤,该验证步骤检查存储器在前一历元期间表现正确。为了简化表示,可以最初假定在历元转变期间暂停正常存储器操作(下面进一步讨论示例非静态实现)。
每个vcell与时间戳相关联,该时间戳表示当前历元中TM最后访问vcell的时间;这里,“时间”指的是访问的位置,并且可以使用TM内的简单计数器来实现。在该部分中,vcell被表示为对VM[a]=<p,t>,其中p表示有效载荷,并且t表示时间戳。对于VM[a]上的操作,UM发送<p,t>对,并且如果操作是读-写,则TM可以用新的时间戳t′和(可选地)新的有效载荷p′进行响应。延迟验证的示例特性是,即使对于读取也可以生成新的时间戳,这对于下面进一步讨论的用于恢复的日志记录具有影响。vcell的时间戳和有效载荷都可以存储在UM存储器中,因此MALLORY可以修改它们。即使MALLORY确实修改了UM中的这些值,也可能需要确保检测到完整性破坏。
为了帮助解释验证,将TM 106想象为保持具有时间戳的vcell内容的读取集合RS和写入集合WS可能是有用的。这些集合的元素是<a,p,t>形式的三元组;当是RS的一部分时,元素<a,p,t>表示TM106看到vcell VM[a]=<p,t>用于读取操作;当是WS的一部分时,元素<a,p,t>表示TM 106回写VM[a]=<p,t>作为操作的输出。在正确的存储器行为下,TM 106读回它写入的内容,因此验证涉及检查RS=WS。为了减少TM 106空间要求,可以使用在<地址,有效载荷,时间戳>三元组上定义的散列函数h。散列函数是(1)无冲突的,表示不同集合以很大的概率散列到不同的值;并且(2)递增地可更新,表示h(S∪{<a,p,t>})可以从h(S)和<a,p,t>来计算。TM 106保持h(RS)和h(WS),并且验证现在涉及检查这两个散列值的相等性。
用于延迟验证的TM 106步骤在图6-图7中给出。本文中用于讨论验证正确性的“想象”集合RS和WS的保持在评论内示出(用表示)。TM 106在内部保持当前历元(e)、时间戳计数器(T)以及RS(hrs)和WS(hws)的散列;散列由历元索引,以指示它们对应于哪个历元。通过在每个vcell上调用转变单元过程,来执行历元转变。设N表示经验证的存储器的大小。在从e-1转变到e之后,/>并且WS包含N个元素,每个vcell一个元素,它们都用时间戳0初始化(步骤8-9)。
图6示出了针对存储器操作的示例读取和写入的示例伪代码600。如图6所示,伪代码600示出了读取VM[a]=<p,t>并且写回<p’,t’>的存储器操作的示例读写。如图6所示,e(历元)和T(时间戳计数器)是TM内部状态变量。
例如,考虑VM[a]=<p,t>上的操作。TM 106可以首先调用函数(602)读取(a,p,t),其在将vcell传递到更高层之前将<a,p,t>添加到RS(604)。假定更高层功能将有效载荷更新为p′。TM 106调用写入(a,p′)方法(606),其确定(608)新时间戳t′并且写回(610)VM[a]←<p′,t′>。该过程还使用<a,p′,t′>更新WS。在正确的存储器行为下,当先前访问VM[a]时,元素<a,p,t>将已被添加到WS;因此,在每个操作之后成立的是以下不变条件:RS是WS的子集,其具有与每个vcell的最新时间戳相对应的N个更少的元素。
图7示出了用于示例历元转变702的示例伪代码700。当从历元e转变到e+1时,TM106读取每个vcell VM[a]=<p,t>并且向RS添加(704)元素<a,p,t>,它在转变结束时使RS=WS。当被读入TM 106时,MALLORY可以改变vcell的有效载荷或时间戳,并且可以证明任何这样的篡改导致RS≠WS。因此,在历元转变结束时,TM 106检查hrs=hws(706)以验证存储器在历元e中表现正确。
表2
表2示出了在具有4个操作的大小为2的延迟存储器的历元期间对WS和RS的示例改变。在表2中,r1表示对vcell 1的读取,其使有效载荷保持不变,并且w0(p′0)是将vcell 0的有效载荷改变为p′0的写入。
令RF表示将<地址,有效载荷,时间戳>映射到{0,1}m的随机函数。可以实现示例散列函数使得集合的散列简单地是它在RF下的元素的图像的xor(异或)。散列函数h是递增地可更新的,因为/>并且是无冲突的:
一个微妙之处在于,如果MALLORY篡改存储器,则RS可以是具有重复元素的多重集合;由于不同的时间戳,可以保证WS不会重复。引理1的轻微泛化可以用于表示:针对由示例延迟验证方案产生的任何RS≠WS,h(RS)≠h(WS)。示例实现可以使用基于AES的伪随机函数(PRF)(参见例如2006,RFC 4615,Song等人的“The Advanced Encryption Standard-Cipher-based Message Authentication Code-Pseudo-Random Function-128(AES-CMAC-PRF-128)Algorithm for the Internet Key Exchange Protocol(IKE)”),而不是具有从SKey和e导出的密钥的RF。假定MALLORY无法区分PRF和RF,可以表明:任何不正确的存储器行为都会导致验证失败。
在示例非静态实现中,后台UM 104线程可以连续地扫描将每个vcell从当前历元转变到下一历元的存储器;正常操作可能在其他线程中同时发生。在任何给定点,一些vcell将转变到下一历元(e+1),并且其余vcell仍然在历元e中。TM 106可以保持对应于两个活动历元的两个读取和写入集合:对转变到e+1的vcell的操作更新RS[e+1]和WS[e+1],并且对其余vcell的操作更新RS[e]和WS[e]。TM 106还可以使用内部状态来跟踪历元转变扫描的哪个部分已经完成,以帮助验证每个vcell的历元。
该示例技术可以针对每个操作产生2个PRF计算,并且针对每个历元转变产生2N个(单独的)PRF计算,其中N是存储器的大小。如果对于Ω(N)运算,历元足够长,则每个操作的总摊余成本可以是O(1)个PRF计算,其与基于MERKLE树的方法的对数(散列)成本相比较可以是有利的。
例如,在Blum等人的上述文献中讨论了用于离线验证的散列读取和写入集合的常规使用。然而,相反,本文中讨论的示例技术可以采用示例系统适配来实现连续的延迟验证。本文中讨论的这种示例技术可以涉及非静态操作、并发和恢复(下面进一步讨论),这至少对于性能和正确性可能是有利的。另一示例差异涉及散列函数:示例常规散列函数可以使用复杂构造,其目标是最小化用于其构造的随机位的数目。相反,本文中讨论的示例技术可以改为依赖于标准加密原语(PRF(伪随机函数))的猜想硬度:本文中讨论的示例散列函数可以是简单的,并且可以最终依赖于广泛可用和优化的AES(高级加密标准)块密码(参见例如上述Song等人的文献)。
常规的UM-TM配置可能涉及UM 104与TM 106之间的显著的通信等待时间。例如,如果FPGA用于实现TM 106功能,则任何通信可能至少引起通过PCIe(外围组件互连快速)总线的、外部设备访问的等待时间。在TM 106的片上实现中可能出现类似的等待时间,诸如使用INTEL SGX(参见例如Proceedings of the 11th USENIX Symposium on OperatingSystems Design and Implementation(OSDI),2014,页码267-283,Baumann等人的“Shielding Applications from an Untrusted Cloud with Haven”)。
CVTREE的示例实现可以使用批处理跨多个事务来分摊该等待时间。如本文中使用的,“批处理”指的是UM 104与TM 106之间的通信单元,并且可以包括一系列操作(例如,事务)以及与这些操作相关联的vcell。例如,TM 106可以分批处理所有操作并且响应所有操作的结果。响应包括操作的结果MAC。对于该示例实现,TM 106不显式地发送vcell的已更新内容。UM 104可以“预测”TM 106将如何更新vcell并且可以自己应用更新。可以注意到,TM106时间戳计数器虽然在TM 106内部,但对于每个vcell写入确定性地增加1,因此UM 104可以能够预测已更新的时间戳。
UM 104本身可以计算对vcell的UM授权更新的这一事实使得能够解耦UM 104和TM106处理。UM 104可以使要由TM 106处理的任何数目的“未来”分批排队,而无需等待TM 106返回当前分批。
批处理还可以实现可以减少TM 106验证工作的示例优化:当分批内的多个操作接触相同的vcell时,UM 104仅在应用分批中的任何一个操作之前发送具有初始状态的vcell的单个版本;TM 106在应用接触vcell的所有操作之后计算最终状态。仅初始版本对读取集合散列有贡献,以及仅最终版本对写入集合散列有贡献。在没有批处理的情况下,每个中间版本可能有助于读写集合散列。该优化可以不影响完整性,因为vcell的中间版本存在于TM106内并被保护以免受MALLORY影响。
图8是由示例UM 104生成的、用于TM 106处理的示例分批802、804的框图800。此外,图8示出了批处理优化。在初始状态806,CVTREE(例如,UM 104)分别接收具有密钥10、20、30、40的四个插入操作808、810、812、814,并且这些操作在两个分批802、804(例如,由UM104生成)中被发送到TM 106:在分批0(802)中发送前两个插入808、810,并且在分批1(804)中发送后两个插入(812、814)。在接收来自TM 106的实际响应之前,UM 104可以针对由插入808引起的变化来预测和更新经验证的存储器的状态,(并且因此创建插入810并且将插入810发送到TM 106)。
在分批0(802)内,插入10和20(808、810)都涉及VM[1]。第一插入808在逻辑上将VM[1]的有效载荷改变为(10,∞,o1);该版本是用于具有密钥20的第二插入操作810的证明单元(参见例如证明840),这将有效载荷改变为(10、20,o1)。作为分批0(802)的一部分,UM104仅发送VM[1]的初始状态816:<1,(-,-,-),0>。在TM 106中,该版本用于更新读取集合散列。只有最终版本<1,(10,20,o1),2>用于更新写入集合散列。UM 104可以预测分批0结束时用于VM[1]的最终时间戳是2(818),并且可以更新其经验证的存储器的状态,而不需要TM106发送时间戳。
如图8所示,初始状态806和在分批802、804的操作之后的状态830可以包括地址820、密钥822、下一密钥824、xid 826(例如,x1,x2,...,xi)和时间戳828的值。如图8所示,初始状态806可以包括示例状态816、832、834、836、838。如图8所示,分批1(804)可以包括状态840,状态840指示在处理分批0(802)的插入810之后的已更新状态834。
例如,在处理操作808(以将10插入到x1中)时,x1的初始状态816(即,<1,(-,-,-),0>)被更新为具有密钥值10。在处理操作810时,x1的下一密钥值被更新为20(在地址1,对于已更新状态816),而x2的初始状态834(即,<2,(-,-,-),0>)被更新为具有密钥值20(在地址2处,对于已更新状态834)。
本文中讨论的示例UM 104实现是多线程的并且除了短期vcell粒度自旋锁之外是无锁的,这表示使用原子操作来访问和更新所有共享状态。
每个密钥-值操作可以(大部分)由单个UM 104线程处理。该处理的核心可以涉及标识用于操作的密钥的证明-vcell。如上所述,这是具有属性ki≤k<ki+1的唯一vcell<ki,ki+1,ol>,其中k是由操作指定的密钥。为了有效地实现该步骤,在一个示例实现中,CVTREE可以使用常规的密钥-值存储,来索引当前数据库密钥的vcell地址。例如,实现可以使用BW-TREE(参见例如Proceedings of the 29th IEEE International Conference on DataEngineering(ICDE),2013,页码302-313,Levandoski等人的“The Bw-Tree:A B-tree fornew hardware platforms”),其是可以利用包括多个CPU核的现代硬件的示例无锁主存储器密钥值存储。实验结果表明,CVTREE中的大部分计算工作(考虑到TM 106内的工作)遍历这个索引结构。例如,这可以表示索引技术的未来进步可以有利地直接插入CVTREE,以得到改善的性能。
一旦线程标识出证明-vcell,它就锁定vcell,将vcell的内容复制到用于TM 106的分批绑定上,并且在解锁vcell之前更新内容。例如,每个vcell可以具有相关联的锁,并且锁可以保持基本上短的持续时间(例如,硬件指令的10s)。例如,实现可以基于自旋锁。
可以注意到,多线程UM 104实现不影响本文中的完整性讨论。例如,这些可以仅依赖于保持不变的事物的TM 106视图。有趣的是,TM 106的事物视图可以修复密钥-值操作的序列化顺序,这是TM 106看到的操作的顺序。
根据本文中讨论的示例技术,存在很多方式可以实现CVTREE TM。例如,CVTREE TM可以在FPGA上实现。作为另一示例,可以使用旨在在诸如INTEL SGX等平台上运行的C++动态链接库(DLL)(参见例如Proceedings of the 2nd Workshop on Hardware andArchitectural Support for Security and Privacy(HASP),2013,McKeen等人的“Innovative instructions and software model for isolated execution”)。例如,可以使用高度优化的FPGA TM实现,其能够以接近可以将数据传输到FPGA的线路速率来执行验证。下面讨论示例FPGA实现。
如本文中讨论的,对于批处理,TM 106功能可以涉及每个分批:(1)更新针对所有(或基本上所有)vcell的读取集合散列,(2)检查操作的MAC以验证其完整性,(3)根据操作来更新输入vcell的内容,(4)使用已更新vcell来更新写入散列,以及(5)生成结果的MAC作为输出,以保护发送到客户端110的结果的完整性。例如,可以用于集合散列的PRF是AES-CMAC-PRF 128(参见例如2006,RFC 4615,Song等人的“The Advanced EncryptionStandard-Cipher-based Message Authentication Code-Pseudo-Random Function-128(AES-CMAC-PRF-128)Algorithm for the Internet Key Exchange Protocol(IKE)”);所以用于更新集合散列并且生成MAC的功能可能是相同的。
用于实现AES-CMAC的示例中央模块是AES块计算,其涉及多轮几乎相似的计算。例如,可以展开这些轮,以实现每个AES块计算的完全流水线实现。假定没有数据停顿,该实现的一个实例可以实现每个FPGA时钟周期一个AES块计算的吞吐量。
例如,每个输入批处理可以被序列化为vcell和操作的序列:假定vcell和操作被流式传输到FPGA上,并且示例AES块实现可以以完全流水线的方式来计算散列更新和MAC,相同的AES模块(例如,图9中的A902)可以用于两种计算。图9是使用FPGA的示例TM的示例实现的框图900。VCell可以存储在内部存储器(模块B 904)中并且由输入操作(模块C 906)更新。如上所述,可以通过多个操作来更新vcell,并且可以使用vcell的最终更新版本来更新写入集合散列。作为优化,每当更新vcell时,可以推测性地计算写入集合散列增量;如果再次更新相同的vcell,则可以撤消先前的更新(例如,通过对先前的散列增量进行xor(异或)),并且应用新的增量。
例如,单独的AES模块(例如,D 908和E 910)可以用于计算写入集合散列值和结果MAC。例如,后者(910)可以流出以返回到UM 104。
理论上,对于其中参数oins(404)和kins(406)、操作MAC(408)、kins的证明单元TMKV[a1](410)和空单元TMKV[a2](412总共为384位的示例系统,如本文中讨论的示例FPGA架构可以能够在每个周期流式传输一个128位数据片段(912)。在175MHz的频率下,示例FPGA TM可以处理19M个插入操作/秒和27M个查找操作/秒。如实验结果所示,这远远高于20核UM104实现可以作为输入生成的。此外,示例实现可以使用21%的FPGA资源(例如,在ALTERASTRATIX V GSD5板上),因此可以使用下面讨论的示例技术来运行多个TM 106实例。
如上所述,示例UM 104实现可以是多线程的,但是在上面的讨论中已经假定单个有状态TM 106实例。使用如下所述的实验,可以证明,当存在大量UM 104线程时,它们可以生成足够的TM 106验证工作,使得单个TM 106实例可以成为瓶颈。因此,下面讨论示例UM-TM协议的示例扩展,其允许任何数目的TM 106实例以几乎解耦的方式同时运行,其中TM106实例仅需要在历元转变期间进行协调。
到目前为止讨论的CVTREE的完整性可以依赖于单个TM 106对存储在经验证的存储器内的数据的操作的顺序处理。为了提高性能,可以将操作分批成分批b0,b1,...,;分批bi中的操作在逻辑上发生在bj(i<j)之前。用于扩展到多个TM的示例总体方案是使用这些TM来模拟单个TM 106的顺序处理。为了描述模拟,在下面的讨论中,假定的单个TM 106可以表示为STM,并且多个TM表示为TM1,...,TMm。
如上所述,UM 104可以跟踪STM的内部时间戳计数器T;它可以利用此来生成与TM106处理解耦的分批工作。令Ti表示在开始处理分批bi时STM所具有的时间戳计数器的值。因此,T0=0并且如果分批bi包括N个vcell,则Ti+1=Ti+N。
在通过TM1,...,TMm对STM进行的模拟时,每个TMi可以不再保持内部时间戳计数器。相反,为了处理分批bj,UM 104可以选择一些空闲TMi并且提供Tj作为附加输入。STM还具有UM不知道的其他内部状态——读取和写入集合散列。在模拟中,每个TMi可以在内部保持独立于其他TM的读取写入集合散列。为了处理分批bj,TMi可以将其临时时间戳计数器重置为Tj,并且在STM处理时处理分批bj,在更新其自己的内部读取写入集合散列时除外。该模拟可以不准确,因为TMi和STM更新不同的散列值,但在数学上是等效的。可以理解,STM本将看到的读取和写入集合现在被划分为:不同的TM TMi所看到的读取和写入集合。从示例散列函数的分布特性可以得出,TMi的读取集合散列的xor 914等于STM的读取集合散列(分别为写入集合散列)。在历元结束时,TM可以聚合该历元的读取和写入散列,并且检查读取集合散列的xor 914是否等于写入集合散列的xor 916。假定UM 104不篡改它作为输入提供给TM的Ti值,可以理解,由MALLORY进行的任何经验证的存储器篡改都以很大的概率被检测到。
然而,上述协议的缺陷是,MALLORY可以诱导UM 104提供不正确的时间戳值作为输入,并且模拟可能不再等同于STM的处理。为了避免这种情况,例如,全局TM 106计数器可以存储在特殊的vcell中。因此,当UM 104在处理具有N个vcell的批量bj时提供Tj作为TMi的输入时,值Tj可以用于更新TMi的读取集合散列,并且可以使用在处理bj结束时的已更新值Tj+N来更新TMi的写入集合散列。通过这些改变,可以在下一历元转变处检测到对时间戳计数器值的任何篡改。
作为使该协议形式正确的示例添加,每个TMi可以保持其已经处理的vcell的数目的本地计数;在历元转变时,可以根据任何TMi看到的时间戳计数器的高水位标记来检查本地计数的总和。可以注意到,STM可以使用另一内部计数器来跟踪历元转变的进度。例如,如针对时间戳所描述的,该计数器可以保存在被存储在UM 104中的vcell中,并且作为输入被提供给TMi。
TM 106可以被视为示例抽象,其提供对手无法访问的数据和代码执行的位置。例如,CVTREE可以依赖于使用安全硬件实现的小型可信模块(TM)106。
在示例实现中,CVTREE可以使用基于FPGA的安全硬件来实现TM 106(例如,使用专用硬件来提供隔离(例如,存储器保护))。FPGA已经用于安全应用(参见例如CambridgeUniversity,April 2008,S.Drimer的“Volatile FPGA design security-a survey”)。特别地,在云设置中使用FPGA作为安全硬件有几个好处(参见例如InternationalConference on Field-Programmable Logic,Reconfigurable Computing,andApplications,2012,页码63-70,Eguro等人的“FPGAs for Trusted Cloud Computing”)。
在示例实现中,FPGA平台可以通过标准PCIe总线与主机CPU通信。存在其他备选通信机制,诸如HyperTransport/QPI或将FPGA阵列部署为网络设备。还有一些性能特征可以特定于示例FPGA/PCIe平台。例如,可以有两种备选方式来通过PCIe进行通信:(a)MMIO(存储器映射的I/0)和(b)DMA(直接存储器访问)。例如,MMIO通信可能适用于非常小的传输。另一方面,DMA可以为更大的传输提供更有利的性能,但是可以涉及不可忽视的启动成本。例如,在用于测试的示例平台中,从4B-16KB的DMA传输引起基本上相同的延迟。另一潜在的问题是,FPGA固有地高度并行,但可能具有有限的顺序计算能力(参见例如Proc.of the VLDBEndowment,2(1),2009,页码910-921,Mueller等人的“Data Processing on FPGAs”)。此外,FPGA可以具有少量的快速片上存储器和更大的更慢的片外存储器(分别为几个MB与GB数量级)。
可以注意到,CVTREE的设计可以容易地可移植到TM的其他物理实现。例如,这种灵活性是最小TM设计的结果。例如,TM 106的候选可以包括INTEL软件保护扩展(SGX)(参见例如Proceedings of the 2nd Workshop on Hardware and Architectural Support forSecurity and Privacy(HASP),2013,McKeen等人的“Innovative Instructions andSoftware Model for Isolated Execution”)。该示例包括:允许在被称为“包围区”的受保护地址空间内创建过程的一组指令。例如,包围区内的数据和计算可以被保护以免受包括OS在内的所有其他过程影响。
下面讨论用于恢复的示例机制。恢复系统的目标如下。首先,在合法崩溃(没有恶意活动)的情况下,可以支持基本恢复,并且可以将密钥-值数据库恢复到上一提交状态。其次,在存在恶意攻击者的情况下,系统可以能够检测到将数据库恢复到所篡改的状态的任何尝试。
如上所述,TM可以保持hws[e]和hrs[e],这使得它能够验证RS=WS。为了启用基本的基于日志的恢复机制,可以使用以下扩展。TM可以保持用于保持所有提交操作的读取集合和写入集合的一组附加的散列值(hwscommit[e]和hrscommit[e])。例如,通过利用少量NVRAM,可以确保状态可以存留TM崩溃。UM可以在将日志存留到稳定存储器之后明确地指示到TM的操作的提交。例如,可以实现32nd IEEE Symposium on Security and Privacy(S&P2011),May 2011,页码379-394,Parno等人的“Memoir:Practical State Continuity forProtected Modules”的技术以使用TPM来存储这样的经屏蔽的存留状态。
在系统崩溃的情况下,UM可以运行标准恢复算法,其中它可以重做/撤消任何适当的事务。任何未提交的事务都可能被丢弃,并且运行恢复算法结束时的状态应当与TM中对应于所有提交事务的存留状态相同(即,所计算的hws[e]和hrs[e]应当匹配hwscommit[e]和hrscommiut[e])。UM可以明确地向TM发信号通知恢复过程的结束,此时将检查上述条件。如果恢复算法通过了这些检查,则可以保证恢复点是合法的未被篡改的点。在恢复操作完成并且经过验证之前,TM可能不接受任何新操作。根据恢复算法,系统可以利用检查点来减少恢复时间。示例检查点还可以包括相应的hws[e]和hrs[e]值。
如果MALLORY运行错误的恢复算法或者篡改日志或先前的检查点,则在恢复过程结束时的验证检查将失败。虽然协议可以保证在存在将数据库恢复到经修改的状态的恶意企图时的检测,但是数据库可能会恢复到不可恢复的状态。此时,它可能构成拒绝服务(DOS)攻击,因为TM将停止处理进一步的操作。在这种情况下,客户端的唯一动作过程可以是:使用已经保存的数据库的任何先前经验证的备份。可以注意到,商业密钥值存储可以采用类似的模型,其中用户可以最终利用定期备份作为保证可恢复性的手段。但是,这可能只能保证恢复到数据库的上一备份版本。这可以通过利用具有足够信息来重建数据库的客户端查询日志来进一步改进(这可能有点类似于命令日志的概念(参见例如2014 IEEE 30thInternational Conference on Data Engineering(ICDE),March 2014,页码604-615,Malviya等人的“Rethinking Main Memory OLTP Recovery”)。
以下讨论说明示例系统如何检测活动对手(例如,MALLORY)可能尝试的不同攻击(这些攻击中的一些已经在上面讨论过)。图10中示出了示例客户端110的示例基本工作流1000。对于该示例,每个输入客户端查询1002涉及以下步骤:
1)UM 104中的一些处理1004。
2)涉及TM 106的经验证的存储器操作1006。
3)涉及UM/TM的操作的日志记录1008。
4)结果1010通信。
对于该示例,假定MALLORY可以在这些处理步骤中的任何一个处引起错误(图10示出了不同的攻击模式以及MALLORY可以诱导它们的工作流中的不同点)。特别地,考虑以下攻击。虽然这些攻击并非是穷尽的,但它们可以强调客户端CVTREE协议对各种攻击模式的可靠性。
1)欺骗客户端连接:MALLORY可以尝试欺骗客户端并且运行操作。
2)修改客户端请求:MALLORY可以修改输入客户端请求(例如,修改在查找操作中使用的密钥)。
3)回放客户端请求:MALLORY可以回放较旧的客户端请求(例如,先前的更新请求)。
4a)修改KV数据库:MALLORY可以修改密钥-值数据库中的单元(例如,将VMKV[7]=<2,3,15>修改为VMKV[7]=<2,4,15>)。
4b)修改值表:MALLORY可以交换值表中的值(例如,交换v12和v15)。
5)修改密钥索引:MALLORY可以修改密钥索引(例如,删除索引中的密钥)。
6)延迟/重新排序操作:MALLORY可以排序和延迟客户端请求。
7)重置TM 106:MALLORY可以关闭TM 106并且重新启动它。
8)修改验证检查:MALLORY可以修改针对验证检查的输入。
9)修改恢复算法:MALLORY可以修改恢复算法(例如,以不重做所有提交的事务)。
10)修改日志文件:MALLORY可以修改日志文件(例如,删除提交的日志记录)。
11)回放结果:MALLORY可以缓存并且回放针对特定查找查询的较旧的结果。
12)修改结果:MALLORY可以修改在结果中返回的值。
如图10所示,示例攻击模式1-3可以发生在客户端查询1002处,示例攻击模式4a-6可以发生在UM处理1004处,示例攻击模式7-8可以发生在UM处理1006处,示例攻击模式9-10可以发生在UM日志记录1008处,并且示例攻击模式11-12可以发生在UM结果1010通信处。
下面示出的表3表示用于上述攻击的示例检测机制。
攻击模式 | 检测机制 |
欺骗客户端连接 | MACop=MACSKey(ol||L||kl) |
修改客户端请求 | MACop=MACSKey(ol||L||kl) |
回放客户端请求 | Unique(oid) |
修改密钥索引 | VMKV[a]:key≤kl<nextkey |
修改KV数据库 | hws[e]=hrs[e] |
修改值表 | MACresult=MACSKey(oid||val) |
延迟/重新排序操作 | 不影响正确性 |
重置TM | TM状态被重新初始化(DOS攻击) |
修改验证检查 | hws[e]=hrs[e] |
修改恢复算法 | hws[e]=hwscommit[e](DOS Attack) |
修改日志文件 | hws[e]=hwscommit[e](DOS Attack) |
回放结果 | MACresult=MACSKey(roid||val) |
修改结果 | MACresult=MA CSKey(roid||val) |
表3
对于每次攻击,指示将检测到攻击的不变量(对这些不变量的检查被明确地包括在图3-图7中)。可以注意到,可以在线检测一些攻击(例如,欺骗客户端连接,修改客户端请求,修改结果,回放结果)。其他一些攻击(例如,修改KV数据库)可以不被立即检测到,但可以在下一验证检查期间被检测到。MALLORY也可以任意延迟或重新排序操作,但这可能只影响操作的提交顺序并且可能不会影响系统的正确性。最后,其中一些攻击(例如,重置TM,修改恢复算法,修改日志文件)可能导致拒绝服务(DOS)攻击。例如,为了从这些攻击中恢复,客户端可以求助于使用合适的恢复选项。
II.示例操作环境
本文讨论的特征被提供作为示例技术,该示例实施例可以不脱离本文讨论的情况下以计算领域的技术人员能够理解的许多不同方式实现。这些特征仅被解释为示例特征,而不旨在被解释为仅限于那些详细描述。
图11示出了可以实现本文所讨论的主题的方面的合适的计算系统环境1100的示例。计算系统环境1100仅是合适的计算环境的一个示例,并且不旨在对本文讨论的主题的方面的使用范围或功能提出任何限制。也不应将计算环境1100解释为对示例操作环境1100中示出的任何一个组件或其组合具有任何依赖性或要求。
本文讨论的主题的方面可与许多其它通用或专用计算系统环境或配置一起操作。可适用于与本文描述的主题的方面的公知的计算系统、环境或配置的示例包括:个人计算机,服务器计算机-裸机或虚拟机-,手持或膝上型装置,多处理器系统,基于微控制器的系统,机顶盒、可编程和非可编程消费电子,网络PC,小型计算机,大型计算机,个人数字助理(PDA),游戏装置,打印机,包括机顶盒、媒体中心的家用电器或其它家用电器,汽车嵌入式或附接式计算装置,其它移动装置,包括蜂窝电话、无线电话和有线电话的电话装置,包括任何上述系统或装置的分布式计算环境等。虽然各种实施例可以限于一种或多种上述装置,但是除非另有说明,否则术语计算机旨在覆盖上述装置。
本文描述的主题的方面可以在由计算机执行的计算机可执行指令(诸如程序模块)的一般上下文中描述。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本文描述的主题的方面还可以在分布式计算环境中实践,其中任务由通过通信网络链接的远程处理装置执行。在分布式计算环境中,程序模块可以位于包括存储器存储装置的本地和远程计算机存储介质中。
备选地或附加地,本文描述的功能可以至少部分地由一个或多个硬件逻辑组件执行。例如但不限于,可以使用的说明性类型的硬件逻辑组件包括:现场可编程门阵列(FPGA)、程序专用集成电路(ASIC)、程序专用标准产品(ASSP)、芯片系统(SOC)、复杂可编程逻辑装置(CPLD)等。
参照图11,用于实现本文讨论的主题的方面的示例系统包括以计算机1110形式的通用计算装置。计算机可以包括能够执行指令的任何电子装置。计算机1110的组件可以包括处理单元1120、系统存储器1130、以及将包括系统存储器的各种系统组件耦合到处理单元1120的一个或多个系统总线(由系统总线1121表示)。系统总线1121可以是包括使用各种总线架构中的任意总线架构的存储器总线或存储器控制器、外围总线和本地总线的几种类型的总线结构中的任意总线结构。作为示例而非限制,这种架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、也称为夹层总线的外围组件互连(PCI)、外围组件互连扩展(PCI-X)总线、高级图形端口(AGP)和高速PCI(PCIe)。
计算机1110通常包括各种计算机可读介质。计算机可读介质可以是能够由计算机1110访问的任何可用介质,并且包括易失性和非易失性介质、以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质(或“计算机可读存储介质”)包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括:RAM、ROM、EEPROM、固态硬盘、闪存或其它存储器技术、CD-ROM、数字通用光盘(DVD)、蓝光光盘(BD)或其它光盘存储(例如,通用串行总线(USB)驱动、硬盘驱动)、磁带盒、磁带、磁盘存储或其它磁存储装置、或者可以用于存储所需信息并且能够由计算机1110访问的任何其它介质。“计算机存储介质”与“通信介质”不同。因此,如本文所使用的,术语“计算机可读存储介质”本身不是信号,也不是任何类型的传播信号。
“通信介质”通常以诸如载波或其它输送机制的经调制数据信号的形式实施计算机可读指令、数据结构、程序模块或其它数据,并且包括任意信息传送介质。术语“经调制数据信号”表示以对信号中的信息编码的方式设定或改变其一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、RF、红外和其它无线介质的无线介质。上述任意组合也应被包括在计算机可读介质的范围内。
系统存储器1130可以包括以诸如只读存储器(ROM)1131和随机存取存储器(RAM)1132的易失性和/或非易失性存储器形式的计算机存储介质。非易失性存储器可以替换ROM1131和/或RAM 1132中的一些或全部。例如,可以使用忆阻存储器、相变存储器(PCM)或一些其它类型的非易失性存储器来代替ROM 1131和/或RAM 1132,或者可以在ROM 1131和/或RAM 1132之外还使用忆阻存储器、相变存储器(PCM)或一些其它类型的非易失性存储器。
包含诸如在启动期间有助于在计算机1110内的元件之间传递信息的基本例程的基本输入/输出系统1133(BIOS)通常被存储在ROM1131中。RAM 1132通常包含立即可访问处理单元1120和/或当前正在由处理单元1120操作的数据和/或程序模块。作为示例而非限制,图11示出了操作系统1134、应用程序1135、其它程序模块1136和程序数据1137。
计算机1110还可以包括其它可移除/不可移除、易失性/非易失性计算机存储介质。仅作为示例,图11示出了从不可移除非易失性磁介质读取或写入不可移除非易失性磁介质的硬盘驱动器1141、从可移除非易失性磁盘1152读取或写入可移除非易失性磁盘1152的磁盘驱动器1151、以及从可移除非易失性光盘1156(诸如CD ROM、DVD、BD)或其它光学介质读取或者写入可移除非易失性光盘1156(诸如CD ROM、DVD、BD)或其它光学介质的光盘驱动器1155。
在一个实施方式中,可以使用忆阻存储器、相变存储器或一些其它类型的非易失性存储器代替硬盘驱动器1141,或者除硬盘驱动器1141之外还可以使用忆阻存储器、相变存储器或一些其它类型的非易失性存储器。
可以在示例操作环境中使用的其它可移除/不可移除、易失性/非易失性计算机存储介质(或“计算机可读存储介质”)包括:磁带盒、闪存卡和其它固态存储装置、数字碟片、其它光盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器1141可以通过接口140被连接到系统总线1121,磁盘驱动器1151和光盘驱动器1155可以通过用于可移除非易失性存储器的接口(诸如接口1150)而被连接到系统总线1121。
在上面讨论并在图11中示出,驱动器及其相关计算机存储介质为计算机1110提供计算机可读指令、数据结构、程序模块和其它数据的存储。在图11中,例如,硬盘驱动1141被示出为存储操作系统1144、应用程序1145、其它程序模块1146和程序数据1147。注意到,这些组件可以与操作系统1134、应用程序1135、其它程序模块1136和程序数据1137相同或不同。操作系统1144、应用程序1145、其它程序模块1146和程序数据1147在本文给出不同的附图标记,以说明它们可能是不同的。
用户可以通过诸如键盘1162和指点装置1161(通常指鼠标、轨迹球或触摸板)的输入装置将命令和信息键入到计算机1110中。其它输入装置(未示出)可以包括麦克风(例如,用于输入语音或其它音频)、操纵杆、游戏板、卫星天线、扫描仪、触敏屏幕、书写板、相机(例如,用于输入手势或其它视觉输入)等。这些和其它输入装置通常通过被耦合到系统总线的用户输入接口1160而被连接到处理单元1120,但是也可以通过诸如并行端口、游戏端口或通用串行总线(USB)的其它接口和总线结构而被连接。
通过使用上述输入装置中的一个或多个,可以建立自然用户界面(NUT)。NUI可以依赖于话语识别、触摸和手写笔识别、屏幕上和屏幕附近两者的手势识别、空中手势、头部和眼睛追踪、语音和话语、视觉、触摸、手势、机器智能等。为了与用户交互而可以采用的一些示例性NUI技术包括:触敏显示器、语音和话语识别、意图和目标理解、使用深度相机(诸如立体相机系统、红外相机系统、RGB相机系统和其组合)的运动手势检测、使用加速度计/陀螺仪的运动手势检测、面部识别、3D显示、头部、眼睛和凝视追踪、沉浸式增强现实和虚拟现实系统、以及使用电场感应电极(EEG和相关方法)来感测大脑活动的技术。
监控器1191或其它类型的显示装置也经由诸如视频接口1190的接口被连接到系统总线1121。除了监控器之外,计算机还可以包括其它外围输出装置、诸如扬声器1197和打印机1196,其可以通过输出外围接口1195连接。
计算机1110可以使用与一个或多个远程计算机(诸如远程计算机1180)的逻辑连接在联网环境中操作。远程计算机1180可以是个人计算机、服务器、路由器、网络PC、对等装置或其它公共网络节点,并且通常包括上面相对于计算机1110描述的许多元件或所有元件,尽管图11中仅示出了存储器存储装置1181。图11中描绘的逻辑连接包括局域网(LAN)1171和广域网(WAN)1173,但也可以包括电话网络、近场网络和其它网络。这种网络环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。
当在LAN网络环境中使用时,计算机1110通过网络接口或适配器1170被连接到LAN1171。当在WAN网络环境中使用时,计算机1110可以包括调制解调器1172或用于建立通过诸如互联网的WAN 1173的通信的其它装置。可以是内部的或外部的调制解调器1172能够通过用户输入接口1160或其它适当的机制被连接到系统总线1121。在联网环境中,相对于计算机1110或其一部分描绘的程序模块可以被存储在远程存储器存储装置中。作为示例而非限制,图11示出了远程应用程序(RAP)1185驻留在存储器装置1181上。将理解的是,所示的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其它装置。
在上下文中,“处理器”可以包括被配置为处理与计算系统相关联的指令的单个处理器或多个处理器。因此,处理器可以包括并行和/或以分布式方式执行指令的一个或多个处理器。例如,图11中所示的系统可以包括一个或多个处理器(例如,硬件处理器)。
例如,系统可以包括至少一个硬件装置处理器,以及存储用于由该装置处理器执行的可执行指令的计算机可读存储介质,以用于实现本文所讨论的示例密钥-值存储。
例如,系统可以包括至少一个硬件装置处理器,以及存储可执行指令的计算机可读存储介质,该可执行指令在被执行时使得至少一个硬件装置处理器中的一个或多个硬件装置处理器控制完整性的验证。
计算领域的技术人员将理解可以使用许多不同的技术来实现本文讨论的特征。
下面讨论将完整性集成到高性能存储器内密钥-值存储中的性能开销。下面讨论使用YAHOO CLOUD SERVICE BENCHMARK(YCSB)研究密钥-值存储的吞吐量和等待时间的综合实验的示例结果,其中支持和不支持完整性。
下面讨论的实验结果使用YCSB来执行(参见例如Proceedings of the 1st ACMSymposium on Cloud Computing(SoCC’10),2010,页码143-154,Cooper等人的“Benchmarking Cloud Serving Systems with YCSB”)。该基准测试专门用于研究密钥-值存储的性能。如果没有另外说明,示例基准数据库包括一千万个密钥-值对。对于该示例,每个密钥是8字节整数。对于读取和仅更新的工作负载(无插入),密钥从1到N(N是数据库的大小)顺序生成,并且然后随机置换。对于具有插入的工作负载(工作负载D,参见下文),密钥是在域[1...2*N]中随机生成的,其中N是在执行第一插入之前的初始数据库的大小。对于该示例,密钥-值对的每个值是八字节的随机序列。
对于本文中讨论的实验结果,YCSB基准指定了被运行的四个核工作负载。
a.重更新:该工作负载包括50%的查找查询和50%的更新。
b.重读取:该工作负载包括95%的查找查询和5%的更新。
c.只读:该工作负载包括100%查找查询。
d.插入:该工作负载包括95%的查找查询和5%的新密钥-值对插入。
对于工作负载A、B和C,所有查找操作的密钥都在范围[1...N]内,因此所有这些操作都是成功的。在所有四个工作负载中,所有查找和更新操作的密钥都是使用Zipf分布生成的,从而确保经常使用的密钥随机散布在关键域中而不是被群集。在这方面,工作负载D可以是特殊的:工作负载D还使用Zipf分布来选择用于查找操作的密钥,但是工作负载D指定:以比现有的旧记录更高的概率来查询新插入的记录(参见例如上述Cooper等人的文献)。生成作为工作负载D的一部分而被插入的新记录类似于生成初始工作负载D数据库的记录(即,在范围[1...2*N]内的随机密钥和随机值)。
归因于插入操作,数据库的大小可以随着工作负载D中的时间推移而增长。然而,数据库的这种不断增长的大小并不显著影响系统的性能,因此所有操作的响应时间在所有实验性基准测试运行的开始和结束时是大致相同的。
还使用Uniform(例如,代替Zipf)分布来运行实验,以生成用于查找和更新操作的密钥。本文中讨论了YCSB结果,因为结果基本上相同。
为了实现基准,调节作为YCSB软件分布的一部分而被提供的工作负载生成器,以便在客户端处生成MAC并且验证其完整性。但是,与原始YCSB工作负载生成器在逻辑上相同的工作负载被运行。如果没有另外说明,则实验如下进行:每个实验重复三次,并且在这三次运行的每一次中,按照工作负载的指定来执行1亿次查找、更新或插入操作。测量吞吐量和等待时间两者。吞吐量被测量为三次运行上的随时间的平均吞吐量(在执行运行的同时)。方差非常低,因此结果中未示出误差条。对于等待时间实验,示出了所有三次运行的所有操作上的中值和90%分位数。除了吞吐量和等待时间之外,还测量了PCIe总线的利用率以及用于瓶颈分析的CPU利用率。在很多实验中,UM(或TM)中的核的数目是变化的。为了测量这些示例技术对验证率的敏感性,还讨论了改变该参数的实验。验证速率被配置为每条记录的密钥-值操作的数目。如果没有另外说明,则将该参数设置为16,其对应于:在16次查找、更新或插入操作之后验证密钥-值存储的单元。
作为所有实验的研究平台,使用高性能的存储器内密钥-值存储。密钥-值存储被实现为库,以便所有线程都执行YCSB基准实现和密钥-值存储操作两者。这样,实验结果不包括:可以抑制由完整性检查引起的开销的网络效应。此外,用于在客户端处创建MAC和验证MAC的成本降低了系统的总吞吐量。因此,示例实验结果可以是保守的,因为在分布式密钥-值存储中,以及在客户端MAC生成和验证不会影响密钥-值存储的吞吐量的系统设置中,可以预期完整性检查的开销相对较小。对于这些示例实验,用于索引密钥-值存储中的密钥的主数据结构是BW树(参见例如上述Levandoski等人的“The Bw-Tree:A B-tree for newhardware platforms”)。例如,BW树可以在当前的多核机器上实现有利的性能,至少因为它允许对密钥-值存储进行无锁和并发操作。通过实验测量了三种不同的系统配置:
无:密钥-值存储的这种配置不提供完整性支持。“无”用作基线并且表示当前密钥-值存储的性能。
CVTREE(SW):在这种配置中,CVTREE使用在软件和固定到专用核的单独线程中实现(例如,使用C++)的TM。UM与TM之间的通信使用共享存储器来实现。虽然这样的软件TM可以不提供针对恶意攻击者的任何保护,但是这种配置对于研究使用安全硬件的性能权衡可以是有用的。
CVTREE(HW):在这种配置中,CVTREE使用如上所述使用FPGA实现的TM。假定加密很强并且攻击者不能进入FPGA,这种配置可以是安全的(参见例如上述Eguro等人的文献)。
对于CVTREE(SW)和CVTREE(HW),可以将所有更新和插入操作记录到磁盘,以获取可恢复性(恢复在本文中进一步讨论)。对于“无”,日志被关闭,这归因于由实验性密钥-值存储的日志记录组件所做的附加工作,这为这些实验提供了隔离这样的附加工作的问题。由于“无”和其他两种配置之间的该不对称性,同样,结果可以是保守的,并且支持完整性的开销可以看起来比对于“无”启用日志记录时要大得多。
如果没有另外说明,则在3.4GHz机器上进行实验,其具有两个插槽并且每个插槽具有6个物理核/12个逻辑核。这个机器具有128GB的主存储器。日志(用于CVTREE(SW)和CVTREE(HW))被写入SSD,SAMSUNG MZHPU512HCGL SSD(PCIe 2.0×4),最大顺序写入带宽为930MBps,并且最大顺序读取带宽为1170MBps。这些实验的操作系统是WINDOWS SERVER2012。该机器具有带有PCIe 3.0×8链路的ALTERA FPGA(STRATIX V GSD5)(例如,每个方向的理论最大值超过7.8GB/s)。该FPGA仅用于CVTREE(HW)实验配置。理论上,这个FPGA可以提供足够的容量,来并行运行多达6个TM。然而,在本文中讨论的实验中,大量的TM没有饱和。因此,本文中讨论一个或两个FPGA核的结果。
为了研究超过12个核的横向扩展效应,还在2.3GHz机器上运行实验,每个插槽具有10个物理核/20个逻辑核。对于使用该机器的实验,使用与其他机器相同的ALTERA FPGA板。
图13-图16示出了利用不同数目的UM核、针对三核YCSB工作负载的三种方法(无、CVTREE(SW)、CVTREE(HW))的实验结果吞吐量(以百万次操作/秒为单位)。如图13所示,图例散列标记指示符被用于指示图13-图16中的条,以表示“无”1302、“cvtree-hw”1304和“cvtree-sw”1306的实验结果。
在这些实验中,仅存在1个TM核并且验证速率被设置为16。第一结果表明,独立于工作负载和核的数目,“无”和CVTREE(HW)的性能是有竞争力的。在最坏的情况下,它可以偏差两倍。因此,对完整性的支持可以有利地集成到实际和主流系统中。其他系统的常规公开结果已经表明吞吐量约为每秒数百次量级的操作,而本文中讨论的示例技术(例如,CVTREE(HW))可以支持每秒数百万次操作。
第二结果表明,所有三种方法可以与核的数目线性地扩展。同样,这些实验表明,可以以可扩展的方式实现完整性。常规方法具有单点故障。在这些特定实验中,UM 104是瓶颈(本文中进一步讨论),因此一个TM 106核就足够了。然而,本文中讨论的示例技术也与TM106核的数目成比例。
比较CVTREE(SW)和CVTREE(HW),结果几乎相同。CVTREE(SW)可以稍微更有利地执行,因为它要求来自UM 104的更少的CPU周期:例如,相比实际执行TM中的所有加密操作以便支持完整性,经由PCIe总线准备和向FPGA发送消息消耗更多的CPU周期。该结果表明TM106中的完整性的实现轻量且有效。
比较图13和图15可以提供对读取和写入操作的相对成本的见解。毫不奇怪,“无”对于只读(和大多数读取)工作负载而言可以比其对于更新密集型工作负载更有利。在这方面,实验密钥-值存储可以与任何其他密钥-值存储(例如,CASSANDRA、HBASE等)没有区别。但是,读取可以与使用CVTREE的写入一样昂贵。结果,相对而言,CVTREE的开销对于图13的只读工作负载可以是最大的。尽管如此,即使在这种情况下,CVTREE(HW)也表明了具有竞争力的性能,并且对于这种示例方法可以提供的强大安全保证,开销看起来是可负担的。
在实验1中,12个UM核不足以使单个TM 106核饱和。为了研究具有多于一个TM 106核的CVTREE的可扩展性,使用20核机器进行实验。图17示出了工作负载C的CVTREE(HW)的实验吞吐量,从而将UM 104核的数目从1变为18。线1702示出了针对一个TM 106核的结果,而线1704示出了针对两个TM 106核的结果。
图17表明CVTREE(HW)不仅有利地根据UM 104核的数目进行扩展,而且还根据TM106核的数目进行扩展。在20核机器上,如果使用超过12个UM 104核,则只有一个TM 106核的配置会使TM 106饱和。此时,TM 106可以成为瓶颈。但是,在具有两个TM 106核的配置中,吞吐量可以会线性扩展到超过12个内核;在这种情况下,UM 104可以以与实验1中相同的方式继续成为系统的瓶颈。可以预期机器将来可以具有数百个核。即使对于这样的机器,TM106也可以不成为瓶颈,因为至少6个TM 106将适合实验性ALTERA FPGA板,并且FPGA板的容量目前至少以与CPU核的数目相同的速率(如果不是更快)增长。
在图1的架构中,存在可以限制系统吞吐量的三个潜在瓶颈:(a)UM 104,(b)UM104与TM 106之间的互连(例如,PCIe总线),以及(c)TM 106。实验1和2表明,CVTREE可以与UM 104核和TM 106核的数目线性地成比例。然而,在实践中添加附加的PCIe带宽可以更困难。但是,对于当前的硬件,PCIe总线似乎没有提供瓶颈。
图18示出了从UM 104发送到TM 106和由TM 106从UM 104接收的每秒的MB数目。对于该实验,使用12个UM 104核和1个TM 106核,从而实现可以在使用CVTREE的单个机器上保持的最大吞吐量和工作负载。对于更高的吞吐量,可以使用附加计算机,并且这些计算机的UM/TM业务将不会影响该计算机上的PCIe总线利用率。因此,图18描绘了单个机器上的最高可能PCIe总线利用率。如图18所示,图例散列标记指示符被用于指示图18中的条,以表示“发送”带宽1802和“接收”带宽1804的实验结果。
图18指示:CVTREE的PCIe总线带宽消耗不超过400MB/秒。对于本文中讨论的实验,基准测试机器在总线上具有PCIe版本,带宽接近8GBps,因此CVTREE仅使用该机器带宽的5%。如果其他需要PCIe的应用在同一机器上运行,则在其他应用使其饱和之前,CVACEE可能不会使PCIe总线饱和。
实验1至3表明CVTREE可以在吞吐量方面有利地扩展,并且在给定相同的资源量的情况下,吞吐量可以降低至多2倍。下面讨论CVTREE(HW)的示例等待时间。
图19描绘了示例实验结果:在最坏情况的示例中,CVTREE(HW)中的读取(或写入)操作的等待时间可以高达50毫秒。相比之下,“无”的等待时间可以只有几微秒,或者以三个数量级更好。该结果可以表明,虽然CVTREE可以是针对高吞吐量应用的有利匹配,但它对于等待时间关键的应用可能不是有利的匹配。但是,如果应用可以容忍50毫秒的延迟,则CVTREE可以是可接受的。
因为CVTREE为了支持完整性而执行的操作可以在读取或写入操作的关键路径上,所以该结果可以发生。因此,客户端110可以创建安全散列,TM 106可以验证安全散列,并且经由PCIe的UM/TM交互也在关键路径上。本文中讨论的示例技术可以实现高吞吐量,因为它们可以在需要执行这些步骤的很多并发操作之间实现有利的高并发性,但是在等待时间方面,可以为这些步骤付出代价,因为这些步骤可以被需要以实现完整性。换言之,本文中讨论的示例技术可以通过与其他工作并行地执行所需步骤,来帮助隐藏完整性的开销,从而实现高吞吐量。如图19所示,图例散列标记指示符被用于指示图19中的条,以表示“中值”1902和“90%”1904的实验结果。
CVTREE具有定期验证的设计可以涉及性能与安全性之间的权衡。例如,验证率越高,性能由于执行更多验证工作而越低,并且随着不安全窗口的减少,安全性越高。以这种方式,验证还可以控制在完整性破坏之后、直到系统检测到破坏的丢失的工作量。
图20示出了这种权衡,例如,以指示对于高频验证,吞吐量2002可以有些急剧地降级。例如,验证率为1可以对应于大约每八秒一次验证。例如,验证率16可以对应于大约每两分钟一次验证;在这一点上,CVTREE已经有利地执行,并且进一步提高验证率可以导致边际性能增益。鉴于很多当前系统可以不支持任何类型的完整性,并且完整性破坏可能有些罕见,大约两分钟的示例窗口可以有利于将完整性引入主流商品系统。
根据本文中讨论的示例技术,除了保证原子性和耐久性之外,示例密钥-值存储可以提供完整性验证。如本文中讨论的,相对于可以缺乏完整性的示例密钥-值存储,完整性检查可以以小于2×的开销被并入。例如,本文中讨论的结果可以有利地对应于相对于常规技术(例如,基于MERKLE树)的数量级性能改进。本文中讨论的示例见解可以包括(至少):(1)使用延迟验证而不是在线验证,(2)在服务器中的安全硬件中使用少量可信代码,以及(3)降低对存储器验证问题的完整性检查,该问题可以允许使用现成的最先进的无锁索引结构。例如,本文中讨论的技术可以帮助开发高性能防篡改数据管理引擎。
计算领域的技术人员将理解,在不脱离本文中的讨论的情况下,也可以使用其他指令或操作来实现该(或类似的)功能。
III.流程图描述
本文讨论的特征被提供作为在不脱离本文讨论的情况下以计算领域的技术人员可以理解的许多不同方式实现的示例技术。这些特征仅被解释为示例特征,而不旨在被解释为仅限于那些详细描述。
图21A-图21C是示出根据示例实施例的图11的系统的示例操作的流程图。如图21A的示例中所示,对被托管在不可信模块(UM)处的数据集上的数据操作的完整性的延迟验证进行控制(2102)。
生成对数据集上的至少一个数据操作的请求,请求包括认证部分(2104)。例如,客户端110可以生成请求。
向UM发送请求(2106)。例如,客户端110可以向UM 104发送请求(例如,针对操作114)。
从UM接收对请求的响应,响应包括密码验证信息,密码验证信息证明:至少一个数据操作关于对数据集的先前数据操作的完整性,响应包括:来自可信模块(TM)处的延迟验证的结果(2108)。
例如,在图21B的示例中,数据操作可以包括插入、查找、删除和更新操作(2110)。
例如,可以将数据集包括在被托管在UM处的密钥-值存储中(2112)。
例如,接收对请求的响应可以包括:从UM接收对请求的响应,响应包括:基于消息认证码(MAC)的、针对至少一个数据操作的结果关于对数据集的先前数据操作的完整性证明(2114)。
例如,接收对请求的响应可以包括:由客户端设备经由UM从可信模块(TM)接收对请求的响应,响应包括:基于消息认证码(MAC)的、针对至少一个数据操作的结果关于对数据集的先前数据操作的完整性证明,其中基于MAC的证明是在TM处生成基于MAC的证明之后,在客户端设备处从UM接收的,其中客户端设备与TM共享密码密钥,作为客户端设备信任的可信模块,并且客户端设备可以不与UM共享密码密钥(2116)。
例如,在图21C的示例中,生成请求可以包括:生成对被包括在密钥-值存储中的数据集上的至少一个数据操作的请求,请求包括加密的认证部分,加密的认证部分包括基于与可信模块(TM)共享的密码密钥的MAC(2118)。
例如,接收对请求的响应可以包括:经由UM的转发,从TM接收对请求的响应(2120)。
例如,生成请求可以包括:生成与所请求的至少一个数据操作相对应的唯一事务标识符(id),该请求包括加密的认证部分,该加密的认证部分包括:基于与可信模块(TM)共享的密码密钥的MAC(2122)。
例如,请求可以包括:事务ID的加密版本、标识所请求的至少一个数据操作的指示符、以及密钥值(2124)。
图22A-图22E是示出根据示例实施例的图11的系统的示例操作的流程图。如图22A的示例中所示,可以对被托管在不可信模块(UM)处的数据集上的数据操作的完整性的验证进行控制(2202)。
可以在可信模块(TM)处接收第一消息,第一消息指示:来自与TM共享密码密钥的客户端的请求,请求针对数据集上的至少一个数据操作,请求包括来自客户端的认证部分(2204)。例如,TM106可以接收指示来自客户端110的请求的第一消息。
可以发送指示对所接收的请求的响应的第二消息,响应包括密码验证信息,密码验证信息证明:至少一个数据操作关于对数据集的先前数据操作的完整性(2206)。
例如,在图22B的示例中,第一消息可以包括:操作标识符、密钥的值、与被存储在UM中的经验证的存储器单元相对应的证明单元、以及被包括在来自客户端的加密的认证部分中的操作密码散列(2208)。
例如,可以确定由请求指示的第一数据操作的操作类型(2210)。
例如,在图22C的示例中,确定操作类型可以包括:确定查找操作类型(2222)。
例如,可以通过使用所接收的操作密码散列,来验证查找操作的完整性(2224)。
例如,可以针对所接收的密钥的值,来验证所接收的证明单元的正确性(2226)。
例如,可以基于所接收的证明单元中的密钥的值与所接收的密钥的值的比较,来确定查找操作的成功值(2228)。
例如,在图22D的示例中,确定操作类型可以包括:确定查找操作类型(2230)。
例如,可以通过使用所接收的操作密码散列,来验证查找操作的完整性(2232)。
例如,可以针对所接收的密钥的值,来验证所接收的证明单元的正确性(2234)。
例如,可以基于确定所接收的证明单元中的密钥值与所接收的密钥的值不相等,确定查找操作的失败值(2236)。
例如,确定操作类型可以包括:确定插入操作类型(2238)。
例如,可以通过使用所接收的操作密码散列,来验证插入操作的完整性(2240)。
例如,可以针对所接收的密钥的值,来验证所接收的证明单元的正确性(2242)。
例如,可以在插入操作的执行之前,基于验证所接收的第二证明单元是空证明单元来确定插入操作的成功值(2244)。
例如,在图22E的示例中,确定操作类型可以包括:确定删除操作类型(2246)。
例如,可以通过使用所接收的操作密码散列,来验证删除操作的完整性(2248)。
例如,可以针对所接收的密钥的值,来验证所接收的证明单元的正确性(2250)。
例如,可以在删除操作的执行之前,基于验证所接收的第二证明单元是先前密钥证明单元来确定删除操作的成功值,先前密钥证明单元存储与所接收的证明单元的密钥值相对应的下一密钥值(2252)。
例如,下一密钥值指示:在用于被存储在UM处的数据集的密钥的值的排序中,紧跟在所接收的证明单元的密钥值的值之后的后续密钥的值(2254)。
例如,在图22B的示例中,第一消息可以包括:针对包括读取UM的存储器位置的内容的操作的操作标识符(2212)。
例如,TM可以验证:该操作包括访问由TM对UM的存储器位置的最近成功写入的内容(2214)。
例如,由TM进行的验证可以包括:使用多个历元的转变的延迟验证(2216)。
例如,在图22C的示例中,在TM处接收第一消息可以包括:接收包括来自客户端的多个请求的第一分批(2218)。
例如,发送第二消息可以包括:发送包括对相应的接收的请求的多个响应的第二分批(2220)。
图23A-图23C是示出根据示例实施例图11的系统的示例操作的流程图。如图23A的示例中所示,不可信模块(UM)包括存储数据集的存储器(2302)。
可以从客户端接收对数据集上的至少一个数据操作的请求,该请求包括认证部分(2304)。例如,UM 104可以从客户端110接收针对操作114的请求。
可以从可信模块(TM)接收对请求的响应,响应包括密码验证信息,密码验证信息证明:至少一个数据操作关于对数据集的先前数据操作的完整性,TM包括与客户端共享的密码密钥(2306)。
可以向客户端转发对请求的所接收的响应(2308)。
例如,存储器可以存储包括数据集的密钥-值存储(2310)。
例如,在图23B的示例中,存储器可以包括索引和经验证的存储器部分(2312)。
例如,经验证的存储器部分存储经验证的单元,经验证的单元与包括数据集的密钥-值存储的值相对应(2314)。
例如,索引被配置为经由密钥的值来引用经验证的单元(2316)。
例如,相应的经验证的单元各自包括:相应密钥的值、下一密钥的值、以及从客户端接收的操作标识符(2318)。
例如,下一密钥的值可以指示:在用于被存储在UM处的数据集的密钥的值的排序中,紧跟在密钥的值之后的后续密钥的值(2320)。
例如,在图23C的示例中,存储器可以包括:由存储在经验证单元中的对应经验证单元中的操作标识符所引用的值表(2322)。
例如,值表可以存储多个条目,多个条目包括:针对相应的数据操作,从客户端接收的相应请求的相应的加密认证部分(2324)。
例如,UM可以在从TM接收对请求的响应之前,针对由所请求的至少一个数据操作引起的变化,来预测并且更新经验证的存储器部分的当前状态(2326)。
计算领域的技术人员将理解可以在不脱离本文讨论的情况下使用许多其它类型的技术来控制对数据的操作的完整性验证。
本文讨论的特征被提供作为能够在不脱离本文讨论的情况下以计算领域的技术人员可以理解的许多不同方式实现的示例技术。这些特征仅被解释为示例特征,而不旨在被解释为仅限于那些详细描述。
在上下文中,“处理器”可以包括被配置为处理与计算系统相关联的指令的单个处理器或多个处理器。因此,处理器可以包括并行和/或以分布式方式执行指令的一个或多个处理器。
例如,如本文所讨论的,系统1100可以包括一个或多个处理器。例如,系统1100可以包括存储可由一个或多个处理器执行的指令的至少一个有形计算机可读存储介质(例如,制造的物品),可执行指令被配置为使至少一个处理器执行与被包括在系统1100中的各个示例组件相关联的操作。例如,一个或多个处理器可以被包括在至少一个处理设备中。计算领域的技术人员将理解,在不脱离本文讨论的情况下,可以根据这种讨论来配置处理器和处理设备的许多配置。
在上下文中,“组件”或“模块”可以表示能够被配置为执行特定操作的指令或硬件。这些指令可以被包括在指令的组件组内,或者可以分布在多于一个组上。例如,与第一组件的操作相关联的一些指令可以被包括在与第二组件(或更多组件)的操作相关联的一组指令中。例如,本文的“组件”可以指能够由可以位于单个实体中的指令实现的、或者能够由可以在多个实体上扩展或分布的指令实现的、并且可以与和其它组件相关联的指令和/或硬件重叠的指令实现的功能的类型。
在本上下文中,“存储器”可以包括被配置为存储数据和/或指令的单个存储器装置或多个存储器装置。此外,存储器可以跨越多个分布式存储装置。此外,存储器可以被分布在多个处理器中。
计算领域的技术人员将理解,可以存在许多方式来实现本文所讨论的特征。
多年来,客户隐私和机密性一直是计算环境中持续考虑的问题。因此,用于维护数据库和/或密钥-值存储的示例技术可以使用用户输入和/或由用户提供的数据,该用户已经经由具有关联应用或与这种技术相关联的服务的一个或多个订阅协议(例如,“服务条款”(TOS)协议)提供了许可。例如,用户可能同意将其输入/数据传输并存储在装置上,尽管能够明确地表示(例如,经由用户接受的协议)每一方可以控制传输和/或存储如何发生、以及可以维持的存储的级别或持续时间(如果有的话)。此外,可以例如通过散列实际用户信息来混淆能够被用于识别用户使用的装置的标识符。应该理解的是,可以根据任何相关辖区的隐私法律和法规获得任何用户输入/数据。
本文描述的各种技术的实施方式可以实现在数字电子电路、在计算机硬件、固件、软件或其组合(例如,配置为执行指令以执行各种功能的设备)中。
实施方式可以被实现为在信号(例如,诸如纯传播信号的纯信号)中实施的计算机程序。如下所述,这种实施方式在本文中将表示为经由“计算机可读传输介质”实施,该“计算机可读传输介质”在本文中不被视为如下面所讨论的“计算机可读存储介质”或“计算机可读存储装置”。
备选地,可以经由机器可用或机器可读存储装置(例如,诸如通用串行总线(USB)存储装置的磁性或数字介质、磁带、硬盘驱动、光盘(CD)、数字视频盘(DVD)等)来实现,机器可用或机器可读存储装置存储可执行指令(例如,计算机程序),以用于通过计算设备(例如,数据处理设备)的执行、或者控制计算设备(例如,数据处理设备)的操作,计算设备例如为可编程处理器、专用处理器或装置、计算机或多个计算机。这种实施方式在本文中可以表示为经由“计算机可读存储介质”或“计算机可读存储装置”实现,并且因此不同于纯信号、诸如纯传播信号(并且因此在本文中不被视为如上所述的“计算机可读传输介质”)的实施方式。因此,如本文所使用的,对“计算机可读存储介质”或“计算机可读存储装置”的引用明确地排除对作为信号(例如,传播信号)本身的介质和装置的引用。
诸如上述(一个或多个)计算机程序的计算机程序可以以任意形式的编程语言(包括编译语言、解释语言或机器语言)写入,并且可以以任意形式(包括作为独立程序或作为适用于计算环境中的模块、组件、子例程或其它单元)部署。计算机程序可以被有形地实施为机器可用或机器可读存储装置(例如,计算机可读介质)上的可执行代码(例如,可执行指令)。可以部署能够实现上述技术的计算机程序,以在一个计算机上执行、或在一个站点的多个计算机上执行、或在跨多个站点分布并通过通信网络互连的多个计算机上执行。
方法步骤可以通过一个或多个可编程处理器执行,该可编程处理器执行计算机程序以通过对输入数据进行操作并生成输出来执行功能。一个或多个可编程处理器可以并行执行指令,和/或可以被布置在分布式配置中以用于分布式处理。本文讨论的示例功能也可以由一个或多个硬件逻辑组件执行,并且设备可以至少部分地实现为一个或多个硬件逻辑组件。例如但不限于,能够使用的说明性类型的硬件逻辑组件可以包括:现场可编程门阵列(FPGA)、程序专用集成电路(ASIC)、程序专用标准产品(ASSP)、芯片系统(SOC)、复杂可编程逻辑装置(CPLD)等。
作为示例,适用于执行计算机程序的处理器包括通用微处理器和专用微处理器二者,以及任何种类的数字计算机的任意一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或只读存储器和随机存取存储器两者接收指令和数据。计算机的元件可包括用于执行指令至少一个处理器和用于存储指令和数据的一个或多个存储器装置。通常,计算机还可以包括用于存储数据的一个或多个大容量存储装置、或者被可操作地耦合以从用于存储数据的一个或多个大容量存储装置接收数据或将数据传输到用于存储数据的一个或多个大容量存储装置或上述接收和传输二者,大容量存储装置例如为磁、磁光盘或光盘。适用于实施计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,其包括例如:半导体存储器装置,例如EPROM、EEPROM和闪存装置;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
为了提供与用户的交互,实施方式可以在具有用于向用户显示信息的显示装置以及用户可以将输入提供给计算机的键盘和指点装置的计算机上实现,显示装置例如为阴极射线管(CRT)、液晶显示器(LCD)或等离子监控器,指点装置例如为鼠标或轨迹球。也可以使用其它种类的装置以提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈。例如,可以经由任何形式的感觉输出来提供输出,感觉输出包括(但不限于)视觉输出(例如,视觉手势、视频输出)、音频输出(例如,语音、装置声音)、触觉输出(例如,触摸、装置运动)、温度、气味等。
此外,可以以任何形式接收来自用户的输入,包括声学、话语或触觉输入。例如,可以经由任何形式的感觉输入而从用户接收输入,包括(但不限于)视觉输入(例如,手势、视频输入)、音频输入(例如,语音、装置声音)、触觉输入(例如,触摸、装置运动)、温度、气味等。
此外,自然用户界面(NUI)可以用于与用户交互。在本上下文中,“NUI”可以指使用户能够以“自然”的方式与装置交互,而不受诸如鼠标、键盘、遥控等输入装置施加的人为约束的任何接口技术。
NUI技术的示例可以包括依赖于话语识别、触摸和手写笔识别、在屏幕上和屏幕附近的手势识别、空中手势、头部和眼睛追踪、语音和话语、视觉、触摸、手势和机器智能的那些技术。示例NUI技术可以包括但不限于:触敏显示器、语音和话语识别、意图和目标理解、使用深度相机(例如,立体相机系统、红外相机系统、RGB(红色、绿色、蓝色)相机系统及其组合)的运动手势检测、使用加速度计/陀螺仪的运动手势检测、面部识别、3D显示、头部、眼睛和凝视追踪、沉浸式增强现实和虚拟现实系统(所有这些都可以提供更自然的界面)、以及使用电场感测电极(例如,脑电图(EEG)及相关技术)感测大脑活动的技术。
实施方式可以在包括后端组件、或包括中间件组件、或包括前端组件、或包括这种后端、中间件或前端组件的任意组合的计算系统中实现,后端组件例如为数据服务器,中间件组件例如为应用服务器,前端组件例如为具有用户可以通过其与实施方式交互的图形用户界面或Web浏览器的客户端计算机。组件可以通过任何形式或介质的数字数据通信互连,例如通信网络。通信网络的示例包括局域网(LAN)和广域网(WAN)、例如因特网。
尽管已经用结构特征和/或方法动作专用的语言描述了本主题,但是应该理解的是,所附权利要求中限定的主题不必受限于上述具体特征或动作。相反,公开上述具体特征和动作作为实现权利要求的示例形式。虽然已经如本文所述示出了描绘的实施方式的特定特征,但是本领域技术人员现在将可以进行许多修改、替换、改变和等同。因此,应该理解的是,所附权利要求旨在覆盖落入实施例范围内的所有这些修改和变化。
Claims (21)
1.一种客户端系统,包括:
至少一个硬件设备处理器;以及
存储器,存储客户端安全密钥值,并且存储可执行指令,所述可执行指令在被执行时引起所述至少一个硬件设备处理器:
对被托管在具有不可信模块和可信模块的服务器处的数据集上的数据操作的完整性的延迟验证进行控制,所述可信模块具有安全硬件,所述延迟验证由以下各项控制:
生成对所述数据集上的至少一个数据操作的请求,所述请求包括认证部分,所述认证部分使用所述客户端安全密钥值来生成;
将所述请求从所述客户端系统发送到所述服务器;以及
由所述客户端系统从所述服务器接收对所述请求的响应,所述响应包括密码验证信息,所述密码验证信息证明:所述至少一个数据操作关于对所述数据集的多个先前数据操作的所述完整性,所述响应包括:来自由所述服务器的所述可信模块的所述安全硬件生成的延迟验证的结果,
其中由所述安全硬件进行的所述延迟验证包含多个验证历元的单独验证,并且所述验证历元中的至少一个验证历元包括由所述可信模块的所述安全硬件并发验证的两个或更多个操作。
2.根据权利要求1所述的客户端系统,其中:
所述数据操作包括插入操作、查找操作、删除操作和更新操作。
3.根据权利要求1所述的客户端系统,其中:
所述数据集被包括在密钥-值存储中,所述密钥-值存储被托管在所述服务器的所述不可信模块处。
4.根据权利要求1所述的客户端系统,其中对所述请求的所述响应从所述服务器的所述不可信模块被接收,并且对所述请求的所述响应包括针对所述至少一个数据操作关于对所述数据集的所述多个先前数据操作的结果的所述完整性的基于消息认证代码的证明。
5.根据权利要求1所述的客户端系统,其中:
生成所述请求包括:将至少基于所述客户端安全密钥值的消息认证代码包括在所述请求中,所述客户端安全密钥值是与所述服务器的所述可信模块共享的密码密钥,并且
接收对所述请求的所述响应包括:经由所述服务器的所述不可信模块的转发,从所述服务器的所述不可信模块接收对所述请求的所述响应。
6.根据权利要求1所述的客户端系统,其中:
生成所述请求包括:生成与所述至少一个数据操作相对应的唯一事务标识符,所述请求包括:加密的认证部分,所述加密的认证部分包括至少基于所述客户端安全密钥值的消息认证代码,所述客户端安全密钥值是与所述服务器的所述可信模块共享的密码密钥,
其中所述请求包括以下各项的加密版本:
所述唯一事务标识符,以及
标识所述至少一个数据操作的指示符。
7.根据权利要求1所述的客户端系统,其中所述可执行指令在被执行时引起所述至少一个硬件设备处理器:
在所述响应指示所述延迟验证已经失败的实例中,求助于所述数据集的在前验证的备份。
8.一种由计算设备的可信模块执行的方法,所述方法包括:
通过以下来对被托管在不可信模块处的数据集上的数据操作的完整性的延迟验证进行控制:
在所述可信模块处接收第一消息,所述第一消息指示:来自与所述可信模块共享密码密钥的客户端的请求,所述请求针对所述数据集上的至少一个数据操作;
通过指定验证历元并且单独验证所述验证历元,执行所述至少一个数据操作关于多个先前数据操作的延迟验证,其中所述验证历元中的至少一个验证历元包括由所述可信模块的安全硬件并发验证的多个操作;以及
响应于来自所述客户端的所述请求,发送来自所述可信模块的第二消息,所述响应包括由所述可信模块使用所述密码密钥生成的密码验证信息,所述密码验证信息证明:所述至少一个数据操作关于对所述数据集的所述多个先前数据操作的所述完整性。
9.根据权利要求8所述的方法,其中:
所述第一消息包括所接收的操作标识符、所接收的密钥的值、与被存储在所述不可信模块中的经验证的存储器单元相对应的所接收的证明单元、以及被包括在从所述客户端接收的所述第一消息的认证部分中的所接收的操作密码散列,
其中所述方法包括:
确定由所述请求指示的第一数据操作的操作类型。
10.根据权利要求9所述的方法,其中所述操作类型是查找操作,
其中所述方法包括:
通过使用所接收的所述操作密码散列,来验证所述查找操作的完整性;
针对所接收的所述密钥的所述值,来验证所接收的所述证明单元的正确性;以及
至少基于所接收的所述证明单元中的密钥的值与所接收的所述密钥的所述值的比较,来确定所述查找操作的成功值。
11.根据权利要求9所述的方法,其中所述操作类型是查找操作,
其中所述方法包括:
通过使用所接收的所述操作密码散列,来验证所述查找操作的完整性;
针对所接收的所述密钥的所述值,来验证所接收的所述证明单元的正确性;以及
至少基于确定所接收的所述证明单元中的密钥值与所接收的所述密钥的所述值不相等,确定所述查找操作的失败值。
12.根据权利要求9所述的方法,其中所述操作类型是插入操作,
其中所述方法包括:
通过使用所接收的所述操作密码散列,来验证所述插入操作的完整性;
针对所接收的所述密钥的所述值,来验证所接收的所述证明单元的正确性;以及
在所述插入操作的执行之前,至少基于验证所接收的第二证明单元是空证明单元来确定所述插入操作的成功值。
13.根据权利要求9所述的方法,其中所述操作类型是删除操作,
其中所述方法包括:
通过使用所接收的所述操作密码散列,来验证所述删除操作的完整性;
针对所接收的所述密钥的所述值,来验证所接收的所述证明单元的正确性;以及
在所述删除操作的执行之前,至少基于验证所接收的第二证明单元是先前密钥证明单元来确定所述删除操作的成功值,
所述先前密钥证明单元存储与所接收的所述证明单元的密钥值相对应的下一密钥值,
其中所述下一密钥值指示:在用于被存储在所述不可信模块处的所述数据集的密钥的值的排序中,紧跟在所接收的所述证明单元的所述密钥值的所述值之后的后续密钥的值。
14.根据权利要求8所述的方法,其中:
所述第一消息包括:针对包括读取所述不可信模块的存储器位置的内容的操作的操作标识符,
其中所述方法包括:
由所述可信模块验证:所述操作包括访问最近成功写入的内容,所述最近成功写入由所述可信模块执行到所述不可信模块的所述存储器位置。
15.根据权利要求8所述的方法,其中:
接收所述第一消息包括:接收包括来自所述客户端的多个请求的第一分批;以及
发送所述第二消息包括:发送包括对相应的接收的请求的多个响应的第二分批。
16.一种服务器,包括:
包括安全硬件的可信模块;
至少一个硬件设备处理器;以及
包括存储器的不可信模块,所述存储器存储可执行指令,所述可执行指令在被执行时引起所述至少一个硬件设备处理器:
在所述服务器的所述不可信模块处,从客户端接收对数据集上的至少一个数据操作的请求,所述请求包括认证部分;
在所述服务器的所述不可信模块处,从所述可信模块接收对所述请求的响应,所述响应包括由所述可信模块使用密码密钥生成的密码验证信息,所述密码验证信息证明:所述至少一个数据操作关于对由所述可信模块执行的所述数据集的多个先前数据操作的延迟验证的完整性;以及
从所述服务器的所述不可信模块向所述客户端转发对所述请求的所接收的所述响应,
其中所述可信模块的所述安全硬件被配置为通过指定验证历元并且单独验证所述验证历元,执行所述延迟验证,并且所述验证历元中的至少一个验证历元包括由所述可信模块的所述安全硬件并发验证的两个或更多个操作。
17.根据权利要求16所述的服务器,其中:
所述存储器包括索引和经验证的存储器部分,
所述经验证的存储器部分存储经验证的单元,所述经验证的单元与包括所述数据集的密钥-值存储的值相对应,以及
所述索引被配置为经由密钥的值来引用所述经验证的单元。
18.根据权利要求17所述的服务器,其中:
相应的所述经验证的单元各自包括:相应密钥的值、下一密钥的值、以及从所述客户端接收的操作标识符,并且
所述下一密钥的所述值指示:在用于被存储在所述服务器的所述不可信模块处的所述数据集的密钥的值的排序中,紧跟在所述相应密钥的所述值之后的后续密钥的值。
19.根据权利要求17所述的服务器,其中:
所述存储器包括:由被存储在所述经验证的单元中的对应经验证单元中的操作标识符所引用的值表,并且
所述值表存储多个条目,所述多个条目包括:针对相应的数据操作,从所述客户端接收的相应请求的相应的加密认证部分。
20.根据权利要求17所述的服务器,其中所述可执行指令在被执行时使得所述至少一个硬件设备处理器:
在从所述服务器的所述可信模块接收对所述请求的所述响应之前,针对由所述至少一个数据操作引起的变化,来预测并且更新所述经验证的存储器部分的当前状态。
21.根据权利要求16所述的服务器,所述安全硬件包括现场可编程门阵列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/199,673 US10396991B2 (en) | 2016-06-30 | 2016-06-30 | Controlling verification of key-value stores |
US15/199,673 | 2016-06-30 | ||
PCT/US2017/039359 WO2018005403A1 (en) | 2016-06-30 | 2017-06-27 | Controlling verification of key-value stores |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109643359A CN109643359A (zh) | 2019-04-16 |
CN109643359B true CN109643359B (zh) | 2023-06-02 |
Family
ID=59285391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780041173.XA Active CN109643359B (zh) | 2016-06-30 | 2017-06-27 | 控制密钥-值存储的验证 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10396991B2 (zh) |
EP (1) | EP3479286B1 (zh) |
CN (1) | CN109643359B (zh) |
WO (1) | WO2018005403A1 (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10747753B2 (en) | 2015-08-28 | 2020-08-18 | Swirlds, Inc. | Methods and apparatus for a distributed database within a network |
US9390154B1 (en) | 2015-08-28 | 2016-07-12 | Swirlds, Inc. | Methods and apparatus for a distributed database within a network |
US10554384B2 (en) | 2016-03-17 | 2020-02-04 | Microsoft Technology Licensing, Llc | Aggregation of encrypted data |
US10187199B2 (en) * | 2016-09-09 | 2019-01-22 | Microsoft Technology Licensing, Llc | Aggregation based on splayed data |
US10666443B2 (en) * | 2016-10-18 | 2020-05-26 | Red Hat, Inc. | Continued verification and monitoring of application code in containerized execution environment |
CA3042255A1 (en) | 2016-11-10 | 2018-05-17 | Swirlds, Inc. | Methods and apparatus for a distributed database including anonymous entries |
CN116820695A (zh) | 2016-12-19 | 2023-09-29 | 海德拉哈希图有限责任公司 | 用于启用事件删除的分布式数据库的方法和设备 |
US11238164B2 (en) * | 2017-07-10 | 2022-02-01 | Burstiq, Inc. | Secure adaptive data storage platform |
US10375037B2 (en) | 2017-07-11 | 2019-08-06 | Swirlds, Inc. | Methods and apparatus for efficiently implementing a distributed database within a network |
US10354132B2 (en) * | 2017-08-22 | 2019-07-16 | Autonom8, Inc. | System and method for generating a virtual assistant |
CA3076257A1 (en) | 2017-11-01 | 2019-05-09 | Swirlds, Inc. | Methods and apparatus for efficiently implementing a fast-copyable database |
US10664351B2 (en) | 2017-12-12 | 2020-05-26 | Google Llc | Automated recovery of unstable mobile devices |
CN108306740B (zh) * | 2018-01-22 | 2020-07-31 | 华中科技大学 | 一种Intel SGX状态一致保护方法和系统 |
GB201801676D0 (en) | 2018-02-01 | 2018-03-21 | Microsoft Technology Licensing Llc | Database system |
GB201801679D0 (en) | 2018-02-01 | 2018-03-21 | Microsoft Technology Licensing Llc | Database transaction log writing and integrity checking |
WO2019168557A1 (en) * | 2018-02-27 | 2019-09-06 | Visa International Service Association | High-throughput data integrity via trusted computing |
CN110489971A (zh) * | 2018-05-15 | 2019-11-22 | 微软技术许可有限责任公司 | 安全的数据集管理 |
US11023457B1 (en) * | 2018-10-19 | 2021-06-01 | Palantir Technologies Inc. | Targeted sweep method for key-value data storage |
US10812084B2 (en) * | 2018-11-06 | 2020-10-20 | The Regents Of The University Of California | Reconfigurable physically unclonable functions based on analog non-volatile memories |
EP3663957A1 (en) * | 2018-12-03 | 2020-06-10 | Nagravision S.A. | Remote enforcement of device memory |
EP3667505B1 (en) * | 2018-12-14 | 2021-11-10 | Nxp B.V. | Memory system with an incremental hashing operation and method |
US11373013B2 (en) * | 2018-12-28 | 2022-06-28 | Intel Corporation | Technologies for filtering memory access transactions received from one or more I/O devices |
US11025424B2 (en) * | 2019-02-19 | 2021-06-01 | Arris Enterprises Llc | Entitlement management message epoch as an external trusted time source |
WO2020237140A1 (en) * | 2019-05-22 | 2020-11-26 | Swirlds, Inc. | Methods and apparatus for implementing state proofs and ledger identifiers in a distributed database |
US11507277B2 (en) * | 2019-06-25 | 2022-11-22 | Western Digital Technologies, Inc. | Key value store using progress verification |
US20220164442A1 (en) * | 2019-08-12 | 2022-05-26 | Hewlett-Packard Development Company, L.P. | Thread mapping |
TWI705687B (zh) * | 2019-09-09 | 2020-09-21 | 新唐科技股份有限公司 | 用於資料加解密的金鑰管理裝置及處理器晶片 |
US11711204B2 (en) * | 2020-01-29 | 2023-07-25 | EMC IP Holding Company LLC | Using sparse merkle trees for smart synchronization of S3 |
US11489663B2 (en) * | 2020-01-31 | 2022-11-01 | International Business Machines Corporation | Correlation-based hash tree verification |
US11593240B2 (en) * | 2020-02-12 | 2023-02-28 | Samsung Electronics Co., Ltd. | Device and method for verifying a component of a storage device |
US11645424B2 (en) * | 2020-04-27 | 2023-05-09 | International Business Machines Corporation | Integrity verification in cloud key-value stores |
CN111786779B (zh) * | 2020-06-18 | 2022-03-18 | 中国电子科技集团公司第三十研究所 | 一种新的可问责安全数据共享系统和方法 |
US11651096B2 (en) | 2020-08-24 | 2023-05-16 | Burstiq, Inc. | Systems and methods for accessing digital assets in a blockchain using global consent contracts |
US20220147616A1 (en) * | 2020-11-11 | 2022-05-12 | Red Hat, Inc. | Implementing trusted clients using secure execution environments |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1446331A (zh) * | 2000-06-05 | 2003-10-01 | 凤凰技术有限公司 | 使用多个服务器的远程密码验证的系统、方法和软件 |
CN101834860A (zh) * | 2010-04-22 | 2010-09-15 | 北京交通大学 | 一种远程动态验证客户端软件完整性的方法 |
US9177153B1 (en) * | 2005-10-07 | 2015-11-03 | Carnegie Mellon University | Verifying integrity and guaranteeing execution of code on untrusted computer platform |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1076279A1 (en) * | 1999-08-13 | 2001-02-14 | Hewlett-Packard Company | Computer platforms and their methods of operation |
US20050131968A1 (en) * | 2003-12-12 | 2005-06-16 | International Business Machines Corporation | Method for performing verifications on backup data within a computer system |
US20050283662A1 (en) * | 2004-06-21 | 2005-12-22 | Li Yi Q | Secure data backup and recovery |
US8631507B2 (en) * | 2006-03-27 | 2014-01-14 | Intel Corporation | Method of using signatures for measurement in a trusted computing environment |
WO2008147400A1 (en) | 2006-11-30 | 2008-12-04 | Brown University | Authentication for operations over an outsourced file system stored by an untrusted unit |
WO2009023307A2 (en) * | 2007-05-03 | 2009-02-19 | The Research Foundation Of The State University Of New York | Method and apparatus for tamper-proof write-once-read-many computer storage |
US8458451B2 (en) * | 2009-01-20 | 2013-06-04 | New York University | Database outsourcing with access privacy |
US20100212017A1 (en) * | 2009-02-18 | 2010-08-19 | International Business Machines Corporation | System and method for efficient trust preservation in data stores |
US8700893B2 (en) * | 2009-10-28 | 2014-04-15 | Microsoft Corporation | Key certification in one round trip |
US8516268B2 (en) | 2010-08-23 | 2013-08-20 | Raytheon Company | Secure field-programmable gate array (FPGA) architecture |
US8706701B1 (en) | 2010-11-18 | 2014-04-22 | Emc Corporation | Scalable cloud file system with efficient integrity checks |
US8832452B2 (en) * | 2010-12-22 | 2014-09-09 | Intel Corporation | System and method for implementing a trusted dynamic launch and trusted platform module (TPM) using secure enclaves |
EP2477137A1 (en) * | 2011-01-12 | 2012-07-18 | Safelayer Secure Communications, S.A. | Method for verifying the integrity of a set of data |
US9367833B2 (en) * | 2011-07-14 | 2016-06-14 | Invention Science Fund I, Llc | Data services outsourcing verification |
KR101303278B1 (ko) | 2011-12-14 | 2013-09-04 | 한국전자통신연구원 | 비트스트림 보호를 위한 fpga 장치 및 그 방법 |
US9256742B2 (en) * | 2012-01-30 | 2016-02-09 | Intel Corporation | Remote trust attestation and geo-location of servers and clients in cloud computing environments |
US20140006776A1 (en) * | 2012-06-29 | 2014-01-02 | Mark Scott-Nash | Certification of a virtual trusted platform module |
US8756417B1 (en) * | 2014-02-04 | 2014-06-17 | Sypris Electronics, Llc | Multi-level assurance trusted computing platform |
GB2529246A (en) * | 2014-08-15 | 2016-02-17 | Ibm | Method for securing integrity and consistency of a cloud storage service with efficient client operations |
CN104463020B (zh) * | 2014-11-27 | 2017-08-22 | 大连理工大学 | 存储器数据完整性保护的方法 |
CN104615947B (zh) * | 2015-02-02 | 2017-10-03 | 中国科学院软件研究所 | 一种可信的数据库完整性保护方法及系统 |
-
2016
- 2016-06-30 US US15/199,673 patent/US10396991B2/en active Active
-
2017
- 2017-06-27 EP EP17735751.4A patent/EP3479286B1/en active Active
- 2017-06-27 CN CN201780041173.XA patent/CN109643359B/zh active Active
- 2017-06-27 WO PCT/US2017/039359 patent/WO2018005403A1/en unknown
-
2019
- 2019-07-10 US US16/507,476 patent/US11849045B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1446331A (zh) * | 2000-06-05 | 2003-10-01 | 凤凰技术有限公司 | 使用多个服务器的远程密码验证的系统、方法和软件 |
US9177153B1 (en) * | 2005-10-07 | 2015-11-03 | Carnegie Mellon University | Verifying integrity and guaranteeing execution of code on untrusted computer platform |
CN101834860A (zh) * | 2010-04-22 | 2010-09-15 | 北京交通大学 | 一种远程动态验证客户端软件完整性的方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3479286B1 (en) | 2021-06-16 |
US20180006820A1 (en) | 2018-01-04 |
US20190334722A1 (en) | 2019-10-31 |
CN109643359A (zh) | 2019-04-16 |
WO2018005403A1 (en) | 2018-01-04 |
US11849045B2 (en) | 2023-12-19 |
US10396991B2 (en) | 2019-08-27 |
EP3479286A1 (en) | 2019-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109643359B (zh) | 控制密钥-值存储的验证 | |
US11848914B2 (en) | High-throughput data integrity via trusted computing | |
Arasu et al. | Concerto: A high concurrency key-value store with integrity | |
Paccagnella et al. | Custos: Practical tamper-evident auditing of operating systems using trusted execution | |
US8458451B2 (en) | Database outsourcing with access privacy | |
US9455955B2 (en) | Customizable storage controller with integrated F+ storage firewall protection | |
CN111670436B (zh) | 数据库系统 | |
Aublin et al. | LibSEAL: Revealing service integrity violations using trusted execution | |
AU2018201934B2 (en) | Network based management of protected data sets | |
Sinha et al. | Veritasdb: High throughput key-value store with integrity | |
Fernando et al. | SciBlock: A blockchain-based tamper-proof non-repudiable storage for scientific workflow provenance | |
Van Dijk et al. | Offline untrusted storage with immediate detection of forking and replay attacks | |
Soriano-Salvador et al. | SealFS: Storage-based tamper-evident logging | |
Dinis et al. | Rr: A fault model for efficient tee replication | |
Yang | Efficient trusted cloud storage using parallel, pipelined hardware | |
Brandenburger | Securing Data Integrity from Cloud Storage to Blockchains | |
Li et al. | Database Access Information Security Management Simulation under Big Data Platform | |
Druschel | Restart-Rollback: A Fault model for distributed systems with persistent state | |
Wei et al. | A Scalable, Trustworthy Infrastructure for Collaborative Container Repositories | |
de Oliveira Libório | Privacy-Enhanced Dependable and Searchable Storage in a Cloud-of-Clouds |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |