一种基于CPLD的SRAM工艺FPGA的加密方法与流程

文档序号:11147348阅读:869来源:国知局
一种基于CPLD的SRAM工艺FPGA的加密方法与制造工艺

本发明涉及数字逻辑技术,尤其涉及基于CPLD的SRAM工艺FPGA的加密方法的应用。



背景技术:

近年来,在现代电子系统设计中,基于SRAM工艺的FPGA以其自身速度快、密度高、价格低和灵活在线可升级的优势正在广泛被使用。由于大规模高密度可编程逻辑器件多采用SRAM工艺,要求每次上电对FPGA器件进行重新配置,这就使得可以通过监视配置的位数据流,进行克隆设计。因此,在关键、核心设备中,必须采用加密技术来保护设计者的知识产权,所以FPGA的安全问题是设计者必须考虑的问题。在传统的基于CPLD的SRAM工艺FPGA的加密方法中,随机序列的生成器位于FPGA内部,由用户自行设计,这样以来,每次上电加载程序的过程中,随机序列生成器的设计部分暴露在保护模块外部,很容易被推测出来,同时,为了提高产品的安全性,必须选择更加复杂的随机序列生成器的方案,这样不但增加了FPGA内部设计资源的利用,而且还给用户设计部分带来一定的复杂度。



技术实现要素:

为了克服现有技术的不足,本发明提供一种基于CPLD的SRAM工艺FPGA的加密方法,能够提高设计的安全性,并且减少FPGA设计部分逻辑资源的占用。

本发明解决其技术问题所采用的技术方案包括以下步骤:

1)将随机数生成器模块、发送预处理模块、减法器1、发送MAC模块、128位用户特征码、128位内置密钥以及SHA-1加密模块配置进CPLD内部;将验证模块、与CPLD内部相同的128位内置密钥、128位用户特征码和SHA-1加密模块配置进FPGA内部;FPGA的用户设计部分处于等待状态;

2)随机数生成器由三个长为n的m序列SR1、SR2和SR3交互钟控组成,32≥n≥8,SR1的输出作为SR2和SR3的钟控序列,SR2和SR3的输出相与后作为SR1的钟控序列,彼此互相钟控产生输出;

3)随机数生成器的输出在发送预处理模块中经过一个串并转换电路转变成长度为256位的分组序列,分组序列经过一个QPP交织器,交织长度为256,输出随机序列;

4)发送预处理模块的输出分别发送到FPGA和CPLD的加密模块;256位长的随机序列、128位内置密钥以及128用户特征码串行排列组成512位的待加密序列,输入到SHA-1加密模块后,CPLD和FPGA内部的SHA-1加密模块各自产生一个MAC序列;减法器1由设定数字开始计数,在减法器1计零前CPLD内部SHA-1加密模块产生的MAC序列发往FPGA的验证模块进行验证;

5)FPGA的验证模块包括一个4位寄存器、一个4位的减法器2和一个比较器,4位寄存器的初始值为随机序列的前4位;减法器2计零时进行一次CPLD和FPGA内部的SHA-1加密模块各自产生的MAC序列的比较,比较结果相等时FPGA的用户设计部分开始工作,否则FPGA的用户设计部分继续处于等待状态,同时减法器1的计数减1;判断减法器1的被减数是否为零,若不为零,则进入下一次验证,否则,停止验证工作,操作非法。

本发明的有益效果是:在不增加FPGA设计部分复杂度的情况下,使得基于CPLD的SRAM工艺FPGA的加密方法更有效,保密性能更好,使得对成本敏感的产品的安全性能得到改善。

本发明提出了一种新的基于CPLD的SRAM工艺FPGA的加密方案,将随机序列生成器部分置于CPLD内部,充分利用CPLD的资源,将其专用于加密方案的设计,这样不但节省了FPGA内部逻辑资源的使用,而且还降低了设计人员的设计复杂度;另外,本发明的加密方案加入了合法用户的特征码,只要是持有设计者授权下的特征码的合法用户,均可以使用。同时,在CPLD和FPGA之间数据流的传输过程中,采取了随机交织与验证时间间隔随机化的方法,进一步提高了设计被破解的难度,特别适合于对成本比较敏感的场合的应用。

附图说明

图1是本发明的系统方案图。

图2是本发明的随机序列生成器模型。

图3是本发明的发送预处理模块原理图。

图4是验证处理原理图。

具体实施方式

下面结合附图和实施例对本发明进一步说明,本发明包括但不仅限于下述实施例。

本发明的技术方案描述如下:

1)首先,将随机数生成器模块、发送预处理模块、减法器1和发送MAC模块、代表用户身份信息的128位特征码、128位内置密钥以及采用SHA-1算法的加密模块配置进CPLD内部。然后,将验证模块、用户设计以及与CPLD内部相同的128位内置密钥、特征码和采用SHA-1算法的加密模块配置进FPGA内部。此时FPGA内的用户设计部分处于等待状态。

2)随机序列生成器由SR1,SR2和SR3三个长为n(32≥n≥8)的m序列交互钟控组成,SR1的输出作为SR2和SR3的钟控序列;反过来,SR2和SR3的输出作为SR1的钟控序列,彼此互相钟控产生输出。

3)随机序列生成器的输出经过一个串并转换电路转变成长度为256位的分组序列,此时分组序列经过一个QPP(二次置换多项式)交织器,交织长度为256。

4)经过随机交织后的序列分别发送到FPGA内部和CPLD的加密模块,256位长的随机序列和128位内置密钥以及128特征码,串行排列组成512位的待加密序列,输入到SHA-1的加密模块后,CPLD和FPGA内部会各自产生一个MAC序列。减法器1被减数由设计者自定义大小,控制着CPLD内部产生的MAC是否发往FPGA内部进行验证,若减法器1的被减数非零,则发送,否则不发送。

5)FPGA内部的验证模块由一个4位寄存器、一个4位的减法器2和一个比较器组成。4位寄存器的初始值随机序列的前4位;减法器2的被减数为0时进行一次比较,否则不进行比较;比较器比较结果相等时置Enable信号和ID_OK为有效值1,FPGA用户设计开始工作,否则置ID_OK为无效置0,FPGA设计继续处于等待状态,同时CPLD内部减法器1会做一次减1的运算,然后判断减法器1的被减数若为非零,则进入下一次验证,否则,停止验证工作,操作非法。

如图1所示,本发明的实施例包括以下步骤:

(1)首先,将随机数生成器模块、发送预处理模块、减法器1和发送MAC模块、代表用户身份信息的128位特征码、128位内置密钥以及采用SHA-1算法的加密模块配置进CPLD内部。然后,将验证模块、用户设计以及与CPLD内部相同的128位内置密钥、特征码和采用SHA-1算法的加密模块配置进FPGA内部。此时FPGA内的用户设计部分并不能立即开始工作,而是处于等待状态。

(2)随机序列生成器由SR1,SR2和SR3三个长为16的m序列交互钟控组成,SR1的输出序列为z(t),SR1的第一级输出a1作为SR2和SR3的钟控序列,SR2和SR3的输出交错构成的序列c(t)又作为SR1的钟控序列,系统的输出序列U(t)=c(t)+z(t)。系统上电后,若SR1的第一级输出a1为1,则控制SR2向前移位一次,SR2的输出构成c(t)的一位;若SR1的第一级输出a1为0,则控制SR3向前移位一次,SR3的输出构成c(t)的另一位;依次进行下去。同时序列c(t)作为SR1的控制序列,若此时c(t)=1,则SR1向前移位一次,输出作为z(t)的一位,若此时c(t)=0,则SR1状态不变,重复输出作为z(t)的另一位;依次进行下去。

(3)随机序列生成器的输出U(t)经过一个串并转换电路后,转变成长度为256位的分组序列,此时分组序列经过一个QPP(二次置换多项式)交织器,其交织多项式为

π(i)=(f1·i+f2·i2)mod N

其中i表示交织器前的位置,π(i)为交织后的位置。f1和f2的选择取决于交织长度N,在这里f1和f2取值分别为79和160,N取值为256。

(4)经过随机交织后的序列同时发送到CPLD内部的加密模块和FPGA内部的加密模块,256位长的随机序列和128位内置密钥以及128特征码,串行排列组成16个字长512位的待加密序列,输入到SHA-1的加密模块后,CPLD和FPGA内部会各自产生一个MAC序列,CPLD产生的MAC序列是否发送受控于减法器1中被减数的值,若被减数值非0,则将CPLD内产生的MAC发送到FPGA内部进行验证;否则,停止验证工作。

(5)FPGA内部的验证模块由一个4位寄存器、一个4位的减法器2和比较器组成。4位寄存器的初始值为接收自CPLD送来的随机序列的前4位;减法器2控制着比较器什么时候进行一次比较;比较器比较结果相等时置Enable信号和ID_OK为有效值1,否则置为无效置0。当进行一次验证前,先将寄存器的值赋给减法器2作减1的递减运算,结果为0进行控制比较器进行比较,这样就可以完成验证时间间隔的随机化。如果验证成功,则反馈给CPLD一个验证成功的信号ID_OK并置高电平,同时使能FPGA内部的用户设计;如果验证失败,置ID_OK信号为低电平,此时CPLD内部的减法器1会做一次减1的运算,重新进入下一次的验证过程,直至减法器1的被减数为0,则CPLD停止给FPGA发送验证MAC,认为FPGA验证属于非法操作,这样就可以防止设计被盗窃者进行重复试验工作。

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