認證、HTTPS、證書的基本含義

前言

通過前面的總結 《對稱加密、非對稱加密、公鑰、私鑰究竟是個啥?》,我們基本瞭解了對稱加密和非對稱加密的概念和特點,考慮到效率和安全性,一般可以使用非對稱加密來傳遞對稱加密所需密鑰,之後就採取對稱加密通信了,這樣可以大大提高數據發送的的效率。

其實密碼技術除了應用在加密領域外還有很多其他的用途,比如驗證數據的完整性、用來做認證、提供一些不可否認的證據等,這些應用也常常出現在我們的日常生活中,比如很多官方網站在提供軟件下載鏈接的同時,還附帶一個驗證的字符串,實際上很多就是md5碼或者hash碼,這些就是供下載的人來驗證完整性的,防止被其他人篡改。

download

我們下載完軟件之後,使用工具來將軟件轉化成一串字符,聽起來很神奇,實際上就是計算一下軟件的md5碼或hash碼,然後和網站上的標註的信息進行對比,如果一致那麼軟件就是完整的。我曾經就遇到過一次,當時做的遊戲發包,同事給我發了測試包,安裝之後無法正常使用,檢查包的大小與發送端的一樣,後來使用檢測工具計算發現md5是不同的,原因可能是發送包的時候電腦卡死過,導致最後發來數據包與原始數據產生了差異。

但是你有沒有想過,這個軟件雖然是完整的,通過md5計算發現也沒有被其他人篡改,那麼怎麼證明你下載的網站真的是官網呢?萬一官網也是僞造的呢?如果有人僞造了官網,又將上面的軟件進行修改重新計算md5然後上傳到自己僞造的界面上,你要怎麼來識別呢?

fish

可能有的人會想到看網址啊,taobao.com 就一定是淘寶的網站嗎?這個域名是可以僞造的,所以要驗證網站上東西是真的,那麼首先要驗證你看到的網站是真的,這就涉及到了認證身份,接下來可以簡單瞭解下什麼是認證。

認證

其實密鑰不僅僅可以用來加密,還可以用來認證的,那麼什麼是認證?認證是一種信用保證形式,表示對一種事物或一個人的信任和認可,比如常見的畢業證書、結婚證書都是對人一段經歷或一種關係的證明和認可。最簡單的網站登錄是基於密碼的驗證,這實際上就是利用對稱加密的認證。

網站保存了你的用戶信息和密碼,下次再登錄的時候輸入密碼後,網站會用你輸入的密碼和之前保存的密碼進行對比,如果密碼相同則認證成功,成功的證明了“你”就是“你”,而非對稱加密同樣可以用來做認證。

在非對稱加密的實現中,私鑰是隻有自己保存的,而私鑰加密的內容可以使用公鑰解開,如果一份加密數據可以用 Jerry的公鑰解開,那麼我們就可以認爲這份數據是 Jerry 發出的,因爲只有 Jerry 自己有私鑰,所以可以通過這種方式來進行認證。

而在網絡上想要認證一個網站的身份,確認它不是釣魚網站,第一個映入腦海中的就是 https,一般提到 https 都會說它是加密的、安全的,是 http 的升級版,但是 https 的安全不僅僅體現在加密上,還有它的認證功能,可以使你免受釣魚網站的侵害。

HTTPS

簡單瞭解下 HTTPS,一般來說網絡模型常說的有OSI七層模型和五層模型,HTTPS 的誕生並沒有增加模型的層數,HTTP 是建立在 TCP基礎上的應用層協議,而 HTTPS 是在 TCPHTTP 之間的會話層中加了一些特殊操作,使原來明文傳輸的內容,在會話層這一步進行加密,並且可以對數據來源進行認證。

提到 HTTPS 就不得不說 SSLTSLSSL 是應用在 HTTP上的一個協議加密層,最初是由網絡大佬網景公司(Netscape)研發,後來升級爲 TSL,簡單的理解就是 HTTP + SSL/TSL = HTTPS

safe

隨着網絡安全逐漸得到大家的認識,一些主流網站基本都都將訪問方式改成了 https,支持 https 的網站在瀏覽器的地址欄中通常有一把小鎖,點開會提醒你訪問的是安全的連接,如果你訪問的連接疑似被人篡改或者仿冒,那麼這把小鎖會被斜線劃掉,提醒你網站危險請謹慎訪問。

dangerous

那麼 https 是怎麼判斷出來哪些網站是安全的,哪些網站是仿冒的呢?畢竟有些網址都很像甚至可以做成一模一樣的,這就用到了非對稱加密的認證功能,當我用 A 的公鑰可以解密一段消息,那麼就可以證明消息是 A 發來的,https 的認證功能正是利用了這個特點。

當訪問一個網站的時候,網站先給我發一個用它的私鑰加密的數據,然後我用它的公鑰來解密,如果解密成功就說明我訪問的網站是正常的,可以繼續訪問,如果解密失敗則很有可能是虛假或者仿冒的網站,應該仔細辨別一下了。

這裏會有一個問題,我怎麼才能得到網站的公鑰呢?之前說過密鑰配送問題,直接由網站發給我肯定不行,中間可能被篡改,也有可能一個虛假網站把它自己的公鑰發給我了,我用假的公鑰驗證對應的假的私鑰也是成功的,這樣就起不到認證的效果了,必須給他找個證明人才行,這就要用到我們下面要說的證書了。

證書

證書是用來證明一件事情或東西的,剛纔說網站的公鑰不能它自己來發,這樣不能證明它的身份,我們可以找一個權威的機構給它認證一下,我每次從權威機構獲得網站的證書,從這個證書中取得公鑰,如果用這個公鑰可以解開網站私鑰加密的內容,那麼就可以認證它的身份了。

這裏提到的證書就是網站所有者找權威機構申請的,權威機構把網站信息、有效時期、對應的公鑰、序列號消息等數據存儲到證書中,當我們需要能某個網站的公鑰時,去證書中取就可以了,這裏的證書有點像營業執照了,由權威機構發佈,用來證明你的身份。

但是權威機構的證書怎麼發給我呢?我們有理由認爲網絡是不安全的,那證書如果直接通過網絡發給我同樣是不安全的,還有一個問題就是網站雖然找了一個權威機構,但是我認爲它不夠權威怎麼辦?這時這個權威機構可以找一個更權威的機構證明自己,讓更權威的機構給自己頒發一個證書,這樣就形成了證書鏈。

capath

就像現實生活中我要找個人來幹活,因爲工期比較緊所以找的人要求踏實,必須能老老實實把活幹完,不能半路撂挑子,張三過來應聘,正在我猶豫時,走過來一個叫李四的人說張三沒問題,但是我還是不能確定,因爲李四我也不熟悉,然後李四居然把我爸叫來了,我爸和我說李四這個人特別誠實,從來不說謊,這時一條證書鏈就形成了,李四爲張三證明,我爸爲李四證明,那誰來證明我爸說的是真的呢?不需要的,我無條件相信他。

這在計算機的證書鏈中就是根證書,根證書不需要別人來證明,你只能無條件相信它,它是整個信息鏈的源頭,通常內置在操作系統或者瀏覽器中,關於根證書還要一些好玩的故事和一些變態的應用,下次再說吧,準備睡覺了~

總結

  • 密碼技術除了應用在加密領域,還可以用來驗證數據的完整性、用來做認證、提供一些不可否認的證據
  • HTTPS 不僅可以用來加密通信內容,還可以用來驗證網站的真實性
  • 正規的支持 HTTPS的網站在訪問時會地址欄會有一把安全的小鎖頭,但是有些不出現小鎖頭的網站並不一定都是非法的
  • HTTP 網站是沒有小鎖頭的,因爲有些數據不需要加密,畢竟絕大多數的 HTTPS 證書是要錢的,有很多網站由於經費問題還未投身於 HTTPS 的懷抱
  • 根證書通常內置的操作系統或者瀏覽器中,是證書鏈的源頭,你必須無條件的信任他。

==>> 反爬鏈接,請勿點擊,原地爆炸,概不負責!<<==

當我們拼勁全力到達自己的終點時,可能會看到同行的人正在你的終點線前伸伸懶腰準備出發,然後一騎絕塵消失在你震驚的目光中,但是這不是我們放棄努力的理由,因爲如果你不努力,你甚至連他們的背影也看不到~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章