本发明涉及计算机领域,具体而言,涉及一种安全代码空间的认证方法、装置、存储介质及处理器。
背景技术:
相关技术中,在对安全代码控件进行验证的情况下,通常采用网络群签的方式进行签名。例如,在intersgx平台中的可信远程证明安全代码空间,使用本地cpu中的epid密钥签名,inter认证服务器通过epid公钥证书验签,具体由上述平台的引用模块对安全代码空间发出的报告信息进行身份验证,在认证通过后,将报告信息转换为引用信息,使用epid密钥对其进行签名,将带签名的医用信息发送给认证方进行验证。上述采用epid密钥进行验证的方式,存在信息泄露和单点失效的风险,而且无法验证安全代码空间所属的平台的完整性,不能验证安全代码空间是否被篡改。
针对上述的问题,目前尚未提出有效的解决方案。
技术实现要素:
本发明实施例提供了一种安全代码空间的认证方法、装置、存储介质及处理器,以至少解决相关技术中安全代码空间认证方法不能验证安全代码空间是否被篡改的技术问题。
根据本发明实施例的一个方面,提供了一种安全代码空间的认证方法,包括:应用程序接收认证方发送的用于认证所述应用程序的安全代码空间的数据请求;通过应用程序的可信模块的身份认证密钥响应所述数据请求,根据所述安全代码空间,得到用于认证所述安全代码空间的第一待认证数据;向认证方发送所述第一待认证数据,其中,所述第一待认证数据用于认证方认证所述安全代码空间;接收认证方对所述第一待认证数据认证后的认证数据,其中,所述身份认证密钥在所述认证方密钥数据库中未注册的情况下,将所述认证数据发给所述应用程序;通过所述应用程序的所述可信模块的可信平台背书密钥,根据所述认证数据,确定用于认证所述安全代码空间的第二待认证数据;向认证方发送所述第二待认证数据,其中,所述第二待认证数据用于认证方认证所述安全代码空间。
根据本发明实施例的另一方面,还提供了一种安全代码空间认证方法,包括:认证方发送用于认证应用程序的安全代码空间的数据请求;接收所述应用程序发送的用于认证所述安全代码空间的第一待认证数据,其中,通过所述应用程序的可信模块的身份认证密钥响应所述数据请求,根据所述安全代码空间确定用于认证所述安全代码空间的第一待认证数据,并发送所述第一待认证数据;在所述身份认证密钥在所述认证方密钥数据库中未注册的情况下,根据所述第一待认证数据得到所述认证数据,将所述认证数据发送给应用程序;接收所述应用程序的第二待认证数据,其中,通过所述应用程序的所述可信模块的可信平台背书密钥,根据所述认证数据确定用于认证所述安全代码空间的第二待认证数据;根据所述第二待认证数据认证所述安全代码空间。
根据本发明实施例的另一方面,还提供了一种安全代码空间认证方法,包括:认证方向应用程序发送用于认证应用程序的安全代码空间的数据请求;应用程序接收所述数据请求,响应该数据请求,通过应用程序的可信模块的身份认证密钥,根据安全代码空间和所述安全代码空间的属性信息,确定用于认证所述安全代码空间的第一待认证数据;向认证方发送所述第一待认证数据;在所述身份认证密钥在所述认证方密钥数据库中未注册的情况下,将所述第一待认证数据发送给应用程序;应用程序接收所述第一待认证数据,通过应用程序的可信模块的可信平台背书密钥,根据所述第一待认证数据,确定用于认证所述第一待认证数据的第二待认证数据;向认证方发送所述第二待认证数据;认证方接收所述应用程序的第二待认证数据,根据所述第二待认证数据认证所述安全代码空间。
根据本发明实施例的另一方面,还提供了一种安全代码空间认证装置,包括:第一接收模块,用于应用程序接收认证方发送的用于认证安全代码空间的数据请求;第一确定模块,用于响应所述数据请求,通过应用程序的可信模块的身份认证密钥,根据安全代码空间和所述安全代码空间的属性信息,确定用于认证所述安全代码空间的第一待认证数据;第一发送模块,用于向认证方发送所述第一待认证数据,其中,所述第一待认证数据用于认证方认证所述安全代码空间;第二接收模块,用于接收认证方对所述第一待认证数据认证后的认证数据,其中,所述身份认证密钥在所述认证方密钥数据库中未注册的情况下,将所述认证数据发给应用程序;第二确定模块,用于通过所述应用程序的所述可信模块的可信平台背书密钥,根据所述认证数据,确定用于认证所述安全代码空间的第二待认证数据;第二发送模块,用于向认证方发送所述第二待认证数据,其中,所述第二待认证数据用于认证方认证所述安全代码空间。
根据本发明实施例的另一方面,还提供了另一种安全代码空间认证装置,包括:第三发送模块,用于认证方发送用于认证应用程序的安全代码空间的数据请求;第三接收模块,用于接收所述应用程序发送的用于认证所述安全代码空间的第一待认证数据,其中,通过所述应用程序的可信模块的身份认证密钥响应所述数据请求,根据所述安全代码空间确定用于认证所述安全代码空间的第一待认证数据,并发送所述第一待认证数据;第四发送模块,用于在所述身份认证密钥在所述认证方密钥数据库中未注册的情况下,根据所述第一待认证数据得到所述认证数据,将所述认证数据发送给应用程序;第四接收模块,用于接收所述应用程序的第二待认证数据,其中,通过所述应用程序的所述可信模块的可信平台背书密钥,根据所述认证数据确定用于认证所述安全代码空间的第二待认证数据;认证模块,用于根据所述第二待认证数据认证所述安全代码空间。
根据本发明实施例的另一方面,还提供了一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述中任意一项所述的方法。
根据本发明实施例的另一方面,还提供了一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行上述中任意一项所述的方法。
在本发明实施例中,应用程序响应认证方的数据请求,通过身份认证密钥处理安全代码空间得到第一待认证数据,身份认证密钥在所述认证方的密钥数据库中未注册的情况下,认证方将所述认证数据发给所述应用程序,应用程序接收所述第一待认证数据,通过可信平台背书密钥对认证方返回的认证数据进行处理,得到第二待认证数据,并发送给认证方进行验证。达到了对安全代码控件的双重验证的目的,从而实现了对安全代码控件是否篡改进行验证的技术效果,进而解决了相关技术中安全代码空间认证方法不能验证安全代码空间是否被篡改的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1示出了一种用于实现安全代码空间认证方法的计算机终端(或移动设备)的硬件结构框图;
图2是sgx的可信远程证明模型的示意图;
图3是sgx的enclave可信远程证明方法的流程图;
图4是sgx的本地认证方法的流程图;
图5是根据本发明实施例1的一种安全代码空间认证方法的流程图;
图6是根据本发明实施1的可信远程证明系统的示意图;
图7是根据本发明实施1的可信远程证明的流程图;
图8是根据本发明实施例2的一种安全代码空间认证方法的流程图;
图9是根据本发明实施例3的一种安全代码空间认证方法的流程图;
图10是根据本发明实施例4的一种安全代码空间认证装置的示意图;
图11是根据本发明实施例5的一种安全代码空间认证装置的示意图;
图12是根据本发明实施例6的一种安全代码空间认证方法的流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
可信平台模块(tpm,trustedplatformmodel):tpm是一种安全密码处理器的国际标准,由tcg撰写,通过专门的微控制器将加密密钥集成到设备中来保护硬件。tpm安全芯片是指符合tpm标准的安全芯片,一般通过物理方式被强绑定到计算平台,它能有效地保护pc、防止非法用户访问。
可信平台控制模块(tpcm,trustedplatformcontrolmodel):tpcm作为中国国内自主可控的可信节点植入可信源根,在tpm基础上加以信任根控制功能,实现了以密码为基础的主动控制和度量;tpcm先于cpu启动并对bios进行验证,由此改变了tpm作为被动设备的传统思路,实现了tpcm对整个平台的主动控制。
平台配置记录pcr(platformconfigurationregisters):由可信安全芯片提供的平台配置寄存器,用于存放度量扩展值,向外证明平台完整性,同时可用于证明度量日志的完整性。
可信平台背书密钥(ek,endorsementkey):tpm安全芯片的认证rsa公钥,公钥ek公开,其私钥ek常驻tpm内部,在tpm外部永远不可见私钥。每个tpm芯片出厂时都有唯一的背书ek证书,通过ek能证明tpm可信平台的身份信息,ek主要用来得到身份认证密钥aik。
身份认证密钥(aik,attestationidentitykey):tpm在实际运作的时候不会直接使用ek,因为同一个密钥用越多次越不安全。所以tpm会使用ek来得到aik,并且向具有公信力的第三方ca(certificateauthority证书中心)注册该密钥。aik会由具有公信力的第三方ca签名,来证明某aik是由某tpm所得到拥有的。一个tpm安全芯片拥有唯一一个ek,但可以得到多个aik用作身份认证。
网络软件防护区域sgx(intelsoftwareguardextensions):intel体系(ia)的扩展,用于增强程序的安全性。这种方式并不是识别和隔离平台上的所有恶意程序,而是将合法程序的安全操作封装在一个enclave中,保护其不受恶意程序的攻击,特权或者非特权的程序都无法访问enclave,也就是说,一旦程序和数据位于enclave中,即便操作系统或者和vmm(hypervisor)也无法影响enclave里面的代码和数据。enclave的安全边界只包含cpu和它自身,sgx创建的enclave也可以理解为一个可信执行环境tee(trustedexecutionenvironment)。
可信远程证明(enclaveremoteattestation):远程证明是指在计算机网络中,一台计算机依据另一台计算机提供的证据,通过网络对其平台的身份和完整性做出承诺的一种活动。sgx可信远程证明是指本地平台的应用程序向认证服务器提供自己的enclave证明,证明应用程序所属平台的身份以及应用程序自身的完整性。
epid(
enclave:sgx中用来保护合法程序的安全代码空间,加密存储,intelsgx平台利用cpu处理器提供的指令,在内存中划分处一部分区域(叫做epc),并将应用程序地址空间中的enclave映射到这部分内存区域。这部分内存区域是加密的,通过cpu中的内存控制单元(mcu)进行加密和地址转化。简言之,enclave中的代码只信任自己和intel的cpu,其余均会以密文形式存在,包括操作系统和vmm(hypervisor)、其它程序等均无法获取。基于cpu的seal(保密)和attestation(认证)功能,保证了整个可信计算环境(tee,trustedexecutionenvironment)。
实施例1
根据本发明实施例,还提供了一种安全代码空间认证方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现安全代码空间认证方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。除此以外,还可以包括:显示器、输入/输出接口(i/o接口)、通用串行总线(usb)端口(可以作为i/o接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的安全代码空间认证方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的安全代码空间认证方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(lcd),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
本实施例的完整流程如下:认证方向应用程序的接收模块发送;
在相关技术中,通常采用网络群签的方式进行签名。例如,在intersgx平台中的可信远程证明安全代码空间,使用本地cpu中的epid密钥签名。图2是sgx的可信远程证明模型的示意图;结合图2对sgx的可信远程证明过程进行该竖:在intel的cpu工厂阶段,由网络密钥生产工厂ikgf(intelkeygenerationfacility)得到fusekey(包含用于认证的epid密钥及其它密钥),刷入cpu硬件。同时,将fusekey中的epid公钥证书,保存在intel认证服务器中。认证的基本原理是,使用本地cpu中的epid密钥签名,intel认证服务器通过epid公钥证书验签。
图3是sgx的enclave可信远程证明方法的流程图;如图3所示,其具体的可信远程证明过程如下:
1)认证服务商向应用程序发出挑战,以证明它确实在一个或多个enclave内运行了自己的必要组件。挑战本身包含一个用于防重放的随机数(challenge)。
2)应用程序向自己的enclave请求报告,并传递挑战随机数(challenge)。
3)enclave得到一个report结构体,并将该结构体返回给应用程序。
4)应用程序将report提交给quotingenclave进行签名。
5)首先,quotingenclave对report进行身份认证;其次,在认证通过后,quotingenclave将report结构体转换为qoute结构体,并使用intelepid密钥对其进行签名;quotingenclave将qoute(带签名)返回给应用程序。
6)应用程序将quote(带签名)返回给认证服务商。
7)认证服务商使用intel的epid公钥证书来验证quote的签名。
8)认证服务商将enclave信息与可信配置进行可信校验,此处可以实施不同的信任策略,例如:仅信任enclave的特定版本,或者信任具有来自特定作者的特定产品id的所有enclave,或者信任特定的isv证书中公钥的哈希值。
图4是sgx的本地认证方法的流程图,结合图4对上述quotingenclave对report的身份认证,采用sgx本地认证的方式进行说明;
1)源enclave通过目标enclave的身份信息,获取目标enclave的targetinfo结构体。
2)源enclave调用指令ereport(sgx指令之一),获取源enclave的report结构体(sgx结构体之一)。ereport指令包括如下几个步骤:a、使用源enclave的身份信息,导出源enclave的report结构体;b、使用目标enclave的targetinfo结构体,计算目标enclave的reportkey(对称密钥);c、使用目标enclave的reportkey,对源enclave的report结构做消息认证签名(aes-cmac,aescipher-basedmessageauthenticationcode)。
3)将源enclave的report,通过非可信渠道传递给目标enclave。
4)目标enclave调用指令egetkey(sgx指令之一),获取目标enclave的reportkey。
5)目标enclave使用reportkey密钥,验证源enclave的report结构的消息认证签名,来确认源enclave的身份是否合法。
在采用上述方式进行安全代码空间认证,无法验证安全代码空间所属的平台的完整性,不能验证安全代码空间是否被篡改。
本实施例1提供的一种安全代码空间认证方法,采用如下步骤:
(1)认证方向应用程序发送用于认证应用程序的安全代码空间的数据请求;
(2)应用程序的接收模块接收数据请求,并将该数据请求发送给应用程序模块的安全代码空间;
(3)该安全代码空间接收上述数据请求后,得到报告信息,并将报告信息发送给上述接收模块;
(4)上述接收模块将上述安全代码空间的报告信息转发给应用程序的引用模块;
(5)引用模块接收上述报告信息后,对上述报告信息进行本地认证(例如图4所示的验证方法),并根据该报告信息得到引用信息,并将该引用信息发送给应用程序的可信模块;
(6)可信模块接收上述引用信息后,先获取应用程序的完整性pcr值,将引用信息和上述pcr值结合为结合数据;然后,采用身份认证密钥对该结合数据进行签名,得到第一待认证数据,并将该第一待认证数据发送给引用模块;
(7)上述引用模块将第一待认证数据转发给接收模块;
(8)上述接收模块将第一待认证数据发送给认证方进行验证;
(9)认证方的认证服务器,通过验证上述第一待认证数据对应的身份认证密钥是否在其密钥数据库中注册,来确定是否对上述第一待认证数据重新认证,在上述身份认证密钥未注册的情况下,认证方根据第一待认证数据得到认证数据,将认证数据发送给应用程序;
在上述身份认证密钥注册的情况下,对上述第一待认证数据进行认证,其中,确定身份认证密钥对应的已注册的公共身份认证密钥,以及身份认证密钥对应的可信配置基准值;根据公共身份认证密钥,通过认证第一待认证数据中身份认证密钥的签名,认证应用程序的身份;根据可信配置基准值与第一待认证数据中的pcr值进行比对,认证应用程序的完整性;在应用程序的身份认证成功,且完整性认证成功的情况下,认证安全代码空间(例如图3所示的认证流程);
(10)应用程序的接收模块接收上述认证数据,通过引用模块将上述认证数据转发给可信模块;
(11)可信模块对该认证数据,通过可信平台背书密钥对该认证数据签名,得到第二待认证数据,通过引用模块将该第二待认证数据转发给接收模块;
(12)上述接收模块将第二待认证数据发送给认证方;
(13)认证方根据第二待认证数据进行验证,其中,通过证书签署者密钥,认证可信平台背书密钥的证书的合法性;在可信平台背书密钥的证书合法的情况下,根据证书的标准可信平台背书密钥,通过认证可信平台背书密钥对认证数据的签名,认证应用程序的身份;在应用程序的身份认证成功的情况下,通过对认证数据进行二次认证,认证安全代码空间;
上述二次认证的流程可以包括:读取认证数据对应的公共身份认证密钥,其中,认证数据包括第一待认证数据;根据公共身份认证密钥,通过认证上述认证数据中身份认证密钥的签名;在认证数据中身份认证密钥的签名认证成功的情况下,读取认证数据中的pcr值,写入pcr值的第一记录数据库作为认证方的身份认证密钥对应的可信配置基准值;安全代码空间认证通过,将安全代码空间写入认证方的安全代码空间的第二记录数据库。
对于上述安全代码空间认证方法,图5是根据本发明实施例1的一种安全代码空间认证方法的流程图,如图5所示,该方法包括以下步骤:
步骤s502,应用程序接收认证方发送的用于认证应用程序的安全代码空间的数据请求。
作为一种可选的实施例,上述应用程序可以是intersgx平台。上述应用程序包括安全代码空间。上述接收认证方的发送的用于认证安全代码空间的数据请求,的执行主体可以是应用程序的接收模块,或者应用程序。
作为一种可选的实施例,上述数据请求可以是多种形式,可以是单独向应用程序进行请求,也可以是与其他请求同时进行发送,或者与其他请求同时附加在某一请求上进行发送。在本实施例中,上述数据请求是认证方向应用程序发出挑战,以证明它确实在一个或多个安全代码空间enclave内运行了自己的必要组件。挑战本身包含一个用于防重放的随机数(challenge)。
步骤s504,通过应用程序的可信模块的身份认证密钥响应数据请求,根据安全代码空间,得到用于认证安全代码空间的第一待认证数据。
作为一种可选的实施例,上述应用程序的可信模块可以是可信平台模块tpm,还可以是可信平台控制模块tpcm等可以采用密钥对数据进行加密处理的其他硬件或者软件模块。其中,上述可信平台模块tpm和可信平台控制模块tpcm均可以通过加密密钥对数据进行签名做加密处理,以保护数据不被篡改。
作为一种可选的实施例,上述身份认证密钥还可以是其他可以对数据进行加密的密钥,上述密钥可以对数据进行签名,而且该密钥在具有公信力的第三方进行注册,以供认证方可以进行获取,上述第三方可以是证书中心ca(certificateauthority),还可以是其他具有公信力的数据库,或者服务器等。
作为一种可选的实施例,上述通过身份认证密钥根据安全代码空间得到第一待认证数据,可以是通过身份认证密钥直接对安全代码空间进行签名,得到上述第一待认证数据,还可以是对安全代码控件进行可信的数据处理或者数据变换得到信息进行签名,得到上述第一待认证数据。
例如,通过intersgx平台的接收模块(applicationclaimer),和引用模块(quotingenclave)进行转发和处理,上述平台的安全代码空间(applicationenclave)发出报告信息(report),通过上述接收模块和引用模块的转发,并在引用模块进行验证,验证成功的情况下将该报告信息转化为引用信息(enclaveqoute),将该引用信息发送到可信模块进行处理。
步骤s506,向认证方发送第一待认证数据,其中,第一待认证数据用于认证方认证安全代码空间。
作为一种可选的实施例,上述认证方可以是应用程序的认证服务商,可以合法对应用程序进行认证的认证方。在本实施例中,认证服务商在需要对应用程序进行认证的请款修改,向应用程序发送一个挑战随机数,相当于上述数据请求。
作为一种可选的实施例,上述第一待认证数据可以包括安全代码空间的信息,与上述安全代码空间的信息有关的信息,信息在加密过程中的多种形式或者版本,还可以包括可信模块对上述信息的全部或者部分进行加密的加密信息。例如,在本实施例中,第一待认证数据可以包括:安全代码空间信息(enclave),安全代码空间所在应用程序的完整性pcr值,引用信息,和身份认证密钥的签名。
步骤s508,接收认证方对第一待认证数据认证后的认证数据,其中,身份认证密钥在认证方密钥数据库中未注册的情况下,将认证数据发给应用程序。
作为一种可选的实施例,上述接收认证方的认证数据的执行主体可以是应用程序的接收模块。
作为一种可选的实施例,上述认证数据可以包括上述第一待认证数据。例如,上述认证数据可以是第一待认证数据,上述认证数据还可以是包括第一待认证数据,上述认证数据还可以是根据第一待认证数据得到的数据,该认证数据包括第一待认证数据中的认证所需的必须部分。
作为一种可选的实施例,认证方在接收到上述第一待认证数据后,通过对上述第一待认证数据对应的身份认证密钥,是否在认证方密钥数据库中注册,来确定该待认证数据是否可以被认证,在身份认证密钥在认证方密钥数据库中未注册的情况下,说明上述第一待认证数据无法认证,根据上述第一待认证数据确定认证数据,然后将认证数据发给应用程序,请求应用程序通过其他密钥再次加密,例如,可以是可信度更高的密钥,从而提高待认证数据的可信度。
步骤s510,通过应用程序的可信模块的可信平台背书密钥,根据认证数据,确定用于认证安全代码空间的第二待认证数据。
作为一种可选的实施例,上述可信平台背书密钥ek(endorsementkey)的可信度高于身份认证密钥,上述身份认证密钥由上述可信平台背书密钥得到。上述可信平台背书密钥还可以是其他公钥公开,私钥常驻可信模块(或其他可信装置)内部的密钥。
作为一种可选的实施例,通过上述可信平台背书密钥对认证数据进行签名,有效增加了上述认证数据的可信度,上述第二待认证数据可以包括上述认证数据,以及可信平台背书密钥对上述认证数据进行签名处理的加密信息。
步骤s512,向认证方发送第二待认证数据,其中,第二待认证数据用于认证方认证安全代码空间。
作为一种可选的实施例,将上述可信度更高的第二待认证数据,认证方对该第二待认证数据进行认证,也可以是第一待认证数据对应的认证方式无法认证的情况下,可以是通过其他认证方式进行二次认证。而不是直接判定为认证失败,有效提高认证的准确率,也能够根据更高可信度的验证方式验证前一次的第一待认证数据的验证方式是否被篡改。
通过上述步骤,应用程序响应认证方的数据请求,通过身份认证密钥处理安全代码空间得到第一待认证数据,身份认证密钥在认证方的密钥数据库中未注册的情况下,认证方将认证数据发给应用程序,应用程序接收第一待认证数据,通过可信平台背书密钥对认证方返回的认证数据进行处理,得到第二待认证数据,并发送给认证方进行验证。达到了对安全代码控件的双重验证的目的,从而实现了对安全代码控件是否篡改进行验证的技术效果,进而解决了相关技术中安全代码空间认证方法不能验证安全代码空间是否被篡改的技术问题。
作为一种可选的实施例,在步骤s504中,根据安全代码空间,得到用于认证安全代码空间的第一待认证数据包括:通过可信模块接收引用信息,其中,应用程序的引用模块将安全代码空间的报告信息转换成引用信息;获取用于标识应用程序的完整性的pcr值;通过身份认证密钥,根据引用信息和pcr值确定第一待认证数据。
作为一种可选的实施例,可信模块接收引用信息之前包括:通过引用模块接收报告信息;对报告信息进行本地认证;在本地认证通过的情况下,将报告信息转换为引用信息。
在相关技术中,引用模块(eoutingenclave)对上述报告信息(report)进行验证,验证成功后,将其转化为引用信息(qoute),并将该引用信息通过接收模块(applicationclaimer)发送给认证服务商,进行验证。
作为一种可选的实施例,因此,在本实施例中,保留上述引用模块,以及相关流程,在引用模块将报告信息转化为引用信息后,通过可信模块对该引用信息进行相关的加密处理,在处理完成后,将加密过的第一待认证数据通过引用模块,接收模块,先后转发传送给认证方进行验证。
需要说明的是,上述应用程序接收上述认证数据后,将认证数据传输给可信模块是,也可以通过接收模块和引用模块进行转发。将根据热整数据得到的第二待认证数据向认证方发送时,也可以通过引用模块和接收模块先后转发的方式发送给认证方。
作为一种可选的实施例,通过身份认证密钥,根据引用信息和pcr值确定第一待认证数据包括:可信模块将pcr值与引用信息结合为结合数据;根据身份认证密钥对结合数据进行签名,得到第一待认证数据。
作为一种可选的实施例,上述可信模块将pcr值与引用信息结合为结合数据,可以是将pcr值附加在引用信息上,或者直接将pce值和上述引用信息进行叠加,还可以是通过某种既定的运算方式或者运算模型,对上述pcr值和引用信息进行运算,得到结合数据。
作为一种可选的实施例,上述身份认证密钥可以是对上述结合数据进行签名,还可以是对上述pcr值,引用信息中的部分或者全部数据进行签名。本实施例中,对上述结合数据进行签名可以保证结合数据中的pcr值和引用信息均受到加密保护。
作为一种可选的实施例,向认证方发送第一待认证数据之后包括:认证方接收第一待认证数据;确定第一待认证数据对应的身份认证密钥,是否在认证方的密钥数据库中注册;在身份认证密钥在密钥数据库中注册的情况下,根据第一待认证数据认证安全代码空间;在身份认证密钥在密钥数据库中没有注册的情况下,根据第一待认证数据得到认证数据,将认证数据发送给应用程序。
作为一种可选的实施例,上述密钥数据库可以是身份认证密钥公钥的记录数据库(aik(public)registerdata数据库)。
作为一种可选的实施例,上述确定第一待认证数据对应的身份认证密钥,是否在认证方的密钥数据库中注册,可以通过对比上述第一待认证数据中的公钥(aik(public))是否与上述记录数据库中的公钥相同,从而确定上述第一待认证数据对应的身份认证密钥是否在上述认证方的密钥数据库中注册。从而确定是否可以通过上述身份认证公钥来认证第一待认证数据。
作为一种可选的实施例,在上述身份认证密钥没有在上述密钥数据库中注册的情况下,无法说明其来源是否合法,也就无法根据该身份认证密钥来认证第一待认证数据。认证方通过第一待认证数据得到认证数据,并将认证数据发送给应用程序,请求应用程序重新进行加密,继续进行认证。
作为一种可选的实施例,通过应用程序的可信模块的可信平台背书密钥,根据认证数据,确定用于认证安全代码空间的第二待认证数据包括:根据可信平台背书密钥对第一待认证数据进行签名,得到第二待认证数据。
作为一种可选的实施例,上述可信平台背书密钥可以是对认证数据的全部数据或者其部分数据进行签名,做加密处理,得到第二待认证数据。本实施例中,通过上述可信平台背书密钥对认证数据的所有数据进行签名,得到第二待认证数据。
作为一种可选的实施例,向认证方发送第二待认证数据之后包括:认证方接收第二待认证数据;根据第二待认证数据认证安全代码空间。
作为一种可选的实施例,根据第二待认证数据认证安全代码空间之后,还包括:在安全代码控件认证通过的情况下,将身份认证密钥进行注册。
作为一种可选的实施例,上述在第二待认证数据验证安全代码空间通过后,将上述第二待认证数据对应的身份认证密钥在上述密钥数据库中进行注册,也即是将第一待认证数据对应的身份认证密钥进行注册,在该应用程序与该认证方的后续认证中,可以通过身份认证密钥来要验证安全代码空间,方便快捷,节省运算资源。
需要说明的是,本实施例提供一种安全代码空间认证系统和方法作为可选的实施方式,具体如下:
图6是根据本发明实施1的可信远程证明系统的示意图,如图6所示,平台platform向证明方verifier提供自己的远程证明quote,证明自己的所属平台身份、所属平台完整性、enclave完整性。其中,
auth-key:访问tpm/tpcm芯片功能的授权码,保护在quotingenclave中,外部不可见(除了quotingenclave自身和cpu)。
aik(public/private):tpm/tpcm为每个不同的应用程序得到的不同的平台身份认证密钥attestationidentitykey。
ek(private/certificate):每个tpm/tpcm芯片内置的芯片私钥,以及对应的公钥证书。
ck(public):验证ekcertificate证书合法性的证书签发者公钥。
registerdata:认证方数据库,每个不同的应用对应着不同的平台身份认证公钥(aik)、平台完整性可信策略基准值(pcr)、以及应用完整性可信策略基准值(enclave)。
图7是根据本发明实施1的可信远程证明的流程图,如图7所示,本实施例1提供的方法包括如下步骤:
(1)challenge:认证服务商向应用程序发出挑战,以证明它确实在一个或多个enclave内运行了自己的必要组件。挑战本身包含一个用于防重放的随机数(challenge)。
(2)challenge:应用程序向自己的enclave请求报告,并传递挑战随机数(challenge)。
(3)report:applicationenclave得到一个report结构体,并将该结构体返回给应用程序。
(4)report:应用程序将report提交给quotingenclave进行认证。
(5)enclavequote:首先,quotingenclave对report进行身份认证,(同5.1节sgx本地证明);其次,在认证通过后,quotingenclave将report结构体转换为enclaveqoute结构体,并使用授权码auth-key调用tpm/tpcm。如果认证失败,直接转第11步,结束流程。
(6)enclave+pcrquotesignedbyaik:tpm/tpcm获取当前平台完整性pcr值,同enclaveqoute结合在一起,得到enclave+pcrquote,并使用应用程序的aik私钥对其进行签名。如果应用程序之前并无aik密钥,则tpm/tpcm为应用程序得到一个aik公私钥对,存储在芯片内部(私钥外部不可见),在下次及以后的其它操作中,该aik同此应用程序绑定。
(7)enclave+pcrquotesignedbyaik:quotingenclave将签名的enclave+pcrquote,返回给应用程序。
(8)enclave+pcrquotesignedbyaik:应用程序将签名的enclave+pcrquote,提交给认证方进行认证。
(9)enclave+pcrquotesignedbyaik:认证方将签名的enclave+pcrquote,提交给认证服务器进行认证。
(10)success:10.1)比对aik(public)registerdata数据库,收到的quoto信息中的aik(public)是否已经注册。如果未注册,转登记(register)流程(图2中的虚线流程步骤r1-r8)。10.2)如果aik(public)已注册,则使用aik(public)验证quote签名。如果验签失败,转第(12)步骤,结束流程。本次证明的是应用程序所属平台的身份。10.3)如果quote验签成功,则对比quote中的pcr信息,和pcrregisterdata数据库中对应于本aik的可信配置基准值。如果pcr对比不相等,转第12步,结束流程。本次证明的是应用程序所属平台的完整性。10.4)如果pcr认证成功,则对比quote中的enclave信息,和enclaveregisterdata数据库中对应于本aik的可信配置基准值。如果enclave对比不相等,转第(12)步骤,结束流程。本次证明的是应用程序自身enclave的完整性。10.5)如果enclave认证通过,则整个远程证明认证成功,包括应用程序所属平台的身份证明、所属平台完整性证明、以及应用程序自身enclave完整性证明。
(11)认证失败:如果第(5)步骤quotingenclave,对applicationenclave的report认证未通过,则结束流程。
(12)enclave+pcrquotesignedbyaik:如果第(10)步认证服务器,对quote认证未通过,则结束流程。。
其中,步骤(10)中的登记流程(register)包括以下步骤:
r1.requestquotesignedbyek:如果认证服务器收到的quoto信息中的aik(public),在aik(public)registerdata数据库中未注册,则请求平台使用平台ek对整个quote加签。
r2.requestquotesignedbyek:认证方请求应用程序,使用平台ek对整个quote加签。
r3.requestquotesignedbyek:应用程序请求quotingenclave,使用平台ek对整个quote加签。
r4.requestquotesignedbyek:quotingenclave使用内置的授权码,调用tpm/tpcm,使用平台ek对整个quote加签。
r5.quotesignedbyek:tpm/tpcm使用内部的ek(private),对quote加签,并附上ekcertificate证书。
r6.quotesignedbyek:quotingenclave将平台ek加签过的quote,返回给应用程序。
r7.quotesignedbyek:应用程序使用平台ek加签过的quote,重新提交认证。
r8.quotesignedbyek:认证方将ek加签过的quote,重新提交给认证服务器进行认证。
在认证方服务器中进行验证时,执行下列步骤:r8.1)使用证书签署者公钥ck(public),验证ekcertificate证书的合法性。如果证书验证失败,转第12步,结束流程。r8.2)如果ekcertificate证书合法性验证通过,则使用证书中的ek(public)验证quote签名。如果验签失败,转第12步,结束流程。本次证明的是应用程序所属平台的身份。r8.3)如果quote验签成功,则读取quoto信息中的aik(public),进行第二次验签(原aik加签的签名)。如果验签失败,转第12步,结束流程。r8.4)如果二次验签成功,则将aik(public)注册,写入aik(public)registerdata数据库。r8.5)读取quoto信息中的pcr信息,写入pcrregisterdata数据库。r8.6)读取quoto信息中的enclave信息,写入enclaveregisterdata数据库。r8.7)本次认证只认证了应用程序所属平台的身份证明,其余的所属平台完整性以及应用程序自身enclave完整性,作为注册时的基准值写入数据库,供之后的远程证明流程使用。
本实施方式实现了远程证明三要素的证明:应用程序完整性证明,平台身份证明以及平台完整性证明。sgx远程证明的单点失效风险,以及外网连接风险,可以通过本专利的自建认证服务器,以及平台ek证书自己掌控刷入来解决,去掉了对intel工厂定制和认证服务器的需求。tpm远程证明的授权码泄漏风险,通过quotingenclave的sgx加密保存,除了quotingenclave自身和cpu外无法获取。
实施例2
根据本发明实施例的另一方面,还提供了一种安全代码空间认证方法,图8是根据本发明实施例2的一种安全代码空间认证方法的流程图,如图8所示,该方法包括以下步骤:
步骤s802,认证方发送用于认证应用程序的安全代码空间的数据请求。
作为一种可选的实施例,上述认证方在需要对应用程序的安全代码空间进行认证时,可以直接向应用程序的接收模块发送数据请求。上述人正反可以发送给应用程序的接收模块,或者应用程序的可信模块,这取决于该应用程序的结构和设置。
步骤s804,接收应用程序发送的用于认证安全代码空间的第一待认证数据,其中,通过应用程序的可信模块的身份认证密钥响应数据请求,根据安全代码空间确定用于认证安全代码空间的第一待认证数据,并发送第一待认证数据。
作为一种可选的实施例,上述应用程序可以通过的接收模块,和引用模块对安全代码空间的报告信息进行转发和处理,上述平台的安全代码空间(applicationenclave)发出报告信息(report),通过上述接收模块和引用模块的转发,并在引用模块进行验证,验证成功的情况下将该报告信息转化为引用信息(enclaveqoute),将该引用信息发送到可信模块进行处理,对上述引用信息进行加密和处理后,通过上述引用模块和接收模块发送给认证方。
步骤s806,在身份认证密钥在认证方密钥数据库中未注册的情况下,根据第一待认证数据得到认证数据,将认证数据发送给应用程序。
作为一种可选的实施例,在确认身份认证密钥在认证方密钥数据库中未注册时,认证方可以通过将第一待认证数据对应的身份认证密钥的公钥,与密钥数据库中的身份认证密钥的公钥进行比较,在二者不同的情况下,确定上述第一待认证数据对应的身份认证密钥在密钥数据库中未注册。
步骤s808,接收应用程序的第二待认证数据,其中,通过应用程序的可信模块的可信平台背书密钥,根据认证数据确定用于认证安全代码空间的第二待认证数据。
作为一种可选的实施例,通过上述可信平台背书密钥对认证数据进行签名,有效增加了上述认证数据的可信度,上述第二待认证数据可以包括上述认证数据,以及可信平台背书密钥对上述认证数据进行签名处理的加密信息。
步骤s810,根据第二待认证数据认证安全代码空间。
作为一种可选的实施例,上述根据第二待认证数据认证安全代码空间可以是认证方的接收模块,将该第二待认证数据传送给认证方服务器,由认证方服务器进行认证。
通过上述步骤,应用程序响应认证方的数据请求,通过身份认证密钥处理安全代码空间得到第一待认证数据,身份认证密钥在认证方的密钥数据库中未注册的情况下,认证方将认证数据发给应用程序,应用程序接收第一待认证数据,通过可信平台背书密钥对认证方返回的认证数据进行处理,得到第二待认证数据,并发送给认证方进行验证。达到了对安全代码控件的双重验证的目的,从而实现了对安全代码控件是否篡改进行验证的技术效果,进而解决了相关技术中安全代码空间认证方法不能验证安全代码空间是否被篡改的技术问题。
作为一种可选的实施例,身份认证密钥在密钥数据库中注册的情况下,根据第一待认证数据认证安全代码空间。
作为一种可选的实施例,在上述身份认证密钥在密钥数据库中注册的情况下,说明可以通过第一待认证数据认证安全代码空间。则直接根据第一待认证数据认证安全代码空间。
作为一种可选的实施例,根据第一待认证数据认证安全代码空间包括:确定身份认证密钥对应的已注册的公共身份认证密钥,以及身份认证密钥对应的可信配置基准值;根据公共身份认证密钥,通过认证第一待认证数据中身份认证密钥的签名,认证应用程序的身份;根据可信配置基准值与第一待认证数据中的pcr值进行比对,认证应用程序的完整性;在应用程序的身份认证成功,且完整性认证成功的情况下,认证安全代码空间。
作为一种可选的实施例,在intersgx的情况下,上述步骤可以是:通过比对aik(public)registerdata数据库,收到的quote信息中的aik(public)是否已经注册。如果aik(public)已注册,则使用aik(public)验证quote签名,本次证明的是应用程序所属平台的身份。如果quote验签成功,则对比quote中的pcr信息,和pcrregisterdata数据库中对应于本aik的可信配置基准值,本次证明的是应用程序所属平台的完整性。如果pcr认证成功,则对比quote中的enclave信息,和enclaveregisterdata数据库中对应于本aik的可信配置基准值,本次证明的是应用程序自身enclave的完整性。如果enclave认证通过,则整个远程证明认证成功,包括应用程序所属平台的身份证明、所属平台完整性证明、以及应用程序自身enclave完整性证明。
作为一种可选的实施例,根据第二待认证数据认证安全代码空间包括:通过证书签署者密钥,认证可信平台背书密钥的证书的合法性;在可信平台背书密钥的证书合法的情况下,根据证书的标准可信平台背书密钥,通过认证可信平台背书密钥对认证数据的签名,认证应用程序的身份;在应用程序的身份认证成功的情况下,通过对认证数据进行二次认证,认证安全代码空间。
作为一种可选的实施例,上述二次认证成功的情况下,将上述第二认证数据对应的身份认证密钥写入上述密钥数据库,还可以将第二待认证数据,或者第一待认证数据的对应的相关参数写入数据库,进行存储,以便后续的流程中需要进行比对,已确认待认证数据或者相关参数是否可信。
作为一种可选的实施例,在intersgx的情况下,上述步骤可以是:使用证书签署者公钥ck(public),验证ekcertificate证书的合法性。如果ekcertificate证书合法性验证通过,则使用证书中的ek(public)验证quote签名,本次证明的是应用程序所属平台的身份。如果quote验签成功,则读取quoto信息中的aik(public),进行第二次验签(原aik加签的签名)。如果二次验签成功,则将aik(public)注册,写入aik(public)registerdata数据库;读取quoto信息中的pcr信息,写入pcrregisterdata数据库;读取quoto信息中的enclave信息,写入enclaveregisterdata数据库。本次认证只认证了应用程序所属平台的身份证明,其余的所属平台完整性以及应用程序自身enclave完整性,作为注册时的基准值写入数据库,供之后的远程证明流程使用。
作为一种可选的实施例,在应用程序的身份认证成功的情况下,通过对认证数据进行二次认证,认证安全代码空间包括:读取认证数据对应的标准身份认证密钥,其中,认证数据包括第一待认证数据;根据标准身份认证密钥,通过认证上述认证数据中身份认证密钥的签名;在认证数据中身份认证密钥的签名认证成功的情况下,读取认证数据中的pcr值,写入pcr值的第一记录数据库作为认证方的身份认证密钥对应的可信配置基准值;安全代码空间认证通过,将安全代码空间写入认证方的安全代码空间的第二记录数据库。
作为一种可选的实施例,上述二次认证可以是对第二待认证数据的身份认证密钥进行验证。上述二次认证的步骤,可以与上述身份认证密钥的步骤类似,或者相同。
实施例3
根据本发明实施例的另一方面,还提供了一种安全代码空间认证方法,图9是根据本发明实施例3的一种安全代码空间认证方法的流程图,如图9所示,该方法包括以下步骤:
步骤s902,认证方向应用程序发送用于认证应用程序的安全代码空间的数据请求;
步骤s904,应用程序接收数据请求,响应该数据请求,通过应用程序的可信模块的身份认证密钥,根据安全代码空间和安全代码空间的属性信息,确定用于认证安全代码空间的第一待认证数据;
步骤s906,向认证方发送第一待认证数据;
步骤s908,在身份认证密钥在认证方密钥数据库中未注册的情况下,将第一待认证数据发送给应用程序;
步骤s910,应用程序接收第一待认证数据,通过应用程序的可信模块的可信平台背书密钥,根据第一待认证数据,确定用于认证第一待认证数据的第二待认证数据;
步骤s912,向认证方发送第二待认证数据;
步骤s914,认证方接收应用程序的第二待认证数据,根据第二待认证数据认证安全代码空间。
通过上述步骤,应用程序响应认证方的数据请求,通过身份认证密钥处理安全代码空间得到第一待认证数据,身份认证密钥在认证方的密钥数据库中未注册的情况下,认证方将认证数据发给应用程序,应用程序接收第一待认证数据,通过可信平台背书密钥对认证方返回的认证数据进行处理,得到第二待认证数据,并发送给认证方进行验证。达到了对安全代码控件的双重验证的目的,从而实现了对安全代码控件是否篡改进行验证的技术效果,进而解决了相关技术中安全代码空间认证方法不能验证安全代码空间是否被篡改的技术问题。
作为一种可选的实施例,身份认证密钥在密钥数据库中注册的情况下,根据第一待认证数据认证安全代码空间。
作为一种可选的实施例,在上述身份认证密钥在密钥数据库中注册的情况下,说明可以通过第一待认证数据认证安全代码空间。则直接根据第一待认证数据认证安全代码空间。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例4
根据本发明实施例,还提供了一种用于实施上述安全代码空间认证方法的安全代码空间认证装置,图10是根据本发明实施例4的一种安全代码空间认证装置的示意图如图10所示,该装置包括:第一接收模块1002,第一确定模块1004,第一发送模块1006,第二接收模块1008,第二确定模块1010和第二发送模块1012,下面对该装置进行详细说明。
第一接收模块1002,用于应用程序接收认证方发送的用于认证安全代码空间的数据请求;第一确定模块1004,用于响应数据请求,通过应用程序的可信模块的身份认证密钥,根据安全代码空间和安全代码空间的属性信息,确定用于认证安全代码空间的第一待认证数据;第一发送模块1006,用于向认证方发送第一待认证数据,其中,第一待认证数据用于认证方认证安全代码空间;第二接收模块1008,用于接收认证方对第一待认证数据认证后的认证数据,其中,身份认证密钥在认证方密钥数据库中未注册的情况下,将认证数据发给应用程序;第二确定模块1010,用于通过应用程序的可信模块的可信平台背书密钥,根据认证数据,确定用于认证安全代码空间的第二待认证数据;第二发送模块1012,用于向认证方发送第二待认证数据,其中,第二待认证数据用于认证方认证安全代码空间。
此处需要说明的是,上述第一接收模块1002,第一确定模块1004,第一发送模块1006,第二接收模块1008,第二确定模块1010和第二发送模块1012对应于实施例1中的步骤s502至步骤s512,六个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
实施例5
根据本发明实施例,还提供了一种用于实施上述安全代码空间认证方法的安全代码空间认证装置,图11是根据本发明实施例5的一种安全代码空间认证装置的示意图如图11所示,该装置包括:第三发送模块1102,第三接收模块1104,第四发送模块1106,第四接收模块1108和认证模块1110,下面对该装置进行详细说明。
第三发送模块1102,用于认证方发送用于认证应用程序的安全代码空间的数据请求;第三接收模块1104,用于接收应用程序发送的用于认证安全代码空间的第一待认证数据,其中,通过应用程序的可信模块的身份认证密钥响应数据请求,根据安全代码空间确定用于认证安全代码空间的第一待认证数据,并发送第一待认证数据;第四发送模块1106,用于在身份认证密钥在认证方密钥数据库中未注册的情况下,根据第一待认证数据得到认证数据,将认证数据发送给应用程序;第四接收模块1108,用于接收应用程序的第二待认证数据,其中,通过应用程序的可信模块的可信平台背书密钥,根据认证数据确定用于认证安全代码空间的第二待认证数据;认证模块1110,用于根据第二待认证数据认证安全代码空间。
此处需要说明的是,上述第三发送模块1102,第三接收模块1104,第三接收模块1106,第四接收模块1108和认证模块1110对应于实施例2中的步骤s802至步骤s810,六个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
实施例6
本发明的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算机终端可以执行应用程序的安全代码空间认证方法中以下步骤的程序代码:应用程序接收认证方发送的用于认证应用程序的安全代码空间的数据请求;通过应用程序的可信模块的身份认证密钥响应数据请求,根据安全代码空间,得到用于认证安全代码空间的第一待认证数据;向认证方发送第一待认证数据,其中,第一待认证数据用于认证方认证安全代码空间;接收认证方对第一待认证数据认证后的认证数据,其中,身份认证密钥在认证方密钥数据库中未注册的情况下,将认证数据发给应用程序;通过应用程序的可信模块的可信平台背书密钥,根据认证数据,确定用于认证安全代码空间的第二待认证数据;向认证方发送第二待认证数据,其中,第二待认证数据用于认证方认证安全代码空间。
可选地,图12是根据本发明实施例6的一种计算机终端的结构框图。如图12所示,该计算机终端10可以包括:一个或多个(图中仅示出一个)处理器122、存储器124、以及外设接口。
其中,存储器可用于存储软件程序以及模块,如本发明实施例中的安全代码空间认证方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的安全代码空间认证方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:应用程序接收认证方发送的用于认证应用程序的安全代码空间的数据请求;通过应用程序的可信模块的身份认证密钥响应数据请求,根据安全代码空间,得到用于认证安全代码空间的第一待认证数据;向认证方发送第一待认证数据,其中,第一待认证数据用于认证方认证安全代码空间;接收认证方对第一待认证数据认证后的认证数据,其中,身份认证密钥在认证方密钥数据库中未注册的情况下,将认证数据发给应用程序;通过应用程序的可信模块的可信平台背书密钥,根据认证数据,确定用于认证安全代码空间的第二待认证数据;向认证方发送第二待认证数据,其中,第二待认证数据用于认证方认证安全代码空间。
可选的,上述处理器还可以执行如下步骤的程序代码:根据安全代码空间,得到用于认证安全代码空间的第一待认证数据包括:通过可信模块接收引用信息,其中,应用程序的引用模块将安全代码空间的报告信息转换成引用信息;获取用于标识应用程序的完整性的pcr值;通过身份认证密钥,根据引用信息和pcr值确定第一待认证数据。
可选的,上述处理器还可以执行如下步骤的程序代码:可信模块接收引用信息之前包括:通过引用模块接收报告信息;对报告信息进行本地认证;在本地认证通过的情况下,将报告信息转换为引用信息。
可选的,上述处理器还可以执行如下步骤的程序代码:通过身份认证密钥,根据引用信息和pcr值确定第一待认证数据包括:可信模块将pcr值与引用信息结合为结合数据;根据身份认证密钥对结合数据进行签名,得到第一待认证数据。
可选的,上述处理器还可以执行如下步骤的程序代码:向认证方发送第一待认证数据之后包括:认证方接收第一待认证数据;确定第一待认证数据对应的身份认证密钥,是否在认证方的密钥数据库中注册;在身份认证密钥在密钥数据库中注册的情况下,根据第一待认证数据认证安全代码空间;在身份认证密钥在密钥数据库中没有注册的情况下,根据第一待认证数据得到认证数据,将认证数据发送给应用程序。
可选的,上述处理器还可以执行如下步骤的程序代码:通过应用程序的可信模块的可信平台背书密钥,根据认证数据,确定用于认证安全代码空间的第二待认证数据包括:根据可信平台背书密钥对第一待认证数据进行签名,得到第二待认证数据。
可选的,上述处理器还可以执行如下步骤的程序代码:向认证方发送第二待认证数据之后包括:认证方接收第二待认证数据;根据第二待认证数据认证安全代码空间。
可选的,上述处理器还可以执行如下步骤的程序代码:根据第二待认证数据认证安全代码空间之后,还包括:在安全代码控件认证通过的情况下,将身份认证密钥进行注册。
处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:认证方发送用于认证应用程序的安全代码空间的数据请求;接收应用程序发送的用于认证安全代码空间的第一待认证数据,其中,通过应用程序的可信模块的身份认证密钥响应数据请求,根据安全代码空间确定用于认证安全代码空间的第一待认证数据,并发送第一待认证数据;在身份认证密钥在认证方密钥数据库中未注册的情况下,根据第一待认证数据得到认证数据,将认证数据发送给应用程序;接收应用程序的第二待认证数据,其中,通过应用程序的可信模块的可信平台背书密钥,根据认证数据确定用于认证安全代码空间的第二待认证数据;根据第二待认证数据认证安全代码空间。
可选的,上述处理器还可以执行如下步骤的程序代码:身份认证密钥在密钥数据库中注册的情况下,根据第一待认证数据认证安全代码空间。
可选的,上述处理器还可以执行如下步骤的程序代码:根据第一待认证数据认证安全代码空间包括:确定身份认证密钥对应的已注册的标准身份认证密钥,以及身份认证密钥对应的可信配置基准值;根据标准身份认证密钥,通过认证第一待认证数据中身份认证密钥的签名,认证应用程序的身份;根据可信配置基准值与第一待认证数据中的pcr值进行比对,认证应用程序的完整性;在应用程序的身份认证成功,且完整性认证成功的情况下,认证安全代码空间。
可选的,上述处理器还可以执行如下步骤的程序代码:根据第一待认证数据认证安全代码空间包括:确定身份认证密钥对应的已注册的标准身份认证密钥,以及身份认证密钥对应的可信配置基准值;根据标准身份认证密钥,通过认证第一待认证数据中身份认证密钥的签名,认证应用程序的身份;根据可信配置基准值与第一待认证数据中的pcr值进行比对,认证应用程序的完整性;在应用程序的身份认证成功,且完整性认证成功的情况下,认证安全代码空间。
可选的,上述处理器还可以执行如下步骤的程序代码:在应用程序的身份认证成功的情况下,通过对认证数据进行二次认证,认证安全代码空间包括:读取认证数据对应的标准身份认证密钥,其中,认证数据包括第一待认证数据;根据标准身份认证密钥,通过认证认证数据中身份认证密钥的签名;在认证数据中身份认证密钥的签名认证成功的情况下,读取认证数据中的pcr值,写入pcr值的第一记录数据库作为认证方的身份认证密钥对应的可信配置基准值;安全代码空间认证通过,将安全代码空间写入认证方的安全代码空间的第二记录数据库。
处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:认证方向应用程序发送用于认证应用程序的安全代码空间的数据请求;应用程序接收数据请求,响应该数据请求,通过应用程序的可信模块的身份认证密钥,根据安全代码空间和安全代码空间的属性信息,确定用于认证安全代码空间的第一待认证数据;向认证方发送第一待认证数据;在身份认证密钥在认证方密钥数据库中未注册的情况下,将第一待认证数据发送给应用程序;应用程序接收第一待认证数据,通过应用程序的可信模块的可信平台背书密钥,根据第一待认证数据,确定用于认证第一待认证数据的第二待认证数据;向认证方发送第二待认证数据;认证方接收应用程序的第二待认证数据,根据第二待认证数据认证安全代码空间。
采用本发明实施例,提供了一种安全代码空间认证方法的方案。通过应用程序响应认证方的数据请求,通过身份认证密钥处理安全代码空间得到第一待认证数据,身份认证密钥在认证方的密钥数据库中未注册的情况下,认证方将认证数据发给应用程序,应用程序接收第一待认证数据,通过可信平台背书密钥对认证方返回的认证数据进行处理,得到第二待认证数据,并发送给认证方进行验证,从而达到了对安全代码控件的双重验证的目的,进而解决了相关技术中安全代码空间认证方法不能验证安全代码空间是否被篡改的技术问题。
本领域普通技术人员可以理解,图12所示的结构仅为示意,计算机终端也可以是智能手机(如android手机、ios手机等)、平板电脑、掌声电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图12其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图12中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图12所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。
实施例7
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的安全代码空间认证方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:应用程序接收认证方发送的用于认证应用程序的安全代码空间的数据请求;通过应用程序的可信模块的身份认证密钥响应数据请求,根据安全代码空间,得到用于认证安全代码空间的第一待认证数据;向认证方发送第一待认证数据,其中,第一待认证数据用于认证方认证安全代码空间;接收认证方对第一待认证数据认证后的认证数据,其中,身份认证密钥在认证方密钥数据库中未注册的情况下,将认证数据发给应用程序;通过应用程序的可信模块的可信平台背书密钥,根据认证数据,确定用于认证安全代码空间的第二待认证数据;向认证方发送第二待认证数据,其中,第二待认证数据用于认证方认证安全代码空间。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据安全代码空间,得到用于认证安全代码空间的第一待认证数据包括:通过可信模块接收引用信息,其中,应用程序的引用模块将安全代码空间的报告信息转换成引用信息;获取用于标识应用程序的完整性的pcr值;通过身份认证密钥,根据引用信息和pcr值确定第一待认证数据。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:可信模块接收引用信息之前包括:通过引用模块接收报告信息;对报告信息进行本地认证;在本地认证通过的情况下,将报告信息转换为引用信息。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:通过身份认证密钥,根据引用信息和pcr值确定第一待认证数据包括:可信模块将pcr值与引用信息结合为结合数据;根据身份认证密钥对结合数据进行签名,得到第一待认证数据。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:向认证方发送第一待认证数据之后包括:认证方接收第一待认证数据;确定第一待认证数据对应的身份认证密钥,是否在认证方的密钥数据库中注册;在身份认证密钥在密钥数据库中注册的情况下,根据第一待认证数据认证安全代码空间;在身份认证密钥在密钥数据库中没有注册的情况下,根据第一待认证数据得到认证数据,将认证数据发送给应用程序。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:通过应用程序的可信模块的可信平台背书密钥,根据认证数据,确定用于认证安全代码空间的第二待认证数据包括:根据可信平台背书密钥对第一待认证数据进行签名,得到第二待认证数据。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:向认证方发送第二待认证数据之后包括:认证方接收第二待认证数据;根据第二待认证数据认证安全代码空间。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据第二待认证数据认证安全代码空间之后,还包括:在安全代码控件认证通过的情况下,将身份认证密钥进行注册。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:认证方发送用于认证应用程序的安全代码空间的数据请求;接收应用程序发送的用于认证安全代码空间的第一待认证数据,其中,通过应用程序的可信模块的身份认证密钥响应数据请求,根据安全代码空间确定用于认证安全代码空间的第一待认证数据,并发送第一待认证数据;在身份认证密钥在认证方密钥数据库中未注册的情况下,根据第一待认证数据得到认证数据,将认证数据发送给应用程序;接收应用程序的第二待认证数据,其中,通过应用程序的可信模块的可信平台背书密钥,根据认证数据确定用于认证安全代码空间的第二待认证数据;根据第二待认证数据认证安全代码空间。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:身份认证密钥在密钥数据库中注册的情况下,根据第一待认证数据认证安全代码空间。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据第一待认证数据认证安全代码空间包括:确定身份认证密钥对应的已注册的标准身份认证密钥,以及身份认证密钥对应的可信配置基准值;根据标准身份认证密钥,通过认证第一待认证数据中身份认证密钥的签名,认证应用程序的身份;根据可信配置基准值与第一待认证数据中的pcr值进行比对,认证应用程序的完整性;在应用程序的身份认证成功,且完整性认证成功的情况下,认证安全代码空间。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据第一待认证数据认证安全代码空间包括:确定身份认证密钥对应的已注册的标准身份认证密钥,以及身份认证密钥对应的可信配置基准值;根据标准身份认证密钥,通过认证第一待认证数据中身份认证密钥的签名,认证应用程序的身份;根据可信配置基准值与第一待认证数据中的pcr值进行比对,认证应用程序的完整性;在应用程序的身份认证成功,且完整性认证成功的情况下,认证安全代码空间。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在应用程序的身份认证成功的情况下,通过对认证数据进行二次认证,认证安全代码空间包括:读取认证数据对应的标准身份认证密钥,其中,认证数据包括第一待认证数据;根据标准身份认证密钥,通过认证认证数据中身份认证密钥的签名;在认证数据中身份认证密钥的签名认证成功的情况下,读取认证数据中的pcr值,写入pcr值的第一记录数据库作为认证方的身份认证密钥对应的可信配置基准值;安全代码空间认证通过,将安全代码空间写入认证方的安全代码空间的第二记录数据库。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在应用程序的身份认证成功的情况下,通过对认证数据进行二次认证,认证安全代码空间包括:读取认证数据对应的标准身份认证密钥,其中,认证数据包括第一待认证数据;根据标准身份认证密钥,通过认证认证数据中身份认证密钥的签名;在认证数据中身份认证密钥的签名认证成功的情况下,读取认证数据中的pcr值,写入pcr值的第一记录数据库作为认证方的身份认证密钥对应的可信配置基准值;安全代码空间认证通过,将安全代码空间写入认证方的安全代码空间的第二记录数据库。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。