======利用GPG 加密工具來加密檔案(For 非對稱式加密)====== **GPG** 是實現公鑰及私鑰加密的方式,即為非對稱式加密。通常**加密**方式:公鑰加密檔案,私鑰解密;假若相反地是**數位簽章**:私鑰簽屬,公鑰檢驗來達到數位簽章的不可否認性。 =====GPG 加密步驟===== - 首先A電腦會產生公私鑰$gpg --list-keys -->看看A電腦是否已有金鑰對$gpg --gen-key -->開始產生金鑰對 請選擇你要使用的金鑰種類: (1) RSA 和 RSA (預設) (2) DSA 和 Elgamal (3) DSA (僅能用於簽署) (4) RSA (僅能用於簽署) 你要選哪一個? enter RSA 金鑰的長度可能介於 1024 位元和 4096 位元之間. 你想要用多大的金鑰尺寸? (2048) enter 你所要求的金鑰尺寸是 2048 位元 請指定這把金鑰的有效期限是多久. 0 = 金鑰不會過期 = 金鑰在 n 天後會到期 w = 金鑰在 n 週後會到期 m = 金鑰在 n 月後會到期 y = 金鑰在 n 年後會到期 金鑰的有效期限是多久? (0) 1 enter 金鑰將會在 西元2012年03月14日 (週三) 10時20分23秒 到期 以上正確嗎? (y/N)y enter GnuPG 需要建構使用者 ID 以識別你的金鑰. 真實姓名:Acomputerkey enter -->重要,指定一個user id 電子郵件地址: andy@utshop.tw enter 註釋: test enter 你選擇了這個使用者 ID: "Acomputerkey (test) " 變更姓名(N), 註釋(C), 電子郵件地址(E)或確定(O)/退出(Q)? O enter 再來,就會有提示視窗要你輸入兩次密碼 (加密你的私鑰) 我們需要產生大量的隨機位元組. 這個時候你可以多做一些事情 (像是敲打鍵盤, 移動滑鼠, 讀寫硬碟之類的) 這會讓隨機數字產生器有更多的機會獲得夠多的亂數 (就到自己的電腦 亂打字來產生更多亂數) gpg: 金鑰 A994E5B6 已標記成徹底信任了 公鑰和私鑰已建立及簽署. gpg: 正在檢查信任資料庫 gpg: 3 個勉強信任以及 1 個完全信任是 PGP 信任模型的最小需求 gpg: 深度: 0 有效: 2 已簽署: 0 信任: 0-, 0q, 0n, 0m, 0f, 2u gpg: 下次信任資料庫檢查將於 2012-03-14 進行 pub 2048R/A994E5B6 2012-03-13 [到期: 2012-03-14] 金鑰指紋 = BC27 35B7 A1FD 62B4 67BB D6C5 72B0 A3A0 A994 E5B6 (金鑰指紋後八碼 即是你的key id:A994E5B6) uid Acomputerkey (test) sub 2048R/8E439DBA 2012-03-13 [到期: 2012-03-14] - A匯出自己的A公鑰,再傳給B電腦$gpg --list-keys /home/andy/.gnupg/pubring.gpg ----------------------------- pub 2048R/A994E5B6 2012-03-13 [到期: 2012-03-14] uid Acomputerkey (test) sub 2048R/8E439DBA 2012-03-13 [到期: 2012-03-14] $gpg --armor (以ASSAIC碼輸出) --output file --export keyid$gpg --armor --output Akey --export A994E5B6scp Akey B位址:. - B再把A傳來的A公鑰匯入自己的電腦中$gpg --import Akey - B就可用A公鑰加密B檔案,加密後的B檔案再回傳A電腦$gpg --encrypt (加密) --armor -r keyid 想加密的檔案echo "My name is B file" >Bfile$gpg --encrypt --armor -r A994E5B6 Bfile$ls -l Bfile.asc (即是已加密的檔案)再把Bfile.asc傳給A - A電腦就用A私鑰解開加密B檔案$gpg --decrypt Bfile.asc > Bfile 會彈出要你輸入密碼 $cat Bfile My name is B file =====文件簽名與驗證===== 承上一個項目的環境,A電腦先產生金鑰對,A電腦匯出公鑰傳給B電腦。 A$gpg --sign install.log.syslog Enter passphrase: install.log.syslog.gpg #再將install.log.syslog.gpg傳給B電腦 B$gpg --verify install.log.syslog.gpg gpg: Signature made Fri 20 Jul 2012 03:34:37 PM CST using DSA key ID FE4B6BCF gpg: Good signature from "andyTest " ======參考資料====== * [[http://www.gentoo.org/doc/zh_tw/gnupg-user.xml|GnuPG Gentoo 使用者指南]] * [[http://www.gnupg.org/howtos/zh/index.html|(GnuPG) 袖珍 HOWTO (中文版)]] * [[http://security.nknu.edu.tw/textbook/|網路安全與實務理論-PGP/GnuPG-楊中皇]]