CN108429719A - 密钥保护方法及装置 - Google Patents
密钥保护方法及装置 Download PDFInfo
- Publication number
- CN108429719A CN108429719A CN201710079083.1A CN201710079083A CN108429719A CN 108429719 A CN108429719 A CN 108429719A CN 201710079083 A CN201710079083 A CN 201710079083A CN 108429719 A CN108429719 A CN 108429719A
- Authority
- CN
- China
- Prior art keywords
- key
- user
- safety
- space
- node
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 84
- 230000006870 function Effects 0.000 claims description 82
- 238000012795 verification Methods 0.000 claims description 46
- 238000003860 storage Methods 0.000 claims description 45
- 230000005540 biological transmission Effects 0.000 claims description 30
- 238000013507 mapping Methods 0.000 claims description 24
- 230000001012 protector Effects 0.000 claims description 21
- 241000208340 Araliaceae Species 0.000 claims description 2
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims description 2
- 235000003140 Panax quinquefolius Nutrition 0.000 claims description 2
- 235000008434 ginseng Nutrition 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 44
- 230000000977 initiatory effect Effects 0.000 abstract description 11
- 238000013461 design Methods 0.000 description 56
- 238000004422 calculation algorithm Methods 0.000 description 33
- 238000004891 communication Methods 0.000 description 18
- 238000012546 transfer Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 16
- 238000002347 injection Methods 0.000 description 12
- 239000007924 injection Substances 0.000 description 12
- 238000012545 processing Methods 0.000 description 11
- 238000010200 validation analysis Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 8
- 235000013399 edible fruits Nutrition 0.000 description 7
- 230000003993 interaction Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 239000000243 solution Substances 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000002265 prevention Effects 0.000 description 3
- 230000001681 protective effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000013478 data encryption standard Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 102100022582 (3R)-3-hydroxyacyl-CoA dehydrogenase Human genes 0.000 description 1
- KLDZYURQCUYZBL-UHFFFAOYSA-N 2-[3-[(2-hydroxyphenyl)methylideneamino]propyliminomethyl]phenol Chemical compound OC1=CC=CC=C1C=NCCCN=CC1=CC=CC=C1O KLDZYURQCUYZBL-UHFFFAOYSA-N 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 102100031438 E3 ubiquitin-protein ligase RING1 Human genes 0.000 description 1
- 101001045206 Homo sapiens (3R)-3-hydroxyacyl-CoA dehydrogenase Proteins 0.000 description 1
- 101000707962 Homo sapiens E3 ubiquitin-protein ligase RING1 Proteins 0.000 description 1
- 101001095815 Homo sapiens E3 ubiquitin-protein ligase RING2 Proteins 0.000 description 1
- 208000035217 Ring chromosome 1 syndrome Diseases 0.000 description 1
- 208000032825 Ring chromosome 2 syndrome Diseases 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 201000001098 delayed sleep phase syndrome Diseases 0.000 description 1
- 208000033921 delayed sleep phase type circadian rhythm sleep disease Diseases 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000005242 forging Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000002834 transmittance Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- 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/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- 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/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开一种密钥保护方法和装置,属于网络安全技术领域。在本申请中,用户设备向服务器发送至少一个用户密钥的密钥标识,使得服务器上运行的用户应用能够在发起使用用户密钥的运算时,将包含对应密钥标识的运算参数集传递给安全执行空间内的执行节点,安全执行空间被配置为能够阻止特权级代码的外部访问,由此使内部的执行节点能在特权级代码不可见的情况下通过密钥标识在密钥库中获取到用户密钥,以执行上述使用用户密钥的运算,并将执行结果返回。可以看出,本申请将用户密钥和进行密码运算的过程全部封装在安全执行空间内部,因此能够用于降低云服务器中的特权级软件对用户密钥造成的安全威胁。
Description
技术领域
本申请涉及网络安全技术领域,特别涉及一种密钥保护方法及装置。
背景技术
虚拟化技术是云计算领域的关键技术之一,可将物理计算机的物理资源虚拟成多个虚拟机(Virtual Machine,VM),例如虚拟机监视器(Virtual Machine Monitor,VMM)的虚拟化平台可以将物理资源以虚拟资源池的形式提供给各个虚拟机,不同的虚拟机上分别运行不同的操作系统(Operating System,OS)以分配给多个用户使用,虚拟机之间共享物理计算机的物理资源。
在云服务场景下,云服务提供商可以向海量用户提供云服务业务,为用户分配虚拟机。在云服务的使用过程中,用户通常会使用密钥结合相应的密钥算法来保护用户的数据或者完成关键业务步骤。比如在云存储场景下,用户的数据在云服务器中需要使用密钥加密,在读取数据时用户应用需要使用密钥对数据进行解密,对解密数据处理产生的新数据也要加密以后存储到云服务器中。再比如,安全的云上的大数据分析系统通常需要通过使用加密密钥来保护节点之间消息数据的机密性,使用完整性密钥来提供消息完整性的保护。
而在云服务架构中,用户应用和用户数据一般由用户提供,例如OS和VMM的底层软件一般由云服务商(CSP)提供并处于云服务商的控制之下。由此,云服务器上运行在特权级的OS和VMM可以随意访问用户应用的进程空间,包括用户所使用的密钥。例如,云服务商的恶意管理员可能通过管理工具或者管理域窃取用户应用使用的密钥,恶意虚拟机也可能通过技术手段攻击同一物理服务器上的其它虚拟机,窃取用户应用使用的密钥。此外,黑客也可能利用VMM、OS的安全漏洞入侵云服务器,窃取用户应用使用的密钥。
可以看出,目前云服务架构下用户所私有的密钥很容易泄露给云服务器上运行的特权级软件,使得用户的数据和业务的完整性都受到了严重的威胁。
发明内容
本申请提供一种密钥保护方法及装置,可以降低服务器中的特权级软件对用户密钥造成的安全威胁。
第一方面,本申请提供一种密钥保护方法,包括:
在发起使用用户密钥的运算时,用户应用获取与所要使用的用户密钥对应的密钥标识,以添加至与所述使用用户密钥的运算对应的运算参数集中;
所述用户应用通过预设接口将所述运算参数集传递给安全执行空间内的执行节点,以使所述执行节点在所述安全执行空间内:从密钥库中获取与所述密钥标识对应的用户密钥,使用获取到的用户密钥执行与所述运算参数集对应的运算,并返回执行结果;
其中,所述密钥库存储在所述安全执行空间内;所述用户应用运行在服务器中,所述安全执行空间预先建立在所述服务器中,所述安全执行空间被配置为能够阻止特权级代码的外部访问。
本实施例提供的密钥保护方法,将用户密钥和进行密码运算的过程全部封装在安全执行空间内部,而外部的用户应用采用密钥标识代替用户密钥来发起密码运算,使得用户密钥和进行密码运算的过程对于操作系统和虚拟机监视器等特权级软件而言不可见,从而降低云服务器中的特权级软件对用户密钥造成的安全威胁。
在一个可能的设计中,所述用户应用通过预设接口将所述运算参数集传递给安全执行空间内的执行节点,包括:
所述用户应用调用配置在所述执行节点中的接入函数,以在经过所述预设接口的访问权限验证之后,将所述运算参数集作为函数参数传递给所述执行节点。
本实施例中,执行节点对用户应用而言相当于可供调用的外部函数,而预设接口则可以通过访问权限验证阻挡无访问权限的程序(包括特权级代码)的调用,利用函数调用机制整合数据传递过程和访问权限验证过程,有助于提升用户应用通过执行节点执行密码运算的过程中的逻辑处理效率
在一个可能的设计中,所述运算参数集包括用于定义运算规则的运算子集和用于携带运算数据的参数子集,所述用户应用通过预设接口将所述运算参数集传递给安全执行空间内的执行节点,包括:
所述用户应用通过所述预设接口将包含所述暂存标记的运算参数集传递给所述执行节点,以使所述执行节点在所述安全执行空间内:根据所述运算子集和所述参数子集进行运算以获取运算结果,将所述运算结果存储在所述安全执行空间内,为存储后的所述运算结果分配对应的数据标识,并返回所述数据标识;
所述用户应用接收来自所述执行节点的数据标识;
所述用户应用通过所述预设接口将参数子集中包含所述数据标识的运算参数集传递给所述执行节点,以使所述执行节点在所述安全执行空间内:在所述安全执行空间内获取与所述数据标识对应的运算结果,以使用获取到的运算结果根据所述运算子集和所述参数子集进行运算以获取运算结果。
本实施例中,由于运算参数集中可以设置暂存标记,并且执行节点能够在接收到暂存标记时存储运算结果并返回替代运算结果的数据标识,使得用户可以使用包含暂存标记的运算参数集来保护包含有秘密数据的中间数据。而且,由于运算参数集中可以设置数据标识,并且执行节点能够在接收到数据标识时提取所存储的运算结果并用于密码运算,使得用户可以使用包含数据标识的运算参数集来提取所存储的数据以进行密码运算,即能够使得存储在安全执行空间内的数据仍能根据运算参数集参与密码运算。由此,可以在完成密码运算的基础上避免由此引起的秘密数据泄露,增强密码运算过程的安全性。
在一种可能的设计中,在所述用户应用通过预设接口将所述运算参数集传递给执行节点之前,还包括:
在配置有所述执行节点的安全执行空间建立之后,所述用户应用与所述执行节点交互以建立用户端与所述执行节点之间的安全信道,以使所述用户端:通过所述安全信道将密钥信息发送给所述执行节点,以通过所述执行节点根据所述密钥信息中包含的用户密钥与密钥标识之间的映射关系在所述安全执行空间内完成所述密钥库的配置。
本实施例中,基于用户端与所述执行节点之间的安全信道的建立,安全执行空间能够保护内部的共有密钥不被外部程序窃取,因而可以避免包括OS和VMM的服务器程序从传输数据流中窃取用户的秘密数据,从而与其他方面的安全保护手段相结合实现云服务场景下的密钥保护。
在一个可能的设计中,所述方法还包括:
在所述用户端通过所述安全信道将密钥信息发送给所述执行节点之前,所述用户应用通过所述执行节点获取所述安全执行空间的预置范围内的数据的散列值,所述预置范围内的数据包括所述安全执行空间内全部的可执行代码;
所述用户应用将所述散列值发送给所述用户端,以使所述用户端:根据所述散列值对所述预置范围内的数据进行完整性校验,在完整性校验通过之前阻止用户密钥向所述服务器的发送。
本实施例中,基于对安全执行空间的预置范围内的数据的完整性校验,至少可以使用户端远程确认安全执行空间内所有可执行代码的完整性(包括确认可执行代码是否全部是用户配置的,以及可执行代码是否经过恶意删除或篡改),保护用户密钥的安全。
在一个可能的设计中,所述用户应用与所述执行节点交互以建立用户端与所述执行节点之间的安全信道之前,还包括:
所述用户应用在服务器中创建安全执行空间;
所述用户应用向所述安全执行空间中注入与所述执行节点对应的数据,以在所述安全执行空间内完成所述执行节点的配置。
本实施例中,执行节点可以作为用户应用的额外代码创建,从而将执行节点与用户应用之间的数据传递限制在同一程序内部进行,不仅有利于省去程序间数据传递所需要的程序接口的设置,还有利于消除程序间数据传递所带来的安全隐患。
第二方面,本申请还提供一种密钥保护方法,包括:
用户端向服务器发送至少一个用户密钥的密钥标识,以使所述服务器中运行的第一用户应用能够在发起使用用户密钥的运算时,能够获取到与所要使用的用户密钥对应的密钥标识;
其中,所述第一用户应用被配置为将获取到的密钥标识添加至与所述使用用户密钥的运算对应的运算参数集中,通过预设接口将所述运算参数集传递给安全执行空间内的执行节点;
所述执行节点被配置为在所述安全执行空间内:从密钥库中获取与所述密钥标识对应的用户密钥,使用获取到的用户密钥执行与所述运算参数集对应的运算,并将执行结果返回给所述第一用户应用;
所述密钥库存储在所述安全执行空间内;所述安全执行空间预先建立在所述服务器中,所述安全执行空间被配置为能够阻止特权级代码的外部访问。
在一种可能的设计中,所述方法还包括:
在配置有所述执行节点的安全执行空间建立之后,所述用户端通过所述服务器中运行的第二用户应用与所述执行节点交互以建立所述用户端与所述执行节点之间的安全信道;
所述用户端通过所述安全信道将密钥信息发送至所述执行节点,以通过所述执行节点根据所述密钥信息中包含的用户密钥与密钥标识之间的映射关系在所述安全执行空间内完成所述密钥库的配置。
在一种可能的设计中,所述用户端通过所述服务器中运行的第二用户应用与用户端交互以建立所述用户端与所述执行节点之间的安全信道,包括:
所述用户端通过与所述执行节点之间的密钥协商得到共有密钥,以建立使用所述共有密钥进行加密通信的安全信道。
在一种可能的设计中,在所述用户端通过所述安全信道将密钥信息发送至所述执行节点之前,还包括:
所述用户端通过所述执行节点对所述安全执行空间的预置范围内的数据进行完整性校验,所述预置范围内的数据包括所述安全执行空间内全部的可执行代码;
在完整性校验通过之前,所述用户端阻止用户密钥向服务器的发送。
在一种可能的设计中,在所述用户端通过所述服务器中运行的第二用户应用与所述执行节点交互以建立所述用户端与所述执行节点之间的安全信道之后,还包括:
所述用户端通过所述安全信道向所述执行节点发送第一操作指令,以使所述执行节点在所述安全执行空间内:接收所述第一操作指令,屏蔽除来自所述安全信道以外的用户指令;
和/或,
所述用户端通过所述安全信道向所述执行节点发送第二操作指令,以使所述执行节点在所述安全执行空间内:接收所述第二操作指令,对安全执行空间进行核查,以将得到的核查报告通过所述安全信道发送给所述用户端;
和/或,
所述用户端通过所述安全信道接收来自所述执行节点的核查报告,以根据接收到的核查报告确定所述安全执行空间的安全风险等级;
和/或,
所述用户端在所述安全执行空间的安全风险等级高于或等于预设等级时通过所述安全信道向所述执行节点发送第三操作指令,以使所述执行节点在所述安全执行空间内:接收所述第三操作指令,删除所述安全执行空间内的预定部分的秘密数据或者全部的秘密数据;
和/或,
所述用户端通过所述安全信道向所述执行节点发送第四操作指令,以使所述执行节点在所述安全执行空间内:接收所述第四操作指令,将所述安全执行空间内的密钥库加密存储至所述服务器的存储器中,并通过所述安全信道返回用于读取密钥库和对密钥库进行解密的数据;
和/或,
所述用户端通过所述安全信道向所述执行节点发送第五操作指令,所述第五操作指令包括地址标识和解密密钥,以使所述执行节点在所述安全执行空间内:接收所述第五操作指令,根据所述地址标识在所述服务器的存储器中获取加密后的密钥库,使用所述解密密钥对加密后的密钥库进行解密,以将解密后的密钥库配置于所述安全执行空间内。
在一种可能的设计中,在所述用户端通过所述服务器中运行的第二用户应用与所述执行节点交互以建立所述用户端与所述执行节点之间的安全信道之前,还包括:
所述用户端通过所述服务器中运行的第三用户应用创建安全执行空间;
所述用户端通过所述服务器中运行的第三用户应用向所述安全执行空间内注入与所述执行节点对应的数据,以在所述安全执行空间内完成所述执行节点的配置。
第三方面,本申请还提供一种密钥保护方法,应用于配置在安全执行空间内的执行节点;其中,所述安全执行空间建立在服务器中,所述安全执行空间被配置为能够阻止特权级代码的外部访问;所述方法包括:
所述执行节点接收所述用户应用通过预设接口传递的运算参数集,所述运算参数集包括与所要使用的用户密钥对应的密钥标识;
所述执行节点从密钥库中获取与所述密钥标识对应的用户密钥;其中,所述密钥库存储在所述安全执行空间内;
所述执行节点使用获取到的用户密钥在所述安全执行空间内执行与所述运算参数集对应的运算以获取执行结果;
所述执行节点向所述用户应用返回所述执行结果。
在一种可能的设计中,在所述执行节点从密钥库中获取与所述密钥标识对应的用户密钥之前,还包括:
所述执行节点与用户端交互以建立所述用户端与执行节点之间的安全信道;
所述执行节点通过所述安全信道接收所述用户端发送的密钥信息;其中,所述密钥信息中包括用户密钥与密钥标识之间的映射关系;
所述执行节点根据所述用户密钥与密钥标识之间的映射关系,在所述安全执行空间内完成所述密钥库的配置。
在一种可能的设计中,在所述执行节点通过所述安全信道接收所述用户端发送的密钥信息之前,还包括:
所述执行节点获取所述安全执行空间的预置范围内的数据的散列值,所述预置范围内的数据包括所述安全执行空间内全部的可执行代码;
所述执行节点将所述散列值发送给所述用户端,以使所述用户端:根据所述散列值对所述预置范围内的数据进行完整性校验,在完整性校验通过之前阻止用户密钥向所述服务器的发送。
在一种可能的设计中,在所述执行节点与用户端交互以建立所述用户端与所述执行节点之间的安全信道之后,还包括:所述执行节点通过所述安全信道接收来自所述用户端的用户指令;以及,
在所述用户指令为第一操作指令时,所述执行节点屏蔽除来自所述安全信道以外的用户指令;
和/或,
在所述用户指令为第二操作指令时,所述执行节点对安全执行空间进行核查,以将得到的核查报告通过所述安全信道发送给所述用户端;
和/或,
在所述用户指令为第三操作指令时,所述执行节点删除所述安全执行空间内的预定部分的秘密数据或者全部的秘密数据;
和/或,
在所述用户指令为第四操作指令时,所述执行节点将所述安全执行空间内的密钥库加密存储至所述服务器的存储器中,并通过所述安全信道向所述用户端返回用于读取密钥库和对密钥库进行解密的数据;
和/或,
在所述用户指令为包括地址标识和解密密钥的第五操作指令时,所述执行节点根据所述地址标识在所述服务器的存储器中获取加密后的密钥库,使用所述解密密钥对加密后的密钥库进行解密,以将解密后的密钥库配置于所述安全执行空间内。
在一种可能的设计中,所述运算参数集包括用于定义运算规则的运算子集和用于携带运算数据的参数子集,所述执行节点使用获取到的用户密钥在所述安全执行空间内执行与所述运算参数集对应的运算以获取执行结果,包括:
所述执行节点根据所述运算子集和所述参数子集进行运算以获取运算结果;
当检测到所述运算参数集中还包括暂存标记时,所述执行节点将所述运算结果存储在所述安全执行空间内,并为存储后的所述运算结果分配对应的数据标识;
相应的,所述执行节点向所述用户应用返回所述执行结果,包括:
所述执行节点向所述用户应用返回所述数据标识。
在一种可能的设计中,当所述参数子集中包含有至少一个数据标识时,所述执行节点在所述安全执行空间内获取与所述至少一个数据标识对应的运算结果,并使用获取到的运算结果根据所述运算子集和所述参数子集进行运算以获取运算结果。
在一种可能的设计中,所述运算参数集还包括指令标识和输入数据;所述执行节点使用获取到的用户密钥在所述安全执行空间内执行与所述运算参数集对应的运算以获取执行结果,包括:
所述执行节点确定与所述指令标识对应的运算指令函数;其中,所述运算指令函数与所述指令标识相互对应地配置在所述安全执行空间内的运算指令库中;
所述执行节点将所述输入数据和获取到的用户密钥输入到所述运算指令函数中以获取执行结果。
在一种可能的设计中,所述执行节点中配置有接入函数,所述执行节点接收所述用户应用通过预设接口传递的运算参数集,包括:
在所述用户应用对所述接入函数的调用经过所述预设接口的访问权限验证之后,所述执行节点通过所述接入函数接收作为函数参数的所述运算参数集。
第四方面,本申请还提供一种密钥保护装置,应用于服务器中运行的用户应用,所述装置包括:
第一获取模块,在发起使用用户密钥的运算时,获取与所要使用的用户密钥对应的密钥标识,以添加至与所述使用用户密钥的运算对应的运算参数集中;
传递模块,用于通过预设接口将所述运算参数集传递给安全执行空间内的执行节点,以使所述执行节点在所述安全执行空间内:从密钥库中获取与所述密钥标识对应的用户密钥,使用获取到的用户密钥执行与所述运算参数集对应的运算,并返回执行结果;
其中,所述密钥库存储在所述安全执行空间内;所述用户应用运行在服务器中,所述安全执行空间预先建立在所述服务器中,所述安全执行空间被配置为能够阻止特权级代码的外部访问。
在一种可能的设计中,所述传递模块包括:
调用单元,用于调用配置在所述执行节点中的接入函数,以在经过所述预设接口的访问权限验证之后,将所述运算参数集作为函数参数传递给所述执行节点。
在一种可能的设计中,所述运算参数集包括用于定义运算规则的运算子集和用于携带运算数据的参数子集;所述传递模块包括:
第一传递单元,用于通过所述预设接口将包含所述暂存标记的运算参数集传递给所述执行节点,以使所述执行节点在所述安全执行空间内:根据所述运算子集和所述参数子集进行运算以获取运算结果,将所述运算结果存储在所述安全执行空间内,为存储后的所述运算结果分配对应的数据标识,并返回所述数据标识;
接收单元,用于接收来自所述执行节点的数据标识;
第二传递单元,用于通过所述预设接口将参数子集中包含所述数据标识的运算参数集传递给所述执行节点,以使所述执行节点在所述安全执行空间内:在所述安全执行空间内获取与所述数据标识对应的运算结果,以使用获取到的运算结果根据所述运算子集和所述参数子集进行运算以获取运算结果。
在一种可能的设计中,所述装置还包括:
建立模块,用于在配置有所述执行节点的安全执行空间建立之后,与所述执行节点交互以建立用户端与所述执行节点之间的安全信道,以使所述用户端:通过所述安全信道将密钥信息发送给所述执行节点,以通过所述执行节点根据所述密钥信息中包含的用户密钥与密钥标识之间的映射关系在所述安全执行空间内完成所述密钥库的配置。
在一种可能的设计中,所述装置还包括:
第二获取模块,用于在所述用户端通过所述安全信道将密钥信息发送给所述执行节点之前,通过所述执行节点获取所述安全执行空间的预置范围内的数据的散列值,所述预置范围内的数据包括所述安全执行空间内全部的可执行代码;
发送模块,用于将所述散列值发送给所述用户端,以使所述用户端:根据所述散列值对所述预置范围内的数据进行完整性校验,在完整性校验通过之前阻止用户密钥向所述服务器的发送。
在一种可能的设计中,所述装置还包括:
创建模块,用于所述建立模块与所述执行节点交互以建立用户端与所述执行节点之间的安全信道之前,在服务器中创建安全执行空间;
注入模块,用于向所述安全执行空间中注入与所述执行节点对应的数据,以在所述安全执行空间内完成所述执行节点的配置。
第五方面,本申请还提供一种密钥保护装置,应用于用户端,包括:
第一发送模块,用于向服务器发送至少一个用户密钥的密钥标识,以使所述服务器中运行的第一用户应用能够在发起使用用户密钥的运算时,能够获取到与所要使用的用户密钥对应的密钥标识;
其中,所述第一用户应用被配置为将获取到的密钥标识添加至与所述使用用户密钥的运算对应的运算参数集中,通过预设接口将所述运算参数集传递给安全执行空间内的执行节点;
所述执行节点被配置为在所述安全执行空间内:从密钥库中获取与所述密钥标识对应的用户密钥,使用获取到的用户密钥执行与所述运算参数集对应的运算,并将执行结果返回给所述第一用户应用;
所述密钥库存储在所述安全执行空间内;所述安全执行空间预先建立在所述服务器中,所述安全执行空间被配置为能够阻止特权级代码的外部访问。
在一种可能的设计中,所述装置还包括:
建立模块,用于在配置有所述执行节点的安全执行空间建立之后,通过所述服务器中运行的第二用户应用与所述执行节点交互以建立所述用户端与所述执行节点之间的安全信道;
第二发送模块,用于通过所述安全信道将密钥信息发送至所述执行节点,以通过所述执行节点根据所述密钥信息中包含的用户密钥与密钥标识之间的映射关系在所述安全执行空间内完成所述密钥库的配置。
在一种可能的设计中,所述建立模块进一步用于通过与所述执行节点之间的密钥协商得到共有密钥,以建立使用所述共有密钥进行加密通信的安全信道。
在一种可能的设计中,所述装置还包括:
校验模块,用于在所述第二发送模块通过所述安全信道将密钥信息发送至所述执行节点之前,通过所述执行节点对所述安全执行空间的预置范围内的数据进行完整性校验,所述预置范围内的数据包括所述安全执行空间内全部的可执行代码;
阻止模块,用于在完整性校验通过之前,阻止用户密钥向服务器的发送。
在一种可能的设计中,所述装置还包括第三发送模块,所述第三发送模块用于在所述建立模块通过所述服务器中运行的第二用户应用与所述执行节点交互以建立所述用户端与所述执行节点之间的安全信道之后:
通过所述安全信道向所述执行节点发送第一操作指令,以使所述执行节点在所述安全执行空间内:接收所述第一操作指令,屏蔽除来自所述安全信道以外的用户指令;
和/或,
通过所述安全信道向所述执行节点发送第二操作指令,以使所述执行节点在所述安全执行空间内:接收所述第二操作指令,对安全执行空间进行核查,以将得到的核查报告通过所述安全信道发送给所述用户端;
和/或,
通过所述安全信道接收来自所述执行节点的核查报告,以根据接收到的核查报告确定所述安全执行空间的安全风险等级;
和/或,
在所述安全执行空间的安全风险等级高于或等于预设等级时通过所述安全信道向所述执行节点发送第三操作指令,以使所述执行节点在所述安全执行空间内:接收所述第三操作指令,删除所述安全执行空间内的预定部分的秘密数据或者全部的秘密数据;
和/或,
通过所述安全信道向所述执行节点发送第四操作指令,以使所述执行节点在所述安全执行空间内:接收所述第四操作指令,将所述安全执行空间内的密钥库加密存储至所述服务器的存储器中,并通过所述安全信道返回用于读取密钥库和对密钥库进行解密的数据;
和/或,
通过所述安全信道向所述执行节点发送第五操作指令,所述第五操作指令包括地址标识和解密密钥,以使所述执行节点在所述安全执行空间内:接收所述第五操作指令,根据所述地址标识在所述服务器的存储器中获取加密后的密钥库,使用所述解密密钥对加密后的密钥库进行解密,以将解密后的密钥库配置于所述安全执行空间内。
在一种可能的设计中,所述装置还包括:
创建模块,用于在所述建立模块通过所述服务器中运行的第二用户应用与所述执行节点交互以建立所述用户端与所述执行节点之间的安全信道之前,通过所述服务器中运行的第三用户应用创建安全执行空间;
注入模块,用于通过所述服务器中运行的第三用户应用向所述安全执行空间内注入与所述执行节点对应的数据,以在所述安全执行空间内完成所述执行节点的配置。
第六方面,本申请还提供一种密钥保护装置,应用于配置在安全执行空间内的执行节点;其中,所述安全执行空间建立在服务器中,所述安全执行空间被配置为能够阻止特权级代码的外部访问;所述装置包括:
第一接收模块,用于接收所述用户应用通过预设接口传递的运算参数集,所述运算参数集与所要使用的用户密钥对应的密钥标识;
第一获取模块,用于从密钥库中获取与所述密钥标识对应的用户密钥;其中,所述密钥库存储在所述安全执行空间内;
执行模块,用于使用获取到的用户密钥在所述安全执行空间内执行与所述运算参数集对应的运算以获取执行结果;
返回模块,用于向所述用户应用返回所述执行结果。
在一种可能的设计中,所述装置还包括:
建立模块,用于在所述第一获取模块从密钥库中获取与所述密钥标识对应的用户密钥之前,与用户端交互以建立所述用户端与所述执行节点之间的安全信道;
第二接收模块,用于通过所述安全信道接收所述用户端发送的密钥信息;其中,所述密钥信息中包括用户密钥与密钥标识之间的映射关系;
配置模块,用于根据所述用户密钥与密钥标识之间的映射关系在所述安全执行空间内完成所述密钥库的配置。
在一种可能的设计中,所述装置还包括:
第二获取模块,用于在所述第二接收模块通过所述安全信道接收所述用户端发送的密钥信息之前,获取所述安全执行空间的预置范围内的数据的散列值,所述预置范围内的数据包括所述安全执行空间内全部的可执行代码;
发送模块,用于将所述散列值发送给所述用户端,以使所述用户端:根据所述散列值对所述预置范围内的数据进行完整性校验,在完整性校验通过之前阻止用户密钥向所述服务器的发送。
在一种可能的设计中,所述装置还包括还包括第三接收模块,所述第三接收模块用于在所述建立模块与用户端交互以建立所述用户端与所述执行节点之间的安全信道之后:通过所述安全信道接收来自所述用户端的用户指令;以及,
在所述用户指令为第一操作指令时,屏蔽除来自所述安全信道以外的用户指令;
和/或,
在所述用户指令为第二操作指令时,对安全执行空间进行核查,以将得到的核查报告通过所述安全信道发送给所述用户端;
和/或,
在所述用户指令为第三操作指令时,删除所述安全执行空间内的预定部分的秘密数据或者全部的秘密数据;
和/或,
在所述用户指令为第四操作指令时,将所述安全执行空间内的密钥库加密存储至所述服务器的存储器中,并通过所述安全信道向所述用户端返回用于读取密钥库和对密钥库进行解密的数据;
和/或,
在所述用户指令为包括地址标识和解密密钥的第五操作指令时,根据所述地址标识在所述服务器的存储器中获取加密后的密钥库,使用所述解密密钥对加密后的密钥库进行解密,以将解密后的密钥库配置于所述安全执行空间内。
在一种可能的设计中,所述运算参数集包括用于定义运算规则的第一子集和用于携带运算数据的的参数子集,所述执行模块包括:
执行单元,用于根据所述运算子集和所述参数子集进行运算以获取运算结果;
存储单元,用于在检测到所述运算参数集中还包括暂存标记时,将所述运算结果存储在所述安全执行空间内,并为存储后的所述运算结果分配对应的数据标识;
相应的,所述返回模块进一步用于向所述用户应用返回所述数据标识。
在一种可能的设计中,所述执行单元进一步用于:
当所述参数子集中包含有至少一个数据标识时,所述执行节点在所述安全执行空间内获取与所述至少一个数据标识对应的运算结果,并使用获取到的运算结果根据所述运算子集和所述参数子集进行运算以获取运算结果。
在一种可能的设计中,所述运算参数集还包括指令标识和输入数据;所述执行模块包括:
确定单元,用于确定与所述指令标识对应的运算指令函数;其中,所述运算指令函数与所述指令标识相互对应地配置在所述安全执行空间内的运算指令库中;
输入单元,用于将所述输入数据和获取到的用户密钥输入到所述运算指令函数中以获取执行结果。
在一种可能的设计中,所述执行节点中配置有接入函数;所述第一接收模块进一步用于:
在所述用户应用对所述接入函数的调用经过所述预设接口的访问权限验证之后,所述执行节点通过所述接入函数接收作为函数参数的所述运算参数集。
本发明的实施例提供的密钥保护方法及装置,能够将用户密钥和进行密码运算的过程全部封装在安全执行空间内部,而外部的用户应用采用密钥标识代替用户密钥来发起密码运算,使得用户密钥和进行密码运算的过程对于操作系统和虚拟机监视器等特权级软件而言不可见,从而降低云服务器中的特权级软件对用户密钥造成的安全威胁,有效保障用户数据和用户业务的完整性。
附图说明
图1是本发明的实施例所涉及的一种云服务的架构示意图;
图2是本发明的实施例所涉及的一种密钥保护方法的流程图;
图3至图6是本发明的实施例所涉及的一种密钥保护方法中建立安全执行空间的过程示意图;
图7是本发明的实施例所涉及的一种密钥保护装置的结构框图;
图8是本发明又一实施例所涉及的一种密钥保护装置的结构框图;
图9是本发明又一实施例所涉及的一种密钥保护装置的结构框图;
图10是本发明的实施例所涉及一种计算机设备的结构示意图。
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。
本发明的实施例描述的网络架构以及业务场景是为了更加清楚的说明本发明的实施例的技术方案,并不构成对于本发明的实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本发明的实施例提供的技术方案对于类似的技术问题,同样适用。
图1是本发明的实施例所涉及一种云服务的架构示意图。参见图1,用户110可以通过例如个人计算机120或是便携式终端130等用户设备上运行的用户端,藉由用户设备与云服务器140之间的网络连接登录虚拟机(Virtual Machine,VM),从而通过虚拟机上运行的操作系统(Operating System,OS)和应用使用云服务器的物理资源。
用户端:用户通过该用户端接入云服务器,用户可以通过用户端申请开通云服务业务,申请虚拟机,以及申请重置虚拟机OS登录密码等业务,该用户端可以基于例如WebPortal,IOS,安卓,以及Windows等等的平台。该用户端可以安装在用户设备上,本申请所涉及到的用户设备可以包括各种具有通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到各类网络的其它处理设备,以及各种形式的用户设备(User Equipment,简称UE),移动台(Mobile Station,简称MS),终端设备(Terminal Equipment)等等。为方便描述,本申请中,这些设备统称为用户设备。
云服务器:可以为各种类型的服务器设备,用于提供物理资源。在一种可能的设计中,云服务器上运行有虚拟机监视器(Virtual Machine Monitor,VMM),该VMM是云服务器中位于操作系统和物理硬件之间的程序,VMM可将物理资源虚拟成多个虚拟机。虚拟机是一台虚拟的计算机,也即一台逻辑计算机。VMM可以隔离并且管理上层运行的多个虚拟机,仲裁它们对物理硬件的访问,并为每个虚拟机各自虚拟出一套独立于实际硬件的虚拟硬件环境(包括处理器,内存,输入输出设备等等)。
如图1所示,示例性的,云服务器140中的VMM将物理资源虚拟成若干个虚拟机,其中一个虚拟机为用户110租用的虚拟机,该虚拟机上安装有云服务商(CSP)提供的操作系统,使用户110可以基于个人计算机120或便携式终端130与云服务器140之间的网络通信使用该操作系统上安装的各个应用。
在一个示例中,用户110基于便携式终端130与云服务器140之间的网络通信在虚拟机的操作系统上运行视频播放器的应用,视频播放器在用户指令下使用该虚拟机的虚拟硬件环境所提供的物理资源依次完成视频文件加载、视频解码和视频流输出的流程,输出的视频流再通过网络传输到达便携式终端130,使得便携式终端130播放接收到的视频流,实现视频播放器的视频文件播放。可以看出,视频播放器的运行环境是云服务器140上的虚拟机提供的,而例如视频文件加载、视频解码和视频流输出的过程实际上是由云服务器140的物理硬件通过执行计算机指令来完成的。在此过程中,便携式终端130主要负责提供用户输入和用户输出,以及与云服务器140上的虚拟机进行网络通信。
为方便描述,本实施例中将虚拟机的操作系统上运行的用户可用的程序(Program)、应用(Application)、服务(Service)等等软件统称为用户应用。在上述视频播放的场景下,存储在云服务器140上的视频文件属于用户110的私有数据,可以通过存储前加密、读取时解密的方式保障其数据安全,加密和解密时所使用的密钥均为用户110私有的用户密钥。值得注意的是,对视频文件进行解密的过程发生在云服务器140中,所以在此之前用户110需要向云服务器140提供用于解密的用户密钥,例如预先将该用户密钥与视频文件在云服务器140中对应存储。然而,云服务器140中存储明文的用户密钥会带来用户密钥泄露的风险。为克服这一缺陷,云服务商会配置硬件安全模块(HSM)来对用户密钥进行硬件加密,采用密文存储用户密钥、使用时再通过硬件解密读取的方式来保护用户密钥的安全。
但是,HSM的应用并不能消除云服务器上特权级软件所带来的安全威胁。如图1所示,用户应用在使用物理资源进行加密或解密时,外存储器和内存储器中的数据对于操作系统和虚拟机监视器这些运行在特权级的底层软件而言都是可见的,通过操作系统或虚拟机监视器可以很容易地窃取到用户应用在加密或解密时所使用的用户密钥,。
针对上述问题,图2是本发明的实施例提供的一种密钥保护方法的流程图,该密钥保护方法可以应用于如图1所示的云服务架构,以降低云服务器中的特权级软件对用户密钥造成的安全威胁。参见图2,该方法包括:
步骤201、用户端向服务器发送至少一个用户密钥的密钥标识。
其中,至少一个用户密钥的密钥标识的示例如下表1所示。
表1用户密钥的密钥标识示例
需要说明的是,本实施例中的用户密钥指的是用户所私有的、主要在加密和解密时使用的数据,可以通过字符或数字等形式表示。而本实施例中的密钥标识可以是任意一种能够将各个用户密钥相互区分开的标识数据,例如密钥名称(如“RSA签名密钥”)、密钥在用户设备中的存储位置、密钥在密钥序列的序号、任意程序为密钥分配的ID,或者其中至少两项的组合,等等。本实施例中,密钥标识将会代替用户密钥在不安全的数据路径中传输,因此根据密钥标识的数据在不知晓对应关系的情况下推导出用户密钥(比如在不知道对应关系的情况下根据数据“key_1”推导出数据“0xA4B790”)的难度越大,越有利于保护用户密钥的安全。而且,建立用户密钥与密钥标识之间的对应关系的主体可以例如是第三方服务器、用户端、应用程序、用户自身,或者其组合。此外,密钥标识的数据量越小,越有利于相关处理过程和传输过程的效率的提升。
在一个示例中,用户端通过网络接口向服务器发送一个映射表,该映射表中记载了虚拟机内部使用的密钥标识符与上述至少一个用户密钥的密钥标识之间的映射关系,使得虚拟机上运行的用户应用能够根据密钥标识符获取到对应的密钥标识。
步骤202、在发起使用用户密钥的运算时,用户应用获取与所要使用的用户密钥对应的密钥标识。
其中,所述使用用户密钥的运算可以例如是对称加密、非对称加密、对称解密、非对称解密、签名、签名验证、密钥共识运算、消息认证码(Message Authentication Code,MAC)运算,或者其中至少两项的结合等等,为叙述方便,下文统称为密码运算。本实施例中,每一个密码运算都对应一个运算参数集,运算参数集中包含与所要使用的用户密钥对应的密钥标识。在一个示例中,可以预先设置运算参数集(key_1,key_3)与下述密码运算对应:采用用户密钥“C1DB921F”对用户密钥“0xA4B790”以默认算法加密,运算结果为加密后得到的数据。在具体实施时,本领域技术人员可以根据所要实现的密码运算设置运算参数集的元素数量和每个元素所代表的参数的含义,例如设置第3个元素代表使用算法的类型,设置第4个元素代表第一个输入数据等等,本申请不做限制。
需要说明的是,用户应用在本步骤中获取的是密钥标识而不是用户密钥,这意味着用户应用在发起密码运算不需要获取明文的用户密钥。在一个示例中,作为用户应用的视频播放器需要加载存储在服务器中经过加密的视频文件,因而视频播放器可以在上述来自用户端的映射表中,根据外存储器解密密钥的密钥标识符查找到对应的密钥标识为“key_2”,完成与所要使用的用户密钥对应的密钥标识的获取,而无需获取其对应的用户密钥“0xC4BE17F”。
在其他可能的设计中,服务器上的密钥标识除了可以来自于用户端的发送之外,还可以来源于上述任意一种网络设备,使得用户应用可以通过其他方式获取密钥标识。而且,用户应用可以在发起密码运算时再获取对应的密钥标识,即在其他可能的设计中,上述至少一个用户密钥的密钥标识并不一定要存储在服务器上。
在一个示例中,用户可以将用户密钥保管在受信任的第三方服务器上,由第三方服务器为每个用户密钥分配密钥标识,从而用户在登录虚拟机之后,可以通过用户应用从该第三方服务器上获取密钥标识,具体方式可以是用户应用从该第三方服务器上下载上述映射表,也可以是用户应用在发起运算时通过该第三方服务器获取对应的密钥标识。
步骤203、用户应用通过预设接口将运算参数集传递给执行节点。
其中,所述执行节点配置在安全执行空间内。本实施例中,安全执行空间指的是预先建立在服务器上的一个能够阻止特权级代码(例如特权级为RING0,RING1和RING2的代码,包括而不仅限于操作系统和虚拟机监视器的程序代码)的外部访问的特殊空间,安全执行空间内可以存储数据、配置程序代码以及容纳计算机指令的执行。需要说明的是,上述能够阻止特权级代码的外部访问的功能可以是安全执行空间在建立之后才具有的,还可以被配置为在外部控制指令下开启和关闭,或是在生存周期内始终开启,本申请对此不做限制。而且可以理解的是,上述预设接口被配置为允许从外部访问安全执行空间的途径。
在一个示例中,安全执行空间被配置为只允许内部代码(例如上述执行节点)以及最底层CPU指令的访问,因而全部的特权级代码(包括操作系统和虚拟机监视器)都不能通过预设接口以外的方式从外部访问安全执行空间。而且,安全执行空间在内存中的数据都是经过加密的,直接从内存中读取数据不能得到明文数据。上述预设接口被配置为能够在被调用时验证调用来源的访问权限,并在验证通过时将调用来源请求传递的数据传递给安全执行空间内的执行节点,以触发执行节点的对应操作。
步骤204、执行节点接收用户应用通过预设接口传递的运算参数集。
其中,执行节点是配置在安全执行空间内的代码,能够不受限制地访问安全执行空间内的数据,并且其受到安全执行空间的保护,代码本身和代码的执行过程对外部程序而言不可见。
在本实施例中,上述预设接口配置在安全执行空间的边界上,主要用于将外部数据传递至安全执行空间的执行节点。在一个示例中,执行节点中配置有接入函数,接入函数的入口地址位于安全执行空间的受保护的内存空间中,因此调用接入函数需要进入安全执行空间。在运算参数集的传递过程中,用户应用将运算参数集作为函数参数调用执行节点中的接入函数,此时预设接口在检测到接入函数的调用时,验证调用接入函数的程序是否具有安全执行空间的访问权限,并在判定验证失败时,将所请求的接入函数的入口地址替换为中止(abort)函数的入口地址,使得调用接入函数的程序中止运行,以阻止不能通过访问权限验证的程序访问安全执行空间。而在预设接口判定用户应用通过访问权限验证时,则允许用户应用对接入函数的调用,以通过函数参数传递的方式,实现运算参数集在用户应用和执行节点之间的传递。在该示例中,执行节点对用户应用而言相当于可供调用的外部函数,而预设接口则可以通过访问权限验证阻挡无访问权限的程序(包括特权级代码)的调用,利用函数调用机制整合数据传递过程和访问权限验证过程,有助于提升用户应用通过执行节点执行密码运算的过程中的逻辑处理效率。
步骤205、执行节点从密钥库中获取与密钥标识对应的用户密钥。
其中,密钥库属于安全执行空间内存储的数据,可以包含若干组相互对应的用户密钥和密钥标识,记录用户密钥与密钥标识之间的映射关系。在一个示例中,密钥库包含如表1所示的用户密钥和密钥标识,从而可以根据密钥标识“key_1”获取到对应的用户密钥“0xA4B790”,根据密钥标识“key_3”获取到对应的用户密钥“C1DB921F”,用以在安全执行空间内进行密码运算。
步骤206、执行节点使用获取到的用户密钥在安全执行空间内执行与运算参数集对应的运算。
在一个示例中,执行节点按照预先设置的对应关系,执行与运算参数集(key_1,key_3)对应的密码运算:采用用户密钥“C1DB921F”对用户密钥“0xA4B790”以默认算法加密,得到加密后的数据作为执行结果。在另一个示例中,执行节点按照预先设置的对应关系,执行与运算参数集("RSA签名密钥",RSA,data2)对应的密码运算:使用获取到的与“RSA签名密钥”对应的用户密钥,通过与参数“RSA”对应的RSA算法,对变量“data2”的值进行数字签名,并将得到的签名数据作为执行结果。需要说明的是,运算参数集所包含的参数数量可以是变化的;相应的,执行节点可以针对不同的参数数量的运算参数集分别执行不同的运算流程,以同时支持多种类型的密码运算。
在一种实现方式中,安全执行空间内可以预先配置有分别与若干个算法标识中的一个对应的算法函数,算法函数被配置为能够被执行节点调用,并在被调用时根据调用时的参数结合实现指定的算法。比如,上述参数“RSA”作为算法标识与配置在安全执行空间内的算法函数“RSAencrypt”对应。该算法函数可以根据输入的用户密钥(key_a,key_b)和输入量Data_in计算出输出量Data_out=(Data_in*key_b)mod key_a,其中“mod”表示求余运算,以实现RSA公钥加密算法的加密运算和解密运算。此外,可以将算法函数与算法标识对应存储以形成算法库,以使执行节点能够根据运算参数集中的算法标识获取到对应的算法函数以进行调用。在实施时,可以预先根据可能被使用到的算法(比如数据加密标准算法DES、高级加密标准算法AES、RSA算法、数字签名算法DSA、椭圆曲线密码算法ECC、消息认证码算法MAC等等中的一个或多个)构建算法函数,构建时可以将固定不变的参量固化在算法函数中,将可能会改变的参量作为算法函数的函数参数。基于构建好的算法函数,可以设置对应的算法标识以形成算法库。在一种示例中,算法标识可以与密钥标识以相同方式提供给用户应用,而算法库可以与密钥库以相同方式配置在安全执行空间中,本申请对此不做限制。
步骤207、执行节点向用户应用返回执行结果。
可理解的是,执行结果可以包括密码运算的输出量,可以包括运算完成情况的标识符,还可以为空,具体取决于运算参数集与执行节点的配置。在一个示例中,作为执行结果的签名数据以接入函数的返回值的形式传递给用户应用,使得用户应用在得到返回值之后继续执行后续的代码。
基于上述过程可以理解的是,本实施例中的用户应用可以发起密码运算,但用户应用本身不进行具体的密码运算,而是转由执行节点在安全执行空间内进行,相当于安全执行空间内的执行节点能够为用户应用提供密码运算的服务。由此,用户应用的进程空间内存在密钥标识而不存在用户密钥,因而操作系统和虚拟机监视器虽然能够访问到用户应用的进程空间,但并不能由此窃取用户密钥。
可以看出的是,本实施例的方法将用户密钥和进行密码运算的过程全部封装在安全执行空间内部,而外部的用户应用采用密钥标识代替用户密钥来发起密码运算,使得用户密钥和进行密码运算的过程对于操作系统和虚拟机监视器等特权级软件而言不可见,从而降低云服务器中的特权级软件对用户密钥造成的安全威胁。例如,在安全执行空间的保护下,操作系统和虚拟机监视器无法访问到密钥库以及执行节点的进程空间,因而其管理工具的恶意使用和安全漏洞的出现并不会威胁到用户密钥的安全。
需要说明的是,本实施例的安全执行空间能够存储数据、配置程序代码以及容纳计算机指令的执行,并具有能够阻止特权级代码的外部访问的特性。
在一个示例中,上述安全执行空间具有以下特性:第一,安全执行空间内的数据与外部空间相互隔离,只有安全执行空间内的代码才能读写安全执行空间的数据,而外部代码无论在什么当前特权级别(Current Privilege Level,CPL)和处理器模式(CPU mode)下都无法读取或写入安全执行空间的数据。第二,访问安全执行空间的方式只有配置有保护性检查的预设接口,而传统形式的函数调用(function call)、跳转(jump)、寄存器操作(register manipulation)和堆栈操作(stack manipulation)等都不能访问安全执行空间。第三,安全执行空间使用加密的内存,加密密钥在每个电源周期(例如启动时,以及从睡眠和休眠状态中恢复时)内随机变更,并且加密密钥存储在处理器中而不可访问。第四,除了配套设置的专用调试器,安全执行空间不能被其他软件或硬件调试器调试。在一种实现方式中,安全执行空间包含受保护的外存储器空间、受保护的内存储器空间,并且有可执行代码配置在这些空间内。
在该示例中,安全执行空间能够通过读写控制、访问控制、内存控制、以及调试控制等方面来降低由外部代码带来的安全威胁,提升配置在安全执行空间的内部的执行节点和密钥库的安全性。在具体实施时,可以在本实施例能够实现的范围内基于任意一种可信执行环境(Trusted Execution Environment,TEE)技术实现安全执行空间,例如OP-TEE、Open-TEE、TLK、ARM TrustZone、Intel SGX、SecuriTEE、Trustonic TEE等等。
在一个相对特殊的场景下,用户应用所发起的一次密码运算的运算结果是一系列密码运算的中间数据,并且该中间数据包含有用户的秘密数据。此时,若将中间数据添加在执行结果中发送给用户应用,则可能会导致秘密数据的泄露。为改善这一缺陷,在图2所示流程的基础上,可以在运算参数集中设置一个参数位置用来设置暂存标记,即设置运算参数集包括用于定义运算指令的第一子集(包含至少一个的参数位置)和用于设置暂存标记的第二子集(除了包含用来设置暂存标记的参数位置之外,还可以包含任意数量的参数位置来容纳其他与运算指令无关的运算参数)。从而,可以将执行节点配置为:先执行与第一子集对应的运算指令以获取运算结果,然后在第二子集中包含暂存标记时,执行节点将运算结果存储在安全执行空间内,为存储后的运算结果分配对应的数据标识,并将数据标识代替运算结果添加在执行结果中。基于此,在预先确定密码运算的执行结果中包含有用户的秘密数据时,可通过暂存标记的设置使运算结果存储在安全执行空间中而不返回给用户应用,因此可以改善上述缺陷。当然,在第二子集中不包含暂存标记时,可以直接将运算结果添加在执行结果中并返回给用户应用,即在一般情况下可以默认地将运算结果返回给用户应用。
在此基础之上,上述执行与所述第一子集对应的运算指令可以具体包括:在所述第一子集中包含有至少一个数据标识时,所述执行节点在所述安全执行空间内获取与所述至少一个数据标识对应的运算结果,以使用获取到的运算结果执行与所述第一子集对应的运算指令。基于此,对于在暂存标记的指示下存储在安全执行空间中的中间数据,用户应用可以使用其对应的数据标识来发起使用中间数据的密码运算,即可以在中间数据不出安全执行空间的情况下实现所需要的密码运算,保障用户的秘密数据的安全。
在一个示例中,用户应用所要执行的操作包括:先将用户密钥key_1与用户密钥key_2按照密钥共识协议(key Agreement Protocol,KAP)得到共识密钥key_kap,然后在获取到数据data1时采用共识密钥key_kap对其加密。其中,共识密钥key_kap属于用户的秘密数据,在OS和VMM不受信任的情况下不应添加在执行结果中返回给用户应用。在该示例下,用户应用需要先后发起“密钥共识运算”和“加密运算”这两次密码运算,也就是说先以第一运算参数集进行一遍上述步骤202至步骤207的流程,再以第二运算参数集进行一遍上述步骤202至步骤207的流程。其中,第一运算参数集(key_1,key_2,KAP,1)包括可表示为{KAP}的运算子集、可表示为{key_1,key_2}的参数子集,以及暂存标记“1”;第二运算参数集(#005,data_1,RSA,)包括可表示为{RSA}的运算子集和可表示为{#005,data_1}的参数子集(第二运算参数集的第四个参数位置留空,即不包含暂存标记)。
本示例中,上述步骤203中用户应用将运算参数集传递给执行节点的过程具体包括附图中未示出的两个子步骤:
步骤2031、执行节点根据所述运算子集和所述参数子集进行运算以获取运算结果。其中,在参数子集中包含有至少一个数据标识时,执行节点在安全执行空间内获取与至少一个数据标识对应的运算结果,并使用获取到的运算结果根据所述运算子集和所述参数子集进行运算以获取运算结果。
步骤2032、当检测到参数子集中还包括暂存标记时,执行节点将运算结果存储在安全执行空间内,并为存储后的运算结果分配对应的数据标识。
相对应地,上述步骤207、执行节点向用户应用返回执行结果,具体包括:
执行节点向用户应用返回所述数据标识。
在与上述第一运算参数集对应的密码运算过程中,上述步骤2031包括根据运算子集{KAP}和参数子集{key_1,key_2}进行运算(其中,“key_1”和“key_2”为上述密钥标识,“KAP”为与密钥共识的算法函数对应的算法标识),即具体包括:分别获取与“key_1”对应的用户密钥和与“key_2”对应的用户密钥;将与“key_1”对应的用户密钥和与“key_2”对应的用户密钥作为函数参数,调用与“KAP”对应的算法函数,以得到作为运算结果的共识密钥key_kap。
在与上述第一运算参数集对应的密码运算过程中,上述步骤2032包括:在得到共识密钥key_kap之后,执行节点通过判断确定运算参数集的第四个参数位置上是“1”,即包含暂存标记,因而将共识密钥存储在安全执行空间内的一个数据链表中,并将数据链表的存储序号“#005”作为共识密钥的数据标识,直接在步骤207中作为执行结果返回给用户应用。
在与上述第一运算参数集对应的密码运算过程结束之后,用户应用得到的执行结果中包含了共识密钥key_kap的数据标识“#005”,因此可以将该数据标识“#005”暂存,以等到数据data1的获取过程完成之后,再生成第二运算参数集(#005,data_1,RSA,),以发起与上述第二运算参数集对应的密码运算。在第二运算参数集中,除了数据标识“#005”之外,“data_1”为与数据data1对应的变量名,“RSA”为与RSA加密算法的算法函数对应的算法标识,第四个参数位置的空白表示没有暂存标记。
在与上述第二运算参数集对应的密码运算过程中,用户应用将上述第二运算参数集传递给执行节点,以使执行节点在上述步骤2031中:通过判断确定参数子集中的“#005”为数据标识,根据数据标识“#005”从上述数据链表中提取出共识密钥key_kap,从而根据运算子集{RSA}和参数子集{#005,data_1}进行运算,即:将提取出来的共识密钥key_kap和变量“data_1”的值作为函数参数,调用与“RSA”对应的RSA加密算法的算法函数,以得到加密后的数据data1,作为运算结果。
在与上述第二运算参数集对应的密码运算过程中,上述步骤2032包括:在得到加密后的数据data1之后,执行节点通过判断确定第二运算参数集中不包含暂存标记“1”,因此直接将加密后的数据data1作为执行结果,在上述步骤207中返回给用户应用。
可以看出的是,由于运算参数集中可以设置暂存标记,并且执行节点能够在接收到暂存标记时存储运算结果并返回替代运算结果的数据标识,使得用户可以使用包含暂存标记的运算参数集来保护包含有秘密数据的中间数据。而且,由于运算参数集中可以设置数据标识,并且执行节点能够在接收到数据标识时提取所存储的运算结果并用于密码运算,使得用户可以使用包含数据标识的运算参数集来提取所存储的数据以进行密码运算,即能够使存储在安全执行空间内的数据仍能根据运算参数集参与密码运算。由此,可以在完成密码运算的基础上避免由此引起的秘密数据泄露,增强密码运算过程的安全性。
在本申请的一个实施例中,在服务器中建立安全执行空间的过程具体包括:
参见图3,基于用户设备310与服务器320之间的网络连接,用户设备310上的用户端在服务器320的一个虚拟机的操作系统上创建用户应用APP,并通过用户应用APP:在服务器320中创建安全执行空间TEE,并向安全执行空间TEE内注入与执行节点D1对应的数据,以在安全执行空间内完成执行节点D1的配置。在一个示例中,用户应用APP触发安全执行空间TEE的创建流程,使服务器320的中央处理器在服务器320中划定出安全执行空间TEE的边界,并将与执行节点D1对应的数据(例如实现执行节点的全部可执行代码,以及可执行代码在运行过程中所需要利用的资源数据,等等)分批地写入到安全执行空间TEE内,使执行节点最终被配置为运行状态或可运行状态。这里需要说明的是,由于安全执行空间具有保护内部数据安全的特性,所以执行节点D1的代码在配置完成后无法被添加、更改或删除,因而执行节点D1的全部代码都预先由用户根据实际应用需求进行配置。
如图3所示,此时的密钥库D2的数据(包括用户密钥和密钥标识)还安全地保存在用户设备310上,但由于用户设备310与服务器320之间的网络通信,以及服务器320的整个软件运行环境均是不受信任的,因此在图3所示的过程中创建的用户应用APP、安全执行空间TEE,以及配置在安全执行空间TEE内的执行节点D1也都不受信任(此时安全执行空间能够阻止特权级代码的外部访问,但是执行节点可能已经被注入了恶意代码)。因此在图3所示的场景下,如果用户端为了在安全执行空间TEE内配置密钥库而向服务器320发送密钥库D2的数据,则有可能导致用户密钥的泄露。
为了保障用户密钥的安全,本实施例中首先进行用户端对安全执行空间的远程验证。其中,远程验证指的是用户端确定安全执行空间中的内容是否与预期一致的过程。本实施例中,安全执行空间TEE是用户端通过用户应用APP建立的,因此用户端可以记录或者推测安全执行空间TEE在建立后的内容,也就是能够获取到预期情况下的一定安全执行空间的预置范围内的数据的散列值(预期值)。从而,用户端可以通过执行节点D1获取预置范围内的数据的散列值,以根据该散列值结合其预期值对该预置范围内的数据进行完整性校验,从而确定安全执行空间中的内容是否与所预期的一致。其中,预置范围可以是预先由用户指定的,并可以包含安全执行空间内全部的可执行代码,以确保没有预期之外的代码被注入安全执行空间;而预置范围内的数据的散列值可以例如是在安全执行空间的建立过程中由中央处理器计算得到的,还可以例如是在获取散列值的过程中由执行节点计算得到的,本申请对此不做限制。
如图4所示,在一个示例中,用户端通过用户应用APP向执行节点D1传递一个随机数(nonce),以使执行节点D1计算安全执行空间TEE中全部存储数据(包括执行节点的全部代码)的散列值,并结合该随机数生成校验报告(校验报告中,散列值经过该随机数的加密),从而通过用户应用APP发送给用户端。在接收到校验报告之后,用户端可以根据随机数从校验报告中获取到上述散列值,并通过该散列值与其预期值的比较判断安全执行空间TEE中全部存储数据是否与所预期的完全一致,在确认完全一致时确定服务器中的安全执行空间TEE能够通过用户端的完整性校验。在不能通过时,说明安全执行空间TEE内可能混入了预期之外的存储数据,此时用户端可以对用户密钥向服务器的发送保持阻止,并且可以采取终止安全执行空间的建立、销毁该安全执行空间TEE、发起对虚拟机的安全性检测等手段来保护秘密数据的安全。在完整性校验通过时,说明包括执行节点D1的全部代码的存储数据是可信的,用户端可以在此基础上在安全执行空间内完成密钥库D2的配置。
如图5所示,在通过用户端的远程验证之后,执行节点D1基于自行生成的随机数(为描述方便以n1表示)采用预先配置好的曲线参数(包含椭圆曲线上的基点G0)以椭圆曲线加密(Elliptic Curve Cryptography,ECC)方式计算得到第一公钥KEY_A,其中KEY_A=n1*G0,从而将第一公钥KEY_A通过用户应用APP发送给用户设备310的用户端。另一方面,用户端预先生成了另一随机数(为描述方便以n2表示),并基于该随机数n2使用相同的曲线参数以ECC方式计算得到第二公钥KEY_B,其中KEY_B=n2*G0,并在执行节点D1配置完成之后通过用户应用APP将第二公钥KEY_B传递给执行节点D1。
基于ECC的特性,由第一公钥KEY_A和基点G0难以求解出随机数n1,由第二公钥KEY_B和基点G0也难以求解出随机数n2,所以用户端与执行节点D1之间进行的不安全通信并不会导致随机数n1和随机数n2的泄露。而且,根据交换律和结合律可以推知:n2*KEY_A=n2*(n1*G0)=n2*n1*G0=n1*n2*G0=n1*(n2*G0)=n1*KEY_B。由此,可以设置共有密钥KEY_Q=n2*KEY_A=n1*KEY_B,使得用户端在接收到第一公钥KEY_A之后由第一公钥KEY_A和随机数n2计算得到共有密钥KEY_Q,并使得执行节点D1在接收到第二公钥KEY_B之后由第二公钥KEY_B和随机数n1得到共有密钥KEY_Q。
通过上述过程,用户端通过与执行节点D1之间通过密钥协商得到了安全的共有密钥,从而使用该共有密钥进行加密通信的安全信道CH得以建立。在一个示例中,用户端将发送给执行节点的数据采用上述共有密钥加密,并将加密后的数据通过用户应用APP传递给执行节点D1(包括加密后的数据在用户端与服务器之间的传输,以及服务器的网络接口与用户应用之间的传输),使执行节点D1使用共有密钥对加密后的数据进行解密。执行节点D1向用户端发送数据的过程与之对应,由此实现了用户端与执行节点D1之间的安全通信。
如图6所示,在安全信道CH建立之后,用户端可以将密钥信息——包含用户密钥与密钥标识之间的映射关系的数据发送给执行节点D1,以通过执行节点D1根据所述用户密钥与密钥标识之间的映射关系在安全执行空间TEE内完成密钥库D2的配置,由此完成了安全执行空间的建立。可以看出,远程验证使用户确认了安全执行空间内代码的完整性,安全信道保障了用户密钥在传输过程中的安全性,而安全执行空间则能够保护内部的用户密钥不被特权级代码窃取,共同实现了云服务场景下的密钥保护。
在本申请的又一实施例中,基于建立在用户端与执行节点之间安全信道,可以实现用户端对安全执行空间的远程控制。
在一个示例中,用户端通过安全信道向执行节点发送第一操作指令,使得执行节点能够通过安全信道接收来自用户端的用户指令。执行节点在确定该用户指令为第一操作指令时,屏蔽除来自该安全信道以外的用户指令。在安全信道建立后屏蔽来自该安全信道以外的用户指令,能够将发送用户指令的权限限制到指定的用户端上,从而利用安全信道的机密性管理用户指令的相关权限。
在又一个示例中,用户端通过安全信道向执行节点发送第二操作指令,使得执行节点能够通过安全信道接收来自用户端的用户指令。执行节点在确定该用户指令为第二操作指令时,对安全执行空间进行核查(核查范围可以是指定的一部分或者全部,可以预先配置在执行节点的代码中),以将得到的核查报告通过安全信道发送给用户端。例如,执行节点将安全执行空间内的全部的可执行代码使用一个用户密钥加密压缩,并附在核查报告中发送给用户端。通过核查报告的生成和发送,用户端可以根据需要获取安全执行空间内存储数据的实际情况,作为进一步分析或用户操作的依据。
承接上例,在接收到来自执行节点的核查报告之后,用户端根据接收到的核查报告确定安全执行空间的安全风险等级。例如,用户端使用相应的用户密钥解压缩得到可执行代码,并通过与原始可执行代码进行比较、分析不同之处的安全风险等等,确定安全风险等级属于安全、轻度危险还是重度危险。基于安全风险等级的确定,用户端可以根据需要确认安全执行空间的安全状态,以及时应对可能导致秘密数据泄露的突发状况。
承接上例,在安全风险等级高于或等于预设等级时,用户端通过安全信道向执行节点发送第三操作指令,使得执行节点能够通过安全信道接收来自用户端的用户指令。例如,用户可以事前设置预设等级为重度危险,即在用户端确定接收到的核查报告表示安全执行空间的安全风险等级为重度危险时,通过安全信道向执行节点发送第三操作指令。执行节点在确定该用户指令为第三操作指令时,删除安全执行空间内的预定部分的秘密数据或者全部的秘密数据。例如,在确定用户指令为第三操作指令时,执行节点可以调用预先配置在安全执行空间中的擦除操作函数,将安全执行空间内所有秘密数据的清除。基于删除至少部分秘密数据的操作,用户端可以根据需要清除安全执行空间内的秘密数据,以应对突发状况下的数据泄露风险。
在又一个示例中,用户端通过安全信道向执行节点发送第四操作指令,使得执行节点能够通过安全信道接收来自用户端的用户指令。执行节点在确定该用户指令为第四操作指令时,将安全执行空间内的密钥库加密存储至服务器的存储器中,并通过安全信道返回用于读取密钥库和对密钥库进行解密的数据。例如,执行节点在接收到第四操作指令时可以调用预先配置在安全执行空间内的封存函数,以通过该封存函数在安全执行空间内完成对密钥库的加密,并将加密后的密钥库存储在服务器的外存储器中,最后通过安全信道向用户端发送加密时所使用的用户密钥的密钥标识,以及加密后的密钥库的存储位置。基于对密钥库的加密存储,使得服务器中任意一个安全执行空间都可能通过读取和解密完成密钥库的配置,而不需要用户端重复发送密钥库的数据,有助于降低网络带宽的占用,并能够减低用户密钥在传输过程中泄露的风险。
承上例,作为配置密钥库的一种示例,用户端可以通过安全信道向执行节点发送第五操作指令,第五操作指令包括与密钥库对应的地址标识和解密密钥,使得执行节点能够通过安全信道接收来自用户端的用户指令。执行节点在确定该用户指令为第五操作指令时,根据地址标识在服务器的存储器中获取加密后的密钥库,使用解密密钥对加密后的密钥库进行解密,以将解密后的密钥库配置于安全执行空间内。在这一过程中,安全信道的机密性保障了解密密钥和地址标识的安全,而执行节点在安全执行空间内的操作是外部程序不可见的,因此密钥库可以通过上述过程安全地配置在安全执行空间内。在一个示例中,一个安全执行空间在生命周期结束前在第四操作指令的指示下完成了密钥库的加密存储,此后另一个安全执行空间在创建后则在第五操作指令的指示下完成了密钥库的配置,从而省去了用户端向后创建的安全执行空间发送密钥信息的过程。
此外,一方面,在本申请可实现的范围内,除了可以基于ECC进行密钥交换来建立安全信道之外,还可以采用其他方式实现密钥协商,例如迪菲-赫尔曼密钥交换(Diffie–Hellman key exchange,DH)算法,或者DH与公钥加密算法(如RSA、ECC)的组合等等。此外,还可以采用其他方式建立安全信道,比如直接基于公钥加密算法,使用公钥加密发送数据、使用私钥解密接收数据,来实现安全信道的建立。基于用户端与所述执行节点之间的安全信道的建立,安全执行空间能够保护内部的共有密钥不被外部程序窃取,因而可以避免包括OS和VMM的服务器程序从传输数据流中窃取用户的秘密数据,从而与其他方面的安全保护手段相结合实现云服务场景下的密钥保护。而基于密钥协商的结合,用户端与执行节点可以在用户应用、OS和VMM均不受信任的情况下实现安全信道的建立,进一步提升数据传输的安全性。
又一方面,在本申请可实现的范围内,除了可以基于由随机数加密的散列值实现完整性校验之外,还可以在散列值计算范围、散列值计算算法等方面上增强远程验证的机密性。比如,执行节点D1可以进一步根据来自用户端的随机数在预先设置的若干个预置范围中确定散列值的计算范围,和/或,根据来自用户端的随机数在预先设置的若干个散列算法中确定散列值的计算算法,从而增加伪造校验报告的难度,提升远程校验的可靠程度。在其他实示例中,执行节点D1可以在配置完成后主动通过用户应用APP向用户端发送散列值未经加密的校验报告,而不需要来自用户端的触发。在其他示例中,所述预置范围内的数据除了可以是安全执行空间的全部存储数据之外,还可以是外部存储器空间和内部存储器空间中任意一种至少包含全部可执行代码的数据集合。基于对安全执行空间的预置范围内的数据的完整性校验,至少可以使用户端远程确认安全执行空间内所有可执行代码的完整性(包括确认可执行代码是否全部是用户配置的,以及可执行代码是否经过恶意删除或篡改),并使用户端在安全执行空间通过完整性校验之前阻止用户密钥向用户端的发送,以保护用户密钥的安全。
又一方面,在本申请可实现的范围内,安全信道的建立可以在远程验证之后进行,也可以在远程验证之前进行,还可以与远程验证并列地地进行,或是由同一个过程同时完成,本申请对此不做限制。其中,在远程验证之后建立安全信道的方式中,所建立的安全信道的秘密数据的安全性可由执行节点保障,因此更有利于通信安全的保障;而在远程验证之前建立安全信道的方式中,远程验证的数据传输可以使用所建立的安全信道,因此更有利于提升远程验证的可信度。
又一方面,在本申请可实现的范围内,配置有执行节点的安全执行空间除了可以由用户端通过用户应用建立之外,还可以由用户指定的第三方程序或第三方设备建立。例如,用户可以通过用户应用向第三方服务器请求配置数据,以使用户应用根据配置数据在服务器中建立配置有执行节点的安全执行空间;或者,用户可以通过服务器上的第三方应用在租用的虚拟机的操作系统中建立与安全执行空间对应的服务程序,以供操作系统上的用户应用使用。而在安全执行空间直接由用户应用建立的方式中,执行节点可以作为用户应用的额外代码创建,从而将执行节点与用户应用之间的数据传递限制在同一程序内部进行,不仅有利于省去程序间数据传递所需要的程序接口的设置,还有利于消除程序间数据传递所带来的安全隐患。
需要说明的是,由于安全执行空间能够保护内部数据不受外部程序影响,因此执行节点在配置完成后可能是无法变更的。由此,上述安全执行空间的建立过程以及密码运算的执行过程中所涉及的执行节点的操作都需要事先体现在与执行节点对应的可执行代码中。即,创建配置有执行节点的安全执行空间时,向安全执行空间中注入的数据与执行节点被配置的能够实现的功能之间相互对应。另外,虽然本实施例中所涉及的用户应用均指同一个用户应用,但在其他可能的设计中,发起密码运算、建立安全信道、创建安全执行空间等等不同功能,可以按任意方式分配给若干个不同的用户应用来实现,比如用户端通过第一用户应用发起密码运算,用户端通过第二用户应用建立安全信道,用户端通过第三用户应用创建安全执行空间等等,本申请对此不做限制。
参见图7,图7是是本发明的实施例所涉及的一种密钥保护装置的结构框图,该密钥保护装置,应用于服务器中运行的用户应用,包括第一获取模块410和传递模块420,其中:
第一获取模块410,于在发起使用用户密钥的运算时,获取与所要使用的用户密钥对应的密钥标识,以添加至与所述使用用户密钥的运算对应的运算参数集中;
传递模块420用于通过预设接口将所述运算参数集传递给安全执行空间内的执行节点,以使所述执行节点在所述安全执行空间内:从密钥库中获取与所述密钥标识对应的用户密钥,使用获取到的用户密钥执行与所述运算参数集对应的运算,并返回执行结果;
其中,所述密钥库存储在所述安全执行空间内;所述安全执行空间预先建立在所述服务器中,所述安全执行空间被配置为能够阻止特权级代码的外部访问。
可以看出的是,本实施例的装置将用户密钥和进行密码运算的过程全部封装在安全执行空间内部,而外部的用户应用采用密钥标识代替用户密钥来发起密码运算,使得用户密钥和进行密码运算的过程对于操作系统和虚拟机监视器等特权级软件而言不可见,从而降低云服务器中的特权级软件对用户密钥造成的安全威胁。
在一种可能的设计中,所述传递模块420包括调用单元,该调用单元用于调用配置在所述执行节点中的接入函数,以在经过所述预设接口的访问权限验证之后,将所述运算参数集作为函数参数传递给所述执行节点。
在一种可能的设计中,所述运算参数集包括用于定义运算规则的运算子集和用于携带运算数据的参数子集;所述传递模块420包括:
第一传递单元,用于通过所述预设接口将包含所述暂存标记的运算参数集传递给所述执行节点,以使所述执行节点在所述安全执行空间内:根据所述运算子集和所述参数子集进行运算以获取运算结果,将所述运算结果存储在所述安全执行空间内,为存储后的所述运算结果分配对应的数据标识,并返回所述数据标识;
接收单元,用于接收来自所述执行节点的数据标识;以及,
第二传递单元,用于通过所述预设接口将参数子集中包含所述数据标识的运算参数集传递给所述执行节点,以使所述执行节点在所述安全执行空间内:在所述安全执行空间内获取与所述数据标识对应的运算结果,以使用获取到的运算结果根据所述运算子集和所述参数子集进行运算以获取运算结果。
在一种可能的设计中,密钥保护装置还包括未予图示的建立模块,该建立模块用于在配置有所述执行节点的安全执行空间建立之后,在所述传递模块通过预设接口将所述运算参数集传递给执行节点之前,与用户端交互以建立所述用户端与所述执行节点之间的安全信道,以使所述用户端:通过所述安全信道将密钥信息发送给所述执行节点,以通过所述执行节点根据所述密钥信息中包含的用户密钥与密钥标识之间的映射关系在所述安全执行空间内完成所述密钥库的配置。
在一种可能的设计中,密钥保护装置还包括未予图示的第二获取模块和发送模块,其中的第二获取模块用于在所述用户端通过所述安全信道将密钥信息发送给所述执行节点之前,通过所述执行节点获取安全执行空间的预置范围内的数据的散列值,所述安全执行空间的预置范围内的数据包括所述安全执行空间内全部的可执行代码;上述发送模块用于将所述散列值发送给所述用户端,以使所述用户端:根据所述散列值对所述预置范围内的数据进行完整性校验,在完整性校验通过之前阻止用户密钥向所述服务器的发送。
在一种可能的设计中,密钥保护装置还包括未予图示的创建模块,和注入模块,其中的创建模块用于所述建立模块与用户端交互以建立所述用户端与所述执行节点之间的安全信道之前,在服务器中创建安全执行空间;上述注入模块用于向所述安全执行空间中注入与所述执行节点对应的数据,以在所述安全执行空间内完成所述执行节点的配置。
关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关方法的实施例中进行了详细描述,此处将不做详细阐述说明。
参见图8,图8是本发明又一实施例所涉及的一种密钥保护装置的结构框图,该密钥保护装置应用于用户端,包括第一发送模块510,该第一发送模块510用于向服务器发送至少一个用户密钥的密钥标识,以使所述服务器中运行的第一用户应用能够在发起使用用户密钥的运算时,能够获取到与所要使用的用户密钥对应的密钥标识;其中:
所述第一用户应用被配置为将获取到的密钥标识添加至与所述使用用户密钥的运算对应的运算参数集中,通过预设接口将所述运算参数集传递给安全执行空间内的执行节点;
所述执行节点被配置为在所述安全执行空间内:从密钥库中获取与所述密钥标识对应的用户密钥,使用获取到的用户密钥执行与所述运算参数集对应的运算,并将执行结果返回给所述第一用户应用;
所述密钥库存储在所述安全执行空间内;所述安全执行空间预先建立在所述服务器中,所述安全执行空间被配置为能够阻止特权级代码的外部访问。
可以看出的是,本实施例的装置将用户密钥和进行密码运算的过程全部封装在安全执行空间内部,而外部的用户应用采用密钥标识代替用户密钥来发起密码运算,使得用户密钥和进行密码运算的过程对于操作系统和虚拟机监视器等特权级软件而言不可见,从而降低云服务器中的特权级软件对用户密钥造成的安全威胁。
在一种可能的设计中,所述密钥保护装置还包括未予图示的建立模块和第二发送模块,其中的建立模块用于在配置有所述执行节点的安全执行空间建立之后,通过所述服务器中运行的第二用户应用与用户端交互以建立所述用户端与所述执行节点之间的安全信道;上述第二发送模块用于通过所述安全信道将密钥信息发送至所述执行节点,以通过所述执行节点根据所述密钥信息中包含的用户密钥与密钥标识之间的映射关系在所述安全执行空间内完成所述密钥库的配置。
在一种可能的设计中,所述建立模块进一步用于通过与所述执行节点之间的密钥协商得到共有密钥,以建立使用所述共有密钥进行加密通信的安全信道。
在一种可能的设计中,所述密钥保护装置还包括未予图示的校验模块和阻止模块,其中的校验模块用于在所述第二发送模块通过所述安全信道将密钥信息发送至所述执行节点之前,通过所述执行节点对安全执行空间的预置范围内的数据进行完整性校验,所述预置范围内的数据包括所述安全执行空间内全部的可执行代码;上述阻止模块用于在完整性校验通过之前,阻止用户密钥向服务器的发送。
在一种可能的设计中,所述密钥保护装置还包括未予图示的第三发送模块,所述第三发送模块用于在所述建立模块通过所述服务器中运行的第二用户应用与用户端交互以建立所述用户端与所述执行节点之间的安全信道之后:
通过所述安全信道向所述执行节点发送第一操作指令,以使所述执行节点在所述安全执行空间内:接收所述第一操作指令,屏蔽除来自所述安全信道以外的用户指令;和/或,
通过所述安全信道向所述执行节点发送第二操作指令,以使所述执行节点在所述安全执行空间内:接收所述第二操作指令,对安全执行空间进行核查,以将得到的核查报告通过所述安全信道发送给所述用户端;和/或,
通过所述安全信道接收来自所述执行节点的核查报告,以根据接收到的核查报告确定所述安全执行空间的安全风险等级;和/或,
在所述安全执行空间的安全风险等级高于或等于预设等级时通过所述安全信道向所述执行节点发送第三操作指令,以使所述执行节点在所述安全执行空间内:接收所述第三操作指令,删除所述安全执行空间内的预定部分的秘密数据或者全部的秘密数据;和/或,
通过所述安全信道向所述执行节点发送第四操作指令,以使所述执行节点在所述安全执行空间内:接收所述第四操作指令,将所述安全执行空间内的密钥库加密存储至所述服务器的存储器中,并通过所述安全信道返回用于读取密钥库和对密钥库进行解密的数据;和/或,
通过所述安全信道向所述执行节点发送第五操作指令,所述第五操作指令包括地址标识和解密密钥,以使所述执行节点在所述安全执行空间内:接收所述第五操作指令,根据所述地址标识在所述服务器的存储器中获取加密后的密钥库,使用所述解密密钥对加密后的密钥库进行解密,以将解密后的密钥库配置于所述安全执行空间内。
在一种可能的设计中,所述密钥保护装置还包括未予图示的创建模块和注入模块,其中的创建模块用于在所述建立模块通过所述服务器中运行的第二用户应用与用户端交互以建立所述用户端与所述执行节点之间的安全信道之前,通过所述服务器中运行的第三用户应用创建安全执行空间;上述注入模块,用于通过所述服务器中运行的第三用户应用向所述安全执行空间内注入与所述执行节点对应的数据,以在所述安全执行空间内完成所述执行节点的配置。
关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关方法的实施例中进行了详细描述,此处将不做详细阐述说明。
参见图9,图9是本发明又一实施例所涉及的一种密钥保护装置的结构框图,该密钥保护装置应用于配置在安全执行空间内的执行节点,所述安全执行空间建立在服务器中,所述安全执行空间被配置为能够阻止特权级代码的外部访问,所述密钥保护装置包括第一接收模块610、第一获取模块620、执行模块630和返回模块640,其中:
第一接收模块610用于接收所述用户应用通过预设接口传递的运算参数集,所述运算参数集与所要使用的用户密钥对应的密钥标识;
第一获取模块620用于从密钥库中获取与所述密钥标识对应的用户密钥;其中,所述密钥库存储在所述安全执行空间内;
执行模块630用于使用获取到的用户密钥在所述安全执行空间内执行与所述运算参数集对应的运算以获取执行结果;
返回模块640用于向所述用户应用返回执行结果。
可以看出的是,本实施例的装置将用户密钥和进行密码运算的过程全部封装在安全执行空间内部,而外部的用户应用采用密钥标识代替用户密钥来发起密码运算,使得用户密钥和进行密码运算的过程对于操作系统和虚拟机监视器等特权级软件而言不可见,从而降低云服务器中的特权级软件对用户密钥造成的安全威胁。
在一种可能的设计中,所述装置还包括附图中未示出的下述结构:
建立模块,用于在所述第一获取模块620从密钥库中获取与所述密钥标识对应的用户密钥之前,与用户端交互以建立所述用户端与所述执行节点之间的安全信道;
第二接收模块,用于通过所述安全信道接收所述用户端发送的密钥信息;其中,所述密钥信息中包括用户密钥与密钥标识之间的映射关系;
配置模块,用于根据所述用户密钥与密钥标识之间的映射关系在所述安全执行空间内完成所述密钥库的配置。
在一种可能的设计中,所述装置还包括附图中未示出的下述结构:
第二获取模块,用于在所述第二接收模块通过所述安全信道接收所述用户端发送的密钥信息之前,获取安全执行空间的预置范围内的数据的散列值,所述预置范围内的数据包括所述安全执行空间内全部的可执行代码;
发送模块,用于将所述散列值发送给所述用户端,以使所述用户端:根据所述散列值对所述预置范围内的数据进行完整性校验,在完整性校验通过之前阻止用户密钥向所述服务器的发送。
在一种可能的设计中,所述装置还包括附图中未示出的第三接收模块,所述第三接收模块用于在所述建立模块与用户端交互以建立所述用户端与所述执行节点之间的安全信道之后:通过所述安全信道接收来自所述用户端的用户指令;以及,
在所述用户指令为第一操作指令时,屏蔽除来自所述安全信道以外的用户指令;
和/或,
在所述用户指令为第二操作指令时,对安全执行空间进行核查,以将得到的核查报告通过所述安全信道发送给所述用户端;
和/或,
在所述用户指令为第三操作指令时,删除所述安全执行空间内的预定部分的秘密数据或者全部的秘密数据;
和/或,
在所述用户指令为第四操作指令时,将所述安全执行空间内的密钥库加密存储至所述服务器的存储器中,并通过所述安全信道向所述用户端返回用于读取密钥库和对密钥库进行解密的数据;
和/或,
在所述用户指令为包括地址标识和解密密钥的第五操作指令时,根据所述地址标识在所述服务器的存储器中获取加密后的密钥库,使用所述解密密钥对加密后的密钥库进行解密,以将解密后的密钥库配置于所述安全执行空间内。
在一种可能的设计中,在一种可能的设计中,所述运算参数集包括用于定义运算规则的第一子集和用于携带运算数据的的参数子集,所述执行模块630包括:
执行单元,用于根据所述运算子集和所述参数子集进行运算以获取运算结果;
存储单元,用于在检测到所述运算参数集中还包括暂存标记时,将所述运算结果存储在所述安全执行空间内,并为存储后的所述运算结果分配对应的数据标识;
相应的,所述返回模块进一步用于向所述用户应用返回所述数据标识。
在一种可能的设计中,所述执行单元进一步用于:
当所述参数子集中包含有至少一个数据标识时,所述执行节点在所述安全执行空间内获取与所述至少一个数据标识对应的运算结果,并使用获取到的运算结果根据所述运算子集和所述参数子集进行运算以获取运算结果。
在一种可能的设计中,所述运算参数集还包括指令标识和输入数据;所述执行模块630具体包括:
确定单元,用于确定与所述指令标识对应的运算指令函数;其中,所述运算指令函数与所述指令标识相互对应地配置在所述安全执行空间内的运算指令库中;
输入单元,用于将所述输入数据和获取到的用户密钥输入到所述运算指令函数中以获取执行结果。
在一种可能的设计中,所述执行节点中配置有接入函数;所述第一接收模块610进一步用于:
在所述用户应用对所述接入函数的调用经过所述预设接口的访问权限验证之后,所述执行节点通过所述接入函数接收作为函数参数的所述运算参数集。
关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图10是本发明的实施例所涉及一种计算机设备的结构示意图,该计算机设备可用于构成本申请中用于承载用户应用和安全执行空间的服务器,也可以用于构成本申请中用于承载用户端的用户设备。参见图10,计算机设备700包括至少一个处理器701,总线702,存储器703以及至少一个通信接口704。
处理器701可以包括通用中央处理器(CPU),微处理器,特定应用集成电路(Application-Specific Integrated Circuit,ASIC),数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器,或者多个用于控制程序执行的集成电路。
总线702主要用于在计算机设备700的其他组件之间传送信息。所述通信接口704主要用于与其他存储设备或者网络设备通信,在通信结构704为网络接口时,其所接入的网络可以例如是以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等等。
存储器703可以包括只读存储器(Read-Only Memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(Random Access Memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以包括电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立设置的,也可以和处理器集成在一起。
其中,所述存储器703用于存储可执行代码,并由处理器701来控制执行。所述处理器701用于执行所述存储器703中存储的可执行代码。
在具体实现中,作为一种实施例,处理器701可以包括一个或多个CPU,例如图2中的CPU0和CPU1。
在具体实现中,作为一种实施例,计算机设备700可以包括多个处理器,例如图2中的处理器701和处理器708。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算机设备700还可以包括输出设备705和输入设备706。输出设备705和处理器701通信,可以以多种方式来显示信息。例如,输出设备705可以是液晶显示器(Liquid Crystal Display,LCD),发光二级管(Light Emitting Diode,LED)显示设备,阴极射线管(Cathode Ray Tube,CRT)显示设备,或投影仪(Projector)等。输入设备706之间处理器701可藉由总线702通信,可以以多种方式接受用户的输入。例如,输入设备706可以是鼠标、键盘、触摸屏设备或传感设备等。
上述的计算机设备700可以是一个通用计算机设备或者一个专用计算机设备。在具体实现中,计算机设备700可以是台式机、便携式电脑、网络服务器、掌上电脑(PersonalDigital Assistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备、嵌入式设备或类似结构的设备。本发明的实施例不限定计算机设备700的类型。
需要说明的是,图2所示的计算机设备仅仅是给出了各部分的可能的硬件实现方式,根据系统各部分功能的不同或者变化,可以对计算机设备的硬件组件进行增删,以使得与系统各部分的功能进行匹配。
在图7、图8、图9对应的实施例中,密钥保护装置是以功能单元/功能模块的形式来呈现。这里的“单元/模块”可以指特定应用集成电路(Application Specific IntegratedCircuit,ASIC)电路,执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。在一个简单的实施例中,实现密钥保护装置的设备可以具有图2所示的形式。示例性的,第一获取模块410和传递模块420,第一发送模块510,第一接收模块610、第一获取模块620、执行模块630和返回模块640的功能可以通过由处理器来执行存储器中存储的程序代码来实现。
本发明的实施例还提供了一种计算机存储介质,用于储存为上述图7、图8或图9所示的密钥保护装置所用的计算机软件指令,其包含用于执行上述方法实施例所设计的程序。通过执行存储的程序,可以实现本申请提供的密钥保护方法。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
本领域技术人员应明白,本发明的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机程序存储/分布在合适的介质中,与其它硬件一起提供或作为硬件的一部分,也可以采用其他分布形式,如通过因特网或其它有线或无线电信系统。
本申请是参照本发明的实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种密钥保护方法,其特征在于,应用于配置在安全执行空间内的执行节点;其中,所述安全执行空间建立在服务器中,所述安全执行空间被配置为能够阻止特权级代码的外部访问;所述方法包括:
所述执行节点接收所述用户应用通过预设接口传递的运算参数集,所述运算参数集包括与所要使用的用户密钥对应的密钥标识;
所述执行节点从密钥库中获取与所述密钥标识对应的用户密钥;其中,所述密钥库存储在所述安全执行空间内;
所述执行节点使用获取到的用户密钥在所述安全执行空间内执行与所述运算参数集对应的运算以获取执行结果;
所述执行节点向所述用户应用返回所述执行结果。
2.根据权利要求1所述的方法,其特征在于,在所述执行节点从密钥库中获取与所述密钥标识对应的用户密钥之前,还包括:
所述执行节点与用户端交互以建立所述用户端与所述执行节点之间的安全信道;
所述执行节点通过所述安全信道接收所述用户端发送的密钥信息;其中,所述密钥信息中包括用户密钥与密钥标识之间的映射关系;
所述执行节点根据所述用户密钥与密钥标识之间的映射关系在所述安全执行空间内完成所述密钥库的配置。
3.根据权利要求2所述的方法,其特征在于,在所述执行节点通过所述安全信道接收所述用户端发送的密钥信息之前,还包括:
所述执行节点获取所述安全执行空间的预置范围内的数据的散列值,所述预置范围内的数据包括所述安全执行空间内全部的可执行代码;
所述执行节点将所述散列值发送给所述用户端,以使所述用户端:根据所述散列值对所述预置范围内的数据进行完整性校验,在完整性校验通过之前阻止用户密钥向所述服务器的发送。
4.根据权利要求2或3所述的方法,其特征在于,在所述执行节点与用户端交互以建立所述用户端与所述执行节点之间的安全信道之后,还包括:
所述执行节点通过所述安全信道接收来自所述用户端的用户指令;以及,
在所述用户指令为第一操作指令时,所述执行节点屏蔽除来自所述安全信道以外的用户指令;
和/或,
在所述用户指令为第二操作指令时,所述执行节点对安全执行空间进行核查,以将得到的核查报告通过所述安全信道发送给所述用户端;
和/或,
在所述用户指令为第三操作指令时,所述执行节点删除所述安全执行空间内的预定部分的秘密数据或者全部的秘密数据;
和/或,
在所述用户指令为第四操作指令时,所述执行节点将所述安全执行空间内的密钥库加密存储至所述服务器的存储器中,并通过所述安全信道向所述用户端返回用于读取密钥库和对密钥库进行解密的数据;
和/或,
在所述用户指令为包括地址标识和解密密钥的第五操作指令时,所述执行节点根据所述地址标识在所述服务器的存储器中获取加密后的密钥库,使用所述解密密钥对加密后的密钥库进行解密,以将解密后的密钥库配置于所述安全执行空间内。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述运算参数集包括用于定义运算规则的运算子集和用于携带运算数据的参数子集,所述执行节点使用获取到的用户密钥在所述安全执行空间内执行与所述运算参数集对应的运算以获取执行结果,包括:
所述执行节点根据所述运算子集和所述参数子集进行运算以获取运算结果;
当检测到所述运算参数集中还包括暂存标记时,所述执行节点将所述运算结果存储在所述安全执行空间内,并为存储后的所述运算结果分配对应的数据标识;
相应的,所述执行节点向所述用户应用返回所述执行结果,包括:
所述执行节点向所述用户应用返回所述数据标识。
6.根据权利要求5的方法,其特征在于,所述执行节点执行与所述第一子集对应的运算指令以获取运算结果,包括:
当所述参数子集中包含有至少一个数据标识时,所述执行节点在所述安全执行空间内获取与所述至少一个数据标识对应的运算结果,并使用获取到的运算结果根据所述运算子集和所述参数子集进行运算以获取运算结果。
7.根据权利要求1至4中任一项所述的方法,其特征在于,所述运算参数集还包括指令标识和输入数据;
所述执行节点使用获取到的用户密钥在所述安全执行空间内执行与所述运算参数集对应的运算以获取执行结果,包括:
所述执行节点确定与所述指令标识对应的运算指令函数;其中,所述运算指令函数与所述指令标识相互对应地配置在所述安全执行空间内的运算指令库中;
所述执行节点将所述输入数据和获取到的用户密钥输入到所述运算指令函数中以获取执行结果。
8.一种密钥保护装置,其特征在于,应用于配置在安全执行空间内的执行节点;其中,所述安全执行空间建立在服务器中,所述安全执行空间被配置为能够阻止特权级代码的外部访问;所述装置包括:
第一接收模块,用于接收所述用户应用通过预设接口传递的运算参数集,所述运算参数集与所要使用的用户密钥对应的密钥标识;
第一获取模块,用于从密钥库中获取与所述密钥标识对应的用户密钥;其中,所述密钥库存储在所述安全执行空间内;
执行模块,用于使用获取到的用户密钥在所述安全执行空间内执行与所述运算参数集对应的运算以获取执行结果;
返回模块,用于向所述用户应用返回所述执行结果。
9.根据权利要求8所述的装置,其特征在于,还包括:
建立模块,用于在所述第一获取模块从密钥库中获取与所述密钥标识对应的用户密钥之前,与用户端交互以建立所述用户端与所述执行节点之间的安全信道;
第二接收模块,用于通过所述安全信道接收所述用户端发送的密钥信息;其中,所述密钥信息中包括用户密钥与密钥标识之间的映射关系;
配置模块,用于根据所述用户密钥与密钥标识之间的映射关系在所述安全执行空间内完成所述密钥库的配置。
10.根据权利要求9所述的装置,其特征在于,还包括:
第二获取模块,用于在所述第二接收模块通过所述安全信道接收所述用户端发送的密钥信息之前,获取所述安全执行空间的预置范围内的数据的散列值,所述预置范围内的数据包括所述安全执行空间内全部的可执行代码;
发送模块,用于将所述散列值发送给所述用户端,以使所述用户端:根据所述散列值对所述预置范围内的数据进行完整性校验,在完整性校验通过之前阻止用户密钥向所述服务器的发送。
11.根据权利要求9或10所述的装置,其特征在于,还包括第三接收模块,所述第三接收模块用于在所述建立模块与用户端交互以建立所述用户端与所述执行节点之间的安全信道之后:通过所述安全信道接收来自所述用户端的用户指令;以及,
在所述用户指令为第一操作指令时,屏蔽除来自所述安全信道以外的用户指令;
和/或,
在所述用户指令为第二操作指令时,对安全执行空间进行核查,以将得到的核查报告通过所述安全信道发送给所述用户端;
和/或,
在所述用户指令为第三操作指令时,删除所述安全执行空间内的预定部分的秘密数据或者全部的秘密数据;
和/或,
在所述用户指令为第四操作指令时,将所述安全执行空间内的密钥库加密存储至所述服务器的存储器中,并通过所述安全信道向所述用户端返回用于读取密钥库和对密钥库进行解密的数据;
和/或,
在所述用户指令为包括地址标识和解密密钥的第五操作指令时,根据所述地址标识在所述服务器的存储器中获取加密后的密钥库,使用所述解密密钥对加密后的密钥库进行解密,以将解密后的密钥库配置于所述安全执行空间内。
12.根据权利要求8至11中任一项所述的装置,其特征在于,所述运算参数集包括用于定义运算规则的第一子集和用于携带运算数据的的参数子集,所述执行模块包括:
执行单元,用于根据所述运算子集和所述参数子集进行运算以获取运算结果;
存储单元,用于在检测到所述运算参数集中还包括暂存标记时,将所述运算结果存储在所述安全执行空间内,并为存储后的所述运算结果分配对应的数据标识;
相应的,所述返回模块进一步用于向所述用户应用返回所述数据标识。
13.根据权利要求12的装置,其特征在于,所述执行单元进一步用于:
当所述参数子集中包含有至少一个数据标识时,所述执行节点在所述安全执行空间内获取与所述至少一个数据标识对应的运算结果,并使用获取到的运算结果根据所述运算子集和所述参数子集进行运算以获取运算结果。
14.根据权利要求8至11中任一项所述的装置,其特征在于,所述运算参数集还包括指令标识和输入数据;所述执行模块包括:
确定单元,用于确定与所述指令标识对应的运算指令函数;其中,所述运算指令函数与所述指令标识相互对应地配置在所述安全执行空间内的运算指令库中;
输入单元,用于将所述输入数据和获取到的用户密钥输入到所述运算指令函数中以获取执行结果。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710079083.1A CN108429719B (zh) | 2017-02-14 | 2017-02-14 | 密钥保护方法及装置 |
PCT/CN2017/099285 WO2018149110A1 (zh) | 2017-02-14 | 2017-08-28 | 密钥保护方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710079083.1A CN108429719B (zh) | 2017-02-14 | 2017-02-14 | 密钥保护方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108429719A true CN108429719A (zh) | 2018-08-21 |
CN108429719B CN108429719B (zh) | 2020-12-01 |
Family
ID=63155090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710079083.1A Active CN108429719B (zh) | 2017-02-14 | 2017-02-14 | 密钥保护方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108429719B (zh) |
WO (1) | WO2018149110A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109450899A (zh) * | 2018-11-09 | 2019-03-08 | 南京医渡云医学技术有限公司 | 密钥管理方法及装置、电子设备、存储介质 |
CN109525396A (zh) * | 2018-09-30 | 2019-03-26 | 华为技术有限公司 | 一种身份秘钥的处理方法、装置和服务器 |
WO2020073206A1 (zh) * | 2018-10-09 | 2020-04-16 | 华为技术有限公司 | 芯片、生成私钥的方法和可信证明的方法 |
CN112699132A (zh) * | 2021-03-22 | 2021-04-23 | 阿里云计算有限公司 | 安全模块解密的方法以及装置 |
CN112738219A (zh) * | 2020-12-28 | 2021-04-30 | 中国第一汽车股份有限公司 | 程序运行方法、装置、车辆及存储介质 |
CN113225336A (zh) * | 2021-05-06 | 2021-08-06 | 安谋科技(中国)有限公司 | 信息加密传输方法、加解密装置、可读介质以及电子设备 |
CN114499975A (zh) * | 2021-12-28 | 2022-05-13 | 北京深思数盾科技股份有限公司 | 登录服务器的校验方法、服务器及存储介质 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110830243B (zh) * | 2019-10-18 | 2023-06-09 | 中国第一汽车股份有限公司 | 对称密钥分发方法、装置、车辆及存储介质 |
US11398901B2 (en) | 2020-03-26 | 2022-07-26 | Walmart Apollo, Llc | Restricted partial key storage |
CN113326518B (zh) * | 2021-06-09 | 2024-02-02 | 深圳前海微众银行股份有限公司 | 一种数据处理方法及装置 |
WO2023249548A1 (en) * | 2022-06-23 | 2023-12-28 | Canary Bit Ab | Methods and apparatus for data processing in a trusted execution environment |
CN114821751B (zh) * | 2022-06-27 | 2022-09-27 | 北京瑞莱智慧科技有限公司 | 图像识别方法、装置、系统及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727545A (zh) * | 2008-10-10 | 2010-06-09 | 中国科学院研究生院 | 一种安全操作系统强制访问控制机制的实施方法 |
CN103944729A (zh) * | 2014-04-25 | 2014-07-23 | 天地融科技股份有限公司 | 数据安全交互方法 |
CN104392188A (zh) * | 2014-11-06 | 2015-03-04 | 三星电子(中国)研发中心 | 一种安全数据存储方法和系统 |
US20150270956A1 (en) * | 2014-03-20 | 2015-09-24 | Microsoft Corporation | Rapid Data Protection for Storage Devices |
CN105260663A (zh) * | 2015-09-15 | 2016-01-20 | 中国科学院信息工程研究所 | 一种基于TrustZone技术的安全存储服务系统及方法 |
CN106104557A (zh) * | 2014-03-20 | 2016-11-09 | 甲骨文国际公司 | 用于从绑定到设备上的应用的主密钥获取秘密的系统与方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8468345B2 (en) * | 2009-11-16 | 2013-06-18 | Microsoft Corporation | Containerless data for trustworthy computing and data services |
US9270459B2 (en) * | 2011-09-20 | 2016-02-23 | Cloudbyte, Inc. | Techniques for achieving tenant data confidentiality from cloud service provider administrators |
CN103107995B (zh) * | 2013-02-06 | 2015-11-25 | 中电长城网际系统应用有限公司 | 一种云计算环境数据安全存储系统和方法 |
US9094377B2 (en) * | 2013-08-16 | 2015-07-28 | Netflix, Inc. | Key generation and broadcasting |
CN104601571A (zh) * | 2015-01-14 | 2015-05-06 | 浪潮电子信息产业股份有限公司 | 一种租户与云服务器存储交互的数据加密系统及方法 |
-
2017
- 2017-02-14 CN CN201710079083.1A patent/CN108429719B/zh active Active
- 2017-08-28 WO PCT/CN2017/099285 patent/WO2018149110A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727545A (zh) * | 2008-10-10 | 2010-06-09 | 中国科学院研究生院 | 一种安全操作系统强制访问控制机制的实施方法 |
US20150270956A1 (en) * | 2014-03-20 | 2015-09-24 | Microsoft Corporation | Rapid Data Protection for Storage Devices |
CN106104557A (zh) * | 2014-03-20 | 2016-11-09 | 甲骨文国际公司 | 用于从绑定到设备上的应用的主密钥获取秘密的系统与方法 |
CN103944729A (zh) * | 2014-04-25 | 2014-07-23 | 天地融科技股份有限公司 | 数据安全交互方法 |
CN104392188A (zh) * | 2014-11-06 | 2015-03-04 | 三星电子(中国)研发中心 | 一种安全数据存储方法和系统 |
CN105260663A (zh) * | 2015-09-15 | 2016-01-20 | 中国科学院信息工程研究所 | 一种基于TrustZone技术的安全存储服务系统及方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109525396A (zh) * | 2018-09-30 | 2019-03-26 | 华为技术有限公司 | 一种身份秘钥的处理方法、装置和服务器 |
CN109525396B (zh) * | 2018-09-30 | 2021-02-23 | 华为技术有限公司 | 一种身份秘钥的处理方法、装置和服务器 |
WO2020073206A1 (zh) * | 2018-10-09 | 2020-04-16 | 华为技术有限公司 | 芯片、生成私钥的方法和可信证明的方法 |
CN111264044A (zh) * | 2018-10-09 | 2020-06-09 | 华为技术有限公司 | 芯片、生成私钥的方法和可信证明的方法 |
US11722300B2 (en) | 2018-10-09 | 2023-08-08 | Huawei Technologies Co., Ltd. | Chip, private key generation method, and trusted certification method |
CN109450899A (zh) * | 2018-11-09 | 2019-03-08 | 南京医渡云医学技术有限公司 | 密钥管理方法及装置、电子设备、存储介质 |
CN109450899B (zh) * | 2018-11-09 | 2021-11-02 | 南京医渡云医学技术有限公司 | 密钥管理方法及装置、电子设备、存储介质 |
CN112738219A (zh) * | 2020-12-28 | 2021-04-30 | 中国第一汽车股份有限公司 | 程序运行方法、装置、车辆及存储介质 |
CN112699132A (zh) * | 2021-03-22 | 2021-04-23 | 阿里云计算有限公司 | 安全模块解密的方法以及装置 |
CN113225336A (zh) * | 2021-05-06 | 2021-08-06 | 安谋科技(中国)有限公司 | 信息加密传输方法、加解密装置、可读介质以及电子设备 |
CN114499975A (zh) * | 2021-12-28 | 2022-05-13 | 北京深思数盾科技股份有限公司 | 登录服务器的校验方法、服务器及存储介质 |
CN114499975B (zh) * | 2021-12-28 | 2023-05-26 | 北京深盾科技股份有限公司 | 登录服务器的校验方法、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108429719B (zh) | 2020-12-01 |
WO2018149110A1 (zh) | 2018-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108429719A (zh) | 密钥保护方法及装置 | |
EP3937424B1 (en) | Blockchain data processing methods and apparatuses based on cloud computing | |
CN111181720B (zh) | 基于可信执行环境的业务处理方法及装置 | |
CN110580413B (zh) | 基于链下授权的隐私数据查询方法及装置 | |
US8484486B2 (en) | Integrated cryptographic security module for a network node | |
US8261091B2 (en) | Solid-state memory-based generation and handling of security authentication tokens | |
TWI393148B (zh) | 整合至內建的記憶體子系統之安全共同處理記憶體控制器及最佳化處理器利用和產生增強的安全等級之方法 | |
CN113014539B (zh) | 一种物联网设备安全保护系统及方法 | |
Künnemann et al. | YubiSecure? Formal security analysis results for the Yubikey and YubiHSM | |
CN112889052A (zh) | 外围设备 | |
CN113014444B (zh) | 一种物联网设备生产测试系统及安全保护方法 | |
CN107851167A (zh) | 在计算环境中保护计算数据的技术 | |
US20120216242A1 (en) | Systems and Methods for Enhanced Security in Wireless Communication | |
CN104618096B (zh) | 保护密钥授权数据的方法、设备和tpm密钥管理中心 | |
TWI706658B (zh) | 密碼運算、創建工作密鑰的方法、密碼服務平台及設備 | |
CN105260663A (zh) | 一种基于TrustZone技术的安全存储服务系统及方法 | |
CN101317417A (zh) | 多核心系统的网络接入控制 | |
CN104335549A (zh) | 安全数据处理 | |
Kreutz et al. | ANCHOR: Logically centralized security for software-defined networks | |
CN104331329A (zh) | 支持域管理的移动办公安全系统及方法 | |
CN114036573A (zh) | 支持隐私计算的计算设备 | |
Johnston et al. | Recommendations for securing Internet of Things devices using commodity hardware | |
Galibus et al. | Elements of cloud storage security: concepts, designs and optimized practices | |
Cooijmans et al. | Secure key storage and secure computation in Android | |
EP3720042B1 (en) | Method and device for determining trust state of tpm, and storage medium |
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 |