GPG 的 正 确 使 用 妆 势

Mon 16 August 2021

关 于 GPG 的 基 本 概 念 , 这 里 就 不 过 多 阑 述 了 , 没 有 基 础 知 识 的 同 学 建 议 先 学 一 些 网 络 上 的 基 础 教 程 。 要 先 对 GPG 有 一 定 的 基 础 理 解 。

[scode type=「“yellow「“] 本 文 中 生 成 的 GPG 密 钥 仅 为 示 例 使 用 , 本 人 并 不 使 用 文 中 的 密 钥 , 请 注 意 鉴 别 。[/scode]

准 备 工 作 了 解 GPG 基 本 概 念 , 熟 悉 命 令 行 操 作 目 安 装 好 虞 拟 机 发 却 个 效 Tails 系 统 镜 像 3. 一 颗 追 求 信 息 安 全 的 核 心 思 想 平 时 只 使 用 子 密 钻 , 将 主 密 钥 存 储 在 受 信 的 地 方 例 如 TPM 或 进 行 加 密 。 创 建 主 密 钢

首 先 创 建 一 个 新 的 GPG 密 钥 对 , 一 定 要 在 虚 拟 机 或 者 Tails 或 者 你 信 任 的 电 脑 上 操 作 。

使 用 --full-generate-key 和 --expert 来 生 成 密 钥 对 , RSA4096 比 ECC Curve 25519 要 安 全 一 点 , 河 河 p RSA4096, 且 只 用 来 Certify。

rainshawubunttls~S _qnaq -f11-aenerate~kKey -exDeT 三 首 先 创 建 一 个 新 的 GPG 密 钥 对 , 一 定 要 在 虚 拟 机 或 者 Tails 或 者 你 信 任 的 电 脑 上 操 作 。

使 用 --full-generate-key 和 --expert 来 生 成 密 钥 对 , 由 于 RSA4096 比 ECC Curve 25519 要 安 全 一 点 , 这 里 我 们 的 主 密 钥 使 用 RSA4096, 且 只 用 来 Certify。

rainshaweubuntu:~$ gpg --fulLl1-generate-key --expert

gPg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc .

This is free software: You are free to change and redistribute it。

There is NO NARRANTY,to the extent permitted by Law.。

PlLease select what kind of key you want : (1) RSA and RSA (default) (2) DSA and BLgamal (3) DSA (sign on1y ) (4) RSA (sign on1y ) (7) DSA (set your own capabilities ) (8) RSA (set your own capabilities ) (9) ECC and BCC (10) ECC (sign on1y) (11) ECC (set your own Capabilities ) (13) Bxisting key (14) Bxisting key from carQd

Your Selection? 8

选 择 8 自 定 义 用 途

Possible actions for a RSA key: Sign Certify EncrYPt Authenticate Current allowed actions: 8ign Certify EncrYPL

(58) Toggle the sign capability

(B) Toggle the encrypt capability

(A) Toggle the authenticate capability (0) Finished Possible actions for a RSA key: Sign Certify EncrYPt Authenticate Current allowed actions: 8ign Certify EncrYPL

(58) Toggle the sign capability

(B) Toggle the encrypt capability

(A) Toggle the authenticate capability (0) Finished

Your Selection? 8

Possible actions for a RSA key: Sign Certify EncrYPt Authenticate Current allowed actions: Certify EncrYPL

(58) Toggle the sign capability

(B) Toggle the encrypt capability

(A) Toggle the authenticate capability (0) Finished

Your selection? e Possible actions for a RSA key: Sign Certify EncrYPt Authenticate Current allowed actions: CertifyY (58) Toggle the sign capability (B) Toggle the encrypt capability (A) Toggle the authenticate capability (0) Finished

Your selection? d

去 掉 Sign 签 名 、Encrypt 加 密 用 途 , 只 保 留 Certify 证 明 用 途 。

RSR keys may be between 1024 and 4096 bits Long . What keysize do you want? (3072) 4096

使 用 4096 位 RSA 密 钥 更 安 全 , 基 本 无 法 破 解 。 Ru KeyS may 2e 2ecween u<4 _and 《U46 L5S Ong 。 What keysize do you want? (3072) 4096

使 用 4096 位 RSA 密 钥 更 安 全 , 基 本 无 法 破 解 。

Requested keysize is8 4096 bits PLease specify how Long the key shouLd be Valid. 0 = key does not expire = key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n Year8 Key is8 valid for? (0) Key does not expire at al1 Is this correct2? (Y/N) Y

妓 置 密 钥 的 有 效 期 , 我 们 可 以 仔 细 的 存 许 沥 这 里 可 以 选 择 永 不 过 期 , 当 然 你 也 可 以 自 己 选 挟 交 近 时 , 再 根 据 需 求 自 行 决 定 是 启 用 新 密 钥 远 是 将 旧 霸 钥 廷 长 相 效 期 。

GnuPG needs to construct a uhser ID to identify Your key 。

Real name: RainShaw

Email addreSS: XXXX@LiVe .Com

Comment :

You Selected thiS USER-ID : “Rainshaw <XXXX@1iVe .COm>“

Change _(N)ame;, (C)omment, (B)mail or (0)kay/(Q)uit? o

输 入 你 的 个 人 信 息 ,Comment 注 释 可 以 不 填 。

We need to generate a Lot of random bytes.。 It is a good idea to perform

some other action (type on the keyboard,move the mouse utilLize the

disks) during the prime generation; this gives the random numbeI

generator a better chance to gain enough entropy. We need to generate a Lot of random bytes.。 It is a good idea to perform

some other action (type on the keyboard,move the mouse utilLize the

disks) during the prime generation; this gives the random numbeI

generator a better chance to gain enough entropy 。

gpg: key 0xF2FE7008B02578B4 marked as uLtimately trusted

gpg: directory “/home/rainshaw/ .gnupg/openpgp-revocs .d「 created gpg: revocation certificate stored as

“/home/rainshaw/ .gnupg/openpgp-

revocs .d/B5C100450331878DD5535261F2FE7008B02578B4 .rev「

public and secret key created and 58igned。

pub rsa4096/F2FE7008B02578B4 2021-08-16 [C1

Key fingerprint = B5C1 0045 0331 878D D553 “5261 F2FEB 7008 B025 78B4 uiQd RainShaw 一 XXXX@ 1iVe .Com>

伟 H 建 议 使 用 从 未 使 用 过 的 且 易 记 的 密 码 , 长 度

[scode type=“blue“] 如 果 你 之 前 使 用 过 GPG, 你 可 能 有 疑 问 , 密 码 越 长 之 后 使 用 的 时 候 不 会 很 繁 琐 么 , 每 次 都 要 输 入 。 不 要 担 心 , 后 面 会 教 给 大 家 怎 么 解 决 这 个 问 题 , 方 法 是 给 子 密 钻 设 置 与 主 蝈 钥 不 间 的 密 码 , 一 方 面 方 便 日 常 使 用 , 古 一 方 面 也 是 对 主 密 钥 的 进 一 步 保 护 。[/scode]

格 式 化 密 钥

如 果 你 观 察 仔 细 的 话 , 会 发 现 我 最 终 打 印 出 来 的 密 钥 格 式 和 你 可 能 不 太 一 吴 人 这 只 是 格 式 化 , 下 面 教 给 大 家 如 何 格 式 化 密 钥 输 出 , 佶 猴 俸 杨 。

不 论 你 用 什 么 编 辑 器 , 只 需 在 -/ .gnupg/gpg.conf 文 件 中 输 入 以 下 内 容 即 可

keyid-format Long 如 果 你 观 察 仔 细 的 话 , 会 发 现 我 最 终 打 印 出 来 的 密 钼 格 式 和 你 可 能 不 太 一 吴 这 只 是 格 式 化 , 下 面 教 给 大 家 如 何 格 式 化 密 钥 输 出 , 佶 猴 俸 杨 。

不 论 你 用 什 么 编 辑 器 , 只 需 在 -/ .gnupg/gpg.conf 文 件 中 输 入 以 下 内 容 即 可

keyid-format Long with-fingerprint

这 样 之 后 输 出 密 钥 时 就 会 自 动 打 印 密 钥 的 长 ID 和 指 纹 啦 。 创 建 子 密 钥

刚 刚 生 成 的 主 密 钥 名 为 F2FE7008B0257884 , 它 只 有 [c1 用 途 , 只 能 用 来 签 发 子 密 钻 , 为 了 满 足 日 常 使 用 我 们 需 要 新 建 三 个 子 密 钥 , 分 别 用 来 Sign 签 名 、Encrypt 加 密 、Authenticate 认 证 。

Sign 签 名 密 钥

使 用 --expert 和 --edit-key F2FE7008B0257884 ( 将 其 中 的 密 钥 id 换 成 你 的 ) 。

rainshaweubuntu:~$ gpg --expert --edit-key F2FE7008B02578B4 gPg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc .

This is free software: You are free to change and redistribute it。

There is NO NARRANTY,to the extent permitted by Law.。

Secret key is availablLe .

gpg: checking the trustdb

gpg: marginals needed: 3 _completes needed: 1 _trust model: pgpP gpg: depth: 0 “Valid: 1 “sSigqned: 0 “trusts _0-, 0q , 0n , 0m 使 用 --expert 和 --edit-key F2FE7008B0257884 ( 将 其 中 的 密 钥 id 换 成 你 的 ) 。

rainshaweubuntu:~$ gpg --expert --edit-key F2FE7008B02578B4 gPg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc .

This is free software: You are free to change and redistribute it。

There is NO NARRANTY,to the extent permitted by Law.。

Secret key is availablLe .

gpg: checking the trustdb gpg: marginals needed: 3 _completes needed: 1 _trust model: pgpP

gpg: depth: 0 Valid: 1 “signed: 0 “trusts: 0~-“ 0q, 0n, 0mv 0 王 , 1u sec “Isa4096/F2FB7008B02578B4 created: 2021-08-16 expires: never usage: C trust: uLtimate validity: ulLtimate

[uLtimate] (1) Rainshaw

gpg> addkey

PlLease select what kind of key You want : (3) DSA (sign on1y ) (4) RSA (sign on1y ) (5) BLgamal (encrypt on1y ) (6) RSA (encrypt on1y ) (7) DSA (set your own capabilities ) (8) RSA (set your own capabilities ) (10) ECC (sign on1y) (11) ECC (set your own Capabilities ) (12) ECC (encrypt on1y ) (13) Bxisting key (14) Bxisting key from carQd

Your Selection? 8

选 8 自 定 义 用 途 。

Possible actions for a RSA key: 58ign Encrypt Authenticate

厂 万 万 八 仁 一 一 月 月 一 5 一 月 二 八 一 二 一 吴 一 尸 干 一 口 仪 口 八 丨 r 丨 Possible actions for a RSA key: 58ign Encrypt Authenticate Current allowed actions: Sign EncrYPL

(58) Toggle the sign capability

(B) Toggle the encrypt capability

(A) Toggle the authenticate capability (0) Finished

Your Selection? e

Possible actions for a RSA key: 58ign Encrypt Authenticate Current allowed actions: Sign

(58) Toggle the sign capability

(B) Toggle the encrypt capability

(A) Toggle the authenticate capability (0) Finished

Your selection? d

RSR keys may be between 1024 and 4096 bits Long . What keysize do you want? (3072) 4096

Requested keysize is8 4096 bits

只 保 留 Sign 签 名 用 途 , 并 输 入 长 度 为 4096.

PlLease specify how Long the key shoulLd be valid。 0 = key does not expire = key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n Year8 Key is valid for? (0) 1Y Key expires at Tue 16 Aug 2022 02:52:10 AM PDT Is this correct2? (Y/N) Y Really create? (Y/N) Y

输 入 子 宿 钥 有 效 期 , 建 议 不 要 选 择 永 久 有 效 , 当 子 密 钥 临 近 过 期 或 已 过 期 骰 :> 我 们 可 以 使 用 主 密 钢 对 子 密 钥 进 进 行 延 长 有 效 期 , 这 样 可 以 进 一 步 丙 女 王 。 保 证 安 全 。

[scode type=「“yellow「“] 当 然 这 样 之 后 会 更 加 麻 烦 一 些 , 比 如 你 需 要 替 换 GitHub 上 的 签 名 公 钥 等 。[/scode]

We need to generate a Lot of random bytes.。 It is a good idea to perform

some other action (type on the keyboard,move the mouse utilLize the

disks) during the prime generation; this gives the random numbeI

generator a better chance to gain enough entropy 。

sec “Isa4096/F2FB7008B02578B4 created: 2021-08-16 expires: never usage: C trust: uLtimate validity: ulLtimate ssb “Isa4096/0B45187B21327343 created: 2021-08-16 “expires: 2022-08-16 “usage: 8 [uLtimate] (1) Rainshaw

gPpg> save 最 后 不 要 忘 记 使 用 save 命 令 保 存 。 此 时 再 看 一 下 现 在 的 密 钥 :

rainshaw8ubuntu:~$ gPg -K /home/rainshaw/ .gnupg/pubring .kKbx Sec rSa4096/F2FE7008B02578B4 2021-08-16 [C] Key fingerprint = B5C1 0045 0331 878D D553 “5261 F2FE 7008 B025 78B4 uid [ultimate] Rainshaw ssb rsa4096/0R45187BR21327343 2021-08-16 [S8] [expires: 2022- 08-~16 ]

Encrypt 加 密 宿 钢 同 样 使 用 --expert 和 --edit-key F2FE7008B02578B4 ( 将 其 中 的 密 钥 id 换 成 你 的 ) 。

rainshaweubuntu:~$ gpg --expert --edit-key F2FE7008B02578B4 gPg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc .

This is free software: You are free to change and redistribute it。

There is NO NARRANTY,to the extent permitted by Law.。

Secret key is availablLe .

sec “Isa4096/F2FB7008B02578B4 created: 2021-08-16 expires: never usage: C trust: uLtimate validity: ulLtimate ssb “Isa4096/0B45187B21327343 created: 2021-08-16 “expires: 2022-08-16 “usage: 8 [uLtimate] (1) Rainshaw

gpg> addkey PlLease select what kind of key you want : (3) DSA (sign on1y ) (4) RSA (sign on1y ) (5) BLgamal (encrypt on1y ) (6) RSA (encrypt on1y ) (7) DSA (set your own capabilities ) (8) RSA (set your own capabilities ) (10) ECC (sign on1y) (11) ECC (set your own capabilities ) (12) ECC (encrypt on1y ) (13) Bxisting key (14) Bxisting key from carQd Your Selection? 12 PLease select which elliptic curve You want : (1) Curve 25519 (3) NIST P-256 (4) NIST P-384 (5) NIST P-521 (6) Brainpool1 P-256 (7) Brainpoo1 P-384 (8) Brainpoo1 P-512

ps d (1) Curve 25519 (3) NIST P-256 (4) NIST P-384 (5) NIST P-521 (6) Brainpool1 P-256 (7) Brainpoo1 P-384 (8) Brainpoo1 P-512 (9) secp256k1 Your Selection? 1 PlLease specify how Long the key shoulLd be valid。 0 = key does not expire = key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n Year5 Key is valid for? (0) 1Y Key expires at Tue 16 Aug 2022 03:06:34 AM PDT Is this correct2? (Y/N) Y Really create? (Y/N) Y We need to generate a Lot of random bytes.。 It is a good idea to perform some other action (type on the keyboard,move the mouse utilLize the disks) during the prime generation; this gives the random numbeI generator a better chance to gain enough entropy 。

sec “Isa4096/F2FB7008B02578B4 created: 2021-08-16 expires: never usage: C trust: uLtimate validity: ulLtimate ssb “Isa4096/0B45187B21327343 created: 2021-08-16 “expires: 2022-08-16 “usage: 8 Ssb “_cV25519/7A3B9781DAD1C286 created: 2021-08-16 “expires: 2022-08-16 “usage: 卫 [uLtimate] (1) Rainshaw

gPpg> save

这 里 尝 试 使 用 ECC 作 为 加 密 解 密 的 算 法 , 速 度 会 更 快 一 点 。 来 源 于 博 主 ulyc 的 介 绍 : [scode type=「“share“] 美 国 国 家 标 准 与 技 术 研 究 院 (NIST) 系 列 椭 圆 曲 线 、Brainpool 系 列 榈 圆 曲 线 、secp256k1 都 存 在 不 同 的 安 全 风 险 , 不 建

议 使 用 。

C 算 河 的 99 他 在 圭 于 , 在 同 等 强 度 下 ,ECC 的 密 钥 长 度 要 小 的

不 提 密 钥 长 度 说 安 全 性 都 是 耍 流 氓 ,RSA 4096 的 安 全 强 度 是 要 好 于 ed25519 的 。[/scodej]

Authenticate 认 证 宿 钥

认 证 密 钥 用 处 不 多 , 平 时 我 们 连 SSH 使 用 普 通 的 RSA 密 钥 就 可 以 了 , 当 然 如 果 你 愿 意 也 可 以 用 GPG 生 成 的 子 密 钥 。 同 样 使 用 --cxmpest 利 - -edit-key F2FE7008B02578B4 ( 将 其 中 的 密 钥 id 换 成 你 的 ) 。

rainshaw&ubuntu:~$ gpg --expert --edit-key F2FE7008B02578B4 gPg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc .

This is free software: You are free to change and redistribute it。

There is NO NARRANTY,to the extent permitted by Law.。

Secret key is availablLe .

sec “Isa4096/F2FB7008B02578B4 created: 2021-08-16 expires: never usage: C trust: uLtimate validity: ulLtimate ssb “Isa4096/0B45187B21327343 created: 2021-08-16 “expires: 2022-08-16 “usage: 8 Ssb “_cV25519/7A3B9781DAD1C286 created: 2021-08-16 “expires: 2022-08-16 “usage: 卫 [uLtimate] (1) 。 Rainshaw

gpg> addkey PlLease select what kind of key you want :

F Cottont 余 / RSR (sign on1Y)

ELgamal (encryPt on1Y)

RSR (encryPt on1Y)

DSR& (set Your own capabilities ) RSR (set Your own capabilities ) ECC (sign on1Y)

ECC (set your own capabilities ) ECC (encrypt on1Y)

Existing key

Existing key from card

Your Selection? 8

Possible actions for a RSA key: 58ign Encrypt Authenticate Current allowed actions: Sign EncrYPL

(5) ( 卫 ) () (0)

Toggle the sign capabilLity

Toggle the encrypt capabilLity Toggle the authenticate capabilLity Finished

Your Selection? a

Possible actions for a RSA key: 58ign Encrypt Authenticate Current allowed actions: 58ign Encrypt Authenticate

(5) ( 卫 ) () (0)

Toggle the sign capabilLity

Toggle the encrypt capabilLity Toggle the authenticate capabilLity Finished

Your Selection? 8

Possible actions for a RSA key: 58ign Encrypt Authenticate Current allowed actions: Encrypt Authenticate

(5) ( 卫 ) () (0)

Toggle the sign capabilLity

Toggle the encrypt capabilLity Toggle the authenticate capabilLity Finished

Your Selection? e 一 人 明 子 人 一 县 C 一 人 人 明 王 东明 仪 伟 子 目 人 CPC 一 CG Current allowed actions: Authenticate

(58) Toggle the sign capability

(B) Toggle the encrypt capability

(A) Toggle the authenticate capability (0) Finished

Your selection? d RSR keys may be between 1024 and 4096 bits Long . What keysize do you want? (3072) 4096 Requested keysize is8 4096 bits PlLease specify how Long the key shoulLd be valid。 0 = key does not expire

= _key expires in n days

w = key expires in n weeks

m = key expires in n months

y = key expires in n Year8 Key is valid for? (0) 1Y Key expires at Tue 16 Aug 2022 03:12:10 AM PDT Is this correct2? (Y/N) Y Really create? (Y/N) Y We need to generate a Lot of random bytes.。 It is a good idea to perform some other action (type on the keyboard,move the mouse utilLize the disks) during the prime generation; this gives the random numbeI generator a better chance to gain enough entropy 。

sec “Isa4096/F2FB7008B02578B4

created: 2021-08-16 expires: never usage: C

trust: uLtimate validity: ulLtimate ssb “Isa4096/0B45187B21327343

created: 2021-08-16 “expires: 2022-08-16 “usage: 8 Ssb “_cV25519/7A3B9781DAD1C286

created: 2021-08-16 “expires: 2022-08-16 “usage: 卫 ssb Sa4096/4FFFC7DRA1ABB8BB5

created: 2021-08-16 “expires: 2022-08-16 “usage: R [uLtimate] (1) Rainshaw

qpq>“SaVe J 标 I 一 人 IJ 异 , 八 f 2o 导 出 密 钢

复 习 下 我 们 的 核 心 思 想 , 主 密 钥 必 须 存 储 在 安 全 的 地 方 或 被 加 密 , 1 钥 用 来 日 常 使 用 。 为 了 安 全 , 我 们 将 不 会 存 储 主 密 钥 的 明 文 , 虽 然 这 明 文 也 被 我 们 之 前 设 置 的 密 码 保 护 着 , 侄 为 了 财 加 安 全 , 我 们 再 套 一 层 一 有 点 晦 铭 子 撑 的 )-。

刚 才 我 们 已 经 生 成 了 加 密 蜜 钥 , 所 以 只 要 加 密 密 钻 被 保 护 好 , 我 们 就 可 以 使 用 加 密 密 钥 给 主 密 钥 套 一 层

导 出 公 钢

一 种 是 导 出 所 有 的 公 钥 , 常 用 于 公 开 到 特 定 服 务 器 。

rainshawe&ubuntu:~/Desktop$ gpg -ao PK.key --export F2FE7008B02578B4 rainshaw&ubuntu:~/Desktop$ cat PK.key

mQINBGEaMF8BEADD1NPg6UCRKEjDnVjYVMWzz26YTRWXmgux58hcFp3u+UE/o3Ji eJiNtAGMXYWrvL1f/KhpUxQHKm2+C30JhlVhk3Tu9POXDQb10BfBNtHIj3+Ei+3k

中 间 很 长 很 长

XGYyiVo7R4BCiGHekJk8+jqqulYcRW1LimHGgyBhYDyvOg88qovp5+fBRpPZNA39RSm4 BOBkecuPQJ7tcdXz1l1a++eECgUBVdmyPT4YVR9 jEJRJSPNCVXSqw5G =VhBK

[scode type=“yello“] 注 意 这 个 公 钥 仅 用 于 示 例 , 请 不 要 将 这 个 公 钥 和 博 主 关 联 起 来 (@「“「@)[/scode]

第 二 种 是 导 出 某 个 子 密 钥 的 公 钥 , 常 用 于 当 有 多 个 同 一 用 途 的 密 钥 时 指 定 密 $ 莲 不 Rom

rainshaw&ubuntu:~/Desktop$ gpg -a --export --outPut PK.key F2FE7008B02578B4

FiLle“pk.key「“ exists。 0verwrite? (Y/N) Y rainshaweubuntu:~/Desktop$ gpg -a --export --outPut PK.key F2FE7008B02578B4 !

FiLle “pk.key「“ existS。 0verwrite2? (Y/N) 史

Enter new filLename: PKk2 .key

rainshaw&ubuntu:~/Desktop$ gpg -a --export --outPut Pk-sign .key 0B45187B21327343!

rainshawe&ubuntu:~/Desktop$ gpg -a --export --outpPut Pk-enc .key 7R3B9781DAD1C286!

rainshawe&ubuntu:~/Desktop$ gpg -a --export --outpPut Pk-auth.key 4FFFC7DR1ABB8BE5 !

导 出 主 密 钥 私 钥

使 用 子 加 密 密 钥 加 密 主 密 钻 , 注 意 将 下 面 命 令 的 Rainshaw 改 为 你 之 前 设 置 的 名 字 , 如 果 含 有 空 格 的 话 需 要 在 两 端 加 引 号 。

rainshaweubuntu:~/Desktop$ gpg -a --export-secret-key F2FE7008B02578B84 | gpg -e -r Rainshaw | add of=sk.key 17+2 recordS in

17+1 KecordSs out

9095 bytes (9.1 kKB,8.9 KiB) copied,5.82587 s8,1.6 kB/s

[scode type=「“green“] 你 可 以 分 步 执 行 , 看 看 每 步 到 底 做 了 什 么 。 [/scode]

导 出 子 密 钥 私 钥

使 用 子 加 密 密 钥 加 密 Sign 和 Authenticate 密 钥 , 注 意 将 下 面 命 令 的 Rainshaw 改 为 你 之 前 设 置 的 名 字 , 如 果 含 有 空 格 的 话 需 要 在 两 端 加 引 号 。 同 时 一 定 要 注 意 密 钥 ID 一 定 要 改 , 且 感 叹 号 ( 英 文 ) 不 能 省 略 !

rainshawe&ubuntu:~/Desktop$ gpg -a --export-secret-sSubkeys RAET 77 1 232777212 1 ] “ 二 口 二 一 尺 nah a ] 月 月 ~F 二 ai n t 使 用 子 加 密 密 钥 加 密 Sign 和 Authenticate 密 钢 ; 注 意 将 下 面 命 令 的 Rainshaw 改 为 你 之 前 设 置 的 名 字 , 如 果 含 有 空 格 的 话 需 要 在 两 端 加 引 号 。 同 时 一 定 要 注 意 密 钥 ID 一 定 要 改 , 且 感 叹 号 ( 英 文 ) 不 能 省 略 !

rainshawe&ubuntu:~/Desktop$ gpg -a --export-secret-sSubkeys 0R45187BR21327343! | gpg -e -r Rainshaw | dqd of=sign.key 8+2 records in

8+1 records out

4508 bytes (4.5 kKB,4.4 KiB) copied,5.10913 s,0.9 kB/s rainshaw&ubuntu:~/Desktop$ gpg -a --export-secret-sSubkeys 4FFFC7DA1ABB8BB5! | gpg -e -r Rainshaw | dd of=auth.key 7+2 records in

7+1 records out

3935 bytes (3.9 KB,3.8 KiB) copied,5.79333 8「, 0 .7 KB/s

对 于 加 密 子 密 钥 就 不 能 再 用 加 密 子 密 钥 加 密 了 ( 禁 止 套 娃 ) 。 对 于 上 面 o 我 们 可 以 随 意 上 传 、 复 制 , 只 要 我 们 保 证 自 己 的 加 密

子 密 钥 是 安 全 的 卸 可 。 现 在 问 题 来 了 , 怎 么 存 储 加 密 子 密 钥 呢 ?
这 里 我 也 没 有 什 么 特 别 好 的 方 法 , 我 采 用 的 是 使 用 DES 对 称 加 密 对 GPCG
密 钥 加 密 一 好 绕 白 s s 一 , 这 样 能 保 证 子 密 钥 比 不 加 密 安 全 一

rainshawe&ubuntu:~/Desktop$ gpg -a --export-secret-sSubkeys 7R3B9781DAD1C2861! | openss1 des3 -salt | dqd of=enc .key enter des-ede3-cbc encryption password :

Verifying - enter des-ede3-cbc encryption password :

x#x WRRNING : _ deprecated key derivation used .

Using -iter of -Pbkdf2 woulLd be betteI .

5+1 records in

5+1 _ records out

2640 bytes (2.6 kKB,2.6 KiB) copied,18.5623 s,0.1 kB/s

过 程 中 会 先 让 你 输 入 GPG 的 密 码 , 然 后 再 输 入 一 个 对 称 加 密 的 密 码 , 建 议 这 两 个 采 用 不 同 的 值 ( 由 于 前 者 就 是 主 密 钥 的 密 码 , 很 复 杂 , 所 以 我 们 可 以 对 其 稍 作 改 动 作 为 后 者 , 比 如 更 换 其 中 的 数 字 、 符 号 , 或 者 将 寒 砺 顺 序 颜 倒 之 类 的 、) 我 们 可 以 对 其 积 作 改 动 作 加 后 者 , 比 如 更 换 其 中 的 数 子 、 行 号 , 或 者 将 密 码 顺 序 颠 倒 之 类 的 。)

导 出 吊 销 证 书

gpg: key 0xF2FE7008B02578B4 marked as uLtimately trusted

gpg: directory “/home/rainshaw/ .gnupg/openpgp-revocs.d「 created gpg: revocation certificate stored as

“/home/rainshaw/ .gnupg/openpgp-

revocs .d/B5C100450331878DD5535261F2FE7008B02578B4 .rev「 public and secret key created and 58igned。

pub rsa4096/F2FE7008B02578B4 2021-08-16 [C1

Key fingerprint = B5C1 0045 0331 878D D553 “5261 F2FEB 7008 B025 78B4 uiQd RainShaw 一 XXXX@ 1iVe .Com>

在 创 建 主 密 钥 的 同 时 ,GPG 为 我 们 生 成 了 一 个 主 密 钥 的 吊 销 证 书 , 位 于 .gnupg/openpgp-revocs . 生 尿 录 上 。 我 们 需 要 对 其 更 加 精 心 备 份 和 保 护 , 为 仰 么 呢 , 因 为 如 果 你 主 密 钥 没 丢 , 而 这 个 吊 销 证 书 丢 了 , 那 你 的 主 密 钥 就 可 肉 $ 被 攻 击 者 吊 销 , 这 样 一 来 , 俨 寺 主 密 钥 的 精 心 保 护 还 有 啶 用 呢 这 里 偷 个 懒 , 使 用 的 是 之 前 生 成 的 加 密 蛰 钥 。

rainshaw&ubuntu:~/Desktops cat ~/.gnupg/openpgp- revocs.d/B5C100450331878DD5535261F2FE7008B02578B4.rev | gpg -e - Rainshaw | dd of=rev .key

2+2 records in

2+1 ecords _out

1376 bytes (1.4 kKB,1.3 KiB) copied,0.00671809 s,205 kB/s

如 果 佣 追 求 更 安 全 , 那 我 建 议 你 再 生 成 一 个 Encrypt 加 密 蜜 钥 , 不 导 出 它 , 只 用 它 来 加 密 这 个 吊 销 证 书 , 讷 样 口 有 在 你 的 主 密 钥 泄 露 之 后 , 尘 有 可 能 泄 露 这 个 吊 销 证 书 , 而 这 旷 我 们 肯 定 是 要 吊 销 的 , 所 以 安 全 箱 很 高 。 由 于 此 时 你 的 库 中 有 两 个 加 密 密 钥 , 导 致 在 进 行 加 密 时 会 自 动 选 择 加 密 密 钻 ( 一 般 会 用 较 新 的 ) , 此 时 为 了 拱 定 加 密 密 钥 , 我 们 需 要 采 用 与 上 文 不 同 的 命 令 。 C 5 有 可 能 泄 露 这 个 吊 销 证 书 , 而 这 旷 我 们 肥 定 是

高 。 C 标 李 训 加 密 宿 钥 ( 一 般 会 用 较 新 的 ) , 此 时 为 了 指 定

与 上 文 不 同 的 命 令 。

rainshaw&ubuntu:~/Desktop$ gPg -K /home/rainshaw/ .gnupg/pubring .kKbx sec rSa4096/F2FE7008B02578B4 2021-08-16 [C Key fingerprint = B5C1 0045 0331 878D D553 “5261 F2FE 7008 B025 78B4 uid [uLtimate] Rainshaw SSbD rSa4096/0E45187E21327343 2021-08-16 [S] [expires: 2022- 08-16 ] SSbD cV25519/7A3B9781DAD1C286 2021-08-16 [E] [expires: 2022- 08-16 ] SSbD rSa4096/4FFFC7DRA1RBE8BE5 2021-08-16 [&] [expires: 2022- 08-16 ] SSbD cV25519/82A36E1B874BE22B 2021-08-16 [E] [expires: 2022- 08-16 ]

rainshaw8ubuntu:~/Desktop$ gpg -a --export --output Pk-enc2 .key 82R36B1B874BE22B!

rainshaweubuntu:~/Desktop$ cat -~/ .gnupg/openpgp-

revocs .Q/B5C100450331878DD5535261F2FE7008B02578B4.rev | gpg -e -f pk-enc2.key | dd of=rev .key

2+2 records in

2+1 records out

1379 bytes (1.4 kKB,1.3 KiB) copied,0.00649605 s,212 kB/s

[scode type=“red“] 如 果 你 刚 刚 生 成 了 一 个 新 的 加 密 子 密 钥 , 记 得 重 新 导 出 主 密 钻 ! [/scode]

rainshaweubuntu:~/Desktop$ gpg -a --export-secret-key F2FE7008B02578B4 | gpg -e -f pk-enc.key | dd of=sk2 .key 18+3 records in

19+1 KecordSs out

9774 bytes (9.8 kKB,9.5 KiB) copied,6.38228 s8,1.5 kB/s 胡 l 的 ddtdt

rainshaweubuntu:~/Desktop$ gpg -a --export-secret-key F2FE7008B02578B4 | gpg -e -f pk-enc.key | dd of=sk2 .key 18+3 records in

19+1 KecordSs out

9774 bytes (9.8 kKB,9.5 KiB) copied,6.38228 s8,1.5 kB/s

[scode type=「“yellow“] 注 意 这 里 使 用 的 是 第 一 个 加 密 密 钥 ! [/scodej] 传 输 文 件

好 , 到 目 前 为 止 , 我 们 生 成 了 几 个 非 常 安 全 的 文 似 , 他 们 可 以 随 意 分 发 上 传 _( 但 建 议 还 是 不 要 随 意 分 发 ) , 之 后 每 次 使 用 时 只 需 将 所 需 的 私 钥 文 件 下 载 然 后 解 密 安 装 即 可 。

此 时 如 果 你 使 用 虚 拟 机 启 动 Tails OS 作 为 生 成 密 钥 的 系 统 , 那 你 可 能 会 发 现 好 像 无 法 把 子 蜜 钥 从 虚 拟 机 中 复 制 出 来 , 这 就 很 蛋 疼 了 , 我 的 解 决 方 法 是 在 客 户 端 电 脑 上 开 设 一 个 SSH Server, 在 Tails 中 使 用 SCP 命 令 将 文 件 传 输 出 来 , 具 体 命 令 大 家 可 以 自 行 百 度 。 如 果 你 使 用 的 是 非 虚 拟 机 运 行 的 Tails OS, 那 你 可 以 插 入 一 个 新 的 U 盘 存 储 这 些 文 件 。 如 果 你 是 其 他 的 情 况 , 请 自 行 解 决 。

销 毁 原 文 件 当 你 把 上 述 文 件 成 功 传 输 出 来 之 后 , 根 据 不 同 的 情 况 , 你 可 能 需 要 销 毁 原 始 的 蜜 钥 文 件 。 如 果 是 虚 拟 机 , 那 你 可 以 直 接 删 除 虚 拟 机 即 可 , 如 果

是 Tails 可 以 使 用 鼠 标 右 键 点 击 .gnupg 文 件 夹 然 后 选 择 wipe 即 可 , 如 果 是 其 他 情 况 , 请 自 行 搜 索 擦 除 文 件 的 方 法 。

导 入 密 钢 导 入 密 钥 是 十 分 简 单 的 , 首 先 对 加 密 密 钥 进 行 解 密 , 然 后 导 入

rainshawubuntts~/pesktonS“_ppenss1“_des3 -d -in“_ena key | apa 一 一 导 入 密 钥 是 十 分 简 单 的 , 首 先 对 加 密 密 钥 进 行 解 密 , 然 后 导 入

rainshaweubuntu:~/Desktops openss1 des3 -d -in enc.key | gpg -- import

enter des-ede3-cbc decryption password :

x#x WRRNING : _ deprecated key derivation used .

Using -iter of -Pbkdf2 woulLd be betteI .

gpg: key F2FE7008B02578B4: public key “Rainshaw “ imported

gpg: To migrate“secring.gpg「 ,with each smartcard,Irun: gPg -- card-status

gpg: key F2FE7008B02578B4: secret key imported

gpg: Total number processed: 1

gpPg: imported: 1 gpPg: secret keys read: 1 gpPg: secret keys imported: 1

然 后 利 用 这 个 加 密 密 钥 对 你 在 某 个 机 器 上 所 要 使 用 的 子 密 钥 进 行 解 密 然 后 导 入

如 要 导 入 签 名 密 钥 :

rainshaweubuntu:~/Desktops gpg -d sign.key | gpg --import gpg: encrypted with 256-bit ECDH key,ID 7A3B9781DAD1C286 , created 2021-08-16

“Rainshaw <XXX@1iVe .com>“ gpg: key F2FE7008B02578B4: “Rainshaw “ 1 new signature gpg: key F2FE7008B02578B4: “Rainshaw “ 1 new subkey gpg: To migrate“secring.gpg「 ,with each smartcard,Irun: gPg -- card-status gpg: key F2FE7008B02578B4: secret key imported gpg: Total number processed: 1

gpPg: new subkeys: 1 gpPg: new signatures: 1 gpPg: secret keys read: 1 gpPg: secret keys imported: 1 Cc 朋 沥 一 认 t t 余 园 国 阮 一 认 朋 cd gpg: encrypted with 256-bit ECDH key 「 ID 7A3B9781DAD1C286 , created 2021-08-16

“Rainshaw <XXX@1iVe .com>“ gpg: key F2FE7008B02578B4: “Rainshaw “ 1 new signature gpg: key F2FE7008B02578B4: “Rainshaw “ 1 new subkey gpg: To migrate“secring.gpg「 ,with each smartcard,Irun: gPg -- card-status gpg: key F2FE7008B02578B4: secret key imported gpg: Total number processed: 1

gpPg: new subkeys: 1 gpPg: new signatures: 1 gpPg: secret keys read: 1 gpPg: secret keys imported: 1 如 要 导 入 认 证 密 钥 :

rainshaweubuntu:~/Desktops gpg -d auth.key | gpg --import gpg: encrypted with 256-bit ECDH key,ID 7A3B9781DAD1C286 , created 2021-08-16

“Rainshaw <XXX@1iVe .com>“ gpg: key F2FE7008B02578B4: “Rainshaw “ 1 new signature gpg: key F2FE7008B02578B4: “Rainshaw “ 1 new subkey gpg: To migrate“secring.gpg「 ,with each smartcard,Irun: gPg -- card-status gpg: key F2FE7008B02578B4: secret key imported gpg: Total number processed: 1

gpPg: new subkeys: 1 gpPg: new signatures: 1 gpPg: secret keys read: 1 gpPg: secret keys imported: 1

修 改 信 任 级 别

炀 示 我 们 导 入 的 证 书 并 不 是 生 成 的 , 所 以 其 信 任 级 别 为 未 知 , 需 要 修 改 由 于 我 们 导 入 的 证 书 并 不 是 生 成 的 , 所 以 其 信 任 级 别 为 未 知 , 需 要 修 改 信 任 级 别

rainshaw&ubuntu:~/Desktop$ gpg --expert --edit-key Rainshaw gPg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc .

This is free software: You are free to change and redistribute it。

There is NO NARRANTY,to the extent permitted by Law.。

Secret subkeys are availablLe .

pub rsa4096/F2FE7008B02578B4

created: 2021-08-16 expires: never usage: C

trust: unknown validity: unknown Ssb “_cV25519/7A3B9781DAD1C286

created: 2021-08-16 “expires: 2022-08-16 “usage: 卫 ssb “Isa4096/0B45187B21327343

created: 2021-08-16 “expires: 2022-08-16 “usage: 8 ssb Sa4096/4FFFC7DRA1ABB8BB5

created: 2021-08-16 “expires: 2022-08-16 “usage: R [ unknown] (1) . Rainshaw

gPg> trust

pub rsa4096/F2FE7008B02578B4 created: 2021-08-16 expires: never usage: C trust: unknown validity: _ unknown

Ssb “_cV25519/7A3B9781DAD1C286

created: 2021-08-16 “expires: 2022-08-16 “usage: 卫 ssb “Isa4096/0B45187B21327343

created: 2021-08-16 “expires: 2022-08-16 “usage: 8 ssb Sa4096/4FFFC7DRA1ABB8BB5

created: 2021-08-16 “expires: 2022-08-16 “usage: R [ unknown] (1) . Rainshaw

PlLease decide how far you trust this user to correctL1y verify other users「 key8

(by Looking at passports「,checking fingerprints from different sources「 etc . ) Cssooioiiuoosudyiioaigy ia xici vol

other users「 key8

(by Looking at passports「,checking fingerprints from different

sources「 etc . )

= I don 「 七 know or won L 5ay I do NOT trust I trust marginal1y

= 工 trust fuL1Y 工 D

= I trust uLtimatel1Y ack to the main menu

日 u 心 w N 厂

Your decision? 5 Do you really want to set this key to uLtimate trust? (Y/N) Y

pub rsa4096/F2FE7008B02578B4 created: 2021-08-16 expires: never usage: C trust: uLtimate validity: unknown Ssb “_cV25519/7A3B9781DAD1C286 created: 2021-08-16 “expires: 2022-08-16 “usage: 卫 ssb “Isa4096/0B45187B21327343 created: 2021-08-16 “expires: 2022-08-16 “usage: 8 ssb sa4096/4FFFC7DRA1ABB8BB5 created: 2021-08-16 “expires: 2022-08-16 “usage: R [ unknown] (1) . Rainshaw PlLease note that the shown key validity is not neces5ari1Y correct unless You restart the Program。

gPg> quit rainshaw&ubuntu:~/Desktop$ gPg -K gpg: checking the trustdb gpg: marginals needed: 3 completes needed: 1 _trust model: pgpP gpg: depth: 0 Valid: 1 “signed: 0 “trusts: 0~-“ 0q, 0n, 0mv 0 王 , 1u /home/rainshaw/ .gnupg/pubring .kKbx sec 汀 sa4096/F2FB7008B02578B4 2021-08-16 [C] Key fingerprint = B5C1 0045 0331 878D D553 “5261 F2FE 7008 B025 78B4 uid [uLtimate] Rainshaw SSbD cVv25519/7A3B9781DAD1C286_2021-08-16_1E1 “「expires: 2022- cdothicciiiilidddistdiotinidioiniigdotiniA H Key fingerprint = B5C1 0045 0331 878D D553 “5261 F2FE

7008 B025 78B4

uid [ulLtimate] Rainshaw <XXX6@1iVe . COm>

ssb cv25519/7A3B9781DAD1C286 2021-08-16 [B] [expires: 2022-

08-16 ]

ssb rsa4096/0R45187BR21327343 2021-08-16 [S8] [expires: 2022-

08-16 ]

ssb rsa4096/4FFFC7DA1ABE8BE5 2021-08-16 [A] [expires: 2022-

08-16 ]

修 改 密 码

上 面 提 到 过 , 我 们 在 生 成 主 密 钥 时 使 用 了 一 个 非 常 非 常 不 常 用 、 非 常 非 常 复 杂 的 密 码 , 在 上 面 的 操 作 中 , 我 们 几 乎 每 个 操 作 都 要 输 入 至 少 一 次

这 个 密 码 , 很 不 方 便 。 这 里 教 给 大 家 如 何 修 改 子 密 钥 的 密 码 。

如 果 你 搜 索 gpg subkey change passphrase 这 些 关 键 词 的 话 , 你 会 看 到 很 多 帖 子 说 GPG 无 法 实 现 这 种 需 求 , 但 在 我 实 际 操 作 后 发 现 , 里 然 给 子 密 钥 修 改 密 码 会 提 示 错 误 , 但 实 际 密 码 是 修 改 成 功 了 的 。

首 先 我 们 在 机 器 上 导 入 需 要 的 子 密 钥 , 如 上 面 操 作 就 可 , 注 意 一 定 不 要 导 入 主 密 钻 ! !

然 后 我 们 直 接 修 改 密 码 :

rainshaw&ubuntu:~/Desktop$ gpg --expert --edit-key Rainshaw gPg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc .

This is free software: You are free to change and redistribute it。

There is NO NARRANTY,to the extent permitted by Law.。

Secret subkeys are availablLe .

pub rsa4096/F2FE7008B02578B4 created: 2021-08-16 expires: never usage: C trust: uLtimate validity: ulLtimate rainshaw&ubuntu:~/Desktop$ gpg --expert --edit-key Rainshaw gPg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc .

This is free software: You are free to change and redistribute it。

There is NO NARRANTY,to the extent permitted by Law.。

Secret subkeys are availablLe .

pub rsa4096/F2FE7008B02578B4

created: 2021-08-16 expires: never usage: C

trust: uLtimate validity: ulLtimate Ssb “_cV25519/7A3B9781DAD1C286

created: 2021-08-16 “expires: 2022-08-16 “usage: 卫 ssb “Isa4096/0B45187B21327343

created: 2021-08-16 “expires: 2022-08-16 “usage: 8 ssb Sa4096/4FFFC7DRA1ABB8BB5

created: 2021-08-16 “expires: 2022-08-16 “usage: R [uLtimate] (1) 。 Rainshaw

gpg> passwad gpg: key F2FE7008B02578B4/F2FE7008B02578B4: error changing passphrase: No Secret key

gPpg> save Key not changed so no update needed。

注 意 到 我 们 完 成 修 改 密 码 操 作 后 虹 然 提 示 我 们 exror changing passphrase, 但 你 可 以 测 试 一 下 , 密 码 是 修 改 成 功 了 的 !

导 入 主 密 钥 [scode type=“yello“] 一 定 不 要 跳 着 看 ! ! 否 则 功 亏 一 筑 ! ! [/scode]

当 你 完 成 上 面 的 步 骤 后 , 此 时 如 果 机 器 是 你 信 任 的 或 者 有 TPM 芯 片 或 智 能 卡 设 备 的 话 , 你 可 以 选 择 导 入 主 密 钢 :

rainshaweubuntu:~/Desktops gpg -Q sk2 .key | gpg --import [scode type=“yello“] 一 定 不 要 跳 着 看 ! ! 否 则 功 亏 一 筑 ! ! [/scode]

当 你 完 成 上 面 的 步 骤 后 : 正 时 如 果 机 器 是 你 信 任 的 或 者 有 TPM 芯 片 或 智 能 卡 设 备 的 话 , 你 可 以 选 择 导 入 主 密 钥 :

rainshaweubuntu:~/Desktops gpg -Q sk2 .key | gpg --import gpg: encrypted with 256-bit ECDH key,ID 7A3B9781DAD1C286 , created 2021-08-16

“Rainshaw <XXX@1iVe .com>“ gpg: key F2FE7008B02578B4: “Rainshaw “ 1 new signature gpg: key F2FE7008B02578B4: “Rainshaw “ 1 new subkey gpg: key F2FE7008B02578B4: secret key imported gpg: Total number processed: 1

gpPg: new subkeys: 1 gpPg: new signatures: 1 gpPg: secret keys read: 1 gpPg: secret keys imported: 1 gpg: “secret keys unchanged: 1

此 时 你 皋 $ 钢 的 密 码 和 子 密 钥 的 密 码 是 不 同 的 , 我 们 能 够 很 好 的 保 护 主 密 钥 的 同 时 , 减 少 我 们 日 常 使 用 时 的 麻 烦 。

如 果 有 TPM 芯 片 可 以 在 --edit-key 时 , 使 用 keytotpm 命 令 , 将 密 钢 转 移 到 TPM 芯 片 上 , 博 主 未 尝 试 , 请 自 行 测 试 。 如 果 有 智 能 卡 设 备 如 YubiKey , 则 可 以 使 用 keytocard 命 令 。

常 见 问 题 与 解 答 是 香 应 该 上 传 自 己 的 公 钥 到 公 钥 服 务 器 上 ? 根 据 博 主 uiyc 的 储 客 , 不 推 荐 将 公 钥 上 传 到 公 钥 服 务 器 上 , 除 非 你 真 的 需 要 。 该 博 主 的 博 客 里 列 举 了 公 钢 服 务 器 的 诺 多 问 意 , 如 滥 用 、 投 毒 “ 签 名 Dos、 熬 破 、 隐 私 问 题 。

  1. 知 何 公 布 自 品 鸥 公 钥 ? 我 们 应 该 多 逐 径 、 分 散 的 公 开 自 己 的 公 钥 , 并 在 信 任 公 钥 时 先 确
  2. 是 否 应 该 上 传 自 己 的 公 钥 到 公 钥 服 务 器 上 ? 根 据 博 主 ulyc 的 博 客 , 不 推 荐 将 公 钥 上 传 到 公 钥 服 务 器 上 , 除 非 你 真 的 需 要 。 该 博 主 的 博 客 里 列 举 了 公 钥 服 务 器 的 诸 多 问 题 , 如 滥 用 、 投 毒 、 签 名 Dos、 爆 破 、 隐 私 问 题 。

  3. 如 何 公 布 自 己 的 公 钥 ? 我 们 应 该 多 途 径 、 分 散 的 公 开 自 己 的 公 钥 , 并 在 信 任 公 钥 时 先 确 _ 认 指 纹 是 否 正 确 。 你 可 以 将 公 钥 发 布 到 GitHub、 个 人 博 客 、 社 交 软 件 、 公 开 论 坛 中 。

补 充 使 用 PGP 为 git commit 签 名 打 开 终 端 , 运 行

$ gpg -K --keyid-format=Long /Users/hubot/ .gnupg/secring.gpg

SeC 4096R/3RRA5C34371567BD2 2016-03-10 [C] uiQd Hubot SSD 4096R/42B317FD4BR89B7A 2016-03-~10 【[8 ]

找 到 你 要 用 的 GPG 密 钥 ID, 木 园 沥 砂 助

42B317FD4BA89E7A。 然 后 设 置

$ git config --gLlobal user .signingkey 42B317FD4BR897 $ git config --gLobal commit .gpgsign true

第 一 行 是 告 诉 Git 用 哪 个 密 钥 进 行 签 名 , 第 二 行 是 告 诉 Git 每 次 commit 的 时 候 眼 动 签 名 , 如 果 不 加 第 二 行 , 在 每 次 commit 时 需 要 增 加 -s 参 云 盅 白 。

[scode type=「“green“] 不 要 忘 了 把 公 钥 上 传 到 GitHub 。 [/scodej]

J-L r 一 一 一 A 山 / 一 一 一 儿 数 才 会 签 名 。 [scode type=「“green“] 不 要 忘 了 把 公 钥 上 传 到 GitHub 。 [/scode] 使 用 PGP 进 行 SSH

[scode type=「“blue「“] 关 于 服 务 端 如 何 启 用 密 钥 登 陆 , 请 自 行 查 找 教 程 , 这 里 只 介 绍 如 何 配 置 本 地 电 脑 。 [/scode]

Win10

CMD

[post url=r“https://labjinkan.org/2021/08/01/using-gpg-for-ssh- authentication-on-windows-10/“ title=“ 在 Windows 10 上 用 GPG 完 成

SSH 认 证 “ cover=“https://labjinkan.org/wp-content/themes/kagami- master/assets/images/fallback_coverjpg“ 厂

Git Bash

[scode type=「“blue「“] 网 上 教 程 很 多 , 我 配 置 了 好 几 次 都 没 成 功 , 最 后 按 照 下 面 这 个 步 骤 成 功 了 , 有 很 多 注 意 事 项 。 [/scodej]

[scode type=「“yellow「“] 这 个 教 程 说 不 要 用 CRLF 要 用 LF, 在 Win10 上 你 可 以 用 vscode 来 设 置 换 行 符 , 设 置 的 地 方 在 vscode 的 右 下 角 。 [/scode]

首 先 , 新 建 文 件 -/ .gnupg/gpg.conf 内 容 如 下 , 最 后 不 要 换 行 :

$ cat ~/.gnupg/gpg.conf use-agent

的 -~/.gnupg/gpg-agent.conf 文 件 , 内 容 如 下 , 同 样 最 后 不 要 行 : E

$ cat ~/.gnupg/gpg-agent .conf enable-ssh-support

然 后 创 建 -/ .gqnupg/sshcontrol 文 件 , 内 容 如 下 , 不 要 换 行

$ gpg -K --with-keygrip SeC zSa2048 2019-03-21 [C] [expires: 2021-03-20 ] 96F33EBA7F4B0F7051D75FC208715AF32191DB135 Keygrip = 90BE08830BC1AAD225BE657AD4FBEBE638B3D8B50C9B uid [uLtimate] Brian BxelbierQd SSbD zSa2048 2019-03-21 [B] [expires: 2021-03-20 ] Keygrip = 5FA04ARBEBFBC5089B50EDEB43198B4895BCA2136 SSbD Sa2048 2019-~03-21 [R] Keygrip = _ 7710BA0643CC022B92544181FF2EAC2A290CDC0OBH $ cat ~/.gnupg/sshcontrol 7710BA0643CC022B92544181FF2BRAC2R290CDC0B

然 后 修 改 终 端 配 置 文 件 :

$ cat .bashrCc

export GPG _TTY=$(ttY) export 8SH_AUTH_S0CK=$(gpgconf --List-dirs agent-sSsh-socket ) echo UPDATESTARTUPTTY | gpg-connect-agent 1> /dev/nul1l

重 启 终 端 。

然 后 重 启 gpg-agent, 注 意 每 次 修 改 配 置 后 , 都 要 执 行 这 一 步 ( 不 过 一 般 这 种 东 西 配 置 一 次 也 就 够 了 ) 。

$ gpg-connect-agent kil1lagent /bye OK _ closing connection

$ gpg-connect-agent /bye

gpg-connect-agent: no running gpg-agent - starting “C: \Program FilLes“(x86) \Gpg4winv . . \GnuPG\binvgpg-agent .exe「 gpg-connect-aqent: waitinq for the aqent _ to come up . . 。 (58 ) $ gpg-connect-agent kil1lagent /bye OK _ closing connection

$ gpg-connect-agent /bye gpg-connect-agent: no running gpg-agent - starting “C: \Program FiLes (x86) \Gpg4winv . . \GnuPG\binvgpg-agent .exe「

gpg-connect-agent: waiting for the agent to come HP .. 。 (58) gpg-connect-agent: connection to agent established

然 后 检 查 你 的 配 置 是 否 成 功 :

$ SSh-add -L 江 这 里 会 打 印 出 你 的 公 钢

如 果 打 印 出 你 的 公 钥 , 如 果 没 有 输 出 说 明 还 没 有 配 置 好 , 如 你 确 定 是 按 照 本 教 程 一 步 步 做 的 , 那 可 能 本 教 程 已 过 时 , 请 再 搜 寻 。

将 公 钥 传 递 到 服 务 器 端 便 可 使 用 GPG 认 证 密 钥 进 行 SSH 登 陆 了 ! Linux( 以 Ubuntu 为 例 )

F 然 后 启 用 gpg-agent 接 替 ssh-agent 处 理 SSH 侥 水 .

cat enable-ssh-support >> ~/ .gnupg/gpg-agent .conf

然 后 指 定 我 们 要 使 用 的 密 钥 :

$ gpg -K --with-keygrip SeC zSa2048 2019-03-21 [C] [expires: 2021-03-20 ] 96F33EBA7F4B0F7051D75FC208715AF32191DB135 Keygrip = 90BE08830BC1AAD225BE657AD4FBEBE638B3D8B50C9B uid [uLtimate] Brian Bxelbierd SSbD zSa2048 2019-03-21 [B] [expires: 2021-03-20 ] Keygrip = 5FA04ARBEBFBC5089B50EDEB43198B4895BCA2136 SSbD Sa2048 2019-~03-21 [R] 卯 扬 NOIRIAA 伟 厂 弓 日 grag pe 芒 bone 兄 58 请 求 :

cat enable-ssh-support >> ~/ .gnupg/gpg-agent .conf

然 后 指 定 我 们 要 使 用 的 密 钥 :

$ gpg -K --with-keygrip SeC zSa2048 2019-03-21 [C] [expires: 2021-03-20 ] 96F33EBA7F4B0F7051D75FC208715AF32191DB135 Keygrip = 90BE08830BC1AAD225BE657AD4FBEBE638B3D8B50C9B uid [uLtimate] Brian Bxelbierd SSbD zSa2048 2019-03-21 _[B] [expires: 2021-03-20 ] Keygrip = 5FA04ARBEBFBC5089B50EDEB43198B4895BCA2136 SSbD Sa2048 2019-~03-21 [R] Keygrip = _ 7710BA0643CC022B92544181FF2EAC2A290CDC0OBH

$ echo 7710BA0643CC022B92544181FF2BRC2R290CDC0B >> ~/.gnupg/sshcontrol

注 意 替 换 上 面 的 7710BA0643cC022B92544181FF2EAC2A290cpCc0E 为 你

所 要 用 的 。 然 后 我 们 修 改 默 认 的 SSH 工 具 :

$ cat ~/ .bashrc

export 8SH_AUTH_S0CK=$(gpgconf --List-dirs agent-ssh-socket ) gpgconf --Launch gpg-agent

人 育 这 两 行 加 入 到 你 的 终 端 配 置 文 件 中 , 接 下 来 你 需 要 重 启 终 端 才 能 生 交

此 时 你 可 以 检 查 你 的 配 置 是 否 正 确 :

$ SSh-add -L 江 这 里 会 打 印 出 你 的 公 钢

人 怀 上 厂 Ja 一 T A m ul ZC 一 JL r 一 足 一 v 人 J / 一 一 一 门 Dv nu Keygrip = 7710BA0643CC022B92544181FF2EAC2A290CDC0OE

$ echo 7710BA0643CC022B92544181FF2BRC2R290CDC0B >> ~/.gnupg/sshcontrol

注 意 替 换 上 面 的 7710BA0643cC022B92544181FF2EAC2A290cpCc0E 为 你

所 要 用 的 。 然 后 我 们 修 改 默 认 的 SSH 工 具 :

$ cat ~/ .bashrc

export 8SH_AUTH_S0CK=$(gpgconf --List-dirs agent-ssh-socket ) gpgconf --Launch gpg-agent

1 这 两 行 加 入 到 你 的 终 端 配 置 文 件 中 , 接 下 来 你 需 要 重 启 终 端 才 能 生 效 。 此 时 你 可 以 检 查 你 的 配 置 是 否 正 确 :

$ SSh-add -L 江 这 里 会 打 印 出 你 的 公 钢

将 公 钥 传 递 到 服 务 器 端 便 可 使 用 GPG 认 证 密 钥 进 行 SSH 登 陆 了 ! 清 理 PGP 密 码 缓 存

Linux:

$ gpgconf --kil11 gpg-agent

Windows:

$ echo “RELOADAGENT“ | gpg-connect-agent

Category: IMG