問題的來源
在一個開放的分布式網路環境中,使用者通過工作站訪問伺服器上提供的服務。
n 伺服器應能夠限制非授權使用者的訪問並能夠認證對服務的請求。
n 工作站不能夠被網路服務所信任其能夠正確地認定使用者,即工作站存在三種威脅。
一個工作站上一個使用者可能冒充另一個使用者操作;
一個使用者可能改變一個工作站的網路地址,從而冒充另一台工作站工作;
一個使用者可能竊聽他人的資訊交換,並用回放攻擊獲得對一個伺服器的訪問權或中斷伺服器的運行。
所有上述問題可以歸結為一個非授權使用者能夠獲得其無權訪問的服務或資料。
kerberos
Kerberos提供一個中心證明伺服器,提供使用者到伺服器和伺服器到使用者的認證服務。
Kerberos採用傳統密碼編譯演算法(無公開金鑰體制DES)。
C/S環境下三種可能的安全方案
n 相信每一個單獨的客戶工作站可以保證對其使用者的識別,並依賴於每一個伺服器強制實施一個基於使用者標識的安全性原則。 (基於使用者標識的識別)
n 要求用戶端系統將它們自己向伺服器作身份認證,但相信用戶端系統負責對其使用者的識別。
n 要求每一個使用者對每一個服務證明其標識身份,同樣要求伺服器向用戶端證明其標識身份。
Kerberos支援以上三種策略。總體方案是提供一個可信第三方的認證服務。
方案的詳細描述:
1) 一次簽名:
第一次首先需要認證的實體將自己的資訊和公開金鑰提交給CA,CA確認該組織的可信賴之後,就用自己的金鑰組該實體的資訊和公開金鑰進行簽名。最後被簽名的資訊會就叫認證。
2) 二次簽名
使用者首先接到一個認證,然後根據CA(可信)提供的公開金鑰進行解密。解密後再由使用者發服務許可。
數位簽章過程
數位簽章操作具體過程如下:首先是產生被簽名的電子檔案(《電子簽名法》中稱資料電文),然後對電子檔案用散列演算法做數字摘要,再對數字摘要用簽名私密金鑰做非對稱式加密,即作數位簽章;之後是將以上的簽名和電子檔案原文以及簽署憑證的公開金鑰加在一起進行封裝,形成簽名結果發送給收方,待收方驗證。
數位簽章驗證過程:接收方收到數位簽章的結果,其中包括數位簽章、電子原文和發方公開金鑰(C/S模式中伺服器方公開金鑰通常已經知道),接收方進行簽名驗證。驗證過程是:接收方首先用發方公開金鑰解密數位簽章,匯出數字摘要,並對電子檔案原文做同樣散列演算法得出一個新的數字摘要;將兩個摘要進行結果比較,結果相同則簽名得到驗證,否則簽名無效。這就做到了《電子簽名法》中所要求的對簽名不能改動,對簽署的內容和形式也不能改動的要求。
基於認證的認證
近年來相當流行的認證技術應該是基於認證的認證。其實認證就是一個資料區塊,主要包括公開密鑰、主體相關的資訊、認證有效日期、認證發行者的資訊和認證發行者產生的簽名。
其實整個過程很簡單,我就認為是二次數位簽章就是了。第一次首先需要認證的實體將自己的資訊和公開金鑰提交給CA,CA確認該組織的可信賴之後,就用自己的金鑰組該實體的資訊和公開金鑰進行簽名。最後被簽名的資訊會就叫認證。站在使用者的角度,使用者首先接到一個認證,當然會根據CA(可信)提供的公開金鑰進行解密,如果能解密,當然就可以獲得可信賴的資訊和實體公開金鑰。然後由實體公開金鑰再進行前面我們介紹的數位簽章解密步驟。
http://www.ibm.com/developerworks/cn/opensource/os-pegasus/index.html
Pegasus 中基於 SSL 的資料轉送流程(協商加密方式為例)如下表所示:
Pegasus 中基於 SSL 的資料轉送流程