PGP

PGP加密如何工作

PGP加密由一系列雜湊、資料壓縮、對稱金鑰加密，以及公鑰加密的演算法組合而成。每個步驟均支援幾種演算法，用戶可以選擇一個使用。每個公鑰均繫結一個用戶名稱和/或者E-mail位址。該系統的最初版本通常稱為可信網或X.509系統；X.509系統使用的是基於數位憑證認證機構的分層方案，該方案後來被加入到PGP的實現中。目前的PGP加密版本通過一個自動金鑰管理伺服器來進行金鑰的可靠存放。

相容性

隨著PGP的發展，支援更新功能和演算法的版本能夠建立舊PGP系統無法解密的加密訊息，即使使用有效的私鑰也是如此。因此，PGP通訊中的夥伴必須了解彼此的能力或至少就PGP設定達成一致。

機密性

PGP可用於傳送機密訊息。為此，PGP結合了對稱金鑰加密和公鑰加密。PGP使用對稱加密演算法對訊息進行加密，該演算法需要對稱金鑰。每個對稱金鑰也稱為對談金鑰僅被使用一次。訊息及其對談金鑰被傳送到接收方。 對談金鑰必須被傳送給接收方以解密訊息，但是為了在傳輸過程中保護它，它使用接收方的公鑰進行加密。只有屬於接收方的私鑰才能解密對談金鑰。

數位簽章

PGP支援訊息身分認證和完整性檢查。後者被用來檢查訊息在傳輸過程中是否被修改過（即驗證訊息完整性），而訊息身分認證則是被用來決定訊息是否由聲稱為傳送者的個人或實體發出（即數位簽章驗證）。由於訊息的內容是加密的，因此更改任何訊息中的內容都將導緻密鑰解密失敗。在PGP中，這些特性預設是和訊息加密同時開啟的，而且同樣可以被應用到明文的驗證。傳送者只需使用PGP為訊息建立一個數位簽章（簽章演算法採用RSA或DSA演算法）。具體步驟為：PGP以資料或資訊建立一個雜湊（參見訊息摘要），然後使用傳送者的私鑰利用雜湊生成數位簽章。

信賴網路

不管是在加密訊息時還是在驗證簽章時，都需要注意用來傳送訊息的公鑰是否確實屬於期望的接收者。簡單的從某個位置下載一個公鑰是沒有保障的，故意（或偶然）的假冒是有可能發生的。PGP從它的第一個版本起，在'身分憑證'中發布用戶公鑰，身分憑證也是以加密方式構造的，所以任何的篡改或意外的變動都可以被迅速的檢測出來。但是僅僅有一個任何對於憑證的修改都會被檢測出來的機制不夠的，這樣的檢測機制只能在憑證建立之後用於避免篡改，而不是建立之前。用戶還必須用某種形式確保憑證中的公鑰真正的屬於特定的人/實體。從第一個發行版開始，PGP產品就包含一個內部的'審查方案'來協助它，一個被叫做信賴網路（Web of Trust）的信任模型。對於一個給定的公鑰（具體來說就是一個用戶名稱到對應其金鑰的繫結資訊）可以被第三方用戶數位簽章，來證明某人（實指用戶名稱）和一個金鑰的關聯，而該簽章中包含對該關聯不同程度的信任度。雖然有許多程式都會讀寫這個資訊，而只有少數會通過信任度來決定是否信任一個金鑰。
信賴網路協定（Trusted-Web Protocol）在1992年的PGP 2.0手冊中被菲利普·齊默曼（Philip R. Zimmermann）首次提及並描述為：
隨著時間的推移，您將積累來自其他人的金鑰，您可能希望將其指定為可信賴的介紹人。每個人都會選擇自己值得信賴的介紹人。每個人都會逐漸積累並用他們的鑰匙分發來自其他人的一系列認證簽章，期望任何接收它的人都會至少信任一個或兩個簽章。這將形成一個針對所有公鑰的容錯信任網。
信賴網路機制比S/MIME方案的集中管理的公鑰基礎設施有優勢，但是沒有被網路普通大眾普遍採用，一般只在Unix-like的愛好者、開源軟體界、和對隱私特別注意而且有電腦知識的人群之間使用。如何使一般用戶容易並且樂意使用、接收憑證然後手動的驗證它們的有效性，這些潛在的推廣阻礙目前還沒有滿意的解決方案。

憑證

在最近的OpenPGP規範里，信任簽章可被用於支援受信任的憑證頒發機構，一個信任簽章表示公鑰屬於其聲明的所有者，並且公鑰的所有者簽署的下一級公鑰也是可信的。
零級簽章與信賴網路簽章相當，因為只有其公鑰的有效性得到認證。一級簽章類似於憑證頒發機構，因為擁有一級公鑰者能夠發出無限數量的零級簽章。 二級簽章非常類似於用戶在使用預設憑證頒發機構列表時必須依賴的信任假設（如Web瀏覽器中包含的那些）;它允許金鑰的所有者製作其他公鑰憑證頒發機構。
所有版本的PGP都包含一種取消（「復原」）憑證的方法。如果該用戶的私鑰遺失或者被破解則他必須採用這種取消憑證的方法以繼續保證通訊的安全性。這種方式基本等同於集中式PKI方案的憑證復原列表。最新的的PGP版本也支援設定憑證的自動過期日期。
並不僅是PGP有如何正確判斷特定公鑰屬於特定的用戶的問題。所有採用公鑰/私鑰加密的加密系統都有這個問題，並且目前並沒有令人滿意的解決方案。最初的PGP方案至少可以讓用戶選擇是否使用其背書/審批系統，而對於其他PKI方案，它們要求用戶必須採信所有被中央憑證頒發機構證實的憑證。

早期歷史

菲利普·齊默曼（Philip R. Zimmermann）在1991年創造了第一個版本的PGP，其名稱「Pretty Good Privacy」的靈感來自於一個名為「Ralph's Pretty Good Grocery」的雜貨店——電台主播Garrison Keillor虛構出來的一個名為Lake Wobegon的城市的一個雜貨店。
軟體第一個版本包含一個齊默曼自己設計的對稱金鑰演算法，與周六夜現場的一個小品BassOmatic同名。作為一個老牌的反核能活躍分子，齊默曼為了讓所有有相似傾向的人們可以安全的使用BBS並且安全儲存訊息和檔案而創造了PGP加密。在非商業用途上是不需要授權的，無須任何費用，並且在所有的發行中附帶了完整的原始碼。
在2001年6月5號發表的一篇標題為"PGP 10周年" 的文章中，齊默曼描述了他最初開發PGP時的情景：
1991年的某天，我把PGP的第一版發給我幾個朋友，以便上傳到網際網路。我最先發給Allan Hoeltje，他把這個程式發到了Peacenet，一個針對草根政治組織--特別是「和平運動」--的ISP。當時全球政治活躍分子都能存取到Peacenet。然後我又把它上傳給了Kelly Goen，他接著就把原始碼轉發到了一個專門分發原始碼的Usenet新聞群組。基於我的請求，他把該Usenet權限改為了「僅限美國」。Kelly還把PGP傳到了（美國）國內很多BBS上面。我記不太清剛開始在網上貼是6月5號還是6號。
說出來嚇人，1991年的時候，我對Usenet新聞群組確是知之甚少。我並不知道那個「僅限美國」的標籤只是個「建議」作用，基本上對貼子的傳播（範圍）毫無影響。當時，我以為這個標籤會控制這個貼文的傳播範圍。當時我不知道如何在新聞群組發貼，甚至不明白新聞群組究竟是什麼。
PGP在網際網路上傳播開來，並且在這個世界上獲得了非常多的擁護者。PGP用戶和支持者也包括在極權主義國家持不同政見的人們（一些給齊默曼的感人信件被發表了，其中一些在美國國會之前被包括到證據中）。在世界其它地方的自由意志主義支持者（參考齊默曼在各個聽政會上發表的證據），以及「自由通訊」激進主義分子，他們稱他們自己為加密愛好者，進行宣傳和分發。

刑事偵察

在發行後不久，PGP加密走出了美國，在1993年二月，齊默爾曼變成了美國政府針對「沒有授權的軍需品出口」犯罪調查的正式目標。根據美國出口管理法案中的定義，加密系統使用大於40位的金鑰將被認為是軍需品。PGP從沒有使用小於128位元的金鑰，因此在那時被如此認定。如果被判有罪，這將會是嚴重的罪行。幾年後，對齊默爾曼的調查未經備案即被關閉，也沒有提起針對他本人或其他任何人的刑事指控。
齊默曼使用了一種富有想像力的方法來對抗這一規定。他將PGP的全套原始碼出版成一本書，由MIT出版社發行，受到了廣泛歡迎。任何想要構建自己的PGP版本的人只需買下這本60美元的書，切掉封面，分離頁面，然後使用OCR（文字掃描辨識）程式進行掃描和文字辨識（或者直接輸入），生成一系列的原始碼文字文件。接下來便可以使用自由分發的GCC來編譯程式。PGP就是這樣在全世界變得可用。聲明的原則很簡單：對軍需品——槍枝、炸藥、飛機和軟體的出口是被限制的，然而書本出口受到第一修正案（言論自由部分）的保護。這個問題從未再在法庭中檢查過。

商業應用

PGP一般在企業資源規劃（即ERP）軟體連接到銀行系統時使用，防止資訊在傳輸過程中被刪改或盜取，從而減少商業秘密泄露和遭遇詐騙的風險。

OpenPGP

1997年7月，PGP Inc.與齊默爾曼同意IETF制定一項公開的網際網路標準，稱作OpenPGP，任何支援這一標準的程式也被允許稱作OpenPGP。
許多電子郵件系統提供了OpenPGP相容的安全性，由RFC 3156來描述。2007年11月發布的規範RFC 4880作為RFC 2440的替代版，指出一套演算法，包括非對稱的ElGamal加密演算法, Digital Signature Algorithm, 三重資料加密演算法以及SHA-1. 標準還建議使用PKCS #1 v1.5 描述的RSA加密演算法用作加密與簽章，以及AES-128, CAST-128，IDEA等對稱加密演算法。許多其他加密演算法也被支援。 2009年發布的RFC 5581支援Camellia加密。 基於橢圓曲線密碼學 (ECDSA, ECDH)的RFC 6637發布於2012年。支援EdDSA被2014年發布的標準支援。 draft-koch-eddsa-for-openpgp-00
自由軟體基金會開發的OpenPGP程式叫做GnuPG，並有多個圖形化使用者介面版本的軟體實現，如KGPG, Seahorse, MacGPG. 也有一些商用OpenPGP軟體。
使用JavaScript編寫的開源庫OpenPGPjs,用於網頁程式，如ProtonMail, Mailfence, GlobaLeaks, and Mailvelope.
iOS或Android平台上的OpenPGP應用程式有iPGMail ，OpenKeychain。