Ubuntu下CP-ABE的使用
在上篇中,已经完成了在Ubuntu下CP-ABE的安装,这篇简单记录一下使用方法。
本人参考的是这篇文章: https://blog.csdn.net/hlsdbd1990/article/details/48291359
大家也可以直接参考官网:http://acsc.cs.utexas.edu/cpabe/tutorial.html
如果小伙伴是按照我上篇分享的文章里的步骤来的话,libbswabe库就可以忽略啦,因为已经安装过啦~
后面的部分大家按照上述两个链接里的步骤来是没有问题的,但是我希望帮助一些小白,也借这个机会理解一下每个步骤的内容。
假设您在一家仅雇用了两名新员工Sara和Kevin的公司工作,而您将为其工作站创建私钥。
一、创建一个储存公私钥的文件夹
我的路径是/home/allen/ 也就是用户allen的文件夹啦。
二、生成master key和public key
进入cp-abe文件夹,通过cpabe-setup命令产生master key和public key,也就是系统主密钥和公钥。
然后,我们可以使用master_key来生成与各种属性集关联的私钥。
三、为具有属性值的用户产生私钥
我们可以使用cpabe-keygen命令为具有属性值的用户产生私钥,也就是您的员工Sara和Kevin。给出以下例子:
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`
这里为了方便,直接将命令写出来,需要注意的是:
(1)“=”两边需要有空格,不然会报错
(2)cp-keygen使用可以参照:http://acsc.cs.utexas.edu/cpabe/cpabe-keygen.html
(3)代码的末尾有一个“\”是因为这一行放不下了,想换行继续输命令。如果是自己手敲的话,可以忽略“\”。
(4)上例产生了两个私钥sara_priv_key和kevin_priv_key,分别是sara和kevin的私钥。
如示例中所看到的那样,我们为某些属性分配了一个值,而另一些属性只是简单地“具有”键而没有进一步的限定。
date命令用于将当前时间用作属性值。
四、在指定策略下对敏感文档进行加密
使用cpabe-enc在指定策略下即可进行加密。
事先新建一个文件security_report.pdf ,假设这个文件是要被加密的。
输入:
cpabe-enc pub_key security_report.pdf
(sysadmin and (hire_date < 946702800 or security_team)) or
(business_staff and 2 of (executive_level >= 5, audit_group, strategy_team))
^D
注意:
(1)第二行“or”后面一定要换行!!!
(2)最后^D为Ctrl+D,表示结束输入。
我们可以看到这个文件已经被cpabe进行加密了。
五、解密
使用cpabe-dec命令,可以用私钥对密文进行解密。
cpabe-dec pub_key kevin_priv_key security_report.pdf.cpabe
我们可以看到这个文件已经解密完成了。
如果我们输入:
cpabe-dec pub_key sara_priv_key security_report.pdf.cpabe
我们可以看到,并不能解密,因为在这个例子里设计的策略是kevin的属性满足,但是Sara的属性不满足。
最后,可以说CP-ABE的使用的流程已经十分清楚了,但是具体的细节部分,需要自己再消化消化,后期如果有机会再写一篇笔记吧~