文章目錄
- 第二部分,數據安全
- 第十二章:VPN概述
- VPN概述
- VPN分類
- VPN關鍵技術
- 隧道技術
- 身份認證技術
- 加解密技術
- 數據認證技術
- 數據的安全傳輸
- 密碼學
- 發展史
- 對稱加密算法 --- 傳統密碼算法
- 密鑰解釋
- 流加密
- 分組加密 --- 塊加密算法
- 填充算法
- PKCS7算法
- 分組模式
- 公鑰密碼體系
- 非對稱加密 --- 公鑰加密
- DH交換算法 --- 密鑰交換算法
- 混合密碼體系
- 身份認證和數據認證技術
- HASH散列
- 簡介
- 用途
- MAC和HMAC
- 數字簽名
- 數字簽名的方法
- 直接對消息簽名
- 對消息的散列值簽名
- 數字證書
- 證書認證場景
- PKI體系 ---- 公鑰基礎設施
第二部分,數據安全
? 數據傳輸的安全性 ---- VPN
第十二章:VPN概述
? TCP/IP ----- 僅保證數據互通,不保證數據的安全性。
? VPN誕生的需求:1、物理網線不適用;2、公網安全無法保證。
VPN概述
? VPN ------ 虛擬私有網絡;依靠ISP/NSP在公共網絡基礎設施上構建的專用安全數據通信的網絡。(ISP:Internet服務提供商,I—Internet;NSP:網絡服務提供商,N—Natwork)
? IETF ----- 基于IP的VPN ---- 理解:使用IP機制仿真出一個私有的廣域網。依靠隧道技術。---- 在公共數據網絡上模擬出一條點到點的專線技術。
- 專線VPN ---- 客戶租用數字數據網(DDN),ATM(PVC),幀中繼(FR)等等,組建一個二層的VPN網絡。運營商幫助客戶來維護骨干網絡,客戶只負責管理自身的站點。
- 基于客戶端設備的加密VPN ---- VPN的所有功能全部都由客戶端設備實現,VPN成員之間通過非信任的公網實現互聯。
VPN分類
- 根據建設單位來分類:
- 直接租用運營商 ----- MPLS VPN技術
- 企業自己搭建 ----- GRE、L2TP、IPSec、SSL
- 組網方式分類:
- 客戶到站點 ---- 出差員工(客戶端)跨越公網訪問企業總部內網。
- 特點:客戶端IP地址不固定。訪問是單向的,即只有客戶端主動訪問站點。
- Access VPN(接入VPN)
- 站點到站點 ---- 分支和總部分別通過各自的設備連接到Internet。基于Internet網絡來構建一個虛擬隧道,該虛擬隧道一直存在(只要有數據傳輸就會存在)。
- 組網,是相對穩定的。
- 特點:兩端網絡均通過固定的網關設備進行連接。訪問是雙向的。
- 客戶到站點 ---- 出差員工(客戶端)跨越公網訪問企業總部內網。
企業內部虛擬專用網總部到分部企業外部虛擬專用網合作商/外包公司到總部
? 核心點:在于接入后的權限控制。
VPN關鍵技術
隧道技術
? 依靠VPN技術封裝的位置所決定。VPN的核心是隧道技術,而隧道技術的核心是封裝技術。
? 工作在不同層次的VPN,其實是為了保護所在層次及以上的數據。---- 不存在加密的情況下,并不代表此時的數據是安全的。
? 隧道技術的優點:
- 互聯互通 ---- 隧道技術,可以實現不同網絡協議或不同網絡環境之間的互聯互通。比如IPv6通過IPv4隧道實現數據傳輸。
- 安全性 ---- 隧道技術可以和加密、身份認證技術結合 ---- IPSec、SSL/TLS。
- **靈活性 ** ---- 隧道可以靈活根據網絡資源和網絡使用需求進行VPN建立和維護。
身份認證技術
? 是VPN技術的前提。即需要對任何接入網絡的用戶進行身份核實,否則該VPN隧道是不安全的隧道,可能會為惡意用戶提供便利。
- L2TP ---- L2TP是二層隧道,其PPP協議就是乘客協議,所以,L2TP可以依賴于PPP提供的認證機制,即PAP和CHAP認證。
- IPSec、SSL VPN ---- 支持身份認證。
加解密技術
? 將能夠讀懂的報文,變成無法讀懂的報文。加密對象:數據報文,協議報文。
? 目的:保證信息就算是被攻擊者竊聽或截取,攻擊者也無法知道其中的內容,以此來抵抗網絡中的被動攻擊行為。
? 加密技術核心點:雙向函數。
- GRE/L2TP 本身不提供加密技術;可以借助IPSec來實現加密。
- IPSec和SSL都支持加解密。
數據認證技術
? 數據認證 — 保證數據的完整性,即數據是否損壞,是否被篡改。
? 驗貨 ---- 對于偽造的、被篡改的數據進行丟棄。
? 采用“摘要”技術;即采用HASH函數來實現。利用HASH函數的特點:1、固定輸入固定輸出;2、不可逆性;3、雪崩效應。
? 通過HASH函數將一段任意長度的數據進行函數變化,映射為一段較短的報文。在收發兩端對報文進行驗證,只有摘要值一致的報文才會被認可。
- GRE可以提供簡單的數據認證 — 校驗和或關鍵字認證。校驗和—>數據是否完整;關鍵字—>用來標識具體隧道流量的。
- L2TP本身沒有數據認證機制,依靠IPSec實現。
- IPSec、SSL都支持數據驗證技術。
數據的安全傳輸
密碼學
? 近現代加密算法;古典加密學。
? 什么是密碼學?----- 一門提供信息安全和信息保護的學科,包括對信息的加密、驗證、簽名等技術。
? 密碼學,本質上屬于一門應用數學。現代密碼學 — 需要運用計算機技術來實現算法和密碼系統的工作。
散列算法、對稱/非對稱加密、數字簽名......
數字證書PKI、TLS通信協議----密碼學應用
發展史
? 倒序排列。
? 凱撒密碼 ---- 在順序字母表上,增加一個偏移量,并且將小寫轉換為大寫。
凱撒密碼(Caesar Cipher),又稱凱撒加密、凱撒變換,是一種古老且廣為人知的加密技術。凱撒密碼的核心思想是將明文中的每個字母在字母表中按照固定的位數進行移動,從而生成密文。例如,若偏移量為3,則字母A會被替換為D,B替換為E,以此類推,直到字母Z被替換為C(因為字母表是循環的,Z之后會回到A的前一個字母)。解密過程是加密的逆操作,即將密文中的每個字母向相反方向移動相同的位數。
凱撒密碼的數學表示為了更精確地描述凱撒密碼,可以使用數學公式來表示其加密和解密過程。設明文字母為P,密文字母為C,偏移量為K(密鑰),字母表的長度為N(對于英文字母表,N=26)。凱撒密碼的加密公式可以表示為:C = ( P + K ) mod N解密公式則是加密公式的逆操作:P = ( C ? K ) mod N其中,\mod是取模運算,用于確保結果始終在字母表范圍內。例如,若P=25(代表字母Z),K=3,則加密后的密文為:C = ( 25 + 3) mod 26 = 28 mod 26=2即字母C。
? 斯巴達棒
斯巴達棒(Spartan Staff)在密碼學中并非指一個具體的實物工具,而是一個與加密技術相關的術語。在密碼學的實際應用中,斯巴達棒通常指的是一種基于“移位法”(Transposition)的加密方式,特別是一種簡單的字母移位加密,類似于凱撒密碼,但更側重于字母順序的重排而非簡單的字母替換。
斯巴達棒加密的工作原理加密過程選擇密鑰:在斯巴達棒加密中,密鑰通常是一個數字或一組數字,用于決定字母或字符的移位方式。文本分割:將明文(未加密的文本)分割成固定長度的塊或行,這些塊或行的長度可以根據密鑰或加密者的選擇來確定。移位操作:根據密鑰指定的移位規則,對明文塊或行中的字母或字符進行重排。這種重排可能涉及列交換、行交換、對角線交換等多種方式,具體取決于密鑰的復雜性和加密者的設計。生成密文:將移位后的字母或字符重新組合成密文。密文的外觀可能與明文截然不同,從而隱藏了原始信息。解密過程密鑰恢復:解密者需要知道與加密過程相同的密鑰,以便恢復明文。反向移位:使用密鑰指定的移位規則,對密文中的字母或字符進行反向重排,以恢復原始的順序。重組明文:將反向移位后的字母或字符重新組合成明文。
? 古典加密算法 — 算法保密原則。---- 受限制的算法。
? 在近現代加密算法中 ---- 邏輯:算法公開,密鑰保密。— 加入**密鑰:一個任意數值。算法的安全性都是基于密鑰的安全性,而非是基于算法本身的安全性**。
? 分類:1、對稱加密算法;2、非對稱加密算法。
對稱加密算法 — 傳統密碼算法
? 秘密密鑰算法、單鑰算法、加密算法
? 明文+密鑰 進行加密算法運算 = 密文
? 對稱密鑰 — 發送者和接收者共同擁有的同一個密鑰。該密鑰,即用于加密,又用于解密。
? 加密過程中,安全性是取決于是否有未經授權的人獲取到密鑰信息。
問題:如何安全的傳輸密鑰信息,即合理的交換密鑰?
1、有沒有第三方獲取
2、對于發送方而言,接收方是否是我想要對接的人
3、對于接收方而言,發送方是否是我想要對接的人
密鑰解釋
? 密鑰的核心點 — 雙向函數 — 邏輯運算(異或算法)
輸入a 根據函數 得到b
輸入b 根據函數 得到a
? 異或算法:不進位的加法,且是針對于二進制運算的。
? 異或運算規則:相同為0,不同為1。
? 對稱算法加密分類:1、流加密;2、分組加密。
流加密
? 順序加密技術 ----> 邏輯:就是異或算法。
? 特點:基于明文流進行加密,然后使用與明文流相同長度的一串密鑰流,通過異或算法得到密文。
明文流:11001110
密鑰流:10001110密文流:01000000
密鑰流:10001110明文流:11001110
? 密鑰的傳輸:
- 帶外傳輸 — 不方便(通過U盤拷貝等方式)
- 帶內傳輸 — 不安全(網絡傳輸)
- 密鑰協商協議
- 密鑰分發中心KDC
? RC4加密算法 — 典型的流加密算法。無線網絡。
RC4加密算法是一種對稱加密算法,由美國計算機科學家羅納德·李維斯特(Ronald Rivest)于1987年設計。它屬于流密碼加密算法,具有算法簡單、運行速度快的特點,廣泛應用于網絡通信、安全協議、無線通信等領域。以下是對RC4加密算法的詳細描述:
一、算法原理RC4加密算法的原理基于偽隨機數流和異或運算。算法的核心是生成一個偽隨機數流(密鑰流),然后將明文與密鑰流逐字節進行異或運算,得到密文。解密時,再將密文與相同的密鑰流進行異或運算,即可還原出明文。
二、算法步驟RC4加密算法主要分為兩個階段:密鑰調度算法(Key Scheduling Algorithm,KSA)和偽隨機數生成算法(Pseudo-Random Generation Algorithm,PRGA)。密鑰調度算法(KSA)初始化S盒:S盒是一個長度為256的數組,初始值為0到255的排列。填充K表:將密鑰以循環方式排列在K表中,如果密鑰長度小于256字節,則循環填充,直到填滿K表。置換S盒:使用K表對S盒進行置換,增加S盒的隨機性。具體做法是,通過一系列復雜的置換和交換操作,打亂S盒中元素的順序。偽隨機數生成算法(PRGA)初始化指針:設置兩個指針i和j,初始值都為0。生成密鑰流:通過迭代生成偽隨機數流。在每次迭代中,更新指針i和j的值,交換S盒中對應位置的元素,然后計算偽隨機數k。偽隨機數k的計算公式為:k = S[( S[i] + S[j]) mod 256]。加密/解密:將生成的偽隨機數k與明文(或密文)字節進行異或運算,得到密文(或明文)。
三、算法特點算法簡單,運行速度快:RC4算法的實現相對簡單,僅需要使用異或運算和交換操作,因此運行速度快,適用于資源有限的設備和環境。密鑰長度可變:RC4算法支持變長密鑰,密鑰長度可以在1到256字節之間,靈活性高。無填充需求:RC4算法不需要對明文進行填充操作,可以直接對數據進行加密。長度無限制:RC4算法對加密/解密數據的長度沒有限制,適合加密數據流。
四、應用場景RC4加密算法曾經被廣泛應用于網絡通信、安全協議、無線通信等領域。例如,在SSL/TLS協議中,RC4算法曾經被用作一種加密算法;在WEP(Wired Equivalent Privacy)和WPA(Wi-Fi Protected Access)等無線網絡安全協議中,RC4算法也被用于保護Wi-Fi網絡的安全。然而,由于RC4算法存在安全漏洞,容易被暴力破解,因此現在已經不再被推薦使用。在實際應用中,建議使用更加安全的加密算法,如AES算法。
五、安全性問題盡管RC4算法在誕生初期被認為是一種相對安全的加密算法,但隨著密碼分析技術的發展,RC4算法的安全性逐漸被揭示出來。主要存在的問題包括:密鑰調度算法存在弱點:通過選擇特定的密鑰,攻擊者可以利用RC4算法的弱點,對密鑰流進行分析,從而推斷出密鑰的部分或全部內容。密鑰重用風險:在RC4算法中,如果多次使用相同的密鑰加密不同的明文,可能會導致密鑰流的重用,增加密碼分析的風險。字節偏差問題:RC4算法的密鑰流在某些條件下會出現字節偏差,即某些字節的概率分布不均勻。這種字節偏差可以被攻擊者利用,通過對密文的統計分析來推斷出明文的部分或全部內容。
六、總結RC4加密算法是一種簡單而高效的對稱密鑰流密碼算法,具有算法簡單、運行速度快、密鑰長度可變等特點。然而,由于存在安全漏洞,RC4算法已經不再被推薦使用。在實際應用中,應選擇更加安全的加密算法來保護數據的安全性。
分組加密 — 塊加密算法
? 用于網絡加密。
? 邏輯:先將明文切分成一個個固定大小的塊,在對每個塊進行加密。----- 固定長度 == 分組長度。
安全性 --- 分組長度越長越好。
實用性 --- 分組長度越短越好。
具體流程:
1、明文字節數組,切分成固定塊,每個塊16字節。
2、對每一個塊進行加密,塊加密的算法中需要使用到密鑰信息,并且該過程可逆。
3、將每一個加密后的密文數據塊,拼接起來,得到密文字節數組。
? 使用相同的密鑰key,將每一個固定長度的塊轉換為另一個塊。
? 分組加密算法中需要考慮到的問題:
1、如何分組?分組長度是多少,從哪里分?當明文長度不足塊長度時,要不要進行填充?----- 填充算法。
2、分組之后的各個數據塊,需要用那種形式組合?來實現整體的加解密過程。----- 分組模式。
3、如何對分組進行加密?----- 分組加密算法。
填充算法
? 事先對明文進行填充,然后進行分組。—>為了讓分組后的每一個塊,滿足分組長度。
只有ECB、CBC、PCBC三種分組模式需要填充。
PKCS7算法
? 假定,分組加密的塊長度為B,明文字節數組長度為S,計算p;p就是明文需要填充的字節數。
p = B - S % B (S % B 是取余計算)B = 16字節
S = 108字節
p = 16 - 108 % 16 = 4
S = 108 + p = 112B = 16字節
p = 4,就代表要在明文尾部填充4個4
分組模式
? 在分組之后,每個分組在加密之前需要解決的問題:如何將分組后的各個塊組織起來,協同實現明文整體的加解密。
分組模式詳解
ECB:電子密碼本對每個塊使用相同的key進行獨立的塊加密;導致--->明文數據的統計學特征被保留在密文中。
CBC:密碼塊鏈接 ---常見同樣對每個塊使用同一個key進行加密,但是加密前,需要先將明文塊和前一個密文塊進行異或運算,然后在加密。---- 對于首個明文塊,因為不存在前一個密文,所以需要一個額外的字節數組來充當前一個密文。--->初始向量異或運算對稱性特點:(a xor b)xor b = aECB和CBC的異同:對每一個塊,使用相同的密鑰進行加解密,不同的是,CBC對明文做了異或處理。PCBC:填充密碼塊鏈接在CBC的基礎上,對異或計算的參數進行了改變。前明文塊+前一個密文進行異或,將異或結果在與當前明文塊進行異或,再做加密。CFB:密文反饋模式與CBC類似;先對前一個密文塊做塊加密,然后再和明文塊做異或。OFB:輸出反饋模式在CFB的基礎上,對塊加密的參數進行了改變;前一個塊加密得到的異或參數,來與本次的明文進行異或。CTR:計數器模式 ---常見 ---- 因為可以并行處理,適合多核CPU。
GCM:計數器模式 ---常見 ---- 在CTR基礎上,增加了認證操作;認證加密模式。----TLS協議中。
? 分組模式時對塊加密的協同組織算法,而塊加密的集體算法法則,是每個堆成密鑰算法的核心。
- DES ---- 數據加密標準 ---- 分組加密方式
- 將明文按64bit分組,生成64bit的密文,但是密鑰長度為56bit(每7bit數據會加1bit錯誤檢查bit)。
- DES算法已經不安全,因為可以被暴力破解。
- 3DES ---- 使用了三次DES算法 ---- 56+56+56=168bit密鑰。
- 密鑰1 密鑰2 密鑰3
- 明文進入后,使用密鑰1加密,使用密鑰2解密,使用密鑰3加密。
- AES ---- 高級加密標準
- 分組長度128bit,密鑰長度最短為128bit,可以為192bit或256bit。
- 目前是安全性最高的,使用最廣泛的加密算法。
- 國密 ---- 國家密碼局認證的國產密鑰算法
- SM1/2/3/4,密鑰長度均為128bit。
- SM1為對稱加密,其強度和AES相當。該算法不公開,需要對接加密芯片。
- SM2非對稱加密,已公開的。
- SM3—HASH,類比于MD5,算法公開,生成256bit摘要信息。
- SM4—無線局域網標準中的分組數據算法,對稱加密。
? 國家標準|GB/T-32907-2016
? 相比于分組加密,流加密具有速度快,消耗少的優點,在網絡通信特定場景中比較有優勢;然后流加密的發展落后于分組加密的,在安全性、可擴展性上面,是不如分組加密的。同時某些分組加密算法可以兼具流加密的部分特點。----- 因此對稱加密的主流算法還是分組加密。
存在的問題:1、密鑰傳遞存在風險2、密鑰管理亂
公鑰密碼體系
在對稱加密算法中,通信雙方需要在事前完成如下事情:
1、協商加解密算法
2、協商第二個密鑰時,使用的第一個密鑰信息
3、通信過程中,使用那個第二個密鑰信息
? 問題:協商通信過程中,所使用的密鑰;該密鑰也是信息,如何保證該密鑰的安全傳輸。
-
事先共享密鑰
-
密鑰分配中心KDC
-
DH密鑰交換算法
-
非對稱加密算法
非對稱加密 — 公鑰加密
? 一個公鑰,一個私鑰。這兩個密鑰,在數學邏輯上是相關的。
- 公鑰 ---- 是在通信雙方之間公開傳遞的。
- 私鑰 ---- 在通信的某一方上保密。
? 只有使用公鑰,才能解密公鑰加密的數據。使用私鑰加密的數據,也必須使用公鑰解密。
? 在非對稱加密體系中,如果想要完成數據通信,則至少需要4個密鑰信息。
? 非對稱加密算法,一定不是可逆運算,而是求余運算(取模運算)就是不可逆的。
? 對稱加密使用異或運算,非對稱加密使用取模運算。
? 缺陷:1、資源消耗比較大;2、每次使用相同密鑰,會增加密鑰泄露的風險。
? 實際中,非對稱密鑰,通常是為了解決對稱密鑰中共享密鑰問題的方法。
? 特點:以目前的數學理論與實際計算算力而言,無法根據公鑰計算出私鑰信息。
- RSA ---- 應用較早,且最為普及的公鑰密碼系統。
- 但是,性能消耗非常高。業界普遍認為,RSA密鑰要保證足夠的安全,需要最少2048bit密鑰信息。
- ECC ---- 基于橢圓曲線離散對數問題,是新一代的公鑰密鑰體系。
- 認為是RSA的代替者,256bit的密碼長度,反而破解難度增大。
? 對于非對稱密鑰而言,公鑰信息是由私鑰信息推導計算得出的,故私鑰一旦暴露,則公鑰立即暴露,因此私鑰信息絕對不能充當公鑰使用。
? 在真正的數據傳輸時,采取的都是對稱加密算法進行加密,保證數據傳輸效率,而使用非對稱密鑰來傳遞對稱密鑰,實現安全傳輸。算法優勢互補。----- 混合密碼系統。
DH交換算法 — 密鑰交換算法
? 在DH交換算法中,進行加密通信的雙方需要交換一些數據信息,這些數據信息就算是被竊聽也不會影響到后續的密鑰信息。----- 雖然DH算法被稱為密鑰交換算法,但是,雙方并沒有真正的交換密鑰信息,而是通過計算生成了一個相同的共享的密鑰。
? 原理:通過共享的參數,私有的參數以及算法來協商出一個對稱密鑰,然后使用對稱密鑰加密后續的通信過程。 ----- 這里提到的公鑰、私鑰,不是公鑰加密體系中的。
單向函數:
A = g^a mod p
只要知道g、a、p,就能夠計算出A;但使用A、g、p不能計算出a。
? 上圖,是DH算法的完整過程,其中,為了保證各自的私有參數不會被破解,所以p的選擇必須是一個非常大的質數,而 g 是根據 p 計算得到的一個生成元。
生成元:滿足g^1……g^(p-1) mod p的結果會出現[1,p-1]
? DH算法不是為了加密而存在,而是為了傳遞密鑰而誕生的。
混合密碼體系
? 將對稱加密算法和非對稱加密算法結合使用的場景。
? 混合密碼系統 — 會先用快速的對稱密鑰來對消息進行加密,然后這樣的信息就被轉換為密文,從而保證消息的機密性,然后我們只需要保證對稱密鑰本身的機密性即可。
? 使用公鑰密碼體系來對對稱密鑰進行加密。
- 偽隨機數生成器 ------ 生成一個對稱密鑰信息
- 并用這個對稱會話密鑰來加密明文數據。
- 通過收到接收方的公鑰,來對對稱密鑰進行加密,形成加密后的會話密鑰。
- 將“加密明文數據”和“加密后的會話密鑰”進行組合,形成混合密碼體系中的密文。
? 接收方如何處理數據:
- 首先,將收到的密文信息,分離為“加密明文數據“和“加密后的會話密鑰”;
- 然后,用本地的私鑰,對“加密后的會話密鑰“進行解密,從而獲取到對稱會話密鑰。
- 使用對稱會話密鑰,來解密“加密明文數據”,從而獲取明文消息。
? 混合密鑰體系,被稱為數字信封。
身份認證和數據認證技術
? 在計算機中,當需要對比兩個消息是否一致時,不需要直接對比消息本身的內容,只需要對比“指紋”。
HASH散列
簡介
? 散列函數 ---- 散列算法,哈希算法。將一種任意長度的輸入數據,輸出為相對較小的數據的方法。特點:目標數據長度不固定,轉換后的數據長度固定,轉換過程不可逆。
? 散列函數不是加密算法,加密是可逆的,而散列函數是不可逆的。
用途
1、網絡傳輸中的校驗和
2、確保傳遞信息的真實性和完整性;TLS協議。
-
結合相關密鑰,對消息做認證碼(MAC)驗證。
-
MAC ---- 消息認證碼,是類似于散列的一個內容。帶密鑰的哈希函數。
-
HASH:將明文直接通過HASH算法進行計算 MAC:將明文在進行HASH計算前,添加了密鑰信息
-
HMAC ---- 基于哈希的消息認證碼。
3、電子簽名
- 網絡中身份驗證的機制。---->數字簽名算法。
4、保存敏感資料
5、Hash Table
? 散列算法一般被分為密碼學哈希和非密碼學哈希。
? 密碼學哈希 ---- 指的是用于保證密碼學安全性的散列算法。---- 指標:抗碰撞性。
抗碰撞性:哈希函數在處理輸入數據時,確保兩個不同的輸入數據產生相同輸出的概率極低。在理想情況下,不同的輸入數據應該生成完全不同的輸出哈希值。
? 非密碼學哈希 ---- 循環冗余校驗
? 目前國際上主流的密碼學哈希
是SHA-2和SHA-3,國內主推的是國密標準SM3。
MAC和HMAC
? 哈希 ----- 可以用于消息認證,但是不夠安全。
? 消息認證碼 ---- 是對消息進行認證,確認其完整性和真實性的技術。通過使用發送者和接收者之間共享的密鑰,從而識別出是否存在偽裝和篡改行為。
? 邏輯:MAC算法+密鑰+明文:是一個類似HASH的數值。
? 散列值(哈希)只能保證消息的完整性,即生成該摘要B的明文A是完整無誤的。而MAC算法能夠在保證消息完整性的基礎上,進一步保證消息未被篡改,即判斷出發出的是明文A,而不是明文C。
? HMAC ---- 結合各種散列算法來實現。
數字簽名
? 在借錢場景中,A出示的電子借條,對于B而言,存在兩個問題:
- 該借條是否是A發送,或者是否被網絡其他人員偽造 ----- 可以由MAC解決,因為有密鑰;
- 致命問題,MAC無法防止“否認”問題,即A否認自己做過該事情。
- 對于通信雙方而言,都可以計算出正確的MAC值,因此,對于任何一個第三方而言,無法證明這條消息是否是由A發送的。
? 消息認證碼的局限性 ---- 1、無法對第三方證明;2、無法防止否認問題。
- 生成消息簽名的行為 ---- 由發出者來完成的。也被稱為“對消息簽名”;
- 根據消息的內容,計算數字簽名的數值。
- 行為意義:我認可該消息的內容。
- 驗證消息簽名的行為 ---- 由接收者完成,也可以由第三方機構完成。
- 行為意義:就是在檢查該消息的簽名是否屬于Alice,如果成功,則認為該信息獲得了Alice的認可。
? 在數字簽名中,生成簽名和驗證簽名的兩個行為,是需要使用各自專用的密鑰來完成的,即驗證簽名的密鑰無法生成簽名。
? 數字簽名的玩法 === 公鑰密碼體系。
私鑰 | 公鑰 | |
---|---|---|
公鑰密碼 | 接收者解密使用 | 發送者加密使用 |
數字簽名 | 簽名者生成簽名使用 | 驗證者驗證密鑰使用 |
誰持有密碼? | 個人持有 | 任何人 |
? 數字簽名,是根據每一次發送的消息的內容,通過私鑰信息計算得出的一個加密字符串,即每一次的數據發送,數字簽名信息均不同。
數字簽名的方法
直接對消息簽名
對消息的散列值簽名
? 對完整信息生成數字簽名非常耗時,且散列值在一定程度上可以代表該完整性信息。那么可以先將完整信息生成散列值,然后對信息的散列值生成數字簽名。
? 數字簽名的目的不是對數據信息進行加密,而僅僅是為了對數據的發送者進行驗證。
? 數字簽名所要實現的并不是防止修改,而是識別修改。即簽名或消息可以被修改,但是在接收方驗證時會失敗。
對稱密碼與公鑰密碼的對比,以及消息認證碼與數字簽名的對比:
對稱密碼 | 公鑰密碼 | |
---|---|---|
發送者 | 用共享密鑰加密 | 用公鑰加密 |
接收者 | 用共享密鑰解密 | 用私鑰解密 |
密鑰配送問題 | 存在 | 不存在,但公鑰需要另外認證 |
機密性 | ? | ? |
消息認證碼 | 數字簽名 | |
---|---|---|
發送者 | 用共享密鑰計算MAC值 | 用私鑰生成簽名 |
接收者 | 用共享密鑰計算MAC值 | 用公鑰驗證簽名 |
密鑰配送問題 | 存在 | 不存在,但公鑰需要另外認證 |
完整性 | ? | ? |
認證 | ?(僅限通信對象雙方) | ?(可適用于任何第三方) |
防止否認 | × | ? |
數字證書
? 中間人攻擊 ---- 核心點:如何驗證公鑰的真實性。即驗證公鑰本身的真實性。
? 證書 ---- 將公鑰當作是一條消息,由一個可信任的第三方機構對其簽名后得到的公鑰。
? 公鑰證書(PKC)---- 由認證機構(CA)施加數字簽名。
證書認證場景
? 關鍵問題 ---- 誰來充當CA認證中心,誰來規定CA機構的工作流程。----- PKI體系
PKI體系 ---- 公鑰基礎設施
? 圍繞數字證書的申請、頒發、使用整個生命周期展開的。會使用到對稱密鑰加密、公鑰加密、數字信封和數字簽名。
IETF ---- X.509標準
ITU-T
認證機構的操作流程:
- 1、生成密鑰對
- 兩種方式生成:一種是由PKI用戶自行生成;一種是由認證機構來生成。
- 2、注冊公鑰,并對本人信息進行驗證
- RA服務來完成
- 3、生成并頒發證書
- 在RA完成認證的前提下,使用CA自身的私鑰,對用戶的公鑰進行數字簽名,并將數字簽名和公鑰信息一起,生成證書。
- 4、作廢證書
- 當用戶的私鑰丟失,認證機構需要將原本的證書作廢。
- 如果要作廢證書,認證機構需要制作一張證書作廢清單 ----> CRL ---- 也需要有CA的數字簽名。
- 每一次數據通信前,PKI用戶需要從認證機構獲取最新的CRL,來查詢自己要用于驗證簽名的公鑰證書是否作廢。
? 對于用來驗證數字簽名的認證機構的公鑰,如何判斷其合法?
? 根CA的特點 ---- 自己給自己頒發證書→自簽名。