文章列表

EP21 - 公開金鑰|公開的金鑰還能用?!

Podcast連結


本集內容大綱

這集的內容接續上一集,分享更多的加密方法和一些實際的應用。建議還沒聽上一集的聽眾先去聽上一集,比較不會跟不上。

對稱式加密

上一集中提到一個加密演算法是由要保護的明文、加密過後的密文、以及加密演算法配合金鑰所組成。
這類型透過同一個金鑰來加密和解密的加密方法我們會把它稱之為對稱式加密。

pki symmentric crypto

問題一: 如何安全地傳遞加密所使用的金鑰?

如果與對方相距不遠也許可以透過和對方見面直接口頭告知。但如果今天我在美國要跟身在台灣的朋友傳遞訊息時要怎麼辦呢?

  • 國際電話 → 又貴又不方便,還有被竊聽的風險。
  • 寄實體的信 → 要花很久的時間。
  • 通訊軟體 → 軟體本身的資安問題。
  • 用另一個加密演算法來保護金鑰 → 新的加密演算法所使用的金鑰又要如何保護呢?

找到一個安全的方式來傳遞金鑰,會是一件很重要的事情。

問題二: 需要大量的金鑰

兩個人所需的金鑰是一把,三個人所需要的金鑰是三把(C2取1),四個人會需要六把(C4取2),一百個人就會需要4950把(C100取2),這麼大量個金鑰在使用上跟管理上都十分麻煩。

非對稱式加密

使用兩把金鑰互相配合(金鑰X、金鑰Y)
使用非對稱式加密配合X金鑰加密,加密後的密文無法被X金鑰解密,只能被Y金鑰解密。反之,如果被Y加密的密文就只能被X解密。

pki asymmentric crypto


通常我們會把兩個金鑰的其中一個公開讓大家都知道,另一個金鑰則是不公開只有自己知道。

  • 公鑰:公開金鑰,公開的金鑰
  • 私鑰:私密金鑰,不公開的金鑰

優點

可以有效解決前面提到對稱式金鑰加密的兩個問題。
傳遞訊息時,透過用對方的公鑰將要訊息加密,確保只有擁有私鑰的對方可以解密訊息。
透過這個模式我們可以安全的傳送對稱式加密要使用的金鑰。
所需的金鑰也一個只要一把公鑰一把私鑰,共計兩把。一百個人就只需要兩百把金鑰。

身份驗證

當A要傳送訊息給B時。 A在傳送訊息前先用自己的私鑰加密訊息,B在收到以後可以嘗試用A的公鑰解密這段訊息。
因為只有A有自己的私鑰,因此如果可以成功用B們的公鑰解密這個訊息,就表示這個訊息一定是由A加密送出的。

pki authentication

數位簽章 Digital Signature

複習:什麼是雜湊函數?

數位簽章指的不是在平板上簽名這種電子簽名,而是結合非對稱式加密和雜湊函數,來達到確保資訊完整性和不可否認性的一個方法?
數位簽章簽署過程:

  • 利用雜湊函數計算出要傳送的資料的雜湊值
  • 用A的私鑰把資料加密(密文1)
  • 把加密後的資料與雜湊值一起用B的公鑰加密(密文2),確保這個訊息只有收件者可以解密。

驗證簽章的過程:

  • B在收到後會先使用自己的私鑰解密訊息,取得密文1和雜湊值
  • 接著利用A的公鑰解密 密文1,確任資訊是由A傳送的。
  • 最後再用雜湊函數計算解密後的資訊的雜湊值,並且比對確認是否和接收到的雜湊值一樣,來確保資訊的完整性,沒有被竄改。

pki digitalsignature

一個簡單的數位簽章簽署流程就是這樣做到驗證身份、完整性和不可否認性的。

數位憑證 Digital Certificate

類似一種數位身分證,可以用來證明擁有者的身份。
數位憑證由一個可信任的機關所核發,通常上面包含以下訊息:

  • 擁有者的資訊
  • 擁有者個公開金鑰
  • 憑證有效期限
  • 憑證發行機關的數位簽章

台灣內政部所發布的自然人憑證就是一種數位憑證。
我們之所以可以藉由自然人憑證在網路上進行很多政府電子化的服務,而不需要本人到現場驗證身份就是因為數位憑證能夠證明我們的身份,還能透過憑證內的公開金鑰確保安全的傳遞資訊。


數位憑證除了可以核發給人以外,也可以核發給組織或是網站。
我們在 EP19 中提到,瀏覽網頁時用來建立安全連線的HTTPS所使用的憑證,就是數位憑證。
當使用者造訪一個網站時,瀏覽器就會檢查這個網站所提供的憑證是不是正確可信的,來判斷連線是否安全。

pki digitalcertificate

公開金鑰基礎架構 PKI (Public Key Infrastructure)

管理和核發數位憑證的架構,目的是建立一套可信任機制,讓我們可以有效率的管理和核發數位憑證。
在網路上與其他人通訊時,我們無從得知對方是否被別人假冒,也不知道他的數位憑證能不能被信任,因此需要一個雙方共同信任的第三方機構。

PKI 藉由一些大家所共同信任的數位憑證認證機構 (Certificate Authority),來核發數位憑證。
信任鏈Chain of Trust(以此網站為例):

  • 終端憑證:資安解壓縮網站的憑證 (由Cloudflare簽署頒發)
  • 中介憑證:Cloudflare憑證(由Baltimore CyberTrust簽署頒發)
  • 根憑證:Baltimore CyberTrust憑證

信任Baltimore CyberTrust憑證的人就會相信他所頒發的Cloudflare憑證,並間接相信Cloudflare頒發的資安解壓縮網站憑證。

非對稱式加密演算法

  • Deffie-Hellman:設計用來交換金鑰的演算法
  • 橢圓曲線加密:使用較短金鑰但安全性不減
  • RSA:目前最被廣泛使用的非對稱式加密演算法
  • And a lot more…

這些加密演算法背後都是一些複雜的數學,像是離散數學、橢圓曲線數學等等,因此這麼我們不做太多的介紹。

非對稱式加密的缺點

非對稱式加密因為演算法較複雜(與對稱式加密相比)因此在運算的速度上和所消耗的能量都比對稱式加密多上許多。 影響:

  • 在需要大量加密解密時會有延遲:如串流影片、線上遊戲
  • 在一些低耗電裝置上無法有效運作:如一些物聯網裝置

解決方式:結合對稱式加密

透過非對稱加密來進行簡單的身份驗證和交換金鑰,完成後,後續的加密就利用剛剛交換的金鑰配合對稱式加密來完成,如此一來不但能結合兩者的優點,也能同時最小化兩者的缺點。
EP19 提到的HTTPS連線,就是在透過數位憑證確認過身份後,利用憑證裡的公開金鑰決定並交換對稱式加密金鑰,完成後接下來瀏覽器與網頁傳輸的所有資訊都會由對稱式加密演算法來進行加密。

對稱式加密 vs. 非對稱式加密

pki compare