使用開(kāi)源PGP技術(shù)實(shí)現(xiàn)Solaris 10下的加密解密(圖)
互聯(lián)網(wǎng) 發(fā)布時(shí)間:2008-10-08 19:02:37 作者:佚名
我要評(píng)論

一、PGP(Pretty Good Privacy)技術(shù)簡(jiǎn)介
1、PGP簡(jiǎn)介
PGP技術(shù)是一個(gè)基于非對(duì)稱(chēng)加密算法RSA公鑰體系的郵件加密技術(shù),也是一種操作簡(jiǎn)單、使用方便、普及程度較高的加密軟件。PGP技術(shù)不但可以對(duì)電子郵件加密,防止非授權(quán)者閱讀信件;還能對(duì)電子郵件附加數(shù)字簽名
一、PGP(Pretty Good Privacy)技術(shù)簡(jiǎn)介
1、PGP簡(jiǎn)介
PGP技術(shù)是一個(gè)基于非對(duì)稱(chēng)加密算法RSA公鑰體系的郵件加密技術(shù),也是一種操作簡(jiǎn)單、使用方便、普及程度較高的加密軟件。PGP技術(shù)不但可以對(duì)電子郵件加密,防止非授權(quán)者閱讀信件;還能對(duì)電子郵件附加數(shù)字簽名,使收信人能明確了解發(fā)信人的真實(shí)身份;也可以在不需要通過(guò)任何保密渠道傳遞密鑰的情況下,使人們安全地進(jìn)行保密通信。
PGP技術(shù)創(chuàng)造性地把RSA非對(duì)稱(chēng)加密算法的方便性和傳統(tǒng)加密體系結(jié)合起來(lái),在數(shù)字簽名和密鑰認(rèn)證管理機(jī)制方面采用了無(wú)縫結(jié)合的巧妙設(shè)計(jì),使其幾乎成為最為流行的公鑰加密軟件包。
PGP使用兩個(gè)密鑰來(lái)管理數(shù)據(jù):一個(gè)用以加密,稱(chēng)為公鑰(Public Key);另一個(gè)用以解密,稱(chēng)為私鑰(Private Key)。公鑰和私鑰是緊密聯(lián)系在一起的,公鑰只能用來(lái)加密需要安全傳輸?shù)臄?shù)據(jù),卻不能解密加密后的數(shù)據(jù);相反,私鑰只能用來(lái)解密,卻不能加密數(shù)據(jù)。
現(xiàn)在廣泛使用的公共密鑰系統(tǒng)是基于PGP方式。它是一個(gè)基于RSA公鑰加密體系的開(kāi)源軟件,但它與RSA加密算法又有所不同。確切地說(shuō),PGP使用的是RSA和傳統(tǒng)算法DES結(jié)合的新算法——IDEA(受專(zhuān)利保護(hù))。
RSA算法是利用素?cái)?shù)(即質(zhì)數(shù))的因式不可分解性。RSA算法的要點(diǎn)與難點(diǎn)有二個(gè):算法主要為求模取余運(yùn)算;判斷一個(gè)數(shù)是否為素?cái)?shù)。由于進(jìn)行的都是大數(shù)計(jì)算,使得RSA最快的情況也比DES慢上百倍,所以為了避開(kāi)速度這一缺陷,PGP采用了改進(jìn)后的IDEA算法。
2、為什么采用PGP加密?
目前國(guó)內(nèi)多使用56位的加密系統(tǒng),實(shí)際上是不安全的,而PGP是最少128位加密的強(qiáng)大的加密軟件, 可以用于任何格式的文檔,包括文本、電子表、圖形等。具備數(shù)字簽名功能,用于檢查消息和文件的原作者和完整性。支持以下密鑰算法:
1)公用密鑰算法:Diffie-Hellman/DSS,RSA
2)散列功能:MD5, RIPEMD-160, SHA-1
3)對(duì)稱(chēng)算法:CAST, IDEA, Triple-DES
包括密鑰生成和管理的整套工具,使系統(tǒng)管理員能夠靈活控制整個(gè)網(wǎng)絡(luò)系統(tǒng)的安全策略。
3、如何部署大規(guī)模PGP系統(tǒng)
1)建立網(wǎng)絡(luò)系統(tǒng)的PGP證書(shū)管理中心
在大型網(wǎng)絡(luò)系統(tǒng)中,利用PGP Certificate Server建立一個(gè)證書(shū)的管理中心??梢暂p松地創(chuàng)建并管理統(tǒng)一的公用密鑰基礎(chǔ)結(jié)構(gòu)。從而在網(wǎng)絡(luò)系統(tǒng)內(nèi)部或Internet之間進(jìn)行保密通訊。 通過(guò)將Lightweight Directory Access Protocol (LDAP)目錄和PGP證書(shū)的優(yōu)點(diǎn)相結(jié)合, PGP Certificate Server大大簡(jiǎn)化了投遞和管理證書(shū)的過(guò)程。同時(shí)具備靈活的配置和制度管理。PGP Certificate Server支持LDAP和HTTP協(xié)議,從而保證與PGP客戶軟件的無(wú)縫集成。 其Web接口允許管理員執(zhí)行各種功能,包括配置、報(bào)告和狀態(tài)檢查,以實(shí)現(xiàn)對(duì)其遠(yuǎn)程管理。 我們可以在Sun Solaris或Microsoft Windows Server (Intel)平臺(tái)上實(shí)現(xiàn)。
2)對(duì)文檔和電子郵件進(jìn)行PGP加密
在操作系統(tǒng)可以安裝PGP,對(duì)文件系統(tǒng)和電子郵件系統(tǒng)進(jìn)行加密傳輸。
3)在應(yīng)用系統(tǒng)中集成PGP加密
利用PGP Software Development Kit(PGP 軟件開(kāi)發(fā)包)系統(tǒng)開(kāi)發(fā)人員可以將密碼功能結(jié)合到現(xiàn)有的應(yīng)用系統(tǒng)中, 如電子商務(wù)、法律、金融及其他應(yīng)用中。
4、PGP的 運(yùn)行方式
PGP有5種業(yè)務(wù):認(rèn)證性?保密性?壓縮?電子郵件的兼容性?分段?表1是這5種業(yè)務(wù)的總結(jié)?其中CAST-128是一種分組密碼,算法具有傳統(tǒng)Feistel網(wǎng)絡(luò)結(jié)構(gòu),采用16輪迭代,明文分組長(zhǎng)度為64比特,密鑰長(zhǎng)以8比特為增量,從40比特到128比特可變?
功能
使用的算法
功能描述
數(shù)字簽字
DSS/SHA或RSA/SHA
發(fā)送方使用SHA產(chǎn)生消息摘要,再用自己的秘密鑰按DSS算法或RSA算法對(duì)消息摘要簽字。
消息加密
CAST或IDEA或三個(gè)密鑰的三重DES/ElGamal或RSAIDEA或三重DES加密
消息由用戶產(chǎn)生的一次性會(huì)話密鑰按CAST-128或消息加密,會(huì)話密鑰用接收方的公開(kāi)鑰按ElGamal或RSA加密。
壓縮格式
ZIP, ZLIB, BZIP2
消息經(jīng)ZIP, ZLIB, BZIP2算法壓縮后存儲(chǔ)或傳送
電子郵件的兼容性
使用基數(shù)64變換
將加密的消息轉(zhuǎn)換為ASCII字符的兼容性基數(shù)64變換串,以提供電子郵件應(yīng)用系統(tǒng)的透明性。
分段
對(duì)消息進(jìn)行分段和重組以適應(yīng)PGP對(duì)消息最大長(zhǎng)度的限制。
表1 PGP的業(yè)務(wù)
圖1:PGP工作流程
5、開(kāi)源pgp工具
后來(lái)GNU和自由軟件運(yùn)動(dòng)的出現(xiàn)可以使用免費(fèi)的GPG,它的安全性與PGP一樣強(qiáng),可以充分地保護(hù)每個(gè)用戶的隱私。 GnuPG 是用于安全通信的工具;它是對(duì) PGP加密技術(shù)的完全和免費(fèi)的開(kāi)源代替產(chǎn)品。使用 GnuPG,你可以給你的數(shù)據(jù)和通信加密,并可以使用 數(shù)碼簽名(digitally signing)來(lái)驗(yàn)證你的通信。GnuPG還能夠解密及校驗(yàn) PGP 5.x。
因?yàn)镚nuPG 和其它加密標(biāo)準(zhǔn)兼容,你的安全通信可能會(huì)與其它操作系統(tǒng)(如 Windows 和 Macintosh)上的電子郵件程序兼容。GnuPG 使用公鑰加密術(shù)(public key cryptography)來(lái)為用戶提供安全的數(shù)據(jù)交換。在公鑰加密術(shù)方案中,你生成兩把鑰匙:公鑰和密鑰。你和通信對(duì)方或鑰匙服務(wù)器互換你的公鑰,你決不應(yīng)該出示你的密鑰。
二、在Solaris的GnuPG安裝
首先先必須安裝軟件軟件包:
bzip2-1.0.5
libidn
libiconv
libintl
readline
openssl-0.9.8g
curl
openldap
sasl
zlib
限于篇幅筆者不詳細(xì)介紹了。
#gunzip gnupg-1.4.8-sol10-x86-local.gz
#pkgadd –d gnupg-1.4.8-sol10-x86-local
圖2:是gunpg安裝成功界面
另外判斷是否安裝有GnuPG的方法也很簡(jiǎn)單。直接在命令行下輸入“gpg -h”命令,如果系統(tǒng)已經(jīng)安裝有GnuPG,就會(huì)顯示關(guān)于GPG版本和用法的信息。
三、Gunpg在Solais下的配置
確定系統(tǒng)中已經(jīng)安裝了GnuPG后,就可以開(kāi)始下面加密和簽名的工作了。
1、生成密匙
用戶應(yīng)用GnuPG,首先要有一對(duì)自己的密鑰。所以,第一步就是產(chǎn)生一對(duì)密鑰。gpg命令通過(guò)大量參數(shù)提供所需要的幾乎所有操作。其中,參數(shù)“-gen-key”就是用來(lái)產(chǎn)生一對(duì)密鑰的。在安裝了GPG的Linux系統(tǒng)上可以運(yùn)行以下命令:
#gpg --gen-key
命令開(kāi)始運(yùn)行后,首先,會(huì)看到版本和路徑信息。隨后需要回答一系列問(wèn)題,以幫助產(chǎn)生一對(duì)密鑰。其中,DSA是數(shù)字簽名算法,RSA和ElGamal是兩種不同原理的非對(duì)稱(chēng)密鑰算法。通??梢赃x擇“1”,這樣生成的密鑰可以同時(shí)用作簽名和加密兩種用途。
接著,會(huì)要求選擇密鑰的長(zhǎng)度。這里的密鑰長(zhǎng)度有768、1024和2048位三種。如圖 3 。
圖3:選擇密鑰使用的長(zhǎng)度
顯然,密鑰越長(zhǎng)越安全,但太長(zhǎng)又會(huì)影響使用的速度。所以,可以根據(jù)不同的需要選擇適合的長(zhǎng)度。筆者選擇了的1024位密鑰。另外,還需要設(shè)定密鑰過(guò)期的時(shí)間,原則上,密鑰使用的頻率越高,密鑰有效的時(shí)間越長(zhǎng),被攻擊的可能性就越大。
所以,要根據(jù)應(yīng)用的實(shí)際情況綜合考慮,確定一個(gè)適當(dāng)?shù)臅r(shí)間長(zhǎng)度。需要注意的是,密鑰要定期更換,建議絕對(duì)不要永遠(yuǎn)使用同一對(duì)密鑰。
最后,需要輸入一些個(gè)人信息,包括真實(shí)姓名、電子郵件地址等,用來(lái)識(shí)別密鑰,最好是如實(shí)填寫(xiě)。然后,必須輸入一個(gè)密碼。密碼用來(lái)保護(hù)密鑰,沒(méi)有這個(gè)密碼,任何人都不能看到密鑰本身的內(nèi)容。密碼是在密鑰文件泄露后惟一的保密措施,它的最大敵人是暴力破解和字典攻擊。
所以,一定要選擇一個(gè)強(qiáng)壯的密碼,來(lái)有效地對(duì)抗這些攻擊。 密碼確定以后,系統(tǒng)開(kāi)始運(yùn)算。這時(shí)需要隨便地敲擊鍵盤(pán)或是移動(dòng)鼠標(biāo),以產(chǎn)生一些隨機(jī)數(shù),協(xié)助密鑰的順利生成。注意,如果沒(méi)有以上動(dòng)作,很可能最終不能產(chǎn)生密鑰。系統(tǒng)運(yùn)算完成后,會(huì)出現(xiàn)類(lèi)似圖4的信息:
圖4:成功生成鑰匙文件
2、查看密鑰
使用下面的命令:
gpg --list-keys
你會(huì)看到和圖 5相似的輸出:
圖5:查看所有密鑰
3、其他常用命令:
查看所有公鑰:
gpg --list-public-key
查看所有私鑰:
gpg --list-secret-key
列出所有簽名:
gpg --list-sig
4、公鑰的使用
接下來(lái)要做的工作是輸出一個(gè)用來(lái)發(fā)布的公鑰:
gpg --export -a -o yourpubkey.asc
-a 是ASCII編碼形式,-o 說(shuō)明輸出公鑰到 yourpubkey.asc 文件。要發(fā)布這個(gè)公鑰,可以將yourpubkey.asc文件放在你的主頁(yè)上,也可以通過(guò)郵件寄給朋友。
當(dāng)你收到朋友發(fā)來(lái)的公鑰,你需要將這把公鑰導(dǎo)入你的鑰匙庫(kù)。例如,他寄給你的公鑰是 friendpubkey.asc ,使用下面命令就可以導(dǎo)入進(jìn)鑰匙庫(kù):
gpg --import friendpubkey.asc
5、生成一份廢棄證書(shū)
在生成鑰匙對(duì)后,還應(yīng)該為公鑰創(chuàng)建一份廢棄證書(shū)。這不是廢棄剛剛生成的鑰匙,而是提供了一種停止鑰匙被繼續(xù)公開(kāi)使用的安全方法。當(dāng)忘記了口令句,或者該口令句被竊取,或者更換了聯(lián)系郵件地址,或系統(tǒng)崩潰等情況下,可以使用該廢棄證書(shū)宣告原來(lái)的公鑰無(wú)效。使用--gen-revoke選項(xiàng)生成廢棄證書(shū):
#gpg --output revoke.asc --gen-revoke [user-id: goodcjh@2911.net]
確認(rèn)廢棄原因后,輸入用來(lái)生成鑰匙的口令句。注意,如果省略了--output revoke.asc選項(xiàng),則廢棄證書(shū)只會(huì)被顯示在屏幕上,需要進(jìn)行復(fù)制、粘貼操作,并保存為文件才行。
四、Gunpg在Solaris下的應(yīng)用
1、對(duì)文件進(jìn)行加密和解密
Gunpg使用的是非對(duì)稱(chēng)的密鑰體系,用戶擁有一對(duì)密鑰,包括一個(gè)公鑰和一個(gè)私鑰。公鑰對(duì)外公布,私鑰則由自己保存。使用公鑰加密的數(shù)據(jù)可以用私鑰解密,同樣,使用私鑰加密的數(shù)據(jù)可以用公鑰解密。
2、使用GnuPG進(jìn)行數(shù)字簽名(sign)
利用GnuPG數(shù)字簽名的方式有三種: 1.顯式數(shù)字簽名,即直接把數(shù)字簽名添加在文件內(nèi)容的后面。這樣做的好處是簡(jiǎn)單,可以直接閱讀信息。 2.隱匿數(shù)字簽名,即簽名后隱藏文件內(nèi)容。這樣做的好處是把真實(shí)信息隱藏在簽名檔中。如果想要查看信息,使用命令:
#gpg -d goodcjh.file.asc
3、把數(shù)字簽名單獨(dú)存放于一個(gè)文件。
#gpg -ba goodcjh.file
這時(shí)目錄下會(huì)出現(xiàn)一個(gè)cjh.file.asc的簽名文件。如果此時(shí)修改原文件test.file的內(nèi)容,再次校驗(yàn)數(shù)字簽名檔時(shí)就會(huì)被警告。
使用GnuPG進(jìn)行數(shù)據(jù)加密和解密,例如,現(xiàn)有一份文本文件,內(nèi)容為“goodcjh using GnuPG on solaris”。使用如下命令進(jìn)行數(shù)據(jù)加密:
#gpg -ea -r goodcjh test.txt
-e表示加密選項(xiàng);-a表示使用ASCⅡ字符,如果不指定,默認(rèn)輸出為二進(jìn)制文件;-r指定某用戶的公鑰;text.txt為所要加密的文件名。
解密操作使用命令:
#gpg -d goodcjh.file.asc >test.file
一般可以用以下命令來(lái)生成一個(gè)同時(shí)帶有數(shù)字簽名和加密的文檔:
#gpg -o test.gpg -ea -s -r goodcjh.test.file
其中-o表示輸出文件名;-s表示加入數(shù)字簽名。
另外在GPG的使用過(guò)程中,可以進(jìn)行多次加密使數(shù)據(jù)更加安全。命令如下:
#gpg -eas -r goodcjh test.file -o test.gpg.nc1
#gpg -eas -r goodcjh test.gpg.nc1 -o test.gpg.nc2
#gpg -eas -r goodcjh test.gpg.nc2 -o test.gpg.nc3
解密操作過(guò)程類(lèi)似。
五、對(duì)文件進(jìn)行數(shù)字簽名和驗(yàn)證
#gpg --clearsign policy.txt
運(yùn)行以上命令,生成一個(gè)名為report.txt.asc的文件,該文件中除了原文件信息外還包含數(shù)字簽名信息。
驗(yàn)證文件的數(shù)字簽名
#gpg --verify policy.txt.asc
在電子郵件中使用gunpg
在Mutt中使用GnuPG
GnuPG用的最多的地方,還是在收發(fā)郵件的過(guò)程中。這里以Mutt作為郵件客戶端來(lái)舉例。Mutt對(duì)GnuPG支持的非常好,并且如果你不做任何設(shè)置,它會(huì)自動(dòng)到.gnupg目錄下調(diào)用公鑰和密鑰。
1、發(fā)信
寫(xiě)完一封信,在發(fā)出之前,可以使用下列功能: 通過(guò)按“Esc+K”鍵可以添加GPG文檔,按照提示輸入公鑰ID號(hào),如0B383904,或者直接回車(chē)從鑰匙圈上選擇。
2、閱讀電子郵件
當(dāng)你收到一封朋友寄來(lái)的加密閱讀電子郵件時(shí),Mutt會(huì)在郵件索引頁(yè)中,用P表示是加密過(guò)的信件,用s表明有簽名。 要打開(kāi)一封P標(biāo)志的信時(shí),Mutt提示先輸入使用密鑰的口令??诹钶斎胝_,Mutt用密鑰自動(dòng)解密該郵件。當(dāng)你關(guān)閉Mutt,下次再看這封郵件時(shí),需要再次輸入口令和解密過(guò)程。 打開(kāi)一封s標(biāo)志的信,Mutt自動(dòng)匹配鑰匙庫(kù)里面的公鑰,顯示信件內(nèi)容的同時(shí)也顯示簽名信息。
圖形化電子郵件Ximin下使用gunpg
Ximin下使用gunpg界面如圖 6 。
常見(jiàn)問(wèn)題:
當(dāng)您給電子郵件添加一個(gè)加密簽名時(shí),您可能會(huì)看到下面的錯(cuò)誤:
Failed to GPG sign: Broken pipe
gpg: skipped ’’: secret key not available
gpg: signing failed: secret key not available要更正此錯(cuò)誤,請(qǐng)執(zhí)以下步驟:
打開(kāi)以下文件:$HOME/.gnupg/gpg.conf
注釋掉以下行:use-agent
總結(jié):Gunpg作為一個(gè)開(kāi)源并且免費(fèi)的加密和數(shù)字簽名軟件已經(jīng)存在多年。它不但可以為企業(yè)、個(gè)人之間的重要信息提供加密保護(hù),還可以為出版的軟件、內(nèi)核等電子產(chǎn)品進(jìn)行數(shù)字簽名,防止產(chǎn)品被篡改,最大程度地保障信息安全。 對(duì)于Unix用戶來(lái)說(shuō),對(duì)信息安全的要求相對(duì)更高,gunpg更值得在unix用戶中推廣和應(yīng)用。
有用參考資料:
Gunpg加密技術(shù)中可以研究討論之處極多,這里只對(duì) GnuPG 蜻蜓點(diǎn)水地介紹了一下。如果你想深入了解這方面的知識(shí),可以參看下面的資料。
在線的文檔
Gpg –h ##可以顯示GnuPG 命令和選項(xiàng)的快捷參考。
有用的網(wǎng)站:
http://www.gnupg.org — GnuPG 網(wǎng)站,其中有到最新 GnuPG 發(fā)行版本、通俗易懂的用戶指南、以及其它加密資源的鏈接。
相關(guān)書(shū)籍:
PGP &GPG ,作者M(jìn)ichael W. Lucas;No Starch Press出版。
PGP &GPG封面
1、PGP簡(jiǎn)介
PGP技術(shù)是一個(gè)基于非對(duì)稱(chēng)加密算法RSA公鑰體系的郵件加密技術(shù),也是一種操作簡(jiǎn)單、使用方便、普及程度較高的加密軟件。PGP技術(shù)不但可以對(duì)電子郵件加密,防止非授權(quán)者閱讀信件;還能對(duì)電子郵件附加數(shù)字簽名,使收信人能明確了解發(fā)信人的真實(shí)身份;也可以在不需要通過(guò)任何保密渠道傳遞密鑰的情況下,使人們安全地進(jìn)行保密通信。
PGP技術(shù)創(chuàng)造性地把RSA非對(duì)稱(chēng)加密算法的方便性和傳統(tǒng)加密體系結(jié)合起來(lái),在數(shù)字簽名和密鑰認(rèn)證管理機(jī)制方面采用了無(wú)縫結(jié)合的巧妙設(shè)計(jì),使其幾乎成為最為流行的公鑰加密軟件包。
PGP使用兩個(gè)密鑰來(lái)管理數(shù)據(jù):一個(gè)用以加密,稱(chēng)為公鑰(Public Key);另一個(gè)用以解密,稱(chēng)為私鑰(Private Key)。公鑰和私鑰是緊密聯(lián)系在一起的,公鑰只能用來(lái)加密需要安全傳輸?shù)臄?shù)據(jù),卻不能解密加密后的數(shù)據(jù);相反,私鑰只能用來(lái)解密,卻不能加密數(shù)據(jù)。
現(xiàn)在廣泛使用的公共密鑰系統(tǒng)是基于PGP方式。它是一個(gè)基于RSA公鑰加密體系的開(kāi)源軟件,但它與RSA加密算法又有所不同。確切地說(shuō),PGP使用的是RSA和傳統(tǒng)算法DES結(jié)合的新算法——IDEA(受專(zhuān)利保護(hù))。
RSA算法是利用素?cái)?shù)(即質(zhì)數(shù))的因式不可分解性。RSA算法的要點(diǎn)與難點(diǎn)有二個(gè):算法主要為求模取余運(yùn)算;判斷一個(gè)數(shù)是否為素?cái)?shù)。由于進(jìn)行的都是大數(shù)計(jì)算,使得RSA最快的情況也比DES慢上百倍,所以為了避開(kāi)速度這一缺陷,PGP采用了改進(jìn)后的IDEA算法。
2、為什么采用PGP加密?
目前國(guó)內(nèi)多使用56位的加密系統(tǒng),實(shí)際上是不安全的,而PGP是最少128位加密的強(qiáng)大的加密軟件, 可以用于任何格式的文檔,包括文本、電子表、圖形等。具備數(shù)字簽名功能,用于檢查消息和文件的原作者和完整性。支持以下密鑰算法:
1)公用密鑰算法:Diffie-Hellman/DSS,RSA
2)散列功能:MD5, RIPEMD-160, SHA-1
3)對(duì)稱(chēng)算法:CAST, IDEA, Triple-DES
包括密鑰生成和管理的整套工具,使系統(tǒng)管理員能夠靈活控制整個(gè)網(wǎng)絡(luò)系統(tǒng)的安全策略。
3、如何部署大規(guī)模PGP系統(tǒng)
1)建立網(wǎng)絡(luò)系統(tǒng)的PGP證書(shū)管理中心
在大型網(wǎng)絡(luò)系統(tǒng)中,利用PGP Certificate Server建立一個(gè)證書(shū)的管理中心??梢暂p松地創(chuàng)建并管理統(tǒng)一的公用密鑰基礎(chǔ)結(jié)構(gòu)。從而在網(wǎng)絡(luò)系統(tǒng)內(nèi)部或Internet之間進(jìn)行保密通訊。 通過(guò)將Lightweight Directory Access Protocol (LDAP)目錄和PGP證書(shū)的優(yōu)點(diǎn)相結(jié)合, PGP Certificate Server大大簡(jiǎn)化了投遞和管理證書(shū)的過(guò)程。同時(shí)具備靈活的配置和制度管理。PGP Certificate Server支持LDAP和HTTP協(xié)議,從而保證與PGP客戶軟件的無(wú)縫集成。 其Web接口允許管理員執(zhí)行各種功能,包括配置、報(bào)告和狀態(tài)檢查,以實(shí)現(xiàn)對(duì)其遠(yuǎn)程管理。 我們可以在Sun Solaris或Microsoft Windows Server (Intel)平臺(tái)上實(shí)現(xiàn)。
2)對(duì)文檔和電子郵件進(jìn)行PGP加密
在操作系統(tǒng)可以安裝PGP,對(duì)文件系統(tǒng)和電子郵件系統(tǒng)進(jìn)行加密傳輸。
3)在應(yīng)用系統(tǒng)中集成PGP加密
利用PGP Software Development Kit(PGP 軟件開(kāi)發(fā)包)系統(tǒng)開(kāi)發(fā)人員可以將密碼功能結(jié)合到現(xiàn)有的應(yīng)用系統(tǒng)中, 如電子商務(wù)、法律、金融及其他應(yīng)用中。
4、PGP的 運(yùn)行方式
PGP有5種業(yè)務(wù):認(rèn)證性?保密性?壓縮?電子郵件的兼容性?分段?表1是這5種業(yè)務(wù)的總結(jié)?其中CAST-128是一種分組密碼,算法具有傳統(tǒng)Feistel網(wǎng)絡(luò)結(jié)構(gòu),采用16輪迭代,明文分組長(zhǎng)度為64比特,密鑰長(zhǎng)以8比特為增量,從40比特到128比特可變?
功能
使用的算法
功能描述
數(shù)字簽字
DSS/SHA或RSA/SHA
發(fā)送方使用SHA產(chǎn)生消息摘要,再用自己的秘密鑰按DSS算法或RSA算法對(duì)消息摘要簽字。
消息加密
CAST或IDEA或三個(gè)密鑰的三重DES/ElGamal或RSAIDEA或三重DES加密
消息由用戶產(chǎn)生的一次性會(huì)話密鑰按CAST-128或消息加密,會(huì)話密鑰用接收方的公開(kāi)鑰按ElGamal或RSA加密。
壓縮格式
ZIP, ZLIB, BZIP2
消息經(jīng)ZIP, ZLIB, BZIP2算法壓縮后存儲(chǔ)或傳送
電子郵件的兼容性
使用基數(shù)64變換
將加密的消息轉(zhuǎn)換為ASCII字符的兼容性基數(shù)64變換串,以提供電子郵件應(yīng)用系統(tǒng)的透明性。
分段
對(duì)消息進(jìn)行分段和重組以適應(yīng)PGP對(duì)消息最大長(zhǎng)度的限制。
表1 PGP的業(yè)務(wù)

圖1:PGP工作流程
5、開(kāi)源pgp工具
后來(lái)GNU和自由軟件運(yùn)動(dòng)的出現(xiàn)可以使用免費(fèi)的GPG,它的安全性與PGP一樣強(qiáng),可以充分地保護(hù)每個(gè)用戶的隱私。 GnuPG 是用于安全通信的工具;它是對(duì) PGP加密技術(shù)的完全和免費(fèi)的開(kāi)源代替產(chǎn)品。使用 GnuPG,你可以給你的數(shù)據(jù)和通信加密,并可以使用 數(shù)碼簽名(digitally signing)來(lái)驗(yàn)證你的通信。GnuPG還能夠解密及校驗(yàn) PGP 5.x。
因?yàn)镚nuPG 和其它加密標(biāo)準(zhǔn)兼容,你的安全通信可能會(huì)與其它操作系統(tǒng)(如 Windows 和 Macintosh)上的電子郵件程序兼容。GnuPG 使用公鑰加密術(shù)(public key cryptography)來(lái)為用戶提供安全的數(shù)據(jù)交換。在公鑰加密術(shù)方案中,你生成兩把鑰匙:公鑰和密鑰。你和通信對(duì)方或鑰匙服務(wù)器互換你的公鑰,你決不應(yīng)該出示你的密鑰。
二、在Solaris的GnuPG安裝
首先先必須安裝軟件軟件包:
bzip2-1.0.5
libidn
libiconv
libintl
readline
openssl-0.9.8g
curl
openldap
sasl
zlib
限于篇幅筆者不詳細(xì)介紹了。
#gunzip gnupg-1.4.8-sol10-x86-local.gz
#pkgadd –d gnupg-1.4.8-sol10-x86-local

圖2:是gunpg安裝成功界面
另外判斷是否安裝有GnuPG的方法也很簡(jiǎn)單。直接在命令行下輸入“gpg -h”命令,如果系統(tǒng)已經(jīng)安裝有GnuPG,就會(huì)顯示關(guān)于GPG版本和用法的信息。
三、Gunpg在Solais下的配置
確定系統(tǒng)中已經(jīng)安裝了GnuPG后,就可以開(kāi)始下面加密和簽名的工作了。
1、生成密匙
用戶應(yīng)用GnuPG,首先要有一對(duì)自己的密鑰。所以,第一步就是產(chǎn)生一對(duì)密鑰。gpg命令通過(guò)大量參數(shù)提供所需要的幾乎所有操作。其中,參數(shù)“-gen-key”就是用來(lái)產(chǎn)生一對(duì)密鑰的。在安裝了GPG的Linux系統(tǒng)上可以運(yùn)行以下命令:
#gpg --gen-key
命令開(kāi)始運(yùn)行后,首先,會(huì)看到版本和路徑信息。隨后需要回答一系列問(wèn)題,以幫助產(chǎn)生一對(duì)密鑰。其中,DSA是數(shù)字簽名算法,RSA和ElGamal是兩種不同原理的非對(duì)稱(chēng)密鑰算法。通??梢赃x擇“1”,這樣生成的密鑰可以同時(shí)用作簽名和加密兩種用途。
接著,會(huì)要求選擇密鑰的長(zhǎng)度。這里的密鑰長(zhǎng)度有768、1024和2048位三種。如圖 3 。

圖3:選擇密鑰使用的長(zhǎng)度
顯然,密鑰越長(zhǎng)越安全,但太長(zhǎng)又會(huì)影響使用的速度。所以,可以根據(jù)不同的需要選擇適合的長(zhǎng)度。筆者選擇了的1024位密鑰。另外,還需要設(shè)定密鑰過(guò)期的時(shí)間,原則上,密鑰使用的頻率越高,密鑰有效的時(shí)間越長(zhǎng),被攻擊的可能性就越大。
所以,要根據(jù)應(yīng)用的實(shí)際情況綜合考慮,確定一個(gè)適當(dāng)?shù)臅r(shí)間長(zhǎng)度。需要注意的是,密鑰要定期更換,建議絕對(duì)不要永遠(yuǎn)使用同一對(duì)密鑰。
最后,需要輸入一些個(gè)人信息,包括真實(shí)姓名、電子郵件地址等,用來(lái)識(shí)別密鑰,最好是如實(shí)填寫(xiě)。然后,必須輸入一個(gè)密碼。密碼用來(lái)保護(hù)密鑰,沒(méi)有這個(gè)密碼,任何人都不能看到密鑰本身的內(nèi)容。密碼是在密鑰文件泄露后惟一的保密措施,它的最大敵人是暴力破解和字典攻擊。
所以,一定要選擇一個(gè)強(qiáng)壯的密碼,來(lái)有效地對(duì)抗這些攻擊。 密碼確定以后,系統(tǒng)開(kāi)始運(yùn)算。這時(shí)需要隨便地敲擊鍵盤(pán)或是移動(dòng)鼠標(biāo),以產(chǎn)生一些隨機(jī)數(shù),協(xié)助密鑰的順利生成。注意,如果沒(méi)有以上動(dòng)作,很可能最終不能產(chǎn)生密鑰。系統(tǒng)運(yùn)算完成后,會(huì)出現(xiàn)類(lèi)似圖4的信息:

圖4:成功生成鑰匙文件
2、查看密鑰
使用下面的命令:
gpg --list-keys
你會(huì)看到和圖 5相似的輸出:

圖5:查看所有密鑰
3、其他常用命令:
查看所有公鑰:
gpg --list-public-key
查看所有私鑰:
gpg --list-secret-key
列出所有簽名:
gpg --list-sig
4、公鑰的使用
接下來(lái)要做的工作是輸出一個(gè)用來(lái)發(fā)布的公鑰:
gpg --export -a -o yourpubkey.asc
-a 是ASCII編碼形式,-o 說(shuō)明輸出公鑰到 yourpubkey.asc 文件。要發(fā)布這個(gè)公鑰,可以將yourpubkey.asc文件放在你的主頁(yè)上,也可以通過(guò)郵件寄給朋友。
當(dāng)你收到朋友發(fā)來(lái)的公鑰,你需要將這把公鑰導(dǎo)入你的鑰匙庫(kù)。例如,他寄給你的公鑰是 friendpubkey.asc ,使用下面命令就可以導(dǎo)入進(jìn)鑰匙庫(kù):
gpg --import friendpubkey.asc
5、生成一份廢棄證書(shū)
在生成鑰匙對(duì)后,還應(yīng)該為公鑰創(chuàng)建一份廢棄證書(shū)。這不是廢棄剛剛生成的鑰匙,而是提供了一種停止鑰匙被繼續(xù)公開(kāi)使用的安全方法。當(dāng)忘記了口令句,或者該口令句被竊取,或者更換了聯(lián)系郵件地址,或系統(tǒng)崩潰等情況下,可以使用該廢棄證書(shū)宣告原來(lái)的公鑰無(wú)效。使用--gen-revoke選項(xiàng)生成廢棄證書(shū):
#gpg --output revoke.asc --gen-revoke [user-id: goodcjh@2911.net]
確認(rèn)廢棄原因后,輸入用來(lái)生成鑰匙的口令句。注意,如果省略了--output revoke.asc選項(xiàng),則廢棄證書(shū)只會(huì)被顯示在屏幕上,需要進(jìn)行復(fù)制、粘貼操作,并保存為文件才行。
四、Gunpg在Solaris下的應(yīng)用
1、對(duì)文件進(jìn)行加密和解密
Gunpg使用的是非對(duì)稱(chēng)的密鑰體系,用戶擁有一對(duì)密鑰,包括一個(gè)公鑰和一個(gè)私鑰。公鑰對(duì)外公布,私鑰則由自己保存。使用公鑰加密的數(shù)據(jù)可以用私鑰解密,同樣,使用私鑰加密的數(shù)據(jù)可以用公鑰解密。
2、使用GnuPG進(jìn)行數(shù)字簽名(sign)
利用GnuPG數(shù)字簽名的方式有三種: 1.顯式數(shù)字簽名,即直接把數(shù)字簽名添加在文件內(nèi)容的后面。這樣做的好處是簡(jiǎn)單,可以直接閱讀信息。 2.隱匿數(shù)字簽名,即簽名后隱藏文件內(nèi)容。這樣做的好處是把真實(shí)信息隱藏在簽名檔中。如果想要查看信息,使用命令:
#gpg -d goodcjh.file.asc
3、把數(shù)字簽名單獨(dú)存放于一個(gè)文件。
#gpg -ba goodcjh.file
這時(shí)目錄下會(huì)出現(xiàn)一個(gè)cjh.file.asc的簽名文件。如果此時(shí)修改原文件test.file的內(nèi)容,再次校驗(yàn)數(shù)字簽名檔時(shí)就會(huì)被警告。
使用GnuPG進(jìn)行數(shù)據(jù)加密和解密,例如,現(xiàn)有一份文本文件,內(nèi)容為“goodcjh using GnuPG on solaris”。使用如下命令進(jìn)行數(shù)據(jù)加密:
#gpg -ea -r goodcjh test.txt
-e表示加密選項(xiàng);-a表示使用ASCⅡ字符,如果不指定,默認(rèn)輸出為二進(jìn)制文件;-r指定某用戶的公鑰;text.txt為所要加密的文件名。
解密操作使用命令:
#gpg -d goodcjh.file.asc >test.file
一般可以用以下命令來(lái)生成一個(gè)同時(shí)帶有數(shù)字簽名和加密的文檔:
#gpg -o test.gpg -ea -s -r goodcjh.test.file
其中-o表示輸出文件名;-s表示加入數(shù)字簽名。
另外在GPG的使用過(guò)程中,可以進(jìn)行多次加密使數(shù)據(jù)更加安全。命令如下:
#gpg -eas -r goodcjh test.file -o test.gpg.nc1
#gpg -eas -r goodcjh test.gpg.nc1 -o test.gpg.nc2
#gpg -eas -r goodcjh test.gpg.nc2 -o test.gpg.nc3
解密操作過(guò)程類(lèi)似。
五、對(duì)文件進(jìn)行數(shù)字簽名和驗(yàn)證
#gpg --clearsign policy.txt
運(yùn)行以上命令,生成一個(gè)名為report.txt.asc的文件,該文件中除了原文件信息外還包含數(shù)字簽名信息。
驗(yàn)證文件的數(shù)字簽名
#gpg --verify policy.txt.asc
在電子郵件中使用gunpg
在Mutt中使用GnuPG
GnuPG用的最多的地方,還是在收發(fā)郵件的過(guò)程中。這里以Mutt作為郵件客戶端來(lái)舉例。Mutt對(duì)GnuPG支持的非常好,并且如果你不做任何設(shè)置,它會(huì)自動(dòng)到.gnupg目錄下調(diào)用公鑰和密鑰。
1、發(fā)信
寫(xiě)完一封信,在發(fā)出之前,可以使用下列功能: 通過(guò)按“Esc+K”鍵可以添加GPG文檔,按照提示輸入公鑰ID號(hào),如0B383904,或者直接回車(chē)從鑰匙圈上選擇。
2、閱讀電子郵件
當(dāng)你收到一封朋友寄來(lái)的加密閱讀電子郵件時(shí),Mutt會(huì)在郵件索引頁(yè)中,用P表示是加密過(guò)的信件,用s表明有簽名。 要打開(kāi)一封P標(biāo)志的信時(shí),Mutt提示先輸入使用密鑰的口令??诹钶斎胝_,Mutt用密鑰自動(dòng)解密該郵件。當(dāng)你關(guān)閉Mutt,下次再看這封郵件時(shí),需要再次輸入口令和解密過(guò)程。 打開(kāi)一封s標(biāo)志的信,Mutt自動(dòng)匹配鑰匙庫(kù)里面的公鑰,顯示信件內(nèi)容的同時(shí)也顯示簽名信息。
圖形化電子郵件Ximin下使用gunpg
Ximin下使用gunpg界面如圖 6 。

常見(jiàn)問(wèn)題:
當(dāng)您給電子郵件添加一個(gè)加密簽名時(shí),您可能會(huì)看到下面的錯(cuò)誤:
Failed to GPG sign: Broken pipe
gpg: skipped ’’: secret key not available
gpg: signing failed: secret key not available要更正此錯(cuò)誤,請(qǐng)執(zhí)以下步驟:
打開(kāi)以下文件:$HOME/.gnupg/gpg.conf
注釋掉以下行:use-agent
總結(jié):Gunpg作為一個(gè)開(kāi)源并且免費(fèi)的加密和數(shù)字簽名軟件已經(jīng)存在多年。它不但可以為企業(yè)、個(gè)人之間的重要信息提供加密保護(hù),還可以為出版的軟件、內(nèi)核等電子產(chǎn)品進(jìn)行數(shù)字簽名,防止產(chǎn)品被篡改,最大程度地保障信息安全。 對(duì)于Unix用戶來(lái)說(shuō),對(duì)信息安全的要求相對(duì)更高,gunpg更值得在unix用戶中推廣和應(yīng)用。
有用參考資料:
Gunpg加密技術(shù)中可以研究討論之處極多,這里只對(duì) GnuPG 蜻蜓點(diǎn)水地介紹了一下。如果你想深入了解這方面的知識(shí),可以參看下面的資料。
在線的文檔
Gpg –h ##可以顯示GnuPG 命令和選項(xiàng)的快捷參考。
有用的網(wǎng)站:
http://www.gnupg.org — GnuPG 網(wǎng)站,其中有到最新 GnuPG 發(fā)行版本、通俗易懂的用戶指南、以及其它加密資源的鏈接。
相關(guān)書(shū)籍:
PGP &GPG ,作者M(jìn)ichael W. Lucas;No Starch Press出版。

PGP &GPG封面
相關(guān)文章
- “CMOS密碼”就是通常所說(shuō)的“開(kāi)機(jī)密碼”,主要是為了防止別人使用自已的計(jì)算機(jī),設(shè)置的一個(gè)屏障2023-08-01
QQScreenShot之逆向并提取QQ截圖--OCR和其他功能
上一篇文章逆向并提取QQ截圖沒(méi)有提取OCR功能, 再次逆向我發(fā)現(xiàn)是可以本地調(diào)用QQ的OCR的,但翻譯按鈕確實(shí)沒(méi)啥用, 于是Patch了翻譯按鈕事件, 改為了將截圖用百度以圖搜圖搜索.2023-02-04- QQ截圖是我用過(guò)的最好用的截圖工具, 由于基本不在電腦上登QQ了, 于是就想將其提取出獨(dú)立版目前除了屏幕錄制功能其他都逆出來(lái)了, 在此分享一下2023-02-04
非系統(tǒng)分區(qū)使用BitLocker加密導(dǎo)致軟件無(wú)法安裝的解決方法
很多電腦用戶在考慮自己電腦磁盤(pán)分區(qū)安全時(shí)會(huì)采用 Windows 自帶的 BitLocker 加密工具對(duì)電腦磁盤(pán)分區(qū)進(jìn)行加密。但有些人加密后就會(huì)忘記自己設(shè)置的密碼從而導(dǎo)致在安裝其它軟2020-11-25防止離職員工帶走客戶、防止內(nèi)部員工泄密、避免華為員工泄密事件的發(fā)生
這篇文章為大家詳細(xì)介紹了如何才能防止離職員工帶走客戶、防止內(nèi)部員工泄密、避免華為員工泄密事件的發(fā)生,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-27徹底防止計(jì)算機(jī)泄密、重要涉密人員離職泄密、涉密人員離崗離職前防范舉
近些年企業(yè)商業(yè)機(jī)密泄漏的事件屢有發(fā)生,這篇文章主要教大家如何徹底防止計(jì)算機(jī)泄密、重要涉密人員離職泄密、告訴大家涉密人員離崗離職前的防范舉措,具有一定的參考價(jià)值,2017-06-27量子計(jì)算機(jī)輕松破解加密算法 如何破解加密算法?
最近有電腦用戶反應(yīng)量子計(jì)算機(jī)可以破解下載的所有的加密算法嗎?其實(shí)也不是不可以,下面虛擬就為大家講解買(mǎi)臺(tái)量子計(jì)算機(jī),如何分分鐘破解加密算法2016-09-26怎么破解Webshell密碼 Burpsuite破解Webshell密碼圖文教程
webshell是以asp、php、jsp或者cgi等網(wǎng)頁(yè)文件形式存在的一種命令執(zhí)行環(huán)境,一種網(wǎng)頁(yè)后門(mén)。黑客通常會(huì)通過(guò)它控制別人網(wǎng)絡(luò)服務(wù)器,那么怎么破解webshell密碼呢?一起來(lái)看看吧2016-09-19針對(duì)Linux系統(tǒng)全盤(pán)加密的啟動(dòng)攻擊
本文討論了針對(duì)Linux系統(tǒng)全盤(pán)加密的冷啟動(dòng)攻擊,大家都認(rèn)為這種攻擊是可行的,但執(zhí)行這么一次攻擊有多難?攻擊的可行性有多少呢?需要的朋友可以參考下2015-12-28防止泄露公司機(jī)密、企業(yè)數(shù)據(jù)防泄密軟件排名、電腦文件加密軟件排行
面對(duì)日漸嚴(yán)重的內(nèi)部泄密事件,我們?nèi)绾问刈o(hù)企業(yè)的核心信息,如何防止內(nèi)部泄密也就成了擺在各個(gè)企業(yè)領(lǐng)導(dǎo)面前的一大問(wèn)題。其實(shí),針對(duì)內(nèi)網(wǎng)安全,防止內(nèi)部信息泄漏早已有了比較2015-12-17