CP-ABE的使用
参考:
http://acsc.cs.utexas.edu/cpabe/tutorial.html
http://acsc.cs.utexas.edu/cpabe/
事先先配置好cp-abe:http://www.cnblogs.com/rockorange/p/3757805.html
Using the cpabe Toolkit
First download, untar, compile, and install the most recent tarball of libbswabe, the support library. Next do the cpabe tarball. Each can be installed with the standard GNU build system commands.
1.安装cpabe toolkit
$ ./configure
$ make
$ make install
The "$" denotes your shell’s prompt. Note that the package requires thePBC library, so make sure you have that installed first.
Next, to set up the public key and master keys, run cpabe-setup.
2.通过cpabe-setup命令产生 public key and master key
$ cpabe-setup
$ ls
master_key pub_key
Now you can use the file master_key to produce private keys associated with various sets of attributes. Let’s say you work for a company that just hired two new employees,Sara and Kevin(后面就以这个为例子), and you are going to make private keys for their workstations.
3.使用master_key 和 pub_key 以及cpabe-keygen命令为具有属性值的用户产生私钥
To do so, you use cpabe-keygen to generate a key with the listed attributes using public key PUB_KEY and master secret key MASTER_KEY.
Output will be written to the file "sara_priv_key" unless the−o option is specified.
$ 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`
$ ls
master_key pub_key sara_priv_key kevin_priv_key
注意:
(1)cp-keygen使用参照:http://acsc.cs.utexas.edu/cpabe/cpabe-keygen.html
(2)第一行代码的末尾有一个“\”是因为第一行放不下了,想换行继续输命令。
(3)上例产生 了两个私钥sara_priv_key kevin_priv_key,分别是sara和kevin的。
4.使用cpabe-enc命令和pub_key和访问策略加密明文生成密文 (这里事先新建了一个文件security_report.pdf ,这个文件是要被加密的)
As you can see in those examples, some attributes are assigned a value, while others a key simply "has" without further qualification. Thedate command can be used to help use the current time as an attribute value.
Now suppose later someone wants to encrypt a sensitive document. All they need is the public key, then can usecpabe-enc to encrypt it under a specified policy.
$ ls
pub_key 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 //ctrl+D 表结束输入
$ ls
pub_key security_report.pdf.cpabe
(sysadmin and。。。)这个是访问策略
In this case, they typed the policy on stdin. Note that the attributes of Kevin’s key satisfy this policy, but the attributes of Sara’s key do not.
(在这个例子里,设计的策略是kevin满足,但是sara的不满足)
5.使用cpabe-dec命令,用私钥对密文进行解密。
If Kevin wants to decrypt the document, he can use cpabe-dec.
$ ls
pub_key kevin_priv_key security_report.pdf.cpabe
$ cpabe-dec pub_key kevin_priv_key security_report.pdf.cpabe
$ ls
pub_key kevin_priv_key security_report.pdf
If Sara were to try to decrypt it, an error would be reported.
(如果sara试图解密就会出错,因为sara的属性不符合密文的访问策略,kevin不会)
That’s all there is to using cpabe!
下面是CP-ABE的加解密机制
CP-ABE的使用的更多相关文章
- linux之cp/scp命令+scp命令详解
名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source... directory 说明:将一个档案拷贝至另一档案,或将数 ...
- 写给自己:修改配置文件一定要cp一个.bak
写给自己:修改配置文件一定要cp一个.bak 毕竟不是每次的修改都一定对,而且很多时候是在服务器上直接修改原文件,修改后重启服务才知道是否修改正确,如果不加备份修改,造成服务器动荡,将会造成不可挽回的 ...
- mkdir,rmdir,cp,rm,mv,cat,touch用法
一.mkdir新建目录 1.进入tmp目录,查看该目录下面的子目录 [root@localhost ~]# cd /tmp[root@localhost tmp]# lshsperfdata_root ...
- CP
cp:copy files and directories,如果要拷贝目录,则使用-a或者-r参数,则能够拷贝目录, 如果源文件是多个,那目标文件在最后,且是目录. Cp [-aifpru] [源文件 ...
- 关于so文件cp覆盖导致调用者core的研究
先说cp好mv/rm的区别: cp from to,则被覆盖文件 to的inode依旧不变(属性也不变),内容变为from的: mv from to,则to的inode变为from的,相应的,to的属 ...
- Linux命令学习总结:cp命令
命令简介: cp命令用来复制文件或目录.指令英文原义:copy 指令所在路径:/bin/cp 命令语法: Usage: cp [OPTION]... [-T] SOURCE DEST or: cp [ ...
- Linux cp (复制)命令简介
\cp -rf source1 source2 source3 .... directory cp (复制档案或目录) [root@linux ~]# cp [-adfilprsu] ...
- Linux_用户级_常用命令(4):cp
Linux_用户级_常用命令之cp 开篇语:懒是人类进步的源动力 本文原创,专为光荣之路公众号所有,欢迎转发,但转发请务必写出处! Linux常用命令第二集包含命令:cp 格式 cp [-optio ...
- cp命令
[root@www ~]# cp [-adfilprsu] 来源文件(source) 目标文件(destination) [root@www ~]# cp [options] source1 sour ...
- 【初级】linux cp 命令详解及使用方法实战
cp:复制文件或者目录 前言: cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不 ...
随机推荐
- UVa 11488 超级前缀集合(Trie的应用)
https://vjudge.net/problem/UVA-11488 题意: 给定一个字符串集合S,定义P(s)为所有字符串的公共前缀长度与S中字符串个数的乘积.比如P( {000, 001, 0 ...
- QT读文件夹内所有文件名
void monizhuzhan::filenameInDir() { //判断路径是否存在 QDir dir(path); if(!dir.exists()) return; //查看路径中后缀为. ...
- zipkin启动报错(Caused by: java.lang.ClassNotFoundException: zipkin.Component)的解决方法
使用ziplin依赖: <dependency> <groupId>org.springframework.cloud</groupId> <artifact ...
- ssh连接docker镜像ubuntu与debian
用密码登录root docker官网给的sshdemo是ubuntu的,https://docs.docker.com/engine/examples/running_ssh_service/ 亲 ...
- isA,小赋值大
class Student:Person{ }; Student s; 1. Person p=s; // 可以将具体的赋值给大的,指针也行. 2. Person * p=new Student; ...
- 全排列问题Ⅰ(Java实现)
给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1 ...
- Mybatis中resultType理解
- Mac Anaconda 简单介绍 -- 环境管理
Anaconda Anaconda(官方网站)就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本.Anaconda包含了conda.Python在内的超过180个科学包及其依赖项. ...
- VMware安装Linux并配置网络通信
说明: Linux系统:CentOS-6.8-x86_64-minimal.iso VMware版本:9.0 首先下载VMware并安装.然后将CentOS-6.8-x86_64-minimal.is ...
- Java从内存流中读取byte数组
Java中通过servlet接收二进制数据,然后将二进制数据流读取为byte数组.开始使用:byte[] bs = new byte[request.getContentLength()];reque ...