基于橢圓曲線加密算法的SSLVPN安全握手技術(shù)研究

為確保網(wǎng)絡(luò)上未授權(quán)的用戶(hù)無(wú)法讀取信息,在VPN中,對(duì)通過(guò)公共互聯(lián)網(wǎng)絡(luò)傳遞的數(shù)據(jù)必須加密,因此,加密技術(shù)是VPN中的一項(xiàng)關(guān)鍵技術(shù)。SSL VPN通過(guò)采用SSL協(xié)議來(lái)實(shí)現(xiàn)數(shù)據(jù)的保密性、消息完整性和端點(diǎn)認(rèn)證。在SSL會(huì)話中,常用用證書(shū)來(lái)驗(yàn)證雙方身份、協(xié)商加密算法、生成密鑰等,用基于RSA的非對(duì)稱(chēng)加密算法交換密鑰,保證密鑰的安全性。因RSA加密算法進(jìn)行加密的VPN系統(tǒng)存在有不足,為此,我們提出將橢圓曲線加密算法應(yīng)用于SSL安全握手中。這樣,可以大大提高運(yùn)算效率,并在相同的安全強(qiáng)度下減少密鑰的長(zhǎng)度,其運(yùn)算量較小,復(fù)雜度也隨之降低。

一、基于SSL協(xié)議的VPN

安全套接層(securesocketlayer,SSL)協(xié)議具有保護(hù)傳輸數(shù)據(jù)以及識(shí)別通信機(jī)器的功能。SSL主要采用公開(kāi)密鑰加密體制和X.509數(shù)字證書(shū)技術(shù)在Internet基礎(chǔ)上提供服務(wù)器認(rèn)證、SSL鏈路上的數(shù)據(jù)完整性和SSL鏈路上數(shù)據(jù)的保密性等安全性保證。握手協(xié)議是SSL中最復(fù)雜的部分,SSL通過(guò)用握手協(xié)議來(lái)建立會(huì)話。建立SSL連接的雙方在執(zhí)行握手協(xié)議的過(guò)程中實(shí)現(xiàn)對(duì)服務(wù)器的身份鑒別(或雙方相互身份鑒別),通過(guò)協(xié)商確定加密算法、Hash算法、壓縮算法、交換加密使用的對(duì)稱(chēng)密鑰,實(shí)現(xiàn)服務(wù)器和客戶(hù)機(jī)之間邏輯意義上的“安全握手”,這時(shí)應(yīng)用程序才能開(kāi)始交換數(shù)據(jù)。

VPN網(wǎng)關(guān)的加密操作是計(jì)算密集型的操作,特別是在SSLVPN中,SSL協(xié)議的應(yīng)用要求使用非對(duì)稱(chēng)加密算法協(xié)商密鑰,導(dǎo)致傳統(tǒng)的基于RSA加密算法的SSL服務(wù)器的CPU有80%花在處理SSL加解密,只剩下20%處理應(yīng)用程序邏輯。所以本文提出了將靈活性遠(yuǎn)遠(yuǎn)高于RSA加密算法的ECC加密算法應(yīng)用到握手協(xié)議的加解密過(guò)程中。SSL握手協(xié)議有多種操作模式,圖1包括了所有工作模式下所涉及的消息。

基于橢圓曲線加密算法的SSLVPN安全握手技術(shù)研究

二、橢圓曲線加密體制及橢圓曲線公鑰加密體制

1、橢圓曲線加密體制

橢圓曲線加密體制的安全性基于有限域上橢圓曲線離散對(duì)數(shù)問(wèn)題(ECDLP)的難解性。ECDLP難解性是指:對(duì)于曲線上給定的離散點(diǎn)P和Q,難以找到整數(shù)I,使得IP=Q。設(shè)P為公鑰,Q為私鑰,其安全性就表現(xiàn)為知道P無(wú)法推導(dǎo)Q。對(duì)于有限群上的a和b,若存在正整數(shù)n,使得an=b,求解n=logba的問(wèn)題稱(chēng)為有限群上離散對(duì)數(shù)問(wèn)題(LDP);而對(duì)橢圓曲線上離散點(diǎn)P和Q,求解I,使得IP=Q稱(chēng)為橢圓曲線離散對(duì)數(shù)問(wèn)題,ECDLP優(yōu)于LDP。

橢圓曲線加密算法是一種能適應(yīng)未來(lái)通信技術(shù)和信息安全技術(shù)發(fā)展的新型加密體制,在運(yùn)算速度和存儲(chǔ)空間方面占有很大的優(yōu)勢(shì),具有安全性高、密鑰量小、靈活性好的特點(diǎn),具有較好的抗攻擊性,由于服務(wù)器端的CPU處理能力和存儲(chǔ)空間都有限,所以橢圓曲線加密算法相對(duì)于以往基于RSA加密算法的握手過(guò)程具有絕對(duì)的優(yōu)勢(shì),目前已成為公鑰加密體制中的研究熱點(diǎn)。

2、橢圓曲線公鑰加密體制的加密和解密方案

公鑰加密方案可用來(lái)提供機(jī)密性,更典型的應(yīng)用是在少量數(shù)據(jù)的加密上,如信用卡號(hào)碼。大批量的數(shù)據(jù)文件加密使用運(yùn)算速度更快的對(duì)稱(chēng)密鑰算法來(lái)完成。下面給出了加密和解密方案:

加密過(guò)程,當(dāng)用戶(hù)A發(fā)送信息M給用戶(hù)B時(shí),用戶(hù)A執(zhí)行下列步驟:

(1)查找B的公鑰Q;

(2)將數(shù)據(jù)M表示成一個(gè)E(Fq)上的一個(gè)點(diǎn)m;

(3)在區(qū)間[1,n-1]內(nèi)選取一個(gè)隨機(jī)整數(shù)k;

(4)計(jì)算點(diǎn)(x1,y1)=kP;

(5)計(jì)算點(diǎn)(x2,y2)=k*Q,如是x2=0,則返回到第(3)步;

(6)計(jì)算c=mx2;

(7)傳送加密數(shù)據(jù)(x1,y1,c)給B。

解密過(guò)程,當(dāng)用戶(hù)B解密從用戶(hù)A收到的密文(x1,y1,c)時(shí),用戶(hù)B執(zhí)行下列步驟:

(1)使用他的私鑰d,計(jì)算點(diǎn)(x2,y2)=d(x1,y1);

(2)通過(guò)計(jì)算m=cx2-1,恢復(fù)出數(shù)據(jù)m。

在上述過(guò)程中,Q=d*P是公開(kāi)的,如果除A、B外的第三者能解橢圓曲線上的離散對(duì)數(shù)問(wèn)題,就能從d*P中求出d,從而解密信息。

三、橢圓曲線優(yōu)化公鑰體系的優(yōu)勢(shì)及其在SSL安全均衡中的應(yīng)用

1、橢圓曲線加密體制在SSL安全均衡握手方面的優(yōu)勢(shì)

橢圓曲線加密算法的計(jì)算量小并且處理速度快,存儲(chǔ)空間占用小,橢圓曲線的密鑰尺寸和系統(tǒng)參數(shù)與RSA相比要小得多,160bitECC與1024bitRSA具有相同的安全強(qiáng)度,210bitECC則與2048bitRSA具有相同的安全強(qiáng)度,意味著它所占的存儲(chǔ)空間要小得多,同時(shí)橢圓曲線加密算法的帶寬要求低。此外,橢圓曲線加密算法的靈活性要高于RSA加密算法,可以通過(guò)改變參數(shù)設(shè)置獲得不同的曲線,具有豐富的群結(jié)構(gòu)和多選擇性。

2、橢圓曲線公鑰加密算法的優(yōu)化

針對(duì)點(diǎn)積運(yùn)算的優(yōu)化。公鑰產(chǎn)生和加密解密算法中需要大量的點(diǎn)積運(yùn)算,即計(jì)算:

基于橢圓曲線加密算法的SSLVPN安全握手技術(shù)研究

文章在此采用的點(diǎn)積優(yōu)化算法如下:

(1)將n表示成二進(jìn)制數(shù)形式,即 :

基于橢圓曲線加密算法的SSLVPN安全握手技術(shù)研究
式中:nm=0或1;k=[log2n]+1。

(2)去掉(nknk-1…nm…n1)的最高位nk,得(nk-1…nm…n1)。

(3)按照(nk-1…nm…n1)從高位到低位次序,當(dāng)nm=0,計(jì)算2P;當(dāng)nm=1,計(jì)算2P+P,并將結(jié)果作為下次計(jì)算的初值,即:

基于橢圓曲線加密算法的SSLVPN安全握手技術(shù)研究

采用常規(guī)方法,需進(jìn)行n次點(diǎn)加運(yùn)算;在本算法中,平均只須3/2[log2n]次運(yùn)算,最多需要2[log2n]次運(yùn)算。

在明文到橢圓曲線映射過(guò)程中,需要判別一個(gè)數(shù)是否為模P下的平方剩余,即平方剩余判定。目前現(xiàn)有的平方剩余判定算法僅僅簡(jiǎn)單地根據(jù)平方剩余定義來(lái)判別,涉及大數(shù)的平方運(yùn)算和取模運(yùn)算,算法效率非常低。針對(duì)這種情況,本文采用了一種快速平方剩余判定算法。

設(shè)明文分段m映射到點(diǎn)Pm(x,y)上,使其滿(mǎn)足:

基于橢圓曲線加密算法的SSLVPN安全握手技術(shù)研究

下面要解決的問(wèn)題是在256和256(256+1)之間給定一個(gè)x,判定A=x3+ax+b是否是模P下的平方剩余。即判定(A/q)是否為1。改進(jìn)的快速平方剩余判定算法如下:

(1)設(shè)J為平方剩余判定變量,初始時(shí)J=1。

(2)如果A為偶數(shù),則根據(jù)定理,(A/P)可分解為:(A/P)=(2/P)((A/2)/P)根據(jù)定理,計(jì)算(2/P),然后執(zhí)行J(2/P)=>J,A/2=>A。

如果A為奇素?cái)?shù),則根據(jù)定理得:

基于橢圓曲線加密算法的SSLVPN安全握手技術(shù)研究

這樣,對(duì)(A/P)的判定等價(jià)于對(duì)(P mod A)/A)的判定,即執(zhí)行如下操作:

基于橢圓曲線加密算法的SSLVPN安全握手技術(shù)研究

如果A為奇數(shù)但不為素?cái)?shù),可將A分解為ⅡAi;其中Ai為奇素?cái)?shù),根據(jù)定理得:

基于橢圓曲線加密算法的SSLVPN安全握手技術(shù)研究

再分別計(jì)算(Ai/P)。

(3)當(dāng)A≠1時(shí),返回(2);否則,算法結(jié)束。此時(shí)根據(jù)J值判定x3+ax+b是否是模P下的平方剩余;若J=1,則為平方剩余,若J=-1,則為非平方剩余。

3、基于優(yōu)化橢圓曲線加密算法的SSL安全均衡握手過(guò)程

首先設(shè)計(jì)適合于VPN系統(tǒng)的安全協(xié)議必須考慮的問(wèn)題:服務(wù)器端的低計(jì)算能力和計(jì)算資源。

本例選用適用于VPN系統(tǒng),簡(jiǎn)化的X509標(biāo)準(zhǔn)的證書(shū)形式,用戶(hù)A的證書(shū):

基于橢圓曲線加密算法的SSLVPN安全握手技術(shù)研究

首先CA選擇定義在有限域上的橢圓曲線E(Fm)

基于橢圓曲線加密算法的SSLVPN安全握手技術(shù)研究

E上的點(diǎn)構(gòu)成循環(huán)群P∈E(Fm)是CA選擇的公開(kāi)的基點(diǎn)l=ord(P)是公開(kāi)基點(diǎn)的階1至少為160位的橢圓曲線的階至少是有40位以上的大素?cái)?shù)因子,這樣選擇的橢圓曲線能保證其上的離散對(duì)數(shù)難解性。

CA選擇一個(gè)數(shù)SCA∈{1,2,…, l-1}作為其私鑰,(SCA,l-1)=1,計(jì)算PCA=SCA,并將PCA作為公鑰并公開(kāi),這樣就可以對(duì)服務(wù)器端和客戶(hù)端的證書(shū)進(jìn)行簽名。

客戶(hù)選擇一個(gè)隨機(jī)數(shù)SVN∈{1,2,…,l-1}作為其私鑰,(SVN,1)=1,計(jì)算PVN=SVN作為其公鑰,并提交給CA為其頒發(fā)證書(shū):

基于橢圓曲線加密算法的SSLVPN安全握手技術(shù)研究

其中SIGNVN是CA的簽名。用戶(hù)入網(wǎng)時(shí),為其生成私鑰SMS和公鑰PMS,同時(shí)根據(jù)用戶(hù)提交的有效信息生成證書(shū):

基于橢圓曲線加密算法的SSLVPN安全握手技術(shù)研究

客戶(hù)接收到服務(wù)器端證書(shū)后,驗(yàn)證證書(shū)的合法性。利用證書(shū)中的信息IDVN, PVN, period VN和others生成:

基于橢圓曲線加密算法的SSLVPN安全握手技術(shù)研究

然后驗(yàn)證:

基于橢圓曲線加密算法的SSLVPN安全握手技術(shù)研究

是否成立,如果成立,則此簽名有效,證書(shū)合法,在認(rèn)證之前,服務(wù)器端可以先進(jìn)行預(yù)計(jì)算產(chǎn)生隨機(jī)數(shù)k,k∈(1,2,…l) 。

計(jì)算kP,k,PVN,以及基于橢圓曲線加密算法的SSLVPN安全握手技術(shù)研究

qMSX和qMSY分別是Q點(diǎn)的坐標(biāo)。保存{k, kP, KpVN,}qMSX。在這里一定要注意,每次進(jìn)行身份認(rèn)證的時(shí)候都必須重新產(chǎn)生隨機(jī)數(shù)k。

如今已經(jīng)進(jìn)入信息時(shí)代,各種信息的保密要求也越來(lái)越高,傳統(tǒng)的對(duì)稱(chēng)加密方法RSA存在一定的缺點(diǎn),本文首次將采用加速點(diǎn)積運(yùn)算優(yōu)化后的橢圓曲線加密算法技術(shù)運(yùn)用到了SSL VPN的安全握手技術(shù)中,使SSL服務(wù)器的CPU可以提高將近60%來(lái)處理應(yīng)用程序邏輯??朔艘酝脩?hù)將大部分時(shí)間浪費(fèi)在等待CPU處理加密和解密過(guò)程中的弊端,提高了工作效率。

小知識(shí)之ECDLP

ECDLP即橢圓曲線上的離散對(duì)數(shù)問(wèn)題。1987年,Koblitz利用橢圓曲線上點(diǎn)形成的Abelian加法群構(gòu)造了ECDLP。實(shí)驗(yàn)證明,在橢圓曲線加密算法中采用160bits的密鑰可與1024bits密鑰的RSA算法的安全性相當(dāng),且隨著模數(shù)的增大,它們之間安全性的差距猛烈增大。因此,它可以提供一個(gè)更快、具有更小的密鑰長(zhǎng)度的公開(kāi)密鑰密碼系統(tǒng),備受人們的廣泛關(guān)注,為人們提供了諸如實(shí)現(xiàn)數(shù)據(jù)加密、密鑰交換、數(shù)字簽名等密碼方案的有力工具。