淺析SSL對(duì)稱加密和非對(duì)稱加密的兩種加密方式的應(yīng)用

現(xiàn)在加密方式被廣泛地應(yīng)用到銀行系統(tǒng),微信支付/支付寶支付/其它支付接口對(duì)接中,SSL加密能夠更加有效的保證數(shù)據(jù)的準(zhǔn)確性,及時(shí)性及安全性。

對(duì)稱加密是最快速、最簡(jiǎn)單的一種加密方式,加密(encryption)與解密(decryption)用的是同樣的密鑰(secretkey),這種方法在密碼學(xué)中叫做對(duì)稱加密算法。對(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í)間。密鑰的大小既要照顧到安全性,也要照顧到效率,

非對(duì)稱加密(AsymmetricCryptography),又稱公鑰加密

1976年,美國(guó)學(xué)者Dime和Henman為解決信息公開傳送和密鑰管理問(wèn)題,提出一種新的密鑰交換協(xié)議,允許在不安全的媒體上的通訊雙方交換信息,安全地達(dá)成一致的密鑰,這就是“公開密鑰系統(tǒng)”。相對(duì)于“對(duì)稱加密算法”這種方法也叫做“非對(duì)稱加密算法”。非對(duì)稱加密為數(shù)據(jù)的加密與解密提供了一個(gè)非常安全的方法,它使用了一對(duì)密鑰,公鑰(publickey)和私鑰(privatekey)。私鑰只能由一方安全保管,不能外泄,而公鑰則可以發(fā)給任何請(qǐng)求它的人。非對(duì)稱加密使用這對(duì)密鑰中的一個(gè)進(jìn)行加密,而解密則需要另一個(gè)密鑰。比如,你向銀行請(qǐng)求公鑰,銀行將公鑰發(fā)給你,你使用公鑰對(duì)消息加密,那么只有私鑰的持有人--銀行才能對(duì)你的消息解密。與對(duì)稱加密不同的是,銀行不需要將私鑰通過(guò)網(wǎng)絡(luò)發(fā)送出去,因此安全性大大提高。

SSL握手期間的非對(duì)稱加密

當(dāng)你瀏覽一個(gè)使用SSL證書的網(wǎng)站時(shí),瀏覽器做的第一件事就是和帶著證書的服務(wù)器實(shí)行SSL握手。

這個(gè)SSL握手是瀏覽器查看SSL證書有效性和磋商加密鏈接細(xì)節(jié)的關(guān)鍵一環(huán)。這一過(guò)程在幾毫秒的時(shí)間里完成。

瀏覽器確定證書簽發(fā)自可信CA(如GlobalSign)、依舊有效且沒(méi)有被撤回后,還要確保有問(wèn)題的證書是其相應(yīng)公鑰的合法所有者。

你可能聽說(shuō)過(guò)公鑰私鑰。公鑰更易識(shí)別,常見的有2048位簽名密鑰。數(shù)字越大,密鑰越復(fù)雜。

公鑰私鑰是非對(duì)稱加密的典型例子。公鑰負(fù)責(zé)加密,私鑰負(fù)責(zé)解密。使用非對(duì)稱加密,連接方式只有一條路。

瀏覽器使用非對(duì)稱加密來(lái)驗(yàn)證公私鑰對(duì),以及擴(kuò)展證書本身。為此,瀏覽器將使用隨時(shí)可用的公鑰來(lái)加密一小撮一次性數(shù)據(jù)。如果服務(wù)器能夠解密這個(gè)數(shù)據(jù)并以明文形式發(fā)回,那么它證明了它的私鑰對(duì)應(yīng)于公鑰。

至此,瀏覽器和服務(wù)器可以開始他們的加密鏈接了。

會(huì)話密鑰形式的對(duì)稱加密

在SSL握手期間使用非對(duì)稱加密作為一種驗(yàn)證方法之后,瀏覽器和服務(wù)器協(xié)商加密連接的條款并交換會(huì)話密鑰。

會(huì)話密鑰提供了一種在安全會(huì)話期間用于通信的對(duì)稱加密形式,分為40位,128位,256位。

使用對(duì)稱加密,密鑰可以執(zhí)行兩種功能:既可以加密,也可以解密。這使得擁有相應(yīng)會(huì)話密鑰的客戶端和服務(wù)器能夠安全地進(jìn)行通信。畢竟,沒(méi)有正確的鑰匙,沒(méi)有人可以監(jiān)視這個(gè)連接,不管第三方,無(wú)論多么復(fù)雜。

會(huì)話密鑰在加密連接的整個(gè)持續(xù)時(shí)間內(nèi)保持活動(dòng)狀態(tài)。在連接結(jié)束時(shí)密鑰被丟棄,并且在下一次訪問(wèn)時(shí)生成新的密鑰。這很簡(jiǎn)單,但相當(dāng)有效。

如你所見,對(duì)稱或非對(duì)稱密鑰的運(yùn)作方式不同,一種允許雙方進(jìn)行加密和解密,另一種則是單方面通信。但兩者都是SSL的組成部分。非對(duì)稱加密有助于在SSL握手期間驗(yàn)證公鑰/私鑰對(duì)的所有權(quán),而對(duì)稱加密是在安全連接期間用于實(shí)際通信的方法。