著录项信息
专利名称 | 一种验证软件保护装置合法性的方法及系统 |
申请号 | CN201010268693.4 | 申请日期 | 2010-08-31 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2010-12-15 | 公开/公告号 | CN101916344A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F21/12 | IPC分类号 | G;0;6;F;2;1;/;1;2查看分类表>
|
申请人 | 北京深思洛克软件技术股份有限公司 | 申请人地址 | 北京市海淀区西北旺东路10号院东区5号楼5层510
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京深思数盾科技股份有限公司 | 当前权利人 | 北京深思数盾科技股份有限公司 |
发明人 | 孙吉平;韩勇 |
代理机构 | 北京德琦知识产权代理有限公司 | 代理人 | 谢安昆;宋志强 |
摘要
本发明提供了一种验证软件保护装置合法性的方法,该方法包括:A、软件执行装置在执行软件时获取第一数据并生成随机数,发送随机数至软件保护装置;第一数据为固化于软件保护装置中的第一子数据和与软件绑定的第二子数据合并获得的第三子数据经加密算法加密后生成的数据;B、软件保护装置利用私钥对一数据和随机数进行运算,生成第一签名信息,输出第一签名信息至软件执行装置;C、软件执行装置利用公钥、第一数据和随机数对接收到的第一签名信息进行签名验证,根据签名验证结果判断软件保护装置是否合法。本发明还提供了一种验证软件保护装置合法性的系统。采用本发明的方法和系统,能够提高硬件的安全性,降低硬件克隆的可能性。
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所述的系统,其特征在于,所述软件保护装置还包括一与第一控制单元连接的数据生成单元:
所述第一接口单元还用于将外部输入的加密控制指令和与所述软件绑定的第二子数据输出至所述第一控制单元;所述与所述软件绑定的第二子数据为由除软件保护装置提供商之外的另一方提供的与所述软件具有一一对应关系的数据;所述加密控制指令为由与提供第二子数据相同的一方提供的用以计算第一数据的控制指令;
所述第一控制单元还根据加密控制指令,从所述第一存储单元读取第一子数据和加密算法,将第一子数据、加密算法和第二子数据输出至所述数据生成单元;还用于根据加密完成指令将第一数据输出至所述第一存储单元保存,将第一数据通过所述第一接口单元输出至软件开发商,以供软件开发商将第一数据存储于需要保护的软件中; 所述数据生成单元将第一子数据和第二子数据合并获得第三子数据,利用加密算法加密第三子数据生成第一数据,输出第一数据及加密完成指令至所述第一控制单元。
一种验证软件保护装置合法性的方法及系统 \n技术领域\n[0001] 本发明涉及软件保护技术,特别涉及一种验证软件保护装置合法性的方法及系统。 \n背景技术\n[0002] 软件保护装置为一种连接于计算机接口(比如,USB接口、串口、并口等接口)上的硬件设备;软件保护装置中存储着软件的使用许可,可对运行在计算机上的特定的软件进行软件安全保护和版权保护。基于软件保护装置的软件保护技术,软件的安全性取决于两方面,一是硬件的安全,二是加密方案的安全性。 \n[0003] 为了最大程度保护软件不被盗版,现有的软件保护装置增加了代码移植的功能,即允许软件开发商将软件的一部分功能固化于软件保护装置,在软件保护装置中执行。由于软件保护装置采用了智能卡芯片,所以硬件不易被复制,而其中被固化的新增功能也不易被读出;这样,只要破解者不能成功猜出软件保护装置内部的固化的代码,就不能让固化于软件保护装置中的软件的部分功能离开软件保护装置而独立运行,从而保护软件不被盗版。上述方案是基于硬件安全的前提下,对加密方案的保护;若软件保护装置被硬件克隆,则软件的安全性将受到极大的威胁。所谓硬件克隆是指破解者通过物理手段,将软件保护装置的硬件完全复制,使得复制的后盗版软件保护装置与正版的软件保护装置无任何区别。 \n[0004] 基于上述内容,软件保护中最亟待解决的问题是如何防止软件保护装置被硬件克隆的问题。现有的防止硬件克隆的方法为软件开发商在软件保护装置中固化一个非对称密钥中的私钥,运行软件的装置通过对非对称密钥的私 钥的签名验证,来确认该软件保护装置是由软件开发商发布的合法的硬件。由于解密者无法通过硬件克隆的方法从软件保护装置中导出私钥,因此,也就无法实现在不对软件做任何修改的情况下,使用克隆的软件保护装置完全替代正版的软件保护装置的功能。 \n[0005] 现有的利用非对称密钥进行签名验证功能可有效的防止软件保护装置被硬件克隆;但是,这种利用非对称密钥进行签名验证功能需要每一软件开发商针对某一类软件保护装置确定一个非对称密钥中的私钥,并且对该私钥进行绝密的保护工作;一旦软件开发商泄露了某一类软件保护装置的非对称密钥中的私钥,则该类软件保护装置就有被硬件克隆的危险,其安全性有待提高。 \n发明内容\n[0006] 有鉴于此,本发明的目的在于提供一种验证软件保护装置合法性的系统,该系统能够提高硬件的安全性。 \n[0007] 本发明的另一目的在于提供一种验证软件保护装置合法性的方法,该方法能够提高硬件的安全性。 \n[0008] 为达到上述目的,本发明的技术方案具体是这样实现的: \n[0009] 一种验证软件保护装置合法性的方法,该方法包括: \n[0010] A、软件执行装置在执行软件时获取存储于软件中的第一数据并生成随机数,发送随机数至软件保护装置;所述第一数据为固化于软件保护装置中的第一子数据和与所述软件绑定的第二子数据合并获得的第三子数据经固化于软件保护装置的加密算法加密后生成的数据; \n[0011] B、软件保护装置利用固化于软件保护装置中的私钥对固化于软件保护装置中的第一数据和接收到的随机数进行运算,生成第一签名信息,输出第一签名信息至软件执行装置; \n[0012] C、软件执行装置利用固化于软件执行装置中的公钥、存储于软件中的第一数据和生成的随机数对接收到的第一签名信息进行签名验证,根据签名验证结 果判断软件保护装置是否合法。 \n[0013] 上述方法中,步骤B所述软件保护装置利用固化于软件保护装置中的私钥对固化于软件保护装置中的第一数据和接收到的随机数进行运算生成第一签名信息包括: [0014] B1、将软件执行装置发送的随机数和固化于软件保护装置中的第一数据合并成为第二数据; \n[0015] B2、用固化于软件保护装置中的的私钥对第二数据进行签名生成第一签名信息。 [0016] 上述方法中,所述步骤C包括: \n[0017] C1、将生成的随机数和存储于软件中的第一数据合并获得第二数据; [0018] C2、利用固化于软件执行装置中的公钥和第二数据对软件保护装置输出的第一签名信息进行签名验证,若验证通过,则软件保护装置是合法的,否则,软件保护装置不合法。 [0019] 上述方法中,所述第一数据为具有固定字节长度的加密的字符串。 [0020] 上述方法中,步骤A所述固化于软件保护装置中的第一子数据由软件保护装置的提供商提供;步骤A所述与所述软件绑定的第二子数据为由除软件保护装置的提供商之外的另一方提供的与所述软件具有一一对应关系的数据。 \n[0021] 一种验证软件保护装置合法性的系统,该系统包括:固化有公钥的软件执行装置和连接于软件执行装置固化有第一子数据、加密算法、第一数据和私钥的软件保护装置; [0022] 所述软件保护装置利用固化的私钥对固化的第一数据和接收到的随机数进行运算生成第一签名信息,输出第一签名信息至所述软件执行装置;所述第一数据为固化于软件保护装置中的第一子数据和与所述软件绑定的第二子数据合并获得的第三子数据经固化于软件保护装置的加密算法加密后生成的数据; \n[0023] 所述软件执行装置在执行软件时获取存储于软件中的第一数据并生成随机数,输出随机数至软件保护装置;利用固化的公钥、生成的随机数和存储于软件中的第一数据对所述软件保护装置输出的第一签名信息进行签名验证,根据签名验证结果判断软件保护装置是否合法。 \n[0024] 上述系统中,所述软件保护装置包括: \n[0025] 第一存储单元,用于固化私钥、第一数据、第一子数据和加密算法; [0026] 第一接口单元,用于连接软件执行装置,且在连接到软件执行装置时输出第一连接信号,将随机数输出至第一控制单元; \n[0027] 第一控制单元,根据第一连接信号从第一存储单元读取私钥和第一数据,将第一数据和接收到的随机数合并获得第二数据,利用私钥对第二数据进行签名生成第一签名信息,通过第一接口单元输出第一签名信息至软件执行装置。 \n[0028] 上述系统中,所述软件执行装置包括: \n[0029] 第二存储单元,用于固化公钥; \n[0030] 软件执行单元,用于运行软件,且在运行软件时输出从软件中获取的第一数据至第二控制单元; \n[0031] 第二接口单元,用于连接软件保护装置,且在连接了软件保护装置后输出第二连接信号至第二控制单元,以及用于将由所述软件保护装置输出的第一签名信息输出至第二控制单元; \n[0032] 第二控制单元,接收到第二连接信号及第一数据,生成随机数,通过第二接口单元输出随机数至软件保护装置;将随机数与软件执行单元输出的第一数据进行合并获得第二数据;利用从第二存储单元读取的公钥、及合并获得的第二数据对第一签名信息进行签名验证,若验证通过,则软件保护装置为合法的,否则,软件保护装置不合法。 [0033] 较佳地,所述软件保护装置还包括一与第一控制单元连接的数据生成单元: [0034] 所述第一接口单元还用于将外部输入的加密控制指令和与所述软件绑定的第二子数据输出至所述第一控制单元;所述与所述软件绑定的第二子数据为由除软件保护装置提供商之外的另一方提供的与所述软件具有一一对应关系的数据;所述加密控制指令为由与提供第二子数据相同的一方提供的用以计算第一数据的控制指令; \n[0035] 所述第一控制单元还根据加密控制指令,从所述第一存储单元读取第一子数据和加密算法,将第一子数据、加密算法和第二子数据输出至所述数据生成单元;还用于根据加密完成指令将第一数据输出至所述第一存储单元保存,将第一数据通过所述第一接口单元输出至软件开发商,以共软件开发商将第一数据存储于需要保护的软件中; [0036] 所述数据生成单元将第一子数据和第二子数据合并获得第三子数据,利用加密算法加密第三子数据生成第一数据,输出第一数据及加密完成指令至所述第一控制单元。 [0037] 由上述的技术方案可见,本发明提供了一种验证软件保护装置合法性的方法及系统,在本发明中,利用第一数据、随机数、私钥和公钥来验证软件保护装置的合法性;其中,第一数据分别固化于软件保护装置和被执行软件中,私钥固化于软件保护装置中,公钥固化于软件执行装置中,第一数据为固化于软件保护装置中的第一子数据和与软件绑定的第二子数据合并获得的第三子数据经固化于软件保护装置的加密算法加密后生成的数据,固化于软件保护装置中的第一子数据由软件保护装置提供商提供。采用本发明的方法和系统,第一数据和私钥固化于软件保护装置中无法从软件保护装置中读出,随机数是由与软件保护装置连接的软件执行装置在执行软件时产生的,且第一数据是由软件保护装置提供商和除软件保护装置提供商之外的另一方提供的两部分数据经加密运算后获得的数据,这样,软件保护装置提供商或除软件保护装置提供商之外的另一方泄露了一方提供的数据,解密者无法获取另一方提供的数据,也就不可能生成第一数据,进而无法实现硬件克隆,提高了软件保护装置的安全性,降低了硬件克隆的可能性。 \n附图说明\n[0038] 图1为本发明验证软件保护装置的方法流程图。 \n[0039] 图2为本发明验证软件保护装置的系统的结构示意图。 \n具体实施方式\n[0040] 为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。 \n[0041] 本发明提供了一种验证软件保护装置合法性的方法及系统,在本发明中,利用第一数据、随机数、私钥和公钥来验证软件保护装置的合法性;其中,第一数据分别固化于软件保护装置和被执行软件中,私钥固化于软件保护装置中,公钥固化于软件执行装置中,第一数据为固化于软件保护装置中的第一子数据和与所述软件绑定的第二子数据合并获得的第三子数据经固化于软件保护装置的加密算法加密后生成的数据,固化于软件保护装置中的第一子数据由软件保护装置提供商提供。由于在第一数据和私钥都被解密者获取时才能实现硬件克隆,本发明的第一数据和私钥固化于软件保护装置中无法从软件保护装置中读出,随机数是由与软件保护装置连接的软件执行装置在执行软件时产生的,且第一数据是由软件保护装置提供商和除软件保护装置提供商之外的另一方提供的两部分数据经加密运算后获得的数据,这样,软件保护装置提供商或除软件保护装置提供商之外的另一方泄露了一方提供的数据,解密者无法获取另一方提供的数据,也就不可能生成第一数据,进而无法实现硬件克隆,提高了软件保护装置的安全性,降低了硬件克隆的可能性。 [0042] 图1为本发明验证软件保护装置的方法流程图。现结合图1,对本发明验证软件保护装置的方法进行说明,具体如下: \n[0043] 步骤101:软件执行装置在执行软件时获取存储于软件中的第一数据并生成随机数,发送随机数至软件保护装置; \n[0044] 待执行软件中存储有第一数据,所述第一数据为固化于软件保护装置中的第一子数据和与所述软件绑定的第二子数据合并获得的第三子数据经固化于软件保护装置的加密算法加密后生成的数据;与所述软件绑定的第二子数据为由除软件保护装置的提供商之外的另一方提供的与所述软件具有一一对 应关系的数据。 \n[0045] 第一数据可在软件保护装置中生成;第一数据为具有固定字节长度的加密的字符串。第一数据的长度可根据安全性要求的高低进行设置,本实施例中第一数据的字节长度为20字节。 \n[0046] 除软件保护装置的提供商之外的另一方可为软件开发商,也可为其他提供商。 [0047] 软件执行装置在检测到已连接有软件保护装置后,执行软件的同时生成随机数。\n该随机数的字节长度可根据安全性要求的高低进行设置,本实施例中设定随机数的字节长度为128个字节。 \n[0048] 步骤102:软件保护装置利用固化于软件保护装置中的私钥对固化于软件保护装置中的第一数据和接收到的随机数进行运算生成第一签名信息,输出第一签名信息至软件执行装置; \n[0049] 软件保护装置由于其硬件结构,固化于该软件保护装置中的私钥和第一数据是无法被外界设备读取,除非提供私钥和第一数据的一方泄露了上述数据才可获得固化于软件保护装置中的私钥和第一数据。 \n[0050] 软件保护装置中固化的私钥和软件执行装置中固化的公钥为非对称密钥,可都由软件保护装置的提供商进行设置。 \n[0051] 该步骤中,软件保护装置利用固化于软件保护装置中的私钥对固化于软件保护装置中的第一数据及接收到的随机数进行运算生成第一签名信息的方法包括: [0052] 步骤1021,将软件执行装置发送的随机数和固化的第一数据合并成为第二数据; [0053] 该步骤中,可将第一数据附于随机数之后生成一个字符串,或者将随机数附于第一数据之后生成一个字符串,将生成的一个字符串作为第二数据。 \n[0054] 步骤1022,用固化的私钥对第二数据进行签名生成第一签名信息; [0055] 本发明中选用RSA算法对第二数据进行签名生成第一签名信息;用固化的私钥对第二数据进行签名的方法属于现有技术的内容,在此不再赘述。 \n[0056] 本发明选用RSA算法作为非对称密钥算法,这类算法中加密和解密是相对独立的,该算法使用不同的公钥和私钥,根据公钥无法推算出私钥。在运算过程中,公钥加密的数据只能用私钥解密,私钥加密的数据只能用公钥。利用这种非对称密钥算法,可提高传输数据的安全性。 \n[0057] 步骤103:软件执行装置利用固化于软件执行装置中的公钥、存储于软件中的第一数据和生成的随机数对第一签名信息进行签名验证,根据签名验证结果判断软件保护装置是否合法; \n[0058] 该步骤具体包括: \n[0059] 步骤1031,将生成的随机数和存储于软件中的第一数据合并获得第二数据; [0060] 该步骤合并获得第二数据的方法与步骤1021相同,在此不再赘述。 [0061] 步骤1032,利用固化于软件执行装置中的公钥和步骤1031计算获得的第二数据对软件保护装置输出的第一签名信息进行签名验证,若验证通过,则软件保护装置是合法的,否则,软件保护装置不合法; \n[0062] 本步骤中,利用公钥和计算获得的第二数据对第一签名信息进行的签名验证为RSA签名验证,具体验证方法属于现有技术的内容,在此不再赘述。 \n[0063] 为了进一步提高硬件的安全性,防止第一数据被泄露,在步骤101之前还包括:步骤100,将固化于软件保护装置中的第一子数据和与所述软件绑定的第二子数据合并获得第三子数据,利用固化于软件保护装置的加密算法加密第三子数据生成第一数据,将第一数据固化于软件保护装置,将第一数据存储于软件中; \n[0064] 在该步骤中,固化于软件保护装置中的第一子数据由软件保护装置提供商提供;\n存储有第一数据的软件为软件执行装置待执行的软件。 \n[0065] 在该步骤中,软件保护装置中固化了第一子数据和加密算法,第一子数据和加密算法可由软件保护装置的提供商进行设置;第一子数据为具有固定字节长度的字符串;加密算法可选用现有的DES、TDES、RSA、HASH、HMAC等密码学算法。与软件绑定的第二子数据为具有固定字节长度的字符串。 \n[0066] 将第一子数据和第二子数据合并成第三子数据的方法为:将第一子数据 附于第二子数据之后生成的字符串作为第三子数据,或者将第二子数据附于第一子数据之后生成的字符串作为第三子数据。 \n[0067] 采用本发明的方法,由于软件保护装置的硬件结构,固化于软件保护装置中的私钥和第一数据本身不易被外界其他设备读取,这样,只有通过私钥和第一数据的提供商才可获得上述数据。因为第一数据是由软件保护装置的提供商固化于软件保护装置中的第一子数据、加密算法及与软件绑定的第二子数据进行加密生成的;若软件保护装置的提供商泄露了第一子数据和加密算法,在不知道第二子数据的情况下无法推算获得第一数据;若提供与软件绑定的第二子数据的一方泄露了第二子数据,在不知道第一子数据和加密算法的情况下也无法推算出第一数据,所以,即便软件保护装置和提供与软件绑定的第二子数据的一方中的任一方泄露了其提供的数据,基于第一数据的构成,解密者无法推算出第一数据,提高了硬件的安全性,降低了硬件克隆的可能性。 \n[0068] 图2为本发明验证软件保护装置的系统的结构示意图。现结合图2,对本发明验证软件保护装置的系统的结构进行说明,具体如下: \n[0069] 本发明验证软件保护装置合法性的系统包括:固化有公钥的软件执行装置20和连接于软件执行装置固化有第一子数据、加密算法、第一数据和私钥的软件保护装置21。 [0070] 软件保护装置20利用固化的私钥对固化的第一数据和接收到的随机数进行运算生成第一签名信息,输出第一签名信息至软件执行装置21。第一数据为固化于软件保护装置20中的第一子数据和软与软件绑定的第二子数据合并获得的第三子数据经固化于软件保护装置20的加密算法加密后生成的数据。 \n[0071] 软件执行装置21在执行软件时获取存储于软件中的第一数据并生成随机数,输出随机数至软件保护装置20;利用固化的公钥、生成的随机数和存储于软件中的第一数据对软件保护装置20输出的第一签名信息进行签名验证,根据签名验证结果判断软件保护装置20是否合法。 \n[0072] 其中,软件保护装置20包括第一控制单元201、第二接口单元202和第一 存储单元203;软件执行装置21包括第二控制单元211、第二接口单元212、软件执行单元213和第二存储单元214。 \n[0073] 在软件保护装置20中,第一控制单元201分别和第一接口单元202及第一存储单元203连接;第一接口单元202与软件执行装置21连接。 \n[0074] 第一存储单元203用于固化私钥、第一数据、第一子数据和加密算法;第一存储单元203可采用现有的只读存储器,且该第一存储单元203中存储的信息不能被与软件保护装置20连接的外界设备进行硬件复制或读取。 \n[0075] 第一接口单元202在连接到软件执行装置21时输出第一连接信号,将随机数输出至第一控制单元201。第一连接信号可为电流信号或电压信号。第一接口单元202可采用现有的API接口,也可选用现有的其它类型的接口,但第一接口单元202的类型需要与软件执行装置21的接口类型匹配。 \n[0076] 第一控制单元201根据第一连接信号从第一存储单元203读取私钥和第一数据,将第一数据和接收到的随机数合并获得第二数据,利用私钥对第二数据进行签名生成第一签名信息,通过第一接口单元202输出第一签名信息至软件执行装置21。 \n[0077] 在软件执行装置21中,第二控制单元211分别连接软件执行单元213和第二接口单元212;第二接口单元212连接软件保护装置20中的第一接口单元;第二存储单元214连接第二控制单元211。 \n[0078] 第二存储单元214用于固化公钥。第二存储单元214中固化的公钥与软件保护装置20的第一存储单元203中固化的私钥为非对称密钥。 \n[0079] 软件执行单元213用于运行软件,且在运行软件时输出从软件中获取的第一数据至第二控制单元211。 \n[0080] 第二接口单元212在连接了软件保护装置20后输出第二连接信号至第二控制单元211,将第一签名信息和公钥输出至第二控制单元211。第二连接信号可为电流信号或电压信号。第二接口单元212与第一接口单元202的类型相同;本发明中,第二接口单元212选择API接口。 \n[0081] 第二控制单元211接收到第二连接信号及第一数据,生成随机数,通过第二 接口单元212输出随机数至软件保护装置20的第一接口单元202;将随机数与软件执行单元\n213输出的第一数据进行合并获得第二数据;从第二存储单元214中读取公钥;利用公钥和第二数据对第一签名信息进行签名验证,若验证通过,则软件保护装置20为合法的,否则,软件保护装置20不合法。 \n[0082] 为了进一步提高硬件的安全性,防止第一数据被泄露,软件保护装置20还包括一与第一控制单元201连接的数据生成单元204。 \n[0083] 第一接口单元202还用于将外部输入的加密控制指令和第二子数据输出至第一控制单元201。所述与所述软件绑定的第二子数据为由除软件保护装置提供商之外的另一方提供的与所述软件具有一一对应关系的数据;所述加密控制指令为由与提供第二子数据相同的一方提供的用以计算第一数据的控制指令。 \n[0084] 第一控制单元201还根据加密控制指令,从第一存储单元203读取第一子数据和加密算法,将第一子数据、加密算法和外部输入的第二子数据输出至数据生成单元204;还用于根据加密完成指令将第一数据输出至第一存储单元203保存,将第一数据通过第一接口单元202输出。第一控制单元201将生成的第一数据通过第一接口单元202输出至软件开发商,以供软件开发商将第一数据存储于需要保护的软件中。 \n[0085] 数据生成单元204将第一子数据和第二子数据合并获得第三子数据,利用加密算法加密第三子数据生成第一数据,输出第一数据及加密完成指令至第一控制单元201。 [0086] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
法律信息
- 2023-01-17
专利权人的姓名或者名称、地址的变更
专利权人由北京深思数盾科技股份有限公司变更为北京深盾科技股份有限公司
地址由100193 北京市海淀区西北旺东路10号院东区5号楼5层510变更为100193 北京市海淀区西北旺东路10号院东区5号楼5层510
- 2016-10-19
专利权人的姓名或者名称、地址的变更
专利权人由北京深思数盾科技有限公司变更为北京深思数盾科技股份有限公司
地址由100872 北京市海淀区中关村大街甲59号文化大厦1706室变更为100193 北京市海淀区西北旺东路10号院东区5号楼5层510
- 2015-02-04
专利权的转移
登记生效日: 2015.01.09
专利权人由北京深思洛克软件技术股份有限公司变更为北京深思数盾科技有限公司
地址由100086 北京市海淀区中关村南大街甲6号铸诚大厦B座1201室变更为100872 北京市海淀区中关村大街甲59号文化大厦1706室
- 2013-09-25
- 2011-02-02
实质审查的生效
IPC(主分类): G06F 21/00
专利申请号: 201010268693.4
申请日: 2010.08.31
- 2010-12-15
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2008-02-20
|
2006-08-14
| | |
2
| |
2010-04-14
|
2009-10-21
| | |
3
| |
2009-12-16
|
2008-06-12
| | |
4
| |
2008-09-17
|
2008-04-16
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |