通信世界網(wǎng)消息(CWW)雖然移動互聯(lián)網(wǎng)應(yīng)用呈爆發(fā)式增長,但數(shù)以億計(jì)用戶的身份識別、網(wǎng)絡(luò)資源的合法使用、安全可靠的用戶鑒權(quán),始終是移動互聯(lián)網(wǎng)發(fā)展過程中難以解決的問題。傳統(tǒng)的用戶認(rèn)證校驗(yàn)方式在安全性和便捷性方面存在技術(shù)瓶頸,如何既快捷又安全地實(shí)現(xiàn)用戶身份認(rèn)證成為移動互聯(lián)網(wǎng)發(fā)展的關(guān)鍵,由此基于運(yùn)營商網(wǎng)絡(luò)能力的用戶取號服務(wù)應(yīng)運(yùn)而生,逐漸在移動互聯(lián)網(wǎng)用戶認(rèn)證環(huán)節(jié)中成為主流技術(shù)方案。本文對中國聯(lián)通取號服務(wù)平臺(以下簡稱“聯(lián)通取號平臺”)及其關(guān)鍵技術(shù)進(jìn)行介紹和分析,為后續(xù)相關(guān)平臺的建設(shè)和應(yīng)用提供參考。
取號產(chǎn)品概述及應(yīng)用說明
應(yīng)用場景
中國聯(lián)通取號服務(wù)主要應(yīng)用于一鍵登錄場景(如圖1所示)。在用戶未登錄時,點(diǎn)擊“登錄”即可彈出一鍵登錄頁面,在該頁面上,直接顯示用戶當(dāng)前手機(jī)號碼;同時,出于隱私考慮,手機(jī)號的中間四位以“*”號代替。用戶無需進(jìn)行其他操作,直接點(diǎn)擊該頁面的“一鍵登錄”按鈕,即可完成登錄。
圖1 中國聯(lián)通取號業(yè)務(wù)應(yīng)用場景
業(yè)務(wù)流程
聯(lián)通取號業(yè)務(wù)本質(zhì)上是獲取聯(lián)通網(wǎng)絡(luò)中用戶的手機(jī)號碼,并通過相關(guān)流程使接入的應(yīng)用獲取用戶的手機(jī)號碼。用戶攜帶規(guī)定參數(shù)訪問取號門戶服務(wù)器,門戶服務(wù)器根據(jù)用戶的公網(wǎng)地址進(jìn)行路由,如果失敗則返回異常,如果成功則重定向到鑒權(quán)服務(wù)器url。鑒權(quán)服務(wù)器返回鑒權(quán)碼,并自動重定向到商家指定的ret_url,同時鑒權(quán)服務(wù)器將鑒權(quán)碼和用戶號碼信息備案到取號網(wǎng)關(guān)。商家通過部署在ret_url上的服務(wù)獲取鑒權(quán)碼,使用鑒權(quán)碼向取號網(wǎng)關(guān)查詢用戶號碼信息,取號網(wǎng)關(guān)返回用戶號碼信息,整個流程結(jié)束(如圖2所示)。
圖2 中國聯(lián)通鑒權(quán)碼取號業(yè)務(wù)流程
聯(lián)通取號平臺技術(shù)方案
聯(lián)通取號平臺業(yè)務(wù)架構(gòu)
聯(lián)通取號平臺的整體業(yè)務(wù)架構(gòu)(如圖3所示)包括分省前置模塊、頭增強(qiáng)前置模塊、核心系統(tǒng)、業(yè)務(wù)運(yùn)維與監(jiān)控平臺、能力開放平臺。
圖3 中國聯(lián)通取號平臺整體業(yè)務(wù)架構(gòu)
1.分省前置模塊
進(jìn)行Radius數(shù)據(jù)的接收、解析和處理,并將處理后的數(shù)據(jù)傳輸?shù)娇偛康暮诵南到y(tǒng)。根據(jù)聯(lián)通大網(wǎng)結(jié)構(gòu),該模塊直接部署在各省,用于接收大網(wǎng)設(shè)備轉(zhuǎn)發(fā)的Radius數(shù)據(jù)。同時,該模塊還具備鑒權(quán)碼生成和發(fā)放功能。
2.頭增強(qiáng)前置模塊
處理大網(wǎng)設(shè)備攜帶的頭增強(qiáng)數(shù)據(jù),解析HTTP(超文本傳輸協(xié)議)和HTTPS(超文本傳輸安全協(xié)議)兩種協(xié)議下的用戶信息,并將處理后的數(shù)據(jù)傳輸?shù)胶诵南到y(tǒng)。與分省前置模塊一樣,該模塊也具備鑒權(quán)碼生成和發(fā)放功能。
3.核心系統(tǒng)
接收分省前置模塊和頭增強(qiáng)前置模塊的數(shù)據(jù),并進(jìn)行數(shù)據(jù)處理形成取號核心能力,也可為用戶提供安卓和iOS等系統(tǒng)的SDK(軟件開發(fā)工具包)。同時,該系統(tǒng)對用戶接入進(jìn)行接入鑒權(quán)、隱私控制、權(quán)限控制等操作。除此之外,該系統(tǒng)還具備生成話單、出賬、信控等賬務(wù)體系功能以及業(yè)務(wù)風(fēng)控、稽核、生成黑白名單等安全體系功能。
4.業(yè)務(wù)運(yùn)維與監(jiān)控平臺
具備業(yè)務(wù)查詢統(tǒng)計(jì)、賬號管理、業(yè)務(wù)審核、系統(tǒng)參數(shù)配置等功能。
5.能力開放平臺
面向接入用戶提供快速取號、鑒權(quán)碼取號、號碼校驗(yàn)、白名單取號等多個取號產(chǎn)品。同時,該平臺還提供產(chǎn)品門戶,便于用戶了解和使用功能、管理業(yè)務(wù)和應(yīng)用等。
Radius數(shù)據(jù)方案
聯(lián)通取號平臺利用PGW(PDN網(wǎng)關(guān))等設(shè)備特征,從網(wǎng)絡(luò)中采集3A認(rèn)證的Radius消息。Radius協(xié)議可實(shí)現(xiàn)對網(wǎng)絡(luò)接入用戶的身份認(rèn)證、授權(quán)和計(jì)費(fèi)功能。在該平臺上,網(wǎng)絡(luò)設(shè)備向取號平臺轉(zhuǎn)發(fā)Radius消息,分省前置模塊在接收到Radius消息之后,根據(jù)協(xié)議,解析出手機(jī)號碼和Framed-IP-Address(用戶私網(wǎng)IP),以此作為取號平臺的基礎(chǔ)數(shù)據(jù)。
由于用戶的私網(wǎng)IP在不同省份甚至同一省份存在重復(fù)現(xiàn)象,相關(guān)應(yīng)用無法根據(jù)用戶的私網(wǎng)IP查詢到手機(jī)號。因此在數(shù)據(jù)采集時,需要分省部署前置機(jī),確保在每臺前置機(jī)接收的數(shù)據(jù)中,私網(wǎng)IP不重復(fù),并與手機(jī)號是一一對應(yīng)的關(guān)系。
對于省內(nèi)私網(wǎng)IP重復(fù)的情況,通過部署多個省分前置機(jī)的方式創(chuàng)造一個邏輯上的省分概念,在聯(lián)通取號平臺中被稱為“大區(qū)”。前置機(jī)在發(fā)送手機(jī)號和私網(wǎng)IP的同時,將“大區(qū)”編碼發(fā)送給核心系統(tǒng),由此核心系統(tǒng)才能擁有“私網(wǎng)IP—手機(jī)號—大區(qū)編碼”的數(shù)據(jù)關(guān)系。
網(wǎng)絡(luò)設(shè)備在進(jìn)行組網(wǎng)時,會利用公網(wǎng)地址進(jìn)行區(qū)分,不同“大區(qū)”用戶的公網(wǎng)地址是不同的。用戶取號時,先根據(jù)用戶的公網(wǎng)地址路由到不同的“大區(qū)”,再根據(jù)用戶的私網(wǎng)IP查詢手機(jī)號碼。
如何獲取用戶的私網(wǎng)IP?聯(lián)通取號平臺有兩種方案,對應(yīng)兩款取號產(chǎn)品。
一種是“快速取號”產(chǎn)品,主要面向內(nèi)部應(yīng)用。其技術(shù)原理是通過SDK方式自行采集私網(wǎng)IP?并將私網(wǎng)IP以參數(shù)的方式傳給取號平臺,平臺直接根據(jù)參數(shù)中的私網(wǎng)IP查詢用戶手機(jī)號碼進(jìn)行取號。
另一種則是“鑒權(quán)碼取號”產(chǎn)品,主要面向行業(yè)用戶。用戶通過內(nèi)網(wǎng)向前置機(jī)發(fā)起請求,分省前置模塊檢測請求中用戶的源IP,即用戶的私網(wǎng)IP,生成鑒權(quán)碼返回給用戶,同時將鑒權(quán)碼和私網(wǎng)IP發(fā)送給核心系統(tǒng)。鑒權(quán)碼取號是通過鑒權(quán)碼查詢用戶的私網(wǎng)IP,再通過私網(wǎng)IP查詢用戶的手機(jī)號碼,最終完成取號。
頭增強(qiáng)數(shù)據(jù)方案
除Radius數(shù)據(jù)方案之外,聯(lián)通取號平臺還采用了頭增強(qiáng)數(shù)據(jù)方案。在Radius數(shù)據(jù)方案中,網(wǎng)絡(luò)設(shè)備轉(zhuǎn)發(fā)全量用戶的實(shí)時Radius數(shù)據(jù)到取號平臺;而在頭增強(qiáng)方案中,用戶發(fā)起取號之后,才會進(jìn)行頭增強(qiáng)操作。
聯(lián)通取號平臺需要在UPF(用戶面功能)或PGW設(shè)備中配置頭增強(qiáng)規(guī)則,并將取號平臺的地址設(shè)置為頭增強(qiáng)地址,只要用戶訪問取號平臺的地址,網(wǎng)絡(luò)設(shè)備就會觸發(fā)頭增強(qiáng),隨即在請求頭中插入用戶手機(jī)號碼等信息。
聯(lián)通取號平臺的頭增強(qiáng)服務(wù)器在接收到請求時,請求頭中已經(jīng)包含用戶手機(jī)號碼信息,只需將其解析就可獲取用戶手機(jī)號碼。頭增強(qiáng)服務(wù)器生成鑒權(quán)碼并將其返回給用戶,同時將鑒權(quán)碼與手機(jī)號的對應(yīng)關(guān)系傳輸?shù)胶诵南到y(tǒng),后續(xù)流程與Radius數(shù)據(jù)方案一致。
需要指出的是,對于HTTP請求,網(wǎng)絡(luò)設(shè)備可以直接在HTTP請求頭中插入用戶信息;而對于HTTPS請求,由于其通道具有加密性,網(wǎng)絡(luò)設(shè)備無法像對HTTP請求一樣直接在請求頭中插入信息。
但根據(jù)TLS協(xié)議(安全傳輸層協(xié)議),客戶端和服務(wù)端可通過“握手”建立安全連接。在“握手”時,客戶端發(fā)送ClientHello消息,聯(lián)通取號平臺則利用網(wǎng)絡(luò)設(shè)備識別Client Hello消息并進(jìn)行Extension擴(kuò)展編程,從而實(shí)現(xiàn)對HTTPS請求的頭增強(qiáng)。
用戶手機(jī)端發(fā)起TLS“握手”時,發(fā)送Client Hello消息,UPF等網(wǎng)絡(luò)設(shè)備識別出Client Hello消息,在消息中增加Extension擴(kuò)展字段(注:聯(lián)通取號平臺選擇的擴(kuò)展字段ID為17516),網(wǎng)絡(luò)設(shè)備在該擴(kuò)展字段插入用戶手機(jī)號碼等信息。
頭增強(qiáng)數(shù)據(jù)解析程序獲取增強(qiáng)后的Client Hello消息,從Extension擴(kuò)展字段中解析出用戶手機(jī)號碼等信息,刪除Extension擴(kuò)展內(nèi)容,并將Client Hello消息報文還原為未增強(qiáng)之前的內(nèi)容。此舉的主要原因是在TLS“握手”時,客戶端會發(fā)送Encrypted Handshake Message消息,該消息將之前發(fā)送的所有數(shù)據(jù)生成摘要,用會話密鑰(Master Secret)加密,然后由服務(wù)端進(jìn)行校驗(yàn),驗(yàn)證之前“握手”信息是否被中途篡改過。如果不刪除網(wǎng)絡(luò)設(shè)備插入的擴(kuò)展數(shù)據(jù),恢復(fù)原有報文內(nèi)容,則無法完成該校驗(yàn),從而導(dǎo)致“握手”失敗,無法成功建立通道,影響正常通信。
為了強(qiáng)化頭增強(qiáng)方案的防欺詐功能,聯(lián)通取號平臺對頭增強(qiáng)信息進(jìn)行加密傳輸,針對不同頭增強(qiáng)設(shè)備進(jìn)行了加密算法適配,支持RC4、AES、SM2等多種加密方式。
安全與風(fēng)控策略研究
針對基于OpenID和OAuth等協(xié)議的一鍵登錄技術(shù)的攻擊手段有很多,如中間人攻擊、重放攻擊、“網(wǎng)絡(luò)釣魚”、網(wǎng)絡(luò)竊聽等。聯(lián)通取號平臺的業(yè)務(wù)流程與之相似,因此同樣需要防范相關(guān)風(fēng)險。
風(fēng)控策略
在用戶登錄賬戶的過程中,攻擊者具備兩個基礎(chǔ)特征,即設(shè)備聚集性和活動聚集性。根據(jù)這些特性,為加強(qiáng)系統(tǒng)安全,聯(lián)通取號平臺在實(shí)際運(yùn)營中設(shè)立了多種風(fēng)控策略。
一是號碼風(fēng)控。同一個手機(jī)號碼,在短時間內(nèi)大量取號,會被認(rèn)為是異常行為,該號碼將被取號平臺停用取號功能一段時間。
二是應(yīng)用風(fēng)控。平臺上的應(yīng)用風(fēng)控是通過控制日總?cè)√柫亢头逯等√柫繉?shí)現(xiàn)的。用戶可自行設(shè)置每日的最高取號量和每秒最多取號量,當(dāng)超過設(shè)置的限額時,該應(yīng)用將被停用取號功能一段時間。此外,用戶還可以根據(jù)需要設(shè)置“豁免”時段,以此應(yīng)對節(jié)假日可能出現(xiàn)的業(yè)務(wù)高峰。
三是IP風(fēng)控。同一個IP在短時間內(nèi)大量取號,會被認(rèn)為是異常行為,“命中”風(fēng)控規(guī)則,該IP將被取號平臺停用取號功能一段時間。
防“釣魚”安全策略
鑒權(quán)碼取號是目前聯(lián)通取號平臺應(yīng)用最廣泛的取號產(chǎn)品。
在“釣魚”場景中,惡意應(yīng)用程序通過非法方式獲取用戶Token,從而實(shí)現(xiàn)攻擊行為。授權(quán)服務(wù)器會把授權(quán)碼和訪問令牌轉(zhuǎn)發(fā)到ret_url對應(yīng)的地址,如果攻擊者偽造ret_url對應(yīng)的地址,并誘導(dǎo)用戶發(fā)送請求,之后授權(quán)憑證將返回給攻擊者偽造的地址,從而實(shí)現(xiàn)攻擊。為防止該業(yè)務(wù)的“釣魚”攻擊風(fēng)險,聯(lián)通取號平臺設(shè)計(jì)了如下安全策略。
第一步,由手機(jī)端向取號門戶發(fā)起請求,取號門戶校驗(yàn)用戶請求的各項(xiàng)參數(shù),包括用戶的簽名是否正確等,防止被非法攻擊。
第二步,取號門戶系統(tǒng)進(jìn)行路由時,系統(tǒng)會限定地址,路由的下一跳只能是系統(tǒng)內(nèi)配置的分省前置地址或頭增強(qiáng)前置地址。
第三步,聯(lián)通取號平臺生成的鑒權(quán)碼暗含用戶和應(yīng)用的信息,僅支持用戶對該應(yīng)用的使用,避免鑒權(quán)碼泄露之后被非法使用。
第四步,聯(lián)通取號平臺重定向到請求參數(shù)中的ret_url時,校驗(yàn)該地址是否為用戶的正確地址,若為非法地址直接返回異常,取號失敗。
第五步,用戶利用鑒權(quán)碼取號時,應(yīng)用軟件采用常見的基于名單的過濾方法,校驗(yàn)用戶的IP是否在白名單內(nèi),同時校驗(yàn)用戶的簽名信息等是否正確,確保合法調(diào)用。
防熱點(diǎn)攻擊策略
隨著移動互聯(lián)網(wǎng)的普及和發(fā)展,Wi-Fi已經(jīng)成為人們生活中不可或缺的一部分,但同時也成為惡意攻擊者布下各種網(wǎng)絡(luò)陷阱的載體。2018年我國公共Wi-Fi的數(shù)量近7.37億個,而風(fēng)險Wi-Fi占比高達(dá)46.08%,Wi-Fi環(huán)境下的網(wǎng)絡(luò)安全問題成為信息安全的新困局。
在現(xiàn)實(shí)生活中,存在不少用戶打開手機(jī)熱點(diǎn)供其他用戶使用的場景,如A用戶打開熱點(diǎn),B用戶連接使用該熱點(diǎn)的Wi-Fi網(wǎng)絡(luò)。而在取號業(yè)務(wù)中,B用戶可以通過該熱點(diǎn)發(fā)起攻擊。因?yàn)樵赗adius數(shù)據(jù)方案的鑒權(quán)碼取號流程中,B通過A的網(wǎng)絡(luò)連接到前置機(jī),前置機(jī)檢測到的源地址是A用戶的私網(wǎng)IP,而Radius數(shù)據(jù)方案基于用戶私網(wǎng)IP查詢手機(jī)號,因此取號結(jié)果是A的手機(jī)號碼。在頭增強(qiáng)方案中,由于B使用的是A的網(wǎng)絡(luò),在網(wǎng)絡(luò)設(shè)備進(jìn)行頭增強(qiáng)時,在請求中插入的也是A的號碼,所以取號的結(jié)果也是A的手機(jī)號碼。
聯(lián)通取號平臺防熱點(diǎn)攻擊策略從用戶私網(wǎng)IP入手,利用SDK采集用戶的私網(wǎng)IP,取號時SDK將用戶私網(wǎng)IP發(fā)送給服務(wù)端進(jìn)行校驗(yàn),如果SDK采集的私網(wǎng)IP與前置機(jī)檢測的源IP或頭增強(qiáng)中解析出的私網(wǎng)IP不一致,則返回異常,如果一致則返回成功。
同時,取號平臺還根據(jù)請求中的TTL值(生存時間值)來判斷是否為熱點(diǎn)連接。TTL字段是由發(fā)送端初始設(shè)置的,每個處理該數(shù)據(jù)報文的路由器都需要將TTL值減1。手機(jī)正常請求的TTL值為64,而經(jīng)過熱點(diǎn)連接上的請求的TTL值為63,聯(lián)通取號平臺利用此值判斷是否為熱點(diǎn)連接,并進(jìn)行相關(guān)處理。
防取錯號策略
在Radius數(shù)據(jù)方案中,取號是根據(jù)用戶的私網(wǎng)IP來查詢用戶號碼。由于用戶的私網(wǎng)IP是動態(tài)變化的,即同一個用戶不同時段的私網(wǎng)IP可能是不同的,而且同一個私網(wǎng)IP在不同的時間段也可能分配給不同的用戶。
聯(lián)通取號平臺通過“上下線”機(jī)制來確保數(shù)據(jù)的準(zhǔn)確性。在Radius消息中有一個“Acct-Status-Type”字段,其值可能為Start(1)、Stop(2)、Update(3),分別表示用戶在網(wǎng)絡(luò)中上線、下線、狀態(tài)更新。聯(lián)通取號平臺建立以私網(wǎng)IP為索引的數(shù)據(jù)表,并根據(jù)Radius消息中“Acct-Status-Type”值對數(shù)據(jù)表進(jìn)行操作:Start則插入數(shù)據(jù)、Stop則刪除數(shù)據(jù)、Update則更新數(shù)據(jù)。
這樣的機(jī)制十分依賴數(shù)據(jù)的實(shí)時性和完整性,一旦數(shù)據(jù)采集有延時,或者數(shù)據(jù)有丟失,則會導(dǎo)致取錯號的情況發(fā)生。聯(lián)通取號平臺防范取錯號的主要策略有兩點(diǎn)。
一是數(shù)據(jù)實(shí)時性保障。前置機(jī)與核心系統(tǒng)“斷連”之后,在前置機(jī)中緩存1分鐘之內(nèi)的數(shù)據(jù),如果連接在1分鐘之內(nèi)重新建立,則前置機(jī)將緩存數(shù)據(jù)繼續(xù)發(fā)送到核心系統(tǒng)。若連接無法在1分鐘之內(nèi)重新建立,則前置機(jī)丟棄緩存數(shù)據(jù),同時核心系統(tǒng)清空該前置機(jī)所承載用戶的數(shù)據(jù),避免取錯號的發(fā)生。
二是數(shù)據(jù)完整性保障。秉承Start數(shù)據(jù)和Stop數(shù)據(jù)是成對出現(xiàn)的原則,聯(lián)通取號平臺對所有Radius消息進(jìn)行監(jiān)控,在收到某個號碼的Start消息之后,如果該號碼的下一條還是Start消息,而非Stop消息,則代表該Stop消息已經(jīng)丟失,平臺將該私網(wǎng)IP在數(shù)據(jù)表中刪除,避免取錯號。
結(jié)語
目前,聯(lián)通取號平臺對內(nèi)支撐中國聯(lián)通APP、聯(lián)通公眾APP等業(yè)務(wù),日均調(diào)用量超過20億次;對外服務(wù)今日頭條、阿里、騰訊等150家用戶的3萬余款A(yù)PP,在業(yè)內(nèi)得到了廣泛應(yīng)用,極大助力了移動互聯(lián)網(wǎng)用戶認(rèn)證安全性和便捷性的提升。本文介紹了中國聯(lián)通取號產(chǎn)品的相關(guān)應(yīng)用場景和業(yè)務(wù)流程,分析了聯(lián)通取號平臺的技術(shù)架構(gòu),提出了Radius數(shù)據(jù)方案和頭增強(qiáng)數(shù)據(jù)方案,并對各方案的現(xiàn)網(wǎng)部署實(shí)踐和關(guān)鍵技術(shù)進(jìn)行了研究。此外,還對聯(lián)通取號平臺的安全與風(fēng)控策略進(jìn)行了闡述,為電信運(yùn)營商后續(xù)相關(guān)業(yè)務(wù)平臺的建設(shè)運(yùn)營提供了參考和借鑒。
*本篇刊載于《通信世界》6月10日*
第11期 總945期
熱門跟貼