身份認證和訪問控制實現原理

身份認證和訪問控制的實現原理將根據系統的架構而有所不同。對於B/S架構,將採用利用Web服務器對SSL(Secure Socket Layer,安全套接字協議)技術的支持,可以實現系統的身份認證和訪問控制安全需求。而對於C/S架構,將採用簽名及簽名驗證的方式,來實現系統的身份認證和訪問控制需求。以下將分別進行介紹:

  • 基於SSL的身份認證和訪問控制

  目前,SSL技術已被大部份的Web Server及Browser廣泛支持和使用。採用SSL技術,在用戶使用瀏覽器訪問Web服務器時,會在客戶端和服務器之間建立安全的SSL通道。在SSL會話產生時:首先,服務器會傳送它的服務器證書,客戶端會自動的分析服務器證書,來驗證服務器的身份。其次,服務器會要求用戶出示客戶端證書(即用戶證書),服務器完成客戶端證書的驗證,來對用戶進行身份認證。對客戶端證書的驗證包括驗證客戶端證書是否由服務器信任的證書頒發機構頒發、客戶端證書是否在有效期內、客戶端證書是否有效(即是否被竄改等)和客戶端證書是否被吊銷等。驗證通過後,服務器會解析客戶端證書,獲取用戶信息,並根據用戶信息查詢訪問控制列表來決定是否授權訪問。所有的過程都會在幾秒鐘內自動完成,對用戶是透明的。

  如下圖所示,除了系統中已有的客戶端瀏覽器、Web服務器外,要實現基於SSL的身份認證和訪問控制安全原理,還需要增加下列模塊:

基於SSL的身份認證和訪問控制原理圖

  1. Web服務器證書

      要利用SSL技術,在Web服務器上必需安裝一個Web服務器證書,用來表明服務器的身份,並對Web服務器的安全性進行設置,使能SSL功能。服務器證書由CA認證中心頒發,在服務器證書內表示了服務器的域名等證明服務器身份的信息、Web服務器端的公鑰以及CA對證書相關域內容的數字簽名。服務器證書都有一個有效期,Web服務器需要使能SSL功能的前提是必須擁有服務器證書,利用服務器證書來協商、建立安全SSL安全通道。

      這樣,在用戶使用瀏覽器訪問Web服務器,發出SSL握手時,Web服務器將配置的服務器證書返回給客戶端,通過驗證服務器證書來驗證他所訪問的網站是否真實可靠。

  2. 客戶端證書

      客戶端證書由CA系統頒發給系統用戶,在用戶證書內標識了用戶的身份信息、用戶的公鑰以及CA對證書相關域內容的數字簽名,用戶證書都有一個有效期。在建立SSL通道過程中,可以對服務器的SSL功能配置成必須要求用戶證書,服務器驗證用戶證書來驗證用戶的真實身份。

  3. 證書解析模塊

      證書解析模塊以動態庫的方式提供給各種Web服務器,它可以解析證書中包含的信息,用於提取證書中的用戶信息,根據獲得的用戶信息,查詢訪問控制列表(ACL),獲取用戶的訪問權限,實現系統的訪問控制。

  4. 訪問控制列表(ACL)

  訪問控制列表是根據應用系統不同用戶建設的訪問授權列表,保存在數據庫中,在用戶使用數字證書訪問應用系統時,應用系統根據從證書中解析得到的用戶信息,查詢訪問控制列表,獲取用戶的訪問權限,實現對用戶的訪問控制。

  • 基於簽名及簽名驗證的身份認證和訪問控制

  基於簽名及簽名驗證的身份認證和訪問控制是利用數字簽名技術實現的,數字簽名技術的實現是指使用數字證書的私鑰,對被簽名數據的摘要值進行加密,加密的結果就是數字簽名。在進行簽名驗證時,是用數字證書(即公鑰)來進行驗證,用公鑰解密數據,得到發送過來的摘要值,然後用相同的摘要算法對被簽名數據做摘要運算,得到另一個摘要值,將兩個摘要值進行比較,如果相等,則數字簽名驗證通過,否則驗證無效。數字簽名技術的實現依賴於下列兩個事實:一是每一個信息的摘要值是唯一的,找不到兩個摘要值相同的不同信息;二是證書的私鑰只有數字證書的擁有者才擁有,其他人得不到擁有者的私鑰。這樣,通過簽名及簽名驗證,可以確定數據的確是數字證書的擁有者發送的,發送者不能進行抵賴。數據在發送的過程中,沒有被別人竄改過的,是完整的。

  因此,利用這種技術可以實現對用戶身份的認證,一旦對簽名數據進行驗證,就可以知道簽名者是誰,根據簽名者的證書可以得到簽名者的信息,查詢訪問控制列表,就知道是簽名者的訪問權限,從而實現身份認證和訪問控制。

  基於簽名及簽名驗證的身份認證和訪問控制主要應用於不使用或支持SSL的系統,對於C/S結構,採用這種方式是非常合適的,要實現這種設計,如下圖所示,除了系統原有的專業客戶端,服務器之外,需要增加上面描述的客戶端證書、服務端證書解析模塊和訪問控制列表之外,還需要增加下列模塊:

基於簽名及簽名驗證的身份認證和訪問控制原理

  1. 客戶端數據簽名模塊

      客戶端數據簽名模塊以控件的方式提供給專業客戶端,對專業客戶端軟件進行修改,調用數據簽名模塊,實現數字簽名功能。在用戶使用專業客戶端進行系統訪問時,專業客戶端調用數據簽名模塊,使用用戶選擇的客戶端證書的私鑰對客戶端發送的數據進行數字簽名,提供服務器端認證用戶身份時使用。

  2. 服務端簽名驗證模塊

      服務端簽名驗證模塊以插件或動態庫方式提供,安裝在服務器端,實現對客戶端數據簽名的驗證,對客戶端數據簽名證書的有效性驗證。通過驗證簽名數據,可以判斷客戶端簽名者的確擁有簽名證書,通過對簽名證書的驗證,可以判斷客戶端證書持有者的身份。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章