馬亮
【摘要】 首先對單策略CDN防盜鏈的局限性進(jìn)行分析,然后針對性提出雙策略CDN防盜鏈,進(jìn)而設(shè)計(jì)雙策略CDN防盜鏈架構(gòu),闡述雙策略CDN防盜鏈業(yè)務(wù)流程,最后詳細(xì)敘述雙策略CDN 防盜鏈的功能實(shí)現(xiàn)過程。
【關(guān)鍵詞】 CDN 防盜鏈 雙策略
Design and implementation of a dual-strategy CDN anti-leech
Abstract:Firstly,limitations of single-strategy CDN anti-leeches are analyzed.Then a dual-strategy CDN anti-leech is put forwarded accordingly,and an architecture of dual-strategy CDN anti-leeches is designed. Furthermore, the business process is illustrated. Finally, the implementation of process of the dual-strategy CDN anti-leech functions is described in detail.
Keywords: CDN;anti-leech;dual-strategy
引言
盜鏈?zhǔn)侵阜欠ǚ?wù)提供商通過技術(shù)手段繞過其它有利益的最終用戶界面,直接在自己的網(wǎng)站上向最終用戶提供其它合法服務(wù)提供商的服務(wù)內(nèi)容。盜鏈繞過了合法服務(wù)提供商通過該內(nèi)容獲取正當(dāng)利益的頁面,一方面侵犯了被盜鏈網(wǎng)站的正常商業(yè)利益,另一方面也加重了被盜鏈網(wǎng)站服務(wù)器的負(fù)擔(dān)。而CDN專門負(fù)責(zé)內(nèi)容的分發(fā),涉及大量的內(nèi)容資產(chǎn),因此,防盜鏈?zhǔn)荂DN系統(tǒng)不可或缺的組成部分。
目前,大多數(shù)CDN系統(tǒng)采用單策略的防盜鏈校驗(yàn)機(jī)制,這種機(jī)制在CDN業(yè)務(wù)發(fā)展初期能夠滿足其基本的防盜鏈需求。但隨著業(yè)務(wù)快速的發(fā)展,這種機(jī)制的局限性逐步凸顯出來,接入CDN的CP數(shù)量快速增長,新CP接入CDN時(shí),CP的防盜鏈模塊和整個(gè)CDN系統(tǒng)的防盜鏈模塊均需進(jìn)行對接,涉及面較大,工作量較多,不利于業(yè)務(wù)的快速上線。[1]
針對上述問題,CDN單策略防盜鏈需改進(jìn)成雙策略防盜鏈,一個(gè)策略專門對外,由CP制定,主要在CDN外部進(jìn)行校驗(yàn),另一策略專門對內(nèi),在CDN內(nèi)部進(jìn)行校驗(yàn),以此降低適配不同CP的防盜鏈規(guī)則帶來的開發(fā)成本,并進(jìn)一步加強(qiáng)CDN安全性。
一、雙策略防盜鏈系統(tǒng)架構(gòu)
雙策略防盜鏈分為外部防盜鏈策略和內(nèi)部防盜鏈策略。外部防盜鏈策略是指CP與終端之間約定的防盜鏈規(guī)則,規(guī)則依CP而定;內(nèi)部防盜鏈策略是指終端和CDN節(jié)點(diǎn)之間的防盜鏈規(guī)則,規(guī)則是通用的。
外部和內(nèi)部之間的防盜鏈策略轉(zhuǎn)換通過GSLB進(jìn)行轉(zhuǎn)換,GSLB將外部防盜鏈策略轉(zhuǎn)換為內(nèi)部策略,GSLB是CDN系統(tǒng)唯一的訪問入口。
雙策略防盜鏈涉及5類網(wǎng)元組成:CP、GSLB、安全管控網(wǎng)元、邊緣節(jié)點(diǎn)和內(nèi)容中心。
(1)CP:產(chǎn)生原始URL,包含外部防盜鏈策略。
(2)GSLB:負(fù)責(zé)校驗(yàn)外部防盜鏈策略;負(fù)責(zé)URL參數(shù)改寫;負(fù)責(zé)生成和校驗(yàn)內(nèi)部防盜鏈策略。
(3)安全管控網(wǎng)元:負(fù)責(zé)更新內(nèi)部防盜鏈策略的密鑰、管控策略的下發(fā)和應(yīng)急安全控制。
(4)內(nèi)容中心:回源采用白名單方式。
(5)邊緣節(jié)點(diǎn):根據(jù)內(nèi)部防盜鏈策略完成請求URL的防盜鏈校驗(yàn)功能。
二、雙策略防盜鏈業(yè)務(wù)流程
雙策略防盜鏈業(yè)務(wù)流程如下:(1)終端從CP門戶請求播放地址,CP門戶生成播放鏈接并根據(jù)CP自有的防盜鏈規(guī)則做加密處理、使用與CDN約定的服務(wù)域名,最終向終端返回播放地址。(2)終端請求播放,域名經(jīng)DNS接收指向GSLB。(3)GSLB根據(jù)CP的防盜鏈規(guī)則進(jìn)行校驗(yàn),若合法,重新根據(jù)內(nèi)部的防盜鏈規(guī)則生成播放地址、并根據(jù)本地調(diào)度策略,替換域名為CDN側(cè)的服務(wù)域名。(4)GSLB給終端返回302重定向指令。(5)終端重新請求播放,域名經(jīng)DNS調(diào)度后,調(diào)度至邊緣節(jié)點(diǎn)。(6)CDN邊緣節(jié)點(diǎn)根據(jù)“內(nèi)部防盜鏈策略”實(shí)施校驗(yàn)。(7)如果邊緣節(jié)點(diǎn)本地未命中,邊緣節(jié)點(diǎn)從內(nèi)容中心回源。(8)內(nèi)容中心通過IP白名單校驗(yàn)回源合法性。(9)如果內(nèi)容中心本地未命中,內(nèi)容中心從源站回源。(10)源站通過IP白名單校驗(yàn)回源合法性。(11)校驗(yàn)通過后,源站返回媒體流,經(jīng)內(nèi)容中心、邊緣節(jié)點(diǎn),最終至終端。[2]
三、雙策略防盜鏈功能實(shí)現(xiàn)
雙策略防盜鏈通過GSLB、邊緣節(jié)點(diǎn)、內(nèi)容中心、安全管控等實(shí)現(xiàn)。
3.1 GSLB
GSLB需實(shí)現(xiàn)如下功能。(1)終結(jié)外部防盜鏈校驗(yàn)。根據(jù)適配規(guī)則對由CP生成的播放請求進(jìn)行校驗(yàn)。(2)生成內(nèi)部防盜鏈信息。根據(jù)請求參數(shù)、訪問時(shí)間和用戶IP生成包含MD5摘要的AuthInfo加密串。(3)按需啟用不同校驗(yàn)?zāi)J健R罁?jù)用戶信息進(jìn)行盜鏈行為的初步判斷和驗(yàn)證。(4)自身安全防護(hù)支持所有網(wǎng)元防攻擊和合規(guī)性兩類防護(hù)機(jī)制。防攻擊針對多個(gè)業(yè)務(wù)屬性的非正常訪問行為實(shí)現(xiàn)拒絕訪問,包括IP、UA、IMEI、referer和手機(jī)號等;合規(guī)性只允許符合規(guī)則的訪問通過,例如針對GSLB的ts請求等。各業(yè)務(wù)屬性應(yīng)支持頻次、黑名單、白名單,并可根據(jù)業(yè)務(wù)通道實(shí)現(xiàn)多個(gè)業(yè)務(wù)屬性的組合判斷。
3.2邊緣節(jié)點(diǎn)
邊緣節(jié)點(diǎn)需實(shí)現(xiàn)如下功能。(1)校驗(yàn)內(nèi)部防盜鏈信息。解密AuthInfo,根據(jù)MD5摘要、訪問時(shí)間和用戶IP等實(shí)現(xiàn)防盜鏈校驗(yàn)。(2)建立會話過程信息緩存。會話信息用于校驗(yàn)會話過程中一致性判斷,支撐防盜鏈校驗(yàn)和自身安全防護(hù)機(jī)制運(yùn)行。(3)根據(jù)策略采用校驗(yàn)?zāi)J健R罁?jù)用戶信息采用不同校驗(yàn)?zāi)J?。?)自身安全防護(hù)支持所有網(wǎng)元防攻擊和合規(guī)性兩類防護(hù)機(jī)制。防攻擊針對多個(gè)業(yè)務(wù)屬性的非正常訪問行為實(shí)現(xiàn)拒絕訪問,包括IP、UA、IMEI、refer和手機(jī)號等;合規(guī)性只允許符合規(guī)則的訪問通過,例如針對同一會話過程中的不同IMEI等。各業(yè)務(wù)屬性應(yīng)支持頻次、黑名單、白名單,并可根據(jù)業(yè)務(wù)通道實(shí)現(xiàn)多個(gè)業(yè)務(wù)屬性的組合判斷。
3.3內(nèi)容中心
內(nèi)容中心需實(shí)現(xiàn)如下功能。
(1)白名單機(jī)制:不參與防盜鏈校驗(yàn),采用白名單安全機(jī)制,簡化防盜鏈整體流程。
(2)實(shí)現(xiàn)自身安全防護(hù):對于規(guī)則外異常請求實(shí)現(xiàn)拒絕訪問。
3.4安全管控網(wǎng)元
安全管控網(wǎng)元需實(shí)現(xiàn)如下功能。
(1)密鑰更新和管理:定期生成密鑰,管理全網(wǎng)防盜鏈密鑰版本。AES密鑰和MD5密鑰以密鑰組方式同步更新和管理。
(2)管控策略的下發(fā):多租戶管控策略下發(fā)和更新。
(3)應(yīng)急安全控制:針對特定內(nèi)容,緊急下線和控制。
(4)支持至少2層業(yè)務(wù)屬性字段(例如門戶域名+2級域名)的防盜鏈策略和自身安全防護(hù)策略的配置啟用。
(5)支持分級操作員權(quán)限管理。管理權(quán)限支持至少2層業(yè)務(wù)屬性字段(例如門戶域名+2級域名)的防盜鏈策略和自身安全防護(hù)策略的參數(shù)配置。
3.5 內(nèi)部防盜鏈策略
3.5.1加密規(guī)則
內(nèi)部防盜鏈策略加密規(guī)則如下。
(1)GSLB獲取用戶的IP地址和當(dāng)前時(shí)間戳。
? 用戶訪問IP:用戶訪問系統(tǒng)源IP地址,格式為IPv4地址的32位二進(jìn)制值,或IPv6地址的128位二進(jìn)制值。
? 時(shí)間戳:為系統(tǒng)向用戶授權(quán)播放時(shí)的時(shí)間戳,為十六進(jìn)制字符串格式,采用UTC時(shí)間。
(2)生成MD5校驗(yàn)和
將已通過GSLB外部防盜鏈策略校驗(yàn)的URL中參數(shù)部分與新探測時(shí)間戳和MD5密鑰拼接生成URI。
MD5值為16字節(jié)長的二進(jìn)制。GSLB通過MD5算法將以上URI加密,生成MD5摘要,采用小寫字母。
(3)URL加密
使用AES進(jìn)行加解密,加密串AuthInfo=AES(用戶訪問IP+時(shí)間戳+MD5,密鑰)。根據(jù)加密串AuthInfo,并拼接至原始URL的結(jié)尾處,形成最終的URL。CDN在業(yè)務(wù)流程中如需額外拼接URL參數(shù),必須在AuthInfo之后完成。
3.5.2校驗(yàn)規(guī)則
當(dāng)用戶按照GSLB加密后的URL訪問時(shí),服務(wù)節(jié)點(diǎn)將校驗(yàn)URL所帶加密串AuthInfo。通過密鑰解析出用戶IP地址和時(shí)間戳的值。
? 校驗(yàn)當(dāng)前訪問用戶IP地址與AuthInfo中解析出的IP地址是否一致。
? 查看當(dāng)前系統(tǒng)時(shí)間與AuthInfo解析出的時(shí)間戳?xí)r間差是否超時(shí)效(時(shí)效在CDN中進(jìn)行配置)。
? 校驗(yàn)解析出的MD5值與AuthInfo解析出的URL明文參數(shù)部分+時(shí)間戳計(jì)算的MD5值是否一致。
如上述3個(gè)校驗(yàn)點(diǎn)都符合要求,則允許用戶訪問;否則不允許用戶訪問該鏈接。當(dāng)合法用戶通過了防盜鏈機(jī)制檢驗(yàn)后,CDN不能以解密的明文方式再次進(jìn)行重定向。[3]
四、結(jié)論
CDN系統(tǒng)的單策略防盜鏈改進(jìn)為雙策略防盜鏈后,降低了接入CP的工作量,縮短了業(yè)務(wù)接入時(shí)間,在一定程度上提高了系統(tǒng)安全性。
參 考 文 獻(xiàn)
[1] 雷葆華,孫穎,王峰等. CDN技術(shù)詳解[M]. 電子工業(yè)出版社.2012年:246-249.
[2] 倪偉,王寓辰,南海濤等. 中國移動內(nèi)容網(wǎng)絡(luò)總體技術(shù)要求[S]. 中國移動通信有限公司研究院.2014年:44-47.
[3] 倪偉、郭嵩、田旭等. 中國移動內(nèi)容網(wǎng)絡(luò)接口規(guī)范[S]. 中國移動通信有限公司研究院.2014年:142-145.