GnuPG教學
簡介
GPG全名為Gnu Privacy Guard(GnuPG) ,最初的目的是為了加密通訊的加密軟體,是為了替代PGP並符合GPL而產生的。目前很多自由軟體社群要驗證身份也都會需要用到這套工具。
使用
安裝
- 指令
1 | # Ubuntu |
- GUI
- 其實現在GUI介面都做得很好看了,而且也很容易上手,建議可以用GUI的tools。
- MAC的GUI tools可從gpgtools.org安裝
建立key
先產生key
- 可選擇”RSA & RSA”,key長度為4096
- 真實姓名就填自己的英文名字,備註可填中文
- 產生的key會放在
~/.gnupg
這個目錄下 - 記得要輸入密碼,防止別人入侵系統時可以直接拿到私鑰
- 最後會產生出user ID的hash(UID)
1
2
3gpg --full-generate-key
# 如果gen key發生問題,可用如下指令後再一次
gpgconf --kill gpg-agent接下來就是產生撤銷憑證,未來忘記密碼可以用來撤銷,因此要小心保管
- 注意如果key有填utf-8,這步在MAC可能會出問題,不過如果是用GUI卻沒問題,原因並不清楚。
1
2
3gpg -o revocation.crt --gen-revoke [UID]
# 也可以直接放到.gnupg內
gpg --gen-revoke [UID] > ~/.gnupg/revocation-[UID].crt釋出公鑰,這個公鑰可以傳給朋友,或是上傳到server
- -a:代表匯出明碼
- -o:代表輸出檔名
1
gpg -ao mypublic.asc --export [UID]
如果是要把朋友的公鑰放入已知道人的清單
1
gpg --import friends.asc
可以用fingerprint顯示自已的公鑰後,弄到pdf上印出
1
gpg -v --fingerprint [UID]
管理key
查看、編輯與刪除key
查看目前的鑰匙
1
2
3
4
5
6# 列出所有公鑰
gpg --list-keys
# 同時看簽名
gpg --list-sigs
# 列出所有私鑰
gpg --list-secret-keys編輯key(對key簽名也是用同樣的方法)
1
gpg --edit-key [UID]
刪除已存入key的方式,如果有私鑰要先刪除
1
2
3
4# 先刪除私鑰
gpg --delete-secret-key [UID]
# 刪除公鑰
gpg --delete-key [UID]
搜尋
首先先搜尋對象的public key
- 這裡指定的key server是用MIT的,可以找其他也有公信力的Server,可參考wiki
1
gpg --keyserver hkp://pgp.mit.edu --search-keys 'Linus Torvalds'
得到對方的public key後,將其存入
~/.gnupg/pubring.gpg
1
gpg --keyserver hkp://pgp.mit.edu --recv-keys 79BE3E4300411886
可查看與更新朋友的public key
1
2gpg --list-keys
gpg --refresh-keys
import/export
除了搜尋以外,也可以用import/export的方式管理朋友的公鑰
1
2gpg --import public_keys_list.txt
gpg --export -ao public_keys_list.txtimport/export自己的金鑰
1
2
3
4
5
6# export 公鑰
gpg --armor --output public-key.asc --export [UID]
# export 私鑰
gpg --armor --output private-key.asc --export-secret-keys [UID]
# import
gpg --import [金鑰]
用key傳送接收信件
假設我們要傳送secret.tgz給朋友,可以先進行加密
1
gpg -ear 朋友 < secret.tgz > secret.tgz.asc
朋友收到secret.tgz.asc後可用如下指令變回secret.tgz
1
gpg -d < secret.tgz.asc > secret.tgz
如果要確認發信人身份
1
2
3
4# 先對檔案簽名
gpg --clearsign file.txt
# 驗證檔案身份
gpg --verify < file.txt.asc