CryptDB使用教程及漏洞利用

时间:2019-07-06 22:49:19   收藏:0   阅读:692

Introduction

本文介绍华南理工大学软件学院《数据库开发实训》的一个可选课题:CryptDB漏洞利用。

任务目标:

环境要求:


CryptDB Installation

安装ubuntu 12.04 LTS映像,安装完成后进行软件源的设置。

1 sudo gedit /etc/apt/sources.list

删除(也可以备份)所有内容后粘贴以下内容,若不稳定可以自己找:

技术分享图片
#网易
deb http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse
deb-src http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse
deb http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted
#中国科技大学
deb http://debian.ustc.edu.cn/ubuntu/ precise main restricted universe multiverse
deb http://debian.ustc.edu.cn/ubuntu/ precise-backports restricted universe multiverse
deb http://debian.ustc.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse
deb http://debian.ustc.edu.cn/ubuntu/ precise-security main restricted universe multiverse
deb http://debian.ustc.edu.cn/ubuntu/ precise-updates main restricted universe multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ precise main restricted universe multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ precise-security main restricted universe multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ precise-updates main restricted universe multiverse
View Code

若安装中文输入法,可以看这里

安装必要的软件包,并在项目的git页面clone代码。为了方便,这里我们把代码clone到~下:

1 sudo apt-get update
2 sudo apt-get install git ruby lua5.1
3 cd ~
4 git clone https://github.com/CryptDB/cryptdb.git

利用脚本安装CryptDB(脚本会自动安装一切依赖软件,包括mysql):

1 cd cryptdb
2 sudo ./scripts/install.rb  ~/cryptdb

 在安装mysql时会提示设置root登录口令,最好设置为"letmein"。因为之后启动代理服务时默认口令是letmein(也可以自行修改)。

执行完毕后要进行环境变量的设置:

1 sudo su (必需要有这句话!)
2 sudo vim ~/.bashrc
3 # 在文件最后一行加上下面这句,your_account_name替换为你的账户名
4 export EDBDIR=/home/your_account_name/cryptdb

接下来要启动mysql-proxy服务:

1 sudo su (如果上面获取过root权限则不需要)
2 cd /home/your_account_name/cryptdb/bins/proxy-bin/bin/
3 ./mysql-proxy --plugins=proxy 4 --event-threads=4 5 --max-open-files=1024 6 --proxy-lua-script=$EDBDIR/mysqlproxy/wrapper.lua 7 --proxy-address=127.0.0.1:3307 8 --proxy-backend-addresses=127.0.0.1:3306

在$EDBDIR/mysqlproxy/wrapper.lua中存放着数据库代理的相关设置,上文提到的letmein口令被明文存放其中,可根据实际情况修改。

至此,CryptDB安装工作结束。接下来进行CryptDB的功能测试。

启动新的terminal,连接到mysql:

1 mysql -u root -pletmein -h 127.0.0.1 -P 3307

再启动一个新的terminal,连接到mysql:

1 mysql -u root -pletmein -h 127.0.0.1 -P 3306

技术分享图片

其中,使用3307端口的进程模拟客户(或应用)所在进程,使用3306端口的进程模拟数据库管理员所在进程。

接下来进行CryptDB功能测试。在端口为3307的terminal中输入以下命令(不要退出mysql,之后的3306端口terminal同理):

1 create database cryptdbtest;
2 use cryptdbtest;
3 create table user(id int, name varchar(10));
4 insert into user values(2,"tom");

结果如下图所示:

技术分享图片

然后通过3307端口查看数据库表数据:

1 select * from user;

技术分享图片

 可以看到3307通过mysql-proxy代理是可以看到明文数据的,即使表名被加密过,但使用明文的表名依然能查询得到明文的数据。

通过3306端口查看数据库表数据:

技术分享图片

通过3306端口可以看到未加密的数据库名称,但表名和数据全部被加密,也无法使用明文表名。

测试到此结束。


CryptDB Principle Analysis

我们首先了解一下CryptDB的结构。

技术分享图片

CryptDB包含两部分:一个数据库代理和一个未经修改的DBMS。CryptDB使用用户定义的函数(UDF)在DBMS中进行加密操作。矩形和圆角矩形代表过程和数据,阴影代表CryptDB添加的组件。虚线隔离了用户计算机、应用程序服务器以及运行CryptDB数据库代理和DBMS的服务器。

CryptDB被设计以应对两种威胁(见图):

第一类威胁危险性没有第二类威胁大。攻击者一般只获取数据信息,但没有能力去修改数据。

对于第一类威胁,CryptDB的做法是:利用数据库代理(在CryptDB中,称为mysql-proxy)截取所有传入的SQL语句并对语句中的关键字段进行加密,同时确保符合SQL语句的语法要求,然后再将加密后的SQL请求发送给mysql-server;mysql-server负责处理SQL语句,并返回加密的处理结果给mysql-proxy;最后返回的处理结果在mysql-proxy处解密,返回给客户端。CryptDB的存在,使得数据库管理员在没有解密密钥的情况下,无法获知加密之后的数据。这种加密方式称为同态加密。

对于第二类威胁,CryptDB的保密制度指定了链式加密的规则:将加密密钥和用户密码捆绑。这使得数据项只有使用相应的用户的密码登录才可以进行解密。这种做法使得即使服务器被攻破,整个系统被入侵者控制的情况下,只要用户没有登录,攻击者也无法解密用户的数据。

 

(待续)


Reference

[1] Akin, I. H., & Sunar, B. (2014). On the Difficulty of Securing Web Applications Using CryptDB. international conference on big data and cloud computing, 745-752.

[2] Popa, R. A., Redfield, C. M., Zeldovich, N., & Balakrishnan, H. (2011). CryptDB: protecting confidentiality with encrypted query processing. symposium on operating systems principles

[3] Zeng, B. (2019). 《极简密码学》.

 

原文:https://www.cnblogs.com/JHSeng/p/11141300.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!