GnuPG-2子密钥使用

2023-10-20 11:19:11 浏览数 (2)

子密钥

主私钥有所有功能,但实际使用中仅用来生成子密钥,要保证主密钥的绝对安全。 所以一般只用来生成子密钥,使用子密钥参与工作。 即:subkey,可以看到子密钥拥有以下这些功能,除了没有认证功能

类型

认证 [C]

签名 [S]

身份验证 [A]

加密 [E]

主私钥

子私钥

单一公钥机制对于服务端的验证特别友好,无论用户有多少个子密钥,服务器只需要一份证书(公钥)就够了,而不需要额外开销,去查询这份证书是哪个上级签发的。 什么叫单一公钥机制? 就是主密钥生成一个公钥,所有的子私钥都可以对这个公钥进行签名、身份验证、加密操作。

生成子密钥

子密钥可以指定上面的:[S]、[A]、[E] 的功能,可以全部拥有,也可以功能独立,取决于在添加时的指定。

代码语言:javascript复制
gpg --expert --edit-key [用户ID]

参数说明:

--expert:进入gpg命令模式 --edit-key:操作用户ID

输入addkey,添加子密钥,选择一种加密模式,选 4

代码语言:javascript复制
gpg> addkey
请选择您要使用的密钥类型:
   (3) DSA(仅用于签名)
   (4) RSA(仅用于签名)
   (5) ElGamal(仅用于加密)
   (6) RSA(仅用于加密)
   (7) DSA(自定义用途)
   (8) RSA(自定义用途)
  (10) ECC(仅用于签名)
  (11) ECC(自定义用途)
  (12) ECC(仅用于加密)
  (13) 现存的密钥
 (14)卡中现有密钥

选择长度

代码语言:javascript复制
RSA 密钥的长度应在 1024 位与 4096 位之间。
您想要使用的密钥长度?(3072)
请求的密钥长度是 3072 位
选择一个有效期:1y 表示一年
代码语言:javascript复制
请设定这个密钥的有效期限。
         0 = 密钥永不过期
      <n>  = 密钥在 n 天后过期
      <n>w = 密钥在 n 周后过期
      <n>m = 密钥在 n 月后过期
      <n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 1y
创建时间要大概几秒,成功后的输出:DAF9C7421FB1B533为子密钥


sec  rsa3072/D66E46924A7A4475
     创建于:2023-01-03  有效至:2025-01-02  可用于:SC
     信任度:绝对        有效性:绝对
ssb  rsa3072/9FF7004AC3A0DB89
     创建于:2023-01-03  有效至:2025-01-02  可用于:E
ssb  rsa3072/DAF9C7421FB1B533
     创建于:2023-01-04  有效至:2024-01-04  可用于:S
[ 绝对 ] (1). liukai <liukaitest@163.com>
最后输入save,保存后再退出当前模式。
gpg > save

验证子密钥

查看刚生成的子密钥:

代码语言:javascript复制
gpg -k DAF9C7421FB1B533
输出:sub   rsa3072为刚创建的子密钥


pub   rsa3072 2023-01-03 [SC] [有效至:2025-01-02]
      79A86B57A0DA913F0D76B5ACD66E46924A7A4475
uid             [ 绝对 ] liukai <liukaitest@gmail.com>
sub   rsa3072 2023-01-03 [E] [有效至:2025-01-02]
sub   rsa3072 2023-01-04 [S] [有效至:2024-01-04]

导出子密钥

实际使用中,主密钥不会直接参与验证工作,而是生成多个子密钥去工作,这样做的好处是,子密钥如果泄露可以吊销,子密钥的功能也是有限的。

将生成的子密钥发送给服务端进行验证工作。

代码语言:javascript复制
gpg --armor --output private-key.txt --export-secret-subkey [用户ID]

参数说明:

--armor: 以ASCII形式显示,不推存,容易密钥暴露明文 --export-secret-subkey:导出子密钥 --output:子密钥文件名

GPG 吊销证书

这个就是字面意思,吊销证书。场景就是如果私钥丢失了,那么原来的公钥也就不能信任了。 所以可以生成一个员销证书,来吊销原来的证书。

因此 GPG 多了一个“吊销证书”(revocation certificate),拿着这个证书你就能证明

  1. 确认吊销者身份
  2. 把丢失当前这个密钥作废

0 人点赞