如何快速搞懂密碼學

買賣虛擬貨幣
近期跟新人面試溝通時,發現許多人對瀏覽器如何與伺服器互動、如何進行資料傳輸等問題無法作出解答,在此特別梳理一下密碼學的基本概念,希望能對大家瞭解密碼學相關基礎知識有所幫助。一、基本概念名詞解釋: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.公鑰加密公式:

明文 “2” 經過 RSA 加密後變成密文 “8”

2.私鑰解密公式:

密文 “8” 經過 RSA 解密後變成了明文 2

對稱加密和非對稱加密的區別:

1. 金鑰分發:對稱加密分發困難,非對稱加密分發簡單
2. 效率的問題:對稱加密效率比較高,非對稱加密效率比較低。
3. 安全等級:對稱加密的安全等級比非對稱加密的安全等級低。

五、單向雜湊函式

單向雜湊函式有一個輸入和一個輸出,其中輸入稱為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簽名的真實性流程示意圖如下:

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;