HTTPS 中對(duì)稱加密與非對(duì)稱加密的優(yōu)缺點(diǎn)對(duì)比

對(duì)稱加密
加密 encryption 與解密 decryption 使用的是同樣的密鑰 secret key,對(duì)稱加密是最快速、最簡(jiǎn)單的一種加密方式。加密和解密算法是公開(kāi)的,秘鑰必須嚴(yán)格保存,如果秘鑰泄露,別人就能夠用密文+秘鑰還原成你的明文。對(duì)稱加密有很多種算法,由于它效率很高,所以被廣泛使用在很多加密協(xié)議的核心當(dāng)中。

對(duì)稱加密通常使用的是相對(duì)較小的密鑰,一般小于 256bit。因?yàn)槊荑€越大,加密越強(qiáng),但加密與解密的過(guò)程越慢。如果你只用 1bit 來(lái)做這個(gè)密鑰,那黑客們可以先試著用 0 來(lái)解密,不行的話就再用 1 解;但如果你的密鑰有 1MB 大,黑客們可能永遠(yuǎn)也無(wú)法破解,但加密和解密的過(guò)程要花費(fèi)很長(zhǎng)的時(shí)間。

比如常見(jiàn)的 DES/AES 都是屬于對(duì)稱加密算法。
優(yōu)點(diǎn):算法公開(kāi)、計(jì)算量小、加密速度快、加密效率高。

缺點(diǎn):秘鑰的管理和分發(fā)非常困難,不夠安全。在數(shù)據(jù)傳送前,發(fā)送方和接收方必須商定好秘鑰,然后雙方都必須要保存好秘鑰,如果一方的秘鑰被泄露,那么加密信息也就不安全了。
HTTPS 中對(duì)稱加密與非對(duì)稱加密的優(yōu)缺點(diǎn)對(duì)比

非對(duì)稱加密
非對(duì)稱加密算法需要兩個(gè)密鑰來(lái)進(jìn)行加密和解密,這兩個(gè)秘鑰是公開(kāi)密鑰(簡(jiǎn)稱公鑰)和私有密鑰(簡(jiǎn)稱私鑰),即常說(shuō)的“公鑰加密,私鑰加密”或“私鑰加密,公鑰加密”。
私鑰只能由一方安全保管,不能外泄,而公鑰則可以發(fā)給任何請(qǐng)求它的人。
非對(duì)稱加密使用這對(duì)密鑰中的一個(gè)進(jìn)行加密,而解密則需要另一個(gè)密鑰。

RSA 就是最常用的非對(duì)稱加密算法。
比如,你向銀行請(qǐng)求公鑰,銀行將公鑰發(fā)給你,你使用公鑰對(duì)消息加密,那么只有私鑰的持有人--銀行才能對(duì)你的消息解密。
與對(duì)稱加密不同的是,銀行不需要將私鑰通過(guò)網(wǎng)絡(luò)發(fā)送出去,因此安全性大大提高。
雖然非對(duì)稱加密很安全,但是和對(duì)稱加密比起來(lái),它非常的慢,所以我們還是要用對(duì)稱加密來(lái)傳送消息,但對(duì)稱加密所使用的密鑰我們可以通過(guò)非對(duì)稱加密的方式發(fā)送出去。

優(yōu)點(diǎn):安全性更高,公鑰是公開(kāi)的,秘鑰是自己保存的,不需要將私鑰給別人。

缺點(diǎn):加密和解密花費(fèi)時(shí)間長(zhǎng)、速度慢,只適合對(duì)少量數(shù)據(jù)進(jìn)行加密。

對(duì)稱加密加密與解密使用的是同樣的密鑰,所以速度快,但由于需要將密鑰在網(wǎng)絡(luò)傳輸,所以安全性不高。
非對(duì)稱加密使用了一對(duì)密鑰,公鑰與私鑰,所以安全性高,但加密與解密速度慢。
解決的辦法是將對(duì)稱加密的密鑰使用非對(duì)稱加密的公鑰進(jìn)行加密,然后發(fā)送出去,接收方使用私鑰進(jìn)行解密得到對(duì)稱加密的密鑰,然后雙方可以使用對(duì)稱加密來(lái)進(jìn)行溝通。