陳 琳
(福建信息職業(yè)技術(shù)學(xué)院,福州350003)
互聯(lián)網(wǎng)技術(shù)的高速發(fā)展給人們帶來許多便利,同時也使越來越多的人關(guān)注信息安全問題。信息安全問題的解決方案基本上是采用密碼加密方式,但是這種方式存在缺陷無法令人滿意,比如密碼容易忘記,容易被別人竊取等。隨著近年來開始逐漸成熟的生物特征識別技術(shù)的發(fā)展,將其應(yīng)用在信息安全上,利用生物特征的唯一性、穩(wěn)定性等特點,將其與加密算法融合,為網(wǎng)絡(luò)信息安全提供保障[1]。本文利用加密技術(shù)中著名的ECC加密算法,將指紋信息與非對稱密碼技術(shù)結(jié)合起來,使信息的傳輸更安全可靠。
非對稱加(解)密技術(shù)是加密和解密采用不同密鑰的加(解)密技術(shù),即它所使用的2個密鑰:公開密鑰加密系統(tǒng)采用的密鑰(公鑰)和解密密鑰(私鑰)是不同的。
非對稱加(解)密算法的基本原理如圖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經(jīng)密鑰KA通過加密算法E成為密文Y。同理,密文Y經(jīng)密鑰KB通過解密算法D成為明文X。與對稱加密算法相比,非對稱加密算法使用不同的密鑰KA、KB作為加/解密密鑰,這2個不同的密鑰可以分別稱為私有密鑰和公有密鑰。公有密鑰和私有密鑰是一對,如果用公有密鑰對數(shù)據(jù)進(jìn)行加密,只有對應(yīng)的私有密鑰才能解密;如果用私有密鑰對數(shù)據(jù)進(jìn)行加密,只有其對應(yīng)的公有密鑰才能解密。
圖1 非對稱加密算法基本模型
圖2 非對稱解密算法基本模型
由于2個密鑰中的一個密鑰作為公鑰是可以公開的,密鑰的分配和管理就很簡單,比如對于具有n個用戶的網(wǎng)絡(luò)僅需要2n個密鑰。
因為非對稱加解密的速度遠(yuǎn)趕不上對稱密鑰加密系統(tǒng),非對稱公鑰加密系統(tǒng)并沒有完全取代對稱密鑰加密系統(tǒng),在實際應(yīng)用中可利用兩者的各自優(yōu)點,采用非對稱公鑰加密系統(tǒng)加密傳輸對稱加密系統(tǒng)的密鑰,采用對稱加密系統(tǒng)加密文件,即混合加密系統(tǒng),較好地解決了運算速度問題和密鑰傳輸管理問題。
自公鑰加密問世以來,學(xué)者們提出了許多公鑰加密方法,它們的安全性都是基于復(fù)雜的數(shù)學(xué)難題。根據(jù)數(shù)學(xué)難題來分類,有以下3類系統(tǒng)是目前被認(rèn)為安全和有效的:大整數(shù)因子分解系統(tǒng),如RSA;橢圓曲線離散對數(shù)系統(tǒng),如ECC;離散對數(shù)系統(tǒng),如DSA。本文采用的是橢圓曲線加密算法ECC。
橢圓曲線密碼是1985年由Koblitz(美國華盛頓大學(xué))和VictorMiller(IBM)提出來的。它具有其他公鑰密碼無法比擬的優(yōu)勢,到目前為止,橢圓曲線密碼是位比特強度最高的一種公鑰密碼機制。
橢圓曲線密碼(ECC)是一種非對稱加密系統(tǒng),它的原理如下:
定義Fq上橢圓曲線E(Fq)的等式為y2=x3+ax+b,每個橢圓曲線都由一個多元組D=(q,F(xiàn)R,S,a,b,P,n,h)來確定,其中q表示有限域的階,F(xiàn)R是域Fq中元素的表示,S是種子參數(shù),a,b∈Fq,且滿足4a3+27b2≠0(mod q),P是橢圓曲線上的基點,n是點P的階,h=E(Fq)/n為余因子。橢圓曲線的點集包括橢圓曲線E(Fq)上所有的點和一個特殊的無窮遠(yuǎn)點。橢圓曲線的域由點集和定義在它上面的運算共同構(gòu)成,橢圓曲線的域可以是有理數(shù)域,也可以是復(fù)數(shù)域,還可以是有限域。
構(gòu)造一個橢圓曲線,根據(jù)系統(tǒng)安全性要求、性能要求、實現(xiàn)平臺的資源條件來確定這些參數(shù)。有限域并不影響ECC的安全性能,只是會影響硬件平臺的執(zhí)行操作。然后選擇域元素表示法,域元素表示法決定后期的有限域乘法運算的實現(xiàn)[2]。
在安全性相當(dāng)?shù)那疤嵯?,ECC可使用較短的密鑰。與RSA等公鑰密碼體制相比,ECC密鑰長度和系統(tǒng)參數(shù)小。更小的密鑰長度和系統(tǒng)參數(shù)意味著占用更少的系統(tǒng)資源,如更少的存儲空間、更少的能量消耗和更小的成本[2]。
橢圓曲線密碼具有單位比特高強度的安全性,并且隨著密鑰長度的增加優(yōu)勢更加明顯。ECC在未來計算能力逐漸提高的情況下,比RSA有更強的競爭力。
ECC執(zhí)行速率比較高,帶寬要求低。當(dāng)對長消息進(jìn)行加密或簽名時,ECC與RSA具有相似的執(zhí)行效率和帶寬要求。由于橢圓曲線上的一次群運算最終化為域上的不超過15次乘法運算,因而便于實現(xiàn)。對于短消息,ECC的執(zhí)行效率和帶寬要求卻低得多。
在給定的有限域上,ECC系統(tǒng)參數(shù)具有更多的可選擇性。給定一個有限域上存在著不同的橢圓曲線,有比較多的橢圓曲線可選,產(chǎn)生不同的密鑰對。以RSA為比較,給定一個素數(shù)p,只對應(yīng)一個RSA算法;而給定一個基點,卻存在大量不同的橢圓曲線可供使用,橢圓曲線的選擇也就更加靈活。
ECC正成為密碼學(xué)界和產(chǎn)業(yè)界關(guān)注的熱點,越來越多的人關(guān)注這一領(lǐng)域的研究,并取得了長足的進(jìn)步,作為一種公鑰密碼體制,應(yīng)用的領(lǐng)域也越來越廣泛,例如:智能卡、無線通信、公鑰密碼基礎(chǔ)設(shè)施PKI、電子商務(wù)、電子政務(wù)等領(lǐng)域[3]。
指紋非對稱密碼技術(shù)是數(shù)字指紋學(xué)與對稱密碼學(xué)的結(jié)合。指紋非對稱密碼技術(shù)原理[4]如圖3所示。
本系統(tǒng)使用偽指紋特征隨機發(fā)生器,可產(chǎn)生非對稱偽隨機指紋特征密鑰,以供獲取。使用人只需要在偽指紋特征隨機發(fā)生器上預(yù)留一次指紋,以后無需用指紋儀就能不斷地生成和使用該偽指紋隨機特征密鑰,降低指紋身份認(rèn)證的成本。
發(fā)送方使用指紋非對稱密碼技術(shù)進(jìn)行加密發(fā)送時,可以事先用發(fā)送方的指紋特征產(chǎn)生第一個偽隨機指紋特征密鑰,作為非對稱密碼加(解)密的偽隨機指紋特征私密鑰(KA),通過加密算法E(X,KA)加密所發(fā)送的明文信息X為密文信息Y。
用發(fā)送方的指紋特征產(chǎn)生第二個偽隨機指紋特征密鑰,作為偽隨機指紋特征隨機數(shù)(RA),計算KB=KA*RA。其中運算符*在ECC中表示有限域群加運算。通過運算符*計算KA*RA所獲得的KB即為非對稱密碼加(解)密的偽隨機指紋特征公密鑰(KB),把它傳給接收方就可通過解密算法D(Y,KB)解密發(fā)送方密文信息Y為明文信息X。
發(fā)送方或接收方還可以將該偽隨機指紋特征密鑰在第三方的偽指紋特征隨機發(fā)生器系統(tǒng)運營商處作為認(rèn)證地點,進(jìn)行身份比對認(rèn)證。把該指紋作為樣板與偽隨機指紋特征密鑰作為模板進(jìn)行身份比對認(rèn)證,并同時與第三方發(fā)布該認(rèn)證信息的結(jié)果。
圖3 指紋非對稱密碼技術(shù)原理
系統(tǒng)采用Visual C++編程工具進(jìn)行開發(fā),指紋非對稱密碼系統(tǒng)界面如圖4所示。
圖4 指紋ECC密碼系統(tǒng)界面
在指紋非對稱密碼系統(tǒng)中,點擊“打開指紋圖像”按鈕,選擇一幅指紋圖像并打開該指紋圖像,單擊“生成密鑰”按鈕,生成指定偽指紋隨機數(shù)作為密鑰和公、私鑰。單擊“加密”按鈕,把明文89加密為密文。單擊“解密”按鈕,把密文解密為明文89。
本文從以下兩個方面對系統(tǒng)的代碼架構(gòu)進(jìn)行分析,從而了解關(guān)鍵類與函數(shù)的功能及構(gòu)成。指紋橢圓非對稱密碼系統(tǒng)類繼承于指紋非對稱密碼系統(tǒng)類,它實現(xiàn)了指紋橢圓加密算法。
3.2.1 指紋非對稱密碼系統(tǒng)的架構(gòu)
其中rnd表示用來產(chǎn)生偽指紋隨機數(shù),Init的功能為初始化偽指紋發(fā)生器隨機種子,參數(shù)lpSeed表示偽指紋特征點坐標(biāo)數(shù)組,Size表示數(shù)組長度。Setparameters的功能為設(shè)置參數(shù),x和y表示平移參數(shù)x坐標(biāo)和y坐標(biāo),w表示旋轉(zhuǎn)角度,r表示縮放比例。SetKey的功能為生成密鑰。Encrypt的功能為加密,參數(shù)plain表示明文數(shù)組地址,plainSize表示明文長度,ciper表示密文數(shù)組地址,ciperSize表示密文長度。Decrypt的功能為解密,ciper表示密文數(shù)組地址,ciperSize表示密文長度,plain表示明文數(shù)組地址,plainSize表示明文長度。
3.2.2 Ellipse橢圓加密類
(1)ECCItem類:用于保存一個點,即一對坐標(biāo)。
(2)ECCPair類:用于保存一對ECCItem類。
(3)函數(shù):
(a)ECCPair Encrypt(int m)的功能為加密,m表示明文,運算結(jié)果返回一個點,即為密文;
(b)int Decrypt(ECCPair C)的功能為解密,C表示密文,運算結(jié)果返回一個點,即為明文;
(c)void SetK(int k)的功能設(shè)置為 K,即橢圓加法運算的次數(shù);
(d)void SetG(ECCItem G)的功能設(shè)置為 G,即橢圓加密的起始點;
(e)void SetPa()的功能設(shè)置為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)的功能是計算橢圓點的負(fù)元;
(j)Int GetRandom()的功能是獲得一個隨機數(shù)。
指紋非對稱密碼技術(shù)是數(shù)字指紋學(xué)與密碼學(xué)相結(jié)合的產(chǎn)物,將指紋信息與非對稱密碼技術(shù)相結(jié)合,保障了信息的高度安全性,同時該技術(shù)可以用于多種應(yīng)用環(huán)境中,應(yīng)用前景廣闊。本文分析了指紋非對稱密碼技術(shù)的原理,并使用Visual C++編程工具設(shè)計實現(xiàn)了該技術(shù)的應(yīng)用系統(tǒng)。
[1]蔡光興,孔紅梅.指紋加密在網(wǎng)絡(luò)傳輸中的應(yīng)用[J].計算機安全,2007(7):53-55.
[2]李育裕.指紋與密鑰體制相結(jié)合的認(rèn)證研究[D].廣東:廣東工業(yè)大學(xué),2010.12-14.
[3]姜良超.橢圓曲線密碼算法及其應(yīng)用[D].遼寧:東北大學(xué),2006.30-32.
[4]李昊,傅曦.指紋識別系統(tǒng)算法及實現(xiàn)[M].北京:人民郵電出版社,2011:310-319.