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

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

密碼學(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演算法)等更細節加解密原理希望之後能整理更完整的內容跟大家分享!

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store