Ⅰ pgp是什麼意思
PGP是一套用於消息加密、驗證的應用程序,採用IDEA的散列演算法作為加密與驗證之用。
PGP加密由一系列散列、數據壓縮、對稱密鑰加密,以及公鑰加密的演算法組合而成。每個步驟支持幾種演算法,可以選擇一個使用。每個公鑰均綁定唯一的用戶名和/或者E-mail地址。
加密的消息和加密的會話密鑰一起發送給接收方。PGP支持消息認證和完整性檢測。完整性檢測被用來檢查消息在傳輸過程中是否變更過,而消息認證則是被用來決定消息是否確由某特定的人或實體發出(即數字簽名驗證)。
在PGP中,這些特性默認是和消息加密同時開啟的,而且同樣可以被應用到明文的驗證。發送者只需使用PGP為消息創建一個數字簽名(簽名演算法採用RSA或DSA演算法)。具體步驟為:PGP以數據或信息創建一個散列(參見消息摘要),然後使用發送者的私鑰利用散列生成數字簽名。
Ⅱ PGP是什麼
PGP(Pretty Good Privacy),是一個基於RSA公匙加密體系的郵件加密軟體。可以用它對郵件保密以防止非授權者閱讀,它還能對郵件加上數字簽名從而使收信人可以確認郵件的發送者,並能確信郵件沒有被篡改。它可以可以提供一種安全的通訊方式,而事先並不需要任何保密的渠道用來傳遞密匙。它採用了一種RSA和傳統加密的雜合演算法,用於數字簽名的郵件文摘演算法,加密前壓縮等,還有一個良好的人機工程設計。它的功能強大,有很快的速度。而且它的源代碼是免費的。
實際上PGP的功能還包括: PGP可以用來加密文件,還可以用PGP代替UUencode 生成RADIX 64 格式(就是MIME 的 BASE 64格式)的編碼文件。
PGP 的創始人是美國的 Phil Zimmermann。他的創造性在於他把RSA公匙體系的方便和傳統加密體系的高速度結合起來,並且在數字簽名和密匙認證管理機制上有巧妙的設計。因此PGP成為幾乎最流行的公匙加密軟體包。
1.首先簡要介紹PGP加密系統的流程。
PGP加密系統是採用公開密鑰加密與傳統密鑰加密相結合的一種加密技術。它使用一對數學上相關的鑰匙,其中一個(公鑰)用來加密信息,另一個(私鑰)用來解密信息。
PGP採用的傳統加密技術部分所使用的密鑰稱為「會話密鑰」(sek)。每次使用時,PGP都隨機產生一個128位的IDEA會話密鑰,用來加密報文。公開密鑰加密技術中的公鑰和私鑰則用來加密會話密鑰,並通過它間接地保護報文內容。
PGP中的每個公鑰和私鑰都伴隨著一個密鑰證書。它一般包含以下內容:
密鑰內容(用長達百位的大數字表示的密鑰)
密鑰類型(表示該密鑰為公鑰還是私鑰)
密鑰長度(密鑰的長度,以二進制位表示)
密鑰編號(用以唯一標識該密鑰)
創建時間
用戶標識 (密鑰創建人的信息,如姓名、電子郵件等)
密鑰指紋(為128位的數字,是密鑰內容的提要表示密鑰唯一的特徵)
中介人簽名(中介人的數字簽名,聲明該密鑰及其所有者的真實性,包括中介人的密鑰編號和標識信息)
PGP把公鑰和私鑰存放在密鑰環(KEYR)文件中。PGP提供有效的演算法查找用戶需要的密鑰。
PGP在多處需要用到口令,它主要起到保護私鑰的作用。由於私鑰太長且無規律,所以難以記憶。PGP把它用口令加密後存入密鑰環,這樣用戶可以用易記的口令間接使用私鑰。
PGP的每個私鑰都由一個相應的口令加密。PGP主要在3處需要用戶輸入口令:
需要解開受到的加密信息時,PGP需要用戶輸入口令,取出私鑰解密信息
當用戶需要為文件或信息簽字時,用戶輸入口令,取出私鑰加密
對磁碟上的文件進行傳統加密時,需要用戶輸入口令
2.以上介紹了PGP的工作流程,下面將簡介與PGP相關的加密、解密方法以及PGP的密鑰管理機制。
PGP是一種供大眾使用的加密軟體。電子郵件通過開放的網路傳輸,網路上的其他人都可以監聽或者截取郵件,來獲得郵件的內容,因而郵件的安全問題就比較突出了。保護信息不被第三者獲得,這就需要加密技術。還有一個問題就是信息認證,如何讓收信人確信郵件沒有被第三者篡改,這就需要數字簽名技術。RSA公匙體系的特點使它非常適合用來滿足上述兩個要求:保密性(Privacy)和認證性(Authentication)。
RSA(Rivest-Shamir-Adleman)演算法是一種基於大數不可能質因數分解假設的公匙體系。簡單地說就是找兩個很大的質數,一個公開即公鑰,另一個不告訴任何人,即私鑰。這兩個密匙是互補的,就是說用公匙加密的密文可以用私匙解密,反過來也一樣。
假設甲要寄信給乙,他們互相知道對方的公匙。甲就用乙的公匙加密郵件寄出,乙收到後就可以用自己的私匙解密出甲的原文。由於沒別人知道乙的私匙,所以即使是甲本人也無法解密那封信,這就解決了信件保密的問題。另一方面由於每個人都知道乙的公匙,他們都可以給乙發信,那麼乙就無法確信是不是甲的來信。這時候就需要用數字簽名來認證。
在說明數字簽名前先要解釋一下什麼是「郵件文摘」(message digest)。郵件文摘就是對一封郵件用某種演算法算出一個最能體現這封郵件特徵的數來,一旦郵件有任何改變這個數都會變化,那麼這個數加上作者的名字(實際上在作者的密匙里)還有日期等等,就可以作為一個簽名了。PGP是用一個128位的二進制數作為「郵件文摘」的,用來產生它的演算法叫MD5(message digest 5)。 MD5是一種單向散列演算法,它不像CRC校驗碼,很難找到一份替代的郵件與原件具有同樣的MD5特徵值。
回到數字簽名上來,甲用自己的私匙將上述的128位的特徵值加密,附加在郵件後,再用乙的公匙將整個郵件加密。這樣這份密文被乙收到以後,乙用自己的私匙將郵件解密,得到甲的原文和簽名,乙的PGP也從原文計算出一個128位的特徵值來和用甲的公匙解密簽名所得到的數比較,如果符合就說明這份郵件確實是甲寄來的。這樣兩個安全性要求都得到了滿足。
PGP還可以只簽名而不加密,這適用於公開發表聲明時,聲明人為了證實自己的身份,可以用自己的私匙簽名。這樣就可以讓收件人能確認發信人的身份,也可以防止發信人抵賴自己的聲明。這一點在商業領域有很大的應用前途,它可以防止發信人抵賴和信件被途中篡改。
PGP用的實際上是RSA和傳統加密的雜合演算法。因為RSA演算法計算量極大在速度上不適合加密大量數據,PGP實際上用來加密的不是RSA本身,而是採用了一種叫IDEA的傳統加密演算法。傳統加密,一般說來說就是用一個密匙加密明文,然後用同樣的密匙解密。這種方法的代表是DES,也就是乘法加密,它的主要缺點就是密匙的傳遞渠道解決不了安全性問題,不適合網路環境郵件加密需要。IDEA的加(解)密速度比RSA快得多,所以實際上PGP是以一個隨機生成密匙(每次加密不同)用IDEA演算法對明文加密,然後用RSA演算法對該密匙加密。這樣收件人同樣是用RSA解密出這個隨機密匙,再用IDEA解密郵件本身。這樣的鏈式加密就做到了既有RSA體系的保密性,又有IDEA演算法的快捷性。PGP利用這種鏈式加密,既保證了保密性,又保證了加密的速度。
PGP最核心的功能是:文件加密、通信加密和數字簽名。下面將簡介一些PGP輔助功能,它們雖然不是整個加密系統的核心,但卻起到了協調各部分和方便用戶的作用。這兒主要介紹PGP的密鑰管理機制。
一個成熟的加密體系必然要有一個成熟的密匙管理機制配套。公匙體制的提出就是為了解決傳統加密體系的密匙分配過程難以保密的缺點。如果密匙是通過網路傳送,那麼網路上其他人就可以通過監聽得到。舉個例子:Novell Netware 的老版本中,用戶的密碼是以明文在線路中傳輸的,這樣監聽者輕易就獲得了他人的密碼。當然 Netware 4.1 中數據包頭的用戶密碼現在是加密的了。對PGP來說公匙本來就要公開,就沒有防監聽的問題。但公匙的發布中仍然存在安全性問題,例如公匙的被篡改(Public Key Tampering),這可能是公匙密碼體系中最大的漏洞。必須有一種機制保證用戶所得到的公鑰是正確的,而不是別人偽造的。下面舉一個例子來說明這個問題,以及如何正確地用PGP堵住這個漏洞。
假設Mike想給Alice發封信,那他必須有Alice的公匙。該用戶從BBS上下載了Alice的公匙,並用它加密了信件用BBS的Email功能發給了Alice。但是,另一個用戶叫Charlie的用戶潛入BBS,把他自己用Alice的名字生成的密匙對中的公匙替換了Alice的公匙,而參與通信的這兩個人都不知道。那麼Mike用來發信的公匙就不是Alice的而是Charlie的,一切看來都很正常。於是Charlie就可以用他手中的私匙來解密Mike給Alice的信,甚至他還可以用Alice真正的公匙來轉發Mike給Alice的信,這樣誰都不會起疑心,他如果想改動Mike給Alice的信也沒問題。甚至他還可以偽造Alice的簽名給Mike或其他人發信,因為這些用戶手中的公匙是偽造的,他們會以為真是Alice的來信。
防止這種情況出現的最好辦法是避免讓任何其他人有機會篡改公匙,比如直接從Alice手中得到她的公匙,然而這在很多情況下是比較困難的。PGP發展了一種公匙介紹機制來解決這個問題。舉例來說:如果Mike和Alice有一個共同的朋友David,而David知道他手中的Alice的公匙是正確的(關於如何認證公匙,PGP還有一種方法,後面會談到,這里假設David已經和Alice認證過她的公匙)。這樣David可以用他自己的私匙在Alice的公匙上簽名,表示他擔保這個公匙屬於Alice。當然Mike需要用David的公匙來校驗他給出的Alice的公匙,同樣David也可以向Alice認證Mike的公匙,這樣David就成為Mike和Alice之間的「介紹人」。這樣Alice或David就可以放心地把David簽過字的Alice的公匙上載到BBS上讓Mike去拿,沒人可能去篡改它而不被發現,即使是BBS的管理員。這就是從公共渠道傳遞公匙的安全手段。
那麼怎麼能安全地得到David的公匙呢,確實有可能Mike拿到的David的公匙也是假的,但這就要求這個偽造密鑰的人參與這整個過程,他必須對這三個人都很熟悉,還要策劃很久,這一般不可能。當然,PGP對這種可能也有預防的建議,那就是由一個大家普遍信任的人或機構擔當這個角色,即所謂的「密匙侍者」或「認證權威」(認證中心),每個由他簽字的公匙都被認為是真的,這樣大家只要有一份他的公匙就行了,認證這個人的公匙是方便的,因為他廣泛提供這個服務,假冒他的公匙是很極困難的,因為他的公匙流傳廣泛。這樣的「權威」適合由非個人控制組織或政府機構充當,現在已經有等級認證制度的機構存在。
對於那些非常分散的人們,PGP更贊成使用私人方式的密匙轉介方式,因為這樣有機的非官方途徑更能反映出人們自然的社會交往,而且人們也能自由地選擇信任的人來介紹。總之和不認識的人們之間的交往一樣。每個公匙有至少一個「用戶名」(User ID),最好再加上本人的Email地址,以免混淆。
3.下面,再介紹如何通過電話認證密匙。
每個密匙有它們自己的標識(keyID),keyID是一個八位十六進制數,兩個密匙具有相同keyID的可能性是幾十億分之一,而且PGP還提供了一種更可靠的標識密匙的方法:「密匙指紋」(key's fingerprint)。每個密匙對應一串數字(十六個兩位十六進制數),這個指紋重復的可能就更微乎其微了。而且任何人無法指定生成一個具有某個指紋的密匙,密匙是隨機生成的,從指紋也無法反推出密匙來。這樣當拿到某人的公匙後就可以和他在電話上核對這個指紋,從而認證他的公匙。如果無法直接和通信的另一方直接通電話,可以和公鑰介紹機制中的中間介紹人通電話認證該介紹人的公匙,從而通過介紹人認證了通信另一方的公匙,這就是直接認證和間接介紹的結合。
這樣又引出一種方法,就是把具有不同人簽名的自己的公匙收集在一起,發送到公共場合,這樣可以希望大部分人至少認識其中一個人,從而間接認證了你的公匙。同樣你簽了朋友的公匙後應該寄回給他,這樣就可以讓他可以通過你被你的其他朋友所認證。和現實社會中人們的交往一樣。PGP會自動為你找出你拿到的公匙中有哪些是你的朋友介紹來的,那些是你朋友的朋友介紹來的,哪些則是朋友的朋友的朋友介紹的……它會幫你把它們分為不同的信任級別,讓你參考決定對它們的信任程度。你可以指定某人有幾層轉介公匙的能力,這種能力是隨著認證的傳遞而遞減的。
轉介認證機制具有傳遞性,這是個有趣的問題。PGP的作者Phil Zimmermann說過一句話:「 信賴不具有傳遞性;我有個我相信決不撒謊的朋友。可是他是個認定總統決不撒謊的傻瓜,可很顯然我並不認為總統決不撒謊。」
上面所說的是關於公匙的安全性問題,這是PGP安全的核心。另外,和傳統單密匙體系一樣,私匙的保密也是決定性的。相對公匙而言,私匙不存在被篡改的問題,但存在泄露的問題。RSA的私匙是很長的一個數字,用戶不可能將它記住,PGP的辦法是讓用戶為隨機生成的RSA私匙指定一個口令(pass phase)。只有通過給出口令才能將私匙釋放出來使用,用口令加密私匙的方法保密程度和PGP本身是一樣的。所以私匙的安全性問題實際上首先是對用戶口令的保密。當然私匙文件本身失密也很危險,因為破譯者所需要的只是用窮舉法(強力攻擊)試探出口令了,雖說很困難但畢竟是損失了一層安全性。需要說明的是:最好不要把私鑰寫在紙上或者某一文件里,因為這樣很容易被別人得到在這里。
PGP在安全性問題上的審慎考慮體現在PGP的各個環節。比如每次加密的實際密匙是個隨機數,大家都知道計算機是無法產生真正的隨機數的。PGP程序對隨機數的產生是很審慎的,關鍵的隨機數像RSA密匙的產生是從用戶敲鍵盤的時間間隔上取得隨機數種子的。對於磁碟上的 randseed.bin 文件是採用和郵件同樣強度的加密的。這有效地防止了他人從randseed.bin文件中分析出加密實際密匙的規律來。
4.最後提一下PGP的加密前預壓縮處理,PGP內核使用PKZIP演算法來壓縮加密前的明文。
一方面對電子郵件而言,壓縮後加密再經過7bits編碼密文有可能比明文更短,這就節省了網路傳輸的時間。另一方面,明文經過壓縮,實際上相當於經過一次變換,信息更加雜亂無章,對明文攻擊的抵禦能力更強。PKZIP演算法是一個公認的壓縮率和壓縮速度都相當好的壓縮演算法。在PGP中使用的是PKZIP 2.0版本兼容的演算法。
5.參考書目:
Philip Zimmermann : 「PGP User's Guide Volume I : Essential Topics」
NAI
Ⅲ 誰知道加密軟體PGP的加密原理是什麼
PGP是一個基於RSA公匙加密體系的郵件加密軟體。可以用它對你的郵件保密以防止非授權者閱讀,它還能對你的郵件加上數字簽名從而使收信人可以確信郵件是你發來的。它讓你可以安全地和你從未見過的人們通訊,事先並不需要任何保密的渠道用來傳遞密匙。它採用了:審慎的密匙管理,一種RSA和傳統加密的雜合演算法,用於數字簽名的郵件文摘演算法,加密前壓縮等,還有一個良好的人機工程設計。它的功能強大有很快的速度。而且它的源代碼是免費的。
實際上PGP的功能還不止上面說的:;PGP可以用來加密文件,還可以用PGP代替UUencode;生成;RADIX;64;格式(就是MIME;的;BASE;64格式)的編碼文件。
PGP;的創始人是美國的;Phil;Zimmermann。他的創造性在於他把RSA公匙體系的方便和傳統加密體系的高速度結合起來,並且在數字簽名和密匙認證管理機制上有巧妙的設計。因此PGP成為幾乎最流行的公匙加密軟體包。
PGP是一種供大眾使用的加密軟體。加密是為了安全,私密權是一種基本人權。在現代社會里,電子郵件和網路上的文件傳輸已經成為生活的一部分。郵件的安全問題就日益突出了,大家都知道在Internet上傳輸的數據是不加密的。如果你自己不保護自己的信息,第三者就會輕易獲得你的隱秘。;還有一個問題就是信息認證,如何讓收信人確信郵件沒有被第三者篡改,就需要數字簽名技術。RSA公匙體系的特點使它非常適合用來滿足上述兩個要求:
保密性(Privacy)和認證性(Authentication)。
RSA(Rivest-Shamir-Adleman)演算法是一種基於大數不可能質因數分解假設的公匙體系。簡單地說就是找兩個很大的質數,一個公開給世界,一個不告訴任何人。一個稱為「公匙」,另一個叫「私匙」(Public;key;&;Secretkey;or;Private;key)。這兩個密匙是互補的,就是說用公匙加密的密文可以用私匙解密,反過來也一樣。假設甲要寄信給乙,他們互相知道對方的公匙。甲就用乙的公匙加密郵件寄出,乙收到後就可以用自己的私匙解密出甲的原文。由於沒別人知道乙的私匙所以即使是甲本人也無法解密那封信,這就解決了信件保密的問題。另一方面由於每個人都知道乙的公匙,他們都可以給乙發信,那麼乙就無法確信是不是甲的來信。認證的問題就出現了,這時候數字簽名就有用了。
在說明數字簽名前先要解釋一下什麼是「郵件文摘」(message;digest),單地講就是對一封郵件用某種演算法算出一個能體現這封郵件「精華」的數來,一旦郵件有任何改變這個數都會變化,那麼這個數加上作者的名字(實際上在作者的密匙里)還有日期等等,就可以作為一個簽名了。確切地說PGP是用一個128位的二進制數作為「郵件文摘」的,用來產生它的演算法叫MD5(message;digest;5),MD5的提出者是Ron;Rivest,PGP中使用的代碼是由Colin;Plumb編寫的,MD5本身是公用軟體。所以PGP的法律條款中沒有提到它。MD5是一種單向散列演算法,它不像CRC校驗碼,很難找到一份替代的郵件而與原件具有一樣的「精華」。
回到數字簽名上來,甲用自己的私匙將上述的128位的「精華」加密,附加在郵件上,再用乙的公匙將整個郵件加密。這樣這份密文被乙收到以後,乙用自己的私匙將郵件解密,得到甲的原文和簽名,乙的PGP也從原文計算出一個128位的 「精華」來再用甲的公匙解密簽名得到的數比較,如果符合就說明這份郵件確實是甲寄來的。這樣兩個要求都得到了滿足。
PGP還可以只簽名而不加密,這適用於公開發表聲明時,聲明人為了證實自己的身份(在網路上只能如此了),可以用自己的私匙簽名。這樣就可以讓收件人能確認發信人的身份,也可以防止發信人抵賴自己的聲明。這一點在商業領域有很大的應用前途,它可以防止發信人抵賴和信件被途中篡改。
那麼為什麼說PGP用的是RSA和傳統加密的雜合演算法呢?因為RSA演算法計算量極大在速度上不適合加密大量數據,所以PGP實際上用來加密的不是RSA本身,而是採用了一種叫IDEA的傳統加密演算法。我先解釋一下什麼叫傳統加密,簡單地說就是用一個密匙加密明文,然後用同樣的密匙解密。這種方法的代表是DES(US;Fed eral;DataEncryption;Standard),也就是乘法加密,它的主要缺點就是密匙的傳遞渠道解決不了安全性問題,不適合網路環境郵件加密需要。
IDEA;是一個有專利的演算法,專利持有者是ETH和一個瑞士公司:Ascom-Tech;AG。
Ⅳ PGP&GPG key是什麼,有什麼用
GPG和PGP是兩種加密軟體,你可以通過公鑰在網上安全的傳播自己的文件。我前些日子使用了GPG,感覺很方便,使用中也遇到了一些問題。所以把我的使用經過寫出來,目的是讓初次使用GPG的朋友少走彎路。 先說說GPG的獲得吧,GPG是開放源代碼的軟體,是完全免費的,大家可以到www.gnupg.org下載。如果使用 Mandrakelinux或Debian發行版可以直接下載。我使用的是Mandrakelinux,只要在終端中輸入urpmi gpgp就可以下載和安裝。 安裝好後我們在終端下輸入:gpg --help 可以看到GPG的版本信息和幫助。這表示GPG已經裝好了。 下面我們來生成密鑰,鍵入:gpg --gen-key 這時將出現幾個選項,需要我們來選擇: gpg (GnuPG) 1.4.0; Copyright (C) 2004 Free Software Foundation, Inc. This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the file COPYING for details. 請選擇您要使用的密鑰種類: (1) DSA 和 ElGamal (默認) (2) DSA (僅用於簽字) (5) RSA (僅用於簽字) 您的選擇? 這個我們一般選擇1,gpg默認的也是1。 SA keypair will have 1024 bits. ELG-E keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 這個是密鑰的長度,一般輸入1024 請設定這把密鑰的有效期限。 0 = 密鑰永不過期 = 密鑰在 n 天後過期 w = 密鑰在 n 周後過期 m = 密鑰在 n 月後過期 y = 密鑰在 n 年後過期 密鑰的有效期限是?(0) 這個是指定密鑰的有效期,你可以自己選擇。 您需要一個用戶標識來辨識您的密鑰;本軟體會用真實姓名、注釋和電子郵件地址組合 成用戶標識,如下所示: 「Heinrich Heine (Der Dichter) 」 真實姓名: 電子郵件地址: 注釋: 這個是用戶標識,你可以輸入自己常用的email地址。 請輸入密碼: 這個需要為你的私鑰指定一個保護密碼,這個一定要保護好,要不然你的加密文件就會被別人輕易解開了。 好了現在GPG已經產生了你的公鑰和私鑰。 現在說說GPG能為我們做什麼,如果你想給你的朋友發送一篇論文,而不希望第三人看到。你可以這樣操作。 在終端輸入:gpg --encrypt -r Bob [文件名] Bob表示為這個收件人簽字及加密 〔文件名〕為需要加密的文件名。 然後你可以把你的公鑰發給你的朋友。導出公鑰的方法是:gpg --export>name.asc 你的朋友只要吧你的公鑰導入他的GPG,就可以解密你發給他的文件了: 解密方法是 gpg --decrypt [加過密的文件]>〔已經解密的文件〕 >為重定向符,意思是把gpg --decrypt [加過密的文件]的結果保存到〔已經解密的文件〕文件中,這要就可以看到你發的原文了。