相关概念
cp-abe需要用到许多算法库,像M4、bison、flex、gmp、pbc,且cpabe依赖pbc,pbc依赖gmp,gmp依赖M4、bison、flex
M4 :是一个宏处理器.将输入拷贝到输出,同时将宏展开. 宏可以是内嵌的也可以是用户定义的. 除了可以展开宏,m4还有一些内建的函数,用来引用文件,执行Unix命令,整数运算,文本操作,循环等. m4既可以作为编译器的前端也可以单独作为一个宏处理器.M4 依赖于: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed等;
bison: Bison实际上是使用最广泛的Yacc-like分析器生成器,使用它可以生成解释器,编译器,协议实现等多种程序.
flex:是一个产生扫描器的工具;能识别文本模式的词句的程序.flex读入给定的文件,或没有文件名给定时的标准输入,即要产生的扫描器的说明.说明按照正规表达式和C代码的格式,叫做规则.flex产生定义了例程’yylex()‘的’lex.yy.c’C源码文件,该文件被编译和用’-lfl’标志链接库以产生可执行文件,当可执行文件被运行后,它分析以正规表达式出现的输入.无论何时它找到匹配,都将执行相应的C代码.(bison flex实际上就是用于实现属性加密中访问控制策略)
gmp:GMP是一个任意精度的开源算术库,可用于符号整数,有理数,浮点数计算。
pbc:基于对数运算的算法库
OpenSSL是一个广泛使用的加密库,实现SSL和TLS协议以保护计算机网络上的通信。 OpenSSL被Apache Web服务器,PHP,Postfix等许多软件广泛使用。 OpenSSL为Chipers(AES,Blowfish,DES,IDEA等),加密散列函数(MD5,MD4,SHA-1,SHA-2等)和公钥加密(RSA,DSA,Diffie)等不同的加密算法提供支持。 - 赫曼密钥交换)。
1.安装m4
sudo apt-get install m4
2.安装gmp
下载https://gmplib.org/
(./configure要进入包的下载路径)
lzip -d gmp-6.1.0.tar.lz
tar -zxvf gmp-6.1.0.tar
cd gmp-6.1.0
./configure
make
make check
sudo make instal
3.安装pbc
下载https://crypto.stanford.edu/pbc/download.html
解压安装
tar -zxvf pbc-0.5.14.tar.gz
cd pbc-0.5.14
./configure
出现
flex not found
执行
sudo apt-get install flex
安装成功后继续执行
./configure
出现
bison not found
运行
sudo apt-get install bison
成功后执行
./configure
make
sudo make install
4.安装openssl
下载https://www.openssl.org/source/
(官网指出仅支持最新版本3.0和1.1.1(直到2023)年,这里下载的是1.1.1)
tar -zxvf openssl-1.1.1l.tar.gz
cd openssl-1.1.1
./config
make
sudo make install
完成后进行版本的测试,发现是原先系统自带的旧版本
因此需要将OpenSSL进行备份与替换(https://www.cnblogs.com/jsjliyang/p/10606908.html),可以参考以上链接。(在下载OpenSSL前先将旧版本进行卸载,再下载新版本可能会更简单)
(切换旧版本是需要切换为root用户,设置root用户密码)
5.安装libbswabe
http://hms.isi.jhu.edu/acsc/cpabe/ 或者 http://acsc.cs.utexas.edu/cpabe/ 下载cpabe-0.11和libbswabe-0.9
解压缩
tar -zxvf libbswabe-0.9.tar.gz
cd libbswabe-0.9
下载libglib包
sudo apt-get install libglib2.0-dev
./configure
make
sudo make install
6.cpabe解压安装
tar -zxvf cpabe-0.11.tar.gz
cd cpabe-0.11
./configure
可以看到有警告,解决方法:
进入cpabe-0.11目录下,找到Makefile文件,然后在LDFLAGS最后加入-lgmp
然后下载checkinstall
sudo apt-get install checkinstall
然后执行
sudo checkinstall
执行make
提示错误发生在policy_lang.y文件里,所以再次去cpabe包里找到该文件,根据提示进行修改。
解决:67行 } 前加 ;
%llu都改为 %lu 即可
修改完成后再次执行
make
sudo make install
最后执行cpabe-setup -h
检测是否成功
参考博客:https://blog.csdn.net/huifeideyema/article/details/51695231
https://www.cnblogs.com/cjy15639731813/p/6654196.html