張 婷,張 鑫,張新剛
1(南陽師范學院 計算機與信息技術學院,南陽 473061)
2(南陽理工學院 軟件學院,南陽 473000)
在云計算時代,開放和共享數(shù)據(jù)的需求日益增加,為了便于用戶將資源授權給第三方應用,開放授權的思想應運而生.開放授權旨在對權限進行細粒度的控制,并且保護用戶的密碼以及認證憑據(jù).目前主要的Web2.0安全開放授權機制是:OAuth協(xié)議[1],OpenID協(xié)議[2]和IAM服務[3].
OAuth協(xié)議面向個人用戶,可對資源進行開放授權.在線授權是其特點:OAuth讓第三方無法觸及到用戶的敏感信息(如用戶名與密碼等),在認證用戶的資源所有者身份后,即可以申請獲得該用戶資源的授權[4],從而安全便捷地訪問用戶的網(wǎng)絡資源.
OpenID描述用戶分布式方式身份認證的URI框架[5],解決了傳統(tǒng)數(shù)字身份標識管理以及認證的問題.具有多種認證方式,例如用戶名/密碼的通用認證方式,或生物識別技術、智能卡等新型認證方式.服務提供商不用考慮認證機制,用戶只需要注冊獲取 OpenID 賬戶,即可在多個網(wǎng)站間登錄,而不需要重復注冊,便于用戶統(tǒng)一管理身份信息[6].
IAM服務涵蓋兩方面內(nèi)容:用戶信息管理和用戶訪問策略管理.IAM服務采用預先授權,用戶在預先知道第三方應用所需資源請求的情況下,授權客戶端使用REST API方式訪問資源.
OAuth協(xié)議工作的基本流程[1]如圖1所示.
(1)用戶打開客戶端后,客戶端要求用戶給予授權.請求會包含以下信息:用戶的身份信息,要訪問的資源路徑和操作類型等.
(2)用戶同意給予客戶端授權,并傳輸授權證據(jù).
(3)客戶端向認證服務器申請訪問令牌.此時,客戶端需提供授權證據(jù)和客戶端的憑證.
(4)客戶端通過認證服務器的認證后,得到其發(fā)放的訪問令牌.
(5)客戶端攜帶訪問令牌,向資源服務器申請獲取資源.在令牌的有效期內(nèi),客戶端可多次攜帶令牌訪問資源.(6)資源服務器驗證令牌的有效性后同意讓客戶端訪問資源.令牌的有效性包括是否過期、是否偽造、是否越權等.
圖1 OAuth協(xié)議工作原理
在OAuth 2.0中定義了四種授權方式,如表1所示.
表1 授權方式
在OAuth 2.0協(xié)議在使用授權碼模式與認證服務器進行互動時,使用到的各個參數(shù)如表2至表6所示.
表2 申請認證URI的參數(shù)含義
表3 回應URI的參數(shù)含義
表4 請求令牌的參數(shù)含義
表5 返回令牌的參數(shù)含義
表6 更新令牌的參數(shù)含義
Petri 網(wǎng)是一種基于狀態(tài)的建模方法,CPN(Colored Petri Net)是在 Petri 網(wǎng)基礎上擴展而來,具有概念簡單性以及圖形化表達的特點.Kumar和Spafford將 Petri 網(wǎng)應用于Web安全領域[7],建立了基于Petri網(wǎng)的入侵檢測模型,對入侵行為進行CPN建模,當相應模型匹配的事件序列被觸發(fā)時,表示入侵行為發(fā)生.
CPN在解決協(xié)議建模問題時具有以下的優(yōu)勢:
(1)層次化.引入了層次子網(wǎng)的結構,含有替代變遷和融合庫所,可利用多個彼此聯(lián)系的CPN網(wǎng)子模型構建復雜系統(tǒng)的整體模型.
(2)可實現(xiàn)推理.具有變遷機制,庫所被觸發(fā)后變遷到達新的庫所,因果關系明確.
(3)可處理并發(fā)或順序性問題.具有時間因子可以處理不同行為發(fā)生的時間.
(4)有較完善的仿真工具,可使用CPNTools工具進行可視化建模和仿真分析.
基于CPN的OAuth2.0協(xié)議頂層模型如圖2所示,定義模型的顏色集和變量如下:
colset DATA= String;
colset NO = INT;
colset NO*DATA =Product NO*DATA;
var success:BOOL;
圖2 OAuth2.0協(xié)議的頂層模型
庫所A表示申請認證URI,庫所B表示請求令牌,庫所C表示返回令牌,庫所D表示回應URI,庫所E表示更新令牌.庫所Type credential 表示授權證書,庫所Grant Access表示授權訪問.
申請認證URI的參數(shù)和請求令牌的參數(shù)(client_id,redirect_uri)用數(shù)據(jù)類型NO×DATA表示,回應URI的參數(shù)(code)用數(shù)據(jù)類型NO表示,返回令牌的參數(shù)(expires_in)用數(shù)據(jù)類型NO表示,更新令牌的參數(shù)(refresh_token,scope)用數(shù)據(jù)類型NO×DATA表示.
Resource Owner的執(zhí)行過程如圖3所示.用戶訪問客戶端,給客戶端授權后,認證服務器將用戶導向重定向URI,并附授權碼.
變遷Resource Owner表示客戶端將用戶導向認證服務器,變遷Receive Token表示用戶是否將授權給予客戶端.庫所NextToken表示用戶批準授權后發(fā)送的授權證據(jù).庫所Type credential 表示授權證書.庫所A表示申請認證URI,庫所D表示回應URI,庫所E表示更新令牌.
圖3 Resource Owner模型
Authorization Server的執(zhí)行過程如圖4所示.在認證服務器確認授權碼以及重定向URI無誤后之,將訪問令牌發(fā)送給客戶端.
圖4 Authorization Server模型
變遷Generate token表示客戶端向認證服務器請求訪問令牌,變遷Validate token表示驗證通過后,向客戶端返回訪問令牌.庫所A表示申請認證URI,庫所B表示請求令牌,庫所C表示返回令牌,庫所D表示回應URI.
Resource Server的執(zhí)行過程如圖5所示.客戶端攜帶訪問令牌訪問資源服務器上的資源.如果令牌在有效期內(nèi),客戶端可以多次訪問相關資源.資源服務器驗證令牌的有效性,通過驗證后,提供所需服務.
圖5 Resource Server模型
變遷Resource server表示驗證令牌的有效性.庫所NextReq表示客戶端多次攜帶令牌訪問資源.庫所Grant access表示授權訪問相應資源.庫所B表示請求令牌,庫所C表示返回令牌,庫所E表示更新令牌.
跨站請求偽造縮寫為CSRF,通過在授權用戶訪問的頁面中包含鏈接,CSRF攻擊可偽裝用戶請求,訪問受信任網(wǎng)站.CSRF攻擊者的目標站點常具有持久化授權cookie或者具有當前受信任用戶的會話cookie.為了防范CSRF攻擊,需要將類似cookie的持久化授權方法,轉換為瞬時授權方法.例如在form中包含用戶授權證據(jù)作為cookie之外的驗證.
申請認證URI的參數(shù)(client_id,redirect_uri)如果在redirect_uri中注入攻擊者提供的authorization_code,模型仿真會終止在Authorization Server的變遷validate token執(zhí)行過程中,不會訪問資源服務器上的資源.這說明從瀏覽器安全角度考慮,OAuth協(xié)議在redirect_uri中引入state參數(shù)可以防范CSRF攻擊.如果沒有state參數(shù),攻擊者可能導致客戶端訪問錯誤的資源.
本文列舉了主要的幾種Web安全開放協(xié)議,繪制了OAuth協(xié)議時序圖,使用CPN對OAuth2.0協(xié)議的授權碼模式進行層次化建模.OAuth2.0協(xié)議的模型包括頂層模型、Resource Owner模型、Authorization Server模型和Resource Server模型.并使用Petri網(wǎng)仿真工具CPNTools對OAuth2.0協(xié)議進行了仿真分析,直觀地展現(xiàn)協(xié)議運行過程和防范CSRF攻擊的特點.
1The OAuth 2.0 authorization protocol (draft-ietf-oauth-v2-16).http://tools.ietf.org/html/draft-ietf-oauth-v2-16.[2011-05-19].
2Recordon D,Reed D.OpenID 2.0:A platform for user-centric identity management.Proceedings of the 2nd ACM Workshop on Digital Identity Management.Alexandria,VA,USA.2006.11-16.
3胡剛,郭文奇,戚前方.IAM安全技術在開放平臺系統(tǒng)管理的應用.計算機工程,2005,31(S1):192-194.
4李馥娟.基于OAuth的開放授權技術及在云計算中的應用.計算機系統(tǒng)應用,2015,24(4):228-232.
5夏曄,錢松榮.OpenID身份認證系統(tǒng)的認證等級模型研究.微型電腦應用,2011,27(4):7-9.
6劉潤達,王卷樂,杜佳.OpenID:一種開放的數(shù)字身份標識管理及其認證框架.計算機應用與軟件,2008,25(12):127-129.[doi:10.3969/j.issn.1000-386X.2008.12.043]
7Kumar S,Spafford E H.A software architecture to support misuse intrusion detection [Technical Report].CSD-TR-95-009.West Lafayette,USA:Purdue University,Department of Computer Sciences,1995.