在数字电路设计领域中,FPGA可作为一种原型工具.用以解决在ASIC设计中,因重复设计而引起的一次性开支(Non Recuuring Engineering,NRE)过高.以及上市时间(Time To Market,TIM)过长等问题。
在大规模FPGA的设计中,基于可复用IP核的设计方法越来越为设计者所接受。然而,如何保证FPGA设计中的IP核不被非法扩散,却又成为人们极为关注的问题。因此提出了一种基于FPGA的IP核保护方法,通过这种方法,可以将用户的身份信息作为水印嵌人到FPGA中,从而达到标识IP核拥有者身份的目的。
嵌入原理
大多数基于SRAM工艺的FPGA中。都包含有可编程逻辑单元(Configurable Logic Block,CLB)、输人输出单元(Input/Output Block。IOB)和可编程布线资源(Configurable Routing Resource,CRR),其中CLB通常由触发器(Flip Flop,FF)和查找表(LookUp Table,LUT)构成。文中的设计实现过程,采用XILINX公司SpartanlI系列的XC2SIO0—5PQ2O8C芯片[1]作为验证平台.它包含有6OO个CLB.每个CLB由2个SLICE组成,每个SLICE中包含2个4输人的LUT。
对大多数基于FPGA的设计而言.都含有大量的空闲LUT。每一个n输人的LUT,其本质上是一个2"xl的RAM。可以实现一个n变量的任意组合逻辑。因此,可以通过预先定义的编码规则,将用户的个人信息编码为相应的组合逻辑.然后将该组合逻辑作为水印信息嵌人到空闲的LUT中.借此标识设计者对该设计的所有权。
3 水印信息的嵌入及提取
3.1 生成水印信息
待嵌人的水印信息按以下步骤生成:
① 准备原始用户信息MSG;
② 准备用于加密MSG的密钥KEY;
③ 用“0”对MSG进行补位,使其满足加密算法对长度的需求;
④ 对MSG进行散列运算,得到Ⅳ ;
⑤ 以Ⅳ 为初始向量,KEY为密钥,用指定加密算法对MSG进行CBC模式的加密运算.加密结果WM就是待嵌人的水印信息。
3.2 分组水印信息
在以往的嵌入方法中,每一个未用的LUT位只能嵌入一位水印信息[3】.为了提高信息的嵌入量,以及嵌入信息的隐蔽性,文中以组为单位进行水印信息的嵌入。组的划分过程如下:
3.3 生成嵌入位置
水印信息的嵌入位置按以下步骤生成:
|