Další podklíče pro dešifrování (ADSK) s GnuPG#
Additional Decryption Subkeys (ADSK) lze použít k automatickému přidávání příjemců při šifrování zprávy pomocí GnuPG. Typické případy použití zahrnují
mít jeden šifrovací klíč pro skupinu bez nutnosti sdílení soukromého klíče mezi členy skupiny,
přidání záložního klíče k šifrovacímu klíči a
nastavení hlavního klíče, který může dešifrovat zprávy pro ostatní klíče.
Poznámka
Pro konfiguraci ADSK potřebujete GnuPG 2.4.1 nebo novější. Chcete-li šifrovat zprávu pro klíč ADSK, potřebujete GnuPG 2.2.42 nebo novější.
Přehled#
Tento návod vysvětluje, jak přidat záložní klíč (ID uživatele backup@example.com
) jako ADSK k hlavnímu klíči (ID uživatele main@example.com
). Oba klíče jsou uloženy na klíči Nitrokey. Stejný postup lze použít k přidání více klíčů ADSK k jednomu klíči nebo k přidání stejného klíče jako ADSK k více jiným klíčům.
Příprava klíčů#
Podle jednoho z těchto návodů vygenerujte dva klíče:
Ujistěte se, že můžete uvést oba klíče pomocí gpg --list-keys
, například:
$ gpg --list-keys main@example.com backup@example.com
pub ed25519 2023-07-04 [SC]
55BC284C1D30D97638DA4A2C7963A4CD00C947CE
uid [ultimate] Main Key <main@example.com>
sub ed25519 2023-07-04 [A]
sub cv25519 2023-07-04 [E]
pub ed25519 2023-07-04 [SC]
5271152B531F7FFD8787818251FB75800E281241
uid [ultimate] Backup Key <backup@example.com>
sub ed25519 2023-07-04 [A]
sub cv25519 2023-07-04 [E]
Přidání služby ADSK#
Nejprve určete otisk šifrovacího podklíče pro záložní klíč:
$ gpg --list-keys --with-subkey-fingerprints backup@example.com
pub ed25519 2023-07-04 [SC]
5271152B531F7FFD8787818251FB75800E281241
uid [ultimate] Backup Key <backup@example.com>
sub ed25519 2023-07-04 [A]
7AEA1A0EC7BD66FF03AFEFAC8F243D8EC7678FCC
sub cv25519 2023-07-04 [E]
C1735CB29890EEDEABCF1D0DC9310F81D77519BC
Vyhledejte řádek začínající sub
, který obsahuje písmeno E
, označující dílčí klíč s možností šifrování. Otisk tohoto dílčího klíče je uveden v dalším řádku. V tomto případě se jedná o otisk C1735CB29890EEDEABCF1D0DC9310F81D77519BC
.
Poté určete otisk hlavního klíče:
$ gpg --list-keys main@example.com
pub ed25519 2023-07-04 [SC]
55BC284C1D30D97638DA4A2C7963A4CD00C947CE
uid [ultimate] Main Key <main@example.com>
sub ed25519 2023-07-04 [A]
sub cv25519 2023-07-04 [E]
Najdete ji v dalším řádku za pub
, v tomto případě 55BC284C1D30D97638DA4A2C7963A4CD00C947CE
.
Nyní můžete přidat ADSK pomocí příznaku --quick-add-adsk
:
$ gpg --quick-add-adsk \
55BC284C1D30D97638DA4A2C7963A4CD00C947CE \
C1735CB29890EEDEABCF1D0DC9310F81D77519BC
Prvním argumentem je otisk hlavního klíče. Druhým argumentem je otisk šifrovacího podklíče záložního klíče.
Můžete zkontrolovat, zda byla vytvořena služba ADSK:
$ gpg --list-keys --with-subkey-fingerprints main@example.com
pub ed25519 2023-07-04 [SC]
55BC284C1D30D97638DA4A2C7963A4CD00C947CE
uid [ultimate] Main Key <main@example.com>
sub ed25519 2023-07-04 [A]
9DF42A789DA4E848295C529634E35A6897DFABFD
sub cv25519 2023-07-04 [E]
1DFD6EA8D8B88BEA063ADB4BD75708BAF0CD49C8
sub cv25519 2023-07-04 [R]
C1735CB29890EEDEABCF1D0DC9310F81D77519BC
Podklíč s možností R
(restricted) je ADSK. Má stejný otisk prstu jako šifrovací podklíč záložního klíče.
Nyní můžete veřejný klíč distribuovat pomocí ADSK.
Použití ADSK#
Při šifrování zprávy pro hlavní klíč je nyní záložní klíč automaticky přidán jako příjemce. Jedinými požadavky jsou:
Odesílatel zprávy má aktuální veřejný klíč, který obsahuje ADSK.
Odesílatel zprávy používá GnuPG 2.2.42 nebo novější.
Pokud přidáte příznak --verbose
, můžete zkontrolovat klíče, kterými je zpráva zašifrována:
$ echo message | gpg --verbose --encrypt --armor --recipient main@example.com > /tmp/msg.asc
gpg: using pgp trust model
gpg: using subkey D75708BAF0CD49C8 instead of primary key 7963A4CD00C947CE
gpg: automatically retrieved 'main@example.com' via Local
gpg: This key belongs to us
gpg: reading from '[stdin]'
gpg: writing to stdout
gpg: ECDH/AES256 encrypted for: "D75708BAF0CD49C8 Main Key <main@example.com>"
gpg: ECDH/AES256 encrypted for: "C9310F81D77519BC Main Key <main@example.com>"
Pro kontrolu šifrované zprávy můžete také použít volbu --list-packets
:
$ gpg --pinentry-mode cancel --list-packets /tmp/msg.asc | grep "pubkey enc packet"
:pubkey enc packet: version 3, algo 18, keyid D75708BAF0CD49C8
:pubkey enc packet: version 3, algo 18, keyid C9310F81D77519BC
Každý řádek pubkey enc packet
představuje jeden klíč, kterým lze zprávu dešifrovat.
Zrušení ADSK#
Pokud ADSK odvoláte, nebude již přidán jako příjemce při šifrování zprávy. Chcete-li provést odvolání, otevřete klíč pomocí gpg --edit-key
:
$ gpg --edit-key main@example.com
sec ed25519/7963A4CD00C947CE
created: 2023-07-04 expires: never usage: SC
card-no: FFFE 5E0E868D
trust: ultimate validity: ultimate
ssb ed25519/34E35A6897DFABFD
created: 2023-07-04 expires: never usage: A
card-no: FFFE 5E0E868D
ssb cv25519/D75708BAF0CD49C8
created: 2023-07-04 expires: never usage: E
card-no: FFFE 5E0E868D
ssb cv25519/C9310F81D77519BC
created: 2023-07-04 expires: never usage: R
[ultimate] (1). Main Key <main@example.com>
Pomocí key N
vyberte dílčí klíč, který chcete zrušit. Vybraný dílčí klíč je označen hvězdičkou:
gpg> key 2
sec ed25519/7963A4CD00C947CE
created: 2023-07-04 expires: never usage: SC
card-no: FFFE 5E0E868D
trust: ultimate validity: ultimate
ssb ed25519/34E35A6897DFABFD
created: 2023-07-04 expires: never usage: A
card-no: FFFE 5E0E868D
ssb cv25519/D75708BAF0CD49C8
created: 2023-07-04 expires: never usage: E
card-no: FFFE 5E0E868D
ssb* cv25519/C9310F81D77519BC
created: 2023-07-04 expires: never usage: R
[ultimate] (1). Main Key <main@example.com>
Odeberte podklíč pomocí revkey
a poté uložte změny pomocí save
:
gpg> revkey
Do you really want to revoke this subkey? (y/N) y
Please select the reason for the revocation:
0 = No reason specified
1 = Key has been compromised
2 = Key is superseded
3 = Key is no longer used
Q = Cancel
Your decision? 0
Enter an optional description; end it with an empty line:
>
Reason for revocation: No reason specified
(No description given)
Is this okay? (y/N) y
sec ed25519/7963A4CD00C947CE
created: 2023-07-04 expires: never usage: SC
card-no: FFFE 5E0E868D
trust: ultimate validity: ultimate
ssb ed25519/34E35A6897DFABFD
created: 2023-07-04 expires: never usage: A
card-no: FFFE 5E0E868D
ssb cv25519/D75708BAF0CD49C8
created: 2023-07-04 expires: never usage: E
card-no: FFFE 5E0E868D
ssb cv25519/C9310F81D77519BC
created: 2023-07-04 revoked: 2023-07-04 usage: R
[ultimate] (1). Main Key <main@example.com>
gpg> save
Nyní distribuujte aktualizovaný veřejný klíč.
Poznámka
Odvolání se stane účinným až poté, co odesílatel aktualizuje veřejný klíč s odvolaným ADSK. Zprávy, které již byly zašifrovány, mohou být dešifrovány pomocí ADSK i v případě jeho odvolání.