前面幾篇博客聊了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(非對(duì)稱加密)與AES(對(duì)稱加密)結(jié)合的加密方式。先通過RSA交互AES的密鑰,然后通過AES進(jìn)行報(bào)文加密和解密。本篇博客主要聊的就是HTTPS具體的工作過程。
一、RSA與AES簡(jiǎn)述
在本篇博客的第一部分呢,先聊一下RAS與AES這兩個(gè)加密策略,如果你在公司做過支付相關(guān)的東西,對(duì)數(shù)據(jù)傳輸?shù)陌踩砸蟊容^高,這時(shí)候就得采取一些加密措施將傳輸?shù)膱?bào)文進(jìn)行加密,必要時(shí)再進(jìn)行MD5驗(yàn)簽。當(dāng)然本部分聊的RAS與AES是比較簡(jiǎn)潔的,關(guān)于這兩者具體的內(nèi)容,請(qǐng)自行Google吧。因?yàn)镠TTPS在傳輸?shù)倪^程中使用到了RSA與AES加密算法,所以在聊HTTP+SSL之前呢,我們先簡(jiǎn)單的聊一下AES與RSA。
1、Advanced Encryption Standard (AES: 高級(jí)加密標(biāo)準(zhǔn))
AES,全稱:Advanced Encryption Standard----高級(jí)加密標(biāo)準(zhǔn)。該加密算法有一個(gè)密鑰,該密鑰可以用來加密,也可以用來解密,所以AES是對(duì)稱加密算法。下方這個(gè)就是AES加密和解密的過程。Client端與Server端有一個(gè)共同的Key, 這個(gè)Key是用來加密和解密的。如果報(bào)文在傳輸?shù)倪^程中被竊取了,沒有這個(gè)key, 對(duì)加密的內(nèi)容進(jìn)行破解是非常困難的,當(dāng)然竊取者如果有key的話,也是可以輕而易舉的解密的。所以在AES中,key是關(guān)鍵。這也就相當(dāng)于你們家的門鑰匙,誰拿到鑰匙后都可以打開你們家的門。即使門鎖再結(jié)實(shí),再安全,在鑰匙面前也是不行呢。
所以對(duì)于AES加密策略來說這個(gè)Key的保密措施要做足一些,如果之后有時(shí)間的話可以分享一些具體的AES加密策略。比如每次加密的Key都是從一個(gè)密碼本中動(dòng)態(tài)生成的,而這個(gè)