參考了這篇文章
https://www.oschina.net/translate/https-explained-with-carrier-pigeons
下面說一下我自己的理解。
先設(shè)定5個(gè)角色:愛麗絲,鮑勃, 馬洛里, 信鴿肖抱, 泰德
- HTTP
愛麗絲給鮑勃發(fā)信,把信綁到信鴿的腿上异旧,由信鴿傳遞意述。
這時(shí)候信鴿可能會(huì)被馬洛里這個(gè)壞蛋截住,他能獲取信中的內(nèi)容并且對內(nèi)容進(jìn)行篡改泽艘,然后再發(fā)到鮑勃手中欲险。
信的內(nèi)容是明文傳遞的,這很不安全匹涮。
- 對稱加密
上面?zhèn)鬟f的方式很不安全天试,于是愛麗絲和鮑勃就想把信的內(nèi)容加密一下再傳遞,這樣馬洛里就算獲取了信中的內(nèi)容也不知道怎么解密然低。
愛麗絲想給鮑勃發(fā)信喜每, 她想把傳送的消息的每個(gè)字母都往后移兩位填渠,比如I Love You 就變成了K Nqxg Aqw盗似。
但是鮑勃不知道怎么解密啊拨拓,于是愛麗絲需要先把加密的方式也就是密鑰:每個(gè)字母后移兩位告訴鮑勃矾缓,那鮑勃看到后就知道把收到的消息左移兩位就可以了。 搞定往枣!
但是大家看到問題了嗎痴突?問題就是如果最開始發(fā)送的密鑰被馬洛里截獲呢摔认?那之后愛麗絲跟鮑勃的信都能被馬洛里破解喧兄。 這也不安全无畔。
- 非對稱加密
愛麗絲和鮑勃想出來了一個(gè)很有效的方式可以避免他們的信被馬洛里看到啊楚,但是每次發(fā)信都要經(jīng)過4個(gè)步驟:
a. 愛麗絲先把信鴿發(fā)給鮑勃(發(fā)一個(gè)空的消息)
b. 鮑勃把一個(gè)沒有鎖上的空盒子綁在鴿子腿上,發(fā)給愛麗絲
c. 愛麗絲把信的內(nèi)容放到盒子里浑彰,鎖上恭理,讓鴿子發(fā)給鮑勃
d. 鮑勃用手里面的鑰匙打開盒子,然后拿到信
這樣已經(jīng)安全多了郭变,這就是非對稱加密算法颜价。但是還有一個(gè)問題。
萬一在b步驟馬洛里把信鴿截獲诉濒, 換了一個(gè)盒子怎么辦周伦,這樣的話盒子發(fā)到愛麗絲手里,她不知道這個(gè)盒子是鮑勃的還是馬洛里的循诉,這該怎么辦呢横辆?
- 簽名
鮑勃把盒子發(fā)給愛麗絲之前,在盒子上簽上自己的名字茄猫, 這樣愛麗絲看到這個(gè)簽名就能知道是鮑勃發(fā)過來的了。
但是困肩。划纽。。如果是馬洛里偽造鮑勃的簽名怎么辦呢锌畸?
- 認(rèn)證機(jī)構(gòu)
泰德終于要出場了勇劣,泰德是一個(gè)很有名的人,值得信任潭枣,他會(huì)給任何人簽名比默,并且大家都只信任由他認(rèn)證的合法的簽名,這樣用泰德認(rèn)證過的簽名來標(biāo)記盒子是由鮑勃發(fā)出來的而不是馬洛里盆犁。 馬洛里也不可能獲取到一個(gè)由泰德代表鮑勃簽名盒子命咐。泰德就是這樣的認(rèn)證機(jī)構(gòu), 愛麗絲可以信任鮑勃發(fā)給她的盒子因?yàn)樘┑赂嬖V她這個(gè)盒子是合法的谐岁。
- 高效的HTTPS
如果用非對稱加密技術(shù)來發(fā)信比對稱加密要慢醋奠,為什么呢,因?yàn)槊看味家劝l(fā)個(gè)鴿子伊佃,然后收到一個(gè)盒子窜司,然后再發(fā)送信的內(nèi)容,這樣太慢了航揉。
于是愛麗絲和鮑勃決定只在第一次訪問的時(shí)候發(fā)送盒子塞祈,愛麗絲把對稱加密的密鑰放到盒子里面發(fā)給鮑勃,保證了只有他們兩人知道密鑰帅涂,在之后的飛鴿傳書時(shí)只發(fā)送加了密的信议薪,馬洛里不知道密鑰所以也無法破解信中的內(nèi)容了胀葱。
這種方法兼具了非對稱加密的安全和對稱加密的高效,所以HTTPS是結(jié)合了二者的優(yōu)點(diǎn)笙蒙, 只有在交換密鑰的時(shí)候才會(huì)用非對稱加密技術(shù)抵屿。