发明名称 一种基于指纹特征生成密钥的方法
摘要 本发明涉及一种基于指纹特征生成密钥的方法。本发明包括用户指纹注册阶段和指纹密钥重生阶段,用户指纹注册阶段包括提取用户的指纹二维图像;利用Radon变换生成不同的一维向量;进行                                               N阶离散傅立叶变换和二进制指纹密钥的提取。指纹密钥重生阶段包括提取查询用户的指纹二维图像,采用与注册阶段相同的一些步骤得到最高重量的N个比特组成的比特串。本发明的指纹特征可以真正地作为密钥使用,并且将密钥与用户身份绑定在一起。而安全性是基于指纹的唯一性,也就说用户指纹未被泄露。
申请公布号 CN103258156B 申请公布日期 2016.01.20
申请号 CN201310126451.5 申请日期 2013.04.11
申请人 杭州电子科技大学 发明人 游林;范萌生;王升国
分类号 G06F21/32(2013.01)I;G06K9/00(2006.01)I 主分类号 G06F21/32(2013.01)I
代理机构 杭州君度专利代理事务所(特殊普通合伙) 33240 代理人 杜军
主权项 一种基于指纹特征生成密钥的方法,其特征在于该方法包括用户指纹注册阶段和生物密钥重生阶段;所述的用户指纹注册阶段具体如下:步骤1.提取用户的指纹二维图像,图像归一化,做指纹图像预处理,得到保持指纹特征信息的二值图像,该二值图像记作M<sup>T</sup>;步骤2.图像M<sup>T</sup>以不同的旋转角度,利用Radon变换生成不同的一维向量;一维向量首先用其元素的最大模进行归一化,再去掉均值;归一化后的一维向量记作x<sub>0</sub>(n),n=0,1,2,K,N‑1;N是要求生成生物密钥的比特长度;而x<sub>i</sub>(n)代表第i次迭代的输入向量;步骤3.计算x<sub>i</sub>(n)的N阶离散傅立叶变换获得频谱X<sub>i</sub>(k),频谱大小为|X<sub>i</sub>(k)|;k为频谱的频率值,0≤k≤N‑1;傅里叶变换的结果是对称的,舍掉重复的那部分,取前面那一半幅值,后面舍弃的一半用0补上;这样变换就成为不可逆的,得到实序列:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>y</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mrow><mo>|</mo><msub><mi>X</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>|</mo><mo>,</mo><mi>n</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mi>K</mi><mo>,</mo><mi>N</mi><mo>/</mo><mn>2</mn><mo>-</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>,</mo><mi>n</mi><mo>=</mo><mi>N</mi><mo>/</mo><mn>2</mn><mo>,</mo><mi>K</mi><mo>,</mo><mi>N</mi><mo>-</mo><mn>1</mn></mrow></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0000750847420000011.GIF" wi="755" he="160" /></maths>步骤4.对y<sub>i</sub>(n)计算N阶离散傅立叶变换获得频谱Y<sub>i</sub>(k),然后计算双频谱:B<sub>i</sub>(k<sub>1</sub>,k<sub>2</sub>)=Y<sub>i</sub>(k<sub>1</sub>)Y<sub>i</sub>(k<sub>2</sub>)Y<sub>i</sub><sup>*</sup>(k<sub>1</sub>+k<sub>2</sub>),其中*代表复数共轭运算,双频谱保留相位信息;k<sub>1</sub>,k<sub>2</sub>都是指频谱的频率值,取值范围为[0,N‑1];双频谱都是具有非零虚部的复数向量,且是非对称的;步骤5.在双频率平面内,第i次将双频谱沿径向积分运算得到一组离散序列记为:<img file="FDA0000750847420000012.GIF" wi="572" he="115" />其中<img file="FDA0000750847420000013.GIF" wi="347" he="128" />a是双频率(k<sub>1</sub>,k<sub>2</sub>)空间内的斜率;将积分后的<img file="FDA0000750847420000014.GIF" wi="139" he="116" />作为下次迭代的输入,即<img file="FDA0000750847420000015.GIF" wi="346" he="116" />步骤6.计算迭代前后输入的差值与前一次迭代输入的内积,将得到复值:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>D</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>N</mi><mo>-</mo><mn>1</mn></mrow></munderover><mo>&lsqb;</mo><msub><mi>x</mi><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>x</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>&rsqb;</mo><msub><mi>x</mi><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>M</mi><mi>i</mi></msub><mi>exp</mi><mrow><mo>(</mo><msub><mi>j&phi;</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0000750847420000016.GIF" wi="972" he="140" /></maths>其中D代表差值,M是D的幅值和Φ是D的相位,两个放在一起可以生成一个幅值/相位矩阵[M Φ];步骤7.二进制生物密钥的提取;M,Φ二进制化利用统计学特性判定是否是所需要的比特位,并按照最希望得到的到最不希望得到的比特将其进行排序,分别存储为M<sub>a</sub>,A<sub>g</sub>;而统计学的应用需要一个训练集合;训练集合是指所用的指纹库中多个用户的指纹图像;对于每一个用户,训练集合分为两部分:注册用户指纹图像生成的矩阵,即内部集合;其它用户指纹图像生成的矩阵,即外部集合;比特的概率0或1表示固定不变的水平;概率为0表示无信息,而概率为1表示一个比特信息;但是很少的比特的概率完美就是0或1;于是通过计算每个比特的重量w,包含内部重量w<sub>1</sub>=1‑η<sub>intra</sub>和外部重量w<sub>2</sub>=1‑η<sub>extra</sub>,而w=w<sub>1</sub>×w<sub>2</sub>;η<sub>intra</sub>,η<sub>extra</sub>分别表示比特的内部熵和外部熵;步骤8.最高重量的N个比特组成的比特串作为要提取的生物密钥B<sub>orig</sub>;为了能够重构出相同的生物密钥,将最高重量的N个比特的位置信息存储,并用作注册用户的生物密钥的掩码B<sub>K‑mask</sub>;步骤9.λ‑bits的加密密钥k<sub>orig</sub>通过RS算法加密后得到一个N个比特串K<sub>orig</sub>;将K<sub>orig</sub>与B<sub>orig</sub>结合生成一个查询表Lookup<sub>table</sub>;存储查询表,删除K<sub>orig</sub>与B<sub>orig</sub>;所述的生物密钥重生阶段具体如下:步骤A.提取查询用户的指纹二维图像,指纹图像归一化,做指纹图像预处理,得到保持指纹特征信息的二值图像,该二值图像记作M<sup>Q</sup>;步骤B.验证用户采取注册阶段的步骤1‑步骤7,得到最高重量的N个比特组成的比特串;结合注册用户的生物密钥的掩码B<sub>K‑mask</sub>生成一个比特串,将其作为验证用户的生物密钥B<sub>mod</sub>;步骤C.B<sub>mod</sub>利用Lookup<sub>table</sub>获得N‑bits的比特串K<sub>mod</sub>;利用RS算法对K<sub>mod</sub>解密获得λ‑bits的比特串k'<sub>orig</sub>;若k'<sub>orig</sub>与k<sub>orig</sub>相等,认为验证用户和注册用户是同一个,注册用户的生物密钥成功地重生;否则,就认为验证用户是非法入侵者。
地址 310018 浙江省杭州市下沙高教园区2号大街