加密技術(shù)在安全連接背后的工作原理
譯文【51CTO.com快譯】在當今的數(shù)字世界中,無論何時何地,人們都在交換信息,并且每天都在呈指數(shù)級增長??缦到y(tǒng)交換數(shù)據(jù)的安全性至關(guān)重要,因為它們?nèi)菀资艿骄W(wǎng)絡攻擊。
隨著世界朝著數(shù)字化的方向發(fā)展,建立安全連接并了解其工作原理也變得更加重要。隨著IT技術(shù)的發(fā)展,出現(xiàn)了很多現(xiàn)代化的技術(shù)與產(chǎn)品,并改變了人們?nèi)粘5墓ぷ骱蜕畹姆绞?。人們從零售購物轉(zhuǎn)向網(wǎng)上購物、金融交易實現(xiàn)數(shù)字化,貨幣實現(xiàn)數(shù)字化,以及圖片共享和列表等等。
由于人們的大部分活動都是在線進行的,那么如何確保通過網(wǎng)絡傳輸?shù)臄?shù)據(jù)安全?本文將介紹幕后發(fā)生的事情及其工作原理。
信息交流
當人們交換信息時,通常使用像互聯(lián)網(wǎng),但由于其性質(zhì)是共享的,任何人都可能攔截并查看交換的信息。
在這種情況下,通信的雙方可以采用加密策略,采用加密格式發(fā)送消息,該格式可由收件人讀取。早期的系統(tǒng)是交換一個共享密鑰,發(fā)送方使用該密鑰進行加密,接收方將使用該密鑰進行解密。由于兩者使用相同的密鑰,因此稱為對稱密鑰。接收方使用密鑰進行解碼,只有在雙方采用同一密鑰時才可能進行解碼。但是如果中間人知道這個密鑰,就可以讀取和更改消息。
為了使用公共通道進行有效通信,人們可以利用使用兩個密鑰的公鑰密碼。一個是公共的,另一個是私有的。這種技術(shù)稱為非對稱加密或公鑰加密。
公鑰密碼
在公鑰密碼中使用兩個密鑰:一個稱為公鑰,另一個稱為私鑰。這兩個密鑰是相互關(guān)聯(lián)的,公鑰不能與其他私鑰一起使用,反之亦然,它們是綁定在一起的。這些密鑰用于散列函數(shù)以生成數(shù)據(jù)的散列值,并使用公鑰對其進行加密。消息的預期接收者使用相應的私鑰對其進行解密,并且只有關(guān)聯(lián)的私鑰才能對其進行解密。
如果中間人竊取了密鑰,他就會發(fā)送公鑰來加密,并使用私鑰來解密以改變原始消息,然后將使用預期接收者的公鑰進行加密。這樣,原來的發(fā)送方和接收方就不會知道有中間人的更改,他們會認為發(fā)送和接收的內(nèi)容是準確的。
由于公鑰和私鑰很容易落入中間人的手中,因此應該有一種對服務器進行身份驗證的方法,服務器通過出示其身份證書來驗證其身份。服務器從受信任的第三方系統(tǒng)獲取其身份證書,而第三方通常是證書頒發(fā)機構(gòu)(CA)。CA就像政府辦公室或受信任的代理,遵守公共密鑰基礎(PKI)標準和頒發(fā)證書的準則,而作為CA的實體都會遵循。
在驗證預期用戶的真實性之后,CA頒發(fā)證書并使用其私鑰簽署證書。該簽名稱為證書的數(shù)字簽名。正在使用的證書種類繁多,并且每種證書都有其各自的用途。例如在當今客戶端和服務器之間的Web交換世界中,使用X509證書,它遵循ASN.1(抽象語法表示法一)標準。
這個證書通常作為二進制數(shù)據(jù)存儲在文件系統(tǒng)中,這些數(shù)據(jù)通常被轉(zhuǎn)換為稱為PEM(隱私增強電子郵件)的Base64 ASCII文件,這些文件具有.pem、.crt、.cer等擴展名。
例如X509v3證書內(nèi)容如下:
Properties files
- Data:
- Version: 3 (0x2)
- Serial Number
- Signature Algorithm
- Issuer
- Validity
- Not Before
- Not After
- Subject
- Subject Public Key Info
- Public Key Algorithm
- Public-Key
- X509v3 extensions
- Signature Algorithm
- Signature Value
簽名值
例如某個醫(yī)生的辦公室通過其網(wǎng)站允許患者在線注冊他們的詳細信息并安排預約。服務器就會起CA的作用,并證明其身份,并獲得以他的域名(醫(yī)生辦公室)為主題的證書。CA驗證醫(yī)生的辦公室身份并向服務器頒發(fā)X509證書。參閱下面使用OpenSSL命令生成的x509證書內(nèi)容示例。
使用SSL/TLS的安全連接
兩方之間的安全連接是使用SSL/TLS協(xié)議標準建立的。而SSL之前使用過,但由于安全漏洞而被棄用,現(xiàn)在主要使用TLS。SSL/TLS層位于TCP/IP之上,在應用層之前。所以駐留在應用層的應用會自動被安全協(xié)議覆蓋。
考慮一下醫(yī)生辦公室網(wǎng)上預約的例子,在部署應用程序之前,服務器對CA采取了幾個步驟。
- 承載醫(yī)生辦公室網(wǎng)頁的Web服務器向CA請求證書。
- CA驗證醫(yī)生辦公室的申請并頒發(fā)證書;它還使用其私鑰(數(shù)字簽名)對其進行簽名。
- CA頒發(fā)的證書稱為實體證書,它包含用于驗證服務器的公鑰。
- 服務器有相應的私鑰,它駐留在服務器端,即部署醫(yī)生辦公室應用的服務器端。
- 如前所述,證書的所有者或主題與醫(yī)生辦公室的域相匹配。例如,www.doctoroffice.com。
SSL握手
- 患者從瀏覽器進入醫(yī)生辦公室網(wǎng)頁。其請求通過不安全的通道到達服務器;瀏覽器發(fā)送其使用的SSL版本、密碼設置以及服務器建立安全SSL通道所需的任何其他信息。
- 服務器依次以其SSL版本、密碼設置進行響應,并發(fā)送從CA接收的證書(也稱之為葉證書或?qū)嶓w證書)。
- 客戶端使用其信任庫驗證從服務器收到的葉證書。瀏覽器和計算機都帶有嵌入信任存儲區(qū)的大多數(shù)第三方CA的中間證書和根證書。
- 瀏覽器在其信任庫中搜索已簽署葉證書的相應中間證書。然后使用中間證書的發(fā)行者公鑰來驗證數(shù)字簽名(因為公鑰和私鑰是配對的);如果它可以驗證數(shù)字簽名,則驗證會進入中間體,直到它到達自簽名根證書并最終結(jié)束。這種驗證稱為認證路徑驗證或認證鏈。
- 一個證書可以有一個或多個中間證書,并且必須對鏈進行驗證。
- 一旦服務器證書通過身份驗證,客戶端將根據(jù)需要將其證書發(fā)送到服務器。在某些情況下,客戶端請求資源并通過提供其證書來證明其身份。而在使用瀏覽器的情況下,并沒有使用證書的客戶端身份驗證(應用程序使用其他形式的身份驗證,如用戶名/密碼)。
- 如果客戶端無法驗證來自客戶端信任庫的服務器證書,它將終止連接,并且瀏覽器將顯示警告消息。
- 此外,瀏覽器會根據(jù)域中的主題名稱檢查用戶輸入的域名,將顯示錯誤消息,并停止進一步連接。
- 在驗證成功之后,客戶端使用約定的密碼為該會話生成一個預主密鑰,并使用服務器的公鑰對其進行加密,該公鑰是葉證書的一部分。
- 服務器使用服務器的私鑰解密預主密鑰,然后生成主密鑰。然后客戶端和服務器都使用主密鑰生成會話密鑰,對稱密鑰用于加密和解密該會話的消息。
證書鏈看起來是什么樣的?
使用OpenSSL驗證證書鏈:
僅使用中間人驗證證書。
下面給出了由不同中間人簽署的證書的驗證。
中間人證書和根證書作為OpenSSL的一個文件。
通過正確的中間人證書和根證書鏈的驗證。
在找到正確的中間人證書和根證書后,OpenSSL能夠驗證葉證書。
結(jié)論
了解密碼技術(shù)將使人們對每天訪問的網(wǎng)站充滿信心,并且可以更深入地了解瀏覽器在與其他方握手期間出現(xiàn)任何異常情況下嘗試與他人通信的內(nèi)容。關(guān)于證書認證的力量將使人們能夠在網(wǎng)上安全地做更多的事情。
原文標題:Cryptography and Secure Connection: How It Works,作者:Joseph Stephen Savariraj
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】