北京的Bob發(fā)了一個(gè)快遞到廣州的Alice养涮,途中經(jīng)過(guò)了上海葵硕,上海快遞中心出現(xiàn)了一個(gè)黑客H贯吓,他偷偷打開了Bob給Alice的快遞懈凹,然后偷偷把里邊的衣服剪爛,再按照原樣包裝好發(fā)往廣州悄谐,可以看到對(duì)于這樣簡(jiǎn)單包裝的傳輸在中途是可以偷偷修改里邊的東西介评。
HTTP的數(shù)據(jù)包是明文傳輸,也即是如果中途某個(gè)黑客嗅探到這個(gè)HTTP包爬舰,他可以偷偷修改里邊包的內(nèi)容们陆,至于Bob跟Alice是互相不知道這個(gè)動(dòng)作的,因此我們必須要有一個(gè)方案來(lái)防止這種不安全的篡改行為情屹,有個(gè)方法就是加密坪仇!
非對(duì)稱加密
Bob將衣服放到一個(gè)保險(xiǎn)箱里邊鎖起來(lái),他打了個(gè)電話告訴Alice保險(xiǎn)箱開柜密碼是1234垃你,而黑客H不知道密碼椅文,所以他看不到保險(xiǎn)箱里邊的東西,Alice收到快遞后用預(yù)先溝通好的密碼就可以打開保險(xiǎn)箱了惜颇。
這里保護(hù)的手段就是Bob對(duì)物品進(jìn)行加密皆刺,同時(shí)給了告訴Alice解密的方法!
那如果現(xiàn)在要求Bob的密碼只能通過(guò)快遞傳給Alice呢凌摄?如果Bob直接傳密碼給Alice羡蛾,H如果嗅探到這個(gè)快遞,那H也知道密碼了锨亏,這就無(wú)法保護(hù)快遞的安全性了林说。因此還需要有個(gè)方案煎殷,讓Bob能夠告訴Alice密碼的同時(shí),H又無(wú)法查看到Bob跟Alice通信的數(shù)據(jù)腿箩。
非對(duì)稱加密在這個(gè)時(shí)候就發(fā)揮作用了,來(lái)看看怎么回事:Bob擁有兩把鑰匙劣摇,一把叫做公鑰珠移,一把叫做私鑰。公鑰是公開讓全社會(huì)都知道末融,沒(méi)關(guān)系钧惧,Bob告訴所有人,你們要傳遞數(shù)據(jù)給我的時(shí)候請(qǐng)先用這個(gè)密鑰(公鑰)去加密一下你們的數(shù)據(jù)勾习,加密后的數(shù)據(jù)只能通過(guò)Bob私自藏著的私鑰才能解密浓瞪。
回到剛剛例子,Bob先發(fā)給保險(xiǎn)柜(Bob公鑰)給Alice巧婶,接著Alice把自己的保險(xiǎn)柜(Alice公鑰)放到Bob的保險(xiǎn)柜(即使用Bob的公鑰加密Alice的公鑰)里邊發(fā)還給Bob乾颁,接著Bob拿到Alice的數(shù)據(jù)包后,用自己的私鑰解開了外層保險(xiǎn)柜(Bob的公鑰)艺栈,拿到了里邊Alice保險(xiǎn)柜(Alice的公鑰)英岭。此時(shí)Alice跟Bob都有了各自的公鑰(并且都有他們自己的私鑰),接著只要保證每次互相傳遞數(shù)據(jù)的時(shí)候湿右,把數(shù)據(jù)放在對(duì)方的保險(xiǎn)柜里邊即可(即每次都用對(duì)方的公鑰加密數(shù)據(jù))诅妹,這樣無(wú)論如何,H都無(wú)法解開保險(xiǎn)柜(因?yàn)橹挥懈髯缘乃借€才能解開各自的保險(xiǎn)柜)毅人。