身份認證和訪問控制
身份認證主要內容
身份認證的概念:用戶要向系統證明他就是他所聲稱的那個人。
- 識別:明確訪問者的身份(信息公開)
- 驗證:對訪問者聲稱的身份進行確認(信息保密)
身份認證的作用:
- 限制非法用戶訪問網絡資源。
- 安全系統中的第一道關卡,是其他安全機制基礎。
- 一旦被攻破,其他安全措施將形同虛設。
8.1 單機狀態下的身份認證
驗證用戶身份的方法:
- 用戶知道的東西:如口令、密碼等。
- 擁有的東西:如智能卡、通行證、USB Key。
- 用戶具有的生物特徵:如指紋、臉型、聲音、視網膜掃描、DNA等。
- 用戶行爲特徵:如手寫簽字、打字韻律等。
8.1.1 基於口令的認證方式
對口令的攻擊:
- 聯機攻擊:聯機反覆嘗試口令進行登錄
- 脫機攻擊:截獲口令密文後進行強力攻擊
(1) 直接明文存儲口令
- 風險大
任何人只要得到存儲口令的數據庫,就可得到全體人員(包括最高管理員)的口令。 - 多用於權限提升
(2) Hash散列存儲口令
- 口令 x 的散列值 F(x) 又叫通行短語(Pass phrase)
- 散列函數爲文件、報文或其他數據產生“數字指紋”
認證方法:
- 系統的口令文件中存儲每個用戶的賬號和口令散列值對;
- 用戶登錄時輸入口令 x,系統計算出 F(x);
- 系統將它與口令文件中相應的散列值比對,成功即允許登錄。
(3) 加鹽的Hash散列存儲口令
加鹽的作用:避免由於相同的明文口令對應相同的口令散列而造成多個用戶的口令同時被破解。
鹽(salt):散列口令前與口令相結合的長爲 12bit 的隨機常數 —— 即使兩個用戶口令相同,只要salt 值不同,口令散列將不同。
例如:lijie
和 wangfeng
口令都爲 password
/etc/shadow 文件中的口令散列爲:
lijie:qdUYgW6vvNB.
wangfeng:zs9RZQrI/0aH2
基於口令認證方式的安全性
(1)即使黑客或管理員得到口令文件,由散列值計算出明文口令很難,所以比口令明文的認證安全。
(2)基於口令明文或散列(靜態口令)認證是單因素認證,而用戶多選擇易記憶、易被猜測的口令,同時竊取口令文件後也可進行字典式攻擊。
(3)在計算機網絡和分佈式系統中使用更不安全。
8.1.2 基於智能卡的認證方式
雙因素認證方式:所知道的東西(PIN)和所擁有的東西(智能卡)。
- 每個用戶的智能卡存儲用戶祕密信息,身份認證服務器也存放該信息;
- 用戶輸入PIN,智能卡識別PIN是否正確;
- 若正確則讀出智能卡中的祕密信息,並利用它與主機進行認證。
硬件加密的安全性高;即使PIN或智能卡被竊取,用戶仍不會被冒充。
8.1.3 基於生物特徵的認證方式
圖像處理和模式識別:抓圖/抽取特徵/比較/匹配
- 生物統計學的生物特徵
- 計算機強大計算功能
- 網絡技術
(1) 生物識別系統捕捉生物特徵的樣品;
(2) 提取唯一特徵數據並轉化爲數字符號(存儲成該人的特徵模板);
(3) 登錄時人們同生物特徵識別系統交互來進行身份認證,以確定匹配與否。
基於生物特徵認證方式的安全性
- 特徵因人而異和隨身攜帶 —— 他人模仿難
- 識別速度相對慢
使用代價高
使用面窄
不適合在網絡環境中使用
在網絡上泄露也不好更新
有誤報(False Positives)和漏報(False Negatives)
8.2 S/KEY認證協議
8.2.1 一次性口令技術
網絡環境下身份認證的困難性:
- 明文口令:易被嗅探,也容易受到字典攻擊。
- 口令散列:直接“重放” 就可以假冒合法用戶登錄,並不需要解密得到口令本身。
不能使用靜態口令,而必須使用一次性口令。
一次性口令技術的發展:
- 1980年代首次提出利用散列函數產生一次性口令
- 1991年貝爾通信提出挑戰/應答(Challenge /Response)式動態密碼身份認證系統S/KEY
- 開發基於 MD5 散列算法的動態密碼認證系統
- RSA 實驗室提出基於時間同步的動態密碼認證系統 RSA SecureID
一次性口令的兩個因子:
- 固定因子:用戶的口令散列(雙方共享)
- 變動因子:產生變動的一次性口令
1)基於時間同步認證技術
2)基於事件同步認證技術
3)挑戰/應答方式的變動因子:由認證服務器產生的隨機序列 Challenge,不需要同步。
8.2.2 最初的S/KEY認證協議
最初的 S/KEY 的安全性分析:
- 合法用戶容易通過身份認證,而攻擊者即使截獲一次性口令,也得不到用戶口令散列。
- 服務器對同一用戶每次發出的挑戰中 seed 值相同。
- 而 seq 值遞減,使攻擊者不知用戶口令散列時,不能預測出下一次的一次性口令,因而不能重放成功。
S/KEY 認證協議的優點:
- 並未傳送用戶口令明文和口令散列。
- 每次的一次性口令不同。
- 根據截獲的一次性口令破解出口令散列/明文難。
- 實現原理簡單,Hash函數還可用硬件實現。
- 服務器只需存儲用戶口令散列。
S/KEY 認證協議的缺點:
- 安全性依賴於Hash函數的不可逆性。
- seq 值遞減使得挑戰使用一定次數後必須初始化。
- 會話內容本身沒有保密。
- 循環使用以前的一次性口令。
- 維護一個很大的一次性口令列表很麻煩。
8.2.3 改進的S/KEY認證協議
改進的 S/KEY 的安全性分析:
只有 seed、seq 和一次性口令在網上傳播,seed 是不可預測的,而 seq 每次可相同可不同:
- 用戶很容易求出正確的一次性口令,採用一次性口令的匹配通過服務器的身份認證;
- 攻擊者即使截獲一次性口令,也不能破解出用戶口令散列;
- 攻擊者不能預測下一次一次性口令,也不能重放成功。
S/KEY 協議的應用和安全性:
- Windows 2000之後的 NTLM 認證就使用了這個經過改進的 S/KEY 認證協議。
安全性:
- 能夠避免監聽和重放,但不能防範攔截和修改數據包、會話劫持等攻擊。
- 網絡系統的安全僅等同於使用的最弱散列算法的安全強度。
- 沒有完整性保護機制,也無法防範內部攻擊。
- 不能對服務器的身份進行認證。
8.3 Kerberos認證協議
網絡層安全協議 IPSec —— 保證連接的客戶端合法
服務器只能對合法用戶提供服務 —— Kerberos
- Kerberos 基於可信第三方 KDC,提供不安全分佈式環境下的雙向用戶實時認證。
- 它的認證和數據保密傳輸使用對稱加密 DES,後來也可用其他算法的獨立加密模塊。
- Windows 2000 之後都默認 Kerberos 爲其認證方法。
Kerberos的發展
以 N-S 密鑰分配 和 雙向鑑別協議 爲基礎發展起來,並引入時間戳。
- Kerberos v1 - v3 都只在麻省理工學院內部發行
- 1980年末發佈的 Kerberos v4 主要是針對 Project Athena
- 1993年發佈的 v5 克服了 v4 的侷限性和安全問題
Kerberos 實現AAA:認證(Authentication)、授權(Authorization)、審計(Audit)。
認證(Authentication)、授權(Authorization)、審計(Audit)、機密性(confidentiality)、完整性(integrality)、不可否認性、可用性
Kerberos協議的基本思想 :
用戶只需輸入一次身份驗證信息就可憑此信息獲得票據(ticket)來訪問多個服務,即 SSO(Single Sign On,單點登錄)。
用戶對應用服務器 V 訪問前,必須先從 Kerberos 認證服務器上獲取到 V 的票據。
Kerberos 系統應滿足四項需求:安全性、可靠性、透明性、可伸縮性。
8.3.1 簡單的認證會話
8.3.2 更加安全的認證會話
8.3.3 Kerberos v4認證會話
上述會話仍然存在兩個問題:
1)票據許可票據的生存期:如果生存期太短則用戶將總被要求輸入口令;如果生存期太長則爲攻擊者提供了大量重放機會。
2)服務器必須向用戶證實自己身份,否則假冒的服務器即可捕獲用戶請求而向用戶提供虛假服務。
訪問控制與授權主要內容
主要內容:
- 概念原理
- 常用的實現方法
- 訪問控制策略
本章重點和複習要點:
- 訪問控制常見的實現方法
- 三種主要的訪問控制策略;TCSEC中的C級操作系統要求至少具有何種訪問控制策略?B級以上操作系統要求具有何種訪問控制策略?
- 什麼是DAC?它能從根本上防範特洛伊木馬的攻擊?
- 什麼是MAC?它有阻止特洛伊木馬的能力嗎?
- MAC中實現數據機密性的是哪個安全模型?它必須採用哪種讀寫規則?實現數據完整性的是哪個安全模型?它必須採用哪種讀寫規則?
13.1 概念原理
授權(Authorization)和訪問控制(Access Control)表示ISO五大服務中的訪問控制服務。
訪問控制建立在身份認證基礎上,通過限制對關鍵資源的訪問,防止非法用戶的侵入或因爲合法用戶的不慎操作而造成的破壞。
訪問控制目的:限制主體對客體的訪問權限,從而使計算機系統在合法範圍內使用。
13.2 常用的實現方法
13.2.1 訪問控制矩陣
列表示客體(各種資源),行表示主體(用戶),交叉點表示主體對客體的訪問權限。
通常文件的Own權限表示可授予(Authorize)或撤消(Revoke)其他用戶對該文件訪問權限。
13.2.2 訪問能力表
實際系統中雖然可能有很多主體與客體,但兩者之間的權限關係可能並不多。
爲了減輕系統開銷與浪費,我們可以從主體(行)出發,表達矩陣某一行的信息,這就是訪問能力表(Capabilities)。
只有當主體對某個客體擁有訪問能力時,它才能訪問這個客體。
但要從訪問能力表獲得對某一特定客體有特定權限的所有主體就比較困難。
在安全系統中,正是客體需要得到可靠保護,訪問控制服務應該能夠控制訪問某一客體的主體集合,便出現客體爲中心的實現方式 —— ACL。