國產(chǎn)密碼算法軟件引擎的安全挑戰(zhàn)

密碼技術(shù)是網(wǎng)絡(luò)空間安全的重要基礎(chǔ),在計算機和網(wǎng)絡(luò)系統(tǒng)中發(fā)揮了不可替代的安全作用。推廣國產(chǎn)密碼技術(shù)、應(yīng)用商用密碼算法,是建設(shè)我國網(wǎng)絡(luò)空間安全基礎(chǔ)設(shè)施的必要措施之一。

0引言

隨著我國商用密碼技術(shù)的應(yīng)用推廣,國產(chǎn)密碼算法軟件引擎(或者稱為密碼算法軟件模塊、密碼算法軟件實現(xiàn)、軟件密碼產(chǎn)品等)已經(jīng)成為必不可少的密碼產(chǎn)品形態(tài)。

相比于硬件形式的密碼產(chǎn)品,密碼算法軟件引擎具有更好的適用性和靈活性、更低的成本;然而,密碼算法軟件引擎也面臨著更大的技術(shù)挑戰(zhàn)。本文分析了國產(chǎn)密碼算法軟件引擎面臨的主要安全挑戰(zhàn):隨機數(shù)發(fā)生器和密鑰安全。

相比美國NIST的隨機數(shù)發(fā)生器標(biāo)準(zhǔn)體系,我國的相關(guān)標(biāo)準(zhǔn)尚未完善,仍然需要不少工作。密碼軟件引擎運行在不完全可信的通用計算機軟硬件環(huán)境上,密鑰數(shù)據(jù)面臨著各種攻擊(包括系統(tǒng)軟件攻擊和物理攻擊等)。在各種計算機系統(tǒng)上,各種漏洞和攻擊層出不窮,設(shè)計密鑰安全方案、保護密鑰數(shù)據(jù),也是困難重重。

由于隨機數(shù)發(fā)生器的標(biāo)準(zhǔn)體系尚未建立、密鑰數(shù)據(jù)的安全技術(shù)挑戰(zhàn)并未完全解決,有效開展國產(chǎn)密碼算法軟件引擎的安全檢測,也存在著明顯的困難。

在密碼算法軟件引擎的檢測過程中,需要對軟硬件運行環(huán)境設(shè)定合理的假設(shè),進而檢測密碼算法軟件引擎是否在該假設(shè)前提下,產(chǎn)生不可預(yù)測的隨機數(shù)和有效地保護密鑰數(shù)據(jù)。

1國產(chǎn)商用密碼技術(shù)的應(yīng)用推廣

密碼技術(shù)是網(wǎng)絡(luò)空間安全的重要基礎(chǔ),在計算機和網(wǎng)絡(luò)系統(tǒng)中發(fā)揮了不可替代的安全作用。推廣國產(chǎn)密碼技術(shù)、應(yīng)用商用密碼算法,是建設(shè)我國網(wǎng)絡(luò)空間安全基礎(chǔ)設(shè)施的必要措施之一。

全面推廣國產(chǎn)密碼技術(shù)、深入應(yīng)用商用密碼算法,有如下三方面工作需要完成:

(1)密碼算法標(biāo)準(zhǔn)化。

目前我國已經(jīng)制定并公開發(fā)布了完整的密碼算法體系:分組密碼算法SM4、流密碼算法ZUC、雜湊算法SM3、公鑰密碼算法SM2(包括加解密、數(shù)字簽名和密鑰協(xié)商)和標(biāo)識密碼算法SM9。而且,其中部分密碼算法已經(jīng)成為國際標(biāo)準(zhǔn)。

(2)制定配套的密碼應(yīng)用標(biāo)準(zhǔn)。

在數(shù)字證書、通信協(xié)議、應(yīng)用接口等方面,形成配套標(biāo)準(zhǔn),實現(xiàn)商用密碼應(yīng)用標(biāo)準(zhǔn)體系。

(3)形成多元化的密碼產(chǎn)品生態(tài)。

各種不同形式的硬件、固件和軟件密碼產(chǎn)品,滿足應(yīng)用系統(tǒng)的不同需求;尤其是軟件密碼產(chǎn)品,更具有技術(shù)靈活性、實施部署更容易,在成本上也更具優(yōu)勢。

在商用密碼算法和密碼應(yīng)用標(biāo)準(zhǔn)方面,我國已經(jīng)發(fā)展多年。然而,在密碼產(chǎn)品多元化方面,一方面由于歷史原因,我國商用密碼長久以來只支持合規(guī)的硬件產(chǎn)品,近年來合格軟件密碼產(chǎn)品已經(jīng)開放、但是軟件密碼產(chǎn)品發(fā)展仍然較弱;另一方面也由于軟件密碼產(chǎn)品面臨著更大的技術(shù)挑戰(zhàn),尤其是密鑰安全,所以在軟件密碼產(chǎn)品(或者稱為軟件密碼引擎、密碼算法軟件模塊)方面,還有更多的技術(shù)難題需要克服。

2國產(chǎn)密碼算法軟件引擎的安全挑戰(zhàn)

從密碼學(xué)基本原理出發(fā),密碼算法公開,密碼產(chǎn)品最重要的、最需要保護的數(shù)據(jù)就是密鑰以及各種敏感參數(shù)。

按照GM/T 0028《密碼模塊安全技術(shù)要求》和GM/T 0039《密碼模塊安全檢測要求》,密碼模塊尤其需要確保關(guān)鍵安全參數(shù)和敏感參數(shù)的安全,其中最重要的參數(shù)就是密鑰。

密碼算法的密鑰以及各種敏感參數(shù)(例如,IV和Nonce等),通常都是由隨機數(shù)產(chǎn)生獲?。涣硪环矫?,確定性隨機數(shù)發(fā)生器也通常是帶有密鑰的密碼功能模塊;二者相互聯(lián)系、密不可分。

相比于硬件形式的常見密碼算法實現(xiàn)(例如,密碼機、密碼卡、USB令牌等),密碼軟件引擎面臨著更大的安全挑戰(zhàn)。

首先,密碼算法軟件引擎通常運行在常規(guī)的計算機系統(tǒng)或移動智能終端上,這一類設(shè)備不帶有專用的隨機數(shù)發(fā)生器芯片,密碼算法軟件引擎必須自己實現(xiàn)隨機數(shù)發(fā)生器。

其次,因為密碼軟件引擎與其他功能的軟件共享操作系統(tǒng)等軟硬件運行環(huán)境,由于各種應(yīng)用功能的要求千變?nèi)f化,必然會導(dǎo)致操作系統(tǒng)功能復(fù)雜、運行環(huán)境接口繁多,就可能會引入更多的計算機軟件漏洞和攻擊威脅。

所以,密碼軟件引擎在實現(xiàn)靈活、成本低廉、易于實施的同時,又成為安全挑戰(zhàn)最大的密碼實現(xiàn)。

2.1隨機數(shù)發(fā)生器的挑戰(zhàn)

隨機數(shù)發(fā)生器是各種密碼計算參數(shù)的來源,包括密鑰、初始化向量、隨機填充值等,應(yīng)該具備足夠隨機性(即信息熵)、從而確保攻擊者不可預(yù)測。

在計算機系統(tǒng)中,如何利用外界環(huán)境的不確定因素(即熵源),構(gòu)造不可預(yù)測的、高速的隨機數(shù)發(fā)生器,已有大量的相關(guān)研究,美國NIST也在這一方面形成了較為完善的技術(shù)標(biāo)準(zhǔn)體系。下文逐一展開介紹。

Linux內(nèi)核也帶有了隨機數(shù)發(fā)生器軟件實現(xiàn),并且在很多密碼軟件引擎中使用。然而必須要看到,即使是美國NIST制定多年的隨機數(shù)發(fā)生器系列標(biāo)準(zhǔn),也仍然不時有安全問題披露;同時,即使是被大量使用的、公開源代碼的隨機數(shù)發(fā)生器軟件實現(xiàn),也時有安全漏洞出現(xiàn)。

2.1.1美國NIST的隨機數(shù)發(fā)生器標(biāo)準(zhǔn)體系

隨機數(shù)發(fā)生器,大致可以分為NRBG(Non-deterministic Random Bit Generator非確定性隨機數(shù)發(fā)生器,或者稱為True Random Bit Generator真隨機數(shù)發(fā)生器)和DRBG(Deterministic Random Bit Generator確定性隨機數(shù)發(fā)生器,或者稱為Pseudorandom Bit Generator偽隨機數(shù)發(fā)生器)。

目前,美國NIST制定的隨機數(shù)發(fā)生器相關(guān)的FIPS標(biāo)準(zhǔn)主要包括如下:

(1)SP 800-22 A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications,隨機數(shù)發(fā)生器的統(tǒng)計檢測。

(2)SP 800-90A Recommendation for Random Number Generation Using Deterministic Random Bit Generators,根據(jù)外部輸入的熵源,使用對稱密碼或Hash等算法計算得到確定性隨機數(shù)。

(3)SP 800-90B Recommendation for the Entropy Sources Used for Random Bit Generation,隨機數(shù)發(fā)生器的熵源分析。

(4)SP 800-90C Recommendation for Random Bit Generator(RBG)Constructions,隨機數(shù)發(fā)生器的系統(tǒng)構(gòu)造,NRBG、DRBG和熵源以及在線檢測部件的組成。

(5)0SP 800-108 Recommendation for KeyDerivation Using Pseudorandom Functions,利用偽隨機數(shù)函數(shù)實現(xiàn)密鑰派生。

以上各標(biāo)準(zhǔn)之間關(guān)系如圖1所示。

圖1美國NIST的密碼隨機數(shù)發(fā)生器標(biāo)準(zhǔn)體系

首先,SP 800-90A描述了多種確定性隨機數(shù)發(fā)生器的算法,其基本原理是:發(fā)生器維護密鑰和內(nèi)部狀態(tài),間斷地從外部獲得熵源輸入,計算輸出隨機數(shù)。

SP 800-90B是DRBG隨機數(shù)發(fā)生器的熵分析,用于評估和分析外部輸入的熵源。

SP 800-90C是隨機數(shù)發(fā)生器的系統(tǒng)構(gòu)造,給出NRBG、DRBG和熵源以及在線檢測部件的多種組成方式,形成實際使用的隨機數(shù)發(fā)生器。

其次,隨機數(shù)發(fā)生器(主要是NRBG)輸出的隨機數(shù)序列,可使用SP 800-22標(biāo)準(zhǔn)給出的多項統(tǒng)計檢測方法來進行檢測,判斷其隨機性優(yōu)劣。

最后,SP 800-108給出了使用偽隨機數(shù)函數(shù)來實現(xiàn)密鑰派生的多種方法。

2.1.2隨機數(shù)發(fā)生器標(biāo)準(zhǔn)及其使用的問題

下文結(jié)合現(xiàn)實的軟件隨機數(shù)發(fā)生器安全漏洞、分析討論隨機數(shù)發(fā)生器標(biāo)準(zhǔn)及其使用的問題。

根據(jù)Snowden報告以及大量相關(guān)研究,在SP 800-90A標(biāo)準(zhǔn)2006版所包括的Dual EC算法中,美國NSA植入后門、可以預(yù)測使用該算法的隨機數(shù)發(fā)生器輸出;SP 800-90A標(biāo)準(zhǔn)2014版去掉了Dual EC算法。SP 800-22標(biāo)準(zhǔn)的隨機數(shù)統(tǒng)計檢測方法、SP 800-90C標(biāo)準(zhǔn)的熵分析方法,根據(jù)中科院DCS中心的研究成果,也存在著缺陷,影響到統(tǒng)計檢測的準(zhǔn)確性、熵分析結(jié)果的準(zhǔn)確性。

隨機數(shù)發(fā)生器標(biāo)準(zhǔn)也不能完全解決現(xiàn)實密碼算法軟件引擎中的隨機數(shù)問題。例如,2012年的國際研究結(jié)果表明,Internet大量網(wǎng)絡(luò)設(shè)備的RSA密鑰對相同,或者使用了相同的素因子、導(dǎo)致RSA密鑰可分解。

上述問題一方面是因為大量網(wǎng)絡(luò)設(shè)備使用了廠商預(yù)置的、相同的默認(rèn)密鑰,也有部分是因為隨機數(shù)發(fā)生器問題:雖然這些設(shè)備使用了高強度的隨機數(shù)發(fā)生器,但是由于網(wǎng)絡(luò)設(shè)備的特殊性,使得不同設(shè)備的隨機數(shù)發(fā)生器很容易在初態(tài)一致的情況下輸出隨機數(shù)并用于生成密鑰,所以就會有相同的RSA素因子。類似問題,也在智能IC上也有發(fā)現(xiàn)。

2.1.3我國商用密碼隨機數(shù)發(fā)生器標(biāo)準(zhǔn)

相比美國NIST制定的隨機數(shù)發(fā)生器標(biāo)準(zhǔn)體系,我國商用密碼的隨機數(shù)發(fā)生器相關(guān)標(biāo)準(zhǔn)仍有不足。

國家密碼管理局已經(jīng)發(fā)布GM/T 0062《密碼產(chǎn)品隨機數(shù)檢測要求》標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)的作用大致相當(dāng)于NIST SP 800-22標(biāo)準(zhǔn)。但是,我國尚未發(fā)布隨機數(shù)發(fā)生器相關(guān)的其他標(biāo)準(zhǔn)。

總體而言,相比NIST SP-800在隨機數(shù)發(fā)生器方面的系列標(biāo)準(zhǔn),我國尚未形成體系化的、類似定位的隨機數(shù)發(fā)生器系列標(biāo)準(zhǔn)。

考慮到密碼技術(shù)的特殊性,我國沒有必要照章抄襲或者模仿NIST SP-800的隨機數(shù)發(fā)生器系列標(biāo)準(zhǔn),但是制定類似定位、發(fā)揮相同作用的商用密碼系列標(biāo)準(zhǔn)是有必要的。

尤其是,隨著密碼算法軟件引擎的需求日益增長,我國亟需隨機數(shù)發(fā)生器標(biāo)準(zhǔn),從而能夠更好地引導(dǎo)密碼算法軟件引擎的隨機數(shù)發(fā)生器設(shè)計。

2.2密鑰安全的挑戰(zhàn)

密碼算法軟件引擎運行在通用計算機平臺上,相比硬件形式實現(xiàn),不但有側(cè)信道攻擊威脅,計算機系統(tǒng)的各種攻擊也會直接威脅到密鑰數(shù)據(jù)的安全。

2.2.1密鑰面臨的各種攻擊和安全威脅

在密碼算法執(zhí)行過程中,攻擊者可以通過各種方法竊取其中的密鑰數(shù)據(jù)。

首先,側(cè)信道攻擊是密碼學(xué)研究中長久以來的重要方向。

在密碼計算過程中,當(dāng)密鑰比特有不同取值時,密碼計算的執(zhí)行會有細(xì)微差異、進而影響到可被攻擊者觀測到的外部狀態(tài)(例如,功率、電磁輻射、計算時間、聲音、高速緩存狀態(tài)等等)。不論是軟件形式或者硬件形式的密碼算法實現(xiàn),都有側(cè)信道攻擊的威脅。

其次,由于在計算機系統(tǒng)中,密鑰也同樣表現(xiàn)為內(nèi)存空間中的數(shù)據(jù)變量,所以現(xiàn)有計算機系統(tǒng)中各種敏感數(shù)據(jù)所面臨的攻擊和安全問題,也同樣會威脅到密鑰。

這一類型的安全威脅大致可以分為:物理攻擊、軟件攻擊和CPU硬件漏洞攻擊。物理攻擊是指攻擊者與被攻擊系統(tǒng)有物理接觸,然后利用物理接觸條件、非授權(quán)地讀取敏感數(shù)據(jù)。最典型的物理攻擊是冷啟動攻擊和DMA攻擊。

冷啟動攻擊利用內(nèi)存芯片數(shù)據(jù)的延遲消失,在斷電之后、內(nèi)存芯片的數(shù)據(jù)仍然維持一段時間,在低溫情況下能夠維持更長時間、甚至數(shù)小時。

攻擊者可以直接取出計算機系統(tǒng)的內(nèi)存芯片,放在攻擊者控制的惡意計算機上,讀取其中的敏感數(shù)據(jù);或者在受害者計算機上插入惡意的引導(dǎo)介質(zhì),啟動之后立即讀取原有的內(nèi)存數(shù)據(jù)。DMA攻擊是指攻擊者插入惡意外設(shè),發(fā)起DMA請求、繞過操作系統(tǒng)的訪問控制,直接訪問內(nèi)存。

其次,各種計算機系統(tǒng)的軟件內(nèi)存漏洞,也會導(dǎo)致攻擊者非授權(quán)地讀取密鑰。例如,操作系統(tǒng)軟件漏洞,會導(dǎo)致惡意進程繞過操作系統(tǒng)的內(nèi)存隔離機制、讀取其他進程甚至內(nèi)核空間的內(nèi)存數(shù)據(jù)。

軟件系統(tǒng)的正常功能也有可能導(dǎo)致內(nèi)存數(shù)據(jù)泄露,例如Core dump或者Crash report就有可能使得內(nèi)存中的敏感數(shù)據(jù)擴散。而且,近年來有多個CPU硬件漏洞被披露(包括Meltdown、Spectre、Foreshadow/L1TF和ZombieLoad等),這些漏洞都有可能使得攻擊者讀取到內(nèi)存中的密鑰等敏感數(shù)據(jù)。

最后,密碼算法軟件引擎在實現(xiàn)中也會引入安全漏洞、導(dǎo)致密鑰泄露。例如,著名的OpenSSL心臟出血,就是因為軟件引擎在處理TLS心跳請求消息時存在缺陷,收到畸形請求消息,會將內(nèi)存空間中隨機地址的64K字節(jié)發(fā)送給攻擊者。

2.2.2現(xiàn)有密鑰安全技術(shù)進展

在通用的計算機平臺上,如何保護密鑰、提供安全有效的密碼計算,一直都是學(xué)術(shù)界和工業(yè)界共同關(guān)注的重要技術(shù)問題。

首先,Windows操作系統(tǒng)的CSP(Cryptographic Service Provider)和CNG(Cryptographic Next Generation)都支持在內(nèi)核空間中執(zhí)行密碼運算,密鑰數(shù)據(jù)出現(xiàn)在內(nèi)核內(nèi)存空間;類似的,Linux操作系統(tǒng)在v2.5.45之后,也有內(nèi)核空間的密碼計算服務(wù),稱為Crypto API。

由于密鑰數(shù)據(jù)出現(xiàn)在內(nèi)核空間,普通的用戶態(tài)攻擊者必須提升權(quán)限、獲得內(nèi)核空間的讀權(quán)限,才能夠讀取密鑰數(shù)據(jù)。

基于寄存器的密鑰安全技術(shù),可以有效防范冷啟動攻擊。2010年,TRESOR利用Intel完CPU的AES-NI指令,完成了寄存器實現(xiàn)的AES算法,有效抵抗冷啟動攻擊。

后續(xù)研究工作將其推廣到RSA算法,在Intel CPU計算機上完成寄存器實現(xiàn)的RSA算法,同樣能夠抵抗冷啟動攻擊。

2014年,中科院DCS中心研究團隊第一次完成了基于CPU高速緩存的密碼算法軟件實現(xiàn),在Intel CPU上、利用高速緩存的工作模式配置,將RSA私鑰計算限定在CPU高速緩存內(nèi)。

相比基于寄存器的密碼算法軟件實現(xiàn),高速緩存的存儲空間足夠大、能夠支持更多類型的密碼算法,而且支持使用高級語言實現(xiàn)、不需要使用匯編實現(xiàn)。

2015年,中科院DCS中心研究團隊繼續(xù)提出了基于硬件事務(wù)內(nèi)存的密鑰安全方案,使用Intel TSX(Transactional Synchronization Extension)硬件事務(wù)內(nèi)存特性,完成了密鑰安全方案:私鑰只有在需要密碼計算的時候,才解密到硬件事務(wù)中、開始密碼計算;在此期間,任何來自其他惡意線程或進程的讀取訪問,都會導(dǎo)致事務(wù)回滾、密鑰數(shù)據(jù)被清零。

而且,Intel TSX特性利用高速緩存來存儲事務(wù)中間過程的、未提交的數(shù)據(jù),所以該方案也能夠保證RSA私鑰不會出現(xiàn)在內(nèi)存芯片,有效抵抗冷啟動攻擊。

近年來,Intel公司推出SGX(Software Guard eXtension)特性,用于在不可信的操作系統(tǒng)和虛擬機監(jiān)控器上創(chuàng)建執(zhí)行環(huán)境,該環(huán)境只依賴于CPU的安全特性、提供代碼的完整性和數(shù)據(jù)的機密性,并且能動態(tài)地執(zhí)行遠(yuǎn)程證明。利用Intel SGX特性,也能夠?qū)崿F(xiàn)密碼算法軟件引擎,提高密鑰數(shù)據(jù)的安全程度。

基于Intel SGX特性的軟件系統(tǒng),其安全性完全依賴于Intel CPU,甚至操作系統(tǒng)、虛擬機監(jiān)控器也不能得到用戶軟件系統(tǒng)代碼或數(shù)據(jù)的任何信息。

從另一角度而言,閉源的CPU硬件設(shè)計和實現(xiàn),也會同樣面臨多年前對于非開源操作系統(tǒng)的質(zhì)疑和擔(dān)憂。而且,針對SGX執(zhí)行環(huán)境的有效攻擊方法也不斷被提出。

2.2.3密鑰安全技術(shù)的應(yīng)用實施

對于各種不同類型的側(cè)信道攻擊,可以通過安全增強的密碼算法實現(xiàn)來防御。學(xué)術(shù)界已經(jīng)對側(cè)信道攻擊防御有很長時間的研究,研究成果也開始逐步應(yīng)用到一些開源密碼軟件,但是仍然值得繼續(xù)擴大應(yīng)用范圍。

尤其對于密碼算法軟件實現(xiàn),近年來出現(xiàn)了多種基于共享高速緩存的側(cè)信道攻擊,這一類攻擊在原有傳統(tǒng)密碼硬件實現(xiàn)中并不存在,所以相同的防御技術(shù)值得繼續(xù)深入研究。

各種密碼算法軟件引擎的密鑰安全方案應(yīng)用實施,都必須面對運行環(huán)境不可信的問題。

首先,作為軟件程序,必須在一定程度上依賴和信任操作系統(tǒng)和CPU等硬件。

其次,對操作系統(tǒng)和CPU等硬件的信任,必須深入分析,不能簡單地用“絕對信任”和“不信任”來總結(jié);具體而言,代碼完整性、操作原子性、寄存器特權(quán)級別、寄存器接口訪問唯一性等,不同密鑰安全方案對于運行環(huán)境有各不一樣的要求和假設(shè),運行環(huán)境只需要滿足相應(yīng)條件即可以、并不是完全的絕對信任和依賴。

最后,應(yīng)該更辯證地考慮操作系統(tǒng)和CPU等硬件之間的關(guān)系,基礎(chǔ)軟硬件構(gòu)成了密碼算法軟件引擎的運行環(huán)境;與此同時,操作系統(tǒng)和各種基礎(chǔ)硬件之間,也在運行過程中相互監(jiān)控、相互制約,更有利于形成合理的生態(tài)。

如果運行環(huán)境的安全條件信任建立在僅有的某一特定硬件或者某一特定軟件模塊基礎(chǔ)上,而該信任基礎(chǔ)并不能被徹底地分析或證明,則采取分布式信任的技術(shù)思想更為妥當(dāng)、應(yīng)該將安全基礎(chǔ)建立在多個可相互監(jiān)控和制約的部件之上。

3軟件引擎的監(jiān)測現(xiàn)狀和難題

目前,國產(chǎn)密碼算法軟件的合規(guī)檢測按照GM/T 0028《密碼模塊安全技術(shù)要求》和GM/T 0039《密碼模塊安全檢測要求》來執(zhí)行。作為指導(dǎo)性的行業(yè)標(biāo)準(zhǔn),GM/T 0028和GM/T 0039沒有對密碼產(chǎn)品的隨機數(shù)發(fā)生器和密鑰安全設(shè)計做出詳細(xì)的具體設(shè)計指導(dǎo)。

與此同時,我國在隨機數(shù)發(fā)生器和密鑰安全的技術(shù)方案,也尚未形成行業(yè)標(biāo)準(zhǔn)或者國家標(biāo)準(zhǔn);所以,在檢測過程中,就只能從密碼學(xué)的技術(shù)原理出發(fā)、結(jié)合密碼軟件產(chǎn)品的實際情況,提出具體技術(shù)要求。

在總體技術(shù)思想上,GM/T 0028《密碼模塊安全技術(shù)要求》和GM/T 0039《密碼模塊安全檢測要求》參考了美國NIST FIPS 140標(biāo)準(zhǔn)和ISO/IEC 19790標(biāo)準(zhǔn)。

但是,我國仍然有必要在隨機數(shù)發(fā)生器方案和密鑰安全方案上,提出和實施有特色的安全要求。

作為密碼算法軟件實現(xiàn)的最重要的數(shù)據(jù)安全部分,隨機數(shù)發(fā)生器和密鑰安全應(yīng)該在運行環(huán)境所提供適度安全保證的前提下,加強自身的安全設(shè)計、而不是完全依賴于運行環(huán)境。

目前我國商用密碼算法軟件模塊的隨機數(shù)發(fā)生器和密鑰安全,仍然有較高的要求,需要外部的密碼硬件模塊提供一定程度的支持和協(xié)作;例如,外部輸入的真隨機數(shù)作為熵源之一、利用門限密碼算法與外部密碼硬件模塊協(xié)作保護密鑰。

相比而言,美國FIPS 140密碼模塊測評要求對軟件密碼模塊允許完全由軟件實現(xiàn)的隨機數(shù)發(fā)生器和密鑰安全方案,其安全性對運行環(huán)境有更大的依賴性。

國產(chǎn)商用密碼軟件引擎的檢測要求,與運行環(huán)境的安全假設(shè)息息相關(guān)。如果假定通用計算機軟硬件環(huán)境能夠全面地提供各種安全特性(例如,內(nèi)存安全、用戶身份鑒別等),則運行在之上的密碼軟件就可以降低安全要求;如果運行環(huán)境不能完全提供必要的安全特性,則密碼算法軟件模塊就必須要加強自身安全性。

在密碼算法軟件模塊的檢測中,需要綜合考慮密碼安全技術(shù)和隨機數(shù)發(fā)生器技術(shù)的發(fā)展,需要分析各種不同計算機軟硬件運行環(huán)境的安全狀況,確定相應(yīng)的安全要求細(xì)節(jié)和具體的檢測方法步驟。

4結(jié)語

總而言之,筆者認(rèn)為,發(fā)展國產(chǎn)密碼算法軟件引擎,還需要在如下3方面開展工作:

(1)制定隨機數(shù)系列標(biāo)準(zhǔn),形成標(biāo)準(zhǔn)體系。通過技術(shù)標(biāo)準(zhǔn),規(guī)范密碼算法軟件引擎的隨機數(shù)發(fā)生器技術(shù)方案和安全實現(xiàn)。同時,在標(biāo)準(zhǔn)的實施中,尤其需要關(guān)注熵源的動態(tài)熵值和隨機數(shù)發(fā)生器的有效變化。

(2)大力發(fā)展密鑰安全技術(shù)。密碼安全技術(shù)與計算機系統(tǒng)運行環(huán)境密切相關(guān),難以形成標(biāo)準(zhǔn)化的技術(shù)方案;應(yīng)該針對各種不同的運行環(huán)境和相應(yīng)安全威脅,研究密鑰安全技術(shù)方案。

(3)實施有特色的國產(chǎn)密碼算法軟件引擎檢測要求。在軟件密碼引擎的運行環(huán)境安全得到有效保證之前,適當(dāng)提高檢測要求、適當(dāng)降低對運行環(huán)境的安全假設(shè),更有助于密碼技術(shù)發(fā)揮安全效果。站在密碼軟件引擎的角度,運行環(huán)境應(yīng)該是介于“完全可信”和“完全不可信”之間的中間狀態(tài):如果假設(shè)運行環(huán)境的軟硬件完全不可信,則幾乎不可能實現(xiàn)滿足要求的密碼軟件引擎;如果不考慮現(xiàn)實情況、假設(shè)運行環(huán)境完全可信,密碼軟件引擎自身缺乏必要的安全保護,也會導(dǎo)致密碼軟件引擎被攻擊(例如,密鑰泄露等)。

另外,《中華人民共和國密碼法》的立法工作已經(jīng)在穩(wěn)步推進,我國的密碼科技工作也必定將會進入新的歷史階段。為了更便捷、更有效地在信息系統(tǒng)中發(fā)揮密碼技術(shù)的安全作用,國產(chǎn)密碼算法軟件引擎的研發(fā)勢在必行。我國應(yīng)該直面國產(chǎn)密碼算法軟件引擎的安全挑戰(zhàn),團結(jié)更多力量,探索中國特色的商用密碼技術(shù)路線。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論