李英杰
(湖南環(huán)境生物職業(yè)技術(shù)學(xué)院,湖南 衡陽(yáng) 421005)
網(wǎng)絡(luò)安全協(xié)議對(duì)于普通人來(lái)說(shuō)是一個(gè)較為陌生的詞,但對(duì)于所有互聯(lián)網(wǎng)用戶來(lái)說(shuō),它則是保證網(wǎng)絡(luò)及計(jì)算機(jī)安全的基本技術(shù)。隨著近些年網(wǎng)絡(luò)安全事件的頻發(fā),不管是普通的計(jì)算機(jī)還是人們?nèi)粘J褂玫氖謾C(jī)等各種移動(dòng)互聯(lián)網(wǎng)設(shè)備都面臨各種安全風(fēng)險(xiǎn)。因此要確保通信和交易的安全,就需要一系列安全的網(wǎng)絡(luò)協(xié)議來(lái)對(duì)其進(jìn)行監(jiān)控和規(guī)范。根據(jù)不同的功能和作用可以對(duì)網(wǎng)絡(luò)安全協(xié)議的類型進(jìn)行劃分,該文將選取部分進(jìn)行說(shuō)明。
網(wǎng)絡(luò)安全協(xié)議是指多個(gè)用戶在通過(guò)互聯(lián)網(wǎng)進(jìn)行信息交換時(shí),用于保護(hù)用戶信息安全的加密和解密技術(shù)。網(wǎng)絡(luò)安全協(xié)議是基于密碼學(xué)誕生的一種通信技術(shù),它可以保證其他用戶在沒(méi)有經(jīng)過(guò)授權(quán)的情況下無(wú)法讀取相應(yīng)的信息,從而實(shí)現(xiàn)保護(hù)用戶信息安全的功能[1]。隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,為了應(yīng)對(duì)更為復(fù)雜的網(wǎng)絡(luò)環(huán)境,相應(yīng)的網(wǎng)絡(luò)安全協(xié)議也在不斷迭代更新,而舊的安全協(xié)議也存在一定的風(fēng)險(xiǎn),因此各大組織不斷開(kāi)發(fā)新的網(wǎng)絡(luò)安全協(xié)議,以保證互聯(lián)網(wǎng)活動(dòng)的正常進(jìn)行。
TCP/IP協(xié)議也被稱作網(wǎng)絡(luò)通信協(xié)議,它是計(jì)算機(jī)網(wǎng)絡(luò)中最為基本的一種通信協(xié)議。TCP/IP協(xié)議對(duì)互聯(lián)網(wǎng)中的通信標(biāo)準(zhǔn)和方法進(jìn)行了統(tǒng)一規(guī)定,并且是保證網(wǎng)絡(luò)中信息數(shù)據(jù)能夠及時(shí)、完整傳輸?shù)闹匾獏f(xié)議。嚴(yán)格意義上講,TCP/IP協(xié)議是一個(gè)綜合性的協(xié)議,它是不僅包括TCP協(xié)議和IP協(xié)議,而且還涵蓋了FTP、SMTP、UDP以及TCP等多種協(xié)議的綜合性互聯(lián)網(wǎng)協(xié)議。由于計(jì)算機(jī)需要按相應(yīng)的規(guī)則對(duì)傳輸層的數(shù)據(jù)進(jìn)行處理并傳送到傳輸層,然后再由互聯(lián)網(wǎng)完成數(shù)據(jù)的分享,因此在該過(guò)程中需要不斷地對(duì)其加密或者解密,以確保分享數(shù)據(jù)的安全性。
TCP/IP協(xié)議至今發(fā)展成被世界所認(rèn)可的通用協(xié)議主要有以下4個(gè)特點(diǎn):1)該協(xié)議群是開(kāi)放的,所有網(wǎng)絡(luò)用戶均可免費(fèi)使用。2)獨(dú)立性。該協(xié)議群可以獨(dú)立于網(wǎng)絡(luò)硬件實(shí)現(xiàn)互聯(lián)網(wǎng)的統(tǒng)一標(biāo)準(zhǔn)。3)唯一性。只要加入了該協(xié)議的網(wǎng)絡(luò)設(shè)備都會(huì)獲得專屬于自身的地址,是互聯(lián)網(wǎng)實(shí)現(xiàn)網(wǎng)狀聯(lián)通的必要條件。4)拓展性。由于該協(xié)議對(duì)其他協(xié)議有極強(qiáng)的兼容性,因此基于該協(xié)議,更多的網(wǎng)絡(luò)服務(wù)可以被接入,從而引爆了當(dāng)今互聯(lián)網(wǎng)的蓬勃發(fā)展。
然而,由于TCP/IP協(xié)議握手轉(zhuǎn)發(fā)信息的過(guò)程中存在漏洞,部分網(wǎng)絡(luò)黑客會(huì)利用TCP-SYNFlood對(duì)服務(wù)器或個(gè)人電腦進(jìn)行攻擊,從而導(dǎo)致計(jì)算機(jī)設(shè)備出現(xiàn)網(wǎng)絡(luò)擁堵甚至系統(tǒng)過(guò)載的現(xiàn)象[2]。由于該攻擊工具在互聯(lián)網(wǎng)上廣泛傳播,因此需要網(wǎng)絡(luò)運(yùn)維人員引起高度重視,首先是定期地對(duì)系統(tǒng)進(jìn)行維護(hù),確保服務(wù)器和電腦沒(méi)有明顯的漏洞;其次,要安裝相應(yīng)的防護(hù)軟件對(duì)相關(guān)的攻擊進(jìn)行過(guò)濾處理;最后,還要定時(shí)查看安全日志,確保系統(tǒng)沒(méi)有產(chǎn)生異常。
Kerberos認(rèn)證協(xié)議是由麻省理工學(xué)院開(kāi)發(fā)的一套網(wǎng)絡(luò)身份認(rèn)證協(xié)議,它是基于密鑰系統(tǒng)為計(jì)算機(jī)設(shè)備提供全面強(qiáng)大的認(rèn)證服務(wù)。在Kerberos認(rèn)證協(xié)議下,用戶不需要通過(guò)主機(jī)系統(tǒng)進(jìn)行身份驗(yàn)證,也不需要確定網(wǎng)絡(luò)上主機(jī)的物理安全,它是假定在網(wǎng)絡(luò)信息傳輸過(guò)程中可以被任意讀寫(xiě)和修改,從而誕生的一種認(rèn)證技術(shù)。Kerberos使用的是傳統(tǒng)的共享密鑰方式,其運(yùn)行方式為單點(diǎn)登錄,適用于通信者和服務(wù)器之間的信息交互,并且只需要完成一次完整的認(rèn)證即可確保通信的安全。Kerberos的驗(yàn)證憑據(jù)是一種叫做keytab的特殊類格式文件,其包含了所有認(rèn)證過(guò)程所需要用到的憑證。在Kerberos中,還有一個(gè)概念值得注意,即“領(lǐng)域”,領(lǐng)域是指Kerberos協(xié)議所鏈接的所有服務(wù)集、主機(jī)和用戶。
Kerberos采用服務(wù)器對(duì)比的認(rèn)證方式,其服務(wù)器又被稱作密鑰分發(fā)中心(KDC)。Kerberos共有兩層服務(wù)器,第一層是認(rèn)證服務(wù)器(AS),用于驗(yàn)證用戶端的身份信息,一旦通過(guò)驗(yàn)證將會(huì)自動(dòng)給用戶提供一種被稱作票證授予票證(TGT)的特殊憑證。第二層是票據(jù)授權(quán)服務(wù)器(TGS),用戶獲得TGT后,可以將TGT提交給TGS進(jìn)行二次驗(yàn)證,當(dāng)驗(yàn)證被通過(guò)時(shí)會(huì)對(duì)用戶的權(quán)限進(jìn)行提升,給予用戶訪問(wèn)服務(wù)器資源的票證(ST,部分資料稱TGS Ticket)。其大致工作流程如下:當(dāng)位于用戶端的用戶向AS發(fā)起認(rèn)證請(qǐng)求時(shí),AS通過(guò)對(duì)數(shù)據(jù)庫(kù)進(jìn)行對(duì)比向用戶返回一個(gè)基于Kerberos加密的TGT密碼,密碼不被第三方知道。用戶獲得TGT密碼后,再向TGS發(fā)起訪問(wèn)請(qǐng)求,從而開(kāi)始對(duì)服務(wù)器進(jìn)行訪問(wèn)。整個(gè)過(guò)程中,TGT只被AS及用戶所知道,由于非對(duì)稱算法的特性,因此很難被破解,從而達(dá)到保障安全的效果。
3.2.1 初始驗(yàn)證:獲取票證授予票證(TGT)
Kerberos的TGT獲取流程如圖1所示。首先,在用戶端進(jìn)行登錄,并向密鑰分發(fā)中心的第一層服務(wù)器AS發(fā)出認(rèn)證請(qǐng)求,該過(guò)程通常情況下是自動(dòng)完成的,當(dāng)認(rèn)證請(qǐng)求被通過(guò)時(shí),AS向用戶發(fā)送加密后的TGT。TGT的基本作用相當(dāng)于現(xiàn)實(shí)世界中的簽證,TGT的簽證作用是對(duì)遠(yuǎn)程網(wǎng)絡(luò)連接或服務(wù)器資源進(jìn)行訪問(wèn)。TGT除了能夠擁有更高的權(quán)限之外,也具有時(shí)間限制,因此直到TGT失效,在TGT的有效使用期間可以隨意使用TGT,并非一次性使用即失效。相對(duì)來(lái)說(shuō),TGT也像是一把被上鎖的鑰匙,用戶獲取TGT后,必須要對(duì)其進(jìn)行再次解密,當(dāng)然該過(guò)程是默認(rèn)自動(dòng)的,無(wú)須用戶另外申請(qǐng)。綜上所述,Kerberos初次驗(yàn)證可歸納為以下2個(gè)特點(diǎn):1)TGT是在密鑰分發(fā)中心生成并以特定的加密方式將其發(fā)送回用戶端。用戶端使用特定的口令來(lái)解密TGT。2)當(dāng)客戶端獲得TGT時(shí),TGT具有時(shí)間限制,其有效期通常為1 d。如果超過(guò)使用時(shí)限,用戶必須重新獲取TGT。

圖1 Kerberos的TGT獲取流程
3.2.2 二次驗(yàn)證:獲取訪問(wèn)服務(wù)器資源的票證(ST)
Kerberos二次認(rèn)證流程如圖2所示。當(dāng)用戶完成初始驗(yàn)證后,必須要對(duì)TGT進(jìn)行二次驗(yàn)證,其大致流程環(huán)節(jié)與初始驗(yàn)證環(huán)節(jié)類似,不同點(diǎn)在于二次驗(yàn)證獲取的票據(jù)即可作為資源訪問(wèn)的授權(quán)物,從而獲得更高的權(quán)限,例如實(shí)現(xiàn)計(jì)算機(jī)的遠(yuǎn)程登錄。其流程大致如下:用戶端向密鑰分發(fā)中心發(fā)出TGT并請(qǐng)求認(rèn)證,TGS對(duì)其解密后自動(dòng)確認(rèn)并返回ST,用戶使用ST進(jìn)行相關(guān)操作,例如遠(yuǎn)程登錄、文件管理等。

圖2 Kerberos二次認(rèn)證流程
假定某用戶Beta要訪問(wèn)已通過(guò)要求的 krb5 驗(yàn)證共享的 NFS 文件系統(tǒng)。Beta已經(jīng)通過(guò)了初始驗(yàn)證,獲得了TGT,因此當(dāng)他訪問(wèn)NFS系統(tǒng)下的文件時(shí),NFS客戶機(jī)系統(tǒng)將自動(dòng)地從秘鑰分發(fā)中心獲取相關(guān)權(quán)限的NFS票據(jù),從而實(shí)現(xiàn)授權(quán)。如果用戶Alpha想要在服務(wù)器tank上使用rlogin命令,Alpha已事先獲取了相應(yīng)的TGT,因此當(dāng)Alpha對(duì)tank進(jìn)行遠(yuǎn)程訪問(wèn)時(shí),會(huì)自動(dòng)從TGS獲取ST,并且可以一直保留使用權(quán)限,直到TGT失效。但如果Alpha想登陸另一個(gè)服務(wù)器sank,則需要重新進(jìn)行初始認(rèn)證,獲取擁有sank登錄權(quán)限的TGT。
3.2.3 Kerberos 具體應(yīng)用
Hadoop作為一個(gè)強(qiáng)大的分布式集群系統(tǒng),必須要依賴安全和準(zhǔn)確的訪問(wèn)措施。集群中的每一個(gè)客戶端都需要對(duì)自己的身份進(jìn)行明確,使其他計(jì)算機(jī)能夠更為準(zhǔn)確地進(jìn)行識(shí)別,再進(jìn)行分享。由于集群系統(tǒng)資源的共享性,主機(jī)和服務(wù)之間需要更為安全的身份認(rèn)證措施,以防止惡意程序入侵,從而對(duì)系統(tǒng)造成破壞。因此Hadloop借助了Kerberos來(lái)實(shí)現(xiàn)加密操作,確保集群系統(tǒng)中各部分身份識(shí)別的安全性,并且能夠更為有效地實(shí)現(xiàn)對(duì)文件資源的管理,提高集群的協(xié)作能力。Kerberos大多時(shí)候被用于不安全網(wǎng)絡(luò)環(huán)境下的通信,用獨(dú)特的加密方式實(shí)現(xiàn)了用戶和服務(wù)器之間的認(rèn)證交互,提高了系統(tǒng)的安全性。
SSL(Secure Socket Layer)協(xié)議即安全套接字協(xié)議,它是為保證網(wǎng)絡(luò)通信安全及數(shù)據(jù)完整的一種加密協(xié)議[3]。SSL協(xié)議通常在4個(gè)層面保障用戶進(jìn)行信息傳輸?shù)陌踩SL握手協(xié)議由網(wǎng)絡(luò)對(duì)協(xié)議用戶的身份進(jìn)行確認(rèn),確認(rèn)符合身份后則繼續(xù)使用SSL加密規(guī)程協(xié)議,對(duì)相關(guān)的數(shù)據(jù)進(jìn)行加密并交換密鑰。如果在該過(guò)程中,數(shù)據(jù)出現(xiàn)泄漏或破壞,則啟動(dòng)SSL報(bào)警協(xié)議,分別向協(xié)議用戶進(jìn)行報(bào)警,如果報(bào)警內(nèi)容為1,則為一般性數(shù)據(jù)錯(cuò)誤,報(bào)警內(nèi)容為2,則是致命性錯(cuò)誤,可以便于終端對(duì)數(shù)據(jù)進(jìn)行準(zhǔn)確判斷。另外,最后一層為優(yōu)先級(jí)最高的SSL記錄協(xié)議,它將對(duì)整個(gè)通信過(guò)程進(jìn)行記錄,對(duì)數(shù)據(jù)進(jìn)行封裝和壓縮等操作。
中間人攻擊(MITM攻擊)是基于SSL協(xié)議的典型網(wǎng)絡(luò)攻擊形式,它并非是一臺(tái)計(jì)算機(jī)直接對(duì)另一臺(tái)計(jì)算機(jī)進(jìn)行攻擊,而是通過(guò)入侵手段對(duì)其他計(jì)算機(jī)進(jìn)行非法操控,將另一臺(tái)計(jì)算機(jī)當(dāng)做中間人來(lái)對(duì)自己進(jìn)行偽裝,然后對(duì)真正會(huì)話中的計(jì)算機(jī)建立活動(dòng)連接,并對(duì)其傳輸?shù)臄?shù)據(jù)進(jìn)行讀取甚至串改。該方式具有極強(qiáng)的隱蔽性,另一端真正的計(jì)算機(jī)無(wú)法辨別通信對(duì)象的合法性,因此該方法被大多數(shù)網(wǎng)絡(luò)黑客用于非法牟利,例如對(duì)網(wǎng)銀和各類網(wǎng)上交易進(jìn)行破壞性操作,實(shí)現(xiàn)非法獲利。常見(jiàn)的MITM攻擊有ARP欺騙、DNS污染等手段,ARP欺騙是通過(guò)欺騙局域網(wǎng)內(nèi)訪問(wèn)者PC的網(wǎng)關(guān)MAC地址,使訪問(wèn)者PC錯(cuò)以為攻擊者更改后的MAC地址是網(wǎng)關(guān)的MAC,導(dǎo)致網(wǎng)絡(luò)不通,從而造成特定計(jì)算機(jī)無(wú)法上網(wǎng)的情況;而DNS污染是指不法分子對(duì)計(jì)算機(jī)的DNS識(shí)別進(jìn)行破壞,從而將計(jì)算機(jī)用戶導(dǎo)向錯(cuò)誤的IP地址,進(jìn)而實(shí)現(xiàn)詐騙等操作。
一種典型的ARP欺騙是假定在某一個(gè)局域網(wǎng)內(nèi),只有A、B和C 3臺(tái)主機(jī),且A是攻擊者。A對(duì)局域網(wǎng)上的MAC地址進(jìn)行監(jiān)聽(tīng),一旦B、C 2臺(tái)主機(jī)存在大量的ARP請(qǐng)求,就可以對(duì)其進(jìn)行欺騙。A準(zhǔn)確掌握了2臺(tái)主機(jī)的IP和MAC地址,就可以向C發(fā)送一個(gè)欺騙性的ARP回復(fù),并將IP偽裝為B,而A自身的MAC地址不變。主機(jī)C收到ARP回復(fù)后,更新它的ARP表,把主機(jī)B的MAC地址(IP_B,MAC_B)改為(IP_B,MAC_A),當(dāng)主機(jī)C發(fā)送數(shù)據(jù)包給主機(jī)B時(shí),交換機(jī)會(huì)將其數(shù)據(jù)包轉(zhuǎn)發(fā)給主機(jī)A。在該過(guò)程中,A可以實(shí)現(xiàn)對(duì)其他主機(jī)的監(jiān)聽(tīng),甚至篡改數(shù)據(jù)包以達(dá)到對(duì)B的欺騙效果,從而對(duì)B造成破壞。
SSL會(huì)話通信實(shí)際上是用戶使用客戶端與服務(wù)器之間的通信。不同的用戶有不同的權(quán)限。為了實(shí)現(xiàn)對(duì)用戶的鑒別,在服務(wù)器的數(shù)據(jù)庫(kù)中必然有一個(gè)與用戶共享的秘密作為通信會(huì)話時(shí)的認(rèn)證信號(hào),例如用戶用于登陸服務(wù)器的帳戶U_acout 和密碼password。用戶的帳戶U_accout和密碼password往往是通過(guò)其他方式在使用協(xié)議進(jìn)行通信前就已經(jīng)約定好的,例如電子銀行上用戶的帳號(hào)和密碼是在實(shí)際銀行進(jìn)行注冊(cè)時(shí)申請(qǐng)的,在實(shí)際銀行申請(qǐng)后,就可以在電子銀行上進(jìn)行使用。該賬號(hào)及其對(duì)應(yīng)的密碼都是服務(wù)器和用戶已知的共享秘密,而且不需要通過(guò)SSL協(xié)議本身進(jìn)行協(xié)商。因此,該方案利用這個(gè)共享秘密來(lái)增強(qiáng)SSL協(xié)議的服務(wù)器認(rèn)證機(jī)制。
下面詳細(xì)分析握手過(guò)程。
當(dāng)客戶端發(fā)送Client-hello消息時(shí),消息內(nèi)容增加用戶的帳號(hào)密碼信息的mac_U值。
mac_U=MAC(U_accout,password)
服務(wù)器根據(jù)mac_v值在數(shù)據(jù)庫(kù)中找到對(duì)應(yīng)的帳戶U_acout和密碼password,計(jì)算mac_Cert=MAC(U_accout,password,Cert__s)。
在服務(wù)器的Certificate 消息中增加對(duì)服務(wù)器數(shù)字證書(shū)的校驗(yàn)mac_Cert。當(dāng)客戶端收到Certificate 消息后,使用mac_Cert對(duì)消息中封裝的服務(wù)器數(shù)字證書(shū)Certr進(jìn)行檢查,驗(yàn)證接收到的數(shù)字證書(shū) Certr是否被修改,是否來(lái)自合法的服務(wù)器。采用該方式中間人就無(wú)法偽裝成服務(wù)器。假設(shè)中間人已經(jīng)控制了整個(gè)數(shù)據(jù)流,能夠攔截所有的數(shù)據(jù)[4]。當(dāng)服務(wù)器發(fā)送Certificate消息時(shí),中間人為了達(dá)到成功解密獲取pre_master_key的目的,用自己的數(shù)字證書(shū)Cert_m替換掉服務(wù)器原有的數(shù)字證書(shū)Cert_s。
Cert_m Cert_sMAC(U_accout,password,Cert_s)
但是中間人沒(méi)有用戶U_accout和密碼password,無(wú)法篡改mac_Cert。因此客戶端將收到的Certificate 消息內(nèi)容。
Cert_m MAC(U_accout,password,Cert_s)客戶端通過(guò)驗(yàn)證接收到證書(shū)的mac_Cert’=MAC(U_accout,password,Cert_m)就會(huì)發(fā)現(xiàn)數(shù)字證書(shū)被篡改過(guò),將立即斷開(kāi)連接,從而防止中間人的攻擊,保障了自己與服務(wù)器之間的通信安全。
在該方案的改進(jìn)過(guò)程中,使用用戶帳戶和密碼增強(qiáng)了對(duì)服務(wù)器證書(shū)的認(rèn)證。中間人在會(huì)話過(guò)程中可以截獲randc、MAC(U_accout,password)、rand_s、cert_s和MAC(U_accoul,password,Cerls),但是不能得到用戶帳戶U_accout和密碼password,會(huì)導(dǎo)致不能重構(gòu)合法的mac_Cert,最終攻擊失敗。該方案簡(jiǎn)單有效地阻止了中間人的攻擊[5]。
隨著計(jì)算機(jī)通信技術(shù)的不斷發(fā)展,越來(lái)越多的安全協(xié)議將會(huì)出現(xiàn)在人們的生活中。由于現(xiàn)代技術(shù)的制約,部分協(xié)議需要在當(dāng)前的基礎(chǔ)上進(jìn)行革新,從而適用現(xiàn)代網(wǎng)絡(luò)環(huán)境,而對(duì)于廣大用戶來(lái)說(shuō),也要積極學(xué)習(xí)相關(guān)網(wǎng)絡(luò)安全知識(shí),對(duì)相應(yīng)的網(wǎng)絡(luò)安全協(xié)議進(jìn)行了解。尤其是當(dāng)前數(shù)字貨幣和電商蓬勃發(fā)展的環(huán)境下,人們的財(cái)產(chǎn)大多與網(wǎng)絡(luò)有著緊密的聯(lián)系,為了營(yíng)造更好的網(wǎng)絡(luò)交易環(huán)境,就必須對(duì)相關(guān)的網(wǎng)絡(luò)協(xié)議進(jìn)行深入學(xué)習(xí),從而實(shí)現(xiàn)各類App和網(wǎng)站的安全交互。程序員必須具備充足的網(wǎng)絡(luò)安全知識(shí),在涉及大型網(wǎng)站、軟件的開(kāi)發(fā)等過(guò)程中,全面深入地學(xué)習(xí)相應(yīng)的網(wǎng)絡(luò)協(xié)議,并將其運(yùn)用到實(shí)際開(kāi)發(fā)環(huán)境中,從而提升項(xiàng)目的開(kāi)發(fā)質(zhì)量。