发明名称 一种基于指纹特征与有限乘法群的共享模糊金库方法
摘要 本发明涉及一种基于指纹特征与有限乘法群的共享模糊金库方法。现有方法存在双方需要存储不同的模糊金库的问题。本发明中的共享信息产生阶段:通过变换双方指纹信息,利用指定交换方法得到共享信息。共享密钥绑定阶段:指纹信息变换后交换产生的共享信息与经Diffie-Hellman密钥交换协议产生的共享密绑定产生共享迷糊金库。共享密钥释放阶段:通过变换双方指纹信息再次构造出共享信息,解锁模糊金库,恢复出共享密钥。本发明利用指纹模糊金库算法保护共享秘钥的同时,将模糊金库减少到一个,并只有通过验证的双方才能将绑定在共享指纹模糊金库中的共享秘钥释放,使本发明具有更好的安全性。
申请公布号 CN104104501A 申请公布日期 2014.10.15
申请号 CN201410323824.2 申请日期 2014.07.08
申请人 杭州电子科技大学 发明人 游林;陈宇磊;王毓娜;张欢欢;邓颀
分类号 H04L9/08(2006.01)I;H04L29/06(2006.01)I 主分类号 H04L9/08(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 杜军
主权项 一种基于指纹特征与有限乘法群的共享模糊金库方法,其特征在于包括两大步:第一步,利用一种新的方式来交换双方的相关指纹信息,构造共享信息,并利用共享信息绑定共享密钥生成一个共享指纹模糊金库;第二步,利用双方指纹信息从共享指纹模糊金库中恢复共享密钥;其中的第一步具体是:1.1.用户A和用户B利用Diffie‑Hellman密钥交换产生共享密钥,以下所有操作都是在有限乘法群<img file="FDA0000534529390000011.GIF" wi="163" he="85" />上进行的,g为G中的生成元;<img file="FDA0000534529390000012.GIF" wi="57" he="76" />表示伽罗华域,p为大素数,具体如下:1.1.1.用户A秘密选定随机自然数a∈G,计算α=g<sup>a</sup> mod p;将α发给用户B;1.1.2.用户B秘密选定随机自然数b∈G,计算β=g<sup>b</sup> mod p;将β发给用户A;1.1.3.用户A计算(g<sup>b</sup>)<sup>a</sup> mod p,然后清除a;1.1.4.用户B计算(g<sup>a</sup>)<sup>b</sup> mod p,然后清除b;1.1.5.用户A和用户B得到的共享密钥k=H(g<sup>ab</sup> mod p),其中H(·)是一个哈希函数,其输出长度固定为128比特,即共享密钥k长度为128比特;由于a和b是保密的,所以即使攻击者知道了p,g,α,β,也很难获得用户A和用户B的共享密钥k;1.2.用户A和用户B利用共享密钥k构造多项式P(x),首先使用CRC循环冗余校验码为k添加16比特作为校验码得到k<sub>CRC</sub>,然后将k<sub>CRC</sub>等分为9段作为多项式P(x)的9个系数,每段长度为16比特;这里多项式P(x)的结构为:P(x)=a<sub>8</sub>x<sup>8</sup>+a<sub>7</sub>x<sup>7</sup>+…+a<sub>1</sub>x+a<sub>0</sub>mod(p′),并且该多项式在有限乘法群<img file="FDA0000534529390000013.GIF" wi="112" he="81" />中运算,即p′=65537,保证每个系数可以用16位二进制数表示而不会产生溢出;1.3.用户A和用户B分别提取各自的指纹特征F<sub>A</sub>=(x<sub>Ai</sub>,y<sub>Ai</sub>,θ<sub>Ai</sub>,t<sub>Ai</sub>)和F<sub>B</sub>=(x<sub>Bj</sub>,y<sub>Bj</sub>,θ<sub>Bj</sub>,t<sub>Bj</sub>),其中i=1,...,s<sub>1</sub>、j=1,...,s<sub>2</sub>;x,y,θ,t分别表示指纹细节点的平面坐标,方向和特征类型,其中特征类型为端点或叉点;s<sub>1</sub>为用户一真实细节点的个数,s<sub>2</sub>为用户二真实细节点的个数;i的取值范围为1到s<sub>1</sub>的自然数,j的取值范围为1到s<sub>2</sub>的自然数;有角标A的字符表示用户A的数据,有角标B的字符表示用户B的数据;同时,用户A和用户B输入个人的注册用户名,分别记作User<sub>1</sub>,User<sub>2</sub>;1.4.分别令u<sub>Ai</sub>=[x<sub>Ai</sub>||y<sub>Ai</sub>],u<sub>Bj</sub>=[x<sub>Bj</sub>||y<sub>Bj</sub>];记集合G<sub>A</sub>={a<sub>Ai</sub>=(u<sub>Ai</sub>,θ<sub>Ai</sub>,t<sub>Ai</sub>)|i=1,...,s<sub>1</sub>},G<sub>B</sub>={a<sub>Bj</sub>=(u<sub>Bj</sub>,θ<sub>Bj</sub>,t<sub>Bj</sub>)|j=1,...,s<sub>2</sub>};用户A和用户B通过信息的交换分别构造共享信息点真实点集合<img file="FDA0000534529390000021.GIF" wi="1489" he="85" />1.5.同时,用户A和用户B各自分别添加r<sub>A</sub>‑s<sub>1</sub>·s<sub>2</sub>和r<sub>B</sub>‑s<sub>1</sub>·s<sub>2</sub>个随机数作为杂凑点,r<sub>A</sub>‑s<sub>1</sub>·s<sub>2</sub>和r<sub>B</sub>‑s<sub>1</sub>·s<sub>2</sub>远远大于s<sub>1</sub>·s<sub>2</sub>,其集合记为Q<sub>A,chaff</sub>={(c<sub>k</sub>,d<sub>k</sub>,e<sub>k</sub>,t<sub>k</sub>)|c<sub>k</sub>,d<sub>k</sub>,e<sub>k</sub>,t<sub>k</sub>∈F<sub>p</sub>d<sub>k</sub>≠P(c<sub>k</sub>),(c<sub>k</sub>,e<sub>k</sub>)≠(u<sub>A</sub>,θ<sub>A</sub>),k=s<sub>1</sub>·s<sub>2</sub>+1,…,r<sub>A</sub>};1.6.最后将得到的用户A的包括真实点和杂凑点在内的所有细节点集合R<sub>A</sub>=Q<sub>R</sub>∪Q<sub>A,chaff</sub>与用户B的包括真实点和杂凑点在内的所有细节点集合R<sub>B</sub>=Q<sub>R</sub>∪Q<sub>B,chaff</sub>做合并,即令R<sub>AB</sub>=R<sub>A</sub>∪(R<sub>B</sub>/Q<sub>R</sub>);1.7.用户A和用户B得到了共享的模糊金库V<sub>AB</sub>={R<sub>AB</sub>,(p′,g,n)};1.8.用户A对集合F<sub>A</sub>运用几何哈希技术生成一个注册哈希表,具体如下:1.8.1.集合F<sub>A</sub>中的第一个点作为基准点,记为<img file="FDA0000534529390000022.GIF" wi="448" he="80" />其它点依次记为<img file="FDA0000534529390000029.GIF" wi="367" he="75" />1.8.2.对指纹细节点进行变换和量化;在M<sub>0</sub>被选作基准点以后,其它点<img file="FDA0000534529390000024.GIF" wi="336" he="74" />将根据M<sub>0</sub>进行校准操作,其变换公式为:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msup><mi>TR</mi><mrow><msub><mi>M</mi><mrow><mi>i</mi><mn>1</mn></mrow></msub><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></mrow></msup><mo>=</mo><mfenced open='(' close=')'><mtable><mtr><mtd><msup><mi>TR</mi><mrow><msubsup><mi>x</mi><mrow><mi>i</mi><mn>1</mn></mrow><mi>A</mi></msubsup><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></mrow></msup></mtd></mtr><mtr><mtd><msup><mi>TR</mi><mrow><msubsup><mi>y</mi><mrow><mi>i</mi><mn>1</mn></mrow><mi>A</mi></msubsup><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></mrow></msup></mtd></mtr><mtr><mtd><msup><mi>TR</mi><mrow><msubsup><mi>&theta;</mi><mrow><mi>i</mi><mn>1</mn></mrow><mi>A</mi></msubsup><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></mrow></msup></mtd></mtr><mtr><mtd><msup><mi>TR</mi><mrow><msubsup><mi>t</mi><mrow><mi>i</mi><mn>1</mn></mrow><mi>A</mi></msubsup><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></mrow></msup></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open='(' close=')'><mtable><mtr><mtd><mi>cos</mi><mrow><mo>(</mo><msubsup><mi>&theta;</mi><mn>0</mn><mi>A</mi></msubsup><mo>)</mo></mrow></mtd><mtd><mi>sin</mi><mrow><mo>(</mo><msubsup><mi>&theta;</mi><mn>0</mn><mi>A</mi></msubsup><mo>)</mo></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>-</mo><mi>sin</mi><mrow><mo>(</mo><msubsup><mi>&theta;</mi><mn>0</mn><mi>A</mi></msubsup><mo>)</mo></mrow></mtd><mtd><mi>cos</mi><mrow><mo>(</mo><msubsup><mi>&theta;</mi><mn>0</mn><mi>A</mi></msubsup><mo>)</mo></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mfenced open='(' close=')'><mtable><mtr><mtd><msubsup><mi>x</mi><mrow><mi>i</mi><mn>1</mn></mrow><mi>A</mi></msubsup><mo>-</mo><msubsup><mi>x</mi><mn>0</mn><mi>A</mi></msubsup></mtd></mtr><mtr><mtd><msubsup><mi>y</mi><mrow><mi>i</mi><mn>1</mn></mrow><mi>A</mi></msubsup><mo>-</mo><msubsup><mi>y</mi><mn>0</mn><mi>A</mi></msubsup></mtd></mtr><mtr><mtd><msubsup><mi>&theta;</mi><mrow><mi>i</mi><mn>1</mn></mrow><mi>A</mi></msubsup><mo>-</mo><msubsup><mi>&theta;</mi><mn>0</mn><mi>A</mi></msubsup></mtd></mtr><mtr><mtd><msubsup><mi>t</mi><mrow><mi>i</mi><mn>1</mn></mrow><mi>A</mi></msubsup></mtd></mtr></mtable></mfenced><mo>,</mo><mn>1</mn><mo>&le;</mo><mi>i</mi><mn>1</mn><mo>&le;</mo><msub><mi>s</mi><mn>1</mn></msub><mo>-</mo><mn>1</mn></mrow>]]></math><img file="FDA0000534529390000025.GIF" wi="1500" he="383" /></maths>点<img file="FDA0000534529390000026.GIF" wi="426" he="78" />变换后的横坐标,纵坐标,脊线方向角值和类型记作<img file="FDA0000534529390000027.GIF" wi="894" he="90" />以M<sub>0</sub>为基准点时的变换特征点的集合<img file="FDA0000534529390000028.GIF" wi="780" he="86" />然后对集合T<sub>0</sub>中的每一点进行如下量化:<img file="FDA0000534529390000031.GIF" wi="829" he="432" />这里形成的点<img file="FDA0000534529390000032.GIF" wi="722" he="85" />是量化后的结果,其中坐标值和角度的量化参数λ和μ的选择与注册阶段提取的细节点坐标值范围和验证阶段系统要达到的精度有关,此时形成的集合<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>E</mi><msub><mi>H</mi><mn>0</mn></msub></msub><mo>=</mo><msub><mi>M</mi><mn>0</mn></msub><mo>&cup;</mo><mo>{</mo><msub><mi>M</mi><mrow><mi>i</mi><mn>1</mn></mrow></msub><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>=</mo><mrow><mo>(</mo><msubsup><mi>x</mi><mrow><mi>i</mi><mn>1</mn></mrow><mi>A</mi></msubsup><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>y</mi><mrow><mi>i</mi><mn>1</mn></mrow><mi>A</mi></msubsup><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>&theta;</mi><mrow><mi>i</mi><mn>1</mn></mrow><mi>A</mi></msubsup><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>t</mi><mrow><mi>i</mi><mn>1</mn></mrow><mi>A</mi></msubsup><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>}</mo><mo>,</mo></mrow>]]></math><img file="FDA0000534529390000033.GIF" wi="1036" he="94" /></maths>即是当以M<sub>0</sub>为基准点时,其他各点形成的注册哈希表中的其中一组值;1.8.3.其它各组注册哈希表的生成过程,只需重复1.8.1和1.8.2,直到所有其它的点<img file="FDA0000534529390000034.GIF" wi="382" he="80" />依次作为基准点为止,其它各组的哈希值可以记为<img file="FDA0000534529390000035.GIF" wi="418" he="85" />最后形成完整的注册哈希表<img file="FDA0000534529390000036.GIF" wi="397" he="95" /><maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msubsup><mi>E</mi><mi>H</mi><mi>A</mi></msubsup><mo>=</mo><msub><mi>E</mi><msub><mi>H</mi><mn>0</mn></msub></msub><mo>&cup;</mo><msub><mi>E</mi><msub><mi>H</mi><mn>1</mn></msub></msub><mo>&cup;</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>&cup;</mo><msub><mi>E</mi><msub><mi>H</mi><mrow><msub><mi>s</mi><mn>1</mn></msub><mo>-</mo><mn>1</mn></mrow></msub></msub><mo>;</mo></mrow>]]></math><img file="FDA0000534529390000037.GIF" wi="586" he="91" /></maths>1.9.用户B重复用户A在步骤1.8中所做的工作,得到用户B的注册哈希表<img file="FDA0000534529390000038.GIF" wi="98" he="87" />至此密钥绑定过程完成,系统保存的数据为用户A和用户B的完整的注册哈希表数据<img file="FDA0000534529390000039.GIF" wi="86" he="84" />和<img file="FDA00005345293900000310.GIF" wi="115" he="82" />一个用户A和用户B共享的模糊金库V<sub>AB</sub>={R<sub>AB</sub>,(p′,g,n)};其中保存注册哈希表的目的是校准注册指纹图像和查询指纹图像的细节点特征信息;其中的第二步具体是:用户A与用户B共享一个模糊金库,即需要用户A和用户B合作才能完成模糊金库的解锁过程,取得共享密钥;用户A或用户B无法单独进行模糊金库解锁,即无法单独取得共享密钥;假设用户A想恢复共享密钥,其需要做的工作如下:2.1.用户A输入个人的查询用户名记作User,判断User是否为User<sub>1</sub>,若用户名正确则寻找与User<sub>1</sub>相对应的注册哈希表<img file="FDA00005345293900000311.GIF" wi="99" he="77" />若不正确则向用户提示错误,并要求重新输入,直至用户名正确;否则一直停滞在此,不进行其它操作;2.2.用户A的查询指纹图像中每个细节点的平面坐标和方向角均线性映射到<sub>[0,255]</sub>,分别用8比特表示;真实细节点集合F′<sub>A</sub>={(x′<sub>Ai</sub>,y′<sub>Ai</sub>,θ′<sub>Ai</sub>,t′<sub>Ai</sub>)|i=1,...,s′<sub>1</sub>},其中x′,y′,θ′,t′分别表示查询指纹细节点的平面坐标,方向和类型;2.3.从F′<sub>A</sub>中任意选取一个细节点作为基准点,用注册时使用的几何哈希技术生成含有s′<sub>1</sub>个元素的一组验证哈希表,将它与保存在系统中的注册哈希表<img file="FDA0000534529390000041.GIF" wi="79" he="85" />中的s<sub>1</sub>组数据进行对比;将注册哈希表<img file="FDA0000534529390000042.GIF" wi="74" he="82" />中匹配数目最多的一组数据中的基准点<img file="FDA0000534529390000043.GIF" wi="540" he="85" />添加到候选的真实细节点集合Q′<sub>A</sub>,其中0≤basis_j≤s′<sub>1</sub>;重新选择基准点,并在计算得到了一组新哈希值后,再重新进行匹配;直至遍历选取F′<sub>A</sub>中所有细节点作为基准点;如果真实细节点集合Q′<sub>A</sub>的个数,即|Q′<sub>A</sub>|小于9,则无法从s′<sub>1</sub>组哈希值中获取一组匹配数目大于9的数据,此次验证失败,并要求用户重新输入指纹图像;当用户被要求输入指纹图像的次数超过3次,则告知用户验证失败,中止密钥恢复;2.4.经过步骤2.3用户A得到真实的指纹细节点集合记作<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msubsup><mi>Q</mi><mi>A</mi><mo>&prime;</mo></msubsup><mo>=</mo><mo>{</mo><mrow><mo>(</mo><msubsup><mi>x</mi><mi>w</mi><mi>A</mi></msubsup><mo>,</mo><msubsup><mi>y</mi><mi>w</mi><mi>A</mi></msubsup><mo>,</mo><msubsup><mi>&theta;</mi><mi>w</mi><mi>A</mi></msubsup><mo>,</mo><msubsup><mi>t</mi><mi>w</mi><mi>A</mi></msubsup><mo>)</mo></mrow><mo>|</mo><mi>w</mi><mo>=</mo><mn>1</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mo>|</mo><msubsup><mi>Q</mi><mi>A</mi><mo>&prime;</mo></msubsup><mo>|</mo><mo>}</mo><mo>,</mo></mrow>]]></math><img file="FDA0000534529390000044.GIF" wi="843" he="84" /></maths>令<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><msubsup><mi>u</mi><mi>w</mi><mi>A</mi></msubsup><mo>=</mo><msubsup><mi>x</mi><mi>w</mi><mi>A</mi></msubsup><mo>|</mo><mo>|</mo><msubsup><mi>y</mi><mi>w</mi><mi>A</mi></msubsup><mo>,</mo><mi>w</mi><mo>=</mo><mn>1</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mo>|</mo><msubsup><mi>Q</mi><mi>A</mi><mo>&prime;</mo></msubsup><mo>|</mo><mo>,</mo></mrow>]]></math><img file="FDA0000534529390000045.GIF" wi="643" he="90" /></maths>得到<img file="FDA0000534529390000046.GIF" wi="697" he="89" />同时用户A向用户B发送释放共享密钥的请求;2.5.用户B重复用户A在步骤2.2,2.3与2.4的工作,验证指纹通过,得到<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><msubsup><mi>Q</mi><mi>B</mi><mo>&prime;</mo></msubsup><mo>=</mo><mo>{</mo><mrow><mo>(</mo><msubsup><mi>x</mi><mi>w</mi><mi>B</mi></msubsup><mo>,</mo><msubsup><mi>y</mi><mi>w</mi><mi>B</mi></msubsup><mo>,</mo><msubsup><mi>&theta;</mi><mi>w</mi><mi>B</mi></msubsup><mo>,</mo><msubsup><mi>t</mi><mi>w</mi><mi>B</mi></msubsup><mo>)</mo></mrow><mo>|</mo><mi>w</mi><mo>=</mo><mn>1</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mo>|</mo><msubsup><mi>Q</mi><mi>B</mi><mo>&prime;</mo></msubsup><mo>|</mo><mo>}</mo><mo>,</mo><msubsup><mi>Q</mi><mi>B</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msubsup><mo>=</mo><mo>{</mo><mrow><mo>(</mo><msubsup><mi>u</mi><mi>w</mi><mi>B</mi></msubsup><mo>,</mo><msubsup><mi>&theta;</mi><mi>w</mi><mi>B</mi></msubsup><mo>,</mo><msubsup><mi>t</mi><mi>w</mi><mi>B</mi></msubsup><mo>)</mo></mrow><mo>|</mo><mi>w</mi><mo>=</mo><mn>1</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mo>|</mo><msubsup><mi>Q</mi><mi>B</mi><mo>&prime;</mo></msubsup><mo>|</mo><mo>}</mo><mo>,</mo></mrow>]]></math><img file="FDA0000534529390000047.GIF" wi="1451" he="91" /></maths>其中Q′<sub>B</sub>为用户B的真实细节点集合,Q′<sub>B</sub>为用户B串接后用于多项式计算真实细节点集合,|Q′<sub>B</sub>|为用户B真实细节点的个数;在收到释放请求后,验证是否是合法的合作用户A,不是则不发送消息;是则在集合Q″<sub>B</sub>中随机选取一个元素计算<img file="FDA0000534529390000048.GIF" wi="364" he="89" />a∈<sub>R</sub>{1,...,|Q′<sub>B</sub>|},并将β′<sub>1</sub>发送给用户A;2.6.用户A收到用户B发送的β′<sub>1</sub>后,计算<img file="FDA0000534529390000049.GIF" wi="1469" he="99" />2.7.将集合V<sub>A</sub>与R<sub>AB</sub>相匹配,设经过匹配算法,比对得到的候选真实细节点的集合为<img file="FDA00005345293900000410.GIF" wi="715" he="70" />l≥9,最后运用牛顿插值法重构8次多项式P(x)得到包含CRC校验码的共享密钥,并通过CRC循环冗余校验码验证共享秘钥的正确性;2.8.用户B也可以通过相同的步骤恢复共享密钥。
地址 310018 浙江省杭州市下沙高教园区2号大街