前言#
最近在浏览博客的時候發現博主的 PGP Key 頁面,雖然之前知道是用於郵件通信加密的,但是具體原理及使用卻不太清楚,所以找了時間查閱了相關資料,整理一下 PGP 加密的一些內容。
PGP 定義#
Pretty Good Privacy(PGP)是一個加密程式,為資料通信提供加密隱私和身份驗證。PGP 用於對文本、電子郵件、文件、目錄和整個磁碟分區進行簽名、加密和解密,並提高電子郵件通信的安全性。PGP 加密使用雜湊,資料壓縮,對稱金鑰加密,最後是公鑰加密的串行組合。其中最關鍵的是兩種形式的加密的組合:對稱金鑰加密 (Symmetric Cryptography) 和非對稱金鑰加密 (Asymmetric cryptography)。
PGP 工作原理#
在實現 PGP 加密的過程中,首先使用對稱金鑰加密演算法對原始資料進行加密。對稱金鑰加密演算法包括 DES、AES、Blowfish 等,這些演算法能夠快速地加密和解密資料,但是需要發送方和接收方之間共享金鑰。
為了避免在網路上傳輸金鑰,PGP 使用了公鑰加密演算法。公鑰加密演算法是一種使用不同的金鑰加密和解密的演算法,其中公鑰用於加密,而私鑰用於解密。公鑰加密演算法包括 RSA、DSA 等,這些演算法具有極高的安全性,但是加密和解密速度比對稱金鑰加密演算法慢得多。
PGP 將對稱金鑰加密,並使用接收方的公鑰進行加密。這種方式可以保證金鑰的安全性,同時可以確保只有接收方可以解密對稱金鑰,從而保護了資料的機密性。接收方使用自己的私鑰對加密的對稱金鑰進行解密,然後使用對稱金鑰對資料進行解密。這種方式既可以保護資料的安全性,也可以提高加解密的速度。
PGP 使用兩種類型的加密演算法來保護資料:對稱金鑰加密和公鑰加密。對稱金鑰加密是一種使用相同金鑰加密和解密的演算法,因此在加密和解密之間需要共享金鑰。而公鑰加密則是一種使用不同的金鑰加密和解密的演算法,其中公鑰用於加密,而私鑰用於解密。下面我將簡單介紹一下這兩種演算法的工作原理。
對稱金鑰加密#
對稱金鑰加密是一種使用相同金鑰加密和解密的演算法,因此在加密和解密之間需要共享金鑰。對稱金鑰加密的過程如下:
- 發送方選擇一個加密金鑰,並使用它將原始資料加密。
- 加密後的資料被發送到接收方。
- 接收方使用相同的金鑰將加密的資料解密。
儘管對稱金鑰加密非常高效,但它有一個明顯的缺點,即需要在發送方和接收方之間共享金鑰。如果這個金鑰被黑客或其他人獲取,資料將無法得到保護。為了解決這個問題,PGP 使用了另一種加密演算法:公鑰加密。
公鑰加密#
公鑰加密是一種使用不同的金鑰加密和解密的演算法,其中公鑰用於加密,而私鑰用於解密。公鑰加密的過程如下:
- 發送方獲取接收方的公鑰,並使用它將對稱金鑰加密。
- 加密後的對稱金鑰和加密後的資料被發送到接收方。
- 接收方使用自己的私鑰將加密的對稱金鑰解密。
- 接收方使用解密後的對稱金鑰將加密的資料解密。
公鑰加密允許發送方使用接收方的公鑰加密資料,而無需共享對稱金鑰。這樣,即使黑客獲得了加密後的資料,也無法使用它,因為他們沒有接收方的私鑰來解密對稱金鑰。
PGP 示例#
我用常用的加密電子郵件來舉個例子,具體的工作流程是:
用戶 A 要給用戶 B 發送郵件。
- 用戶 B 生成一對金鑰(公鑰和私鑰),將公鑰發送給用戶 A。
- PGP 軟體使用演算法生成一個隨機的會話金鑰,這個金鑰是一個很大的數字,而且只使用一次。
- 用戶 A 用剛剛生成的金鑰,加密郵件,並使用用戶 B 的公鑰對該金鑰進行加密。
- 最後,用戶 A 將加密的郵件及金鑰發送給用戶 B,用戶 B 使用自己的私鑰進行解密,得到會話金鑰,進而可以解密完整的郵件。
PGP 加密用途#
PGP 有三個主要用途:
- 發送和接收加密電子郵件。
- 驗證向您發送此訊息的人員的身份,即數字簽名驗證。
- 加密資料。
其中,發送安全電子郵件 - 是迄今為止 PGP 的主要應用。數字簽名是一種基於公鑰加密的技術,用於證明訊息的發送者身份和訊息完整性,以及防止訊息被篡改。發送方使用自己的私鑰對訊息的摘要進行加密,生成數字簽名。接收方使用發送方的公鑰對數字簽名進行解密,並生成訊息的摘要,比對兩個摘要是否一致,來驗證訊息的完整性和身份。如果數字簽名驗證失敗,則說明訊息可能被篡改或者來自偽造的發送方。
總結#
PGP 使用對稱金鑰加密演算法保護資料機密性,使用公鑰加密演算法保護對稱金鑰的安全性,使用數字簽名技術驗證訊息的完整性和身份。這種結合了對稱金鑰和公鑰加密的方法,可以在安全性和效率之間取得平衡。PGP 已經成為一種被廣泛應用的資料加密和數字簽名的標準,保護了用戶的隱私和安全。
參考#
Pretty Good Privacy - Wikipedia
What is PGP Encryption and How Does It Work? | Varonis
Public Key Cryptography Simply Explained | Hacker Noon
歡迎訪問我的個人博客:方寸之間