基于指纹的模糊金库方案改进
2011-09-04林刚,游林
林 刚,游 林
(杭州电子科技大学通信工程学院,浙江杭州310018)
0 引言
生物加密技术是将生物模板和密钥结合生成生物密钥,可以取代传统口令对密钥的保护。对于解决密码体制的精确性和生物特征的模糊性的问题,提出了一种模糊金库算法[1]。文献2结合了指纹这一具体的生物特征后,利用模糊金库算法绑定指纹细节点来保护秘密值。在该方案中可以发现秘密值的长度决定了编码多项式的阶,也就决定了恢复秘密值所需细节点数目,更重要的是当秘密值长度较短时,恢复秘密值所需的细节点个数较少,这会增大整个系统的认假率,对系统的安全性有很大的危害[3]。本文提出一种基于指纹的模糊金库改进方案来实现不管秘密值的长度如何,都能达到相同的安全性。
1 模糊金库方案
模糊金库方案是一种适用于集合特征的生物特征加密系统,较好的解决了密码体制精确性和生物特征模糊性之间的矛盾,为密钥绑定算法提供了一个有效的算法模型。其具体内容如下:在上锁过程中,将秘密值编码为多项式的系数,构造出多项式p(x)。选取一个特定的特征集合A={a|a∈RN},对其中每一个元素计算对应的多项式值p(a),从而可以得到真点集G={(ai,p(ai))|i=1,2,…,n},其中n表示该集合的个数。然后用户生成噪声点集C,要求噪声点集C={(xi,yi)|i=1,2,…,m}不符合多项式运算。最后,真点集和噪声点集一起构成金库。在解锁过程中,只有当认证用户的生物特征和注册用户的生物特征在很大程度上重叠,才能识别出基于多项式的点对,也就是真点集,秘密值才能恢复出来。
2 改进的指纹模糊金库方案
为了解决文献2中绑定短秘密值的安全性不高,本方案在原始模糊金库算法的基础上,引入随机密钥来对秘密值进行高级加密标准(Advanced Encryption Standard,AES)加密[4],而通过指纹模糊金库算法对随机密钥进行绑定和恢复。
2.1 上锁过程
上锁过程如图1所示。
图1 上锁过程
该算法所有操作都在有限域GF(65 537)内进行,该域的空间足够大,能够满足金库系统生成,并且有助于提高运算速度。假设需要保护的秘密值为S,可以构造一个8阶多项式:
首先生成8 个16bit的伪随机数 s0,s1,…,s7。令a0=s0,a1=s1,…,a7=s7,然后将 s0~s7串联成一个比特串K=s0s1…s7,通过循环冗余校验编码,计算出K的CRC-16值EK,令a8=EK。在密钥恢复阶段将利用该值来验证恢复的密钥是否正确。
假设通过指纹图像预处理提取得到的模板指纹图像的细节特征点集合为TF={(xi,yi)|i=0,1,…,n-1},其中(xi,yi)代表模板特征点的平面坐标,n为细节点个数。将x、y分别映射到[0,255]的空间范围内,构成8bit长的比特串,然后连接x和y构成16bit的属性量化值z,可以根据TF中所有的元素得到一个属性量化值集合TM={z0,z1,…,zn-1}。将TM中每个元素代入式1中,可以得到模糊金库的真实特征点集合A={(zi,f(zi))|i=0,1,…,n-1}。为了确保模糊金库的安全性,必须向金库中添加随机噪声点集合B={(αj,βj)|j=0,1,…,m -1;m > >n,βj≠f(αj)},其中m 表示噪声点的个数。对于B中的任意元素(αj,βj)都应满足 αj≠zi,i=0,1,…,n-1。合并上述真实点集合A 与噪声点集合B,得到集合V={(vi,wi)|i=0,1,…,m+n-1},即构造的Fuzzy Vault锁集。为了保护秘密值S,采用密钥长度128bits的AES加密算法来实现加密,而K正好符合密钥长度要求。
式中,E(·)表示AES加密过程,ES表示秘密值经过加密后得到的密文。
无论秘密值长度为多少,都可以利用该方案来保护,最后将ES和V都保存在服务器或智能卡上。
2.2 解锁过程
解锁过程如图2所示。
图2 解锁过程
用户要想获取秘密值S,就根据提供的查询指纹从金库集合V和已保存的ES恢复出来。由于查询指纹与模板指纹在提取时会存在平移或旋转,所以本文进行的实验研究都是假设查询指纹事先进行预校准工作。通过现场提供的样本指纹进行预处理和校准工作后,可以提取出查询指纹细节点集合QF={(xqi,yqi)|i=0,1,…,n*-1},n*表示查询指纹细节点的个数。同样将坐标 x、y分别映射到[0,255]的空间范围内,从V中提取出v0,v1,…,vm+n-1,将其分割成两个8bit的数使其作为细节点的平面坐标,可以得到一个模糊金库的平面坐标集合VP={(xvi,yvi)|i=0,1,…,m+n-1}。
利用查询指纹细节点与金库V进行匹配,选取尽可能多的真实点。假设QF中某个细节点A与VP中某个点B的距离小于给定阀值Th,就认为B是一个候选细节点,于是就可以将B对应的点(v,w)添加到候选点集合T中。假设T中包含k个元素,对于一个真实用户来说,k应满足k≤n*<<m+n。这样的话就可以在恢复密钥的时候减少大量的搜索工作。
为了获取秘密值S,就必须先重构出多项式得到随机密钥K,由于多项式的阶是8,那么就必须根据候选点集中的9个点对来重构[5]。假设从含有k个元素的集合T中选取含有9个元素的一个组合{(v0,w0),(v1,w1),…,(v8,w8)},根据这些元素可以得到如下方程组[6]:
通过该种方法计算就可以得到一组系数a'0,a'1,…,a'8,将a'0~a'7串成一个比特串,令K'=a'0a'1…a'7。计算K'的CRC-16值EK',比较EK'和a'8是否相等,如果相等则表示查询指纹是合法的,即K'=K,否则重新从候选集合中选取9个元素进行插值多项式重构,如果遍历完所有的组合都无法重构出,则表示查询指纹是非法用户。
得到K'后只要对密文ES进行解密就可以重新获取秘密值S'。
只要在前文中满足条件K'=K,那么就可以得出S'=S。其中D(·)表示AES解密过程。
3 实验与分析
本实验是结合中科院自动化指纹数据库来完成测试的。在实验中,采用VC++实现上述所有算法[7],实验中选择最优参数M=200,Th=6。在文献3中发现多项式阶是由秘密值的长度来决定的,这样也就确定了匹配细节点的个数,当秘密值长度较短时,要求匹配的细节点数目较少,就导致较高认假率,这给系统带来安全隐患。而本文采取的方法是多项式的构造不依赖于给定秘密值,通过生成伪随机数构造绑定过程所需的多项式。最终由伪随机数构成随机密钥来对秘密值S实现AES加密,所以该方案是基于AES加密算法是安全的。所以采用该方案时,不管需要保护的秘密值S的长度是多少,都可以使其达到相同的安全性。
一个非法用户想获取秘密值S,如果只基于ES想要强行攻击系统来解锁秘密值S是不可能的,一方面本身加密密钥为128bit的AES算法已具有极高的安全性,而且加密密钥是伪随机数构成的,具有很强的随机性。另一方面要想从整个金库V中查找出真实点也是不现实的,在实验中所选取的噪声点个数为200,真实点个数为20。那么暴力攻击可以恢复密钥的概率为。所以要想获得秘密值S,就必须得到加密密钥K,而要想得到K就必须通过提供合法的用户指纹来解锁金库从而恢复出加密密钥K。
4 结束语
本文在原有的指纹模糊金库算法基础上,引入了伪随机数作为随机密钥的想法,并没有直接对秘密值进行绑定和隐藏,这样就避免了在绑定过程中出现多项式阶依赖于秘密值的缺陷。而是对随机密钥进行处理,使其隐藏于整个模糊金库中。另一方面将随机密钥作为秘密值的加密密钥,这其实也就将指纹和秘密值间接的融合起来。这种改进的模糊金库算法在保护秘密值较短时起了很大的作用,降低了恢复短秘密值的认假率,提高了整个系统的安全性能。
[1] Juels A,Sudan M.A Fuzzy Vault Scheme[C].Lausanne:International Symposium on Information Theory,2002:237 -257.
[2] Uludag U,Pankanti S,Jain A K.Fuzzy Vault for Fingerprints[C].New York:Audio and Video-based Biometric Person Authentication,2005:310-319.
[3] Feng Quan,Su Fei,Cai Anni.Fingerprint- Based Key Binding/Recovering Scheme Based on Fuzzy Vault[J].Journal of Electronics,2008,25(3):415 -421.
[4] NationalInstitute of Standards and Technology.Advanced Encryption Standard [EB/OL].http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf,2001 -11 -06.
[5] Shamir A.How to Share a Secret[J].Communications of the ACM,1979,22(11):612-613.
[6] 叶俊,苏跃斌.有限域上插值多项式的两种构造方法[J].四川理工学院学报(自然科学版),2010,23(5):521-522.
[7] 李昊,傅曦.精通Visual C++指纹模式识别系统算法及实现[M].北京:人民邮电出版社,2008:140-165.