隨著我國(guó)商用密碼技術(shù)的應(yīng)用推廣,國(guó)產(chǎn)密碼算法軟件引擎(或者稱為密碼算法軟件模塊、密碼算法軟件實(shí)現(xiàn)、軟件密碼產(chǎn)品等)已經(jīng)成為必不可少的密碼產(chǎn)品形態(tài)。相比于硬件形式的密碼產(chǎn)品,密碼算法軟件引擎具有更好的適用性和靈活性、更低的成本;然而,密碼算法軟件引擎也面臨著更大的技術(shù)挑戰(zhàn)。
本文分析了國(guó)產(chǎn)密碼算法軟件引擎面臨的主要安全挑戰(zhàn):隨機(jī)數(shù)發(fā)生器和密鑰安全。相比美國(guó) NIST 的隨機(jī)數(shù)發(fā)生器標(biāo)準(zhǔn)體系,我國(guó)的相關(guān)標(biāo)準(zhǔn)尚未完善,仍然需要不少工作。密碼軟件引擎運(yùn)行在不完全可信的通用計(jì)算機(jī)軟硬件環(huán)境上,密鑰數(shù)據(jù)面臨著各種攻擊(包括系統(tǒng)軟件攻擊和物理攻擊等)。
在各種計(jì)算機(jī)系統(tǒng)上,各種漏洞和攻擊層出不窮,設(shè)計(jì)密鑰安全方案、保護(hù)密鑰數(shù)據(jù),也是困難重重。由于隨機(jī)數(shù)發(fā)生器的標(biāo)準(zhǔn)體系尚未建立、密鑰數(shù)據(jù)的安全技術(shù)挑戰(zhàn)并未完全解決,有效開展國(guó)產(chǎn)密碼算法軟件引擎的安全檢測(cè),也存在著明顯的困難。在密碼算法軟件引擎的檢測(cè)過程中,需要對(duì)軟硬件運(yùn)行環(huán)境設(shè)定合理的假設(shè),進(jìn)而檢測(cè)密碼算法軟件引擎是否在該假設(shè)前提下,產(chǎn)生不可預(yù)測(cè)的隨機(jī)數(shù)和有效地保護(hù)密鑰數(shù)據(jù)。
?。?國(guó)產(chǎn)商用密碼技術(shù)的應(yīng)用推廣
密碼技術(shù)是網(wǎng)絡(luò)空間安全的重要基礎(chǔ),在計(jì)算機(jī)和網(wǎng)絡(luò)系統(tǒng)中發(fā)揮了不可替代的安全作用。推廣國(guó)產(chǎn)密碼技術(shù)、應(yīng)用商用密碼算法, 是建設(shè)我國(guó)網(wǎng)絡(luò)空間安全基礎(chǔ)設(shè)施的必要措施之一。全面推廣國(guó)產(chǎn)密碼技術(shù)、深入應(yīng)用商用密碼算法,有如下三方面工作需要完成:
(1)密碼算法標(biāo)準(zhǔn)化。目前我國(guó)已經(jīng)制定并公開發(fā)布了完整的密碼算法體系:分組密碼算法 SM4、流密碼算法 ZUC、雜湊算法 SM3、公鑰密碼算法 SM2(包括加解密、數(shù)字簽名和密鑰協(xié)商)和標(biāo)識(shí)密碼算法 SM9。而且,其中部分密碼算法已經(jīng)成為國(guó)際標(biāo)準(zhǔn)。
(2)制定配套的密碼應(yīng)用標(biāo)準(zhǔn)。在數(shù)字證書、通信協(xié)議、應(yīng)用接口等方面,形成配套標(biāo)準(zhǔn), 實(shí)現(xiàn)商用密碼應(yīng)用標(biāo)準(zhǔn)體系。
?。?)形成多元化的密碼產(chǎn)品生態(tài)。各種不同形式的硬件、固件和軟件密碼產(chǎn)品,滿足應(yīng)用系統(tǒng)的不同需求;尤其是軟件密碼產(chǎn)品,更具有技術(shù)靈活性、實(shí)施部署更容易,在成本上也更具優(yōu)勢(shì)。
在商用密碼算法和密碼應(yīng)用標(biāo)準(zhǔn)方面,我國(guó)已經(jīng)發(fā)展多年。然而,在密碼產(chǎn)品多元化方面, 一方面由于歷史原因,我國(guó)商用密碼長(zhǎng)久以來只支持合規(guī)的硬件產(chǎn)品,近年來合格軟件密碼產(chǎn)品已經(jīng)開放、但是軟件密碼產(chǎn)品發(fā)展仍然較弱;另一方面也由于軟件密碼產(chǎn)品面臨著更大的技術(shù)挑戰(zhàn),尤其是密鑰安全,所以在軟件密碼產(chǎn)品(或者稱為軟件密碼引擎、密碼算法軟件模塊)方面,還有更多的技術(shù)難題需要克服。
?。?國(guó)產(chǎn)密碼算法軟件引擎的安全挑戰(zhàn)
從密碼學(xué)基本原理出發(fā),密碼算法公開, 密碼產(chǎn)品最重要的、最需要保護(hù)的數(shù)據(jù)就是密鑰以及各種敏感參數(shù)。按照 GM/T 0028《密碼模塊安全技術(shù)要求》和 GM/T 0039《密碼模塊安全檢測(cè)要求》,密碼模塊尤其需要確保關(guān)鍵安全參數(shù)和敏感參數(shù)的安全,其中最重要的參數(shù)就是密鑰。密碼算法的密鑰以及各種敏感參數(shù)(例如,IV 和 Nonce 等),通常都是由隨機(jī)數(shù)產(chǎn)生獲??;另一方面,確定性隨機(jī)數(shù)發(fā)生器也通常是帶有密鑰的密碼功能模塊;二者相互聯(lián)系、密不可分。
相比于硬件形式的常見密碼算法實(shí)現(xiàn)(例如,密碼機(jī)、密碼卡、USB 令牌等),密碼軟件引擎面臨著更大的安全挑戰(zhàn)。首先,密碼算法軟件引擎通常運(yùn)行在常規(guī)的計(jì)算機(jī)系統(tǒng)或移動(dòng)智能終端上,這一類設(shè)備不帶有專用的隨機(jī)數(shù)發(fā)生器芯片,密碼算法軟件引擎必須自己實(shí)現(xiàn)隨機(jī)數(shù)發(fā)生器。其次,因?yàn)槊艽a軟件引擎與其他功能的軟件共享操作系統(tǒng)等軟硬件運(yùn)行環(huán)境,由于各種應(yīng)用功能的要求千變?nèi)f化,必然會(huì)導(dǎo)致操作系統(tǒng)功能復(fù)雜、運(yùn)行環(huán)境接口繁多, 就可能會(huì)引入更多的計(jì)算機(jī)軟件漏洞和攻擊威脅。所以,密碼軟件引擎在實(shí)現(xiàn)靈活、成本低廉、易于實(shí)施的同時(shí),又成為安全挑戰(zhàn)最大的密碼實(shí)現(xiàn)。
2.1 隨機(jī)數(shù)發(fā)生器的挑戰(zhàn)
隨機(jī)數(shù)發(fā)生器是各種密碼計(jì)算參數(shù)的來源, 包括密鑰、初始化向量、隨機(jī)填充值等,應(yīng)該具備足夠隨機(jī)性(即信息熵)、從而確保攻擊者不可預(yù)測(cè)。在計(jì)算機(jī)系統(tǒng)中,如何利用外界環(huán)境的不確定因素(即熵源),構(gòu)造不可預(yù)測(cè)的、高速的隨機(jī)數(shù)發(fā)生器,已有大量的相關(guān)研究, 美國(guó) NIST 也在這一方面形成了較為完善的技術(shù)標(biāo)準(zhǔn)體系。下文逐一展開介紹。
Linux 內(nèi)核也帶有了隨機(jī)數(shù)發(fā)生器軟件實(shí)現(xiàn),并且在很多密碼軟件引擎中使用。然而必須要看到,即使是美國(guó) NIST 制定多年的隨機(jī)數(shù)發(fā)生器系列標(biāo)準(zhǔn),也仍然不時(shí)有安全問題披露;同時(shí), 即使是被大量使用的、公開源代碼的隨機(jī)數(shù)發(fā)生器軟件實(shí)現(xiàn),也時(shí)有安全漏洞出現(xiàn) 。
2.1.1 美國(guó) NIST 的隨機(jī)數(shù)發(fā)生器標(biāo)準(zhǔn)體系
隨機(jī)數(shù)發(fā)生器,大致可以分為 NRBG (Non- deterministic Random Bit Generator 非確定性隨機(jī)數(shù)發(fā)生器,或者稱為 True Random Bit Generator 真隨機(jī)數(shù)發(fā)生器) 和 DRBG (Deterministic Random Bit Generator 確定性隨機(jī)數(shù)發(fā)生器, 或者稱為Pseudorandom Bit Generator 偽隨機(jī)數(shù)發(fā)生器 )。目前,美國(guó) NIST 制定的隨機(jī)數(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,隨機(jī)數(shù)發(fā)生器的統(tǒng)計(jì)檢測(cè)。
?。?)SP 800-90A Recommendation for Random Number Generation Using Deterministic Random Bit Generators,根據(jù)外部輸入的熵源, 使用對(duì)稱密碼或 Hash 等算法計(jì)算得到確定性隨機(jī)數(shù)。
?。?)SP 800-90B Recommendation for the Entropy Sources Used for Random Bit Generation, 隨機(jī)數(shù)發(fā)生器的熵源分析。
?。?)SP 800- 90C Recommendation for Random Bit Generator (RBG) Constructions, 隨 機(jī)數(shù)發(fā)生器的系統(tǒng)構(gòu)造,NRBG、DRBG 和熵源以及在線檢測(cè)部件的組成。
?。?)0SP 800-108 Recommendation for Key Derivation Using Pseudorandom Functions,利用偽隨機(jī)數(shù)函數(shù)實(shí)現(xiàn)密鑰派生。
以上各標(biāo)準(zhǔn)之間關(guān)系如圖 1 所示。
圖 1 美國(guó) NIST 的密碼隨機(jī)數(shù)發(fā)生器標(biāo)準(zhǔn)體系
首先,SP 800-90A 描述了多種確定性隨機(jī)數(shù)發(fā)生器的算法,其基本原理是:發(fā)生器維護(hù)密鑰和內(nèi)部狀態(tài),間斷地從外部獲得熵源輸入,計(jì)算輸出隨機(jī)數(shù)。SP 800-90B 是 DRBG 隨機(jī)數(shù)發(fā)生器的熵分析,用于評(píng)估和分析外部輸入的熵源。SP 800-90C 是隨機(jī)數(shù)發(fā)生器的系統(tǒng)構(gòu)造,給出 NRBG、DRBG 和熵源以及在線檢測(cè)部件的多種組成方式,形成實(shí)際使用的隨機(jī)數(shù)發(fā)生器。其次,隨機(jī)數(shù)發(fā)生器(主要是 NRBG)輸出的隨機(jī)數(shù)序列,可使用 SP 800-22 標(biāo)準(zhǔn)給出的多項(xiàng)統(tǒng)計(jì)檢測(cè)方法來進(jìn)行檢測(cè),判斷其隨機(jī)性優(yōu)劣。最后,SP 800-108 給出了使用偽隨機(jī)數(shù)函數(shù)來實(shí)現(xiàn)密鑰派生的多種方法。
2.1.2 隨機(jī)數(shù)發(fā)生器標(biāo)準(zhǔn)及其使用的問題
下文結(jié)合現(xiàn)實(shí)的軟件隨機(jī)數(shù)發(fā)生器安全漏洞、分析討論隨機(jī)數(shù)發(fā)生器標(biāo)準(zhǔn)及其使用的問題。根據(jù) Snowden 報(bào)告以及大量相關(guān)研究,在SP 800-90A 標(biāo)準(zhǔn) 2006 版所包括的 Dual EC 算法中,美國(guó) NSA 植入后門、可以預(yù)測(cè)使用該算法的隨機(jī)數(shù)發(fā)生器輸出 [5-8];SP 800-90A 標(biāo)準(zhǔn) 2014版去掉了 Dual EC 算法。SP 800-22 標(biāo)準(zhǔn)的隨機(jī)數(shù)統(tǒng)計(jì)檢測(cè)方法、SP 800-90C 標(biāo)準(zhǔn)的熵分析方法,根據(jù)中科院 DCS 中心的研究成果,也存在著缺陷,影響到統(tǒng)計(jì)檢測(cè)的準(zhǔn)確性、熵分析結(jié)果的準(zhǔn)確性 。
隨機(jī)數(shù)發(fā)生器標(biāo)準(zhǔn)也不能完全解決現(xiàn)實(shí)密碼算法軟件引擎中的隨機(jī)數(shù)問題。例如,2012 年的國(guó)際研究結(jié)果表明,Internet 大量網(wǎng)絡(luò)設(shè)備的 RSA 密鑰對(duì)相同,或者使用了相同的素因子、導(dǎo)致 RSA 密鑰可分解 。上述問題一方面是因?yàn)榇罅烤W(wǎng)絡(luò)設(shè)備使用了廠商預(yù)置的、相同的默認(rèn)密鑰,也有部分是因?yàn)殡S機(jī)數(shù)發(fā)生器問題:雖然這些設(shè)備使用了高強(qiáng)度的隨機(jī)數(shù)發(fā)生器,但是由于網(wǎng)絡(luò)設(shè)備的特殊性,使得不同設(shè)備的隨機(jī)數(shù)發(fā)生器很容易在初態(tài)一致的情況下輸出隨機(jī)數(shù)并用于生成密鑰,所以就會(huì)有相同的 RSA 素因子。類似問題,也在智能IC 上也有發(fā)現(xiàn)。
2.1.3 我國(guó)商用密碼隨機(jī)數(shù)發(fā)生器標(biāo)準(zhǔn)
相比美國(guó) NIST 制定的隨機(jī)數(shù)發(fā)生器標(biāo)準(zhǔn)體系,我國(guó)商用密碼的隨機(jī)數(shù)發(fā)生器相關(guān)標(biāo)準(zhǔn)仍有不足。國(guó)家密碼管理局已經(jīng)發(fā)布GM/T 0062《密碼產(chǎn)品隨機(jī)數(shù)檢測(cè)要求》標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)的作用大致相當(dāng)于 NIST SP 800-22 標(biāo)準(zhǔn)。但是,我國(guó)尚未發(fā)布隨機(jī)數(shù)發(fā)生器相關(guān)的其他標(biāo)準(zhǔn)。
總體而言,相比 NIST SP-800 在隨機(jī)數(shù)發(fā)生器方面的系列標(biāo)準(zhǔn),我國(guó)尚未形成體系化的、類似定位的隨機(jī)數(shù)發(fā)生器系列標(biāo)準(zhǔn)??紤]到密碼技術(shù)的特殊性,我國(guó)沒有必要照章抄襲或者模仿 NIST SP-800 的隨機(jī)數(shù)發(fā)生器系列標(biāo)準(zhǔn),但是制定類似定位、發(fā)揮相同作用的商用密碼系列標(biāo)準(zhǔn)是有必要的。尤其是,隨著密碼算法軟件引擎的需求日益增長(zhǎng),我國(guó)亟需隨機(jī)數(shù)發(fā)生器標(biāo)準(zhǔn),從而能夠更好地引導(dǎo)密碼算法軟件引擎的隨機(jī)數(shù)發(fā)生器設(shè)計(jì)。
2.2 密鑰安全的挑戰(zhàn)
密碼算法軟件引擎運(yùn)行在通用計(jì)算機(jī)平臺(tái)上,相比硬件形式實(shí)現(xiàn),不但有側(cè)信道攻擊威脅, 計(jì)算機(jī)系統(tǒng)的各種攻擊也會(huì)直接威脅到密鑰數(shù)據(jù)的安全。
2.2.1 密鑰面臨的各種攻擊和安全威脅
在密碼算法執(zhí)行過程中,攻擊者可以通過各種方法竊取其中的密鑰數(shù)據(jù)。首先,側(cè)信道攻擊是密碼學(xué)研究中長(zhǎng)久以來的重要方向。在密碼計(jì)算過程中,當(dāng)密鑰比特有不同取值時(shí), 密碼計(jì)算的執(zhí)行會(huì)有細(xì)微差異、進(jìn)而影響到可被攻擊者觀測(cè)到的外部狀態(tài)(例如,功率、電磁輻射、計(jì)算時(shí)間、聲音、高速緩存狀態(tài)等等)。不論是軟件形式或者硬件形式的密碼算法實(shí)現(xiàn), 都有側(cè)信道攻擊的威脅 。
其次,由于在計(jì)算機(jī)系統(tǒng)中,密鑰也同樣表現(xiàn)為內(nèi)存空間中的數(shù)據(jù)變量,所以現(xiàn)有計(jì)算機(jī)系統(tǒng)中各種敏感數(shù)據(jù)所面臨的攻擊和安全問題,也同樣會(huì)威脅到密鑰。這一類型的安全威脅大致可以分為:物理攻擊、軟件攻擊和 CPU 硬件漏洞攻擊。物理攻擊是指攻擊者與被攻擊系統(tǒng)有物理接觸,然后利用物理接觸條件、非授權(quán)地讀取敏感數(shù)據(jù)。最典型的物理攻擊是冷啟動(dòng)攻擊和 DMA 攻擊。冷啟動(dòng)攻擊 利用內(nèi)存芯片數(shù)據(jù)的延遲消失,在斷電之后、內(nèi)存芯片的數(shù)據(jù)仍然維持一段時(shí)間,在低溫情況下能夠維持更長(zhǎng)時(shí)間、甚至數(shù)小時(shí)。攻擊者可以直接取出計(jì)算機(jī)系統(tǒng)的內(nèi)存芯片,放在攻擊者控制的惡意計(jì)算機(jī)上,讀取其中的敏感數(shù)據(jù);或者在受害者計(jì)算機(jī)上插入惡意的引導(dǎo)介質(zhì),啟動(dòng)之后立即讀取原有的內(nèi)存數(shù)據(jù)。DMA 攻擊是指攻擊者插入惡意外設(shè),發(fā)起 DMA 請(qǐng)求、繞過操作系統(tǒng)的訪問控制,直接訪問內(nèi)存 。
其次,各種計(jì)算機(jī)系統(tǒng)的軟件內(nèi)存漏洞, 也會(huì)導(dǎo)致攻擊者非授權(quán)地讀取密鑰。例如, 操作系統(tǒng)軟件漏洞,會(huì)導(dǎo)致惡意進(jìn)程繞過操作系統(tǒng)的內(nèi)存隔離機(jī)制、讀取其他進(jìn)程甚至內(nèi)核空間的內(nèi)存數(shù)據(jù)。軟件系統(tǒng)的正常功能也有可能導(dǎo)致內(nèi)存數(shù)據(jù)泄露,例如 Core dump 或者Crash report 就有可能使得內(nèi)存中的敏感數(shù)據(jù)擴(kuò)散。而且,近年來有多個(gè) CPU 硬件漏洞被披露( 包括 Meltdown、Spectre、Foreshadow/L1TF 和ZombieLoad 等),這些漏洞都有可能使得攻擊者讀取到內(nèi)存中的密鑰等敏感數(shù)據(jù)。
最后,密碼算法軟件引擎在實(shí)現(xiàn)中也會(huì)引入安全漏洞、導(dǎo)致密鑰泄露。例如,著名的OpenSSL 心臟出血,就是因?yàn)檐浖嬖谔幚鞹LS 心跳請(qǐng)求消息時(shí)存在缺陷,收到畸形請(qǐng)求消息,會(huì)將內(nèi)存空間中隨機(jī)地址的 64K 字節(jié)發(fā)送給攻擊者。
2.2.2 現(xiàn)有密鑰安全技術(shù)進(jìn)展
在通用的計(jì)算機(jī)平臺(tái)上,如何保護(hù)密鑰、提供安全有效的密碼計(jì)算,一直都是學(xué)術(shù)界和工業(yè)界共同關(guān)注的重要技術(shù)問題。首先,Windows操作系統(tǒng)的 CSP (Cryptographic Service Provider) 和 CNG (Cryptographic Next Generation) 都支持在內(nèi)核空間中執(zhí)行密碼運(yùn)算,密鑰數(shù)據(jù)出現(xiàn)在內(nèi)核內(nèi)存空間;類似的,Linux 操作系統(tǒng)在 v2.5.45 之后,也有內(nèi)核空間的密碼計(jì)算服務(wù),稱為 Crypto API。由于密鑰數(shù)據(jù)出現(xiàn)在內(nèi)核空間,普通的用戶態(tài)攻擊者必須提升權(quán)限、獲得內(nèi)核空間的讀權(quán)限,才能夠讀取密鑰數(shù)據(jù)。
基于寄存器的密鑰安全技術(shù),可以有效防范冷啟動(dòng)攻擊。2010 年,TRESOR 利用 Intel 完CPU 的 AES-NI 指令,完成了寄存器實(shí)現(xiàn)的 AES 算法,有效抵抗冷啟動(dòng)攻擊。后續(xù)研究工作將其推廣到 RSA 算法,在 Intel CPU 計(jì)算機(jī)上完成寄存器實(shí)現(xiàn)的 RSA 算法,同樣能夠抵抗冷啟動(dòng)攻擊。
2014 年,中科院 DCS 中心研究團(tuán)隊(duì)第一次完成了基于 CPU 高速緩存的密碼算法軟件實(shí)現(xiàn) [24-25],在 Intel CPU 上、利用高速緩存的工作模式配置,將 RSA 私鑰計(jì)算限定在 CPU 高速緩存內(nèi)。相比基于寄存器的密碼算法軟件實(shí)現(xiàn),高速緩存的存儲(chǔ)空間足夠大、能夠支持更多類型的密碼算法,而且支持使用高級(jí)語言實(shí)現(xiàn)、不需要使用匯編實(shí)現(xiàn)。
2015 年,中科院DCS 中心研究團(tuán)隊(duì)繼續(xù)提出了基于硬件事務(wù)內(nèi)存的密鑰安全方案,使用 Intel TSX (Transactional Synchronization Extension) 硬件事務(wù)內(nèi)存特性,完成了密鑰安全方案:私鑰只有在需要密碼計(jì)算的時(shí)候,才解密到硬件事務(wù)中、開始密碼計(jì)算;在此期間,任何來自其他惡意線程或進(jìn)程的讀取訪問,都會(huì)導(dǎo)致事務(wù)回滾、密鑰數(shù)據(jù)被清零。而且,Intel TSX 特性利用高速緩存來存儲(chǔ)事務(wù)中間過程的、未提交的數(shù)據(jù),所以該方案也能夠保證 RSA 私鑰不會(huì)出現(xiàn)在內(nèi)存芯片,有效抵抗冷啟動(dòng)攻擊。
近年來,Intel 公司推出 SGX (Software Guard eXtension) 特性,用于在不可信的操作系統(tǒng)和虛擬機(jī)監(jiān)控器上創(chuàng)建執(zhí)行環(huán)境,該環(huán)境只依賴于 CPU 的安全特性、提供代碼的完整性和數(shù)據(jù)的機(jī)密性,并且能動(dòng)態(tài)地執(zhí)行遠(yuǎn)程證明。利用Intel SGX 特性,也能夠?qū)崿F(xiàn)密碼算法軟件引擎, 提高密鑰數(shù)據(jù)的安全程度。基于 Intel SGX 特性的軟件系統(tǒng),其安全性完全依賴于 Intel CPU, 甚至操作系統(tǒng)、虛擬機(jī)監(jiān)控器也不能得到用戶軟件系統(tǒng)代碼或數(shù)據(jù)的任何信息。從另一角度而言,閉源的 CPU 硬件設(shè)計(jì)和實(shí)現(xiàn),也會(huì)同樣面臨多年前對(duì)于非開源操作系統(tǒng)的質(zhì)疑和擔(dān)憂。而且,針對(duì) SGX 執(zhí)行環(huán)境的有效攻擊方法也不斷被提出。
2.2.3 密鑰安全技術(shù)的應(yīng)用實(shí)施
對(duì)于各種不同類型的側(cè)信道攻擊,可以通過安全增強(qiáng)的密碼算法實(shí)現(xiàn)來防御。學(xué)術(shù)界已經(jīng)對(duì)側(cè)信道攻擊防御有很長(zhǎng)時(shí)間的研究,研究成果也開始逐步應(yīng)用到一些開源密碼軟件,但是仍然值得繼續(xù)擴(kuò)大應(yīng)用范圍。尤其對(duì)于密碼算法軟件實(shí)現(xiàn),近年來出現(xiàn)了多種基于共享高速緩存的側(cè)信道攻擊,這一類攻擊在原有傳統(tǒng)密碼硬件實(shí)現(xiàn)中并不存在,所以相同的防御技術(shù)值得繼續(xù)深入研究。
各種密碼算法軟件引擎的密鑰安全方案應(yīng)用實(shí)施,都必須面對(duì)運(yùn)行環(huán)境不可信的問題。
首先,作為軟件程序,必須在一定程度上依賴和信任操作系統(tǒng)和 CPU 等硬件。
其次,對(duì)操作系統(tǒng)和 CPU 等硬件的信任,必須深入分析,不能簡(jiǎn)單地用“絕對(duì)信任”和“不信任”來總結(jié);具體而言,代碼完整性、操作原子性、寄存器特權(quán)級(jí)別、寄存器接口訪問唯一性等,不同密鑰安全方案對(duì)于運(yùn)行環(huán)境有各不一樣的要求和假設(shè),運(yùn)行環(huán)境只需要滿足相應(yīng)條件即可以、并不是完全的絕對(duì)信任和依賴。
最后,應(yīng)該更辯證地考慮操作系統(tǒng)和CPU 等硬件之間的關(guān)系, 基礎(chǔ)軟硬件構(gòu)成了密碼算法軟件引擎的運(yùn)行環(huán)境;與此同時(shí),操作系統(tǒng)和各種基礎(chǔ)硬件之間, 也在運(yùn)行過程中相互監(jiān)控、相互制約,更有利于形成合理的生態(tài)。如果運(yùn)行環(huán)境的安全條件信任建立在僅有的某一特定硬件或者某一特定軟件模塊基礎(chǔ)上,而該信任基礎(chǔ)并不能被徹底地分析或證明,則采取分布式信任的技術(shù)思想更為妥當(dāng)、應(yīng)該將安全基礎(chǔ)建立在多個(gè)可相互監(jiān)控和制約的部件之上。
?。?國(guó)產(chǎn)密碼算法軟件引擎的檢測(cè)現(xiàn)狀與難題
目前,國(guó)產(chǎn)密碼算法軟件的合規(guī)檢測(cè)按照GM/T 0028《密碼模塊安全技術(shù)要求》和 GM/T 0039《密碼模塊安全檢測(cè)要求》來執(zhí)行。作為指導(dǎo)性的行業(yè)標(biāo)準(zhǔn),GM/T 0028 和 GM/T 0039 沒有對(duì)密碼產(chǎn)品的隨機(jī)數(shù)發(fā)生器和密鑰安全設(shè)計(jì)做出詳細(xì)的具體設(shè)計(jì)指導(dǎo)。與此同時(shí),我國(guó)在隨機(jī)數(shù)發(fā)生器和密鑰安全的技術(shù)方案,也尚未形成行業(yè)標(biāo)準(zhǔn)或者國(guó)家標(biāo)準(zhǔn);所以,在檢測(cè)過程中, 就只能從密碼學(xué)的技術(shù)原理出發(fā)、結(jié)合密碼軟件產(chǎn)品的實(shí)際情況,提出具體技術(shù)要求。
在總體技術(shù)思想上,GM/T 0028《密碼模塊安全技術(shù)要求》和 GM/T 0039《密碼模塊安全檢測(cè)要求》參考了美國(guó) NIST FIPS 140 標(biāo)準(zhǔn)和 ISO/ IEC 19790 標(biāo)準(zhǔn)。但是,我國(guó)仍然有必要在隨機(jī)數(shù)發(fā)生器方案和密鑰安全方案上,提出和實(shí)施有特色的安全要求。作為密碼算法軟件實(shí)現(xiàn)的最重要的數(shù)據(jù)安全部分,隨機(jī)數(shù)發(fā)生器和密鑰安全應(yīng)該在運(yùn)行環(huán)境所提供適度安全保證的前提下,加強(qiáng)自身的安全設(shè)計(jì)、而不是完全依賴于運(yùn)行環(huán)境。
目前我國(guó)商用密碼算法軟件模塊的隨機(jī)數(shù)發(fā)生器和密鑰安全,仍然有較高的要求,需要外部的密碼硬件模塊提供一定程度的支持和協(xié)作;例如,外部輸入的真隨機(jī)數(shù)作為熵源之一、利用門限密碼算法與外部密碼硬件模塊協(xié)作保護(hù)密鑰。相比而言,美國(guó) FIPS 140 密碼模塊測(cè)評(píng)要求對(duì)軟件密碼模塊允許完全由軟件實(shí)現(xiàn)的隨機(jī)數(shù)發(fā)生器和密鑰安全方案,其安全性對(duì)運(yùn)行環(huán)境有更大的依賴性。
國(guó)產(chǎn)商用密碼軟件引擎的檢測(cè)要求,與運(yùn)行環(huán)境的安全假設(shè)息息相關(guān)。如果假定通用計(jì)算機(jī)軟硬件環(huán)境能夠全面地提供各種安全特性(例如,內(nèi)存安全、用戶身份鑒別等),則運(yùn)行在之上的密碼軟件就可以降低安全要求;如果運(yùn)行環(huán)境不能完全提供必要的安全特性,則密碼算法軟件模塊就必須要加強(qiáng)自身安全性。
在密碼算法軟件模塊的檢測(cè)中,需要綜合考慮密碼安全技術(shù)和隨機(jī)數(shù)發(fā)生器技術(shù)的發(fā)展, 需要分析各種不同計(jì)算機(jī)軟硬件運(yùn)行環(huán)境的安全狀況,確定相應(yīng)的安全要求細(xì)節(jié)和具體的檢測(cè)方法步驟。
4 結(jié) 語
總而言之,筆者認(rèn)為,發(fā)展國(guó)產(chǎn)密碼算法軟件引擎,還需要在如下 3 方面開展工作:
?。?)制定隨機(jī)數(shù)系列標(biāo)準(zhǔn),形成標(biāo)準(zhǔn)體系。通過技術(shù)標(biāo)準(zhǔn),規(guī)范密碼算法軟件引擎的隨機(jī)數(shù)發(fā)生器技術(shù)方案和安全實(shí)現(xiàn)。同時(shí),在標(biāo)準(zhǔn)的實(shí)施中,尤其需要關(guān)注熵源的動(dòng)態(tài)熵值和隨機(jī)數(shù)發(fā)生器的有效變化。
(2)大力發(fā)展密鑰安全技術(shù)。密碼安全技術(shù)與計(jì)算機(jī)系統(tǒng)運(yùn)行環(huán)境密切相關(guān),難以形成標(biāo)準(zhǔn)化的技術(shù)方案;應(yīng)該針對(duì)各種不同的運(yùn)行環(huán)境和相應(yīng)安全威脅,研究密鑰安全技術(shù)方案。
?。?)實(shí)施有特色的國(guó)產(chǎn)密碼算法軟件引擎檢測(cè)要求。在軟件密碼引擎的運(yùn)行環(huán)境安全得到有效保證之前,適當(dāng)提高檢測(cè)要求、適當(dāng)降低對(duì)運(yùn)行環(huán)境的安全假設(shè),更有助于密碼技術(shù)發(fā)揮安全效果。站在密碼軟件引擎的角度,運(yùn)行環(huán)境應(yīng)該是介于“完全可信”和“完全不可信” 之間的中間狀態(tài):如果假設(shè)運(yùn)行環(huán)境的軟硬件完全不可信,則幾乎不可能實(shí)現(xiàn)滿足要求的密碼軟件引擎;如果不考慮現(xiàn)實(shí)情況、假設(shè)運(yùn)行環(huán)境完全可信,密碼軟件引擎自身缺乏必要的安全保護(hù),也會(huì)導(dǎo)致密碼軟件引擎被攻擊(例如, 密鑰泄露等)。
另外,《中華人民共和國(guó)密碼法》的立法工作已經(jīng)在穩(wěn)步推進(jìn),我國(guó)的密碼科技工作也必定將會(huì)進(jìn)入新的歷史階段。為了更便捷、更有效地在信息系統(tǒng)中發(fā)揮密碼技術(shù)的安全作用, 國(guó)產(chǎn)密碼算法軟件引擎的研發(fā)勢(shì)在必行。我國(guó)應(yīng)該直面國(guó)產(chǎn)密碼算法軟件引擎的安全挑戰(zhàn), 團(tuán)結(jié)更多力量,探索中國(guó)特色的商用密碼技術(shù)路線。