CN113360857A - 一种软件的代码启动方法和系统 - Google Patents

一种软件的代码启动方法和系统 Download PDF

Info

Publication number
CN113360857A
CN113360857A CN202110911608.XA CN202110911608A CN113360857A CN 113360857 A CN113360857 A CN 113360857A CN 202110911608 A CN202110911608 A CN 202110911608A CN 113360857 A CN113360857 A CN 113360857A
Authority
CN
China
Prior art keywords
code
target
tee
key
software
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.)
Pending
Application number
CN202110911608.XA
Other languages
English (en)
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.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology 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 Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202110911608.XA priority Critical patent/CN113360857A/zh
Publication of CN113360857A publication Critical patent/CN113360857A/zh
Pending legal-status Critical Current

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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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

Landscapes

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

Abstract

本说明书实施例提供一种软件的代码启动方法和系统,该方法包括:预先在可信执行环境TEE对应的安全文件系统中存储目标软件中的目标代码的密文数据,且,预先由目标软件和TEE协商用于对目标代码进行加密的密钥,这样,目标软件在启动目标代码时,可以向TEE发送代码加载请求,TEE可以对已存储的目标代码的密文数据解密后再使用协商的密钥进行加密,然后传输给目标软件,目标软件解密后加载并运行目标代码。

Description

一种软件的代码启动方法和系统
技术领域
本文件涉及计算机技术领域,尤其涉及一种软件的代码启动方法和系统。
背景技术
软件中存在各种各样的核心功能,而每个功能的核心代码编译后得到的二进制数据是功能运行时的核心。通常,在启动核心代码时,可以直接将核心代码编译成二进制文件,然后由软件系统在启动过程中进行加载、解析、运行。
然而,随着网络环境的日益复杂,在软件的启动过程中,可能会出现非法用户劫持软件系统。如果非法用户(比如黑客)劫持了软件系统,那么,非法用户就可以截获系统中核心代码的二进制内容并通过反汇编来获取核心代码的内容,之后,非法用户可以篡改核心代码,并将篡改后的核心代码伪装成原来的核心代码进而由软件系统进行加载和运行,导致软件存在极大的安全隐患。
发明内容
本说明书实施例提供一种代码启动方法和系统,用于解决目前在加载软件中的核心代码时非法用户容易截获核心代码,导致软件存在极大安全隐患的问题。
为解决上述技术问题,本说明书实施例是这样实现的:
第一方面,提出一种软件的代码启动方法,应用于目标软件,包括:
向可信执行环境TEE发送代码加载请求,所述代码加载请求用于请求加载所述目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
接收由所述TEE返回的加密后的目标代码,所述加密后的目标代码由所述TEE对所述密文数据解密后再使用预先确定的密钥对所述目标代码进行加密得到,所述密钥由所述目标软件和所述TEE预先协商得到;
对所述加密后的目标代码进行解密,加载并运行解密后的目标代码。
第二方面,提出一种软件的代码启动装置,包括:
发送模块,向可信执行环境TEE发送代码加载请求,所述代码加载请求用于请求加载目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
接收模块,接收由所述TEE返回的加密后的目标代码,所述加密后的目标代码由所述TEE对所述密文数据解密后再使用预先确定的密钥对所述目标代码进行加密得到,所述密钥由所述目标软件和所述TEE预先协商得到;
启动模块,对所述加密后的目标代码进行解密,加载并运行解密后的目标代码。
第三方面,提出一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,该可执行指令在被执行时使该处理器执行以下操作:
向可信执行环境TEE发送代码加载请求,所述代码加载请求用于请求加载目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
接收由所述TEE返回的加密后的目标代码,所述加密后的目标代码由所述TEE对所述密文数据解密后再使用预先确定的密钥对所述目标代码进行加密得到,所述密钥由所述目标软件和所述TEE预先协商得到;
对所述加密后的目标代码进行解密,加载并运行解密后的目标代码。
第四方面,提出一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下方法:
向可信执行环境TEE发送代码加载请求,所述代码加载请求用于请求加载目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
接收由所述TEE返回的加密后的目标代码,所述加密后的目标代码由所述TEE对所述密文数据解密后再使用预先确定的密钥对所述目标代码进行加密得到,所述密钥由所述目标软件和所述TEE预先协商得到;
对所述加密后的目标代码进行解密,加载并运行解密后的目标代码。
第五方面,提出一种软件的代码启动方法,应用于TEE卡,包括:
接收由目标软件发送的代码加载请求,所述代码加载请求用于请求加载所述目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
对所述密文数据进行解密,得到所述目标代码;
使用预先确定的密钥对解密得到的所述目标代码进行加密,得到加密后的目标代码,所述密钥由所述目标软件和所述TEE预先协商得到;
将所述加密后的目标代码发送给所述目标软件,由所述目标软件进行解密后加载并运行解密后的目标代码。
第六方面,提出一种软件的代码启动装置,应用于TEE卡,包括:
接收模块,接收由目标软件发送的代码加载请求,所述代码加载请求用于请求加载所述目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
解密模块,对所述密文数据进行解密,得到所述目标代码;
加密模块,使用预先确定的密钥对解密得到的所述目标代码进行加密,得到加密后的目标代码,所述密钥由所述目标软件和所述TEE预先协商得到;
发送模块,将所述加密后的目标代码发送给所述目标软件,由所述目标软件进行解密后加载并运行解密后的目标代码。
第七方面,提出一种电子设备,应用于TEE卡,该电子设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,该可执行指令在被执行时使该处理器执行以下操作:
接收由目标软件发送的代码加载请求,所述代码加载请求用于请求加载所述目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
对所述密文数据进行解密,得到所述目标代码;
使用预先确定的密钥对解密得到的所述目标代码进行加密,得到加密后的目标代码,所述密钥由所述目标软件和所述TEE预先协商得到;
将所述加密后的目标代码发送给所述目标软件,由所述目标软件进行解密后加载并运行解密后的目标代码。
第八方面,提出一种计算机可读存储介质,应用于TEE卡,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下方法:
接收由目标软件发送的代码加载请求,所述代码加载请求用于请求加载所述目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
对所述密文数据进行解密,得到所述目标代码;
使用预先确定的密钥对解密得到的所述目标代码进行加密,得到加密后的目标代码,所述密钥由所述目标软件和所述TEE预先协商得到;
将所述加密后的目标代码发送给所述目标软件,由所述目标软件进行解密后加载并运行解密后的目标代码。
第九方面,提出一种一体机,所述一体机的PCIe插槽上插有TEE卡,包括:
发送模块,向所述TEE卡发送代码加载请求,其中,所述代码加载请求用于请求加载目标软件中的目标代码,所述TEE卡对应的安全文件系统中预先存储有所述目标代码的密文数据;
接收模块,接收由所述TEE卡返回的加密后的目标代码,其中,所述加密后的目标代码由所述TEE卡对所述密文数据解密后再使用预先确定的密钥对所述目标代码进行加密得到,所述密钥由所述一体机和所述TEE卡预先协商得到;
启动模块,对所述加密后的目标代码进行解密,加载并运行解密后的目标代码。
第十方面,提出一种TEE卡,包括:
接收模块,接收一体机发送的代码加载请求,其中,所述代码加载请求用于请求加载目标软件中的目标代码,所述TEE卡对应的安全文件系统中预先存储有所述目标代码的密文数据,所述TEE卡插在所述一体机的PCIe插槽上;
解密模块,对所述密文数据进行解密,得到所述目标代码;
加密模块,使用预先确定的密钥对解密得到的所述目标代码进行加密,得到加密后的目标代码,所述密钥由所述一体机和所述TEE卡预先协商得到;
发送模块,将所述加密后的目标代码发送给所述一体机,由所述一体机进行解密后加载并运行解密后的目标代码。
第十一方面,提出一种软件的代码启动系统,包括目标软件和TEE,其中:
所述目标软件向所述TEE发送代码加载请求,所述代码加载请求用于请求加载所述目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
所述TEE对所述密文数据进行解密,得到所述目标代码;使用预先确定的密钥对解密得到的所述目标代码进行加密,得到加密后的目标代码,所述密钥由所述目标软件和所述TEE预先协商得到;将所述加密后的目标代码发送给所述目标软件;
所述目标软件接收由所述TEE返回的所述加密后的目标代码;对所述加密后的目标代码进行解密,加载并运行解密后的目标代码。
本说明书一个或多个实施例采用的上述至少一个技术方案能够达到以下技术效果:
预先在可信执行环境TEE对应的安全文件系统中存储目标软件中的目标代码的密文数据,且,预先由目标软件和TEE协商用于对目标代码进行加密的密钥,这样,目标软件在启动目标代码时,可以向TEE发送代码加载请求,TEE可以对已存储的目标代码的密文数据解密后再使用协商的密钥进行加密,然后传输给目标软件,目标软件解密后加载并运行目标代码。这样,通过TEE对目标代码进行加密保存,并在传输过程中采取密钥协商机制实现数据密文传输,可以确保目标代码在加载之前对外界不可见、不可知、不可反汇编,从而避免目标代码被非法用户获取,有效保证了目标代码的安全性,进而在启动目标代码的过程中可以保证软件系统的安全性。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图;
图1是本说明书实施例提供的一种示意性的系统架构示意图;
图2是本说明书的一个实施例软件的代码启动方法的流程示意图;
图3是本说明书的一个实施例软件的代码启动方法的流程示意图;
图4是本说明书的一个实施例软件的代码启动方法的流程示意图;
图5是本说明书的一个实施例电子设备的结构示意图;
图6是本说明书的一个实施例软件的代码启动装置的结构示意图;
图7是本说明书的一个实施例电子设备的结构示意图;
图8是本说明书的一个实施例软件的代码启动装置的结构示意图;
图9是本说明书的一个实施例一体机的结构示意图;
图10是本说明书的一个实施例TEE卡的结构示意图;
图11是本说明书的一个实施例软件的代码启动系统的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本文件的保护范围。
软件的系统安全功能对于软件系统的安全性具有至关重要的作用,而安全功能的核心代码是整个功能的核心部分。通常,软件在加载核心代码时,可以将核心代码编译成二进制文件,然后由软件系统进行加载、解析和运行。然而,在一种可能的应用场景中,非法用户(比如黑客)会通过非法手段劫持软件系统,在这种情况下,非法用户就可以截获核心代码的二进制内容并进行反汇编来获取核心代码的内容,然后对核心代码进行修改,将修改后的核心代码植入后门或者危害程序段,伪装成核心代码被加载和运行,导致整个软件系统存在极大的安全隐患。由此可见,如何保护软件中的核心代码不被替换至关重要。
为了实现上述目的,本说明书实施例以可信执行环境(Trusted ExecutionEnvironment,TEE)为基础,提供了一种对静态核心代码的二进制数据进行保护的技术方案,可以保证目标软件的核心代码在启动过程中不被替换。具体地,可以预先在TEE对应的安全文件系统中存储目标软件中的目标代码的密文数据,且,预先由目标软件和TEE协商用于对目标代码进行加密的密钥,这样,目标软件在启动目标代码时,可以向TEE发送代码加载请求,TEE可以对已存储的目标代码的密文数据解密后再使用协商的密钥进行加密,然后传输给目标软件,目标软件解密后加载并运行目标代码。这样,通过TEE对目标代码进行加密保存,并在传输过程中采取密钥协商机制实现数据密文传输,可以确保目标代码在加载之前对外界不可见、不可知、不可反汇编,从而避免目标代码被非法用户获取,有效保证了目标代码的安全性,进而在启动目标代码的过程中可以保证软件系统的安全性。
需要说明的是,上述目标软件可以是第三方应用软件,也可以是系统软件或其他软件,这里不做具体限定,目标软件中的目标代码可以是目标软件中安全功能的核心代码,也可以是目标软件中对安全性要求较高的代码,这里也不做具体限定。
下面结合图1对本说明书实施例提供的技术方案的一种可能的应用场景进行说明。
图1是本说明书实施例提供的一种示意性的系统架构示意图,图1所示的系统框架中包括目标软件11和TEE 12,目标软件11可以安装在终端设备中,该终端设备的CPU具有TEE能力,即TEE 12可以位于终端设备的CPU中,目标软件11和TEE 12之间硬件隔离,且可以进行数据交互。
目标软件11在加载目标代码时,可以向TEE 12发送代码加载请求,当TEE 12返回加密后的目标代码时,目标软件11可以接收返回的目标代码,对目标代码解密,然后加载并运行解密的目标代码。可选地,目标软件11中可以包括发起端(或触发端),该发起端可以称为代码壳,如图1所示的代码壳111,目标软件11在加载目标代码时,可以由代码壳111向TEE12发送代码加载请求,并由代码壳111接收TEE 12返回目标代码,也就是说,在目标代码的加载过程中,可以由代码壳111与TEE 12进行数据交互。
TEE 12支持硬件加速的国密功能,并且支持安全文件系统,在本说明书实施例中,TEE 12对应的安全文件系统中可以预先存储目标软件11中的目标代码的密文数据,该密文数据由TEE 12基于国密功能加密得到,具体可以是目标代码的镜像文件的密文数据,该密文数据对于外界是不可见且不可知的。当TEE 12接收到来自目标软件11的代码加载请求后,TEE 12可以对预先存储的目标代码的密文数据进行解密,然后再使用预先与目标软件11协商的密钥进行加密,并将加密后的目标代码返回给目标软件11。
通过TEE 12对目标代码进行加密保存,并在传输过程中采取密钥协商机制实现数据密文传输,可以确保目标代码在加载之前对外界不可见、不可知、不可反汇编,从而避免目标代码被非法用户获取,有效保证了目标代码的安全性,进而在启动目标代码的过程中可以保证软件系统的安全性。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图2是本说明书的一个实施例软件的代码启动方法的流程示意图。该实施例的执行主体可以是图1所示的目标软件11,具体包括以下步骤。
S202:向可信执行环境TEE发送代码加载请求,代码加载请求用于请求加载目标软件中的目标代码,TEE对应的安全文件系统中预先存储有目标代码的密文数据。
在S202中,目标软件可以预先将其内部的目标代码存储至TEE对应的安全文件系统中,目标代码可以是目标软件中的安全功能的核心代码,也可以是目标软件中对安全性要求较高的其他代码。TEE对应的安全文件系统在存储目标代码时,具体可以是将目标代码的密文数据存储在安全文件系统中。其中,该密文数据可以由TEE 12基于国密功能加密得到,具体可以是目标代码的镜像文件的密文数据。
本实施例中,目标软件和TEE之间是硬件隔离的,将目标代码的密文数据存储在TEE对应的安全文件系统中,即将目标代码和目标软件中的其他代码异地存储,一方面,即便软件系统被非法用户劫持,非法用户也无法获取得到目标代码,从而有效保证目标代码的安全性,另一方面,还可以实现目标代码独立安全的更新。
在TEE对应的安全文件系统中已存储目标代码的密文数据的情况下,当目标软件需要加载目标代码时,可以向TEE发送代码加载请求,该代码加载请求用于请求加载目标软件中的目标代码。其中,代码加载请求中可以携带目标软件的标识以及目标代码的标识等信息,以便TEE知晓是哪个目标软件向其发送的代码加载请求,以及该目标软件需要加载哪个目标代码。目标软件加载目标代码的场景可以是在目标软件启动时加载目标代码,也可以是在目标软件的运行过程中需要用到该目标代码时加载目标代码。
S204:接收由TEE返回的加密后的目标代码,加密后的目标代码由TEE对密文数据解密后再使用预先确定的密钥对目标代码进行加密得到,密钥由目标软件和TEE预先协商得到。
目标软件在向TEE发送代码加载请求后,TEE可以基于该代码加载请求,从TEE对应的安全文件系统中获取目标代码的密文数据,并对该密文数据解密,基于解密结果可以得到原始的目标代码。之后,TEE可以将目标代码发送给目标软件。
本实施例中,为了保证目标代码的安全性,TEE在发送目标代码时,可以使用与目标软件预先协商好的加密密钥对目标代码进行加密,并将加密后的目标代码发送给目标软件,此时,目标软件可以接收到来自TEE的加密后的目标代码。其中,TEE和目标软件之间可以通过预先约定的方式协商加密密钥,也可以通过其他方式进行协商,比如通过发送密钥协商请求进行协商等,这里不做具体限定。
通过TEE对目标代码进行加密保存,并在传输过程中采取密钥协商机制实现数据密文传输,可以确保目标代码在加载之前对外界不可见、不可知、不可反汇编,从而避免目标代码被非法用户获取,有效保证了目标代码的安全性。
S206:对加密后的目标代码进行解密,加载并运行解密后的目标代码。
目标软件在接收到加密后的目标代码后,可以基于预先与TEE协商好的解密密钥对目标代码进行解密,得到解密后的目标代码,即原始的目标代码。之后,目标软件可以加载并运行解密后的目标打码。其中,在加载并运行解密后的目标代码时,可以是单独加载和运行,也可以和目标软件中的其他代码一起加载运行。
由于在目标代码的传输过程中采取密钥协商机制实现数据密文传输,因此,可以确保目标代码在加载之前对外界不可见、不可知、不可反汇编,从而避免目标代码被非法用户获取,有效保证了目标代码的安全性,进而在启动目标代码的过程中可以保证软件系统的安全性。
在一种实现方式中,目标软件和TEE预先协商的密钥可以是对称密钥,即TEE在发送目标代码时使用的加密密钥和目标软件解密时使用的解密密钥是相同的密钥,这样,目标软件在对TEE发送的加密后的目标代码进行解密时,可以使用TEE加密时的密钥进行解密。由于对目标代码加密和解密的密钥为对称密钥,因此可以便于目标软件和TEE之间进行密钥协商,进而便于对目标代码进行加解密。
在目标软件和TEE预先协商的密钥是对称密钥的情况下,在一种更为具体的实现方式中,该对称密钥可以通过密钥协商请求进行协商,具体实现方式如下。
首先,目标软件在向TEE发送代码加载请求之前,可以向TEE发送密钥协商请求,该密钥协商请求用于请求协商用于对目标代码进行加解密的密钥。
其次,通过握手的方式确定得到N个随机数,其中,N为大于或等于2的整数,且N个随机数中至少一个随机数由TEE生成。
最后,基于N个随机数,通过自定义的算法生成所述。
具体地,目标软件在发送密钥协商请求时,该密钥协商请求中可以携带一个随机数,TEE在接收到密钥协商请求后,可以对目标软件进行验证,在验证通过后,可以将目标软件发送的随机数进行存储,此时完成一次握手。之后,TEE可以生成一个随机数并发送给目标软件,目标软件在接收到TEE的随机数后,也可以对TEE进行验证,验证通过后存储该随机数,完成第二次握手,之后,目标软件可以向TEE再次发送一个随机数,……,如此循环,通过目标软件和TEE之间的N次握手,目标软件和TEE双方都可以得到相同的N个随机数。
在得到N个随机数后,目标软件可以使用自定义的算法生成密钥,TEE可以使用相同的自定义算法生成密钥,由此可以得到对称密钥。
本实施例中,N为大于或等于2的整数,且N个随机数中至少一个随机数由TEE生成,这样,由安全性较高的TEE生成其中至少一个随机数,即便非法用户劫持了软件系统并获取到软件系统生成的随机数,也无法获取到TEE的随机数进而获取到完整的随机数并得到密钥,有效保证密钥的安全性。
需要说明的是,上述握手的过程仅为示例性说明,在实际应用中,也可以有其他实现方式,只要保证得到的N个随机数中至少一个由TEE生成即可。
在一种实现方式中,目标软件使用的解密密钥和TEE使用的对应的加密密钥可以为动态密钥,即目标软件每次向TEE发送代码加载请求之前,均可以与TEE协商新的密钥。其中,若目标软件使用的解密密钥和TEE使用的加密密钥为对称密钥,则目标软件每次向TEE发送代码加载请求之前,均可以通过上述密钥协商请求与TEE进行密钥协商。
这样,由于目标软件每次加载目标代码之前,都与TEE协商新的密钥,并基于协商的新密钥对目标代码进行加解密,因此,可以进一步提高目标代码的安全性。
在一种实现方式中,在上述S204中,TEE在将加密后的目标代码发送给目标软件时,还可以进行签名,这样,目标软件在接收到加密后的目标代码后,可以对TEE的签名进行验证,在验证通过后,再对加密后的目标代码进行解密,由此可以保证接收到的加密后的目标代码的完整性。
图3是本说明书的一个实施例软件的代码启动方法的流程示意图。图3所示的实施例的执行主体可以是图1所示的TEE 12,或者是具有TEE功能及数据处理功能的TEE卡,具体可以包括以下步骤。
S302:接收由目标软件发送的代码加载请求,代码加载请求用于请求加载目标软件中的目标代码,TEE对应的安全文件系统中预先存储有目标代码的密文数据。
TEE的安全文件系统中可以预先存储目标软件中的目标代码的密文数据,当目标软件需要加载目标代码时,可以向TEE发送代码加载请求,此时,TEE可以接收到来自目标软件的代码加载请求。
需要说明的是,TEE对应的安全文件系统中存储的密文数据可以由TEE基于国密功能加密得到,所使用的密钥可以是指定密钥,该指定密钥对外不可见,加密得到的密文数据对外也不可见,由此可以保证目标代码的安全性。此外,还可以进行“一机一密”,即具有TEE功能的不同TEE卡或电子设备可以采用不同的指定密钥对目标代码进行加密并得到不同的密文数据,由此可以进一步提高安全性。
S304:对密文数据进行解密,得到目标代码。
S306:使用预先确定的密钥对解密得到的目标代码进行加密,得到加密后的目标代码,密钥由目标软件和TEE预先协商得到。
在一种实现方式中,TEE使用的加密密钥可以是对称密钥,该对称密钥可以通过密钥协商请求协商得到。具体地,首先,TEE在接收由目标软件发送的代码加载请求之前,可以接收由目标软件发送的密钥协商请求,密钥协商请求用于请求协商所述密钥;其次,通过握手的方式确定得到N个随机数,N为大于或等于2的整数,且N个随机数中至少一个随机数由TEE生成;最后,基于N个随机数,通过自定义的算法生成密钥。
在一种实现方式中,TEE使用的加密密钥还可以是动态密钥,即每次接收代码加载请求之前,都可以与目标软件协商新的密钥。其中,在该密钥是对称密钥的情况下,可以通过上述密钥协商请求与目标软件协商新的密钥。
S308:将加密后的目标代码发送给目标软件,由目标软件进行解密后加载并运行解密后的目标代码。
在一种实现方式中,TEE在将加密后的目标代码发送给目标软件时,可以对加密后的目标代码进行签名,将签名后的目标代码发送给目标软件。由此可以保证发送的加密后的目标代码的完整性。
上述S302至S308中各步骤的具体实现可以参见图2所示实施例中相应步骤的具体实现,这里不再重复说明。
图4是本说明书的一个实施例软件的代码启动方法的流程示意图。图4所示的实施例描述了目标软件和TEE进行交互的一种具体实现方式,可以包括以下步骤。
S401:目标软件向TEE发送密钥协商请求。
密钥协商请求用于请求协商对待加载的目标代码的加解密的对称密钥。
S402:目标软件和TEE通过握手的方式确定得到N个随机数。
N为大于或等于2的整数,且N个随机数中至少一个随机数由TEE生成。
S403:目标软件基于N个随机数,通过自定义的算法生成密钥。
S404:TEE基于N个随机数,通过相同的自定义算法生成对称密钥。
S405:目标软件向TEE发送针对目标代码的代码加载请求。
S406:TEE从对应的安全文件系统中获取目标代码的密文数据,并对密文数据进行解密,得到目标代码。
S407:TEE使用预先协商的密钥对目标代码进行加密,得到加密后的目标代码。
S408:TEE对加密后的目标代码进行签名,将签名以及加密后的目标代码发送给目标软件。
S409:目标软件对TEE的签名进行验证,验证通过后使用预先协商的密钥对加密后的目标代码进行解密。
S410:目标软件加载并运行解密后的目标代码。
上述S401至S410的具体实现可以参见图2和图3相应步骤的具体实现,这里不再重复说明。
本说明书提供的一个或多个实施例,通过TEE对目标代码进行加密保存,并在传输过程中采取密钥协商机制实现数据密文传输,可以确保目标代码在加载之前对外界不可见、不可知、不可反汇编,从而避免目标代码被非法用户获取,有效保证了目标代码的安全性,进而在启动目标代码的过程中可以保证软件系统的安全性。此外,还可以实现目标代码数据异地存储,能够实现独立安全更新;目标代码在TEE中加密保存时,能够实现一机一密,确保数据对外界不可见;采取动态密钥协商机制来建立可信通信信道;整个过程中会加入数据校验功能,确保数据完整性,从而实现在真正启动之前对解密的核心代码数据进行完整性检查,进而实现核心代码的安全启动。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
图5是本说明书的一个实施例电子设备的结构示意图。请参考图5,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成软件的代码启动装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
向可信执行环境TEE发送代码加载请求,所述代码加载请求用于请求加载所述目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
接收由所述TEE返回的加密后的目标代码,所述加密后的目标代码由所述TEE对所述密文数据解密后再使用预先确定的密钥对所述目标代码进行加密得到,所述密钥由所述目标软件和所述TEE预先协商得到;
对所述加密后的目标代码进行解密,加载并运行解密后的目标代码。
上述如本说明书图5所示实施例揭示的软件的代码启动装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central ProcessingUnit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图2的方法,并实现软件的代码启动装置在图2所示实施例中的功能,本说明书实施例在此不再赘述。
当然,除了软件实现方式之外,本说明书实施例的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图2所示实施例的方法,并具体用于执行以下操作:
向可信执行环境TEE发送代码加载请求,所述代码加载请求用于请求加载所述目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
接收由所述TEE返回的加密后的目标代码,所述加密后的目标代码由所述TEE对所述密文数据解密后再使用预先确定的密钥对所述目标代码进行加密得到,所述密钥由所述目标软件和所述TEE预先协商得到;
对所述加密后的目标代码进行解密,加载并运行解密后的目标代码。
图6是本说明书的一个实施例软件的代码启动装置60的结构示意图。请参考图6,在一种软件实施方式中,所述软件的代码启动装置60可包括:发送模块61、接收模块62和启动模块63,其中:
发送模块61,向可信执行环境TEE发送代码加载请求,所述代码加载请求用于请求加载所述目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
接收模块62,接收由所述TEE返回的加密后的目标代码,所述加密后的目标代码由所述TEE对所述密文数据解密后再使用预先确定的密钥对所述目标代码进行加密得到,所述密钥由所述目标软件和所述TEE预先协商得到;
启动模块63,对所述加密后的目标代码进行解密,加载并运行解密后的目标代码。
可选地,所述密钥为对称密钥;
其中,所述启动模块63对所述加密后的目标代码进行解密,包括:
使用所述密钥对所述加密后的目标代码进行解密。
可选地,所述软件的代码启动装置60还包括密钥协商模块64,其中,所述密钥协商模块64在所述发送模块61向TEE发送代码加载请求之前,向所述TEE发送密钥协商请求,所述密钥协商请求用于请求协商所述密钥;
通过握手的方式确定得到N个随机数,N为大于或等于2的整数,且所述N个随机数中至少一个随机数由所述TEE生成;
基于所述N个随机数,通过自定义的算法生成所述密钥。
可选地,所述密钥为动态密钥,所述发送模块61每次发送所述代码加载请求之前,所述密钥协商模块64均通过所述密钥协商请求与所述TEE进行密钥协商。
可选地,所述加密后的目标代码由所述TEE进行签名后得到;其中,所述启动模块63对所述加密后的目标代码进行解密,包括:
对所述TEE的签名进行验证;
在验证通过后,对所述加密后的目标代码进行解密。
本说明书实施例提供的软件的代码启动装置60还可执行图2的方法,并实现软件的代码启动装置在图2所示实施例的功能,本说明书实施例在此不再赘述。
图7是本说明书的一个实施例电子设备的结构示意图。请参考图7,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成软件的代码启动装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
接收由目标软件发送的代码加载请求,所述代码加载请求用于请求加载所述目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
对所述密文数据进行解密,得到所述目标代码;
使用预先确定的密钥对解密得到的所述目标代码进行加密,得到加密后的目标代码,所述密钥由所述目标软件和所述TEE预先协商得到;
将所述加密后的目标代码发送给所述目标软件,由所述目标软件进行解密后加载并运行解密后的目标代码。
上述如本说明书图7所示实施例揭示的软件的代码启动装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central ProcessingUnit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图3的方法,并实现软件的代码启动装置在图3所示实施例中的功能,本说明书实施例在此不再赘述。
当然,除了软件实现方式之外,本说明书实施例的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图3所示实施例的方法,并具体用于执行以下操作:
接收由目标软件发送的代码加载请求,所述代码加载请求用于请求加载所述目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
对所述密文数据进行解密,得到所述目标代码;
使用预先确定的密钥对解密得到的所述目标代码进行加密,得到加密后的目标代码,所述密钥由所述目标软件和所述TEE预先协商得到;
将所述加密后的目标代码发送给所述目标软件,由所述目标软件进行解密后加载并运行解密后的目标代码。
图8是本说明书的一个实施例软件的代码启动装置80的结构示意图。请参考图8,在一种软件实施方式中,所述软件的代码启动装置80可包括:接收模块81、解密模块82、加密模块83和发送模块84,其中:
接收模块81,接收由目标软件发送的代码加载请求,所述代码加载请求用于请求加载所述目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
解密模块82,对所述密文数据进行解密,得到所述目标代码;
加密模块83,使用预先确定的密钥对解密得到的所述目标代码进行加密,得到加密后的目标代码,所述密钥由所述目标软件和所述TEE预先协商得到;
发送模块84,将所述加密后的目标代码发送给所述目标软件,由所述目标软件进行解密后加载并运行解密后的目标代码。
可选地,所述软件的代码启动装置80还包括密钥协商模块85,在所述接收模块81接收由目标软件发送的代码加载请求之前,所述密钥协商模块85接收由所述目标软件发送的密钥协商请求,所述密钥协商请求用于请求协商所述密钥;
通过握手的方式确定得到N个随机数,N为大于或等于2的整数,且所述N个随机数中至少一个随机数由所述TEE生成;
基于所述N个随机数,通过自定义的算法生成所述密钥。
可选地,所述密钥为动态的对称密钥,所述接收模块81每次接收所述代码加载请求之前,所述密钥协商模块85均通过所述密钥协商请求与所述目标软件进行密钥协商。
可选地,所述发送模块84将所述加密后的目标代码发送给所述目标软件,包括:
对所述加密后的目标代码进行签名;
将签名后的目标代码发送给所述目标软件。
可选地,所述密文数据由所述TEE使用指定密钥进行加密得到,且,不同的TEE采用不同的指定密钥对所述目标代码进行加密并得到不同的密文数据。
本说明书实施例提供的软件的代码启动装置80还可执行图3的方法,并实现软件的代码启动装置在图3所示实施例的功能,本说明书实施例在此不再赘述。
图9是本说明书的一个实施例一体机的结构示意图。图9所示的一体机的高速串行计算机扩展总线标准(Peripheral Component Interconnect express,PCIe)插槽上插有TEE卡,该TEE卡具有图1所示的TEE 12的功能及数据处理功能。请参考图9,所述一体机90可包括:发送模块91、接收模块92和启动模块93,其中:
发送模块91,向所述TEE卡发送代码加载请求,其中,所述代码加载请求用于请求加载目标软件中的目标代码,所述TEE卡对应的安全文件系统中预先存储有所述目标代码的密文数据;
接收模块92,接收由所述TEE卡返回的加密后的目标代码,其中,所述加密后的目标代码由所述TEE卡对所述密文数据解密后再使用预先确定的密钥对所述目标代码进行加密得到,所述密钥由所述一体机和所述TEE卡预先协商得到;
启动模块93,对所述加密后的目标代码进行解密,加载并运行解密后的目标代码。
可选地,所述密钥为对称密钥;
其中,所述启动模块93对所述加密后的目标代码进行解密,包括:
使用所述密钥对所述加密后的目标代码进行解密。
可选地,所述一体机90还包括密钥协商模块94,其中,所述密钥协商模块64在所述发送模块91向所述TEE卡发送代码加载请求之前,向所述TEE卡发送密钥协商请求,所述密钥协商请求用于请求协商所述密钥;
通过握手的方式确定得到N个随机数,N为大于或等于2的整数,且所述N个随机数中至少一个随机数由所述TEE卡生成;
基于所述N个随机数,通过自定义的算法生成所述密钥。
可选地,所述密钥为动态密钥,所述发送模块91每次发送所述代码加载请求之前,所述密钥协商模块94均通过所述密钥协商请求与所述TEE卡进行密钥协商。
可选地,所述加密后的目标代码由所述TEE卡进行签名后得到;其中,所述启动模块93对所述加密后的目标代码进行解密,包括:
对所述TEE卡的签名进行验证;
在验证通过后,对所述加密后的目标代码进行解密。
本说明书实施例提供的一体机90还可执行图2的方法,并实现图2所示实施例中的目标软件的功能,本说明书实施例在此不再赘述。
图10是本说明书的一个实施例TEE卡的结构示意图。图10所示的TEE卡具备图1所示的TEE 12的功能及数据处理功能。请参考图10,所述TEE卡100可包括:接收模块101、解密模块102、加密模块103和发送模块104,其中:
接收模块101,接收一体机发送的代码加载请求,其中,所述代码加载请求用于请求加载目标软件中的目标代码,所述TEE卡对应的安全文件系统中预先存储有所述目标代码的密文数据,所述TEE卡插在所述一体机的PCIe插槽上;
解密模块102,对所述密文数据进行解密,得到所述目标代码;
加密模块103,使用预先确定的密钥对解密得到的所述目标代码进行加密,得到加密后的目标代码,所述密钥由所述一体机和所述TEE卡预先协商得到;
发送模块104,将所述加密后的目标代码发送给所述一体机,由所述一体机进行解密后加载并运行解密后的目标代码。
可选地,所述TEE卡100还包括密钥协商模块105,在所述接收模块101接收由所述一体机发送的代码加载请求之前,所述密钥协商模块105接收由所述一体机发送的密钥协商请求,所述密钥协商请求用于请求协商所述密钥;
通过握手的方式确定得到N个随机数,N为大于或等于2的整数,且所述N个随机数中至少一个随机数由所述TEE卡生成;
基于所述N个随机数,通过自定义的算法生成所述密钥。
可选地,所述密钥为动态的对称密钥,所述接收模块101每次接收所述代码加载请求之前,所述密钥协商模块105均通过所述密钥协商请求与所述目标软件进行密钥协商。
可选地,所述发送模块104将所述加密后的目标代码发送给所述一体机,包括:
对所述加密后的目标代码进行签名;
将签名后的目标代码发送给所述一体机。
可选地,所述密文数据由所述TEE卡使用指定密钥进行加密得到,且,不同的TEE卡采用不同的指定密钥对所述目标代码进行加密并得到不同的密文数据。
本说明书实施例提供的TEE卡100还可执行图3的方法,并实现图3所示实施例中的TEE的功能,本说明书实施例在此不再赘述。
图11是本说明书的一个实施例软件的代码启动系统110的结构示意图。请参考图11,图11所示的软件的代码启动系统110可包括目标软件1101和TEE 1102,其中:
所述目标软件1101向所述TEE1102发送代码加载请求,所述代码加载请求用于请求加载所述目标软件1101中的目标代码,所述TEE 1102对应的安全文件系统中预先存储有所述目标代码的密文数据;
所述TEE 1102对所述密文数据进行解密,得到所述目标代码;使用预先确定的密钥对解密得到的所述目标代码进行加密,得到加密后的目标代码,所述密钥由所述目标软件1101和所述TEE 1102预先协商得到;将所述加密后的目标代码发送给所述目标软件1101;
所述目标软件1101接收由所述TEE 1102返回的所述加密后的目标代码;对所述加密后的目标代码进行解密,加载并运行解密后的目标代码。
本实施例中,目标软件1101可以实现上述图2至图4所示实施例中目标软件实现的功能,TEE 1102可以实现上述图2至图4所示实施例中TEE实现的功能,具体实现方式可以参见上述图2至图4所示实施例中相应步骤的具体实现,这里不再重复描述。
总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本文件的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本文件的保护范围之内。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

Claims (13)

1.一种软件的代码启动方法,应用于目标软件,包括:
向可信执行环境TEE发送代码加载请求,所述代码加载请求用于请求加载所述目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
接收由所述TEE返回的加密后的目标代码,所述加密后的目标代码由所述TEE对所述密文数据解密后再使用预先确定的密钥对所述目标代码进行加密得到,所述密钥由所述目标软件和所述TEE预先协商得到;
对所述加密后的目标代码进行解密,加载并运行解密后的目标代码。
2.如权利要求1所述的方法,所述密钥为对称密钥;
其中,对所述加密后的目标代码进行解密,包括:
使用所述密钥对所述加密后的目标代码进行解密。
3.如权利要求1所述的方法,在向TEE发送代码加载请求之前,所述方法还包括:
向所述TEE发送密钥协商请求,所述密钥协商请求用于请求协商所述密钥;
通过握手的方式确定得到N个随机数,N为大于或等于2的整数,且所述N个随机数中至少一个随机数由所述TEE生成;
基于所述N个随机数,通过自定义的算法生成所述密钥。
4.如权利要求3所述的方法,所述密钥为动态密钥,每次发送所述代码加载请求之前,均通过所述密钥协商请求与所述TEE进行密钥协商。
5.如权利要求1所述的方法,所述加密后的目标代码由所述TEE进行签名后得到;其中,对所述加密后的目标代码进行解密,包括:
对所述TEE的签名进行验证;
在验证通过后,对所述加密后的目标代码进行解密。
6.一种软件的代码启动方法,应用于TEE卡,包括:
接收由目标软件发送的代码加载请求,所述代码加载请求用于请求加载所述目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
对所述密文数据进行解密,得到所述目标代码;
使用预先确定的密钥对解密得到的所述目标代码进行加密,得到加密后的目标代码,所述密钥由所述目标软件和所述TEE预先协商得到;
将所述加密后的目标代码发送给所述目标软件,由所述目标软件进行解密后加载并运行解密后的目标代码。
7.如权利要求6所述的方法,在接收由目标软件发送的代码加载请求之前,所述方法还包括:
接收由所述目标软件发送的密钥协商请求,所述密钥协商请求用于请求协商所述密钥;
通过握手的方式确定得到N个随机数,N为大于或等于2的整数,且所述N个随机数中至少一个随机数由所述TEE生成;
基于所述N个随机数,通过自定义的算法生成所述密钥。
8.如权利要求7所述的方法,所述密钥为动态的对称密钥,每次接收所述代码加载请求之前,均通过所述密钥协商请求与所述目标软件进行密钥协商。
9.如权利要求6所述的方法,将所述加密后的目标代码发送给所述目标软件,包括:
对所述加密后的目标代码进行签名;
将签名后的目标代码发送给所述目标软件。
10.如权利要求6所述的方法,
所述密文数据由所述TEE使用指定密钥进行加密得到,且,不同的TEE采用不同的指定密钥对所述目标代码进行加密并得到不同的密文数据。
11.一种一体机,所述一体机的高速串行计算机扩展总线标准PCIe插槽上插有TEE卡,包括:
发送模块,向所述TEE卡发送代码加载请求,其中,所述代码加载请求用于请求加载目标软件中的目标代码,所述TEE卡对应的安全文件系统中预先存储有所述目标代码的密文数据;
接收模块,接收由所述TEE卡返回的加密后的目标代码,其中,所述加密后的目标代码由所述TEE卡对所述密文数据解密后再使用预先确定的密钥对所述目标代码进行加密得到,所述密钥由所述一体机和所述TEE卡预先协商得到;
启动模块,对所述加密后的目标代码进行解密,加载并运行解密后的目标代码。
12.一种TEE卡,包括:
接收模块,接收一体机发送的代码加载请求,其中,所述代码加载请求用于请求加载目标软件中的目标代码,所述TEE卡对应的安全文件系统中预先存储有所述目标代码的密文数据,所述TEE卡插在所述一体机的PCIe插槽上;
解密模块,对所述密文数据进行解密,得到所述目标代码;
加密模块,使用预先确定的密钥对解密得到的所述目标代码进行加密,得到加密后的目标代码,所述密钥由所述一体机和所述TEE卡预先协商得到;
发送模块,将所述加密后的目标代码发送给所述一体机,由所述一体机进行解密后加载并运行解密后的目标代码。
13.一种软件的代码启动系统,包括目标软件和TEE,其中:
所述目标软件向所述TEE发送代码加载请求,所述代码加载请求用于请求加载所述目标软件中的目标代码,所述TEE对应的安全文件系统中预先存储有所述目标代码的密文数据;
所述TEE对所述密文数据进行解密,得到所述目标代码;使用预先确定的密钥对解密得到的所述目标代码进行加密,得到加密后的目标代码,所述密钥由所述目标软件和所述TEE预先协商得到;将所述加密后的目标代码发送给所述目标软件;
所述目标软件接收由所述TEE返回的所述加密后的目标代码;对所述加密后的目标代码进行解密,加载并运行解密后的目标代码。
CN202110911608.XA 2021-08-10 2021-08-10 一种软件的代码启动方法和系统 Pending CN113360857A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110911608.XA CN113360857A (zh) 2021-08-10 2021-08-10 一种软件的代码启动方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110911608.XA CN113360857A (zh) 2021-08-10 2021-08-10 一种软件的代码启动方法和系统

Publications (1)

Publication Number Publication Date
CN113360857A true CN113360857A (zh) 2021-09-07

Family

ID=77540743

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110911608.XA Pending CN113360857A (zh) 2021-08-10 2021-08-10 一种软件的代码启动方法和系统

Country Status (1)

Country Link
CN (1) CN113360857A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113946799A (zh) * 2021-12-21 2022-01-18 深圳佑驾创新科技有限公司 应用程序源码保护方法以及服务端
CN114143117A (zh) * 2022-02-08 2022-03-04 阿里云计算有限公司 数据处理方法及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1740940A (zh) * 2005-09-09 2006-03-01 北京兆日科技有限责任公司 基于可信计算模块芯片实现计算机软件防盗版的方法
CN101261664A (zh) * 2008-04-10 2008-09-10 北京深思洛克数据保护中心 一种使用软件保护装置存储程序代码实现软件保护的方法
CN101414342A (zh) * 2007-10-19 2009-04-22 西门子(中国)有限公司 软件狗及其实现软件保护的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1740940A (zh) * 2005-09-09 2006-03-01 北京兆日科技有限责任公司 基于可信计算模块芯片实现计算机软件防盗版的方法
CN101414342A (zh) * 2007-10-19 2009-04-22 西门子(中国)有限公司 软件狗及其实现软件保护的方法
CN101261664A (zh) * 2008-04-10 2008-09-10 北京深思洛克数据保护中心 一种使用软件保护装置存储程序代码实现软件保护的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113946799A (zh) * 2021-12-21 2022-01-18 深圳佑驾创新科技有限公司 应用程序源码保护方法以及服务端
CN114143117A (zh) * 2022-02-08 2022-03-04 阿里云计算有限公司 数据处理方法及设备

Similar Documents

Publication Publication Date Title
CN109214168B (zh) 固件升级方法及装置
EP3387813B1 (en) Mobile device having trusted execution environment
CN111680305B (zh) 一种基于区块链的数据处理方法、装置及设备
CN113572715B (zh) 基于区块链的数据传输方法和系统
US8495383B2 (en) Method for the secure storing of program state data in an electronic device
US8369526B2 (en) Device, system, and method of securely executing applications
CN110366183B (zh) 短信安全防护方法及装置
CN111666564B (zh) 应用程序安全启动方法、装置、计算机设备和存储介质
WO2023143037A1 (zh) 密钥管理和业务处理
CN113360857A (zh) 一种软件的代码启动方法和系统
CN109560933B (zh) 基于数字证书的认证方法及系统、存储介质、电子设备
CN113553572A (zh) 资源信息获取方法、装置、计算机设备和存储介质
CN113572743A (zh) 数据加密、解密方法、装置、计算机设备和存储介质
CN112199661A (zh) 一种基于隐私保护的设备身份处理方法、装置及设备
CN113282951B (zh) 一种应用程序的安全校验方法、装置及设备
CN109995534B (zh) 一种对应用程序进行安全认证的方法和装置
CN115964681A (zh) 目标应用程序的证书文件的生成方法
US20240113898A1 (en) Secure Module and Method for App-to-App Mutual Trust Through App-Based Identity
CN114172923A (zh) 数据传输方法、通信系统及通信装置
CN114124440A (zh) 安全传输方法、装置、计算机设备和存储介质
CN109409137B (zh) 一种在tee环境中加载外部资源的方法和系统
CN112953893B (zh) 基于隐私保护的身份验证方法、装置、设备及系统
CN115361168B (zh) 一种数据加密方法、装置、设备及介质
CN114254351A (zh) 数据传输方法、处理器、电子设备及计算机可读存储介质
CN116680755A (zh) Gpu固件的保护方法、装置、电子设备和存储介质

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210907