[0010] 步骤四、系统公布一个与细节点集合M无交集的公共点集合PM,PM中点的个数为p,其中当n≥t时p=0,否则,p=t-n;
[0011] 步骤五、将公共点集合PM与细节点集合M进行合并得到合并点集AM,使用r0,r2,…,rt和AM进行fuzzy vault编码,得到模糊保险箱V,将V、PM以及L作为密钥绑定部分的结果,密钥绑定部分结束;
[0012] 步骤六、获取密钥绑定部分的结果V、PM以及L,并提取验证指纹的细节点集合M';
[0013] 步骤七、判断PM是否为空,若PM为空,执行步骤八,否则执行步骤九;
[0014] 步骤八、使用M'与V进行fuzzy vault解码,得到r'0,r'2,…,r't,将r'0,r'2,…,r't-1合并,并取前L位重构出密钥K',使用密码哈希函数h(x)计算K'的哈希值HK'=h(K'),判断r't与HK'中的某个连续16比特是否对应,若对应,则密钥解绑定成功,返回密钥K',否则密钥解绑定失败,密钥解绑定部分结束;
[0015] 步骤九、将PM与M'进行合并得到合并点集AM',使用AM'与V进行fuzzy vault解码,得到r'0,r'2,…,r't,将r'0,r'2,…,r't-1合并,并取前L位重构出密钥K',使用密码哈希函数h(x)计算K'的哈希值HK'=h(K'),判断r't是否与HK'中的某个连续16比特对应,若对应,则密钥解绑定成功,返回密钥K',否则密钥解绑定失败,密钥解绑定部分结束。
[0016] 本发明的有益效果是:该方法首先对密钥进行补位处理,不满足16比特倍数的情况下补足,同时在进行fuzzy vault运算之前,根据采集到的指纹细节点数目和密钥长度,由系统提供一个公共点集合,公共点集合与细节点集合配合使用,以满足fuzzy vault编码需求,在fuzzy vault解码时,使用密码哈希函数进行校验,提高了密钥绑定方法的安全性。由系统提供一个公共点集合,使得当需要的密钥过长,常规采集到的指纹细节点个数无法满足密钥绑定的需求时,指纹细节点集合配合公共点集合可以满足fuzzy vault方法的编码需求。由于对密钥长度进行补位处理,密钥的长度要求不再受限制。
[0017] 下面结合附图和具体实施方式对本发明作详细说明。
附图说明
[0018] 图1是本发明自适应指纹细节点数量的密钥绑定方法的流程图。
具体实施方式
[0019] 名词解释:
[0020] K:密钥,表示为比特串。
[0021] L:密钥的长度,单位为比特。
[0022] t:密钥K拆分出来的子比特串个数。
[0023] r0,r2,…,rt-1:密钥K拆分出来的长度为16比特的子比特串。
[0024] h(x):密码哈希函数,如MD5、MD4、SHA1等。
[0025] HK:密钥K的哈希值。
[0026] rt:HK中随机选取连续的16比特的子比特串。
[0027] F:拉格朗日多项式。
[0028] M:注册指纹细节点集合。
[0029] n:注册指纹细节点个数。
[0030] Nmin:注册时需要的最少细节点个数。
[0031] PM:系统提供的公共点集合。
[0032] p:公共点集合中点的个数。
[0033] AM:公共点集合PM与细节点集合M合并后的合并点集。
[0034] CM:fuzzy vault方法添加的杂凑点集。
[0035] S:CM中点的个数。
[0036] V:模糊保险箱,使用CM、AM、F进行fuzzy vault编码得到。
[0037] M':验证指纹的细节点集合。
[0038] d:M'中点的个数。
[0039] F':拉格朗日插值公式。
[0040] AM':PM与M'进行合并得到合并点集。
[0041] r'0,r'2,…,r't:使用fuzzy vault方法解码出来的子字符串。
[0042] K':由r'0,r'2,…,r't-1重构出来的密钥。
[0043] HK':使用密码哈希函数h(x)计算K'得到的哈希值。
[0044] 参照图1。本发明自适应指纹细节点数量的密钥绑定方法具体步骤如下:
[0045] 步骤一、计算密钥K的长度L,L的单位为比特,将密钥K拆分为长度为16比特的t个子比特串r0,r2,…,rt-1,rt-1不足16比特时,以数字0补齐至16比特;
[0046] 步骤二、使用密码哈希函数h(x)计算密钥K的哈希值HK=h(K),在HK中随机选取连续的16比特作为rt;
[0047] 步骤三、提取注册指纹的细节点集合M,M中细节点个数为n,若n
[0048] 步骤四、系统公布一个与细节点集合M无交集的公共点集合PM,PM中点的个数为p,其中当n≥t时p=0,否则,p=t-n;
[0049] 步骤五、将公共点集合PM与细节点集合M进行合并得到合并点集AM,使用r0,r2,…,rt和AM进行fuzzy vault编码,得到模糊保险箱V,将V、PM以及L作为密钥绑定部分的结果,密钥绑定部分结束;
[0050] 步骤六、获取密钥绑定部分的结果V、PM以及L,并提取验证指纹的细节点集合M';
[0051] 步骤七、判断PM是否为空,若PM为空,执行步骤八,否则执行步骤九;
[0052] 步骤八、使用M'与V进行fuzzy vault解码,得到r'0,r'2,…,r't,将r'0,r'2,…,r't-1合并,并取前L位重构出密钥K',使用密码哈希函数h(x)计算K'的哈希值HK'=h(K'),判断r't与HK'中的某个连续16比特是否对应,若对应,则密钥解绑定成功,返回密钥K',否则密钥解绑定失败,密钥解绑定部分结束;
[0053] 步骤九、将PM与M'进行合并得到合并点集AM',使用AM'与V进行fuzzy vault解码,得到r'0,r'2,…,r't,将r'0,r'2,…,r't-1合并,并取前L位重构出密钥K',使用密码哈希函数h(x)计算K'的哈希值HK'=h(K'),判断r't是否与HK'中的某个连续16比特对应,若对应,则密钥解绑定成功,返回密钥K',否则密钥解绑定失败,密钥解绑定部分结束。
[0054] 应用实施例:
[0055] 步骤一,将长度为L的密钥K拆分为长度为16比特的t个子比特串r0,r2,…,rt-1,rt-1不足16比特时,以数字0补齐至16比特。
[0056] 选取一种密码哈希函数h(x),密码哈希函数具有易计算、不易反向推导出信息、哈希值唯一以及可抵御绝大多数攻击手段等特点,密码哈希函数有多种,如MD4、MD5、SHA1等,本实施例使用MD5密码哈希函数,该函数的计算过程见R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc.April 1992。
[0057] 使用h(x)计算密钥K的哈希值HK=h(K),在HK中随机选取连续的16比特作为rt,将r0,r2,…,rt作为多项式系数构造拉格朗日多项式F
[0058] F(x)=r0+r1x+r2x2+...+rtxt
[0059] F(x)将用于fuzzy vault的编码计算;
[0060] 步骤二,获取注册指纹的细节点集合 其中n是提取到的细节点个数,设定Nmin为注册时需要的最少细节点个数,在本实施例中,Nmin=5,若n
[0061] 系统构造公共点集合 PM中点的个数为p,当n≥t时,p=0,否则,p=t-n。PM中的点随机给出,但需要满足PM与M没有交集,将PM和M进行合并,得到合并点集AM。
[0062] 系统产生杂凑点集合 CM中点的个数为s,CM中的点随机给出,但需要满足CM与AM没有交集。
[0063] 步骤三,参照Fingerprint-based fuzzy vault:Implementation and performance.IEEE Transactions on Information Forensics and Security,2007,2(4),pp.744-757中Vault Encoding部分,使用CM、AM、F进行fuzzy vault编码,最终得到模糊保险箱V,将V、PM以及L共同作为密钥绑定部分的结果。
[0064] 步骤四,提取验证指纹的细节点集合 其中d是M'中点的个数;构造拉格朗日插值公式F’
[0065]
[0066] 其中a、b分别是用于fuzzy vault解码的点的横坐标和纵坐标。
[0067] 步骤五,判断公共点集PM是否为空,若PM为空,执行步骤六,否则执行步骤七;
[0068] 步骤六,参照Fingerprint-based fuzzy vault:Implementation and performance.IEEE Transactions on Information Forensics and Security,2007,2(4),pp.744-757中Vault Decoding部分,使用M'、V以及F'进行fuzzy vault解码,得到r'0,r'2,…,r't,将r'0,r'2,…,r't-1合并,并取前L位作为密钥K',使用密码哈希函数h(x)计算K'的哈希值HK'=h(K'),判断r't与HK'中的某个连续16比特是否对应,若对应,则密钥解绑定成功,返回密钥K',否则密钥解绑定失败,密钥解绑定部分结束;
[0069] 步骤七,将PM与M'进行合并得到合并点集AM',使用AP'与V进行fuzzy vault解码,得到r'0,r'2,…,r't,将r'0,r'2,…,r't-1合并,并取前L位作为密钥K',使用密码哈希函数h(x)计算K'的哈希值HK'=h(K'),判断r't是否与HK'中的某个连续16比特对应,若对应,则密钥解绑定成功,返回密钥K',否则密钥解绑定失败,密钥解绑定部分结束。