陈 琳
(福建信息职业技术学院,福州350003)
互联网技术的高速发展给人们带来许多便利,同时也使越来越多的人关注信息安全问题。信息安全问题的解决方案基本上是采用密码加密方式,但是这种方式存在缺陷无法令人满意,比如密码容易忘记,容易被别人窃取等。随着近年来开始逐渐成熟的生物特征识别技术的发展,将其应用在信息安全上,利用生物特征的唯一性、稳定性等特点,将其与加密算法融合,为网络信息安全提供保障[1]。本文利用加密技术中著名的ECC加密算法,将指纹信息与非对称密码技术结合起来,使信息的传输更安全可靠。
非对称加(解)密技术是加密和解密采用不同密钥的加(解)密技术,即它所使用的2个密钥:公开密钥加密系统采用的密钥(公钥)和解密密钥(私钥)是不同的。
非对称加(解)密算法的基本原理如图1~2所示。
加密:E:(X,KA)→Y,y=E(x,ka),其中,y∈Y,x∈X,k∈K。
解密:D:(Y,KB)→X,x=D(y,kb),其中,y∈Y,x∈X,k∈K。
明文X经密钥KA通过加密算法E成为密文Y。同理,密文Y经密钥KB通过解密算法D成为明文X。与对称加密算法相比,非对称加密算法使用不同的密钥KA、KB作为加/解密密钥,这2个不同的密钥可以分别称为私有密钥和公有密钥。公有密钥和私有密钥是一对,如果用公有密钥对数据进行加密,只有对应的私有密钥才能解密;如果用私有密钥对数据进行加密,只有其对应的公有密钥才能解密。
图1 非对称加密算法基本模型
图2 非对称解密算法基本模型
由于2个密钥中的一个密钥作为公钥是可以公开的,密钥的分配和管理就很简单,比如对于具有n个用户的网络仅需要2n个密钥。
因为非对称加解密的速度远赶不上对称密钥加密系统,非对称公钥加密系统并没有完全取代对称密钥加密系统,在实际应用中可利用两者的各自优点,采用非对称公钥加密系统加密传输对称加密系统的密钥,采用对称加密系统加密文件,即混合加密系统,较好地解决了运算速度问题和密钥传输管理问题。
自公钥加密问世以来,学者们提出了许多公钥加密方法,它们的安全性都是基于复杂的数学难题。根据数学难题来分类,有以下3类系统是目前被认为安全和有效的:大整数因子分解系统,如RSA;椭圆曲线离散对数系统,如ECC;离散对数系统,如DSA。本文采用的是椭圆曲线加密算法ECC。
椭圆曲线密码是1985年由Koblitz(美国华盛顿大学)和VictorMiller(IBM)提出来的。它具有其他公钥密码无法比拟的优势,到目前为止,椭圆曲线密码是位比特强度最高的一种公钥密码机制。
椭圆曲线密码(ECC)是一种非对称加密系统,它的原理如下:
定义Fq上椭圆曲线E(Fq)的等式为y2=x3+ax+b,每个椭圆曲线都由一个多元组D=(q,FR,S,a,b,P,n,h)来确定,其中q表示有限域的阶,FR是域Fq中元素的表示,S是种子参数,a,b∈Fq,且满足4a3+27b2≠0(mod q),P是椭圆曲线上的基点,n是点P的阶,h=E(Fq)/n为余因子。椭圆曲线的点集包括椭圆曲线E(Fq)上所有的点和一个特殊的无穷远点。椭圆曲线的域由点集和定义在它上面的运算共同构成,椭圆曲线的域可以是有理数域,也可以是复数域,还可以是有限域。
构造一个椭圆曲线,根据系统安全性要求、性能要求、实现平台的资源条件来确定这些参数。有限域并不影响ECC的安全性能,只是会影响硬件平台的执行操作。然后选择域元素表示法,域元素表示法决定后期的有限域乘法运算的实现[2]。
在安全性相当的前提下,ECC可使用较短的密钥。与RSA等公钥密码体制相比,ECC密钥长度和系统参数小。更小的密钥长度和系统参数意味着占用更少的系统资源,如更少的存储空间、更少的能量消耗和更小的成本[2]。
椭圆曲线密码具有单位比特高强度的安全性,并且随着密钥长度的增加优势更加明显。ECC在未来计算能力逐渐提高的情况下,比RSA有更强的竞争力。
ECC执行速率比较高,带宽要求低。当对长消息进行加密或签名时,ECC与RSA具有相似的执行效率和带宽要求。由于椭圆曲线上的一次群运算最终化为域上的不超过15次乘法运算,因而便于实现。对于短消息,ECC的执行效率和带宽要求却低得多。
在给定的有限域上,ECC系统参数具有更多的可选择性。给定一个有限域上存在着不同的椭圆曲线,有比较多的椭圆曲线可选,产生不同的密钥对。以RSA为比较,给定一个素数p,只对应一个RSA算法;而给定一个基点,却存在大量不同的椭圆曲线可供使用,椭圆曲线的选择也就更加灵活。
ECC正成为密码学界和产业界关注的热点,越来越多的人关注这一领域的研究,并取得了长足的进步,作为一种公钥密码体制,应用的领域也越来越广泛,例如:智能卡、无线通信、公钥密码基础设施PKI、电子商务、电子政务等领域[3]。
指纹非对称密码技术是数字指纹学与对称密码学的结合。指纹非对称密码技术原理[4]如图3所示。
本系统使用伪指纹特征随机发生器,可产生非对称伪随机指纹特征密钥,以供获取。使用人只需要在伪指纹特征随机发生器上预留一次指纹,以后无需用指纹仪就能不断地生成和使用该伪指纹随机特征密钥,降低指纹身份认证的成本。
发送方使用指纹非对称密码技术进行加密发送时,可以事先用发送方的指纹特征产生第一个伪随机指纹特征密钥,作为非对称密码加(解)密的伪随机指纹特征私密钥(KA),通过加密算法E(X,KA)加密所发送的明文信息X为密文信息Y。
用发送方的指纹特征产生第二个伪随机指纹特征密钥,作为伪随机指纹特征随机数(RA),计算KB=KA*RA。其中运算符*在ECC中表示有限域群加运算。通过运算符*计算KA*RA所获得的KB即为非对称密码加(解)密的伪随机指纹特征公密钥(KB),把它传给接收方就可通过解密算法D(Y,KB)解密发送方密文信息Y为明文信息X。
发送方或接收方还可以将该伪随机指纹特征密钥在第三方的伪指纹特征随机发生器系统运营商处作为认证地点,进行身份比对认证。把该指纹作为样板与伪随机指纹特征密钥作为模板进行身份比对认证,并同时与第三方发布该认证信息的结果。
图3 指纹非对称密码技术原理
系统采用Visual C++编程工具进行开发,指纹非对称密码系统界面如图4所示。
图4 指纹ECC密码系统界面
在指纹非对称密码系统中,点击“打开指纹图像”按钮,选择一幅指纹图像并打开该指纹图像,单击“生成密钥”按钮,生成指定伪指纹随机数作为密钥和公、私钥。单击“加密”按钮,把明文89加密为密文。单击“解密”按钮,把密文解密为明文89。
本文从以下两个方面对系统的代码架构进行分析,从而了解关键类与函数的功能及构成。指纹椭圆非对称密码系统类继承于指纹非对称密码系统类,它实现了指纹椭圆加密算法。
3.2.1 指纹非对称密码系统的架构
其中rnd表示用来产生伪指纹随机数,Init的功能为初始化伪指纹发生器随机种子,参数lpSeed表示伪指纹特征点坐标数组,Size表示数组长度。Setparameters的功能为设置参数,x和y表示平移参数x坐标和y坐标,w表示旋转角度,r表示缩放比例。SetKey的功能为生成密钥。Encrypt的功能为加密,参数plain表示明文数组地址,plainSize表示明文长度,ciper表示密文数组地址,ciperSize表示密文长度。Decrypt的功能为解密,ciper表示密文数组地址,ciperSize表示密文长度,plain表示明文数组地址,plainSize表示明文长度。
3.2.2 Ellipse椭圆加密类
(1)ECCItem类:用于保存一个点,即一对坐标。
(2)ECCPair类:用于保存一对ECCItem类。
(3)函数:
(a)ECCPair Encrypt(int m)的功能为加密,m表示明文,运算结果返回一个点,即为密文;
(b)int Decrypt(ECCPair C)的功能为解密,C表示密文,运算结果返回一个点,即为明文;
(c)void SetK(int k)的功能设置为 K,即椭圆加法运算的次数;
(d)void SetG(ECCItem G)的功能设置为 G,即椭圆加密的起始点;
(e)void SetPa()的功能设置为G,由K和G计算Pa;
(f)ECCItem Multiply(ECCItem a,int r)的 功能是计算椭圆点的乘法;
(g)ECCItem Add(ECCItem a,ECCItem b)的功能是计算椭圆点的加法;
(h)ECCItem Substract(ECCItem a,ECCItem b)的功能是计算椭圆点的减法;
(i)ECCItem Minus(ECCItem a)的功能是计算椭圆点的负元;
(j)Int GetRandom()的功能是获得一个随机数。
指纹非对称密码技术是数字指纹学与密码学相结合的产物,将指纹信息与非对称密码技术相结合,保障了信息的高度安全性,同时该技术可以用于多种应用环境中,应用前景广阔。本文分析了指纹非对称密码技术的原理,并使用Visual C++编程工具设计实现了该技术的应用系统。
[1]蔡光兴,孔红梅.指纹加密在网络传输中的应用[J].计算机安全,2007(7):53-55.
[2]李育裕.指纹与密钥体制相结合的认证研究[D].广东:广东工业大学,2010.12-14.
[3]姜良超.椭圆曲线密码算法及其应用[D].辽宁:东北大学,2006.30-32.
[4]李昊,傅曦.指纹识别系统算法及实现[M].北京:人民邮电出版社,2011:310-319.