這個(gè)是寫(xiě)定義的比較清晰的蝌矛。
北京的Bob發(fā)了一個(gè)快遞到廣州的Alice道批,途中經(jīng)過(guò)了上海,上浩佣粒快遞中心出現(xiàn)了一個(gè)黑客H屹徘,他偷偷打開(kāi)了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)箱開(kāi)柜密碼是1234良蒸,而黑客H不知道密碼技扼,所以他看不到保險(xiǎn)箱里邊的東西,Alice收到快遞后用預(yù)先溝通好的密碼就可以打開(kāi)保險(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擁有兩把鑰匙巨朦,一把叫做公鑰乡翅,一把叫做私鑰。公鑰是公開(kāi)讓全社會(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挣柬,接著B(niǎo)ob拿到Alice的數(shù)據(jù)包后,用自己的私鑰解開(kāi)了外層保險(xiǎn)柜(Bob的公鑰)睛挚,拿到了里邊Alice保險(xiǎn)柜(Alice的公鑰)邪蛔。此時(shí)Alice跟Bob都有了各自的公鑰(并且都有他們自己的私鑰),接著只要保證每次互相傳遞數(shù)據(jù)的時(shí)候扎狱,把數(shù)據(jù)放在對(duì)方的保險(xiǎn)柜里邊即可(即每次都用對(duì)方的公鑰加密數(shù)據(jù))侧到,這樣無(wú)論如何勃教,H都無(wú)法解開(kāi)保險(xiǎn)柜(因?yàn)橹挥懈髯缘乃借€才能解開(kāi)各自的保險(xiǎn)柜)。