本申请涉及信息安全技术领域,更具体地说,涉及一种FPGA程序防拷贝方法和PCI-E密码卡。
背景技术:
PCI-E密码卡作为一个软硬件结合的密码产品,应当防止未授权的机构对PCI-E密码卡关键芯片FPGA(Field-Programmable Gate Array,即现场可编程门阵列)的配置数据流进行拷贝。
现在大多数FPGA支持对配置数据流的加密操作,密钥是存放于BBRAM或eFUSE中,其中eFUSE仅支持一次可编程,然而不是所有的FPGA都有eFUSE;而BBRAM掉电内容丢失,需外接电池,可见目前的FPGA配置数据流防拷贝方法的实用性较低。
技术实现要素:
有鉴于此,本申请提供一种FPGA程序防拷贝方法和PCI-E密码卡,该方法适用于所有型号的FPGA配置数据流防拷贝保护,具有较高的实用性。
为了实现上述目的,现提出的方案如下:
一种FPGA程序防拷贝方法,所述方法应用于PCI-E密码卡,所述PCI-E密码卡包括:FPGA芯片和安全芯片,所述方法包括:
当所述FPGA芯片配置完成后,所述FPGA芯片获取一组随机数以及所述安全芯片的芯片序列号,并将所述随机数发送至所述安全芯片;
FPGA芯片按照预设算法对所述FPGA芯片预存的第一密钥、所述随机数以及所述芯片序列号进行计算,得到第一计算结果;
安全芯片接收所述FPGA芯片发送的所述随机数,并按照所述预设算法对所述安全芯片预存的所述第二密钥、所述随机数以及所述芯片序列号进行计算,得到第二计算结果;
所述FPGA芯片比较所述第一计算结果和所述第二计算结果;
其中,当所述第一计算结果和所述第二计算结果一致时,所述FGPA进入正常工作状态;
当所述第一计算结果和所述第二计算结果不一致时,所述FPGA进入非正常工作状态。
优选的,所述第一密钥存储在所述FPGA芯片的flash存储器中。
优选的,所述按照预设算法对所述FPGA芯片预存的第一密钥、所述随机数以及所述芯片序列号进行计算,得到第一计算结果,包括:
对所述第一密钥和所述芯片序列号进行HASH运算,第一HASH运算结果;
对所述第一HASH运算结果和所随机数进行HASH运算,输出所述第一计算结果。
优选的,所述按照所述预设算法对所述安全芯片预存的所述第二密钥、所述随机数以及所述芯片序列号进行计算,得到第二计算结果,包括:
对所述第二密钥和所述芯片序列号进行HASH运算,第二HASH运算结果;
对所述第二HASH运算结果和所随机数进行HASH运算,输出所述第二计算结果。
一种PCI-E密码,包括:FPGA芯片和安全芯片;
其中,所述FPGA芯片用于当所述FPGA芯片配置完成后,获取一组随机数以及所述安全芯片的芯片序列号,并将所述随机数发送至所述安全芯片;
FPGA芯片按照预设算法对所述FPGA芯片预存的第一密钥、所述随机数以及所述芯片序列号进行计算,得到第一计算结果;
所述安全芯片用于接收所述FPGA芯片发送的所述随机数,并按照所述预设算法对所述安全芯片预存的所述第二密钥、所述随机数以及所述芯片序列号进行计算,得到第二计算结果;
所述FPGA芯片还用于比较所述第一计算结果和所述第二计算结果;
其中,当所述第一计算结果和所述第二计算结果一致时,所述FGPA进入正常工作状态;
当所述第一计算结果和所述第二计算结果不一致时,所述FPGA进入非正常工作状态。
优选的,所述FPGA芯片包括:
第一数据采集单元,用于当所述FPGA芯片配置完成后,获取一组随机数、所述安全芯片的芯片序列号以及所述安全芯片输出的第二计算结果;
第一计算单元,用于按照预设算法对所述FPGA芯片预存的第一密钥、所述随机数以及所述芯片序列号进行计算,得到第一计算结果;
第一数据发送单元,用于将所述随机数发送至所述安全芯片;
比较单元,用于比较所述第一计算结果和所述第二计算结果。
优选的,所述安全芯片包括:
第二数据采集单元,用于接收所述FPGA芯片发送的所述随机数;
第二计算单元,用于按照所述预设算法对所述安全芯片预存的所述第二密钥、所述随机数以及所述芯片序列号进行计算,得到第二计算结果;
第二数据发送单元,用于将所述安全芯片的所述芯片序列号以及所述第二计算结果发送至所述FPGA芯片。
经由上述技术方案可知,本申请公开一种FPGA程序防拷贝方法和PCI-E密码卡。当FPGA芯片配置完成后,FPGA芯片获取一组随机数以及安全芯片的芯片序列号,按照预设算法对预存的第一密钥、随机数以及芯片序列号进行一系列,得到第一计算结果。进而,安全芯片采用相同的计算方法对预存的第二密钥、上述随机数以及芯片序列号进行计算,得到第二计算结果。FPGA芯片比较第一计算结果和第二计算结果,当二者一致时,则说明外部为友好电路FGPA进入正常工作状态,否则外部为非友好电路,FPGA进入非正常工作状态。与采用加密防拷贝的方式相比,本发明采用FPGA身份认证的方式防止FPGA程序的拷贝,适用于所有型号的FPGA芯片。同时,在身份认证过程中,增加了随机因子和唯一的芯片序列号,防止对身份认证数据的重放攻击以及密钥的破解,提高了PCI-E密码卡的密码算法和密钥的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本发明一个实施例公开了一种FPGA程序防拷贝方法的流程示意图;
图2出了本发明另一个实施例公开的一种PCI-E密码卡的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1示出了本发明一个实施例公开了一种FPGA程序防拷贝方法的流程示意图。
该方法应用于PCI-E密码卡,其中所述PCI-E密码卡包括FPGA芯片和安芯片。
由图1可知,本发明包括:
S101:当FPGA芯片配置完成后,FPGA芯片获取一组随机数以及安全芯片的芯片序列号,并将所述随机数发送至安全芯片。
PCI-E密码卡上电后,FPGA芯片从Flash存储器中读取配置流数据进行配置。配置完后,FPGA芯片获取安全芯片发送的唯一芯片序列号以及一组随机数。
S102:FPGA芯片按照预设算法对所述FPGA芯片预存的第一密钥、所述随机数以及所述芯片序列号进行计算,得到第一计算结果。
可选,FPGA芯片利用预存的第一密钥与安全芯片的唯一芯片序列号进行HASH(哈希)运算,进而将得到的HASH结果与上述随机数再次进行HASH运算,输出第一计算结果。
需要说明的是,在本实施例中FPGA芯片的第一密钥存储在FPGA芯片的Flash存储器中。该Flash存储器具有支持多次变程,且断电不丢失数据的特性。
S103:安全芯片接收FPGA芯片发送的随机数,并按照所述预设算法对安全芯片预存的所述第二密钥、随机数以及芯片序列号进行计算,得到第二计算结果。
安全芯片采用步骤S102中相同的计算方式对随机数、芯片序列号以及第二密钥进行计算输出第二计算结果。
具体的,安全芯片接收FPGA芯片发送的随机数,并利用预存的第二密钥与唯一的芯片序列进行HASH运算,将得到的HASH结果与收到的随机数再次进行HASH运算,输出第二计算结果,并将第二运算结果返回至FPGA芯片。
S103:所述FPGA芯片比较所述第一计算结果和所述第二计算结果。
S104:当第一计算结果和第二计算结果一致时,所述FGPA进入正常工作状态。
S105:当第一计算结果和第二计算结果不一致时,所述FPGA进入非正常工作状态。
由以上实施例可知,经由上述技术方案可知,本申请公开一种FPGA程序防拷贝方法。当FPGA芯片配置完成后,FPGA芯片获取一组随机数以及安全芯片的芯片序列号,按照预设算法对预存的第一密钥、随机数以及芯片序列号进行一系列,得到第一计算结果。进而,安全芯片采用相同的计算方法对预存的第二密钥、上述随机数以及芯片序列号进行计算,得到第二计算结果。FPGA芯片比较第一计算结果和第二计算结果,当二者一致时,则说明外部为友好电路FGPA进入正常工作状态,否则外部为非友好电路,FPGA进入非正常工作状态。与采用加密防拷贝的方式相比,本发明采用FPGA身份认证的方式防止FPGA程序的拷贝,适用于所有型号的FPGA芯片。同时,在身份认证过程中,增加了随机因子和唯一的芯片序列号,防止对身份认证数据的重放攻击以及密钥的破解,提高了PCI-E密码卡的密码算法和密钥的安全性。
参见图2出了本发明另一个实施例公开的一种PCI-E密码卡的结构示意图。
由图2可知,该PCI-E密码卡至少包括:FPGA芯片1和安全芯片2。
具体的,
所述FPGA芯片包括:第一数据采集单元11、第一计算单元12、第一数据发送单元13以及比较单元14。
所述安全芯片包括:第二数据采集单元21、第二计算单元22以及第二数据发送单元32。
具体工作原理如下:
当FPGA芯片配置完成后,第一数据采集单元11获取一组随机数、安全芯片的第二数据发送单元23发送的芯片序列号,并将该随机数以及芯片序列号发送至第一计算单元12中。
第一计算单元12按照预设算法对FPGA芯片预存的第一密钥、所述随机数以及所述芯片序列号进行计算,得到第一计算结果。
具体的,第一计算单元12利用FPGA芯片预存的第一密钥与安全芯片的唯一芯片序列号进行HASH(哈希)运算,进而将得到的HASH结果与上述随机数再次进行HASH运算,输出第一计算结果。
第一数据发送单元13将第一数据采集单元11采集的所述随机数发送至所述安全芯片。
安全芯片的第二数据采集单元21接收所述第一数据发送单元发送的所述随机数,并将其转发至第二计算单元22中。
第二计算单元22按照与第一计算单元相同的计算方式对所述安全芯片预存的所述第二密钥、所述随机数以及所述芯片序列号进行计算,得到第二计算结果。
第二数据发送单元23将所述第二计算结果返回发送至所述FPGA芯片。
进而,比较单元14比较所述第一计算结果和所述第二计算结果。
其中,当第一计算结果和第二计算结果一致时,所述FGPA进入正常工作状态。
当第一计算结果和第二计算结果不一致时,所述FPGA进入非正常工作状态。
需要说明的是该系统实施例与方法实施例相对应,其执行过程和执行原理相同,在此不作赘述。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。