周 迪 胡伟通 鲍 狄 陈宇磊 游 林*
1(浙江宇视科技研究院 浙江 杭州 310051) 2(杭州电子科技大学网安学院 浙江 杭州 310018) 3(浙商银行股份有限公司 浙江 杭州 310003)
依据Kerckhoffs准则[1],一个密码系统的安全性,并不是因为一个对于对手来说保密的算法,而是因为它的密钥对于对手来说保密,换言之,一个密码系统的加密算法可以是公开的,只要保证使用的密钥安全性就能保证整个系统安全。因而,对于密钥的保护成了密码系统中最重要的一环,而生物特征识别技术在各种角度上对于密钥的管理、储存的安全性有极大帮助。与传统的口令不同,口令能够被字典攻击破解,而基于人类某项或某几项生物特征进行加密,由于生物特征本身的多样性、复杂性,使得攻击者很难构造类似的生物特征字典来进行暴力破解,另外因为生物特征具体是人的指纹、虹膜、掌纹、声纹等信息,比起传统的以某种持有物作为密钥相比,在面对转移和窃取手段时天然具备更好的安全特性。本文尝试以生物特征为基础构造一种身份认证方案,可生物特征识别技术也并非完美,它同样存在一些问题,主要体现在生物特征普适性和模板安全性上。为此,将多生物特征识别技术和密码技术相结合来较好地解决上述两个问题。
模糊金库是一种利用具有某些特定属性的集合来保护秘密信息的特殊属性集合,而基于单一样本生物特征的模糊金库在安全性上越来越无法满足社会生活的实际需求,从而结合多种生物样本特征构造新型多样本生物特征模糊金库应运而生。
本文将对来自两枚不同手指的两个指纹进行预校准后的指纹图像作为多样本(在这里也就是双样本),然后利用Diffie-Hellman密钥交换协议的思想,提出基于有限乘法群上离散对数安全的一种双指纹特征融合方法,并由此产生一个全新的虚拟指纹特征模板,随后结合经典模糊金库算法,提出了一种基于两枚不同指纹融合模糊金库的身份认证方案,并且在测试中取得了较好的效果。
本文首先对模糊金库和指纹特征处理技术进行了简单的介绍,以Diffie-Hellman密钥交换协议为灵感来源,提出了一种乘法群上细节点与方向场的融合方法。随后将产生的融合特征分别与经典模糊金库结合,构建了一种新的模糊金库方案,并进行了实验仿真,最后对实验结果做了分析。
模糊金库方案是一种经典的生物特征与密码技术相结合绑定的方案,其思想最早在2002年IEEE信息论国际会议上由Juels等[2]提出。该方案是利用使用者的某些特定属性的集合,如用户特定归属类别的数字化集合,当做密钥,然后利用某种特定的某种数学方法将使用者的秘密信息隐藏储存在一个特别的方程系统或者是一个特殊集合中,使用者只要保护好这个信息即可。当且仅当使用者将原先特定的归属类别的数字化集合(或者其他使用者特定属性集合)输入才能正确完整获取隐藏储存在其中的秘密信息,值得一提的是模糊金库方案中,并不一定要将整个特定属性集合完整无误的输入,而是只要达到一个近乎相同的水平。文献[3-7]分别对基于指纹特征的模糊金库方案各方面进行了研究,同时也取得了比较好的成果。基于指纹特征的模糊金库方案是目前在理论研究及实际应用上最为成熟的。(指纹)模糊金库原理如图1所示。
(b) 解锁阶段图1 指纹模糊金库技术原理
Lee等[8]在2007年首次提出了基于虹膜特征的模糊金库方案。同年Nyang等[9]提出一种基于带权重生物特征的模糊金库实现方案。Kumar等[10]在2008年提出一个基于掌纹的模糊金库的双层(一层对称密码另一层非对称密码)加密系统。Cao等[11]在2011年提出了一种能够应用于人体传感网络的改进模糊金库方案。Bringer等[12]在2012年提出一种基于折叠RS编码以及相应的列表恢复算法的多用户的扩展模糊金库模型,实现了多用户共享同一个模糊金库。Velciu等[13]在2014年提出一种基于声纹特征的模糊金库方案,其特点是将模糊金库与云计算相结合,做到云环境下的密钥保护及访问控制。同年Moon等[14]提出并实现了一整套IC卡环境下实用化的模糊金库方案。
模糊金库方案是一种较理想的保护用户秘密信息安全的信息技术,所以其实际的安全性能和应用性能也日益引起相关研究人员的关注。2007年Scheirer等[15]对常见的SKA(密钥泄露)、ARM(记录多样性)、BSA(盲替代)三种针对模糊金库的攻击方式进行了分析。2010年Fu等[16]为了解决记录多样性攻击和盲替代攻击提出了一种对提取的真实点进行双线映射的模糊金库方案,该方案基于Pairing-based Cryptography(配对密码体制)。2012年Poon等[17]对当时使用的几种模糊金库主要包括RS、B-M、CRC中的解码方案进行了测试比较,结果认为Gao[18]的RS解码方案较之于B-M方案更出色,同时得到结论,CRC方案在面对暴力破解时存在明显的短板,哪怕是对方案进行了改进后仍旧存在该问题。2013年Nguyen等[19]在模糊金库的杂凑点生成算法中取得了较好的成果,提出的新型杂凑点算法一定程度上提高了指纹模糊金库安全性的同时,较当时常用的算法在时间上有了大幅缩短。2014年Josef等[20]将hash引入了模糊金库,在储存真实点时对真实点进行hash计算,提高了模糊金库安全性。
本文主要关注指纹预处理、特征提取与量化过程。这些环节的必要性一方面考虑到存储空间的消耗以及避免图像缩放失真等的性能需求。另一方面是因为原始指纹图像的质量不能得到保证,首先指纹采集对象如老年人群、一些从事体力劳动的工人、农民指纹存在残缺磨损的现象极为普遍,其次即便拥有完整清晰指纹的对象,当进行指纹采集时仍旧不可避免的存在噪声,这必然导致虚假细节点的产生。因此,直接使用原始采集图像,简单提取细节点进行使用,不可能满足实际需要。通过指纹图像矢量化、增强、二值化、量化等过程可以大幅减少噪声干扰,大大提高对残缺指纹的识别效果,同时压缩图像存储空间,防止图像缩放失真。
指纹图像预处理过程如图2所示。
图2 指纹图像预处理流程
1) 指纹梯度计算。梯度场是一种由数量场得到的矢量场,能够反映指纹中谷线与脊线场强变化。对指纹图像进行矢量化操作,不但能够压缩图像存储空间,还能避免图像缩放过程导致的失真。我们将一幅原始指纹图像记为F(x,y),其指纹梯度场记为T(x,y),计算该点的偏微分,得到的就是最陡的方向。那么求指纹图像F(x,y)偏导数:对x求偏微分的值,能得到水平分量记为Fx(x,y),对y求偏微分的值,能得到垂直分量记为Fy(x,y),最后求出该点梯度向量T(x,y)。该点的梯度值为
(1)
2) 指纹图像分割与收敛。为了区分指纹图像的前景和背景,我们需要对指纹进行分割。由于随着图像中梯度不同会出现颜色深浅不同,所以我们可以梯度值来做指纹图像的分割,其中前景梯度数值通常较大(颜色更白),背景梯度数值通常较小(颜色更黑)。由此我们就能利用梯度值来对指纹图像进行分割,过程如下:
(1) 平滑处理:去噪。
(2) 分割前景背景:通过设置梯度阈值,记分割阈值为δ,则
若|T(x,y)|>δ,像素点(x,y)位于前景。
若|T(x,y)|<δ,像素点(x,y)位于背景。
使用该方法做指纹图像分割的程序实现结果如图3(b)。在实际生活中,由于面光源效应、环境因素或者非理想点的存在纹线的灰度图像的灰度和像素位置会发生一定的偏移。进一步的图像收敛能尽量修正这种偏移,这里我们采用二维高斯函数进行收敛。图3(c)为对图3(b)进行采用二维高斯函数进行图像收敛后得到的指纹图像。
(a) 原始指纹图像 (b) 分割后指纹图像 (c) 收敛后指纹图像图3 指纹图像预处理
分割后的指纹图像在经过收敛后图像质量有所改善但依旧达不到对噪声的完全剔除,也难以满足接下来特征提取量化的需要,进一步地处理包括:增强、细化、量化等。为了使得使纹线更加清晰,使用二维Gabor滤波,由于它是一个经过复数正弦函数调制的高斯函数,其实部进行滤波时能得到平滑的图像效果,它能够沿着纹线方向对图像进行收敛增强,弥补纹线断裂的不足。下一步是指纹图像的二值化,本文中采用了领域分析法,该方法在成像质量较好表现,设脊线区域灰度值赋值为黑色(0),谷线区域灰度值赋值为白色(255)。
经过二值化之后得到的指纹图像已经达到了指纹细节点特征提取的要求。指纹细节点特征种类较多,其中最主要是分叉点以及端点。指纹纹线的末端即为端点,两条指纹纹线相交点即为分叉点。图4标出了4种细节点特征:分叉点、端点、环点以及孤立点。
图4 四种指纹细节点特征
可以看出,经过了预校准的指纹特征,基本满足了指纹特征提取的需求,但是在实际当中,在各种外在因素影响下,提取到的指纹细节点坐标会因为时间的不同产生一些随机的无法预估的变化。然而在模糊金库方案中,密钥信息与指纹特征的绑定操作又必须保证有一定数量的细节点坐标数据完全正确,确保密钥恢复的准确无误。因此我们需要对指纹特征做进一步的量化处理,一种简单的棋盘格式量化方法就能够较好地解决上述由于外在因素导致的细节点差异问题。首先我们将指纹图像大小为255×255,然后是设置一个合适的D(区间间隔)目的是将指纹坐标量化,区间间隔的设置会影响量化后指纹特征坐标点与量化前坐标点的相似程度,很明显,当区间间隔越小,量化前后的指纹特征图像越近似,反之,差距越大,量化公式如下:
若量化区间间隔参数D为偶数,则:
(2)
若量区间间隔参数D为奇数,则:
(3)
例如坐标点为(201,19),当取D=3时,量化区间间隔参数为3,经D为奇数的公式计算其横坐标量化后结果为202,纵坐标量化结果为19,即细节点(201,19)量化后坐标为(202,19)。
图5(a)为量化后的图像,图5(b)为对量化后的图像提取细节点特征。
(a) 量化后图像 (b) 提取特征点(端点与分叉点)图5 指纹图像细化和特征提取
Diffie-Hellman密钥交换协议[21]是一种基于离散对数计算困难性的算法,它不是一种加密方法而是一种建立密钥的方法,一种密钥交换算法,因此必须配合其他某种加密算法相结合来使用。
简要概述如下: