HTTPS的加密方式及優(yōu)缺點(diǎn)介紹
對稱加密
對稱加密是指加密和解密使用相同密鑰的加密算法。它要求發(fā)送方和接收方在安全通信之前,商定一個(gè)密鑰。對稱算法的安全性依賴于密鑰,泄漏密鑰就意味著任何人都可以對他們發(fā)送或接收的消息解密,所以密鑰的保密性對通信至關(guān)重要。
對稱加密算法的優(yōu)、缺點(diǎn):
優(yōu)點(diǎn):算法公開、計(jì)算量小、加密速度快、加密效率高。
缺點(diǎn):
- 交易雙方都使用同樣鑰匙,安全性得不到保證;
- 每對用戶每次使用對稱加密算法時(shí),都需要使用其他人不知道的惟一鑰匙,這會使得發(fā)收信雙方所擁有的鑰匙數(shù)量呈幾何級數(shù)增長,密鑰管理成為用戶的負(fù)擔(dān)。
- 能提供機(jī)密性,但是不能提供驗(yàn)證和不可否認(rèn)性。
非對稱加密
這種加密或許理解起來比較困難,這種加密指的是可以生成公鑰和私鑰。凡是公鑰加密的數(shù)據(jù),公鑰自身不能解密,而需要私鑰才能解密;凡是私鑰加密的數(shù)據(jù),私鑰不能解密,需要公鑰才能解密。這種算法事實(shí)上有很多,常用的是RSA,其基于的數(shù)學(xué)原理是兩個(gè)大素?cái)?shù)的乘積很容易算,而拿到這個(gè)乘積去算出是哪兩個(gè)素?cái)?shù)相乘就很復(fù)雜了,具體原理有興趣可以自行研究。
非對稱加密相比對稱加密更加安全,但也存在兩個(gè)明顯缺點(diǎn):
- CPU計(jì)算資源消耗非常大。一次完全TLS握手,密鑰交換時(shí)的非對稱解密計(jì)算量占整個(gè)握手過程的90%以上。而對稱加密的計(jì)算量只相當(dāng)于非對稱加密的0.1%,如果應(yīng)用層數(shù)據(jù)也使用非對稱加解密,性能開銷太大,無法承受。
- 非對稱加密算法對加密內(nèi)容的長度有限制,不能超過公鑰長度。比如現(xiàn)在常用的公鑰長度是2048位,意味著待加密內(nèi)容不能超過256個(gè)字節(jié)。
所以公鑰加密目前只能用來作密鑰交換或者內(nèi)容簽名,不適合用來做應(yīng)用層傳輸內(nèi)容的加解密。
加密的詳細(xì)過程
首先服務(wù)器端用非對稱加密(RSA)產(chǎn)生公鑰和私鑰。然后把公鑰發(fā)給客 戶端,路徑或許有人會截取,但是沒有用,因?yàn)橛霉€加密的文件只有私鑰可以解密,而私鑰永遠(yuǎn)都不會離開服務(wù)器的。當(dāng)公鑰到達(dá)客戶端之后,客戶端會用對稱加密產(chǎn)生一個(gè)秘鑰并且用公鑰來加密發(fā)送給服務(wù)器端,這個(gè)秘鑰就是以后用來通信的鑰匙。這樣服務(wù)器端收到公鑰加密的秘鑰時(shí)就可以用私鑰來解公鑰從而獲得秘鑰。這樣的話客戶端和服務(wù)器端都獲得了秘鑰,信息交流相對是安全的。
聽起來確實(shí)是挺安全的,但實(shí)際上,還有一種更惡劣的攻擊是這種方法無 法防范的,這就是傳說中的“中間人攻擊”。在身份認(rèn)證的過程中,出現(xiàn)了一個(gè)“中間人”攔截我們的信息,他有意想要知道你們的消息。我們將這個(gè)中間人稱為M。當(dāng)服務(wù)器第一次給客戶端發(fā)送公鑰的時(shí)候,途徑M。M知道你要進(jìn)行密鑰交換了,它把公鑰扣了下來,假裝自己是客戶端,偽造了一個(gè)偽秘鑰(對稱加密產(chǎn)生的),然后用服務(wù)器發(fā)來的公鑰加密了偽秘鑰發(fā)還給服務(wù)器,這樣服務(wù)器以為和客戶端完成了密鑰交換,實(shí)際上服務(wù)器是和M完成了密鑰交換(獲得了偽秘鑰)。同時(shí)M假扮成服務(wù)器自行用非對稱加密產(chǎn)生偽公鑰和偽私鑰,與客戶端進(jìn)行秘鑰交換,拿到客戶端發(fā)送過來的秘鑰。現(xiàn)在客戶端拿著秘鑰,M拿著秘鑰和為偽秘鑰,服務(wù)器拿著偽秘鑰。