歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux服務器

用GPG加密使您的信息安全保障無憂二(圖)

導入公鑰
  
  作為用戶,也會收到別人的GPG公鑰,它們可能來自網站、電子郵件、FTP和目錄服務等,只要信任其來源,就可以將其導入自己的GPG環境,之後才可以與相應的人員進行基於GPG的各種應用。導入公鑰的過程可以分為以下三步:
  
  1.導入
  
  比如,Terry收到朋友Brian的公鑰文件brian.gpg,可以使用以下命令導入文件:
  
  #gpg --import terry.gpg
  
  2.核對“指紋”
  
  公鑰是可以偽造的。James可以偽造一個Brian的公鑰,然後想辦法讓Terry得到。如果Terry對收到的公鑰不加驗證,那麼他發給Brian的加密郵件就可能被James解密。GPG的架構中並沒有一個PKI這樣的證書管理系統,GPG的公鑰信任是通過“Truth Web”實現的。
  
  生成Terry公鑰的“指紋”:
  
  #gpg --fingerprint [email protected]
  pub 1024D/7234E374 2004-09-10 Terry
  Yu (for test) <[email protected]>
  Key fingerprint = A58F D71A 28BA
  499D 805B 588E 82FB CD0F 7234 E374
  sub 2048g/4907EA0A 2004-09-10 [expires: 2005-09-10]
  
  這個“指紋”是惟一的。可以通過與對方核對“指紋”是否一致,來確定這個公鑰是否可信和合法。
  
  3.簽名
  
  在成功導入,並確定這個公鑰是可以相任之後,要立即對這個公鑰進行簽名。這樣,就可以驗證來自對方郵件的真實性了。
  
  對公鑰進行簽名可以使用如下命令:
  
  #gpg --sing-key [email protected]
  
  或者
  #gpg --edit-key name
  #command > sign
  
  檢查對方郵件,比如Brian的簽名:
  
  #gpg --check-sigs [email protected]
  
  現在,有了Brian簽名的公鑰,通過這個公鑰就可以和Brain進行非對稱加密通信了。
  
  應用GPG
  
  GPG使用的是非對稱的密鑰體系,用戶擁有一對密鑰,包括一個公鑰和一個私鑰。公鑰對外公布,私鑰則由自己保存。使用公鑰加密的數據可以用私鑰解密,同樣,使用私鑰加密的數據可以用公鑰解密。
  
  非對稱的密鑰可以用來加密和做數字簽名。當用戶關心信息保密性時,使用加密功能;當用戶關注信息完整性及不可抵賴性時,使用數字簽名功能;當用戶需要同時關注信息的機密性、完整性及不可抵賴性時,可以將加密和數學簽名混合使用。
  
  簡單了解這些密碼學概念後,就可以開始真正的應用實踐了。
  
  對文件進行加密和數字簽名
  
  KDE中提供了圖形化的加密操作方法。比如,在KDE中對一個文件加密,只需在KDE文件管理器Konqueror中選中該文件,單擊右鍵選擇“Actions”中的“Encrypt File”就可以加密文件。加密後的文件以.asc結尾。
  
  對於圖形方式的加密操作不多做介紹,下面將重點放在命令行操作方式上,介紹命令行下的各種文件加密和簽名的操作方法。
  
  1.對文件進行數字簽名
  
  #gpg --clearsign policy.txt
  You need a passphrase to unlock the secret key for
  user: "test (test) <[email protected]>"
  1024-bit DSA key, ID ADD93830, created 2004-07-01
  
  運行以上命令,生成一個名為report.txt.asc的文件,該文件中除了原文件信息外還包含數字簽名信息。
  
  2.驗證文件的數字簽名
  
  #gpg --verify policy.txt.asc
  gpg: Signature made 2004年11月04日 星期四 15時58分07秒 UTC using DSA key ID ADD93830
  gpg: Good signature from "test (test) <[email protected]>"
  
  以上命令運行的結果顯示該簽名是正確的。
  
  3.用指定的公鑰對文件加密
  
  #gpg --encrypt -r [email protected] report.txt
  gpg: checking the trustdb
  gpg: checking at depth 0 signed=0 ot(-/q/n/m/f/u)=0/0/0/0/0/1
  gpg: next trustdb check due at 2005-09-10
  
  運行以上命令,使用自己的公鑰加密report.txt文件,生成加密文件report.txt.gpg。如果使用編輯軟件打開該加密文件,會發現它包含的是一些不可理解的字符和亂碼。
  
  4.用私鑰對加密文件解密
  
  #gpg --decrypt report.txt.gpg >report.txt
  You need a passphrase to unlock the secret key for
  user: "test1 (unclassfication) <[email protected]>"
  2048-bit ELG-E key, ID 33735683, created 2004-09-29
  (main key ID 79EB3D97)
  gpg: encrypted with 2048-bit ELG-E key, ID 33735683,
  created 2004-09-29
  "test1 (unclassfication) <[email protected]>"
  
  以上命令要求輸入對應私鑰的保護口令才能成功解密,解密後的文件內容被輸出到report.txt文件中。
  
  5.用公鑰同時進行文件簽名和加密
  
  #gpg -se -r [email protected] report.txt
  You need a passphrase to unlock the secret key for
  user: "test (test) <[email protected]>"
  1024-bit DSA key, ID ADD93830, created 2004-07-01
  
  以上命令要求輸入對應私鑰的保護口令,輸入正確的口令後,簽名和加密成功完成。
  
  這些都是應用GPG簽名和加密文件的一些常用命令,更詳細的用法可以參考GPG的幫助文件。
  
  對電子郵件進行加密和數字簽名
  
  實際上,GPG應用最多的地方是在電子郵件的加密和數字簽名上。許多電子郵件客戶端軟件都支持PGP/GPG方式的加密及數字簽名。這裡以Kmail為例,介紹如何設置Kmail,並利用Kmail發送加密及數字簽名的電子郵件。
  
  Kmail是KDE環境中的電子郵件客戶端,類似於Windows下的Outlook Express。在選單中選擇“Settings→Configure-Kmail→Identites”,選定一個身份,單擊“Modify”進行編輯。選擇其中的“Advanced”標簽頁,可以看到類似圖2的界面。
  
 用GPG加密使您的信息安全保障無憂二(圖)(圖一)

  
圖2 Kmail的設置界面

  
  其中,“OpenPGP Key”項是該身份所對應的PGP或GPG密鑰,可以單擊“Change”按鈕從GPG環境中選擇對應的密鑰對。
  
  保存後,GPG的設置完成。試寫一封郵件,如圖3所示。圖中工具欄中凹下去的“鋼筆尖”圖標表示此郵件使用了數字簽名,緊靠旁邊的鎖形圖標表示加密,如果兩個圖標都凹下去則表示同時使用了加密和數字簽名。
  
 用GPG加密使您的信息安全保障無憂二(圖)(圖二)

  
圖3 使用數字簽名的電子郵件

  
  發送郵件時,Kmail會要求給出對應密鑰的保護口令,如圖4所示。
  
 用GPG加密使您的信息安全保障無憂二(圖)(圖三)

  
圖4 要求輸入密鑰保護口令

  
  正確輸入保護口令後,會彈出一個確認窗口,如圖5。
  
用GPG加密使您的信息安全保障無憂二(圖)(圖四)

  
圖5 確認窗口

  
  確認內容無誤後,單擊“OK”按鈕,一封帶有數字簽名的電子郵件就成功發出。發送加密郵件,以及發送同時加密和數字簽名的郵件,方法都是類似的。
  
  軟件包簽名驗證
  對於Red Hat等Linux發行商來說,他們常常會利用GPG對發布的軟件包進行簽名。用戶可以通過驗證軟件包的簽名來確保得到的軟件包沒有損壞,或者是被他人動過手腳。
  
  驗證一個下載軟件包的GPG簽名可以按照以下步驟來進行:
  
  1.從網上下載或其它方式得到軟件發行商的公鑰,並將其導入自己的GPG環境中。
  
  2.通過對比“電子指紋”來確認公鑰,並對此公鑰進行簽名。
  
  3.使用以下命令來驗證軟件包的GPG簽名:
  
  #gpg --verify singaturefile.tar.gz taballpackage.gz
  
  如果該軟件是RPM格式的,還可以使用如下命令來驗證:
  
  #rpm -Kv your.rpm
  
  密鑰管理
  
  前面介紹了GPG在加密和簽名兩方面的應用,在應用過程中用戶要認真地對待密鑰管理問題。GPG的密鑰采用的是信任機制,並沒有一個中心的PKI可以幫助發布和驗證GPG用戶的公鑰。為了防止公鑰欺騙,保證公鑰的不可否認性(Non-repudiation),需要有一種機制來進行管理。下面是一些有益的建議,可供參考。
  
  ◆ 備份好私鑰
  
  一旦私鑰丟失或損壞,則無法打開以前加密的文件。並且,即使知道私鑰被他人濫用,也無法使自己的公鑰過期。有了私鑰的備份,就能有效地回避此類風險。
  
  ◆ 建立有過期保護的公鑰機制
  
  萬一私鑰丟失不能人工收回公鑰時,公鑰也可以在預定時間後自動過期。
  
  ◆ 為私鑰加上強口令保護
  
  這樣,即使私鑰文件洩漏,還有口令保護。保護口令一定要有足夠的復雜度,才能有效地對抗暴力破解。
  
  ◆ 多重機制
  
  在緊急情況下恢復密鑰要有多重控制。
  
  ◆ 使用版本控制軟件
  
  使用版本控制軟件來收集和維護自己的公鑰庫。版本控制軟件可以有效地記錄歷史變更情況,保證公鑰庫的有條不紊。
  
  小結
  
  GPG作為一個開源並且免費的加密和數字簽名軟件已經存在多年。它不但可以為企業、個人之間的重要信息提供加密保護,還可以為出版的軟件、內核等電子產品進行數字簽名

Copyright © Linux教程網 All Rights Reserved