一种软件保护方法、装置、系统、CPU芯片及电子设备与流程

文档序号:32979978发布日期:2023-01-17 21:54阅读:56来源:国知局
一种软件保护方法、装置、系统、CPU芯片及电子设备与流程
一种软件保护方法、装置、系统、cpu芯片及电子设备
技术领域
1.本发明涉及软件安全技术领域,尤其涉及一种软件保护方法、装置、系统、cpu芯片及电子设备。


背景技术:

2.目前,计算机技术高速发展,计算机软件种类及其功能也越来越丰富,能够满足现代人生活和工作中的各种需求。然而,与此同时,计算机软件安全性问题也日益凸显。计算机软件开发商通常会面对对于软件本身和软件版权的威胁,比如:软件被反编译、软件授权被非法拷贝等。对于所述威胁,目前主流的防御方案有如下两种实现方式:
3.一、基于软件的保护方式,此方式主要通过保存在软件内部的密钥对证书或注册码进行验证,但是容易被破解;
4.二、基于硬件的保护方式,此方式下的保护设备通常被称作加密狗或加密锁,是一种插在计算机usb(universal serial bus,通用串行总线)口或并口上的软硬件结合的加密产品,通过在软件执行过程中和加密狗交换数据来实现加密。
5.目前,常用的硬件保护方式,如图1所示。加密狗插在计算机的usb口,通过usb串行总线与cpu(central processing unit,中央处理器)相连,软件运行过程中与加密狗交换数据实现软件的加解密功能。然而,此种保护方式通常存在以下缺点:成本上,外接加密狗需要使用额外的硬件,增加了硬件成本;安全性上,加密狗完全通过串行总线与cpu相连,增加了暴露面,容易受总线类物理攻击。


技术实现要素:

6.有鉴于此,本发明实施例提供一种软件保护方法、装置、系统、cpu芯片及电子设备,以降低软件保护设计的成本,增强其安全性。
7.第一方面,本发明实施例提供一种软件保护方法,应用于用户设备的中央处理器cpu芯片中的运算核心,所述方法包括:
8.检测到用户对软件使用的触发操作后,指示安全处理器sp进行用户设备的身份识别,其中所述身份识别包括:利用签名证书中的公钥对用户证书进行验签,以及,利用cpu芯片身份密钥派生的私钥对用户证书中的公钥进行校验;
9.如果sp识别用户设备身份成功,则允许用户使用软件。
10.可选的,所述软件保护方法还包括:
11.向证书管理服务器发送包含用户设备的cpu芯片标识的证书请求;
12.接收证书管理服务器根据证书请求下发的用户证书和签名证书,并进行存储;
13.其中,用户证书包括利用与cpu芯片标识对应的cpu芯片身份密钥派生的公钥,且由与签名证书中的公钥对应的私钥签名。
14.可选的,指示安全处理器sp进行用户设备的身份识别,还包括:指示sp验证用户证书是否在有效期内。
15.可选的,在允许用户使用软件后,所述软件保护方法还包括:
16.在用户使用软件的过程中,指示sp使用用户证书中的公钥对软件的设定关键代码和数据进行加密保护;
17.检测到对所述设定关键代码和数据的使用需求时,指示sp使用cpu芯片身份密钥派生的私钥对软件的设定关键代码和数据进行解密。
18.第二方面,本发明实施例提供一种软件保护方法,应用于用户设备的中央处理器cpu芯片中的安全处理器sp,所述方法包括:
19.接收到cpu芯片中的运算核心发送的用户设备身份识别指示;
20.对用户设备进行身份识别,其中所述身份识别包括:利用签名证书中的公钥对用户证书进行验签,以及,利用cpu芯片身份密钥派生的私钥对用户证书中的公钥进行校验;
21.将身份识别结果发送给cpu芯片中的运算核心,以使cpu芯片中的运算核心判断是否允许用户使用软件。
22.可选的,在对用户设备进行身份识别之前,所述软件保护方法还包括:
23.接收cpu芯片中的运算核心导入的用户证书和签名证书。
24.可选的,对用户设备进行身份识别,还包括:验证用户证书是否在有效期内。
25.可选的,所述软件保护方法还包括:
26.接收到cpu芯片中的运算核心发送的加密保护指示;使用用户证书中的公钥对软件的设定关键代码和数据进行加密保护;
27.接收到cpu芯片中的运算核心发送的解密指示;使用cpu芯片身份密钥派生的私钥对软件的设定关键代码和数据进行解密。
28.可选的,对软件的设定关键代码和数据进行加密保护,包括:
29.从安全非易失存储器flash获取用户证书中的公钥;
30.将用户证书中的公钥发送给密码协处理器,以使密码协处理器执行以下操作:从系统内存中读取软件的设定关键代码和数据;利用用户证书中的公钥对该读取结果进行加密保护,将加密保护结果存储至系统内存。
31.可选的,对软件的设定关键代码和数据进行解密,包括:
32.从安全非易失存储器flash获取cpu芯片身份密钥派生的私钥;将cpu芯片身份密钥派生的私钥发送给密码协处理器,以使密码协处理器执行以下操作:从系统内存中读取加密保护后的软件的设定关键代码和数据;利用cpu芯片身份密钥派生的私钥对该读取结果进行解密,将解密结果存储至系统内存。
33.第三方面,本发明实施例提供一种软件保护方法,应用于证书管理服务器,所述方法包括:
34.接收用户设备发送的包含用户设备的cpu芯片标识的证书请求;
35.获取与证书请求中的cpu芯片标识对应的cpu芯片身份密钥,根据cpu芯片身份密钥派生的公钥构建用户证书;
36.利用与签名证书中的公钥对应的私钥签名用户证书;
37.将签名证书和签名后的用户证书下发给用户设备,以使用户设备进行身份识别后判断是否允许用户使用软件。
38.可选的,获取与证书请求中的cpu芯片标识对应的cpu芯片身份密钥,包括:
39.查找预先创建的多个cpu芯片标识与多个cpu芯片身份密钥之间的映射关系,获取与证书请求中的cpu芯片标识对应的cpu芯片身份密钥。
40.可选的,在利用与签名证书中的公钥对应的私钥签名用户证书之前,所述方法还包括:
41.使用自身的cpu芯片密钥派生出一对非对称密钥:公钥和私钥;
42.根据该对非对称密钥中的公钥构建签名证书;
43.存储该对非对称密钥中的私钥。
44.可选的,所述证书请求还包括证书有效期和/或用户定制信息;
45.根据cpu芯片身份密钥派生的公钥构建用户证书,包括:
46.根据cpu芯片身份密钥派生的公钥,以及,证书有效期和/或用户定制信息,构建用户证书。
47.第四方面,本发明实施例提供一种软件保护装置,应用于用户设备的中央处理器cpu芯片中的运算核心,所述装置包括:
48.身份识别指示单元,用于检测到用户对软件使用的触发操作后,指示安全处理器sp进行用户设备的身份识别,其中所述身份识别包括:利用签名证书中的公钥对用户证书进行验签,以及,利用cpu芯片身份密钥派生的私钥对用户证书中的公钥进行校验;
49.软件使用权限判断单元,用于在安全处理器识别用户设备身份成功后,判断允许用户使用软件。
50.第五方面,本发明实施例提供一种软件保护装置,应用于用户设备的中央处理器cpu芯片中的安全处理器sp,所述装置包括:
51.指示接收单元,用于接收到cpu芯片中的运算核心发送的用户设备身份识别指示;
52.身份识别单元,用于对用户设备进行身份识别,其中所述身份识别包括:利用签名证书中的公钥对用户证书进行验签,以及,利用cpu芯片身份密钥派生的私钥对用户证书中的公钥进行校验;
53.识别结果发送单元,用于将身份识别结果发送给cpu芯片中的运算核心,以使cpu芯片中的运算核心判断是否允许用户使用软件。
54.第六方面,本发明实施例提供一种软件保护装置,应用于证书管理服务器,所述装置包括:
55.证书请求接收单元,用于接收用户设备发送的包含用户设备的cpu芯片标识的证书请求;
56.用户证书构建单元,用于获取与证书请求中的cpu芯片标识对应的cpu芯片身份密钥,根据cpu芯片身份密钥派生的公钥构建用户证书;
57.用户证书签名单元,用于利用与签名证书中的公钥对应的私钥签名用户证书;
58.证书下发单元,用于将签名证书和签名后的用户证书下发给用户设备,以使用户设备进行身份识别后判断是否允许用户使用软件。
59.第七方面,本发明实施例提供一种中央处理cpu芯片,应用于用户设备,所述cpu芯片包括:运算核心和安全处理器sp;其中:
60.运算核心包括上述第四方面所述的软件保护装置;
61.安全处理器sp包括上述第五方面所述的软件保护装置。
62.第八方面,本发明实施例提供一种软件保护系统,所述系统包括用户设备和证书管理服务器;其中:
63.用户设备包括上述第七方面所述的中央处理cpu芯片;
64.证书管理服务器包括上述第六方面所述的软件保护装置。
65.第九方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述第一方面、第二方面或者第三方面所述的方法。
66.本发明实施例提供的技术方案,用户设备上的cpu芯片中内置有证书,通过sp对此证书真伪的校验可实现软件使用的安全检测,只有当证书验签成功,且使用用户设备上能够代表用户设备身份的cpu芯片身份密钥校验证书中的公钥成功时,软件才能够正常使用。由于此软件保护机制直接在用户设备的cpu芯片内部完成,且核心的证书校验步骤由与运算核心所隔离的sp执行,不仅能够很好的减少对外的暴露面,增强安全性,而且在设计上也较为简单,无需使用额外的硬件,降低了成本。
附图说明
67.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
68.图1为现有技术中一种硬件保护方式的软件安全防御方案架构示意图;
69.图2为本发明实施例所适用的用户设备的一种硬件架构示意图;
70.图3为本发明实施例一提供的一种软件保护方法的流程示意图;
71.图4为本发明实施例一提供的一种软件保护装置的结构示意图;
72.图5为本发明实施例二提供的一种软件保护方法的流程示意图;
73.图6为本发明实施例二提供的一种软件保护装置的结构示意图;
74.图7为本发明实施例提供的一种用户设备软件架构示意图;
75.图8a为本发明实施例三提供的一种软件保护方法的流程示意图;
76.图8b为本发明实施例三提供的一种证书管理服务器软件架构示意图;
77.图9为本发明实施例三提供的一种软件保护装置的结构示意图;
78.图10为本发明实施四提供的一种软件保护方法的交互示意图;
79.图11为本发明实施例提供的一种电子设备结构示意图。
具体实施方式
80.下面结合附图对本发明实施例进行详细描述。
81.应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
82.首先,对本发明实施例中涉及的部分名词做简要阐述。
83.sp:secureprocessor,cpu芯片内集成的安全处理器,主要负责处理cpu安全相关的任务。
84.密码协处理器:cpu芯片内集成的密码协处理器。
85.chip unique id:芯片身份密钥,cpu芯片中用于派生cek(content encryption key,内容加密密钥)等代表芯片身份的密钥,保存在fuse(filesystem in userspace,用户空间文件系统)中。
86.root key:芯片根密钥,cpu芯片中用于派生其他密钥的根密钥,保存在fuse中。
87.sn:serial number,每个出厂的cpu芯片都有一个一一对应的序列号,保存在fuse中。
88.本发明实施例适用于对用户设备上的功能软件进行安全防御的场景。所述用户设备可以是台式电脑、笔记本电脑等计算机,也可以是其它内置有cpu芯片且安装有功能软件的物理装置。用户设备的硬件架构如图2所示,用户设备中的cpu芯片不仅包括运算核心(如x86核心,为表述方便,以下均直接以x86核心为例说明),还集成了sp和密码协处理器。cpu芯片外有系统内存、安全内存及安全非易失存储器flash。
89.其中,sp具有以下特点:
90.1、拥有自己专用的硬件资源,本身是一个可信的执行环境,其运行不受x86核心的干扰;
91.2、sp上运行的所有软件都由相关安全机制(如数字签名)验证,确保都是可信的;
92.3、x86核心与sp通过内部硬件接口进行通信,x86核心只能调用sp预定的功能,调用非预定功能会被sp直接拒绝;
93.4、sp内置了cpu芯片身份密钥,cpu芯片身份密钥是cpu芯片的机密信息,外部无法获知。
94.sp主要负责密钥等机密信息的管理及密码模块相关接口的实现;密码协处理器主要负责各种密码算法的实现,提供高效的密码运算能力;安全内存为sp所有,用来存储sp运行时代码或数据,x86核心无法访问安全内存,为防止内存相关物理攻击,sp访问安全内存时应由硬件自动进行加密和一致性保护;安全flash用来存储密钥等较多需要持久保存的信息,为防止相关物理攻击,sp访问安全flash时应进行加密及一致性保护;系统内存存放x86核心上用户需要进行密码运算的源数据,sp收到x86核心的密码运算请求,准备好相关密钥信息后指示密码协处理器进行密码运算,密码协处理器可以直接从系统内存读取用户数据,运算完成后将数据放回系统内存,保证密码运算的高效。
95.下面,通过各实施例详细介绍本发明的技术方案。
96.实施例一
97.本实施例提供一种软件保护方法,应用于如图2所示的用户设备的硬件架构,具体可由用户设备上cpu芯片中的运算核心执行。参见图3,该方法包括如下步骤301-303。
98.步骤301、检测到用户对软件使用的触发操作后,指示sp进行用户设备的身份识别,其中所述身份识别包括:利用签名证书中的公钥对用户证书进行验签,以及,利用cpu芯片身份密钥派生的私钥对用户证书中的公钥进行校验。
99.本步骤中,用户对软件使用的触发操作可以是用户启动软件开始运行的手势操
作,例如用户点击设备桌面上显示的软件图标。在检测到该触发操作,向sp发送指示信号,指示sp识别用户设备的身份,并在sp返回身份识别结果后,根据此结果判断是否允许用户使用软件。其中,用户证书验签成功并且用户证书中的公钥校验成功时,说明sp识别用户设备身份成功,否则说明sp识别用户设备身份失败。
100.步骤302、如果sp识别用户设备身份成功,则允许用户使用软件。
101.步骤303、如果sp识别用户设备身份失败,则拒绝用户使用软件。
102.在本实施例中,用户证书和签名证书可预先生成,之后在检测到用户对软件使用的触发操作后导入到sp的安全内存中。示例性的,证书在cpu芯片厂商侧制作完成,具体可以由cpu芯片厂商维护的证书管理服务器实现。相应的,本实施例提供的软件保护方法还包括:向证书管理服务器发送包含用户设备的cpu芯片标识的证书请求;接收证书管理服务器根据证书请求下发的用户证书和签名证书,并进行存储。典型的,用户证书和签名证书被保存在fuse中,为保证安全,fuse只能被sp读取。其中,证书请求中的cpu芯片标识可以为sn之类的字符串,证书管理服务器能够据此唯一确定用户设备上的cpu芯片,并找到相应的cpu芯片身份密钥,生成的用户证书包括cpu芯片标识对应的cpu芯片身份密钥派生出的公钥,且用户证书由签名证书中的公钥所对应的私钥签名。
103.作为一种优选实施方式,指示安全处理器sp进行用户设备的身份识别,还包括:指示sp验证用户证书是否在有效期内。
104.进一步的,在以上方案的基础上,本实施例提供的软件保护方法在允许用户使用软件后,还包括:在用户使用软件的过程中,指示sp使用用户证书中的公钥对软件的设定关键代码和数据进行加密保护;检测到对所述设定关键代码和数据的使用需求时,指示sp使用cpu芯片身份密钥派生的私钥对软件的设定关键代码和数据进行解密。由此,能够更好地保护软件使用的安全性,避免外界攻击带来的威胁。
105.相应的,与前述本实施例中的软件保护方法属于相同的发明构思,本实施例还提供一种软件保护装置,该装置可由软件实现,应用于用户设备的cpu芯片中的运算核心。参见图4,所述装置包括:
106.身份识别指示单元401,用于检测到用户对软件使用的触发操作后,指示sp进行用户设备的身份识别,其中所述身份识别包括:利用签名证书中的公钥对用户证书进行验签,以及,利用cpu芯片身份密钥派生的私钥对用户证书中的公钥进行校验;
107.软件使用权限判断单元402,用于在sp识别用户设备身份成功后,判断允许用户使用软件。
108.进一步的,本实施例提供的软件保护装置还包括:
109.证书请求单元403,用于向证书管理服务器发送包含用户设备的cpu芯片标识的证书请求;
110.证书接收单元404,用于接收证书管理服务器根据证书请求下发的用户证书和签名证书,并进行存储;
111.其中,用户证书包括利用与cpu芯片标识对应的cpu芯片身份密钥派生的公钥,且由与签名证书中的公钥对应的私钥签名。
112.进一步的,身份识别指示单元401用于指示sp进行用户设备的身份识别,还包括:指示sp验证用户证书是否在有效期内。
113.进一步的,本发明实施例提供的软件保护装置还包括加解密指示单元405,用于在允许用户使用软件后:
114.在用户使用软件的过程中,指示sp使用用户证书中的公钥对软件的设定关键代码和数据进行加密保护;
115.检测到对所述设定关键代码和数据的使用需求时,指示sp使用cpu芯片身份密钥派生的私钥对软件的设定关键代码和数据进行解密。
116.实施例二
117.本实施例提供一种软件保护方法,应用于如图2所示的用户设备的硬件架构,具体可由用户设备上cpu芯片中的sp执行。参见图5,该方法包括如下步骤501-503。
118.步骤501、接收到cpu芯片中的运算核心发送的用户设备身份识别指示。
119.步骤502、对用户设备进行身份识别,其中所述身份识别包括:利用签名证书中的公钥对用户证书进行验签,以及,利用cpu芯片身份密钥派生的私钥对用户证书中的公钥进行校验。
120.本步骤中,可预先接收cpu芯片中的运算核心导入的用户证书和签名证书,之后将用户证书和签名证书存储在sp的存储空间中,典型的,在安全内存中保存该两种证书。其中,用户证书是利用用户设备上的cpu芯片身份密钥派生的公钥生成的,与cpu芯片身份密钥一一对应,而由于cpu芯片身份密钥是与用户设备一一对应的,故用户证书与用户设备也具备一一对应关系,也即用户证书为能够标识用户设备身份的一种信息。由此,通过对用户证书真伪的校验可实现用户设备的身份识别。此外,考虑到用户证书的安全性,须对证书签名。在进行用户证书真伪校验时,先利用签名证书中的公钥对用户证书进行验签,而后利用cpu芯片身份密钥派生的私钥对用户证书中的公钥进行校验。具体的证书验签和公钥校验过程属于现有技术,在此不再赘述。
121.可选的,对用户设备进行身份识别,还包括:验证用户证书是否在有效期内。具体实施时,用户证书中包含有证书的起始日期和截止日期,sp可以据此判断当前时间是否在此时间段内。如果在,则确定用户证书在有效期内;否则,确定用户证书不在有效期内,证书失效,用户设备身份识别失败。
122.步骤503、将身份识别结果发送给cpu芯片中的运算核心,以使cpu芯片中的运算核心判断是否允许用户使用软件。
123.进一步的,在以上方案的基础上,本实施例提供的软件保护方法还包括:
124.接收到cpu芯片中的运算核心发送的加密保护指示;使用用户证书中的公钥对软件的设定关键代码和数据进行加密保护;
125.接收到cpu芯片中的运算核心发送的解密指示;使用cpu芯片身份密钥派生的私钥对软件的设定关键代码和数据进行解密。
126.示例性的,对软件的设定关键代码和数据进行加密保护,包括:从安全flash获取用户证书中的公钥;将用户证书中的公钥发送给密码协处理器,以使密码协处理器执行以下操作:从系统内存中读取软件的设定关键代码和数据;利用用户证书中的公钥对该读取结果进行加密保护,将加密保护结果存储至系统内存。其中,可以将加密保护后的软件的设定关键代码和数据存储在系统内存,删除系统内存之前未加密保护的软件的设定关键代码和数据。
127.相应的,对软件的设定关键代码和数据进行解密,包括:从安全非易失存储器flash获取cpu芯片身份密钥派生的私钥;将cpu芯片身份密钥派生的私钥发送给密码协处理器,以使密码协处理器执行以下操作:从系统内存中读取加密保护后的软件的设定关键代码和数据;利用cpu芯片身份密钥派生的私钥对该读取结果进行解密,将解密结果存储至系统内存。其中,可以将解密后的软件的设定关键代码和数据存储在系统内存,删除系统内存之前加密保护的软件的设定关键代码和数据。
128.以上方案使用sp内置的密码协处理器,能够加速软件代码和数据的加解密过程。
129.相应的,与前述本实施例中的软件保护方法属于相同的发明构思,本实施例还提供一种软件保护装置,该装置可由软件实现,应用于用户设备的cpu芯片中的sp。参见图6,所述装置包括:
130.指示接收单元601,用于接收到cpu芯片中的运算核心发送的用户设备身份识别指示;
131.身份识别单元602,用于对用户设备进行身份识别,其中所述身份识别包括:利用签名证书中的公钥对用户证书进行验签,以及,利用cpu芯片身份密钥派生的私钥对用户证书中的公钥进行校验;
132.识别结果发送单元603,用于将身份识别结果发送给cpu芯片中的运算核心,以使cpu芯片中的运算核心判断是否允许用户使用软件。
133.进一步的,本实施例提供的软件保护装置还包括证书接收单元600,用于:在身份识别单元602对用户设备进行身份识别之前,接收cpu芯片中的运算核心导入的用户证书和签名证书。
134.进一步的,身份识别单元602用于对用户设备进行身份识别,还包括:验证用户证书是否在有效期内。
135.进一步的,本实施例提供的软件保护装置还包括加解密单元604,用于:
136.接收到cpu芯片中的运算核心发送的加密保护指示;使用用户证书中的公钥对软件的设定关键代码和数据进行加密保护;
137.接收到cpu芯片中的运算核心发送的解密指示;使用cpu芯片身份密钥派生的私钥对软件的设定关键代码和数据进行解密。
138.示例性的,加解密单元604用于对软件的设定关键代码和数据进行加密保护,包括:
139.从安全flash获取用户证书中的公钥;
140.将用户证书中的公钥发送给密码协处理器,以使密码协处理器执行以下操作:从系统内存中读取软件的设定关键代码和数据;利用用户证书中的公钥对该读取结果进行加密保护,将加密保护结果存储至系统内存。
141.示例性的,加解密单元604用于对软件的设定关键代码和数据进行解密,包括:
142.从安全flash获取cpu芯片身份密钥派生的私钥;将cpu芯片身份密钥派生的私钥发送给密码协处理器,以使密码协处理器执行以下操作:从系统内存中读取加密保护后的软件的设定关键代码和数据;利用cpu芯片身份密钥派生的私钥对该读取结果进行解密,将解密结果存储至系统内存。
143.此外,基于以上实施例一和实施二,本发明实施例还提供一种cpu芯片,应用于用
户设备,该cpu芯片包括:运算核心和sp。其中:运算核心,包括上述实施例一中提供的软件保护装置;sp,包括上述实施例二中提供的软件保护装置。在此技术方案中,部署在用户设备上cpu芯片的软件架构如图7所示,sp对外提供的接口可以分为“业务”和“管理”两类接口。管理接口由设备管理员使用,主要提供用户密钥的管理功能,如用户证书的验签、用户证书中的公钥与当前用户设备cpu芯片身份密钥对应关系的校验、用户证书有效期的验证等。业务接口供上层用户使用,主要提供密码运算相关功能,如加密解密、hmac(hash-based message authentication code,哈希消息认证码)认证等。
144.实施例三
145.本实施例提供一种软件保护方法,应用于证书管理服务器,该方法可与上述实施例一和实施二提供的用户设备侧的软件保护方法配合执行,实现软件的安全保护。其中,证书管理服务器可以由用户设备上的cpu芯片厂商维护。参见图8a,该方法包括如下步骤801-804。
146.步骤801、接收用户设备发送的包含用户设备的cpu芯片标识的证书请求。
147.步骤802、获取与证书请求中的cpu芯片标识对应的cpu芯片身份密钥,根据该cpu芯片身份密钥派生的公钥构建用户证书。
148.本步骤中,可预先创建有多个cpu芯片标识与多个cpu芯片身份密钥之间的映射关系,后续接收到来自用户设备的证书请求后,查找该映射关系,可获取得到与证书请求中的cpu芯片标识对应的cpu芯片身份密钥,之后利用获取到的该cpu芯片身份密钥派生出公钥和私钥这一对用户密钥,进而根据用户密钥中的公钥构建用户证书。进一步的,用户设备发送的证书请求中还包括证书有效期和/或用户定制信息,其中用户定制信息可包括证书所属单位信息。相应的,根据与证书请求中的cpu芯片标识对应的cpu芯片身份密钥派生的公钥构建用户证书,包括:根据该cpu芯片身份密钥派生的公钥,以及,证书有效期和/或用户定制信息,构建用户证书。其中,如何根据公钥、证书有效期和/或用户定制信息构建用户证书,属于现有技术,在此不再赘述。
149.步骤803、利用与签名证书中的公钥对应的私钥签名用户证书。
150.具体实施时,可预先使用证书管理服务器自身的cpu芯片密钥派生出签名密钥,此签名密钥为一对非对称密钥,包括:公钥和私钥,其中的私钥可存储在证书管理服务器的内存中,对外保密,为用户证书提供签名服务。并且,可根据该对非对称密钥中的公钥构建签名证书,提供给用户,以便用户设备进行验签。
151.步骤804、将签名证书和签名后的用户证书下发给用户设备,以使用户设备进行身份识别后判断是否允许用户使用软件。
152.需要说明的是,作为一种实施方式,可以在接收到用户设备的证书请求后,生成用户证书,然后将该证书连带签名证书一并作为此证书请求的响应回传给用户设备。作为另一种实施方式,还可在接收到用户设备的证书请求后,生成用户证书,并存储该用户证书,后续接收到用户设备发送的证书下载请求后再下发用户证书和签名证书,此方式可方便证书管理服务器管理证书。
153.典型的,证书管理服务器的软件架构如图8b所示,在该架构中:
154.证书管理服务器维护有两个数据库:密钥数据库和证书数据库,其中,密钥数据库中保存着每个售出的cpu芯片的sn与其cpu芯片身份密钥的对应关系,证书数据库中保存着
用户设备请求产生的证书;
155.证书管理服务器对外提供两张证书:用户证书和签名证书,其中,用户证书包含用户设备唯一的cpu芯片身份密钥派生出的公钥和用户输入的证书有效期、证书所属公司信息等内容,签名证书包含用于对用户证书进行验签的公钥;
156.证书管理服务器接收用户设备发起的证书请求,请求中包含:cpu芯片的sn(图8b中的chip_sn);证书起止有效期(图8b中的start_date、expire_date);用户定制信息,如用户证书所属公司相关信息(图8b中的user_info)等;
157.证书管理服务器的证书产生模块首先到密钥数据库中,查询该sn对应的cpu芯片身份密钥;然后,证书产生模块使用该查询到的cpu芯片身份密钥派生一对非对称密钥,其公钥即为用户公钥;进而,证书产生模块使用用户公钥和用户输入的其它信息构建用户证书,使用签名密钥中的私钥为用户证书签名,并保存到证书数据库;其中,证书管理服务器还存储有与对用户证书进行验签的公钥对应的私钥,该私钥与对应的公钥作为签名密钥,由证书管理服务器自身的cpu芯片身份密钥派生得到;
158.后续,用户设备可以使用cpu芯片厂商对外提供的用户界面,输入用户设备的sn及其用户定制信息,从证书管理服务器查询并下载可用的用户证书和签名证书,其中用户证书和签名证书的查询和下载服务由证书管理服务器的证书维护模块提供。而且,管理员还可以使用管理员界面通过证书维护模块对证书数据库进行管理,如主动废弃库中的无效用户证书等;
159.此外,为避免介质故障影响数据库的可用性,还提供了证书数据库镜像。证书管理服务器会自动把整个证书数据库或其中的关键数据复制到另一存储位置,每当证书数据库更新时,会自动把更新后的数据复制过去,保证镜像数据与主数据的一致性。
160.从以上方案可以看出,用户设备得到的用户证书和签名证书,具有以下特性:
161.1、签名证书的私钥位于cpu芯片厂商的证书管理服务器中,安全可控;
162.2、用户证书与每个cpu芯片独有的cpu芯片身份密钥一一绑定,可以代表用户设备的身份信息;
163.3、cpu芯片身份密钥只保存在sp的存储空间和cpu芯片厂商的密钥数据库中,其他人无法获取和篡改;
164.4、用户证书和签名证书可以一起被导入到用户设备的sp中,进行有效性验证;
165.5、用户可以在用户证书中定制诸如用户起止有效期、用户定制信息等功能,增加对软件更进一步的管理。
166.相应的,与前述本实施例中的软件保护方法属于相同的发明构思,本实施例还提供一种软件保护装置,该装置可由软件实现,应用于证书管理服务器。参见图9,所述装置包括:
167.证书请求接收单元901,用于接收用户设备发送的包含用户设备的cpu芯片标识的证书请求;
168.用户证书构建单元902,用于获取与证书请求中的cpu芯片标识对应的cpu芯片身份密钥,根据cpu芯片身份密钥派生的公钥构建用户证书;
169.用户证书签名单元903,用于利用与签名证书中的公钥对应的私钥签名用户证书;
170.证书下发单元904,用于将签名证书和签名后的用户证书下发给用户设备,以使用
户设备进行身份识别后判断是否允许用户使用软件。
171.示例性的,用户证书构建单元902用于获取与证书请求中的cpu芯片标识对应的cpu芯片身份密钥,包括:
172.查找预先创建的多个cpu芯片标识与多个cpu芯片身份密钥之间的映射关系,获取与证书请求中的cpu芯片标识对应的cpu芯片身份密钥。
173.进一步的,本实施例提供的软件保护装置还包括签名证书构建单元900,用于在用户证书签名单元903利用与签名证书中的公钥对应的私钥签名用户证书之前:
174.使用自身的cpu芯片密钥派生出一对非对称密钥:公钥和私钥;
175.根据该对非对称密钥中的公钥构建签名证书;
176.存储该对非对称密钥中的私钥。
177.进一步的,所述证书请求还包括证书有效期和/或用户定制信息;
178.用户证书构建单元902用于根据cpu芯片身份密钥派生的公钥构建用户证书,包括:根据cpu芯片身份密钥派生的公钥,以及,证书有效期和/或用户定制信息,构建用户证书。
179.实施例四
180.在上述实施例一、二和三的基础上,本实施例提供一种软件保护系统,所述系统包括用户设备和证书管理服务器;其中:
181.用户设备包括cpu芯片;cpu芯片包括运算核心和sp;运算核心包括上述实施例一提供的软件保护装置;sp包括上述实施例二提供的软件保护装置;
182.证书管理服务器包括实施例三中提供的软件保护装置。
183.以下基于上述软件保护系统,提供一种该系统下的软件保护方法的具体实例。参见图10,该软件保护方法包括:
184.初始化阶段:
185.用户设备上cpu芯片中的用户层x86核心向cpu芯片厂商侧的证书管理服务器请求与其设备匹配的证书,请求中包括:设备序列号、证书的有效期、证书所属公司等信息;
186.证书管理服务器根据接收到的请求中携带的设备序列号,在数据库中查询该设备对应的cpu芯片身份密钥,使用该cpu芯片身份密钥派生出用户密钥:公钥和私钥,接着使用该用户密钥中的公钥和请求中的证书的有效期、证书所属单位等信息构建用户证书,然后使用证书管理服务器自身的签名密钥中的私钥为用户证书签名;
187.证书管理服务器将签名证书和用户证书发送给用户设备,用户设备上cpu芯片中的x86核心将收到的证书保存于fuse。
188.证书校验阶段:用户设备上cpu芯片中的x86核心通过与sp预定的导入接口,将签名证书和用户证书导入到sp的安全内存中;sp使用签名证书中的公钥对用户证书进行验签;sp用fuse中保存的cpu芯片身份密钥派生出私钥对用户证书中保存的公钥进行校验,以验证两者的对应关系;sp对用户证书中保存的起止日期进行校验,以验证用户证书是否在有效期内。
189.软件运行阶段:如果证书校验阶段通过,用户才被允许使用软件;除此之外,在此阶段还可以使用x86核心与sp预定的加解密接口,使用用户证书中公钥对软件设定的关键代码和数据进行加密保护,需要使用该设定的关键代码和数据时,再通过与sp预定的解密
接口,使用用户空间文件系统中cpu芯片身份芯片密钥派生的私钥进行解密。
190.图11为本发明电子设备一个实施例的结构示意图,可以实现本发明图3、图5或图8a所示实施例的流程,如图11所示,上述电子设备可以包括:壳体1101、处理器1102、存储器1103、电路板1104和电源电路1105,其中,电路板1104安置在壳体1101围成的空间内部,处理器1102和存储器1103设置在电路板1104上;电源电路1105,用于为上述电子设备的各个电路或器件供电;存储器1103用于存储可执行程序代码;处理器1102通过读取存储器1103中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的软件保护方法。
191.处理器1102对上述步骤的具体执行过程以及处理器1102通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图3、图5或图8a所示实施例的描述,在此不再赘述。
192.该电子设备以多种形式存在,包括但不限于:
193.(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标;这类终端包括:智能手机(例如iphone)、多媒体手机、功能性手机等;
194.(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:pda、mid和umpc设备等,例如ipad;
195.(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如ipod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备;
196.(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高;
197.(5)其它具有高速处理能力且安装有功能软件的电子设备。
198.本发明实施例提供的技术方案,为防止软件未经授权使用,会通过用户设备上cpu芯片中的sp校验证书来对用户设备身份进行检查,在确认证书中的公钥与设备cpu芯片身份密钥匹配时,证书校验成功,用户设备身份合法,允许软件启动,如果证书校验失败,则说明用户设备身份非法,设备上受保护的软件将不能正常执行,从而达到软件的授权保护。同时,为避免软件源代码不被反编译、不被随意篡改,本发明实施例还利用用户设备上的cpu芯片中的sp对关键的软件代码和数据进行了加密保护。整个方案中,不会为用户设备额外增加诸如加密狗之类的外接硬件,只需要利用cpu芯片内集成的具有高度安全性的sp配合运算核心即可实现,不仅能够降低硬件成本,还减少了对外暴露面,不会受到总线类的物理攻击。
199.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
200.本发明实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关
系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
201.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
202.尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
203.为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
204.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random access memory,ram)等。
205.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1