安全技术
‖32‖
基于CryptDB的数据库加密的技术
◆钱晶晶 孔佳怡 孟凡杰
一、背景
随着私有云的普及,越来越多的用户会把海量的隐私数据存储在云端。当数据面对不可信服务器或对数据充满好奇的管理员时,数据的安全就受到了极大的威胁。其实,任何一个组织都难以保证重要的数据不会被窥探;而对于公有云来说,这个问题更为严重。MIT 研究人员开发出名叫CryptDB 的数据库软件,允许用户查询加密的SQL 数据库,在不解密储存信息的情况下返回结果。CryptDB 首次解决了实用问题,它将数据嵌套进多个加密层,每个都使用不同的密钥,允许对加密数据进行简单操作。此前的全同态加密方案加密数据操作所增加的计算时间是数以万亿倍,而CryptDB 只增加15-26%。
二、CryptDB介绍
(一)理论基础及原理
CryptDB 的实现是以同态加密为理论基础的。一般的加密方案关注的都是数据存储安全。即,我要给其他人发个加密的东西,或者要在计算机或者其他服务器上存一个东西,我要对数据进行加密后在发送或者存储。没有密钥的用户,不可能从加密结果中得到有关原始数据的任何信息。只有拥有密钥的用户才能够正确解密,得到原始的内容。我们注意到,这个过程中用户是不能对加密结果做任何操作的,只能进行存储、传输。对加密结果做任何操作,都将会导致错误的解密,甚至解密失败。
同态加密方案特别之处在于,其关注的是数据处理安全。同态加密提供了一种对加密数据进行处理的功能。也就是说,其他人可以对加密数据进行处理,但是处理过程不会泄露任何原始内容。同时,拥有密钥的用户对处理过的数据进行解密后,得到的正好是处理后的结果。
在对加密的数据执行SQL 查询时,使用的是一个SQL 能够‘理解’的加密方案来进行加密。CryptDB 同样将加密密钥和用户的密码进行了捆绑,这样的话数据项只有使用相应的用户的密码登陆才可以进行解密。作为结果,就是数据库管理员也不能接触到加密的数据,即使服务器被攻破,攻击者也无法解密用户的数据,如果该用户没有登录的话。(二)创新点
1.提出支持SQL 查询的加密策略使得SQL 操作可以映射到加密框架中;
2.基于查询的可调整加密方案使得CryptDB 可以根据用户的查询来调整每组数据集加密等级;
3.洋葱型的加密方案使得可以高效的改变数据的加密等级。(三)安装与调试
CryptDB 是目前同态加密的比较先进的研究模型,但还不适于商用。我们在导师的指导下,并通过查阅一些资料,成功编写安装了CryptDB 软件,下面是我们的安装过程及过程中遇到的问题。
1.需要的环境:
Ubuntu 12.04,13.04  ruby
(1)安装Ubuntu (在虚拟机内安装或直接安装)(2)更新基本软件
安装好Ubuntu 后,需要先将Ubuntu 的软件更新到最新:>sodo apt-get update
(3)安装脚本所需软件ruby :sudo apt-get install git ruby 2、安装:
使用脚本安装CryptDB 。(1)从网站上下载cryptdb
(2)安装CryptDB :切换目录,进入cryptdb 文件夹:cd cryptdb 然后进行安装操作:sudo ./scripts/install.rb. install.rb 文件是使用ruby 写成的安装脚本,会解决数据库安装、UDFs 等问题。具体操作在下面的准备环节介绍。
3、用户名/密码:
默认用户名/密码为root/letmein 。安装过程中可以根据相关提示更改。
4、准备
配置环境和路径:由于执行export EDBDIR=/full/path/to/cryptdb/只能在单次使用中起作用,不能每次开启时都起作用,因此需要将路径写入.bashrc 文件。
此处的/full/path/to/cryptdb/为cryptdb 的绝对目录,不确定的时候可以通过在cryptdb 文件夹中执行pwd 命令查看。(1)进入此用户的主目录注:~为当前用户的主目录。如果是root 用户,则为“/”,代表管理员的主目录。但是目前均以普通用户进行测试,根据需要提升权限。如果以root 用户安装,则上述步骤均可能不适用。(2)然后打开.bashrc :在命令行输入>gedit .bashrc
即可直接以图形化界面方式编辑文件。数据库编辑软件
(3)在.bashrc 文件的最后加上想要加的路径5、运行CryptDB :
保证上面配置正确的情况下,执行下面步骤,不然会出错,不能开启代理。可以每次使用下面的步骤0配置路径,作为代替。(1)开启代理
在Ubuntu 中打开第1个命令窗terminal 。(2)连接CryptDB
在Ubuntu 中打开第2个命令窗terminal 。>mysql -u root -pletmein -h 127.0.0.1 -P 3307注:如果前面已经改了的话,用户名/密码:root/letmein 即为自己设置的用户名/密码。
(3)之后创建数据库、建表、插入数据等操作即可正常操作。(4)进入明文数据库的话,只要变化一下端口即可。在Ubuntu 中打开第3个命令窗terminal 。>mysql -u root -pletmein -h 127.0.0.1 -P 3306即可进入明文数据库,进行明文数据库操作。
至此所有普通CryptDB 操作都已经结束,之后可以进行正常的CryptDB 实验。
三、心得体会
我们在一次次失败中努力前行,期间十分感谢指导老师杨庚教授以及学长给予我们的帮助,在他的指导下,我们最终对于CryptDB 这项技术本身有了一定的了解并做了一些研究,对于软件的编写、安装与研究做出了一些总结推广。最后也希望我们对该软件的研究能够为这项技术的研究与发展提供可能的参考。
(南京邮电大学 210023)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。