本发明属于加密认证技术领域,尤其涉及一种基于fpga的多算法安全加密认证系统及认证方法。
背景技术:
目前,最接近的现有技术:近年来,随着互联网、区块链技术的飞速发展,移动终端设备的广泛使用,人们越来越关注网络安全和信息安全问题。作为防护网络资源的第一道关口,身份认证对信息系统的安全保护具有重要意义。然而,身份认证系统尤其是密码芯片往往成为攻击目标,且攻击手段和方式更是层出不穷。传统的加密认证芯片利用非易失存储器件存储密钥,通过入侵或半入侵等物理攻击手段能够读出其存储的内容,芯片安全性受到极大威胁。
对于加密系统,使用的算法尤为重要,aes、rc5、keccak、sha256算法都为成熟的标准算法。其中,aes(advancedencryptionstandard)算法:
aes是一个分组加解密标准,分组长度为128bit,允许使用三种不同长度的密钥:128bit、192bit和256bit。本发明采用128bit密钥,需要10轮加密操作。先将128bit数据按字节分组排列为4*4矩阵,加密的每一轮都利用替代与混淆对数据分组进行变换,包括4个阶段,分别是:字节替代、行移位、列混淆和轮密钥加。
1.aes的实现步骤:
①字节替换:通过一个非线性的替换函数,根据s盒表(固定映射)用查找表的方式把每个字节替换成对应的字节。
②行位移:第n行里的每个字节都向左循环移动(n-1)格。
③列混淆:列混淆变换是通过矩阵相乘来实现的,经行移位后的状态矩阵左乘固定的矩阵,得到混淆后的状态矩阵。
④轮密钥加:用轮密钥矩阵的第i列和列混淆后的矩阵第i列异或。
2.密钥拓展:
aes首先将初始密钥输入到一个4*4的状态矩阵中,作为扩展密钥数组w的四个初始数据,接着,对w数组扩充40个新列,构成总共44列的扩展密钥数组,新列以如下的递归方式产生:
ⅰ.如果i不是4的倍数:
ⅱ.如果i是4的倍数:
拓展函数t由3部分组成:
a.字循环:将1个字中的4个字节循环左移1个字节;
b.字节代换:对字循环的结果使用s盒进行字节代换;
c.轮常量异或:将前两步的结果同轮常量rcon[j]进行异或,常量轮值表rcon[j]由aes算法标准提供,其中j表示轮数。
rc5算法:
rc5对称加密算法是面向字的参数可变的分组密码算法,三个可变的参数是:分组大小、加密轮数和密钥大小。可表示为rc5-w/r/b,其中w为字长,r为加密轮数,b为密钥字节长度。算法中使用了三种运算:异或、加和循环移位。本发明中字的大小为32bit,加密算法的迭代轮数均为12轮,密钥长度为16字节。rc5算法包括密钥扩展以及加解密,其加密步骤如下:
1.创建密钥组s{s[0],s[1]...s[t-1]},其中t=(2r-1)。
第一步:初始化子密钥s{s[0],s[1]...s[t-1]},用到两个魔术常量pw和qw,对于32位字长,pw=0xb7e15163,qw=0x9e3779b9,初始化过程伪代码为:
s[0]=pw;
fori=1tot-1do
s[i]=s[i-1] qw;
第二步:将密钥由字节数组k{k[0]...k[b-1]}转换成字数组l{l[0],l[1]...l[8b/w-1]},
当使用rc5-32/12/16时,转换关系为:
l[0]={k[3],k[2],k[1],k[0]};
l[1]={k[7],k[6],k[5],k[4]};
l[2]={k[11],k[10],k[9],k[8]};
l[3]={k[15],k[14],k[13],k[12]};
第三步:将初始密钥组s和字数组l混合,获取新密钥数组s{s[0],s[1]...s[t-1]},其伪代码为:
a=b=i=j=0;
do3*max(t,c)times
a=s[i]=(s[i] a b)<<<3;
i=(i 1)mod(t);
b=l[i]=(l[i] a b)<<<(a b);
j=(j 1)mod(c);
2.加密
一次加密运算可处理两个字长的明文,将明文分组划分为a和b,其伪代码如下:
a=a s[0];
b=b s[1];
fori=1tordo
a=((axorb)<<<b) s[2i];
b=((bxora)<<<a) s[2i 1];
keccak算法:
keccak算法是基于海绵结构的杂凑函数,海绵函数中迭代函数f,即为keccak算法的置换函数,表示为keccak–f[b]。其中b称为置换宽度,keccak算法中取值为1600。算法迭代轮数为24,每轮运算中含有5个运算步骤。
24轮迭代运算是keccak算法的核心部分,在已知算法输出位宽的前提下,将输入消息值m经过padding规则处理,生成数据块输入keccak–f[b]函数做24轮迭代处理。每一轮迭代要经过5步置换函数处理,即
在轮函数的压缩处理过程中,每一轮置换函数f都是作用在一个5*5*64的三维状态矩阵之上,第一轮置换中此三维矩阵是由输入值经过填充变为1600比特数据后按顺序填入的,之后由上一轮置换输出值作为下一轮置换输入值。keccak–f[b]的5个运算步骤中前4步是在三维状态矩阵中进行不同方向的行、列、道以及面的变换,从而达到混淆与扩散三维数组的目的。最后一步与前面几步不同,它是在三维数组的第1道上异或一组轮常数,以打破原有的对称性。在24轮中每一轮操作除了最后一步之外全都相同,最后一步异或的轮常数每轮各不相同。5步运算都是基于比特位的逻辑运算,对数据做移位、异或操作,便于硬件实现。
sha256算法:
sha-256为sha-2下的一种算法。sha-2,即安全散列算法2(securehashalgorithm2),是一种密码散列函数算法标准,由美国国家安全局研发,属于sha算法之一。sha-256算法输入报文的最大长度不超过2^64bit,输入按512bit分组进行处理,产生的输出是一个256bit的报文摘要。该算法处理过程包括以下几步:
第一步:附加填充比特。对报文进行填充使报文长度对512取模运算后的余数为448,填充的比特数范围是1到512,填充比特串的最高位为1,其余位为0。
第二步:附加长度值。将用64bit表示的初始报文的位长度附加在第一步的结果之后,使得填充后的总消息长度为512的整数倍。
第三步:初始化缓存。使用一个256bit的缓存来存放该散列函数的中间及最终结果。字长为32bit,该缓存的初始值为:
a=0x6a09e667;b=0xbb67ae85;
c=0x3c6ef372;d=0xa54ff53a;
e=0x510e527f;f=0x9b05688c;
g=0x1f83d9ab;h=0x5be0cd19;
上述8个32bit的哈希初值是对自然数中前8个质数(2,3,5,7,11,13,17,19)的平方根取其小数部分前32bit而来的。
第四步:处理512bit报文分组序列。该算法使用了六种基本逻辑函数:ch、ma、σ0、σ1、s0、s1,由64步迭代运算组成。每步都以256bit缓存值abcdefgh为输入,通过逻辑函数运算更新a的值,其它7个数由上一轮的值移位得到。每步使用一个32bit哈希常数值kt和一个32bitwt,64个常量kt为自然数中前64个质数的立方根取小数部分前32bit而来。前16个wt的值直接由报文分解产生,其余的由逻辑函数s0、s1与之前的wt值迭代运算产生。
第五步:所有的512bit分组处理完毕后,最后一个分组的最后一轮迭代产生的8个哈希缓存值便是此段报文的信息摘要。
综上所述,现有技术存在的问题是:传统加密芯片利用非易失存储器存储密钥,易被攻击读取重要数据;传统加密芯片加密算法单一,可选择性不高;传统加密芯片结构比较复杂,需要配置的参数较多。
解决上述技术问题的难度:对于密钥,要做到只在芯片工作时产生,断电后不保留;密钥产生电路需具备独一无二参数,使其拥有不可克隆的特点;整个加密系统要在保证安全性达标的前提下拥有快速加密的特性,指令集以及参数要尽可能简练。
解决上述技术问题的意义:安全芯片首要任务是保证密钥安全以及算法安全,其次使用多种算法增强灵活性,应用面更广。
针对密钥存储安全问题,可以使用物理不可克隆函数(puf)技术,集成电路芯片在制造中会因工艺偏差而产生物理随机性,提取出与该物体唯一相关的特征量作为密钥。系统上电输入激励产生唯一的响应,断电之后响应消失,密钥数据不会泄露;倘若攻击者获得puf电路,但由于芯片工艺偏差不同,相同的激励也无法获得相同的响应。
环形振荡器物理不可克隆函数(ropuf)是物理不可克隆函数的一种,使用相同类型元器件构成两条振荡环路,由于器件性能些许差异,两条环路振荡频率不相同,利用计数器和比较器便可得到一位响应输出。
一次性可编程(otp)技术可用于存储固定数据。利用熔丝等结构,若编程前输出为逻辑0,则编程后输出为逻辑1,且无法再更改为0。
技术实现要素:
针对现有技术存在的问题,本发明提供了一种基于现场可编辑逻辑门阵列(fpga)的多算法安全加密认证系统及认证方法。
本发明是这样实现的,一种基于fpga的多算法安全加密认证系统,所述基于fpga的多算法安全加密认证系统包括:
fpga端即加密认证芯片,作为从机,与传输模块连接,使用串口通信。fpga内部电路包括串口接收单元(rx)、串口发送单元(tx)、串口输入控制单元(rx_ctrl)、串口输出控制单元(tx_ctrl)、算法控制单元(ip_ctrl)、加密算法ip单元和环形振荡器物理不可克隆函数(ropuf)单元;用于进行加密认证;
传输模块,与fpga端、主机端连接,用于通过串口传输指令及数据;
主机端,与传输模块连接,内部包含aes、rc5、keccak、sha256等加密算法,crc16数据校验算法,随机数产生函数等认证程序,用于加密认证芯片的配置以及验证。
进一步,所述ropuf单元包括:
所述ropuf用于进行初始化,读取xilinxfpga芯片中的dna码,并将读取的dna码后32位作为加密认证芯片的id;同时环形振荡器起振,通过计数器和比较器获得芯片的puf值。
进一步的,所述基于fpga的多算法安全加密认证系统的传输模块在应用中,可直接使用线材连接,也可使用串口蓝牙、rfid等无线传输设备。
进一步的,所述基于fpga的多算法安全加密认证系统的主机部分可使用51单片机、stm32等嵌入式微处理器实现,也可使用pc等通用计算机实现,其作用是从机端配置以及认证,加载相应的程序。
本发明的另一目的在于提供一种应用于所述基于fpga的多算法安全加密认证系统的基于fpga的多算法安全加密认证方法,所述基于fpga的多算法安全加密认证方法包括:
步骤一,主机端读取从机芯片id号,通过映射表得到对应的puf值;
步骤二,主机端确定认证算法,并随机产生256位宽的随机数或由使用者自定义的数据作为明文,将指令、算法选择、明文以及crc校验码通过串口传输模块发送至从机即加密认证芯片;加密认证芯片即从机接收到数据后,先进行crc校验,数据无误则进行指令解析,得到加密方式以及明文数据,否则传回错误报告给主机;
步骤三,从机按相应的算法,利用明文以及自身puf值调用相应算法ip加密计算产生密文c’,并将其加上数据类型描述以及crc校验码通过串口传输模块传回主机;
步骤四,主机端按照明文、算法选择以及该芯片id对应的puf值重新做一遍加密运算得到密文c;
步骤五,主机端对比密文c与c’,若相同则认证通过,否则认证失败。
进一步,步骤一中,所述主机读取芯片id号,主机通过映射表得到对应的puf值包括:
加密认证芯片包含出厂以及认证两种工作模式;
当加密认证芯片处于出厂模式下时,芯片puf值可读;利用主机发送chip-id读取指令,获取芯片id,再发送读取puf寄存器指令,获取该芯片puf值,将id与puf作为一个映射表存储在本机或云服务器中;主机发送芯片模式切换指令烧写一次性可编程(otp)标志位的值,芯片puf值永久性变为不可读状态,芯片进入认证模式;
当加密认证芯片处于认证模式下时,芯片puf值不可读;发送读puf寄存器指令返回0值;主机通过发送读chip-id指令获取芯片id,由存储的映射表得到芯片puf的值。
进一步,步骤二中,所述主机确定认证算法包括:所述主机端可确定多种不同的加密算法进行认证;
所述加密算法包括但不限于aes加密算法、rc5对称加密算法、keccak算法以及sha-256算法。
本发明的另一目的在于提供一种存储在计算机可读介质上的计算机程序产品,包括计算机可读程序,供于电子装置上执行时,提供用户输入接口以实施基于fpga的多算法安全加密认证方法。
本发明的另一目的在于提供一种计算机可读存储介质,储存有指令,当所述指令在计算机上运行时,使得计算机执行基于fpga的多算法安全加密认证方法。
本发明的另一目的在于提供一种执行基于fpga的多算法安全加密认证方法的加密认证芯片。
本发明的另一目的在于提供一种执行基于fpga的多算法安全加密认证方法的知识产权保护或物联网系统安全领域的硬件设备。
综上所述,本发明的优点及积极效果为:本发明能够提高设备的防伪和抗攻击能力,通过提取出与该物体唯一相关的特征量,具有不可复制性、唯一性、稳定性、免疫侵入式攻击的特性;同时还能够以较少的开销获得更强的抵御安全风险能力。
本发明公开了一种基于fpga的多算法安全加密认证系统,不仅能够防探测还能够防篡改,在知识产权保护、物联网系统安全和硬件设备认证等方面具有广泛的应用前景。主要应用于:电子钱包、防伪认证、m2m认证、安全启动、物联网终端/节点认证、固件保护、配件认证、软件升级认证、传输校验等功能。
本发明中的安全加密认证芯片密钥数据在初始化时产生,具有不可克隆的性质,提高了系统的安全等级。加密速度快,aes算法需要22个时钟周期;rc5算法需要126个时钟周期;keccak算法需要24个时钟周期;sha256算法需要64个时钟周期。实际上,速度瓶颈在串口上,其耗时远比加密时间长。在对fpga板的测试中,将波特率调为串口助手软件支持的最高值2mbps,系统也能正常工作,相信其上限应该更高,系统认证的速度也能更快。
本发明系统从上电初始化到正常工作需要约4秒的时间,ropuf每比较一次振荡时间为0.1秒,8次可产生一组puf值,再经过5次比较(可设置为大于1的奇数次),得出最终puf的值。由于上电初始化后便可一直工作,所以初始化时间长短对系统影响不大,若想减少初始化时间,可多设几组计数器,减少复用率,但会增加逻辑单元数量。
除正常传输数据包外,本发明系统模块内部还有检测错误数据包的能力,包括传送超时检测、指令检测、长度检测、数据内容检测、crc校验码比对、系统繁忙检测,可以及时跳出错误状态。除此之外,系统还设有test引脚,用来输出芯片内部工作信号,方便做板级调试,可通过test_sel寄存器改变输出信号,芯片内设置了32组可供测试的信号。
本发明的安全加密认证系统在做身份认证时可以选择四种不同的加密算法,相比单一算法认证系统,增加了破解难度,提高安全系数。
本发明利用集成电路制造时产生的随机差异构造ropuf产生芯片密钥,使其无法被复刻,比非易失存储器存储密钥更安全。
本发明对puf每一位的值进行多次产生与比对确认其最终值,提高了puf值的稳定性。
本发明可使用stm32微控制器、51单片机或pc机进行内部认证逻辑。外设设备为oled显示屏以及能标志认证情况的外设设备。信息传输中可采用蓝牙。通过提供的系统的架构,进行puf密钥及加密运算。
附图说明
图1是本发明实施例提供的基于fpga的多算法安全加密认证系统结构示意图。
图中:1、fpga端;2、传输模块;3、stm32端。
图2是本发明实施例提供的基于fpga的多算法安全加密认证系统原理图。
图3是本发明实施例提供的基于fpga的多算法安全加密认证方法流程图。
图4是本发明实施例提供的认证流程示意图。
图5是本发明实施例提供的ees-303核心板示意图。
图6是本发明实施例提供的ropuf单元结构示意图。
图7是本发明实施例提供的fpga逻辑资源分布示意图。
图8是本发明实施例提供的安全加密认证系统图。
图9是本发明实施例提供的keccak自动加密测试波形图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种基于fpga的多算法安全加密认证系统,下面结合附图对本发明作详细的描述。
如图1-图2所示,本发明实施例提供的基于fpga的多算法安全加密认证系统包括:
fpga端1、stm32端3以及传输模块2。
fpga端1即加密认证芯片,与传输模块2连接,包括串口收发单元、串口输入控制单元、串口输出控制单元、算法控制单元、四个算法ip单元和ropuf单元;用于进行加密认证。
传输模块2,与fpga端1、stm32端3连接,用于通过串口蓝牙传输指令及数据。
stm32端3,与传输模块2连接,用于进行烧写加密认证芯片的配置以及验证。
本发明实施例提供的ropuf单元包括:
所述ropuf用于进行初始化,读取xilinxfpga芯片中的dna码,并将读取的dna码后32位作为加密认证芯片的id;同时环形振荡器起振,通过计数器和比较器获得芯片的puf。
本发明实施例提供的基于fpga的多算法安全加密认证系统还包括以下硬件装置:
ees-303fpga核心板、stm32f103c8t6核心板、128*64分辨率oled显示屏和两个hc-05串口蓝牙模块。
如图3-图4所示,本发明实施例提供的基于fpga的多算法安全加密认证方法包括:
s101,主机端读取芯片id号,通过映射表得到对应的puf值。
s102,主机端确定认证算法,并随机产生256位宽的随机数作为明文,将指令、算法选择、明文以及crc校验码通过串口蓝牙模块发送至从机即加密认证芯片;加密认证芯片即从机接收到数据后,先进行crc校验,数据无误则进行指令解析,否则传回错误报告给主机端。
s103,从机按相应的算法,利用明文以及自身puf值加密计算产生密文c’,并将其加上数据类型描述以及crc校验码通过串口蓝牙传回主机端。
s104,主机端按照随机数明文、算法选择以及该芯片id对应的puf值重新做一遍加密运算得到密文c。
s105,主机端对比密文c与c’,若相同则认证通过,否则认证失败。
步骤s102中,本发明实施例提供的主机确定认证算法包括:所述主机端可确定四种不同的加密算法进行认证;
所述四种不同的加密算法包括但不限于aes加密算法、rc5对称加密算法、keccak算法以及sha-256算法。
步骤s101中,本发明实施例提供的主机读取芯片id号,主机通过映射表得到对应的puf值包括:
加密认证芯片包含出厂以及认证两种工作模式。
当加密认证芯片处于出厂模式下时,芯片puf值可读;利用stm32端即主机发送chip-id读取指令,获取芯片id,再发送读取puf寄存器指令,获取该芯片puf值,将id与puf作为一个映射表存储;主机发送otp烧写指令改变其状态,切换至认证模式。
当加密认证芯片处于认证模式下时,芯片puf值不可读;发送读puf寄存器指令返回0值;主机通过发送读chip-id指令获取芯片id,由存储的映射表得到芯片puf的值。
下面结合具体实施例对本发明的技术方案作进一步说明。
实施例1:
1、整个加密认证系统分为两个部分,fpga端为加密认证芯片的实现部分,stm32端为加密认证芯片的配置以及验证部分,两部分之间通过串口蓝牙传输指令以及数据。如图2所示,系统硬件模块包括:ees-303fpga核心板、stm32f103c8t6核心板、128*64分辨率oled显示屏和两个hc-05串口蓝牙模块。
fpga设计中包含串口收发模块、串口输入控制模块、串口输出控制模块、算法控制模块、四个算法ip模块和ropuf模块;stm32中烧写芯片配置和认证程序。在系统上电之后,ropuf模块进行初始化,读取xilinxfpga芯片中的dna码,取其后32位作为加密认证芯片的id。同时环形振荡器起振,通过计数器和比较器获得芯片的puf。初始化完毕之后led状态指示灯亮,芯片可进行数据交换,由串口配置芯片,传输指令和数据。认证芯片有两个工作模式:出厂模式和认证模式。
1.1.1出厂模式:在此模式下,芯片puf值可读。主机先发送chip-id读取指令,获取芯片id,再发送读取puf寄存器指令,获取该芯片puf值,将id与puf作为一个映射表存储。芯片内有一次性可编程(otp)位,在编程之后便不可再更改。利用otp特性,主机发送otp烧写指令改变其状态,便可切换至认证模式。
1.1.2认证模式:在此模式下,芯片puf值不可读。发送读puf寄存器指令会返回0值。主机通过发送读chip-id指令获取芯片id,由存储的映射表得到芯片puf的值。认证流程如图4所示,fpga(认证芯片)端为从机,在进入认证模式之前已经由主机进行了出厂操作。
第一步:主机读取芯片id号,主机通过映射表得到对应的puf值。
第二步:主机确定认证算法,并随机产生256位宽的随机数作为明文,将指令、算法选择、明文以及crc校验码通过串口蓝牙模块发送至从机。从机接收到数据后,先进行crc校验,数据无误则进行指令解析,否则传回错误报告给主机。
第三步:从机按相应的算法,用明文以及自身puf值加密计算产生密文c’,并将其加上数据类型描述以及crc校验码通过串口蓝牙传回主机。
第四步:主机按照随机数明文、算法选择以及该芯片id对应的puf值重新做一遍加密运算得到密文c。
第五步:主机对比密文c与c’,若相同则认证通过,否则认证失败。
1.2硬件介绍
1.2.1ees-303核心板
fpga平台使用的是依元素科技ees-303核心板,如图5所示,其采用的芯片为xilinxxc7a35t-1csg324c,具有大容量高性能等特点。包含5200个逻辑slices,每一个slices含有4个6输入lut和8个触发器,内部时钟速度高达450mhz,拥有片上模数转换器(xadc)、1800kbitsblockram、90个dsp48e单元以及5个时钟管理单元。
核心板外设有usb-uart/jtag接口,4个数码管和8个led,4个pmod接口,sram存储器和spiflash存储器。
1.2.2stm32核心板
主机认证部分本发明使用的是stm32f103c8t6核心板,mcu内核为arm32位的cortex-m3,芯片内部集成64kbflash存储器,集成sram容量为20kb。拥有4个定时器、2个spi接口、2个iic接口、3个uart接口和一个usb接口。
1.2.3oled模块
为使认证过程更加清晰,stm32核心板外接一块0.96英寸oled显示屏,分辨率为128*64,采用spi协议与主机通信。认证时,用来显示当前调试状态以及进度。
1.2.4串口蓝牙模块
采用hc-05蓝牙串口通信模块,基于蓝牙2.0协议,无线工作频段为2.4ghz,板载pcb天线,可以实现10米距离通信。本发明使用两块hc-05,分别设置为主模式和从模式,蓝牙模块与系统通过串口连接,采用3.3vttl电平,波特率默认为115200。
2、fpga。
2.1fpga功能模块。
2.1.1sys_rst_n。
此模块为异步复位同步释放模块,为了防止纯异步复位电路会产生亚稳态的状况,此模块输入接芯片外复位按键,将fpga内部其它模块异步复位端都接此模块的输出。
2.1.2rx_ctrl。
此模块是指令以及数据的接收和处理模块,包含串口接收驱动uart_rx模块。串口下发数据格式为1位起始位(低),8位数据位(先发低位),1位停止位(高)。发送的数据包格式如表1所示。
表1数据包格式
串口驱动收到上位机发送的数据后,按字节发送至接收处理模块,此模块用有限状态机(fsm)检测接收到的数据包指令字段,通过判断数据包长度字段确定中止接收时间,完成整串数据的接收。在接收数据的同时,crc校验(循环冗余校验)模块计算已经输入的数据流校验值。由crc校验原理可知,若数据流末尾已包含校验码,则计算出总数据的校验码为0x0000。若数据包接收完毕但校验错误,接收处理模块将产生校验错误信息由发送处理模块回传至上位机。若接收的指令不在芯片指令集中,则返还指令错误信息。数据包长度错误同理。
当接收处理模块接收到正确的数据包后,若为写寄存器指令,则更新相应寄存器的值,并返回写入成功标志;若为自动加密指令,则会产生加密开始标志,通知ip_ctrl模块进行加密运算。若为读寄存器指令,则产生相应的标志位,通知发送处理模块回传信息。
2.1.3tx_ctrl。
此模块为处理和上传返回数据模块,包含串口发送驱动uart_tx模块。其发送的数据包格式与接收模块的基本相同,不同点在指令字段,高四位为0xc,代表回传数据。
发送处理模块也有一个有限状态机,负责拼接数据包,在发送数据流的同时,crc校验模块在计算已发送数据流的校验码,在数据字段最后一字节发送完毕后,状态机将校验码附在数据流后发出。发送的数据分两种,一种为寄存器值,发送请求的寄存器数据或加密完成后的密文寄存器数据;另一种为数据处理反馈信息,包括几种接收数据包错误和写寄存器成功标志。
2.1.4ip_ctrl。
此模块为加密芯片的核心模块之一,包含加密认证用到的aes、rc5、keccak和sha256共四个加密算法以及相应的控制逻辑。
由于本发明不需要进行大量数据的加密运算,编写的算法ip都为循环结构而非流水结构,可以节省不少的逻辑资源,进而减小面积以及功耗。四个算法顶层控制模块都包含启动加密信号和加密完成标志,不需要认证时都处于关闭状态,也可以降低芯片功耗。
ip控制模块接收到加密开始指令之后,先查询算法选择寄存器的值,再获取明文寄存器的值以及ropuf模块中puf的值。若为对称加密算法aes和rc5,取puf的后128bit作为密钥,将明文分段进行加密,最终得到256bit的密文,同时产生加密完成信号通知数据发送控制模块回传数据;若算法为keccak和sha256,将256bit明文和puf混合成一个数据串,再计算其信息摘要,并将哈希值存入密文寄存器中,同时产生加密完成标志,向上位机回传密文数据。
除正常加密流程之外,芯片还设有工厂快速功能验证加密模式,不需要等待ropuf模块初始化产生puf值,也不需要上位机发送很长的明文数据包,仅通过一个四字节的快速认证指令便可直接启动keccak加密算法,计算ip控制模块中固化的数据串的信息摘要并将其回传。选择keccak算法是因为其需要的计算时间较短,仅24个时钟周期,若此芯片量产,则可通过这种芯片验证方法节省测试时间。
2.1.5ropuf。
此模块为加密芯片另一核心模块。传统的加密认证芯片利用非易失存储器件存储密钥,通过入侵或半入侵等物理攻击手段能够读出其存储的内容,芯片安全性受到极大威胁。利用集成电路制造过程中的物理差异产生的响应信号产生芯片的密钥,即使剖片得到电路结构,也无法获得相同的密钥值,达到不可克隆的目的,安全性大大提高。
本发明中使用的puf模块采用的是ropuf,其结构如图6所示。fpga中每个slice单元中有4个6输入lut。在lut中存入反相器逻辑便可成为一个非门,一个振荡环路由16个非门以及一个与非门组成。与非门既作为一个反向单元,又作为振荡环路的使能控制器,每一条振荡环路的与非门都接同一个en使能信号,使能信号为高时振荡环起振,待振荡频率稳定之后计数器便可开始计数。由于每个反相器的延时长度有些许差异,每条振荡环的频率便不相同。当en关闭振荡环后,两计数器的值f1和f2变不相同,经过比较器之后可得出一位puf值。
由于fpga中逻辑资源有限,本发明设计的是64位puf值,再经过扩充变换成加密系统所需的256位。为了减少计数器和比较器数量,图5ropuf单元结构f2链为固定比对端,8条振荡环经8路选择器再到f1链,经过8次比较之后一个结构单元可得出8位puf值。模块中有8个ropuf单元,8次比产生64位puf值。
在实际的实现中,综合器会对逻辑进行优化,因此需在反相器链的verilog描述语句中加入(*dont_touch="true"*)属性,防止反相器被优化掉,同时在xdc约束文件中加入允许电路回环语句。为了保证频率差异由反相器延时而非连接线延时决定,反相器间距不能太大,因此需在xdc约束文件中固定每个反相器的位置,如图7所示,橙色区域即为振荡器环路。另外,ropuf有扰动时会导致puf相应的位发生改变,此模块在设计时每位puf都检测了5次,若有3次及以上的值为1则此puf值为1;若有3次及以上的值为0则此puf值为0。此操作可以用加法器和比较器实现,但十分损耗硬件资源,ropuf模块中采用了逻辑计算法,用卡诺图化简得到与或逻辑式,减少了逻辑单元数量。采用这种生成puf的方法之后,其值的稳定性大大提高。
ropuf模块还有读取芯片id的功能,xilinx的fpga芯片中有专属的dna值,该值是由otp电路烧写固定的,每块芯片都不相同,模块读取dna值的后32位作为芯片id。模块上电之后,读取id并启动振荡环得到puf值,再关闭振荡环路,降低芯片功耗。
2.2寄存器列表。
表2中列出了加密认证芯片中的寄存器信息。由2.1中对数据包的介绍可知,读寄存器指令地址高四位为0xa,写寄存器指令地址高四位为0x8,回传指令地址高四位为0xc。
表2寄存器列表
2.3stm32端设计。
stm32作为主机部分,设计思路相对简单。首先需要准备4个加密算法程序和crc校验程序,按照其算法原理编写c文件和对应的h头文件,认证时可直接调用。主机使用oled显示屏显示认证信息,因此需要编写oled驱动程序。信息传输使用uart接口,可直接调用arm官方库函数。
主函数按照1.1.2所讲的认证流程编写,由于该核心板外设资源较少,系统上电直接进入认证流程。stm32中利用定时器4产生1μs定时器中断,将中断次数作为随机函数的种子,生成256位的随机明文,用作加密认证。
3、完成情况及性能参数
本系统由fpga核心板、stm32核心板、oled显示屏模块和两个串口蓝牙模块组成,由于本发明是关于安全加密认证系统的,重点在fpga端的架构设计和算法设计上,因此用到的硬件模块并不多。图8为整个系统的照片,图中stm32端已完成整个芯片的认证过程,分别用了四个加密算法,显示屏中打印出了读取到的芯片id号和身份认证情况信息。可以看到,四次测试全部认证通过,fpga核心板led显示芯片当前工作状态。
本发明中的安全加密认证芯片密钥数据在初始化时产生,具有不可克隆的性质,提高了系统的安全等级。加密速度快,aes算法需要22个时钟周期;rc5算法需要126个时钟周期;keccak算法需要24个时钟周期;sha256算法需要64个时钟周期。实际上,速度瓶颈在串口上,其耗时远比加密时间长。在对fpga板的测试中,将波特率调为串口助手软件支持的最高值2mbps,系统也能正常工作,相信其上限应该更高,系统认证的速度也能更快。
系统从上电初始化到正常工作需要约4秒的时间,ropuf每比较一次振荡时间为0.1秒,8次可产生一组puf值,再经过5次比较,得出最终puf的值。由于上电初始化后便可一直工作,所以初始化时间长短对系统影响不大,若想减少初始化时间,可多设几组计数器,减少复用率,但会增加逻辑单元数量。
除正常传输数据包外,系统模块内部还有检测错误数据包的能力,包括传送超时检测、指令检测、长度检测、数据内容检测、crc校验码比对、系统繁忙检测,可以及时跳出错误状态。除此之外,系统还设有test引脚,用来输出芯片内部工作信号,方便做板级调试,可通过test_sel寄存器改变输出信号,芯片内设置了32组可供测试的信号。
本发明fpga端一共有22个模块,其中14个模块是关于算法实现的,另外的为功能模块或控制模块;stm32端有8个c语言文件,其中5个为算法,一个为oled驱动,另外两个是主函数和中断模块。
下面结合基于fpga的多算法安全加密认证系统fpga端加密测试实验对本发明作进一步描述。
自动加密指令将算法选择指令以及写明文寄存器指令合二为一,用于快速收发数据。发送的数据包中包含算法选择和明文数据,数据包格式参考表1,测试时选用加密时间较短的keccak256算法。
测试步骤如下:
1.系统上电。
2.写数据。
a)指令:0x8b
b)长度:0x25
c)数据1:0x02
d)数据2:0x71617a77737865646372667674676279\686e756a6d696b6f6c70303132333435
e)crc校验:0xdefd。
3.接收密文。
4.比对数据,若错误则计数值加1。
5.以上步骤2-4重复1000次,明文换为随机。
测试完成后,oled屏中显示错误计数值为0,说明自动加密正常。其第一次加密过程示波器波形如图9所示。示波器上半部分为fpga数据接收引脚信号(rx),下半部分为fpga数据发送引脚信号(tx),在接收到加密指令后几乎同时就开始发送加密密文,即fpga加密速度非常快,速度瓶颈在数据传输上。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘ssd)等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
1.一种基于fpga的多算法安全加密认证系统,其特征在于,所述基于fpga的多算法安全加密认证系统包括:
fpga端,与传输模块连接,进行串口通信,并通过串口接收单元、串口发送单元、串口输入控制单元、串口输出控制单元、算法控制单元、加密算法ip单元和ropuf单元进行加密认证;
传输模块,与fpga端、主机端连接,通过串口传输指令及数据;
主机端,与传输模块连接,通过内部包含aes、rc5、keccak、sha256加密算法、crc16数据校验算法,随机数产生函数以及认证程序,进行加密认证芯片的配置以及验证。
2.如权利要求1基于fpga的多算法安全加密认证系统,其特征在于,所述ropuf单元还用于进行初始化,读取xilinxfpga芯片中的dna码,并将读取的dna码后32位作为加密认证芯片的id;同时环形振荡器起振,通过计数器和比较器获得芯片的puf值。
3.如权利要求1基于fpga的多算法安全加密认证系统,其特征在于,所述传输模块直接使用线材连接,或使用串口蓝牙、rfid无线传输设备进行输指令及数据。
4.如权利要求1基于fpga的多算法安全加密认证系统,其特征在于,主机端为嵌入式微处理器,或使用pc通用计算机,用于从机端配置以及认证,加载相应的程序。
5.一种应用于权利要求1~4任意一项所述基于fpga的多算法安全加密认证系统的基于fpga的多算法安全加密认证方法,其特征在于,所述基于fpga的多算法安全加密认证方法包括:
步骤一,主机端读取从机芯片id号,并通过映射表得到对应的puf值;
步骤二,主机端确定认证算法,并随机产生256位宽的随机数或由使用者自定义的数据作为明文,将指令、算法选择、明文以及crc校验码通过串口传输模块发送至从机即加密认证芯片;加密认证芯片即从机接收到数据后,先进行crc校验,数据无误则进行指令解析,得到加密方式以及明文数据,否则传回错误报告给主机端;
步骤三,fpga端按相应的算法,利用明文以及自身puf值调用相应算法ip加密计算产生密文c’,并将其加上数据类型描述以及crc校验码通过串口传输模块传回主机端;
步骤四,主机端按照明文、算法选择以及该芯片id对应的puf值重新做一遍加密运算得到密文c;
步骤五,主机端对比密文c与c’,若相同则认证通过,否则认证失败。
6.如权利要求1所述的基于fpga的多算法安全加密认证方法,其特征在于,步骤一中,所述主机端读取芯片id号,通过映射表得到对应的puf值包括:
加密认证芯片包含出厂以及认证两种工作模式;
加密认证芯片处于出厂模式下时,芯片puf值可读;利用主机发送chip-id读取指令,获取芯片id,再发送读取puf寄存器指令,获取该芯片puf值,将id与puf作为一个映射表存储在本机或云服务器中;主机发送芯片模式切换指令烧写otp标志位的值,芯片puf值永久性变为不可读状态,芯片进入认证模式;
加密认证芯片处于认证模式下时,芯片puf值不可读;发送读puf寄存器指令返回0值;主机通过发送读chip-id指令获取芯片id,由存储的映射表得到芯片puf的值;
步骤二中,主机端确定多种不同的加密算法进行认证;所述加密算法包括aes加密算法、rc5对称加密算法、keccak算法以及sha-256算法。
7.一种存储在计算机可读介质上的计算机程序产品,包括计算机可读程序,供于电子装置上执行时,提供用户输入接口以实施如权利要求4-6任意一项基于fpga的多算法安全加密认证方法。
8.一种计算机可读存储介质,储存有指令,当所述指令在计算机上运行时,使得计算机执行权利要求5-6任意一项基于fpga的多算法安全加密认证方法。
9.一种执行权利要求5-6任意一项基于fpga的多算法安全加密认证方法的加密认证芯片。
10.一种执行权利要求5-6任意一项基于fpga的多算法安全加密认证方法的知识产权保护或物联网系统安全领域的硬件设备。
技术总结