探索PKI—什么是加密密鑰?
什么是加密密鑰,我們該如何使用它們?
面對這一問題,此前Hashed Out發(fā)布了一篇名為“Cryptographic Keys 101: What They Are & How They Secure Data”的文章,里面詳細(xì)介紹了關(guān)于加密密鑰的故事。
以下為原文,經(jīng)公鑰密碼開放社區(qū)編譯。
什么是加密密鑰?
加密密鑰是一串字符(通常是隨機(jī)生成的或經(jīng)過數(shù)學(xué)計(jì)算的),與加密算法配對使用來保護(hù)數(shù)據(jù)的安全。算法是執(zhí)行多個(gè)重要的加密功能的數(shù)學(xué)公式。涉及加密密鑰的兩個(gè)最常見的功能是數(shù)據(jù)加密和解密:
- 加密使用密鑰將明文(可讀)數(shù)據(jù)打亂為不可讀的亂碼(稱為密文)。這可以保護(hù)數(shù)據(jù)的機(jī)密性免遭窺探。
- 解密則使用正確的加密密鑰將密文重新計(jì)算為原始的明文數(shù)據(jù),只有擁有正確加密密鑰的人才能讀取信息。
當(dāng)加密密鑰被暴露或泄露時(shí),這意味著用于保護(hù)的任何內(nèi)容現(xiàn)在都面臨泄露的風(fēng)險(xiǎn)。
在近4000年的人類歷史中,有許多使用密鑰來傳遞秘密信息的實(shí)例。這包括從古埃及墓碑銘文到第一次世界大戰(zhàn)后英國政府通信總部(GCHQ)的活動。最著名(也是最簡單)的密鑰應(yīng)用示例之一是凱撒移位密碼。這種基本替換密碼將字母表“移動”一定數(shù)量的空格(例如,A變?yōu)镈,N變?yōu)镻)。在這種情況下,“密鑰”就是知道要移動多少個(gè)位置才能解密消息。
當(dāng)你登錄你最喜歡的網(wǎng)站時(shí),可以看到一個(gè)常見的加密示例。如果你看到安全掛鎖圖標(biāo)(如下圖所示),則意味著你正在訪問使用公鑰加密(SSL/TLS)保護(hù)的網(wǎng)站。(我們稍后將在文章中更詳細(xì)地討論此內(nèi)容。)
加密密鑰分為兩大類:對稱密鑰和非對稱密鑰
不同的加密方法涉及使用一個(gè)或兩個(gè)密碼密鑰。在深入了解其用途之前,讓我們先來探討一下這兩種密鑰。
對稱密鑰 = 用于加密和解密數(shù)據(jù)的單個(gè)私鑰
對稱加密使用單個(gè)密鑰,稱為對稱密鑰。發(fā)送者和接收者都需要擁有該密鑰的副本以加密和解密數(shù)據(jù)。因此,這個(gè)私鑰必須保密,以防止任何意外的第三方使用它來解密他們的秘密消息。
想象一下,你剛剛完成了房屋裝修,該項(xiàng)目包括用你在當(dāng)?shù)匚褰鸬曩徺I的門鎖更換所有內(nèi)門和外門。因此,你安裝的每扇門都有自己單獨(dú)的鎖,需要單獨(dú)的鑰匙才能打開。(這與非對稱加密更為接近,因?yàn)槊總€(gè)鑰匙只適合于對應(yīng)的鎖,我們稍后將深入探討這一點(diǎn)。)
然而,使用對稱鑰匙就像重新設(shè)置家中所有門鎖的鑰匙,以便用一把鑰匙就可以打開它們。這非常方便,因?yàn)槟阒恍枰话谚€匙,但這也意味著你必須付出很大努力來保證鑰匙的安全。否則,如果有人拿到了那把鑰匙,你家里的一切都會受到損害。
對稱密鑰的一個(gè)棘手之處在于,它們要求兩個(gè)通信方以安全的方式會面,以便他們每個(gè)人都有一份鑰匙的副本。(想象一下電影或書籍中那些典型的秘密間諜會面場景)如果你和對方在同一地理區(qū)域,這并不太糟糕。但是,如果你現(xiàn)在需要共享敏感信息但沒有時(shí)間見面交換密鑰怎么辦?或者,當(dāng)你嘗試與位于另一個(gè)州、國家或世界另一端的人進(jìn)行安全通信時(shí)會發(fā)生什么?那將是非常糟糕的局面。
上個(gè)世紀(jì),數(shù)字通信的興起改變了通信格局?,F(xiàn)在,你可以在美國使用電話,幾乎能即時(shí)與任何地理位置的人進(jìn)行通信。你可以在網(wǎng)頁表單中輸入信息,會立即通過互聯(lián)網(wǎng)將其發(fā)送到世界另一邊的某人手中。
但是,它有一個(gè)缺點(diǎn):如果你以明文形式發(fā)送該數(shù)據(jù),則它不安全,并且可能會被愛管閑事或惡意的第三方攔截。
為了避免這種安全風(fēng)險(xiǎn),你和對方需要一種安全的加密通信方式。但這需要交換你們的對稱密鑰,對嗎?是的。這就是公鑰加密技術(shù)發(fā)揮作用的地方……
非對稱密鑰 = 用于加密和解密數(shù)據(jù)的單獨(dú)密鑰(并啟用身份驗(yàn)證)
在現(xiàn)代密碼學(xué)中,另一種類型的加密密鑰是非對稱密鑰——一對兩個(gè)不同但相關(guān)的密鑰。公鑰是公開的,不必保密。它與一個(gè)保密的私鑰相關(guān)聯(lián)。
(非對稱=不相同)是以數(shù)學(xué)相關(guān)的對形式生成的,其中包含一個(gè)公鑰和一個(gè)私鑰。在公鑰加密中:
公鑰可供幾乎所有人使用,用于加密數(shù)據(jù)。私鑰必須受到保護(hù)和保密,用于解密密文。你還會在網(wǎng)上看到一個(gè)常見的類比來描述非對稱加密中分離密鑰的角色,就是一個(gè)郵箱,你有一把鑰匙放置物品(公鑰),還有一把不同的鑰匙取出物品(私鑰)。
使用這兩個(gè)密碼密鑰使兩個(gè)方能夠建立安全的加密連接。想象一下當(dāng)你連接到一個(gè)網(wǎng)站時(shí),服務(wù)器和客戶端使用非對稱密鑰來安全交換信息,這些信息用于建立對稱會話密鑰。這些對稱密鑰需要更少的計(jì)算資源,使數(shù)據(jù)交換在大規(guī)模情況下更快速。
要了解有關(guān)公鑰和私鑰對如何在各種加密用途中工作的更多信息,請查看我們的另一篇文章《公鑰與私鑰對的工作原理?5個(gè)場景告訴你答案》,該文章更深入地探討了該主題。
但為什么要費(fèi)心切換到對稱加密呢?難道不能一直使用非對稱密鑰嗎?從技術(shù)上講,是的,你可以單獨(dú)使用非對稱加密在開放通道上安全地進(jìn)行通信。然而,在處理數(shù)千或數(shù)百萬個(gè)連接時(shí),為熱門網(wǎng)站實(shí)現(xiàn)這一點(diǎn)所需的資源成本太高。這就是為什么我們使用非對稱密鑰來交換對稱密鑰加密會話以提高可擴(kuò)展性。
電氣和電子工程師協(xié)會 (IEEE) 的研究人員此前對不對稱和對稱應(yīng)用進(jìn)行的成本進(jìn)行了比較分析。他們的研究表明,通過采用對稱密鑰系統(tǒng),“基于公鑰的應(yīng)用程序的全球能源成本節(jié)省了 58%”。
對稱密鑰和非對稱密鑰的快速比較——
密鑰也可以通過其用途和應(yīng)用來識別
有時(shí),加密密鑰是指它們在加密過程中所扮演的角色。我們不會討論所有這些,因?yàn)樗鼈兏鶕?jù)你正在執(zhí)行的加密過程的類型而有所不同,但以下是幾個(gè)示例的快速概述:
·會話密鑰——這些密鑰用于在各個(gè)會話(例如,連接到網(wǎng)站或 Web 應(yīng)用程序)期間加密數(shù)據(jù)。
·HMAC密鑰——這些密鑰用于創(chuàng)建基于哈希的消息身份驗(yàn)證代碼中使用的數(shù)字簽名。
·數(shù)據(jù)加密密鑰 (DEK)——這些密鑰使你能夠加密服務(wù)器上的靜態(tài)數(shù)。DEK也可以是主密鑰。
·密鑰加密密鑰 (KEK)——這些密鑰也稱為密鑰包裝密鑰,用于加密執(zhí)行靜態(tài)和傳輸中數(shù)據(jù)加密的其他加密密鑰。這意味著它們可以是對稱的或不對稱的,具體取決于任務(wù)。
·流量加密密鑰 (TEK)——這些加密密鑰用于加密傳輸中的數(shù)據(jù),防止中間人攻擊和其他攔截方法。
·主密鑰——“主密鑰”的含義根據(jù)其用途而有所不同。它也稱為密鑰派生密鑰,因?yàn)樗糠钟糜谑褂妹荑€派生方法計(jì)算其他密鑰。
大密鑰比小密鑰更安全(但可擴(kuò)展性較差)
一般來說,密鑰越大,就越安全。例如,256位AES對稱密鑰比128位對稱密鑰更強(qiáng),3078位RSA非對稱密鑰比2048位非對稱密鑰更安全。較大的密鑰有助于阻止試圖猜測你的密鑰的暴力攻擊者,因?yàn)槭褂矛F(xiàn)代計(jì)算機(jī)資源幾乎不可能猜測所有可能的組合。
如果你將對稱密鑰與非對稱密鑰進(jìn)行比較,你可能會驚訝地發(fā)現(xiàn)密鑰大小在安全強(qiáng)度方面并不相同。例如,256位AES對稱密鑰比3072位RSA 非對稱密鑰更安全。美國國家標(biāo)準(zhǔn)與技術(shù)研究院 (NIST)在其“密鑰管理建議:第1部分”中列出了AES256位密鑰,大致相當(dāng)于15360位RSA密鑰。此外,由于非對稱加密需要使用兩個(gè)密鑰,因此它比只需要一個(gè)密鑰的對稱加密慢。
只有你的密鑰安全,加密才是安全的
加密密鑰的安全性取決于你如何管理和保護(hù)它們。如果一把密鑰丟失或被盜,那對你沒有任何好處,因?yàn)樗斜煌{的風(fēng)險(xiǎn)。一旦密鑰被威脅,它所用于保護(hù)的任何內(nèi)容的安全性都將受到威脅。這對你來說是個(gè)壞消息,卻是網(wǎng)絡(luò)犯罪分子的好消息。
你可以使用密鑰管理系統(tǒng)并遵循密鑰管理的最佳實(shí)踐來保護(hù)你的密碼學(xué)密鑰。
加密密鑰的作用
加密密鑰是公鑰基礎(chǔ)設(shè)施的關(guān)鍵要素,在幾個(gè)關(guān)鍵的加密功能中發(fā)揮著重要作用:
加密和解密
我們已經(jīng)討論過這一點(diǎn),但回顧一下,加密是一種將明文數(shù)據(jù)混淆成密文的方法。根據(jù)所使用的加密類型(非對稱加密與對稱加密),加密密鑰被用于加密、解密或加密和解密數(shù)據(jù)。
身份驗(yàn)證
通過使用公鑰密碼學(xué),驗(yàn)證一個(gè)實(shí)體(例如個(gè)人、客戶端或設(shè)備)是否真實(shí)?;旧?,這是一種確保某人的身份真實(shí)性的方式,并且沒有冒名頂替者,因?yàn)橹挥惺跈?quán)用戶應(yīng)該可以訪問私鑰。(這與雙方共享的對稱密鑰不同。)
數(shù)字簽名
數(shù)字簽名是一種證明某些內(nèi)容(例如軟件、代碼、文檔)自數(shù)字簽名以來未被修改或篡改的值。將加密函數(shù)(散列)和加密密鑰應(yīng)用于數(shù)據(jù)以生成簽名。因此,它還有助于提供不可否認(rèn)性,這意味著稍后向你發(fā)送某些內(nèi)容的人無法否認(rèn)發(fā)送了該內(nèi)容。這類似于在公證人在場的情況下簽署一份文件:你以后無法反駁簽署該文件,因?yàn)樗麄兡慷昧四愕暮炇疬^程。
加密密鑰的應(yīng)用場景
不確定你當(dāng)前是否在IT環(huán)境中使用任何加密密鑰?以下是你的組織或其他人可能已經(jīng)如何使用它們的幾大場景:
保護(hù)傳輸中的數(shù)據(jù)免受攔截攻擊
通過在網(wǎng)站上啟用HTTPS,你可以使用傳輸層安全性來保護(hù)數(shù)據(jù)在傳輸過程中的安全性。你可以通過在Web服務(wù)器上安裝SSL/TLS證書來實(shí)現(xiàn)這一點(diǎn)。在你的網(wǎng)站上使用SSL/TLS證書可以確保你的網(wǎng)站用戶的數(shù)據(jù)通過安全、加密的連接傳輸。
這些連接保護(hù)了傳輸中的數(shù)據(jù),阻止了中間人攻擊者竊聽、讀取、修改或竊取客戶敏感數(shù)據(jù)的企圖,這些數(shù)據(jù)在他們的客戶端和你的服務(wù)器之間傳輸。
為了增加安全性,你可以在服務(wù)器上最低支持TLS1.2。此外,你還可以使用HTTP嚴(yán)格傳輸安全(HSTS)作為另一層安全性,以防止降級攻擊(即防止網(wǎng)絡(luò)犯罪分子將網(wǎng)站從HTTPS降級到HTTP)。
保護(hù)硬盤和服務(wù)器上的靜態(tài)數(shù)據(jù)
加密不僅用于保護(hù)數(shù)據(jù)在傳輸過程中的安全性(即使用公鑰加密)。相反,加密也常用于保護(hù)靜態(tài)數(shù)據(jù)的安全性。這包括在計(jì)算機(jī)系統(tǒng)上以數(shù)字方式存儲的幾乎所有類型的數(shù)據(jù)。例如,這包括計(jì)算機(jī)、數(shù)據(jù)庫服務(wù)器、云存儲的消息。
為了加密靜態(tài)數(shù)據(jù),通常會使用對稱密碼密鑰,因?yàn)樗俣瓤?,需要的資源較少,而不像非對稱密鑰需要成對使用。
但是,數(shù)據(jù)加密和解密并不是密碼學(xué)密鑰的唯一用途。這些數(shù)字密鑰還有其他用途...
在安全開放的網(wǎng)絡(luò)上對客戶端、用戶和設(shè)備進(jìn)行身份驗(yàn)證
數(shù)字通信中的數(shù)字身份驗(yàn)證是數(shù)據(jù)安全的關(guān)鍵。它可以驗(yàn)證你的真實(shí)身份,因?yàn)橹档眯刨嚨臋?quán)威機(jī)構(gòu)已經(jīng)審查了你的數(shù)字身份。
但是,如果你想驗(yàn)證試圖訪問你保護(hù)的資源的用戶是否合法怎么辦呢?傳統(tǒng)上,這將涉及用戶輸入他們的用戶名和密碼。然而,登錄憑據(jù)很容易通過網(wǎng)絡(luò)釣魚和惡意軟件來破壞,這意味著這種方式已經(jīng)不再是知道某人是否真實(shí)的可行方式。
一個(gè)替代方法是使用數(shù)字證書通過公鑰密碼學(xué)來驗(yàn)證你的數(shù)字身份:
- 客戶端身份驗(yàn)證證書在訪問安全的Web應(yīng)用程序、虛擬私人網(wǎng)絡(luò)(VPN)或其他受保護(hù)的資源時(shí),驗(yàn)證你的身份。這可以是你安裝在計(jì)算機(jī)或移動設(shè)備上的證書。
- 設(shè)備證書(也被稱為PKI設(shè)備證書)使被覆蓋的自主設(shè)備能夠在你的網(wǎng)絡(luò)上進(jìn)行身份驗(yàn)證并安全地傳輸數(shù)據(jù)。例如,在醫(yī)療機(jī)構(gòu)、機(jī)場和制造廠等地,經(jīng)常使用這種類型的證書對物聯(lián)網(wǎng)設(shè)備進(jìn)行身份驗(yàn)證。
在每種情況下,與證書相關(guān)的密碼學(xué)密鑰證明了你的數(shù)字身份,因?yàn)橹挥心銘?yīng)該能夠訪問它。因此,一旦通過身份驗(yàn)證,你可以訪問你被授權(quán)查看和使用的資源。
在發(fā)布之前對代碼、軟件和更新進(jìn)行數(shù)字簽名
通過對軟件進(jìn)行數(shù)字簽名,你可以向客戶和軟件用戶證明你的產(chǎn)品不僅是真實(shí)的,而且自簽名以來沒有被篡改。這對于維護(hù)客戶系統(tǒng)的軟件開發(fā)人員、發(fā)布者和服務(wù)提供商來說非常重要。
你可以使用代碼簽名證書將數(shù)字簽名附加到你的代碼上。這涉及對代碼應(yīng)用加密哈希函數(shù),并使用你的私密加密密鑰對生成的哈希值進(jìn)行數(shù)字簽名。當(dāng)有人下載你的軟件時(shí),他們的瀏覽器或操作系統(tǒng)會檢查哈希值是否匹配。當(dāng)匹配時(shí),它將顯示你的經(jīng)過驗(yàn)證的組織信息。
下圖為兩個(gè)用戶訪問控制(UAC)屏幕的并排對比,顯示關(guān)于未知出版商(左側(cè))和經(jīng)過驗(yàn)證的出版商(右側(cè))的信息:
如果你決定進(jìn)一步提升你的身份的安全性,你可以使用擴(kuò)展驗(yàn)證代碼簽名證書。使用該數(shù)字證書對軟件進(jìn)行簽名可以確保Windows操作系統(tǒng)和Edge瀏覽器自動信任你的軟件。因此,它不會顯示類似于以下當(dāng)用戶嘗試在Windows計(jì)算機(jī)上安裝未簽名軟件時(shí)的警告:
寫在最后
安全地存儲加密密鑰不是一項(xiàng)選擇題。事實(shí)上,它是許多行業(yè)和地區(qū)法規(guī)的要求。除非你愿意因數(shù)據(jù)泄露而支付數(shù)千或數(shù)百萬美元的合規(guī)罰款、法律費(fèi)用和訴訟解決費(fèi)用,否則我們建議你引起足夠的重視。
從歷史上看,只有擴(kuò)展驗(yàn)證(EV)代碼簽名證書在硬件安全令牌上預(yù)裝?,F(xiàn)在,所有組織驗(yàn)證(OV)代碼簽名證書也將默認(rèn)通過安全令牌交付。
你還可以使用硬件安全模塊(HSM)來保護(hù)其他密碼學(xué)密鑰。這些本地設(shè)備和基于云的存儲機(jī)制為你的授權(quán)用戶提供了一種使用密碼學(xué)密鑰的方式,而不需要直接訪問。
關(guān)于加密密鑰相關(guān)仍有很多疑問,譬如往后退一步——到底什么是加密?或者再進(jìn)一步——加密密鑰里的對稱加密和非對稱加密的應(yīng)用差異有哪些?這些問題,我們將在后續(xù)的文章中進(jìn)行探討。
本文作者:_TrustAsia, 轉(zhuǎn)載請注明來自FreeBuf.COM