加密和數字簽名作為保護信息機密性、完整性和不可抵賴性的重要手段在各種信息通信場合得到廣泛的應用。目前,已有不少商業加密和數字簽名產品,比如商業軟件PGP(Pretty Good Privacy)。
另外,在開放源代碼庫中也有一些免費的加密和數字簽名軟件,其中最被認可的是GPG(GNU Privacy Guard)。GPG是一個完全免費、源代碼公開,并且與PGP完全兼容的軟件產品。今天,GPG已經擁有眾多的企業和個人用戶。
在我國,由于信息安全及隱私保護意識還比較薄弱,PGP或GPG在商業和個人用戶中的使用并不普遍。隨著信息安全及隱私帶來的問題甚至訴訟的增加,更多企業和個人開始把眼光投向安全問題的解決。
但是,由于非專業用戶對簽名和加密等概念的畏難情緒,GPG的應用還多局限于IT技術人員。本文將對Linux環境下如何應用GPG進行講解,為企業和個人用戶應用GPG提供幫助。
建立GPG環境
GPG軟件作為用于加密和數字簽名的開放源碼工具,許多Linux發行版本都自帶了該軟件。在默認安裝的情況下,gpg會作為一個基本命令事先安裝好。
如果選用的Linux發行版默認沒有安裝GPG,可以通過tar包或RPM包進行安裝,可從http://www.gnupg.org/download/下載安裝包。安裝過程比較簡單,這里省略了。
判斷是否安裝有GPG的方法也很簡單。直接在命令行下輸入“gpg -h”命令,如果系統已經安裝有GPG,就會顯示關于GPG用法的信息。
確定Linux系統中已經安裝了GPG后,就可以開始下面加密和簽名的工作了。
生成密鑰
用戶應用GPG,首先要有一對自己的密鑰。所以,第一步就是產生一對密鑰。gpg命令通過大量參數提供所需要的幾乎所有操作。其中,參數“-gen-key”就是用來產生一對密鑰的。在安裝了GPG的Linux系統上可以運行以下命令:
如果想對產生密鑰的操作進行一些個性化設置,還可以加上其它參數。比如,要指定生成密鑰存放的位置,可以運行以下命令:
命令開始運行后,首先,會看到版本和路徑信息如下:
隨后需要回答一系列問題,以幫助產生一對密鑰。首先遇到的問題是要求選擇密鑰使用的算法:
其中,DSA是數字簽名算法,RSA和ElGamal是兩種不同原理的非對稱密鑰算法。通??梢赃x擇“1”,這樣生成的密鑰可以同時用作簽名和加密兩種用途。
接著,會要求選擇密鑰的長度:
這里的密鑰長度有768、1024和2048位三種。顯然,密鑰越長越安全,但太長又會影響使用的速度。所以,可以根據不同的需要選擇適合的長度。筆者的應用更重視安全性,所以選擇了最長的2048位密鑰。
另外,還需要設定密鑰過期的時間:
原則上,密鑰使用的頻率越高,密鑰有效的時間越長,被攻擊的可能性就越大。所以,要根據應用的實際情況綜合考慮,確定一個適當的時間長度。需要注意的是,密鑰要定期更換,建議絕對不要永遠使用同一對密鑰。
最后,需要輸入一些個人信息,包括真實姓名、電子郵件地址等,用來識別密鑰,最好是如實填寫。比如:
然后,必須輸入一個密碼。密碼用來保護密鑰,沒有這個密碼,任何人都不能看到密鑰本身的內容。密碼是在密鑰文件泄露后惟一的保密措施,它的最大敵人是暴力破解和字典攻擊。所以,一定要選擇一個強壯的密碼,來有效地對抗這些攻擊。
密碼確定以后,系統開始運算:
這時需要隨便地敲擊鍵盤或是移動鼠標,以產生一些隨機數,協助密鑰的順利生成。注意,如果沒有以上動作,很可能最終不能產生密鑰。
系統運算完成后,會出現類似以下的信息:
以上信息表示已經成功地為“Terry Yu”生成并簽名了一對密鑰,密鑰過期時間為“2005-09-10”。在生成密鑰的同時,默認用戶目錄的.gnupg目錄中也存放了與該用戶相關的GPG配置及密鑰存儲文件。這些文件控制了用戶的GPG環境,用戶不能直接修改這些文件,所有改動都將通過“gpg”命令實現。
查看密鑰
密匙生成后,可以隨時用以下命令查看。
查看所有密鑰:
查看所有公鑰:
查看所有私鑰:
列出所有簽名:
在非對稱加密體系中,私鑰是由用戶保管,而公鑰是對外公開的。用戶在生成密鑰對后,需要把其中的公鑰導出到一個文件中,然后將其分發給其它用戶。
導出公鑰的方法很簡單,通過gpg命令的“-export”參數就可完成。為了使導出文件是ASCⅡ編碼的,還需要加上參數“-a”。比如,導出Terry Yu ASCⅡ編碼的公鑰文件,可以使用以下命令:
該命令最終生成ASCⅡ編碼的公鑰文件terry.asc如圖1。
2.核對“指紋”
公鑰是可以偽造的。James可以偽造一個Brian的公鑰,然后想辦法讓Terry得到。如果Terry對收到的公鑰不加驗證,那么他發給Brian的加密郵件就可能被James解密。GPG的架構中并沒有一個PKI這樣的證書管理系統,GPG的公鑰信任是通過“Truth Web”實現的。
生成Terry公鑰的“指紋”:
這個“指紋”是惟一的。可以通過與對方核對“指紋”是否一致,來確定這個公鑰是否可信和合法。
3.簽名
在成功導入,并確定這個公鑰是可以相任之后,要立即對這個公鑰進行簽名。這樣,就可以驗證來自對方郵件的真實性了。
對公鑰進行簽名可以使用如下命令:
檢查對方郵件,比如Brian的簽名:
現在,有了Brian簽名的公鑰,通過這個公鑰就可以和Brain進行非對稱加密通信了。
應用GPG
GPG使用的是非對稱的密鑰體系,用戶擁有一對密鑰,包括一個公鑰和一個私鑰。公鑰對外公布,私鑰則由自己保存。使用公鑰加密的數據可以用私鑰解密,同樣,使用私鑰加密的數據可以用公鑰解密。
非對稱的密鑰可以用來加密和做數字簽名。當用戶關心信息保密性時,使用加密功能;當用戶關注信息完整性及不可抵賴性時,使用數字簽名功能;當用戶需要同時關注信息的機密性、完整性及不可抵賴性時,可以將加密和數學簽名混合使用。
簡單了解這些密碼學概念后,就可以開始真正的應用實踐了。
共2頁: 1 [2] 下一頁 | ||
|