加密部分.docx

上传人:b****6 文档编号:8715585 上传时间:2023-05-14 格式:DOCX 页数:16 大小:109.89KB
下载 相关 举报
加密部分.docx_第1页
第1页 / 共16页
加密部分.docx_第2页
第2页 / 共16页
加密部分.docx_第3页
第3页 / 共16页
加密部分.docx_第4页
第4页 / 共16页
加密部分.docx_第5页
第5页 / 共16页
加密部分.docx_第6页
第6页 / 共16页
加密部分.docx_第7页
第7页 / 共16页
加密部分.docx_第8页
第8页 / 共16页
加密部分.docx_第9页
第9页 / 共16页
加密部分.docx_第10页
第10页 / 共16页
加密部分.docx_第11页
第11页 / 共16页
加密部分.docx_第12页
第12页 / 共16页
加密部分.docx_第13页
第13页 / 共16页
加密部分.docx_第14页
第14页 / 共16页
加密部分.docx_第15页
第15页 / 共16页
加密部分.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

加密部分.docx

《加密部分.docx》由会员分享,可在线阅读,更多相关《加密部分.docx(16页珍藏版)》请在冰点文库上搜索。

加密部分.docx

加密部分

 

哈尔滨工程大学软件安全大作业

Linux下基于CPABE的共享文件加密策略

 

院(系)名称:

计算机科学与技术学院

专业名称:

计算机科学与技术

学生姓名:

刘欣卓

学生学号:

2009142212

指导教师:

赵靖

 

2013年5月

摘要

随着Internet互联网络带宽的增加,传输文集几乎成为人们每天都需要做的工作。

然而,如果网络传输不加密文件是很不安全的。

加密的话,基本上是1对1,如何做到加密与权限控制两者和一呢,这就需要基于属性的加密即ABE加密。

  

关键词:

ABE加密传输加密混合加密CPABE

 

注:

本次作业系统基于乌班图12.10

第1章:

绪论

1.1概述

ABE加密即基于属性加密,CPABE即基于属性的公钥加密,在这次作业中我采用的就是CPABE基于属性的公钥加密,其好处在于,1次加密,多次解密,实现权限控制与加密的统一化。

当解密一个文件时,只有在密钥中具备加密时所设定的属性,才可对其进行解密。

在这次作业中,遭遇了很多困难,经过多次测试与筛选,选在了在乌班图12.10下,利用脚本语言完成。

因为我以前很少在Linux下进行实验,因此给自己带来很多困难。

1、脚本语言,这门语言是现学的,虽然不难,但是功能真的十分强大。

2、单引号、双引号、反引号,这3个符号很讨厌,因为其用处与限制各不相同,尤其实在脚本语言中。

3、CPABE的安装,很困难,错误不好排查。

第2章:

CPABE的安装

2.1CPABE的安装

CPABE是基于PCB库的,PCB库是基于GMP库的,GMP库是建立在M4库之上的,因此要先安装M4库,然后反序安装。

1、安装M4库

使用指令“sudoapt-getinstallm4”即可

2、安装GMP库

使用指令“sudoapt-getinstalllibgmp-dev”即可

3、安装PBC库

(1)从http:

//crypto.stanford.edu/pbc/下载PBC的源码

(2)将压缩包解压缩,然后使用“./configure”指令

(3)使用“make”指令生成

(4)使用“makeinstall”指令安装

4、安装openssl

使用指令“sudoapt-getinstallopenssl-dev”即可

5、从网站http:

//acsc.cs.utexas.edu/cpabe/下载libbswablibbswabe与cpabe源码

6、安装libbswablibbswabe

(1)将压缩包解压缩,然后使用“./configure”指令

(2)使用“make”指令生成

(3)使用“makeinstall”指令安装

在进行4、5部的时候,会提示glib有一个依赖,可以通过“sudoapt-getinstalllibglib2.0-dev”解决掉

7、安装CPABE

(1)将压缩包解压缩,然后使用“./configure”指令

(2)使用“make”指令生成

(3)使用“makeinstall”指令安装

在makeinstall的时候出现问题:

usr/bin/ld:

/usr/local/lib/libpbc.so:

undefinedreferencetosymbol'__gmpz_init'

/usr/bin/ld:

note:

'__gmpz_init'isdefinedinDSO/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../lib/libgmp.sosotryaddingittothelinkercommandline

/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../lib/libgmp.so:

couldnotreadsymbols:

Invalidoperation

collect2:

ld返回1

make:

***[cpabe-setup]错误1

更改make文件

将:

LDFLAGS=-O3-Wall\

-lglib-2.0\

-Wl,-rpath/usr/local/lib-lgmp\

-Wl,-rpath/usr/local/lib-lpbc\

-lbswabe\

-lcrypto-lcrypto

更改为:

LDFLAGS=-O3-Wall\

-lglib-2.0\

-Wl,-rpath/usr/local/lib-lgmp\

-Wl,-rpath/usr/local/lib-lpbc\

-lbswabe\

-lcrypto-lcrypto\

-lgmp

即可。

第3章:

加解密策略

3.1加密概述

 

直接使用CPABE加密难免造成加密时间过长的情况,而且无法校验解密是否正确,发送方是否正确,文件容易被攻击,因此需要重新设计加密策略!

首先要对文件的发送发进行确认,这就需要进行签名,而对于大文件来说,签名时间很长,需要改进。

可对其进行报文摘要算法,然后对报文摘要签名其次为了提高加密速度,需要改变加密模式,可用对称性加密原文件,用CPABE加密对称性算法的密钥。

另外本组策略需要多组密钥,密钥管理同样需要设计

3.2CPABE的使用

1、公钥与主钥的生成

使用命令:

$cpabe-setup

即可生成pub_key与master_key如图

2、私钥的生成

使用如下命令,即可生成2个分别属于sara与kevin的私钥:

$cpabe-keygen-osara_priv_keypub_keymaster_key\

sysadminit_department'office=1431''hire_date='`date+%s`

$cpabe-keygen-okevin_priv_keypub_keymaster_key\

business_staffstrategy_team'executive_level=7'\

'office=2362''hire_date='`date+%s`

如代码所示,Sara是系统管理员,属于it部门,办公室号1431,后面的data即为现在的时间Kevin则是商业雇员,属于策略团队,执行权限是7,办公室2362,在此已经将属性写入密钥,运行结果如图:

3、文件的加密

使用如下代码,即可为一个名为de.jpg的图片加密

$cpabe-encpub_keyde,jpg

(sysadminand(hire_date<946702800orsecurity_team))or

(business_staffand2of(executive_level>=5,audit_group,strategy_team))

^D

写入属性即为代码中的属性,如果是系统管理员,需要入职日期小于946702800或者属于安全团队,如果是商业职员则需要满足3个条件中的2个。

其中定义密钥中的`date+%s`是带反引号的,表示返回这个函数的值,而这个值是由目前系统的时间减去1970年1月1日8点整所的出的秒数。

加密策略最后^D是指ctrl+D

4、文件的解密

如下命令,即可为de.jpg解密:

$cpabe-decpub_keykevin_priv_keysecurity_report.pdf.cpabe

若属性不满足加密时的设置,则会显示无法解密

3.3策略的加密过程

加密过程如图:

1、对原文件进行报文摘要算法(MD5),生成印章文件1

2、利用RSA私钥对印章文件1进行签名

3、生成DES密钥,并输出到文件

4、利用DES算法对文件进行加密

5、将存储DES密钥的文件利用CPABE进行加密

6、将签名文件、利用DES加密后的文件和利用CPABE加密后的DES密钥文件打包压缩

3.4策略解密过程

 

解密过程如图:

1、开始之后对压缩包解压缩

2、先利用CPABE的私钥对存有DES密钥的文件进行解密,若解密成功则继续,若解密失败,则终止

3、利用DES密钥将DES加密后的文件解密,

4、利用RSA公钥从签名文件中得到原始的印章文件1

5、利用MD5算法从解密后的文件中计算出印章文件2

6、比较印章文件1与印章文件2,若相同则解密成功,解密后的文件保留,若不相同,则证明文件不安全,删除

 

注:

1、因为对称性算法DES的安全性不太好,所以本次作业我采用了加盐的3DES算法

2、RSA密钥为了保证安全性,我采用了1024位的密钥

3、印章文件其实就是一个文本文件,里面的内容格式为:

MD5(filename)=$String

$String是一个由数字和字母组成的32位字符串

3.5密钥的管理

因为我设计的策略有3组密钥:

RSA密钥、CPABE属性密钥、DES密钥,其中DES密钥会被传递,不需要考虑。

RSA密钥的公钥将存放在主文件夹下的PUB_KEY文件夹中,而私钥在存放在主文件夹中。

CPABE的masterkey、publickey、私钥,都存在主文件夹下。

其中PUB_KEY文件夹、CPABE的masterkey、publickey、私钥都需要提前分发

3.6策略的实现

因为每次都需要录入终端命令,很麻烦,所以在实现策略的时候,我选用了shell脚本实现。

其中分为2个文件:

enc(加密)、dec(解密)如图:

将程序写入文本文档,在终端输入“chmod+xfilename”授权,再输入

“./filename”就可以使用了

第4章:

策略演示

4.1密钥的管理

4.1.1RSA密钥生成,我设计了另一个脚本,如图:

利用openssl随机生成了一对命名为bill的1024位的RSA密钥,并将公钥提取出来,存入PUB_KEY文件夹中,运行结果如下:

 

4.1.2CPABEmaster_key与pub_key的生成

输入命令“cpabe-setup”即可生成

如下图,可以看到输入命令后,master_key与pub_key已经生成

 

4.1.3CPABE私钥的生成,如图将属性分别写入名为sara和kevin的密钥中:

从图中可以看到私钥已经成功生成!

4.2脚本的运行

4.2.1编写脚本文件并编译授权:

 

4.2.2脚本的执行

输入“./enc”和“./dec”执行脚本

4.3加密的过程

4.3.1在终端输入“./enc”执行加密脚本

4.3.2输入文件名与应用签名的用户名

4.3.3输入DES的密码,此密码会自动保存在主文件夹下DESK文件中,如下图图所示

4.3.4编写CPABE的加密策略在程序中支持文法ANDOROF><=

>=<=

如图,上图编写的文法就是说如果是sysadmin需要满足入职时间小于946702800或者属于安全团队如果是商业雇员,需要满足后面3个条件中的2个才能解密,执行级别大于或等于5,审计团队,策略团队。

如图,自动会生成DESK、filename.sign、filename.des3salt、filename.signed。

 

然后会将DESK应用CPABE策略,生成DESK.cpabe,然后将DESK.cpabe、filename.signed、filename.des3salt生成压缩包,加密过程完毕。

4.4解密的过程

4.4.1首先将压缩包解密到主文件夹,将会释放压缩包内的DESK.cpabe、filename.des3salt、filename.signed

4.4.2验证私钥所包含的的属性是否满足加密时的属性,如果满足,则继续解密,如图

如果私钥不满足,则无法解密,如图

4.4.3验证签名,如果签名验证成功即sign1=sign2,删除其他文件,保留filename,若签名不匹配,则在10秒后全部删除,如图,修改sign1,让sign1与sign2不匹配:

 

如图,文件已经被删除!

参考文献:

http:

//acsc.cs.utexas.edu/cpabe/

UsingthecpabeToolkit

Firstdownload,untar,compile,andinstallthemostrecenttarballoflibbswabe,thesupportlibrary.Nextdothecpabetarball.EachcanbecanbeinstalledwiththestandardGNUbuildsystemcommands.

$./configure

$make

$makeinstall

The"$"denotesyourshell’sprompt.NotethatthepackagerequiresthePBC§library,somakesureyouhavethatinstalledfirst.

Next,tosetupthepublickeyandmasterkeys,runcpabe-setup§.

$cpabe-setup

$ls

master_keypub_key

Nowyoucanusethefilemaster_keytoproduceprivatekeysassociatedwithvarioussetsofattributes.Let’ssayyouworkforacompanythatjusthiredtwonewemployees,SaraandKevin,andyouaregoingtomakeprivatekeysfortheirworkstations.

Todoso,youusecpabe-keygen§.

$cpabe-keygen-osara_priv_keypub_keymaster_key\

sysadminit_department'office=1431''hire_date='`date+%s`

$cpabe-keygen-okevin_priv_keypub_keymaster_key\

business_staffstrategy_team'executive_level=7'\

'office=2362''hire_date='`date+%s`

$ls

master_keypub_keysara_priv_keykevin_priv_key

Asyoucanseeinthoseexamples,someattributesareassignedavalue,whileothersakeysimply"has"withoutfurtherqualification.Thedatecommandcanbeusedtohelpusethecurrenttimeasanattributevalue.

Nowsupposelatersomeonewantstoencryptasensitivedocument.Alltheyneedisthepublickey,thencanusecpabe-enc§toencryptitunderaspecifiedpolicy.

$ls

pub_keysecurity_report.pdf

$cpabe-encpub_keysecurity_report.pdf

(sysadminand(hire_date<946702800orsecurity_team))or

(business_staffand2of(executive_level>=5,audit_group,strategy_team))

^D

$ls

pub_keysecurity_report.pdf.cpabe

Inthiscase,theytypedthepolicyonstdin.NotethattheattributesofKevin’skeysatisfythispolicy,buttheattributesofSara’skeydonot.

IfKevinwantstodecryptthedocument,hecanusecpabe-dec§.

$ls

pub_keykevin_priv_keysecurity_report.pdf.cpabe

$cpabe-decpub_keykevin_priv_keysecurity_report.pdf.cpabe

$ls

pub_keykevin_priv_keysecurity_report.pdf

IfSaraweretotrytodecryptit,anerrorwouldbereported.

That’sallthereistousingcpabe!

附录:

(源代码)

1、RSA密钥生成

#!

/bin/sh

echo"请输入签名用户用户名"

readkname

opensslgenrsa-outRSA_$kname.pem1024

catRSA_$kname.pem

opensslrsa-inRSA_$kname.pem-text-noout

opensslrsa-inRSA_$kname.pem-pubout-outPUB_KEY/pub_RSA_$kname.pem

echo"签名密钥生成完毕"

2、加密脚本

#!

/bin/sh

echo"请输入文件名"

readfname

if[-f"$fname"];

then

echo"$fname文件存在"

echo"请输入签名密钥用户名"

readpname

openssldgst-md5-out$fname.sign$fname;

opensslrsautl-sign-in$fname.sign-inkeyRSA_$pname.pem-out$fname.signed

echo"签名完毕"

echo"请输入DES加密密码"

readDK

echo$DK>>DESK

opensslenc-p-des3-passfile:

DESK-in$fname-out$fname.des3salt

echo"请使用CPABE加密生成策略生成加密代码粘贴到此处!

按ctrl+D确认"

cpabe-encpub_keyDESK

echo"文件加密完毕正在建立压缩包"

tar-zcvfCPABE$fname.$pname.tar.gzDESK.cpabe$fname.signed$fname.des3salt

echo"文件压缩完毕"

sleep1

rm-f$fname.sign

rm-f$fname.signed

rm-f$fname.des3salt

rm-fDESK

rm-fDESK.cpabe

else

echo"$fname文件不存在"

fi

3、解密脚本

#!

/bin/sh

echo"请输入ABE私钥用户名"

readkname

echo"请输入签名密钥的用户"

readpname

echo"请输入文件名"

readfname

if[-f"CPABE$fname.$pname.tar.gz"];

then

tar-zxvfCPABE$fname.$pname.tar.gz

cpabe-decpub_key"$kname"_priv_keyDESK.cpabe

opensslenc-d-des3-passfile:

DESK-in$fname.des3salt-out$fname

opensslrsautl-verify-inde.jpg.signed-pubin-inkeyPUB_KEY/pub_RSA_$pname.pem-outsign1

openssldgst-md5-outsign2$fname

diff-rsign1sign2

if[$?

-ne0];

then

echo"签名不匹配!

"

echo"文件不安全!

10秒后即将删除!

"

rm-f$fname.des3salt

rm-f$fname.signed

rm-fDESK

rm-fsign1

rm-fsign2

sleep10

rm-f$fname

exit1

fi

echo"签名匹配!

"

rm-f$fname.des3salt

rm-f$fname.signed

rm-fDESK

rm-fsign1

rm-fsign2

echo"文件解密完成!

"

else

echo"CPABE$fname.$pname.tar.gzisnotexist!

"

fi

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2