一种透明的对象存储加解密方法、对象存储系统及介质技术方案

技术编号:25921222 阅读:26 留言:0更新日期:2020-10-13 10:41
本发明专利技术公开了一种透明的对象存储加解密方法、对象存储系统及介质,本发明专利技术的方法包括:加密服务层的WEB框架模块接收客户端发起的对象存储请求后判断请求是否为对象操作请求,是则将请求根据对象请求方法的类型进行处理,将处理后的数据重新组织请求报文并发送到对象存储系统,等待对象存储系统的响应报文,收到响应报文后处理响应报文,将处理后数据重新组织响应报文返回客户端,如果请求报文包含对象明文数据,进行对象数据加密处理,如果响应报文包含对象密文数据,进行对象数据解密处理;否则将请求路由到反向代理,由反向代理转发请求到对象存储系统,并将响应报文返回客户端。本发明专利技术实现了客户端到对象存储系统的透明加解密。

【技术实现步骤摘要】
一种透明的对象存储加解密方法、对象存储系统及介质
本专利技术涉及计算机加密领域,尤其涉及一种透明的对象存储加解密方法、对象存储系统及介质。
技术介绍
存储局域网(SAN)和网络附加存储(NAS)是目前两种主流网络存储架构,对象存储(Object-basedStorage)是一种新的网络存储架构。对象存储综合了SAN和NAS的优点,同时具有SAN的高速直接访问和NAS的分布式数据共享等优势,提供了具有高性能、高可靠性、跨平台的数据共享的存储体系结构。随着对象存储的广泛应用,数据的安全性成为一个不可忽视的问题,海量的数据以明文的形式存储在存储服务器,传统的防火墙、反病毒软件、入侵检测等信息安全防护措施已难以独立应对数据安全问题,加强数据自身安全已迫在眉睫。Swift是构建在标准硬件存储基础设施之上,通过软件实现的支持多租户模式、容器和对象读写操作的对象存储。Swift采用层次数据模型,共设三层逻辑结构:Account/Container/Object(即账户/容器/对象),每层节点数均没有限制,可以任意扩展。这里的账户和个人账户不是一个概念,可理解为租户,用来做顶层的隔离机制,可以被多个个人账户所共同使用;容器代表封装一组对象,类似文件夹或目录;叶子节点代表对象,由元数据和内容两部分组成。SwiftAPI是一组基于HTTP的REST服务接口,对账户、容器和对象进行操作。通过SwiftAPI可以对接不同的后端对象存储系统。
技术实现思路
本专利技术要解决的技术问题就在于:针对现有技术存在的技术问题,本专利技术提供一种透明的对象存储加解密方法、对象存储系统及介质,基于SwiftAPI实现了客户端到对象存储系统的透明加解密,客户端不感知加解密过程,解决了对象存储中数据的安全性问题,适用于所有实现了SwiftAPI的对象存储系统。为解决上述技术问题,本专利技术提出的技术方案为:一种透明的对象存储加解密方法,对象存储系统前端的加密服务层对客户端请求的处理步骤包括:1)通过WEB框架模块接收客户端发起的对象存储请求,依次将请求报文解析、路由分解、参数解析后,判断请求是否为对象操作请求,是则执行步骤2),否则执行步骤3);2)将请求根据对象请求方法的类型进行处理,将处理后的数据重新组织请求报文并通过SwiftAPI发送到对象存储系统,等待对象存储系统的响应报文,收到对象存储系统的响应报文后处理响应报文,最后将处理后数据重新组织响应报文并通过SwiftAPI返回客户端,如果请求报文包含对象明文数据,进行对象数据加密处理,如果响应报文包含对象密文数据,进行对象数据解密处理;3)将请求路由到反向代理,由反向代理转发请求到对象存储系统,并将响应报文返回客户端。进一步的,步骤2)包括对象请求方法是PUT时的处理步骤,具体包括:读取加密类型,再通过加密类型获取密钥和加密接口,读取对象明文数据,通过明文数据计算明文数据长度和明文MD5值,并将明文数据长度、明文MD5值和密钥作为对象操作模块的自定义元数据,然后使用获取的加密接口对请求报文的对象明文数据加密处理为对象密文数据,并将对象操作模块的自定义元数据和加密后的对象密文数据重新组织请求报文发送到对象存储系统,接收到对象存储系统的响应报文后,再对响应报文元数据中的Etag替换为明文MD5值,长度替换为明文数据长度,最后将处理后的响应报文返回客户端。进一步的,步骤2)包括对象请求方法是GET时的处理步骤,具体包括:首先将请求报文转发到对象存储系统,然后接收对象存储系统的响应报文,将响应报文中对象操作模块的自定义元数据取出,将其中的明文MD5写入响应报文头的ETag域,将其中的明文数据长度写入响应报文头中的长度域,然后删除响应报文中对象操作模块的自定义元数据;从响应报文相关的数据结构域中获取加密类型和密钥,将对象密文数据解密处理,最后将处理后的报文返回客户端。进一步的,步骤2)包括对象请求方法是HEAD时的处理步骤,具体包括:先将请求报文发送到对象存储系统,接收到响应报文后,通过响应报文元数据判断对象是否为动态大对象,是则使用容器的GET接口和对象前缀获取动态大对象的所有分段对象信息,再逐个获取所有分段对象的元数据,根据对象操作模块的自定义元数据中的明文数据长度和明文Etag计算出动态大对象的明文数据长度和明文Etag,然后将计算出的动态大对象的明文数据长度和明文Etag写入返回报文的长度和Etag域;否则直接将对象操作模块的自定义元数据中的明文数据长度和明文MD5值写入返回报文的长度和Etag域;最后将处理后的响应报文返回客户端。进一步的,步骤2)包括对象请求方法是POST时的处理步骤,具体包括:先发送一个HEAD请求对对象存储系统获取请求对象的元数据,将获取到的对象操作模块的自定义元数据加入到原请求报文中,再将请求报文发送到对象存储系统,并将响应报文返回客户端。进一步的,步骤2)包括:对象请求方法是COPY时的处理步骤,具体包括:先从请求报文元数据判断是否需要刷新元数据,如果需要刷新元数据,则先使用HEAD方法获取一次对象的元数据,然后把对象操作模块的自定义元数据取出来加入到请求报文中,然后再发送请求报文到对象存储系统;如果不需要刷新元数据,则直接将请求报文发送到对象存储系统;接收到对象存储系统的响应报文后,将对象操作请求处理模块的自定义元数据从响应报文中删除,然后将响应报文返回客户端;对象请求方法是DELETE时的处理步骤,具体包括:直接将请求报文转发到对象存储系统,并将对象存储系统的响应报文返回客户端。进一步的,步骤2)中对象数据加密处理具体包括以下步骤:A1)通过配置管理模块读取加密类型;A2)根据加密类型生成密钥,并获取加密接口;A3)读取请求的对象数据到缓冲区,计算对象数据的长度和MD5值;A4)将对象的明文数据长度、明文数据计算的明文MD5值和生成的密钥写作为对象操作模块的自定义元数据写入请求报文头中;A5)将加密类型写入到对象数据域,将密钥按64字节长度写入对象密钥域,长度不足部分填充0;A6)使用密钥和加密接口对明文数据按4KB大小的块进行分块加密处理,在每个加密数据块前面写入一个4字节长度的数据块头部,所述数据块头部包括1个字节的加密类型、2个字节的后续加密数据块包含的明文数据长度和1个字节的保留字段,将数据块头部和加密数据块写入对象数据域;A7)循环执行步骤A6)直到剩余明文数据长度不足4KB,如果剩余明文数据长度是64字节的整数倍,使用密钥和加密接口对剩余明文数据作为一个数据块进行加密处理,在加密数据块前面写入数据块头部,然后将数据块头部和加密数据块写入对象数据域;如果剩余明文数据长度不是64字节的整数倍,则先将整除64的长度部分的数据进行加密,然后将剩余的n个字节的数据填充至64字节再进行加密,n为剩余明文数据长度除64的余数,将加密后的数据写入对象数据域,之后再填充n个字节到对象数据域;A8)写入一个长度域为0的本文档来自技高网...

【技术保护点】
1.一种透明的对象存储加解密方法,其特征在于,对象存储系统前端的加密服务层对客户端请求的处理步骤包括:/n1)通过WEB框架模块接收客户端发起的对象存储请求,依次将请求报文解析、路由分解、参数解析后,判断请求是否为对象操作请求,是则执行步骤2),否则执行步骤3);/n2)将请求根据对象请求方法的类型进行处理,将处理后的数据重新组织请求报文并通过Swift API发送到对象存储系统,等待对象存储系统的响应报文,收到对象存储系统的响应报文后处理响应报文,最后将处理后数据重新组织响应报文并通过Swift API返回客户端,如果请求报文包含对象明文数据,进行对象数据加密处理,如果响应报文包含对象密文数据,进行对象数据解密处理;/n3)将请求路由到反向代理,由反向代理转发请求到对象存储系统,并将响应报文返回客户端。/n

【技术特征摘要】
1.一种透明的对象存储加解密方法,其特征在于,对象存储系统前端的加密服务层对客户端请求的处理步骤包括:
1)通过WEB框架模块接收客户端发起的对象存储请求,依次将请求报文解析、路由分解、参数解析后,判断请求是否为对象操作请求,是则执行步骤2),否则执行步骤3);
2)将请求根据对象请求方法的类型进行处理,将处理后的数据重新组织请求报文并通过SwiftAPI发送到对象存储系统,等待对象存储系统的响应报文,收到对象存储系统的响应报文后处理响应报文,最后将处理后数据重新组织响应报文并通过SwiftAPI返回客户端,如果请求报文包含对象明文数据,进行对象数据加密处理,如果响应报文包含对象密文数据,进行对象数据解密处理;
3)将请求路由到反向代理,由反向代理转发请求到对象存储系统,并将响应报文返回客户端。


2.根据权利要求1所述的透明的对象存储加解密方法,其特征在于,步骤2)包括:
对象请求方法是PUT时的处理步骤,具体包括:读取加密类型,再通过加密类型获取密钥和加密接口,读取对象明文数据,通过明文数据计算明文数据长度和明文MD5值,并将明文数据长度、明文MD5值和密钥作为对象操作模块的自定义元数据,然后使用获取的加密接口对请求报文的对象明文数据加密处理为对象密文数据,并将对象操作模块的自定义元数据和加密后的对象密文数据重新组织请求报文发送到对象存储系统,接收到对象存储系统的响应报文后,再对响应报文元数据中的Etag替换为明文MD5值,长度替换为明文数据长度,最后将处理后的响应报文返回客户端。


3.根据权利要求2所述的透明的对象存储加解密方法,其特征在于,步骤2)包括对象请求方法是GET时的处理步骤,具体包括:首先将请求报文转发到对象存储系统,然后接收对象存储系统的响应报文,将响应报文中对象操作模块的自定义元数据取出,将其中的明文MD5值写入响应报文头的ETag域,将其中的明文数据长度写入响应报文头中的长度域,然后删除响应报文中对象操作模块的自定义元数据;从响应报文相关的数据结构域中获取加密类型和密钥,将对象密文数据解密处理,最后将处理后的报文返回客户端。


4.根据权利要求2所述的透明的对象存储加解密方法,其特征在于,步骤2)包括对象请求方法是HEAD时的处理步骤,具体包括:先将请求报文发送到对象存储系统,接收到响应报文后,通过响应报文元数据判断对象是否为动态大对象,是则使用容器的GET接口和对象前缀获取动态大对象的所有分段对象信息,再逐个获取所有分段对象的元数据,根据对象操作模块的自定义元数据中的明文数据长度和明文MD5值计算出动态大对象的明文数据长度和明文Etag,然后将计算出的动态大对象的明文数据长度和明文Etag写入返回报文的长度和Etag域;否则直接将对象操作模块的自定义元数据中的明文数据长度和明文MD5值写入返回报文的长度和Etag域;最后将处理后的响应报文返回客户端。


5.根据权利要求2所述的透明的对象存储加解密方法,其特征在于,步骤2)包括对象请求方法是POST时的处理步骤,具体包括:先发送一个HEAD请求对对象存储系统获取请求对象的元数据,将获取到的对象操作模块的自定义元数据加入到原请求报文中,再将请求报文发送到对象存储系统,并将响应报文返回客户端。


6.根据权利要求2所述的透明的对象存储加解密方法,其特征在于,步骤2)包括:
对象请求方法是COPY时的处理步骤,具体包括:先从请求报文元数据判断是否需要刷新元数据,如果需要刷新元数据,则先使用HEAD方法获取一次对象的元数据,然后把对象操作模块的自定义元数据取出来加入到请求报文中,然后再发送请求报文到对象存储系统;如果不需要刷新元数据,则直接将请求报文发送到对象存储系统;接收到对象存储系统的响应报文后,将对象操作模块的自定义元数据从响应报文中删除,然后将响应报文返回客户端...

【专利技术属性】
技术研发人员:苏军卿兵刘振宇刘文清申锟铠杨涛
申请(专利权)人:湖南麒麟信安科技有限公司
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1