基礎密碼學(對稱式與非對稱式加密技術)

現代密碼學泛指透過數學演算法與電腦科學對資料(明文)進行加密和解密的科學。

River Chan
Jun 4, 2018 · 4 min read

密碼學(Cryptography)必須包含:
•機密性(Confidentiality):確保訊息只有被授權者才能取得
•完整性(Integrity):偵測訊息是否遭受竄改
•身分認證(Authentication):傳送方與接受方需驗證識別
•不可否認性(Non-Reputation):提供訊息傳送方與接受方的交易證明

在基礎密碼學中,有兩種加解密方式,分別式「對稱式加密(Symmetric Encryption)」與「非對稱式加密(Asymmetric Encryption)」。對稱式加密就是傳送方與接收方的加解密皆使用同一把密鑰,所以只要雙方都擁有這把鑰匙,當傳送方傳資料時,使用這把鑰匙加密,接收方收到訊息後,再用同一把鑰匙解密,就能解開訊息了,運作原理如下圖所示:

對稱式加密運作原理 |資料來源:自行整理

但對稱式加密最大的弱點是,要是這把鑰匙在第一次傳送時,被中間人攔截且複製,再原封不動傳給接收方,那之後所有攔截到的加密訊息,都能被輕易破解,因此就需要更進階的非對稱式加密技術去解決這個bug。


非對稱式加密就是每個使用者都擁有一對金鑰:公開金鑰(Public key)及私密金鑰(Private key),公開金鑰能被廣泛的發佈與流傳,而私密金鑰則必須被妥善的保存;當訊息由其中一把金鑰加密後,就必須用另一把金鑰解密,加解密的鑰匙要是完整一對(pair)的,所以可以是公鑰加密私鑰解密,也可以是私鑰加密公鑰解密,沒有一定。運作原理是傳送方與接收方在傳送之前,先把彼此的公鑰傳給對方,當傳送方要傳送時,就用接收方的公鑰將訊息加密,接收方收到加密訊息後,再用自己的密鑰解開,這樣即使有心人拿到公鑰,只要沒拿到接收方的私鑰,也還是無法解密訊息。

但這還是有個問題,就是接收方要如何確認訊息真的是由傳送方傳的呢?假設有人在網路上找到了接收方的公鑰,假造一封有病毒的訊息,再用接收方公鑰加密傳過去,這樣接收方一打開不就傻傻中計了嗎?!

這時就需要數位簽章(Digital Signature)的Double Confirm了,也就是傳送方除了使用接收方的公鑰加密外,也使用自己的私鑰對該封加密訊息的Hash簽名(Hash技術在此篇中先不細談,想成就是對該封訊息蓋上寄件者指印就好了),這樣當接收方收到時,除了要使用接收方本身的私鑰解密,也需要用寄件者的公鑰來對簽章作二次驗證,確認真的是由正確的傳送者傳來的(能想成核對寄件者指紋無誤),非對稱式加密運作原理如下:

非對稱式加密運作原理 |資料來源: 自行整理

簡單總結複習一下概念:
Q:我要傳一個訊息給小明,要怎麼只讓小明看到,且讓他確認該封訊息就是我傳給他的呢?

Ans:一開始我跟小明先交換公開金鑰(這樣我們都有對方的金鑰,遇到非對稱式問題,先以這當第一步思考比較簡單),然後我用小明的公鑰把訊息加密,再用我自己的私鑰對該封訊息簽名(數位簽章),小明收到後,先用我的公鑰確認這個簽名是我的沒錯,再用他的私鑰解開內容,便完成了訊息只有小明能看到,且確認是我本人寄給他的雙重保障!!

這篇僅介紹最初階的對稱/非對稱概念,其餘如雜湊函數(MD5、SHA-1)、對稱式加密(DES/Triple DES、AES)、非對稱式加密(RSA演算法)等更細節加解密原理希望之後能整理更完整的內容跟大家分享!

River Chan

Written by

目前在多倫多gap year中,出走前經歷:軟體工程師|開源軟體工程師|專案經理。Worrying about the future is not helpful. If you are worrying tomorrow, you’ll lose today.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade