從密碼上傳到ssl
ssl的問題,可以從用戶登錄時(shí),密碼的上傳開始講起。
在傳統(tǒng)的http網(wǎng)頁里,用戶輸入用戶名和密碼,我們?nèi)绾伟衙艽a安全的傳送到服務(wù)器,從而實(shí)現(xiàn)登錄呢?
當(dāng)然,主流的網(wǎng)站不上傳用戶密碼,而是密碼的MD5值,數(shù)據(jù)庫存的也是MD5,但這不影響我們今天的討論,MD5被截獲了,一樣拿去登錄,一樣是泄露。
因?yàn)閔ttp通信的每一個(gè)字節(jié),對節(jié)點(diǎn)主人而言都是一覽無余的,所以常規(guī)的對稱加密不可行,因?yàn)橐用芫鸵忻荑€+加密算法,或者說密碼本,而這個(gè)密碼本,服務(wù)器沒有辦法隱蔽的下發(fā)給客戶端。
這時(shí)候就用到非對稱加密了,經(jīng)典的是rsa加密。rsa會(huì)生成一個(gè)公鑰和一個(gè)私鑰。公鑰加密的數(shù)據(jù),只能由私鑰解密。公鑰加密的數(shù)據(jù),不能用公鑰解密回來。
神奇吧。記住這一點(diǎn)就夠了,公鑰加密的數(shù)據(jù),只能由私鑰解密。公鑰加密的數(shù)據(jù),不能用公鑰解密回來。
服務(wù)器只需要把公鑰下發(fā)非網(wǎng)頁,網(wǎng)頁用這個(gè)公鑰加密自己的數(shù)據(jù)上傳,這樣至少實(shí)現(xiàn)了向上的數(shù)據(jù)流是加密的。但是向下的數(shù)據(jù)流還是暴露的,因?yàn)榫退惴?wù)器用私鑰加密它,公鑰是公開的,誰都能解開,沒有意義。
這時(shí)候的辦法就是,客戶端(網(wǎng)頁)生成一個(gè)隨機(jī)密鑰,上傳給服務(wù)器,大家以后就用這個(gè)密鑰通信,AES對稱加密就夠了。前面說過,上行數(shù)據(jù)已經(jīng)被公鑰保護(hù)了。
這兩步其實(shí)就是https握手的前兩步,也是最核心的兩步。

浙公網(wǎng)安備 33010602011771號