一种手指静脉模糊保险箱加密方法与流程

文档序号:12468218阅读:来源:国知局

技术特征:

1.一种手指静脉模糊保险箱加密方法,包括手指静脉图像预处理、特征点提取、模糊保险箱算法加密及模糊保险箱算法解密,其特征是:图像预处理得到细化的指静脉图像,特征点提取后保存为特征模板用于加密与解密,所述模糊保险箱算法加密是通过提取出的手指静脉特征点的坐标信息和密钥构成的编码多项式通过数学方法的结合来建立模糊保险箱,所述模糊保险箱算法解密是提取测试用户的现场手指静脉特征样本对模糊保险箱进行解密、搜索出真实点集、进行编码多项式重构、通过重构的编码多项式系数来恢复密钥。

2.根据权利要求1所述的手指静脉模糊保险箱加密方法,其特征是:所述特征点提取是将静脉骨架图像中的交叉点和端点作为手指静脉的特征点从图像中提取出来,将其数量和坐标信息作为特征信息。

3.根据权利要求2所述的手指静脉模糊保险箱加密方法,其特征是:用平面位置信息(x,y)来描述手指静脉特征点,假设要加密的密钥K长度为16n bits,所有的运算都是在有限域GF(216)上进行,所述模糊保险箱算法加密的具体步骤如下:

(1)首先通过密钥K来构造出编码多项式p(x),

将K顺序分割为n个长度为16bits的字符串,即K=knkn-1…k1,计算出K的CRC-16值记为k0,将kn,kn-1,…,k0依次分别作为多项式高阶到低阶的系数,即:

p(x)=knxn+kn-1xn-1+…+k1x+k0

(2)建立模糊保险箱中的真实点集,

提取出注册手指静脉模板的特征点集合MT={(xi,yi)},i=1,2,…,N,其中N是特征点的数量,将每个特征点的横纵坐标(xi,yi)用8bits的字符串表示,并把它们简单的串联起来成为一个长度为16bits的字符串,进行GF(216)上的量化,结果记为ui,将ui映射到编码多项式p(x)上,得到集合U={ui,p(ui)},i=1,2,…,N,该集合即为所建立的模糊保险箱的真实特征点集;

(3)添加杂凑点构成最终的模糊保险箱,

随机产生一定数量的杂凑点,杂凑点集合表示为C{mj,nj},j=1,2,…,Nc,Nc是杂凑点的数量、且Nc>>N,同时杂凑点均不在编码多项式上,即nj≠p(mj),j=1,2,…,N',把真实点集和杂凑点集混合在一起构成最后的模糊保险箱

4.根据权利要求3所述的手指静脉模糊保险箱加密方法,其特征是所述模糊保险箱算法解密的具体步骤如下:

(1)现场采集测试用户的手指静脉样本,

从中提取出手指静脉特征点,得到用来解密的手指静脉特征点集MQ={(xi',yi')},i=1,2,…,N',将模糊保险箱中所有点的横坐标ak拆分成两个8bits的数,表示为(xi*,yi*);

(2)从模糊保险箱中筛选出符合条件的点,建立候选点集,

将测试用户的手指静脉特征点集与模糊保险箱中的点一一进行比较,计算所有点之间的平面距离

<mrow> <mi>d</mi> <mo>=</mo> <msqrt> <mrow> <msup> <mrow> <mo>(</mo> <msup> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>&prime;</mo> </msup> <mo>-</mo> <msup> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>*</mo> </msup> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msup> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>&prime;</mo> </msup> <mo>-</mo> <msup> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>*</mo> </msup> <mo>)</mo> </mrow> <mn>2</mn> </msup> </mrow> </msqrt> </mrow>

从模糊保险箱中筛选出所有符合条件的点,其中是预先指定的阈值,取阈值经过阈值筛选以后得到的所有候选点便构成了候选点集T;

(3)利用候选点集重构编码多项式,

对候选点集T,从中任取n+1个候选点通过拉格朗日插值法对多项式进行重构:

<mfenced open = "" close = ""> <mtable> <mtr> <mtd> <mrow> <msup> <mi>p</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <mo>(</mo> <mi>x</mi> <mo>-</mo> <msub> <mi>g</mi> <mn>2</mn> </msub> <mo>)</mo> <mo>(</mo> <mi>x</mi> <mo>-</mo> <msub> <mi>g</mi> <mn>3</mn> </msub> <mo>)</mo> <mo>...</mo> <mo>(</mo> <mi>x</mi> <mo>-</mo> <msub> <mi>g</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> <mrow> <mo>(</mo> <msub> <mi>g</mi> <mn>1</mn> </msub> <mo>-</mo> <msub> <mi>g</mi> <mn>2</mn> </msub> <mo>)</mo> <mo>(</mo> <msub> <mi>g</mi> <mn>1</mn> </msub> <mo>-</mo> <msub> <mi>g</mi> <mn>3</mn> </msub> <mo>)</mo> <mo>...</mo> <mo>(</mo> <msub> <mi>g</mi> <mn>1</mn> </msub> <mo>-</mo> <msub> <mi>g</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> </mfrac> <msub> <mi>h</mi> <mn>1</mn> </msub> <mo>+</mo> <mfrac> <mrow> <mo>(</mo> <mi>x</mi> <mo>-</mo> <msub> <mi>g</mi> <mn>1</mn> </msub> <mo>)</mo> <mo>(</mo> <mi>x</mi> <mo>-</mo> <msub> <mi>g</mi> <mn>3</mn> </msub> <mo>)</mo> <mo>...</mo> <mo>(</mo> <mi>x</mi> <mo>-</mo> <msub> <mi>g</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> <mrow> <mo>(</mo> <msub> <mi>g</mi> <mn>2</mn> </msub> <mo>-</mo> <msub> <mi>g</mi> <mn>1</mn> </msub> <mo>)</mo> <mo>(</mo> <msub> <mi>g</mi> <mn>2</mn> </msub> <mo>-</mo> <msub> <mi>g</mi> <mn>3</mn> </msub> <mo>)</mo> <mo>...</mo> <mo>(</mo> <msub> <mi>g</mi> <mn>2</mn> </msub> <mo>-</mo> <msub> <mi>g</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> </mfrac> <msub> <mi>h</mi> <mn>2</mn> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>+</mo> <mo>...</mo> <mo>+</mo> <mfrac> <mrow> <mo>(</mo> <mi>x</mi> <mo>-</mo> <msub> <mi>g</mi> <mn>1</mn> </msub> <mo>)</mo> <mo>(</mo> <mi>x</mi> <mo>-</mo> <msub> <mi>g</mi> <mn>2</mn> </msub> <mo>)</mo> <mo>...</mo> <mo>(</mo> <mi>x</mi> <mo>-</mo> <msub> <mi>g</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> <mrow> <mo>(</mo> <msub> <mi>g</mi> <mi>n</mi> </msub> <mo>-</mo> <msub> <mi>g</mi> <mn>1</mn> </msub> <mo>)</mo> <mo>(</mo> <msub> <mi>g</mi> <mi>n</mi> </msub> <mo>-</mo> <msub> <mi>g</mi> <mn>2</mn> </msub> <mo>)</mo> <mo>...</mo> <mo>(</mo> <msub> <mi>g</mi> <mi>n</mi> </msub> <mo>-</mo> <msub> <mi>g</mi> <mrow> <mi>n</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> </mfrac> <msub> <mi>h</mi> <mi>n</mi> </msub> </mrow> </mtd> </mtr> </mtable> </mfenced>

展开以后得到多项式p'(x)=k'nxn+k'n-1xn-1…+k′1x+k'0,把p'(x)各单项式系数转化为二进制序列后串联起来,得到就是待检验密钥,计算的CRC-16值,看是否与k'0相等,若相等,就是真实密钥,若不相等,再次从候选点集中选取n+1个候选点重构密钥,直到遍历候选点集T中所有候选点为止,若依然没有重构出正确的密钥,则该测试用户不是真实用户解密失败。

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