Kerberos 通常稱為協力廠商信任驗證服務,表示所有用戶端都信任 Kerberos 對於另一個用戶端識別身份的判斷。Kerberos 會將所有使用者與他們的私密金鑰存放在資料庫。
若要確保 Kerberos 確實值得全然信任,請在專屬的機器上執行驗證與票證授予伺服器。請確定只有管理員能夠透過網路以及實際來存取此機器。將其上執行的 (網路) 服務儘可能減到最少—甚至不要執行 sshd。
一開始接觸 Kerberos,會與一般網路系統的登入程序相當相似。輸入您的使用者名稱。這部分的資訊與票證授予服務的名稱會傳送到驗證伺服器 (Kerberos)。如果驗證伺服器知道您的存在,就會隨機產生工作階段金鑰,讓您之後可在用戶端與票證授予伺服器之間使用。現在驗證伺服器會為票證授予伺服器準備票證。票證會包含下列資訊—所有資訊都會以工作階段金鑰加以加密,而只有驗證伺服器與票證授予伺服器知道此工作階段金鑰:
用戶端與票證授予伺服器的名稱
目前的時間
指定給此票證的存在時間
用戶端的 IP 位址
新產生的工作階段金鑰
之後此票證會再次以加密的形式,連同工作階段金鑰傳回給用戶端,但這次會使用用戶端的私密金鑰。因為此私密金鑰是從您的使用者密碼衍生,所以只有 Kerberos 與用戶端知道。現在當用戶端收到此回應之後,就會提示您輸入密碼。此密碼會轉換成金鑰,而該金鑰可用來解密驗證伺服器所傳送的封包。「解開」封包之後,就會從工作站記憶體將密碼與金鑰刪除。只要指定給該票證用以取得其他票證的存在時間尚未過期,工作站就可以證明您的識別身份。
若要向網路中的任何伺服器要求服務,用戶端應用程式就需要向該伺服器證明其識別身份。因此,該應用程式會產生授權者。授權者是由下列元件所組成:
用戶端的原則
用戶端的 IP 位址
目前的時間
Checksum (由用戶端選擇)
用戶端已收到專供此特殊伺服器使用的工作階段金鑰,可用來加密所有這類資訊。伺服器的授權者與票證就會傳送給該伺服器。伺服器可使用它的工作階段金鑰複本來將授權者解密,提供有關用戶端要求服務所需的全部資訊,以與票證中包含的資訊相比較。伺服器會檢查該票證與授權者是否來自相同的用戶端。
伺服器端若沒有執行任何安全性方法,此程序階段會是重播攻擊的絕佳目標。嘗試傳送先前從網路上竊取的要求就可達到攻擊目的。為了避免這種情況,伺服器不會接受具有先前接收過的時間戳記與票證的任何要求。除此之外,要求的時間戳記若與接收要求當時的時間相距過遠的話,就會忽略該項要求。
Kerberos 驗證可以雙向使用。不僅用戶端必須是其所宣稱的身份。伺服器也應該要能夠向要求服務的用戶端驗證其身份。因此,伺服器會自行傳送一些授權者。它會在用戶端授權者接受的 Checksum 加入一個授權者,並使用與用戶端共用的工作階段金鑰來加密。用戶端會將此當作伺服器驗證的證明,而且雙方會開始協同運作。
票證的設計是只能在一台伺服器上使用一次。這意味著每次您要求另一項服務時,就必須取得新的票證。Kerberos 會執行機制以取得個別伺服器的票證。此服務稱為「票證授予服務」。票證授予服務與之前提過的其他服務一樣都是服務,因此請使用已略述的相同存取協定。只要應用程式需要尚未要求過的票證時,就會聯絡票證授予伺服器。此要求是由下列元件所組成:
要求的原則
票證授予票證
授權者
如同其他伺服器一樣,票證授予伺服器會檢查票證授予票證以及授權者。如果視為有效,票證授予伺服器會建立新的工作階段金鑰,以供原始的用戶端與新伺服器之間使用。所建立的新伺服器票證會包含下列資訊:
用戶端的原則
伺服器的原則
目前的時間
用戶端的 IP 位址
新產生的工作階段金鑰
指定給新票證的存在時間,會短於票證授予票證與服務預設值的剩餘存在時間用戶端會接收到票證授予服務傳送的此一票證與工作階段金鑰,但這次會以原始票證授予票證所隨附的工作階段金鑰來將回應加密。當聯絡到新服務時,用戶端無需取得使用者的密碼,即可將該回應解密。Kerberos 因而可為用戶端取得後續票證,而無需在登入時麻煩使用者多次。
Windows 2000 包含 Microsoft 的 Kerberos 5 執行方式。由於 SUSE Linux EnterpriseŽ 使用 Kerberos 5 的 MIT 實做,因此可在 MIT 說明文件中找到實用的資訊與指南。請參閱第 45.4 節「如需更多資訊」。