一种基于椭圆曲线与指纹模糊金库的共享密钥保护方法
技术领域
本发明属于密码学与生物特征识别技术领域,具体涉及椭圆曲线上的共享密钥安全生成方法与基于指纹模糊金库的共享密钥安全存储方法。
背景技术
椭圆曲线理论是代数几何、数论等多个数学分支的一个交叉点,1985年由Neal Koblitz和Victor Miller将椭圆曲线和密码学完美结合,提出了椭圆曲线密码机制,已经逐渐成为公钥密码学领域的一个重要研究课题。相对于建立在大整数分解问题难解性之上的RSA密码机制,建立在椭圆曲线离散对数问题难解性之上的ECC具有更强的安全性、更高的实现效率、更低的实现代价,已经在很多主流安全系统中得到了应用,并已逐渐被国际各大标准组织采纳做为公钥密码标准。
在2002年A.Juels和M.Sudan提出了“A Fuzzy Vault Scheme”。在其提出的模糊金库算法中,将用户唯一的特征集合或其他属性集合A混合用户的密钥进入基于Reed-Solomn的金库中。用户可以利用与集合A有绝大多数元素相同的属性集合B恢复出密钥。U.Uludag等人提出了一种基于指纹特征的模糊金库算法,该算法在生成指纹密钥之前首先对模板和输入的指纹进行校准消除由于旋转等引起的角度变化,参与比对的是指纹细节点的平面坐标值、方向场、细节点类型,如果前后两个指纹的某两个点的平面坐标值、方向场相差在一个阈值之内,细节点类型相同,则认为是相同的点。基于指纹特征的模糊金库方案可以用于保护安全存储共享密钥。
使用基于椭圆曲线共享密钥安全产生方法和指纹模糊金库方案的共享密钥安全存储方法为核心的本发明,安全性保障由椭圆曲线离散对数问题的难解性以及用户生物特征唯一性提供。
发明内容
在真实可靠的实验条件下,本发明提供了一套实用化的一种基于椭圆曲线与指纹模糊金库的密钥保护方法。
一种基于椭圆曲线与指纹模糊金库的密钥保护方法,包括三个部分:第一步,利用一种基于椭圆曲线共享密钥安全生成方法,通信双方安全生成一个共享密钥;第二步,利用指纹模糊金库绑定算法,将共享密钥与经过相关处理的用户指纹信息进行绑定,生成指纹模糊金库;第三步,利用经过验证的用户指纹信息从指纹模糊金库中提取共享密钥。
其中的第一步具体是:
用户A和用户B利用基于椭圆曲线共享密钥安全生成方法,安全生成一个共享密钥,所有操作都是在推荐椭圆曲线下进行。椭圆曲线系统参数如下:有限域,其中q为一个大素数;椭圆曲线方程y2=x3+ax+bmodq上的两个元素;椭圆曲线的基点G=(xG,yG)(G≠O),其中;并取n为基点G在上的阶。
此外,规定一个密钥派生函数KDF(Z,len)用以从一个共享的秘密比特串中派生出密钥数据,密钥派生函数通过杂凑函数等方式实现;其中Z是一个共享的秘密比特串,len是要获得的密钥长度。根据椭圆曲线密码体系安全性考虑,密钥长度一般从128到256比特不等。
1.1用户A从椭圆曲线上独立生成一个密钥对作为自己的公私钥对,包括用户A的私钥dA和公钥PA=[dA]G=(xA,yA);用户B进行相同的工作得到一个公私钥对,包括用户B的私钥dB和公钥PB=[dB]G=(xB,yB)。
1.2用户A秘密生成一个随机整数rA∈[1,n-1],在上计算rA倍点RA=[rA]G=(x1,y1),并将RA发送给用户B;用户B进行相同的工作得到随机整数rB∈[1,n-1],以及上的rB倍点RB=[rB]G=(x2,y2),并将RB发送给用户A。
1.3用户A计算上的点U=[dA]PB+[rA]RB=(xU,yU),用户B进行相同的工作计算上的点V=[dB]PA+[rB]RA=(xV,yV)。
1.4用户A计算KA=KDF(xU||yU,len),用户B计算KB=KDF(xV||yV,len);易证,这里KA=KB。至此,基于椭圆曲线算法的产生一个共享密钥完毕。
其中的第二步具体是:
用户A利用指纹模糊金库绑定算法,将共享密钥与经过相关处理的用户指纹信息进行绑定,生成指纹模糊金库。用户B通过相同工作生成模糊金库。
2.1用户A通过两次训练,提取、处理指纹信息得到一组相对稳定的用户指纹细节点集合;将得到的所有细节点的平面坐标分别量化到8个比特并串接得到一个长度为16的比特串,然后将所有细节点的数据类型转化为整数,则可以得到一组范围在[0,216-1]内的整数集合F,稳定细节点个数为f。
指纹细节点训练方法如下:将指纹样本依次进行特征配准,配准时不区分细节点类型;两幅指纹可配准的细节点记为该枚指纹的真实细节点,取同一个真实细节点在两幅图像取的两组坐标值的均值,记录为该真实细节点的坐标值;配准好的细节点与第三幅指纹样本再次进行特征配准;配准完成后得相对稳定的真实细节点集合。
2.2用户A将第一步得到的共享密钥进行格式化处理,格式化规则为每16比特长度为一块,记一共可以得到k块;并将每块数据类型转化为整数,则可以得到一组范围在[0,216-1]内的整数集合K。
2.3用户A根据密钥格式化处理产生的块数k,在有限域上构造一个形如
P(x)=a0+a1x+a2x2+…+akxk(mod p) (2)的多项式,模数p根据经验推荐取值为65537,最高次数k根据密钥长度一般取值范围从9到16。
2.4用户A为待绑定的共享密钥添加16比特长度的CRC循环冗余校验码,以增加本发明保护密钥的可靠性;并将该CRC码数据类型转化为整数,则可以得到一个范围在[0,216-1]内的整数。
2.5用户A使用2.3中提到的待绑定的共享密钥与2.4中的得到CRC校验码作为多项式(2)的系数,其中a0为CRC校验码,a1,…,ak为待绑定的共享密钥块。并将2.1得到的稳定的用户指纹信息集合F中的每个细节点数据作为多项式输入值x带入多项式(2)中,求得点集{(x,P(x))|x∈F}即为模糊金库中的真实点集合。
2.6用户A为模糊金库添加远远多于真实点集合个数的杂凑点集合,杂凑点集合中的各组元素均随机产生,并要求各组元素与真实点不相等,且各组元素必须不满足的多项式(2)。
2.7用户A将真实点集合和杂凑点集合乱置,最终生成一个包含真实点集合、杂凑点集合,模糊金库基本信息(包括多项式最高次数k、模数p)在内的指纹模糊金库。
其中的第三步具体是:
用户A利用经过验证的用户指纹信息从指纹模糊金库中提取共享密钥。用户B进行相同工作可以从指纹模糊金库提取共享密钥。
3.1用户A通过相关处理、验证指纹信息得到一组用户查询指纹细节点集合F′,细节点的个数为f′。
3.2用户A将用户查询指纹细节点集合F′与模糊金库中的各组数据进行遍历对比,若相符的点的个数不小于在模糊金库中多项式最高次数k,则继续执行;否则,提取密钥失败。
3.3对找到的相符的点进行组合计算,每k+1个点为一组,对每组利用拉格朗日插值法尝试恢复可能密钥,并将得到的可能密钥进行CRC校验。若通过CRC校验,则可能密钥即为共享密钥,提取密钥成功;否则继续下一组尝试。直到尝试完所有组合情况,仍未提取到共享密钥,则提取密钥失败。
本发明的有益效果:与有限乘法群安全生成共享密钥的方法相比较,本发明利用椭圆曲线算法安全生成共享密钥的方法具有更强的安全性、更高的实现效率、以及更低的实现代价,为在移动终端等计算资源紧张的设备下使用提供可能;利用指纹模糊金库安全存储共享密钥的方法,保证只有合法用户在合法指纹下才能提取到带有CRC校验功能的共享密钥,保障了共享密钥安全存储的机密性、完整性、可用性。
附图说明
图1基于椭圆曲线和指纹特征的模糊金库方法流程图;
图2基于椭圆曲线的共享密钥安全生成方法流程图;
具体实施方式
以下结合附图对本发明作进一步说明。
一种基于椭圆曲线与指纹模糊金库的密钥保护方法流程图如图1所示,主要包括三个部分:利用一种基于椭圆曲线共享密钥安全生成方法,通信双方安全生成一个共享密钥;利用指纹模糊金库绑定算法,将共享密钥与经过相关处理的用户指纹信息进行绑定,生成指纹模糊金库;利用经过验证的用户指纹信息从指纹模糊金库中提取共享密钥。
1.其中的利用基于椭圆曲线共享密钥安全生成方法,通信双方安全生成一个共享密钥流程如图2所示,所有操作都是在椭圆曲线下进行。本例椭圆曲线系统参数如下所示,参数均采用16进制表示:
椭圆曲线方程为:y2=x3+ax+b mod q
素数q:
FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000FFFFFFFF FFFFFFFF
系数a:
FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000FFFFFFFF FFFFFFFC
系数b:
28E9FA9E 9D9F5E344D5A9E4B CF6509A7 F39789F515AB8F92DDBCBD414D940E93
基点G=(xG,yG)(G≠O),其阶记为n。
坐标xG:
32C4AE2C 1F1981195F9904466A39C9948FE30BBF F2660BE1715A4589334C74C7
坐标yG:
BC3736A2 F4F6779C 59BDCEE36B692153 D0A9877C C62A474002DF32E52139F0A0
阶n:
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B53BBF40939D54123
本例中使用的椭圆曲线在有限域上选取,其中q为一个长度为256比特的大素数;椭圆曲线方程为y2=x3+ax+b mod q,其中;选取椭圆曲线的基点记为G=(xG,yG)(G≠O),其中,并记n为基点G在上的阶。
此外,规定一个密钥派生函数KDF(Z,len)用以从一个共享的秘密比特串中派生出密钥数据,本例中密钥固定输出为160比特,派生函可以选用SHA-1(Z)杂凑算法实现,只需要保证输入的比特串长度小于264。具体操作过程如下:
1.1用户A从椭圆曲线上独立生成一个比特长度为256的密钥对作为自己的公私钥对,包括私钥dA和公钥PA=[dA]G=(xA,yA);用户B进行相同的工作得到一个比特长度为256的公私钥对,包括私钥dB和公钥PB=[dB]G=(xB,yB)。
1.2用户A秘密生成一个随机整数rA∈[1,n-1],在上计算rA倍点RA=[rA]G=(x1,y1),并将RA发送给用户B;用户B进行相同的工作得到随机整数rB∈[1,n-1],以及上的rB倍点RB=[rB]G=(x2,y2),并将RB发送给用户A。
1.3用户A计算上的点U=[dA]PB+[rA]RB=(xU,yU),用户B进行相同的工作计算上的点V=[dB]PA+[rB]RA=(xV,yV)。
1.4用户A计算KA=SHA-1(xU||yU),用户B计算KB=SHA-1(xV||yV);易证,这里KA=KB。至此,基于椭圆曲线算法的产生一个共享密钥完毕。
2、用户A利用指纹模糊金库绑定算法(流程图如图1所示),将共享密钥与经过相关处理的用户指纹信息进行绑定,生成指纹模糊金库。用户B通过相同工作生成模糊金库。具体操作如下:
2.1用户A通过两次训练,提取、处理指纹信息得到一组相对稳定的用户指纹细节点集合;将得到的所有细节点的平面坐标分别量化到8个比特并串接得到一个长度为16的比特串,然后将所有细节点的数据类型转化为整数,则可以得到一组范围在[0,216-1]内的整数集合F,稳定细节点个数为f。
2.2用户A将第一步得到的160位共享密钥进行格式化处理,格式化规则为每16比特长度为一块,记一共可以得到10块;并将每块数据类型转化为整数,则可以得到一组范围在[0,216-1]内的整数集合K。
2.3用户A根据密钥格式化处理产生的块数,在有限域上构造多项式如下:
P(x)=a0+a1x+a2x2+…+a10x10(mod 65537) (3)
2.4用户A为160位共享密钥添加16比特长度的CRC循环冗余校验码,以增加增加本发明保护密钥的可靠性;并将该CRC码数据类型转化为整数,则可以得到一个范围在[0,216-1]内的整数。
2.5用户A使用10块转化过的密钥块集合K与2.4中的得到CRC校验码作为多项式(3)的系数,其中a0为CRC校验码,a1,…,a10为整数集合K。并将2.1得到的稳定的用户指纹信息集合F中的每个细节点数据作为多项式输入值x带入多项式(3),求得点集{(x,P(x))|x∈F}即为模糊金库中的真实点集合。
2.6用户A为模糊金库添加远远多于真实点集合个数的杂凑点集合,杂凑点集合中的各组元素均随机产生,并要求各组元素与真实点不相等,且各组元素必须不满足多项式(3)。
2.7用户A将真实点集合和杂凑点集合乱置,最终生成一个包含真实点集合、杂凑点集合,模糊金库基本信息(包括多项式最高次数10、模数65537)在内的模糊金库。
3、用户A利用经过验证用户指纹信息从指纹模糊金库中提取共享密钥(流程图如图1所示)。用户B进行相同工作可以从指纹模糊金库提取共享密钥。具体操作如下:
3.1用户A通过相关处理、验证指纹信息得到一组用户查询指纹细节点集合F′,细节点的个数为f′。
3.2用户A将用户查询指纹细节点集合F′与模糊金库中的各组数据进行遍历对比,若相符的点的个数不小于在模糊金库中多项式最高次数10,则继续执行;否则,提取密钥失败。
3.3对找到的相符的点进行组合计算,每11个点为一组,对每组利用拉格朗日插值法尝试恢复可能密钥,并将得到的可能密钥进行CRC校验。若通过CRC校验,则可能密钥即为共享密钥,提取密钥成功;否则继续下一组尝试。直到尝试完所有组合情况,仍未提取到共享密钥,则提取密钥失败。
本技术领域中的普通技术人员应当认识到,以上实施例仅是用来说明本发明,而并非作为对本发明的限定,只要在本发明的实质范围内,对以上实施例的变化、变型都将落在本发明的保护范围。