可信網站驗證 可信身份認證系統

可信網站驗證 可信身份認證系統

可信網站驗證(可信身份認證系統)
為什么HTTPS協議就比HTTP安全呢?一次安全可靠的通信應該包含什么東西呢,這篇文章我會嘗試講清晰這些細節 。
Alice與Bob的通信 我們以Alice與Bob一次通信來貫穿全文,一開始他們都是用明文的形式在網絡傳輸通信內容 。
嗅探以及篡改 假如在他們的通信鏈路出現了一個Hacker,由于通信內容都是明文可見,所以Hacker可以嗅探看到這些內容,也可以篡改這些內容 。
公眾號的文章之前就碰到很多被挾持篡改了內容,插入廣告 。
加密解密 既然明文有問題,那就需要對明文進行加密處理,讓中間人看不懂內容,于是乎要對原來的內容變成一段看不懂的內容,稱為加密,反之則是解密 。而本質其實就是一種數學運算的逆運算,類似加法減法,例如發送方可以將 abcd…xyz 每個字母+1映射成 bcd…yza,使得原文的字母變成看不懂的序列,而接收方只需要將每個字母-1就可以恢復成原來的序列,當然這種做法規律太輕易被**了,后邊會有個案例示意圖 。
對稱加密 假如對2個二進制數A和B進行異或運算得到結果C, 那C和B再異或一次就會回到A,所以異或也可以作為加密解密的運算 。
把操作數A作為明文,操作數B作為**,結果C作為密文 ??梢钥吹郊用芙饷苓\用同一個**B,把這種加解密都用同一個**的方式叫做對稱加密 。
可以看到簡樸的異或加密/解密操作,需要**跟明文位數相同 。為了克服這個缺點,需要改進一下,把明文進行分組,每組長度跟**一致,分別做異或操作就可以得到密文分片,再合并到一起就得到密文了 。
但是這種簡樸分組的模式也是很輕易發現規律,可以從下圖看到,中間采用對原圖進行DES的ECB模式加密(就是上邊提到簡樸分組的模式)
很明顯,原圖一些特征在加密后還是暴露無遺,因此需要再改進一把 。一般的思路就是將上次分組運算的結果/中間結果參與到下次分組的運算中去,使得更隨機混亂,更難** 。以下圖片來自維基百科:
經過改良后,Alice與Bob假如能提前拿到一個對稱加密的**,他們就可以通過加密明文來保證他們說話內容不會被Hacker看到了 。
非對稱加密 剛剛還引發另一個問題,這個對稱加密用到的**怎么互相告知呢?假如在傳輸真正的數據之前,先把**傳過去,那Hacker還是能嗅探到,那之后就了無秘密了 。于是乎出現另外一種手段:
這就是非對稱加密,任何人都可以通過拿到Bob公開的公鑰對內容進行加密,然后只有Bob自己私有的鑰匙才能解密還原出原來內容 。
RSA就是這樣一個算法,詳細數學證實利用了大質數乘法難以分解、費馬小定理等數學理論支撐它難以** 。相對于前邊的對稱加密來說,其需要做乘法模除等操作,性能效率比對稱加密差很多 。
由于非對稱加密的性能低,因此我們用它來先協商對稱加密的**即可,后續真正通信的內容還是用對稱加密的手段,提高整體的性能 。
認證 上邊雖然解決了**配送的問題,但是中間人還是可以欺騙雙方,只要在Alice像Bob要公鑰的時候,Hacker把自己公鑰給了Alice,而Alice是不知道這個事情的,以為一直都是Bob跟她在通信 。
要怎么證實現在傳過來的公鑰就是Bob給的呢?在危險的網絡環境下,還是沒有解決這個問題 。
一般我們現實生活是怎么證實Bob就是Bob呢?一般都是政府給我們每個人發一個身份證(假設身份證沒法偽造),我只要看到Bob身份證,就證實Bob就是Bob 。網絡也可以這么做,假如有個大家都信任的組織CA給每個人出證實,那Alice只要拿到這個證實,檢查一下是不是CA制作的Bob證書就可以證實Bob是Bob 。所以這個證書里邊需要有兩個重要的東西:Bob的公鑰+CA做的數字簽名 。