環境
Ubuntu18.04
gpg version 2.24
參考文檔
簡介
他人用公鑰來加密,自己用私鑰來解密
自己用私鑰來簽名,他人用公鑰來驗證
The public key is given out to the world; the private key must be kept a secret. Anyone possessing the public key can encrypt a message so that it can only be read by someone possessing the private key. It's also possible to use a private key to sign a file, not encrypt it. If a private key is used to sign a file, then anyone who has the public key can check that the file was signed by that key. Anyone who doesn't have the private key can't forge such a signature.
通信流程
- Say S wants to send a message to G. To do that:
- S looks for G's public key.
- S encrypts the message using G's public key.
- S signs the encrypted message with his own private key.
- G receives an encrypted signed message. The untrusted email header says it is from S.
- G looks for S's public key.
- G verifies the signature using S's public key. Now, G is convinced message is from S.
- G decrypts message using his own private key.
The whole scheme relies on the assumption that public keys are trustworthy
詞彙
簡寫 | 含義 | |
---|---|---|
key pair | 密鑰對(包含兩部分) | |
primary key [master key] | 主密鑰(包括主公鑰,主私鑰) | |
public key | pub | 公鑰 |
secret key | sec | 私鑰 |
sub-key | sub | 子公鑰 |
secret sub-key | ssb | 子私鑰 |
key fingerprint | 密鑰指紋 |
文件/目錄
/private-keys-v1.d/
私鑰存放的地方
/pubring.kbx
以其他格式存放的公鑰環,與gpgsm
共享
/trustdb.gpg
存放信任數據
/openpgp-revocs.d/
gpg存儲預先生成的吊銷證書的目錄。文件名對應於相應密鑰的OpenPGP指紋。建議備份這些證書
GnuPG 功能
-
跟算法有關,有些算法不支持某些功能
-
有些功能是私鑰部分的,例如 認證[C]、簽名[S]、解密
刪除私鑰部分則無法完成操作
-
有些功能是公鑰部分的,例如 驗證簽名、加密[E]
刪除私鑰部分可以完成操作
# 解密 lfp@legion:~$ gpg --homedir ~/.gnupg-test -o ~/bin/a.de.txt --decrypt ~/bin/a.en.txt gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test' gpg: 由 4096 位的 RSA 密鑰加密,鑰匙號爲 0x9B690269F3C16E7B、生成於 2020-05-05 “usmile <[email protected]>” gpg: 解密失敗:沒有祕匙 # 簽名 lfp@legion:~$ gpg --homedir ~/.gnupg-test --sign ~/bin/test.txt gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test' gpg: no default secret key: 沒有祕匙 gpg: signing failed: 沒有祕匙
S: sign
簽名功能
E: encrypt
加密功能
A: authenticate
作用
-
身份驗證功能
-
在其他協議中用於身份驗證,例如SSH TLS
其他
- 只能通過 --expert 選項製作具有該功能的子公鑰
C: certify
主密鑰必備能力,且只有主密鑰具有
作用
- 認證具有不同功能的子密鑰)
特性
-
在key id 之後輸入!,將強制使用該key
-
當多個密鑰同時具有某個功能的時候,優先使用最新未吊銷的密鑰
例如有兩個具有[S]的子密鑰, 在未指定使用哪個密鑰簽名的情況下,優先使用最新未被吊銷的密鑰
-
密鑰的過期時間相當於一個自簽名(自己的私鑰給公鑰簽名),公鑰可以驗證自身的簽名
修改過期時間就會給自己新增加一個自簽名(覆蓋舊簽名,但不刪除)
-
公鑰、私鑰的keyID是相同的,一起被創建,每個公鑰對應一個私鑰
-
一個主密鑰可以綁定多個子密鑰,平時加密解密使用的都是子密鑰,主密鑰只有在某些特定的情況下才使用的,比如新建一個子密鑰,撤銷廢除一個子密鑰,簽名認證別人的密鑰等。
這樣設計的好處的是子密鑰遺失和泄漏不影響主密鑰的信用,只需要撤銷廢除子密鑰,然後再發布到密鑰服務器,告訴其它人這個子密鑰已經作廢了,主密鑰的公鑰長久積累下來的多人簽名認證可以長久保留下來
如果重建這層信任還要再讓別人再簽名認證你的新密鑰,很麻煩。所以主密鑰特別重要的,如果它泄漏了,那這個主密鑰下所有子密鑰全都報廢
-
正確的使用姿勢是導出主私鑰備份,刪除本機的主私鑰,本機只保留子私鑰用於日常操作,哪怕子密鑰被人盜取,也不影響主密鑰,盡最大程度保護你的主密鑰。
命令
gpg --armor
以ASCII 形式輸出
gpg --output
gpg -o file
指定輸出文件名
gpg --version
不能縮寫,打印版本和許可信息
gpg --homedir
僅在命令行有效
指定生成的密鑰環以及其他數據保存的地方
默認是~/.gnupg
目錄
mkdir ~/.gnupg-test
gpg --homedir ~/gnupg-test
gpg --expert
允許用戶執行某些荒謬或“愚蠢”的事情,例如對已過期或已撤銷的密鑰進行簽名,或某些潛在的不兼容的事情,例如生成異常的密鑰類型。這還會禁用有關潛在不兼容操作的某些警告消息。顧名思義,此選項僅適用於專家。如果您不完全瞭解它允許您執行的操作,請不要進行此操作
在創建具有身份驗證功能[A]的子密鑰時需要添加此參數,不加此參數,缺少一些可選項
gpg --full-gen-key
可以自定義密鑰的參數,具有所有的可選項
gpg --gen-key
使用當前默認的參數快速生成密鑰
同時會生成密鑰的撤銷證書
生成的主密鑰默認具有[SC] 兩項功能
In addition to the key a revocation certificate is created and stored in the ‘openpgp-revocs.d’ directory below the GnuPG home directory
gpg --list-keys
gpg -k
列出公鑰,如果沒有指定則列出所有
gpg --list-secret-keys
gpg -K
列出私鑰,如果沒有指定則列出所有
lfp@legion:~$ gpg --homedir ~/.gnupg-test -k
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
/home/lfp/.gnupg-test/pubring.kbx
---------------------------------
pub rsa4096/0x5AF8B6B68CC7F785 2020-05-05 [SC] # 後面沒有日期的是永不過期
密鑰指紋 = 0298 F65F 32F5 A7CA D764 A941 5AF8 B6B6 8CC7 F785
uid [ 絕對 ] usmile <[email protected]>
sub rsa4096/0x9B690269F3C16E7B 2020-05-05 [E] # 後面沒有日期的是永不過期
sub rsa3072/0x8EF9605115CB7A14 2020-05-05 [S] [有效至:2020-05-12]
gpg --gen-revoke
爲整個密鑰(主密鑰以及所有子密鑰)生成撤銷證書,如果僅僅想撤銷某個子密鑰則通過--edit
命令完成
gpg --gen-revoke keyId --output path/revoke.asc
gpg --edit-key
gpg --edit-key <keyid>
編輯該keyid代表的密鑰
gpg --delete-keys
gpg --delete-keys <key-id>
從密鑰環中刪除該密鑰的公鑰部分,但是需要先刪除私鑰部分
gpg --delete-secret-keys
gpg --delete-secret-keys <key-id>
從密鑰環中刪除該密鑰的私鑰部分,公鑰部分還存在
gpg --delete-secret-and-public-key
gpg --delete-secret-and-public-key <key-id>
從密鑰環中刪除該密鑰對,先刪除私鑰再刪除公鑰
gpg --encrypt
gpg --recipient <uid> --output <file-name_en> --encrypt <file-name>
gpg --homedir ~/.gnupg-test -r 0x8EF9605115CB7A14 -o ~/bin/a.en.txt --encrypt ~/bin/a.txt
指定用誰的公鑰加密文件,並指定加密後的文件名
gpg --decrypt
gpg --output <fine-name_de> --decrypt <file-name_en>
解密文件,並指定解密後生成的文件名
gpg --sign
採用二進制儲存,生成[.gpg]文件
默認情況下選擇最新未被吊銷的具有[S]功能的密鑰
可以通過--local-user
和 --default-key
指定
gpg --clearsign
採用ASCII碼形式儲存,生成[.asc]文件
gpg --detach-sign
與文件內容分開存放,生成單獨的簽名文件[.sig](二進制形式)
gpg --detach-sign --armor
生成單獨的簽名文件[.asc](ASCII碼形式)
gpg --verify
gpg --verify [.gpg]
驗證簽名
gpg --export
gpg --homedir ./gnupg-test --export --armor --o public-keys.gpg 0xD93D03C13478D580
導出所有密鑰的公鑰部分 (master + subkeys)
可以指定具體某個密鑰
gpg --export-secret-keys
gpg --homedir ./gnupg-test --export-secret-keys --armor --o secret-keys.gpg 0xD93D03C13478D580
導出所有密鑰的私鑰部分 (master + subkeys)
gpg --export-secret-subkeys
gpg --homedir ./gnupg-test --export-secret-subkeys --armor --o secret-subkey_sign.gpg 0x1ED73636975EC6DE!
導出某個子密鑰的私鑰部分
公鑰服務器
hkp(HTTP Keyserver Protocol):http密鑰服務器協議
公鑰服務器可以通過交換機制同步新上傳的公鑰
公鑰服務器沒有檢查機制,任何人都可以用你的名義上傳公鑰,所以沒有辦法保證服務器上的公鑰的可靠性
一般可以通過公鑰的指紋來覈對,但是指紋也會被僞造
hkp://keyserver.ubuntu.com:80
hkp://keyserver.ubuntu.com
hkp://pgp.mit.edu:80
hkps://pgp.mit.edu
配置文件
默認的配置文件是 ~/.gnupg/gpg.conf
和 ~/.gnupg/dirmngr.conf
.
不會自動創建,需要手動創建並添加需要的配置
Those files are not there by default, create blank files instead, then use gpg(1) and see the FILES section to configure what you want.
You do not need any sort of default files.
創建配置文件
# 創建配置文件
gpg.conf
# 添加如下內容
################################################################################
# GnuPG View Options
# 顯示keyId 16位 16進制數字
# Select how to display key IDs. "long" is the more accurate (but less
# convenient) 16-character key ID. Add an "0x" to include an "0x" at the
# beginning of the key ID.
keyid-format 0xlong
# 顯示指紋標識
# List all keys with their fingerprints. This is the same output as --list-keys
# but with the additional output of a line with the fingerprint. If this
# command is given twice, the fingerprints of all secondary keys are listed too.
with-fingerprint
# 保存退出
生成主密鑰
lfp@legion:~$ mkdir ~/.gnupg-test
lfp@legion:~$ vim ~/.gnupg-test/gpg.conf
lfp@legion:~$ gpg --homedir ~/.gnupg-test --expert --full-gen-key
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
gpg: keybox '/home/lfp/.gnupg-test/pubring.kbx' created
請選擇您要使用的密鑰種類:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (僅用於簽名)
(4) RSA (僅用於簽名)
(7) DSA (自定義用途)
(8) RSA (自定義用途)
(9) ECC and ECC
(10) ECC (sign only)
(11) ECC (set your own capabilities)
(13) Existing key
您的選擇? 8
RSA 密鑰可能的操作: 簽名 驗證 加密 認證
目前允許的操作: 簽名 驗證 加密
(S) 選擇是否用於簽名
(E) 選擇是否用於加密
(A) 選擇是否用於認證
(Q) 已完成
您的選擇? s
RSA 密鑰可能的操作: 簽名 驗證 加密 認證
目前允許的操作: 驗證 加密
(S) 選擇是否用於簽名
(E) 選擇是否用於加密
(A) 選擇是否用於認證
(Q) 已完成
您的選擇? e
RSA 密鑰可能的操作: 簽名 驗證 加密 認證
目前允許的操作: 驗證
(S) 選擇是否用於簽名
(E) 選擇是否用於加密
(A) 選擇是否用於認證
(Q) 已完成
您的選擇? q
RSA 密鑰長度應在 1024 位與 4096 位之間。
您想要用多大的密鑰尺寸?(3072) 4096
您所要求的密鑰尺寸是 4096 位
請設定這把密鑰的有效期限。
0 = 密鑰永不過期
<n> = 密鑰在 n 天后過期
<n>w = 密鑰在 n 周後過期
<n>m = 密鑰在 n 月後過期
<n>y = 密鑰在 n 年後過期
密鑰的有效期限是?(0) 1
密鑰於 2020年05月04日 星期一 19時53分23秒 CST 過期
以上正確嗎?(y/n) y
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <[email protected]>"
真實姓名: usmile
電子郵件地址: [email protected]
註釋:
您選定了這個用戶標識:
“usmile <[email protected]>”
更改姓名(N)、註釋(C)、電子郵件地址(E)或確定(O)/退出(Q)? o
# 此時需要輸入一個口令,一定要記住,後面編輯該密鑰時需要用到
我們需要生成大量的隨機字節。這個時候您可以多做些瑣事(像是敲打鍵盤、移動
鼠標、讀寫硬盤之類的),這會讓隨機數字發生器有更好的機會獲得足夠的熵數。
gpg: /home/lfp/.gnupg-test/trustdb.gpg:建立了信任度數據庫
gpg: 密鑰 0x2954C91DEAE3C032 被標記爲絕對信任
gpg: directory '/home/lfp/.gnupg-test/openpgp-revocs.d' created
gpg: revocation certificate stored as '/home/lfp/.gnupg-test/openpgp-revocs.d/76D139A8F9172972195CF33C2954C91DEAE3C032.rev'
公鑰和私鑰已經生成並經簽名。
pub rsa4096/0x2954C91DEAE3C032 2020-05-03 [C] [有效至:2020-05-04]
密鑰指紋 = 76D1 39A8 F917 2972 195C F33C 2954 C91D EAE3 C032
uid usmile <[email protected]>
檢查是否成功
lfp@legion:~$ gpg --homedir ~/.gnupg-test -K
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
gpg: 正在檢查信任度數據庫
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: 深度:0 有效性: 1 已簽名: 0 信任度:0-,0q,0n,0m,0f,1u
gpg: 下次信任度數據庫檢查將於 2020-05-04 進行
/home/lfp/.gnupg-test/pubring.kbx
---------------------------------
sec rsa4096/0x2954C91DEAE3C032 2020-05-03 [C] [有效至:2020-05-04]
密鑰指紋 = 76D1 39A8 F917 2972 195C F33C 2954 C91D EAE3 C032
uid [ 絕對 ] usmile <[email protected]>
創建子密鑰[S]
lfp@legion:~$ gpg --homedir ~/.gnupg-test --expert --edit-key 0x2954C91DEAE3C032
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
私鑰可用。
sec rsa4096/0x2954C91DEAE3C032
創建於:2020-05-03 有效至:2020-05-04 可用於:C
信任度:絕對 有效性:絕對
[ 絕對 ] (1). usmile <[email protected]>
gpg> addkey
請選擇您要使用的密鑰種類:
(3) DSA (僅用於簽名)
(4) RSA (僅用於簽名)
(5) ElGamal (僅用於加密)
(6) RSA (僅用於加密)
(7) DSA (自定義用途)
(8) RSA (自定義用途)
(10) ECC (sign only)
(11) ECC (set your own capabilities)
(12) ECC (encrypt only)
(13) Existing key
您的選擇? 4
RSA 密鑰長度應在 1024 位與 4096 位之間。
您想要用多大的密鑰尺寸?(3072)
您所要求的密鑰尺寸是 3072 位
請設定這把密鑰的有效期限。
0 = 密鑰永不過期
<n> = 密鑰在 n 天后過期
<n>w = 密鑰在 n 周後過期
<n>m = 密鑰在 n 月後過期
<n>y = 密鑰在 n 年後過期
密鑰的有效期限是?(0) 1
密鑰於 2020年05月04日 星期一 19時57分58秒 CST 過期
以上正確嗎?(y/n) y
真的要建立嗎?(y/N) y
我們需要生成大量的隨機字節。這個時候您可以多做些瑣事(像是敲打鍵盤、移動
鼠標、讀寫硬盤之類的),這會讓隨機數字發生器有更好的機會獲得足夠的熵數。
sec rsa4096/0x2954C91DEAE3C032
創建於:2020-05-03 有效至:2020-05-04 可用於:C
信任度:絕對 有效性:絕對
ssb rsa3072/0x6E3823DE57F89766
創建於:2020-05-03 有效至:2020-05-04 可用於:S
[ 絕對 ] (1). usmile <[email protected]>
# 注意一定要保存才能生效
gpg> save
查看是否創建成功
lfp@legion:~$ gpg --homedir ~/.gnupg-test -K
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
/home/lfp/.gnupg-test/pubring.kbx
---------------------------------
sec rsa4096/0x2954C91DEAE3C032 2020-05-03 [C] [有效至:2020-05-04]
密鑰指紋 = 76D1 39A8 F917 2972 195C F33C 2954 C91D EAE3 C032
uid [ 絕對 ] usmile <[email protected]>
ssb rsa3072/0x6E3823DE57F89766 2020-05-03 [S] [有效至:2020-05-04]
lfp@legion:~$ gpg --homedir ~/.gnupg-test -k
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
/home/lfp/.gnupg-test/pubring.kbx
---------------------------------
pub rsa4096/0x2954C91DEAE3C032 2020-05-03 [C] [有效至:2020-05-04]
密鑰指紋 = 76D1 39A8 F917 2972 195C F33C 2954 C91D EAE3 C032
uid [ 絕對 ] usmile <[email protected]>
sub rsa3072/0x6E3823DE57F89766 2020-05-03 [S] [有效至:2020-05-04]
創建子密鑰[A]
lfp@legion:~$ gpg --homedir ~/.gnupg-test --expert --edit-key 0x2954C91DEAE3C032
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
私鑰可用。
sec rsa4096/0x2954C91DEAE3C032
創建於:2020-05-03 有效至:2020-05-04 可用於:C
信任度:絕對 有效性:絕對
ssb rsa3072/0x6E3823DE57F89766
創建於:2020-05-03 有效至:2020-05-04 可用於:S
[ 絕對 ] (1). usmile <[email protected]>
gpg> addkey
請選擇您要使用的密鑰種類:
(3) DSA (僅用於簽名)
(4) RSA (僅用於簽名)
(5) ElGamal (僅用於加密)
(6) RSA (僅用於加密)
(7) DSA (自定義用途)
(8) RSA (自定義用途)
(10) ECC (sign only)
(11) ECC (set your own capabilities)
(12) ECC (encrypt only)
(13) Existing key
您的選擇? 8
RSA 密鑰可能的操作: 簽名 加密 認證
目前允許的操作: 簽名 加密
(S) 選擇是否用於簽名
(E) 選擇是否用於加密
(A) 選擇是否用於認證
(Q) 已完成
您的選擇? s
RSA 密鑰可能的操作: 簽名 加密 認證
目前允許的操作: 加密
(S) 選擇是否用於簽名
(E) 選擇是否用於加密
(A) 選擇是否用於認證
(Q) 已完成
您的選擇? e
RSA 密鑰可能的操作: 簽名 加密 認證
目前允許的操作:
(S) 選擇是否用於簽名
(E) 選擇是否用於加密
(A) 選擇是否用於認證
(Q) 已完成
您的選擇? a
RSA 密鑰可能的操作: 簽名 加密 認證
目前允許的操作: 認證
(S) 選擇是否用於簽名
(E) 選擇是否用於加密
(A) 選擇是否用於認證
(Q) 已完成
您的選擇? q
RSA 密鑰長度應在 1024 位與 4096 位之間。
您想要用多大的密鑰尺寸?(3072)
您所要求的密鑰尺寸是 3072 位
請設定這把密鑰的有效期限。
0 = 密鑰永不過期
<n> = 密鑰在 n 天后過期
<n>w = 密鑰在 n 周後過期
<n>m = 密鑰在 n 月後過期
<n>y = 密鑰在 n 年後過期
密鑰的有效期限是?(0) 1
密鑰於 2020年05月04日 星期一 19時59分46秒 CST 過期
以上正確嗎?(y/n) y
真的要建立嗎?(y/N) y
我們需要生成大量的隨機字節。這個時候您可以多做些瑣事(像是敲打鍵盤、移動
鼠標、讀寫硬盤之類的),這會讓隨機數字發生器有更好的機會獲得足夠的熵數。
sec rsa4096/0x2954C91DEAE3C032
創建於:2020-05-03 有效至:2020-05-04 可用於:C
信任度:絕對 有效性:絕對
ssb rsa3072/0x6E3823DE57F89766
創建於:2020-05-03 有效至:2020-05-04 可用於:S
ssb rsa3072/0x2CA24BFA9B038328
創建於:2020-05-03 有效至:2020-05-04 可用於:A
[ 絕對 ] (1). usmile <[email protected]>
gpg> save
查看是否創建成功
lfp@legion:~$ gpg --homedir ~/.gnupg-test -K
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
/home/lfp/.gnupg-test/pubring.kbx
---------------------------------
sec rsa4096/0x2954C91DEAE3C032 2020-05-03 [C] [有效至:2020-05-04]
密鑰指紋 = 76D1 39A8 F917 2972 195C F33C 2954 C91D EAE3 C032
uid [ 絕對 ] usmile <[email protected]>
ssb rsa3072/0x6E3823DE57F89766 2020-05-03 [S] [有效至:2020-05-04]
ssb rsa3072/0x2CA24BFA9B038328 2020-05-03 [A] [有效至:2020-05-04]
添加uid
lfp@legion:~$ gpg --homedir ~/.gnupg-test --expert --edit-key 0x2954C91DEAE3C032
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
私鑰可用。
sec rsa4096/0x2954C91DEAE3C032
創建於:2020-05-03 有效至:2020-05-04 可用於:C
信任度:絕對 有效性:絕對
ssb rsa3072/0x6E3823DE57F89766
創建於:2020-05-03 有效至:2020-05-04 可用於:S
ssb rsa3072/0x2CA24BFA9B038328
創建於:2020-05-03 有效至:2020-05-04 可用於:A
[ 絕對 ] (1). usmile <[email protected]>
gpg> adduid
真實姓名: usmile
電子郵件地址: [email protected]
註釋:
您選定了這個用戶標識:
“usmile <[email protected]>”
更改姓名(N)、註釋(C)、電子郵件地址(E)或確定(O)/退出(Q)? o
sec rsa4096/0x2954C91DEAE3C032
創建於:2020-05-03 有效至:2020-05-04 可用於:C
信任度:絕對 有效性:絕對
ssb rsa3072/0x6E3823DE57F89766
創建於:2020-05-03 有效至:2020-05-04 可用於:S
ssb rsa3072/0x2CA24BFA9B038328
創建於:2020-05-03 有效至:2020-05-04 可用於:A
[ 絕對 ] (1) usmile <[email protected]>
[ 未知 ] (2). usmile <[email protected]>
# 選擇上方 [未知] uid 的編號
gpg> uid 2
sec rsa4096/0x2954C91DEAE3C032
創建於:2020-05-03 有效至:2020-05-04 可用於:C
信任度:絕對 有效性:絕對
ssb rsa3072/0x6E3823DE57F89766
創建於:2020-05-03 有效至:2020-05-04 可用於:S
ssb rsa3072/0x2CA24BFA9B038328
創建於:2020-05-03 有效至:2020-05-04 可用於:A
[ 絕對 ] (1) usmile <[email protected]>
[ 未知 ] (2)* usmile <[email protected]>
gpg> primary
sec rsa4096/0x2954C91DEAE3C032
創建於:2020-05-03 有效至:2020-05-04 可用於:C
信任度:絕對 有效性:絕對
ssb rsa3072/0x6E3823DE57F89766
創建於:2020-05-03 有效至:2020-05-04 可用於:S
ssb rsa3072/0x2CA24BFA9B038328
創建於:2020-05-03 有效至:2020-05-04 可用於:A
[ 絕對 ] (1) usmile <[email protected]>
[ 未知 ] (2)* usmile <[email protected]>
gpg> save
查看是否添加成功
lfp@legion:~$ gpg --homedir ~/.gnupg-test -K
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
/home/lfp/.gnupg-test/pubring.kbx
---------------------------------
sec rsa4096/0x2954C91DEAE3C032 2020-05-03 [C] [有效至:2020-05-04]
密鑰指紋 = 76D1 39A8 F917 2972 195C F33C 2954 C91D EAE3 C032
uid [ 絕對 ] usmile <[email protected]>
uid [ 絕對 ] usmile <[email protected]>
ssb rsa3072/0x6E3823DE57F89766 2020-05-03 [S] [有效至:2020-05-04]
ssb rsa3072/0x2CA24BFA9B038328 2020-05-03 [A] [有效至:2020-05-04]
刪除密鑰
刪除整個密鑰,而非子密鑰
lfp@legion:~$ gpg --homedir ~/.gnupg-test/ -K
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
/home/lfp/.gnupg-test/pubring.kbx
---------------------------------
sec rsa4096/0x2954C91DEAE3C032 2020-05-03 [C] [已過期:2020-05-04]
密鑰指紋 = 76D1 39A8 F917 2972 195C F33C 2954 C91D EAE3 C032
uid [已過期] usmile <[email protected]>
uid [已過期] usmile <[email protected]>
sec rsa4096/0x70105702D00EB8F4 2020-05-04 [C] [已吊銷:2020-05-04]
密鑰指紋 = 0B19 E909 EB7D 0060 6615 693F 7010 5702 D00E B8F4
uid [已吊銷] usmile <[email protected]>
# 刪除密鑰
lfp@legion:~$ gpg --homedir ~/.gnupg-test/ --delete-secret-and-public-key 0x70105702D00EB8F4
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
sec rsa4096/0x70105702D00EB8F4 2020-05-04 usmile <[email protected]>
要從鑰匙環裏刪除這把密鑰嗎?(y/N) y
這是一把私鑰!――真的要刪除嗎?(y/N) y
pub rsa4096/0x70105702D00EB8F4 2020-05-04 usmile <[email protected]>
要從鑰匙環裏刪除這把密鑰嗎?(y/N) y
# 已經刪除
lfp@legion:~$ gpg --homedir ~/.gnupg-test/ -K
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
/home/lfp/.gnupg-test/pubring.kbx
---------------------------------
sec rsa4096/0x2954C91DEAE3C032 2020-05-03 [C] [已過期:2020-05-04]
密鑰指紋 = 76D1 39A8 F917 2972 195C F33C 2954 C91D EAE3 C032
uid [已過期] usmile <[email protected]>
uid [已過期] usmile <[email protected]>
公私鑰單獨刪除
# 無法先刪除公鑰
lfp@legion:~$ gpg --homedir ~/.gnupg-test/ --delete-keys 0x2954C91DEAE3C032
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
gpg: 公鑰“0x2954C91DEAE3C032”有對應的私鑰!
gpg: 請先使用“--delete-secret-keys”選項來刪除它。
# 先刪除私鑰部分才能刪除公鑰部分
lfp@legion:~$ gpg --homedir ~/.gnupg-test/ --delete-secret-keys 0x2954C91DEAE3C032
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
sec rsa4096/0x2954C91DEAE3C032 2020-05-03 usmile <[email protected]>
要從鑰匙環裏刪除這把密鑰嗎?(y/N) y
這是一把私鑰!――真的要刪除嗎?(y/N) y
加密、解密
lfp@legion:~/bin$ gpg -k
/home/lfp/.gnupg/pubring.kbx
----------------------------
pub rsa3072/0x16A3B99FBAC538AE 2020-05-01 [SC] [已吊銷:2020-05-04]
密鑰指紋 = 1256 45C3 0AAB 72BB D113 4A5F 16A3 B99F BAC5 38AE
uid [已吊銷] lfp1024 <[email protected]>
pub rsa4096/0x92C4D0C89EAA7333 2020-05-04 [SC] [有效至:2020-05-05]
密鑰指紋 = C95B 86BC 7919 F706 8CD6 2B08 92C4 D0C8 9EAA 7333
uid [ 絕對 ] usmile <[email protected]>
sub rsa4096/0x918087E1E6101F9D 2020-05-04 [E] [有效至:2020-05-05]
lfp@legion:~/bin$ gpg --recipient 0x918087E1E6101F9D --output ~/bin/test.en.txt --encrypt test.txt
lfp@legion:~/bin$ gpg --decrypt test.en.txt --output test.de.txt
gpg: Note: '--output' is not considered an option
usage: gpg [options] --decrypt [filename]
lfp@legion:~/bin$ gpg --output test.de.txt --decrypt test.en.txt
gpg: 由 4096 位的 RSA 密鑰加密,鑰匙號爲 0x918087E1E6101F9D、生成於 2020-05-04
“usmile <[email protected]>”
簽名
通過默認配置生成的主密鑰具有[SC]兩種功能,如果同時存在一個具有[S]功能的子密鑰,則會通過子密鑰去簽名
實際是通過密鑰的私鑰部分去簽名,然後通過該密鑰的公鑰部分去驗證簽名
# 在當前目錄生成一份包含文件內容的簽名文件 sign-test.Release.gpg
lfp@legion:~$ gpg --homedir ~/.gnupg-test --sign sign-test.Release
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
# 在當前目錄生成一份包含文件內容的簽名文件 sign-test.Release.asc
lfp@legion:~$ gpg --homedir ~/.gnupg-test --clearsign sign-test.Release
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
# 在當前目錄生成一份【不包含】文件內容的簽名文件 sign-test.Release.sig
lfp@legion:~$ gpg --homedir ~/.gnupg-test --detach-sign sign-test.Release
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
# 在當前目錄生成一份【不包含】文件內容的簽名文件 sign-test.Release.asc
lfp@legion:~$ gpg --homedir ~/.gnupg-test --detach-sign --armor sign-test.Release
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
# 可以通過 --output 指定路徑及文件名,但是需要注意參數的位置,要放在 --sign 之前
lfp@legion:~$ gpg --homedir ~/.gnupg-test --output ~/bin/sign-test.Release.gpg --sign sign-test.Release
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
lfp@legion:~$ gpg --homedir ~/.gnupg-test --output ~/bin/sign-test.Release.asc --clearsign sign-test.Release
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
驗證
- 通過 gpgv 工具
- 通過 gpg
lfp@legion:~$ gpg --homedir ~/.gnupg-test -k
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
/home/lfp/.gnupg-test/pubring.kbx
---------------------------------
pub rsa4096/0x2954C91DEAE3C032 2020-05-03 [C] [有效至:2020-05-04]
密鑰指紋 = 76D1 39A8 F917 2972 195C F33C 2954 C91D EAE3 C032
uid [ 絕對 ] usmile <[email protected]>
uid [ 絕對 ] usmile <[email protected]>
sub rsa3072/0x6E3823DE57F89766 2020-05-03 [S] [有效至:2020-05-04]
sub rsa3072/0x2CA24BFA9B038328 2020-05-03 [A] [有效至:2020-05-04]
# gpgv 需要通過 --keyring 指定密鑰環
lfp@legion:~$ gpgv --keyring ~/.gnupg-test/pubring.kbx sign-test.Release.gpg
gpgv: 簽名建立於 2020年05月04日 星期一 19時01分58秒 CST
# 後16位即使用的密鑰ID 0x6E3823DE57F89766
gpgv: 使用 RSA 密鑰 92E43802C92A69A4F7B069E86E3823DE57F89766
gpgv: 完好的簽名,來自於“usmile <[email protected]>”
# 因爲有兩個uid
gpgv: 亦即“usmile <[email protected]>”
# gpg 只需要指出homedir 即可
# 通過gpg驗證可以檢查出密鑰是否過期
lfp@legion:~$ gpg --homedir ~/.gnupg-test/ --verify sign-test.Release.gpg
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
gpg: 簽名建立於 2020年05月04日 星期一 19時01分58秒 CST
gpg: 使用 RSA 密鑰 92E43802C92A69A4F7B069E86E3823DE57F89766
gpg: 完好的簽名,來自於“usmile <[email protected]>” [已過期]
gpg: 亦即“usmile <[email protected]>” [已過期]
gpg: 注意:這把密鑰已經過期了!
主鑰指紋: 76D1 39A8 F917 2972 195C F33C 2954 C91D EAE3 C032
子鑰指紋: 92E4 3802 C92A 69A4 F7B0 69E8 6E38 23DE 57F8 9766
########################################################################
lfp@legion:~/.gnupg$ gpg -k
/home/lfp/.gnupg/pubring.kbx
----------------------------
pub rsa3072/0x16A3B99FBAC538AE 2020-05-01 [SC] [已吊銷:2020-05-04]
密鑰指紋 = 1256 45C3 0AAB 72BB D113 4A5F 16A3 B99F BAC5 38AE
uid [已吊銷] lfp1024 <[email protected]>
# 無法判定密鑰的性質
lfp@legion:~/.gnupg$ gpgv --keyring ~/.gnupg/pubring.kbx ~/bin/test.txt.gpg
gpgv: 簽名建立於 2020年05月04日 星期一 19時17分25秒 CST
gpgv: 使用 RSA 密鑰 3142022C68CD0B034DBAA5A0CF8C3097514C5331
gpgv: 完好的簽名,來自於“lfp1024 <[email protected]>”
# 通過gpg驗證可以檢查出密鑰是否被吊銷
lfp@legion:~/.gnupg$ gpg --verify ~/bin/test.txt.gpg
gpg: 簽名建立於 2020年05月04日 星期一 19時17分25秒 CST
gpg: 使用 RSA 密鑰 3142022C68CD0B034DBAA5A0CF8C3097514C5331
gpg: 完好的簽名,來自於“lfp1024 <[email protected]>” [絕對]
gpg: 警告:這把密鑰已經被它的持有者吊銷了!
gpg: 這表明這個簽名有可能是僞造的。
gpg: 吊銷原因: 密鑰不再使用
主鑰指紋: 1256 45C3 0AAB 72BB D113 4A5F 16A3 B99F BAC5 38AE
子鑰指紋: 3142 022C 68CD 0B03 4DBA A5A0 CF8C 3097 514C 5331
通過gpg --keyring
驗證,測試不行
# 測試發現,不能正確驗證,無法識別密鑰
lfp@legion:~/.gnupg-test$ gpg --keyring ~/.gnupg-test/pubring.kbx --no-default-keyring --verify ~/sign-test.Release.asc
gpg: assuming signed data in '/home/lfp/sign-test.Release'
gpg: 簽名建立於 2020年05月04日 星期一 21時45分27秒 CST
gpg: 使用 RSA 密鑰 5C886AA3B13C8CD76A453E6517B875E5EB1FA9D1
gpg: 完好的簽名,來自於“usmile <[email protected]>” [未知]
gpg: 警告:這把密鑰未經受信任的簽名認證!
gpg: 沒有證據表明這個簽名屬於它所聲稱的持有者。
主鑰指紋: 0B19 E909 EB7D 0060 6615 693F 7010 5702 D00E B8F4
子鑰指紋: 5C88 6AA3 B13C 8CD7 6A45 3E65 17B8 75E5 EB1F A9D1
lfp@legion:~/.gnupg-test$ gpg --homedir ~/.gnupg-test/ --verify ~/sign-test.Release.asc
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
gpg: assuming signed data in '/home/lfp/sign-test.Release'
gpg: 簽名建立於 2020年05月04日 星期一 21時45分27秒 CST
gpg: 使用 RSA 密鑰 5C886AA3B13C8CD76A453E6517B875E5EB1FA9D1
gpg: 完好的簽名,來自於“usmile <[email protected]>” [絕對]
主鑰指紋: 0B19 E909 EB7D 0060 6615 693F 7010 5702 D00E B8F4
子鑰指紋: 5C88 6AA3 B13C 8CD7 6A45 3E65 17B8 75E5 EB1F A9D1
吊銷整個密鑰
生成吊銷證書
# 生成吊銷證書
# 通過 --output 配置項指定生成文件目錄及名稱,注意順序在前
lfp@legion:~$ gpg --homedir ~/.gnupg-test/ --output ~/.gnupg-test/rev.asc --gen-revoke 0x70105702D00EB8F4
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
sec rsa4096/0x70105702D00EB8F4 2020-05-04 usmile <[email protected]>
要爲這把密鑰建立一份吊銷證書嗎?(y/N) y
請選擇吊銷的原因:
0 = 未指定原因
1 = 密鑰已泄漏
2 = 密鑰被替換
3 = 密鑰不再使用
Q = 取消
(也許您會想要在這裏選擇 1)
您的決定是什麼? 3
請輸入描述(可選);以空白行結束:
>
吊銷原因:密鑰不再使用
(不給定描述)
這樣可以嗎? (y/N) y
已強行使用 ASCII 封裝過的輸出。
已建立吊銷證書。
請把這個文件轉移到一個可隱藏起來的介質(如軟盤)上;如果壞人能夠取得這
份證書的話,那麼他就能讓您的密鑰無法繼續使用。把這份憑證打印出來再藏
到安全的地方也是很好的方法,以免您的保存媒體損毀而無法讀取。但是千萬
小心:您的機器上的打印系統可能會在打印過程中把這些數據臨時在某個其他
人也能夠看得到的地方!
導入吊銷證書
# 導入並吊銷整個密鑰
lfp@legion:~$ gpg --homedir ~/.gnupg-test/ --import ~/.gnupg-test/rev.asc
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
gpg: 密鑰 0x70105702D00EB8F4:“usmile <[email protected]>”吊銷證書已被導入
gpg: 合計被處理的數量:1
gpg: 新的密鑰吊銷:1
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: 深度:0 有效性: 2 已簽名: 0 信任度:0-,0q,0n,0m,0f,2u
gpg: 下次信任度數據庫檢查將於 2020-05-06 進行
使用預先生成的吊銷證書
lfp@legion:~$ gpg -k
/home/lfp/.gnupg/pubring.kbx
----------------------------
pub rsa3072/0x16A3B99FBAC538AE 2020-05-01 [SC] [已吊銷:2020-05-04]
密鑰指紋 = 1256 45C3 0AAB 72BB D113 4A5F 16A3 B99F BAC5 38AE
uid [已吊銷] lfp1024 <[email protected]>
pub rsa4096/0x92C4D0C89EAA7333 2020-05-04 [SC] [有效至:2020-05-05]
密鑰指紋 = C95B 86BC 7919 F706 8CD6 2B08 92C4 D0C8 9EAA 7333
uid [ 絕對 ] usmile <[email protected]>
sub rsa4096/0x918087E1E6101F9D 2020-05-04 [E] [有效至:2020-05-05]
# 找不到。。。
lfp@legion:~$ gpg --import ~/.gnupg/openpgp-revocs.d/C95B86BC7919F7068CD62B0892C4D0C89EAA7333.rev
gpg: 找不到有效的 OpenPGP 數據。
gpg: 合計被處理的數量:0
上傳至公鑰服務器
# Search your key on the key-server
gpg --keyserver <服務器地址> --search-keys <key-ID>
# Send the revoked key to the key-server
gpg --keyserver <服務器地址> --send-keys <key-ID>
https://superuser.com/questions/1526283/how-to-revoke-a-gpg-key-and-upload-in-gpg-server
吊銷子密鑰
吊銷某個uid同理,用uid 1
選定某個uid,通過revuid
吊銷
-delkey
只刪除密鑰的公共部分,如果已經上傳到公鑰服務器,則需要使用-revkey
吊銷並上傳公鑰服務器
lfp@legion:~/.gnupg-test$ gpg --homedir ~/.gnupg-test/ --expert --edit-key 0x70105702D00EB8F4
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
私鑰可用。
sec rsa4096/0x70105702D00EB8F4
創建於:2020-05-04 有效至:2020-05-06 可用於:C
信任度:絕對 有效性:絕對
ssb rsa3072/0x17B875E5EB1FA9D1
創建於:2020-05-04 有效至:2020-05-06 可用於:S
[ 絕對 ] (1). usmile <[email protected]>
# 選定某個子密鑰,下標從1開始
gpg> key 1
sec rsa4096/0x70105702D00EB8F4
創建於:2020-05-04 有效至:2020-05-06 可用於:C
信任度:絕對 有效性:絕對
# 選定該子密鑰
ssb* rsa3072/0x17B875E5EB1FA9D1
創建於:2020-05-04 有效至:2020-05-06 可用於:S
[ 絕對 ] (1). usmile <[email protected]>
gpg> revkey
您真的要吊銷這把子鑰嗎?(y/N) y
請選擇吊銷的原因:
0 = 未指定原因
1 = 密鑰已泄漏
2 = 密鑰被替換
3 = 密鑰不再使用
Q = 取消
您的決定是什麼? 3
請輸入描述(可選);以空白行結束:
>
吊銷原因:密鑰不再使用
(不給定描述)
這樣可以嗎? (y/N) y
sec rsa4096/0x70105702D00EB8F4
創建於:2020-05-04 有效至:2020-05-06 可用於:C
信任度:絕對 有效性:絕對
The following key was revoked on 2020-05-04 by RSA key 0x70105702D00EB8F4 usmile <[email protected]>
ssb rsa3072/0x17B875E5EB1FA9D1
創建於:2020-05-04 已吊銷:2020-05-04 可用於:S
[ 絕對 ] (1). usmile <[email protected]>
gpg> save
apt-key測試
測試apt-key保存的密鑰
終端執行apt-key list
的時候會列出apt密鑰環中保存的密鑰,包括/etc/apt/trusted.gpg
以及/etc/apt/trusted.gpg.d/
中的密鑰
發現公鑰具有[SC]功能,而[C]功能具有認證子密鑰的能力,怎麼能公開呢?測試如下
查看第三方密鑰
lfp@legion:/etc/apt/trusted.gpg.d$ gpg sogou-archive-keyring.gpg
gpg: WARNING: no command supplied. Trying to guess what you mean ...
pub rsa4096/0xD259B7555E1D3C58 2014-04-09 [SC]
密鑰指紋 = 6CE3 5A4E BAB6 7609 4476 BE7C D259 B755 5E1D 3C58
uid Ubuntu Kylin Archive Automatic Signing Key <[email protected]>
sub rsa4096/0xFED969A4DF6E30B5 2014-04-09 [E]
導出到文件
lfp@legion:~$ apt-key export 0xD259B7555E1D3C58 > ~/sogou-pub.asc
Warning: apt-key output should not be parsed (stdout is not a terminal)
導入本地gpg密鑰環
lfp@legion:~$ gpg --homedir ~/.gnupg-test --import ~/sogou-pub.asc
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
gpg: 密鑰 0xD259B7555E1D3C58:公鑰“Ubuntu Kylin Archive Automatic Signing Key <[email protected]>”已導入
gpg: 合計被處理的數量:1
gpg: 已導入:1
# 查看
lfp@legion:~$ gpg --homedir ~/.gnupg-test -k
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
/home/lfp/.gnupg-test/pubring.kbx
---------------------------------
pub rsa4096/0x5AF8B6B68CC7F785 2020-05-05 [SC]
密鑰指紋 = 0298 F65F 32F5 A7CA D764 A941 5AF8 B6B6 8CC7 F785
uid [ 絕對 ] usmile <[email protected]>
sub rsa4096/0x9B690269F3C16E7B 2020-05-05 [E]
# 導入成功
pub rsa4096/0xD259B7555E1D3C58 2014-04-09 [SC]
密鑰指紋 = 6CE3 5A4E BAB6 7609 4476 BE7C D259 B755 5E1D 3C58
uid [ 未知 ] Ubuntu Kylin Archive Automatic Signing Key <[email protected]>
sub rsa4096/0xFED969A4DF6E30B5 2014-04-09 [E]
編輯該密鑰
發現雖然公鑰顯示[SC],但是缺少私鑰部分,沒有認證[C]權限
lfp@legion:~$ gpg --homedir ~/.gnupg-test --expert --edit-key 0xD259B7555E1D3C58
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
pub rsa4096/0xD259B7555E1D3C58
創建於:2014-04-09 有效至:永不過期 可用於:SC
信任度:未知 有效性:未知
sub rsa4096/0xFED969A4DF6E30B5
創建於:2014-04-09 有效至:永不過期 可用於:E
[ 未知 ] (1). Ubuntu Kylin Archive Automatic Signing Key <[email protected]>
gpg> addkey
要有私鑰才能這麼做。
gpg> adduid
要有私鑰才能這麼做。
gpg> revkey
要有私鑰才能這麼做。
gpg> expire
要有私鑰才能這麼做。
gpg> quit
測試子密鑰過期/吊銷後的驗證功能
因爲apt管理的本地密鑰過期之後出現無法驗證簽名的情況
本地測試無法通過--edit-key expire
立刻將子密鑰過期,所以測試將一把子密鑰吊銷
步驟
-
使用默認子密鑰簽名一個文件
同時生成兩個具有[S]功能的子密鑰
測試無法通過'--default-key' 指定使用哪個密鑰簽名
默認選擇最新生成的具有[S]功能的有效密鑰簽名
-
將該子密鑰吊銷
-
用具有[S]功能的其他子密鑰驗證
結果
# 此時仍有一把具有[S]功能的子密鑰
lfp@legion:~$ gpg --homedir ~/.gnupg-test --verify ~/a.txt.asc
gpg: WARNING: unsafe permissions on homedir '/home/lfp/.gnupg-test'
gpg: 簽名建立於 2020年05月07日 星期四 18時43分49秒 CST
gpg: 使用 RSA 密鑰 200AA10D5E17D1CAD1FF9B1FCCA5416788D7F49C
gpg: 完好的簽名,來自於“usmile <[email protected]>” [絕對]
gpg: 警告:這把子鑰已經被它的持有者吊銷了!
gpg: 吊銷原因: 密鑰不再使用
主鑰指紋: FABD 2A75 6CF5 983C 9655 7FA0 0FC1 D26E D395 4622
子鑰指紋: 200A A10D 5E17 D1CA D1FF 9B1F CCA5 4167 88D7 F49C
gpg: WARNING: not a detached signature; file '/home/lfp/a.txt' was NOT verified!
gpgv
gpgv 是一個 OpenPGP 簽名驗證工具,沒有配置文件,只有簡單的選項
gpgv 默認所有的密鑰都是可信賴的,不會檢查其是否過期或被吊銷
This program is actually a stripped-down version of gpg which is only able to check
signatures. It is somewhat smaller than the fully-blown gpg and uses a different (and
simpler) way to check that the public keys used to make the signature are valid. There are
no configuration files and only a few options are implemented.
gpgv assumes that all keys in the keyring are trustworthy. That does also mean that it
does not check for expired or revoked keys
選項
-v
顯示更多驗證信息
--keyring file
- file 可以是 trustedkeys.kbx 或 trustedkeys.gpg
指定用來驗證的密鑰環
格式
gpgv pgpfile
- pgpfile 包含數據的簽名文件
用來驗證包含數據的簽名
lfp@legion:~$ gpgv --keyring [~/.gnupg-test/pubring.kbx] [sign-test.Release.gpg ]
gpgv sigfile [datafile]
-
sigfile 簽名文件
-
datafile 數據文件,如果不指定,則會把 sigfile 後綴(.asc .sig .sign)去掉,當做數據文件
例如谷歌
簽名文件 dl.google.com_linux_chrome_deb_dists_stable_Release.gpg
數據文件 dl.google.com_linux_chrome_deb_dists_stable_Release
用來驗證不包含數據的簽名(簽名文件和數據文件分離)
lfp@legion:/var/lib/apt/lists$ gpgv --keyring [/etc/apt/trusted.gpg ] [dl.google.com_linux_chrome_deb_dists_stable_Release.gpg] [dl.google.com_linux_chrome_deb_dists_stable_Release]
其他用途
git
對commit進行簽名
-----END-----
有不正確的地方,歡迎留言指正,謝謝大佬!