近期跟新人面試溝通時,發現許多人對瀏覽器如何與服務器交互、如何進行數據傳輸等問題無法作出解答,在此特別梳理一下密碼學的基本概念,希望能對大家了解密碼學相關基礎知識有所幫助。
一、基本概念
名詞解釋:
cryptology 密碼學
plaintext 明文
cipher-text 密文
encrypt 加密
decrypt 解密
crytography 密碼
confidentiality 機密性、加密等級
Bit、byte:比特(Bit)與字節(byte)的關系是8個Bit = 1byte
編碼:將數據(文本、音頻、視頻)映射為比特序列的過程。
密鑰:固定長度的字符串。通過密鑰及加解密算法,對給定的數據進行加密和解密。
對稱加密:在加密和解密的過程中,使用相同的密鑰,稱為對稱加密。
非對稱加密:在加解密的過程中,使用不同的密鑰(私鑰、公鑰),稱為非對稱加密。
加解密流程:明文+密鑰à加密算法=>密文+密鑰à解密算法=>明文
二、現代分組密碼操作模式
分組模式對加解密至關重要。現代分組密碼的操作模式分為5種:電子密碼本模式(ECB),密碼分組鏈接模式(CBC),密碼反饋模式(CFB),輸出反饋模式(OFB),以及計數器模式(CTR)
ECB(Electronic Codebook)
明文按照分組密碼的分組大小(n 比特)被分為 N 個分組,對于每個分組使用相同的密鑰加密。
ECB加密過程如下:
ECB解密過程如下:
CBC(Cipher Block Chaining)加密過程:
CBC解密過程:
CFB
OFB
CTR
三、對稱加密算法
1. DES(DataEncryptionStandard)
DES對密鑰長度的要求為56個Bit,每一個byte需要一個比特的校驗位。以DES算法的CBC分組模式講解闡述一下該算法,對于CBC分組方式,會面臨分組長度不夠的問題,具體處理方法如下:
(1)計算出要填充的字節數,例如填充為2
(2)需要填充的字節為2
(3)當密文解密時,將最后一個字節的值取出,轉換成整形數值
(4)結果(3)得到的數值就是要刪除的字節數
2. 3DES算法
3DES是DES加密算法的一種模式,它使用3條64Bit的密鑰對數據進行三次加密,其加密流程如下:
3. AES
AES算法需要的密鑰長度有128、192、256Bit三種,分組長度理論上三種情況16字節、24字節、32字節。當密鑰長度為256Bit時,效率低,但機密性最高。在任何加解密算法中,分組長度和密鑰長度一定是相等的。AES采用CBC的分組模式,密鑰長度16個字節,初始化向量必須保證為16個字節。
四、非對稱加密
用秘鑰進行解密時,想要將密鑰安全的發送給接收者、解決密鑰配送問題,就需要采用非對稱加密技術。
非對稱加密技術的密鑰分為兩部分:公鑰與私鑰。公鑰可以公開,私鑰是隱私的,不能泄露。
非對稱加密技術,加密與解密采用不同的密鑰(公私鑰)。公鑰進行加密,需要用私鑰進行解密;私鑰加密,需要用公鑰進行解密。
非對稱加密的圖示流程:
非對稱加密算法(RSA)
RSA名字的由來是由此算法的三位開發者的名字RonRivest, AdiShamir和LeonaraAdleman的姓氏首字母組成。
非對稱加密算法簡單案例:
1.公鑰加密公式:
M = 2
E = 3
N = 33
明文 “2” 經過 RSA 加密后變成密文 “8”
2.私鑰解密公式:
密文 “8” 經過 RSA 解密后變成了明文 2
對稱加密和非對稱加密的區別:
1. 密鑰分發:對稱加密分發困難,非對稱加密分發簡單
2. 效率的問題:對稱加密效率比較高,非對稱加密效率比較低。
3. 安全等級:對稱加密的安全等級比非對稱加密的安全等級低。
對稱加密密鑰長度
非對稱加密密鑰長度
128
2304
112
1792
80
768
64
512
56
384
五、單向散列函數
單向散列函數有一個輸入和一個輸出,其中輸入稱為message, 輸出稱為散列值hashvalue,可以計算摘要,獲取消息的指紋。單向散列函數的特性是計算速度非常快。
(1)SHA-1單向散列函數,所計算出的散列值的長度是160Bit(20字節)
(2)應用:檢測軟件是否被篡改、消息認證碼、數字簽名、偽隨機性生成器、一次性口令等。
(3)常用的單向hash散列函數
MD4、MD5、SHA-1、SHA-2、SHA-3,其中MD4、MD5的強抗碰撞性已經被攻破,SHA-2的強抗碰撞性沒有被攻破。
六、證書
https交互過程中,對非對稱加密+對稱加密的綜合應用。下面圖示為https請求過程:
具體流程如下:
(1)client向server發送請求https://baidu.com,然后連接到server的443端口。
(2) 服務端必須要有數字證書。
(3)服務端向客戶端傳送證書。證書中包含的信息:申請者公鑰、申請者的組織信息和個人信息、簽發機構 CA 的信息、有效時間、證書序列號,另外還包含一個簽名。
(4)客戶端解析證書
工作是由客戶端的TLS完成,首先驗證證書是否有效,比如頒發機構,過期時間等。如果發現異常,則會彈出一個警告框,提示證書存在問題;如果證書沒有問題,那么就生成一個隨即值(密鑰)。然后用公鑰對該隨機值進行加密。
(5)客戶端傳送加密信息
傳送的是用證書中公鑰加密后的密鑰,目的就是讓服務端得到這個密鑰,此后,客戶端和服務端的通信就可以通過這個隨機值(密鑰)來進行加密解密(對稱加密算法)。
(6)服務端加密解密信息
服務端用私鑰解密密鑰,得到客戶端傳過來的隨機值(密鑰),然后把內容通過該值進行對稱加密。
(7) 傳輸加密后的信息。信息是服務端用私鑰加密后的信息。
(8)客戶端解密信息。客戶端用生成的隨機值(密鑰)解密服務端傳過來的信息,獲取解密后的內容。
CA簽名的真實性流程示意圖如下:
以上即為本次技術內容分享