




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
杭州师范大学本科生毕业设计(论文)正文 面向安全云存储的文档共享平台的设计与实现杭州国际服务工程学院(信息科学与工程学院)本科生毕业设计(论文)正文格式(2012届始执行)面向安全云存储的文档共享平台的设计与实现摘 要近年来随着信息技术的飞速发展,云计算越来越热门,而作为云计算衍生出来的云存储因其TB级的存储能力、低廉的价格、部署便捷等优点逐渐获得了企业、政府等群体性组织的青睐。然而云安全事故在近几年发生的频率不断上升,这严重制约了云存储的推广与发展。面向安全云存储的文档共享平台针对目前主流云存储产品存在的数据安全性低、云存储服务提供商不可信、云上数据缺乏严格访问控制等问题,采用安全网关将存储与加密分离,把所有的加密工作都放在安全网关上进行,并使用一种最新的加密技术,密文策略属性基加密,结合混合加密机制对数据进行加密,实现了云存储中数据的安全存储、灵活共享以及对已加密数据的严格访问控制。本平台前端可以有多种客户端形态,比如网站、移动APP等,后端的云存储服务可扩展性较强,可以同时支持主流的公有云及自建的私有云,适用于企业、政府等群体性组织在云存储环境下文档的安全管理。关键词:安全云存储,属性基加密,密文策略,访问控制DESIGN AND IMPLEMENTATION OF SECURE DOCUMENT SHARING PLATFORM ON CLOUD STORAGE ABSTRACTIn recent years, with the rapid development of information technology, cloud computing has become more and more popular, and as cloud computing derived the cloud storage gained companies, governments and other organizations recognition gradually because of its TB level of storage capacity, low price and convenient deployment advantages. However, the frequency of cloud security incidents occurrence was rising in recent years continuously, which severely restricted the promotion and development of cloud storage. In order to solve current mainstream cloud storage products issues, such as low data security, untrusted cloud storage service providers, the lack of strict access control for cloud data and so on, this paper designs and implement a secure document sharing platform on cloud storage, which uses security gateway to separate storage and encryption, all of encryption will be done on the security gateway, and the platform uses a new encryption technology, ciphertext policy attribute based encryption, combing hybrid encryption mechanism to encrypt data to achieve secure storage of data, flexible sharing and strict access control of encrypted data on cloud storage. The platform has many client forms, such as the web, APPs. In addition, its cloud storage services with high expandability is applicable for mainstream public cloud and private cloud, which also can help the organizations like companies and governments achieve the security management of documents in the cloud storage.Keywords: secure cloud storage, ABE, ciphertext policy, access control目 录第一章 绪论11.1 背景理论11.2 实践意义11.3 国内外研究现状与发展趋势11.4 研究内容2第二章 开发技术42.1 微软ASP.NET技术简介42.2 面向服务体系结构(SOA)的WebService技术概述42.3 三层架构概述52.4 数据库概述5第三章 平台设计73.1 架构设计73.1.1 平台架构图73.1.2 基本框架搭建73.2 功能设计93.2.1 平台WebService功能设计93.2.2 平台客户端功能设计103.2.3 平台管理端功能设计103.3 数据库设计103.3.1 数据库需求分析103.3.2 数据E-R图113.3.3 数据表11第四章 平台实现144.1 环境配置144.1.1 开发环境144.1.2 运行环境144.2 平台WebService实现144.2.1 用户登录接口144.2.2 文件上传下载接口154.2.3 云存储操作接口164.3 平台客户端实现174.3.1 调用WebService接口174.3.2 文件操作184.3.3 用户个人中心204.4 平台管理端实现214.5 界面展示234.5.1 登录界面234.5.2 主界面234.5.3 个人中心界面234.5.4 管理端界面24第五章 总结和展望255.1 结论255.2 存在的问题及展望25参考文献26致谢27第一章 绪论1.1 背景理论近几年来伴随着互联网技术与分布式计算技术的飞速发展,人们日常工作生活中需要的计算能力越来越高,对应的存储技术也从硬盘存储、ftp到目前的云存储。云存储作为云计算衍生出来的技术,因其存储量大、价格低廉、部署便捷等优点逐渐受到了企业、政府部门等组织的青睐。因此越来越多的政府、企业和个人用户都将自己的数据和信息存储在云存储产品上。云存储使得数据存储更加方便快捷,但随之而来产生了很多新的安全问题7。按照现在的存储模式,云存储服务提供商拥有很大的权力,不但能查看所有存储的数据,而且能对这些数据进行窃取、篡改,而数据又以明文存储在云存储上,这使得用户使用云存储只存储一些不重要、不敏感的数据,而相对于企业内部通讯录、客户资料、技术文档等重要敏感性数据,仍然采用企业内部服务器存储的方式。同时,云存储中的用户,尤其是企业用户需要在保证数据安全性的前提,实现数据的灵活共享,因此希望云存储服务商能提供细粒度的访问控制策略,这样数据上传者就能有效控制数据的共享范围。目前市面上主流的云存储产品有360云盘、百度云、阿里云等,这些产品的特点是存储容量大、稳定性高、灾备能力好等,但都存在以下问题:(1)数据明文存储或简单加密存储,一旦数据泄露,其安全性无法保证;(2)云存储服务提供商自身存在信任问题;(3)数据缺乏严格的访问控制,无法有效控制数据的共享范围。以上问题的存在大大限制了云存储的推广与发展12。1.2 实践意义针对上述目前云存储的现状及存在的安全问题,本文提出了面向安全云存储的文档共享平台,该平台引入安全网关,采用了一种最新提出的加密策略密文策略的属性基加密3,并结合混合加密机制,能够实现云存储下文档的安全存储、共享及灵活的访问控制,在理论研究和实际应用方面都有着深远的意义。1.3 国内外研究现状与发展趋势目前国内外研究云存储环境下数据安全存储及共享主要围绕于一种最新的加密策略属性基加密(Attributed-based Encryption,简称ABE)1,它是在2005年,由国外著名的密码学家Sahai和Waters首次提出的,它基于模糊身份的加密,该算法无需关注群体中用户的数量和身份,而是用属性定义用户的身份,数据上传者通过定义属性的访问结构对用户进行访问控制。与传统公钥加密相比,该算法不需要为每个用户生成对应的密文,从而降低了数据加密开销;其密钥的生成与随机数有关,可以有效防止用户之间共谋;更为重要的是其访问结构比较灵活,能够实现细粒度的访问控制。ABE机制分为两种:基于密钥策略的属性基加密2(Key-Policy Attributed-based Encryption,简称KP-ABE)和基于密文策略的属性基加密3(Ciphertext-Policy Attributed-based Encryption,简称CP-ABE),这两种机制刚好相,KP-ABE将访问结构附在密钥上,适合大规模数据查询,而CP-ABE则将访问结构附在密文上,适合加密文件的访问控制。然而由于ABE自身的复杂性,目前还存在着一些重要的问题待解决:(1)ABE机制中用户密钥与属性相关联,用户属性的变更将导致与该属性相关的密钥和密文需要更新,这会产生很大的开销。针对此问题Liang X等人5提出一种基于线性秘密共享和二叉树的方法,另外每个用户用一个唯一标识符关联,这个标识符与ABE加密无关,因此在用户撤销时就只需要使用这个标识符进行撤销,这种方法比较简单明了;Wang G等人8先将CP-ABE与多层次的身份验证相结合形成多层次的属性基加密机制,然后配合代理重加密和懒惰重加密(在撤销时不更新密文)来解决用户属性撤销问题;而Jahid S等人9引入一个半可信第三方代理机构,这个机构不能解密密文但能执行对撤销用户的访问控制,实现了基于代理的撤销方法PIRATTE;同时Ren K等人4则把问题聚焦于撤销带来巨大开销上,提出将撤销大部分计算代理给不可信第三方来降低密钥中心的负担。到目前为止,对于ABE机制的撤销问题还没有一个很好的解决方案,上述的几个研究解决了部分问题,但是没有从根本上解决,这也是限制在实际应用中使用ABE机制的主要原因。(2)CP-ABE机制中由资源提供方制定加密策略,策略复杂性决定了系统公钥设计的复杂性,这限制了访问结构的设计。由此Wan Z等人11提出了一种更为灵活、细粒度的访问控制方法,将用户的属性细化。(3)ABE机制中使用双线性配对算法,它是效率最低的一种算法之一,然而在加解密的过程中密文的大小和解密时间随访问结构中涉及的属性个数的增加而呈线性增长,因此,双线性配对次数的不断增加会导致ABE算法效率会越来越低,从而影响性能。目前比较合理的解决方案是将所有的复杂配对运算都代理给第三方,而用户只需做少量的运算,这样不仅保证了数据安全性,还提高了ABE算法的效率;还有一种方案是将ABE机制和与对称加密结合进行混合加密,这种方法是先用对称加密对文件进行加密,然后在使用ABE算法对对称加密的密钥进行加密,最后将文件密文和密钥密文进行合并。针对上述几个问题,在近几年国内外学术界ABE越来越热门,对其的研究也更加深入,涉及的面越来越广,并出现了很多不错的研究成果。随着云计算的发展,云存储会逐步代替传统的硬盘、FTP等存储方式,这就意味着如何保护云上敏感数据的安全将成为一大挑战,特别是既要保证存储的安全性,同时满足云上数据灵活安全的共享。因此未来这块的发展会更偏向于实际应用方面,尤其是移动终端APP,国内杨小东等人15提出基于属性群的云存储密文访问控制方案可以给我们一个思路。同时对ABE的研究也会更加深入,比如提高安全性这一块,Lewko A等人10提出了一种新的ABE实现方法,在安全性方面能满足选择性密文攻击。1.4 研究内容整个平台从属性加密机制、架构、功能及数据库设计优化四方面来进行研究。平台的核心算法使用了属性基加密机制中的密文策略属性基加密算法,了解该算法的特点、优势、目前的应用情况、如何使用及存在的问题等。平台主要有四个模块组成:云存储、授权中心、安全网关及客户端。安全网关是整个平台的核心,它连接前端各种客户端形态及后端云存储服务,实现了大部分业务逻辑功能,比如数据加解密、连接云存储、密钥管理等,同时网关隔离内外网,保证数据通讯安全;授权中心是一个专门生成和分发密钥的第三方可信机构,它将密钥发送给安全网关进行管理;云存储具有较好的可扩展性,可以支持主流的公有云如阿里云、百度云等,也可以是利用Hadoop、OpenStack等建的私有云;前端客户端可以有多种形式,比如网站,APP等。平台的功能主要有:文件混合加密,从客户端上传的文件,先会发送至网关进行混合加密,首先使用对称加密加密文件,再使用公钥加密加密对称加密的密钥;用户登录,使用用户名和密码对用户进行验证;云上功能,有创建删除空间、创建删除文件夹、上传下载文件等;密钥管理,授权中心根据每个用户的属性为其生成并分发私钥,并交由安全网关进行管理;平台管理,对群体性组织内部的部门、人员、角色、属性的进行管理。根据平台的需求以及数据库设计规范,设计出满足需求的数据库。设计基本表时满足第三范式(3NF)规范,数据完整性限制良好,消除数据的冗余,节省磁盘的存储空间,使得数据管理员可以更加容易地做维护、移植和更新工作;在使用SQL语句时,需要注意对语句的优化,充分利用索引,使查询更加高效;同时要考虑安全性,避免SQL注入问题,应使用参数邦定的方式;要对数据库进行正确的参数配置,可以从调整内存分配、I/O、系统参数等方面入手。第二章 开发技术本章讲述了面向安全云存储的文档共享平台开发时所用的技术,网页端通过ASP.NET实现,在网关上使用面向服务体系结构的WebService技术开发服务,数据库是轻量级的MySQL,整个平台使用三层架构。2.1 微软ASP.NET技术简介ASP.NET是由ASP技术发展而来,它嵌入于网页中,在服务器端执行,是一种服务器端脚本技术。ASP.NET一般运行于安装了.NET Framework的IIS(Internet Information Server)服务器上,也可运行于Apache、Nginx等服务器,但需要借助第三方平台或插件。开发时使用微软的集成开发环境Visual Studio,还可用MonoDevelop、Microsoft Expression Web、Microsoft WebMatrix等工具进行开发。首选的开发语言是C#或VB.NET,还可以使用F#、J#、Python等。与之前的ASP相比,ASP.NET的发展性要强大很多,它分为五大基本对象:Application、Request、Response、Session和Server,它们依次封装HttpApplication对象、HttpRequest对象、HttpResponse对象、HttpSessionState对象和HttpServerUtility对象;支持多种控件,包括HTML控件(HTML control)和用户控件(User control),在HTML标记添加runat=”server”,就可以与ASP.NET的服务器控件一一对应,也可以直接使用服务器控件,与HTML控件相比,它能提供更为强大的功能。用户控件以.ascx为扩展名,开发简单便捷,能根据相应的需求对控件进行灵活定制;可管理性高,与ASP可以较好兼容,同时它的编程模型和结构是全新的,这大大提高了应用程序的可扩展性和稳定性,ASP采用即时解释程序,而ASP.NET不同,它在服务器端将应用程序编译,这样大幅度提高了应用程序的运行速度。近几年来以PHP、Ruby、Python等为首的Web技术不断出现,并且逐渐热门,但是ASP.NET技术以其自身的优势仍旧呈上升趋势。2.2 面向服务体系结构(SOA)的WebService技术概述面向服务的体系结构是一个组件模型,它通过事先定义好的接口将应用程序的不同功能、服务联系起来。其中接口的定义完全独立于实现服务的操作系统、硬件及编程方法,这样一来我们可以使用一种统一通用的方式来实现服务的交互。WebService则是实现面向服务体系结构的一种方法,它是一个松耦合、平台独立、可编程的Web应用程序,能够使运行在不同平台或硬件上的应用实现数据交互或集成,并且不需要通过第三方的软件,也就是所谓的Web无缝集成。同时由于WebService是基于一些已有的技术和常规的产业化标准,部署非常简单,也大大减少了开发应用接口的开销。面向服务体系结构的WebService技术主要有以下优势:(1)跨平台性,该技术可以让不同平台上的使用不同编程语言的服务进行数据交互。(2)松耦合性,也就是说服务请求者、服务提供者与服务之间三者之间具有松耦合性,这样请求者就不需要了解提供者是如何实现该服务,包括其中的平台架构、编程语言、技术细节等等。同时在服务发生变更时,应用程序之间的数据交互不会中断。(3)可重用性,当一个服务被创建时,能够用于多个应用程序,可以在任何地点、任何时间通过Internet网络调用此服务。(4)接口的明确性,服务请求者到服务提供者绑定的细节通过Web服务描述语言(Web Services Description Language,WSDL)来明确描述。(5)开放性,目前基于面向服务体系结构的WebService技术都是基于W3C或其他公认标准实现,主要有SOAP、WSDL、UDDI等。(6)强适应性,一般客户需求经常会发生变更,而该技术只需要通过适当少量的修改就可以很好的适应。2.3 三层架构概述三层架构(3-tier architecture)包括数据访问层(DAL)、业务逻辑层(BLL)和表现层(UI),这三层把应用程序模块化。数据访问层也可以叫做持久化层,所做的就是直接操作数据库,包括数据库系统、数据文本、XML文档等等,主要是针对数据的增加、删除、修改以及查找,为业务逻辑层或表现层提供数据服务,也就是说业务逻辑层或表现层通过调用数据访问层来实现所有数据库操作;业务逻辑层则针对每一个具体的问题,处理数据访问层的数据,对数据进行业务逻辑处理,供表现层调用,它是整个架构中的核心,在数据访问层语表现层之间架起了一座桥梁,需要有良好的可扩展性;表现层也叫表示层,一般为Web形式,是最接近用户的,它提供一个界面来与用户进行交互,收集用户填写的数据调用业务逻辑层来实现具体功能,因此在表现层的代码量是很少的,只要业务逻辑层的功能比较完善,不管表现层如何改变,业务逻辑层都能很好地提供服务。一般的项目如果只是把程序分为数据访问、业务逻辑、表现三个模块式不能叫做三层架构的,三层架构需要满足一定的规则,首先在表现层没有或者只有极少的SQL语句,而且不能包含任何业务逻辑的处理;其次三个模块是可以分别独立运行于不同的服务器,数据访问层能被不同的程序调用;最后程序在去掉表现层之后还能在接口层提供所有的功能。三层架构的优势比较明显,主要有以下几点:(1)整个项目分成三个模块,开发人员只需要关注其中的一层,利于分工合作。(2)比较容易做后期的维护工作,一般只需要修改业务逻辑层,降低了维护的成本和时间。(3)按照这样的架构开发更符合标准化。(4)源代码管理方便,整个代码的结构非常清晰。(5)降低了层与层之间的依赖。2.4 数据库概述本平台所采用的数据库是MySQL 5.6版本。MySQL是一个小型关系型数据库管理系统,瑞典的MySQL AB公司作为它的开发者,目前已经被Sun公司收购,MySQL能够支持多种操作系统,包括Windows、Linux、MAC以及FreeBSD等。MySQL具有体积小、速度快、总体拥有成本较低等特点,因此很多的中小型网站为了降低成本而选择MySQL作为数据库。MySQL作为一个快速的SQL数据库服务器,实现了多线程、多用户等特性,并且支持关键任务以及重负载生产系统的使用,也可将它嵌入到大配置的软件中。尽管它的版本还在不断更新迭代中,但已经把一个丰富和有用的功能集提供给了广大用户。MySQL是非常适合访问在Internet上的数据库因为它的速度、安全性和连接性。MySQL的源代码具有可移植性,主要使用C、C+编写,并使用多重编译器进行了测试。它还为多种编程语言提供了API,包括C、C+、Java和PHP等,优化了SQL查询算法,有效地提高了查询的速度。MySQL不仅能够作为一个库嵌入到其他的软件中,也可以是一个单独的应用程序应用于客户端服务器的网络环境中。它提供了多种编码格式例如中文的GB2312以及BIG5、日文的Shift_JIS等,这些都可以用来当做数据的表名和列名,增强了数据库的灵活性。虽然与其他的大型数据库比如DB2、SQL Server以及Oracle等相比有它的不足之处,例如功能有限、规模小、效率相对比较差,但它可以处理拥有上千万条记录的大型数据,并且支持常见的SQL语句规范,对于一般的中小型企业和个人用户,MySQL所拥有的功能已经绰绰有余。它的安装相对简单,便于用户的管理、调试,优化。相对于之前的版本,MySQL 5.6主要有5大新特性。(1)优化器的改进:5.6版本的SQL查询效率大幅度提高,主要体现在多范围的读数据和索引条件pushdown。(2)InnoDB的改进:InnoDB存储引擎团队提供了NoSQL的访问接口,可以通过Memcached的API来直接访问InnoDB的表。(3)通过memcached API直接访问NoSQL:使用这种方法对于Web应用中数据访问的性能来说会大幅度提高,适合简单的查询。(4)更好的复制:5.6版本改进数据的完整性和可用性,并且提升了数据性能。(5)Performance Schema: 从5.5 版本中引入,5.6版本中做了进一步的修改,它所提供新功能包括:表锁、表锁等待以及表的输入输出。第三章 平台设计本章讲述了面向安全云存储的文档共享平台的设计,包括架构设计、功能设计和数据库设计。3.1 架构设计3.1.1 平台架构图本平台致力于解决目前云存储产品中数据安全性低、云服务提供商不可信、数据缺乏严格访问控制等问题,实现云存储环境下数据的安全存储、灵活共享以及对已加密数据的严格访问控制,比较适用于企业信息化过程中数据外包给云存储安全性得不到保证的情况。整个平台分成四个模块,分别是网关、前端的客户端和管理端、后端云存储和授权中心。网关是平台的核心,它是客户端和云存储之间的连接桥梁,在网关上会部署WebService,实现文件加解密、云存储操作、密钥管理等功能,同时网关会隔离内外网;前端的客户端和管理端主要面向普通用户及管理员使用,普通用户上传、下载文件,管理员管理用户的信息;后端云存储是用来存储经过网关加密后的数据,可以使用公有云或私有云;授权中心负责用户密钥的生成和分布,将生成的密钥发送至网关。具体架构图可见下图3-1。图3-1 面向安全云存储的文档共享平台架构图如图3-1所示,本平台前端可以是各种客户端形态,有网站、APP、安装版的客户端等等;后端支持的云存储服务具有很好的可扩展性,有目前主流的阿里云、百度云等,也可以是自建的Hadoop私有云;前端与后端之间用网关连接,进行一系列的文件加解密工作,有效地将加密与存储分离,提高安全性;将授权中心单独分离进行密钥生成分发工作。3.1.2 基本框架搭建整个平台使用三层架构,在基本框架搭建时使用Visual Studio2010编程工具,基本的框架如下图3-2。图3-2 平台基本框架首先新建一个解决方案,命名为Gateway,在其目录下分别添加新的项目,MiYunDAL、MiYunBLL、MiYunWeb就是三层架构中的数据访问层、业务逻辑层和表现层。然后新建一个WebService项目,命名MiYunWS,这是网关上服务接口实现的部分。最后新建MiYunModel、MiYunCommon、MiYunManage三个项目,前面两个是实体类库和通用方法类库,主要是为了辅助三层架构,使整个架构更加完善,MiYunManage是平台的管理端。MiYunDAL中主要包含基本的数据操作类MySqlHelp和数据库中每一张表的操作类,如下图3-3。图3-3 数据访问层结构MiYunBLL是处理DAL层中数据及实现所有业务逻辑的类库,其中包含的类如下图3-4。图3-4 业务逻辑层结构MiYunWeb是表现层,主要是一些Web页面、CSS、图片等,结构如下图3-5。图3-5 表现层结构MiYunModel和MiYunCommon分别定义了一些数据库中的实体和平台通用的方法,结构如下图3-6、3-7。图3-6 实体类结构图3-7 公用方法类结构3.2 功能设计3.2.1 平台WebService功能设计平台的WebService主要有以下几个接口,用户登录接口、文件对称加密接口、文件属性基加密接口、云存储上传下载接口、云存储创建删除Bucket和文件夹接口、云存储获取Bucket、文件夹及文件列表接口、部门角色属性管理接口、用户修改密码接口。这些接口都是写在同一个WebService中,将WebService部署在服务器上就可以实现客户端的调用。用户登录分为普通用户登录和管理员登录,接口需要判断该用户普通用户还是管理员,相对应的返回成功或者错误信息。用户登录成功后,可以做常规的文件操作,比如上传、下载、删除等。上传文件后需要对文件进行加密,下载文件时要对文件进行解密,同时跟后端的云存储保持同步。加密后的文件需要存储至云存储服务上,而云存储操作接口就是提供网关WebService与云存储之间的数据交互,包括上传文件至云存储、获取云上文件列表等等。3.2.2 平台客户端功能设计平台客户端需要调用网关上WebService的所有接口来实现相应的业务逻辑功能,也就是大部分的业务逻辑功能都是在网关上实现的。客户端的功能主要有用户登录、上传下载文件、访问结构选择、显示Bucket、文件夹及文件列表和用户修改个人信息。用户在登录界面填写用户名及密码,成功之后进入主界面,左侧显示文件列表,根目录是公司内部的部门名,子目录是个部门下的文件夹,右侧显示当前目录下的所有文件信息,可以点击下载需要的文件,也可以上传新的文件,上传时调用WebService的上传接口,先上传至网关进行加密处理,最后上传至云服务器。调用WebService接口之后会返回给客户端一些数据,比如调用登录的接口后,会返回成功或失败的信息,需要客户端去处理;调用获取文件列表的接口,需要客户端将这些信息显示在页面上呈现给用户等等。用户从本地上传文件到云存储需要调用文件上传接口,同时要给用户提供一个选择文件的对话框;用户从一个下载列表中选择下载的文件则调用文件下载的接口,将文件从云存储保存至本地。用户个人中心主要是用户对自己的个人信息进程管理,包括用户名、密码等信息的修改。3.2.3 平台管理端功能设计平台管理端的功能是对数据库信息的管理,主要涉及四大块:用户账号管理、属性管理、部门管理、角色管理。管理员登录之后,左侧是用户、属性、部门、角色管理的选择按钮,点击后右侧显示相应的信息,可以进行增加、删除、修改、查看操作。用户账号管理是对使用本平台的用户进行管理,包括添加新用户、删除用户、禁用用户等相关操作。属性管理是管理员维护所有的属性,包括添加、删除、修改属性,为用户、角色添加属性等。角色管理是管理员定义本平台上的所有角色,比如一个公司内部有总经理、部门经理、普通员工等角色,管理员可以添加、删除、修改角色的相关信息。本平台主要是面向企业用户,因此需要对企业内部的组织结构有一个管理,管理员可以设定企业的部门,部门下的子部门,对部门的所有信息进行管理。3.3 数据库设计3.3.1 数据库需求分析本平台主要面向于企业用户,因此根据它的需求,数据库的实体应该有用户、部门、角色、属性和文件,用户的属性应该有用户ID、用户名、密码、用户类型、用户状态、角色ID、部门ID等,部门的属性应包含部门ID、部门名、创建者、部门管理人等,角色包括角色ID、角色名,属性包括属性ID、属性名、属性创建人等,角色与属性两个实体之间通过角色属性关系连接,最后文件的属性有文件ID、文件名、文件大小、上传者、上传时间等,所有的ID都是自增型的主键,用户与部门之间用部门ID关联,用户与角色之间用角色ID关联。3.3.2 数据E-R图根据数据库需求,设计数据E-R图如下图3-8所示。图3-8 数据E-R图3.3.3 数据表根据数据库需求,会有以下6张表:用户表、部门表、角色表、属性表、角色属性表和文件表,表的具体信息如下表。(1)用户表:描述使用平台用户的基本信息。表3-1 用户表字段名类型/长度描述UserIDInt用户ID,主键LoginNameVarchar(32)登录名UserNameVarchar(32)用户真实姓名PassWordVarchar(32)登录密码GroupIDInt部门ID,外键RoleIDInt角色ID,外键续表3-1字段名类型/长度描述KeyStautsInt用户私钥状态UserStatusInt用户账号状态UserTypeInt用户类型LastLoginTimeDateTime最近登录时间(2)部门表:描述企业内部部门、组织架构的基本信息。表3-2 部门表字段名类型/长度描述GroupIDInt部门ID,主键GroupNameVarchar(32)部门名字GroupDesVarchar(512)部门描述GroupManagerInt部门管理员,外键GroupCreatorInt部门创建人,外键GroupTitleVarchar(32)部门属性GroupCTimeDateTime部门创建时间(3)角色表:描述企业管理员定义的角色的基本信息。表3-3 角色表字段名类型/长度描述RoleIDInt角色ID,主键RoleNameVarchar(32)角色名字(4)属性表:描述管理员定义的属性的基本信息。表3-4 属性表字段名类型/长度描述AttributeIDInt属性ID,主键AttributeNameVarchar(32)属性名字AttributeTitleVarchar(32)属性代号,用来加密AttributeCTimeDateTime属性创建时间AttributeCreatorInt属性创建人,外键(5)角色属性表:关联角色表和属性表。表3-5 角色属性表字段名类型/长度描述RoleIDInt角色ID,外键AttributeIDInt属性ID,外键(6)文件表:描述上传文件的基本信息。表3-6 文件表字段名类型/长度描述ObjectIDInt文件ID,主键ObjectNameVarchar(32)文件名字ObjectPathVarchar(128)文件存储路径ObjectSizeVarchar(32)文件大小AcessStructureVarchar(1024)文件访问结构ObjectCTimeDateTime文件上传时间ObjectOwnerInt文件上传者,外键ObjectIsFileInt是否是文件夹ObjectTagInt文件类型第四章 平台实现本章讲述了面向安全云存储的文档共享平台的实现过程,从最基本的环境配置到每一块功能的具体实现都会做详细的介绍。4.1 环境配置4.1.1 开发环境(1)硬件环境在整个平台的开发实现过程中,硬件使用笔记本和台式机,配置不低于以下条件:Intel 奔腾双核 T4400 2.2GHZ,2G内存,硬盘500G。(2)软件环境操作系统:Windows 7、Ubuntu,在Window 7下进行大部分开发,Ubuntu下主要进行加密算法的基本的测试,为算法的移植打下基础。集成开发环境:Visual Studio 2010。其他辅助工具:Microsoft Office 2010、Photoshop、Sublime text2、Navicat for MySQL。4.1.2 运行环境(1)服务器端操作系统:Windows Server 2008。服务器:IIS(Internet Information Services)7。数据库:MySQL5.6。(2)客户端主流的浏览器,内存不低于1GB,屏幕分辨率1366*768。4.2 平台WebService实现4.2.1 用户登录接口用户使用客户端进行登录,输入用户名和密码,点击登陆后会调用用户登录接口,通过SOAP协议将用户名和密码作为参数传递给接口,接口调用业务逻辑层中的登录方法,业务逻辑层最后调用数据访问层执行相应的SQL查询语句返回正确或错误的结果,客户端根据这个结果给用户登录成功或失败的提示。声明公开的方法,命名UserLogin,返回类型为整形int,两个参数分别是string类型的strLoginName和strPassword,先调用CheckUserInfo方法检查参数是否合法,返回值为0时再调用UserLogin方法执行登录,返回3成功,返回-1失败,具体接口结构如下图4-1。图4-1 用户登录接口4.2.2 文件上传下载接口用户使用客户端进行文件上传时,先选择需要上传的文件,点击上传时会调用文件上传接口,在上传时考虑到一些大文件传输的需要,进行了一个分块操作,分块的大小为1MB,因此在上传接口中需要实现文件的分块接收,声明公开的方法UploadFileByBlock,返回类型string,6个参数类型string,分别是用户名UserName、文件名FileName、上传路径FilePath、上传内容FileContent、加密策略Policy和分块标志Flag。在接收分块的文件时使用Flag参数判断,Flag为0时表示分块没有完成,否则完成分块接收,如图4-2。图4-2 分块接收上传文件块分块接收完成后就是对文件进行加密,本平台采用了混合加密体制,首先随机生成一个Guid字符串作为密钥,再使用高级加密标准(Advanced Encryption Standard,AES)对文件进行加密,密钥就是Guid,最后使用密文策略属性基加密对密钥进行加密,将文件密文和密钥密文合在一起进行存储。AES加密方法的名字为EncryptFile,参数是需要加密的文件名InputFileName、加密后的文件名OutputFileName、密钥Key和out型的参数FileSize,如图4-3。图4-3 文件AES加密对密钥加密的方法是密文策略属性基加密,该加密方法总共有四个步骤,初始化Setup、私钥生成Keygen、加密Enc和解密Dec。Setup生成公钥和主密钥,Keygen使用公钥、主密钥和用户属性生成私钥,Enc将访问策略附在文件上进行加密,Dec使用公钥、私钥解密文件,这样的加密模式只需要私钥中的属性满足密文上的访问结构就能解密。本平台将这四步编译成四个可执行程序来调用,加密实现的过程如图4-4。图4-4 密文策略属性基加密对文件进行完混合加密之后,会上传存储至云存储(见4.2.3),做完这些工作之后会返回客户端一个结果,上传成功或失败,文件下载接口的实现和上传相反。4.2.3 云存储操作接口本平台选用了目前常用的阿里云开放式存储服务作为云存储,文件通过网关上WebService加密后,最终统一存储在阿里云上。在开发时需要注册一个阿里云的账户,里面会提供一个开发者帐号,下载阿里云的SDK即可进行开发。在阿里云上每一个文件或文件夹都叫做Object,在上传文件时调用SDK中的PutObject方法,参数依次是上传到的空间名BucketName、上传的文件路径Key、文件内容流Content和文件头描述metadata。在实现过程中将密钥密文存至metadata,文本密文放入Content,如下图4-5所示。图4-5 文件上传至阿里云客户端需要获取阿里云上文件的目录结构,在WebService通过三个接口GetBucketList、GetBFOList和GetFOList实现。在阿里云上最顶层的目录结构是Bucket,GetBucketList就是获取阿里云上的Bucket列表,GetBFOList是获取Bucket下的文件及文件夹列表,GetFOList是获取文件夹下的目录列表。下图4-6是GetBucketList的实现过程。图4-6 获取Bucket列表管理端需要管理阿里云上的目录结构,就是对Bucket、Object的增加、删除、修改、查看。CreateBucket用来新建空间,DeleteBucket删除原有空间,DeleteObject删除云上文件或文件夹。在进行这些管理操作时是跟数据库信息同步的,当云上新建Bucket或Object时需要在网关数据库中添加相应的信息,并支持回滚操作。4.3 平台客户端实现4.3.1 调用WebService接口客户端通过添加Web服务引用的方式来调用WebService接口,先把开发完成的WebService发布并部署至IIS服务器,然后会得到WebSevice的Url地址,最后在客户端的程序中右击引用,添加Web服务引用,在地址栏中输入Url值,点击添加引用,在具体的代码中只需实例化Web服务就可调用需要的接口,如下图4-7。图4-7 添加Web引用4.3.2 文件操作在主界面中用户主要进行一系列的文件操作,包括文件上传、下载、查看和删除。文件上传使用了ASP.NET自带的控件FileUpload,传统的FileUpload控件并不美观,在实现的过程中对其进行了美化,使用的方法是将FileUpload控件透明放入DIV容器中,并在FileUpload的onchange事件中绑定了上传事件,因此用户只需要选择完文件平台就会自动上传。同时对上传文件的类型及大小做设定,支持一般的文件格式,单个文件大小不能超过1G。文件先上传至网站服务器,再调用WebService中的上传接口到网关进行加密处理,最后上传至云存储并向数据库插入数据,在网站服务器到网关的传输中使用了分块传输的方法,分块大小为1MB,具体的实现代码如图4-8、4-9。图4-8 文件上传1图4-9 文件上传2文件查看主要是根据部门查看,在主界面左侧使用Menu控件绑定了部门信息,每个节点的Text值是部门名,Value值是部门ID,在MenuItemClick事件中根据选中节点的Value值进行文件数据的绑定,即绑定到右边的GridView控件中,代码实现如图4-10、4-11。图4-10 Menu点击事件图4-11 GridView数据绑定在GridView中有操作栏,绑定了下载和删除按钮,这两个按钮的参数是每条数据对应的行号,命令名分别是DownLoad和Delete,在GridView的RowCommand事件实现下载和删除的功能,先根据命令名判断是下载还是删除,下载先根据参数行号获取到文件的编号,再将文件编号作为参数调用WebService下载接口即可,同理删除则调用文件删除接口,部分代码如图4-12、4-13。图4-12 文件下载图4-13 文件删除4.3.3 用户个人中心用户进入个人中心之后,可做账号管理和修改密码操作。帐号管理时先判断用户填写的新登录名是否为空,为空返回错误-2,然后判断新的登录名是否已经存在,存在返回错误-1,最后执行修改登录名操作,成功返回1,失败返回0。在业务逻辑层中实现如图4-14,数据访问层中实现如图4-15。图4-14 修改登录名业务逻辑层图4-15 修改登录名数据访问层修改密码时,先判断用户输入的原密码、新密码和确认密码是否为空,其中一项为空则返回错误-3,然后判断新密码与确认密码是否相同,不相同返回错误-2,接着判断原密码是否正确,错误返回-1,最后执行修改密码操作,成功返回1,返回0。4.4 平台管理端实现帐号管理分为帐号的添加、删除、修改和查看。将所有用户的信息绑定与GridView控件中,并使用自带的分页功能对用户信息进行分页显示,同时GridView中绑定了自定义的操作栏,分别为修改和删除,删除的话根据用户编号调用业务逻辑层中的删除方法,修改则是将用户编号作为参数加到浏览器地址中,跳转至添加页面,在添加页面根据用户编号获取用户全部信息进行修改。帐号添加先从控件中获取新用户信息,再赋值给用户实体类,最后调用业务逻辑层中的添加方法实现,实现代码如图4-16、4-17。属性管理、部门管理、角色管理的实现方式类似于帐号管理,不再做详细的介绍。图4-16 帐号添加图4-17 帐号修改、删除4.5 界面展示4.5.1 登录界面平台的登录界面如下图4-18。左边是5张图片循环播放,主要是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育与科技的融合-基于共情的家庭教育创新模式研究
- 教育心理学的实证研究在教学评估中的应用
- 商业智能与教育技术的法律边界探讨
- 重庆市聚奎中学2025届物理高二下期末监测试题含解析
- 基础护士肿瘤科化疗护理考试题库及答案
- 2025年吉林省吉化第一高级中学物理高一下期末预测试题含解析
- 混合现实教育推动教育信息化的新动力
- 教育机器人的多元智能开发与教学实践
- 智能终端在教育信息传播中的作用与价值
- 教育心理学前沿学习理论与教学方法的新思路
- 电梯井道脚手架施工方案
- 兴平市生活垃圾焚烧发电项目环评报告
- 初中数学浙教版九年级上册第4章 相似三角形4.3 相似三角形 全国公开课一等奖
- 主令电器(课用)课件
- DLT 5066-2010 水电站水力机械辅助设备系统设计技术规定
- 湘少版英语六年级下册全册教案
- 测绘生产困难类别细则及工日定额
- 湖南省长郡中学“澄池”杯数学竞赛初赛试题(扫描版含答案)
- 消防系统施工总进度计划
- 2022年广东省中山市纪念中学三鑫双语学校小升初数学试卷
- JJG30-2012通用卡尺检定规程
评论
0/150
提交评论