郭 嘉,劉廷艦,董峰偉
(三未信安科技股份有限公司,北京 100000)
得益于5G 通信技術(shù)及物聯(lián)網(wǎng)、互聯(lián)網(wǎng)技術(shù)的發(fā)展,我國已經(jīng)正式進入了“萬物互聯(lián)”的時代。新時期背景下人們在享受物聯(lián)網(wǎng)、互聯(lián)網(wǎng)技術(shù)所帶來的便利的同時,也在承受信息泄露、丟失風險所帶來的挑戰(zhàn)。傳統(tǒng)互聯(lián)網(wǎng)環(huán)境下的身份認證模式需要不同用戶基于不同服務(wù)器的需求,記憶并應(yīng)用多種口令,這導(dǎo)致傳統(tǒng)的身份認證過程中極容易出現(xiàn)因口令泄漏所引發(fā)的安全問題。想要從根源上避免諸如此類的問題,便可以基于SM9 算法以及去中心化的認證機制,在降低認證代價的基礎(chǔ)上全面避免認證節(jié)點堵塞的問題,還可以有效優(yōu)化認證過程的隱私性與效率。
SM9 算法是基于256 位BN 橢圓曲線的公鑰加密算法,盡管其相較于傳統(tǒng)的國家商用密鑰而言做出了一定的創(chuàng)新,但其本質(zhì)仍屬于IBE 機制[1]。本文所應(yīng)用到的SM9 算法相關(guān)專業(yè)術(shù)語如下。
1.1.1 標識(Identify)
標識是指在用戶實體無法否認的身份信息,即身份認證過程中唯一一個可以確定用戶實體的信息,具有唯一性與絕對性[2]。如身份證號、電子郵件地址等,通常情況下標識會以ID 的縮寫形式出現(xiàn),用戶x、用戶y 可以利用IDx、IDy的形式代替。
1.1.2 主密鑰(Master Key)
可以將其理解為標識密鑰分層機構(gòu)中最重要、最頂層的密鑰,應(yīng)用中通常會分為主公鑰以及主私鑰2 個模塊。其中,主公鑰面向全部用戶,主私鑰則只需要由密鑰生成中心(Key General Center,簡稱KGC)進行單獨保存,以此維護其私密性,并且在后續(xù)的流程中,KGC 會根據(jù)用戶的標識及主私鑰生成具有針對性的用戶密鑰(User Key)[3]。
設(shè)定P1為橢圓曲線假發(fā)循環(huán)群G1的生成元,則P2為橢圓曲線加法循環(huán)群G2的生成元;H(·)代表Hash 函數(shù);Enc(·)及Dec(·)依次對應(yīng)分組加密與分組解密的運算模式;KDF(·)是密鑰推導(dǎo)過程中涉及的函數(shù);MAC(·)是身份認證過程中攜帶密鑰的認證消息編碼;e(·)是雙線性對。綜上,基于本次研究的SM9 密鑰加密算法如下。
假設(shè)①與②分別為身份認證流程中的信息發(fā)送者及信息接收者,則身份認證過程中的加密流程如下。
首先是密鑰生成:KGC 產(chǎn)生的隨機數(shù)ke∈[1,N-1]作為加密主私鑰,計算Ppub-e=[ke]P1為加密主公鑰、(ke,Ppub-e)則為加密主密鑰對;
用戶②的標識為ID②,則為用戶②所生成的加密私鑰為de②,KGC 在有限域FN上計算t1=H1(ID②,N)+ke,t2=,得到de②=[t2]P2;
其次是加密過程:為了加密消息明文M,①需要執(zhí)行以下步驟。
1)計算Q②=[H1(ID②\\h ID,N)]P1+Ppub-e;
2)選擇隨機數(shù)r∈[1,N-1];
3)計算C1=[r]Q②,g=e(Ppub-e,P2),w=gr;
4)計算K=KDF(C1\\w\\ID②);
5)按加密明文的分類方法進行計算,在采用序列密碼方式加密的情況下,則計算C2=M+K;在采用分組密碼方式加密的情況下,則計算C2=Enc(K,M);
6)計算C3=MAC(K,C2),得到密文為C=C1\\C2\\C3。
最后是解密過程:針對密文C=C1\\C2\\C3,②的解密過程如下。
1)計算w′=e(C1,de②);
2)計算K′=KDF(C1\\w′\\ID②);
3)按加密明文方法的不同進行解密,在采用序列密碼方式加密的情況下,則計算M′=C2+K1;在采用分組密碼方式加密的情況下,則計算M′=Dec(K1′,C2);
4)計算u=MAC(K2′,C2),假設(shè)u=C3,則輸出明文M′,否則報錯。
設(shè)①與②分別對應(yīng)簽名方以及驗證方,則基于SM9的數(shù)字簽名過程如下。
首先是密鑰生成:KGC 產(chǎn)生的隨機數(shù)ke∈[1,N-1]作為加秘主私鑰,計算Ppub-s=[ke]P1為加密主公鑰、(ke,Ppub-s)則為加密主密鑰對;
簽名方①的標識為ID①,則為用戶②所生成的加密私鑰為de①,KGC 在有限域FN上計算t1=H1(ID②,N)+ke,,得到de①=[t2]P2。
其次是簽名過程:假設(shè)有待簽名的消息為A,則①的簽名過程如下。
1)計算g1=(Ppub-s,P2);
2)選擇隨機數(shù)r∈[1,N-1];
3)計算w=gr,h=H(M\\w,N),l=(r-h)modN;
4)計算S=[l]de①,則A 的簽名為(h,S)。
最后是驗證過程:為驗證消息M′的簽名(h′,S′),②需要執(zhí)行下述過程。
1)計算g1=(Ppub-s,P)2;
2)計算,h1=H(ID①,N);
3)計算P=[h1]P1+Ppub-s,u=e(P,S′),w′=u·t;
4)計算h2=H(2M′\\w′,N),假設(shè)h2=h′,則簽名驗證通過,反之失敗[4]。
本文涉及的符號定義如圖1 所示。
由于本次技術(shù)方案重點采用了MS9 的公鑰計算模式,因此在完成初始化參數(shù)之前,需要確定基點P1∈G1,P2∈G2。將這一過程中IGC 所產(chǎn)生的隨機數(shù)集SkI∈[1,N-1]定義為私鑰,而后設(shè)GI中包含的元素PkI∈[SkI]PI為公鑰。由此,可以確定公私密鑰對為(SkI,PkI)[5]。后續(xù)過程中,IGC 會公開PkI同時將SkI私鑰存儲于數(shù)據(jù)庫之中。
為保障能夠充分發(fā)揮SM9 算法的優(yōu)勢,IGC 應(yīng)該基于IdI生成與其相對應(yīng)的私鑰SkI,而后在有限域FN之上完成t1=H(IdI,N)+SkI及t2=SkI·t1-1modN的計算,最終得到SkI=[t2]P2。這一過程如圖2 所示,其中輸入為空,輸出為生成的公鑰PkI及公鑰的有效期限,同時對這一流程進行簽名。參數(shù)初始化的流程形式如圖2 所示。
圖2 參數(shù)初始化的流程形式
用戶Ui在完成注冊操作并認證成功后,IGC 會為該用戶生成能代表其身份且具有唯一性的Idi及Ski分別作為該用戶的公鑰與私鑰[6]。同參數(shù)初始化過程一般,IGC 會在有限域FN之上完成t1=H(Idi,N)+Ski以及t2=Skiti-1modN的計算,進而得到Ski=[t2]P2。為保障用戶的隱私性,這一過程將采用離線模式,因此可以并保障IGC 所反饋給用戶的信息不會泄露,同時還會將此作為身份認證信息利用共識機制上傳于區(qū)塊鏈之中,以滿足用戶后續(xù)的登錄與驗證行為[7]。
在用戶有更新密鑰的需求時,用戶自身會充當IGC 的角色進行更新流程[8]。即用戶通過指定的操作在相關(guān)系統(tǒng)中選擇隨機數(shù)k∈[1,N-1]作為這次更新活動的私鑰。而后系統(tǒng)會自動計算G1中的元素Pki=[k]P1作為公鑰。并在有限域FN之上完成t1=H(IdI,N)+k以及t2=k·t1-1modN的計算,進而得到Ski=[t2]P2。這一過程之后用戶的基礎(chǔ)身份信息不會發(fā)生改變,并且更新后的私鑰為Ski,其參數(shù)為Pki,流程如圖3 所示。這一流程中需要輸入索引以及Hash 值,并輸出密鑰更新后的參數(shù)Pki及密鑰的有效時間,進一步利用未更新之前的密鑰對這一流程進行簽名[9]。
圖3 用戶密鑰更新形式
身份認證過程中存在因用戶自身遺忘、泄漏密鑰進而導(dǎo)致其無法更新密鑰的情況。因此需要向IGC 主動發(fā)出更換密鑰的申請,該過程與用戶身份標識的過程存在相似性[10]。用戶的身份標識保持不變,在IGC 接收到用戶的更換密鑰申請后,其會在有限域FN之上完成t1=H(IdI,N)+Ski以及t2=Skit1-1modN的計算,進而得到Ski=[t2]P2。具體流程如圖4 所示。
圖4 用戶密鑰更換形式
在用戶需要更換其自身的身份標識以更好地進行身份認證活動時,也同樣需要向IGC 發(fā)出更換身份信息的申請。IGC 在接收申請后,會結(jié)合用戶的需求為其重新生成一份具有唯一標識的身份標識符以及Ski作為其公鑰與私鑰。首先需要輸入索引及Hash 值,用以在用戶正式更換身份標識之前明確相關(guān)參數(shù)所在的位置,而后結(jié)合用戶需求輸出身份標識以及參數(shù)、有效期限等,最后對本流程進行簽名。如若用戶想要注銷其身份信息,只需要將輸出區(qū)域設(shè)置為空白即可,如圖5 所示。
圖5 用戶注銷身份信息形式
首先,對用戶口令安全方面進行分析。該技術(shù)方案中用戶在不同服務(wù)器上進行身份認證的情況下,需要使用相同的口令以及不同的隨機數(shù),進一步利用該過程中所生成的Hash 值進行身份認證,因此相關(guān)用戶在不同服務(wù)器系統(tǒng)中只需要記住統(tǒng)一的口令便可完成身份證操作。在有重新注冊、更換終端設(shè)備等需求的情況下,只需使用統(tǒng)一的口令,便可對所有系統(tǒng)進行更新處理。
其次,對用戶丟失終端的安全隱患進行分析。本技術(shù)方案中儲存在用戶終端設(shè)備上的隨機數(shù)、私鑰等信息都是經(jīng)過特殊加密處理后的數(shù)據(jù)。假設(shè)存在用戶終端設(shè)備丟失的情況,只要其他人無法提供正確的口令,便無法破解終端上所儲存的用戶私密信息。因此,即使在用戶終端設(shè)備丟失的情況下,該技術(shù)方案仍可抵御口令猜測攻擊、信息遺失等安全隱患,全面保護用戶身份認證過程的安全性與隱私性。
最后,是他人仿冒用戶身份進行認證方面的安全性分析。該技術(shù)方案中所發(fā)起的身份認證申請過程中的所有信息都是經(jīng)過發(fā)起方數(shù)字簽名及接收方公鑰加密的,因此,不存在他人利用仿冒用戶身份標識的情況完成身份認證。如果存在用戶終端設(shè)備丟失,且他人仿冒用戶身份進行驗證的情況,只要他人在規(guī)定次數(shù)內(nèi)沒有輸入正確的口令,該系統(tǒng)設(shè)備便會自動鎖定相關(guān)程序應(yīng)用,因此,他人無法仿冒用戶的真實身份進行認證。同時,如上文所述,該技術(shù)方案存在一定的錯誤預(yù)設(shè)次數(shù),這為用戶的身份認證過程提供了一定的容錯率,即使用戶存在遺忘相關(guān)信息的情況,只要用戶能夠在規(guī)定的次數(shù)輸入正確的口令,便能夠完成身份認證。
綜上所述,本次研究基于SM9 算法,進一步利用了區(qū)塊鏈技術(shù)的優(yōu)勢,整理出了一種更具隱私性與效率性的互聯(lián)網(wǎng)身份認證技術(shù)方案以及其配套的密鑰管理方案,重點解決了既有SM9 算法中密鑰更新的困境。采用本技術(shù)方案進行互聯(lián)網(wǎng)身份認證的過程中,用戶僅僅需要在首次注冊后有第三方可信任IGC 為其生成獨有的身份認證標識以及密鑰,在后續(xù)的過程中便可以完全由用戶自行操作,不會過度依賴IGC。并且后續(xù)過程中用戶的交易形式、交流內(nèi)容等都會儲存于區(qū)塊鏈之上,利用共識機制保障相關(guān)數(shù)據(jù)的安全性與真實可信性。此次提出的身份認證方案基本框架具有一定的推廣與深入研究價值,未來可進一步加深研究,從而實現(xiàn)其在更廣泛場景中的應(yīng)用。