sikker kommunikation.md

Anvend PGP til at kryptere dine beskeder, samt ligeledes at verificere afsender.

TLDR: Hvad er PGP? <a name="tldr-hvad-er-pgp"/></a>

  • PGP (Pretty Good Privacy) bruges til sikker kommunikation.
  • Det bygger på et nøgle-par:
    • Privat nøgle → du holder den hemmelig
    • Offentlig nøgle → du deler den med andre
Hvordan fungerer det?
  • Andre bruger din offentlige nøgle til at:

    • Kryptere indhold, som kun du kan læse
    • Verificere, at en signatur er fra dig
  • Du bruger din private nøgle til at:

    • Dekryptere beskeder sendt til dig
    • Signere beskeder, så andre kan tjekke afsender
Din private nøgle bør beskyttes
  • Lås den med en adgangskode
  • Del den aldrig
  • Giv kun din offentlige nøgle videre
Terminalbaseret arbejdsgang
  • Alt foregår i terminalen (CLI)
  • På Windows bruger du typisk WSL
  • På macOS/Linux bruger du din normale terminal

    Når først opsat, kan du:

  • Sende krypterede filer
  • Underskrive tekst
  • Verificere andres signaturer

Installation af GPG

GPG (GnuPG) er værktøjet, vi bruger til at håndtere PGP-nøgler via terminalen.

Windows WSL

Der antages, at vi anvender WSL (Ubuntu);

$ sudo apt update && sudo apt upgrade
$ sudo apt install gnupg
MacOS

Anvend Brew for at installere GPG på Mac baserede maskiner;

$ brew update && brew upgrade
$ brew install gnupg
Bekræft installation
$ gpg --version

Nøgle håndtering

PGP bygger på nøgle-par: en privat og en offentlig nøgle.

  • Din private nøgle er hemmelig og bruges til at dekryptere og signere
  • Din offentlige nøgle deles med andre og bruges til at kryptere og verificere
Opret et nøgle-par

Kør kommando for at danne et nøgle-par. Dette vil tage dig gennem en kort CLI guide;

$ gpg --full-generate-key

Du vil blive bedt om at vælge;

  • Type: Vælg '1' (RSA)
  • Key Size: Vælg 4096
  • Expire: Valgfrit (du kan vælge aldrig)
  • Name & Email: Valgfrit, men det gør det nemmere at identificere nøglen
  • Passphrase: Valgfrit, men stærkt anbefalet
Se dine nøgler

Se dine nøgler (kun private);

$ gpg --list-secret-keys

[keyboxd]
---------
sec   rsa4096 2025-09-15 [SC]
      2F4832279ECCFE7C93AFFD9DCF7434AA3131A981
uid           [ultimate] frenly (Your frenly neighbourhood nazi) <[email protected]>
ssb   rsa4096 2025-09-15 [E]

Se alle gemte offentlige nøgler (dine og andres);

$ gpg --list-keys

[keyboxd]
---------
pub   rsa4096 2025-09-15 [SC]
      2F4832279ECCFE7C93AFFD9DCF7434AA3131A981
uid           [ultimate] frenly (Your frenly neighbourhood nazi) <[email protected]>
sub   rsa4096 2025-09-15 [E]

Her vises kun min nøgle, i både den offentlige og den private nøglering, men havde man importeret flere nøgler, og måske selv administrerede flere nøgler, så ville disse blive vist også.


pub   rsa4096 2025-09-15 [SC]
sub   rsa4096 2025-09-15 [E]

Dette viser signering (anvendes til kryptering) + certificeringsdato for den offentlige og private nøgle.


2F4832279ECCFE7C93AFFD9DCF7434AA3131A981

Dette er nøglens fingerprint (unikt ID).


uid    [ultimate] frenly (Your frenly neighbourhood nazi) 
        <[email protected]>

Bruger-ID for nøglen (navn + email).

Fingerprint

Hver nøgle har et unikt 'fingerprint'-ID. Dette bruges til at dele og identificere nøgler;

$ gpg --fingerprint

Eller for at se fingerprint for en specifik nøgle;

$ gpg --fingerprint 2F4832279ECCFE7C93AFFD9DCF7434AA3131A981
Eksport og Import af offentlige nøgler

For at kunne kommunikere sikkert med andre, skal du:

  • Dele din offentlige nøgle
  • Importere andres offentlige nøgler

Den offentlige nøgle er den del, der må deles frit. Den bruges til at:

  • Kryptere beskeder til dig
  • Verificere indhold du har signeret
Eksporter din offentlige nøgle;
$ gpg --export --armor 2F4832279ECCFE7C93AFFD9DCF7434AA3131A981 > yourname_pubkey.asc

Dette danner en fil, yourname_pubkey.asc (husk at skifte yourname i overensstemmelse med dine oplysninger), som du kan dele blandt de nødvendige.

Importer offentlige nøgler

Se det som dit adresse-kartotek. Gem andres nøgler som du vil gemme et telefonnummer på vedkommende.

$ gpg --import name_pubkey.asc

Navnet, name_pubkey.asc, ændres i henhold til navnet på den offentlige nøgle du ønsker at importere.

Når nøglen er importeret, kan den ses med;

$ gpg --list-keys
Slet nøgler

Du kan slette dine egne nøgler, eller nøgler du har importeret fra andre.

  • Hvis nogen bruger en gammel offentlig nøgle, som du har slettet, vil du ikke kunne dekryptere deres beskeder.
  • Hvis du skifter nøgle, bør du informere dem du tidligere har delt nøgle med – så de kan opdatere deres nøglering.

Dette påvirker kun din egen nøglering – ikke andres.

Slet dine egne nøgler

Du skal slette både den private og den offentlige del, i den rækkefølge.

$ gpg --delete-secret-keys 2F4832279ECCFE7C93AFFD9DCF7434AA3131A981
$ gpg --delete-keys 2F4832279ECCFE7C93AFFD9DCF7434AA3131A981
Slet andres nøgler

Hvis du vil fjerne en nøgle du har importeret fra en anden;

$ gpg --delete-keys [fingerprint]

Verificer afsender af indhold

Signering bruges til at vise, at du er afsenderen af en fil eller tekst.

  • Du signerer med din private nøgle
  • Andre kan verificere signaturen med din offentlige nøgle
Signer indhold

Hvis du fx har en tekstfil besked.txt, som skal offentliggøres. Signer den med;

$ gpg --clearsign besked.txt

Dette genererer en ny fil: besked.txt.asc

Den nye .asc-fil indeholder:

  • Den originale tekst
  • En signatur nederst i filen

Del kun .asc-filen – den er både læsbar og signeret.

Verificér indhold

Hvis du har modtaget en .asc-fil fra en anden, og du har deres offentlige nøgle;

$ gpg --verify besked.txt.asc

gpg: Signature made Mon Sep 15 23:39:50 2025 CEST
gpg:                using RSA key 2F4832279ECCFE7C93AFFD9DCF7434AA3131A981
gpg: Good signature from "frenly (Your frenly neighbourhood nazi) <[email protected]>" [ultimate]

Hvis signaturen er gyldig: gpg: Good signature from "Navn <email>"

Uden den offentlige nøgle i ens nøglering, får man beskeden: gpg: Can't check signature: No public key, men indholdet vil stadig være læseligt.


Kryptering og Dekryptering af filer

Kryptering bruges til at sende følsomt indhold, så kun modtageren kan læse det.

  • Du bruger modtagerens offentlige nøgle til at kryptere
  • Modtageren bruger sin private nøgle til at dekryptere
Krypter indhold

Hvis du vil sende hemmelighed.txt til en person;

$ gpg --encrypt --recipient 2F4832279ECCFE7C93AFFD9DCF7434AA3131A981 hemmelighed.txt

Hvis vedkommende har givet sin mail under nøgle-oprettelse, så kan denne også anvendes i --recipient;

$ gpg --encrypt --recipient [email protected] hemmelighed.txt

Dette danner en hemmelighed.txt.gpg fil. Dette er den krypterede version. Kun modtageren, der har den tilhørende private nøgle, kan dekryptere den.

Andre der opsnapper denne fil, f.eks under email transit, vil kun kunne se det krypterede indhold (hemmeligheden i et ikke-læsbart format).

Dekrypter indhold
  • Du kan kun dekryptere filer, som er krypteret med din offentlige nøgle.
  • Filer krypteret til andre kan du ikke læse – medmindre du også har deres private nøgle (hvilket du ikke skal have).

Hvis du modtager en fil som hemmelighed.txt.gpg;

$ gpg --output hemmelighed.txt --decrypt hemmelighed.txt.gpg

Hvis din private nøgle er beskyttet med adgangskode, bliver du bedt om den.

Dette danner en hemmelighed.txt fil. Dette er den læsbare version af filen.

®2026 STAERK