這集的內容接續上一集,分享更多的加密方法和一些實際的應用。建議還沒聽上一集的聽眾先去聽上一集,比較不會跟不上。
上一集中提到一個加密演算法是由要保護的明文、加密過後的密文、以及加密演算法配合金鑰所組成。
這類型透過同一個金鑰來加密和解密的加密方法我們會把它稱之為對稱式加密。
如果與對方相距不遠也許可以透過和對方見面直接口頭告知。但如果今天我在美國要跟身在台灣的朋友傳遞訊息時要怎麼辦呢?
找到一個安全的方式來傳遞金鑰,會是一件很重要的事情。
兩個人所需的金鑰是一把,三個人所需要的金鑰是三把(C 2 取 1),四個人會需要六把(C 4 取 2),一百個人就會需要 4950 把(C 100 取 2),這麼大量個金鑰在使用上跟管理上都十分麻煩。
使用兩把金鑰互相配合(金鑰X、金鑰Y)
使用非對稱式加密配合X金鑰加密,加密後的密文無法被X金鑰解密,只能被Y金鑰解密。反之,如果被Y加密的密文就只能被X解密。
通常我們會把兩個金鑰的其中一個公開讓大家都知道,另一個金鑰則是不公開只有自己知道。
可以有效解決前面提到對稱式金鑰加密的兩個問題。
傳遞訊息時,透過用對方的公鑰將要訊息加密,確保只有擁有私鑰的對方可以解密訊息。
透過這個模式我們可以安全的傳送對稱式加密要使用的金鑰。
所需的金鑰也一個只要一把公鑰一把私鑰,共計兩把。一百個人就只需要兩百把金鑰。
當A要傳送訊息給B時。 A在傳送訊息前先用自己的私鑰加密訊息,B在收到以後可以嘗試用A的公鑰解密這段訊息。
因為只有A有自己的私鑰,因此如果可以成功用B們的公鑰解密這個訊息,就表示這個訊息一定是由A加密送出的。
複習:什麼是雜湊函數?
數位簽章指的不是在平板上簽名這種電子簽名,而是結合非對稱式加密和雜湊函數,來達到確保資訊完整性和不可否認性的一個方法?
數位簽章簽署過程:
驗證簽章的過程:
一個簡單的數位簽章簽署流程就是這樣做到驗證身份、完整性和不可否認性的。
類似一種數位身分證,可以用來證明擁有者的身份。
數位憑證由一個可信任的機關所核發,通常上面包含以下訊息:
台灣內政部所發布的自然人憑證就是一種數位憑證。
我們之所以可以藉由自然人憑證在網路上進行很多政府電子化的服務,而不需要本人到現場驗證身份就是因為數位憑證能夠證明我們的身份,還能透過憑證內的公開金鑰確保安全的傳遞資訊。
數位憑證除了可以核發給人以外,也可以核發給組織或是網站。
我們在 EP19 中提到,瀏覽網頁時用來建立安全連線的 HTTPS 所使用的憑證,就是數位憑證。
當使用者造訪一個網站時,瀏覽器就會檢查這個網站所提供的憑證是不是正確可信的,來判斷連線是否安全。
管理和核發數位憑證的架構,目的是建立一套可信任機制,讓我們可以有效率的管理和核發數位憑證。
在網路上與其他人通訊時,我們無從得知對方是否被別人假冒,也不知道他的數位憑證能不能被信任,因此需要一個雙方共同信任的第三方機構。
PKI 藉由一些大家所共同信任的數位憑證認證機構 (Certificate Authority),來核發數位憑證。
信任鏈 Chain of Trust(以此網站為例):
信任 Baltimore CyberTrust 憑證的人就會相信他所頒發的 Cloudflare 憑證,並間接相信 Cloudflare 頒發的資安解壓縮網站憑證。
這些加密演算法背後都是一些複雜的數學,像是離散數學、橢圓曲線數學等等,因此這麼我們不做太多的介紹。
非對稱式加密因為演算法較複雜(與對稱式加密相比)因此在運算的速度上和所消耗的能量都比對稱式加密多上許多。 影響:
透過非對稱加密來進行簡單的身份驗證和交換金鑰,完成後,後續的加密就利用剛剛交換的金鑰配合對稱式加密來完成,如此一來不但能結合兩者的優點,也能同時最小化兩者的缺點。
EP19 提到的 HTTPS 連線,就是在透過數位憑證確認過身份後,利用憑證裡的公開金鑰決定並交換對稱式加密金鑰,完成後接下來瀏覽器與網頁傳輸的所有資訊都會由對稱式加密演算法來進行加密。