A. 網路安全基礎
網路安全通信所需要的基本屬性:
1. 機密性
2. 消息完整性
3. 可訪問與可用性
4. 身份認證
1. 竊聽
2. 插入
3. 假冒
4. 劫持
5. 拒絕服務DoS和分布式拒絕服務DDoS
6. 映射
7. 嗅探
8. IP欺騙
數據加密
明文:未被加密的消息
脊隱 密文:被加密的消息
加密:偽裝消息以隱藏消息的過程,即 明文 密文 的過程.
解密: 密文 明文 的過程
1. 替代密碼 :用密文字母替代明文字母。
移位密碼加密函數:
:加密過程
:明文信息
:密鑰,表示移幾位
:如果是26個字母,那q就是26
解密函數:
:解密過程
:密文
:密鑰
2. 換位密碼 :根據一定規則重新排列明文。
【 例題 】如果對明文「bob.i love you. Alice",利用k=3的凱撒密碼加密,得到的密文是什麼?利用密鑰 "nice" 進行列置換加密後得到的密文是什麼?
【 答案 】 凱撒密碼 加密後得到的密文是:
"ere l oryh brx Dolfh"
列置換密碼 加密後得到的密文是:
iex bvu bly ooo"
【 解析 】 凱撒密碼 :
以明文字母b為例,M=2(b的位置為2),k=3,q=26,則:
密文 ,對應字母e,故b經過加密轉為了e
將明文全部替換後得到的密文 "ere l oryh brx Dolfh"
列置換密碼:
密鑰 "nice" 字母表先後順序為 "4,3,1,2" ,因此,按這個順序讀出表中字母,構成密文:"iex bvu bly ooo",(密鑰有幾位就有幾列,如果明文不夠就補x,然後按列讀取)
1. 對稱密鑰 密碼:加密秘鑰和解密秘鑰相同( ),例如用一個鎖將箱子鎖起來,這個鎖有2把相同的鑰匙,鎖好之後把另一把鑰匙派人送給他。
2. 對稱密鑰密碼 分類 :
分組密碼:DES、AES、IDEA等。(分組處理)
1) (數據加密標准):56位密鑰,64位分組。(56位二進制數,每位的取值是0或1,則所有的取值就是 個)
2) :使用 兩個秘鑰 (共 112位 ),執行三次DES演算法。(用1個密鑰櫻告廳執行一次加密,再用另一個密鑰執行一次解密,共執行三次)
3) (高級加密演算法):分組128位,密鑰 128/192/256 位。
4)IDEA:分組64位,密鑰 128 位。
流密碼(挨個處理)
1. 非對稱密鑰 密碼:加密密鑰和解密密鑰不同, ,其中一個用於加密,另一個用於解密。( 私鑰 :持有人所有 公鑰 :公開的)
2. 加密密鑰可以公開,也稱公開密鑰加密。
3. 典型的公鑰演算法:
Diffie-Hellman演算法
RSA演算法
密碼散列函數
1. 特性:
定長輸出;
單向性(無法根據散列值逆推報文)
抗碰撞性(無法找到具有相同散列值的兩個報文)
2. 典型的散列函數
MD5:128位散列值
SHA-1:160位散列值
報文認證是使消息的接收者能夠檢驗收到的消息是否是真實的認證方法。來源真實,未被篡改。
1. 報文摘要(數字指紋)
2. 報文認證方法
簡單報文驗證:僅使用報文友梁摘要,無法驗證來源真實性
報文認證碼:使用共享認證密匙,但無法防止接收方篡改
身份認證、數據完整性、不可否認性
1. 簡單數字簽名:直接對報文簽名
2. 簽名報文摘要
1. 口令:會被竊聽
2. 加密口令:可能遭受回放/重放攻擊
加密的口令可能會被截獲,雖然不知道口令是什麼,但他將加密口令提交給伺服器,說這是我加密的口令,這叫重放.
3. 加密一次性隨機數:可能遭受中間人攻擊
Alice發給Bob說她是Alice,但Bob說你要向我證明,Bob生成一個隨機數發給Alice,讓Alice用自己的私鑰進行加密,加密後再把數據發給Bob,然後Bob再向Alice要公鑰進行解密解出來的隨機數如果和Bob發給Alice的隨機數一樣的話,那就說明她是Alice。
這種方法會被中間人攻擊,Alice發送的私鑰加密被Trudy更換為自己用私鑰加密的數據然後發給Bob,公鑰也被Trudy換了,最後Bob用公鑰加密數據發給Alice,Trudy截獲了,用自己的私鑰進行解密,獲得了數據。
密鑰分發存在漏洞:主要在密鑰的分發和對公鑰的認證環節,這需要密匙分發中心與證書認證機構解決
雙方通信時需要協商一個密鑰,然後進行加密,每次通信都要協商一個密鑰,防止密鑰被人截獲後重復使用,所以密鑰每次都要更換,這就涉及到密鑰分發問題。
基於 KDC 的秘鑰生成和分發
認證中心CA:將公鑰與特定的實體綁定
1. 證實一個實體的真實身份;
2. 為實體頒發 數字證書 (實體身份和 公鑰 綁定)。
防火牆 :能夠隔離組織內部網路與公共互聯網,允許某些分組通過,而阻止其它分組進入或離開內部網路的軟體、硬體或者軟硬體結合的一種設施。
前提 :從外部到內部和從內部到外部的所有流量都經過防火牆
1. 無狀態分組過濾器
基於特定規則對分組是通過還是丟棄進行決策,如使用 實現防火牆規則。
2. 有狀態分組過濾器
跟蹤每個TCP連接建立、拆除,根據狀態確定是否允許分組通過。
3. 應用網關
鑒別 用戶身份 或針對 授權用戶 開放 特定服務 。
入侵檢測系統(IDS):當觀察到潛在的惡意流量時,能夠產生警告的設備或系統。
1. 電子郵件安全需求
1)機密性
2)完整性
3)身份認證性
4)抗抵賴性
2. 安全電子郵件標准:
1. SSL是介於 和 之間的安全協議.
2. SSL協議棧
(傳統的TCP協議是沒有安全協議的,傳輸都是明文,所以在TCP上面設置SSL協議保證安全性)
3. SSL握手過程
協商密碼組,生成秘鑰,伺服器/客戶認證與鑒別。
1. VPN
建立在 上的安全通道,實現遠程用戶、分支機構、業務夥伴等與機構總部網路的安全連接,從而構建針對特定組織機構的專用網路。
關鍵技術 : ,如IPSec。
2. 典型的 網路層安全協議 ——
提供機密性、身份鑒別、數據完整性和防重放攻擊服務。
體系結構: 認證頭AH協議 、 封裝安全載荷ESP協議 。
運行模式: 傳輸模式 (AH傳輸模式、ESP傳輸模式)、 隧道模式 (AH隧道模式、ESP隧道模式)
本文主要介紹了網路安全基本概念、數據加密演算法、消息完整性與數字簽名、身份認證、密鑰分發中心與證書認證機構、防火牆與入侵檢測以及網路安全協議等內容。
回顧:
1. 網路安全基本屬性
2. 典型數據加密演算法;
3. 消息完整性、數字前面以及身份認證原理。
B. SSL/TLS協議解析
本文藉助wireshark抓包詳細的講解SSL/TLS協議。HTTPS是為了解決http報文明文傳輸過程中的安全問題。HTTPS是「HTTP over SSL」的縮寫。所以要了解HTTPS就必須先了解SSL/TLS協議。
HTTP協議中所有消息都是明文傳播,存在如下三大風險
為了解決這個三個風險,分別對應如下三個解決方案。
由於SSL的2個版本都已經退出歷史舞台了,所以本文後面只用TLS這個名字。 一般所說的SSL就是TLS。
TLS建立連接的過程如下圖,先有個大概的印象,後面我們再詳細分析。整個需要四次握手。
SSL/TLS工作在應用層和傳輸層之間 ,在建立連接的之前需要先建立TCP連接(三次握手),如下圖。
記錄協議根據rfc描述 記錄協議(Record Layer) 有如下4種類型,即上圖中Content Type可以取的值。
記錄協議(Record Layer) 數據結構
握手協議(Handshake Protocal) 有如下10種類型。
握手協議(Handshake Protocal) 數據結構
wireshark抓包顯示客戶端支持的加密套件有31種。 cipher的格式為:認證演算法 密鑰交換演算法 加密演算法_ 摘要演算法 。server會從這些演算法組合中選取一組,作為本次SSL連接中使用。
這個包告訴我們伺服器和客戶端是通過Diffie-Hellman演算法來生成最終的密鑰(也就是Sessionkey會話密鑰),pubkey是Diffie-Hellman演算法中的一個參數,這個參數需要通過網路傳給客戶端,即使它被截取也不會影響安全性。具體見參考文獻三。
在client hello和server hello包中都有Random欄位,上面我們是沒有說明的,client和server這兩個隨機數加Diffie-Hellman演算法生成出來的這個key。一共三個數字生成最終對稱加密的key
從現在開始發送的數據就是採用上述步驟協商出的對稱加密密鑰加密過的數據了
再回過頭來看一下這張圖,加密過程總結如下:
C. 消息認證碼與加密演算法的區別求大神指教
消息認證碼MAC(帶密鑰的Hash函數):密碼學中,通信實體雙方使用的一種驗證機制,保證消息數據完整性的一種工具。構造方法由M.Bellare提出,安全性依賴於Hash函數,故也稱帶密鑰的Hash函數。是一種消息認證演算法。消息認證碼是基於密鑰和消息摘要所獲得的一個值,可用於數據源發認證和完整性校驗。消息認證是強調消息的完整性。可以驗證消息的完整性,當接收方收到發送方的報文時,接收方能夠驗證收到的報文是真實的和未被篡改的。一是驗證消息的發送者是真正的而非冒充的,即數據起源認證,二是驗證消息在傳輸過程中未被篡改。
而加密演算法主要是保證消息的保密性,各種加密演算法就不說了,網路很詳細。。。