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