一种基于SRAM‑PUF的模糊保险箱的密钥存储方法与流程

文档序号:11515283阅读:420来源:国知局
一种基于SRAM‑PUF的模糊保险箱的密钥存储方法与流程

本发明涉及信息安全技术领域,尤其涉及一种基于sram-puf的密钥存储机制。



背景技术:

现存的密码学安全机制大都基于eeprom,flash等非易失性寄存器(non-volatilememory,nvm)进行安全认证与密钥存储。然而,基于nvm的存储机制需要在集成电路制造过程中加入浮栅晶体管工艺,增加制造成本。同时,nvm存储机制易受侵入式攻击等多种物理攻击的威胁。因此如何在低成本的嵌入式设备中实现高安全性的密钥存储是亟需解决的关键问题之一。

物理不可克隆函数(physicalunclonablefunctions,pufs)作为一种全球新兴的信息安全机制,具有低成本、高安全的特点,正在成为主流的信息安全产业的支撑,能够有效解决上述问题。pufs的本质是一种“芯片指纹”,该“指纹”来源于难以控制、无法预测、不可克隆的芯片制造差异,能够抵御针对nvm的物理攻击。

基于以上分析,pufs在嵌入式设备中可用于替代nvm存储机制进行密钥、id存储。但是,目前存在的基于pufs密钥存储机制存在密钥难以更新的问题:基于pufs的密钥存储机制的本质在于从pufs固有的“芯片指纹”中提取密钥。然而,在密钥失效、到达生命周期等场景下需要动态的更新密钥,pufs电路显然难以满足这一需求。而加入可重构pufs则需要进行专用集成电路设计,增加成本。



技术实现要素:

本发明旨在解决上述问题,提出一种可以动态更新的密钥存储机制,创新性的将pufs的模糊性与密钥的精确性结合加密存储。本发明的目的在于提供一种基于sram-puf的模糊保险箱密钥存储方案,本方案中,密钥来源于密钥管理系统或其他密钥生成机制,pufs仅用于保护该密钥,将密钥储存于模糊保险箱中,确保密钥的安全性。密钥可以任意更新,更具灵活性。

本发明多次采集sram芯片的上电值,若sram某一单元连续两次上电值不同,则算作该单元一次震荡,通过设置参数震荡次数阈值,可以筛选出sram芯片中的震荡点。根据sram芯片的特性,对于同一块sram芯片来说,其震荡点的地址基本不变,只有很小差异,而不同sram芯片的震荡点地址差异巨大。因此本发明将sram芯片中的震荡点地址作为特征模板构造模糊保险箱,同时利用存储密钥构造多项式,将密钥安全的存储在模糊保险箱中。

本发明具体采用如下技术方案:

注册阶段:

第1步,将待存储密钥k与sram芯片匹配,使每块sram芯片仅对应一个密钥k。

第2步,插入sram芯片,采集sram芯片的p次上电值,筛选出sram芯片中震荡次数(若sram某一单元连续两次的上电值不同,则算作一次震荡)大于f的单元作为震荡点并记录其地址。

第3步,对待存储密钥k进行crc编码得到kcrc,将kcrc平均分为d+1段并将所述d+1段的值依次作为系数,构造d级多项式p(x);

第4步,构造真实点横坐标:根据所述真实点个数m确定所需特征信息的数量,选取m个震荡点并将m个震荡点的地址转化到有限域gf(216)中并作为xi(i=1,2,3....m),利用xi构造特征模板a={xi|xi∈gf(216),i=1,2,3…,m}

第5步,构造真实点集合:将第4步所述m个真实点分别带入第3步中所述d级多项式p(x),得到真实点坐标p(xi)(i=1,2,3,...,m),将所述真实点坐标(xi,p(xi))(i=1,2,3,...,m)组合为真实点集合q;

第6步,构造杂凑点集合:利用随机数发生器随机生成n个杂凑点坐标(vj,wj)(j=1,2,3,4......n)作为杂凑点集合q’,杂凑点坐标范围和真实点坐标范围相同。

第7步,对真实点纵坐标p(xi)和杂凑点纵坐标wj进行bch纠错编码,使得该纵坐标出现错误时可以将其纠正,经bch编码后得到(p(xi))bch和(wj)bch,第8步,构造细节点,将所述真实点横坐标按照位宽对半拆分,得到高位真实点横坐标和低位真实点横坐标,将所述高位真实点横坐标和低位真实点横坐标组合为真实细节点(xhi,xli)(i=1,2,3,4.....m);将所述杂凑点横坐标按照位宽对半拆分,得到高位杂凑点横坐标和低位杂凑点横坐标,将所述高位杂凑点横坐标和低位杂凑点横坐标组合为杂凑细节点(vhj,vlj)(j=1,2,3,4.....n)。

第9步,构造细节点描述子:对每一个真实细节点(xhi,xli)和每一个杂凑细节点(vhj,vlj)。依次进行如下步骤:以所述真实细节点(xhi,xli)或所述杂凑细节点(vhj,vlj)为中心按照一定规律(规律由注册者自由选取)选取k个细节点描述子,获取所述每个细节点描述子周围t个地址所对应的数值,并依次将所述k个细节点描述子周围的t个地址所对应的k*tbit数值按照先行后列的顺序排列,构造得到真实点细节点描述子数据mi′(xhi,xli))和杂凑点细节点描述子数据mi′(vhj,vlj))。

第10步,计算帮助数据:将所述每一个真实点纵坐标纠错码与该真实点纵坐标纠错码所对应的描述子数据对应的低位进行异或,将所述每一个杂凑点纵坐标纠错码与该杂凑点纵坐标纠错码所对应的描述子数据对应的低位进行异或,得到真实点帮助数据hreal和杂凑点帮助数据hchaff。

第11步,构造模糊保险箱:将所述真实点横坐标xi(i=1,2,3,…,m),杂凑点横坐标vj(j=1,2,3,…,n)和所述与其对应帮助数据hrealhchaff组合为坐标(xi,hreal)和(vj,hchaff),将其构成模糊保险箱,并将所述模糊保险箱坐标按照真实点横坐标和杂凑点横坐标的数值升序排列,组合为模糊保险箱v,将所述模糊保险箱v存储至所述认证数据库。

重构阶段:

第1步,用户插入sram芯片,系统读取p次sram上电特性,筛选出sram芯片中震荡次数(若sram某一单元连续两次的上电值不同,则算作一次震荡)大于f的单元作为震荡点并记录其地址构造震荡点集合zd。

第2步,将震荡点集合zd与模糊保险箱中坐标点的横坐标做对比,筛选出模糊保险箱横坐标和集合zd重合的坐标点构造重构真实点模板由于sram芯片中震荡点的位置比较固定(约有80%-90%震荡点位置固定),若用户使用合法sram芯片,可从模糊保险箱中对比出l个坐标点作为重构真实点模板qd(由于sram-puf的响应误差,不能保证每次采集的震荡点完全一致,l<m)。

第3步,构造细节点:将第2步中筛选出的重构真实点横坐标xdo按照位宽对半拆分,得到高位真实点横坐标xdho和低位真实点横坐标xdlo,将所述高位真实点横坐标和低位真实点横坐标组合为真实点细节点(xdho,xdlo)(o=1,2,3,4.....l)并映射在sram芯片坐标系中;

第4步,构造细节点描述子:对每一个真实细节点(xdho,xdlo)依次进行如下步骤:以所述真实细节点(xdho,xdlo)按照一定规律(规律由注册者自由选取)选取k个细节点描述子,获取所述每个细节点描述子周围t个地址所对应的数值,并依次将所述k个细节点描述子周围的t个地址所对应的k*tbit数值按照先行后列的顺序排列,构造得到细节点描述子数据mi′(xdho,xdlo);

第5步,将所述细节点描述子数据与真实点对应的帮助数据进行异或操作,获取重构真实点经过纠错编码后的坐标

第6步,将纠错编码后的纵坐标进行纠错码解码,获得重构真实点坐标集合qp={(xdo,p(xdo))|o=1,…,l}。

第7步,重构多项式p(x):从集合qp中选取d+1个坐标,利用拉格朗日插值法重构多项式,取多项式的系数则可获得步骤1-3中提到的kcrc,将kcrc进行crc校验后可得到步骤1-1中使用的待存储密钥,至此完成密钥的获取。

有益效果

本方法利用待存储密钥构造模糊保险箱算法中加密多项式,将sram-puf作为特征模板构造真实点并将真实点加密到多项式中从而构成模糊保险箱。由于不同sram芯片中震荡点位置差异极大,而同一块sram芯片的震荡点位置大致相同,只有极小偏差,因此利用sram芯片这一特性构造模糊保险箱。

同时,本方法将密钥加密到多项式中,而后添加无规律杂凑点,同时确保模糊保险箱中任意两个点之间距离大于某一特定值,该特定值由设计者自行选取,使得攻击者只能采取暴力攻击方法破解,极大的提高了密钥存储的安全性。同时由于sram-puf的不可克隆特性,获取密钥必须持有该密钥对应的sram芯片,这就使得误识率(指用户b使用其sram芯片获取用户a密钥的概率)大大降低。

本方法使用sram-puf构造模糊保险箱,相比于基于生物特征的模糊保险箱,不需要进行一系列图像处理环节,精简了流程,节约了很多资源。

附图说明

图1为根据本发明实施例所述sram-puf模糊保险箱密钥存储方法的总流程图;

图2为根据本发明实施例所述的注册阶段和重构阶段采集的sram芯片中震荡点的分布图;

图3为根据本发明实施例所述的细节点、细节点描述子以及细节点描述子数据之间的位置关系示意图;

图4为根据本发明实施例所述的sram-puf模糊保险箱的密钥存储方法的整体流程示意图;

图5为根据本发明实施例所述的特征模板a的示意图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

本实例中待存储密钥长度为128bit,真实点数目m=25,杂凑点数目n=200,多项式级数d=8。

图4为根据本发明实施例所述的sram-puf模糊保险箱的密钥存储方法的整体流程示意图包括注册和重构两个阶段。所述注册阶段,在安全环境下将密钥存储于模糊保险箱中;所述重构阶段,在应用环境中可从模糊保险箱中提取指定密钥。

如图1所示,所述注册阶段具体注册过程为:

第1步,将待存储密钥与sram芯片匹配,使每一块sram芯片对应一个待存储密钥

第2步,采集sram芯片100次上电值,分析上电值,若某个单元连续两次的上电值不同则记为该单元一次震荡。筛选出sram中震荡次数大于15次的单元作为震荡点并记录其地址。

第3步,对128bit待存储密钥进行crc编码,得到编码结果kcrc(长度为144bit),将编码结果平均分为9段并将所述9段的值依次作为系数,构造8级多项式p(x);

第4步,构造真实点横坐标:从所述第2步得到的震荡点中随机选取25个震荡点并将其地址作为特征模板a={xi|xi∈gf(216),i=1,2,3…,m}。图5为根据本发明实施例所述的特征模板a的示意图。

第5步,构造真实点集合:将第4步所述特征模板a={xi|xi∈gf(216),i=1,2,3…,m}分别带入第3步中所述8级多项式p(x),得到真实点坐标(xi,p(xi))(i=1,2,3,...,25),将所述真实点坐标(xi,p(xi))(i=1,2,3,...,25)组合为真实点集合;

第6步,构造杂凑点集合:利用随机数发生器随机生成200个杂凑点坐标(vj,wj)(j=1,2,3,4......200)。杂凑点坐标范围和真实点坐标范围相同。

第7步,对真实点纵坐标p(xi)和杂凑点纵坐标wj进行bch纠错编码,使得该纵坐标出现错误时可以将其纠正,经bch编码后得到(p(xi))bch和(wj)bch,

第8步,构造细节点,将所述真实点横坐标按照位宽对半拆分,得到高位真实点横坐标和低位真实点横坐标,将所述高位真实点横坐标和低位真实点横坐标组合为真实细节点(xhi,xli)(i=1,2,3,4.....25);将所述杂凑点横坐标按照位宽对半拆分,得到高位杂凑点横坐标和低位杂凑点横坐标,将所述高位杂凑点横坐标和低位杂凑点横坐标组合为杂凑细节点(vhj,vlj)(j=1,2,3,4.....200)。

第9步,构造细节点描述子:对每一个真实细节点(xhi,xli)和每一个杂凑细节点(vhj,vlj)。依次进行如下步骤:以所述真实细节点(xhi,xli)或所述杂凑细节点(vhj,vlj)为中心按照图3选取100个细节点描述子,获取所述每个细节点描述子周围8个地址所对应的数值,并依次将所述100个细节点描述子周围的8个地址所对应的100*8bit数值按照先行后列的顺序排列,构造得到细节点描述子数据,q=1,2,3,…,225;

第11步,计算帮助数据:将所述每一个真实点纵坐标纠错码与该真实点纵坐标纠错码所对应的描述子数据对应的低位进行异或,将所述每一个杂凑点纵坐标纠错码与该杂凑点纵坐标纠错码所对应的描述子数据对应的低位进行异或,得到真实点帮助数据hreal和杂凑点帮助数据hchaff。

第12步,构造模糊保险箱:将所述真实点横坐标xi=1,2,3,…,25,杂凑点横坐标vj=1,2,3,…,200和所述帮助数据hrealhchaff组合为模糊保险箱坐标(xi,hreal)和(vj,hchaff),并将所有模糊保险箱坐标按照横坐标和杂凑点横坐标的数值升序排列,组合为模糊保险箱v,将所述模糊保险箱v存储至所述认证数据库。

重构阶段:

第1步,用户插入sram芯片,系统采集sram芯片100次上电值,筛选出震荡次数大于15次的震荡点,图2为根据本发明实施例所述的注册阶段和重构阶段采集的sram芯片中震荡点的分布图。

第2步,将震荡点集合zd与模糊保险箱中坐标点的横坐标做对比,筛选出模糊保险箱横坐标和集合zd重合的坐标点构造重构真实点模板若用户使用合法sram芯片,由于sram芯片中震荡点的位置比较固定,因此可以从模糊保险箱中对比得到l个真实点(由于sram-puf的响应误差,大约可以筛选出80%~90%的真实点,因此9<l<25)。

第3步,构造细节点,将所述重构真实点横坐标xdo按照位宽对半拆分,得到高位真实点横坐标和低位真实点横坐标,将所述高位真实点横坐标和低位真实点横坐标组合为重构真实细节点(xdho,xdlo)(o=1,2,3,4.....l);

第4步,构造细节点描述子:对每一个重构真实细节点(xdho,xdlo)依次进行如下步骤:以所述重构真实细节点(xdho,xdlo)按照一定规律(规律由注册者自由选取)选取100个细节点描述子,获取所述每个细节点描述子周围8个地址所对应的数值,并依次将所述k个细节点描述子周围的t个地址所对应的100*8bit数值按照先行后列的顺序排列,构造得到细节点描述子数据mi′(xdho,xdlo);

第5步,将所述细节点描述子数据与重构真实点对应的帮助数据进行异或操作,获取每个真实点经过纠错编码后的纵坐标。

第6步,将纠错编码后的纵坐标进行纠错码解码,从而获得真实点坐标集合qp={(xdo,p(xdo))|o=1,…,l}。

第7步,重构多项式p(x):从集合qp中任意选取9个真实点坐标,使用拉格朗日插值法重构多项式p(x),取重构多项式的系数则可获得步骤1-3中提到的kcrc,将kcrc进行crc校验后可得到步骤1-1中使用的待存储密钥,至此完成密钥的获取。

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