在網絡上的任何活動均可以歸結爲服務器以前的收發消息。咱們能夠將這些消息的收發,想象成由鴿子實現的。這很荒謬,但確實如此。安全
有一天愛麗絲經過鴿子發送一條「我愛你」的消息給鮑勃。可是愛麗絲的情敵馬洛裏,半路攔截了鴿子,並將消息修改成了「我不愛你」。可是鮑勃沒法知道,消息被篡改了。這就是Http的工做方式,很是的不可靠。服務器
愛麗絲和鮑勃,準備對消息進行加密。好比將字母偏移3位,好比「A」使用「D」表示,「B」使用「E」表示。馬洛裏即便攔截了鴿子,也沒法進行修改,由於他不清楚加密的方式,沒法理解消息的內容。可是鮑勃卻能夠輕鬆將消息進行解密。網絡
這被稱爲symmetric key cryptography(對稱密鑰加密),你知道如何加密也知道如何解密。現實的生產中,會使用更復雜的加密方式,可是主體思路是相同的。加密
若是愛麗絲和鮑勃在發送消息前不見面,他們沒法創建安全的密鑰。若是在消息自己之中,攜帶密鑰。馬洛裏就會知道消息的內容,對其解密後進行篡改。設計
這就是典型的MITM(中間人攻擊),避免中間人攻擊咱們必須更改加密系統。code
愛麗絲和鮑勃設計出了一個更好的加密系統,下面是操做步驟ip
愛麗絲和鮑勃之間的通信使用了asymmetric key cryptography(非對稱密鑰加密)。你能夠加密消息(把消息放進盒子),可是你沒辦法解密(你沒有鑰匙)get
盒子也能夠稱爲「公鑰」,盒子的鑰匙被稱爲「私鑰」。it
目前還有一個問題。若是馬洛裏攔截了鴿子,將盒子換成了本身的盒子,怎麼辦?io
愛麗絲能夠在盒子上,添加上本身的簽名,鮑勃就會知道這個盒子是否來自愛麗絲。那麼鮑勃一開始該如何識別簽名呢?
愛麗絲和鮑勃決定讓泰德代替愛麗絲在盒子上簽名。泰德是一個很是有名的,而且值得信賴的人。泰德只有肯定是愛麗絲的盒子的狀況下,纔會在盒子上簽名。而馬洛裏不會獲得泰德的簽名。
而泰德就是Certification Authority(證書頒發機構)
帶有盒子的鴿子,飛的比不帶盒子的鴿子飛的慢,這該怎麼辦?
使用非對稱加密比使用對稱加密要慢。愛麗絲鮑勃決定,只使用盒子(非對稱加密)交換加密的密鑰。而後使用密鑰對消息進行對稱加密。
這就是Https的原理。