黃紅桃++陳曉杭
摘要:該文探討OpenID協(xié)議在云計(jì)算身份認(rèn)證中可能存在的各種風(fēng)險(xiǎn),針對(duì)網(wǎng)絡(luò)竊聽的風(fēng)險(xiǎn),提出一種采用流密碼加密URL的改進(jìn)方案。
關(guān)鍵詞:云計(jì)算;網(wǎng)絡(luò)安全;OpenID協(xié)議
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)29-0021-02
The Risks and Improvement of OpenID Protocol in Identity Authentication based on Cloud Computing
HUANG Hong-tao, CHEN Xiao-hang
(Guangdong University of Foreign Studies, Guangzhou 510006, China)
Abstract: This paper discusses the possible risks of OpenID protocol in identity authentication based on cloud computing, and presents an improved scheme for URL encryption based on stream cipher in order to prevent network eavesdropping.
Key words: cloud computing; network security; OpenID protocol
隨著云計(jì)算概念的普及,一些大型的門戶網(wǎng)站開始使用云計(jì)算為用戶提供更便利的服務(wù),最基本的協(xié)議之一就是OpenID。隨著該協(xié)議被廣泛應(yīng)用,其安全性問題也受到了關(guān)注,成為影響云計(jì)算大范圍應(yīng)用的一個(gè)因素。
1 OpenID協(xié)議的基本原理
1.1 OpenID的概念
OpenID是一個(gè)分布式身份認(rèn)證系統(tǒng)。對(duì)于用戶來說,只需要在一個(gè)中心網(wǎng)站上面注冊(cè)過后,憑借注冊(cè)后獲得的OpenID URL,就可以不必在其他同樣支持OpenID協(xié)議的網(wǎng)站上再次注冊(cè),免去用戶在不同網(wǎng)站上面頻繁的注冊(cè)活動(dòng)和省去了對(duì)不同帳號(hào)密碼的記憶,達(dá)到憑一個(gè)賬號(hào)可以在多個(gè)網(wǎng)站登錄的效果。而對(duì)于服務(wù)提供者來說,利用中心網(wǎng)站提供的OpenID,不僅可以省去對(duì)用戶賬號(hào)的添加、刪除、修改等管理工作,還可以快速沿用中心網(wǎng)站的龐大用戶群。
使用 OpenID時(shí),URL就是用戶的OpenID身份認(rèn)證,可在多個(gè)網(wǎng)站上進(jìn)行登錄。URL的構(gòu)成有兩部分:賬號(hào)名和提供OpenID身份的網(wǎng)址。例如:在中心網(wǎng)站openid.com上的賬號(hào)是:user,對(duì)應(yīng)的URL就是:http://user.openid.com/[1]。
1.2 OpenID的工作原理
1.2.1 角色定義
用戶User (通常指用戶瀏覽器)
服務(wù)提供者RP( Relying Party, 又稱為Service Provider)
身份提供者OP( OpenID Provider, 又稱為OpenID Server)
1.2.2 OpenID的工作流程
1)用戶需要使用服務(wù)提供者RP的某項(xiàng)服務(wù),首先提供自己的身份,即上面所述OpenID URL。
2)RP根據(jù)用戶的OpenID URL 與身份提供者OP進(jìn)行通信。有兩種通信模式:一種是不提示用戶在后臺(tái)進(jìn)行;更常見的是第二種:RP在同一個(gè)瀏覽器窗口將用戶引導(dǎo)到OP的身份認(rèn)證頁面。
3)用戶在認(rèn)證頁面輸入在OP之前設(shè)定的密碼,向OP表明身份,完成認(rèn)證。
4)認(rèn)證結(jié)束,OP將用戶引導(dǎo)回到RP,同時(shí)返回的信息包含認(rèn)證用戶的結(jié)果判斷,以及RP需要的一些其他信息。
5)RP判斷返回信息的有效性,如果認(rèn)證成功,用戶即可使用相應(yīng)的服務(wù)[2]。
2 OpenID可能存在的風(fēng)險(xiǎn)
2.1 拒絕服務(wù)攻擊
對(duì)于RP的連接請(qǐng)求,OpenID協(xié)議本身并沒有設(shè)置檢查機(jī)制,無法判斷一個(gè)請(qǐng)求是否原始請(qǐng)求。惡意的RP可以重復(fù)請(qǐng)求連接, 認(rèn)證或簽名驗(yàn)證,并且在每個(gè)消息上指定系數(shù)與生成器,導(dǎo)致OP疲于運(yùn)行每個(gè)消息,無法響應(yīng)其他正常請(qǐng)求[3]。
2.2 網(wǎng)絡(luò)釣魚
RP將用戶引導(dǎo)到OP的身份認(rèn)證頁面時(shí),存在網(wǎng)絡(luò)釣魚攻擊的風(fēng)險(xiǎn)。例如:惡意的RP事先構(gòu)建某些提供OP服務(wù)的釣魚網(wǎng)站,當(dāng)用戶輸入其URL后,將用戶重定向到偽造的頁面,等用戶輸入密碼后再跳轉(zhuǎn)回RP網(wǎng)站。表面看來用戶以為自己認(rèn)證成功,但此時(shí)用戶的OpenID和密碼已被惡意RP竊取。
2.3 網(wǎng)絡(luò)竊聽
從OpenID的認(rèn)證流程來看,當(dāng)認(rèn)證成功時(shí)會(huì)返回認(rèn)證結(jié)果給服務(wù)提供者RP,同時(shí)伴隨傳送的還有用戶的一些信息,例如OpenID URL,這個(gè)URL很容易被人截獲并加以利用,攻擊者可以從中截取一個(gè)成功的認(rèn)證并重用[4]。
3 改進(jìn)方案
3.1 選中的改進(jìn)點(diǎn)
針對(duì)網(wǎng)絡(luò)竊聽,在OpenID身份提供者和服務(wù)提供者之間通過共享密鑰的方法來應(yīng)對(duì)。這里采用一個(gè)固定長(zhǎng)度的隨機(jī)字符串來加密URL,考慮采用RC4流密碼算法,加密后再把這個(gè)隨機(jī)字符串放到密文的前面。因?yàn)橹耙呀?jīng)協(xié)商好,服務(wù)提供者就能知道提取前面多少位的字符串來做為解密用的密鑰,從而進(jìn)行解密,得到正確的OpenID URL。
3.2 改進(jìn)算法
流密碼是指每次只加密數(shù)據(jù)流的一位或一個(gè)字節(jié)的加密方法。1949年,香農(nóng)(Shannon)提出只要一次一密的密碼體制是絕對(duì)安全的,如果密鑰流是隨機(jī)的,除非是獲得了密鑰流,否則這個(gè)密碼是不可破的。
基于這種思想,用隨機(jī)生成的5位數(shù)字作為密鑰來對(duì)產(chǎn)生的OpenID進(jìn)行加密,由于密鑰流的隨機(jī)性和一次性,同一個(gè)OpenID的加密結(jié)果每次都是不同的,這樣就能有效地對(duì)抗網(wǎng)絡(luò)竊聽。而這個(gè)隨機(jī)密鑰流要如何傳送到服務(wù)提供端,有兩種思路:第一種是把密鑰流也加入到密文中,即使密鑰流被人截獲,也比較難判斷出哪一部分是密鑰了;第二種是以某種特定算法將密鑰流再次進(jìn)行加密然后通過TCP認(rèn)證過程中傳輸?shù)淖侄螌⑵鋫鬏斀o服務(wù)提供方,服務(wù)提供者再用協(xié)商好的解密方法去獲得密鑰流。這里簡(jiǎn)單起見,采用第1種方法。
舉例如下:假設(shè)在經(jīng)過OpenID的驗(yàn)證之后,OpenID服務(wù)器要返回給服務(wù)提供者的URL為http://test.openid.com/ 而隨機(jī)生成的5位隨機(jī)數(shù)字為12345,利用這5位隨機(jī)數(shù)字對(duì)OpenID URL進(jìn)行一輪加密后得到的結(jié)果可能為grql5.-qans,ll`mga*^m-,此時(shí)再將5位隨機(jī)數(shù)字附加在密文前面,得出結(jié)果為:12345grql5.-qans,ll`mga*^m-,以此作為驗(yàn)證成功的數(shù)據(jù)發(fā)送給服務(wù)提供方,當(dāng)然也可以把密鑰流拆散放在密文當(dāng)中的固定位置。當(dāng)服務(wù)提供者接收到這樣的密文時(shí),由于事先協(xié)商好解密方法,知道應(yīng)該提取前面的5位字符來做為解密密鑰,從而成功地獲得用戶的OpenID URL。而竊聽方由于不知道密鑰的位數(shù)、位置和加密算法,想要憑借截獲的密文去獲取用戶的OpenID將變得較為困難。
4 結(jié)束語
本文首先闡述了OpenID協(xié)議的原理,接下來分析協(xié)議用于身份認(rèn)證中存在的風(fēng)險(xiǎn),最后針對(duì)網(wǎng)絡(luò)竊聽,設(shè)計(jì)了一種基于RC4流密碼的加密方案,對(duì)用戶的身份:OpenID URL進(jìn)行加密。由于采用一次一密的方法,較好的預(yù)防了網(wǎng)絡(luò)竊聽。
參考文獻(xiàn):
[1] 豆丁網(wǎng). 什么是OpenID?OpenID概念、原理和案例介紹[EB/OL]. (2012).http://www.docin.com/p-65565629.html.
[2] 劉為, 郝梅. 利用OpenID和OAuth進(jìn)行安全授權(quán)及風(fēng)險(xiǎn)防范的分析[J]. 武漢商業(yè)服務(wù)學(xué)院學(xué)報(bào), 2011, 25(5): 90-93.
[3] 張明西, 劉暉. OpenID標(biāo)準(zhǔn)化認(rèn)證機(jī)制的研究與應(yīng)用[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2010,27(7): 61-62.
[4] 張明西. OpenID多級(jí)安全問題研究[D]. 上海: 東華大學(xué), 2009.