Täiendavad dekrüpteerimise alamvõtmed (ADSK) koos GnuPG-ga

Täiendavad dekrüpteerimise alamvõtmed (ADSK) saab kasutada GnuPG-ga sõnumi krüpteerimisel automaatselt vastuvõtjate lisamiseks. Tüüpilised kasutusjuhud on järgmised

  • grupi jaoks on üks krüpteerimisvõti, ilma et grupi liikmed peaksid jagama oma privaatvõtit,

  • varavõtme võtme lisamine krüpteerimisvõtmele ja

  • põhivõtme loomine, millega saab sõnumeid teiste võtmete jaoks dekrüpteerida.

Märkus

ADSK konfigureerimiseks on vaja GnuPG 2.4.1 või uuemat versiooni. ADSK võtme jaoks sõnumi krüpteerimiseks on vaja GnuPG 2.2.42 või uuemat versiooni.

Ülevaade

Selles juhendis selgitatakse, kuidas lisada varuklahv (kasutaja ID backup@example.com) ADSK-na põhivõtmele (kasutaja ID main@example.com). Mõlemad võtmed on salvestatud Nitrokey’sse. Samu samu samu samu samu samu samu samu samu samu samu võtmeid saab kasutada mitme ADSK lisamiseks võtmele või sama võtme lisamiseks ADSK-na mitmele teisele võtmele.

Võtmete ettevalmistamine

Järgige kahe võtme genereerimiseks ühte neist juhistest:

Veenduge, et saate loetleda mõlemad võtmed koos gpg --list-keys, näiteks:

$ 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]

ADSK lisamine

Määrake kõigepealt varundusvõtme krüpteerimise alamvõtme sõrmejälg:

$ 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

Otsige rida, mis algab tähega sub ja sisaldab tähte E, mis näitab krüpteerimisvõimelist alamvõtit. Selle alamvõtme sõrmejälg on loetletud järgmises reas. Antud juhul on sõrmejälg C1735CB29890EEDEABCF1D0DC9310F81D77519BC.

Seejärel määrake peamise võtme sõrmejälg:

$ 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]

Selle leiad järgmisest reast pärast pub, antud juhul 55BC284C1D30D97638DA4A2C7963A4CD00C947CE.

Nüüd saate lisada ADSK kasutades --quick-add-adsk lipu:

$ gpg --quick-add-adsk \
      55BC284C1D30D97638DA4A2C7963A4CD00C947CE \
      C1735CB29890EEDEABCF1D0DC9310F81D77519BC

Esimene argument on põhivõtme sõrmejälg. Teine argument on varavõtme võtme krüpteerimise alamvõtme sõrmejälg.

Saate kontrollida, et ADSK on loodud:

$ 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

ADSK on alamvõti, mille R (piiratud) võime on ADSK. Sellel on sama sõrmejälg kui varundusvõtme krüpteerimise alamvõtmel.

Nüüd saate levitada avalikku võtit koos ADSK-ga.

ADSK kasutamine

Kui krüpteeritakse sõnum põhivõti jaoks, lisatakse nüüd automaatselt vastuvõtjaks ka varuvõtja. Ainsad nõuded selleks on järgmised:

  • Sõnumi saatjal on ajakohastatud avalik võti, mis sisaldab ADSK-d.

  • Sõnumi saatja kasutab GnuPG 2.2.42 või uuemat versiooni.

Kui lisate lipu --verbose, saate kontrollida võtmeid, millega sõnum on krüpteeritud:

$ 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>"

Saate kasutada ka --list-packets valikut, et kontrollida krüpteeritud sõnumit:

$ 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

Iga rida pubkey enc packet tähistab ühte võtit, millega saab sõnumit dekrüpteerida.

ADSK tühistamine

Kui tühistate ADSK, ei lisata seda enam sõnumi krüpteerimisel adressaadiks. Tagasivõtmise teostamiseks avage võti programmiga 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>

Valige tühistatav alamvõti, kasutades key N. Valitud alamvõti on tähistatud tärniga:

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>

Tühista alamvõti käsuga revkey ja seejärel salvesta muudatused käsuga 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

Nüüd levitage uuendatud avalikku võtit.

Märkus

Tühistamine jõustub alles siis, kui saatja on uuendanud avaliku võtme tühistatud ADSK-ga. Juba krüpteeritud sõnumeid saab ADSK-ga dekrüpteerida ka siis, kui see on tühistatud.