加密和數(shù)字簽名作為保護(hù)信息機(jī)密性、完整性和不可抵賴(lài)性的重要手段在各種信息通信場(chǎng)合得到廣泛的應(yīng)用。目前,已有不少商業(yè)加密和數(shù)字簽名產(chǎn)品,比如商業(yè)軟件PGP(Pretty Good Privacy)。
另外,在開(kāi)放源代碼庫(kù)中也有一些免費(fèi)的加密和數(shù)字簽名軟件,其中最被認(rèn)可的是GPG(GNU Privacy Guard)。GPG是一個(gè)完全免費(fèi)、源代碼公開(kāi),并且與PGP完全兼容的軟件產(chǎn)品。今天,GPG已經(jīng)擁有眾多的企業(yè)和個(gè)人用戶(hù)。
在我國(guó),由于信息安全及隱私保護(hù)意識(shí)還比較薄弱,PGP或GPG在商業(yè)和個(gè)人用戶(hù)中的使用并不普遍。隨著信息安全及隱私帶來(lái)的問(wèn)題甚至訴訟的增加,更多企業(yè)和個(gè)人開(kāi)始把眼光投向安全問(wèn)題的解決。
但是,由于非專(zhuān)業(yè)用戶(hù)對(duì)簽名和加密等概念的畏難情緒,GPG的應(yīng)用還多局限于IT技術(shù)人員。本文將對(duì)Linux環(huán)境下如何應(yīng)用GPG進(jìn)行講解,為企業(yè)和個(gè)人用戶(hù)應(yīng)用GPG提供幫助。
建立GPG環(huán)境
GPG軟件作為用于加密和數(shù)字簽名的開(kāi)放源碼工具,許多Linux發(fā)行版本都自帶了該軟件。在默認(rèn)安裝的情況下,gpg會(huì)作為一個(gè)基本命令事先安裝好。
如果選用的Linux發(fā)行版默認(rèn)沒(méi)有安裝GPG,可以通過(guò)tar包或RPM包進(jìn)行安裝,可從http://www.gnupg.org/download/下載安裝包。安裝過(guò)程比較簡(jiǎn)單,這里省略了。
判斷是否安裝有GPG的方法也很簡(jiǎn)單。直接在命令行下輸入“gpg -h”命令,如果系統(tǒng)已經(jīng)安裝有GPG,就會(huì)顯示關(guān)于GPG用法的信息。
確定Linux系統(tǒng)中已經(jīng)安裝了GPG后,就可以開(kāi)始下面加密和簽名的工作了。
生成密鑰
用戶(hù)應(yīng)用GPG,首先要有一對(duì)自己的密鑰。所以,第一步就是產(chǎn)生一對(duì)密鑰。gpg命令通過(guò)大量參數(shù)提供所需要的幾乎所有操作。其中,參數(shù)“-gen-key”就是用來(lái)產(chǎn)生一對(duì)密鑰的。在安裝了GPG的Linux系統(tǒng)上可以運(yùn)行以下命令:
如果想對(duì)產(chǎn)生密鑰的操作進(jìn)行一些個(gè)性化設(shè)置,還可以加上其它參數(shù)。比如,要指定生成密鑰存放的位置,可以運(yùn)行以下命令:
命令開(kāi)始運(yùn)行后,首先,會(huì)看到版本和路徑信息如下:
隨后需要回答一系列問(wèn)題,以幫助產(chǎn)生一對(duì)密鑰。首先遇到的問(wèn)題是要求選擇密鑰使用的算法:
其中,DSA是數(shù)字簽名算法,RSA和ElGamal是兩種不同原理的非對(duì)稱(chēng)密鑰算法。通常可以選擇“1”,這樣生成的密鑰可以同時(shí)用作簽名和加密兩種用途。
接著,會(huì)要求選擇密鑰的長(zhǎng)度:
這里的密鑰長(zhǎng)度有768、1024和2048位三種。顯然,密鑰越長(zhǎng)越安全,但太長(zhǎng)又會(huì)影響使用的速度。所以,可以根據(jù)不同的需要選擇適合的長(zhǎng)度。筆者的應(yīng)用更重視安全性,所以選擇了最長(zhǎng)的2048位密鑰。
另外,還需要設(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)似以下的信息:
以上信息表示已經(jīng)成功地為“Terry Yu”生成并簽名了一對(duì)密鑰,密鑰過(guò)期時(shí)間為“2005-09-10”。在生成密鑰的同時(shí),默認(rèn)用戶(hù)目錄的.gnupg目錄中也存放了與該用戶(hù)相關(guān)的GPG配置及密鑰存儲(chǔ)文件。這些文件控制了用戶(hù)的GPG環(huán)境,用戶(hù)不能直接修改這些文件,所有改動(dòng)都將通過(guò)“gpg”命令實(shí)現(xiàn)。
查看密鑰
密匙生成后,可以隨時(shí)用以下命令查看。
查看所有密鑰:
查看所有公鑰:
查看所有私鑰:
列出所有簽名:
在非對(duì)稱(chēng)加密體系中,私鑰是由用戶(hù)保管,而公鑰是對(duì)外公開(kāi)的。用戶(hù)在生成密鑰對(duì)后,需要把其中的公鑰導(dǎo)出到一個(gè)文件中,然后將其分發(fā)給其它用戶(hù)。
導(dǎo)出公鑰的方法很簡(jiǎn)單,通過(guò)gpg命令的“-export”參數(shù)就可完成。為了使導(dǎo)出文件是ASCⅡ編碼的,還需要加上參數(shù)“-a”。比如,導(dǎo)出Terry Yu ASCⅡ編碼的公鑰文件,可以使用以下命令:
該命令最終生成ASCⅡ編碼的公鑰文件terry.asc如圖1。
2.核對(duì)“指紋”
公鑰是可以偽造的。James可以偽造一個(gè)Brian的公鑰,然后想辦法讓Terry得到。如果Terry對(duì)收到的公鑰不加驗(yàn)證,那么他發(fā)給Brian的加密郵件就可能被James解密。GPG的架構(gòu)中并沒(méi)有一個(gè)PKI這樣的證書(shū)管理系統(tǒng),GPG的公鑰信任是通過(guò)“Truth Web”實(shí)現(xiàn)的。
生成Terry公鑰的“指紋”:
這個(gè)“指紋”是惟一的。可以通過(guò)與對(duì)方核對(duì)“指紋”是否一致,來(lái)確定這個(gè)公鑰是否可信和合法。
3.簽名
在成功導(dǎo)入,并確定這個(gè)公鑰是可以相任之后,要立即對(duì)這個(gè)公鑰進(jìn)行簽名。這樣,就可以驗(yàn)證來(lái)自對(duì)方郵件的真實(shí)性了。
對(duì)公鑰進(jìn)行簽名可以使用如下命令:
檢查對(duì)方郵件,比如Brian的簽名:
現(xiàn)在,有了Brian簽名的公鑰,通過(guò)這個(gè)公鑰就可以和Brain進(jìn)行非對(duì)稱(chēng)加密通信了。
應(yīng)用GPG
GPG使用的是非對(duì)稱(chēng)的密鑰體系,用戶(hù)擁有一對(duì)密鑰,包括一個(gè)公鑰和一個(gè)私鑰。公鑰對(duì)外公布,私鑰則由自己保存。使用公鑰加密的數(shù)據(jù)可以用私鑰解密,同樣,使用私鑰加密的數(shù)據(jù)可以用公鑰解密。
非對(duì)稱(chēng)的密鑰可以用來(lái)加密和做數(shù)字簽名。當(dāng)用戶(hù)關(guān)心信息保密性時(shí),使用加密功能;當(dāng)用戶(hù)關(guān)注信息完整性及不可抵賴(lài)性時(shí),使用數(shù)字簽名功能;當(dāng)用戶(hù)需要同時(shí)關(guān)注信息的機(jī)密性、完整性及不可抵賴(lài)性時(shí),可以將加密和數(shù)學(xué)簽名混合使用。
簡(jiǎn)單了解這些密碼學(xué)概念后,就可以開(kāi)始真正的應(yīng)用實(shí)踐了。
共2頁(yè): 1 [2] 下一頁(yè) | ||
|