CN111770135B - 一种透明的对象存储加解密方法、对象存储系统及介质 - Google Patents
一种透明的对象存储加解密方法、对象存储系统及介质 Download PDFInfo
- Publication number
- CN111770135B CN111770135B CN202010448271.9A CN202010448271A CN111770135B CN 111770135 B CN111770135 B CN 111770135B CN 202010448271 A CN202010448271 A CN 202010448271A CN 111770135 B CN111770135 B CN 111770135B
- Authority
- CN
- China
- Prior art keywords
- data
- length
- plaintext
- encryption
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
- H04L63/0464—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload using hop-by-hop encryption, i.e. wherein an intermediate entity decrypts the information and re-encrypts it before forwarding it
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种透明的对象存储加解密方法、对象存储系统及介质,本发明的方法包括:加密服务层的WEB框架模块接收客户端发起的对象存储请求后判断请求是否为对象操作请求,是则将请求根据对象请求方法的类型进行处理,将处理后的数据重新组织请求报文并发送到对象存储系统,等待对象存储系统的响应报文,收到响应报文后处理响应报文,将处理后数据重新组织响应报文返回客户端,如果请求报文包含对象明文数据,进行对象数据加密处理,如果响应报文包含对象密文数据,进行对象数据解密处理;否则将请求路由到反向代理,由反向代理转发请求到对象存储系统,并将响应报文返回客户端。本发明实现了客户端到对象存储系统的透明加解密。
Description
技术领域
本发明涉及计算机加密领域,尤其涉及一种透明的对象存储加解密方法、对象存储系统及介质。
背景技术
存储局域网(SAN)和网络附加存储(NAS)是目前两种主流网络存储架构,对象存储(Object-based Storage)是一种新的网络存储架构。对象存储综合了SAN和NAS的优点,同时具有SAN的高速直接访问和NAS的分布式数据共享等优势,提供了具有高性能、高可靠性、跨平台的数据共享的存储体系结构。随着对象存储的广泛应用,数据的安全性成为一个不可忽视的问题,海量的数据以明文的形式存储在存储服务器,传统的防火墙、反病毒软件、入侵检测等信息安全防护措施已难以独立应对数据安全问题,加强数据自身安全已迫在眉睫。
Swift是构建在标准硬件存储基础设施之上,通过软件实现的支持多租户模式、容器和对象读写操作的对象存储。
Swift 采用层次数据模型,共设三层逻辑结构:Account/Container/Object(即账户/容器/对象),每层节点数均没有限制,可以任意扩展。这里的账户和个人账户不是一个概念,可理解为租户,用来做顶层的隔离机制,可以被多个个人账户所共同使用;容器代表封装一组对象,类似文件夹或目录;叶子节点代表对象,由元数据和内容两部分组成。
Swift API是一组基于HTTP的REST服务接口,对账户、容器和对象进行操作。通过Swift API可以对接不同的后端对象存储系统。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种透明的对象存储加解密方法、对象存储系统及介质,基于Swift API实现了客户端到对象存储系统的透明加解密,客户端不感知加解密过程,解决了对象存储中数据的安全性问题,适用于所有实现了Swift API的对象存储系统。
为解决上述技术问题,本发明提出的技术方案为:
一种透明的对象存储加解密方法,对象存储系统前端的加密服务层对客户端请求的处理步骤包括:
1)通过WEB框架模块接收客户端发起的对象存储请求,依次将请求报文解析、路由分解、参数解析后,判断请求是否为对象操作请求,是则执行步骤2),否则执行步骤3);
2)将请求根据对象请求方法的类型进行处理,将处理后的数据重新组织请求报文并通过Swift API发送到对象存储系统,等待对象存储系统的响应报文,收到对象存储系统的响应报文后处理响应报文,最后将处理后数据重新组织响应报文并通过Swift API返回客户端,如果请求报文包含对象明文数据,进行对象数据加密处理,如果响应报文包含对象密文数据,进行对象数据解密处理;
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的数据块头部到对象数据域;
A9)将明文数据计算的明文MD5值写入到对象数据域尾部。
进一步的,步骤2)中对象数据解密具体包括以下步骤:
B1)从对象密文数据第1个字节读取加密类型,使用该加密类型获取其对应的解密算法接口和密钥长度;
B2)从对象密文数据的密钥域读取64字节数据,再根据密钥长度截取密钥;
B3)读取数据块头部,从中获取后续加密数据块包含明文数据长度,如果长度为4KB,读取4KB长度的数据块,使用获取的密钥和解密接口对加密数据块进行解密,然后将解密后的数据写入明文数据;如果长度小于4KB,取加密数据块中明文数据长度整除64的长度部分的密文数据使用密钥和解密算法接口对数据解密;如果明文数据长度不为64字节的整数倍,则再截取加密数据块中下一个64字节的密文数据,使用密钥和解密算法接口解密,然后取明文数据的长度除64的余数n截取有效数据,再将解密后的数据写入明文数据;再丢弃加密数据块最后面的n个字节数据;
B4)循环执行步骤B3)直到读取数据块头部获取的明文数据长度为0,对象数据解密完成。
本发明还提供一种对象存储系统,所述对象存储系统前端设有加密服务层,所述加密服务层包括WEB框架模块、配置管理模块、日志模块、加密模块、密钥管理模块和对象操作模块,其中:
所述WEB框架模块用于接收客户端发起的对象存储请求,依次将请求报文解析、路由分解、参数解析后,判断请求是否为对象操作请求;
所述配置管理模块用于配置请求方法为PUT时请求报文对应的加密类型、日志等级、WEB框架模块的监听端口;
所述日志模块用于记录对象明文数据加密和对象密文数据解密的日志;
所述加密模块用于对象明文数据加密处理和对象密文数据解密处理;
所述密钥管理模块用于根据加密类型生成密钥,并获取加密接口或解密算法接口;
所述对象操作模块用于提供与请求方法的类型一一对应的接口。
本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有被编程或配置以执行上述的透明的对象存储加解密方法的计算机程序。
与现有技术相比,本发明的优点在于:
本发明通过在对象存储系统前端增加一个加密服务层,来实现对象数据的加解密,加密服务层接收客户端发起的对象存储操作请求,将请求报文解析、路由分解、参数解析后,分发到对应的对象操作模块接口处理,通过配置管理模块读取加密配置选项,根据配置选项中的加密类型对请求报文包含的对象明文数据进行加密处理以及元数据转换处理,将加密处理后的数据重新组织请求报文,通过Swift API发送到对象存储系统,并等待对象存储系统的响应报文,收到对象存储系统的响应报文后,再对响应报文中的对象密文数据解密处理以及元数据转换处理,再将响应报文通过Swift API返回给客户端,本实施例基于Swift API实现了客户端到对象存储系统的透明加解密,客户端不感知加密和解密过程,解决了对象存储中数据的安全性问题,适用于所有实现了Swift API的对象存储系统。
附图说明
图1为本发明实施例的结构示意图。
图2为本发明实施例的加密数据结构示意图。
图3为本发明实施例剩余明文数据长度不是64字节的整数倍时加密填充结构示意图。
图4为本发明实施例的对象数据加密流程图。
图5为本发明实施例的对象数据解密流程图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图1所示,本发明提供一种对象存储系统,在对象存储系统前端设有加密服务层,加密服务层包括WEB框架模块、配置管理模块、日志模块、加密模块、密钥管理模块和对象操作模块,其中:
WEB框架模块用于接收客户端发起的对象存储请求,依次将请求报文解析、路由分解、参数解析后,判断请求是否为对象操作请求;
配置管理模块用于配置请求方法为PUT时请求报文对应的加密类型、日志等级、WEB框架模块的监听端口;
日志模块用于记录对象明文数据加密和对象密文数据解密的日志;
加密模块用于对象明文数据加密处理和对象密文数据解密处理;
密钥管理模块用于根据加密类型生成密钥,并获取加密接口或解密算法接口;
对象操作模块用于提供与请求方法的类型一一对应的接口。
本发明通过在对象存储系统前端增加一个加密服务层,来实现对象数据的加解密,加密服务层接收客户端发起的对象存储操作请求,将请求报文解析、路由分解、参数解析后,分发到对应的对象操作模块接口处理,通过配置管理模块读取加密配置选项,根据配置选项中的加密类型对请求报文包含的对象明文数据进行加密处理以及元数据转换处理,将加密处理后的数据重新组织请求报文,通过Swift API发送到对象存储系统,并等待对象存储系统的响应报文,收到对象存储系统的响应报文后,再对响应报文中的对象密文数据解密处理以及元数据转换处理,再将响应报文通过Swift API返回给客户端,本实施例基于Swift API实现了客户端到对象存储系统的透明加解密,客户端不感知加密和解密过程,解决了对象存储中数据的安全性问题,适用于所有实现了Swift API的对象存储系统。
本实施例中根据上述对象存储系统提出一种透明的对象存储加解密方法,对象存储系统前端的加密服务层对客户端请求的处理步骤包括:
1)通过WEB框架模块接收客户端发起的对象存储请求,依次将请求报文解析、路由分解、参数解析后,判断请求是否为对象操作请求,是则执行步骤2),否则执行步骤3);
2)将请求根据对象请求方法的类型进行处理,将处理后的数据重新组织请求报文并通过Swift API发送到对象存储系统,等待对象存储系统的响应报文,收到对象存储系统的响应报文后处理响应报文,最后将处理后数据重新组织响应报文并通过Swift API返回客户端,如果请求报文包含对象明文数据,进行对象数据加密处理,如果响应报文包含对象密文数据,进行对象数据解密处理;
3)将请求路由到反向代理,由反向代理转发请求到对象存储系统,并将响应报文返回客户端。
本实施例中,对象请求方法类型包括PUT方法、GET方法、HEAD方法、POST方法、COPY方法和DELETE方法,步骤2)具体包括:
对象请求方法是PUT时的处理步骤,具体包括:首先通过配置管理模块读取加密类型,再通过加密类型获取密钥和加密接口,读取对象明文数据,通过明文数据计算明文数据长度和明文MD5值,并将明文数据长度、明文MD5值和密钥作为对象操作模块的自定义元数据,然后使用获取的加密接口对请求报文的对象明文数据加密处理,并将对象操作模块的自定义元数据和加密后的数据重新组织请求报文发送到对象存储系统,接收到对象存储系统的响应报文后,再对响应报文元数据中的Etag替换为明文MD5值,长度替换为明文数据长度,最后将处理后的响应报文返回客户端;
对象请求方法是GET时的处理步骤,具体包括:首先将请求报文转发到对象存储系统,然后接收对象存储系统的响应报文,将响应报文中对象操作模块的自定义元数据取出,并将其中的明文MD5值写入响应包报文头的Etag域,将其中的明文数据长度写入响应报文头中的长度域,然后删除响应报文中对象操作模块的自定义元数据;从响应报文相关的数据结构域中获取加密类型和密钥,将对象密文数据解密处理,最后将处理后的报文返回客户端;
对象请求方法是HEAD时的处理步骤,具体包括:先将请求报文发送到对象存储系统,接收到响应报文后,通过响应报文元数据判断对象是否为动态大对象,是则使用容器(Container)的GET接口和对象前缀获取动态大对象的所有分段对象信息(对象明文、密文长度、密文Etag等),再逐个获取所有分段对象的元数据,根据对象操作模块的自定义元数据中的明文数据长度和明文MD5值计算出动态大对象的明文数据长度和明文Etag,然后将计算出的动态大对象的明文数据长度和明文Etag写入返回报文的长度和Etag域;否则直接将对象操作模块的自定义元数据中的明文数据长度和明文MD5值写入返回报文的长度和Etag域;最后将处理后的响应报文返回客户端;
对象请求方法是POST时的处理步骤,具体包括:先发送一个HEAD请求对对象存储系统获取请求对象的元数据,将获取到的对象操作模块的自定义元数据加入到原请求报文中,再将请求报文发送到对象存储系统,并将响应报文返回客户端;
对象请求方法是COPY时的处理步骤,具体包括:先从请求报文元数据判断是否需要刷新元数据,如果需要刷新元数据,则先使用HEAD方法获取一次对象的元数据,然后把对象操作模块的自定义元数据取出来加入到请求报文中,然后再发送请求报文到对象存储系统;如果不需要刷新元数据,则直接将请求报文发送到对象存储系统;接收到对象存储系统的响应报文后,将对象操作模块的自定义元数据从响应报文中删除然后将响应报文返回客户端;
对象请求方法是DELETE时的处理步骤,具体包括:直接将请求报文转发到对象存储系统,并将对象存储系统的响应报文返回客户端。
如图4所示,本实施例中,对象数据加密处理具体包括以下步骤:
A1)从配置管理模块读取加密类型;
A2)根据加密类型通过密钥管理模块和加密模块生成密钥,并获取加密接口;
A3)读取请求的对象数据到缓冲区,计算对象数据的长度和MD5值;
A4)将对象的明文数据长度、明文数据计算的明文MD5值和生成的密钥写作为对象操作模块的自定义元数据写入请求报文头中;
A5)将加密类型写入到对象数据域,将密钥按64字节长度写入对象密钥域,长度不足部分填充0;
A6)使用密钥和加密接口对明文数据按4KB大小的块进行分块加密处理,在每个加密数据块前面写入一个4字节的数据块头部,其结构如图2中数据块头部结构所示,第1个字节为加密类型、第2和第3个字节为后续加密数据块包含的明文数据长度,第4个字节作为保留字段暂未使用,将数据块头部和加密后的数据块写入对象数据域;
A7)循环执行步骤A6)直到剩余明文数据长度不足4KB,如果剩余明文数据长度是64字节的整数倍,使用密钥和加密接口对剩余明文数据作为一个数据块进行加密处理,在加密数据块前面写入数据块头部,然后将数据块头部和加密数据块写入对象数据域;如果剩余明文数据长度不是64字节的整数倍(设数据长度除64余n),则先将整除64的长度部分的数据进行加密,然后将剩余的n个字节数据填充至64字节再进行加密,n为剩余明文数据长度除64的余数,将加密后的数据写入对象数据域,之后再填充n个字节到对象数据域,填充结构如图3所示;
A8)如图2所示,写入一个长度域为0的数据块头部到对象数据域;
A9)如图2所示,将明文数据计算的明文MD5值写入到对象数据域尾部。
如图5所示,本实施例中对象数据解密具体包括以下步骤:
B1)从对象密文数据第1个字节读取加密类型,使用该加密类型通过加密模块和密钥管理获取其对应的解密算法接口和密钥长度;
B2)从对象密文数据的密钥域读取64字节数据,再根据密钥长度截取密钥;
B3)读取数据块头部,从中获取后续加密数据块包含明文数据长度,如果长度为4KB,读取4KB长度的数据块,使用获取的密钥和解密接口对加密数据块进行解密,然后将解密后的数据写入明文数据;如果长度小于4KB,取加密数据块中明文数据长度整除64的长度部分的密文数据使用密钥和解密接口对数据解密;如果明文数据长度不为64字节的整数倍,则再截取加密数据块中下一个64字节的密文数据,使用密钥和解密算法接口解密,然后取明文数据长度除64的余数n截取有效数据,再将解密后的数据写入明文数据;再丢弃加密数据块最后面的n个字节数据(加密时最后填充的数据);
B4)循环执行步骤B3)直到读取数据块头部获取的明文数据长度为0,对象数据解密完成,最后读取数据尾部的明文MD5。
本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有被编程或配置以执行上述的透明的对象存储加解密方法的计算机程序。
综上所述,本实施例公开了一种透明的对象存储加解密方法及对象存储系统,可以实现客户端到对象存储系统数据的透明加解密,可提高数据的安全性。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (9)
1.一种透明的对象存储加解密方法,其特征在于,对象存储系统前端的加密服务层对客户端请求的处理步骤包括:
1)通过WEB框架模块接收客户端发起的对象存储请求,依次将请求报文解析、路由分解、参数解析后,判断请求是否为对象操作请求,是则执行步骤2),否则执行步骤3);
2)将请求根据对象请求方法的类型进行处理,将处理后的数据重新组织请求报文并通过Swift API发送到对象存储系统,等待对象存储系统的响应报文,收到对象存储系统的响应报文后处理响应报文,最后将处理后数据重新组织响应报文并通过Swift API返回客户端,如果请求报文包含对象明文数据,进行对象数据加密处理,如果响应报文包含对象密文数据,进行对象数据解密处理;
3)将请求路由到反向代理,由反向代理转发请求到对象存储系统,并将响应报文返回客户端;
步骤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值写入到对象数据域尾部。
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)中对象数据解密具体包括以下步骤:
B1)从对象密文数据第1个字节读取加密类型,使用该加密类型获取其对应的解密算法接口和密钥长度;
B2)从对象密文数据的密钥域读取64字节数据,再根据密钥长度截取密钥;
B3)读取数据块头部,从中获取后续加密数据块包含明文数据长度,如果长度为4KB,读取4KB长度的数据块,使用获取的密钥和解密接口对加密数据块进行解密,然后将解密后的数据写入明文数据;如果长度小于4KB,取加密数据块中明文数据长度整除64的长度部分的密文数据使用密钥和解密算法接口对数据解密;如果明文数据长度不为64字节的整数倍,则再截取加密数据块中下一个64字节的密文数据,使用密钥和解密算法接口解密,然后取明文数据长度除64的余数n截取有效数据,再将解密后的数据写入明文数据;再丢弃加密数据块最后面的n个字节数据;
B4)循环执行步骤B3)直到读取数据块头部获取的明文数据长度为0,对象数据解密完成。
8.一种对象存储系统,其特征在于,所述对象存储系统前端设有加密服务层,所述加密服务层包括WEB框架模块、配置管理模块、日志模块、加密模块、密钥管理模块和对象操作模块,其中:
所述WEB框架模块用于接收客户端发起的对象存储请求,依次将请求报文解析、路由分解、参数解析后,判断请求是否为对象操作请求;
所述配置管理模块用于配置请求方法为PUT时请求报文对应的加密类型、日志等级、WEB框架模块的监听端口;
所述日志模块用于记录对象明文数据加密和对象密文数据解密的日志;
所述加密模块用于对象明文数据加密处理和对象密文数据解密处理;
所述密钥管理模块用于根据加密类型生成密钥,并获取加密接口或解密算法接口;
所述对象操作模块用于提供与请求方法的类型一一对应的接口;
所述加密模块在对象数据加密处理时执行以下步骤:
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值写入到对象数据域尾部。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有被编程或配置以执行权利要求1~7任一所述的透明的对象存储加解密方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010448271.9A CN111770135B (zh) | 2020-05-25 | 2020-05-25 | 一种透明的对象存储加解密方法、对象存储系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010448271.9A CN111770135B (zh) | 2020-05-25 | 2020-05-25 | 一种透明的对象存储加解密方法、对象存储系统及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111770135A CN111770135A (zh) | 2020-10-13 |
CN111770135B true CN111770135B (zh) | 2023-03-14 |
Family
ID=72720701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010448271.9A Active CN111770135B (zh) | 2020-05-25 | 2020-05-25 | 一种透明的对象存储加解密方法、对象存储系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111770135B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112487445B (zh) * | 2020-11-25 | 2024-05-14 | 湖南麒麟信安科技股份有限公司 | 一种文件型门卫式存储加密功能的Hadoop系统及其应用方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102377566A (zh) * | 2010-08-11 | 2012-03-14 | 北京融通高科科技发展有限公司 | 一种电表数据的安全处理装置及系统 |
CN102402670A (zh) * | 2011-08-03 | 2012-04-04 | 广东欧珀移动通信有限公司 | 一种文件加解密方法 |
CN104601681A (zh) * | 2014-12-31 | 2015-05-06 | 乐视网信息技术(北京)股份有限公司 | 一种文件分片的处理方法和装置 |
CN106970854A (zh) * | 2017-03-30 | 2017-07-21 | 无锡华云数据技术服务有限公司 | 一种对象存储系统中的逻辑处理服务器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7111322B2 (en) * | 2002-12-05 | 2006-09-19 | Canon Kabushiki Kaisha | Automatic generation of a new encryption key |
-
2020
- 2020-05-25 CN CN202010448271.9A patent/CN111770135B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102377566A (zh) * | 2010-08-11 | 2012-03-14 | 北京融通高科科技发展有限公司 | 一种电表数据的安全处理装置及系统 |
CN102402670A (zh) * | 2011-08-03 | 2012-04-04 | 广东欧珀移动通信有限公司 | 一种文件加解密方法 |
CN104601681A (zh) * | 2014-12-31 | 2015-05-06 | 乐视网信息技术(北京)股份有限公司 | 一种文件分片的处理方法和装置 |
CN106970854A (zh) * | 2017-03-30 | 2017-07-21 | 无锡华云数据技术服务有限公司 | 一种对象存储系统中的逻辑处理服务器 |
Non-Patent Citations (3)
Title |
---|
BLESS: Object level encryption security for object-based storage system;Dan Feng and Junjian Chen and Jingning Liu and Zhikun Wang;《Mathematical and computer modelling》;20121231;第55卷;全文 * |
GPON中的AES加密;阮景林等;《中国集成电路》;20071215(第12期);全文 * |
一个基于单密钥的对象存储安全机制设计;陆华等;《计算机工程》;20050705(第07期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111770135A (zh) | 2020-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7869597B2 (en) | Method and system for secure packet communication | |
Williams et al. | Single round access privacy on outsourced storage | |
US10581603B2 (en) | Method and system for secure delegated access to encrypted data in big data computing clusters | |
WO2021068726A1 (zh) | 一种区块链中的交易哈希值存储和搜索方法及装置 | |
US8230228B2 (en) | Support of tamper detection for a log of records | |
US8473740B2 (en) | Method and system for secured management of online XML document services through structure-preserving asymmetric encryption | |
US11153365B2 (en) | Transfer of files with arrays of strings in soap messages | |
CN108028834B (zh) | 用于安全文件传输的装置和方法 | |
US20200213109A1 (en) | Deduplication of client encrypted data | |
Virvilis et al. | Secure cloud storage: Available infrastructures and architectures review and evaluation | |
US20110153780A1 (en) | Apparatus and methods for handling network file operations over a fibre channel network | |
US11582025B2 (en) | Efficient deduplication using block-based convergent encryption | |
CN107609428A (zh) | 数据安全存储系统及方法 | |
CN111770135B (zh) | 一种透明的对象存储加解密方法、对象存储系统及介质 | |
US8880892B2 (en) | Secured embedded data encryption systems | |
CN116547644A (zh) | 检测可编程原子事务中的无限循环 | |
CN114611123B (zh) | 一种文件透明加解密方法和系统 | |
WO2018208786A1 (en) | Method and system for secure delegated access to encrypted data in big data computing clusters | |
CN111914265A (zh) | 面向高性能计算虚拟数据空间的轻量级数据安全保密方法 | |
Dhaya et al. | Cloud computing security protocol analysis with parity-based distributed file system | |
CN113568568B (zh) | 一种基于分布式存储的硬件加密方法、系统及装置 | |
WO2022072283A1 (en) | Efficient deduplication using block-based convergent encryption | |
US11329803B2 (en) | Redundancy controls in convergent encryption using dynamic salt values | |
CN111526167A (zh) | 一种应用于区块链的数据传输方法及装置 | |
Williams et al. | Access privacy and correctness on untrusted storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 4 / F, Qilin science and Technology Park, No.20, Qiyun Road, high tech Zone, Changsha City, Hunan Province, 410000 Applicant after: Hunan Qilin Xin'an Technology Co.,Ltd. Address before: 4 / F, Qilin science and Technology Park, No.20, Qiyun Road, high tech Zone, Changsha City, Hunan Province, 410000 Applicant before: HUNAN KYLIN XINAN TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |