掌桥专利:专业的专利平台
掌桥专利
首页

本申请是申请日为2019年6月11日、申请号为201910500991.2、题为“软件验证方法、软硬件绑定方法及其可编程器件”的专利申请的分案申请。

技术领域

本申请总体说来涉及计算装置的软硬件保护的技术领域,更具体地讲,涉及软硬件绑定方法、软件验证方法及其可编程器件。

背景技术

目前,软硬件厂商利用各种措施来保护自身开发的软件和硬件的知识产权。然而,由于目前的软件可以在不同厂商所开发的设备上运行,基于软件加密的方法很容易被破解,并且在破解之后容易被大量复制,进而给厂商带来巨大的经济损失。

因此,现在越来越多的厂商将软件与硬件一起绑定出售,即,将硬件设备和相应的软件绑定在一起,达到配套软件只能在其对应的硬件平台上运行,然而现有的软硬件绑定验证方法,均由运行软件的主机在本地的CPU上执行,例如数字签名算法的验证公钥必须存储在本机上,然而,正是由于验证公钥等数据存储在本机的存储器中,因此存在验证密钥被读取或者密钥生成算法被破解的可能,进而现有的基于非对称密钥加密的软硬件绑定验证方法就会存在被破解的可能,或者,在未来算力大幅提高的情况下,现有的软硬件绑定验证方法也会存在被破解的可能。

发明内容

本发明的示例性实施例在于提供一种软件验证方法、软硬件绑定方法及其可编程器件,以至少解决现有技术存在的上述问题。

根据本发明的示例性实施例,提供一种实现软硬件绑定的方法,所述方法可包括:获取需要与待发布软件绑定的计算装置的指定硬件的标识;生成一对公钥和私钥;将关于公钥的数据固化在可编程器件中;通过使用私钥依据数字签名算法对所述指定硬件的标识进行数字签名来生成数字证书文件,并将所述数字证书文件与所述软件一起发布。

可选地,所述方法还可包括:将验证数字签名的验证程序固化在所述可编程器件中。

可选地,关于公钥的数据可以是所述公钥本身。

可选地,所述方法还可包括:在所述可编程器件中固化其物理不可克隆函数PUF对应的PUF电路;使用所述PUF电路在所述可编程器件中生成具有唯一性的PUF密钥;利用PUF密钥对所述公钥进行加密,得到所述的关于公钥的数据。

可选地,所述可编程器件可以是所述计算装置的固定的硬件组成部分;或者,所述可编程器件可以以可插拔的方式与所述计算装置结合。

可选地,所述可编程器件可以是如下中任一种:PAL、PLA、GAL、FPGA和CPLD。

根据本发明的示例性实施例,提供一种软件验证方法,所述软件验证方法可包括:获取软件的数字证书文件以及当前计算装置的指定硬件的标识;通过固化在可编程器件中的关于公钥的数据,验证所述获取的指定硬件的标识是否与所述软件的数字证书文件中包含的硬件标识匹配;当验证结果为匹配时,允许在所述计算装置上安装和运行所述软件。

可选地,可由固化在所述可编程器件中的验证程序执行所述的验证步骤。

可选地,所述软件的数字证书文件可以是通过利用与所述公钥对应的私钥对硬件标识依据数字签名算法进行数字签名而生成的。

可选地,关于公钥的数据可以是所述公钥本身。

可选地,关于公钥的数据可以是通过使用在所述可编程器件中固化的物理不可克隆函数PUF电路所产生的PUF密钥对所述公钥进行加密而生成的公钥密文。

可选地,所述验证的步骤可包括:激活固化在所述可编程器件中的PUF电路来获取PUF密钥;通过使用获取的PUF密钥对固化在所述可编程器件中的关于公钥的数据进行解密来获取所述公钥;通过使用获取的所述公钥依据数字签名算法对所述软件的数字证书文件进行解密得到其中包含的硬件标识,进而验证所述获取的指定硬件的标识是否与所述软件的数字证书文件中包含的硬件标识匹配。

可选地,所述可编程器件可以是如下中任一种:可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、通用逻辑阵列(GAL)、可编程门阵列(FPGA)和复杂可编程器件(CPLD)。

可选地,所述可编程器件可以是所述计算装置的固定的硬件组成部分,或者,所述可编程器件可以以可插拔的方式与所述计算装置结合。

根据本发明的示例性实施例,提供一种用于软硬件绑定的可编程器件,其中,所述可编程器件中可固化有关于公钥的数据,其中,所述关于公钥的数据可用于验证待安装和运行指定软件的计算装置的相关硬件标识是否与所述指定软件的数字证书文件中包含的硬件标识匹配,其中,所述数字证书可以是使用与所述公钥对应的私钥对与所述软件绑定的计算装置的相关硬件标识进行数字签名获得的。

可选地,所述可编程器件中还可固化有执行所述验证的验证程序。

可选地,所述可编程器件中还可固化有可编程器件的物理不可克隆函数PUF电路,其中,所述PUF电路可用于生成具有唯一性的PUF密钥,所述关于公钥的数据可以是用所述PUF密钥对公钥进行加密获得的公钥密文。

可选地,所述可编程器件可以是待安装和运行指定软件的计算装置的固定的硬件组成部分;或者,所述可编程器件可通过可插拔的方式与待安装和运行指定软件的计算装置结合。

所述可编程器件可以是如下中任一种:可编程阵列逻辑PAL、可编程逻辑阵列PLA、通用逻辑阵列GAL、可编程门阵列FPGA和复杂可编程器件CPLD。

根据本申请的示例性实施例的软件验证方法、软硬件绑定方法及其可编程器件,可以将关于公钥的数据、验证数据签名的验证程序等固化在可编程器件中,进而提高了绑定后的软硬件的安全性。

将在接下来的描述中部分阐述本发明总体构思另外的方面和/或优点,还有一部分通过描述将是清楚的,或者可以经过本发明总体构思的实施而得知。

附图说明

从下面结合附图对本申请实施例的详细描述中,本申请的这些和/或其他方面和优点将变得更加清楚并更容易理解,其中:

图1是示出根据本申请示例性实施例的用于实现软硬件绑定的方法的流程图;

图2是示出根据本申请示例性实施例的软件验证方法的流程图;

图3是示出根据本申请示例性实施例的具体验证步骤的详细流程图。

具体实施方式

现在将详细参照本发明的实施例,所述实施例的示例在附图中示出。以下将通过参照附图来说明所述实施例,以便解释本发明。

这里,为了便于更好的理解本申请,首先对本发明的总体构思进行说明,本发明在软件和计算装置出厂时实现软硬件绑定,即,利用私钥对需要与待发布软件绑定的计算装置中的指定硬件的标识进行数字签名来得到数字证书文件,然后将关于与该私钥对应的公钥的数据固化在可编程器件中,此后,厂商将软件与该数字证书文件一起发布,其中,所述可编程器件可以是计算装置的硬件组成部分或者可以以可插拔的方式与所述计算装置结合。当将该软件安装在当前计算装置上时,本申请的技术方案获取该软件的数字证书文件以及当前计算装置的指定硬件的标识,然后利用固化在可编程器件中的关于公钥的数据对数字证书文件进行解密,此后将数字证书文件中包含的硬件标识与获取的当前计算装置的指定硬件的标识进行验证,如果验证成功,则说明当前计算装置是由厂商绑定于所述软件的计算装置,从而允许在当前计算装置上安装和运行所述软件。下面,首先参照图1描述在软硬件出厂时对软硬件进行绑定的方法。

图1是示出根据本申请示例性实施例的用于实现软硬件绑定的方法的流程图。

在步骤S101,获取需要与待发布软件绑定的计算装置的指定硬件的标识。

具体地讲,计算装置可以是任何能够安装待发布软件的计算装置,例如,台式计算机、膝上型计算机、上网本、自动柜员机、智能电话等。计算装置可包括各种硬件组件,例如,CPU、硬盘、内存、显卡等等,并且这些硬件均具有唯一的硬件标识。然而,所述方法不对被获取标识的计算装置的硬件组件进行具体的限定,换句话说,所述方法可获取计算装置的所有硬件中的任意一部分指定硬件的标识,例如,可获取计算装置的CPU、硬盘和内存的标识,或者可获取计算装置的CPU、内存和显卡的标识。

在步骤S102,生成一对公钥和私钥。

具体地讲,可采用任何已知的密钥生成算法来生成一对公钥和私钥,例如,可以采用RSA算法、Elgamal算法、背包算法、Rabin算法、D-H算法等。其中,生成的私钥将由软件厂商妥善保管,不得公开。

在步骤S103,将关于公钥的数据固化在可编程器件中。具体地讲,在本申请中,所使用的可编程器件可以是任何能够固化数据和烧录逻辑电路的可编程器件,例如,可编程器件可以是可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、通用逻辑阵列(GAL)、可编程门阵列(FPGA)和复杂可编程器件(CPLD)等中的任一种。由于可编程器件的特性,固化在可编程器件中的关于公钥的数据是无法被攻击者通过任何手段读取,保证了公钥的安全性,从而使得攻击者无法通过获取公钥来破解软件件绑定方法。

在一个实施例中,关于公钥的数据可以是在步骤S102中利用密钥生成算法生成的公钥本身。也就是说,所述方法可将公钥本身直接固化在可编程器件中。

可选地,关于公钥的数据可以是通过利用加密密钥对在步骤S102中生成的公钥进行加密而得到的加密后的公钥。具体地讲,利用可编程器件的物理不可克隆函数(PUF)电路产生的密钥作为所述加密密钥。PUF是指对于任意一个可编程器件,由于制造工艺局限性的影响,在加工生产过程中必然会产生一些由于不可控的随机物理变化而导致的随机差异,从而造成每个可编程器件在结构和特性上都会有所区别,具有不可预测的特点,而PUF电路就是利用这种不可预测的特点而设计的一种电路,换句话说,在不同的可编程器件上,PUF电路对于相同的输入将产生不同且唯一的输出,进而使得由PUF电路产生的密钥具有唯一性、不可预测性以及不可复制性。因此,可以进一步提高公钥的安全性。

具体地讲,首先,所述方法在可编程器件中固化其PUF对应的PUF电路,然后,使用PUF电路在可编程器件中生成具有唯一性的PUF密钥,再利用PUF密钥对公钥进行加密,进而得到所述关于公钥的数据(即加密后的公钥)。

所述可编程器件是所述计算装置的固定的硬件组成部分,或者,所述可编程器件以可插拔的方式与所述计算装置结合。

在步骤S104,通过使用私钥依据数字签名算法对计算装置的所述指定硬件的标识进行数字签名来生成数字证书文件,并将所述数字证书文件与所述软件一起发布。其中,所使用的数字签名算法可以是任何能够实现数字签名的数字签名算法,例如,RSA签名算法、Schnorr签名算法、椭圆曲线数字签名书算法等。

此外,所述方法还包括将验证数字签名的验证程序固化在可编程器件中,使得验证程序同样无法被攻击者盗取。因此,通过以上过程,最终将关于公钥的数据、PUF电路以及验证数据签名的验证程序固化在可编程器件中,进而提高了绑定后的软硬件的安全性。

至此,通过以上描述的步骤S101至S104就实现了软硬件绑定的过程,在以上描述中,按照步骤S101、S102、S103和S104的顺序描述了实现软硬件绑定的方法,但是所述方法不受上述顺序的限制,然而可以实现与所述方法相同的功能的步骤顺序都包括在本申请的范围内。下面,将描述如何在软件的安装或运行时对软硬件进行验证的过程。而以下认证过程的主要过程是将与软件一起发布的数字证书文件与当前计算装置的指定硬件的标识进行验证,如果数字证书文件中包括的硬件标识与当前计算装置的指定硬件的标识相匹配,则证明当前计算装置是由厂商在软硬件出厂时与该软件绑定的计算装置。下面将参照图2和图3对此进行详细描述。

图2是示出根据本申请示例性实施例的软件验证方法的流程图。

在步骤S201,获取软件的数字证书文件以及当前计算装置的指定硬件的标识。具体地讲,由于软件与其数字证书文件一起发布,因此,当软件使用者在安装或运行软件时可以一同获得该软件的数字证书文件,并且可以在安装或运行过程中获取当前计算装置的指定硬件的标识,由于以上已对计算装置以及指定硬件进行了详细描述,因此,此处不再对此进行赘述。

在步骤S202,通过固化在可编程器件中的关于公钥的数据,验证所述获取的指定硬件的标识是否与所述软件的数字证书文件中包含的硬件标识匹配。即,将获取的数字证书文件以及当前计算装置的指定硬件的标识输入到可编程器件进行验证。在本申请中,所使用的可编程器件可以是任何能够固化数据和程序并能够烧录逻辑电路的可编程器件,例如,所述可编程器件可以是PAL、PLA、GAL、FPGA和CPLD等中的任意一种。此外,所述可编程器件可以是所述计算装置的固定的硬件组成部分,或者,所述可编程器件可以以可插拔的方式与所述计算装置结合。此外,所述验证步骤可由固化在所述可编程器件中的验证程序来执行。

其中,所述软件的数字证书文件是通过利用与所述公钥对应的私钥对硬件标识依据数字签名算法进行数字签名而生成的。具体地讲,在软硬件出厂时,厂商针对软件以及待安装该软件的计算装置进行绑定,在该绑定过程中,利用私钥依据数字签名算法对待安装和运行该软件的计算装置的指定硬件的标识进行数字签名,进而生成所述数字证书文件。

在一个实施例中,关于公钥的数据可以是公钥本身。也就是说,公钥本身被直接固化在可编程器件中。

进一步地,关于公钥的数据还可以是通过使用在所述可编程器件中固化的物理不可克隆函数PUF电路所产生的PUF密钥对所述公钥进行加密而生成的公钥密文,由于以上已参照图1对此进行了详细描述,因此,这里不再进行赘述。下面,将参照图3针对关于公钥的数据是所述公钥密文的情况详细地描述所述验证步骤。

图3是示出根据本申请示例性实施例的针对关于公钥的数据是所述公钥密文的情况的所述验证步骤的详细流程图。

在步骤S301,可激活固化在所述可编程器件中的PUF电路来获取PUF密钥。具体地讲,由于PUF电路是利用可编程器件在加工生产过程中产生的一些随机差异而设计的一种电路,在不同的可编程器件上,PUF电路对于相同的输入将产生不同且唯一的输出,因此,如果计算装置中的可编程器件或者通过可插拔方式与计算装置结合的可编程器件被攻击者调换或修改,则通过该可编程器件中的PUF电路获取的PUF密钥显然是无法正常使用的。因此,本申请通过这样的方式可以进一步提高软硬件绑定后的安全性。

在步骤S302,可通过使用获取的PUF密钥对固化在所述可编程器件中的关于公钥的数据进行解密来获取所述公钥。

在步骤S303,可通过使用获取的所述公钥依据数字签名算法对所述软件的数字证书文件进行解密得到其中包含的硬件标识,进而验证所述获取的指定硬件的标识是否与所述软件的数字证书文件中包含的硬件标识匹配。

具体地讲,通过以上参照图2描述的内容可知,这里使用的数字证书文件是由厂商利用与所述公钥对应的私钥对待安装和运行该软件的计算装置的指定硬件的硬件标识依据数字签名算法进行数字签名而生成的,因此,步骤S303中所使用的数字签名算法与厂商所使用的数字签名算法相同,并且通过步骤S303中的解密过程可以得到数字证书文件中包含的硬件标识。在此基础上,可以验证获得的指定硬件的硬件标识是否与从数字证书文件中解密出的硬件标识匹配。

返回参照图2,当在步骤S202验证结果为匹配时,在步骤S203,允许在当前计算装置上安装和运行所述软件。换句话说,如果验证结果为匹配,则说明当前计算装置中的指定硬件没有被调换过,即,当前计算装置就是由厂商绑定于该软件的计算装置。当在步骤S202验证结果为不匹配时,在步骤S204,不允许在当前计算装置上安装和运行所述软件。

此外,本申请还涉及一种用于软硬件绑定的可编程器件,所述可编程器件中固化有关于公钥的数据,其中,所述关于公钥的数据用于验证待安装和运行指定软件的计算装置的相关硬件标识是否与所述指定软件的数字证书文件中包含的硬件标识匹配,其中,所述数字证书是使用与所述公钥对应的私钥对与所述软件绑定的计算装置的相关硬件标识进行数字签名获得的。所述可编程器件可以是任何能够固化数据和程序并能够烧录逻辑电路的可编程器件,例如,所述可编程器件可以是PAL、PLA、GAL、FPGA和CPLD等中的任意一种,由于以上已对此相关的内容进行了详细的描述,因此此处不再赘述。

此外,所述可编程器件中还固化有执行所述验证的验证程序。

此外,所述可编程器件中还可以固化有所述可编程器件的物理不可克隆函数PUF电路,其中,所述PUF电路用于生成具有唯一性的PUF密钥,所述关于公钥的数据是用所述PUF密钥对公钥进行加密获得的公钥密文。

此外,所述可编程器件可以是待安装和运行指定软件的计算装置的固定的硬件组成部分,或者也可以通过可插拔的方式与待安装和运行指定软件的计算装置结合,此外,所述计算装置的相关硬件标识可选择性地包括所述可编程器件的标识。

所述可编程器件可运行以上参照图1至图3描述的由可编程器件运行的操作,由于以上已对此进行了详细描述,因此此处不再进行赘述。

由于本申请可以将关于公钥的数据、验证数据签名的验证程序等固化在可编程器件中,进而提高了绑定后的软硬件的安全性。

以上描述了本发明的各示例性实施例,应理解,上述描述仅是示例性的,并非穷尽性的,本发明不限于所披露的各示例性实施例。在不偏离本发明的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。因此,本发明的保护范围应该以权利要求的范围为准。

相关技术
  • 软件验证方法、软硬件绑定方法及其可编程器件
  • 软件验证方法、软硬件绑定方法及其可编程器件
技术分类

06120113098538