文章目錄
- 10 網絡安全基本原理
- 10.1 網絡安全基礎
- 10.2 網絡安全威脅
- 10.3 密碼學基礎
- 10.3.1 密碼學(cryptography)加解密框架
- 10.3.2 傳統加密方法
- 10.3.3 現代加密技術
- 10.3.4 數據加密標準: DES 結構概述
- 10.3.5 數據加密標準: DES結構詳述
- 10.3.6 DES的改進和AES的出現
- 10.3.7 公鑰密碼學(RSA)實現原理
- 10.3.8 公鑰密碼學(RSA)理論依據
- 10.4 身份認證(Authentication)
- 10.5 報文完整性(消息完整性)
- 10.6 數字簽名
- 10.7 密鑰分發中心(KDC))—— 解決共享密鑰問題
- 10.8 認證中心(CA) —— 解決公鑰加密問題
- 11 網絡安全協議與技術
- 11.1 安全電子郵件
- 11.2 安全套接字層(SSL)
- 11.2.1 Web應用安全
- 11.2.2 SSL原理及實現概述
- SSL: Secure Sockets Layer
- SSL和TCP/IP
- 可以像PGP那樣實現某些安全功能
- 簡化的(Toy)SSL: 一個簡單的安全信道
- 簡化的SSL : 一個簡單的握手過程
- 簡化的SSL : 密鑰派生
- 簡化的SSL : 數據記錄
- 簡化的SSL : 序列號
- 簡化的SSL : 控制信息
- 簡化的SSL : 總結
- 11.2.3 SSL原理及實現詳述
- 11.2.4 對SSL的握手協議和記錄協議更詳細的說明
- 11.2.5 SSL的實際連接方式
- 11.3 IP安全(Sec)
- 11.4 無線局域網安全
- 11.4.1 WEP的設計目標
- 11.4.2 回顧: 對稱流密碼
- 11.4.3 流密碼與分組獨立性
- 11.4.4 WEP加密
- 11.4.5 WEP解密概述
- 11.4.6 利用一次性隨機數進行端點認證
- 11.4.7 WEP的身份認證
- 11.4.8 破解802.11WEP加密
- 11.4.9 802.11i: 改進的安全
- 11.4.10 802.11i: 運行的4個階段
- 11.4.11 EAP: 擴展認證協議
- 11.5 防火牆
10 網絡安全基本原理
10.1 網絡安全基礎
10.1.1 網絡安全狀況
-引自《2014年中國互聯網網絡安全報告》
-
截至2014年12月底:
- 網站總量爲364.7萬
- 獨立域名爲481.2萬
- ISP爲1068家
- 網民規模爲6.49億
- 手機網民規模達5.57億
- 互聯網普及率爲47.9%
-
我國互聯網網絡安全狀況
- 總體平穩,形勢嚴峻
- 基礎網絡仍存在較多漏洞風險
- 2014年,CNCERT/CC協調處理涉及電信企業漏洞事件1578起
- CNVD(國家信息安全漏洞共享平臺)收錄與基礎電信企業軟硬件 資產相關漏洞825個,66.2%與路由器、交換機等網絡設備相關
- 雲服務日益成爲網絡攻擊重點目標
- 域名系統面臨嚴峻的拒絕服務攻擊
- 2014年,針對我國域名系統,流量規模達1Gbps以上的拒絕服 務攻擊事件,日均約187起
- 針對重要網站的域名解析篡改攻擊頻發
- 網絡攻擊威脅逐漸向工業互聯網滲透
- 2014年9月,出現一種遠程木馬“Havex”,利用OPC(開放通 用通信協議)工業通信技術,掃描發現工業系統聯網設備,收集 工控設備詳細信息並回傳
- 可以接收、執行惡意代碼
- 分佈式反射型攻擊逐漸成爲拒絕服務攻擊的重要形式
- 涉及重要行業和政府部門的高危漏洞事件增多
- 基礎應用或通用軟硬件漏洞風險凸顯
- “心臟出血”(Heartbleed)
- “破殼”(Bash Shell Shock)
- 漏洞風險向傳統領域、智能終端領域泛華演進
- 網站數據和個人信息泄露仍呈高發態勢
- 移動應用程序成爲數據泄露的心主體
- 移動惡意程序逐漸從主流應用商店向小型網站蔓延
- 具有短信攔截功能的移動惡意程序大爆發
- 針對金融、電信行業的網頁仿冒事件大幅增加
- 釣魚站點逐漸向雲平臺遷移
- 針對政府部門和重要行業單位網站的網絡攻擊頻度、烈度和複雜度加劇
-
互聯網網絡安全一組數據(2014年)
- 木馬和殭屍程序監測:
- 木馬或殭屍程序控制服務器IP地址總數104230(↓45.0%)
- 木馬或殭屍程序受控主機IP地址總數爲13991480(↓25.2%)
- 木馬和殭屍程序監測:
-
“飛客”蠕蟲監測:
- 全球互聯網月均近943萬臺主機IP地址感染“飛客”蠕蟲
-
移動互聯網安全監測:
- CNCERT/CC捕獲或通過廠商交換獲得的移動互聯網惡意 程序樣本數爲951059(↑35.3%)
- 惡意扣費類居首,爲522889(55.0%),資費消耗類(15.3%)、 隱私竊取類(12.9%)分列二、三位
- 針對Android平臺的佔99.9%,其次是Symbian,佔0.1%
- CNCERT/CC捕獲或通過廠商交換獲得的移動互聯網惡意 程序樣本數爲951059(↑35.3%)
-
網站安全監測:
- 我國境內被篡改網站數量爲36969個(↑45.0%)
- 政府網站1763個(↓27.4%)
- 監測到仿冒、釣魚頁面99409個
- 監測到40186個境內網站被植入後門
- 我國境內被篡改網站數量爲36969個(↑45.0%)
-
安全漏洞:
- CNVD收集新增漏洞9163個
- 前三甲漏洞:應用程序漏洞(68.5%)、Web應用漏洞 (16.1%)、網絡設備漏洞(6.0%)
-
網絡,安全?
- 網絡安全嗎?
- —不!
- —不十分安全!
- 網絡安全嗎?
-
目標:網絡,安全!
10.1.2 網絡安全基本概念
- 什麼是網絡安全?
網絡安全是指網絡系統的硬件、軟件及其系統中 的數據受到保護
,不
因偶然的或者惡意的原因而遭受到破壞、更改、泄露,系統連續可靠正常地 運行,網絡服務不中斷
。 - 網絡安全基本屬性
機密性(confidentiality)
: 只有發送方與預定接收方能夠理解報文內容- 發送方加密報文
- 接收方解密報文
身份認證(authentication)
:
發送方與接收方希望確認彼此的真實身份信息完整性(message integrity)
: 發送方與接收方希 望確保信息未被篡改(傳輸途中或者後期),發生篡改一定會被檢測到可訪問與可用性(access and availability)
: 網絡服務必須對被授權用戶可訪問與可用
- 網絡安全的基本特徵
- 相對性
- 只有相對的安全,沒有絕對的安全
- 時效性
- 新的漏洞與攻擊方法不斷髮現
- 相關性
- 新配置、新系統組件可能會引入新的安全問題
- 不確定性
- 攻擊時間、攻擊者、攻擊目標和攻擊發起的地點都具有不確定性
- 複雜性
- 網絡安全是一項系統工程,需要技術的和非技術的手段
- 重要性
- 網絡安全關乎國家、政府、企業、個人的安全
- 相對性
- 網絡安全
- 網絡安全研究領域:
- 入侵者(bad guys)如何攻擊計算機網絡
- 如何防護網絡對抗攻擊
- 如何設計網絡體系結構免疫(immune)攻擊
- Internet最初設計幾乎沒考慮安全性
- 最初願景: “一組彼此信任的互助用戶連接到 一個透明網絡”進行信息共享🙂
- Internet協議設計者扮演了“追趕者”(catchup)角色
- 網絡安全需要在網絡各個層次考慮!
- 網絡安全研究領域:
10.1.3 網絡安全擬人模型
- 擬人場景: Alice、Bob、Trudy
- 網絡安全領域的著名擬人模型
- Bob與Alice是期望進行安全通信的情侶
- Trudy是企圖破壞Bob和Alice通信的入侵者 (intruder), 試圖攔截、刪除或添加信息
- 網絡中的Bob、Alice?
- 電子交易過程的Web瀏覽器/服務器 (e.g., 網購)
- 網絡銀行的客戶/服務器
- DNS服務器
- 路由器之間交換路由表更新
- ……
- 網絡中的Trudy?
Trudy:Bad Guys .- 通過Internet向主機植入惡意軟件(malware)
- 病毒(virus)
- 蠕蟲(worm)
- 間諜軟件(spyware):記錄鍵盤輸入、web站點訪 問、向收集站點上傳信息等
- ……
- 被感染主機可能加入殭屍網絡(botnet),用於 發送垃圾郵件、DDoS攻擊等
- 通過Internet向主機植入惡意軟件(malware)
10.2 網絡安全威脅
10.2.1 “壞蛋”們可能做什麼?
Q:
“壞蛋”們能做什麼?
A:
很多!
竊聽(eavesdrop)
: 竊聽信息插入(insert)
:主動在連接中插入信息假冒(impersonation)
: 可以通過僞造(spoof)分組中的源地址(或者分組的任意其他字段)劫持(hijacking)
: 通過移除/取代發送發或者接 收方“接管”(take over)連接拒絕服務DoS(denial of service)
: 阻止服務器 爲其他用戶提供服務(e.g., 通過過載資源)
10.2.2 Internet安全威脅
-
映射(Mapping)
:- 發起攻擊前: “探路”(case the joint) – 找出網絡上 在運行什麼服務
- 利用ping命令確定網絡上主機的地址
端口掃描
(Port-scanning): 依次嘗試與每個端口建立TCP連接- nmap (http://www.insecure.org/nmap/),廣爲使用的國外端口掃描工具之一
對策(Countermeasures)?
- 記錄到達的網絡流量
- 分析、識別出可疑活動( IP地址和端口被依次掃描)
-
分組“嗅探”(sniffing)
:- 廣播介質(共享式以太網,無線網絡)
- 混雜(promiscuous)模式網絡接口可以接收/記錄所有經過的分組/幀
- 可以讀到所有未加密數據(e.g., 包括口令!)
- Wireshark就是一個典型免費的分組嗅探軟件
分組嗅探: 對策
- 組織中的所有主機都運行軟件,週期性監測網絡接口是否工作在
混雜模式
- 每段廣播介質連接一臺主機(如交換式以太網)
- 組織中的所有主機都運行軟件,週期性監測網絡接口是否工作在
-
IP欺騙(Spoofing)
:- 直接由應用生成“原始”IP分組,可以設置分組的源IP地址字段爲任意值
- 接收方無法判斷源地址是否被欺騙
- e.g.: C冒充B
IP欺騙對策: 入口過濾(ingress filtering)
- 路由器不轉發源IP地址無效的IP分組 (e.g., 源IP地 址不屬於所連接網絡)
很有效!但是不能強制所有網絡都執行入口過濾
在網絡安全領域,隱藏自己的一種手段就是IP欺騙——僞造自身的IP地址向目標系統發送惡意請求,造成目標系統受到攻擊卻無法確認攻擊源,或者取得目標系統的信任以便獲取機密信息。
這兩個目的對應着兩種場景:
場景一,常用於DDoS攻擊(分佈式拒絕攻擊),在向目標系統發起的惡意攻擊請求中,隨機生成大批假冒源IP,如果目標防禦較爲薄弱,對收到的惡意請求也無法分析攻擊源的真實性,從而達到攻擊者隱藏自身的目的。
這類場景裏一種很有意思的特殊情景來自於“反射”式DDoS攻擊,它的特點來自於利用目標系統某種服務的協議缺陷,發起針對目標系統輸入、輸出的不對稱性——向目標發起吞吐量相對較小的某種惡意請求,隨後目標系統因其協議缺陷返回大量的響應,阻塞網絡帶寬、佔用主機系統資源。這時如果攻擊者的請求使用真實源地址的話,勢必要被巨大的響應所吞沒,傷及自身。這樣,攻擊者採取IP欺騙措施就勢在必行了。
場景二,原本A主機信任B主機,也就是B可以暢通無阻地獲取A的數據資源。而惡意主機C爲了能同樣獲取到A的數據,就需要僞裝成B去和A通信。這樣C需要做兩件事:第一、讓B“把嘴堵上”,不再向A吐請求,比如向B主機發起DoS攻擊(拒絕服務攻擊),佔用B的連接使其無法正常發出網絡包;第二、僞裝成B的IP和A交互。 -
拒絕服務DOS(Denial of service)
:- 向接收方惡意泛洪(flood)分組,淹沒(swamp)接收方
- 帶寬耗盡
- 資源耗盡
- 分佈式拒絕服務攻擊 (DDOS): 多個源主機協同淹沒 接收方
- e.g., C與另一個遠程主機協同對A進行SYN攻擊
DDoS攻擊過程
:
- 選擇目標
- 入侵(break into)網絡中主機(構建殭屍網絡)
- 控制殭屍主機向目標發送分組
反射式DDoS攻擊
:
- 選擇目標
- 入侵網絡中主機 (構建殭屍網絡)
- 選擇反射服務器
Internet安全威脅 - 藉助反射服務器向目標發起攻擊
DOS: 對策
- 在到達主機前
過濾掉
泛洪分組(e.g., SYN)- 可能好壞一起扔
追溯(traceback)
攻擊源- SYN cookie[RFC 4987]
- SYN cookie
SYN Cookie
是對TCP服務器端的三次握手協議作一些修改,專門用來防範SYN Flood攻擊的一種手段。它的原理是,在TCP服務器收到TCP SYN包並返回TCP SYN+ACK包時,不分配一個專門的數據區,而是根據這個SYN包計算出一個cookie值。在收到TCP ACK包時,TCP服務器在根據那個cookie值檢查這個TCP ACK包的合法性。如果合法,再分配專門的數據區進行處理未來的TCP連接。 - SYN cookie
- 在到達主機前
- 向接收方惡意泛洪(flood)分組,淹沒(swamp)接收方
10.3 密碼學基礎
10.3.1 密碼學(cryptography)加解密框架
對稱密鑰加密
公開密鑰加密
破解加密方法
唯密文攻擊(cipher-text only attack)
: 入侵者(如 Trudy)只截獲到密文,基於對密文的分析進行破解兩條途徑
:- 暴力破解(brute force): 嘗試所有可能的密鑰
- 統計分析
已知明文攻擊(knownplaintext attack)
: 入侵者已知(部分)明文以及與之匹配的密文- e.g., 在
單碼替代密碼
(monoalphabetic cipher)中,入侵者已確認字母a,l,i,c,e,b,o的替換關係
- e.g., 在
選擇明文攻擊(chosenplaintext attack)
: 入侵者可以獲取針對選擇的明文的密文
10.3.2 傳統加密方法
大致可分爲替代密碼
和換位密碼
。
替代密碼(substitution cipher)
利用一種東西替代另一種東西 。
凱撒密碼(Casesar cipher)
:一個字母替代另一個字母- 將一個字母利用字母表中該字母后面的第k個字母替代
- 如k=3,“bob. i love you. alice”→“ere, l oryh brx. dolfh”
單碼(字母)替代密碼(monoalphabetic cipher)
多碼(字母)替代加密(polyalphabetic encryption)
:使 用多個單碼替代密碼,明文中不同位置的字母使用不 同的單碼替代密碼- 例如,使用採用兩個凱撒密碼的多碼替代加密:
- 例如,使用採用兩個凱撒密碼的多碼替代加密:
換位(transpositions)密碼
重新排列明文中的字母。
置換法(permutation method)
- 將明文劃分爲固定長度(d)的組,每個組內的字母按置換規則(f)變換位置
- 密鑰:(d, f)
- 例如:
列置換加密
- 將明文按行組成一個矩陣,然後按
給定列順序
輸出得到密文- 例如:
- 例如:
- 將明文按行組成一個矩陣,然後按
列置換加密-改進版
- 列置換加密的密鑰包括
列數
和輸出順序
- 可以用一個
單詞
來表示 單詞長度
表示列數
,單詞中的字母順序
表示輸出順序
- 例如:
- 例如:
- 可以用一個
- 列置換加密的密鑰包括
10.3.3 現代加密技術
- 現代加密技術的基本操作包括經典的
替代
和置換
- 不再針對一個個字母,而是針對二進制
位
操作
- 不再針對一個個字母,而是針對二進制
- 現代加密技術主要分爲:
- 對稱密鑰加密
- 非對稱密鑰加密(公開密鑰加密)
- 對稱密鑰加密:
流密碼(stream ciphers)
分組密碼
,也稱塊密碼(block ciphers)
流密碼
- 基本思想:
- 首先利用密鑰K產生一個密鑰流:z=z0 z1 z2 …
- 然後使用如下規則對明文串x=x0 x1 x2…加密:
- 解密時,使用相同的密鑰流與密文做運算 (XOR)
流密碼工作流程
驚奇地發現,加解密過程其實是一樣的。分組密碼
- 將明文序列劃分成長爲
m
的明文組 - 各明文組在長爲
i
的密鑰組的控制下變換成長度 爲n
的密文組 - 通常取n=m
- n>m 擴展分組密碼
- n<m 壓縮分組密碼
- 典型分組密碼結構:
Feistel分組密碼結構
- 在設計密碼體制的過程中,Shannon提出了能夠破壞 對密碼系統進行各種統計分析攻擊的兩個基本操作:
擴散(diffusion)
和混淆(confusion)
- 基於1949年Shannon提出的交替使用
替代
和置換
方式構造密碼體制
- 在設計密碼體制的過程中,Shannon提出了能夠破壞 對密碼系統進行各種統計分析攻擊的兩個基本操作:
這個結構的理論根據是啥?爲什麼這樣能破壞各種統計分析的攻擊?有空得去讀讀香農大師的論文!
Feistel分組密碼結構
- 基於“
擴散
”和“混亂
”的思考 ,Feistel提出通過替代
和置換
交替操作方式構造密碼 - Feistel是一種設計原則,並非一 個特殊的密碼
加密
:
解密
:
Feistel結構的分組密碼安全性取決於:
分組長度
- 分組長度越
大
,安全性越高
,加密速度越慢
,效率越低
- 目前常用的分組加密算法的分組長度取
64位
- 分組長度越
子密鑰的大小
- 子密鑰長度
增加
,安全性提高
,加密速度降低
- 設計分組密碼時需要在安全性和加密效率之間進行
平衡
- 子密鑰長度
循環次數
循環越多
,安全性越高
,加密效率越低
子密鑰產生算法
- 在初始密鑰給定的情況下,產生子密鑰的算法越
複雜
,安全性越高
- 在初始密鑰給定的情況下,產生子密鑰的算法越
輪函數
- 一般情況下,輪函數越
複雜
,加密算法的安全性越高
- 一般情況下,輪函數越
10.3.4 數據加密標準: DES 結構概述
DES的發展歷程
DES: Data Encryption Standard
- IBM公司研製
- 1972年,美國國家標準局NBS (National Bureau of Standards)開始實施計算機數據保護標準的開發計劃。
- 1973年5月13日,NBS徵集在傳輸和存貯數據中保護計算 機數據的密碼算法。
- 1975年3月17日,首次公佈DES算法描述。
- 1977年1月15日,正式批准爲加密標準(FIPS-46),當年7 月1日正式生效。
- 1994年1月的評估後決定
1998年12月
以後不再將DES作爲 數據加密標準。
DES算法結構
- DES是
16
輪的Feistel結構密碼 - DES是一個包含16個階段的
“替代--置換”
的分組加密算法 - DES的分組長度是64位
- 64位的分組明文序列作爲加密算法的輸入,經 過16輪加密得到64位的密文序列
- DES使用
56位
的密鑰 - DES的每一輪使用
48位
的子密鑰- 每個子密鑰是56位密鑰的子集構成
- 每個子密鑰是56位密鑰的子集構成
10.3.5 數據加密標準: DES結構詳述
初始置換IP(Initial Permutation)
- 把輸入的64位數據的
排列順序打亂
,每位 數據按照下面規則重新組合
一輪DES加密過程
從一輪DES加密過程窺探整個過程的運作。
DES: 函數結構
- 黑盒變換
- 多個函數/操作(E、異或、S、P)的組合函數
函數的基本操作
擴展變換
:擴展變換(Expansion Permutation,也被稱爲E-盒
)將64位
輸入序列的右半部分
從32
位擴展到48
位。- 確保最終的密文與所有的明文位都有關
擴展變換不是亂來的,要根據一張表來開展。
- 確保最終的密文與所有的明文位都有關
S-盒替代
(S-boxes Substitution)
P-盒置換
(P-boxes Permutation)
逆初始置換(Inverse Initial Permutation)
- 初始置換和對應的逆初始置換操作並
不會增強DES算法的安全性
- 主要目的是爲了更容易地將明文和密文數據以字 節大小放入DES芯片中
每輪子密鑰的生成
10.3.6 DES的改進和AES的出現
DES的安全性
- DES的56位密鑰可能太小
- 1998年7月,EFE(電子前哨基金會)宣佈攻破了DES算法,他們 使用的是不到25萬美元的特殊的“DES破譯機”,這種攻擊只需要不到3天的時間。
- DES的迭代次數可能太少
- 16次恰巧能抵抗差分分析
- S盒(即替代函數S)中可能有不安全因素
- DES的一些關鍵部分不應當保密
- DES存在
弱密鑰
和半弱密鑰
- 針對DES的攻擊方法:
- 差分分析方法(Difference Analysis Method)
- 線性分析方法(Linear Analysis Method)
- 旁路攻擊法(Side-Channel Attack)
DES的改進
- 密碼分組鏈接(CBC-cipher block chaining)
- 加密算法的輸入是
當前明文分組
和前一次密文分組
的異或 - 重複的明文分組不會在密文中暴露出重複關係
- 加密算法的輸入是
- DES密鑰過短(56bits)→多重DES
3DES
使用3個密鑰
,執行3次DES算法,加密過程:- 加密-解密-加密(EDE),即:
- 加密-解密-加密(EDE),即:
- 爲了避免3DES使用3個密鑰進行三階段加密帶來的密鑰過 長的缺點(
168bit
),Tuchman提出使用兩個密鑰的三重加密方法,這個方法只要求112bit
密鑰,即令其K1=K3:
- 3DES的第二階段的解密並沒有密碼編碼學上的意義,
唯一優點是可以使用3DES解密原來的單次DES加密的數據
,即K1=K2=K3
高級加密標準AES
- AES: Advanced Encryption Standard
- NIST(美國國家標準技術研究所)對稱密鑰加密標準, 取 代DES(2001年12月)
- 1997年NIST宣佈徵集AES算法,要求:
- 可公開加密方法
- 分組加密,分組長度爲128位
- 至少像3DES一樣安全
- 更加高效、快
- 可提供128/192/256位密鑰
- 比利時學者Joan Daemen和Vincent Rijmen提出的 Rijndael加密算法最終被選爲AES算法。
- NIST在2001年12月正式頒佈了基於Rijndael算法AES標準
Rijndael加密算法簡介
不
屬於Feistel結構- 加密、解密相似但不完全對稱
- 支持
128/192/256
數據塊大小 - 支持
128/192/256
密鑰長度 - 有較好的數學理論作爲基礎
- 結構簡單、速度快
- Rijndael算法特點:
- 分組長度和密鑰長度均可變(
128/192/256
bits) - 循環次數允許在一定範圍內根據安全要求進行修正
- 匯聚了安全、效率、易用、靈活等優點
- 抗線性攻擊和抗差分攻擊的能力大大增強
- 如果
1秒
暴力破解DES,則需要149萬億年
破解AES
- 分組長度和密鑰長度均可變(
10.3.7 公鑰密碼學(RSA)實現原理
- 研究動機:傳統的
對稱密鑰加密
有一定的缺陷- 需要發送方與接收方知 道共享的祕密密鑰
- Q: 最初如何商定密鑰( 尤其“素未謀面”)?
於是乎公鑰加密技術
應運而生:
公鑰加密算法
- 前提條件(理論基礎): 模運算
x mod n = x除以n的餘數
- 事實上:
因此
:
- 舉例:x=14, n=10, d=2,則
實現RSA的前提
- 報文/信息(message): 僅僅是一個
比特模式 (bit pattern)
- 每個比特模式可以表示爲一個唯一的
整數
- 因此,加密一個報文就等價於加密一個數
- 例如: m= 10010001,可以唯一地表示爲十進制數145 ,爲了加密m,我們可以加密對應的數(145) ,得到一個新的數(即密文)。
RSA: 生成公鑰/私鑰對
- 選擇2個大質數p和q。(e.g., 1024bits的大質數)
- 計算
n
= pq,z = (p-1)(q-1) - 選擇
e
(滿足e<n),使e與z 之間沒有公因子, 即e, z互質(relatively prime) - 選擇
d
使得ed-1剛好可以被z整除, (即: ed mod z = 1 ).
RSA: 加密、解密
RSA舉例
10.3.8 公鑰密碼學(RSA)理論依據
RSA: 另一個重要性質
RSA爲什麼安全?
- RSA的安全性建立在“
大數分解和素性檢測
”這個數論難題的基礎上- 既將兩個大素數相乘在計算上容易實現,而 將該乘積分解的計算量相當大
- 假設已知Bob的公鑰(n,e),那麼有多大難 度確定d,即私鑰(n,d)?
- 本質上需要在不知道兩個因子p和q的前提 下,找出n的因子
- 分解一個大數是很困難的!
RSA的實際應用
RSA的缺陷
:RSA的冪運算強度很大- DES至少比RSA快100倍
- 實際應用中:
利用公鑰加密建立安全連接,然後建立第二個密鑰對稱會話密鑰,用於加密數據
會話密鑰(session key, KS)
- Bob與Alice利用RSA交換對稱會話密鑰
- 一旦雙方確認,則利用會話密鑰加密/解密會話數據
也就是說,因爲RSA需要的運算太多了,所以沒辦法給所有數據加密,那麼我們就在建立安全連接的時候採取RSA,而之後就採取傳統的對稱加密技術。
10.4 身份認證(Authentication)
證明身份時會出現失效
的情況,下面對每一代協議的失效情況都做了概述。
-
協議ap1.0
-
協議ap2.0
-
協議ap3.0
-
協議ap3.1
-
協議ap4.0
可抵禦回放攻擊。
但是ap4.0
需要共享密鑰,這是一種缺陷(必須事先知道共享密鑰),那麼是否可以利用公鑰技術? -
協議ap5.0
10.5 報文完整性(消息完整性)
10.5.1 什麼是報文完整性 ?
- 報文/消息完整性(message integrity),也稱爲報文/消息認證(或報文鑑別),
目標:
- 證明報文確實
來自聲稱的發送方
- 驗證報文在傳輸過程中
沒有被篡改
- 預防報文的
時間、順序被篡改
- 預防報文
持有期被修改
- 預防
抵賴
- 發送方否認
- 接收方否認
- 證明報文確實
10.5.2 密碼散列函數
密碼散列函數
(Cryptographic Hash Function):H(m)
- 散列算法公開
- H(m)能夠快速計算
- 對任意長度報文進行
多對一
映射,均產生定長輸出
- 對於任意報文無法預知其散列值
- 不同報文
不能
產生相同的散列值 單向性:
無法根據散列值倒推出報文- 對於給定散列值h,無法計算找到滿足h = H(m)的報文m
抗弱碰撞性
(Weak Collision Resistence-WCR)- 對於給定報文x,計算上不可能找到y且y≠x,使得H(x)=H(y)
抗強碰撞性
(Strong Collision Resistence-SCR)- 在計算上,
不可能
找到任意兩個不同報文x和y(x≠y),使得 H(x)=H(y)
- 在計算上,
Internet校驗和是優秀的密碼散列函數嗎?
答案:不是!
10.5.3 散列函數算法
MD5:
被廣泛應用的散列函數(RFC 1321)- 通過4個步驟,對任意長度的報文輸入,計算輸出
128位
的散列值 - MD5不是足夠安全
- 996年,Dobbertin找到了兩個不同的512-bit塊,在MD5計算 下產生了相同的散列值
- 通過4個步驟,對任意長度的報文輸入,計算輸出
SHA-1(Secure Hash Algorithm)
:另一個正在使用的散列算法- US標準 [NIST, FIPS PUB 180-1]
- SHA-1要求輸入消息長度 <
- SHA-1的散列值爲
160位
- 速度慢於MD5,安全性優於MD5
10.5.4 報文摘要(Message digests)
10.5.5 報文認證
簡單方案
:報文+報文摘要→擴展報文(m, H(m))
當H(m)=h時,說明接收的報文滿足完整性。
報文認證碼MAC(Message Authentication Code)
:
報文m+認證密鑰s+密碼散列函數H→擴展報文(m, H(m+s))
這是簡單方案
的改進版。
上述報文認證方案中存在的缺陷可以通過下一節講的
數字簽名
解決。
10.6 數字簽名
Q:
如何解決下列與報文完整性相關的問題?
- 否認
:發送方不承認自己發送過某一報文
- 僞造
:接收方自己僞造一份報文,並聲稱來自發送方
- 冒充
:某個用戶冒充另一個用戶接收或發送報文
- 篡改
:接收方對收到的信息進行篡改
A
:數字簽名(Digital signatures) !
- 數字簽名技術是實現安全電子交易的核心技術之一
- 可驗證性(verifiable)
- 不可僞造性(unforgeable)
- 不可抵賴性(non-repudiation)
10.6.1 簡單數字簽名
使用公鑰加密技術直接對完整報文
加密。
- 假設Alice收到報文m以及簽名
- Alice利用Bob的公鑰解密 ,並檢驗 來證實報文m是Bob簽名的
- 如果 成立,則簽名m的一定是Bob的私鑰
- 於是:
10.6.1 改進版數字簽名
使用公鑰加密技術直接對報文摘要
加密。
10.7 密鑰分發中心(KDC))—— 解決共享密鑰問題
-
回顧身份認證協議:ap4.0
-
對稱密鑰問題
對稱密鑰問題
:
兩個實體在網上如何建立共享祕密密鑰?解決方案
:
可信任的密鑰分發中心
(Key Distribution Center-KDC
)作爲實體間的中介(intermediary)
-
密鑰分發中心
- Alice與Bob需要共享對稱密鑰.
KDC:
一個服務器- 每個註冊用戶(很多用戶)共享其與KDC的祕密密鑰
- Alice和Bob只知道自己與KDC之間的對稱密鑰,用於分別與KDC進行祕密通信.
-
KDC如何支持Bob和Alice確定用於彼此通信的共享對稱密鑰呢?
注意:這裏的R1不是ap4.0中的一次性數R,而是共享密鑰。
10.8 認證中心(CA) —— 解決公鑰加密問題
問題情景
:
假如Alice要給Bob發送她的公鑰,但半路被Trudy攔住了,然後Trudy把她自己的公鑰發給Bob並聲稱那是Alice的公鑰。
-
回顧身份認證協議:ap5.0
-
比薩惡作劇
- Trudy針對Bob實施“
比薩惡作劇
”- Trudy創建郵件訂單:
- Trudy利用她的私鑰簽名訂單
- Trudy向比薩店發送訂單
- Trudy向比薩店發送她的公鑰,但她聲稱這是 Bob的公鑰
- 比薩店覈實簽名;然後向Bob遞送4個臘腸比薩
- Bob根本就不喜歡臘腸
- Trudy創建郵件訂單:
- Trudy針對Bob實施“
-
公鑰問題
公鑰問題
:- 當Alice獲得了Bob的公鑰 (通過web網站、 e-mail、磁盤等),她怎麼確認這
真
的是Bob的 公鑰而不是Trudy的?
- 當Alice獲得了Bob的公鑰 (通過web網站、 e-mail、磁盤等),她怎麼確認這
解決方案
:- 可信任的
認證中心
(Certification Authority-CA
)
- 可信任的
-
認證中心
認證中心(CA)
: 實現特定實體E與其公鑰的綁定- 每個E(如人、路由器等)在CA上註冊其公鑰.
- E向CA提供“身份證明”.
- CA創建綁定E及其公鑰的證書(certificate).
- 證書包含由CA簽名的E的公鑰 – CA聲明:“這是E的公鑰”
- 當Alice想要Bob的公鑰時:
- 首先或取Bob的公鑰證書(從Bob或者其他地方).
- 應用CA的公鑰,解密證書中籤名的公鑰,獲得Bob 公鑰
-
公鑰證書主要內容
11 網絡安全協議與技術
11.1 安全電子郵件
在應用層
解決電子郵件安全問題。
11.1.1 安全電子郵件基本原理
電子郵件安全威脅
垃圾郵件
- 增加網絡負荷,佔用服務器空間
詐騙郵件
- 能迅速讓大量受害者上當
郵件炸彈
- 短時間內向同一郵箱發送大量電子郵件
- 通過電子郵件/附件傳播網絡
蠕蟲/病毒
- 電子郵件
欺騙、釣魚
式攻擊
電子郵件安全需求
機密性
- 只有真正的接收方纔能閱讀郵件
完整性
- 電子郵件在傳輸過程中不被修改
身份認證性
- 電子郵件的發送者不被假冒
抗抵賴性
- 發信人無法否認發過電子郵件
安全電子郵件基本原理實現
1、2、3是逐步遞進的,其中3是1、2的結合,它是當今郵件傳輸中常用的加密方法。
- 要求郵件信息保密。本來,直接使用公鑰技術對郵件進行加密安全性更高,但是計算量太大了,所以就只能用公鑰技術對對稱密鑰加密而使用對稱加密技術對整個郵件信息加密了。
- 此時Alice不要求郵件的信息能保密(假如她向Bob示愛巴不得全世界知道),但要求發送者認證和報文完整性。
- 要求信息保密且發送者認證、報文完整性。
11.1.2 安全電子郵件標準
PEM標準
PEM(Privacy Enhanced Mail)標準
- IETF與IRTF研究增強E-Mail的保密以及PEM的標準化
- 1993年初,提出四份RFC(1421~1424)作爲建議標準
- PEM的運行依賴PKI(公鑰基礎設施),如CA
- 沒有被廣泛配置
- PEM提供4種安全服務: •
- 郵件加密
- 報文完整性
- 發送方的認證
- 防發送方否認
PGP標準
-
PGP(Pretty Good Privacy)標準
- Philip Zimmermann於1991年發佈PGP 1.0
- 事實上標準
- 可在各種平臺(Windows、UNIX等)免費運行
- 還可用於普通文件加密及軍事目的
- 所用算法被證實爲非常安全:
- 公鑰加密算法:RSA、DSS或Diffie-Hellman
- 對稱加密算法:CAST、3DES或IDEA
- 散列算法:MD5或SHA-1
- Philip Zimmermann於1991年發佈PGP 1.0
-
PGP特點:
- 對郵件內容進行數字簽名,保證信件內容不被篡改
- 使用公鑰和對稱加密保證郵件內容機密且不可否認
- 公鑰的權威性由收發雙方或所信任的第三方簽名認證
- 事先不需要任何保密信道來傳遞對稱的會話密鑰
-
PGP功能框架
Alice期望PGP提供保密、發送者認證與報文完整性:
-
PGP報文的格式
-
PGP密鑰
- 安裝PGP時,軟件爲用戶生成一個公開密鑰對
- 公鑰放置用戶網站或某公鑰服務器上
- 私鑰則使用用戶口令進行保護 •
- 用戶爲隨機生成的RSA私鑰指定一個口令,只有給出口令才能將私鑰 釋放出來使用
- 安裝PGP時,軟件爲用戶生成一個公開密鑰對
-
PGP公鑰認證機制與傳統CA差異較大:
- PGP公鑰可以通過可信的Web認證
- 用戶可以自己認證任何其信任的“公鑰/用戶名”對
- 用戶還可以爲其他公鑰認證提供“擔保”
-
防止篡改公鑰的方法(假如Alice需要Bob的公鑰):
- 直接從Bob手中得到其公鑰
- 通過電話認證密鑰
- 從雙方信任的David那裏獲得Bob的公鑰
- 通過CA
S/MIME標準
- S/MIME(Secure/Multipurpose Internet Mail Extensions)標準
- 提供數據保密、完整性和認證等安全服務
不僅限於郵件使用,可用於任何支持MIME數據的傳輸 機制,如HTTP
- 增加了新的MIME數據類型:
- “應用 /pkcs7-MIME”(application/pkcs7-MIME)
- “複合/已簽名”(multipart/signed)
- “應用 /pkcs7-簽名”(application/pkcs7-signature)等
- 只保護郵件的郵件主體,對頭部信息則不進行加密
- 認證機制依賴於層次結構的CA(Tree of Trust)
- 證書格式採用X.509規範
11.2 安全套接字層(SSL)
11.2.1 Web應用安全
-
Web安全威脅
- 攻擊與破壞事件層出不窮,需要安全Web服務
- Web應用廣泛、服務器底層軟件複雜,可能隱藏安全漏洞
- Web安全威脅的分類:
- 主動攻擊:篡改C/S之間信息或篡改Web站點信息(難防易檢)
- 被動攻擊:監聽數據流獲取信息或進行信息量分析(難檢易防)
- 機密性
- 網絡監聽、竊取數據
- 完整性
- 修改用戶數據、修改傳輸的信息
- 拒絕服務
- 僞造請求淹沒服務器
- 身份認證
- 冒充合法用戶、僞造數據
- Web服務器的安全威脅
- Web服務越強大,包含安全漏洞概率就越高
- HTTP服務可在不同權限下運行
- Web瀏覽器的安全威脅
- 活動Web頁可能隱藏惡意程序
- 通信信道的安全威脅
- 監聽程序會威脅通信信道中所傳輸信息的機密性
- 僞造、篡改、重放會威脅所傳輸信息的完整性
- 缺乏身份認證使得冒充他人身份進行中間人攻擊
- 缺乏數字簽名機制使得通信雙方能相互攻擊
- 拒絕服務攻擊使得通信信道不能保證可用性
- 攻擊與破壞事件層出不窮,需要安全Web服務
-
基於
應用層
實現Web安全
爲特定應用定製特定安全服務,將安全服務直接嵌入在應用程序中。
-
基於
傳輸層
實現Web安全- SSL或TLS可作爲基礎協議棧的組成部分,對應用透明,也可直接嵌入到瀏覽器中使用
- 使用SSL或TLS後,傳送的應用層數據會被加密
- 保證通信的安全
- 保證通信的安全
-
基於
網絡層
實現Web安全- IPSec提供端到端(主機到主機)的安全機制
- 通用解決方案
- 各種應用程序均可利用IPSec提供的安全機制
- 減少了安全漏洞的產生
- 減少了安全漏洞的產生
- IPSec提供端到端(主機到主機)的安全機制
11.2.2 SSL原理及實現概述
由於內容較多,通過幾行文字並不能清晰表達出其主要內涵,所以強烈建議觀看配套視頻學習。💻video-安全套接字層
SSL: Secure Sockets Layer
- 廣泛部署的安全協議
- 幾乎所有瀏覽器和Web服務器都支持
- https
- 每年通過SSL交易額達數十億美元
- 實現:Netscape
- 變體:TLS(RFC 2246)
- 提供:
機密性(confidentiality)
完整性(integrity)
認證(authentication)
- 最初目標:
- Web電子商務交易
- 加密(尤其信用卡號)
- Web服務器認證
- 可選的客戶認證
- 方便與新商戶的商務活動 (minimum hassle)
- 可用於所有基於
TCP
的網絡應用- 安全socket接口
SSL和TCP/IP
- SSL爲網絡應用提供應用編程接口 (API)
- C語言和Java語言的 SSL庫/類可用
可以像PGP那樣實現某些安全功能
- 但是,需要發送字節流以及交互數據
- 需要一組密鑰用於整個連接
- 需要證書交換作爲協議的一部分:握手階段
簡化的(Toy)SSL: 一個簡單的安全信道
從簡單的框架可以得到SSL的最核心
的思想。
握手(handshake)
: Alice和Bob利用他們的證書、私鑰認證(鑑別)彼此,以及交換共享密鑰密鑰派生(key derivation)
: Alice和Bob利用共享密鑰派生出一組密鑰數據傳輸(data transfer)
: 待傳輸數據分割成一系列記錄連接關閉(connection closure)
: 通過發送特殊消息,安全關閉連接
下面以幾小節來解釋上述四種技術。
簡化的SSL : 一個簡單的握手過程
MS
: 主密鑰EMS
: 加密的主密鑰
簡化的SSL : 密鑰派生
- 不同加密操作使用不同密鑰會更加安全
- 例如:報文認證碼(MAC)密鑰和數據加密密鑰
4個密鑰
:- Kc = 用於加密客戶向服務器發送數據的密鑰
- Mc = 用於客戶向服務器發送數據的MAC密鑰
- Ks = 用於加密服務器向客戶發送數據的密鑰
- Ms =用於服務器向客戶發送數據的MAC密鑰
- 通過密鑰派生函數(KDF)實現密鑰派生
- 提取主密鑰和(可能的)一些額外的隨機數,生成密鑰
密鑰是如何派生的?
- 客戶一次數、服務器一次數和預主密鑰輸入僞隨 機數發生器
- 產生主密鑰MS
- 主密鑰和新一次隨機數輸入另一個隨機數發生器: “密鑰塊(key block)”
- 密鑰塊“切片”:
- 客戶MAC密鑰
- 服務器MAC密鑰
- 客戶加密祕鑰
- 服務器加密祕鑰
- 客戶初始向量(IV)
- 服務器初始向量(IV)
(注意,client和server使用的是相同的隨機數生成函數,所以它們派生密鑰是相同的。因爲需要相同的鑰匙才能解密嘛,這個很容易理解。)
簡化的SSL : 數據記錄
- 爲什麼不直接加密整條發送給TCP的字節流?
因爲要將字節流分割爲一系列記錄用於實現MAC技術。- MAC放到哪兒?
- 如果放到最後,其實就只能加密整條發送給TCP的字節流,這時只有全部數據收全才能進行完整性認證。
- e.g 就好比我們打開qq聊天窗,我只要把我想要發的每一條信息都發送完了對方纔能收到我的信息,這樣子與qq聊天的即時性是相違背的。
- e.g., 對於即時消息應用, 在顯示一段消息之前,如何針對
發送的所有字節
進行完整性檢驗?
- MAC放到哪兒?
方案
:將字節流分割爲一系列記錄每個記錄攜帶一個MAC
- 接收方可以對每個記錄進行完整性檢驗
問題
:對於每個記錄, 接收方需要從數據中識別出MAC- 需要採用變長記錄
一條記錄中不同分段的內容是規定好的,比如規定把MAC放到記錄的尾部,那麼接收端就知道接收到的記錄的尾部是MAC
- 需要採用變長記錄
簡化的SSL : 序列號
待解決的問題
: 攻擊者可以捕獲和重放記錄或者重新排序記錄解決方案
: 在MAC中增加序列號- MAC = MAC(Mx, sequence||data)
- 注意: 記錄中沒有序列號域
待解決的問題
: 攻擊者可以重放所有記錄解決方案
: 使用一次性隨機數(nonce)
簡化的SSL : 控制信息
待解決的問題
: 截斷攻擊- 攻擊者僞造TCP連接的斷連段,惡意斷開連接
- 一方或雙方認爲對方已沒有數據發送
解決方案
: 記錄類型, 利用一個類型的記錄專門用 於斷連- type 0用於數據記錄;type 1用於斷連
- MAC = MAC(Mx, sequence||type||data)
簡化的SSL : 總結
一個使用了SSL加密方式的消息傳輸的示例:
11.2.3 SSL原理及實現詳述
上一節知識對SSL進行了簡化版的介紹,還有幾個問題沒有說明:
- 每個域多長?
- 採用哪種加密協議?
- 需要協商嗎?
協商的內容:- 允許客戶與服務器支持不同加密算法
- 允許客戶與服務器在數據傳輸之前共同選擇 特定的算法
SSL協議棧
- 介於HTTP與TCP之間的一個可選層
- 絕大多數應用層協議可直接建立在SSL之上
- SSL不是一個單獨的協議,而是
兩層協議
SSL密碼組(cipher suite)
- 密碼組(cipher suite)
- 公開密鑰算法(public-key algorithm)
- 對稱加密算法(symmetric encryption algorithm)
- MAC算法
- SSL支持多個密碼組
- 協商(negotiation): 客戶與服務器商定密碼組
- 客戶提供選項(choice)
- 服務器挑選其一
SSL更改密碼規格協議
- 更改密碼規格協議(Change Cipher Spec Protocol)
- 更新當前連接的密鑰組
- 標誌着加密策略的改變
- 位於SSL記錄協議之上
- ContentType=20
- 協議只包含一條消息(一個值爲1的字節)
- 更新當前連接的密鑰組
SSL警告協議
- 警告協議(Alert Protocol)
- Alert消息:
- 當握手過程或數據加密等出錯或發生異常時,爲對等實體傳遞SSL警告或終止當前連接
- 位於SSL記錄協議之上
- ContentType=21
- 協議包含兩個字節:警告級別和警告代碼
- Alert消息:
SSL握手協議
- 握手協議(Handshake Protocol)
- 協商結果是SSL記錄協議的基礎, ContentType=22
- SSL v3.0的握手過程用到三個協議:握手協議 、更改密碼規格協議和警告協議
目的
:- 服務器認證/鑑別
- 協商: 商定加密算法
- 建立密鑰
- 客戶認證/鑑別(可選)
SSL記錄協議
SSL中上層所有協議內容都要被封裝再記錄中。
- 記錄協議(Record Protocol)
- 描述SSL信息交換過程中的記錄格式
- 所有數據(含SSL握手信息)都被封裝在記錄中
- 一個記錄由兩部分組成:記錄頭和數據
11.2.4 對SSL的握手協議和記錄協議更詳細的說明
SSL握手過程
- 客戶發送其支持的算法列表,以及客戶一次隨機數(nonce)
- 服務器從算法列表中選擇算法,併發回給客戶: 選擇 + 證書 + 服務器一次隨機數
- 客戶驗證證書,提取服務器公鑰,生成
預主密鑰
(pre_master_secret),並利用服務器的公鑰加密預主密鑰,發送給服務器 - 客戶與服務器基於預主密鑰和一次隨機數分別獨立計算加密密鑰和MAC密鑰
- 客戶發送一個針對所有握手消息的MAC
- 服務器發送一個針對所有握手消息的MAC
最後2步的意義:保護握手過程免遭篡改
- 客戶提供的算法,安全性有強、有弱
- 明文傳輸
- 中間人攻擊可以從列表中刪除安全性強的算法
- 最後2步可以預防這種情況發生
- 最後兩步傳輸的消息是加密的
- 客戶提供的算法,安全性有強、有弱
- 爲什麼使用兩個一次隨機數?
- 假設Trudy嗅探Alice與Bob之間的所有報文
- 第二天,Trudy與Bob建立TCP連接,發送完全相 同的記錄序列
- Bob(如Amazon)認爲Alice對同一產品下發兩個分離的訂單
- 解決方案: Bob爲每次連接發送完全不同的一次隨機數
- 確保兩天的加密密鑰不同
- Trudy的報文將無法通過Bob的完整性檢驗
SSL握手消息及參數
SSL握手協議工作過程
SSL記錄協議
- SSL記錄協議的操作步驟:
- 將數據分段成可操作的數據塊
- 對分塊數據進行數據壓縮
- 計算MAC值
- 對壓縮數據及MAC值加密
- 加入SSL記錄頭
- 在TCP中傳輸
SSL記錄格式
- 記錄頭(record header)的結構
11.2.5 SSL的實際連接方式
11.3 IP安全(Sec)
虛擬專用網(VPN)
動機
:安全+成本虛擬專用網VPN
(Virtual Private Networks):通過建立在 公共網絡(如Internet)上的安全通道,實現遠程用戶、分 支機構、業務夥伴等與機構總部網絡的安全連接,從而 構建針對特定組織機構的專用網絡。虛擬
:“安全通道”不實際獨佔公共網絡的資源,是一條邏輯的 穿過公共網絡的安全、穩定的隧道- 通過隧道技術、加密技術、密鑰管理、認證和訪問控制等,實現與專用網類似的安全性能
典型VPN應用
VPN的功能
- 數據機密性保護
- 數據完整性認證
- 數據源身份認證
- 防重放攻擊
- 訪問控制
VPN關鍵技術
隧道技術
- 數據加密
- 身份認證
- 密鑰管理
- 訪問控制
- 網絡管理
隧道技術
- 構建VPN的核心技術
隧道
:通過Internet提供安全的點到點(或端到端) 的數據傳輸“安全通道”- 實質上是一種封裝
- VPN隧道利用隧道協議對通過隧道傳輸的數據進 行封裝
- 使數據安全穿越公共網絡(通常是Internet)
- 通過加密和認證以確保安全
- 數據包進入隧道時,由VPN封裝成IP數據報
- 通過隧道在Internet上安全傳輸
- 離開隧道後,進行解封裝,數據便不再被保護
隧道協議
-
隧道協議內包括以下三種協議:
- 乘客協議(Passenger Protocol)
- 封裝協議(Encapsulating Protocol)
- 承載協議(Carrier Protocol)
-
常見VPN隧道協議:
- 第二層隧道:PPTP、L2TP
- 主要用於遠程客戶機訪問局域網方案
- 第三層隧道:
IPSec
- 主要用於網關到網關、或網關到主機方案
- 不支持遠程撥號訪問
- 第二層隧道:PPTP、L2TP
典型VPN實現技術
IPSec
:最安全、適用面最廣- SSL:具有高層安全協議的優勢
- L2TP:最好的實現遠程接入VPN的技術
- 典型VPN技術結合:IPSec與SSL、IPSec 與L2TP
11.3.2 IPSec(1)
IPsec體系結構
IPsec服務
- 機密性(confidentiality )
- 數據完整性(data integrity)
- 源認證/鑑別(origin authentication)
- 重放攻擊預防(replay attack prevention)
- 提供不同服務模型的兩個協議:
- ·
AH
ESP
- ·
IPsec的傳輸(transport)模式
- IPsec數據報的發送與接收均由端系統完成
- 主機是IPsec感知的(IPsec-ware)
IPsec的隧道(tunneling)模式
- 邊緣路由器是IPsec感知的(IPsec-ware)兩個IPsec協議
- 提供IPsec服務的兩個協議:
- AH:在IP數據報文頭中的協議號爲51
- ESP:在IP數據報文頭中的協議號爲50
- 認證頭協議
AH
(Authentication Header)- 提供
源認證/鑑別
和數據完整性
檢驗,但不提供 機密性
- 提供
- 封裝安全協議
ESP
(Encapsulation Security Protocol)- 提供
源認證/鑑別
、數據完整性
檢驗以及機密性
- 比AH應用更廣泛
- 提供
IPsec模式與協議的4種組合!
11.3.3 IPsec(2)
安全關聯(SA)
- 發送數據前,從發送實體到接收實體之間需要建立安全關聯
SA (security association)
- SA是單工的: 單向
- 發送實體與接收實體均需維護SA的狀態信息
- 回顧: TCP連接的端點也需要維護狀態信息
- IP是無連接的;
IPsec是面向連接的!
- 例如:
- 安全關聯主要參數:
- 安全參數索引(SPI):32位SA唯一標識(ID)
- 加密密鑰、認證密鑰
- 密碼算法標識
- 序列號(32位)
- 抗重放攻擊
- 抗重播窗口
- 接收方使用滑動窗口檢測惡意主機重放數據報
- 生存週期
- 規定SA的有效使用週期
- 運行模式:傳輸模式或隧道模式
- IPSec隧道源、目的地址
SA舉例
R1爲SA存儲:
- 32位SA標識(ID) :
安全參數索引SPI
(Security Parameter Index) - 起點(origin)SA接口(200.168.1.100)
- 終點(destination)SA接口(193.68.2.23)
- 加密類型(e.g., 3DES with CBC)
- 加密密鑰
- 完整性檢驗類型(e.g., HMAC with MD5)
- 認證/鑑別密鑰
安全關聯數據庫(SAD)
- IPsec端點將SA狀態保存在
安全關聯數據庫SAD
(security association database)中- 在處理IPsec數據報時,定位這些信息
- 對於n個銷售人員,1個分支機構的VPN,總部的 路由器R1的SAD中存儲2 + 2n條SAs
兩倍
的SA
,因爲需要雙向
。 - 當發送IPsec數據報時,R1訪問SAD,確定如何處理數據報
- 當IPsec數據報到達R2
- R2檢驗IPsec數據報中的SPI
- 利用SPI檢索SAD
- 處理數據報
安全策略數據庫(SPD)
- Security Policy Database (SPD)
- 安全策略(SP):定義了對什麼樣的數據流實施什麼樣的安全處理
有一些數據流是需要加密的,而有一些不需要。- 應用IPSec、繞過、丟棄
- 安全策略組成了SPD,每個記錄就是一條SP
- 提取關鍵信息填充到一個稱爲“
選擇符
”的結構- 包括目標IP、源IP、傳輸層協議、源和目標端口等
- 利用選擇符去搜索SPD,檢索匹配的SP
- 提取關鍵信息填充到一個稱爲“
安全處理需要的參數存儲在SP指向的SA結構
11.3.4 IPSec(3)
IPsec數據報
-
傳輸模式AH
-
隧道模式AH
-
傳輸模式ESP
-
隧道模式ESP
IPsec的傳輸模式
IPsec的隧道模式
11.3.5 IPsec(4)
數據報處理過程
-
R1: 將原IP數據報轉換爲IPsec數據報
- 檢索SPD,確定處理策略
- 檢索SAD,確定SA
- 在原IP數據報(包括原IP首部域!)後面附加“ESP尾部”.
- 利用SA定義的算法與密鑰,加密上述結果.
- 在加密結果前面附加“ESP頭”,創建“enchilada”.
- 針對
整個enchilada
,利用SA定義的算法與密鑰,創建報 文認證碼MAC; - 在enchilada後面附加MAC,構成
載荷
(新IP數據報載荷); - 構造全新的IP頭,包含所有經典的IPv4首部字段;
- 將新IP頭附加在載荷的前面
-
R2: 解封IPsec數據報
- 原始IP數據報中提取選擇符,並搜索SPD,確 定處理策略
- 丟棄或轉入系統IP協議棧進行後繼處理
- 判斷是否爲IPsec數據報
- 從頭部提取,並檢索SAD
- 若找不到SA,則觸發IKE或丟棄包;
- 若找到,則根據SA解封數據報,得到原始IP數據報
- 原始IP數據報中提取選擇符,並搜索SPD,確 定處理策略
enchilada內部各字段作用
- ESP尾部:填充以便應用分組密碼
- ESP首部:
- SPI,接收實體基於此知道該做什麼
- 序列號,抵抗重放攻擊
- ESP的MAC認證字段,基於共享的祕密密鑰
IPsec序列號
- 對於新SA,發送方初始化序列號爲0
- 每次通過SA發送數據報:
- 發送方增加序列號計數器(加1)
- 將計數器值置於序列號字段
- 目的:
- 預防嗅探與回放分組攻擊
- 接收重複的、已認證的IP分組,會破壞正常服務
- 方法:
- 根據序列號,接收方檢驗分組是否重複
- 無需記錄所有已接收分組,而是利用一個窗口,檢查窗口內的分組是否重複
11.3.6 IPsec(5)
SA的建立和密鑰管理
IPsec支持兩種方式的SA建立和密鑰管理:
- 手工方式
- 所有的信息需要手工配置
- SA永遠存在
- 適用於結構簡單的網絡
- 自動方式
- SA可以通過協商方式產生
- SA過期以後重新協商,提高了安全性
- 適用於較複雜拓撲和較高安全性的網絡
Internet密鑰交換(IKE)
前面的例子
:在IPsec端點,手工建立IPsec SA
- 對於幾百個端點規模的VPN,手工設置密鑰是不可行的
- 替代方案:IPsec
IKE
(Internet Key Exchange) - IKE協議可自動管理SA的建立、協商、修改和刪 除,是IPSec唯一的密鑰管理協議
IKE
:ISAKMP
(Internet Security Association and Key Management Protocol)的通用框架- 定義了協商、建立、修改和刪除SA過程的通用框架
OAKLEY
的密鑰交換模式- 一個密鑰交換協議,允許認證過的雙方通過不安全的網絡交換 密鑰參數
SKEME
的共享和密鑰更新技術- 提供了IKE交換密鑰的算法
IKE和IPSec
- IKE爲IPSec提供服務:
- 密鑰交換與管理
- 身份認證:通信對等體的認證
- IPSec SA的協商與管理
IKE: PSK與PKI
- 認證可以通過:
- 預共享密鑰 (
PSK
),或者 - 公鑰基礎設施
PKI
(公開/私有密鑰對以及證書).
- 預共享密鑰 (
- PSK:基於共享的祕密密鑰
- 運行IKE認證彼此,並建立IPsec SAs (每個方向一個)
- 包括加密祕鑰和認證密鑰
- PKI:基於公開/私有密鑰對以及證書
- 運行IKE認證彼此,並建立IPsec SAs (每個方向一個)
- 類似於SSL的握手過程
IKE的執行階段
IKE包括兩個階段
:
階段1
:建立雙向IKE SA(也稱爲ISAKMP安全關聯)- 爲雙方進一步的IKE通信提供機密性、數據完整性以及數據源認證服務
- 注意:IKE SA不同於IPsec SA
- 兩種模式:
- 野蠻模式(aggressive mode)
– 3個消息交互,使用較少的消息 - 主模式(main mode)
– 6個消息交互
– 主模式提供身份保護(identity protection),並且更靈活
- 野蠻模式(aggressive mode)
階段2
:基於ISAKMP協議,進行IPsec SA的安全協商
11.3.7 IPsec總結
- IKE用於交換算法、祕密密鑰、SPI
- 採用AH協議或者ESP協議 (或者兩者)
- AH提供完整性、源認證服務
- ESP提供完整性、源認證以及機密性服務
- IPsec對等端可以是:
- 兩個端系統
- 兩個路由器/防火牆
- 一個路由器/防火牆與一個端系統
11.4 無線局域網安全
11.4.1 WEP的設計目標
- WEP(Wired Equivalent Privacy): 有線等效保密
- 對稱密鑰加密
- 機密性
- 主機認證
- 數據完整性
- 自同步: 每個分組單獨加密
- 給定加密分組和密鑰,便可以解密;即便前序分組丟 失,也可以繼續成功解密分組(與CBC不同)
- 高效
- 可以由硬件或軟件實現
11.4.2 回顧: 對稱流密碼
將密鑰流的每個字節與明文的每個字節進行異 或,得到密文
:
- WEP使用RC4算法
11.4.3 流密碼與分組獨立性
- 回顧WEP設計目標: 每個分組獨立加密
- 如果對於n+1號幀使用的密鑰流,是在n號幀的密 鑰流之後,那麼每個幀就不是獨立加密的
- 需要知道n號幀使用的密鑰流截止到哪裏
- WEP的解決方案:初始密鑰+針對每個分組的新 IV(初始向量),產生針對每個分組的密鑰流
11.4.4 WEP加密
- 發送端針對數據(data)計算
完整性校驗值ICV
(Integrity Check Value)- 4字節的散列值/CRC,用於數據完整性校驗
- 每端有104位的共享密鑰
- 發送端生成
24位初始向量(IV)
,附加到密鑰上:得到128位密鑰 - 發送端還要附加
keyID
(8位字段) - 將128位密鑰輸入到僞隨機數發生器,產生密鑰流
- 利用RC4算法對幀中“
數據+ICV
”進行加密:- 將密鑰流與“數據+ICV”逐個字節異或(XOR)
- 將IV和keyID附加到加密數據,構成載荷
- 將載荷插入到802.11幀中
11.4.5 WEP解密概述
- 接收端提取IV
- 將IV和共享密鑰輸入僞隨機數發生器,得到密鑰流
- 將密鑰流與加密部分逐個字節異或(XOR),解密得 到數據與ICV
- 利用ICV校驗數據完整性
- 注意: 這裏採用的消息完整性驗證方法與報文認證碼 MAC以及數字簽名(利用PKI)不同.
11.4.6 利用一次性隨機數進行端點認證
一次性隨機數(nonce)
: 一個生命期內只用一次的數R
如何證明Alice是“真實的”
:Bob向Alice發送一次性 隨機數nonceR, Alice必須利用共享密鑰加密並返回R。
11.4.7 WEP的身份認證
注意
:
- 並非所有AP都進行認證,即便使用了WEP
- AP會在信標幀(beacon frame)中指示是否需要認證
- 認證需要在關聯前進行
11.4.8 破解802.11WEP加密
安全漏洞:
- 每幀一個24位的IV→IV最終會被重用
- IV以明文傳輸→重用IV容易被監測
攻擊:
- Trudy誘使Alice加密已知明文:d1 d2 d3 d4 …
- Trudy知道: ci = di XOR kiIV
- Trudy已知ci和di,因此可以計算得到kiIV
- Trudy得到加密密鑰序列:k1IV k2IV k3IV …
- 下一次IV被重用時,Trudy便可以成功解密!
11.4.9 802.11i: 改進的安全
- 多種(更強的)可選的加密方法
- 提供密鑰分發
- 利用獨立於AP的認證服務器
- IEEE 802.11i 服務:
- 認證
- 訪問控制
- 數據與完整性加密
11.4.10 802.11i: 運行的4個階段
11.4.11 EAP: 擴展認證協議
- EAP:客戶(移動端)與認證服務器間的端-端協議
- EAP運行在兩段獨立的“鏈路”上
- 移動端到AP(EAPoL: EAP over LAN)
- AP到認證服務器(RADIUS over UDP)
11.5 防火牆
11.5.1 爲什麼需要防火牆?
預防拒絕服務攻擊(DoS)
:
- SYN泛洪: 攻擊者建立許多虛假TCP連接,耗盡資源, 導致“真正”的連接無法建立
預防非法修改/內部數據訪問
: - e.g., 攻擊者替換CIA網站主頁
只允許對內部網絡的授權訪問
: - 認證的用戶/主機
三種類型的防火牆
: - 無狀態分組過濾器(stateless packet filters)
- 有狀態分組過濾器(stateful packet filters)
- 應用網關(application gateways)
11.5.2 無狀態分組過濾
- 內部網絡通過
路由器防火牆(router firewall)
與Internet連接 - 路由器
逐個分組過濾
,決策是否轉發/丟棄分組,依據:- 源IP地址、目的IP地址
- TCP/UDP源、目的端口號
- ICMP報文類型
- TCP SYN和ACK標誌位
- ……
11.5.3 無狀態分組過濾:舉例
例1
: 阻止協議字段=17,以及源或目的端口號=23 的數據報進入與離開- 結果: 所有進入或離開的UDP流量,以及Telnet 連接均被阻止
例2
: 阻止進入的、 ACK=0的TCP段- 結果: 阻止外部客戶與內部主機主動建立TCP 連接,但是允許內部(內部發送的TCP段ACK=1)客戶與外部主機主動建立連接
11.5.4 訪問控制列表
ACL(Access Control Lists)
: 規則表,自頂向下應用於到達的分組:(action, condition)對
11.5.5 有狀態分組過濾
-
無狀態分組過濾器
: 笨拙- 不加以區分放行滿足條件的所有分組
- 例如:放行dest port = 80、ACK=1的分組,即使沒有建立TCP連接:
-
有狀態分組過濾器
: 跟蹤每個TCP連接- 跟蹤連接建立(SYN)、拆除(FIN): 根據狀態確定是否放行進入或外出的分組
- 超時的非活動連接: 不再允許分組通過
-
擴展
ACL
,以便在放行分組前,檢測連接狀態表
11.5.6 應用網關
- 基於應用數據以及 IP/TCP/UDP 頭部字段過濾分組
例如
:允許特定用戶 telnet外部網絡
- 要求所有Telnet用戶通過網關Telnet外部網絡;
- 對於授權的用戶,網關代理用戶與目的主機建立 Telnet連接,並且在兩個連接之間進行數據中繼;
- 路由器阻止所有不是由網關發起的Telnet連接。
11.5.7 防火牆、應用網關的侷限性
IP欺騙(spoofing)
: 路由器 不知道數據是否來自於聲稱的源- 如果多個應用需要特殊處 理,則每個應用需要一個 應用網關
- 客戶軟件必須知道如何連 接網關
- e.g., 必須配置Web瀏 覽器的代理服務器的 IP地址
- 過濾器經常對UDP流量 使用“全部通過”或者 “全部不通過”策略
折衷(tradeoff): 確定安全級別
與外部網絡的通信度
- 很多安全防護級別很高 的網站仍然遭受攻擊
完結撒花
創作不易,看完記得點贊喔。