1 引言
無線數(shù)碼相框平臺(tái)是一個(gè)綜合平臺(tái),提供對(duì)類無線數(shù)碼相框終端的管理、類無線數(shù)碼相框終端與平臺(tái)接入能力支撐、類無線數(shù)碼相框終端相關(guān)業(yè)務(wù)加載運(yùn)行能力,其業(yè)務(wù)模式包含親情速遞和G3傳媒等。親情速遞是一種以無線數(shù)碼相框?yàn)檩d體,實(shí)現(xiàn)隨時(shí)隨地照片分享,同時(shí)附加天氣預(yù)報(bào)、熱點(diǎn)資訊免費(fèi)增值服務(wù)的業(yè)務(wù),是進(jìn)入家庭信息化領(lǐng)域的重要手段。G3傳媒則以親情速遞業(yè)務(wù)為基礎(chǔ),可以實(shí)現(xiàn)廣告在線發(fā)布和終端遠(yuǎn)程管理,打造一種新型的廣告?zhèn)髅侥J?。無線數(shù)碼相框終端是一個(gè)具備移動(dòng)通信模塊的數(shù)碼相框,是通過液晶屏幕向用戶顯示電子照片的小型電子類消費(fèi)產(chǎn)品。可放置在各種地方(如家中、辦公室、車內(nèi)等)用作照片的展示。無線數(shù)碼相框業(yè)務(wù)系統(tǒng)的結(jié)構(gòu)如圖1所示。

圖1 無線數(shù)碼相框業(yè)務(wù)系統(tǒng)結(jié)構(gòu)
無線數(shù)碼相框業(yè)務(wù)系統(tǒng)主要包括接入?yún)f(xié)議適配層、業(yè)務(wù)核心層和發(fā)送協(xié)議適配層。安全性是所有可以用來對(duì)資源或信息進(jìn)行保護(hù)和驗(yàn)證的機(jī)制。授權(quán)管理處在業(yè)務(wù)核心層,用于識(shí)別用戶身份,允許特定用戶訪問特定資源或信息,起訪問控制作用,保證系統(tǒng)資源和信息的安全。
無線數(shù)碼相框平臺(tái)業(yè)務(wù)包含以下多種認(rèn)證授權(quán)方式:
(1)用戶門戶和管理門戶采用用戶名和密碼進(jìn)行認(rèn)證。
?。?)平臺(tái)與終端采用HTTP(Hyper Text Transfer Protocol,超文本傳輸協(xié)議)Digest的方式進(jìn)行認(rèn)證。
?。?)平臺(tái)與第三方應(yīng)用采用OAuth的方式進(jìn)行認(rèn)證。
?。?)平臺(tái)與短信網(wǎng)關(guān)采用CMPP(China Mobile Peer to Peer,中國移動(dòng)點(diǎn)對(duì)點(diǎn)協(xié)議)的認(rèn)證方式。
?。?)平臺(tái)與彩信中心采用MM7(Multimedia Message,多媒體消息即彩信)的認(rèn)證方式。
?。?)平臺(tái)與BOSS(Business & Operation Support System,業(yè)務(wù)運(yùn)營支撐系統(tǒng))采用BOSS規(guī)定的認(rèn)證方式。
由于文章篇幅限制,本文只介紹前3種認(rèn)證方式的設(shè)計(jì)和實(shí)現(xiàn)。
2 認(rèn)證授權(quán)流程設(shè)計(jì)與實(shí)現(xiàn)
2.1 基于用戶名密碼的認(rèn)證
HTTP基本認(rèn)證應(yīng)用在Web Portal,是目前最常見的用戶身份認(rèn)證的方式之一。無線數(shù)碼相框平臺(tái)用戶門戶和管理門戶都涉及用戶名密碼登錄,使用HTTP基本認(rèn)證。用戶登錄門戶時(shí)輸入正確用戶名密碼即可進(jìn)入自己的頁面。考慮到機(jī)器人登錄和密碼截取等因素,在一般用戶名密碼驗(yàn)證的情形下,對(duì)以下幾點(diǎn)進(jìn)行了增強(qiáng):
(1)驗(yàn)證碼校驗(yàn)
驗(yàn)證碼是一種區(qū)分用戶是計(jì)算機(jī)和人的公共全自動(dòng)程序。可以防止惡意破解密碼,有效防止某個(gè)黑客對(duì)某一個(gè)特定注冊(cè)用戶用特定程序暴力破解方式進(jìn)行不斷的登錄嘗試。
(2)密碼再加密
表單提交事件前對(duì)輸入的密碼再加密,防止密碼在提交時(shí)被截獲。移動(dòng)領(lǐng)域基于密碼的認(rèn)證安全性可以得到保證,只要相應(yīng)的密鑰建立方案合理有效。類似地,密碼再加密也可以采用合理有效的密鑰建立協(xié)議。對(duì)于WDPF系統(tǒng)門戶的密碼再加密使用常見加密算法即可,否則會(huì)舍本求末。
(3)限制密碼域使用
雖然在密碼域中已經(jīng)將所輸入的字符以掩碼形式顯示了,但是它并沒有實(shí)現(xiàn)真正保密,因?yàn)橛脩艨梢酝ㄟ^復(fù)制該密碼域中的內(nèi)容,并將復(fù)制的密碼粘貼到其他文檔中查看到密碼。為實(shí)現(xiàn)密碼的真正安全,可將密碼域的復(fù)制功能屏蔽,同時(shí)將密碼域的掩碼符號(hào)也進(jìn)行改變。實(shí)現(xiàn)密碼域的內(nèi)容禁止復(fù)制的功能主要是通過控制其Oncopy,Oncut,Onpaste事件實(shí)現(xiàn)的。
。
此外,提高基本認(rèn)證安全性措施還可以綁定用戶手機(jī)使用一次性隨機(jī)碼,安裝密碼域安全插件等。
2.2 基于HTTP摘要的認(rèn)證
為了保證業(yè)務(wù)終端和服務(wù)器之間交互的安全性,業(yè)務(wù)規(guī)范中采用HTTP Digest方式進(jìn)行終端注冊(cè)和消息保護(hù)。在該過程中,雙方需要有特定的密鑰對(duì)消息頭內(nèi)容進(jìn)行摘要和對(duì)摘要進(jìn)行認(rèn)證。通過此方式,終端和服務(wù)器對(duì)彼此進(jìn)行身份認(rèn)證,并保證消息防篡改。HTTP Digest摘要認(rèn)證請(qǐng)求基于Diameter基本協(xié)議實(shí)現(xiàn)。
Diameter基本協(xié)議為移動(dòng)IP(Internet Protocol,網(wǎng)際協(xié)議),網(wǎng)絡(luò)接入服務(wù)等應(yīng)用提供最基本的服務(wù)(如用戶會(huì)話、計(jì)費(fèi)等),具有能力協(xié)商、差錯(cuò)通知等功能。協(xié)議元素由眾多命令和AVP(Attribute-Value Pair,屬性值對(duì))構(gòu)成,可以在客戶機(jī)、代理、服務(wù)器之間傳遞鑒別,授權(quán)和計(jì)費(fèi)信息。但是不管客戶機(jī)、代理還是服務(wù)器,都可以主動(dòng)發(fā)出會(huì)話請(qǐng)求,對(duì)方給予應(yīng)答,所以也叫對(duì)等實(shí)體之間的協(xié)議。命令代碼,AVP值和種類都可以按應(yīng)用需要和規(guī)則進(jìn)行擴(kuò)展。
通過使用HTTP Digest方式進(jìn)行鑒權(quán),完成客戶端和服務(wù)器間的雙向認(rèn)證,系統(tǒng)默認(rèn)使用MD5摘要算法。
2.2.1 摘要計(jì)算算法
(1)客戶端請(qǐng)求服務(wù)器的請(qǐng)求消息摘要計(jì)算算法如下:
response=MD5(MD5(A1)“:”unq(nonce-value)“:”nc-value“:”unq(cnonce-value)“:”unq(qop-value)“:”MD5(A2))。
A1=unq(username-value)“:”unq(realm-value)“:”passwd。
Qop=auth或無值時(shí),A2=Method“:”digest-uri-value。
Qop=auth-int時(shí),A2=Method“:”digest-uri-value“:”MD5(entity-body)。
(2)服務(wù)器返回客戶端的響應(yīng)消息摘要計(jì)算算法如下:
respauth=MD5(MD5(A1)“:”unq(nonce-value)“:”nc-value“:”unq(cnonce-value)“:”unq(qop-value) “:”MD5(A2))。
A1=unq(username-value)“:”unq(realm-value)“:”passwd。
Qop=auth或無值時(shí),A2=“:”digest-uri-value。
Qop=auth-int時(shí),A2=“:”digest-uri-value“:”MD5(entity-body)。
其中,Method=GET;unq(X)代表去掉X前后的引號(hào);Entity-body代表HTTP請(qǐng)求的消息體;Passwd代表客戶端和服務(wù)器間共享的私鑰。
2.2.2 摘要認(rèn)證流程
當(dāng)終端需要與WDPF進(jìn)行業(yè)務(wù)交互時(shí),可通過Digest Verify接口從WDPF獲得終端摘要認(rèn)證消息的驗(yàn)證結(jié)果。
(1)終端組裝Digest_Verify.REQ消息給WDPF。
(2)WDPF執(zhí)行摘要認(rèn)證消息的計(jì)算和摘要認(rèn)證結(jié)果的對(duì)比,WDPF將執(zhí)行結(jié)果Result Code AVP封裝在Digest_Verify.RES消息返回給終端。
實(shí)現(xiàn)HTTP Digest請(qǐng)求使用以下3組Diameter命令(見表1)。
表1 摘要認(rèn)證Diameter消息

●CER/CEA:在傳送連接建立時(shí),兩個(gè)Diameter節(jié)點(diǎn)進(jìn)行交換的第一個(gè)Diameter消息為CER/CEA。該消息包括節(jié)點(diǎn)的標(biāo)識(shí)和它的能力(協(xié)議版本號(hào),支持的Diameter應(yīng)用,支持的安全機(jī)制等)。
●DWR/DWA:一旦傳送層或應(yīng)用層發(fā)生故障,Diameter需要立即發(fā)現(xiàn)并采取正確的行動(dòng)。Diameter檢測(cè)故障的機(jī)制基于應(yīng)用層監(jiān)督。當(dāng)兩個(gè)Diameter節(jié)點(diǎn)建立通信時(shí),如果一個(gè)節(jié)點(diǎn)發(fā)送請(qǐng)求,并在規(guī)定的時(shí)間內(nèi)沒有收到應(yīng)答,就可以檢測(cè)到傳送層或應(yīng)用層出現(xiàn)了故障。如果沒有定期的通信,就無法檢測(cè)到潛在的故障。通過在Diameter節(jié)點(diǎn)發(fā)送DWR消息,檢測(cè)傳送層和應(yīng)用層,從而解決了上述問題。若沒有收到DWA,則可以斷定有故障發(fā)生。
●DVR/DVA:以上兩組Diameter消息中,CER/CEA保證了節(jié)點(diǎn)有權(quán)限和服務(wù)器進(jìn)行能力交互,DWR/DWA保證了客戶端和服務(wù)器之間鏈路的順暢,在此基礎(chǔ)之上DVR/DVA消息才是真正實(shí)現(xiàn)摘要認(rèn)證,客戶端攜帶Digest-Username AVP,Digest-Realm AVP,Digest-Nonce AVP等RADIUS(Remote Authentication Dial In User Service,遠(yuǎn)程認(rèn)證撥號(hào)用戶服務(wù))應(yīng)用于Digest認(rèn)證的擴(kuò)展,根據(jù)客戶端和服務(wù)器間的雙向認(rèn)證實(shí)現(xiàn)HTTP Digest的算法計(jì)算應(yīng)答認(rèn)證值并存儲(chǔ)在Digest-Response-Auth AVP值域通過DVA消息返回。
2.3 基于OAuth的認(rèn)證授權(quán)
數(shù)碼相框平臺(tái)圖片社區(qū)提供數(shù)碼相框終端圖片上傳、同步、存儲(chǔ)、欣賞和分享等基本功能,也可以整合第三方應(yīng)用,比如Flickr,又拍網(wǎng)等圖片應(yīng)用,Google地圖,日歷等應(yīng)用,還可以作為獨(dú)立的應(yīng)用開放API提供給數(shù)碼相框平臺(tái)其他模塊或其他網(wǎng)站使用。無論作為第三方應(yīng)用的提供者還是消費(fèi)方,用戶需要授權(quán)第三方應(yīng)用使用自己的數(shù)據(jù)或資源,傳統(tǒng)的用戶名口令授權(quán)容易被截獲用戶名和密碼,泄露用戶信息,安全性很難得以保證。
OAuth協(xié)議為用戶資源的授權(quán)提供了一個(gè)安全的、開放而又簡易的標(biāo)準(zhǔn)。與以往的授權(quán)方式不同之處是OAuth的授權(quán)不會(huì)使第三方觸及到用戶的賬號(hào)信息(如用戶名與密碼),即第三方無需使用用戶的用戶名與密碼就可以申請(qǐng)獲得該用戶資源的授權(quán),因此OAuth是安全的。同時(shí),任何第三方都可以使用OAuth認(rèn)證服務(wù),任何服務(wù)提供商都可以實(shí)現(xiàn)自身的OAuth認(rèn)證服務(wù),因而OAuth是開放的。業(yè)界提供了OAuth的多種實(shí)現(xiàn)如PHP,JavaScript,Java,Ruby等各種語言開發(fā)包,大大節(jié)約了程序員的時(shí)間,因而OAuth是簡易的。目前,互聯(lián)網(wǎng)很多服務(wù)如Open API,很多公司如Google,Yahoo,Microsoft等都提供了OAuth認(rèn)證服務(wù),這些都足以說明OAuth標(biāo)準(zhǔn)逐漸成為開放資源授權(quán)的標(biāo)準(zhǔn)。OAuth認(rèn)證流程如圖2所示。

圖2 圖片社區(qū)OAuth認(rèn)證流程
(1)每步執(zhí)行信息
●消費(fèi)方(第三方應(yīng)用)向圖片社區(qū)(OAuth服務(wù)提供商)請(qǐng)求未授權(quán)的Request Token。向Request Token URL發(fā)起請(qǐng)求,請(qǐng)求需要帶上的參數(shù)見圖2。
●圖片社區(qū)同意消費(fèi)方的請(qǐng)求,并向其頒發(fā)未經(jīng)用戶授權(quán)的oauth_token與對(duì)應(yīng)的oauth_token_secret,并返回給消費(fèi)方。
●消費(fèi)方向圖片社區(qū)請(qǐng)求用戶授權(quán)的Request Token。向User Authorization URL發(fā)起請(qǐng)求,請(qǐng)求帶上上步拿到的未授權(quán)的token與其密鑰。
●圖片社區(qū)將引導(dǎo)用戶授權(quán)。該過程可能會(huì)提示用戶,你想將哪些受保護(hù)的資源授權(quán)給該應(yīng)用。此步可能會(huì)返回授權(quán)的Request Token也可能不返回。如Yahoo OAuth就不會(huì)返回任何信息給消費(fèi)方。
●Request Token授權(quán)后,消費(fèi)方將向Access Token URL發(fā)起請(qǐng)求,將上步授權(quán)的Request Token換取成Access Token。請(qǐng)求的參數(shù)見圖2,這個(gè)比第一步A多了一個(gè)參數(shù)就是Request Token。
●圖片社區(qū)同意消費(fèi)方的請(qǐng)求,并向其頒發(fā)Access Token與對(duì)應(yīng)的密鑰,并返回給消費(fèi)方。
●消費(fèi)方以后就可以使用上步返回的Access Token訪問用戶授權(quán)的資源。
圖片社區(qū)通過以下4個(gè)步驟來完成認(rèn)證授權(quán)并訪問或修改受限資源的流程:
①獲取未授權(quán)的Request Token。通過訪問http://home-g3.com/request_token獲取未授權(quán)的Request Token,返回值包括未授權(quán)的Request Token和對(duì)應(yīng)的Request Token Secret。
②請(qǐng)求用戶授權(quán)Request Token。獲得Request Token之后,需要請(qǐng)求用戶授權(quán)該Request Token。你需要將瀏覽器跳轉(zhuǎn)到http://home-g3.com/authorize(如果無法自動(dòng)跳轉(zhuǎn),則需要提示用戶手工跳轉(zhuǎn))。這會(huì)是一個(gè)圖片社區(qū)上的頁面,提示用戶授權(quán)給你的應(yīng)用,以允許你的應(yīng)用訪問該用戶在圖片社區(qū)上的信息。跳轉(zhuǎn)后用戶會(huì)看到請(qǐng)求授權(quán)的頁面,用戶可以選擇同意或者拒絕授權(quán)。
③使用授權(quán)后的Request Token換取Access Token。用戶完成授權(quán)后,第三方應(yīng)用可以通過訪問http://home-g3.com/access_token,將已授權(quán)的Request Token換取Access Token。Access Token將被用于訪問或修改受限資源。返回值包括授權(quán)的Access Token,對(duì)應(yīng)的Access Token Secret。
④使用Access Token訪問或修改受保護(hù)資源。獲得Access Token之后,第三方應(yīng)用就可以使用Access Token訪問或修改受保護(hù)的資源。
3 結(jié)束語
根據(jù)數(shù)碼相框業(yè)務(wù)平臺(tái)不同模塊的特性,采取不同的認(rèn)證方式并進(jìn)行一定的加強(qiáng),保證了不同模塊功能的安全以及一定的簡易性。用戶登錄部分采用驗(yàn)證碼校驗(yàn)、密碼再加密和加強(qiáng)的密碼域,HTTP摘要認(rèn)證采用Diameter協(xié)議實(shí)現(xiàn),第三方應(yīng)用使用圖片社區(qū)服務(wù)基于OAuth協(xié)議實(shí)現(xiàn)等,不但符合各自性能要求,而且保障各自的安全性。
