前面幾篇博客聊了HTTP的相關(guān)東西,今天就來聊一聊HTTPS的東西。因?yàn)?span style="margin: 0px; padding: 0px; color: rgb(255, 0, 0);">HTTP協(xié)議本身存在著明文傳輸、不能很好的驗(yàn)證通信方的身份和無法驗(yàn)證報(bào)文的完整性等一些安全方面的確點(diǎn),所以才有了HTTPS的缺陷。HTTPS確切的的說不是一種協(xié)議,而是HTTP + SSL (TSL)的結(jié)合體。HTTP報(bào)文經(jīng)過SSL層加密后交付給TCP層進(jìn)行傳輸。SSL(安全套節(jié)層)主要采取的是RSA(非對稱加密)與AES(對稱加密)結(jié)合的加密方式。先通過RSA交互AES的密鑰,然后通過AES進(jìn)行報(bào)文加密和解密。本篇博客主要聊的就是HTTPS具體的工作過程。
一、RSA與AES簡述
在本篇博客的第一部分呢,先聊一下RAS與AES這兩個加密策略,如果你在公司做過支付相關(guān)的東西,對數(shù)據(jù)傳輸?shù)陌踩砸蟊容^高,這時(shí)候就得采取一些加密措施將傳輸?shù)膱?bào)文進(jìn)行加密,必要時(shí)再進(jìn)行MD5驗(yàn)簽。當(dāng)然本部分聊的RAS與AES是比較簡潔的,關(guān)于這兩者具體的內(nèi)容,請自行Google吧。因?yàn)镠TTPS在傳輸?shù)倪^程中使用到了RSA與AES加密算法,所以在聊HTTP+SSL之前呢,我們先簡單的聊一下AES與RSA。
1、Advanced Encryption Standard (AES: 高級加密標(biāo)準(zhǔn))
AES,全稱:Advanced Encryption Standard----高級加密標(biāo)準(zhǔn)。該加密算法有一個密鑰,該密鑰可以用來加密,也可以用來解密,所以AES是對稱加密算法。下方這個就是AES加密和解密的過程。Client端與Server端有一個共同的Key, 這個Key是用來加密和解密的。如果報(bào)文在傳輸?shù)倪^程中被竊取了,沒有這個key, 對加密的內(nèi)容進(jìn)行破解是非常困難的,當(dāng)然竊取者如果有key的話,也是可以輕而易舉的解密的。所以在AES中,key是關(guān)鍵。這也就相當(dāng)于你們家的門鑰匙,誰拿到鑰匙后都可以打開你們家的門。即使門鎖再結(jié)實(shí),再安全,在鑰匙面前也是不行呢。
所以對于AES加密策略來說這個Key的保密措施要做足一些,如果之后有時(shí)間的話可以分享一些具體的AES加密策略。比如每次加密的Key都是從一個密碼本中動態(tài)生成的,而這個