盡管“密碼機(jī)制”長(zhǎng)期以來(lái)始終是一個(gè)頗具技術(shù)性的話語(yǔ)表達(dá),但如果從政策決策的角度觀察,符合特定管理目標(biāo)及價(jià)值訴求的“密碼機(jī)制”仍然構(gòu)成了整個(gè)密碼規(guī)范體系的基石,其決定了密碼體制的分層結(jié)構(gòu)(例如我國(guó)的分類(lèi)分級(jí)管理)、目的、對(duì)象和方法?!懊艽a機(jī)制”的基本思想是對(duì)機(jī)密信息進(jìn)行“偽裝”,阻卻未經(jīng)授權(quán)的訪問(wèn)、篡改和披露。
2016年8月,美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)發(fā)布《聯(lián)邦政府使用密碼標(biāo)準(zhǔn)指南:密碼機(jī)制》(Guideline for Using Cryptographic Standards in the Federal Government:Cryptographic Mechanisms,SP800-175B),正式取代2005年發(fā)布的SP800-21第二版《聯(lián)邦政府實(shí)施密碼術(shù)指南》(SP 800-21 Second edition,Guideline for Implementing Cryptography in the Federal Government)。
SP800-175B是為解決密碼算法和密鑰的安全性,以及相對(duì)分散的密碼標(biāo)準(zhǔn)給密碼使用帶來(lái)的巨大挑戰(zhàn)。該標(biāo)準(zhǔn)旨在將聯(lián)邦機(jī)構(gòu)所使用的加密方法限制為符合聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPS)和NIST特殊出版物(SPs)的加密方法,為聯(lián)邦政府在傳輸和存儲(chǔ)期間使用加密技術(shù)保護(hù)其“敏感非涉密”的數(shù)字化信息提供指導(dǎo)。同時(shí),NIST特別指明,該標(biāo)準(zhǔn)不適用國(guó)家安全系統(tǒng),這也體現(xiàn)了“國(guó)家安全例外”的原則和理念。2020年3月,為了適應(yīng)密碼技術(shù)的快速發(fā)展,NIST對(duì)SP800-175B進(jìn)行修訂。在新版本中,NIST旗幟鮮明地指出,在當(dāng)今日益開(kāi)放和互連的系統(tǒng)、網(wǎng)絡(luò)和移動(dòng)設(shè)備的環(huán)境中,密碼的正確、有效、合規(guī)使用對(duì)于維護(hù)網(wǎng)絡(luò)和數(shù)據(jù)安全至關(guān)重要。
SP800-175B是SP800-175系列標(biāo)準(zhǔn)中的一部分,在第24期簡(jiǎn)報(bào)《NIST SP800-175A:美國(guó)聯(lián)邦政府使用相關(guān)法律指引概述》中,我們對(duì)SP800-175A進(jìn)行了概述,提供了有關(guān)確定使用密碼要求的指導(dǎo),包括保護(hù)聯(lián)邦政府敏感信息的法律法規(guī)、風(fēng)險(xiǎn)評(píng)估指南,以確定需要保護(hù)的內(nèi)容以及如何更好地保護(hù)該信息。作為其“姐妹篇”,SP800-175B更為側(cè)重討論可用于保護(hù)聯(lián)邦政府敏感信息的加密方法和服務(wù),并概覽了NIST的加密標(biāo)準(zhǔn)。本簡(jiǎn)報(bào)針對(duì)NIST所闡明的“密碼機(jī)制”基本要素,著重對(duì)SP800-175B第4部分“密碼服務(wù)”和第5部分“密鑰管理”進(jìn)行梳理概述?;緝?nèi)容如下:
4.密碼服務(wù)
4.1數(shù)據(jù)保密
以下文件規(guī)定了批準(zhǔn)的加密操作模式:
1)適用于AES和TDEA的SP800-38A,包括電子碼本(ECB),密碼塊鏈接(CBC)、密碼反饋(CFB)等模式。
2)適用于AES的SP 800-38E,包括XTS-AES模式。
3)適用于AES的SP 800-38G,包括用于保存格式加密的FF1和FF3模式。
4.2數(shù)據(jù)完整性、身份認(rèn)證和來(lái)源認(rèn)證
4.2.2.1基于分組密碼算法的MAC
1)SP800-38系列出版物包括生成MAC的模式。
2)SP800-38B定義了使用AES和TDEA分組密碼算法計(jì)算MAC的CMAC模式;有關(guān)不推薦使用的TDEA,請(qǐng)參見(jiàn)第3.2.1.2節(jié)。
3)SP800-38D定義了使用AES計(jì)算MAC的GMAC模式。
4.2.2.2基于哈希函數(shù)的MAC
1)FIPS198定義了一種結(jié)合使用加密散列函數(shù)和密鑰的MAC(HMAC)。HMAC必須與經(jīng)批準(zhǔn)的加密散列函數(shù)一起使用(參閱第4.2.1節(jié))。
2)SP800-107討論了與使用HMAC相關(guān)的安全性問(wèn)題。
3)SP800-185定義了一種基于FIPS202中指定的可擴(kuò)展輸出函數(shù)的MAC算法(KMAC),并詳細(xì)說(shuō)明了KMAC的兩種變體KMAC128和KMAC256的安全性問(wèn)題。
4.3在分組密碼操作模式中結(jié)合保密和認(rèn)證
AES定義了兩種經(jīng)過(guò)身份驗(yàn)證的加密模式,SP800-38C規(guī)定了CCM模式,SP800-38D規(guī)定了GCM模式。
4.4隨機(jī)位生成
1)SP800-90A規(guī)定了基于使用散列函數(shù)和分組密碼算法的經(jīng)批準(zhǔn)的DRBG算法,DRBG必須從隨機(jī)性源(例如熵源或NRBG)初始化。
2)SP800-90B討論熵源,包括確定熵源未失效所需的健康測(cè)試以及由認(rèn)證實(shí)驗(yàn)室驗(yàn)證熵源的測(cè)試。
3)SP800-90C根據(jù)SP800-90A中的算法和根據(jù)SP800-90B設(shè)計(jì)的熵源,為NRBGs和DRBGs的設(shè)計(jì)和實(shí)施提供構(gòu)造。NRBG的構(gòu)造包括來(lái)自SP800-90A的DRBG算法。
4)SP800-22討論了選擇和測(cè)試隨機(jī)數(shù)和偽隨機(jī)數(shù)生成器的一些問(wèn)題。對(duì)于聯(lián)邦申請(qǐng),必須驗(yàn)證RBG是否符合FIPS140和SP800-90的要求。
5.密鑰管理
5.1一般密鑰管理指南
SP800-57、FIPS140以及SP800-131A等出版物均為密鑰管理提供指引。
5.1.1密鑰管理建議
SP800-57為密鑰和相關(guān)信息管理提供一般性指南,涵蓋密鑰和相關(guān)信息的生成、使用與銷(xiāo)毀等階段,主要探討算法選擇、適當(dāng)密鑰長(zhǎng)度和加密政策等問(wèn)題,由三部分組成。
1)SP800-57,一般性指南,包含基本密鑰管理指引,包括:
密鑰材料所需保護(hù);
密鑰生命周期職責(zé);
密鑰備份、歸檔和恢復(fù);
密鑰變更;
加密周期(即使用密鑰的適當(dāng)時(shí)間長(zhǎng)度);
問(wèn)責(zé)制與審計(jì);
密鑰庫(kù);
應(yīng)急計(jì)劃;
密鑰泄露恢復(fù)(例如,通過(guò)生成新密鑰)。
聯(lián)邦機(jī)構(gòu)擁有大量需要加密保護(hù)的信息,不同信息的敏感程度和保護(hù)期限也各不相同。為此,NIST分別設(shè)立112位、128位、192位和256位的四級(jí)安全強(qiáng)度以滿(mǎn)足不同信息的安全保護(hù)需求,使其與已獲批準(zhǔn)的加密算法和密鑰尺寸相匹配,并預(yù)測(cè)安全的使用日期。詳情請(qǐng)參閱SP800-131A。
在選擇具有適當(dāng)安全強(qiáng)度的算法和密鑰尺寸之前,聯(lián)邦機(jī)構(gòu)應(yīng)首先明確數(shù)據(jù)加密保護(hù)期限。
請(qǐng)注意,SP800-57內(nèi)容是根據(jù)其指引之時(shí)效性不斷更新的。
2)SP800-57,密鑰管理組織最佳實(shí)踐,包括:
確定對(duì)稱(chēng)和非對(duì)稱(chēng)密鑰管理有效系統(tǒng)的共有概念、功能和元素;
確定有效機(jī)構(gòu)密鑰管理所需的安全規(guī)劃要求和文件;
描述密鑰管理規(guī)范要求;
描述使用加密的組織所需的加密密鑰管理策略文檔;
描述密鑰管理實(shí)踐聲明要求。
3)SP800-57,應(yīng)用程序密鑰管理指南,解決與當(dāng)前可用的密碼機(jī)制相關(guān)的密鑰管理問(wèn)題,涉及公鑰基礎(chǔ)設(shè)施(PKI)、互聯(lián)網(wǎng)協(xié)議安全(IPsec)、安全/多部分Internet郵件擴(kuò)展(S/MIME)、Kerberos、無(wú)線密鑰更新(OTAR)、域名系統(tǒng)安全擴(kuò)展(DNSSEC)、加密文件系統(tǒng)和安全殼(SSH)協(xié)議等領(lǐng)域,并提供以下方面的具體指導(dǎo):
推薦和/或允許的算法套件以及密鑰尺寸;
使用當(dāng)前機(jī)制進(jìn)行聯(lián)邦政府信息保護(hù)的相關(guān)建議;
影響密鑰管理過(guò)程有效性及加密機(jī)制的安全考量。
需要注意的是,傳輸層安全(TLS)協(xié)議包含在文檔的原始版本中,但是,第3部分現(xiàn)在僅引用了討論TLS的單獨(dú)文檔(參見(jiàn)SP800-52)。
伴隨新的密鑰管理技術(shù)和機(jī)制的持續(xù)性發(fā)展,現(xiàn)有密鑰管理機(jī)制和技術(shù)也在不斷完善。雖然第3部分中包含的安全指導(dǎo)信息將隨著機(jī)制和技術(shù)的發(fā)展而不斷更新,但可預(yù)期的是新產(chǎn)品和技術(shù)規(guī)范不會(huì)反映在當(dāng)前版本的文檔中。因此,本文可能會(huì)包含一些狀態(tài)信息,例如版本編號(hào)或?qū)嵤顟B(tài)。
5.1.2 密碼模塊的安全要求
FIPS140為在聯(lián)邦信息系統(tǒng)中包含或支持密碼術(shù)的密碼模塊提供最低安全要求。密碼模塊為保護(hù)敏感信息的安全系統(tǒng)執(zhí)行實(shí)際的密碼計(jì)算。安全要求涵蓋與密碼模塊的安全設(shè)計(jì)與實(shí)施相關(guān)的領(lǐng)域,包括模塊規(guī)范;密碼模塊端口和接口;角色、服務(wù)和身份驗(yàn)證;有限狀態(tài)模型;人身安全;操作環(huán)境;加密密鑰管理;電磁干擾/電磁兼容性(EMI/EMC);自測(cè);設(shè)計(jì)保證;減輕攻擊等內(nèi)容。
FIPS140適用于所有使用密碼術(shù)來(lái)保護(hù)計(jì)算機(jī)和電信系統(tǒng)中敏感信息的聯(lián)邦機(jī)構(gòu)。
5.1.3新的密碼算法和密鑰長(zhǎng)度的過(guò)渡
隨著SP800-57的開(kāi)發(fā)與發(fā)布,由于算法中斷或可用于有效搜索加密密鑰的更強(qiáng)大計(jì)算機(jī)的可用性,NIST提供了過(guò)渡到新加密算法和密鑰長(zhǎng)度的建議。
SP800-131A旨在為此類(lèi)轉(zhuǎn)換提供更具體的指導(dǎo)。每個(gè)算法和服務(wù)都可在SP800-131A中得到解決,指出其使用是否可接受、已棄用、僅允許用于遺留應(yīng)用程序,或不允許使用。
請(qǐng)注意,SP800-131A會(huì)在必要時(shí)更新(例如,為不再提供足夠安全性的算法提供轉(zhuǎn)換時(shí)間表)。
5.2密鑰管理系統(tǒng)
當(dāng)前一系列出版物為密鑰管理系統(tǒng)的開(kāi)發(fā)提供指南,例如SP800-130(參見(jiàn)第5.2.1節(jié))、SP800-152(參見(jiàn)第5.2.2節(jié)),與用于非對(duì)稱(chēng)密鑰加密的公鑰基礎(chǔ)設(shè)施相關(guān)的文件(參見(jiàn)第5.2.3節(jié))。
加密密鑰管理系統(tǒng)(CKMS)包括用于保護(hù)、管理和分發(fā)密鑰信息的策略、程序、組件和設(shè)備。CKMS包括可以訪問(wèn)密鑰或與其關(guān)聯(lián)的其他信息的所有設(shè)備或子系統(tǒng)。這些設(shè)備可以是計(jì)算機(jī)、手機(jī)、平板電腦或其他智能設(shè)備,例如汽車(chē)、警報(bào)系統(tǒng)甚至冰箱。
5.2.1密鑰管理框架
SP800-130包含CKMS設(shè)計(jì)人員在開(kāi)發(fā)CKMS設(shè)計(jì)規(guī)范時(shí)應(yīng)考慮的主題,涵蓋安全策略、加密密鑰和元數(shù)據(jù)、互操作性和轉(zhuǎn)換、安全控制、測(cè)試和系統(tǒng)保證、災(zāi)難恢復(fù)和安全評(píng)估等內(nèi)容。
對(duì)于每個(gè)主題,SP800-130都明確一個(gè)或多個(gè)需要由設(shè)計(jì)人員解決的文檔要求。SP800-130旨在幫助:
通過(guò)要求重要的CKMS功能規(guī)范,來(lái)定義CKMS設(shè)計(jì);
鼓勵(lì)CKMS設(shè)計(jì)者考慮綜合CKMS所需的因素;
從邏輯上比較不同的CKMS及其功能;
通過(guò)要求實(shí)施和支持的CKMS功能的規(guī)范,來(lái)執(zhí)行安全評(píng)估,以及為開(kāi)發(fā)配置文件奠定基礎(chǔ),這些配置文件規(guī)定了組織要使用的CKMS具體要求。
5.2.2 密鑰管理系統(tǒng)簡(jiǎn)介
SP800-152包含美國(guó)聯(lián)邦組織及其承包商對(duì)CKMS的設(shè)計(jì)、實(shí)施、采購(gòu)、安裝、配置、管理、操作和使用的要求。該配置文件是基于SP800-130(參見(jiàn)上第5.2.1節(jié))。SP800-152明確一系列要求,為具有特殊安全需求并希望增強(qiáng)基本安全和密鑰管理服務(wù)的聯(lián)邦組織提出建議。
在提供需納入CKMS設(shè)計(jì)的要求之外,SP800-152還規(guī)定了針對(duì)由服務(wù)提供商運(yùn)營(yíng)的聯(lián)邦CKMS(FCKMS)的要求,該服務(wù)提供商可能是聯(lián)邦機(jī)構(gòu)或根據(jù)合同運(yùn)營(yíng)FCKMS第三方一個(gè)或多個(gè)聯(lián)邦機(jī)構(gòu)及其承包商。
此配置文件旨在:
協(xié)助CKMS設(shè)計(jì)者和實(shí)施者支持適當(dāng)?shù)拿艽a算法和密鑰,選擇與密鑰關(guān)聯(lián)的元數(shù)據(jù),以及選擇用于保護(hù)敏感的美國(guó)聯(lián)邦計(jì)算應(yīng)用程序和數(shù)據(jù)的協(xié)議;
建立對(duì)FCKMS的測(cè)試、采購(gòu)、安裝、配置、管理、操作、維護(hù)和使用的要求;
通過(guò)分析一個(gè)CKMS的設(shè)計(jì)和實(shí)現(xiàn),促進(jìn)一個(gè)CKMS與另一個(gè)CKMS的簡(jiǎn)易比較,以了解每個(gè)CKMS如何滿(mǎn)足框架(即SP800-130)和概要(例如,SP800-152)要求;
協(xié)助了解評(píng)估、采購(gòu)、安裝、配置、管理、操作和使用FCKMS所需的內(nèi)容,該FCKMS管理用于保護(hù)美國(guó)聯(lián)邦組織獲取、處理、存儲(chǔ)和使用敏感和有價(jià)值數(shù)據(jù)的關(guān)鍵信息,以及他們的承包商。
5.2.3公鑰基礎(chǔ)設(shè)施
PKI(Public Key Infrastructure,公鑰基礎(chǔ)設(shè)施)是一種安全基礎(chǔ)設(shè)施,通過(guò)創(chuàng)建和管理公鑰證書(shū)以促進(jìn)公鑰(即非對(duì)稱(chēng)密鑰)密碼術(shù)的使用。為了實(shí)現(xiàn)這個(gè)目標(biāo),PKI需要執(zhí)行兩個(gè)基本任務(wù):
生成并提供公鑰證書(shū),在驗(yàn)證要綁定的信息的準(zhǔn)確性后,將公鑰綁定到與相應(yīng)私鑰的所有者相關(guān)聯(lián)的標(biāo)識(shí)符和其他所需信息;
維護(hù)和提供未過(guò)期和吊銷(xiāo)證書(shū)的證書(shū)狀態(tài)信息。
通常需使用兩種類(lèi)型的證書(shū):用于提供用于驗(yàn)證數(shù)字簽名的公鑰的證書(shū),和用于提供用于密鑰建立的公鑰的證書(shū)。每個(gè)與數(shù)字簽名相關(guān)的證書(shū)都提供FIPS186中批準(zhǔn)的數(shù)字簽名算法之一的公鑰:DSA、ECDSA、EdDSA或RSA。傳遞用于密鑰建立的公鑰的證書(shū)可能有兩種類(lèi)型:提供密鑰協(xié)議公鑰的證書(shū)(參見(jiàn)第5.3.3節(jié))和提供密鑰傳輸公鑰的證書(shū)(參見(jiàn)第5.3.4節(jié))。證書(shū)中的密鑰使用位指示公鑰的使用目的。
任何人都可以使用公鑰,但是,私鑰必須保密,并且只能由擁有并被授權(quán)使用私鑰的實(shí)體使用。實(shí)體可以是個(gè)人、組織、設(shè)備或過(guò)程,包括網(wǎng)絡(luò)服務(wù)器。對(duì)于非人類(lèi)實(shí)體(例如,設(shè)備或流程),指派一名或多名人員作為該實(shí)體的代表或發(fā)起人,以管理其關(guān)鍵信息;一旦進(jìn)入系統(tǒng),代表或贊助商不應(yīng)訪問(wèn)任何密鑰信息。在這種情況下,私鑰的所有者(例如,設(shè)備或進(jìn)程)與證書(shū)的所有者(即人類(lèi)代表或發(fā)起人)不同。
依賴(lài)方是依賴(lài)證書(shū)和頒發(fā)證書(shū)的CA來(lái)驗(yàn)證證書(shū)所有者的身份和證書(shū)中公鑰、相關(guān)算法和任何相關(guān)參數(shù)以及私鑰的有效性的實(shí)體,且私鑰所有者擁有相應(yīng)的私鑰。
私鑰丟失或泄露有以下影響:
如果用于生成數(shù)字簽名的私鑰丟失,所有者將無(wú)法再生成數(shù)字簽名。某些策略可能允許維護(hù)私鑰的備份副本以保持操作的連續(xù)性,但不鼓勵(lì)這樣做,因此替代方法是簡(jiǎn)單地生成新的密鑰對(duì)和證書(shū);
如果用于生成數(shù)字簽名的私鑰被泄露,依賴(lài)方將無(wú)法再信任使用該私鑰生成的數(shù)字簽名(例如,有人可能使用該簽名提供虛假信息);
如果用于密鑰建立的私鑰丟失(例如,用于密鑰傳輸或密鑰協(xié)商的密鑰),則在恢復(fù)或替換密鑰之前無(wú)法完成進(jìn)一步的密鑰建立過(guò)程。如果需要使用密鑰來(lái)恢復(fù)受密鑰保護(hù)的數(shù)據(jù),則除非可以恢復(fù)密鑰,否則該數(shù)據(jù)將丟失。例如,如果密鑰用于傳輸加密數(shù)據(jù)的解密密鑰,并且密鑰丟失,則無(wú)法解密加密的數(shù)據(jù)。為了確保對(duì)關(guān)鍵數(shù)據(jù)的訪問(wèn)不會(huì)丟失,PKI通常會(huì)備份私鑰建立密鑰以備可能的恢復(fù);
如果用于密鑰建立的私鑰被泄露,則任何涉及該密鑰的交易都不能被信任(例如,除私鑰真正所有者之外的其他人可能會(huì)為了某些非法目的而試圖進(jìn)入一個(gè)所謂的“安全”交易)。
5.3 密鑰建立
密鑰建立是一種生成密鑰并將其提供給被授權(quán)實(shí)體的方式。密鑰建立相關(guān)的實(shí)施場(chǎng)景包括以下內(nèi)容:
單個(gè)實(shí)體可生成(參見(jiàn)第5.3.1節(jié))并使用密鑰,而無(wú)需將其提供給其他實(shí)體(例如,用于保護(hù)本地存儲(chǔ)的數(shù)據(jù));
密鑰可以從已經(jīng)在兩個(gè)或多個(gè)實(shí)體之間共享的密鑰再派生出來(lái)(參見(jiàn)第5.3.2節(jié));
兩個(gè)實(shí)體可以使用每個(gè)實(shí)體的輸入(即數(shù)據(jù))生成一個(gè)密鑰,使用包含密鑰協(xié)議方案的自動(dòng)化協(xié)議(參見(jiàn)第5.3.3節(jié));
單個(gè)實(shí)體可以生成密鑰并將其提供給一個(gè)或多個(gè)其他實(shí)體,無(wú)論是通過(guò)手動(dòng)方式(例如,快遞或以印刷或電子形式與密鑰面對(duì)面會(huì)面,例如在閃光燈上驅(qū)動(dòng)器)或使用包含密鑰傳輸方案的自動(dòng)化協(xié)議(參見(jiàn)第5.3.4和5.3.5節(jié));
單個(gè)實(shí)體可以生成密鑰并將其提供給一個(gè)或多個(gè)其他實(shí)體,以通過(guò)人工方式(例如快遞或者紙質(zhì)或電子形式面對(duì)面會(huì)面,比如使用閃存驅(qū)動(dòng)),或使用包含密鑰傳輸方案的自動(dòng)化協(xié)議(參見(jiàn)第5.3.4和第5.3.5節(jié))。
5.3.1密鑰生成
大多數(shù)加密算法都需要使用密鑰,但哈希函數(shù)不用作另一個(gè)加密過(guò)程(例如HMAC)組件的情況除外。SP800-133討論了與批準(zhǔn)的加密算法一起使用的密鑰生成相關(guān)問(wèn)題。
所有密鑰必須直接或間接地基于經(jīng)批準(zhǔn)的隨機(jī)位生成器(RBG)的輸出在FIPS140驗(yàn)證的密碼模塊中生成(參閱FIPS140)。模塊所需的所有隨機(jī)值都必須在密碼模塊中生成。
SP800-133提供了直接從RBG生成密鑰的指南,并參考了其他出版物以獲取為特定算法生成密鑰所需的附加信息:
FIPS186提供了用于生成數(shù)字簽名的密鑰對(duì)規(guī)則;
SP800-108提供了通過(guò)預(yù)共享密鑰生成(新)密鑰的方法途徑(另見(jiàn)第5.3.2節(jié));
SP800-56A規(guī)定了生成Diffie-Hellman和MQV(Menezes?Qu?Vanstone)密鑰協(xié)議方案的密鑰對(duì)的規(guī)則(另見(jiàn)第5.3.3節(jié));
SP800-56B規(guī)定了為RSA密鑰協(xié)商和密鑰傳輸方案生成密鑰對(duì)的規(guī)則(另見(jiàn)第5.3.3和第5.3.4節(jié));
SP800-132指定了從密碼生成密鑰的規(guī)則。
5.3.2密鑰導(dǎo)出
密鑰導(dǎo)出與從秘密信息生成密鑰有關(guān),盡管在生成過(guò)程中除了秘密信息之外還可以使用非秘密信息。通常,秘密信息在需要為后續(xù)交互導(dǎo)出相同密鑰的實(shí)體之間共享。秘密信息可以是實(shí)體之間已經(jīng)共享的密鑰(即,預(yù)共享密鑰)或在密鑰協(xié)商方案期間導(dǎo)出的共享秘密(參見(jiàn)第5.3.3節(jié))。
SP800-108指定了幾個(gè)使用預(yù)共享密鑰的密鑰導(dǎo)出函數(shù)。預(yù)共享密鑰可能是:
由一個(gè)實(shí)體生成并通過(guò)某種手動(dòng)方式(例如,快遞或面對(duì)面會(huì)議)提供給一個(gè)或多個(gè)其他實(shí)體;
由實(shí)體使用自動(dòng)密鑰協(xié)商方案達(dá)成一致(參見(jiàn)第5.3.3節(jié));
由一個(gè)實(shí)體生成并使用自動(dòng)密鑰傳輸方案提供給另一個(gè)實(shí)體(參見(jiàn)第5.3.4節(jié)和第5.3.5節(jié));
SP800-56C和SP800-13584提供了從密鑰協(xié)商期間生成的共享秘密中導(dǎo)出密鑰的方法(參見(jiàn)第5.3.3節(jié))。
5.3.3密鑰協(xié)議
密鑰協(xié)商是一個(gè)密鑰建立過(guò)程,其中生成的密鑰材料是密鑰協(xié)商過(guò)程中所有參與者貢獻(xiàn)的信息的函數(shù),因此任何參與者都不能獨(dú)立于其他參與者的貢獻(xiàn)預(yù)先確定生成的密鑰材料的價(jià)值。密鑰協(xié)商通常使用自動(dòng)協(xié)議執(zhí)行。
SP800-56A和SP800-56B提供了幾種自動(dòng)化的成對(duì)密鑰協(xié)商方案(即涉及兩方的密鑰協(xié)商方案)。對(duì)于每個(gè)方案,都會(huì)生成一個(gè)共享機(jī)密,并使用SP 800-56C中指定或批準(zhǔn)的密鑰導(dǎo)出方法從共享機(jī)密中導(dǎo)出密鑰材料。
SP800-56A和SP800-56B包含不同的密鑰協(xié)商方案,在密鑰數(shù)量、密鑰狀態(tài)(長(zhǎng)期的還是短暫的)等方面有所不同。密鑰協(xié)商方案有兩個(gè)參與實(shí)體:發(fā)起者和響應(yīng)者。
5.3.4密鑰傳輸/密鑰分發(fā)
密鑰傳輸是一種一方(發(fā)送方)生成密鑰并將其分發(fā)給一個(gè)或多個(gè)其他方(接收方)的方法。這里可以使用手動(dòng)方法(例如,使用快遞)或使用自動(dòng)協(xié)議來(lái)完成密鑰傳輸。SP800-56B提供了使用RSA的自動(dòng)成對(duì)密鑰傳輸方案以及對(duì)每個(gè)密鑰傳輸方案提供的安全屬性的分析。SP800-7185提供了分發(fā)受對(duì)稱(chēng)密鑰分組密碼算法(例如AES)保護(hù)的密鑰材料的方案。
5.4密鑰管理問(wèn)題
選擇和使用CKMS需要解決一系列問(wèn)題。
5.4.1手動(dòng)密鑰建立與自動(dòng)密鑰建立
如第5.3節(jié)所述,可以使用手動(dòng)或自動(dòng)方法在實(shí)體之間建立密鑰。在很多情況下,使用混合方法,其中一個(gè)實(shí)體生成一個(gè)或多個(gè)密鑰并將其手動(dòng)分發(fā)給其他實(shí)體,然后這些密鑰用于建立其他密鑰(見(jiàn)SP800-56A、SP800-56B和SP800-71)。
要手動(dòng)分發(fā)的密鑰數(shù)量取決于要使用的密碼術(shù)類(lèi)型(即對(duì)稱(chēng)或非對(duì)稱(chēng)方法),并且在選擇CKMS所需的功能時(shí)必須考慮。
5.4.2 CKMS的選擇和操作
CKMS可以由將使用它的組織設(shè)計(jì)、實(shí)施和運(yùn)行。組織可以運(yùn)行從供應(yīng)商處采購(gòu)的CKMS,或者組織可以采購(gòu)從供應(yīng)商處采購(gòu)CKMS的第三方的服務(wù)。無(wú)論做出何種選擇,組織都需要確保使用的CKMS提供組織信息所需的保護(hù)。SP800-130和SP800-152討論了聯(lián)邦組織需要解決的注意事項(xiàng),包括CKMS的可擴(kuò)展性和與密鑰關(guān)聯(lián)的元數(shù)據(jù)。
5.4.3 存儲(chǔ)和保護(hù)密鑰
密鑰可以存儲(chǔ)在多個(gè)位置并以多種方式進(jìn)行保護(hù)。密鑰可以存放在保險(xiǎn)箱中;可出現(xiàn)在經(jīng)過(guò)驗(yàn)證的密碼模塊中,其中模塊本身可以根據(jù)其設(shè)計(jì)充分保護(hù)密鑰;也可存儲(chǔ)在電子媒體上,例如閃存驅(qū)動(dòng)器,在這種情況下,可能需要對(duì)密鑰進(jìn)行包裝(即加密并對(duì)其完整性進(jìn)行保護(hù))或?qū)⑵洳鸱譃槊荑€組件,以確保其機(jī)密性。
某些密鑰可能需要備份,以便在操作密鑰無(wú)意中丟失或修改時(shí),可以恢復(fù)它并恢復(fù)操作。某些密鑰可能還需要存檔以進(jìn)行長(zhǎng)期存儲(chǔ)(例如,由于法律要求或解密存檔數(shù)據(jù))。每當(dāng)備份或存檔密鑰時(shí),都需要密鑰恢復(fù)功能。需要設(shè)計(jì)此功能,以便可以在可接受的時(shí)間內(nèi)恢復(fù)密鑰,并且只能由獲得授權(quán)的實(shí)體進(jìn)行恢復(fù);有關(guān)密鑰備份、密鑰歸檔以及備份和歸檔密鑰恢復(fù)的更多信息,請(qǐng)參閱SP800-57,第1部分。
5.4.4加密周期
加密周期是授權(quán)使用特定密鑰的時(shí)間長(zhǎng)度。為密鑰制定、分配加密周期的原因有很多,例如在密鑰被泄露時(shí)限制加密數(shù)據(jù)的暴露量。加密周期通常是根據(jù)經(jīng)過(guò)周密考慮的時(shí)間段或密鑰保護(hù)的最大數(shù)據(jù)量來(lái)分配的。與確定加密周期相關(guān)的考量涉及數(shù)據(jù)暴露的風(fēng)險(xiǎn)和后果。SP800-57的第5.3節(jié)更詳細(xì)地討論了建立加密周期的必要性、決定合適的加密周期時(shí)要考慮的因素,以及有關(guān)加密周期長(zhǎng)度的一些建議。
5.4.5使用經(jīng)過(guò)驗(yàn)證的算法和密碼模塊
必須在FIPS 140驗(yàn)證的密碼模塊中驗(yàn)證和實(shí)施加密算法。大多數(shù)具有加密功能的IT產(chǎn)品都聲稱(chēng)其產(chǎn)品的功能和/或提供的安全性。在保護(hù)敏感數(shù)據(jù)時(shí),在這些產(chǎn)品中使用FIPS140驗(yàn)證的密碼模塊可提供最低級(jí)別的保證,即產(chǎn)品聲明的安全聲明是有效的。
聯(lián)邦機(jī)構(gòu)、私營(yíng)企業(yè)和公眾依靠密碼術(shù)來(lái)保護(hù)電子商務(wù)、關(guān)鍵基礎(chǔ)設(shè)施和其他應(yīng)用領(lǐng)域中使用的信息和通信。提供加密服務(wù)的所有產(chǎn)品的核心是密碼模塊。包含加密算法的密碼模塊用于產(chǎn)品和系統(tǒng)中,以提供機(jī)密性、完整性和身份驗(yàn)證等安全服務(wù)。盡管使用密碼術(shù)來(lái)提供安全性,但設(shè)計(jì)不佳或算法薄弱等弱點(diǎn)可能會(huì)使產(chǎn)品不安全并使高度敏感的信息處于危險(xiǎn)之中。根據(jù)既定標(biāo)準(zhǔn)對(duì)密碼模塊及其底層加密算法進(jìn)行充分測(cè)試和驗(yàn)證對(duì)于提供安全保證至關(guān)重要。
NIST已制定程序來(lái)驗(yàn)證已批準(zhǔn)的密碼算法和使用它們的密碼模塊的實(shí)施:密碼算法驗(yàn)證程序(CAVP)和密碼模塊驗(yàn)證程序(CMVP)。
有關(guān)密碼模塊的安全要求的討論,請(qǐng)參閱第5.1.2節(jié)。
5.4.6密鑰材料控制
對(duì)密鑰的訪問(wèn)需要被控制。密鑰只能由授權(quán)實(shí)體訪問(wèn),并且只能用于授權(quán)的目的。例如,指定用于密鑰傳輸?shù)拿荑€不得用于生成或驗(yàn)證數(shù)字簽名。
還需要控制密鑰的擴(kuò)散。雖然制作密鑰的副本通常很方便,但需要考慮這些額外的副本控制。如果密鑰被泄露,則可能需要銷(xiāo)毀該密鑰及其所有副本,以防止后續(xù)未經(jīng)授權(quán)的使用。例如,如果用于生成數(shù)字簽名的私鑰被泄露,并且在原始副本銷(xiāo)毀后該密鑰的副本仍然存在,則該副本在之后有可能被用于生成未經(jīng)授權(quán)的數(shù)字簽名。
應(yīng)向用戶(hù)提供一份責(zé)任和義務(wù)清單,每個(gè)用戶(hù)在收到密鑰之前應(yīng)簽署一份聲明承認(rèn)這些問(wèn)題。必須讓用戶(hù)意識(shí)到他們的獨(dú)特責(zé)任,尤其是關(guān)于密鑰泄露或丟失的重要性。用戶(hù)必須能夠安全地存儲(chǔ)他們的秘密和私有密鑰,這樣任何入侵者都不能訪問(wèn)它們,而且這些密鑰必須易于合法使用。
5.4.7泄露
必須制定計(jì)劃來(lái)處理密鑰的泄露或可疑泄露風(fēng)險(xiǎn),特別是那些在中央站點(diǎn)使用和管理的密鑰(例如CA用于簽署證書(shū)的密鑰)。應(yīng)在系統(tǒng)投入運(yùn)行之前制定受損恢復(fù)計(jì)劃,并應(yīng)說(shuō)明對(duì)受損系統(tǒng)軟件和硬件、CA密鑰、用戶(hù)密鑰、先前生成的簽名、加密數(shù)據(jù)等將采取的措施。SP800-57第1部分包括對(duì)密鑰泄露的影響的討論,如何將密鑰泄露的可能性或后果降至最低的措施,以及在制定泄露恢復(fù)計(jì)劃時(shí)應(yīng)考慮的因素。
如果某人的私鑰或秘密密鑰丟失或泄露,則必須讓其他用戶(hù)意識(shí)到這一點(diǎn),以便他們不再使用已泄露的密鑰啟動(dòng)數(shù)據(jù)保護(hù)或接受用泄露的密鑰保護(hù)的數(shù)據(jù),而無(wú)需評(píng)估和接受這樣做的風(fēng)險(xiǎn)。此通知通常使用證書(shū)吊銷(xiāo)列表(CRL)或受損密鑰列表(CKL)來(lái)完成。有關(guān)討論參見(jiàn)SP800-57第1部分。
在某些情況下,應(yīng)在檢測(cè)到密鑰泄露后立即銷(xiāo)毀密鑰和密鑰的所有副本。例如,用于生成數(shù)字簽名的私鑰應(yīng)立即銷(xiāo)毀。然而,相應(yīng)的公鑰可能需要保持可用以驗(yàn)證先前使用泄露的私鑰生成的簽名。并且需要注意,接受這些簽名會(huì)存在相關(guān)風(fēng)險(xiǎn)。
5.4.8問(wèn)責(zé)制和庫(kù)存管理
問(wèn)責(zé)制涉及識(shí)別那些在整個(gè)生命周期中有權(quán)訪問(wèn)或控制加密密鑰或證書(shū)的實(shí)體。問(wèn)責(zé)制可以成為幫助防止密鑰泄露的有效工具,在檢測(cè)到泄露時(shí)減少泄露的影響,確定發(fā)生泄露時(shí)可能涉及的個(gè)人,以阻止密鑰泄露,因?yàn)橛脩?hù)知道他們對(duì)密鑰的訪問(wèn)是已知的,以及確定在何處使用密鑰,以及哪些數(shù)據(jù)或其他密鑰受到泄露密鑰的保護(hù),因此也可能被泄露。當(dāng)使用公鑰證書(shū)時(shí),問(wèn)責(zé)制用于確定誰(shuí)負(fù)責(zé)證書(shū)維護(hù)(例如,證書(shū)過(guò)期或私鑰被泄露時(shí)的證書(shū)更換)。
使用密鑰或證書(shū)清單可以成為協(xié)助問(wèn)責(zé)的工具。庫(kù)存管理涉及建立和維護(hù)密鑰和/或證書(shū)的庫(kù)存;分配和跟蹤他們的所有者、代表或發(fā)起人(例如,他們是誰(shuí)或他們是什么,他們?cè)谀睦铮约叭绾温?lián)系他們);自動(dòng)將密鑰和證書(shū)輸入庫(kù)存;監(jiān)控密鑰和證書(shū)狀態(tài)(例如,到期日期和密鑰是否已被泄露);并在需要時(shí)將狀態(tài)報(bào)告給適當(dāng)?shù)墓賳T以采取補(bǔ)救措施。SP800-57,第1部分提供了有關(guān)密鑰和證書(shū)庫(kù)存管理的討論。
5.4.9審計(jì)
審計(jì)是一種用于密鑰泄露預(yù)防、檢測(cè)和恢復(fù)的機(jī)制。需要執(zhí)行下列類(lèi)型的審計(jì)以確保正確的密鑰管理:
合規(guī)審計(jì)是對(duì)組織遵守監(jiān)管準(zhǔn)則的全面審查。合規(guī)審計(jì)員審查安全政策(例如,密鑰管理政策)以及用戶(hù)訪問(wèn)控制和風(fēng)險(xiǎn)管理程序,以確定這些控制和程序支持這些政策;
需要對(duì)所采用的保護(hù)機(jī)制(例如,使用的密碼算法和密鑰長(zhǎng)度)進(jìn)行審核,以重新評(píng)估當(dāng)前提供的,以及預(yù)期需要和將來(lái)提供的安全級(jí)別。這需要確定保護(hù)機(jī)制正確有效地支持適當(dāng)?shù)恼撸ɡ?,密鑰管理政策)。同時(shí)也需要考慮新技術(shù)的發(fā)展和攻擊;
需要對(duì)使用、操作和維護(hù)密鑰管理系統(tǒng)的人員的行為進(jìn)行審核,以驗(yàn)證人員繼續(xù)遵循既定的安全程序。高度不尋常的事件被記錄并審查,作為對(duì)系統(tǒng)嘗試攻擊的可能預(yù)測(cè)。