6.1 密碼學歷史上的里程碑
6.1.1 凱撒密碼
- 簡單的將字母表中的每個字母替換成其后的三個字母,是單一字母的替代置換密碼
6.1.2 美國內戰
- 美國內戰使用詞匯替代和置換的復雜組合,從而試圖破壞敵人的破譯企圖
6.1.3 Ultra與Enigma
6.2 密碼學基礎
6.2.1 密碼學的目標
- 密碼系統基本目標: 機密性、完整性、身份認證和不可否認性
1、機密性 - 機密性:確保存儲中或在傳輸中保持秘密狀態
- 對稱秘鑰密碼:密碼系統中所有用戶都使用一個共享的秘鑰
- 公鑰密碼系統: 每個用戶都能夠使用公鑰和私鑰的組合密碼
2、完整性 - 完整性:確保數據在傳輸過程中不背修改
- 完整性通過傳輸消息時創建的數字簽名摘要來強制實施,公鑰和私鑰密碼都能實施完整性
3、身份認證 - 身份認證: 聲明的系統用戶身份進行驗證,是密碼系統的主要功能
4、不可否認性 - 不可否認性為接受者提供了擔保,保證消息確實來自發送者而不是來自偽裝成發送者的人
- 秘密秘鑰(對稱秘鑰)密碼系統不提供不可否認性
- 公鑰(非對稱秘鑰)密碼系統提供不可否認性
6.2.2密碼學概念
- 消息發送者使用密碼學算法將明文消息加密為密文消息,使用字母C表示
- 創建和實現秘密編碼和密碼的技術被稱為密碼輸
- 密碼術和密碼分析學被成為密碼學
- 編碼或解碼在硬件或軟件商的具體操作被成為密碼系統
6.2.3 密碼學的數學原理
- 二進制數學:
- 邏輯運算: OR、AND、NOT、XOR、模函數、單向函數、隨機數、零知識證明、分割知識、工作函數
- 分割知識:單個解決方案中包含職責分離和兩人控制被稱為分割知識
- 工作函數:從成本和/或時間方面來度量所有努力,就可以度量密碼學系統的強度
6.2.5 密碼
- 編碼與密碼:
編碼:密碼學系統中標識詞匯或短語的符號
密碼:隱藏消息的真實含義 - 換位密碼:使用某種加密算法重新排列明文消息中的字母,從而形成密文消息
- 替代密碼:使用加密算法將明文消息中的每一個字符或比特都替換為不同的字符、如凱撒密碼
- 一次性填充:對明文消息的每個字母都使用一個不同的字母表,極為強大的替代密碼,一個不可破解的加密方案必須滿足如下要求:
1、加密秘鑰必須隨機生成
2、一次性填充必須進行物理保護
3、每個一次性填充必須只使用一次
4、秘鑰必須至少與被加密的消息一樣長
一次性填充缺點:只可用于短消息、分發和保護需要冗長的秘鑰 - 分組密碼:按消息的"組塊"或分組進行操作,并且對整個消息分組同時應用加密算法
- 流密碼:對消息中的每一個字符或每一位操作,每次只處理一個/以為,如凱撒密碼
- 混淆與擴散:
混淆:攻擊者不能通過繼續修改明文和分析產生的密文來確定秘鑰
擴展:明文改變導致多種變化時,這個變化擴散到整個密文中
6.3 現代密碼學
6.3.1 密鑰
- 現代密碼系統并不依賴其算法的安全性
- 現代密碼系統部依賴于保密的算法
- 現代密碼學系統依賴具體的用戶或用戶組專用的一個或多個秘鑰
6.3.2 對稱秘鑰算法
- 對稱秘鑰依賴一個共享的加密秘鑰,該秘鑰會分發給所有參與通信的成員
- 對稱秘鑰也被成為秘密秘鑰密碼學或私有秘鑰密碼學
- 對稱秘鑰的弱點
1:秘鑰分發是一個問題: 對稱秘鑰建立通信之前,通信參與必須具備一個安全的交換秘鑰的方法
2:對稱秘鑰密碼學并未實現不可否認性
3: 這種算法不可擴充
4:秘鑰必須經常更新 - 對稱秘鑰密碼可擴展性問題: n個通信方之間完全連接需要的秘鑰總數為:n * (n -1 )/2
6.3.2 非對稱秘鑰算法
- 非對稱秘鑰算法也被成為公鑰算法,每個用戶都有公鑰和私鑰
- 非對稱秘鑰的優點:
1: 新增用戶只需要生成一對公鑰-私鑰對
2:從非對稱系統中更容易刪除用戶
3:只有在用戶的私鑰被破壞時,才需要進行秘鑰重建
4:非對稱秘鑰加密提供了完整性、身份認證和不可否認性
5:秘鑰分發是一個簡單的過程
6:不需要預先存在通信鏈接 -
對稱和非對稱密碼學系統比較:
image.png
6.3.4 散列算法
- 常用的散列算法:
1 、消息摘要2(MD2)
2、消息摘要5(MD5)
3、安全散列算法(SHA-0,SHA-1,SHA-2)
4、基于散列的消息身份認證代碼(HMAC)
6.4 對稱密碼
- 常見對稱密碼系統:DES(數據加密標準)、3DES(三重數據加密標準)、IDEA(國際數據加密算法)、Blowfish、Skipjack、AES(高級加密標準)
6.4.1 數據加密標準(DES)
- DES是一個64位的分組密碼,具有五種操作模式
1、電子代碼本模式(ECB):安全性最差,每次處理一個64位分組,簡單的使用秘鑰對這個分組進行加密
2、密碼分組鏈接模式(CBC):未加密文本的每個分組使用DES算法加密前,都與前一密文分組進行異或操作,缺點是錯誤傳播
3、密碼回饋模式(CFB):流密碼形式的CBC、針對實時生成的數據進行操作
4、輸出回饋模式(OFC):
5、計數模式(CTR):每次操作后都增加的計數
6.4.2 三重數據加密算法(3DES)
- 3DES有四個版本:
1、使用三個不同的秘鑰對明文加密三次
2、使用三個秘鑰,但是將第二個加密操作替換成解密操作
3、知使用兩個秘鑰
4、使用兩個秘鑰、中間使用解密操作
6.4.3 國際數據加密算法(IDEA)
- 針對DES算法的秘鑰長度不夠開發的,采用128位的秘鑰進行操作,
6.4.4 Blowfish
- Blowfish擴展了IDEA的秘鑰長度,可使用變長秘鑰,BlowFish比IDEA和DES更快的算法
6.4.5 Skipjack
- 對64位的文本分組操作,使用80位的秘鑰
- 沒有被密碼學團隊普通接受,因為托管程序由美國政府控制
6.4.6 高級加密協議(AES)
- 使用128、192、和256位加密,支持128分組處理
-
對稱加密算法記憶表
image.png
6.4.7 對稱秘鑰管理
1、創建和分發對稱密碼
- 離線分發:一方向另一方提供包括秘鑰的一張紙或一份存儲介質
- 公鑰加密:使用公鑰加密建立初始的通信鏈接,在鏈接中交換秘鑰
- Diffie-Hellman算法:在不安全的鏈路中交換秘鑰
2、存儲和銷毀對稱秘鑰 - 永遠不要將加密秘鑰存儲在存放加密數據一起
- 敏感秘鑰考慮兩個人分別持有秘鑰的一般
3、秘鑰托管 - 公平密碼系統:私鑰分成多分,交給獨立的第三方
- 托管加密標準:向政府提供解密密文的技術手段
6.4.8 密碼生命周期
- 確定組織可以接受和使用的加密算法
- 基于傳輸信息的敏感性確認算法可接受的秘鑰長度
- 列出可以使用的安全傳輸協議(SSL和TLS)