互联网时代,越来越多的用户把自己的信息(可能舍有敏感信息)存储在网络上的第三方(如网络硬盘服务器)上,但是一且这些服务器受到攻击被攻陷或者由于商业利益服务器管理者被腐化,就可能使上述敏感信息轻易被泄漏,为了安全起见,用户在文件服务器上存放文件时通常事先对文件进行加密。然而,传统加密方法实现的文件系统只能实现文件加密给某个特定的用户,无法实现细粒度层次上的文件共享,为此,我们设计了一种支持细粒度访问控制的安全加密文件共享系统,可以有效地解决上述问题,具有较高的实用价值。

一、安全加密文件共享系统总体设计

系统以基于密文策略的属性加密为核心,采用可视化的访问决策控制和C/S架构来实现。

1、服务器端

用户加密或解密时用到的系统公钥(public key)和用户私钥(private key)都是通过认证中心的认证后从密钥生成中心(PKG)获取,因此,系统将密钥生成和用户认证的功能划分到服务器模块:同时在服务器端提供独立的模块来进行文件下载,使得用户在无需认证的情况下也能顺利地进行文件下载,而文件上传则必须是通过认证的用户才能进行。

2、客户端

由于文件的加解密耗用资源比较大,直接在服务器端进行,无法高效支持多用户的并发使用,因而,文件的加密和解密的功能则包含在客户端,可以更好地提高加密或解密的效率:同时客户端也将文件共享中的下载模块独立出来,无需认证即可使用,而上传的模块功能则必须通过认证才能进行。

二、安全加密文件共享系统系统功能

根据系统的总体结构和功能要求,系统划分为:用户管理模块、文件管理模块、加解密子系统、决策树模块,网络模块,如图1所示。

1

1、用户管理

用户管理包括对系统用户信息注册、删除、修改和组织结构的建立。用户注册时填写的相关信息(如职业、性别等)将作为加密解密过程中的属性集。

2、文件管理

(1)客户端文件管理

客户端的文件管理模块为用户提供上传和下载功能。

(2)服务器端文件管理

为每个用户独立地分配一个文件夹,并以其lD来区分。这样能够方便地对每个用户的文件进行管理。同时对于下载的操作也能提供方便,当用户下载文件时,只需到指定的另一用户文件下内找到相应的文件即可。

3、加解密模块

加解密模块是系统的核心模块,分为两个相对独立的子模块;即加密模块和解密模块;其中加密的文件是安全且可共享的i并由用户通过决策树设置访问权限。

(1)加密模块

加密模块在文件共享系统中负责对信息进行保密处理,加密过程中使用双层加密;即在加密时先用DES对文件加密,然后文件的拥有者用基于密文策略的属性加密算法对DES的密钥进行加密。

(2)解密模块

解密模块在文件共享系统中负责对已加密的信息进行解密处理,从而恹复出原来的文件,具体过程是用户利用自己从密钥生成中心PKG获得的与其属性相应的私钥首先恢复出DES的密钥,然后根据DES的密钥解密共享文件的密文。

4、决策树模块

决策树又叫访问策略,帮助用户方便地生成密码系统所需的访问策略。其中访问策略用树形结构来表示,系统提供了一个属性集下拉框,方便用户选择属性集中的属性,同时使用SWT中的Tree组件,提供可折叠式的树形结构,通过“增加:‘删除”按钮能够相应的改变树的节点:同时通过“双击”或选择属性能够改变节点的内容。

在用户确认后会绘制相应的树形图并产生相应的策略字符串。如图2所示,存在两个用户分别是(男,网管)和(女,秘书)。一个消息M用其右边的访问树结构加密。用户A不能得到此消息,是因为他的两个属性不能满足访问树(男性且职位为经理);用户B可以得到此消息,因为她是女性且职位为秘书。

1

5、网络模块简介

网络模块采用C/S架构,支持TCP连接和多线程,收发数据包不会造成线程阻塞。同时为提高网络系统的灵活性采用分层结构(如图3所示),分别是文件包传输层和网络数据包转换层;

1

发送信息时,把要发送的内容包装成文件数据包,交给文件包传输层发送,文件包传输层把文件数据包包装成网络数据包(TCP包),再调用Java网络传输模块进行发送。接收信息时,先通过Java网络模块接收到网络数据包,网络数据包转换层把它们解析成文件数据包,再由文件包传输层提交给系统。

三、系统加解密实现原理

基于密文策略的属性加密算法,其中涉及到公开参数( params)、主密钥(maser key)、和用户私钥(private key)生成,在加密和产生用户私钥过程中还需要输入属性、以及基于属性的策略。

按照系统的功能划分为4个子模块:

(1)初始化模块:产生系统公钥和系统主密钥;

(2)产生私钥模块:产生用户私钥;

(3)加密模块:加密文件(用系统公开参数对文件进行加密);

(4)解密模块:解密文件(利用用户私钥对文件进行解密)。

1、初始化

从群Go中选择一个生成元g,随机选取整数α、β∈zp。系统公钥PK=(Go,g,he(g,gα):,其中h= gβ,主密钥mk=(β,ga)。

2、加密(PK,M,T)

其中PK为系统公钥,M为需要加密的文件,r为文件所有者加密时定制策略的访问结构树,生成相应的密文CT如下:

1

其中:

s∈zpI:-随机选取的整数:

Y-树t中的叶子节点集合:

arr(y)-为叶子y对应的属性:

h:{0,1}*’dGD一一系统中公开的哈希函数;

小知识之细粒度

细粒度模型,通俗的讲就是将业务模型中的对象加以细分,从而得到更科学合理的对象模型,直观的说就是划分出很多对象。