CN113849835B - 一种密钥处理方法、装置、设备及存储介质 - Google Patents

一种密钥处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113849835B
CN113849835B CN202111128599.3A CN202111128599A CN113849835B CN 113849835 B CN113849835 B CN 113849835B CN 202111128599 A CN202111128599 A CN 202111128599A CN 113849835 B CN113849835 B CN 113849835B
Authority
CN
China
Prior art keywords
data
key
memory area
plaintext
function
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
Application number
CN202111128599.3A
Other languages
English (en)
Other versions
CN113849835A (zh
Inventor
廖源
季石磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Baidu Online Network Technology Beijing Co Ltd
Original Assignee
Baidu Online Network Technology Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Baidu Online Network Technology Beijing Co Ltd filed Critical Baidu Online Network Technology Beijing Co Ltd
Priority to CN202111128599.3A priority Critical patent/CN113849835B/zh
Publication of CN113849835A publication Critical patent/CN113849835A/zh
Application granted granted Critical
Publication of CN113849835B publication Critical patent/CN113849835B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本公开提供了一种密钥处理方法、装置、设备及存储介质,涉及云计算和云安全技术领域。具体实现方案为:响应于数据处理请求,获取第一数据密钥信息和目标用户的主密钥密文;在可信内存区,根据第一解封功能函数和第二解封功能函数,对主密钥密文进行解封,得到主密钥明文;第一解封功能函数基于内存安全语言编写,第二解封功能函数基于支持可信内存区的硬件的开发语言编写;在可信内存区,采用主密钥明文对第一数据密钥信息进行处理,得到第二数据密钥信息;第一数据密钥信息和第二数据密钥信息互为明文密文对;采用第一数据密钥信息或第二数据密钥信息对待处理数据进行处理。通过本公开提供的技术方案,能够保证主密钥信息的完整性和机密性。

Description

一种密钥处理方法、装置、设备及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及云计算和云安全技术领域,具体涉及一种密钥处理方法、装置、设备及存储介质。
背景技术
密钥管理服务(Key Management Service,简称KMS)是一种用于数据加解密、主密钥创建、分发、存储和管理的安全管理类服务。KMS中保存有用户密钥等敏感信息和隐私数据,是网络服务中的核心服务,若KMS存在安全风险,将会直接泄露用户隐私和敏感数据,造成难以估计的经济损失。
发明内容
本公开提供了一种密钥处理方法、装置、设备以及存储介质。
根据本公开的一方面,提供了一种密钥处理方法,该方法包括:
响应于数据处理请求,获取第一数据密钥信息和目标用户的主密钥密文;
在可信内存区,根据第一解封功能函数和第二解封功能函数,对主密钥密文进行解封,得到主密钥明文;第一解封功能函数基于内存安全语言编写,第二解封功能函数基于支持可信内存区的硬件的开发语言编写;
在可信内存区,采用主密钥明文对第一数据密钥信息进行处理,得到第二数据密钥信息;第一数据密钥信息和第二数据密钥信息互为明文密文对;
采用第一数据密钥信息或第二数据密钥信息对待处理数据进行处理。
根据本公开的另一方面,提供了一种电子设备,该电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开任一实施例所述的密钥处理方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行本公开任一实施例所述的密钥处理方法。
根据本公开的技术,能够保证主密钥信息的完整性和机密性。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开实施例提供的一种密钥处理方法的流程图;
图2是根据本公开实施例提供的另一种密钥处理方法的流程图;
图3是根据本公开实施例提供的又一种密钥处理方法的流程图;
图4A是根据本公开实施例提供的再一种密钥处理方法的流程图;
图4B是本公开实施例提供的一种主密钥部署架构图;
图4C是本公开实施例提供的又一种主密钥部署架构图;
图5是根据本公开实施例提供的一种密钥处理过程的结构框图;
图6是根据本公开实施例提供的又一种密钥处理过程的结构框图;
图7是根据本公开实施例提供的一种密钥处理装置的结构示意图;
图8是用来实现本公开实施例的密钥处理方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在介绍本公开的技术方案之前,首先对现有技术实现KMS的方案进行示例性说明。
目前基于软件实现的Hadoop KMS,主密钥以配置文件的方式明文存储在系统中,任何可以读取磁盘文件的恶意程序都有机会将主密钥泄露出去,即存在严重的安全隐患;而基于硬件密码设备(Hardware Security Machine,HSM)实现的KMS,将主密钥存在HSM中,虽然能够保护主密钥不易被泄露出去,但成本高且不易拓展。
为此,基于Intel SGX实现的KMS被提出。Intel SGX中提供了一种可信的隔离空间—enclave(安全飞地),基于enclave在一定程度上能够保障主密钥和用户隐私数据等的机密性和安全性。但是目前基于Intel SGX实现的KMS采用的是C++语言,而C++语言是内存不安全编程语言,使用时需要极其小心,否则可能在enclave中存在缓冲区溢出(Bufferoverflow)、返回导向编程(Return-oriented-programming)、释放后重用(use-after-free)、或数据争用(data racing)等问题,进而破坏SGX提供的安全保证,并损害enclave提供的完整性和机密性。例如,当enclave内代码存在内存损害漏洞(Memory corruptionvulnerabilities)时,会出现内存劫持来泄露主密钥等的情况。
基于此,本公开在现有Intel SGX的基础上,提供了一种全新的密钥处理方法,该方法可适用于如何进行密钥处理的情况,尤其适用于如何在数据加解密过程中,充分利用主密钥,且保证主密钥的完整性和安全性等的情况;其中,所谓主密钥即为根密钥,是用来加解密数据密钥的密钥。
该方法可以由密钥处理装置来执行,该装置可以采用软件和/或硬件的方式实现,并可集成于承载密钥处理功能的电子设备中,比如密钥管理端中。其中所谓密钥管理端为向用户提供主密钥创建、基于主密钥进行加解密、以及其他功能比如存储等的密钥管理客户端(即KMS客户端)或密钥管理服务端(即KMS服务端);可选的,KMS服务端和KMS客户端所在的用户终端设备中可配置有可信器件,如Intel SGX(Software Guard Extensions)。
进一步的,密钥管理端的执行环境可以包括可信内存区,且可信内存区由可信器件实现。比如,在SGX技术中,由CPU的特定指令在通用内存区(即不可信内存区)构造了一种称为enclave(安全飞地)的可信环境,即可信内存区。示例性的,若基于可信器件的支持能够使通用内存区完全变为可信内存区,则密钥管理端的执行环境为可信内存区;否则,密钥管理端的执行环境还可以包括通用内存区。
需要说明的是,本公开实施例的操作步骤若限定在可信内存区执行,则该步骤只能在可信内存区执行;若没有限定则既可以在可信内存区执行,还可以在通用内存区执行。
图1是根据本公开实施例提供的一种密钥处理方法的流程图,该方法由密钥处理端执行,包括:
S101,响应于数据处理请求,获取第一数据密钥信息和目标用户的主密钥密文。
本实施例中,所谓数据处理请求即为具有数据处理需求的一方(即数据需求方)向密钥管理端所发起的请求。可选的,数据处理请求可以为数据加密请求,或者可以为数据解密请求,或者还可以为数据加密和解密请求等。进一步的,若数据处理请求为数据加密请求,则数据需求方可以为S101中的目标用户;若数据处理请求为数据解密请求,则数据需求方可以为S101中的目标用户,也可以为其他用户。
示例性的,数据处理请求中可以包括主密钥密文,或者可以包括主密钥标识。其中,主密钥标识用于唯一标识主密钥,可以是主密钥ID。可选的,本实施例中主密钥密文与主密钥标识关联存储于密钥存储端中,进而可以根据主密钥标识从密钥存储端获取主密钥密文。所谓主密钥密文即为主密钥以密文的形式呈现。
进一步的,数据处理请求中还可以包括待处理数据。若数据处理请求为数据加密请求,则待处理数据为待加密数据;待加密数据可以为目标用户的各应用的账户密码、SSL证书、或者用户隐私等敏感数据。若数据处理请求为数据解密请求,则待处理数据为待解密数据。
示例性的,若数据处理请求为数据加密请求,则第一数据密钥信息可以为数据密钥明文。可选的,数据密钥明文可以是基于密钥随机生成算法随机生成的,例如可以根据密钥随机生成算法和数据处理请求的获取时间戳生成数据密钥明文。进一步的,数据密钥明文用于加密待加密数据;为了保证用户数据的安全性,本实施例中的数据密钥明文具有一次一密特性,即一个数据密钥明文只能被用一次,且数据密钥明文与待加密数据具有一一对应关系。
若数据处理请求为数据解密请求,则第一数据密钥信息可以为数据密钥密文。所谓数据密钥密文即为采用目标用户的主密钥明文对数据密钥明文进行加密得到。可选的,数据密钥密文可以从数据解密请求中获取,还可以从数据存储端获取。
一种可实施方式,本实施例中主密钥标识、加密数据(包括待解密数据)、以及第一数据密钥信息(此处为数据密钥密文)三者关联存储于数据存储端。进而数据需求方在具有获取某一数据需求的情况下,可以直接从数据存储端获取待解密数据、主密钥标识和数据密钥密文,并向密钥管理端发送包括待解密数据、主密钥标识和数据密钥密文的数据解密请求。或者数据需求方可以向密钥管理端发送包括存储地址或数据描述信息等的数据解密请求,由密钥管理端基于存储地址或数据描述信息,从数据存储端获取数据密钥密文、待解密数据和主密钥标识,并基于主密钥标识从密钥存储端获取主密钥密文。需要说明的是,本实施例中的数据存储端和密钥存储端可以是同一服务器,也可以是用于存储不同数据的不同服务器。
为保证主密钥和用户隐私数据等的安全,一可实施方式,在获取到数据处理请求之后,对数据需求方的身份进行验证,在验证成功的情况下,响应于数据处理请求,获取第一数据密钥信息和目标用户的主密钥密文。
S102,在可信内存区,根据第一解封功能函数和第二解封功能函数,对主密钥密文进行解封,得到主密钥明文。
本实施例中,第一解封功能函数基于内存安全语言编写。其中,所谓内存安全语言即为能够保证内存安全的一种编程语言,例如可以是Rust语言,或者Swift语言等。可选的,考虑到Rust语言具有运行速度快、内存资源消耗较低、且内存安全性高等特性,本实施例中内存安全语言优选为Rust语言。
第二解封功能函数基于支持可信内存区的硬件(即可信器件)的开发语言编写。例如,若可信内存区基于Intel SGX技术实现,则开发语言为C++语言。可选的,第一解封功能函数用于调用第二解封功能函数,第二解封功能函数用于对主密钥密文进行解封。
一种可实施方式,若密钥管理端的执行环境还包括通用内存区,则在获取目标用户的主密钥密文和第一数据密钥信息之后,可以在通用内存区,携带主密钥密文和第一数据密钥信息等,调用进入接口函数(即ecall函数),从通用内存区进行入可信内存区;进而在可信内存区,执行第一解封功能函数,并在执行第一解封功能函数的过程中,调用第二解封功能函数,对主密钥密文进行解封,以得到主密钥明文。所谓主密钥明文即为主密钥以明文的形式呈现。
进一步的,由于第一解封功能函数的编写语言,与第二解封功能函数的编写语言不同,进而可以配置第一解封功能函数和第二解封功能函数之间的连接桥梁,实现第一解封功能函数调用第二解封功能函数。
需要说明的是,本实施例中基于内存安全语言所编写的第一解封功能函数和基于开发语言所编写的第二解封功能函数,对主密钥密文进行解封,可避免解封过程中出现缓冲区溢出等问题,能够完整且安全地解封出主密钥明文,为后续基于主密钥明文的处理操作能够正常进行奠定了基础。
S103,在可信内存区,采用主密钥明文对第一数据密钥信息进行处理,得到第二数据密钥信息。
本实施例中,第一数据密钥信息和第二数据密钥信息互为明文密文对。也就是说,如果第一数据密钥信息为数据密钥明文,那么第二数据密钥信息为数据密钥密文;如果第一数据密钥信息为数据密钥密文,那么第二数据密钥信息为数据密钥明文。
可选的,若第一数据密钥信息为数据密钥明文,则在可信内存区,采用主密钥明文对第一数据密钥信息进行加密,得到第二数据密钥信息,即数据密钥密文;若第一数据密钥信息为数据密钥密文,则在可信内存区,采用主密钥明文对第一数据密钥信息进行解密,得到第二数据密钥信息,即数据密钥明文。
S104,采用第一数据密钥信息或第二数据密钥信息对待处理数据进行处理。
可选的,数据处理请求不同,对待处理数据进行处理的方式不同。具体的,若数据处理请求为数据解密请求,则采用第二数据密钥信息对待处理数据进行处理,即采用数据密钥明文对待解密数据进行解密。
若数据处理请求为数据加密请求,则采用第一数据密钥信息对待处理数据进行处理,即采用数据密钥明文对待加密数据进行加密。需要说明的是,在数据处理请求为数据加密请求的情况下,本实施例所提供的加密方式实质为信封加密方式,该种加密方式,极大地保证了用户隐私数据的机密性和安全性。
值得注意的是,本实施例中主密钥在可信内存区以外(比如在通用内存区内)以密文形式呈现,保证了主密钥的机密性,进而保证了用户隐私数据的机密性和安全性。
本公开实施例提供的技术方案,通过在可信内存区采用基于内存安全语言所编写的第一解封功能函数和基于开发语言所编写的第二解封功能函数,对主密钥密文进行解封,可避免解封过程中出现缓冲区溢出等问题,能够完整且安全地解封出主密钥明文,进而可得到正确的第二数据密钥信息,使得待处理数据的处理能够正常进行。此外,本实施例中主密钥在可信内存区以明文形式呈现,在可信内存区以外以密文形式呈现,也保证了主密钥的机密性,从而保证了用户隐私数据的机密性和安全性。
在上述实施例的基础上,若数据处理请求为数据加密请求,则在采用第一数据密钥信息对待处理数据进行处理之后,还可以对采用第一数据密钥信息对待处理数据进行处理得到的加密数据、第二数据密钥信息(此处为数据密钥密文)和主密钥标识进行关联存储。
具体的,密钥管理端可以向数据存储端发送包括加密数据、数据密钥密文和主密钥标识的数据存储请求,以使数据存储端将加密数据、数据密钥密文和主密钥标识关联存储,以供目标用户或其他用户查询和使用。
进一步的,密钥管理端在向数据存储端发送数据存储请求的同时,还可以将加密数据的数据描述信息携带在数据存储请求中,以便数据存储端在对加密数据、数据密钥密文和主密钥标识进行关联存储之后,对外公布加密数据的数据描述信息,以便用户能够直观了解到数据存储端所存储的数据内容。其中,数据描述信息用于描述加密数据的功能和用途等。
需要说明的是,上述实施例中,在可信内存区中所执行的操作均可通过执行相应的逻辑代码段实现。为保证可信内存区的完整性和机密性,以保证主密钥的完整性和机密性,作为本公开实施例的一种可选方式,在可信内存区中执行的操作基于内存安全语言实现。
进一步的,在密钥管理端的执行环境还包括通用内存区的情况下,在通用内存区中所执行的操作也可通过执行相应的逻辑代码段实现。例如,响应于数据处理请求,在通用内存区,执行相应的逻辑代码段以获取第一数据密钥信息和目标用户的主密钥密文等。
作为本公开实施例的又一种可选方式,在通用内存区和可信内存区中执行的操作均基于内存安全语言实现。可以理解的是,本实施例基于Intel SGX和内存安全语言实现KMS,不仅能够在可信内存区中保护主密钥的机密性和完整性,也能保证KMS服务(比如数据加解密等)是内存安全的。
在上述实施例的基础上,为保证安全性,又一种可选实施方式,在采用主密钥明文对第一数据密钥信息进行处理,得到第二数据密钥信息之后,对主密钥明文进行销毁。
具体可以是,在可信内存区,调用基于内存安全语言所编写的销毁功能函数(即Destroy函数),对主密钥明文进行销毁。可以理解的是,本实施例引入销毁主密钥明文的处理过程,进一步保证了主密钥的安全性。
图2是根据本公开实施例提供的另一种密钥处理方法的流程图,本实施例在上述实施例的基础上,进一步对如何“根据第一解封功能函数和第二解封功能函数,对主密钥密文进行解封”进行详细解释说明。如图2所示,本实施例提供的密钥处理方法可以包括:
S201,响应于数据处理请求,获取第一数据密钥信息和目标用户的主密钥密文。
S202,在可信内存区,执行第一解封功能函数,并在执行第一解封功能函数的过程中,通过连接工具,调用第二解封功能函数,对主密钥密文进行解封,得到主密钥明文。
其中,第一解封功能函数基于内存安全语言编写,第二解封功能函数基于支持可信内存区的硬件(即可信器件)的开发语言编写,连接工具用于连接内存安全语言和开发语言。可选的,本实施例中内存安全语言优选为Rust语言,开发语言为C++语言。
可选的,本实施例中的连接工具是Rust语言和C++语言之间安全连接的桥梁,即Rust SGX SDK。需要说明的是,基于Rust SGX SDK能够建立Rust语言和C++语言之间的安全连接,且Rust语言和C++语言之间的调用是内存安全的。
具体的,在可信内存区,执行第一解封功能函数,并在执行第一解封功能函数的过程中,通过Rust SGX SDK调用Intel SGX SDK中的第二解封功能函数,对主密钥密文进行解封得到主密钥明文。
需要说明的是,本实施例中Rust语言所编写的功能函数相当于上层应用,IntelSGX SDK相当于底层应用,Rust SGX SDK则是连接上层应用和底层应用之间的桥梁。通过引入Rust SGX SDK能够兼顾在Intel SGX所实现的可信内存区内高效运行的同时,拥有更强的内存安全能力。
S203,在可信内存区,采用主密钥明文对第一数据密钥信息进行处理,得到第二数据密钥信息。
S204,采用第一数据密钥信息或第二数据密钥信息对待处理数据进行处理。
本公开实施例提供的技术方案,通过在可信内存区引入连接工具,并基于连接工具建立第一解封功能函数和第二解封功能函数之间的安全连接,能够完整且安全地解封出主密钥明文。此外,通过引入连接工具,能够使得本实施例所提供的密钥处理方法,兼顾在Intel SGX所实现的可信内存区内高效运行的同时,拥有更强的内存安全能力。
图3是根据本公开实施例提供的又一种密钥处理方法的流程图,本实施例在上述实施例的基础上,进一步对如何“采用第一数据密钥信息或第二数据密钥信息对待处理数据进行处理”进行详细解释说明。如图3所示,本实施例提供的密钥处理方法可以包括:
S301,响应于数据处理请求,获取第一数据密钥信息和目标用户的主密钥密文。
S302,在可信内存区,根据第一解封功能函数和第二解封功能函数,对主密钥密文进行解封,得到主密钥明文。
本实施例中,第一解封功能函数基于内存安全语言编写,第二解封功能函数基于支持可信内存区的硬件(即可信器件)的开发语言编写。
S303,在可信内存区,采用主密钥明文对第一数据密钥信息进行处理,得到第二数据密钥信息。
S304,根据待处理数据的数据量、可信内存区的当前容量和支持可信内存区的硬件的版本,从通用内存区和可信内存区中选择执行内存区。
需要说明的是,支持可信内存区的硬件的版本不同,所实现的可信内存区的容量存在差异。
一种可实施方式,若待处理数据的数据量大于可信内存区的当前容量,则判断支持可信内存区的硬件的版本是否存在更新版本;若存在,则通过升级硬件的版本来增加可信内存区的容量,即更新当前容量;在更新后的当前容量大于待处理数据的情况下,将可信内存区作为执行内存区。进一步的,在更新后的当前容量仍然小于待处理数据的数据量的情况下,将通用内存区作为执行内存区。
进一步的,若支持可信内存区的硬件的版本不存在更新版本,则可以直接将通用内存区作为执行内存区。
又一种可实施方式,若待处理数据的数据量小于可信内存区的当前容量,则可以直接将可信内存区作为执行内存区。
S305,在执行内存区,采用第一数据密钥信息或第二数据密钥信息对待处理数据进行处理。
可选的,若执行内存区为可信内存区,则可以在可信内存区,采用第一数据密钥信息或第二数据密钥信息对待处理数据进行处理。
进一步的,若执行内存区为通用内存区,则可以在可信内存区,携带第二数据密钥信息,或者第二数据密钥信息和第一数据密钥信息,调用退出接口函数(即ocall函数),从可信内存区进入通用内存区;进而在通用内存区,采用第一数据密钥信息或第二数据密钥信息对待处理数据进行处理。
比如,若数据处理请求为数据加密请求,第一数据密钥信息为数据密钥明文,第二数据密钥信息为数据密钥密文,则在通用内存区,采用第一数据密钥信息对待处理数据进行加密,得到加密数据,并可以对加密数据、第二数据密钥信息和主密钥标识进行关联存储等。若数据处理请求为数据解密请求,第一数据密钥信息为数据密钥密文,第二数据密钥信息为数据密钥明文,则在通用内存区,采用第二数据密钥信息对待处理数据进行解密,得到解密数据。
进一步的,若执行内存区为通用内存区,则在确定用户需求的安全等级较高的情况下,还可以先采用类似于AMD的SEV技术实现的内存加密方式,对通用内存区进行加密,之后再在通用内存区,采用第一数据密钥信息或第二数据密钥信息对待处理数据进行处理。
需要说明的是,本实施例在用户隐私数据的数量过大的情况下,通过升级硬件来增加可信内存区的容量,并在可信内存区执行数据的加解密过程,保证了数据密钥和用户隐私数据等的安全性。此外,由于可信内存区容量的限制,还可采用加密内存的方式对通用内存区进行加密,以此来保证数据密钥和用户隐私数据等的安全性。
本公开实施例提供的技术方案,通过在可信内存区采用基于内存安全语言所编写的第一解封功能函数和基于开发语言所编写的第二解封功能函数,对主密钥密文进行解封,可避免解封过程中出现缓冲区溢出等问题,能够完整且安全地解封出主密钥明文;之后通过结合待处理数据的数据量、可信内存区的当前容量和支持可信内存区的硬件的版本,灵活从通用内存区和可信内存区中选择执行内存区,并在执行内存区,采用第一数据密钥信息或第二数据密钥信息对待处理数据进行处理。上述方案,通过结合待处理数据的数据量、可信内存区的当前容量和支持可信内存区的硬件的版本来确定执行内存区,扩宽了方案的应用范围,增加了方案的灵活度。
图4A是根据本公开实施例提供的再一种密钥处理方法的流程图,图4B是本公开实施例提供的一种主密钥部署架构图。本实施例在上述任一实施例的基础上,在密钥管理端执行环境包括通用内存区和可信内存区,且在通用内存区和可信内存区中执行的操作均基于内存安全语言实现的情况下,增加主密钥部署过程。结合图4A和4B所示,本实施例提供的密钥处理方法可以包括:
S401,在可信内存区,确定目标用户的主密钥明文。
可选的,若密钥管理端为KMS客户端,则KMS客户端在确定目标用户具有部署主密钥需求的情况下,利用Intel SGX提供的远程认证方式,与KMS服务端建立安全会话通道,并在安全会话通道内通过密钥协商算法协商出双方的会话密钥。进一步的,该会话密钥位于KMS客户端和KMS服务端各自的可信内存区中。
示例性的,KMS客户端可以直接将可信内存区中的会话密钥,作为目标用户的主密钥明文。也就是说,将通过密钥协商算法所得到的会话密钥,作为目标用户的主密钥明文。进一步的,在确定目标用户提供用户密钥的情况下,KMS客户端还可以将目标用户所提供的用户密钥,作为目标用户的主密钥明文。
示例性的,若密钥管理端为KMS服务端,则KMS服务端也可以将通过密钥协商算法所得到的会话密钥,作为目标用户的主密钥明文。或者,KMS客户端在其可信内存区采用会话密钥对目标用户所提供的用户密钥进行加密,并通过安全会话通道将加密后的用户密钥发送至KMS服务端;KMS服务端在其可信内存区中使用会话密钥,对加密后的用户密钥进行解密,得到用户密钥,并将用户密钥作为目标用户的主密钥明文。
需要说明的是,本实施例在KMS客户端和KMS服务端之间的远程认证过程中,KMS服务端需要执行基于内存安全语言所编写的认证函数,并在执行过程中,通过连接工具RustSGX SDK调用Intel SGX SDK中的认证函数,对KMS客户端进行认证。
相应地,在KMS客户端也可以执行基于内存安全语言所编写的认证函数,并在执行过程中,通过连接工具Rust SGX SDK调用Intel SGX SDK中的认证函数,对KMS服务端进行认证。
S402,在可信内存区,执行第一密封功能函数,并在执行第一密封功能函数的过程中,调用第二密封功能函数,对主密钥明文进行密封,得到主密钥密文。
本实施例中,第一密封功能函数基于内存安全语言编写,第二密封功能函数基于开发语言编写。可选的,本实施例中内存安全语言优选为Rust语言,开发语言为C++语言。
一种可实施方式,无论密钥管理端为KMS客户端或KMS服务端,均可通过如下方式得到主密钥密文。具体可以是,在可信内存区,执行第一密封功能函数,并在执行第一密封功能函数的过程中,通过连接工具Rust SGX SDK调用Intel SGX SDK中的第二密封功能函数,对主密钥明文进行密封得到主密钥密文。
S403,对主密钥密文和主密钥标识进行关联存储。
一种可实施方式,在确定主密钥密文之后,可以为主密钥密文生成一个全局唯一性标识,即主密钥标识,并将主密钥密文和主密钥标识发送至密钥存储端进行关联存储。
又一种可实施方式,可以向密钥存储端发送包括主密钥密文的存储请求,以指示密钥存储端为主密钥密文生成一个全局唯一性标识,即主密钥标识,并将主密钥密文和主密钥标识关联存储。进一步的,密钥存储端还可以将主密钥标识反馈给密钥管理端。
例如,在密钥管理端为KMS客户端的情况下,结合图4B,KMS客户端可以与密钥管理端进行通信,以实现对主密钥密文和主密钥标识的关联存储。
S404,响应于数据处理请求,获取第一数据密钥信息和目标用户的主密钥密文。
S405,在可信内存区,根据第一解封功能函数和第二解封功能函数,对主密钥密文进行解封,得到主密钥明文。
本实施例中,第一解封功能函数基于内存安全语言编写,第二解封功能函数基于支持可信内存区的硬件(即可信器件)的开发语言编写。
S406,在可信内存区,采用主密钥明文对第一数据密钥信息进行处理,得到第二数据密钥信息。
S407,采用第一数据密钥信息或第二数据密钥信息对待处理数据进行处理。
本公开实施例提供的技术方案,通过在可信内存区采用基于内存安全语言编写的第一密封功能函数和基于开发语言所编写的第二密封功能函数,对主密钥明文进行密封,可避免密封过程中出现缓冲区溢出等问题,能够完整且安全地密封出主密钥密文。同时,主密钥密文与主密钥标识关联存储,便于快速查找到主密钥密文。
由于实际场景中,KMS客户端的数量较多,为保证KMS服务的高性能、高可用和高可靠,本实施例对图4B所提供的主密钥部署架构进行拓展,可得到图4C所示的主密钥部署架构。
如图4C所示,示例性的列出了几个KMS客户端和KMS服务端,但实际场景中KMS客户端和KMS服务端的数量并不限于图4C所展示的。KMS客户端和KMS服务端之间具有负载均衡器,即KMS客户端和KMS服务端之间的远程认证需要负载均衡器作为中间桥梁。具体过程可以是,对于任一KMS客户端所发起的挑战,负载均衡器可以根据各个KMS服务端的负载情况,从KMS服务端中选择一个KMS服务端作为目标服务端,并将该KMS客户端所发起的挑战传输至目标服务端,由目标服务端响应该KMS客户端所发起的挑战,并通过负载均衡器与该KMS客户端建立安全会话通道,且在安全会话通道内通过密钥协商算法协商出双方的会话密钥。
进一步的,为防止负载均衡器可能发生单点故障,本实施例还可建立负载均衡集群,该集群可以包括一个主负载均衡器,以及至少一个从负载均衡器,进而当主负载均衡器发生故障时,使用从负载均衡器作为主负载均衡器来缓解。
此外,图4C中还增加了主从密钥存储端,以保证主密钥存储的可靠性。
示例性的,在上述任一实施例的基础上,在执行本公开所提供的密钥处理方法之前,或者在执行本公开所提供的密钥处理方法的过程中首次需要在可信内存区执行某一步骤之前,比如在执行S102之前,需要创建可信内存区。
一种可实施方式,执行第一区域创建函数,并在执行第一区域创建函数的过程中,调用第二区域创建函数,从通用内存区中划分出可信内存区。本实施例中,第一区域创建函数基于内存安全语言编写,第二区域创建函数基于开发语言编写。可选的,本实施例中内存安全语言优选为Rust语言,开发语言为C++语言。
具体的,在通用内存区,执行第一区域创建函数,并在执行第一区域创建函数的过程中,通过连接工具Rust SGXSDK调用Intel SGXSDK中的第二区域创建函数,从通用内存区中划分出可信内存区。
需要说明的是,本实施例基于第一区域创建函数和第二区域创建函数,能够实现可信内存区的创建。同时,基于内存安全语言所编写的第一区域创建函数能够保证所创建的可信内存区的安全性和完整性。
进一步的,在确定用户不需要使用可信内存区的情况下,还可以在通用内存区,执行第一区域销毁函数,并在执行第一区域销毁函数的过程中,通过连接工具Rust SGXSDK调用IntelSGXSDK中的第二区域销毁函数,以将可信内存区转化为通用内存区。本实施例中,第一区域销毁函数基于内存安全语言编写,第二区域销毁函数基于开发语言编写。
图5是根据本公开实施例提供的一种密钥处理过程的结构框图。本实施例在上述任一实施例的基础上,提供了一种优选实例。具体的,在密钥管理端为KMS客户端,KMS客户端的执行环境包括通用内存区和可信内存区,且在通用内存区和可信内存区中执行的操作均基于内存安全语言实现的情况下,对数据加密过程进行示例性说明。具体实现过程如下:
响应于数据加密请求,在通用内存区,根据数据加密请求中的主密钥标识,从密钥存储端获取目标用户的主密钥密文;与此同时,随机生成一个一次一密的数据密钥明文。
之后,在通用内存区,携带主密钥密文和数据密钥明文,调用进入接口函数(即ecall函数),从通用内存区进行入可信内存区;进而在可信内存区,执行第一解封功能函数,并在执行第一解封功能函数的过程中,通过连接工具Rust SGX SDK,调用Intel SGXSDK中的第二解封功能函数,对主密钥密文进行解封,得到主密钥明文。
在得到主密钥明文之后,在可信内存区,基于内存安全语言所编写的加密功能函数(即Encrypt函数),采用主密钥明文对数据密钥明文进行加密,得到数据密钥密文。
进一步的,在得到数据密钥密文后,为保证安全性,在可信内存区,对主密钥明文进行销毁。
在可信内存区,携带数据密钥密文,调用退出接口函数(即ocall函数),从可信内存区进入通用内存区;进而在通用内存区,采用数据密钥明文对待加密数据进行加密,得到加密数据,并将加密数据、数据密钥密文和主密钥标识一并发送至数据存储端,以便数据存储端对加密数据、数据密钥密文和主密钥标识进行关联存储。
需要说明的是,本实施例基于IntelSGX和内存安全语言实现KMS,进而在以信封形式对用户隐私数据进行加密的过程中,不仅能够在可信内存区中保护主密钥的机密性和完整性,也能保证KMS服务(比如数据加解密等)是内存安全的。
图6是根据本公开实施例提供的又一种密钥处理过程的结构框图。本实施例在上述任一实施例的基础上,提供了一种优选实例。具体的,在密钥管理端为KMS客户端,KMS客户端的执行环境包括通用内存区和可信内存区,且在通用内存区和可信内存区中执行的操作均基于内存安全语言实现的情况下,对数据解密过程进行示例性说明。具体实现过程如下:
响应于数据解密请求,在通用内存区,根据数据解密请求中的存储地址或数据描述信息,从数据存储端获取数据密钥密文、待解密数据和主密钥标识,并基于主密钥标识从密钥存储端获取目标用户的主密钥密文。
之后,在通用内存区,携带主密钥密文和数据密钥密文,调用进入接口函数(即ecall函数),从通用内存区进行入可信内存区;进而在可信内存区,执行第一解封功能函数,并在执行第一解封功能函数的过程中,通过连接工具Rust SGX SDK,调用Intel SGXSDK中的第二解封功能函数,对主密钥密文进行解封,得到主密钥明文。
在得到主密钥明文之后,在可信内存区,基于内存安全语言所编写的解密功能函数(即Decrypt函数),采用主密钥明文对数据密钥密文进行解密,得到数据密钥明文。
进一步的,在得到数据密钥明文后,为保证安全性,在可信内存区,对主密钥明文进行销毁。
在可信内存区,携带数据密钥明文,调用退出接口函数(即ocall函数),从可信内存区进入通用内存区;进而在通用内存区,采用数据密钥明文对待解密数据进行解密,得到解密数据。
需要说明的是,本实施例基于IntelSGX和内存安全语言实现KMS,进而在对用户数据进行解密的过程中,不仅能够在可信内存区中保护主密钥的机密性和完整性,也能保证KMS服务(比如数据加解密等)是内存安全的。
图7是根据本公开实施例提供的一种密钥处理装置的结构示意图。本公开实施例适用于如何进行密钥处理的情况,尤其适用于如何在数据加解密过程中,充分利用主密钥,且保证主密钥的完整性和安全性等的情况。该装置可以采用软件和/或硬件来实现,该装置可以实现本公开任意实施例所述的密钥处理方法。如图7所示,该密钥处理装置包括:
第一信息获取模块701,用于响应于数据处理请求,获取第一数据密钥信息和目标用户的主密钥密文;
解封模块702,用于在可信内存区,根据第一解封功能函数和第二解封功能函数,对主密钥密文进行解封,得到主密钥明文;第一解封功能函数基于内存安全语言编写,第二解封功能函数基于支持可信内存区的硬件的开发语言编写;
第二信息确定模块703,用于在可信内存区,采用主密钥明文对第一数据密钥信息进行处理,得到第二数据密钥信息;第一数据密钥信息和第二数据密钥信息互为明文密文对;
数据处理模块704,用于采用第一数据密钥信息或第二数据密钥信息对待处理数据进行处理。
本公开实施例提供的技术方案,通过在可信内存区采用基于内存安全语言所编写的第一解封功能函数和基于开发语言所编写的第二解封功能函数,对主密钥密文进行解封,可避免解封过程中出现缓冲区溢出等问题,能够完整且安全地解封出主密钥明文,进而可得到正确的第二数据密钥信息,使得待处理数据的处理能够正常进行。此外,本实施例中主密钥在可信内存区以明文形式呈现,在可信内存区以外以密文形式呈现,也保证了主密钥的机密性,从而保证了用户隐私数据的机密性和安全性。
示例性的,解封模块702具体用于:
执行第一解封功能函数,并在执行第一解封功能函数的过程中,通过连接工具,调用第二解封功能函数,对主密钥密文进行解封,得到主密钥明文;
其中,连接工具用于连接内存安全语言和开发语言。
示例性的,数据处理模块704具体用于:
根据待处理数据的数据量、可信内存区的当前容量和支持可信内存区的硬件的版本,从通用内存区和可信内存区中选择执行内存区;
在执行内存区,采用第一数据密钥信息或第二数据密钥信息对待处理数据进行处理。
示例性的,上述装置还包括:
密钥销毁模块,用于在采用主密钥明文对第一数据密钥信息进行处理,得到第二数据密钥信息之后,对主密钥明文进行销毁。
示例性的,上述装置还包括:
主密钥明文确定模块,用于在响应于数据处理请求,获取第一数据密钥信息和目标用户的主密钥密文之前,在可信内存区,确定目标用户的主密钥明文;
密封模块,用于在可信内存区,执行第一密封功能函数,并在执行第一密封功能函数的过程中,调用第二密封功能函数,对主密钥明文进行密封,得到主密钥密文;
第一存储模块,用于对主密钥密文和主密钥标识进行关联存储;
其中,第一密封功能函数基于内存安全语言编写,第二密封功能函数基于开发语言编写。
示例性的,主密钥明文确定模块具体用于:
将通过密钥协商算法所得到的会话密钥,作为目标用户的主密钥明文;或者,将目标用户所提供的用户密钥,作为目标用户的主密钥明文。
示例性的,上述装置还包括:
可信内存区创建模块,用于执行第一区域创建函数,并在执行第一区域创建函数的过程中,调用第二区域创建函数,从通用内存区中划分出可信内存区;
其中,第一区域创建函数基于内存安全语言编写,第二区域创建函数基于开发语言编写。
示例性的,本实施例中若数据处理请求为数据加密请求,则第一数据密钥信息为数据密钥明文,第二数据密钥信息为数据密钥密文;
若数据处理请求为数据解密请求,则第一数据密钥信息为数据密钥密文,第二数据密钥信息为数据密钥明文。
示例性的,上述装置还包括:
第二存储模块,用于对采用第一数据密钥信息对待处理数据进行处理得到的加密数据、第二数据密钥信息和主密钥标识进行关联存储。
示例性的,本实施例中在可信内存区中执行的操作基于内存安全语言实现。
本公开的技术方案中,所涉及的用户的主密钥密文、主密钥明文、第一数据密钥信息和第二数据密钥信息等的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图8示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,电子设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储电子设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
电子设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许电子设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如密钥处理方法。例如,在一些实施例中,密钥处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM802和/或通信单元809而被载入和/或安装到电子设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的密钥处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行密钥处理方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (20)

1.一种密钥处理方法,包括:
响应于数据处理请求,获取第一数据密钥信息和目标用户的主密钥密文;
在可信内存区,根据第一解封功能函数和第二解封功能函数,对所述主密钥密文进行解封,得到主密钥明文;所述第一解封功能函数基于内存安全语言编写,所述第二解封功能函数基于支持所述可信内存区的硬件的开发语言编写;
在所述可信内存区,采用所述主密钥明文对所述第一数据密钥信息进行处理,得到第二数据密钥信息;所述第一数据密钥信息和所述第二数据密钥信息互为明文密文对;
采用所述第一数据密钥信息或第二数据密钥信息对待处理数据进行处理;
其中,所述根据第一解封功能函数和第二解封功能函数,对所述主密钥密文进行解封,得到所述主密钥明文,包括:
执行所述第一解封功能函数,并在执行所述第一解封功能函数的过程中,通过连接工具,调用所述第二解封功能函数,对所述主密钥密文进行解封,得到主密钥明文;
其中,所述连接工具用于连接所述内存安全语言和所述开发语言。
2.根据权利要求1所述的方法,其中,所述采用所述第一数据密钥信息或第二数据密钥信息对待处理数据进行处理,包括:
根据待处理数据的数据量、所述可信内存区的当前容量和支持所述可信内存区的硬件的版本,从通用内存区和所述可信内存区中选择执行内存区;
在所述执行内存区,采用所述第一数据密钥信息或第二数据密钥信息对待处理数据进行处理。
3.根据权利要求1所述的方法,所述采用所述主密钥明文对所述第一数据密钥信息进行处理,得到第二数据密钥信息之后,还包括:
对所述主密钥明文进行销毁。
4.根据权利要求1所述的方法,所述响应于数据处理请求,获取第一数据密钥信息和目标用户的主密钥密文之前,还包括:
在所述可信内存区,确定目标用户的主密钥明文;
在所述可信内存区,执行第一密封功能函数,并在执行所述第一密封功能函数的过程中,调用第二密封功能函数,对主密钥明文进行密封,得到所述主密钥密文;
对所述主密钥密文和主密钥标识进行关联存储;
其中,所述第一密封功能函数基于所述内存安全语言编写,所述第二密封功能函数基于所述开发语言编写。
5.根据权利要求4所述的方法,其中,所述确定目标用户的主密钥明文,包括:
将通过密钥协商算法所得到的会话密钥,作为所述目标用户的主密钥明文;或者,将目标用户所提供的用户密钥,作为所述目标用户的主密钥明文。
6.根据权利要求1所述的方法,还包括:
执行第一区域创建函数,并在执行所述第一区域创建函数的过程中,调用第二区域创建函数,从通用内存区中划分出可信内存区;
其中,所述第一区域创建函数基于所述内存安全语言编写,所述第二区域创建函数基于所述开发语言编写。
7.根据权利要求1-6任一所述的方法,其中,若所述数据处理请求为数据加密请求,则所述第一数据密钥信息为数据密钥明文,所述第二数据密钥信息为数据密钥密文;
若所述数据处理请求为数据解密请求,则所述第一数据密钥信息为数据密钥密文,所述第二数据密钥信息为数据密钥明文。
8.根据权利要求7所述的方法,还包括:
对采用所述第一数据密钥信息对待处理数据进行处理得到的加密数据、所述第二数据密钥信息和主密钥标识进行关联存储。
9.根据权利要求1-6任一所述的方法,其中,在所述可信内存区中执行的操作基于内存安全语言实现。
10.一种密钥处理装置,包括:
第一信息获取模块,用于响应于数据处理请求,获取第一数据密钥信息和目标用户的主密钥密文;
解封模块,用于在可信内存区,根据第一解封功能函数和第二解封功能函数,对所述主密钥密文进行解封,得到主密钥明文;所述第一解封功能函数基于内存安全语言编写,所述第二解封功能函数基于支持所述可信内存区的硬件的开发语言编写;
第二信息确定模块,用于在所述可信内存区,采用所述主密钥明文对所述第一数据密钥信息进行处理,得到第二数据密钥信息;所述第一数据密钥信息和所述第二数据密钥信息互为明文密文对;
数据处理模块,用于采用所述第一数据密钥信息或第二数据密钥信息对待处理数据进行处理;
其中,所述解封模块具体用于:
执行所述第一解封功能函数,并在执行所述第一解封功能函数的过程中,通过连接工具,调用所述第二解封功能函数,对所述主密钥密文进行解封,得到主密钥明文;
其中,所述连接工具用于连接所述内存安全语言和所述开发语言。
11.根据权利要求10所述的装置,其中,所述数据处理模块具体用于:
根据待处理数据的数据量、所述可信内存区的当前容量和支持所述可信内存区的硬件的版本,从通用内存区和所述可信内存区中选择执行内存区;
在所述执行内存区,采用所述第一数据密钥信息或第二数据密钥信息对待处理数据进行处理。
12.根据权利要求10所述的装置,还包括:
密钥销毁模块,用于在采用所述主密钥明文对所述第一数据密钥信息进行处理,得到第二数据密钥信息之后,对所述主密钥明文进行销毁。
13.根据权利要求10所述的装置,还包括:
主密钥明文确定模块,用于在响应于数据处理请求,获取第一数据密钥信息和目标用户的主密钥密文之前,在所述可信内存区,确定目标用户的主密钥明文;
密封模块,用于在所述可信内存区,执行第一密封功能函数,并在执行所述第一密封功能函数的过程中,调用第二密封功能函数,对主密钥明文进行密封,得到所述主密钥密文;
第一存储模块,用于对所述主密钥密文和主密钥标识进行关联存储;
其中,所述第一密封功能函数基于所述内存安全语言编写,所述第二密封功能函数基于所述开发语言编写。
14.根据权利要求13所述的装置,其中,所述主密钥明文确定模块具体用于:
将通过密钥协商算法所得到的会话密钥,作为所述目标用户的主密钥明文;或者,将目标用户所提供的用户密钥,作为所述目标用户的主密钥明文。
15.根据权利要求10所述的装置,还包括:
可信内存区创建模块,用于执行第一区域创建函数,并在执行所述第一区域创建函数的过程中,调用第二区域创建函数,从通用内存区中划分出可信内存区;
其中,所述第一区域创建函数基于所述内存安全语言编写,所述第二区域创建函数基于所述开发语言编写。
16.根据权利要求10-15任一所述的装置,其中,若所述数据处理请求为数据加密请求,则所述第一数据密钥信息为数据密钥明文,所述第二数据密钥信息为数据密钥密文;
若所述数据处理请求为数据解密请求,则所述第一数据密钥信息为数据密钥密文,所述第二数据密钥信息为数据密钥明文。
17.根据权利要求16所述的装置,还包括:
第二存储模块,用于对采用所述第一数据密钥信息对待处理数据进行处理得到的加密数据、所述第二数据密钥信息和主密钥标识进行关联存储。
18.根据权利要求10-15任一所述的装置,其中,在所述可信内存区中执行的操作基于内存安全语言实现。
19.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-9中任一项所述的密钥处理方法。
20.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行根据权利要求1-9中任一项所述的密钥处理方法。
CN202111128599.3A 2021-09-26 2021-09-26 一种密钥处理方法、装置、设备及存储介质 Active CN113849835B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111128599.3A CN113849835B (zh) 2021-09-26 2021-09-26 一种密钥处理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111128599.3A CN113849835B (zh) 2021-09-26 2021-09-26 一种密钥处理方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN113849835A CN113849835A (zh) 2021-12-28
CN113849835B true CN113849835B (zh) 2022-07-15

Family

ID=78979536

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111128599.3A Active CN113849835B (zh) 2021-09-26 2021-09-26 一种密钥处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113849835B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115102788B (zh) * 2022-08-10 2023-01-17 北京安盟信息技术股份有限公司 一种通过密钥重用提高数字信封性能的方法及数字信封
CN115459910A (zh) * 2022-09-02 2022-12-09 海尔优家智能科技(北京)有限公司 数据加密方法、装置及存储介质
CN116015767A (zh) * 2022-12-07 2023-04-25 浪潮云信息技术股份公司 一种数据处理方法、装置、设备及介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108123800B (zh) * 2017-12-19 2021-06-15 腾讯科技(深圳)有限公司 密钥管理方法、装置、计算机设备及存储介质
US11327782B2 (en) * 2019-07-19 2022-05-10 Vmware, Inc. Supporting migration of virtual machines containing enclaves
CN112839013B (zh) * 2019-11-22 2022-10-11 航天信息股份有限公司 一种密钥传输方法、装置及计算机可读存储介质

Also Published As

Publication number Publication date
CN113849835A (zh) 2021-12-28

Similar Documents

Publication Publication Date Title
CN113849835B (zh) 一种密钥处理方法、装置、设备及存储介质
EP3632057B1 (en) Distributed ipsec gateway
EP3123657B1 (en) Method and apparatus for cloud-assisted cryptography
US10601590B1 (en) Secure secrets in hardware security module for use by protected function in trusted execution environment
CN111274611A (zh) 数据脱敏方法、装置及计算机可读存储介质
US10045212B2 (en) Method and apparatus for providing provably secure user input/output
US11411719B2 (en) Security system and method thereof using both KMS and HSM
CN111343207B (zh) 多节点联合加密的数据传输方法、设备和存储介质
CN115065472B (zh) 基于多密钥加密解密的安全芯片加密解密方法及装置
CN115333839B (zh) 数据安全传输方法、系统、设备及存储介质
CN107872315B (zh) 数据处理方法和智能终端
CN114417362A (zh) 数据管理方法、装置及系统、存储介质
EP3720042B1 (en) Method and device for determining trust state of tpm, and storage medium
CN114139176A (zh) 一种基于国密的工业互联网核心数据的保护方法及系统
CN112261015B (zh) 基于区块链的信息共享方法、平台、系统以及电子设备
CN114244515B (zh) 基于Hypervisor的虚拟机通信方法、装置、可读存储介质及电子设备
CN109450899B (zh) 密钥管理方法及装置、电子设备、存储介质
CN114793178B (zh) 配网方法、装置、设备和存储介质
CN112995119A (zh) 一种数据监测方法及装置
CN110557383A (zh) 电力监控系统网络安全数据处理方法、装置、设备和介质
WO2019242163A1 (zh) 数据安全验证方法、装置、系统、计算机设备及存储介质
US12058257B2 (en) Data storage method, data read method, electronic device, and program product
CN109697603A (zh) 电子印章的保护方法、装置、设备及介质
CN108156112B (zh) 数据加密方法、电子设备及网络侧设备
CN115484080A (zh) 小程序的数据处理方法、装置、设备以及存储介质

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
GR01 Patent grant
GR01 Patent grant