網站上的單點登錄研究

由 webmaster 在 四, 2011/12/29 - 20:31 發表

 

隨著互聯網絡應用的普及,越來越多的人開始使用互聯網上提供的服務。然而目前提供服務的網站大多采用用戶名、口令的方式來識別用戶身份,這使得用戶需要經常性的輸入自己的用戶名、口令。顯然這種認證方式存在著弊端:隨著用戶網絡身份的增多,用戶相應的需要記憶多組用戶名、口令,這給用戶造成記憶上的負擔;另外頻繁的輸入用戶名、口令,會相應的增大用戶的口令密碼被破解的機率。為了改變這一現狀,單點登錄技術應運而生。單點登錄技術的核心思想是通過一定的方式使得各提供服務的網站之間建立某種聯繫,用戶只需要在其中一個認證網站進行登錄後,即可實現全局登錄,當用戶再訪問其他網站時,不需要再次登錄,其身份就可以被驗證。我們可以看到採用單點登錄技術後,用戶只需要記憶一組用戶名、口令,並且在登錄多個網站時只需要輸入一次用戶名、口令,這就使得用戶可以更加安全快捷的使用互聯網上的各種服務。

單點登錄的一般模型

在單點登錄的一般模型中,一般由三部分構成:(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-800-Flowers      

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. 使個人消費者和企業用戶能夠安全保管個人信息。基此,推進無信息壟斷的、可以相互運用並跨越多個網絡的服務。
  2. 制訂實現“單點登錄”的開放標準。基此,使用戶在任何1個WWW站點通過認證後,不必接受其它站點認證就可以使用其服務。
  3. 制訂所有接入因特網的設備都可以使用的網絡認證開放標準。基此使手機、車載設備和信用卡等各種各樣的終端間都能進行安全的認證。

4.2自由聯盟規範

自由聯盟於美國當地時間2003年3月11日公佈了單點登錄架構“Liberty Alliance Federated Network Identity Architecture”的概要及其發展藍圖。自由聯盟聲稱利用該架構能夠解決眾多阻礙Web認證服務的技術性障礙。

自由聯盟分兩個階段公佈支持該架構的規範――自由聯盟規範。在第一階段,自由聯盟於2002年7月公佈了作為聯盟用戶管理基礎的規格集“Liberty Alliance Identity Federation Framework(ID-FF,自由聯盟統一聯合框架)”,並於2003年1月進行了修訂。ID-FF支持將已經具有關係的多用戶信息進行聯合或鏈接,使用戶一次登錄即可享受多家企業提供的服務。在第二階段,自由聯盟在2003年內強化ID-FF,並發表了“Identity Web Services Framework(ID-WSF,統一Web服務框架)”。ID-WSF公佈了構築基於相互認證的Web服務所需關鍵技術的概要。自由聯盟認為這種Web服務符合特定的工作目的,在共享用戶信息方面,保護個人隱私和系統安全。另外,自由聯盟還將提供基於ID-WSF的規格集“Liberty Alliance Identity Services Interface Specifications(ID-SIS,自由聯盟統一服務接口規範)”。這樣,企業就可以使用標準方法提供特徵登記/聯繫地址/日曆/位置信息和報警服務等[3]。

4.3 自由聯盟具體協議

在自由聯盟規範中定義了四個具體的協議[2]:

  1. 單點登錄以及身份聯合
  2. 名字註冊
  3. 身份聯合終止聲明
  4. 單點退出

與微軟Passport相同,自由聯盟具體協議也具有三個主體,它們分別是:

  1. 主體(Principals),(類同微軟Passport中的用戶)
  2. 服務提供者(Service Providers)
  3. 身份提供者(Identity Providers)

其中服務提供者類同於微軟Passport中的服務提供者,均是指為用戶提供某種服務的網站。自由聯盟中的身份提供者是一種特殊的服務提供者,它為其他的主體提供身份認證、主體信息訪問控制等服務,雖然它的作用等同於微軟Passport中的Passport登錄服務器,但不同之處在於自由聯盟中的身份提供者並不是唯一的,而可以是多個且相互獨立存在的,這點是與微軟Passport的中央統籌式的單一登錄服務有著根本區別的。

下面我們進一步討論一下自由聯盟具體協議中的單點登錄以及身份聯合。單點登錄以及身份聯合是自由聯盟具體協議中最複雜的協議。該協議在很大程度上依賴於安全聲明標記語言(SAML)。首先讓我們了解一下SAML。SAML並不是一項新技術。確切地說,它是一種語言,進行單一的XML描述,允許不同安全系統產生的信息進行交換。SAML在標準行業傳輸協議環境里工作,例如HTTP、SMTP和FTP;同時也服務於各種各樣的XML文件交換框架,如:SOAP和BizTalk。SAML具備的一個最突出的好處,是使用戶能夠通過因特網進行安全證書移動。SAML的工作原理如下[5]:

  1. 用戶向認證機構提交證書。
  2. 認證機構對用戶的證書進行斷言,並且產生一個認證聲明以及一個或更多的屬性聲明(如用戶的資料信息)。此時用戶立即就會得到由SAML斷言的認證和識別標誌。
  3. 用戶使用這個SAML標誌(認證聲明)嘗試訪問一個受保護的資源。
  4. 用戶對保護資源的訪問請求被PEP(Policy Enforcement Point)截取,同時用戶的SAML標誌(認證聲明)被PEP提交給屬性管理。
  5. 屬性管理或PDP(Policy Decision Point)基於自身的政策標準產生一個決定。如果批准用戶對該保護資源進行訪問,就會產生一個附加在SAML標誌(認證聲明)上的屬性聲明。用戶的SAML標誌(認證聲明)就能夠以單點登錄方式呈現給信任的商業夥伴。

下面簡單介紹一下自由聯盟單點登錄協議的流程,其流程同微軟Passport單點登錄協議流程大致相同,不同之處是:在自由聯盟中身份提供者並不是通過重定向消息來將認證消息傳遞給服務提供者的,而是通過SAML與服務提供者交互來完成的。具體流程可參考圖3。

4.4 自由聯盟規范小結

與微軟Passport不同,自由聯盟規範依據了OASIS產業標準,它不是中央統籌式的單一登錄模式,而是一種相對公允的模式,在其信任圈中可以存在多個獨立的身份提供者。但目前自由聯盟規範仍處於研究階段,並且其本身的高複雜性導致目前還沒有像微軟Passport服務那樣有成型的應用服務。

以個人域名作為身份標識的單點登錄系統

下面介紹的是筆者接合對微軟Passport以及自由聯盟單點登錄協議的研究,設計開發的一個以個人域名作為身份標識的單點登錄系統。該系統開發環境為:操作系統Linux 9 、腳本語言PHP5、數據庫mysql 。

本系統由三部分組成:(a)IDP服務器(個人域名認證服務器) (b)SP1服務器(服務提供者1) (c)SP2服務器(服務提供者2)。其中IDP相當於Passport中的登錄服務器,作用是驗證用戶身份,SP1、SP2為模擬的兩個服務提供者。

從上文中我們可以了解到,微軟Passport以及自由聯盟為確保其單點登錄系統中登錄賬戶的唯一性、可信性,都設置了專門的身份認證服務器。而在筆者設計的單點登錄系統中直接採用個人域名來作為身份標識,即通過個人域名認證服務器來確保登錄賬戶的唯一性、可信性。眾所周知,域名類似於互聯網上的門牌號碼,是用於識別和定位互聯網上計算機的層次結構式字符標識,與該計算機的互聯網協議(IP)地址相對應。同樣,面向個人開放的個人域名好比是互聯網上的身份證,也具有唯一性、權威性的特徵。因而將個人域名作為單點登錄系統中的登錄賬戶,不僅能夠確保單點登錄系統中身份的可信性,還能減少單點登錄系統的開發成本,從而有利於單點登錄系統的推廣。

本系統單點登錄流程如下:用戶在IDP可以註冊個人域名作為登錄賬戶,用作單點登錄時的口令。用戶在IDP可以直接進行全局登錄,在SP1、SP2也可通過超鏈接到IDP的登錄頁面進行全局登錄。在用戶全局登錄後,IDP在用戶瀏覽器中設置cookie,cookie中存入已加密的信息,該信息用於表明用戶已全局登錄。全局登錄後,當用戶訪問某一SP時,該SP自動將瀏覽器重定向到IDP,詢問IDP該用戶是否已全局登錄,此時IDP檢查用戶瀏覽器中的cookie來判斷用戶是否已登錄,然後IDP將用戶瀏覽器重定向回​​SP,並在重定向信息中包含驗證信息,SP通過讀取驗證信息來判斷該用戶是否已全局登錄。如果判斷通過,則允許該用戶訪問其服務;如果判斷沒有通過,則SP將用戶指向SP登錄界面。另外,在IDP、SP1、SP2都提供全局退出功能,用戶執行全局退出操作時,IDP將清除用戶瀏覽器中的cookie。

IDP與各SP採用相同的對稱加密算法、加密密鑰來加密驗證信息。另外,為了避免SP遭受重放攻擊,每次SP同IDP交互前,SP均產生一個隨機數,並將該隨機數加密,然後包含在重定向到IDP的重定向信息中。IDP通過解密獲得該隨機數,並將其包含在驗證信息中一起加密,然後將該加密信息包含在重定向到SP的重定向信息中。SP解密後,首先要判斷其中的隨機數是否是自己剛才產生的,如果不是則認為該重定向信息為重放攻擊,不予處理。

具體流程圖請參看圖4、圖5。

本系統基本實現了單點登錄的功能,IDP與SP之間驗證信息的傳遞方式與微軟Passport類似,採用加密傳輸的方法;本系統功能比較單一,主要實現了單點登錄功能,對於身份聯合、用戶個人信息訪問控制等功能並未實現。本系統基本上是安全的,用戶登錄提交均採用https方式,並且在IDP與SP交互時,也利用了SP產生的隨機數來避免了遭受重放攻擊。本系統的缺點是對於cookie的加密保護不夠完善,IDP與SP交互信息也只是使用簡單的對稱加密算法加密,而且加密函數、密鑰均需要雙方事先協商好。因此本系統並不適用於實際應用。

結束語

隨著互聯網絡的飛速發展,各種提供網絡服務的網站也如雨後春筍般紛紛湧現,因此人們對於單點登錄的需求也會越來越強烈。然而究竟單點登錄是否可行?本文通過分析當前兩個最主流的單點登錄協議:技術細節不公開的微軟Passport單點登錄協議,以及仍處於研究階段的自由聯盟(Liberty Alliance)規範,並結合筆者實現的以個人域名作為身份標識的單點登錄系統,得出以下結論:單點登錄在技術上是完全可行的,只要確保單點登錄系統的安全性,以及認證服務器的公正權威性,單點登錄技術一定會被人們廣泛接受,進而在互聯網絡應用中為人們提供一個更加便利的環境。

參考文獻

[1] David P. Kormann .Aviel D. Rubin.Risks of the Passport Single Sign on Protocol[EB/OL].2000 
[2] Susan Landau ,Jeff Hodges. A Brief Introduction to Liberty[J-OL].February 2003 
[3] Liberty Alliance Project.Liberty Alliance Phase 2 Final Specifications 
[EB/OL].http://www.projectliberty.org/specs/ , 2003 
[4] Ing. Radovan Seman. Internet applications security[M]. November 2002 
[5] ZDNet China專稿. SAML標準提高網絡安全性[J-OL].2003年7月1日
[6] ZDNet China專稿.深度分析:“自由聯盟”,還是微軟Passport?[J-OL].2003年9月20日
[7]姜偉. Kerberos:面向開放式網絡的認證服務[D].1999年12月21日

Read more >>

關於EC ONE ECONE-top-right.png