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