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