隨著互聯網絡應用的普及,越來越多的人開始使用互聯網上提供的服務。然而目前提供服務的網站大多采用用戶名、口令的方式來識別用戶身份,這使得用戶需要經常性的輸入自己的用戶名、口令。顯然這種認證方式存在著弊端:隨著用戶網絡身份的增多,用戶相應的需要記憶多組用戶名、口令,這給用戶造成記憶上的負擔;另外頻繁的輸入用戶名、口令,會相應的增大用戶的口令密碼被破解的機率。為了改變這一現狀,單點登錄技術應運而生。
單點登錄技術的核心思想是通過一定的方式使得各提供服務的網站之間建立某種聯系,用戶只需要在其中一個認證網站進行登錄后,即可實現全局登錄,當用戶再訪問其他網站時,不需要再次登錄,其身份就可以被驗證。我們可以看到采用單點登錄技術后,用戶只需要記憶一組用戶名、口令,并且在登錄多個網站時只需要輸入一次用戶名、口令,這就使得用戶可以更加安全快捷的使用互聯網上的各種服務。
單點登錄的一般模型
在單點登錄的一般模型中,一般由三部分構成:(1)用戶 (2)身份提供者 (3)服務提供者。如圖1所示。
用戶是指通過瀏覽器來使用單點登錄服務的個體。身份提供者在單點登錄中提供對個體的身份驗證服務,相當于一個權威機構。服務提供者是指具體為用戶提供某種服務的機構。用戶在身份提供者那里注冊身份,當用戶進行單點登錄時,需要在身份提供者處登錄,進行身份驗證,由身份提供者為用戶標記登錄信息。通常把用戶在身份提供者處進行的登錄稱作全局登錄。用戶在全局登錄后,當訪問其它的服務提供者時,被訪問的服務提供者首先直接與身份提供者進行交互,來詢問該用戶是否已全局登錄,如果確定該用戶已全局登錄,則允許該用戶來訪問自己提供的服務,否則將該用戶重定向到身份提供者處,進行全局登錄。
在具體的單點登錄實現中,身份提供者和服務提供者進行交互的方式不盡相同。如微軟的Passport單點登錄采用的是在重定向信息中包含加密后的驗證信息來進行交互,而自由聯盟的單點登錄規范是采用安全聲明標記語言(SAML)來進行交互的。下面本文就通過介紹當前這兩個主流的單點登錄協議:微軟Passport單點登錄協議和自由聯盟規范來進一步闡述單點登錄技術。
一、微軟Passport單點登錄協議
1.1 微軟Passport服務
提及微軟Passport單點登錄協議,我們自然要先介紹的是微軟Passport服務。在微軟的www.passport.com站點上我們可以看到微軟Passport的使用條款和通告。微軟Passport 是由微軟公司運行的一種Web 服務,該服務會使用戶登錄到網站以及執行電子商務交易的過程變得更加簡便。微軟的Passport服務是.Net戰略的一部分,通過一次登錄就可以使用戶獲得訪問很多網站的權限。微軟宣稱Passport的目的是使會員在使用互聯網和在線購物時更方便、快捷和安全,它得到了包括1-800-Flowers、CostCo、OfficeMax和Victoria Secret在內的諸多著名在線商店的支持。微軟Passport服務從本質上來說是一種由微軟控制的中央統籌式的單一登錄服務。微軟旗下的Hotmail、Messenger與ISP服務(MSN)都有加入此機制,目前約有2億個使用賬戶。
1.2 微軟Passport單點登錄協議
在微軟Passport服務模式中,有三個主體:(1)使用web瀏覽器的用戶(假設該用戶已經注冊了Passport服務),(2)服務提供者(對用戶提供某種服務的網站),(3)Passport登錄服務器。Passport登錄服務器保存著用戶的認證信息以及用戶的個人信息,服務提供者在得到用戶允許的前提下可以到Passport登錄服務器上獲取用戶個人信息。
微軟Passport單點登錄協議流程如下[1]:當一個用戶通過瀏覽器訪問一個服務提供者網站時,如果該網站需要驗證用戶的身份,就把該用戶的瀏覽器重定向到Passport登錄服務器。下一步Passport登錄服務器通過SSL連接為用戶提供一個登錄頁面,在用戶登入該服務器后,被重定向回服務提供者網站。此時認證信息被包含在重定向消息中。該認證信息使用三重DES加密算法加密,加密密鑰是由Passport登錄服務器和服務提供者網站事先協商好的。在服務提供者網站檢驗了認證信息的真實性后,即可認為該用戶成功登錄。具體流程圖可參考圖2所示。
微軟Passport單點登錄協議采用了Kerberos認證機制來完成身份認證工作。Kerberos是一種為網絡通信提供可信第三方服務的面向開放系統的認證機制。在Kerberos認證機制中,每當用戶(client)申請得到某服務程序(server)的服務時,用戶和服務程序會首先向Kerberos要求認證對方的身份,認證建立在用戶(client)和服務程序(server)對Kerberos的信任的基礎上。在申請認證時,client和server都可看成是Kerberos認證服務的用戶,為了和其它服務的用戶區別,Kerberos用戶統稱為principle,principle既可以是用戶也可以是某項服務。當用戶登錄到工作站時,Kerberos對用戶進行初始認證,通過認證的用戶可以在整個登錄時間得到相應的服務。Kerberos既不依賴用戶登錄的終端,也不依賴用戶所請求的服務的安全機制,它本身提供了認證服務器來完成用戶的認證工作[7]。簡單地說,Kerberos通過集中存儲的安全信息和分布式的“tickets”來實現用戶身份認證。具體而言,微軟Passport服務通過如下步驟實現用戶身份驗證:
1、用戶開啟客戶端應用程序或瀏覽器,打開登錄界面,并輸入用戶名、口令。
2、登錄動作引發客戶端應用程序或網站向微軟Passport請求一個登錄確認證明(即“ticket-granting-ticket”,TGT)。
3、微軟Passport驗證用戶用戶名、口令,頒發TGT,確認登錄已經成功。在滿足一定安全約束條款的前提下,該TGT在一定時期內被緩存。
4、客戶端應用程序或網站向微軟Passport提交TGT,同時請求頒發一個“會話證明”。
5、微軟Passport使用TGT來驗證客戶端的身份是否有效,確認后向相應的Web Service頒發“會話證明”。
6、客戶端向所請求的Web Service提交會話證明,經確認后,客戶端開始同Web Service進行信息交換,所有數據都經由該“會話證明”加密從而確保安全。
1.3 微軟Passport小結
雖然微軟Passport已經提供了多年的服務,但是其安全性一直為人們所置疑。首先,其中央統籌的模式是最為大眾所質疑的。因為核心的驗證服務器以及用戶個人信息服務器都是微軟一手控制的,再加上其技術細節并不對外公開,而且沒有依據某一標準,致使人們一直擔憂用戶的個人資料被泄漏。其次,微軟的Passport系統曾被個人或黑客多次入侵。這些都限制了微軟Passport服務的進一步推廣。
二、自由聯盟規范
4.1 自由聯盟(Liberty Alliance)
自由聯盟是一個聯盟機構的名稱,該聯盟的宗旨是創建一個經由與Internet相連的任何器件都能實現的具有開放性的、聯合的、單一簽字身份識別的解決方案,該機構的目標是為實現利用因特網進行交易時隨時隨地的單點登錄認證,并且進行有關標準的制訂。所有商業機構和非商業機構都可取得該機構的成員身份。加盟該機構的創始企業中有服務提供、汽車制造、金融服務、旅行業、數字媒體、零售業、電信及技術相關業界的著名企業。目前自由聯盟由170多家廠商組合,包括Sun、Nokia、American Express等,他們負責提供技術規范與商業指南來當作跨企業的身份認證服務。Liberty本身并不產生應用,這方面是由技術廠商(如Sun、Novell、Peoplesoft與HP等)來開發支持Liberty標準的兼容應用。自由聯盟規范可讓不同的服務供應商加入一個聯邦式的信賴網絡中[6]。
自由聯盟的主要目標有如下三個方面:
使個人消費者和企業用戶能夠安全保管個人信息。基此,推進無信息壟斷的、可以相互運用并跨越多個網絡的服務。
制訂實現“單點登錄”的開放標準。基此,使用戶在任何1個WWW站點通過認證后,不必接受其它站點認證就可以使用其服務。
制訂所有接入因特網的設備都可以使用的網絡認證開放標準。基此使手機、車載設備和信用卡等各種各樣的終端間都能進行安全的認證。