加密
加密,是以某種特殊的算法改變?cè)械男畔?shù)據(jù),使得未授權(quán)的用戶即使獲得了已加密的信息,但因不知解密的方法,仍然無(wú)法了解信息的內(nèi)容。
加密最初源自戰(zhàn)爭(zhēng)用途,雅典間諜的腰帶情報(bào),是世界上最早的密碼情報(bào),具體運(yùn)用方法是,通信雙方首先約定密碼解讀規(guī)則,然后通信—方將腰帶(或羊皮等其他東西)纏繞在約定長(zhǎng)度和粗細(xì)的木棍上書(shū)寫(xiě)。收信—方接到后,如不把腰帶纏繞在同樣長(zhǎng)度和粗細(xì)的木棍上,就只能看到一些毫無(wú)規(guī)則的字母。
從加密方式的維度來(lái)看,上述兩種加密都屬于對(duì)稱加密。加密技術(shù)起源于軍事通訊領(lǐng)域,在現(xiàn)代被廣泛應(yīng)用于各類通訊技術(shù)中。
加密之所以安全的原因,并不在于加密解密算法的方法,而在于加密的密鑰是絕對(duì)的隱藏。流行的RSA和AES加密算法都是完全公開(kāi)的,一方得到已加密的數(shù)據(jù),就算知道加密算法,如果沒(méi)有加密的密鑰,也不能破解出被加密保護(hù)的信息。
加密的方式分為兩種:對(duì)稱加密和非對(duì)稱加密。
對(duì)稱加密
對(duì)稱加密,即使用相同的密鑰來(lái)進(jìn)行加密和解密。對(duì)稱加密的優(yōu)點(diǎn)是加密和解密速度快,適合大量加密的場(chǎng)景。
其缺點(diǎn)也非常明顯,密鑰不易維護(hù),加密方和解密方需要約定并分配密鑰,雙方對(duì)密鑰的保管和傳輸過(guò)程中一旦發(fā)生泄漏,安全性就會(huì)被打破。
常見(jiàn)的對(duì)稱加密算法有以下幾種:
●DES
●3DES
●AES
非對(duì)稱加密
非對(duì)稱加密算法需要兩個(gè)密鑰來(lái)進(jìn)行加密和解密,這兩個(gè)密鑰是公開(kāi)密鑰(public key,簡(jiǎn)稱公鑰)和私有密鑰(private key,簡(jiǎn)稱私鑰)。
非對(duì)稱加密的流程是,A生成公鑰和私鑰,將公鑰共享給B,私鑰自己保存。B用公鑰加密后將信息傳輸給A,A使用私鑰解密得到原始信息。
很明顯可以看出,非對(duì)稱加密在安全性上要更高,即使公鑰和密文被截取,沒(méi)有私鑰也無(wú)法獲取原始信息。
非對(duì)稱加密算法的特點(diǎn)是算法強(qiáng)度復(fù)雜,使得加密解密的速度遠(yuǎn)遠(yuǎn)低于對(duì)稱加密算法,因此不適用于數(shù)據(jù)量較大的情況。
使用公鑰加密的文本只能使用私鑰解密,同時(shí),使用私鑰加密的文本也可以使用公鑰解密。
常見(jiàn)的非對(duì)稱加密算法有以下幾種:
●RSA
●DSA
●ECDSA
HTTPS
在網(wǎng)絡(luò)傳輸協(xié)議方面,越來(lái)越多的公司將服務(wù)從HTTP協(xié)議切換到HTTPS協(xié)議,來(lái)應(yīng)對(duì)紛繁復(fù)雜的網(wǎng)絡(luò)安全問(wèn)題。
HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer),是以安全為目標(biāo)的HTTP通道,在HTTP的基礎(chǔ)上通過(guò)傳輸加密和身份認(rèn)證保證了傳輸過(guò)程的安全性。
HTTP協(xié)議是沒(méi)有加密過(guò)程的,數(shù)據(jù)以明文方式傳輸,因此其安全性較低,使用抓包軟件可以輕易的獲取到隱私的數(shù)據(jù),篡改數(shù)據(jù)的中間人攻擊也難以防御。
HTTPS在HTTP基礎(chǔ)上增加了TSL或SSL層,使用了對(duì)稱加密和非對(duì)稱加密兩種加密方式來(lái)保證數(shù)據(jù)傳輸?shù)陌踩浴?/p>
HTTPS=HTTP+加密+認(rèn)證+數(shù)據(jù)完整性保護(hù)
以下是HTTPS協(xié)議客戶端與服務(wù)端的交互流程:
客戶端與服務(wù)端的通信流程如下:
1、客戶端向服務(wù)端發(fā)送請(qǐng)求
2、服務(wù)端將證書(shū)傳輸給客戶端,證書(shū)中包含公鑰信息,私鑰在服務(wù)端保存
3、客戶端生成隨機(jī)碼,使用公鑰加密
4、客戶端將加密后的隨機(jī)碼傳輸給服務(wù)端
5、服務(wù)端通過(guò)私鑰解密隨機(jī)碼
6、客戶端與服務(wù)端通過(guò)隨機(jī)碼作為對(duì)稱加密的密鑰來(lái)進(jìn)行加密傳輸
混合加密
從流程中可以看出,加密方式使用對(duì)稱加密和非對(duì)稱加密的混合使用。對(duì)稱加密的痛點(diǎn)是密鑰傳輸有可能被竊聽(tīng),導(dǎo)致加密變得不安全,所以用非對(duì)稱加密傳輸對(duì)稱加密的密鑰,后續(xù)通信使用對(duì)稱加密。
數(shù)據(jù)傳輸通信環(huán)節(jié)不使用公鑰加密、私鑰解密,因?yàn)榉菍?duì)稱加密由于算法復(fù)雜效率低。
認(rèn)證
服務(wù)端非對(duì)稱加密所使用的公鑰與私鑰是由保證安全的第三方數(shù)字認(rèn)證機(jī)構(gòu)簽發(fā)的,需要由服務(wù)端向數(shù)字認(rèn)證機(jī)構(gòu)申請(qǐng)。
數(shù)字認(rèn)證機(jī)構(gòu)的公鑰會(huì)事先植入瀏覽器中,服務(wù)端傳輸給客戶端證書(shū)后,客戶端使用公鑰驗(yàn)證證書(shū)簽名的有效性,以確保服務(wù)端的真實(shí)存在性。
HTTPS中還可以使用客戶端證書(shū),以確保客戶端的真實(shí)存在性,但基于成本高的原因,只有在特殊場(chǎng)景才會(huì)使用,比如網(wǎng)上銀行登錄時(shí)需要下載安全控件。
總結(jié)
HTTPS中使用了對(duì)稱加密和非對(duì)稱加密的混合,使得數(shù)據(jù)傳輸變得更安全,但是并非所有場(chǎng)景都適用HTTPS,受加密解密的通信步驟的增加和本身算法增加的機(jī)器負(fù)載影響,HTTPS要比HTTP慢2~100倍,所以針對(duì)非敏感、隱私信息的數(shù)據(jù)傳輸場(chǎng)景使用HTTP才是一個(gè)更好的選擇。