楊潤東 李子臣,2
1(北京印刷學(xué)院信息工程學(xué)院 北京 102600)2 (北京電子科技學(xué)院通信工程系 北京 102600)
隨著網(wǎng)絡(luò)技術(shù)的日新月異,信息時(shí)代的到來,我們的生活已經(jīng)和互聯(lián)網(wǎng)休戚相關(guān).網(wǎng)絡(luò)技術(shù)使人們可以極其便利地進(jìn)行信息交換和傳輸,大大縮短了彼此的距離感.電子郵件的主要功能是交換信息,人們使用的電子郵件進(jìn)行辦公、交流日益頻繁,電子郵件已經(jīng)變成我們生活、學(xué)習(xí)、辦公的重要手段.越來越多的個(gè)人信息和一些機(jī)密信息在網(wǎng)絡(luò)上傳播.隨之而來人們對(duì)信息安全的要求也與日俱增,然而由于網(wǎng)絡(luò)的開放性,電子郵件要經(jīng)過多級(jí)存儲(chǔ)和轉(zhuǎn)發(fā),而且電子郵件在網(wǎng)絡(luò)之間的傳輸又是以明文進(jìn)行傳播,其用戶的敏感信息和郵件的內(nèi)容很容易被非法攔截竊取.有關(guān)郵件安全的事件有愈演愈烈的態(tài)勢,有的影響甚至是世界級(jí)別的,例如“希拉里郵件門”事件、“樸槿惠閨蜜干政”事件,都是由于郵件泄密造成的,這些郵件安全事件讓人們意識(shí)到保護(hù)個(gè)人信息安全、保護(hù)電子郵件安全的重要性.
目前電子郵件加密技術(shù)根據(jù)使用的加密算法的不同可以分成4種技術(shù):對(duì)稱加密技術(shù)、PKICA加密技術(shù)、鏈?zhǔn)郊用芗夹g(shù)、基于身份的密碼加密技術(shù).
分組密碼算法又稱為對(duì)稱加密算法[1],在很多方面應(yīng)用成熟,如在電子郵件方面.優(yōu)點(diǎn)是加密速度快,但是發(fā)送方接收方密鑰相同,若密鑰被第三方竊取則很容易破解密文,其次是密鑰管理困難,代價(jià)高效率低,漸漸被取代.
鏈?zhǔn)郊用芗夹g(shù)是綜合了非對(duì)稱密碼算法和對(duì)稱密碼算法各自優(yōu)點(diǎn)的一種非常重要的電子郵件加密技術(shù).目前主要使用該技術(shù)的軟件PGP[3]較為成熟,應(yīng)用較廣,但是證書維護(hù)、撤銷等操作成本較高.
基于身份的密碼加密技術(shù)節(jié)省了公鑰證書以及相關(guān)操作,大大節(jié)省了通信的效率,被廣泛使用,目前主要軟件有賽曼郵件天使系統(tǒng)[4].但是該技術(shù)需要進(jìn)行密鑰托管,服務(wù)器的安全就顯得尤為重要,因?yàn)樵诜?wù)器中存放著每一位用戶的資料,一旦泄露后果十分嚴(yán)重.
本文綜合鏈?zhǔn)郊用芗夹g(shù)的安全性,基于身份的密碼技術(shù)的無需證書管理的簡潔性、簽密技術(shù)的高效性、國密SM4分組加密算法的快速性,提出了基于國密算法的新型郵件加密系統(tǒng)NMES,該系統(tǒng)對(duì)信體加密可以實(shí)現(xiàn)一次一密,具有較高的安全性和效率,有效解決了證書管理困難問題,具有廣泛的應(yīng)用前景.
NMES的設(shè)計(jì)原則主要有以下幾個(gè)方面:
1) 用戶操作簡單方便.
2) 實(shí)現(xiàn)的功能多樣.可以實(shí)現(xiàn)加密、解密、數(shù)字簽名、檢測、密鑰的生成與管理等基本功能.
3) 具有在個(gè)邏輯步驟中完成加密和簽名功能,可以節(jié)省計(jì)算和通信量,提高運(yùn)行效率.
4) 系統(tǒng)不需要特定的郵件系統(tǒng),具有廣泛的應(yīng)用性和推廣性.
密碼技術(shù)[5]的核心思想就是對(duì)待處理的數(shù)據(jù)進(jìn)行變換偽裝,使非法用戶不能理解處理后的數(shù)據(jù)的真正含義.偽裝的含義就是將要處理的數(shù)據(jù)進(jìn)行數(shù)學(xué)變換,成為另一種可以恢復(fù)的形式.明文(plaintext)就是未經(jīng)過變換的原始數(shù)據(jù).密文(ciphertext)是經(jīng)過變換后的數(shù)據(jù).數(shù)據(jù)變換的過程就是加密(encryption).加密在加密密鑰(key)控制下進(jìn)行.解密(decryption)就是將變換后的數(shù)據(jù)進(jìn)行逆變換還原的過程.NMES系統(tǒng)使用了2次加密,第1次使用SM4對(duì)信體和信體雜湊值進(jìn)行加密,第2次是使用簽密算法,對(duì)SM4的密鑰進(jìn)行簽密運(yùn)算獲得簽密密文.充分保證了系統(tǒng)的安全性與高效性.
Zheng[6]在1997年提出了簽密源語.簽密就是能夠同時(shí)保證機(jī)密性、完整性、不可否認(rèn)性的一種新密碼體制,與傳統(tǒng)的“先加密后簽密”其效率更高,通信量更少.
基于身份的簽密是在簽密技術(shù)提出后的一種很重要的簽密方案,由 Boneh和 Franklin[7]最先提出,基于身份的簽密方案主要是利用橢圓曲線上的雙線性對(duì)設(shè)計(jì)并實(shí)現(xiàn)的.本方案中使用的基于身份的簽密算法[8]主要包含如下幾個(gè)算法.
系統(tǒng)初始化:在PKG中完成,分別輸入安全參數(shù)k.輸出主密鑰s和系統(tǒng)參數(shù)params,PKG將s作為秘密值進(jìn)行保密,公開參數(shù)params.
密鑰生成算法:輸入一個(gè)用戶的IDU,PKG計(jì)算用戶的私鑰SU,并將其通過安全的通道發(fā)送給用戶.
簽密算法Signcrypt(m,SA,IDB):輸入的是公開的參數(shù)params、明文m、接收者的身份IDB以及發(fā)送者的私鑰SA.輸出密文Unsigncrypt(σ,SB,IDA).
解簽密算法Unsigncrypt(σ,SB,IDA):輸入的有系統(tǒng)參數(shù)params、密文σ、接收者的私鑰SB、發(fā)送者的IDA.輸出明文m或者解簽密失敗符號(hào)“⊥”.
1) 國密算法SM4
國密SM4算法是對(duì)稱密碼算法,在中國的國密算法中具有重要的意義,因?yàn)樗俏覈?次頒布的商用密碼算法,影響深遠(yuǎn),意義重大.
SM4算法是一個(gè)分組算法,其整體結(jié)構(gòu)[9]如圖1所示:
圖1 SM4結(jié)構(gòu)
分組長度和密鑰長度都是128 b.加密算法和密鑰擴(kuò)展都使用相同的32輪迭代結(jié)構(gòu),以字節(jié)(8 b)和字為單位對(duì)數(shù)據(jù)進(jìn)行處理.SM4算法采用的是對(duì)合運(yùn)算,只是在加解密過程中使用的輪密鑰的順序不同,解密密鑰是加密密鑰的逆序.SM4算法有很多設(shè)計(jì)優(yōu)勢:簡潔、算法獨(dú)特,安全性能好.詳情請(qǐng)參考頒布的算法標(biāo)準(zhǔn).
2) 國密算法SM3
SM3算法是一種雜湊算法,主要應(yīng)用可以分為商業(yè)數(shù)字簽名和驗(yàn)證、消息認(rèn)證碼的生成與認(rèn)證等.
SM3算法首先是要對(duì)長度為l(l<264)(單位為b)的消息進(jìn)行填充,填充到合適的長度,然后對(duì)填充好的數(shù)據(jù)進(jìn)行迭代壓縮,最后生成雜湊值.雜湊值是固定長度,為256 b,具體參見國家密碼管理局公開標(biāo)準(zhǔn)[10].
本文設(shè)計(jì)的不需要特定的郵件系統(tǒng),要對(duì)待發(fā)送郵件內(nèi)容進(jìn)行標(biāo)準(zhǔn)處理,然后以文件的形式保存,文件可以通過任何郵件進(jìn)行發(fā)送,它分成3部分:1)郵件的簽密部分;2)一致性檢驗(yàn)部分;3)信件主體加密部分.文件具有統(tǒng)一的格式,以在通信過程中使用方便,NMES郵件加密的統(tǒng)一格式主要包含簽密信息、信體加密信息、一致性檢驗(yàn)信息,其統(tǒng)一格式如下.
消息格式主要用3個(gè)英文大寫字符E(encrypt),S(Signcrypt),C(consistency)表示加密郵件的3個(gè)功能,3個(gè)字符分別表示加密、簽密和一致性檢驗(yàn).
表1 消息格式
接收者(receiver)和發(fā)送者(sender)的名字都是用NMES注冊(cè)用戶名來表示,用戶名為包含數(shù)字、英文字符的字符串,每個(gè)用戶名都是特定唯一的.
簽密信息是發(fā)送者通過基于身份的簽密算法對(duì)SM4密鑰進(jìn)行簽密得到的簽密值,對(duì)其進(jìn)行編碼成字符串保存.
一致性檢驗(yàn)信息是使用SM3雜湊算法對(duì)要發(fā)送的信息進(jìn)行雜湊,得到的一個(gè)256 b的雜湊值,再使用SM4算法對(duì)雜湊值進(jìn)行加密得到的一個(gè)一致性檢驗(yàn)的密文信息,編碼后以字符串的形式保存.
信件主體加密信息是用獲取到的SM4密鑰對(duì)信體進(jìn)行加密后的密文,加密編碼以字符串保存.
本文的郵件加密系統(tǒng)框架流程如圖2所示:
圖2 NMES系統(tǒng)框架流程
Step1. SM4密鑰獲取.
首先獲取SM4密鑰,在NMES系統(tǒng)中,SM4密鑰獲取方式有2種,第1種方式:用戶自己設(shè)置,輸入16 b的字符作為SM4加密的密鑰.第2種方式:系統(tǒng)自己生成,系統(tǒng)隨機(jī)產(chǎn)生16個(gè)隨機(jī)數(shù)作為自身的密鑰,將隨機(jī)數(shù)以字符的形式存入密鑰key中.
Step2. 獲取用戶私鑰.
用戶通過在郵件系統(tǒng)中注冊(cè)獲取用戶唯一的身份標(biāo)識(shí)ID,PKG通過獲取到的身份ID計(jì)算出該用戶的私鑰S,用安全的傳輸方式秘密發(fā)送給用戶.
Step3. 對(duì)SM4密鑰進(jìn)行簽密.
對(duì)Step1中獲取到的SM4密鑰進(jìn)行簽密,用接收者的身份標(biāo)識(shí)ID和自己私鑰S對(duì)SM4密鑰進(jìn)行簽密,將簽密結(jié)果σ保存.
Step4. 用SM3對(duì)待加密信件進(jìn)行壓縮編碼.
首先要對(duì)待加密信體進(jìn)行填充,若信體m的長度為l(l<264)(單位為b),首先將bit“1”增添在消息最后面,再添加k個(gè)“0”,k滿足l+1+k=448 mod 512的最小非負(fù)數(shù).再添加一個(gè)64 b比特串用以表示消息長度,使得被填充后的消息m1的長度為512N.然后使用SM3算法對(duì)填充好的數(shù)據(jù)進(jìn)行壓縮編碼,最終會(huì)得到512 b的雜湊值V.
Step5. 對(duì)壓縮編碼值進(jìn)行加密編碼.
將壓縮編碼V用SM4算法以及發(fā)送者獲取到的密鑰對(duì)其進(jìn)行加密,密文C1以字符串的形式存儲(chǔ).
Step6. 用SM4對(duì)信件加密.
將信件M按照16 B分組,然后用獲得的SM4密鑰對(duì)其進(jìn)行加密[11](Ek就是表示用密鑰key進(jìn)行SM4加密):Ci=Ek(Mi).
將密文塊級(jí)聯(lián)起來就是密文C2,對(duì)密文進(jìn)行編碼以便在網(wǎng)絡(luò)上傳輸.
Step7. 待發(fā)送的文件.
將各個(gè)信息按照接收者EMS名、發(fā)送者的EMS名、發(fā)送格式信息、簽密信息、密文信息的順序以規(guī)定的格式存入一個(gè)文本,加密過程結(jié)束.
解密過程:首先對(duì)接收到的密文進(jìn)行分離,分離出消息格式類型、接收者M(jìn)ES名、發(fā)送者M(jìn)ES名、分離出簽密密文σ,用發(fā)送的身份標(biāo)識(shí)和接收者的私鑰S進(jìn)行解簽密,若解密成功則同時(shí)進(jìn)行簽名驗(yàn)證,解出的明文為SM4密鑰.接著通過用SM4密鑰對(duì)密文C1和C2解密,得到信件的明文m以及雜湊值v.再對(duì)明文進(jìn)行SM3壓縮編碼得到V′,與解密的v進(jìn)行一致性檢驗(yàn),檢測是否信息被篡改,確保信息的完整性和真實(shí)性.
現(xiàn)代密碼學(xué)其密碼算法大多建立在復(fù)雜的數(shù)學(xué)計(jì)算上,SM4算法是國家商用密碼算法,該算法使用了移位、交換、壓縮、迭代等操作,NMES系統(tǒng)開發(fā)使用的是C語言,C語言具有運(yùn)算速度快、移植性好等特點(diǎn),通過測試可知,本系統(tǒng)使用的SM4加密算法每秒可以加密6 507 KB的文本數(shù)據(jù).
簽密算法是通過橢圓曲線上的雙線性對(duì)構(gòu)造的,使用256 b的BN曲線.并依賴開源庫opessl進(jìn)行橢圓曲線上的運(yùn)算和雙線性對(duì)的計(jì)算,大大提高了開發(fā)效率.通過實(shí)驗(yàn)可知密鑰長度為512 b時(shí),加密一個(gè)數(shù)據(jù)塊僅僅需要幾秒鐘,可滿足日常的郵件發(fā)送功能.
程序是在Microsoft Visual Studio 2010編程環(huán)境下使用C語言實(shí)現(xiàn)的,能夠?qū)崿F(xiàn)對(duì)文本的加密.系統(tǒng)主要有如下3個(gè)部分:
1) 用戶登錄界面.主要功能包含新用戶注冊(cè)、已有賬戶登錄.
2) 書寫待發(fā)送的消息m.對(duì)SM4的key進(jìn)行簽密,同時(shí)使用key對(duì)郵件加密,加密后的密文以文件的形式保存.
3) 讀取郵件.對(duì)接收的郵件進(jìn)行解簽密,在解簽密的同時(shí)進(jìn)行驗(yàn)證,通過解出的密鑰對(duì)郵件密文解密.
其中加解密功能是系統(tǒng)的重要功能.首先獲取到SM4密鑰,隨機(jī)生成或者用戶設(shè)定,隨后通過ID標(biāo)識(shí)獲得接收者的參數(shù)和用戶的參數(shù),對(duì)SM4密鑰進(jìn)行簽密,簽密可以實(shí)現(xiàn)對(duì)SM4密鑰的加密和驗(yàn)簽,這樣既保證了密鑰的安全傳輸又進(jìn)行簽名驗(yàn)證,隨后使用SM3算法對(duì)待加密的郵件文本進(jìn)行雜湊運(yùn)算,獲得一個(gè)256 b的雜湊值,并用SM4算法對(duì)雜湊值和待加密郵件文本進(jìn)行加密,將加密后的密文進(jìn)行傳輸.加密后的郵件文件必須依照英特網(wǎng)的編碼格式進(jìn)行傳輸,其編碼格式是Base64.
軟件具體操作步驟如下:
1) 運(yùn)行軟件進(jìn)入登錄界面(如圖3所示),若已經(jīng)注冊(cè),直接登錄,否則先進(jìn)行注冊(cè).
圖3 郵件登錄界面
2) 用戶若發(fā)送郵件,需要輸入對(duì)方的唯一身份標(biāo)識(shí)符ID和要發(fā)送的內(nèi)容(如圖4所示).
圖4 加密界面
3) 獲取到簽密密鑰Key1和加密密鑰Key2,點(diǎn)擊加密,對(duì)Key2進(jìn)行簽密,對(duì)M進(jìn)行雜湊,得到雜湊值V,對(duì)V和M進(jìn)行加密(如圖4所示).
4) 加密完成后點(diǎn)擊保存,會(huì)以標(biāo)準(zhǔn)的固定格式進(jìn)行保存,通過郵件進(jìn)行發(fā)送.
5) 接收郵件,將郵件讀入到系統(tǒng),點(diǎn)擊解密,對(duì)郵件進(jìn)行解簽密,完成解密(如圖5所示).
圖5 解密界面
NMES系統(tǒng)通過國密算法、簽密算法和鏈?zhǔn)郊用芩惴?,?shí)現(xiàn)了電子郵件以密文的形式在網(wǎng)絡(luò)上進(jìn)行安全的傳輸,有效保證了郵件內(nèi)容的安全.
功能分析:NMES系統(tǒng)的主要功能有3個(gè):加密、簽密、一致性驗(yàn)證.通過這些功能可以保證電子郵件的內(nèi)容的機(jī)密性、來源的可靠性、內(nèi)容完整性以及不可否認(rèn)性,從而保證郵件的安全.
明文信息首先進(jìn)行加密,同時(shí)明文需要通過SM3算法進(jìn)行雜湊得到明文的雜湊值V,再使用SM4算法對(duì)V進(jìn)行加密.這樣就可以實(shí)現(xiàn)一致性檢測,驗(yàn)證消息是否被篡改,保證了消息的一致性和真實(shí)性.
SM4的密鑰是通過簽密算法進(jìn)行簽密,同時(shí)完成了加密和簽名的功能,這樣既能安全地傳輸密鑰,而且對(duì)消息進(jìn)行了簽名,保證消息來源的可靠性和不可偽造性.
系統(tǒng)通過對(duì)郵件內(nèi)容進(jìn)行2次加密、1次一致性檢驗(yàn)、1次簽名,使得電子郵件在傳輸過程中的安全性大大提高.
效率分析:系統(tǒng)使用的算法相較于目前電子郵件加密系統(tǒng)效率更高,速度更快.系統(tǒng)使用的對(duì)稱加密算法是國密SM4,在Windows環(huán)境中,CPU(英特爾)Intel?CoreTMi5-4590 CPU @3.30 GHz下加密1 MB的文本需要0.17 s.系統(tǒng)使用的簽密算法加密SM4的128 b密鑰,需要0.01 s.
由于傳統(tǒng)PKI的密鑰分發(fā)和證書管理困難,本系統(tǒng)是基于IBE設(shè)計(jì)的,避免了密鑰的分發(fā)困難和證書的管理復(fù)雜,系統(tǒng)使用簽密的技術(shù)可以在一個(gè)邏輯步驟內(nèi)完成加密與簽名,提高了通信效率,每次發(fā)送郵件使用的SM4密鑰都不一樣,可以保證密文的安全.
系統(tǒng)結(jié)合簽密算法、國密SM4、SM3算法,實(shí)現(xiàn)了電子郵件的加密系統(tǒng),NMES電子郵件系統(tǒng)速度快、安全性高,信息的秘密性好,身份驗(yàn)證和簽名效率高,應(yīng)用前景廣泛.
本文主要討論了基于國密算法的新型電子郵件加密系統(tǒng)的研究與實(shí)現(xiàn),介紹了SM3、SM4和基于身份的簽密算法,并結(jié)合這些算法設(shè)計(jì)了NMES系統(tǒng),本系統(tǒng)可以實(shí)現(xiàn)對(duì)郵件的加密、解密、簽名以及一致性檢測等功能.本系統(tǒng)使用2次驗(yàn)證,第1次是消息來源驗(yàn)證;第2次是一致性驗(yàn)證,驗(yàn)證消息是否被竄改,通過2次驗(yàn)證可以確保消息的真實(shí)性和可靠性.系統(tǒng)使用了簽密技術(shù)提高了效率,減少了通信量,每一次使用SM4的密鑰不同大大提高了安全性.這是對(duì)郵件加密系統(tǒng)的一次嘗試和探索,將來會(huì)進(jìn)一步對(duì)本系統(tǒng)進(jìn)行改進(jìn)與完善,并在實(shí)際中運(yùn)用.