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