CryptDB随手笔记(一)

说到密态数据库,不得不说的一个产品就是CryptDB了,CryptDB是由麻省理工Popa团队与2010年提出的。

       在线应用程序很容易被窃取敏感信息,因为攻击者可以利用软件漏洞来获得私有数据,并且由于好奇或恶意的关系,管理员可能捕获及泄漏数据。CryptDB是一个系统,在面对SQL数据库支持的应用程序的这些攻击时,提供实用和可证明的机密性。它的工作原理是,通过使用一组高效的SQL感知加密方案,对加密数据执行SQL查询。CryptDB将密钥与用户密码连接在一起,因此一个数据元素仅能通过访问那个数据的用户的密码解密。因此,数据库管理员不能访问解密的数据,即使所有服务器都受到攻击,攻击者也不能解密任何未登录用户的数据。对来自MySQL生产服务器的1.26亿个SQL查询的分析显示,CryptDB可以支持在跟踪中l 所看到的128,840个列中99.5%的加密数据上的操作。我们的评估显示,CryptDB具有低开销,与未修改的MySQL相比,phpBB(一个网络论坛应用程序)的吞吐量降低了14.5%,来自TPCC的查询的吞吐量降低了26%。将加密密钥链接到用户密码需要11-13个唯一模式注释,以保护三个多用户Web应用程序的20多个敏感字段和2-7行源代码更改。

介绍

       私人信息的窃取是一个重要的问题,特别是对于在线应用。攻击者可以利用软件漏洞对服务器做未经授权的访问;好奇的或恶意的管理员在主机端或应用程序提供商处可以窥探私人数据;通过物理方式访问服务器的攻击者可以访问内存和硬盘上的所有数据。减少由服务器损坏而造成的损害的一种方法是加密敏感数据,如在客户端上运行所有计算(应用程序逻辑)。不幸的是,一些重要的应用程序不适合使用这种方法,包括由数据库所支持的为用户的查询处理生成数据的网站,以及大数据量计算的应用程序。即使这种方法成立,将现有的服务端应用转换为这种形式也是很困难的。另一种方法是考虑存在于理论中的解决方案,如全同态加密,它允许服务器在加密数据上计算任意函数,只有客户端能看见解密后的数据。然而,全同态加密方案也是开销很大的。

        CryptDB系统是一个中间设计点,为基于数据库管理系统的应用提供了机密性。CryptDB利用了基于数据库应用的典型结构,由DBMS服务器和一个单独的应用服务器组成。CryptDB的方法是在加密数据上执行查询,SQL使用了一套定义明确的操作,我们在加密数据上高效地支持每个操作,使其更加实用。下图为CryptDB的系统架构图。

CryptDB有两个威胁。第一个是好奇的数据库管理员(DBA)试图通过窥探DBMS服务器学习隐私数据(例如,健康记录,财务报表,个人信息),这种情况,CryptDB可以防止DBA学习隐私数据。第二个是攻击者完全控制应用和DBMS服务器,这种情况,CryptDB不能为已登陆到应用的用户提供保证,但仍能保证未登录用户数据的机密性。

       对于清除威胁有两个挑战。第一个挑战是尽量减少泄漏到DBMS服务器的保密信息,及有效执行各种查询的能力。目前在加密数据上执行计算的方法不是太慢了就是无法提供足够的机密性。另一方面,用一个强壮高效的密码系统加密数据,如AES,会阻止DBMS服务器执行很多SQL查询,如查询“sales”部门中的雇员人数,或工资高于$60,000的雇员人数。在这种情况下,唯一可行的解决方案是给DBMS服务器解密密钥,但这也将使攻击者可以访问所有数据。

       第二个挑战是当攻击者控制了除DBMS数据库外的应用服务器时,尽量减少数据的泄漏。因为在加密数据上做任意计算是不切实际的,所以应用程序必须能够解密数据。难点在于确保妥协的应用只能获得有限的解密数据。天真的解决方案是,为每个用户分配一个不同的数据库加密密钥,它们的数据不适用于共享数据的应用程序,如公告板和会议评审站。

 

CryptDB解决这些挑战的三个思路:

——首先是在加密数据上执行SQL查询。CryptDB用SQL感知加密策略实现这个想法,SQL查询是由一套定义明确的操作组成的,如相等检查、排序比较、总计、连接等。为了适应已知的加密方案,以及为连接应用一套新的隐私保护加密加密方法,CryptDB加密每个数据项,并在一定程度上允许DBMS在转换后的数据上执行操作。CryptDB的高效得益于其主要使用对称密钥加密,避免了全同态加密,并运行于未修改的数据库管理系统软件上(通过使用自定义函数)。

——第二个技术是可调整的基于查询的加密。一些加密方案会泄漏数据的更多信息给DBMS服务器,但其需要处理某些查询。为避免对DBMS数据库泄漏加密数据的所有可能,CryptDB根据运行时所观察到的查询,对所有给定数据项仔细地调整了SQL感知的加密方案。为了实现高效的调整操作,CryptDB使用洋葱加密。洋葱是一个抽象的说法,是在数据库中彼此紧密地存储多个密文,避免昂贵的重新加密。

——第三个想法是连接加密密钥与用户密码,这样任意数据项仅能当用户访问它时,通过用户密码中的连接密钥解密。因此,即使DBMS及应用程序已经被完全控制,如果没有用户登陆应用程序,或者说如果攻击者不知道用户密码时,其就不能解密用户数据。为了构建能够保证应用程序数据的隐私性及分享策略的连接密钥,CryptDB允许开发者在应用程序的SQL模式上提供策略注释,指定哪些用户可以访问数据项。

Popa等人在MySQL和PostgreSQL上都实现了CryptDB。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值