本发明涉及云存储及数据安全保护
技术领域:
:,特别涉及一种基于jar(javaarchive,java归档文件)的云数据安全管理与审计装置。
背景技术:
::随着云服务的发展,越来越多的用户开始使用云存储服务。简单来说云存储是将储存资源放到云上供人存取的一种新兴方案。在数据访问方面,现有云存储技术的问题主要在于如果执行大规模数据请求或数据恢复操作,那么云存储是否可提供足够的访问性。在数据安全方面,云存储服务器早已经成为了黑客入侵的目标,csp(contentsecuritypolicy,内容安全策略)近年来已经有数据丢失、泄漏事故报告,考虑到csp的信誉不佳,云用户担心会失去对其数据的控制,csp和日志记录的不可靠引发了云存储中的诸多问题。多数的云服务提供商都预备了安全防护方案,但是云存储中数据安全问题仍然客观存在,必须加以解决。在相关技术中,作为应对csp的问题的主要方法,日志记录能够跟踪数据使用情况,便于进行数据安全检查。作为常见的记录类型,日志由具有日志记录机制csp生成并存储在云中。在不被信任的云中,不论是恶意用户还是csp都有能力制造虚假或破碎的日志,防止留下泄露数据的证据。因此,如何在不信任的云中构建自动可靠的日志记录面临严峻的挑战。近年来,对不可信云中的可信云记录的研究着重于日志的完整性保护,数字签名和哈希链机制已经被引入可靠的日志记录格式中,采用自动记录机制可有效保证记录日志的真实性。然而,最先进的自动日志记录技术仍然存在一些问题,如自动记录机制是为分布式存储系统设计的,并没有充分利用csp的能力,对数据所有者的日志通信和存储造成巨大的负担;又例如为了保护日志内容中的用户隐私,日志加密机制在空间和时间上都是低效的,并且不可信的csp会引发密钥滥用攻击的问题。需要说明的是,通过与csp合谋,恶意用户可以直接访问存储在csp上的加密数据,而不生成任何记录,并用泄漏的解密密钥对数据进行解密,造成数据的安全性低,记录的真实性和完整性差。技术实现要素:本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的目的在于提出一种基于jar的云数据安全管理与审计装置,该装置可以确保数据访问将生成记录并保护数据免受秘钥滥用攻击,有效实现了记录的真实性和完整性,有效提高数据的安全性。为达到上述目的,本发明实施例提出了一种基于jar的云数据安全管理与审计装置,包括:数据管理模块,用于实现数据所有者对数据的读写与更新,更新用户列表并日志审计操作,其中,在未授权用户查看明文数据之前,检测和终止恶意行为,并且在有人访问服务器端的数据时,通过jar的访问策略触发自动日志记录;日志安全审计模块,用于通过attestation的日志格式将日志存储在csp上,并且通过链状的日志整体结构保证日志的安全性,以通过所述jar的访问策略对数据访问进行查询或者对指定文件或用户行为进行查询。本发明实施例的基于jar的云数据安全管理与审计装置,可以实现基于jar的数据访问控制、面向数据操作的日志生成、日志完整性维护以及基于日志的安全审计等功能,并通过jar的访问策略提供自动可靠的日志记录机制,确保数据访问将生成记录并保护数据免受密钥滥用攻击,有效地实现了记录的真实性和完整性,有效提高数据的安全性。另外,根据本发明上述实施例的基于jar的云数据安全管理与审计装置还可以具有以下附加的技术特征:进一步地,在本发明的一个实施例中,所述jar的访问策略包括:服务器端对请求权限进行检查,生成预设格式的日志,并将所述预设格式的日志附加在已存在的日志后,以当所述生成的预设格式的日志的全部内容正确执行完成后,服务器生成对应的permission或denial消息,以保证所有的数据修改有日志记录。进一步地,在本发明的一个实施例中,所述attestation的日志格式如下:其中,日志信息使用明文保存在服务提供商处,且不同数据的操作日志被记录在一个公共的日志文件中。进一步地,在本发明的一个实施例中,所述链状的日志整体结构如下:chainhash=hash(attestbody,prevchainhash)。进一步地,在本发明的一个实施例中,其中,当每条attestation内容发生改变时,引起整条日志链的断裂,从而根据哈希链断裂的位置定位威胁数据安全的恶意行为。本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。附图说明本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:图1为根据本发明实施例的基于jar的云数据安全管理与审计装置的结构示意图;图2为根据本发明一个实施例的云数据管理和自动日志记录工具整体框架的示意图;图3为根据本发明一个实施例的基于jar的数据访问控制的示意图;图4为根据本发明一个实施例的基于serverjar的自动日志记录机制的示意图;图5为根据本发明一个实施例的owner的信息更新过程的示意图;图6为根据本发明一个实施例的client的数据访问过程的示意图;图7为根据本发明一个实施例的owner的日志查询过程的示意图。具体实施方式下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。为了实现可靠的云数据管理和自动日志记录,首先要保证网络通信协议和服务部署环境相对可靠。对此本发明实施例使用ssl(securesocketlayer,安全套接层协议通信)和amazonawsec2(ec2,elasticcomputecloud,亚马逊弹性计算网云)来进行云服务环境部署。因此在介绍基于jar的云数据安全管理与审计装置之前,首先对ssl和amazonawsec2进行介绍。其中,ssl协议为netscape所研发,用以保障在internet上数据传输安全,利用数据加密技术,可确保数据在网络上之传输过程中不会被截取及窃听。ssl协议位于tcp(transmissioncontrolprotocol,传输控制协议)/ip(internetprotocol,网络之间互连的协议)协议与各种应用层协议之间,为数据通讯提供安全支持。使用ssl协议进行网络通信有很多优点:(1)提供较高的安全性保证。ssl利用数据加密、身份验证和消息完整性验证机制,保证网络上数据传输的安全性。(2)支持各种应用层协议。虽然ssl设计的初衷是为了解决万维网安全性问题,但是由于ssl位于应用层和传输层之间,它可以为任何基于tcp等可靠连接的应用层协议提供安全性保证。(3)部署简单。目前ssl已经成为网络中用来鉴别网站和网页浏览者身份,在浏览器使用者及web(worldwideweb,全球广域网或者万维网)服务器之间进行加密通信的全球化标准。另外,awsec2是一个让使用者可以租用云端电脑运行所需应用的系统。awsec2上的简单的web服务界面,可以让使用者轻松的获取和配置资源。awsec2有以下优点:(1)完全控制。用户可以完全控制自己的实例,拥有每个实例的管理员或根用户访问权,可以像与其他任何机器一样与这些实例互动。用户可以在停止运行实例的同时将数据保存在启动分区,然后用web服务api(applicationprogramminginterface,应用程序编程接口)重启。使用web服务api还可以远程重启实例,还拥有实例控制台输出的访问权。(2)运行可靠。amazonec2提供了一个非常可靠的环境,替代实例可在此环境中快速并以可预见的方式启动。该服务运行于亚马逊经过验证的网络基础设施和数据中心。(3)安全。amazonec2与virtualprivatecloud(vpc)配合工作,为用户的计算资源提供安全及强大的联网功能。用户的计算实例位于amazonvpc中,它具有用户指定的ip范围。用户可以决定哪些实例向互联网公开,哪些实例保持私有状态。安全组和网络acl(accesscontrollist,访问控制列表)让用户能控制进入和离开自己的实例的入站和出站网络访问。(4)可拓展性好。amazonec2能够与amazonsimplestorageservice(amazons3)、amazonrelationaldatabaseservice(amazonrds)和amazonsimplequeueservice(amazonsqs)配合使用,为多种应用程序提供完整的计算、查询处理和存储解决方案。下面参照附图描述根据本发明实施例提出的基于jar的云数据安全管理与审计装置。图1是本发明实施例的基于jar的云数据安全管理与审计装置的结构示意图。如图1所示,该基于jar的云数据安全管理与审计装置10包括:云数据管理模块100和日志安全审计模块200。其中,云数据管理模块100用于实现数据所有者对数据的读写与更新,更新用户列表并日志审计操作,其中,在未授权用户查看明文数据之前,检测和终止恶意行为,并且在有人访问服务器端的数据时,通过jar的访问策略触发自动日志记录。日志安全审计模块200用于通过attestation的日志格式将日志存储在csp上,并且通过链状的日志整体结构保证日志的安全性,以通过jar的访问策略对数据访问进行查询或者对指定文件或用户行为进行查询。该装置10可以通过jar的访问策略提供自动可靠的日志记录机制,确保数据访问将生成记录并保护数据免受秘钥滥用攻击,有效实现了记录的真实性和完整性,有效提高数据的安全性。可以理解的是,本发明实施例的装置10可以采用与数据耦合的可编程javajar文件来封装访问策略,确保通过jar进行的数据访问将触发本地jar的身份验证和自动日志记录,实现对云数据的有效管理。同时,在基于日志的安全审计工具中设计了一种称为“attestation”的可靠的日志格式,使云存储更可靠。具体地,本发明实施例的装置10基于可编程javajar,设计针对数据共享环境的云数据安全管理与审计工具,该装置10划分为两个模块:云数据管理模块100和日志安全审计模块200。其中,在云数据管理模块100中,本发明实施例将用户定义为三种不同的身份:数据所有者(owner)、服务提供商(csp)、共享用户(user)。云数据管理模块100可以实现owner对数据的读写与更新、更新用户列表和日志审计操作。同时,合法的用户对数据有读的权限,可以申请访问某个文件或文件的一部分,也可以更新自己的身份以协助安全的数据访问。也就是说,如图2所示,云数据管理模块100由自动可靠的日志记录机制支持,可以采用与数据耦合的可编程javajar文件来封装访问策略,确保通过jar进行的数据访问将触发本地jar的身份验证和自动日志记录。本发明实施例将数据共享环境中的用户定义为三种不同的身份即数据所有者(owner)、服务提供商(csp)和共享用户(user),并依据用户身份,对不同身份的行为进行定义。本发明实施例使用ssl协议进行数据通信,因为ssl能够保证数据传输的安全性和完整性。下面对三种不同的身份即数据所有者(owner)、服务提供商(csp)和共享用户(user)进行详细的阐述。首先,如图3所示,数据所有者:所有者端由一个owner.jar和resource资源性文件构成。owner加密数据,并为数据生成用于访问及管理的jar。所有者端功能有:更新数据文件、更新用户访问控制列表、审计服务器数据、获取服务器活动数据。owner对数据有写的权限,可以更新云端存储的信息。owner更新的信息可进一步分为2类:存储在server端的数据块和serverjar中的用户列表。两类信息的更新流程一致,区别仅存在于owner生成新版信息的过程,以及server收到新版信息后的更新过程。其次,如图3所示,共享用户:客户端由一个client_10.jar和resource资源性文件构成,客户使用与自身角色对应的jar访问数据,但无法获取数据的完整权限。客户端功能包括:请求数据和更新版本。clientjar的部署主要由公共网络传输完成,可以采用将数据解密密钥(非对称加密)写在clientjar代码里的方法,利用java本身对于代码的保护机制,代替通过对称加密传递非对称加密密钥的方式,达到了类似于以往的对称-非对称加密相结合的数据加密性能。合法的client对数据有读的权限,在请求数据模块,客户向服务器发送请求,经过服务器认证后可以获得服务器上文件所有者上传的数据文件。client可以申请访问某个文件或文件的一部分,也可以更新自己的身份以协助安全的数据访问。每当文件所有者更新了jar的版本,客户都可以通过更新版本模块来更新自己的jar文件。经过服务器认证后可以获得客户新的hashid。最后,如图3所示,服务提供商:服务器端的功能程序为server.jar,它为数据提供用于存储的云环境,并通过与自身角色对应的jar对数据的访问和更新进行管理,同时记录日志信息。对客户端的服务功能有:发送数据服务和更新客户端服务。对数据所有者端服务功能有:文件数据更新服务、用户访问控制列表更新服务、统计用户活动服务和统计服务器活动服务。本发明实施例的装置10将服务端部署在amazonawsec2(亚马逊弹性计算网云)上。进一步地,为了解决csp与恶意用户合谋,跳过serverjar直接向未授权用户发送数据的问题,本发明实施例提出了请求权限检查过程,在未授权用户可以实际查看明文数据之前,检测和终止恶意行为。同时,为了保证在用户访问服务器端的数据时,不可避免地触发自动记录,实现自动日志记录,本发明实施例设计了基于jar的访问策略。此外,在日志安全审计模块200中,本发明实施例设计了一种称为“attestation”的可靠的日志格式,可以将大量的日志直接存储在csp上而无需加密。同时,本发明实施例设计并实现了一种链状的日志整体结构,用以保证日志的安全性。日志安全审计模块200基于jar封装的访问策略,可实现两种日志查询功能即数据访问查询功能和指定文件或用户行为查询功能。进一步地,在本发明的一个实施例中,jar的访问策略包括:服务器端对请求权限进行检查,生成预设格式的日志,并将预设格式的日志附加在已存在的日志后,以当生成的预设格式的日志的全部内容正确执行完成后,服务器生成对应的permission或denial消息,以保证所有的数据修改有日志记录。也就是说,服务器端执行请求权限检查过程,同时生成固定格式的一条日志,附加在已存在的日志后。当生成日志的全部内容正确执行完成后,服务器才可生成对应的permission或denial消息,这保证了所有的数据修改都有日志记录可考。具体地,如图4所示,本发明实施例的自动日志记录机制需要经过请求权限检查的过程,并通过jar来封装访问策略,在用户访问服务器端的数据时,不可避免地会触发自动记录。serverjar中的访问策略主要由以下步骤组成:接受request、检查权限、获取数据、生成日志、返回permission和数据或denial。首先,所有者端或者客户端发出数据访问或者日志审计请求的request。其次,服务器端接收到请求被唤醒进行身份验证,并且服务器通过检查用户hashid是否在到期日期以前,以及用户是否在共享用户列表中进行授权。最后,当serverjar在读取请求并识别授权用户时,触发自动日志记录,生成一条与本次“request-permission”相关的attestation,并验证通过后,生成permission消息发送给请求端后才能继续数据访问或者日志审计操作。此外,如果用户或csp试图通过规避jar来违反协议,数据访问将失败。如果访问用户没有权限则在生成日志后将denial消息发送给请求端。可选地,在本发明的一个实施例中,attestation的日志格式如下:其中,日志信息使用明文保存在服务提供商处,且不同数据的操作日志被记录在一个公共的日志文件中。也就是说,日志信息使用明文保存在服务提供商处,且不同数据的操作日志被记录在一个公共的日志文件中。日志信息的生成与交互机制紧密相关,以保证日志机制能够准确的记录下整个数据安全框架内的数据操作行为。具体而言,本发明实施例设计了一种称为“attestation”的可靠的日志格式,可以将大量的日志直接存储在csp上而无需加密。明文认证格式降低了存储成本,灵便的生成和授权过程有助于快速访问数据,同时,本发明实施例设计并实现了一种基于哈希链的链状日志整体结构,用以保证日志的安全性和完整性。日志安全审计模块200基于jar封装的访问策略,可实现两种日志查询功能即数据访问查询功能和指定文件或用户行为查询功能。其中,日志的生成基于数据访问控制的“request-permission”机制。名为“attestation”的日志数据格式如下:需要说明的是,在attestation结构中,“act”字段用于记录行为类型,“blockhash”是本次操作过程涉及到的数据块的哈希值,可将日志与当前数据匹配。“userinfo&datainfo”用于指明行为的对象,字段内容根据行为类型的不同,可以是数据文件名、数据块名、用户名。“userhashid”指明行为的来源,即数据操作的请求者。act、blockhash、userinfo&datainfo三个字段,来自请求信息的主体,与对应的请求信息相同。“timeofaccess”是日志信息生成时的服务提供商系统时间。“chainhash”是一个为保障日志数据安全可靠而设计的字段。“signature”是生成本条日志记录的服务提供商的数字签名。csp在存储日志记录时,各个字段之间使用“#”作为分隔符。其中,日志信息使用明文保存在服务提供商处,这主要是由于attestation本身的结构保证了其自身的健壮性。其次,日志主要用于记录框架中数据安全事件,由于日志中的敏感信息,如用户身份信息、数据信息,均使用哈希值表示,日志信息本身的泄露并不造成数据安全问题。最后,当前技术下的密文搜索技术对计算资源的要求较高,对于可能需要频繁日志查询的场景,明文表示有较好的可用性。另外,不同数据的操作日志被记录在一个公共的日志文件中。这主要是出于以下两点考虑:一是公共的日志存储可以减小日志查询时由文件读取带来的计算资源需求;二是大量的attestation将会形成更长的哈希链,这使得恶意用户或服务提供商希望通过修改日志而隐藏恶意的行为变得难以实现。日志信息与数据操作请求紧密相关,而不是与具体的数据操作行为相关,使得非法的数据操作意图依然能够被日志机制完整的记录下来,这也使得数据所有者可以通过日志发现潜在的恶意用户和恶意行为。可选地,链状的日志整体结构如下:chainhash=hash(attestbody,prevchainhash)。其中,在日志记录工具中,日志信息的完整性和防篡改,是保障日志能够准确描述数据安全事件,并达到维护数据安全目的的关键。本发明实施例设计并实现了一种链状的日志整体结构,用以保证日志的安全性。在attestation中,设计了一个chainhash字段用于保持日志的整体安全性。chainhash使用日志信息主体的act、userid、blockid、nonce、time字段与上一条attestation中的chainhash字段,相加再进行一次哈希变换,以得到本条日志记录的chainhash值。最新的chainhash将保留在serverjar中,作为计算下一个attestation的chainhash值的参数。最后由serverjar签名,然后将chainhash附加到serverjar运行目录下现有attestation的末尾。其中,chainhash=hash(attestbody,prevchainhash)。可选地,在本发明的一个实施例中,其中,当每条attestation内容发生改变时,引起整条日志链的断裂,从而根据哈希链断裂的位置定位威胁数据安全的恶意行为。也就是说,这种上下文紧密相关的日志链结构,使得每条attestation内容发生改变的时候,必将引起整条日志链的断裂。而本发明实施例可以根据哈希链断裂的位置,定位威胁数据安全的恶意行为。具体地,基于日志的安全审计在数据管理平台上,设计并实现了两种日志查询功能即数据访问查询功能和指定文件或用户行为查询功能。这两种功能分别对应了所有者端的获取服务器活动数据模块和审计服务器数据模块。文件所有者可以通过获取服务器活动数据模块来获得服务器上最新的活动数据,包括服务器上客户请求数据的次数及时间、最后一次请求的用户和时间以及非法请求的次数时间。数据访问查询的结果是数据安全简报。数据所有者可以请求server发送数据安全简报,通过数据安全简报,对数据的安全情况进行直观的了解,并决定是否有必要对数据安全事件进行详细的查询。而当数据所有者认为数据安全受到威胁,或因为其他原因需要查看数据的完整操作日志时,需要依据交互机制对服务提供商提出查询日志请求。这就是所有者端的审计服务器数据模块,文件所有者可以审计服务器上特定文件、特定用户的活动信息。需要说明的是,本发明实施例使用文件存储的方式保存数据、日志信息以及用于日志查询和日志完整性维护的相关信息,信息保存在服务端resource文件夹中。resource文件夹中针对每一个数据建立一个名字相同的文件夹。例如,数据文件myfile的数据内容和相关信息存储在myfile文件夹中。其中,blocks文件夹存储文件的所有加密数据块。userkey文件夹用于存储用户的public-key。用于服务端验证用户身份。attest.txt用于存储与当前数据相关的数据操作日志。last_chain.txt用于存储最新一条attestation信息中的chainhash,用于进行下一条attestation信息中chainhash的生成而不用再次读取相对较大的attest.txt文件。myfile.txt用于存储myfile文件响应的数据块信息。permission.txt用于存储csp对数据访问请求的响应信息,因为响应信息中包含了请求信息的主体,所以不需要额外保存请求信息。query.txt用于存储数据所有者请求查询日志的结果。另外,本发明实施例的装置10采用的通讯方案包括:(1)owner的sendmessage()方法,通过writablebytechannel,每次发送不超过1024个字节,直至内容结束。(2)owner的receivepermissionmessage(),通过readablebytechannel每次从缓存总读取最多1024个字节,前者用来接收client发送的permission,读取到“end”停止,返回permission字符串。(3)receivefile()方法,用来接收owner发送的查询结果文件,删除file,file-end标志符,以字符串的形式返回文件内容。(4)server的sendfile()和sendmessage()方法,通过writablebytechannel,每次发送不超过1024个字节,直至内容结束。(5)server的receivefiles()和receivemessage()方法,通过readablebytechannel每次从缓存总读取最多1024个字节,直至内容结束,以字符串形式返回接收到的数据。(6)client的sendmessage()方法通过writablebytechannel,每次发送不超过1024个字节,直至内容结束。(7)client的receiveserverdata()方法,通过readablebytechannel每次从缓存总读取最多1024个字节,接收到“end”标志符停止,以特定格式的字符串返回接收到的permission和数据,或者denial。另外,在本发明的一个具体实施例中,数据管理具体实现步骤包括:(1)如图5所示,owner的信息更新过程包括:①初始化。载入证书,创建并初始化sslcontext实例,建立owner和server之间的连接。②发送请求。owner通过sendmessage()方法,主动向server发送request消息。request的固定格式为:act#ownerid#dataid#nonce#signature,其中“#”是分隔符,将request分为5个字段。如果请求更新数据块,act字段的值为update,dataid字段值为filename_blockid;如果请求更新用户列表,act字段的值为acl,dataid字段值为filename_user_version,其中“_”是request的一个字段内部的分隔符。nonce是6位随机数,signature是owner的签名。③回复请求。server通过receivemessage()方法收到request,进入attest_and_permit阶段,即:验证request合法性,对其中合法的request,生成attestation和permission,将attestation添加到相关的链上,将permission记录到server本地,然后通过sendmessage()方法向owner回复permission,发送“end”标志,permission内容结束。permission的格式为permit_act#ownerid#blockid#nonce#signature,其中“#”是分隔符。act,ownerid,blockid和nonce的值与request相同,signature为csp的签名。④接收许可。owner通过receivepermissionmessage()方法收到server发回的permission,由内部程序验证permission签名是否正确。⑤上传更新。若owner内部程序确认permission签名正确,随后会以文件形式呈现本次更新的内容。此时,owner界面的上传按钮被激活,点击即可通过sendmessage()方法上传本次更新内容。⑥更新jar。server在验证过通过receivefiles()和receivemessage()方法分别收到owner上传的更新内容、签名。server验证消息签名,如果正确,则更新对应的信息。owner更新信息的全部过程结束。(2)如图6所示,client的数据访问过程包括:①初始化。载入证书,创建并初始化sslcontext实例,建立client和server之间的连接。②发送请求。client通过sendmessage()方法,向server发送request字段。request的固定格式为:act#clientid_version#blockid#nonce#signature。其中“#”是request字段间的分隔符;“_”是用户身份字段内部的分隔符,表示用户的身份是由clientid和version两部分共同标识。如果请求数据访问,act字段的值为read,clientid使用安全的hashid,version是当前hashid的版本号;如果请求身份更新,act字段的值为version,clientid使用具体的userid,version仍是该用户当前hashid的版本号。nonce是6位随机数,signature是client的签名。③验证请求。server通过receivemessage()方法收到request,提取用户身份,检查request的签名是否正确。对于数据访问请求,还需检查request是否来自合法用户。④回复请求。如果签名正确,且数据访问request中的用户主体是合法用户,server的程序生成attestation和permission,将attestation添加到相关的链上,将permission记录到server本地,然后通过sendmessage()方法向client回复permission,随后发送请求的数据。如果server程序鉴定得知client不是合法用户,server生成denial信息,denial信息会被存储并通过sendmessage()发送给client,发送信息以“end”结束。⑤接收回复。client通过receiveserverdata()方法收到server发回的permission和数据,或者收到denial,由内部程序继续处理。(3)如图7所示,owner的日志查询过程包括:①初始化。载入证书,创建并初始化sslcontext实例,建立owner和server之间的连接。②发送请求。owner通过sendmessage()方法,主动向server发送request字段,request的固定格式为act#ownerid#target#nonce#signature,“#”是字段间的分隔。如果是数据访问查询,act的值为access,target的值为filename;如果是指定文件或用户行为查询,act的值为query,target的值为userinfo&datainfo,“&”为target字段内部的连接符。③回复请求。server通过receivemessage()方法收到request,根据request内容执行对应程序,即:验证quest合法性,对其中合法的request,生成attestation和permission,将attestation添加到相关的链上,将permission记录到server本地,然后通过sendmessage()方法向owner回复permission,发送“end”标志permission内容结束。④回复查询。server的jar程序还会执行查询过程并将查询结果暂存在本地文件中。随后,server通过sendmessage()方法发送查询结果,格式为以“file”+查询结果文件内容+“file-end”。⑤接收许可。owner通过receivepermissionmessage()方法收到server发回的permission,然后通过receivefile()方法继续接收通信链路中发来的查询结果,收到“file-end”后停止。随后内部程序验证permission和查询结果的签名是否正确。如果正确,owner界面的查看按钮被激活,点击即可获取可读的查询结果。owner查询访问日志的全部过程结束。进一步地,在本发明的另一个具体实施例中,实现基于jar的云数据安全管理与审计的步骤包括:(1)owner的数据块更新。由于数据在server端是分块(block)存储的,在数据小范围修改时,owner可以仅上传受影响的数据块。owner将需要重写的数据块编号记录在request中,在上传更新过程中,这些被修改的明文数据在owner端经过aes(advancedencryptionstandard,高级加密标准)对称加密后发送至server。server在更新数据块时,会用新的加密数据块替代原有数据,此外,对于每个新的block,server程序还会将serverjar中的blockhash信息更新。(2)owner的用户列表更新。owner通过更新用户列表授权新用户或撤销已有用户的访问权限。用户列表的第一行是sharinggroup信息摘要,包括了版本号、用户总数和合法用户数。从第二行起,每行的记录代表userid为行号减2的用户的权限,例如第二行记录代表的是userid为0的用户的权限。如果是合法用户,此记录的值为用户的hashid,如果是非法用户,此记录的值为revoked。在上传更新过程中,新的用户列表被发送给server,server用新的用户列表内容取代serverjar中的userlist记录。(3)server的attest_and_permit模块对于合法的数据上传或下载请求,当makeattest()的全部内容正确执行完成后,server才可生成对应的permission,这保证了所有的数据修改都有日志记录可考。在makeattest()方法中,i.程序首先在request中提取act,数据信息和request主体;ii.然后通过数据信息计算出对应数据的哈希,记作blockhash;iii.添加时间,计算chainhash和签名,生成固定格式的一条attestation;iv.最后,将attestation储存在本地,附加在已存在的日志后。(4)server的用户身份认证。server在认证用户身份后向用户发回permission或denial消息。在permission和denial的消息的结构中,“#”是字段间的分隔符;“_”是用户身份字段内部的分隔符,其前后连接的字符共同组成一个完整的permission或denial字段。permission和denial的用户身份、数据、nonce字段均与request一致。如果request是数据访问,permission格式为:permit_read#hashid_version#blockid#nonce#signature。如果request是身份更新,permission格式为:permit_version#userid_version#blockid#nonce#signature。如果数据访问request中的用户主体不是合法用户,sever生成denial信息。如果request中的用户主体提供了最新版的hashid且该身份在用户列表中不存在,denial信息的格式为:ref_read#forbidden_hashid_userver#dataindex#nonce#signature。如果request中的用户主体使用的是过期版本的hashid,denial信息的格式为:ref_read#obsolete_hashid_userver#dataindex#nonce#signature。(5)client的数据访问在接收回复过程中,permission后跟随的数据是request中指定的加密过的datablocks。客户端程序会用程序内的密钥信息解密,给用户展示解密后的数据块。如果接受到的是带有obsolete字段的denial信息,程序会提示用户向server请求身份更新;如果接受到的是带有forbidden字段的denial信息,程序会提示无访问权限,然后自动退出。(6)client的身份更新。在接收回复过程中,permission后紧跟的数据是用request当中userid对应用户的公钥加密的最新版本hashid,clientjar使用用户私钥解密消息,得到格式为:userid#version#hashid,“#”是字段间的分隔符。程序验证解密获得的userid和clientjar中的userid是否一致,通过验证后,程序用收到的回复消息替换本地的userid文件。(7)查询数据访问。对应的request中,act的值为access。server的程序在request中提取目标文件名,然后查询该文件对应的attestation和denial记录。attestation中,act值为“read”的记录是成功的数据访问,denial中存储的是未被允许的数据访问请求的摘要。server的统计内容包括:文件被访问的次数,访问文件的用户总数,最后访问者,最后访问时间,被拒绝的文件访问次数,上次拒绝访问的时间。该统计内容由明文存储在accessreport文件中,发送给owner。通过以上内容,数据所有者可以掌握一个时间周期内数据被合法和非法使用的情况。(8)查询指定文件或用户行为。对应的request中,act的值为query。server的程序在request中提取目标文件名和目标用户名,在attestation中检索所有相关的记录,然后生成attest文件,发送给owner。owner的程序将此文件译为方便阅读的格式,包括:删除签名等验证信息,将用户的hashid转换为userid。根据本发明实施例提出的基于jar的云数据安全管理与审计装置,可以实现基于jar的数据访问控制、面向数据操作的日志生成、日志完整性维护以及基于日志的安全审计等功能,并通过jar的访问策略提供自动可靠的日志记录机制,确保数据访问将生成记录并保护数据免受密钥滥用攻击,有效地实现了记录的真实性和完整性,有效提高数据的安全性。在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。当前第1页12当前第1页12