一种基于SRAM‑PUF的模糊保险箱认证方法与流程

文档序号:12821831阅读:203来源:国知局
一种基于SRAM‑PUF的模糊保险箱认证方法与流程
本发明涉及信息安全
技术领域
,尤其涉及一种基于sram-puf的认证方法及认证系统。
背景技术
:物理不可克隆函数(physicalunclonablefunctions,pufs)作为一种新兴的信息安全机制,通过提取电路在制造过程中产生的不可控制、无法克隆的电路差异来实现安全认证、密钥存储等功能。基于puf的安全认证技术是puf的重要应用之一,针对puf存在的可靠性问题,现在主流的解决方式是通过存储于非易失性寄存器的辅助数据进行模糊提取。模糊提取(fuzzyextractor)算法是目前应用较为广泛的认证算法。在注册阶段,首选选取一个随机数r,将r进行通用hash算法运算后的值hash(r)存储起来。模糊提取算法将用户持有的puf的响应和随机数r进行异或操作,得到的结果作为帮助数据(helperdata)存储起来。在认证阶段,模糊提取算法将用户输入自己的puf的响应,并将该响应和帮助数据进行异或操作,若在认证时使用与注册阶段相同的puf,则异或结果r’应当与注册阶段选取的随机数r相同,将随机数r’进行哈希运算后得到hash(r’)后与注册阶段存储的hash(r)做对比,二者相同则认证成功;反之,若使用错误或非法的puf,则认证不成功。然而该方案并没有考虑puf信息在数据库端的安全存储问题,该数据一旦丢失,攻击者可以通过截获该数据从而破解用户的pufs,使得认证系统将完全失效,且由于puf自身的物理硬件特性,该失效无法修复。模糊保险箱(fuzzyvault)是比较著名的密钥绑定算法,首次由juels和sudan提出。现有的模糊保险箱算法加密阶段,主要将生物特征与密钥通过多项式乘法进行结合,生成模糊保险箱储存在系统中。在解密阶段,针对用户提供生物特征,进行认证,并获取密钥。但传统的模糊保险箱算法所针对的生物特征,需要进行二值化等一系列图像处理才能得到比特流,通过所得到的比特流才能够进行相应的认证等处理。因而,传统的利用生物特征进行模糊保险箱加密的系统,对系统硬件的运算能力要求更高。相比于生物特征,puf电路同样有着不可替代性和独一无二性,但是,由于sram-puf(静态随机存储器物理不可克隆函数)电路单元中包含高随机性的单元(振荡点),这些单元每一次上电得到的上电值不确定。且通过振荡点直接得到的密钥s会存在一定比例的错误。传统的方法在进行认证时,无法纠正该错误,因而获得的认证结果存在一定比例的错误。技术实现要素:为了解决现有技术存在的不足,本发明的目的在于提供一种基于sram-puf的模糊保险箱认证方法及系统。首先,为实现上述目的,提出一种基于sram-puf的模糊保险箱注册方法,包括以下步骤:第1步,确定注册参数:确定sram芯片大小、sram芯片地址位数;确定注册密钥s长度;确定多项式f(x)级数为d;确定真实点个数为m;确定杂凑点个数为n;确定设定阈值为δ;第2步,插入符合所述参数要求的sram芯片,筛选sram芯片上的振荡点,建立随机数发生器,并存储所述振荡点的地址;第3步,利用所述随机数发生器生成符合所述参数要求的注册密钥s,利用哈希算法计算所述注册密钥s的注册密钥哈希值hash(s),并将所述注册密钥哈希值hash(s)存储至认证数据库;第4步,对所述注册密钥s进行crc(循环冗余校验码,cyclicredundancycheck)编码,得到编码结果sc,将编码结果sc平均分为d+1段并将所述d+1段的值依次作为系数,构造d级多项式f(x);其中,级数d根据所述注册密钥s的长度而定,具体为:d=s/16。(一般密钥s的长度都是16的倍数)第5步,构造真实点横坐标:根据所述真实点个数m以及真实点横坐标位宽要求,确定所需特征信息的数量,按照所需特征信息的数量均匀划分所述sram芯片,获取划分后所述sram芯片中每一部分的特征值,并将所述特征值根据所述真实点横坐标位宽要求构造真实点横坐标xi,i=1,2,3,...,m;第6步,计算真实点集合:将所述m个真实点横坐标xi分别带入所述d级多项式f(x),得到真实点坐标(xi,f(xi)),i=1,2,3,…,m,将所述真实点坐标(xi,f(xi))i=1,2,3,…,m组合为真实点集合g;第7步,计算杂凑点集合:利用所述随机数发生器分别生成杂凑点横坐标vj和杂凑点纵坐标wj,所述杂凑点横坐标vj的位宽与所述真实点横坐标的位宽相同,所述杂凑点纵坐标wj与所述真实点纵坐标的位宽相同,且,任意两杂凑点之间、任意两真实点之间、任意一杂凑点和任意一真实点之间的距离均大于设定阈值δ;将所述杂凑点横坐标vj和杂凑点纵坐标wj组合为杂凑点集合c={(vj,wj)|j=1,2,3,...,n};第8步,对所述真实点纵坐标f(xi)和所述杂凑点纵坐标wj进行纠错编码,分别得到真实点纵坐标纠错码f(xi)b和杂凑点纵坐标纠错码此处,进行纠错编码的主要目的是修正sram各次上电值之间所存在的差异。如果不在注册阶段进行纠错编码、不在认证阶段进行相应的解码,就会由于sram再次上电产生的差异,使得认证不成功。第9步,构造细节点:将所述真实点横坐标xi按照所述真实点横坐标位宽的一半进行拆分,得到高位真实点横坐标xhi和低位真实点横坐标xli,将所述高位真实点横坐标xhi和低位真实点横坐标xli组合为第一细节点(xhi,xli)(共m个示意细节点);将所述杂凑点横坐标vj按照所述杂凑点横坐标位宽的一半进行拆分,得到高位杂凑点横坐标vhj和低位杂凑点横坐标vlj,将所述高位杂凑点横坐标vhj和低位杂凑点横坐标vlj组合为第二细节点(vhj,vlj)(共n个第二细节点);将所述第一细节点(xhi,xli)和所述第二细节点(vhj,vlj)映射至所述sram芯片的对应地址;第10步,构造细节点描述子:对每一个第一细节点(xhi,xli)和每一个第二细节点(vhj,vlj)依次进行如下步骤:以所述第一细节点(xhi,xli)或所述第二细节点(vhj,vlj)为中心按照一定规律(该规律由注册者自由选取,且,该规律会由系统记录,并在认证阶段遵循同样的规律选取待认证细节点描述子。如,以细节点为中心,选取10*10=100个点,或以细节点为中心构造多个正方形,选取每个正方形每个边长的中点或n等分点)选取k个细节点描述子,获取所述每个细节点描述子周围1个地址所对应的数值,并依次将所述k个细节点描述子周围的1个地址所对应的k*lbit数值按照先行后列的顺序排列,构造得到细节点描述子数据dq,q=1,2,3,…,m+n;其中,细节点描述子的个数k取任意值,本方法中l可取为8;第11步,计算帮助数据:将所述每一个真实点纵坐标纠错码f(xi)b与该真实点纵坐标纠错码f(xi)b所对应的描述子数据dq对应的低位进行异或,将所述每一个杂凑点纵坐标纠错码与该杂凑点纵坐标纠错码所对应的描述子数据dq对应的低位进行异或,得到帮助数据hq,q=1,2,3,…,m+n;第12步,构造模糊保险箱:将所述真实点横坐标xi,i=1,2,3,…,m,杂凑点横坐标vj,j=1,2,3,…,m和所述帮助数据hq,q=1,2,3,…,m+n组合为模糊保险箱坐标(xi,hq)和(vj,hq),并将所述模糊保险箱坐标按照真实点横坐标xi和杂凑点横坐标vj的数值升序排列,组合为模糊保险箱v,将所述模糊保险箱v存储至所述认证数据库。进一步,上述注册方法,所述第2步中,筛选sram芯片上的震荡点的具体步骤为:对所述sram芯片进行上电测试,统计每次上电测试中所述sram芯片内每一点的上电值,筛选上电值变化次数多且上电值均匀分布(即熵值高)的点,作为所述sram芯片上的震荡点进一步,上述注册方法,所述第5步中,划分后所述sram芯片中每一部分的特征值由如下步骤获得:统计划分后sram芯片中的每一部分所包含的数值0的数量和数值1的数量;所述sram芯片中每一部分的特征值为该部分中数量较多的数值。进一步,上述注册方法,所述第8步中,所述纠错编码为bch编码。进一步,上述注册方法,所述第10步中,所述m+n个细节点描述子数据dq与所述k个细节点描述子周围的1个地址所对应的k*lbit数值的对应关系为:按照所述细节点描述子的顺序,分别提取每一个所述细节点描述子周围的1个数值,将该细节点描述子对应的所述1个数值依次组合,构成位数为1的数据lz,z=0,1,2…k;将所述每个细节点描述子所对应的数据lz依次拼接(共k个数据),形成该细节点对应的细节点描述子数据dq。按照上述方式,对m+n个细节点做同样的处理,共得到m+n个细节点描述子数据dq(q=1,2,3…m+n)。。其次,为实现上述目的,还提出一种配合上述注册方法的基于sram-puf的模糊保险箱认证方法,步骤包括:步骤a,获取待认证真实点横坐标:插入sram芯片,根据所述特征信息的数量(具体为m*真实点横坐标位宽)均匀划分所述sram芯片,获取划分后所述sram芯片中每一部分的特征特征值,并将所述特征值根据所述真实点横坐标位宽要求构造待认证真实点横坐标xi’,i=1,2,3,...,m;步骤b,筛选待认证真实点:将所述待认证真实点横坐标xi’的值与所述模糊保险箱v中的真实点横坐标xi比对,筛选出所述模糊保险箱v中与所述各个待认证真实点横坐标xi′相对应的待认证模糊保险箱坐标(xi’,hi);步骤c,构造待认证细节点:将所述待认证模糊保险箱坐标(xi’,hi)中的待认证真实点横坐标xi’按照所述待认证真实点横坐标位宽的一半进行拆分,得到高位待认证真实点横坐标xhi’和低位待认证真实点横坐标xli’,将所述高位待认证真实点横坐标xhi’和低位待认证真实点横坐标xli’组合为共计m个第一待认证细节点(xhi’,xli’),将所述第一待认证细节点(xhi’,xli’)映射至所述sram芯片的对应地址;步骤d,获取待认证细节点描述子:以所述第一待认证细节点(xhi’,xli’)为中心,按照所述第10步中的方法选取任意k个待认证细节点描述子,获取所述每个待认证细节点描述子周围1个地址所对应的数值,并依次将所述k个待认证细节点描述子周围的1个地址所对应的k*lbit数值按照先行后列的顺序排列,构造得到待认证细节点描述子数据di,i=1,2,3,...,m;步骤e,计算待认证真实点坐标:分别将所述步骤b得到的每一个待认证模糊保险箱纵坐标hi与所述待认证细节点描述子数据di异或,得到待认证真实点纵坐标纠错码f(xi)b′;对所述待认证真实点纵坐标纠错码f(xi)b′解码,得到待认证真实点纵坐标f(xi)′;分别将标号相同的待认证真实点横坐标xi′与待认证真实点纵坐标f(xi)′组合,得到待认证真实点集合g′=(xi′,f(xi′)),i′1,2,3,...,m;步骤f,计算待认证密钥s’:真实点集合g’中包含m个真实点,随机选取所述待认证真实点集合g′中m个真实点中的至少d+1个待认证真实点,通过拉格朗日插值法由所述d+1个待认证真实点构造d级重构多项式f(x)’;提取所述d级重构多项式f(x)’的系数,并将所述d级重构多项式f(x)’的系数拼接为待认证编码结果sc′,对所述待认证编码结果sc′进行crc校验,获得待认证密钥s’;步骤g,哈希值比对认证:计算所述待认证密钥s’的待认证密钥哈希值hash(s’),比对所述待认证密钥哈希值hash(s’)和所述认证数据库中存储的注册密钥哈希值hash(s),若二者相等则认证成功,若二者不相等则认证失败。进一步,所述认证方法,所述步骤g后还包括更新模糊保险箱的步骤,所述更新模糊保险箱的步骤包括:步骤h-1,判断是否更新模糊保险箱:若所述步骤g中认证成功,或连续f次认证均失败,则跳转至步骤h-2,否则,跳转至步骤a继续进行认证;步骤h-2,跳转至第3步,按照第3步至第12步的顺序计算新的注册密钥s和新的模糊保险箱v,并使用所述新的注册密钥s和新的模糊保险箱v替换所述认证数据库中的相应数据。同时,为实现上述目的,基于上述注册方法和认证方法,还提出一种基于sram-puf的模糊保险箱认证系统,包括sram芯片、注册端和认证端:所述注册端包括:注册密钥生成模块、第一哈希运算模块、模糊保险箱运算模块和注册端认证数据库:所述注册密钥生成模块的输入端连接所述sram芯片,所述注册密钥生成模块的两个输出端分别连接所述第一哈希运算模块和所述模糊保险箱运算模块;所述注册密钥生成模块用于根据所述sram芯片产生的随机数生成注册密钥s,并将所述注册密钥s输出至所述第一哈希运算模块和所述模糊保险箱运算模块;所述第一哈希运算模块的输入端连接所述注册密钥生成模块的输出端,所述第一哈希运算模块的输出端连接所述注册端认证数据库的输入端;所述第一哈希运算模块用于对所述注册密钥s进行哈希运算,并将哈希运算得到的注册密钥哈希值hash(s)输出至所述注册端认证数据库;所述模糊保险箱运算模块的输入端连接所述注册密钥生成模块的输出端,所述模糊保险箱运算模块的输出端连接所述注册端认证数据库的输入端;所述模糊保险箱运算模块用于根据所述注册密钥s进行模糊保险箱运算,并将模糊保险箱运算得到的模糊保险箱v输出至所述注册端认证数据库;所述注册端认证数据库的两个输入端分别连接所述模糊保险箱运算模块的输出端和所述第一哈希运算模块的输出端;所述注册端认证数据库用于存储所述模糊保险箱运算模块输出的模糊保险箱v和所述第一哈希运算模块输出的注册密钥哈希值hash(s);所述认证端包括:模糊保险箱认证模块、待认证密钥生成模块、第二哈希运算模块、认证判断模块以及存储内容与所述注册端认证数据库相同的认证端认证数据库;所述模糊保险箱认证模块的两个输入端分别连接所述sram芯片和所述认证端认证数据库,所述模糊保险箱认证模块的输出端连接所述待认证密钥生成模块;所述模糊保险箱认证模块用于根据所述sram芯片产生的随机数以及所述认证端认证数据库,通过模糊保险箱认证运算生成待认证真实点集合g′,并将所述待认证真实点集合g′输出至所述待认证密钥生成模块;所述待认证密钥生成模块的输入端连接所述模糊保险箱认证模块的输出端,所述待认证密钥生成模块的输出端连接所述第二哈希运算模块的输入端;所述待认证密钥生成模块用于选取所述待认证真实点集合g′中的待认证真实点,根据所选取的待认证真实点构造待认证编码结果sc′,并通过对所述待认证编码结果sc′进行crc校验,获得待认证密钥s’,并将所述待认证密钥s’输出至所述第二哈希运算模块;所述第二哈希运算模块的输入端连接所述待认证密钥生成模块的输出端,所述第二哈希运算模块的输出端连接所述认证判断模块的输入端;所述第二哈希运算模块用于对所述待认证密钥s’进行哈希运算,并将哈希运算得到的待认证密钥哈希值hash(s’)输出至所述认证判断模块;所述认证判断模块的两个输入端分别连接所述第二哈希运算模块的输出端和所述认证端认证数据库的输出端,所述认证判断模块用于比较所述第二哈希运算模块输入的所述待认证密钥哈希值hash(s’)是否与所述认证端认证数据库中存储的注册密钥哈希值hash(s)一致,若一致则认证成功,否则认证失败;所述认证端认证数据库的两个输出端分别连接所述模糊保险箱认证模块和所述认证判断模块的输入端,所述认证端认证数据库用于迅速与所述注册端认证数据库相同的模糊保险箱v和注册密钥哈希值hash(s)。有益效果本方法,利用sram芯片的随机性生成注册密钥s,具体而言,本方法中利用sram-puf的高熵值振荡节点生成注册密钥s。由于震荡节点的输出受周围环境的影响,因此具有不可预测性。由此注册密钥s构造的多项式f(x),可将puf的响应加密在多项式中。由于注册密钥s中所包含的sram的特征信息已经被加密到多项式中,因此,在不知道真实点的情况下无法重构出所述多项式,也就不能获得sram的特征信息。同时,本方法中模糊保险箱中,同样利用所述sram芯片的随机性构造杂凑点,以此保证真实点和杂凑点的分布完全随机且毫无规律。这也使得攻击者很难区分出真实点和杂凑点,不能从其中推导出sram的特征信息和密钥s,进一步确保芯片信息不会泄露。进一步的,系统将模糊保险箱v、振荡点坐标、密钥s的哈希值存储在数据库中,并通过哈希函数对相应的数据进行加密。由于哈希函数的不可逆性,即使攻击者入侵数据库获得以上数据,也无法利用密钥s的哈希值推导出密钥s。进一步的,本发明创新性的采取了sram-puf节点分类的思想,利用sram-puf的高熵值振荡节点生成密钥s,保证密钥s无法直接预测。本方法在认证成功或多次认证失败后均会周期性地更换密钥s,并对模糊保险箱进行相应更新。这样可以抵御多数据交叉比对攻击以及混合攻击。因为:当前对模糊保险箱的攻击主要通过多数据交叉比对实现,其原理在于:模糊保险箱注册时使用的sram特征信息不变,用户使用sram芯片在不同系统注册时,由于密钥s相同,由此得到的多项式也相同,模糊保险箱中的真实点固定且无法更换。仅依靠杂凑点的随机性,如果攻击者获取到不同系统的模糊保险箱,现有的技术并不足以防止攻击者对比筛选出真实点。由于现有模糊保险箱通常是基于生物特征而得到密钥s的,无法任意对密钥s进行更新,因而无法有效防御多数据交叉对比。本方法基于sram的随机性,可以随时更换密钥s,这也意味着在不同系统中的真实点位置均不相同,因而,攻击者无法通过比对筛选真实点,进而无法实现有效攻击。同时,传统的模糊保险箱在处理生物特征时,需要进行一系列的图像处理过程,才能获得生物信息的二进制bit流。基于该二进制bit流才可以进行后续的构造模糊保险箱的步骤。本发明使用sram-puf来构造模糊保险箱,可直接通过sram芯片建立随机数发生器,直接采集sram芯片的二进制特征信息。这样,省去了复杂的图像处理过程,计算步骤更为精简,能够节省大量运算及系统资源,简单高效。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。附图说明附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:图1为根据本发明实施例所述sram-puf模糊保险箱认证方法的总流程图;图2为根据本发明实施例所述的注册阶段对sram芯片的划分方法示意图;图3为根据本发明实施例所述的细节点、细节点描述子以及细节点描述子数据之间的位置关系示意图;图4为根据本发明实施例所述的sram-puf模糊保险箱认证方法的整体流程示意图;图5为根据本发明实施例所述的10块芯片内部单元的最小熵测试结果;图6为根据本发明实施例所述的10块芯片加权处理后的片内汉明距离测试结果;图7为根据本发明实施例所述的hy4芯片的片内汉明距离;图8为根据本发明实施例所述的hy5芯片的片内汉明距离;图9为根据本发明实施例所述的hy4芯片和hy5芯片的片间汉明距离;图10根据本发明实施例所述的细节点描述子周围数值的组合顺序示意图。具体实施方式以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。图1为所述sram-puf模糊保险箱认证方法的总流程图,包括注册和认证两个阶段。所述注册阶段,在安全环境下对合法的sram-puf芯片进行信息注册;所述认证阶段,在应用环境中对目标sram-puf芯片进行认证。所述注册阶段按照如下步骤对sram芯片进行注册:第1步,确定注册参数:确定sram芯片大小、sram芯片地址位数;确定注册密钥s长度;确定多项式f(x)级数为d;确定真实点个数为m;确定杂凑点个数为n;确定设定阈值为δ。第2步,插入符合所述参数要求的sram芯片,采集sram芯片的多次上电值,根据采集的数据筛选出易振荡而且熵值高的点,即该sram芯片上的振荡点,将这些点作为随机数发生器,存储所述振荡点的地址。当需要随机数时,采集这些易振荡而且熵值高的点的上电值作为随机数。第3步,利用所述随机数发生器生成符合所述参数要求的注册密钥s,利用哈希算法计算所述注册密钥s的注册密钥哈希值hash(s),并将所述注册密钥哈希值hash(s)存储至认证数据库。第4步,对所述注册密钥s进行crc(循环冗余校验码,cyclicredundancycheck)编码,得到编码结果sc,将编码结果sc平均分为d+1段并将所述d+1段的值依次作为系数,构造d级多项式f(x)。其中,d=注册密钥长度/16。第5步,构造真实点横坐标:根据所述真实点个数m以及真实点横坐标位宽要求,确定所需特征信息的数量l=m*真实点横坐标位宽,按照所需特征信息的数量l均匀划分所述sram芯片,获取划分后所述sram芯片中每一部分的特征值,共计l-bit特征值,并将所述特征值根据所述真实点横坐标位宽16bit平均分为m块(m=l/16)。这m块中每一块的大小为16bits,将每一块中16bits数据转化成十进制数作为该块的值,依次将m块的值xi作为真实点横坐标xi,i=1,2,3,...,m。第6步,计算真实点集合:将所述m个真实点横坐标xi分别带入所述d级多项式f(x),得到真实点坐标(xi,f(xi)),i=1,2,3,…,m,将所述真实点坐标(xi,f(xi))i=1,2,3,…,m组合为真实点集合g。真实点集合g作为“芯片指纹”成为该芯片的唯一认证信息。后续步骤为通过一系列算法提高该信息的安全性。第7步,计算杂凑点集合:利用所述随机数发生器分别生成杂凑点横坐标vj和杂凑点纵坐标wj,所述杂凑点横坐标vj的位宽与所述真实点横坐标的位宽相同,所述杂凑点纵坐标wj与所述真实点纵坐标的位宽相同,且,任意两杂凑点之间、任意两真实点之间、任意一杂凑点和任意一真实点之间的距离均大于设定阈值δ;将所述杂凑点横坐标vj和杂凑点纵坐标wj组合为杂凑点集合c={(vj,wj)|j=1,2,3,...,n};对于任意的i、j,xi≠vj,f(xi)≠wj。第8步,对所述真实点纵坐标f(xi)和所述杂凑点纵坐标wj进行bch纠错编码,使其具有纠错特性,分别得到真实点纵坐标纠错码f(xi)b和杂凑点纵坐标纠错码第9步,构造细节点:将所述真实点横坐标xi按照所述真实点横坐标位宽的一半进行拆分,得到高位真实点横坐标xhi和低位真实点横坐标xli,将所述高位真实点横坐标xhi和低位真实点横坐标xli组合为第一细节点(xhi,xli)(共m个示意细节点);将所述杂凑点横坐标vj按照所述杂凑点横坐标位宽的一半进行拆分,得到高位杂凑点横坐标vhj和低位杂凑点横坐标vlj,将所述高位杂凑点横坐标vhj和低位杂凑点横坐标vlj组合为第二细节点(vhj,vlj)(共n个第二细节点)。利用sram芯片地址的低k位做横坐标,高k位做纵坐标构造坐标系,将所述第一细节点(xhi,xli)和所述第二细节点(vhj,vlj)映射至所述sram芯片的坐标系中;第10步,构造细节点描述子:对每一个第一细节点(xhi,xli)和每一个第二细节点(vhj,vlj)依次进行如下步骤:以所述第一细节点(xhi,xli)或所述第二细节点(vhj,vlj)为中心按照一定规律(规律由注册者自由选取,本实施实例中采用的规律如图3所示,以细节点为中心,选取10*10=100个点)选取k=100个细节点描述子,获取所述每个细节点描述子周围l=8个地址所对应的数值,因此对于任意xi和vj都可获得其对应的细节点描述子生成的k*l=800bit数据。依次将此800bit数据按照先行后列的顺序排列,构造得到细节点描述子数据dq,q=1,2,3,…,m+n;第11步,计算帮助数据:将所述每一个真实点纵坐标纠错码f(xi)b与该真实点纵坐标纠错码f(xi)b所对应的描述子数据dq对应的低位512位进行异或,将所述每一个杂凑点纵坐标纠错码与该杂凑点纵坐标纠错码所对应的描述子数据dq对应的低位512位进行异或,得到帮助数据hq,q=1,2,3,…,m+n;第12步,构造模糊保险箱:将所述真实点横坐标xi,i=1,2,3,…,m,杂凑点横坐标vj,j=1,2,3,…,m和所述帮助数据hq,q=1,2,3,…,m+n组合为模糊保险箱坐标(xi,hq)和(vj,hq),并将所述模糊保险箱坐标按照真实点横坐标xi和杂凑点横坐标vj的数值升序排列,组合为模糊保险箱v,将所述模糊保险箱v存储至所述认证数据库。为了保证认证方法的可靠性,需要对sram芯片的片内汉明距离和片间汉明距离进行测试。片内汉明距离是指同一块芯片两次上电值的差异;片间汉明距离是指不同芯片之间上电值的差异。对10块sram芯片进行测试,筛选出上电值整体呈现0和1均匀分布的芯片,经筛选后hy4和hy5芯片符合要求,其他芯片的0和1分布情况如表1所示,可以看出其分布偏1或偏0特性,如果利用加权的方式平衡0和1分布,设0占总数据的比例为p0,设1占总数据的比例为p1,将每块数据中1的数量和p0相乘,每块数据中0的数量和p1相乘,用这种方法来平衡0和1的比例后得出的上电值分布情况如表2所示,可以看出0和1比例分布比较均匀。对经过加权处理后的数据进行片内汉明距离测试,结果如图6所示。在构造模糊保险箱时应当选择片内汉明距离小的sram芯片,因此筛选可得出hy4与hy5满足要求,图7表示hy4和hy5芯片的片内汉明距离,图8表示两块芯片的片间汉明距离。hy199.44%ws193.59%hy223.76%ws277.49%hy395.20%ws397.34%hy455.17%ws488.20%hy548.04%ws5100%表1hy148.94%ws149.46%hy247.17%ws249.46%hy353.03%ws349.60%hy450.99%ws449.60%hy549.10%ws551.17%表2具体,上述注册方法,所述第2步中,筛选sram芯片上的震荡点的具体步骤为:对所述sram芯片进行上电测试,统计每次上电测试中所述sram芯片内每一点的上电值,筛选上电值变化次数多且上电值均匀分布(即熵值高)的点,作为所述sram芯片上的震荡点。进一步,上述注册方法,所述第5步中,划分后所述sram芯片中每一部分的特征值由如下步骤获得:统计划分后sram芯片中的每一部分所包含的数值0的数量和数值1的数量;所述sram芯片中每一部分的特征值为该部分中数量较多的数值。进一步,上述注册方法,所述第8步中,所述纠错编码为bch编码。进一步,上述注册方法,参见图3以及图10,所述第10步中,所述m+n个细节点描述子数据dq与所述k=100个细节点描述子周围的1=8个地址所对应的800bit数值的对应关系为:按照所述细节点描述子的顺序,分别提取每一个所述细节点描述子周围的l=8个数值,将该细节点描述子对应的所述l=8个数值依次组合,构成位数为8的数据lz,z=0,1,2…,100;将所述每个细节点描述子所对应的数据lz依次拼接(共k=100个数据),形成细节点描述子数据dq。所述认证阶段按照如下步骤对sram芯片进行认证:步骤a,获取待认证真实点横坐标:插入sram芯片,根据所述特征信息的数量(具体,特征信息的数量l=m*真实点横坐标位宽)均匀划分所述sram芯片,获取划分后所述sram芯片中每一部分的特征特征值,并将所述特征值根据所述真实点横坐标位宽要求构造待认证真实点横坐标xi’,i=1,2,3,...,m。具体构造步骤与注册阶段第5步类似。步骤b,筛选待认证真实点:将所述待认证真实点横坐标xi’的值与所述模糊保险箱v中的真实点横坐标xi比对,筛选出所述模糊保险箱v中与所述各个待认证真实点横坐标xi′相对应的待认证模糊保险箱坐标(xi’,hi);步骤c,构造待认证细节点:将所述待认证模糊保险箱坐标(xi’,hi)中的待认证真实点横坐标xi’按照所述待认证真实点横坐标位宽的一半进行拆分,得到高位待认证真实点横坐标xhi’和低位待认证真实点横坐标xli’,将所述高位待认证真实点横坐标xhi’和低位待认证真实点横坐标xli’组合为共计m个第一待认证细节点(xhi’,xli’),将所述第一待认证细节点(xhi’,xli’)映射至所述sram芯片的对应地址;步骤d,获取待认证细节点描述子:以所述第一待认证细节点(xhi’,xli’)为中心根据所述第10步中的方式选取k=100个待认证细节点描述子,获取所述每个待认证细节点描述子周围l=8个地址所对应的数值,并依次将所述k=76个待认证细节点描述子周围的l=8个地址所对应的k*l=800bit数值按照先行后列的顺序排列,构造得到待认证细节点描述子数据di,i=1,2,3,...,m;步骤e,计算待认证真实点坐标:分别将所述步骤b得到的每一个待认证模糊保险箱纵坐标hi与所述待认证细节点描述子数据di异或,得到待认证真实点纵坐标纠错码f(xi)b′;对所述待认证真实点纵坐标纠错码f(xi)b′解码,得到待认证真实点纵坐标f(xi)′;分别将标号相同的待认证真实点横坐标xi′与待认证真实点纵坐标f(xi)′组合,得到待认证真实点集合g′=(xi′,f(xi′)),i′1,2,3,...,m;步骤f,计算待认证密钥s’:随机选取所述待认证真实点集合g′中的至少d+1个待认证真实点,通过拉格朗日插值法由所述d+1个待认证真实点构造d级重构多项式f(x)’;提取所述d级重构多项式f(x)’的系数,并将所述d级重构多项式f(x)’的系数拼接为待认证编码结果sc′,对所述待认证编码结果sc′进行crc校验,获得待认证密钥s’;步骤g,哈希值比对认证:计算所述待认证密钥s’的待认证密钥哈希值hash(s’),比对所述待认证密钥哈希值hash(s’)和所述认证数据库中存储的注册密钥哈希值hash(s)。若二者相等则认证成功,即注册时sram-puf芯片与此次认证为同一个芯片;若二者不相等则认证失败。进一步,上述认证方法,所述步骤g后还包括更新模糊保险箱的步骤,所述更新模糊保险箱的步骤包括:步骤h-1,判断是否更新模糊保险箱:若所述步骤g中认证成功,或连续f=3次认证均失败,则跳转至步骤h-2,否则,跳转至步骤a继续进行认证;步骤h-2,跳转至第3步,按照第3步至第12步的顺序计算新的注册密钥s和新的模糊保险箱v,并使用所述新的注册密钥s和新的模糊保险箱v替换所述认证数据库中的相应数据。同时,本实施例还提出一种基于上述注册、认证方法的模糊保险箱认证系统,包括sram芯片、注册端和认证端。所述注册端包括:注册密钥生成模块、第一哈希运算模块、模糊保险箱运算模块和注册端认证数据库。所述认证端包括:模糊保险箱认证模块、待认证密钥生成模块、第二哈希运算模块、认证判断模块以及存储内容与所述注册端认证数据库相同的认证端认证数据库。系统内各模块的连接关系如图4所示。系统的具体参数为:sram芯片大小256k,地址共18位;密钥s长度128bit;多项式级数8级;真实点个数25个,杂凑点个数200个。所述注册密钥生成模块的输入端连接所述sram芯片,所述注册密钥生成模块的两个输出端分别连接所述第一哈希运算模块和所述模糊保险箱运算模块;所述注册密钥生成模块用于根据所述sram芯片产生的随机数生成注册密钥s,并将所述注册密钥s输出至所述第一哈希运算模块和所述模糊保险箱运算模块。利用高随机性的振荡点生成高随机性的密钥s。衡量一个单元的随机性主要通过振荡次数和最小熵来确定。振荡次数是指该单元的上电值发生变化的次数,若相邻两次上电值不同则视为振荡;最小熵是指一个sram单元0或者1出现概率的大小。插入sram芯片1,对sram芯片进行1000次的上电测试,可以得到每个sram单元的振荡次数和最小熵估计值。每块芯片包括262144比特,因此将sram芯片构造成排成512×512的矩阵,图2所示不同颜色代表该单元的振荡次数,颜色越深表示该单元振荡次数越多。图5表示不同颜色代表该单元的最小熵的大小,白色表示该单元的最小熵为0,意味着该单元在1000次上电测试中表现为全0或者全1,黑色表示该单元最小熵为1,即该单元在1000次统计中出现了500次0和500次1,颜色深浅代表着不同的熵值,意味着sram中不同单元的上电值有着不同的随机性。所述第一哈希运算模块的输入端连接所述注册密钥生成模块的输出端,所述第一哈希运算模块的输出端连接所述注册端认证数据库的输入端;所述第一哈希运算模块用于对所述注册密钥s进行哈希运算,并将哈希运算得到的注册密钥哈希值hash(s)输出至所述注册端认证数据库。所述模糊保险箱运算模块的输入端连接所述注册密钥生成模块的输出端,所述模糊保险箱运算模块的输出端连接所述注册端认证数据库的输入端;所述模糊保险箱运算模块用于根据所述注册密钥s进行模糊保险箱运算,并将模糊保险箱运算得到的模糊保险箱v输出至所述注册端认证数据库。本系统中,模糊保险箱的具体注册过程为:(1)注册密钥s的处理利用随机数发生器生成128bit密钥s,对密钥s进行crc冗余校验编码后获得144bit的sc,将sc从高位到低位按照每16bits分为一段,平均分成9段s8,s7,s6,......s1,s0,以此为系数构造出8级多项式f(x)=s8x8+s7x7+s6x6+…+s1x1+s0。(2)获得sram特征信息真实点个数为25个,每真实点横坐标位宽为16bit,则一共需要25*16bit的特征数据,因此将sram芯片1划分为400块,统计每一块中0和1的数量,数量较多的值代表着该块的值。通过此方法可获得sram芯片400bit的特征信息,将400bit特征信息构造成真实点横坐标xi(i=1,2,3…..25)。(3)生成真实点集合将(2)中xi(i=1,2,3…..25)带入到多项式f(x)=s8x8+s7x7+s6x6+…+s1x1+s0中可得到坐标(xi,f(xi))(i=1,2,3……25),(xi,f(xi))(i=1,2,3……25)为真实点集合g。(4)生成杂凑点集合随机选取16个震荡点,对这16个震荡点进行200次上电值采集,共得到200个16bit数据,将其作为杂凑点横坐标vj(j=1,2,3……200)。同样的方法,选取19个震荡点,对这19个震荡点进行200次上电值采集,得到200个19bits大小的数据,将其作为杂凑点纵坐标wj(j=1,2,3…….200)。每生成一个杂凑点需要判断该点与其他任意点的距离是否满足人工设定值,如果不满足则判断生成失败,直至生成200个杂凑点为止。(5)纵坐标bch编码对于同一块sram芯片,两次采集的细节点描述子数据会有略微的差异,这一差异是由有些细节点描述子节点是震荡点照成的,所以需要对纵坐标进行bch编码,使得纵坐标和细节点描述子异或运算后生成的帮助数据具有纠错能力。真实点和杂凑点的纵坐标f(xi)和wj进行bch(511,19)编码后得到f(xi)b和(6)构造细节点以sram的地址低9位为横坐标、高9位为纵坐标构造sram坐标系。利用真实点横坐标xi(i=1,2,3…..25)和杂凑点横坐标vj(j=1,2,3…..200)的高八位做横坐标、低八位做纵坐标构造细节点映射到sram坐标系中。称为细节点。(7)细节点描述子加密如图3所示,以每个细节点为中心选取100个细节点描述子,获取每个细节点描述子周围8个单元的值。对于每个细节点,可以获得相应的800bit数据。dq(q=1,2,3……225)表示25个真实点和200个杂凑点的细节点描述子数据,依次取每个真实点和杂凑点的细节点描述子数据,将该真实点或杂凑点的细节点描述子数据的低512位和该真实点或杂凑点的纵坐标f(xi)b和(f(xi)b和是步骤1.6得出的经过bch编码后的纵坐标)进行异或运算得出帮助数据hq(q=1,2,3….225),最终形成模糊保险箱坐标(xi,hq)和(vj,hq)(q=1,2,3….225)(i=1,2,3……25)(j=1,2,3……200),按照xi和vj的从小到大将(xi,hq)和(vj,hq)存储起来。(8)构造模糊保险箱将(xi,hq)和(vj,hq)(q=1,2,3….225)(i=1,2,3……25)(j=1,2,3……200)存储在数据库中构成模糊保险箱v,同时存储震荡点的地址和密钥s经过哈希处理后的值hash(s)。所述注册端认证数据库的两个输入端分别连接所述模糊保险箱运算模块的输出端和所述第一哈希运算模块的输出端;所述注册端认证数据库用于存储所述模糊保险箱运算模块输出的模糊保险箱v和所述第一哈希运算模块输出的注册密钥哈希值hash(s)。所述模糊保险箱认证模块的两个输入端分别连接所述sram芯片和所述认证端认证数据库,所述模糊保险箱认证模块的输出端连接所述待认证密钥生成模块;所述模糊保险箱认证模块用于根据所述sram芯片产生的随机数以及所述认证端认证数据库,通过模糊保险箱认证运算生成待认证真实点集合g′,并将所述待认证真实点集合g′输出至所述待认证密钥生成模块。具体运算过程如下:(a)采集上电值插入sram芯片,采集一次sram的二进制上电值比特流。(这里,如果插入的是注册阶段所用的那块芯片,则可以最终认证成功,如果插入其他芯片,就会认证失败)(b)获取sram特征信息。将上电值分为400块,每一块大小为655bits,统计每一块中0和1的数量,数量较多的值代表该块的值。计算400块的特征值得出400bit特征信息(与注册阶段采集特征信息的过程类似,每块中0多则该块的特征值为0,若1多该块的特征值为1),将特征信息赋值给xi’(i=1,2,3…..25),xi’(i=1,2,3…..25)为待认证真实点横坐标,位宽为16bit。(c)比对筛选真实点。将得到的xi’与模糊保险箱v集合中的点做对比,如果是合法认证(合法认证即此处的数据点能够与注册阶段的模糊保险箱对应,如果对应不上则会认证失败,表示该芯片没有进行有效注册),可以筛选出模糊保险箱v中横坐标与xi’相同的点(xi,hq)(i=1,2,3……25)。(d)构造细节点。将步骤2.2中获得的真实点集合中xi′高八位和低八位作为细节点坐标(i’=1,2,3……25)。利用sram芯片的地址低9位做横坐标、高9位做纵坐标构造坐标系;将细节点映射到sram芯片构造的坐标系中。(e)细节点描述子解密。以sram芯片坐标系中每个细节点为中心按照图3的方式选取100个点作为细节点描述子,获取每个细节点描述子周围的8个单元的值,每个细节点可获得800bit的细节点描述子数据di′(i=1,2,3……25)。将步骤2.3获得的帮助数据hq与细节点描述子数据di′(i=1,2,3……m)进行异或操作后得到f(xi)b′。(f)纵坐标bch解码。对f(xi)b′进行bch解码可获得真实点的纵坐标f(xi′),从而得到与注册时真实点坐标相同的集合g′=(xi′,f(xi′))(i’=1,2,3……25)。所述待认证密钥生成模块的输入端连接所述模糊保险箱认证模块的输出端,所述待认证密钥生成模块的输出端连接所述第二哈希运算模块的输入端;所述待认证密钥生成模块用于选取所述待认证真实点集合g′中的待认证真实点,根据所选取的待认证真实点构造待认证编码结果sc′,并通过对所述待认证编码结果sc’进行crc校验,获得待认证密钥s’,并将所述待认证密钥s’输出至所述第二哈希运算模块。所述待认证密钥生成模块的具体计算步骤如下:从真实点集合g′中找出至少9个点,利用拉格朗日插值法重构出多项式f(x)=s8x8+s7x7+s6x6+…+s1x1+s0,将多项式f(x)的系数s8,s7,s6,......s1,s0提取出来拼接成sc,再通过crc校验后获得认证密钥s’。所述第二哈希运算模块的输入端连接所述待认证密钥生成模块的输出端,所述第二哈希运算模块的输出端连接所述认证判断模块的输入端;所述第二哈希运算模块用于对所述待认证密钥s’进行哈希运算,并将哈希运算得到的待认证密钥哈希值hash(s’)输出至所述认证判断模块。所述认证判断模块的两个输入端分别连接所述第二哈希运算模块的输出端和所述认证端认证数据库的输出端,所述认证判断模块用于比较所述第二哈希运算模块输入的所述待认证密钥哈希值hash(s’)是否与所述认证端认证数据库中存储的注册密钥哈希值hash(s)一致,若一致则认证成功,否则认证失败。所述认证端认证数据库的两个输出端分别连接所述模糊保险箱认证模块和所述认证判断模块的输入端,所述认证端认证数据库用于迅速与所述注册端认证数据库相同的模糊保险箱v和注册密钥哈希值hash(s)。本实施例所述系统中,更新模糊保险箱和hash(s)的过程如下:每进行一次成功认证或连续三次失败认证后,为保证系统的安全性,选取16个熵值较高的震荡点,对这16个震荡点进行8次上电值采集,共得到128bits数据作为新的注册密钥s并利用新的密钥s重复注册阶段的所有步骤,,将生成的新的模糊保险箱v和hash(s)替换掉数据库中原有的数据。本发明技术方案的优点主要体现在:本发明在注册阶段保证在安全环境下进行注册。在此阶段服务器采集sram-puf的输出分别生成sram-puf的特征信息以及安全密钥s。其中特征信息类似于人类的“指纹模板”,作为该sram-puf的唯一认证信息。使用密钥s加密该特征信息,生成模糊保险箱,并存储于服务器数据库中,从而保证数据库信息的安全性。由于算法中采用了多项式重构以及引入了bch编码,使得模糊保险箱具有容错性。在应用环境中,只要使用的弱认证sram-puf为注册时所使用的芯片,该容错特性可保证受到环境噪声影响产生输出差异的sram芯片仍能成功得到认证。本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1