魏藝杉,曾 浩,楊宗宇
(重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶 400065)
近年來,隨著視頻監(jiān)控系統(tǒng)在全國大量普及,平安城市和天網(wǎng)工程等重大安防項(xiàng)目應(yīng)運(yùn)而生。視頻監(jiān)控面臨著更大規(guī)模的聯(lián)網(wǎng)應(yīng)用,亟需加強(qiáng)系統(tǒng)安全防護(hù),提升安全性能,而視頻監(jiān)控系統(tǒng)的首道安全防線就是合理的身份認(rèn)證機(jī)制。
2016年,公安部科技信息化局提出了視頻監(jiān)控互聯(lián)國家標(biāo)準(zhǔn),規(guī)定了信息傳輸交換的技術(shù)規(guī)范并指定會(huì)話初始協(xié)議(Session Initiation Protocol,SIP)為標(biāo)準(zhǔn)信令控制協(xié)議[1]。SIP是一種簡單的應(yīng)用層協(xié)議,用于在IP網(wǎng)絡(luò)上控制多媒體通信[2]。研究發(fā)現(xiàn),SIP在實(shí)際應(yīng)用中存在一定的安全風(fēng)險(xiǎn)。文獻(xiàn)[3]提出,雖然SIP靈活且易于擴(kuò)展,但以文本形式表示消息極易受到網(wǎng)絡(luò)攻擊。SIP標(biāo)準(zhǔn)文檔建議通過擴(kuò)展已有的安全機(jī)制實(shí)現(xiàn)SIP認(rèn)證與安全防護(hù),針對(duì)SIP注冊(cè)過程,推薦使用超文本傳輸協(xié)議(Hyper Text Transfer Protocol,HTTP)摘要認(rèn)證方式對(duì)會(huì)話雙方進(jìn)行身份認(rèn)證。文獻(xiàn)[4]指出,HTTP摘要認(rèn)證方式存在終端偽裝、重放攻擊、離線密碼猜測(cè)等風(fēng)險(xiǎn),可以結(jié)合密碼算法強(qiáng)化認(rèn)證。為抵御上述風(fēng)險(xiǎn),文獻(xiàn)[5]設(shè)計(jì)了預(yù)置公鑰列表方案,通信雙方通過查表并計(jì)算信息摘要進(jìn)行身份認(rèn)證,但公鑰列表數(shù)據(jù)龐大導(dǎo)致系統(tǒng)負(fù)荷較重。文獻(xiàn)[6]使用無證書簽密技術(shù),通信雙方在密鑰協(xié)商的過程中完成認(rèn)證,計(jì)算和通信開銷較低,但沒有測(cè)試仿真證明方案的可行性。文獻(xiàn)[7]和文獻(xiàn)[8]均提出使用橢圓曲線密碼動(dòng)態(tài)生成會(huì)話密鑰以維護(hù)前向機(jī)密性和認(rèn)證模型安全,并通過測(cè)試證明模型性能穩(wěn)定。
本文將結(jié)合SIP注冊(cè)認(rèn)證與視頻監(jiān)控系統(tǒng)應(yīng)用場(chǎng)景,引入公鑰基礎(chǔ)設(shè)施數(shù)字證書認(rèn)證體系(Public Key Infrastructure/Certificate Authority,PKI/CA)強(qiáng)化HTTP摘要訪問認(rèn)證的安全性,提出一種針對(duì)SIP注冊(cè)過程的安全機(jī)制,實(shí)現(xiàn)安全系數(shù)較高的雙向身份認(rèn)證。
RFC2617提出超文本傳輸協(xié)議摘要訪問認(rèn)證方案(HTTP Digest Access Authentication Scheme),基于挑戰(zhàn)/應(yīng)答機(jī)制實(shí)現(xiàn)身份認(rèn)證。SIP與HTTP均為基于文本的應(yīng)用層協(xié)議,因此SIP可以借鑒該方案,進(jìn)行適當(dāng)擴(kuò)展后應(yīng)用于SIP注冊(cè)認(rèn)證,保障SIP實(shí)體間的通信安全[9]?;贖TTP摘要訪問認(rèn)證方案的SIP標(biāo)準(zhǔn)注冊(cè)認(rèn)證如圖1所示。
圖1 SIP標(biāo)準(zhǔn)注冊(cè)認(rèn)證
過程描述如下:
(1)客戶端發(fā)送注冊(cè)請(qǐng)求。
(2)服務(wù)器返回401 Unauthorized響應(yīng),WWW-Authenticate頭域包括realm(域名)、nonce(隨機(jī)數(shù))、domain(uri列表)、algorithm(默認(rèn)MD5)、qop(保護(hù)等級(jí),設(shè)定為auth)、opaque(固定字符串)、stale(標(biāo)識(shí)客戶端請(qǐng)求因nonce過期被拒絕)、auth-param(可擴(kuò)展項(xiàng))。
(3)客戶端接受質(zhì)詢,根據(jù)realm選擇相關(guān)的username(用戶名)和對(duì)應(yīng)的password(口令),將username、realm、password通過摘要算法Hash計(jì)算出A1;再將Method(請(qǐng)求方法)和uri(由Authorization頭域指定)通過同一算法計(jì)算出A2;最后將A1、nonce、nonce-count(重放檢測(cè))、cnonce(客戶端生成的隨機(jī)數(shù))、qop、A2通過同一算法計(jì)算出response,隨第二次注冊(cè)請(qǐng)求發(fā)出。
(4)服務(wù)器解析請(qǐng)求,提取相同參數(shù)并以上述同種摘要算法計(jì)算response′,對(duì)比接收的response,相同則通過認(rèn)證。
本文在GB/T28181-2016規(guī)定的SIP監(jiān)控域互聯(lián)結(jié)構(gòu)的基礎(chǔ)上部署了一種更全面的系統(tǒng),系統(tǒng)模型如圖2所示。該模型設(shè)定前端設(shè)備為網(wǎng)絡(luò)攝像機(jī)(Internet Protocol Camera,IPC),同時(shí)將信令路由網(wǎng)關(guān)和中心信令控制服務(wù)器部署在安全管理平臺(tái)上,作為負(fù)責(zé)SIP信令轉(zhuǎn)發(fā)控制與應(yīng)用處理的核心SIP服務(wù)器。
圖2 基于SIP互聯(lián)結(jié)構(gòu)的視頻監(jiān)控系統(tǒng)
IPC在接入系統(tǒng)前需向安全管理平臺(tái)上的SIP服務(wù)器發(fā)送注冊(cè)請(qǐng)求,服務(wù)器會(huì)校驗(yàn)設(shè)備信息并要求設(shè)備進(jìn)行認(rèn)證。通過注冊(cè)認(rèn)證后,安管平臺(tái)將接入的IPC標(biāo)識(shí)為合法設(shè)備,允許IPC開始采集視頻流并傳輸?shù)酱鎯?chǔ)服務(wù)器或監(jiān)控客戶端。
本文設(shè)計(jì)的認(rèn)證機(jī)制基于PKI/CA體系,CA作為權(quán)威機(jī)構(gòu)向用戶頒發(fā)承載公鑰和身份信息的數(shù)字證書,并保障證書和公鑰的真實(shí)性。PKI/CA體系可以為視頻監(jiān)控系統(tǒng)提供包括身份識(shí)別、數(shù)據(jù)機(jī)密與完整性、不可否認(rèn)性及時(shí)間戳等服務(wù)[10]。在PKI認(rèn)證機(jī)制下,IPC和安管平臺(tái)無需預(yù)共享密鑰或傳輸私密口令,通過解析對(duì)方公鑰并加密或者使用己方私鑰簽名即可保護(hù)信息,實(shí)現(xiàn)安全性較高的身份認(rèn)證,適用于視頻監(jiān)控系統(tǒng)等對(duì)數(shù)據(jù)敏感的通信過程。
在PKI/CA認(rèn)證系統(tǒng)中,IPC需要先向CA申領(lǐng)證書,再向安管平臺(tái)上的SIP服務(wù)器發(fā)送注冊(cè)請(qǐng)求,SIP服務(wù)器向輕型目錄訪問協(xié)議(Lightweight Directory Access Protocol,LDAP)服務(wù)器查驗(yàn)IPC證書是否可信,后續(xù)的認(rèn)證過程將在2.2節(jié)中介紹。圖2中監(jiān)控中心區(qū)設(shè)置的PKI/CA認(rèn)證系統(tǒng)提供了本節(jié)所述的數(shù)字證書類相關(guān)服務(wù)。
本機(jī)制主要涉及到圖3所示的PKI/CA認(rèn)證系統(tǒng)中的證書申請(qǐng)和查驗(yàn),證書申請(qǐng)僅針對(duì)待接入的IPC,因?yàn)镾IP服務(wù)器已預(yù)先獲取證書并被部署在系統(tǒng)內(nèi)部。IPC通過PKI應(yīng)用接口發(fā)送包含身份信息與公鑰的申請(qǐng)消息至注冊(cè)中心(Registration Authority,RA),RA核實(shí)IPC身份信息后向CA提交制證請(qǐng)求,CA審核請(qǐng)求后簽發(fā)由身份信息、設(shè)備公鑰、數(shù)字簽名和有效期等信息構(gòu)成的證書,RA獲取證書并發(fā)布到LDAP服務(wù)器以提供證書查詢、瀏覽、下載等服務(wù)。IPC或SIP服務(wù)器可通過訪問LDAP服務(wù)器來查驗(yàn)對(duì)方證書,從而獲取對(duì)方公鑰。
圖3 PKI/CA認(rèn)證系統(tǒng)中的證書申請(qǐng)和查驗(yàn)
本文設(shè)計(jì)的機(jī)制基于PKI/CA體系與數(shù)字證書進(jìn)行預(yù)認(rèn)證,再對(duì)SIP消息進(jìn)行擴(kuò)展,增加實(shí)現(xiàn)安全身份認(rèn)證所需的參數(shù)與偽隨機(jī)數(shù)序列,并組合利用異或密碼及公鑰加密對(duì)前端設(shè)備和安全管理平臺(tái)進(jìn)行雙向身份認(rèn)證。改進(jìn)方案相對(duì)于原HTTP 摘要訪問認(rèn)證的優(yōu)點(diǎn)為:不需要預(yù)生成與域名對(duì)應(yīng)的用戶名/口令組合;基于原會(huì)話機(jī)制進(jìn)行擴(kuò)展,在不會(huì)增加SIP信令交互過程的前提下,IPC和SIP服務(wù)器可互相鑒別對(duì)方身份;SIP協(xié)議棧中不需要增加新的事件,協(xié)議棧狀態(tài)機(jī)不會(huì)改變。擴(kuò)展后的認(rèn)證過程如圖4所示。
圖4 改進(jìn)的雙向身份認(rèn)證
(1)網(wǎng)絡(luò)攝像機(jī)IPC上線后,首先由PKI/CA認(rèn)證系統(tǒng)為其頒發(fā)數(shù)字證書,隨后IPC向安管平臺(tái)上布置的SIP服務(wù)器發(fā)送注冊(cè)請(qǐng)求REGISTER1,同時(shí)攜帶數(shù)字證書相關(guān)信息以及自身的安全能力。
(2)SIP服務(wù)器解析請(qǐng)求,向PKI/CA認(rèn)證系統(tǒng)中的LDAP服務(wù)器查詢?cè)撛O(shè)備的數(shù)字證書,以證實(shí)證書的有效性和合法性。證書預(yù)認(rèn)證通過后,SIP服務(wù)器再解析證書并提取出承載的IPC公鑰PUIPC,若證書預(yù)認(rèn)證未通過,SIP服務(wù)器將拒絕連接,結(jié)束會(huì)話。
(3)安管平臺(tái)利用偽隨機(jī)數(shù)生成器產(chǎn)生隨機(jī)數(shù)nonce以及認(rèn)證序號(hào)Seq并傳給SIP服務(wù)器,SIP服務(wù)器返回挑戰(zhàn)響應(yīng)401 Unauthorized要求對(duì)IPC進(jìn)行身份認(rèn)證。401消息同時(shí)攜帶了參數(shù)Message和algorithm。其中,需要計(jì)算序列S1=H(PUIPC‖nonce)并儲(chǔ)存在服務(wù)器的數(shù)據(jù)庫中,再計(jì)算S2=Seq?S1,并對(duì)S2、Seq、nonce簽名得到Message=PRS[S2‖Seq‖nonce]。PRS為SIP服務(wù)器私鑰,algorithm為服務(wù)器在IPC提供的安全能力中選擇的數(shù)字摘要算法Hash。
(4)IPC接收質(zhì)詢信息,向PKI/CA認(rèn)證系統(tǒng)中的LDAP服務(wù)器查詢SIP服務(wù)器的數(shù)字證書,解析證書提取其公鑰PUS并對(duì)Message驗(yàn)簽,驗(yàn)簽成功則獲取S2、Seq、nonce,并丟棄Message中存儲(chǔ)的值。IPC對(duì)解析出的nonce和自己的公鑰PUIPC做摘要運(yùn)算得到S1′=H(PUIPC‖nonce),再利用解析出的S2計(jì)算Seq′=S2?S1′,對(duì)比Seq′與之前解析出的Seq,相同則證明SIP服務(wù)器及安管平臺(tái)身份可信,否則直接結(jié)束會(huì)話。
(5)IPC重新向SIP服務(wù)器發(fā)送REGISTER請(qǐng)求,并攜帶參數(shù)response=PRIPC[PUS[Message]],需要對(duì)Message重新賦值為H(S1′‖nonce)。
(6)SIP服務(wù)器解析請(qǐng)求,使用IPC公鑰PUIPC對(duì)response驗(yàn)簽,驗(yàn)簽成功則獲取PUS[Message],再使用服務(wù)器私鑰PRS解密該字符串獲得Message。最后取出儲(chǔ)存在本地的S1,計(jì)算Message′=H(S1‖nonce),對(duì)比之前解密獲取的Message,相同則證明IPC可信,完成了雙向身份認(rèn)證。
測(cè)試環(huán)境由內(nèi)置密碼模塊的IPC、SIP服務(wù)器、PKI/CA認(rèn)證系統(tǒng)組成,通過交換機(jī)構(gòu)成一個(gè)小型視頻監(jiān)控系統(tǒng),SIP服務(wù)器端使用eXosip協(xié)議棧搭建。IPC向SIP 服務(wù)器發(fā)送注冊(cè)請(qǐng)求,通過2.2節(jié)提出的認(rèn)證方案接入系統(tǒng)。使用WireShark對(duì)上述SIP信令進(jìn)行抓包分析,可知在SIP基本注冊(cè)過程中通過擴(kuò)展信令實(shí)現(xiàn)了改進(jìn)的雙向身份認(rèn)證。
(1)注冊(cè)抓包
在Filter 欄輸入指令sip and ip.addr eq 192.168.99.26,即可顯示與IPC注冊(cè)有關(guān)的信令包。
如圖5所示,SIP 完成了“REGISTER1-401-REGISTE 2-200 OK”標(biāo)準(zhǔn)會(huì)話,IPC與服務(wù)器認(rèn)證成功。后文將分析改進(jìn)的401和REGISTER2信令。
圖5 注冊(cè)認(rèn)證的信令
(2)改進(jìn)的401 Unauthorized
如圖6所示,改進(jìn)后401消息的WWW-Authenticate頭域中顯示認(rèn)證信息Message,并根據(jù)REGISTER1中IPC提供的安全能力,將摘要算法設(shè)定為MD5并寫入algorithm參數(shù)。
圖6 改進(jìn)的401 Unauthorized
(3)改進(jìn)的REGISTER2
如圖7所示,改進(jìn)后IPC發(fā)送的注冊(cè)請(qǐng)求REGISTER2中,Authorization頭域攜帶認(rèn)證消息response、algorithm參數(shù)也說明了在計(jì)算response時(shí)使用的摘要算法為MD5。
圖7 改進(jìn)的REGISTER2
為了驗(yàn)證方案的執(zhí)行效率和可行性,本節(jié)對(duì)改進(jìn)的身份認(rèn)證機(jī)制和原始的摘要接入認(rèn)證機(jī)制分別進(jìn)行吞吐量測(cè)試。摘要算法Hash使用MD5,公鑰加密算法使用RSA。在測(cè)試中使用4臺(tái)IPC向SIP服務(wù)器連續(xù)發(fā)送認(rèn)證請(qǐng)求,分別控制每臺(tái)IPC每次發(fā)送100個(gè)請(qǐng)求,共發(fā)送10組,計(jì)算這10組的平均時(shí)間t,t/100再取倒數(shù)即可得到單位時(shí)間內(nèi)單臺(tái)IPC與SIP服務(wù)器完成雙向身份認(rèn)證的次數(shù)。測(cè)試結(jié)果如表1所示。
表1 改進(jìn)前后吞吐量對(duì)比
由測(cè)試結(jié)果可知,當(dāng)1臺(tái)、2臺(tái)、3臺(tái)、4臺(tái)IPC連續(xù)發(fā)送認(rèn)證請(qǐng)求時(shí),改進(jìn)方案的效率約為原來的78.8%、78.7%、78.4%、78.7%。實(shí)際上,改進(jìn)機(jī)制減少了三次摘要計(jì)算,由于又增添了公鑰加密、私鑰解密和異或運(yùn)算,總體計(jì)算量有所增加。認(rèn)證過程中還涉及到通信雙方對(duì)信令的接收與發(fā)送、生成與解析,并且信令在端到端的傳輸中占用的時(shí)間遠(yuǎn)超過計(jì)算時(shí)長。下文將分析改進(jìn)機(jī)制的安全性,證明安全性較改進(jìn)前有較大提升,因此效率方面適當(dāng)?shù)膿p失是值得的。
在SIP注冊(cè)認(rèn)證中,通信雙方以數(shù)字摘要形式進(jìn)行信息交互。雖然信息不以明文傳輸可以防止注冊(cè)劫持并且保證了一定程度的機(jī)密性,但仍存在一些安全風(fēng)險(xiǎn)。下面針對(duì)改進(jìn)后的機(jī)制進(jìn)行安全風(fēng)險(xiǎn)分析。
(1)終端偽裝攻擊
前端設(shè)備和SIP服務(wù)器向系統(tǒng)內(nèi)可信LDAP服務(wù)器查驗(yàn)證書獲取對(duì)方公鑰,確保公鑰真實(shí)性。除正在會(huì)話中的設(shè)備以外,其他未接入系統(tǒng)的設(shè)備無證書查詢權(quán)限,無法獲取公鑰。通信雙方分別解密認(rèn)證序列并校驗(yàn)Seq和Message,驗(yàn)證對(duì)方身份可信,從而抵御了非法設(shè)備或服務(wù)器偽裝攻擊。
(2)重放攻擊
在本方案中,SIP服務(wù)器發(fā)出401質(zhì)詢消息前,監(jiān)控安全管理平臺(tái)產(chǎn)生并傳遞隨機(jī)數(shù)nonce以及認(rèn)證序號(hào)Seq給SIP服務(wù)器用于構(gòu)造認(rèn)證字符串,由于偽隨機(jī)數(shù)生成器輸出的值具有不可重現(xiàn)及不可預(yù)測(cè)性,每次通信時(shí)nonce的值都會(huì)發(fā)生變化,Seq也會(huì)逐次遞增。因此,nonce和Seq不斷更新能夠抵御重放攻擊。
(3)離線密碼猜測(cè)
在摘要訪問認(rèn)證方案中,客戶端根據(jù)realm選擇相應(yīng)的username和password,并計(jì)算A1=H(username||realm||password)],生成response時(shí)需要A1再次參與摘要計(jì)算,即password參與兩次摘要計(jì)算,因此攻擊者較難通過線下窮舉法計(jì)算摘要的自變量來獲取password。改進(jìn)方案在認(rèn)證過程中直接取消了password,著重于認(rèn)證序列的安全性設(shè)計(jì),這樣無需password參與也可充分保障認(rèn)證的安全性,徹底免除了遭遇離線密碼猜測(cè)的風(fēng)險(xiǎn)。
(4)中間人攻擊
攻擊者可能通過監(jiān)聽會(huì)話或截獲認(rèn)證數(shù)據(jù)冒充通信的某一方威脅認(rèn)證安全,因此本方案首先引入PKI/CA體系,讓通信雙方基于可信數(shù)字證書獲取對(duì)方公鑰。通過公鑰加密和私鑰簽名的方法保護(hù)認(rèn)證數(shù)據(jù)的傳輸安全,同時(shí)組合利用摘要算法和異或密碼構(gòu)造認(rèn)證序列,有效保護(hù)其機(jī)密性,即便認(rèn)證序列被攻擊者截獲也難以破解。
(5)摘要算法單一且固定
在本方案中,前端設(shè)備發(fā)送REGISTER1請(qǐng)求,同時(shí)攜帶了algorithm參數(shù)來表明自身安全能力并指明了支持的摘要算法,SIP服務(wù)器可以從中選擇某種摘要算法Hash進(jìn)行計(jì)算。
(6)不可否認(rèn)性
在本方案中,前端設(shè)備和SIP服務(wù)器均使用己方私鑰對(duì)參與認(rèn)證的序列和參數(shù)簽名后再隨消息發(fā)出,不僅保證了一定的機(jī)密性,而且確保簽名數(shù)據(jù)只有通過查詢數(shù)字證書獲取相應(yīng)公鑰的對(duì)方才能驗(yàn)簽。私鑰不參與傳輸不會(huì)泄露,只有持該證書的唯一用戶才能產(chǎn)生簽名,因此具有不可否認(rèn)性。
由分析可知,改進(jìn)后的雙向身份認(rèn)證機(jī)制安全性有較大提升,能夠規(guī)避上述常見風(fēng)險(xiǎn),保證合法的IPC安全接入到可信平臺(tái)上。
本機(jī)制結(jié)合SIP注冊(cè)認(rèn)證和HTTP摘要訪問認(rèn)證的特點(diǎn),通過擴(kuò)展eXosip協(xié)議棧使得前端設(shè)備發(fā)送第一條REGISTER消息時(shí)攜帶自身支持的密碼算法,根據(jù)SIP服務(wù)器發(fā)出的401信令中指定的摘要算法對(duì)認(rèn)證參數(shù)進(jìn)行計(jì)算和校驗(yàn),第二條REGISTER攜帶更新的認(rèn)證參數(shù)再次向服務(wù)器發(fā)起注冊(cè)請(qǐng)求,增加了認(rèn)證過程的靈活性。同時(shí)基于PKI/CA體系為通信雙方提供密鑰對(duì),與傳統(tǒng)方案相比,無需預(yù)生成和預(yù)共享密鑰即可加密保護(hù)交互的關(guān)鍵認(rèn)證信息,實(shí)現(xiàn)前端設(shè)備和監(jiān)控安管平臺(tái)之間的雙向身份認(rèn)證。改進(jìn)的身份認(rèn)證機(jī)制性能穩(wěn)定且安全性較高,提升了認(rèn)證過程中信令交互的機(jī)密性和完整性,應(yīng)用于視頻監(jiān)控系統(tǒng)中可有效保證合法設(shè)備能夠安全接入,保障視頻數(shù)據(jù)來源可信,具有實(shí)際應(yīng)用價(jià)值。后續(xù)可針對(duì)SIP信令跨監(jiān)控域傳輸?shù)陌踩珕栴}進(jìn)行研究,進(jìn)一步加固前端設(shè)備與監(jiān)控系統(tǒng)之間的通信安全。