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