iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
自我挑戰組

網路通訊輕鬆聊系列 第 29

初探網路安全(四):加密演算法,何謂對稱及非對稱式加密?

在前面聊到 HTTPS 時,我們有提到透過加密,可以讓你傳輸的資料不會被「中間人」所竊取。

但這會有一個問題產生,如果加密像是用一把鑰匙將裝滿資料的盒子鎖住,再用同一把鑰匙解開的話,我們要怎麼把這把鑰匙交給對方呢?在傳遞的過程中不也會有「中間人」可以偷走嗎?

回答這個問題之前,我們得先了解兩種類型的加密演算法,一種是「對稱式」加密,另外一種當然就是「非對稱式」加密。

對稱式加密

這種用同一把鎖「加密」及「解密」的演算法就稱做「對稱式加密」,例如凱撒密碼,就是典型的對稱式加密。

我們把要傳的資料稱做「明文」,被加密過的資料稱做「密文」,凱撒密碼的原理就是將明文的字母位移某個數目,例如往右位移 3,則 A 會變成 DB 會變成 E,而 Z 會繞回來變成 C,以此類推。

假如我們要加密一串明文 Hello,位移量設為 3 的話,輸出的密文就會是 Khoor,一串大家看不懂的文字。

凱撒密碼
*凱撒密碼

其中 3 這個位移量就是我們所謂的鑰匙(密鑰)。

假如我們兩個之間已經先見過面了,互相確認過我們加解密的密鑰是 3,這樣我只要傳出一個加密後的文字 Khoor,你再用密鑰 3 將密文反過來運算(解密),就能得到明文 Hello 了。現實中的對稱式加密算法當然不會像凱撒密碼這麼簡單,但原理是類似的,都是通過同一把鑰匙將盒子鎖上,以及解鎖。

不過,我想你也發現了這種「對稱式」加密的最大缺陷,便是我們兩個要事先溝通密鑰為何,這在網路世界中基本上就不可行了,透過 TCP/IP 體系的溝通沒辦法做到「私下」,無論如何兩者間傳遞的訊息都需要其它節點幫忙轉送封包。

那這可怎麼辦?還好有「非對稱式」的發明,完美的解決這個難題。

非對稱式加密

這種聰明的做法是將鑰匙分成「公鑰」和「私鑰」兩把,用公鑰加密的資料,只能用私鑰解密;用私鑰加密的資料,只能用公鑰解密。

為何要用公與私呢?這是因為公鑰便是公開給大家的,用途就是讓別人用這把公開的鑰匙加密資料,這樣只有我自己可以解密,其它人都無法。

Bob 用 Alice 的公鑰加密,只能被 Alice 的私鑰解開
*Bob 用 Alice 的公鑰加密,只能被 Alice 的私鑰解開

HTTPS 是透過哪種加密演算法呢?兩種演算法的優缺點

有了非對稱式加密這種演算法,居然就能在公開的情況下設定個人秘密,那麼我們上網時所使用的 HTTPS 是否都是用非對稱式加密來保護我們的資料?更進一步來說,是否就可以拋棄對稱式加密了?

事實上,HTTPS 兩種都有用!

當初步的連線建立時,會透過非對稱式加密來傳輸資料,至於是什麼資料呢?其實是之後再加密其它資料所用的「對稱式加密密鑰」。

這是由於相較於「對稱式加密」而言,「非對稱式」加密需要的運算量更大,也就意味著吃的資源更多,而且速度可能更慢。如果要長期的交換資料,每次都用非對稱式加密來處理資料,效能遠不如對稱式加密來的好。

參考資料

  1. Wiki - 凱撒密碼
  2. 改變世界的九大演算法

上一篇
初探網路安全(三):怎麼取一個「好」的密碼?在不同網站想密碼的策略
下一篇
初探網路安全(五):數位憑證,怎麼防止假冒事件?
系列文
網路通訊輕鬆聊30

尚未有邦友留言

立即登入留言