電腦安全-L23
Kerberos
- Initially developed at MIT
- 作為
remote authentication的標準
- 作為
- 一個受信任的第三方驗證服務
- 用戶端與伺服器都信任
Kerberos來協調彼此的身分驗證 - 要求:
- 使用者在每次使用服務時,都必須證明其身分
- (可選) 伺服器也需要向用戶端證明其身分
- 用戶端與伺服器都信任
Security Issues between Clients and Servers
- 在未受保護的網路環境中,任何客戶端都可以向任何伺服器申請服務
Impersonation(冒充): 假裝成其他客戶端,從而在伺服器上取得未授權的權限- 使用 Authentication Server (AS): AS 驗證了使用者身分,就可以將該資訊傳遞給應用伺服器
- 如果客戶端透過網路將密碼傳送給 AS,攻擊者可能會攔截並取得該密碼
Kerberos Overview
- AS 會與每一台伺服器共享一個唯一的 secret key
Session key: 一次性使用的加密金鑰- 保護下一次通訊
Ticket與Session key都會使用使用者的密碼作為加密金鑰進行加密- 密碼本身不會在網路上傳輸
- Ticket: 一組憑證,包含:
- User’s ID, server’s ID, a timestamp, a lifetime
- 整個 Ticket 會使用 AS 與伺服器之間共享的秘密 DES 金鑰進行加密
- 為什麼需要
TGS:- 若每次存取服務都要重新向使用者詢問密碼: 不方便
- 若將密碼儲存在記憶體中 (登入期間): 有安全風險
TGS的作用: 用 Ticket 來取得更多 Ticket- 只需登入一次,之後透過
TGS就可以取得各個服務的 Ticket
- 只需登入一次,之後透過
如何防範 Ticket-Granting Ticket 的威脅
- Ticket 可能被竊取並 reused
- Timestamp
- Ticket 被竄改 (alteration)
- 使用只有 AS 與 TGS 知道的 secret key 加密
- User spoofing (偽裝)
- 基於使用者密碼進行加密驗證
- Replay attack
- 使用不可重複使用的 Authenticator
- Timestamp
Kerberos Realms
Kerberos realm: 一個完整的Kerberos環境,包含:- A Kerberos server
- A number of clients
- 每個客戶端都需向 Kerberos 伺服器註冊,伺服器會維護使用者 ID / 密碼的資料庫
- A number of app servers
- 每個應用伺服器也需向 Kerberos 伺服器註冊,並與其共享 secret key
- 不同的 realms: 由不同管理組織所控制的客戶端與伺服器網路
Interrealm Authentication
- 每個 realm 的 Kerberos server 之間會共享 secret key
- server 之間彼此註冊: 信任對方
Kerberos Versions 4 and 5
- Most widely used: Version 4 in late 1980s
- Version 5
- Now widely implemented
AESis the default choice (DESin v4)- Authentication forwarding
- 允許客戶端存取某個伺服器,並由該伺服器代表客戶端去存取另一個伺服器
Performance Issues
- 在大型環境中,對效能的影響非常小
- 前提是系統有正確配置
- 用於取得 ticket 的網路流量需求不高
- 是否需要專用平台?
- 不建議與高資源消耗的應用程式運行在同一台機器上
- 為了安全性,最好將其部署在獨立、隔離的機器上
- 使用多個 realms 來提升效能是否可行?
- 通常不建議
- 設立多個 realms 的主要動機是管理需求
X.509: Public-key Certificate
- A certificate
- 將 public key 與其擁有者的身分綁定
- 由受信任的第三方進行數位簽章
- Third party:
certificate authority (CA)- 被使用者社群所信任
- ex: 政府機構、金融機構
- 使用者以安全方式將自己的 public key 提交給 CA 後取得 certificate
- X.509: Specified in RFC 5280
- 最廣泛被接受的公開金鑰憑證格式
- Usage restriction (使用限制)
Key UsageandExtended Key Usage用來指定該金鑰被允許的用途
- 如果憑證被破解或遭到入侵怎麼辦? 如何撤銷 (revoke)
- A certificate revocation list (CRL)
- 由簽發憑證的機構(issuer / CA)簽署
- 包含被撤銷憑證的序號 (serial number) 以及撤銷日期
- 在收到憑證時,應查詢該 CA 的最新 CRL:
high overheads
- A lightweight protocol for the revocation in RFC 6960
- 已被多數現代網頁瀏覽器支援
Authority Information Access擴充欄位: 提供伺服器位址- 直接向該伺服器查詢憑證狀態
- Hash signature
- MD5 collisions are found in 2012
- SHA-1 collisions are discovered in 2017
- Using
SHA-2 and SHA-3now
Public-Key Infrastructure (PKI)
- RFC 4949
- PKI 是一組完整系統,包含硬體、軟體、人員、政策與流程
- 用於建立、管理、儲存、分發與撤銷基於非對稱加密的數位憑證
- 讓使用者能安全、方便且有效率地取得他人的公開金鑰
- Current X.509 PKI implementations:
trust store- 系統內建一組受信任的 CA 清單及其 public keys
CAs in Trust Store
- 可以直接簽署
end-user certificate - 或先簽署少數
Intermediate CAs- They in turn sign
end-user certificates
- They in turn sign
- All the hierarchies are very small, and all are equally trusted
- 作用: 降低
Root CA暴露風險,提升安全性
- 作用: 降低
- 可被自動驗證的憑證: 從 trust store 中的 CA 所取得的憑證





