常見(jiàn)的加密形式與算法
對(duì)稱加密形式
對(duì)稱加密使用相同的密鑰來(lái)進(jìn)行數(shù)據(jù)的加密和解密。在對(duì)稱加密中,加密和解密過(guò)程使用相同的密鑰,因此被稱為對(duì)稱加密。
在對(duì)稱加密中,原始數(shù)據(jù)稱為明文,經(jīng)過(guò)加密算法和密鑰處理后得到的數(shù)據(jù)稱為密文。密文可以傳輸或存儲(chǔ)在不安全的環(huán)境中,只有持有正確的密鑰才能解密得到原始的明文。
非對(duì)稱加密形式
非對(duì)稱加密是一種加密算法,也被稱為公鑰加密。與對(duì)稱加密算法不同,非對(duì)稱加密使用一對(duì)密鑰:公鑰(Public Key)和私鑰(Private Key)。
在非對(duì)稱加密中,公鑰用于加密數(shù)據(jù),而私鑰用于解密數(shù)據(jù)。公鑰是公開(kāi)的,可以被任何人獲取和使用。而私鑰是保密的,只有密鑰的擁有者可以訪問(wèn)和使用。
具體流程如下:
發(fā)送方獲取接收方的公鑰。
發(fā)送方使用接收方的公鑰對(duì)要發(fā)送的數(shù)據(jù)進(jìn)行加密。
發(fā)送方將加密后的數(shù)據(jù)發(fā)送給接收方。
接收方使用自己的私鑰對(duì)收到的加密數(shù)據(jù)進(jìn)行解密,從而獲得原始的數(shù)據(jù)。
應(yīng)用案例
??客戶端和服務(wù)器同時(shí)使用 MD5 明文密碼進(jìn)行Hash轉(zhuǎn)換,通過(guò)密文是否一致判斷身份;
????MD5算法是單向的,即計(jì)算出的哈希值不能被逆向計(jì)算為原始數(shù)據(jù)。這意味著無(wú)法從MD5哈希值還原出原始數(shù)據(jù)。
????然而,由于MD5算法的安全性問(wèn)題,已經(jīng)發(fā)現(xiàn)了許多MD5哈希碰撞和弱點(diǎn)。碰撞是指兩個(gè)不同的輸入產(chǎn)生相同的MD5哈希值,而弱點(diǎn)則是指通過(guò)窮舉和預(yù)計(jì)算等方法,可以加速M(fèi)D5哈希值的破解過(guò)程。
????在 HTTPS 中,客戶端使用對(duì)稱密鑰(會(huì)話密鑰)來(lái)解密從服務(wù)器返回的加密數(shù)據(jù)。以下是大致的流程:
客戶端發(fā)送 HTTPS 請(qǐng)求到服務(wù)器,并與服務(wù)器建立安全連接。
在建立安全連接時(shí),服務(wù)器會(huì)向客戶端發(fā)送其公鑰(通常通過(guò)服務(wù)器的證書(shū)進(jìn)行傳輸)。
客戶端使用該公鑰對(duì)生成一個(gè)隨機(jī)的會(huì)話密鑰(也稱為對(duì)稱密鑰),并繼續(xù)使用公鑰對(duì)會(huì)話密鑰進(jìn)行加密,然后將加密后的會(huì)話密鑰發(fā)送給服務(wù)器。
服務(wù)器收到加密的會(huì)話密鑰后,使用自己的私鑰 (一般購(gòu)買時(shí)會(huì)進(jìn)行贈(zèng)送) 進(jìn)行解密,得到會(huì)話密鑰。
服務(wù)器將響應(yīng)的數(shù)據(jù)使用會(huì)話密鑰進(jìn)行對(duì)稱加密。
服務(wù)器將加密后的數(shù)據(jù)發(fā)送給客戶端。
客戶端收到加密的數(shù)據(jù)后,使用會(huì)話密鑰進(jìn)行解密,得到原始的響應(yīng)數(shù)據(jù)。
????整個(gè)過(guò)程中,使用非對(duì)稱加密算法來(lái)保護(hù)會(huì)話密鑰的安全傳輸,而使用對(duì)稱加密算法來(lái)實(shí)際加密和解密數(shù)據(jù),從而確保通信的機(jī)密性和數(shù)據(jù)的完整性。
??HTTPS 證書(shū)是用于建立安全連接和驗(yàn)證服務(wù)器身份的數(shù)字證書(shū)。
????HTTPS 證書(shū)包含了一組加密的數(shù)據(jù),用于證明服務(wù)器的身份和保證通信的安全性。它由可信任的第三方機(jī)構(gòu)(稱為證書(shū)頒發(fā)機(jī)構(gòu),Certificate Authority,簡(jiǎn)稱 CA)簽發(fā),并且包含以下信息:
服務(wù)器的公鑰:證書(shū)中包含了服務(wù)器的公鑰,用于加密會(huì)話密鑰和解密數(shù)據(jù)。
服務(wù)器的標(biāo)識(shí)信息:證書(shū)中包含了服務(wù)器的域名或 IP 地址等標(biāo)識(shí)信息,用于驗(yàn)證服務(wù)器的身份。
證書(shū)頒發(fā)機(jī)構(gòu)的簽名:證書(shū)頒發(fā)機(jī)構(gòu)會(huì)對(duì)證書(shū)中的信息進(jìn)行數(shù)字簽名,用于驗(yàn)證證書(shū)的真實(shí)性和完整性。
證書(shū)有效期:證書(shū)中包含了有效期限制,確保證書(shū)在一段時(shí)間后過(guò)期,以保證安全性。
????當(dāng)客戶端與服務(wù)器建立 HTTPS 連接時(shí),客戶端會(huì)檢查服務(wù)器提供的證書(shū)是否有效和可信任。如果證書(shū)有效且由受信任的 CA 簽發(fā),客戶端會(huì)使用證書(shū)中的公鑰來(lái)加密會(huì)話密鑰,并將加密后的會(huì)話密鑰發(fā)送給服務(wù)器。同時(shí),客戶端還會(huì)使用證書(shū)中的公鑰對(duì)服務(wù)器返回的數(shù)據(jù)進(jìn)行解密。