FPGA产权保护方法及系统转让专利

申请号 : CN201510162303.8

文献号 : CN104732120B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 雷璐璐

申请人 : 迈普通信技术股份有限公司

摘要 :

本发明涉及对FPGA产权保护技术,其公开了一种FPGA产权保护方法,解决传统技术中存在的无法支持设计者对FPGA内部功能的权限配置和对不同用户进行授权次数控制的问题。在本发明中,始终将权限控制字作为附加信息与原始密钥经过密钥算法存储到了新密钥中,对应FPGA程序只需存有原始密钥即可实现对新密钥存储信息的读取,从而实现设计者对FPGA功能权限的配置,另一方面,本发明还实现了对FPGA剩余可运行次数的控制:每当系统认证成功一次,FPGA控制加密芯片内动态密钥进行一次迭代更新,当加密芯片内动态密钥较FPGA中原始密钥迭代次数超过授权次数后,当前环境转为非授权环境。此外,本发明还公开了相应的FPGA产权保护系统,适用于FPGA产权保护。

权利要求 :

1.FPGA产权保护系统,其特征在于,包括:

FPGA产权保护模块,用于在系统上电后产生随机数发送给加密芯片模块,并获取加密芯片模块产生的信息认证码值;根据密钥算法采用权限控制字结合原始密钥产生新密钥,并将产生的新密钥与随机数根据加密算法计算获得本地信息认证码值,将加密芯片模块产生的信息认证码值与本地信息认证码值进行比较认证,若认证成功则向加密芯片模块输出权限控制字;若未成功认证,则继续进行迭代认证:根据密钥算法采用权限控制字与新密钥迭代出下一级密钥,将下一级密钥作为新密钥与随机数根据加密算法计算获得本地新的信息认证码值,并将加密芯片模块产生的信息认证码值与本地新的信息认证码值进行比较;

如此循环,直至认证成功或者权限控制字的迭代次数超过授权次数而导致本次认证失败;

加密芯片模块,用于在收到FPGA发送的随机数后,根据随机数及存储的动态密钥根据加密算法计算获得信息认证码值,并发送给FPGA产权保护模块,在收到FPGA产权模块发送的权限控制字后结合该权限控制字及存储的动态密钥根据密钥算法产生新的动态密钥,并以所述新的动态密钥替换存储的动态密钥。

2.如权利要求1所述的FPGA产权保护系统,其特征在于,所述FPGA产权保护模块根据密钥算法采用多个权限控制字结合原始密钥产生对应的多个新密钥,并将产生的多个新密钥分别与随机数根据加密算法计算获得对应的多组本地信息认证码值。

3.如权利要求2所述的FPGA产权保护系统,其特征在于,所述FPGA产权保护模块将加密芯片模块产生的信息认证码值与本地信息认证码值进行比较认证的方法是:所述FPGA产权保护模块将加密芯片模块产生的信息认证码值与所述计算获得的对应多组本地信息认证码值进行比较,若有某一组本地信息认证码值与加密芯片模块产生的信息认证码值相等,则认证成功;若所有的本地信息认证码值与加密芯片模块产生的信息认证码值都不相等,则未成功认证。

4.如权利要求2所述的FPGA产权保护系统,其特征在于,所述FPGA模块在认证成功后向加密芯片模块输出权限控制字的方法是:所述FPGA模块在认证成功后向加密芯片模块输出与加密芯片模块产生的信息认证码相等的本地信息认证码对应的权限控制字。

5.如权利要求2-4任意一项所述的FPGA产权保护系统,其特征在于,所述FPGA产权保护模块若未成功认证,则继续进行迭代认证的方法是:所述FPGA产权保护模块首先对各个权限控制字的迭代认证次数加1,判断各个权限控制字当前的迭代次数是否超过该控制字对应的授权次数,若未超过,则继续采用该权限控制字与对应的新密钥根据密钥算法迭代出下一级密钥,将下一级密钥作为新密钥与随机数根据加密算法计算获得本地新的信息认证码值,并将加密芯片模块产生的信息认证码值与本地新的信息认证码值进行比较认证,如此循环,直至认证成功或者所有的权限控制字当前的迭代次数均超过对应的授权次数而导致本次认证失败。

6.FPGA产权保护方法,其特征在于,包括以下步骤:

A.系统上电,FPGA产权保护模块产生随机数并发送给加密芯片模块;

B.加密芯片模块获取随机数并结合该随机数及存储的动态密钥根据加密算法计算获得信息认证码值,发送该信息认证码值给FPGA产权保护模块;

C.FPGA产权保护模块采用权限控制字结合原始密钥根据密钥算法产生新密钥,并将产生的新密钥与随机数根据加密算法计算获得本地信息认证码值;

D.FPGA产权保护模块将本地信息认证码值与从加密芯片模块获得的信息认证码值进行比较认证,若认证成功,则进入步骤E,否则进入步骤G;

E.FPGA产权保护模块向加密芯片模块输出权限控制字;

F.加密芯片模块结合该权限控制字及存储的动态密钥根据密钥算法产生新的动态密钥,并以所述新的动态密钥替换存储的动态密钥,本次认证流程结束;

G.对该权限控制字的迭代次数加1;判断该权限控制字的迭代次数是否超过授权次数,若未超过,则进入步骤H,若超过,则认证失败,本次认证流程结束;

H.采用权限控制字与新密钥根据密钥算法迭代出下一级密钥,将下一级密钥作为新密钥与随机数根据加密算法计算获得本地新的信息认证码值,返回步骤D。

7.如权利要求6所述的FPGA产权保护方法,其特征在于,步骤C中,所述FPGA产权保护模块采用多个权限控制字结合原始密钥根据密钥算法产生对应的多个新密钥,并将产生的多个新密钥分别与随机数根据加密算法计算获得对应的多组本地信息认证码值。

8.如权利要求6所述的FPGA产权保护方法,其特征在于,步骤D中,所述FPGA产权保护模块将本地信息认证码值与从加密芯片模块获得的信息认证码值进行比较认证的方法是:FPGA产权保护模块将加密芯片模块产生的信息认证码值与所述计算获得的对应多组本地信息认证码值进行比较,若有某一组本地信息认证码值与加密芯片模块产生的信息认证码值相等,则认证成功,进入步骤E;若所有的本地信息认证码值与加密芯片模块产生的信息认证码值都不相等,则未成功认证,进入步骤G。

9.如权利要求6所述的FPGA产权保护方法,其特征在于,步骤E中,所述FPGA模块在认证成功后向加密芯片模块输出权限控制字的方法是:FPGA模块在认证成功后向加密芯片模块输出与加密芯片模块产生的信息认证码相等的本地信息认证码对应的权限控制字。

10.如权利要求6-9任意一项所述的FPGA产权保护方法,其特征在于步骤G中,当所有的权限控制字的迭代次数均超过对应的授权次数时,则认证失败,本次认证流程结束。

说明书 :

FPGA产权保护方法及系统

技术领域

[0001] 本发明涉及对FPGA产权保护技术,特别涉及一种基于加密芯片模块的FPGA产权保护方法及系统。

背景技术

[0002] FPGA(Field Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。其最大特点为可编程及在线动态重构,这使得应用FPGA后能够显著降低成本和缩短设计周期,近年来随着FPGA性能的提高和成本的下降,其使用范围越来越广。
[0003] FPGA在系统上电时将片外PROM中的BIT数据流加载到片内SRAM中,完成对FPGA的编程,从而实现设计者的不同功能。该流程使得监测FPGA加载管脚的数据流就可实现对FPGA功能设计的复制。由此产生的盗版现象使设计者承受着巨大的经济损失,每年由于盗版导致的损失高达数千亿美元,而且还在以每年12~15%的速率增加;除经济损失外,应用在军工、航天等特殊场合的FPGA设计一旦被破解,造成的后果将是无法估量的,因此如何有效保护FPGA内部设计的知识产权变得越来越重要。
[0004] 现有FPGA产权保护方案大致可分为直接加密法和鉴权法,其中直接加密法要求特定型号FPGA,因而在应用上有很大局限性;而基于加密芯片模块的鉴权法与FPGA型号无关,应用更加广泛。
[0005] 如图1所示,以基于Maxim公司推出的一种加密芯片的鉴权法为例,其方案流程为:FPGA产权保护程序启动后产生随机数,并通过1-wire协议将该随机数发送给加密芯片模块;加密芯片模块根据随机数、事先协商好的密钥等数据通过诸如SHA-1算法等加密算法得到唯一的MAC(信息认证码)值,并同样经由1-wire协议回传给FPGA。FPGA产权保护程序将加密芯片模块得出的MAC值与本地按相同数据相同算法得到的MAC值进行匹配,若两者一致,则判定FPGA程序运行在授权环境下,认证成功,进入正常工作状态,反之,认证失败,进入非正常工作状态。
[0006] 由此可知,若加密芯片模块中未写入约定好的密钥,即使FPGA程序及相关电路遭到复制,破解者仍不能得到正常工作的FPGA系统,从而有效保护了设计者的知识产权,设计者也可以通过加密芯片模块的发放数量实现套量控制。
[0007] 上述方案存在如下缺点:
[0008] 1.现有的FPGA产权保护方案只能对当前工作环境是否为授权环境进行认证,而无法同时支持设计者对FPGA内部各功能的权限配置,设计者如需对不同用户开放不同功能权限,则需要其他外设辅助完成;
[0009] 2.现有的FPGA产权保护方案只能通过加密芯片模块的发放数量实现套量控制,而不能支持设计者对不同用户进行授权次数的控制。

发明内容

[0010] 本发明所要解决的技术问题是:提出一种FPGA产权保护方法及系统,改善传统技术中存在的无法支持设计者对FPGA内部功能的权限配置和对不同用户进行授权次数控制的问题。
[0011] 本发明解决其技术问题所采用的技术方案是:一种FPGA产权保护系统,包括:
[0012] FPGA产权保护模块,用于在系统上电后产生随机数发送给加密芯片模块,并获取加密芯片模块产生的MAC值;采用权限控制字结合原始密钥根据密钥算法产生新密钥,并将产生的新密钥与随机数根据加密算法计算获得本地MAC值,将加密芯片模块产生的MAC值与本地MAC值进行比较认证,若认证成功则向加密芯片模块输出权限控制字;若未成功认证,则继续进行迭代认证:采用权限控制字与新密钥根据密钥算法迭代出下一级密钥,将下一级密钥作为新密钥与随机数根据加密算法计算获得本地新的MAC值,并将加密芯片模块产生的MAC值与本地新的MAC值进行比较;如此循环,直至认证成功或者权限控制字的迭代次数超过授权次数而导致本次认证失败;
[0013] 加密芯片模块,用于在收到FPGA发送的随机数后,根据随机数及存储的动态密钥根据加密算法计算获得MAC值,并发送给FPGA产权保护模块,在收到FPGA产权模块发送的权限控制字后结合该权限控制字及存储的动态密钥根据密钥算法产生新的动态密钥,并以所述新的动态密钥替换存储的动态密钥。
[0014] 进一步的,所述FPGA产权保护模块采用多个权限控制字结合原始密钥根据密钥算法产生对应的多个新密钥,并将产生的多个新密钥分别与随机数根据加密算法计算获得对应的多组本地MAC值。
[0015] 进一步的,所述FPGA产权保护模块将加密芯片模块产生的MAC值与本地MAC值进行比较认证的方法是:
[0016] FPGA产权保护模块将加密芯片模块产生的MAC值与所述计算获得的对应多组本地MAC值进行比较,若有某一组本地MAC值与加密芯片模块产生的MAC值相等,则认证成功;若所有的本地MAC值与加密芯片模块产生的MAC值都不相等,则未成功认证。
[0017] 进一步的,所述FPGA模块在认证成功后向加密芯片模块输出权限控制字的方法是:
[0018] FPGA模块在认证成功后向加密芯片模块输出与加密芯片模块产生的MAC相等的本地MAC对应的权限控制字。
[0019] 进一步的,所述FPGA产权保护模块若未成功认证,则继续进行迭代认证的方法是:
[0020] 首先对各个权限控制字的迭代认证次数加1,判断各个权限控制字当前的迭代次数是否超过该控制字对应的授权次数,若未超过,则继续采用该权限控制字与对应的新密钥根据密钥算法迭代出下一级密钥,将下一级密钥作为新密钥与随机数根据加密算法计算获得本地新的MAC值,并将加密芯片模块产生的MAC值与本地新的MAC值进行比较认证,如此循环,直至认证成功或者所有的权限控制字当前的迭代次数均超过对应的授权次数而导致本次认证失败。
[0021] 此外,本发明还提供了一种FPGA产权保护方法,其包括以下步骤:
[0022] A.系统上电,FPGA产权保护模块产生随机数并发送给加密芯片模块;
[0023] B.加密芯片模块获取随机数并结合该随机数及存储的动态密钥根据加密算法计算获得MAC值,发送该MAC值给FPGA产权保护模块;
[0024] C.FPGA产权保护模块采用权限控制字结合原始密钥根据密钥算法产生新密钥,并将产生的新密钥与随机数根据加密算法计算获得本地MAC值;
[0025] D.FPGA产权保护模块将本地MAC值与从加密芯片模块获得的MAC值进行比较认证,若认证成功,则进入步骤E,否则进入步骤G;
[0026] E.FPGA产权保护模块向加密芯片模块输出权限控制字;
[0027] F.加密芯片模块结合该权限控制字及存储的动态密钥根据密钥算法产生新的动态密钥,并以所述新的动态密钥替换存储的动态密钥,本次认证流程结束;
[0028] G.对该权限控制字的迭代次数加1;判断该权限控制字的迭代次数是否超过授权次数,若未超过,则进入步骤H,若超过,则认证失败,本次认证流程结束;
[0029] H.采用权限控制字与新密钥根据密钥算法迭代出下一级密钥,将下一级密钥作为新密钥与随机数根据加密算法计算获得本地新的MAC值,返回步骤D。
[0030] 进一步的,步骤C中,FPGA产权保护模块采用多个权限控制字结合原始密钥根据密钥算法产生对应的多个新密钥,并将产生的多个新密钥分别与随机数根据加密算法计算获得对应的多组本地MAC值。
[0031] 进一步的,步骤D中,FPGA产权保护模块将本地MAC值与从加密芯片模块获得的MAC值进行比较认证的方法是:
[0032] FPGA产权保护模块将加密芯片模块产生的MAC值与所述计算获得的对应多组本地MAC值进行比较,若有某一组本地MAC值与加密芯片模块产生的MAC值相等,则认证成功,进入步骤E;若所有的本地MAC值与加密芯片模块产生的MAC值都不相等,则未成功认证,进入步骤G。
[0033] 进一步的,步骤E中,所述FPGA模块在认证成功后向加密芯片模块输出权限控制字的方法是:
[0034] FPGA模块在认证成功后向加密芯片模块输出与加密芯片模块产生的MAC相等的本地MAC对应的权限控制字。
[0035] 进一步的,步骤G中,当所有的权限控制字的迭代次数均超过对应的授权次数时,则认证失败,本次认证流程结束。
[0036] 本发明的有益效果是:
[0037] 1、本发明通过对原始密钥加入附加信息并进行迭代产生新密钥的方式巧妙的将附加信息(功能权限控制字)及FPGA程序运行次数存储到了新产生的密钥中,对应FPGA程序只需存有原始密钥即可实现对新密钥存储信息的读取,进而指导FPGA程序对功能权限及授权次数进行判定和控制。
[0038] 2、本发明迭代算法中的授权次数及芯片中的动态密钥共同决定了FPGA程序的剩余可运行次数;每当系统认证成功一次,FPGA控制加密芯片模块内动态密钥进行一次迭代更新,当加密芯片模块内动态密钥较FPGA中原始密钥迭代次数超过授权次数后,当前环境转为非授权环境。因此,对同样的FPGA程序只需使用写入不同动态密钥的加密芯片模块即可实现授权次数控制。权限控制字的存在则使得设计者对FPGA程序的权限功能配置成为可能。
[0039] 3、本发明填补了FPGA产权保护相关应用对授权次数控制的空白,并为设计者提供了更加灵活的FPGA产权保护方案。

附图说明

[0040] 图1为传统技术中FPGA产权保护方案原理图;
[0041] 图2为本发明实施例的FPGA产权保护方法流程图。

具体实施方式

[0042] 本发明旨在提出一种FPGA产权保护方法及系统,解决传统技术中存在的无法支持设计者对FPGA内部功能的权限配置和对不同用户进行授权次数控制的问题。在本发明中,始终将权限控制字作为附加信息与原始密钥经过密钥算法存储到了新密钥中,对应FPGA程序只需存有原始密钥即可实现对新密钥存储信息的读取,从而实现设计者对FPGA功能权限的配置,另一方面,本发明还实现了对FPGA剩余可运行次数的控制:每当系统认证成功一次,FPGA控制加密芯片模块内动态密钥进行一次迭代更新,当加密芯片模块内动态密钥较FPGA中原始密钥迭代次数超过授权次数后,当前环境转为非授权环境。
[0043] 下面结合附图及实施例对本发明的方案作更进一步的描述:
[0044] 如图2所示,本发明实施例中的FPGA产权保护系统由FPGA产权保护模块及加密芯片模块两部分组成,下面将分别对这两部分的工作步骤进行说明:
[0045] FPGA产权保护模块具体操作步骤:
[0046] 步骤1:系统上电后,FPGA产权保护模块启动,FPGA程序产生随机数并将随机数发送给加密芯片模块。
[0047] 步骤2:FPGA产权保护模块等待一定时间后从加密芯片模块读取MAC值。
[0048] 步骤3:FPGA产权保护模块完成迭代认证过程,具体可细分为如下几个步骤:
[0049] 步骤3-01:FPGA产权保护模块使用权限控制字1~n(数目由使用场合决定)及原始密钥根据密钥算法得到新密钥1~n。
[0050] 步骤3-02:FPGA产权保护模块将新密钥分别与随机数根据加密算法计算得到本地MAC1~MACn。
[0051] 步骤3-03:FPGA产权保护模块将步骤3-02产生的本地MAC1~MACn值与步骤2中从加密芯片模块接收到的MAC值相对比;若有某一组MACi与从加密芯片模块得到的MAC值相等,则说明认证成功,FPGA程序跳转到步骤4-01;若所有组MAC值不相等,则进入步骤3-04。
[0052] 步骤3-04:FPGA产权保护模块各组迭代次数加1。
[0053] 步骤3-05:FPGA产权保护模块判断各组迭代次数是否超出授权次数。若迭代次数未超出授权次数,进入步骤3-06;若迭代次数超出授权次数则进入步骤4-02。
[0054] 步骤3-06:FPGA产权保护模块使用权限控制字1~n及步骤3-01计算出的新密钥根据密钥算法进一步迭代出新的密钥。FPGA程序随后重复执行步骤3-02至步骤3-06,直到认证成功或迭代次数超出授权次数。
[0055] 步骤4-01:认证成功,说明当前环境为授权环境,FPGA程序输出权限控制字,并将权限控制字输送到加密芯片模块。FPGA程序跳转到步骤5-01。
[0056] 步骤4-02:等待各权限控制字迭代次数均超出授权次数,若有超出,FPGA程序跳转到步骤5-02;否则继续等待。
[0057] 步骤5-01:FPGA进入正常工作状态并使用得到的权限控制字对程序进行功能配置。FPGA产权保护模块认证周期完成。
[0058] 步骤5-02:若各权限控制字迭代次数均超出授权次数,说明认证失败,当前环境非授权环境,FPGA不进入正常工作状态。FPGA产权保护模块认证周期完成。
[0059] 加密芯片模块具体操作步骤:
[0060] 步骤1:加密芯片模块启动,进入等待触发状态,等待接收FPGA发送的随机数。
[0061] 步骤2:加密芯片模块接收到随机数后根据随机数及存储的动态密钥根据加密算法计算得到MAC值,并将其发送给FPGA程序。
[0062] 步骤3:加密芯片模块等待接收FPGA发送的权限控制字及新密钥产生控制信号。
[0063] 步骤4:接收到FPGA发来的权限控制字后,加密芯片模块根据权限控制字及原的动态密钥根据密钥算法产生并替换原动态密钥。
[0064] 步骤5:加密芯片模块认证周期完成。
[0065] 本发明方案的关键之处在于:FPGA程序中若迭代次数不超出授权次数则使用新密钥及权限控制字根据密钥算法得到下一级密钥,下一级密钥同样与随机数结合根据加密算法计算得到新的MAC值,进而开始下一轮MAC值比较。如此循环反复直到某一轮认证成功或迭代次数超出授权次数而认证失败。
[0066] 本方法的认证时间取决于授权次数、功能权限控制字的数量及FPGA具体算法,如需减少认证匹配时间则可在FPGA中使用并行流水方式并通过预先存储密钥列表的方式解决。