李景華 葛利軍
1.公安部第一研究所 2.北京市微技術(shù)研究所
密碼算法是保障信息安全的核心技術(shù)。長期以來,我國政府、金融、銀行、公安等多個重點行業(yè)領(lǐng)域都是沿用3DES、RSA等國際通用的密碼算法體系及相關(guān)標準。然而,“棱鏡門”事件的爆發(fā)意味著這些國外密碼算法并不安全,繼續(xù)使用國外密碼算法將會帶來巨大的安全隱患。我國自2010年起相繼發(fā)布了SM1、SM2、SM3、SM4、SM7、SM9、祖沖之算法等多種國密算法標準和規(guī)范,目前大多數(shù)國密算法在國內(nèi)金融、銀行等多個行業(yè)得到深入廣泛的應(yīng)用。2018年,國密算法SM2、SM3和SM9先后被納入ISO/IEC國際標準并正式發(fā)布,標志著我國密碼算法國際標準體系已基本成型。
國際旅行證件是公民出入國(境)和在國(境)外旅行時用于證明其國籍和身份的重要證件,其重要性不言而喻。開展國密算法在國際旅行證件應(yīng)用中的研究,實現(xiàn)出入境領(lǐng)域密碼算法的“自主可控”,已成為國際旅行證件應(yīng)用發(fā)展的必然趨勢。
為確保國際旅行證件的全球互用性,國際民航組織(ICAO,International Civil Aviation Organization)發(fā)布了Doc 9303技術(shù)規(guī)范,要求世界各國參照規(guī)范進行實施。Doc 9303規(guī)范對國際旅行證件在物理防偽、生物特征、數(shù)字安全等多方面均提出了明確的技術(shù)要求,其中數(shù)字安全技術(shù)主要通過安全機制、密碼算法和協(xié)議來保證證件芯片及芯片內(nèi)電子數(shù)據(jù)的安全。
Doc 9303規(guī)范建議的安全機制包括基本訪問控制、口令認證連接確立、主動認證、芯片認證、被動認證等七種,主要用于防止證件芯片被非法訪問和防止隱私泄露、防止芯片被替換、防電子數(shù)據(jù)被偽造或變造等。這七種安全機制中,僅被動認證屬于Doc 9303規(guī)范強制要求,其他安全機制均屬于可選要求。
Doc 9303規(guī)范建議安全機制采用的密碼算法全部都是國際上成熟通用的商用密碼算法。這些密碼算法分為四類:(1)對稱密碼算法:3DES、AES;(2)非對稱密碼算法:RSA、ECDSA、DSA;(3)摘要算法:SHA-224、SHA-256、SHA-384、SHA-512;(4)密鑰交換協(xié)議:DH、ECDH。
不難發(fā)現(xiàn),Doc 9303規(guī)范在安全機制及密碼算法的實現(xiàn)方面保留了足夠的靈活性,允許用戶根據(jù)自身的安全需求選擇一種或多種安全機制實現(xiàn),每一種安全機制可以從建議的多種密碼算法中選擇一種實現(xiàn)。還可以看到,國密算法目前并不在最新的Doc 9303規(guī)范建議的密碼算法之列。但是,隨著我國國際地位的提高和我國密碼算法國際標準體系的逐漸完善,國密算法應(yīng)用于國際旅行證件已不再遙不可及。
國密算法應(yīng)用于國際旅行證件,即采用國密算法取代Doc 9303建議的國際密碼算法,取決于兩個條件:(1)國密算法在功能上與Doc 9303建議的國際算法相同;(2)國密算法在安全強度上不低于Doc 9303建議的國際通用密碼算法。
我國目前發(fā)布的國密算法主要包括SSF33、SM1、SM2、SM3、SM4、SM7、SM9和祖沖之算法等。鑒于國際旅行證件應(yīng)用必須選用公開的密碼算法,因此,未公開的密碼算法SSF33、SM1、SM7不能選用。SM9算法是一種基于標識的非對稱密碼算法,與Doc 9303建議選用的傳統(tǒng)的RSA、ECDSA等非對稱密碼算法不同,故不能選用;祖沖之算法屬于對稱密碼算法中的序列密碼算法,與Doc 9303建議選用對稱分組密碼算法的要求不一致,不能選用。因此,未來在國際旅行證件應(yīng)用中可能選用的國密算法只有SM2、SM3和SM4三種算法。
下面將從對稱密碼算法、非對稱密碼算法、摘要算法和密鑰交換協(xié)議四方面對國密算法和ICAO建議的國際通用算法進行比較,探討未來在國際旅行證件應(yīng)用中采用國密算法的可行性。
1.對稱密碼算法的比較
Doc 9303建議選用的對稱密碼算法僅包含分組密碼算法,因此,這里僅就國密的分組密碼算法SM4與Doc 9303建議的分組密碼算法3DES、AES進行比較。
對SM4、3DES和AES三種分組密碼算法在密鑰長度、分組長度、循環(huán)次數(shù)和算法結(jié)構(gòu)四個方面進行了比較,見表1。
?
(1)SM4算法是我國自主設(shè)計的對稱分組密碼算法。SM4算法的分組長度為128比特,密鑰長度為128比特,加密算法與密鑰擴展算法都采用32輪非線性迭代結(jié)構(gòu),每次迭代由一個輪函數(shù)給出,其中的輪函數(shù)由一個非線性變換和線性變換復(fù)合而成。
(2)3DES算法,即三重DES算法,是美國推出的一種過渡加密標準。3DES是DES的一種安全變形,通過增加密鑰長度提升了算法的安全性。在Doc 9303規(guī)范中, 3DES算法采用雙密鑰模式,分組長度為128比特,密鑰長度為112比特。
(3)AES算法是美國2001年發(fā)布的高級加密標準,分組長度為128位,密鑰長度可以有128位、192位、256位三種,計算輪數(shù)與密鑰長度有關(guān),分別是10、12、14輪。
從算法功能來說,SM4、3DES、AES算法均屬于對稱分組密碼算法,分組長度一致,都用于實現(xiàn)數(shù)據(jù)的加密解密運算和消息驗證碼運算,保證數(shù)據(jù)的機密性和完整性。從安全性來說,SM4算法比3DES算法的密鑰長度長,且在計算過程中增加了非線性變換,因此理論上SM4算法的安全性要高于3DES算法;SM4與AES算法都采用了非線性變換,但AES算法的密鑰長度更長,理論上AES算法安全性更高。
目前,SM4算法已經(jīng)過我國專業(yè)密碼機構(gòu)的充分分析測試,可以抵抗差分攻擊、線性攻擊等現(xiàn)有攻擊,證明SM4算法是安全的。顯然,利用SM4算法替換Doc 9303規(guī)范建議的3DES算法是可行的。
2.非對稱密碼算法的比較
Doc 9303建議的非對稱密碼算法包括RSA、ECDSA和DSA三種國際通用的公鑰密碼算法。其中RSA和ECDSA算法使用最為廣泛,本文僅將這兩種算法與國密SM2算法進行比較。SM2與RSA、ECDSA算法在理論基礎(chǔ)、計算復(fù)雜度和密鑰長度、安全性等幾方面的對比情況,詳見表2。
?
(1)RSA算法是美國1977年提出的公鑰密碼算法,是最早的公鑰密碼算法之一,在全球范圍被廣泛使用。RSA算法的安全性取決于大整數(shù)因子分解的難度。隨著計算機運算速度的提高和分布式計算的發(fā)展,1024位RSA算法已經(jīng)被證實存在被破解的風(fēng)險。Doc 9303規(guī)范建議RSA算法選用大于2048位的密鑰長度。
(2)ECDSA算法是1985年提出的橢圓曲線公鑰密碼算法,其安全性取決于橢圓曲線離散對數(shù)計算的難度。與RSA算法相比,ECDSA算法具有抗攻擊性強、CPU占用少、內(nèi)容使用少、網(wǎng)絡(luò)消耗低、加密速度快等特點。ECDSA可以用較少的計算能力提供比RSA算法更高的安全強度,而所需的密鑰長度卻遠比RSA算法短。
(3)SM2算法是我國自主設(shè)計的橢圓曲線公鑰密碼算法,基于國際標準的橢圓曲線密碼理論進行自主研發(fā)設(shè)計,具備橢圓曲線算法的加密速度快、安全性高等性能特點。就安全性而言,SM2和ECDSA算法的安全性都取決于橢圓曲線離散對數(shù)問題,二者的安全性屬于同一級別,但SM2算法在數(shù)字簽名方面與ECDSA略有不同,它采取了更為安全的機制,提高了計算復(fù)雜度,因此,SM2算法的安全性要高于ECDSA算法。
從算法功能來說,SM2與RSA、ECDSA均可實現(xiàn)數(shù)字簽名與驗證、非對稱加密與解密等運算。從安全性來說,SM2的安全性高于RSA和ECDSA。因此,利用SM2算法替換RSA算法或ECDSA算法是可行的。
3.摘要算法的比較
摘要算法,也稱雜湊算法、哈希算法,在信息安全領(lǐng)域中用于計算消息的摘要、校驗消息的完整性,通常配合數(shù)字簽名算法使用。對于摘要算法而言,無論輸入的消息有多長,計算出來的消息摘要的長度總是固定的。一般認為,摘要長度越長,摘要算法的安全性越高。Doc 9303最新規(guī)范建議的摘要算法包含SHA-224、SHA-256、SHA-384、SHA-512四種。這些摘要算法是美國發(fā)布的摘要算法標準,用于取代目前已被破解的MD5和SHA-1算法。
鑒于SHA-256的摘要長度與國密算法SM3的摘要長度一致,因此,這里僅比較SM3與SHA-256。SHA-256算法輸入消息的最大長度不超過2^64比特,分組長度為512位,摘要長度為256位。SM3算法是我國自主設(shè)計的摘要算法,在SHA-256基礎(chǔ)上改進實現(xiàn),消息分組長度為512位,摘要長度為256位。SM3算法的壓縮函數(shù)與SHA-256的壓縮函數(shù)具有相似的結(jié)構(gòu),但SM3設(shè)計更復(fù)雜,因而SM3具有更高的安全性。
從算法功能來說,SM3與SHA-256均屬于摘要算法,摘要長度均為256位。從安全強度來說,SM3算法高于SHA-256。顯然,用SM3算法替換SHA-256算法是可行的。
4.密鑰交換協(xié)議的比較
密鑰交換協(xié)議,是指兩個用戶通過交互的信息傳遞、用各自的私鑰和對方的公鑰來商定雙方共享的秘密密鑰的過程。密鑰交換協(xié)議主要用于密鑰管理和協(xié)商。
Doc 9303規(guī)范建議的密鑰交換協(xié)議包括DH和ECDH兩種協(xié)議。DH協(xié)議是1976年Diffie和Hellman提出的一種通信雙方通過公開信道安全交換共享密鑰的密鑰交換算法,它可以有效地解決對稱密碼體制中的密鑰分發(fā)問題。DH協(xié)議的安全性依賴于計算離散對數(shù)的困難程度。將ECC算法和DH協(xié)議結(jié)合使用,就是ECDH協(xié)議,其難度依賴于橢圓曲線的離散對數(shù)問題。
SM2密鑰交換協(xié)議是一種ECDH協(xié)議。GM/T 0003.3-2012《SM2橢圓曲線公鑰密碼算法 第3部分:密鑰交換協(xié)議》規(guī)范對SM2密鑰交換協(xié)議進行了明確規(guī)定。SM2密鑰交換協(xié)議與ECDH協(xié)議功能相同,但復(fù)雜性更高,計算量更大,理論上更安全。因此,用SM2密鑰交換協(xié)議替換ECDH協(xié)議是可行的。
綜上所述,通過對稱密碼算法、非對稱密碼算法、摘要算法和密鑰交換協(xié)議四個方面的對比,可以得出結(jié)論:國密算法SM2、SM3、SM4至少可以分別替換Doc 9303建議的幾類國際通用密碼算法中的一種。但是,也要注意到,由于國密算法尚未實現(xiàn)廣泛兼容,在主流瀏覽器、操作系統(tǒng)等終端環(huán)境中不受信任,因此在實際應(yīng)用中,基于國密算法實現(xiàn)的產(chǎn)品在易用性和通用性方面要劣于國際通用算法產(chǎn)品。
將國密算法應(yīng)用于國際旅行證件,可以實現(xiàn)國際旅行證件領(lǐng)域密碼算法的“自主可控”,提高我國簽發(fā)的國際旅行證件及系統(tǒng)的安全性。但是,由于我國出入境管理體制較為復(fù)雜,旅行證件不僅包括用于國際旅行的電子護照,也包括港、澳、臺地區(qū)使用的區(qū)域性旅行證件。鑒于不同旅行證件的使用場合不同,其管理和業(yè)務(wù)需求也會有所不同。研發(fā)新一代基于國密算法的旅行證件及應(yīng)用系統(tǒng)時,需要重點解決以下三個關(guān)鍵問題:
國際旅行證件的首要前提是具備良好的國際互用性。目前,國密算法SM2、SM3雖已被ISO/IEC納入國際標準,但仍未被Doc 9303規(guī)范推薦采用,因此,近期我國簽發(fā)的國際旅行證件只能繼續(xù)選用Doc 9303規(guī)范建議的國際通用算法和協(xié)議實現(xiàn)。未來,一旦SM2、SM3和SM4全都被納入國際標準并被國際民航組織Doc 9303規(guī)范推薦采用,國際旅行證件應(yīng)用系統(tǒng)可迅速針對國密算法進行升級改造,實現(xiàn)國際旅行證件的“密碼算法”自主可控。
Doc 9303規(guī)范對于安全機制及密碼算法和協(xié)議的選擇預(yù)留了足夠的靈活性,因此,為了查驗所有符合Doc 9303規(guī)范的國際旅行證件,邊檢查驗系統(tǒng)應(yīng)支持Doc 9303建議的所有安全機制及密碼算法。
新一代支持國密算法的國際旅行證件應(yīng)用系統(tǒng)應(yīng)具備向下兼容性,既要支持新一代國密算法證件的制發(fā)、查驗,也要支持以往的基于國際算法證件的查驗。
國產(chǎn)密碼是實現(xiàn)自主可控的關(guān)鍵。隨著我國密碼法的發(fā)布,應(yīng)用系統(tǒng)從國際通用算法向國密算法升級改造的浪潮將馬上到來。因此,有必要盡快研究基于國密算法的國際旅行證件及應(yīng)用系統(tǒng),實現(xiàn)出入境領(lǐng)域密碼算法的自主可控。