一种具有多个硬件IP核的芯片防护方法与流程

文档序号:17235574发布日期:2019-03-30 08:20阅读:309来源:国知局

本发明涉及一种,尤其是涉及一种具有多个硬件ip核的芯片防护方法。



背景技术:

随着超大规模集成电路和信息技术的发展,软/硬件系统已经获得广泛应用,而全球化的供应链导致半导体芯片受到多重威胁,例如成员信息泄漏、暴力攻击、旁道攻击、反向工程和ip盗版等。现有的典型的硬件ip核防护方法通常采用密钥匹配硬件ip核的加密方式,其原理是在设计过程中在硬件ip核内预存一组16/32/64位的特定序列,并设计密钥匹配检测电路,只有当芯片的输入密钥和硬件ip核内部的特定序列相等时,硬件ip核才能正常工作,以此实现对硬件ip核的防护。

然而这种简典型的硬件ip核防护方法中,密钥匹配结果只有对与错,输入密钥正确则解锁全部硬件ip核,输入密钥错误则所有硬件ip核都不可用,对于具有多个(至少两个)硬件ip核的芯片功能解锁不够灵活,并且简单密钥匹配方法主要针对整体芯片的防护,但是内部各个独立硬件ip核容易被旁道攻击和芯片探针等方式攻击,防护性能较低。



技术实现要素:

本发明所要解决的技术问题是提供一种灵活性好,且防护性能高的具有多个硬件ip核的芯片防护方法。

本发明解决上述技术问题所采用的技术方案为:一种具有多个硬件ip核的芯片防护方法,包括加密过程和解密过程,所述的加密过程中对每个硬件ip核分别加密,所述的解密过程中对每个硬件ip核分别解密。

所述的加密过程具体包括以下步骤:

①将芯片包括的硬件ip核的数量记为n,根据硬件ip核设计者设定的各硬件ip核的权重,按照权重从大到小的顺序将这些硬件ip核进行排序,权重最大的硬件ip核排在第1个,权重最小的硬件ip核排在第n个,将第i个硬件ip核的序号记为ipi,i=1,2,…,n;

②在n个硬件ip核中分别预设一个特征矢量,每个特征矢量分别包括n+1个4位二进制数,将第i个硬件ip核中预设的特征矢量记为kipi,kipi=[ai1ai2…ainai(n+1)],其中aij为特征矢量kipi中第j个4位二进制数,j=1,2,…,n+1;

③采用n个硬件ip核的特征矢量构建一个正交混淆矩阵,将该正交混淆矩阵o记为o,其中o的表达式为:

④设定kipi的简化特征矢量变量,将其记为k'ipi,对k'ipi以及正交混淆矩阵o分别依次进行首次n-1轮更新,具体如下:

第1轮更新过程为:采用公式k'ipa1=kipa1-kip1×a(a1)1÷a11对k'ipa1进行第1次更新,采用k'ipa1更新后的值对kipa1的值进行更新,然后再对正交混淆矩阵o进行更新,使其kipa1为最新值,a1=2—>n,表示a1从2开始依次向上取值直至a1等于n,每次计算时公式中的kipa1、kip1、a(a1)1和a11均为其最新值;

第2轮更新过程为:采用公式k'ipa2=kipa2-kip2×a(a2)2÷a22对k'ipa2进行第2次更新,采用k'ipa2更新后的值对kipa2的值进行更新,然后再对正交混淆矩阵o进行更新,使其kipa2为最新值,a2=3—>n,表示a2从3开始依次向上取值直至a2等于n,每次计算时公式中的kipa2、kip2、a(a2)2和a22均为其最新值;

第3轮更新过程为:采用公式k'ipa3=kipa3-kip3×a(a3)3÷a33对k'ipc进行第3次更新,采用k'ipa3更新后的值对kipa3进行更新,然后再对正交混淆矩阵o进行更新,使其kipa3为最新值,a3=4—>n,表示a3从4开始依次向上取值直至a3等于n,每次计算时公式中的kipa3、kip3、a(a3)3和a33均为其最新值;

以此类推;

第n-2轮更新过程为:采用公式k'ipa(n-2)=kipa(n-2)-kip(n-2)×a[a(n-2)](n-2)÷a(n-2)(n-2)对k'ipa(n-2)进行第n-2次更新,采用k'ipa(n-2)更新后的值对kipa(n-2)进行更新,然后再对正交混淆矩阵o进行更新,使其kipa(n-2)为最新值,a(n-2)=(n-1)—>n,表示a(n-2)从n-1开始依次向上取值直至a(n-2)等于n,每次计算时公式中的kipa(n-2)、kip(n-2)、a[a(n-2)](n-2)和a(n-2)(n-2)均为其最新值;

第n-1轮更新过程为:采用公式k'ipa(n-1)=kipa(n-1)-kip(n-1)×a[a(n-1)](n-1)÷a(n-1)(n-1)对ki'pa(n-1)进行第n-1次更新,采用k'ipa(n-1)更新后的值对kipa(n-1)的值进行更新,然后再对正交混淆矩阵o进行更新,使其kipa(n-1)为最新值,a(n-1)=n,计算时公式中的kipa(n-1)、kip(n-1)、a[a(n-1)](n-1)和a(n-1)(n-1)均为其最新值;

⑤对k'ipi以及正交混淆矩阵o分别依次进行再次n-1轮更新,具体如下:

第1轮更新过程为:采用公式k'ipb1=kipb1-kipn×a(b1)n÷ann对k'ipb1进行第b1次更新,采用k'ipb1更新后的值对kipb1进行更新,然后再对正交混淆矩阵o进行更新,使其kipb1为最新值,b1=n-1—>1,表示b1从n-1开始依次向下取值直至b1等于1,每次计算时公式中的kipb1、kipn、a(b1)n和ann均为其最新值;

第2轮更新过程为:采用公式k'ipb2=kipb2-kip(n-1)×a(b2)(n-1)÷a(n-1)(n-1)对k'ipb2进行第b2+1次更新,采用k'ipb2更新后的值对kipb2的值进行更新,然后再对正交混淆矩阵o进行更新,使其kipb2为最新值,b2=n-2—>1,表示b2从n-2开始依次向下取值直至b2等于1,每次计算时公式中的kipb2、kip(n-1)、a(b2)(n-1)和a(n-1)(n-1)均为其最新值;

第3轮更新过程为:采用公式k'ipb3=kipb3-kip(n-2)×a(b3)(n-2)÷a(n-2)(n-2)对k'ipb3进行第b3+2次更新,采用k'ipb3更新后的值对kipb3的值进行更新,然后再对正交混淆矩阵o进行更新,使其kipb3为最新值,b3=n-3—>1,表示b3从n-3开始依次向下取值直至b3等于1,每次计算时公式中的kipb3、kip(n-2)、a(b3)(n-2)和a(n-2)(n-2)均为其最新值;

以此类推;

第n-2轮更新过程为:采用公式k'ipb(n-2)=kipb(n-2)-kip3×a[b(n-2)]3÷a33对k'ipb(n-2)进行第b(n-2)+(n-3)次更新,并采用k'ipb(n-2)更新后的值对kipb(n-2)的值进行更新,然后再对正交混淆矩阵o进行更新,使其kipb(n-2)为最新值,b(n-2)=2—>1,表示b(n-2)从2开始依次向下取值直至b(n-2)等于1,每次计算时公式中的kipb(n-2)、kip3、a[b(n-2)]3和a33均为其最新值;

第n-1轮更新过程为:采用公式k'ipb(n-1)=kipb(n-1)-kip2×a[b(n-1)]2÷a22对k'ipb(n-1)进行第b(n-1)+(n-2)次更新,并采用k'ipb(n-1)更新后的值对kipb(n-1)的值进行更新,然后再对正交混淆矩阵o进行更新,使其kipb(n-1)为最新值,b(n-1)=1,计算时公式中的kipb(n-1)、kip2、a[b(n-1)]2和a22均为其最新值;

⑥经过步骤⑤中两次n-1轮更新后,正交混淆矩阵o的表达式为:

⑦加密过程结束。该加密过程中通过在各硬件ip核中预留特征矢量,然后采用预留的特征矢量计算生成密钥,避免在硬件设计中直接暴露密钥,采用隐式密钥的加密方式,避免出现由设计者带来的密钥信息泄露问题,保障硬件安全;在计算密钥之前通过2n-2轮计算化简正交混淆矩阵,产生尽可能多的0,降低矩阵乘法的硬件开销。

所述的解密过程具体包括以下步骤:

①当外部向芯片内输入(n+1)×8位二进制密钥时,将该(n+1)×8位密钥记为k,将k从低位开始每8位按顺序进行划分,划分得到n+1个8位二进制数,采用得到的n+1个8位二进制数构建一个(n+1)×1矩阵,将该矩阵记为kuser,kuser=[k1,k2,…,kn,kn+1]t,上标t表示矩阵的转置,kh为划分得到的第h个8位二进制数,h=1,2,…,n+1;

②计算o与kuser的乘积,得到n×1矩阵,将该矩阵记为p,ps表示矩阵p中第s行的元素,s=1,2,…,n,矩阵p的表达式为:

③判定ps是否等于0,如果等于0,则第s个硬件ip核的解锁秘钥正确,将第s个硬件ip核解锁,如果不等于0,则第s个硬件ip核的解锁秘钥不正确,不解锁第s个硬件ip核。该解密过程中需要完成n次乘加计算,相同密钥位数下延长n倍芯片破解时间,增加硬件攻击者的破解难度。

与现有技术相比,本发明的优点在于通过在加密过程中对每个硬件ip核分别加密,在解密过程中对每个硬件ip核分别解密,当某个硬件ip核的解密秘钥正确时才能实现该硬件ip核的解锁,由此可以对芯片内每个硬件ip核独立的进行防护,避免芯片内部各个独立硬件ip核被旁道攻击和芯片探针等方式攻击,灵活性好,且防护性能高。

具体实施方式

以下结合实施例对本发明作进一步详细描述。

实施例:一种具有多个硬件ip核的芯片防护方法,包括加密过程和解密过程,加密过程中对每个硬件ip核分别加密,解密过程中对每个硬件ip核分别解密。

本实施例中,加密过程具体包括以下步骤:

①将芯片包括的硬件ip核的数量记为n,根据硬件ip核设计者设定的各硬件ip核的权重,按照权重从大到小的顺序将这些硬件ip核进行排序,权重最大的硬件ip核排在第1个,权重最小的硬件ip核排在第n个,将第i个硬件ip核的序号记为ipi,i=1,2,…,n;

②在n个硬件ip核中分别预设一个特征矢量,每个特征矢量分别包括n+1个4位二进制数,将第i个硬件ip核中预设的特征矢量记为kipi,kipi=[ai1ai2…ainai(n+1)],其中aij为特征矢量kipi中第j个4位二进制数,j=1,2,…,n+1;

③采用n个硬件ip核的特征矢量构建一个正交混淆矩阵,将该正交混淆矩阵o记为o,其中o的表达式为:

④设定kipi的简化特征矢量变量,将其记为k'ipi,对k'ipi以及正交混淆矩阵o分别依次进行首次n-1轮更新,具体如下:

第1轮更新过程为:采用公式k'ipa1=kipa1-kip1×a(a1)1÷a11对k'ipa1进行第1次更新,采用k'ipa1更新后的值对kipa1的值进行更新,然后再对正交混淆矩阵o进行更新,使其kipa1为最新值,a1=2—>n,表示a1从2开始依次向上取值直至a1等于n,每次计算时公式中的kipa1、kip1、a(a1)1和a11均为其最新值;

第2轮更新过程为:采用公式k'ipa2=kipa2-kip2×a(a2)2÷a22对k'ipa2进行第2次更新,采用k'ipa2更新后的值对kipa2的值进行更新,然后再对正交混淆矩阵o进行更新,使其kipa2为最新值,a2=3—>n,表示a2从3开始依次向上取值直至a2等于n,每次计算时公式中的kipa2、kip2、a(a2)2和a22均为其最新值;

第3轮更新过程为:采用公式k'ipa3=kipa3-kip3×a(a3)3÷a33对k'ipc进行第3次更新,采用k'ipa3更新后的值对kipa3进行更新,然后再对正交混淆矩阵o进行更新,使其kipa3为最新值,a3=4—>n,表示a3从4开始依次向上取值直至a3等于n,每次计算时公式中的kipa3、kip3、a(a3)3和a33均为其最新值;

以此类推;

第n-2轮更新过程为:采用公式k'ipa(n-2)=kipa(n-2)-kip(n-2)×a[a(n-2)](n-2)÷a(n-2)(n-2)对k'ipa(n-2)进行第n-2次更新,采用k'ipa(n-2)更新后的值对kipa(n-2)进行更新,然后再对正交混淆矩阵o进行更新,使其kipa(n-2)为最新值,a(n-2)=(n-1)—>n,表示a(n-2)从n-1开始依次向上取值直至a(n-2)等于n,每次计算时公式中的kipa(n-2)、kip(n-2)、a[a(n-2)](n-2)和a(n-2)(n-2)均为其最新值;

第n-1轮更新过程为:采用公式k'ipa(n-1)=kipa(n-1)-kip(n-1)×a[a(n-1)](n-1)÷a(n-1)(n-1)对k'ipa(n-1)进行第n-1次更新,采用k'ipa(n-1)更新后的值对kipa(n-1)的值进行更新,然后再对正交混淆矩阵o进行更新,使其kipa(n-1)为最新值,a(n-1)=n,计算时公式中的kipa(n-1)、kip(n-1)、a[a(n-1)](n-1)和a(n-1)(n-1)均为其最新值;

⑤对k'ipi以及正交混淆矩阵o分别依次进行再次n-1轮更新,具体如下:

第1轮更新过程为:采用公式k'ipb1=kipb1-kipn×a(b1)n÷ann对k'ipb1进行第b1次更新,采用k'ipb1更新后的值对kipb1进行更新,然后再对正交混淆矩阵o进行更新,使其kipb1为最新值,b1=n-1—>1,表示b1从n-1开始依次向下取值直至b1等于1,每次计算时公式中的kipb1、kipn、a(b1)n和ann均为其最新值;

第2轮更新过程为:采用公式k'ipb2=kipb2-kip(n-1)×a(b2)(n-1)÷a(n-1)(n-1)对k'ipb2进行第b2+1次更新,采用k'ipb2更新后的值对kipb2的值进行更新,然后再对正交混淆矩阵o进行更新,使其kipb2为最新值,b2=n-2—>1,表示b2从n-2开始依次向下取值直至b2等于1,每次计算时公式中的kipb2、kip(n-1)、a(b2)(n-1)和a(n-1)(n-1)均为其最新值;

第3轮更新过程为:采用公式k'ipb3=kipb3-kip(n-2)×a(b3)(n-2)÷a(n-2)(n-2)对k'ipb3进行第b3+2次更新,采用k'ipb3更新后的值对kipb3的值进行更新,然后再对正交混淆矩阵o进行更新,使其kipb3为最新值,b3=n-3—>1,表示b3从n-3开始依次向下取值直至b3等于1,每次计算时公式中的kipb3、kip(n-2)、a(b3)(n-2)和a(n-2)(n-2)均为其最新值;

以此类推;

第n-2轮更新过程为:采用公式k'ipb(n-2)=kipb(n-2)-kip3×a[b(n-2)]3÷a33对k'ipb(n-2)进行第b(n-2)+(n-3)次更新,并采用k'ipb(n-2)更新后的值对kipb(n-2)的值进行更新,然后再对正交混淆矩阵o进行更新,使其kipb(n-2)为最新值,b(n-2)=2—>1,表示b(n-2)从2开始依次向下取值直至b(n-2)等于1,每次计算时公式中的kipb(n-2)、kip3、a[b(n-2)]3和a33均为其最新值;

第n-1轮更新过程为:采用公式k'ipb(n-1)=kipb(n-1)-kip2×a[b(n-1)]2÷a22对k'ipb(n-1)进行第b(n-1)+(n-2)次更新,并采用k'ipb(n-1)更新后的值对kipb(n-1)的值进行更新,然后再对正交混淆矩阵o进行更新,使其kipb(n-1)为最新值,b(n-1)=1,计算时公式中的kipb(n-1)、kip2、a[b(n-1)]2和a22均为其最新值;

⑥经过步骤⑤中两次n-1轮更新后,正交混淆矩阵o的表达式为:

⑦加密过程结束。

本实施例中,解密过程具体包括以下步骤:

①当外部向芯片内输入(n+1)×8位二进制密钥时,将该(n+1)×8位密钥记为k,将k从低位开始每8位按顺序进行划分,划分得到n+1个8位二进制数,采用得到的n+1个8位二进制数构建一个(n+1)×1矩阵,将该矩阵记为kuser,kuser=[k1,k2,…,kn,kn+1]t,上标t表示矩阵的转置,kh为划分得到的第h个8位二进制数,h=1,2,…,n+1;

②计算o与kuser的乘积,得到n×1矩阵,将该矩阵记为p,ps表示矩阵p中第s行的元素,s=1,2,…,n,矩阵p的表达式为:

③判定ps是否等于0,如果等于0,则第s个硬件ip核的解锁秘钥正确,将第s个硬件ip核解锁,如果不等于0,则第s个硬件ip核的解锁秘钥不正确,不解锁第s个硬件ip核。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1