CN101916344B - 一种验证软件保护装置合法性的方法及系统 - Google Patents

一种验证软件保护装置合法性的方法及系统 Download PDF

Info

Publication number
CN101916344B
CN101916344B CN2010102686934A CN201010268693A CN101916344B CN 101916344 B CN101916344 B CN 101916344B CN 2010102686934 A CN2010102686934 A CN 2010102686934A CN 201010268693 A CN201010268693 A CN 201010268693A CN 101916344 B CN101916344 B CN 101916344B
Authority
CN
China
Prior art keywords
software
data
protecting equipment
subdata
random number
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.)
Active
Application number
CN2010102686934A
Other languages
English (en)
Other versions
CN101916344A (zh
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.)
Beijing Senseshield Technology Co Ltd
Original Assignee
Beijing Senselock Software 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 Beijing Senselock Software Technology Co Ltd filed Critical Beijing Senselock Software Technology Co Ltd
Priority to CN2010102686934A priority Critical patent/CN101916344B/zh
Publication of CN101916344A publication Critical patent/CN101916344A/zh
Application granted granted Critical
Publication of CN101916344B publication Critical patent/CN101916344B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明提供了一种验证软件保护装置合法性的方法,该方法包括:A、软件执行装置在执行软件时获取第一数据并生成随机数,发送随机数至软件保护装置;第一数据为固化于软件保护装置中的第一子数据和与软件绑定的第二子数据合并获得的第三子数据经加密算法加密后生成的数据;B、软件保护装置利用私钥对一数据和随机数进行运算,生成第一签名信息,输出第一签名信息至软件执行装置;C、软件执行装置利用公钥、第一数据和随机数对接收到的第一签名信息进行签名验证,根据签名验证结果判断软件保护装置是否合法。本发明还提供了一种验证软件保护装置合法性的系统。采用本发明的方法和系统,能够提高硬件的安全性,降低硬件克隆的可能性。

Description

一种验证软件保护装置合法性的方法及系统
技术领域
本发明涉及软件保护技术,特别涉及一种验证软件保护装置合法性的方法及系统。 
背景技术
软件保护装置为一种连接于计算机接口(比如,USB接口、串口、并口等接口)上的硬件设备;软件保护装置中存储着软件的使用许可,可对运行在计算机上的特定的软件进行软件安全保护和版权保护。基于软件保护装置的软件保护技术,软件的安全性取决于两方面,一是硬件的安全,二是加密方案的安全性。 
为了最大程度保护软件不被盗版,现有的软件保护装置增加了代码移植的功能,即允许软件开发商将软件的一部分功能固化于软件保护装置,在软件保护装置中执行。由于软件保护装置采用了智能卡芯片,所以硬件不易被复制,而其中被固化的新增功能也不易被读出;这样,只要破解者不能成功猜出软件保护装置内部的固化的代码,就不能让固化于软件保护装置中的软件的部分功能离开软件保护装置而独立运行,从而保护软件不被盗版。上述方案是基于硬件安全的前提下,对加密方案的保护;若软件保护装置被硬件克隆,则软件的安全性将受到极大的威胁。所谓硬件克隆是指破解者通过物理手段,将软件保护装置的硬件完全复制,使得复制的后盗版软件保护装置与正版的软件保护装置无任何区别。 
基于上述内容,软件保护中最亟待解决的问题是如何防止软件保护装置被硬件克隆的问题。现有的防止硬件克隆的方法为软件开发商在软件保护装置中固化一个非对称密钥中的私钥,运行软件的装置通过对非对称密钥的私 钥的签名验证,来确认该软件保护装置是由软件开发商发布的合法的硬件。由于解密者无法通过硬件克隆的方法从软件保护装置中导出私钥,因此,也就无法实现在不对软件做任何修改的情况下,使用克隆的软件保护装置完全替代正版的软件保护装置的功能。 
现有的利用非对称密钥进行签名验证功能可有效的防止软件保护装置被硬件克隆;但是,这种利用非对称密钥进行签名验证功能需要每一软件开发商针对某一类软件保护装置确定一个非对称密钥中的私钥,并且对该私钥进行绝密的保护工作;一旦软件开发商泄露了某一类软件保护装置的非对称密钥中的私钥,则该类软件保护装置就有被硬件克隆的危险,其安全性有待提高。 
发明内容
有鉴于此,本发明的目的在于提供一种验证软件保护装置合法性的系统,该系统能够提高硬件的安全性。 
本发明的另一目的在于提供一种验证软件保护装置合法性的方法,该方法能够提高硬件的安全性。 
为达到上述目的,本发明的技术方案具体是这样实现的: 
一种验证软件保护装置合法性的方法,该方法包括: 
A、软件执行装置在执行软件时获取存储于软件中的第一数据并生成随机数,发送随机数至软件保护装置;所述第一数据为固化于软件保护装置中的第一子数据和与所述软件绑定的第二子数据合并获得的第三子数据经固化于软件保护装置的加密算法加密后生成的数据; 
B、软件保护装置利用固化于软件保护装置中的私钥对固化于软件保护装置中的第一数据和接收到的随机数进行运算,生成第一签名信息,输出第一签名信息至软件执行装置; 
C、软件执行装置利用固化于软件执行装置中的公钥、存储于软件中的第一数据和生成的随机数对接收到的第一签名信息进行签名验证,根据签名验证结 果判断软件保护装置是否合法。 
上述方法中,步骤B所述软件保护装置利用固化于软件保护装置中的私钥对固化于软件保护装置中的第一数据和接收到的随机数进行运算生成第一签名信息包括: 
B1、将软件执行装置发送的随机数和固化于软件保护装置中的第一数据合并成为第二数据; 
B2、用固化于软件保护装置中的的私钥对第二数据进行签名生成第一签名信息。 
上述方法中,所述步骤C包括: 
C1、将生成的随机数和存储于软件中的第一数据合并获得第二数据; 
C2、利用固化于软件执行装置中的公钥和第二数据对软件保护装置输出的第一签名信息进行签名验证,若验证通过,则软件保护装置是合法的,否则,软件保护装置不合法。 
上述方法中,所述第一数据为具有固定字节长度的加密的字符串。 
上述方法中,步骤A所述固化于软件保护装置中的第一子数据由软件保护装置的提供商提供;步骤A所述与所述软件绑定的第二子数据为由除软件保护装置的提供商之外的另一方提供的与所述软件具有一一对应关系的数据。 
一种验证软件保护装置合法性的系统,该系统包括:固化有公钥的软件执行装置和连接于软件执行装置固化有第一子数据、加密算法、第一数据和私钥的软件保护装置; 
所述软件保护装置利用固化的私钥对固化的第一数据和接收到的随机数进行运算生成第一签名信息,输出第一签名信息至所述软件执行装置;所述第一数据为固化于软件保护装置中的第一子数据和与所述软件绑定的第二子数据合并获得的第三子数据经固化于软件保护装置的加密算法加密后生成的数据; 
所述软件执行装置在执行软件时获取存储于软件中的第一数据并生成随机数,输出随机数至软件保护装置;利用固化的公钥、生成的随机数和存储于软件中的第一数据对所述软件保护装置输出的第一签名信息进行签名验证,根据签名验证结果判断软件保护装置是否合法。 
上述系统中,所述软件保护装置包括: 
第一存储单元,用于固化私钥、第一数据、第一子数据和加密算法; 
第一接口单元,用于连接软件执行装置,且在连接到软件执行装置时输出第一连接信号,将随机数输出至第一控制单元; 
第一控制单元,根据第一连接信号从第一存储单元读取私钥和第一数据,将第一数据和接收到的随机数合并获得第二数据,利用私钥对第二数据进行签名生成第一签名信息,通过第一接口单元输出第一签名信息至软件执行装置。 
上述系统中,所述软件执行装置包括: 
第二存储单元,用于固化公钥; 
软件执行单元,用于运行软件,且在运行软件时输出从软件中获取的第一数据至第二控制单元; 
第二接口单元,用于连接软件保护装置,且在连接了软件保护装置后输出第二连接信号至第二控制单元,以及用于将由所述软件保护装置输出的第一签名信息输出至第二控制单元; 
第二控制单元,接收到第二连接信号及第一数据,生成随机数,通过第二接口单元输出随机数至软件保护装置;将随机数与软件执行单元输出的第一数据进行合并获得第二数据;利用从第二存储单元读取的公钥、及合并获得的第二数据对第一签名信息进行签名验证,若验证通过,则软件保护装置为合法的,否则,软件保护装置不合法。 
较佳地,所述软件保护装置还包括一与第一控制单元连接的数据生成单元: 
所述第一接口单元还用于将外部输入的加密控制指令和与所述软件绑定的第二子数据输出至所述第一控制单元;所述与所述软件绑定的第二子数据为由除软件保护装置提供商之外的另一方提供的与所述软件具有一一对应关系的数据;所述加密控制指令为由与提供第二子数据相同的一方提供的用以计算第一数据的控制指令; 
所述第一控制单元还根据加密控制指令,从所述第一存储单元读取第一子数据和加密算法,将第一子数据、加密算法和第二子数据输出至所述数据生成单元;还用于根据加密完成指令将第一数据输出至所述第一存储单元保存,将第一数据通过所述第一接口单元输出至软件开发商,以共软件开发商将第一数据存储于需要保护的软件中; 
所述数据生成单元将第一子数据和第二子数据合并获得第三子数据,利用加密算法加密第三子数据生成第一数据,输出第一数据及加密完成指令至所述第一控制单元。 
由上述的技术方案可见,本发明提供了一种验证软件保护装置合法性的方法及系统,在本发明中,利用第一数据、随机数、私钥和公钥来验证软件保护装置的合法性;其中,第一数据分别固化于软件保护装置和被执行软件中,私钥固化于软件保护装置中,公钥固化于软件执行装置中,第一数据为固化于软件保护装置中的第一子数据和与软件绑定的第二子数据合并获得的第三子数据经固化于软件保护装置的加密算法加密后生成的数据,固化于软件保护装置中的第一子数据由软件保护装置提供商提供。采用本发明的方法和系统,第一数据和私钥固化于软件保护装置中无法从软件保护装置中读出,随机数是由与软件保护装置连接的软件执行装置在执行软件时产生的,且第一数据是由软件保护装置提供商和除软件保护装置提供商之外的另一方提供的两部分数据经加密运算后获得的数据,这样,软件保护装置提供商或除软件保护装置提供商之外的另一方泄露了一方提供的数据,解密者无法获取另一方提供的数据,也就不可能生成第一数据,进而无法实现硬件克隆,提高了软件保护装置的安全性,降低了硬件克隆的可能性。 
附图说明
图1为本发明验证软件保护装置的方法流程图。 
图2为本发明验证软件保护装置的系统的结构示意图。 
具体实施方式
为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。 
本发明提供了一种验证软件保护装置合法性的方法及系统,在本发明中,利用第一数据、随机数、私钥和公钥来验证软件保护装置的合法性;其中,第一数据分别固化于软件保护装置和被执行软件中,私钥固化于软件保护装置中,公钥固化于软件执行装置中,第一数据为固化于软件保护装置中的第一子数据和与所述软件绑定的第二子数据合并获得的第三子数据经固化于软件保护装置的加密算法加密后生成的数据,固化于软件保护装置中的第一子数据由软件保护装置提供商提供。由于在第一数据和私钥都被解密者获取时才能实现硬件克隆,本发明的第一数据和私钥固化于软件保护装置中无法从软件保护装置中读出,随机数是由与软件保护装置连接的软件执行装置在执行软件时产生的,且第一数据是由软件保护装置提供商和除软件保护装置提供商之外的另一方提供的两部分数据经加密运算后获得的数据,这样,软件保护装置提供商或除软件保护装置提供商之外的另一方泄露了一方提供的数据,解密者无法获取另一方提供的数据,也就不可能生成第一数据,进而无法实现硬件克隆,提高了软件保护装置的安全性,降低了硬件克隆的可能性。 
图1为本发明验证软件保护装置的方法流程图。现结合图1,对本发明验证软件保护装置的方法进行说明,具体如下: 
步骤101:软件执行装置在执行软件时获取存储于软件中的第一数据并生成随机数,发送随机数至软件保护装置; 
待执行软件中存储有第一数据,所述第一数据为固化于软件保护装置中的第一子数据和与所述软件绑定的第二子数据合并获得的第三子数据经固化于软件保护装置的加密算法加密后生成的数据;与所述软件绑定的第二子数据为由除软件保护装置的提供商之外的另一方提供的与所述软件具有一一对 应关系的数据。 
第一数据可在软件保护装置中生成;第一数据为具有固定字节长度的加密的字符串。第一数据的长度可根据安全性要求的高低进行设置,本实施例中第一数据的字节长度为20字节。 
除软件保护装置的提供商之外的另一方可为软件开发商,也可为其他提供商。 
软件执行装置在检测到已连接有软件保护装置后,执行软件的同时生成随机数。该随机数的字节长度可根据安全性要求的高低进行设置,本实施例中设定随机数的字节长度为128个字节。 
步骤102:软件保护装置利用固化于软件保护装置中的私钥对固化于软件保护装置中的第一数据和接收到的随机数进行运算生成第一签名信息,输出第一签名信息至软件执行装置; 
软件保护装置由于其硬件结构,固化于该软件保护装置中的私钥和第一数据是无法被外界设备读取,除非提供私钥和第一数据的一方泄露了上述数据才可获得固化于软件保护装置中的私钥和第一数据。 
软件保护装置中固化的私钥和软件执行装置中固化的公钥为非对称密钥,可都由软件保护装置的提供商进行设置。 
该步骤中,软件保护装置利用固化于软件保护装置中的私钥对固化于软件保护装置中的第一数据及接收到的随机数进行运算生成第一签名信息的方法包括: 
步骤1021,将软件执行装置发送的随机数和固化的第一数据合并成为第二数据; 
该步骤中,可将第一数据附于随机数之后生成一个字符串,或者将随机数附于第一数据之后生成一个字符串,将生成的一个字符串作为第二数据。 
步骤1022,用固化的私钥对第二数据进行签名生成第一签名信息; 
本发明中选用RSA算法对第二数据进行签名生成第一签名信息;用固化的私钥对第二数据进行签名的方法属于现有技术的内容,在此不再赘述。 
本发明选用RSA算法作为非对称密钥算法,这类算法中加密和解密是相对独立的,该算法使用不同的公钥和私钥,根据公钥无法推算出私钥。在运算过程中,公钥加密的数据只能用私钥解密,私钥加密的数据只能用公钥。利用这种非对称密钥算法,可提高传输数据的安全性。 
步骤103:软件执行装置利用固化于软件执行装置中的公钥、存储于软件中的第一数据和生成的随机数对第一签名信息进行签名验证,根据签名验证结果判断软件保护装置是否合法; 
该步骤具体包括: 
步骤1031,将生成的随机数和存储于软件中的第一数据合并获得第二数据; 
该步骤合并获得第二数据的方法与步骤1021相同,在此不再赘述。 
步骤1032,利用固化于软件执行装置中的公钥和步骤1031计算获得的第二数据对软件保护装置输出的第一签名信息进行签名验证,若验证通过,则软件保护装置是合法的,否则,软件保护装置不合法; 
本步骤中,利用公钥和计算获得的第二数据对第一签名信息进行的签名验证为RSA签名验证,具体验证方法属于现有技术的内容,在此不再赘述。 
为了进一步提高硬件的安全性,防止第一数据被泄露,在步骤101之前还包括:步骤100,将固化于软件保护装置中的第一子数据和与所述软件绑定的第二子数据合并获得第三子数据,利用固化于软件保护装置的加密算法加密第三子数据生成第一数据,将第一数据固化于软件保护装置,将第一数据存储于软件中; 
在该步骤中,固化于软件保护装置中的第一子数据由软件保护装置提供商提供;存储有第一数据的软件为软件执行装置待执行的软件。 
在该步骤中,软件保护装置中固化了第一子数据和加密算法,第一子数据和加密算法可由软件保护装置的提供商进行设置;第一子数据为具有固定字节长度的字符串;加密算法可选用现有的DES、TDES、RSA、HASH、HMAC等密码学算法。与软件绑定的第二子数据为具有固定字节长度的字符串。 
将第一子数据和第二子数据合并成第三子数据的方法为:将第一子数据 附于第二子数据之后生成的字符串作为第三子数据,或者将第二子数据附于第一子数据之后生成的字符串作为第三子数据。 
采用本发明的方法,由于软件保护装置的硬件结构,固化于软件保护装置中的私钥和第一数据本身不易被外界其他设备读取,这样,只有通过私钥和第一数据的提供商才可获得上述数据。因为第一数据是由软件保护装置的提供商固化于软件保护装置中的第一子数据、加密算法及与软件绑定的第二子数据进行加密生成的;若软件保护装置的提供商泄露了第一子数据和加密算法,在不知道第二子数据的情况下无法推算获得第一数据;若提供与软件绑定的第二子数据的一方泄露了第二子数据,在不知道第一子数据和加密算法的情况下也无法推算出第一数据,所以,即便软件保护装置和提供与软件绑定的第二子数据的一方中的任一方泄露了其提供的数据,基于第一数据的构成,解密者无法推算出第一数据,提高了硬件的安全性,降低了硬件克隆的可能性。 
图2为本发明验证软件保护装置的系统的结构示意图。现结合图2,对本发明验证软件保护装置的系统的结构进行说明,具体如下: 
本发明验证软件保护装置合法性的系统包括:固化有公钥的软件执行装置20和连接于软件执行装置固化有第一子数据、加密算法、第一数据和私钥的软件保护装置21。 
软件保护装置20利用固化的私钥对固化的第一数据和接收到的随机数进行运算生成第一签名信息,输出第一签名信息至软件执行装置21。第一数据为固化于软件保护装置20中的第一子数据和软与软件绑定的第二子数据合并获得的第三子数据经固化于软件保护装置20的加密算法加密后生成的数据。 
软件执行装置21在执行软件时获取存储于软件中的第一数据并生成随机数,输出随机数至软件保护装置20;利用固化的公钥、生成的随机数和存储于软件中的第一数据对软件保护装置20输出的第一签名信息进行签名验证,根据签名验证结果判断软件保护装置20是否合法。 
其中,软件保护装置20包括第一控制单元201、第二接口单元202和第一 存储单元203;软件执行装置21包括第二控制单元211、第二接口单元212、软件执行单元213和第二存储单元214。 
在软件保护装置20中,第一控制单元201分别和第一接口单元202及第一存储单元203连接;第一接口单元202与软件执行装置21连接。 
第一存储单元203用于固化私钥、第一数据、第一子数据和加密算法;第一存储单元203可采用现有的只读存储器,且该第一存储单元203中存储的信息不能被与软件保护装置20连接的外界设备进行硬件复制或读取。 
第一接口单元202在连接到软件执行装置21时输出第一连接信号,将随机数输出至第一控制单元201。第一连接信号可为电流信号或电压信号。第一接口单元202可采用现有的API接口,也可选用现有的其它类型的接口,但第一接口单元202的类型需要与软件执行装置21的接口类型匹配。 
第一控制单元201根据第一连接信号从第一存储单元203读取私钥和第一数据,将第一数据和接收到的随机数合并获得第二数据,利用私钥对第二数据进行签名生成第一签名信息,通过第一接口单元202输出第一签名信息至软件执行装置21。 
在软件执行装置21中,第二控制单元211分别连接软件执行单元213和第二接口单元212;第二接口单元212连接软件保护装置20中的第一接口单元;第二存储单元214连接第二控制单元211。 
第二存储单元214用于固化公钥。第二存储单元214中固化的公钥与软件保护装置20的第一存储单元203中固化的私钥为非对称密钥。 
软件执行单元213用于运行软件,且在运行软件时输出从软件中获取的第一数据至第二控制单元211。 
第二接口单元212在连接了软件保护装置20后输出第二连接信号至第二控制单元211,将第一签名信息和公钥输出至第二控制单元211。第二连接信号可为电流信号或电压信号。第二接口单元212与第一接口单元202的类型相同;本发明中,第二接口单元212选择API接口。 
第二控制单元211接收到第二连接信号及第一数据,生成随机数,通过第二 接口单元212输出随机数至软件保护装置20的第一接口单元202;将随机数与软件执行单元213输出的第一数据进行合并获得第二数据;从第二存储单元214中读取公钥;利用公钥和第二数据对第一签名信息进行签名验证,若验证通过,则软件保护装置20为合法的,否则,软件保护装置20不合法。 
为了进一步提高硬件的安全性,防止第一数据被泄露,软件保护装置20还包括一与第一控制单元201连接的数据生成单元204。 
第一接口单元202还用于将外部输入的加密控制指令和第二子数据输出至第一控制单元201。所述与所述软件绑定的第二子数据为由除软件保护装置提供商之外的另一方提供的与所述软件具有一一对应关系的数据;所述加密控制指令为由与提供第二子数据相同的一方提供的用以计算第一数据的控制指令。 
第一控制单元201还根据加密控制指令,从第一存储单元203读取第一子数据和加密算法,将第一子数据、加密算法和外部输入的第二子数据输出至数据生成单元204;还用于根据加密完成指令将第一数据输出至第一存储单元203保存,将第一数据通过第一接口单元202输出。第一控制单元201将生成的第一数据通过第一接口单元202输出至软件开发商,以供软件开发商将第一数据存储于需要保护的软件中。 
数据生成单元204将第一子数据和第二子数据合并获得第三子数据,利用加密算法加密第三子数据生成第一数据,输出第一数据及加密完成指令至第一控制单元201。 
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。 

Claims (9)

1.一种验证软件保护装置合法性的方法,其特征在于,该方法包括:
A、软件执行装置在执行软件时获取存储于软件中的第一数据并生成随机数,发送随机数至软件保护装置;所述第一数据为固化于软件保护装置中的第一子数据和与所述软件绑定的第二子数据合并获得的第三子数据经固化于软件保护装置的加密算法加密后生成的数据;
B、软件保护装置利用固化于软件保护装置中的私钥对固化于软件保护装置中的第一数据和接收到的随机数进行运算,生成第一签名信息,输出第一签名信息至软件执行装置;
C、软件执行装置利用固化于软件执行装置中的公钥、存储于软件中的第一数据和生成的随机数对接收到的第一签名信息进行签名验证,根据签名验证结果判断软件保护装置是否合法。
2.根据权利要求1所述的方法,其特征在于,步骤B所述软件保护装置利用固化于软件保护装置中的私钥对固化于软件保护装置中的第一数据和接收到的随机数进行运算生成第一签名信息包括:
B1、将软件执行装置发送的随机数和固化于软件保护装置中的第一数据合并成为第二数据;
B2、用固化于软件保护装置中的的私钥对第二数据进行签名生成第一签名信息。
3.根据权利要求1所述的方法,其特征在于,所述步骤C包括:
C1、将生成的随机数和存储于软件中的第一数据合并获得第二数据;
C2、利用固化于软件执行装置中的公钥和第二数据对软件保护装置输出的第一签名信息进行签名验证,若验证通过,则软件保护装置是合法的,否则,软件保护装置不合法。
4.根据权利要求1所述的方法,其特征在于,所述第一数据为具有固定字节长度的加密的字符串。 
5.根据权利要求1所述的方法,其特征在于,步骤A所述固化于软件保护装置中的第一子数据由软件保护装置的提供商提供;步骤A所述与所述软件绑定的第二子数据为由除软件保护装置的提供商之外的另一方提供的与所述软件具有一一对应关系的数据。
6.一种验证软件保护装置合法性的系统,其特征在于,该系统包括:固化有公钥的软件执行装置和连接于软件执行装置固化有第一子数据、加密算法、第一数据和私钥的软件保护装置;
所述软件保护装置利用固化的私钥对固化的第一数据和接收到的随机数进行运算生成第一签名信息,输出第一签名信息至所述软件执行装置;所述第一数据为固化于软件保护装置中的第一子数据和与所述软件绑定的第二子数据合并获得的第三子数据经固化于软件保护装置的加密算法加密后生成的数据;
所述软件执行装置在执行软件时获取存储于软件中的第一数据并生成随机数,输出随机数至软件保护装置;利用固化的公钥、生成的随机数和存储于软件中的第一数据对所述软件保护装置输出的第一签名信息进行签名验证,根据签名验证结果判断软件保护装置是否合法。
7.根据权利要求6所述的系统,其特征在于,所述软件保护装置包括:
第一存储单元,用于固化私钥、第一数据、第一子数据和加密算法;
第一接口单元,用于连接软件执行装置,且在连接到软件执行装置时输出第一连接信号,将随机数输出至第一控制单元;
第一控制单元,根据第一连接信号从第一存储单元读取私钥和第一数据,将第一数据和接收到的随机数合并获得第二数据,利用私钥对第二数据进行签名生成第一签名信息,通过第一接口单元输出第一签名信息至软件执行装置。
8.根据权利要求6所述的系统,其特征在于,所述软件执行装置包括:
第二存储单元,用于固化公钥;
软件执行单元,用于运行软件,且在运行软件时输出从软件中获取的第一数据至第二控制单元;
第二接口单元,用于连接软件保护装置,且在连接了软件保护装置后输出第 二连接信号至第二控制单元,以及用于将由所述软件保护装置输出的第一签名信息输出至第二控制单元;
第二控制单元,接收到第二连接信号及第一数据,生成随机数,通过第二接口单元输出随机数至软件保护装置;将随机数与软件执行单元输出的第一数据进行合并获得第二数据;利用从第二存储单元读取的公钥、及合并获得的第二数据对第一签名信息进行签名验证,若验证通过,则软件保护装置为合法的,否则,软件保护装置不合法。
9.根据权利要求7所述的系统,其特征在于,所述软件保护装置还包括一与第一控制单元连接的数据生成单元: 
所述第一接口单元还用于将外部输入的加密控制指令和与所述软件绑定的第二子数据输出至所述第一控制单元;所述与所述软件绑定的第二子数据为由除软件保护装置提供商之外的另一方提供的与所述软件具有一一对应关系的数据;所述加密控制指令为由与提供第二子数据相同的一方提供的用以计算第一数据的控制指令; 
所述第一控制单元还根据加密控制指令,从所述第一存储单元读取第一子数据和加密算法,将第一子数据、加密算法和第二子数据输出至所述数据生成单元;还用于根据加密完成指令将第一数据输出至所述第一存储单元保存,将第一数据通过所述第一接口单元输出至软件开发商,以供软件开发商将第一数据存储于需要保护的软件中; 
所述数据生成单元将第一子数据和第二子数据合并获得第三子数据,利用加密算法加密第三子数据生成第一数据,输出第一数据及加密完成指令至所述第一控制单元。 
CN2010102686934A 2010-08-31 2010-08-31 一种验证软件保护装置合法性的方法及系统 Active CN101916344B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010102686934A CN101916344B (zh) 2010-08-31 2010-08-31 一种验证软件保护装置合法性的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010102686934A CN101916344B (zh) 2010-08-31 2010-08-31 一种验证软件保护装置合法性的方法及系统

Publications (2)

Publication Number Publication Date
CN101916344A CN101916344A (zh) 2010-12-15
CN101916344B true CN101916344B (zh) 2013-09-25

Family

ID=43323854

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010102686934A Active CN101916344B (zh) 2010-08-31 2010-08-31 一种验证软件保护装置合法性的方法及系统

Country Status (1)

Country Link
CN (1) CN101916344B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102314578B (zh) * 2011-09-26 2015-10-28 浪潮(北京)电子信息产业有限公司 一种实现软件保护的系统及方法
CN102663325A (zh) * 2012-03-12 2012-09-12 苏州阔地网络科技有限公司 一种软件绑定硬件的方法及系统
CN103078858B (zh) * 2012-12-31 2015-08-26 上海同岩土木工程科技有限公司 基于web服务和签名证书的软件授权试用方法
CN103778367A (zh) * 2013-12-30 2014-05-07 网秦(北京)科技有限公司 基于应用证书来检测应用安装包的安全性的方法、终端以及辅助服务器
CN104268447A (zh) * 2014-09-25 2015-01-07 深圳市亚特尔科技有限公司 一种嵌入式软件的加密方法
CN113139162A (zh) * 2019-06-11 2021-07-20 第四范式(北京)技术有限公司 软件验证方法、软硬件绑定方法及其可编程器件

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101127062A (zh) * 2006-08-14 2008-02-20 北京握奇数据系统有限公司 电子钥匙与计算机之间实现绑定功能的方法
CN101266638A (zh) * 2008-04-16 2008-09-17 北京飞天诚信科技有限公司 软件保护的方法和系统
CN101605326A (zh) * 2008-06-12 2009-12-16 中兴通讯股份有限公司 一种加密及解密移动终端锁网/锁卡解锁码的方法
CN101695072A (zh) * 2009-10-21 2010-04-14 北京深思洛克软件技术股份有限公司 一种信息安全设备的认证方法及认证系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020124177A1 (en) * 2001-01-17 2002-09-05 Harper Travis Kelly Methods for encrypting and decrypting electronically stored medical records and other digital documents for secure storage, retrieval and sharing of such documents

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101127062A (zh) * 2006-08-14 2008-02-20 北京握奇数据系统有限公司 电子钥匙与计算机之间实现绑定功能的方法
CN101266638A (zh) * 2008-04-16 2008-09-17 北京飞天诚信科技有限公司 软件保护的方法和系统
CN101605326A (zh) * 2008-06-12 2009-12-16 中兴通讯股份有限公司 一种加密及解密移动终端锁网/锁卡解锁码的方法
CN101695072A (zh) * 2009-10-21 2010-04-14 北京深思洛克软件技术股份有限公司 一种信息安全设备的认证方法及认证系统

Also Published As

Publication number Publication date
CN101916344A (zh) 2010-12-15

Similar Documents

Publication Publication Date Title
CN103246842B (zh) 用于验证和数据加密的方法和设备
CN101369889B (zh) 一种对文档进行电子签名的方法
KR101397637B1 (ko) 다중 사용자 감응 코드 및 데이터를 보호하는 아키텍처를 포함하는 방법 및 장치
CN101916344B (zh) 一种验证软件保护装置合法性的方法及系统
WO2017041603A1 (zh) 数据加密方法、装置及移动终端、计算机存储介质
EP2461564A1 (en) Key transport protocol
CN107908574B (zh) 固态盘数据存储的安全保护方法
CN102024123B (zh) 一种云计算中虚拟机镜像导入方法及装置
AU2011363942A1 (en) Method and system for protecting execution of cryptographic hash functions
CN105447394B (zh) 一种带本地数据加密功能的智能密码钥匙
WO2015042981A1 (zh) 加解密处理方法、装置和设备
CN111783078A (zh) Android平台安全芯片控制系统
CN103544453A (zh) 一种基于usb key的虚拟桌面文件保护方法及装置
CN104268447A (zh) 一种嵌入式软件的加密方法
CN107092816A (zh) 一种Android应用程序加固方法
WO2023240866A1 (zh) 密码卡及其根密钥保护方法、计算机可读存储介质
KR20120042469A (ko) 부가 정보와 암호키 결합을 이용한 콘텐츠 보호 장치 및 그 방법
US7979628B2 (en) Re-flash protection for flash memory
CN110233729B (zh) 一种基于puf的加密固态盘密钥管理方法
CN109510702A (zh) 一种基于计算机特征码的密钥存储及使用的方法
CN109495257B (zh) 一种基于改进国密sm2加密算法的数据采集器加密方法
CN101355424B (zh) 一种手持设备数据安全迁移的方法
CN108242997B (zh) 安全通信的方法与设备
CN112968774B (zh) 一种组态存档加密及解密方法、装置存储介质及设备
CN202067280U (zh) 嵌入式软件的保护装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: BEIJING SHENSI SHUDUN SCIENCE + TECHNOLOGY CO., LT

Free format text: FORMER OWNER: BEIJING SENSELOCK SOFTWARE TECHNOLOGY CO., LTD.

Effective date: 20150109

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100086 HAIDIAN, BEIJING TO: 100872 HAIDIAN, BEIJING

TR01 Transfer of patent right

Effective date of registration: 20150109

Address after: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Patentee after: BEIJING SHENSI SHUDUN TECHNOLOGY Co.,Ltd.

Address before: 100086 Beijing City, Haidian District Zhongguancun South Street No. 6 Zhucheng building block B room 1201

Patentee before: Beijing Senselock Software Technology Co.,Ltd.

C56 Change in the name or address of the patentee
CP03 Change of name, title or address

Address after: 100193 Beijing, Haidian District, East West Road, No. 10, East Hospital, building No. 5, floor 5, layer 510

Patentee after: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

Address before: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Patentee before: BEIJING SHENSI SHUDUN TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder

Address after: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee after: Beijing Shendun Technology Co.,Ltd.

Address before: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder