CN107506659B - 一种基于sgx的通用数据库的数据保护***及方法 - Google Patents

一种基于sgx的通用数据库的数据保护***及方法 Download PDF

Info

Publication number
CN107506659B
CN107506659B CN201710621204.0A CN201710621204A CN107506659B CN 107506659 B CN107506659 B CN 107506659B CN 201710621204 A CN201710621204 A CN 201710621204A CN 107506659 B CN107506659 B CN 107506659B
Authority
CN
China
Prior art keywords
database
data
message
key
application
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
Application number
CN201710621204.0A
Other languages
English (en)
Other versions
CN107506659A (zh
Inventor
王永智
沈玉龙
马佳文
刘灵通
苏翠翠
杨宜博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN201710621204.0A priority Critical patent/CN107506659B/zh
Publication of CN107506659A publication Critical patent/CN107506659A/zh
Application granted granted Critical
Publication of CN107506659B publication Critical patent/CN107506659B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本发明属于数据库技术领域,公开了一种基于SGX的通用数据库的数据保护***及方法,包括初始化阶段和执行阶段。初始化阶段包括:远程认证及密钥共享;应用向数据库引擎发送其数据密钥以及ID;使用共享密钥加密;根据应用程序的ID选择正确的数据密钥;执行阶段包括:应用对数据引擎发送数据库请求;数据库引擎中根据接收ID查找秘钥;数据库引擎验证所发消息的完整性;消息解密;验证数据库文件完整性;在enclave中以明文执行请求语句;执行结果加密返回应用;数据库表及表MAC值更新。本发明保护了数据库的数据机密性及数据完整性。在多应用环境下,对于不支持用户隔离和访问控制的轻量级数据库,本发明依然可实现数据机密性和数据完整性的保护。

Description

一种基于SGX的通用数据库的数据保护***及方法
技术领域
本发明属于数据库技术领域,尤其涉及一种基于SGX的通用数据库的数据保护方法,保护了多应用程序场景下应用程序的数据机密性,及数据完整性,保护了应用程序数据不受外部攻击者、恶意数据库管理员和恶意应用程序的恶意攻击和篡改。对于不支持用户隔离和访问控制的轻量级数据库,本发明依然可实现对数据机密性和数据完整性的保护。
背景技术
数据库是现代计算***中的重要组成部分。特别是处在恶意软件和网络攻击猖獗的时代,数据库安全成为需要解决的一个重要问题。数据库的存储安全问题,敏感数据的防窃取和防篡改问题越来越引起人们的重视。业内简单使用对称加密方案加密数据表,在解决方案中,数据处理仍然需要以明文形式执行,使数据裸露在外。在密文中实现数据操作,利用多重加密方案,提出的***几乎不能实现数据的密文操作,所以不能提供严格的安全保证,通常可能会被某些特定的攻击者所影响。例如在CryptDB这个公开的项目中,通过组合不同的加密方案来保证MySQL数据的机密性,这些加密方案包括确定性加密(DET),订单保留加密(OPE),部分同态加密(PHE)等。特权保留加密方案(例如 DET和OPE)为攻击者提供了一个线索,使他们能够将加密数据恢复为明文,甚至已经有人对CryptDB中加密的数据进行了明文恢复。
综上所述,现有技术存在的问题是:目前保证安全的加密方案存在以下问题:不能提供严格的安全保护;不支持原有的很多计算功能;单纯基于密码学的方法性能较差。
发明内容
针对现有技术存在的问题,本发明提供了一种基于SGX的通用数据库的数据保护***及方法。
本发明是这样实现的,一种基于SGX的通用数据库的数据保护方法,所述基于SGX的通用数据库的数据保护方法包括:初始化阶段和执行阶段;
所述初始化阶段具体包括:
步骤一,远程认证及密钥共享;
步骤二,应用程序将向数据库引擎发送数据密钥及其ID:IDi;并使用共享密钥sk进行加密,sk是步骤一中SGX远程认证(基于DH交换的协议)后生成的共享密钥,加密方法要求使用sk进行的对称加密即可;
步骤三,数据库引擎在接收到IDi和ki后将其进行记录。
所述执行阶段包括:
步骤一,应用i使用ki计算即将发送的消息Eki(SQL Stmts)||IDi的消息验证码MACi(使用主流MAC计算方法均可)。
步骤二,应用i将消息Eki(SQL Stmts)||IDi以及MACi发送到数据库引擎;
步骤三,在数据库引擎中,它将根据接收的IDi查找秘钥ki
步骤四,数据库引擎利用查找到的ki计算发送来的消息的消息验证码 MACd,与接收到的MACi进行对比,以验证消息的完整性,若两者相同则消息在发送途中未被篡改,消息完整。
步骤五,数据库引擎使用ki解密数据库请求语句以及请求语句所请求使用的数据库,根据数据库请求语句使用ki计算数据表t的MACti,读取数据表中该表拥有者j在建表时或修改表时所记录的使用其秘钥kj计算的MACtj,对比 MACti和MACtj,若两者相同则数据表未被攻击者所篡改,且该应用程序i拥有读取、修改的该表t的权利;
步骤六,数据库请求语句在数据库enclave中的以明文执行;
步骤七,其执行结果将用ki加密并发送回应用程序,数据库表的任何更新也将以加密格式写回数据库中进行存储并且重新计算数据表的MAC值写回数据库文件。
进一步,所述初始化阶段的步骤一具体包括:应用程序使用数据库服务,选择对称密钥作为其数据密钥;执行远程认证程序验证数据库引擎的完整性;远程认证验证数据库引擎的完整性,确保应用程序连接的数据库引擎未被修改;远程认证在应用程序i和数据库enclave之间使用共享密钥;数据在双方之间用 sk进行加密传输。
本发明的另一目的在于提供一种所述基于SGX的通用数据库的数据保护方法的基于SGX的通用数据库的数据保护***,所述基于SGX的通用数据库的数据保护***包括:
初始化阶段模块,用于实现远程认证及密钥共享,向数据库引擎发送数据密钥及其ID:IDi,在接收到IDi和ki后将进行记录,根据应用程序的ID选择正确的数据密钥;
执行阶段模块,用于实现需要执行的每个数据库请求语句,使用数据密钥 ki进行加密,应用i使用ki计算即将发送的消息Eki(SQL Stmts)||IDi的消息验证码MAC;应用i将消息Eki(SQL Stmts)||IDi以及MACi发送到数据库引擎;在数据库引擎中,它将根据接收的IDi查找秘钥ki;数据库引擎验证所发消息的完整性,利用查找到的ki计算发送来的消息的消息验证码MACd,与接收到的 MACi进行对比,以验证消息的完整性,若两者相同则消息在发送途中未被篡改,消息完整;使用数据密钥ki对消息进行解密;数据库引擎根据消息验证数据库文件的完整性,使用ki解密请求语句所请求使用的数据库,根据数据库请求语句使用ki计算数据表t的MACti,读取数据表中该表拥有者j在建表时或修改表时所记录的使用其秘钥kj计算的MACtj,对比MACti和MACtj,若两者相同则数据表未被攻击者所篡改,且该应用i拥有读取、修改的该表t的权利;数据库请求语句在数据库enclave中的以明文执行;其执行结果将用ki加密,并计算结果的MAC值后一同发送回应用程序,数据库表的任何更新也将以加密格式写回数据库中进行存储并且重新计算数据表的MAC值写回数据库文件。
本发明的另一目的在于提供一种上述基于SGX的通用数据库的数据保护方法的数据库,包括数据库引擎为SQLite。
本发明的另一目的在于提供一种上述基于SGX的通用数据库的数据保护方法,其特征在于,数据库引擎与应用模块分布于同一台主机的本地模式。
本发明的另一目的在于提供一种上述基于SGX的通用数据库的数据保护方法,其特征在于,数据库引擎与应用模块分布于不同主机的远程模式。
本发明的优点及积极效果为:本发明保护了多应用程序场景下应用程序的数据机密性,及数据完整性,保护了应用程序数据不受外部攻击者、恶意数据库管理员和恶意应用程序的恶意攻击和篡改。图6显示了CryptSQLite与两个基准相比的执行时间,这两个基准分别是支持加密的SQLite和不支持加密的 SQLite,CryptSQLite的执行时间均高于这两个基准;与不支持加密的SQLite 相比,CryptSQLite的执行时间为其2.40到15.36倍;与支持加密的SQLite相比, CryptSQLite的执行时间较长,为其1.58到4.54倍,平均性能开销为131%。图 7描述了在CryptSQLite查询中花费的时间的详细组成,额外的性能开销包括CryptSQLite内的加密和解密操作以及其他与SGX相关的时间开销,如ECALL/ OCALL调用开销,图7显示了加密和解密操作在执行时间中占很大比例。 CryptSQLite为未优化的实例,进一步的优化将会提高其性能。
附图说明
图1是本发明实施例提供的基于SGX的通用数据库的数据保护***结构示意图;
图2是本发明实施例提供的基于SGX的通用数据库的数据保护方法初始化阶段流程图。
图3是本发明实施例提供的基于SGX的通用数据库的数据保护方法执行阶段流程图。
图4是本发明实施例提供的使用SQLite为具体数据库引擎实现的原型***示意图。
图5是本发明实施例提供的CryptSQLite与两个基准相比的执行时间示意图。
图6是本发明实施例提供的CryptSQLite的TPC-H语句执行时间示意图。
图7是本发明实施例提供的CryptSQLite查询中花费的时间细目示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
下面结合附图对本发明的应用原理作详细的描述。
如图1所示,本发明实施例提供的基于SGX的通用数据库的数据保护***包括:初始化阶段模块1和执行阶段模块2。
初始化阶段模块1,用于实现远程认证及密钥共享,向数据库引擎发送数据密钥及其ID:IDi,在接收到IDi和ki后将进行记录,根据应用程序的ID选择正确的数据密钥。
执行阶段模块2,用于实现需要执行的每个数据库请求语句,使用数据密钥 ki进行加密,应用i使用ki计算即将发送的消息Eki(SQL Stmts)||IDi的消息验证码MACi;应用i将消息Eki(SQL Stmts)||IDi以及MACi发送到数据库引擎;在数据库引擎中,它将根据接收的IDi查找秘钥ki;数据库引擎验证所发消息的完整性,利用查找到的ki计算发送来的消息的消息验证码MACd,与接收到的 MACi进行对比,以验证消息的完整性,若两者相同则消息在发送途中未被篡改,消息完整;使用数据密钥ki对消息进行解密;数据库引擎根据消息验证数据库文件的完整性,使用ki解密请求语句所请求使用的数据库,根据数据库请求语句使用ki计算数据表t的MACti,读取数据表中该表拥有者j在建表时或修改表时所记录的使用其秘钥kj计算的MACtj,对比MACti和MACtj,若两者相同则数据表未被攻击者所篡改,且该应用i拥有读取、修改的该表t的权利;数据库请求语句在数据库enclave中的以明文执行;其执行结果将用ki加密,并计算结果的MAC值后一同发送回应用程序,数据库表的任何更新也将以加密格式写回数据库中进行存储并且重新计算数据表的MAC值写回数据库文件。
如图2所示,本发明实施例提供的基于SGX的通用数据库的数据保护方法初始化阶段发放具体包括:
步骤1,远程认证及密钥共享;
步骤2,应用程序将向数据库引擎发送数据密钥及其ID:IDi;并使用共享密钥sk进行加密;
步骤3,数据库引擎在接收到IDi和ki后将进行记录,根据应用程序的ID 选择正确的数据密钥;
步骤2具体包括:假设应用程序希望使用数据库服务,将选择对称密钥作为其数据密钥;执行远程认证程序来验证数据库引擎的完整性;远程认证是SGX 定义的标准协议,远程认证的目的是验证数据库引擎的完整性,确保应用程序连接的数据库引擎未被修改;远程认证最终将在应用程序i和数据库enclave之间使用共享密钥(sk);数据可以在双方之间用sk进行加密传输。
在初始化阶段之后,确保了应用程序i连接到经过验证的数据库引擎。并且确定了使用数据库引擎和应用程序i进行协商的数据密钥ki来加密数据、数据库请求语句和请求的执行结果。
如图3所示,本发明实施例提供的基于SGX的通用数据库的数据保护方法执行阶段包括:
步骤1,应用i对数据引擎发送数据库请求;
步骤2,在数据库引擎中,它将根据接收的IDi查找秘钥ki
步骤3,数据库引擎验证所发消息的完整性;
步骤4,使用数据密钥ki对消息进行解密;
步骤5,数据库引擎根据消息验证数据库文件的完整性;
步骤6,数据库请求语句在数据库enclave中的以明文执行;
步骤7,其执行结果将用ki加密并发送回应用程序,数据库表的任何更新也将以加密格式写回数据库中进行存储,并更新其MAC值。
所述执行阶段具体包括:
步骤1,应用i使用ki计算即将发送的消息Eki(SQL Stmts)||IDi的消息验证码MAC(使用主流MAC计算方法均可)。
步骤2,应用i将消息Eki(SQL Stmts)||IDi以及MACi发送到数据库引擎;
步骤3,在数据库引擎中,它将根据接收的IDi查找秘钥ki
步骤4,数据库引擎利用查找到的ki计算发送来的消息的消息验证码MACd,与接收到的MACi进行对比,以验证消息的完整性,若两者相同则消息在发送途中未被篡改,消息完整。
步骤5,数据库引擎使用ki解密数据库请求语句以及请求语句所请求使用的数据库,根据数据库请求语句使用ki计算数据表t的MACti,读取数据表中该表拥有者j在建表时或修改表时所记录的使用其秘钥kj计算的MACtj,对比MACti和MACtj,若两者相同则数据表未被攻击者所篡改,且该应用程序i拥有读取、修改的该表t的权利;
步骤6,数据库请求语句在数据库enclave中的以明文执行;
步骤7,其执行结果将用ki加密并发送回应用程序,数据库表的任何更新也将以加密格式写回数据库中进行存储,并且重新计算数据表的MAC值写回数据库文件。
如图4所示,本发明实施例使用SQLite为具体数据库引擎实现的原型***并且使用远程模型,即数据库引擎和应用在不同主机上,使用SQLite 3.8.4开发了CryptSQLite的原型***。CryptSQLite采用英特尔SGX SDK 1.7实现,主机操作***是Linux Ubuntu14.04;CryptSQLite分为两个组件:可信SQLite enclave 和不可信的SQLite代理;通过使用ECALL和OCALL实现两个组件之间的内部通信;在SQLite代理中,请求处理程序用于接收从应用程序发送的SQL请求;远程认证模块作为代理在初始化阶段即完成SGX远程认证。SQLite引擎在 SQLite enclave中,安全地执行SQL语句;密封钥匙用于保护应用程序的数据密钥。远程认证的核心功能是在应用模块中认证服务器通信进行远程认证和提供数据密钥。
接口实现:鉴于SQLite架构的高度模块化设计,采用SQLite与外部环境之间的两种边界来处理由应用程序发出的SQL请求的SQL接口、OS接口。使用 OS调用来支持查询,例如将记录存储到内存中。基于SGX编程模型,为了使 SQLite适应于enclave,两种类型的接口应以ECALL和OCALL形式的边缘例程来实现;边缘例程的概念用于桥接不受信任的SQLite代理和可信SQLite enclave;具体来说,ECALL作为可信任代理来满足不受信任区域的调用,使其调用enclave中的某些功能,而OCALL作为代理来调用enclave中不可信区域的功能。
SQL接口和OS接口的实现细节如下:
SQL接口。考虑到安全性,本发明仅暴露了通过ECALLs的包装界面sqlite3 exec。它将SQL语句(创建,查询,更新,删除等)传递给SQLite引擎,并将结果返回给请求处理程序。
操作***界面。本发明在OS界面中实现了OCALL功能来委托操作***调用。本发明实施了29个委托的OCALL功能来委托29个操作***的调用。
数据库加密:数据库加密是以页的粒度来执行的,页是表中存储记录的基本结构。属于不同应用程序的表使用特定于应用程序的密钥进行加密。具体来说,本发明实现了sqlite3CodecAttach中使用的钩子函数(hook function),将编解码功能附加到加密/解密表页面。编解码器功能使用SGX SDK库sgx tcrypto 实现。对于每一页,本发明使用128位CTR模式的AES加密方案进行加密/解密。
密钥:应用数据密钥{ki|1≦i≦n}由运行SQLite的enclave的密封秘钥保护。在初始化阶段,由SQLite enclave和应用程序i协商的应用程序数据密钥ki,在***数据库之前由SGX指令EGETKEY提供的密钥加密。在执行应用程序发出的SQL请求之前,通过使用密封密钥对数据密钥ki进行解密来得到用作应用表的透明解密/加密的当前密钥kcur。只有运行特定SQLite的扩展才能访问密封密钥,所以数据密钥被安全地保护。
将对使用SQLite为具体数据库引擎实现的本发明的原型***CryptSQLite 的性能和SQLite本身的性能进行对比分析。
下面结合实验对本发明的应用效果作详细的描述。
本发明建立符合图5的实验环境。并使用数据库基准测试TPC-H来测试其的性能。
1、环境设置
本发明设置了符合图5的实验环境。具体来说,本发明使用HP台式机作为应用程序主机,一台Lenovo Thinkpad T460笔记本电脑作为数据库主机。数据库主机和应用主机与100/1000M以太网相连。应用主机配备了4核3.2GHZ Intel Core i5-6500CPU和4GB内存。数据库主机配有4核2.5GHz Intel i7-6500U CPU,支持SGX版本1和8GB内存。两台主机的操作***都是Linux Ubuntu 14.04。基于SQLite 3.8.4开发,使用英特尔SGX SDK 1.7。
2、评估
本发明使用TPC-H来测试该实现案例的性能。通过将比例因子设置为1并从TPC-H基准测试的22个查询中选出16个来进行测试,数据库大小1GB。在这次测试中,本发明预先将加密数据上传到数据库主机。这些查询从应用程序主机发送到数据库主机。完成查询后,查询结果将发送回应用程序。根据执行阶段设计,查询语句和语句执行结果分别为SQL请求和SQL返回结果。
本发明使用SQLite 3.8.4的两个设置分别和该发明所实现的原型***进行了性能测试对比。第一个是不支持数据加密的原始SQLite,因此不提供任何数据保护。第二个准是启用数据加密的原始SQLite,然而,在执行过程中,仍然需要在主存储器上解密数据,从而将应用程序数据暴露给了攻击者。图6显示了CryptSQLite与两个基准相比的执行时间。结果表明,CryptSQLite的执行时间高于两个基线。与没有加密的原始SQLite相比,CryptSQLite的执行时间要高于 2.40和15.36之间的因子。与原来的SQLite加密相比,CryptSQLite的执行时间较高,在1.58和4.54之间。与加密的原始SQLite相比,CryptSQLite的平均性能开销为131%。
图7描述了在CryptSQLite查询中花费的时间细目。可以看出,额外的性能开销包括CryptSQLite内的加密和解密操作以及其他与SGX相关的成本,如 ECALL/OCALL调用开销。该图显示加密和解密操作在执行时间中占很大比例。
下面结合安全性分析对本发明的应用原理作进一步的描述。
本发明的数据库加密***的目标是确保攻击者无法检索表数据的明文、数据库查询请求语句以及其他应用程序的数据库查询请求的返回结果。在本发明的安全模型中,定义了三种攻击者,即外部攻击者、恶意数据库管理员和恶意应用程序。
(1)如果外部攻击者想要获取或篡改明文表数据,数据库查询请求和受信任的应用程序i的数据库查询结果,则她需要打破数据库enclave或获取数据密钥ki。由于本发明假设该数据库加密引擎不包含已知的漏洞,SGX enclave可确保攻击者无法访问数据库enclave,所以攻击者无法观察或篡改数据库引擎中执行的计算。数据密钥ki仅在数据库引擎和应用程序i中显示。因为本发明假设这两个组件都是可信的,所以ki不会被暴露给攻击者。
(2)如果外部攻击者对表数据或者传输消息进行错改,这时本发明需要进行完整性验证。在初始阶段进行的远程认证可以保证数据源的有效性和可信性,在执行阶段的数据加解密保证数据被窃听者获取也能防止窃听者得知数据的内容,要做到数据的安全传输,还需要确定收到的数据没有经过窃听者的篡改,这就涉及到数据的完整性校验。
(3)想要校验消息的完整性,引入:消息验证码。消息验证码是一种与秘钥相关的单项散列函数。密文的收发双方在初始化阶段共享一个秘钥。密文发送者(应用程序发送SQL语句或者数据库引擎enclave发送SQL执行结果)将密文的MAC值随密文一起发送,密文接收者通过共享秘钥计算收到密文的 MAC值,这样就可以对收到的密文做完整性校验。当篡改者篡改密文后,没有共享秘钥,就无法计算出篡改后的密文的MAC值。GMAC就是利用伽罗华域 (Galois Field,GF,有限域)乘法运算来计算消息的MAC值。
(4)SGX所提供的两个加解密服务分别为aes-ctr和aes-gcm两个算法,这两种算法都属于对称加密算法,其中GCM可以提供对消息的加密和完整性校验,GCM中的G就是指GMAC,C就是指CTR,另外,它还可以提供附加消息的完整性校验。
(5)恶意数据库管理员只能对加密的应用程序数据进行操作,但不知道解密密钥(即数据密钥)。在没有解密密钥的情况下从密文中恢复明文是计算上不可行的。因此,恶意数据库管理员无法获取应用程序数据的明文。恶意应用程序m可能希望访问其他应用程序i的数据。
(6)如果m执行重播攻击,即记录i发出的SQL请求,然后发送到数据库引擎m那么他将获得请求结果。即使m获得请求结果,没有ki,m仍然不能获得查询结果的明文。
综上所述,本发明数据库加密***可以保护每个应用程序的数据机密性。该***将硬件支持与加密方案相结合,具体来说,硬件上本发明采用第六代英特尔CPU引入的新功能,英特尔软件防护扩展(SGX),以确保在安全环境下执行明文计算。加密方案上,本发明利用对称加密来保护硬盘上存储的数据。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于SGX的通用数据库的数据保护方法,保护了多应用程序场景下应用程序的数据机密性,及数据完整性,保护了应用程序数据不受外部攻击者、恶意数据库管理员和恶意应用程序的恶意攻击和篡改;对于不支持用户隔离和访问控制的轻量级数据库,本发明依然可实现对数据机密性和数据完整性的保护;其特征在于,所述基于SGX的通用数据库的数据保护方法包括:初始化阶段和执行阶段;
所述初始化阶段具体包括:
步骤一,远程认证及密钥共享;
步骤二,应用程序i将向数据库引擎发送数据密钥ki及其ID:IDi;使用共享密钥sk进行加密;
步骤三,数据库引擎在接收到IDi和ki后将进行记录,根据应用程序的ID选择正确的数据密钥;
所述执行阶段包括:
步骤一,应用i对数据引擎发送数据库请求;
步骤二,在数据库引擎中,将根据接收的IDi查找密钥ki;
步骤三,数据库引擎验证所发消息的完整性;
步骤四,使用数据密钥ki对消息进行解密;
步骤五,数据库引擎根据消息验证数据库文件的完整性;
步骤六,数据库请求语句在数据库enclave中以明文执行;
步骤七,其执行结果将用ki加密并发送回应用程序,数据库表的任何更新也将以加密格式写回数据库中进行存储,并更新其MAC值。
2.如权利要求1所述的基于SGX的通用数据库的数据保护方法,其特征在于,所述初始化阶段的步骤一具体包括:应用程序使用数据库服务,选择对称密钥作为其数据密钥;执行远程认证程序验证数据库引擎的完整性,确保应用程序连接的数据库引擎未被修改;使用SGX所提供的远程认证在应用程序i 和数据库enclave之间使用共享密钥;数据在双方之间用sk进行加密传输。
3.如权利要求1所述的基于SGX的通用数据库的数据保护方法,其特征在于,所述执行阶段的步骤一具体包括:应用i使用ki计算即将发送的消息Eki(SQL Stmts)||IDi的消息验证码MAC;应用i将消息Eki(SQL Stmts)||IDi以及MACi发送到数据库引擎。
4.如权利要求1所述的基于SGX的通用数据库的数据保护方法,其特征在于,所述执行阶段的步骤三具体包括:利用查找到的ki计算发送来的消息的消息验证码MACd,与接收到的MACi进行对比,以验证消息的完整性,若两者相同则消息在发送途中未被篡改,消息完整。
5.如权利要求1所述的基于SGX的通用数据库的数据保护方法,其特征在于,所述执行阶段的步骤五具体包括:使用ki解密请求语句所请求使用的数据库表t,根据数据库请求语句使用ki计算数据表t的MACti,读取数据表中该表拥有者j在建表时或修改表时所记录的使用其秘钥kj计算的MACtj,对比MACti和MACtj,若两者相同则数据表未被攻击者所篡改,且该应用程序i拥有读取、修改该表t的权利。
6.如权利要求1所述的基于SGX的通用数据库的数据保护方法,其特征在于,所述执行阶段的步骤七具体包括:执行结果将用ki加密并发送回应用程序,数据库表的任何更新也将以加密格式写回数据库中进行存储,并且重新计算数据表的MAC值写回数据库文件。
7.一种如权利要求1所述基于SGX的通用数据库的数据保护方法的基于SGX的通用数据库的数据保护***,其特征在于,所述基于SGX的通用数据库的数据保护***包括:
初始化阶段模块,用于实现远程认证及密钥共享,应用程序i向数据库引擎发送i的数据密钥ki及其ID:IDi;数据库引擎在接收到IDi和ki后将进行记录,以便在执行阶段根据应用程序的ID选择正确的数据密钥;
执行阶段模块,用于实现需要执行的每个数据库请求语句,使用数据密钥ki进行加密,应用i使用ki计算即将发送的消息Eki(SQL Stmts)||IDi的消息验证码MAC;应用i将消息Eki(SQL Stmts)||IDi以及MACi发送到数据库引擎;在数据库引擎中,它将根据接收的IDi查找密钥ki;数据库引擎验证所发消息的完整性,利用查找到的ki计算发送来的消息的消息验证码MACd,与接收到的MACi进行对比,以验证消息的完整性,若两者相同则消息在发送途中未被篡改,消息完整;使用数据密钥ki对消息进行解密;数据库引擎根据消息验证数据库文件的完整性,使用ki解密请求语句所请求使用的数据库表t,根据数据库请求语句使用ki计算数据表t的MACti,读取数据表中该表拥有者j在建表时或修改表时所记录的使用其秘钥kj计算的MACtj,对比MACti和MACtj,若两者相同则数据表未被攻击者所篡改,且该应用i拥有读取、修改该表t的权利;数据库请求语句在数据库enclave中以明文执行;其执行结果将用ki加密,并计算结果的MAC值后一同发送回应用程序,数据库表的任何更新也将以加密格式写回数据库中进行存储并且重新计算数据表的MAC值写回数据库文件。
8.一种应用权利要求1~6任意一项所述基于SGX的通用数据库的数据保护方法的数据库,包括数据库引擎为SQLite。
9.一种如权利要求1~6任意一项所述的基于SGX的通用数据库的数据保护方法,其特征在于,数据库引擎与应用模块分布于同一台主机的本地模式。
10.一种如权利要求1~6任意一项所述的基于SGX的通用数据库的数据保护方法,其特征在于,数据库引擎与应用模块分布于不同主机的远程模式。
CN201710621204.0A 2017-07-27 2017-07-27 一种基于sgx的通用数据库的数据保护***及方法 Active CN107506659B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710621204.0A CN107506659B (zh) 2017-07-27 2017-07-27 一种基于sgx的通用数据库的数据保护***及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710621204.0A CN107506659B (zh) 2017-07-27 2017-07-27 一种基于sgx的通用数据库的数据保护***及方法

Publications (2)

Publication Number Publication Date
CN107506659A CN107506659A (zh) 2017-12-22
CN107506659B true CN107506659B (zh) 2020-04-07

Family

ID=60689857

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710621204.0A Active CN107506659B (zh) 2017-07-27 2017-07-27 一种基于sgx的通用数据库的数据保护***及方法

Country Status (1)

Country Link
CN (1) CN107506659B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108418691B (zh) * 2018-03-08 2020-10-27 湖南大学 基于sgx的动态网络身份认证方法
CN108763964B (zh) * 2018-04-04 2021-08-24 青岛海尔科技有限公司 一种数据处理方法、装置、可读存储介质及设备
CN110858249B (zh) * 2018-08-24 2021-11-16 中移(杭州)信息技术有限公司 一种数据库文件加密方法、解密方法和相关装置
CN109150517B (zh) * 2018-09-04 2021-03-12 大唐高鸿信安(浙江)信息科技有限公司 基于sgx的密钥安全管理***及方法
CN109800584B (zh) * 2018-10-24 2020-10-16 中国科学院信息工程研究所 一种基于Intel SGX机制的身份或属性加密计算方法和***
CN109299131B (zh) 2018-11-14 2020-05-29 百度在线网络技术(北京)有限公司 一种支持可信计算的spark查询方法及***
CN110008736A (zh) * 2019-01-31 2019-07-12 阿里巴巴集团控股有限公司 区块链中实现隐私保护的方法及节点、存储介质
CN109993003A (zh) * 2019-03-12 2019-07-09 广州大学 一种基于sgx的软件流安全验证方法及装置
US11048816B2 (en) * 2019-04-02 2021-06-29 Sap Se Secure database utilizing dictionary encoding
CN110213231B (zh) * 2019-04-26 2021-11-30 西安电子科技大学 一种面向sgx的轻量级的外包数据访问控制方法及控制***
CN112231694A (zh) * 2020-10-27 2021-01-15 北京人大金仓信息技术股份有限公司 一种数据库的检测方法、装置、设备及介质
CN113568927B (zh) * 2021-06-24 2024-03-29 华控清交信息科技(北京)有限公司 数据处理***、方法、数据库引擎及用于数据处理的装置
CN115758396B (zh) * 2022-08-31 2023-05-30 兰州大学 基于可信执行环境的数据库安全访问控制技术

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101449566A (zh) * 2006-03-02 2009-06-03 摩托罗拉公司 在蜂窝基础设施接入信道上防止拒绝服务攻击的方法和装置
CN104935568A (zh) * 2015-04-20 2015-09-23 成都康赛信息技术有限公司 一种面向云平台接口鉴权签名方法
CN105682092A (zh) * 2016-01-08 2016-06-15 西安电子科技大学 一种基于近距离无线通讯技术的双向认证方法
CN106529327A (zh) * 2016-10-08 2017-03-22 西安电子科技大学 混合云环境下面向加密数据库的数据存取***及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9401893B2 (en) * 2009-12-29 2016-07-26 International Business Machines Corporation System and method for providing data security in a hosted service system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101449566A (zh) * 2006-03-02 2009-06-03 摩托罗拉公司 在蜂窝基础设施接入信道上防止拒绝服务攻击的方法和装置
CN104935568A (zh) * 2015-04-20 2015-09-23 成都康赛信息技术有限公司 一种面向云平台接口鉴权签名方法
CN105682092A (zh) * 2016-01-08 2016-06-15 西安电子科技大学 一种基于近距离无线通讯技术的双向认证方法
CN106529327A (zh) * 2016-10-08 2017-03-22 西安电子科技大学 混合云环境下面向加密数据库的数据存取***及方法

Also Published As

Publication number Publication date
CN107506659A (zh) 2017-12-22

Similar Documents

Publication Publication Date Title
CN107506659B (zh) 一种基于sgx的通用数据库的数据保护***及方法
US20210099287A1 (en) Cryptographic key generation for logically sharded data stores
CN106980794B (zh) 基于TrustZone的文件加解密方法、装置及终端设备
RU2756048C2 (ru) Адресация доверенной среды исполнения с использованием ключа шифрования
US10586057B2 (en) Processing data queries in a logically sharded data store
EP3574622B1 (en) Addressing a trusted execution environment
US10650164B2 (en) System and method for obfuscating an identifier to protect the identifier from impermissible appropriation
US11436345B2 (en) Protection of secret client data in a multiple client data deduplication environment
KR102489790B1 (ko) 서명키를 사용한 신뢰 실행 환경의 어드레싱 기법
CN106997439B (zh) 基于TrustZone的数据加解密方法、装置及终端设备
WO2022028289A1 (zh) 数据加密方法、数据解密方法、装置、终端和存储介质
US20230325516A1 (en) Method for file encryption, terminal, electronic device and computer-readable storage medium
CA3065767C (en) Cryptographic key generation for logically sharded data stores
US10897360B2 (en) Addressing a trusted execution environment using clean room provisioning
US11496287B2 (en) Privacy preserving fully homomorphic encryption with circuit verification
Fan et al. One secure access scheme based on trusted execution environment
da Rocha et al. Secure cloud storage with client-side encryption using a trusted execution environment
Xiong et al. Cloudsafe: Securing data processing within vulnerable virtualization environments in the cloud
Le et al. A tale of two trees: One writes, and other reads. optimized oblivious accesses to large-scale blockchains
JP6830635B1 (ja) データ管理方法
He et al. EnShare: Sharing Files Securely and Efficiently in the Cloud using Enclave
Giweli Enhancing cloud computing security and privacy
da Rocha et al. Trusted Client-Side Encryption for Cloud Storage
JP2022551586A (ja) 暗号化コプロセッサにおけるエンティティ固有の暗号化コードの実行
CN111737256A (zh) 一种基于可信执行环境和区块链的数据库表操作方法和***

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