【属性基加密】Ubuntu下CP-ABE库安装及调用教程详解

目录

一、前言

二、CP-ABE

1、啥是CP-ABE

2、CP-ABE流程

三、CP-ABE库安装

1、下载

2、安装依赖项

3、gmp安装

4、pbc安装

5、libbswabe安装

6、cpabe安装

四、调用

1、setup

2、keygen

3、encrypt

4、decrypt


一、前言

最近在搞密码学,了解到了属性基加密,在代码配置与库安装过程中,出现了很多问题,所以把自己安装记录一下,也能够帮助到更多做相关研究的人!

二、CP-ABE

1、啥是CP-ABE

属性基加密的一种,另一种是KP-ABE。全称是:ciphertext policy attribute based encryption,即:密文策略属性基加密系统。

密文对应于一个访问结构而密钥对应于属性集合,解密当且仅当属性集合中的属性能够满足此访问结构。这种设计比较接近于现实中的应用场景,可以假象每个用户根据自身条件或者属性从属性机构得到密钥,然后加密者来制定对消息的访问控制。

2、CP-ABE流程

CP-ABE 主要有四个步骤:

setup 设置:这是一个随机算法,输入隐藏的安全参数,输出公开参数PK和一个主密钥MK。

keygen 密钥生成:这是一个随机算法,输入一组属性Y、主密钥MK、公开参数PK,输出一个解密密钥D。

encryption 加密:这是一个随机算法,输入一个消息m、一个访问结构A、公开参数PK,输出密文E。​

decryption 解密:​基于访问结构A加密的密文E,对应属性组Y的解密密钥D,公开参数PK。如果Y∈A,输出X消息m。

 

三、CP-ABE库安装

我们在Ubuntu 16.04下安装CP-ABE库。

1、下载

我们通过下面这个网址可以下载查看CP-ABE库的相关信息:

http://acsc.cs.utexas.edu/cpabe/index.html

然后可以下载CP-ABE库。

通过下面的网址,下载gmp库:

https://gmplib.org/

然后我们讲下载好的库存到Ubuntu中,准备工作就完成啦。

2、安装依赖项

我们需要安装如下依赖项:m4,flex,bison

在安装之前,我们要先进入root权限:

然后我们使用如下命令安装:

sudo apt-get install m4

sudo apt-get install flex

sudo apt-get install bison

 

3、gmp安装

安装之前,我们要先安装lzip,用于解压gmp源码:

sudo apt-get install lzip

使用下面命令将 gmp-6.2.0.tar.lz 变为 gmp-6.2.0.tar

lzip -d gmp-6.2.0.tar.lz

右键将文件提取到此处,然后打开文件夹,在文件夹中打开终端,输入如下命令进行安装:

./configure

make check

make

make install

 

4、pbc安装

右键将文件提取到此处,然后打开文件夹,在文件夹中打开终端,输入如下命令进行安装:

./configure

make

make install

5、libbswabe安装

使用下面命令安装libssl-dev:

sudo apt-get install libssl-dev

因为我之前安装过,所以上面是我的状态,如果没有安装过就是正常安装。

使用下面命令安装libglib2.0-dev

sudo apt-get install libglib2.0-dev

右键将libbswabe压缩文件提取到此处,然后打开文件夹,在文件夹中打开终端,输入如下命令进行安装:

./configure

make

make install

6、cpabe安装

右键将文件提取到此处,然后打开文件夹,在文件夹中打开终端,输入如下命令进行安装:

./configure

执行完上面的命令,需要修改Makefile文件,在LDFLAGS最后再加一行,写:-lgmp,详细见后面图片。

make

make install

执行完

执行完第一个命令后,编辑Makefile文件,在LDFLAGS最后再加一行,写:-lgmp。

注意

我们无法直接双击打开修改,因为需要root权限,不然状态是只读状态,所以我们要使用管理员命令打开:

然后需要打开policy_lang.y文件在67行的 } 前面添加一个分号

 

如果没有上面这一步,会报错:

Makefile:50: recipe for target 'policy_lang.o' failed

make: *** [policy_lang.o] Error 1

然后继续执行后两条代码

 

四、调用

1、setup

通过setup步骤,我们可以生成公钥和主密钥。命令如下:

cpabe-setup

接下来,我们就可以使用master_key来生成各种与属性集关联的私钥。

2、keygen

当我们拥有了公钥和主密钥,就可以来生成用户的私钥,假设我们有两个用户A和B,假设我们生成对应的私钥为:sara_priv_key,kevin_priv_key。我们使用如下命令生成私钥:

cpabe-keygen -o sara_priv_key pub_key master_key sysadmin it_department 'office = 1431' 'hire_date = '`date +%s`

cpabe-keygen -o kevin_priv_key pub_key master_key business_staff strategy_team 'executive_level = 7' 'office = 2362' 'hire_date = '`date +%s`

通过这一步,我们生成了两个用户的私钥 。

注意

我们只是为某些属性分配了值,另一些属性只是简单地具有了键,并未进行赋值限定。如hire_date。

 

3、encrypt

接下来就是我们的加密过程了。我们需要自己创建一个被加密文件,如:test.txt代码如下:

cpabe-enc pub_key test.txt

(sysadmin and (hire_date < 946702800 or security_team)) or

(business_staff and 2 of (executive_level >= 5, audit_group, strategy_team))

 然后按Ctrl + D。

注意

三行代码必须输入一行,按一次回车,输入完第三行,按Ctrl + D。

运行结果如下图:

这样,我们就生成了一个加密文件test.txt.cpabe。根据其规则,我们知道,kevin可以解密而sara不能解密

4、decrypt

根据上一步我们知道kevin能解密,所以我们使用sara的密钥解密。

对你没有看错,我就是来找茬的:

cpabe-dec pub_key sara_priv_key test.txt.cpabe

然后我们使用kevin的密钥解密:

cpabe-dec pub_key kevin_priv_key test.txt.cpabe

滴滴滴,解密卡! 解密成功!!!

 

 

 

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值