一种透明的对象存储加解密方法、对象存储系统及介质与流程

文档序号:22506129发布日期:2020-10-13 09:44阅读:来源:国知局

技术特征:

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方法获取一次对象的元数据,然后把对象操作模块的自定义元数据取出来加入到请求报文中,然后再发送请求报文到对象存储系统;如果不需要刷新元数据,则直接将请求报文发送到对象存储系统;接收到对象存储系统的响应报文后,将对象操作模块的自定义元数据从响应报文中删除,然后将响应报文返回客户端;

对象请求方法是delete时的处理步骤,具体包括:直接将请求报文转发到对象存储系统,并将对象存储系统的响应报文返回客户端。

7.根据权利要求1所述的透明的对象存储加解密方法,其特征在于,步骤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的数据块头部到对象数据域;

a9)将明文数据计算的明文md5值写入到对象数据域尾部。

8.根据权利要求7所述的透明的对象存储加解密方法,其特征在于,步骤2)中对象数据解密具体包括以下步骤:

b1)从对象密文数据第1个字节读取加密类型,使用该加密类型获取其对应的解密算法接口和密钥长度;

b2)从对象密文数据的密钥域读取64字节数据,再根据密钥长度截取密钥;

b3)读取数据块头部,从中获取后续加密数据块包含明文数据长度,如果长度为4kb,读取4kb长度的数据块,使用获取的密钥和解密接口对加密数据块进行解密,然后将解密后的数据写入明文数据;如果长度小于4kb,取加密数据块中明文数据长度整除64的长度部分的密文数据使用密钥和解密算法接口对数据解密;如果明文数据长度不为64字节的整数倍,则再截取加密数据块中下一个64字节的密文数据,使用密钥和解密算法接口解密,然后取明文数据长度除64的余数n截取有效数据,再将解密后的数据写入明文数据;再丢弃加密数据块最后面的n个字节数据;

b4)循环执行步骤b3)直到读取数据块头部获取的明文数据长度为0,对象数据解密完成。

9.一种对象存储系统,其特征在于,所述对象存储系统前端设有加密服务层,所述加密服务层包括web框架模块、配置管理模块、日志模块、加密模块、密钥管理模块和对象操作模块,其中:

所述web框架模块用于接收客户端发起的对象存储请求,依次将请求报文解析、路由分解、参数解析后,判断请求是否为对象操作请求;

所述配置管理模块用于配置请求方法为put时请求报文对应的加密类型、日志等级、web框架模块的监听端口;

所述日志模块用于记录对象明文数据加密和对象密文数据解密的日志;

所述加密模块用于对象明文数据加密处理和对象密文数据解密处理;

所述密钥管理模块用于根据加密类型生成密钥,并获取加密接口或解密算法接口;

所述对象操作模块用于提供与请求方法的类型一一对应的接口。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有被编程或配置以执行权利要求1~8任一所述的透明的对象存储加解密方法的计算机程序。


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

技术研发人员:苏军;卿兵;刘振宇;刘文清;申锟铠;杨涛
受保护的技术使用者:湖南麒麟信安科技有限公司
技术研发日:2020.05.25
技术公布日:2020.10.13
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1