--- title: 基礎密碼學筆記 tags: Security disqus: hackmd Editor: roy.wang176@gmail.com --- # 基礎密碼學筆記 ## 前言 此篇依據下方參考網址的文章,以<u>**自己理解的方式筆記重點部分及增加圖文說明**</u>。該文章講解的非常詳細,且淺顯易懂,有興趣的朋友可以直接去閱讀。 ### 情境假設 ( 無加密 ) A 想要傳資訊給 B,在沒有加密的情況下,B 收到訊息後,便可以直接閱讀。 ![](https://i.imgur.com/8fLIDz7.png) 然而,沒有加密的訊息,如果被有心人擷取,他也可以輕鬆地獲取你完整的訊息內容。 ![](https://i.imgur.com/X9AHcOI.png) 因此,我們需要<u>**使用加密**</u>的方式,來傳輸資料,<u>**防止機敏資料被竊取**</u>。 密碼學中分為兩大主要研究領域:**對稱性加密( Symmetric algorithm )** 及 **非對稱性加密( Asymmetric algorithm )**。密碼學技術用於數據的保密性,並且是許多安全通信協議的基礎,例如SSL / TLS,SSH和IPSec等等。 ## 何謂對稱性加密? * 對稱性加密: Symmetric algorithm * 加密( encrypt )和 解密( decrypt )都是使用「**同一把鑰匙**」。 ### 情境假設 ( 對稱加密 ) 假如A想要通過加密的方式,傳輸一筆重要訊息給B,當B收到密文後,也可以自行解密來獲取A提供的訊息。如下圖: ![](https://i.imgur.com/MfEkSQ7.png) 那麼,實際執行的流程為: 1. 生成一組私鑰對( Key pair )。 2. A 將<u>**一把私鑰**</u>提供給 B。 3. A 使用私鑰將 明文( plaintext ) 加密成 密文( ciphertext )。 4. B 使用私鑰將密文解密成明文。 ## 何謂非對稱加密? - 非對稱性加密 ( Asymmetric algorithm ),也稱公開密鑰密碼學 ( Public-key cryptography)。 - 有兩把鑰匙,一把是公鑰( Public key ),一把是私鑰( Private key )。 - 私鑰需要自己保管好,公鑰可以提供給其他人。 - 可以「<u>**公鑰加密,私鑰解密**</u>」;也可以「<u>**私鑰加密,公鑰解密**</u>」。 ### 情境假設 ( 非對稱加密 ) A 想要傳加密訊息給 B,如下圖: ![](https://i.imgur.com/C78yc70.png) 那麼,實際執行的流程為: 1. A 和 B 各自建立一組公私鑰對。 2. A 將自己的公鑰交給 B;B 將自己的公鑰交給A。 3. A 使用B的公鑰加密訊息並傳密文給 B,B 使用自己的私鑰解密,反之亦然。 那如果 B 的公鑰大家都有,那該如何確認該訊息是由A發出的呢? 這邊就要使用到數位簽章( Digital Signature )的概念。 ## 何謂數位簽章? - 用於確定數位文件或資料的完整性、真實性和不可否認性。數位簽章通常用於確保數位文件<u>**沒有被篡改或偽造**</u>,並且是由<u>**特定的人來實體簽署或發布的**</u>。 - 原理是利用公開密鑰加密技術和數位證書技術,將文件或資料的雜湊值(hash value)加密後與簽署人的數位證書進行匹配,以確定文件的完整性和真實性。在這個過程中,只有簽署人持有相應的私有密鑰才能進行簽署,從而確保簽名的不可否認性。 ### 情境假設 ( 數位簽章 ) 簡單來說,數位簽章就是 A 在傳送訊息前,用 A 的私鑰加密,傳給 B。B 再用 A 的公鑰來看是不是真的是 A 簽名。 ![](https://i.imgur.com/uzxq7DL.png) ## 密鑰長度 - 密鑰的長度都是使用位元(bit)為單位。 - 密鑰的長度與安全級別相關。 - 對稱加密的密碼是隨機選擇,長度通常設為128或256位元。 - 非對稱加密的密碼長度通常設為2048~4096位元。 ## 總結 最後,我整理了對稱加密和非對稱加密的比較表格,如下: |名稱|對稱加密|非對稱加密| |--|--|--| |英文|Symmetric algorithm|Asymmetric algorithm| |私鑰|不可公開|不可公開| |公鑰|NA|需公開| |安全性|低|高| |金鑰傳遞|容易|難| |常見算法|DES,AES|RSA,ECC,DSA| |應用場景|儲存用戶名和密碼、Wifi數據|金融交易、SSH連線、區塊鍊| 下一章:[安全加密協定及憑證頒發機構筆記](https://hackmd.io/il9ImrjYRt641baduIN0XQ) ## 參考網址 [網路安全(1)](https://www.jyt0532.com/2017/04/13/simple-cryptography-en/) [Cryptography Digital signatures](https://www.tutorialspoint.com/cryptography/cryptography_digital_signatures.htm) [對稱加密vs非對稱加密](https://academy.binance.com/zt/articles/symmetric-vs-asymmetric-encryption) [Openssl Tutorail](http://www.cs.toronto.edu/~arnold/427/19s/427_19S/tool/ssl/notes.pdf)