解密是增強安全性和監控的關鍵
在討論如何針對加密流量進行安全分析或性能監控時,我們經常會被問到以下問題:“解密是如何工作的?”“為什么我們能夠攔截加密通信并解密它?”“如果我能簡單地監聽網絡上的通信并解密,這難道不是違背了加密的目的嗎?”。
以下內容解釋了傳輸層安全(TLS)加密是如何工作的,nDA如何能夠解密網絡流量,以及為什么即使在網絡上內聯了解密設備,TLS仍然是安全的。
加密基礎知識
加密有兩大類:對稱加密和非對稱加密。對稱加密使用通信雙方都需要的一個密鑰,它的密鑰大小相對較小,速度較快,資源利用率較低。非對稱加密需要兩個單獨的密鑰—一個是任何人都可以使用的公鑰,另一個是私鑰,它保留在創建公鑰/私鑰對的個人或系統中。對于非對稱加密,密鑰的大小要大得多,同時它也慢得多,需要更多的資源。
對稱加密由于速度快,通常用于大的數據加密,算法包括DES (Data Encryption Standard)和AES (Advanced Encryption Standard)。另一方面,非對稱加密用于RSA等應用程序的安全消息傳輸,因為使用非對稱加密可以使用多個密鑰(例如,A的公鑰和B的私鑰)對同一個事務進行加密。
對稱加密的主要問題是雙方需要有相同的密鑰。如何在不可信的媒體(如互聯網)上交換需要保持私有的密鑰?您要么需要提前私下交換密鑰,要么使用其他機制來交換密鑰。非對稱加密的主要問題是速度和資源利用率。非對稱加密是安全的,因為它具有私鑰/公鑰的特性,但對于加密大量數據可能無法使用。因此,一個主要的用例是將兩者一起使用,創建一個非對稱會話來交換對稱密鑰,然后使用對稱密鑰來傳輸需要安全交換的大量數據。這就是TLS的工作原理。
TLS加密
以下是TLS如何工作的高層視圖,我們重點關注TLS 1.2和TLS 1.3,這兩個版本都依賴于一個證書頒發機構(CA)。CA是一個實體,它驗證服務器的所有者并驗證服務器的身份。這個過程從服務器的所有者將其信息連同服務器的公鑰和身份一起發送給CA開始。一旦CA對服務器進行了身份驗證,它就用它的私鑰對該信息進行簽名,并將該信息(稱為證書)返回給服務器。然后,服務器在所有TLS通信中使用此證書。
這個過程的第一件事是服務器需要一個由受信任的CA(您的瀏覽器信任許多開箱即用的CA)簽名的服務器證書。為此,服務器生成一個公鑰/私鑰對,生成一個證書簽名請求(CSR),用私鑰進行簽名,并將其發送給CA。CA使用這些細節構建服務器證書,并返回一個用私鑰簽名的服務器證書。
當客戶端向服務器發送請求時,服務器將使用其簽名的證書和公鑰進行響應??蛻舳送ㄟ^使用CA的公鑰解密該證書來驗證該證書,這使得客戶端知道服務器就是它所要通信的系統。然后,客戶端使用服務器上的這個公鑰發送一條消息,與該服務器建立一個會話密鑰——只有該服務器可以用它的私鑰解密這個密鑰——然后使用該會話密鑰繼續通信。
TLS 1.2 會話
讓我們看看TLS 1.2連接的初始狀態??蛻舳藫碛?/span>CA證書和CA公鑰??蛻舳送ǔ泻芏噙@樣的證書,但重要的是它有簽署服務器證書的CA的CA證書和公鑰(CA也有自己的證書、公鑰和私鑰)。服務器擁有由CA簽名的服務器證書以及它自己的公鑰和私鑰。
為了完成TLS 1.2握手,最終目標是交換一個客戶端和服務器都知道的對稱密鑰。首先,客戶端發送一個Hello消息,其中包括它支持的密碼套件列表。服務器用Hello消息響應,選擇一個密碼套件,并包括它的服務器證書和它的公鑰??蛻舳送ㄟ^使用CA公鑰解密該服務器證書來驗證該證書。假設這是可行的,然后客戶端生成一個預主密鑰(premaster secret),使用服務器公鑰對其加密,并將其發送給服務器。它還從剛剛發送到服務器的premaster密鑰生成會話密鑰。服務器用它的私鑰解密此消息(它是唯一擁有此密鑰的機器,因此也是唯一能夠解密此消息的機器),這將恢復premaster密鑰。然后,服務器使用這個premaster密鑰生成會話密鑰,并向客戶機發送加密的握手消息,客戶機應該能夠對該消息進行解密。此時,客戶端和服務器都擁有相同的會話密鑰(對稱密鑰),并將其用于會話期間的其余通信。
TLS 1.3 會話
TLS 1.3在很多方面對TLS 1.2進行了改進。TLS 1.2存在已知的安全問題,包括可能對該標準的某些實現進行的攻擊。TLS 1.2有37種不同的密碼套件可用。由于這樣或那樣的原因,其中許多已不再被認為是安全的。而TLS 1.3僅支持5個密碼套件。
另一個改進是連接的速度。TLS 1.2在傳輸數據之前總共需要兩個往返連接。這需要更多的時間來建立連接,而且明顯比建立TLS 1.3會話所需的1次或有時為0次的往返時間要慢。
TLS 1.3的往返時間為0?是的,這是可能的。如果之前建立了會話,則可以恢復TLS 1.3會話,這使會話建立速度更快。
TLS 1.3的最后一個改進是只使用臨時密鑰。這意味著,如果某個會話密鑰由于某種原因被泄露,那么它只會對客戶端和服務器之間的一小部分流量有影響,而不會泄露整個會話。
TLS 解密
在上面我們介紹了一些加密的基礎知識,討論了TLS 1.2,并概述了TLS 1.3提供的改進。接下來,我們將更進一步研究對TLS 1.2和1.3版本的TLS解密。
要解密TLS會話,有幾個要求。其中一個選項是在客戶端或服務器上,客戶端和服務器必須能夠在某個時刻解密會話以使用該信息。對于某些場景,這可能就是所需要的全部內容,但不幸的是,這并不能很好地擴展。
另一種選項是擁有一個服務器私鑰的副本,并使用它偵聽通過網絡的通信。這在某些場景中可以工作,并允許將所有解密的通信流量發送到安全或監控工具以進行分析。這個解決方案存在兩個問題:首先,它只有在您控制服務器的情況下才能工作,它將永遠不會對內部客戶端到互聯網的通信解密。第二,它將不能用于TLS 1.3,即使您有服務器的秘密密鑰。TLS 1.3使用臨時密鑰,因此您不能通過被動地偵聽解密它。
為了解密來自多個客戶端到多個服務器的會話,需要一個中間人(person-in-the-middle),以便在客戶端和服務器之間修改通信。在這種情況下,TLS 1.2會話的初始狀態略有不同。NETSCOUT nGenius加解密設備(nGenius Encryption Appliance,簡稱nDA)需要能夠看到客戶端和服務器之間的所有通信??蛻舳诵枰粋€證書頒發機構(CA)證書和公鑰,但是現在這個證書需要由nDA生成。服務器初始狀態保持不變。nDA擁有自己的自創建CA證書和公鑰和私鑰,CA的證書和公鑰,以及自己的服務器公鑰和私鑰。
TLS 1.2 解密
那么,解密TLS 1.2會話的過程是什么呢?這個TLS會話的開始是相同的:客戶端發送一個Hello消息,其中包括它支持的密碼套件的列表。服務器用Hello消息響應,選擇一個密碼套件,并包括它的服務器證書和它的公鑰。此消息被nDA截獲。nDA使用自己的CA私鑰替換服務器公鑰并重新簽署。這是客戶端信任的密鑰,因此它將執行與之前相同的步驟:客戶端通過使用CA公鑰解密來驗證此服務器證書。然后生成一個premaster密鑰,使用服務器公鑰對其進行加密,并將其發送到服務器。此消息也被nDA截獲。它使用自己的私鑰對該消息進行解密,恢復premaster密鑰,然后能夠從premaster密鑰生成會話密鑰。
nDA接下來又做兩件事:首先,它處理服務器Hello消息,驗證服務器,加密premaster密鑰,就像客戶端所做的那樣,然后將其發送給服務器。它還用一條加密的握手消息響應客戶機,這將建立TLS會話1。服務器對接收到的消息進行解密,從premaster密鑰生成會話密鑰,并發送握手消息。nDA收到此消息并知道TLS會話2也處于活動狀態?,F在客戶機、nDA和服務器都有相同的會話密鑰,而且nDA將能夠解密客戶機和服務器之間的所有消息。
TLS 1.3解密的總體過程與此類似,但總體步驟更少,因為上面的幾個步驟是結合在一起的。nDA同時充當客戶端和服務器,適當地修改密鑰,使nDA最終得到兩個TLS會話密鑰(每端一個)。
為什么TLS仍是安全的?
因此,在了解了TLS如何被解密后,您可能想知道是否應該關注您的TLS會話正在被解密,或者是否任何TLS會話可以被解密。以下是一些需要記住的要點和提示,以確定您的流量是否可以(或正在)解密。
客戶端和服務器總是可以解密會話。這必須在兩個端點都是可能的,否則,端點將無法處理兩個系統之間的信息。如果您對自己的通信流進行此操作感興趣,那么可以直接在本地系統上捕獲會話密鑰,并將這些密鑰加載到可以解密數據包的程序中。大多數瀏覽器支持將加密密鑰保存到計算機上的特定文件夾中,可以將這些密鑰加載到一個程序中,以解密捕獲的網絡通信。
您可以通過單擊瀏覽器中的鎖圖標來驗證HTTPS會話中的連接,找到服務器發送給您的證書并檢查它。以NETSCOUT為例,它是這樣的:
NETSCOUT的證書信息
一個自簽名的證書看起來像下面這樣:
自簽名的證書
此外,當使用nDA來解密通信時,最終用戶仍然可以看到正在發生的情況??纯聪旅娴淖C書:
由解密設備頒發的證書
如您所見,www.google.com是由nDA Demo簽名的。這使得最終用戶看到即使證書是有效的,它也不是由谷歌頒發的。
任何擁有服務器私鑰的人都可以解密該消息。這對于被動監控自己的服務器非常有用。您可以將私鑰復制到被動監控工具的系統中,并將TLS解密。該方法支持到TLS1.2,但TLS 1.3無法通過此方法解密。這樣做的原因是Diffie-Hellman密鑰交換,它確保只有客戶端和服務器可以解密消息。
如何正確處理解密流量?
如果您已經對一些流量進行了解密,那么在處理它時需要注意哪些事項呢?正確地處理這些通信是極其重要的,因為您加密它一定是基于某種原因的。
處理解密通信的最佳方法是將其直接發送到將要分析通信的設備。這可以通過NETSCOUT的PFS數據包流交換機來完成。這樣做的好處是可以將多個副本發送到不同的設備。一次解密,多種工具可以同時進行分析。
注:不要通過未加密的IP網絡發送流量。
如果您計劃存儲流量,則可能會遇到遵從性問題。如果一個設備要存儲流量,那么最好使用可以掩碼信用卡和身份證件號碼信息的工具。
結論
nDA允許以多種方式解密TLS會話,并且當與PFS數據包流交換機結合使用時,允許多個設備同時分析解密的流量。這是一種很好的方法,可以安全地分析網絡上的流量,以實現安全和應用性能監控。
要了解更多信息,請關注武漢恒景科技有限公司微信公眾號,或留言聯系我們。
郵箱 y.k@whpermanent.com
電話 027-87569272
地址 湖北省武漢市洪山區文化大道555號融創智谷A10-5
關注恒景

獲取最新案例及解決方案
Copyright 2021 武漢恒景 All Rights Reserved. 鄂ICP備09021583號-1