1. 程式人生 > >對稱加密和非對稱加密、數字簽名、數字證書的區別

對稱加密和非對稱加密、數字簽名、數字證書的區別

之前在面試的時候被問到了HTTPS,SSL這樣的知識點,也沒答上來,這裡也簡單整理一下。

首先還是來解釋一下基礎的東東:

  • 對稱加密:
    • 加密和解密都是用同一個金鑰
  • 非對稱加密:
    • 加密用公開的金鑰,解密用私鑰
    • (私鑰只有自己知道,公開的金鑰大家都知道)
  • 數字簽名:
    • 驗證傳輸的內容是對方傳送的資料
    • 傳送的資料沒有被篡改過
  • 數字證書(Certificate Authority)簡稱CA
    • 認證機構證明是真實的伺服器傳送的資料

3y的通訊之路:

  • 遠古時代:3y和女朋友聊天傳輸資料之間沒有任何的加密,直接傳輸
    • 內容被看得一清二楚,毫無隱私可言
  • 上古時期:使用對稱加密的方式來保證傳輸的資料只有兩個人知道
    • 此時有個問題:金鑰不能通過網路傳輸(因為沒有加密之前,都是不安全的),所以3y和女朋友先約見面一次,告訴對方密碼是多少,再對話聊天。
  • 中古時期:3y不單單要跟女朋友聊天,還要跟爸媽聊天的哇(同樣不想洩漏了自己的通訊資訊)。那有那麼多人,難道每一次都要約來見面一次嗎?(說明維護多個對稱金鑰是麻煩的!)--->所以用到了非對稱加密
    • 3y自己保留一份密碼,獨一無二的(私鑰)。告訴3y女朋友,爸媽一份密碼(這份密碼是公開的,誰都可以拿--->公鑰)。讓他們給我發訊息之前,先用那份我告訴他們的密碼加密一下,再發送給我。我收到資訊之後,用自己獨一無二的私鑰解密就可以了!
  • 近代:此時又出現一個問題:雖然別人不知道私鑰是什麼,拿不到你原始傳輸的資料,但是可以拿到加密後的資料,他們可以改掉某部分的資料再發送給伺服器,這樣伺服器拿到的資料就不是完整的了。
    • 3y女朋友給3y發了一條資訊”3y我喜歡你“,然後用3y給的公鑰加密,發給3y了。此時不懷好意的人擷取到這條加密的資訊,他破解不了原資訊。但是他可以修改加密後的資料再傳給3y。可能3y拿到收到的資料就是”3y你今晚跪鍵盤吧“
  • 現代:拿到的資料可能被篡改了,我們可以使用數字簽名來解決被篡改的問題。數字簽名其實也可以看做是非對稱加密的手段一種,具體是這樣的:得到原資訊hash值,用私鑰
    對hash值加密,另一端公鑰解密,最後比對hash值是否變了。如果變了就說明被篡改了。(一端用私鑰加密,另一端用公鑰解密,也確保了來源)
  • 目前現在:好像使用了數字簽名就萬無一失了,其實還有問題。我們使用非對稱加密的時候,是使用公鑰進行加密的。如果公鑰被偽造了,後面的數字簽名其實就毫無意義了。講到底:還是可能會被中間人攻擊~此時我們就有了CA認證機構來確認公鑰的真實性

對於數字簽名和CA認證還是不太瞭解參考一下