{"id":63,"date":"2026-06-13T16:50:10","date_gmt":"2026-06-13T16:50:10","guid":{"rendered":"https:\/\/shattered.io\/se\/2026\/06\/13\/pgp-kryptering-gpg\/"},"modified":"2026-06-13T16:51:38","modified_gmt":"2026-06-13T16:51:38","slug":"pgp-kryptering-gpg","status":"publish","type":"post","link":"https:\/\/shattered.io\/se\/2026\/06\/13\/pgp-kryptering-gpg\/","title":{"rendered":"PGP-kryptering med GPG: e-post i 12 steg [2026]"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Vanlig e-post skickas i klartext. Varje mejl passerar din e-postleverant\u00f6r, mottagarens leverant\u00f6r och ett ok\u00e4nt antal mellanliggande servrar, och p\u00e5 v\u00e4gen kan inneh\u00e5llet l\u00e4sas, kopieras och lagras. <strong>PGP-kryptering<\/strong> l\u00f6ser det problemet genom att kryptera meddelandet s\u00e5 att bara mottagaren med r\u00e4tt privat nyckel kan l\u00e4sa det. Samma teknik signerar dina filer s\u00e5 att andra kan bevisa att de kommer fr\u00e5n dig och inte har manipulerats.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Den h\u00e4r handledningen bygger ett komplett, fungerande krypteringsuppl\u00e4gg fr\u00e5n grunden med <strong>GnuPG<\/strong> (GPG), den fria implementationen av OpenPGP-standarden. Du genererar ett nyckelpar, skapar ett \u00e5terkallelsecertifikat, krypterar och signerar filer, st\u00e4ller in krypterad e-post i Thunderbird, s\u00e4kerhetskopierar dina nycklar och flyttar den privata nyckeln till en h\u00e5rdvarunyckel. Allt g\u00f6rs i 12 steg och tar ungef\u00e4r 40 minuter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Guiden \u00e4r skriven f\u00f6r GnuPG 2.4-serien (testad med 2.4.4 p\u00e5 Linux, macOS och Windows). Alla kommandon, utdataexempel och fels\u00f6kningstips kommer fr\u00e5n den versionen. Du beh\u00f6ver inga f\u00f6rkunskaper om kryptografi, men det hj\u00e4lper att vara bekv\u00e4m med en terminal. Vill du f\u00f6rst\u00e5 matematiken bakom signaturerna kan du l\u00e4sa v\u00e5r genomg\u00e5ng av <a href=\"\/se\/digitala-signaturer\/\">digitala signaturer<\/a> parallellt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"vad-pgp-och-openpgp-egentligen-ar\">Vad PGP och OpenPGP egentligen \u00e4r<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">PGP st\u00e5r f\u00f6r Pretty Good Privacy och skapades av Phil Zimmermann 1991. Programmet i sig \u00e4r gammalt, men begreppet lever vidare genom <strong>OpenPGP<\/strong>, det \u00f6ppna meddelandeformat som beskriver hur krypterade och signerade meddelanden ska byggas. OpenPGP definierades f\u00f6rst i RFC 4880 (2007) och uppdaterades i RFC 9580 (publicerad juli 2024), som moderniserar de till\u00e5tna algoritmerna och inf\u00f6r en ny nyckelversion. N\u00e4r du i dag pratar om PGP-kryptering menar du n\u00e4stan alltid OpenPGP i praktiken.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GnuPG, oftast f\u00f6rkortat GPG, \u00e4r den mest anv\u00e4nda implementationen av OpenPGP och \u00e4r gratis och \u00f6ppen k\u00e4llkod. Den finns p\u00e5 i stort sett alla Linux-distributioner, p\u00e5 macOS via GPG Suite och p\u00e5 Windows via Gpg4win. GnuPG sk\u00f6ter all kryptografi: nyckelhantering, kryptering, dekryptering, signering och verifiering. Den grafiska klienten Kleopatra (som f\u00f6ljer med Gpg4win) \u00e4r bara ett skal ovanp\u00e5 samma motor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PGP bygger p\u00e5 asymmetrisk kryptografi. Du har ett nyckelpar: en publik nyckel som du delar fritt, och en privat nyckel som aldrig l\u00e4mnar din dator. Den som vill skicka n\u00e5got krypterat till dig anv\u00e4nder din publika nyckel, och bara din privata nyckel kan l\u00e5sa upp resultatet. N\u00e4r du signerar n\u00e5got anv\u00e4nder du tv\u00e4rtom din privata nyckel, och vem som helst kan verifiera signaturen med din publika nyckel. Samma asymmetri som driver <a href=\"\/se\/https-och-tls\/\">HTTPS och TLS<\/a> driver allts\u00e5 PGP, men h\u00e4r styr du nycklarna helt sj\u00e4lv.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I praktiken krypteras inte hela meddelandet med din publika nyckel. PGP genererar en slumpm\u00e4ssig symmetrisk sessionsnyckel (vanligen AES-256), krypterar meddelandet med den och krypterar sedan bara sessionsnyckeln med mottagarens publika nyckel. Det kallas hybridkryptering och \u00e4r sk\u00e4let till att PGP klarar stora filer snabbt. Signaturer bygger i sin tur p\u00e5 <a href=\"\/se\/hashfunktioner\/\">kryptografiska hashfunktioner<\/a>: meddelandet hashas, och hashen signeras.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"forutsattningar-och-versioner\">F\u00f6ruts\u00e4ttningar och versioner<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Innan du b\u00f6rjar beh\u00f6ver du r\u00e4tt programvara installerad. Tabellen nedan listar exakt vad guiden anv\u00e4nder och vilka versioner som testats. H\u00e5ll dig till 2.4-serien av GnuPG eller senare. \u00c4ldre 1.4-versioner finns kvar p\u00e5 vissa system men saknar moderna algoritmer och b\u00f6r inte anv\u00e4ndas f\u00f6r nya nycklar.<\/p>\n\n\n\n<table>\n<thead><tr><th>Komponent<\/th><th>Version (testad)<\/th><th>Plattform<\/th><th>Syfte<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>GnuPG<\/td><td>2.4.4 (2.4-serien)<\/td><td>Linux, macOS, Windows<\/td><td>K\u00e4rnan: nycklar, kryptering, signaturer<\/td><\/tr>\n<tr><td>libgcrypt<\/td><td>1.10.3<\/td><td>Alla<\/td><td>Kryptografiskt bibliotek under GnuPG<\/td><\/tr>\n<tr><td>Gpg4win<\/td><td>Senaste 4-serien<\/td><td>Windows<\/td><td>GnuPG + Kleopatra GUI<\/td><\/tr>\n<tr><td>GPG Suite<\/td><td>Senaste versionen<\/td><td>macOS<\/td><td>GnuPG + nyckelhanterare<\/td><\/tr>\n<tr><td>Thunderbird<\/td><td>128 ESR eller senare<\/td><td>Alla<\/td><td>Inbyggt OpenPGP-st\u00f6d f\u00f6r e-post<\/td><\/tr>\n<tr><td>YubiKey (valfritt)<\/td><td>5-serien, firmware 5.2.3+<\/td><td>USB\/NFC<\/td><td>H\u00e5rdvarulagring av privat nyckel<\/td><\/tr>\n<\/tbody>\n<\/table>\n\n\n\n<p class=\"wp-block-paragraph\">Du beh\u00f6ver ocks\u00e5 administrat\u00f6rsr\u00e4ttigheter f\u00f6r att installera programvara, en e-postadress som du kontrollerar och cirka 40 minuter ost\u00f6rd tid. Skriv ner ett starkt l\u00f6senord f\u00f6r din privata nyckel innan du b\u00f6rjar, g\u00e4rna med hj\u00e4lp av en l\u00f6senordshanterare. L\u00f6senordet skyddar nyckeln om filen hamnar i fel h\u00e4nder, s\u00e5 behandla det som vilket viktigt l\u00f6senord som helst. V\u00e5r guide om <a href=\"\/se\/losenordssakerhet\/\">l\u00f6senordss\u00e4kerhet<\/a> g\u00e5r igenom hur du v\u00e4ljer ett som h\u00e5ller.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Slutligen: g\u00f6r det h\u00e4r p\u00e5 en dator du litar p\u00e5 och som \u00e4r fri fr\u00e5n skadlig kod. PGP skyddar meddelanden i transit och i vila, men om angriparen redan sitter p\u00e5 din maskin med en keylogger spelar krypteringen mindre roll. H\u00e5ll operativsystemet uppdaterat och full diskkryptering p\u00e5slagen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"steg-1-installera-gnupg-pa-linux-macos-och-windows\">Steg 1: Installera GnuPG p\u00e5 Linux, macOS och Windows<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Installationen skiljer sig mellan plattformarna men slutar p\u00e5 samma st\u00e4lle: ett fungerande <code>gpg<\/code>-kommando i terminalen. V\u00e4lj raden f\u00f6r ditt system.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Debian \/ Ubuntu\nsudo apt update &amp;&amp; sudo apt install gnupg\n\n# Fedora\nsudo dnf install gnupg2\n\n# Arch Linux\nsudo pacman -S gnupg\n\n# macOS (Homebrew, eller ladda ner GPG Suite fran gpgtools.org)\nbrew install gnupg\n\n# Windows: ladda ner och installera Gpg4win fran gpg4win.org\n# Gpg4win innehaller GnuPG och Kleopatra (grafiskt granssnitt)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verifiera installationen direkt. Kommandot nedan ska skriva ut versionen och en lista \u00f6ver vilka algoritmer din GnuPG st\u00f6der. F\u00e5r du fram 2.4.x \u00e4r du redo. Visar systemet 1.4.x har du en gammal bin\u00e4r i s\u00f6kv\u00e4gen, och d\u00e5 b\u00f6r du installera 2.4-serien och peka <code>gpg<\/code> mot den.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gpg --version\ngpg (GnuPG) 2.4.4\nlibgcrypt 1.10.3\nCopyright (C) 2024 g10 Code GmbH\n...\nPubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA\nCipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, ...\nHash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224\nCompression: Uncompressed, ZIP, ZLIB, BZIP2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">P\u00e5 Windows \u00f6ppnar du Kleopatra efter installationen och bekr\u00e4ftar att programmet startar utan fel. De flesta steg i guiden g\u00e5r att klicka sig igenom i Kleopatra, men kommandoraden \u00e4r identisk p\u00e5 alla plattformar och l\u00e4ttare att dokumentera, s\u00e5 vi h\u00e5ller oss till <code>gpg<\/code> i terminalen och pekar ut GUI-motsvarigheten d\u00e4r det \u00e4r relevant.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"steg-2-harda-gpg-conf-med-sakra-standardval\">Steg 2: H\u00e4rda gpg.conf med s\u00e4kra standardval<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GnuPG fungerar direkt efter installation, men standardinst\u00e4llningarna \u00e4r konservativa av kompatibilitetssk\u00e4l. Innan du skapar nycklar b\u00f6r du s\u00e4tta s\u00e4krare standardv\u00e4rden i konfigurationsfilen. Den ligger i <code>~\/.gnupg\/gpg.conf<\/code> p\u00e5 Linux och macOS, och i <code>%APPDATA%\\gnupg\\gpg.conf<\/code> p\u00e5 Windows. Skapa filen om den saknas.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># ~\/.gnupg\/gpg.conf\n\n# Visa langa nyckel-ID och fullstandiga fingeravtryck\nkeyid-format 0xlong\nwith-fingerprint\n\n# Foredra starka algoritmer nar nya nycklar skapas\npersonal-cipher-preferences AES256 AES192 AES\npersonal-digest-preferences SHA512 SHA384 SHA256\npersonal-compress-preferences ZLIB BZIP2 ZIP Uncompressed\ndefault-preference-list SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed\n\n# Anvand SHA-512 for certifieringar i stallet for aldre SHA-1\ncert-digest-algo SHA512\n\n# Visa inte versionsstrang i utdata\nno-emit-version\nno-comments<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Raden <code>cert-digest-algo SHA512<\/code> \u00e4r viktig. \u00c4ldre GnuPG kunde signera nyckelcertifieringar med SHA-1, och SHA-1 anses brutet sedan den f\u00f6rsta praktiska kollisionen demonstrerades. Vi har skrivit utf\u00f6rligt om varf\u00f6r i artikeln om <a href=\"\/se\/sha1-kollision\/\">SHAttered-kollisionen<\/a>. Med raden ovan tvingar du fram SHA-512 i st\u00e4llet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Starta om gpg-agenten s\u00e5 att \u00e4ndringarna l\u00e4ses in, och bekr\u00e4fta att konfigurationen tolkas utan fel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gpgconf --kill gpg-agent\n$ gpg --gpgconf-test &amp;&amp; echo \"gpg.conf OK\"\ngpg.conf OK<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fallgrop:<\/strong> en stavfel eller ok\u00e4nt direktiv i <code>gpg.conf<\/code> g\u00f6r att GnuPG v\u00e4grar k\u00f6ra. F\u00e5r du felet &#8220;invalid option&#8221; pekar meddelandet ut den rad som \u00e4r fel. Kommentera ut raden med <code>#<\/code> och testa igen i st\u00e4llet f\u00f6r att gissa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"steg-3-generera-ditt-nyckelpar-rsa-4096-eller-ed25519\">Steg 3: Generera ditt nyckelpar (RSA 4096 eller Ed25519)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nu skapar du nyckelparet, hj\u00e4rtat i hela upps\u00e4ttningen. Du har tv\u00e5 bra val av algoritm: RSA 4096 f\u00f6r maximal kompatibilitet med \u00e4ldre mottagare, eller elliptisk kurva (Ed25519 f\u00f6r signering och Curve25519 f\u00f6r kryptering) f\u00f6r mindre, snabbare och lika s\u00e4kra nycklar. F\u00f6r nya nycklar 2026 rekommenderar vi ECC om du vet att dina mottagare har moderna klienter, annars RSA 4096.<\/p>\n\n\n\n<table>\n<thead><tr><th>Algoritm<\/th><th>Nyckelstorlek<\/th><th>Hastighet<\/th><th>Kompatibilitet<\/th><th>Rekommendation<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>RSA 2048<\/td><td>2048 bit<\/td><td>Snabb<\/td><td>Mycket bred<\/td><td>Undvik f\u00f6r nya nycklar<\/td><\/tr>\n<tr><td>RSA 3072<\/td><td>3072 bit<\/td><td>Medel<\/td><td>Bred<\/td><td>Acceptabel miniminiv\u00e5<\/td><\/tr>\n<tr><td>RSA 4096<\/td><td>4096 bit<\/td><td>L\u00e5ngsammare<\/td><td>Bred<\/td><td>Bra om kompatibilitet kr\u00e4vs<\/td><\/tr>\n<tr><td>Ed25519 \/ Cv25519<\/td><td>256 bit<\/td><td>Mycket snabb<\/td><td>Moderna klienter<\/td><td>B\u00e4st f\u00f6r nya nycklar<\/td><\/tr>\n<\/tbody>\n<\/table>\n\n\n\n<p class=\"wp-block-paragraph\">Anv\u00e4nd det styrda l\u00e4get med <code>--full-generate-key<\/code> s\u00e5 att du ser alla val. F\u00f6r ECC v\u00e4ljer du alternativet &#8220;ECC (sign and encrypt)&#8221; och kurvan Curve 25519. F\u00f6r RSA v\u00e4ljer du &#8220;RSA and RSA&#8221; och anger 4096 bitar. S\u00e4tt en utg\u00e5ngstid p\u00e5 ett till tv\u00e5 \u00e5r. Ett utg\u00e5ngsdatum \u00e4r inte ett hot, eftersom du alltid kan f\u00f6rl\u00e4nga det, men det skyddar dig om du tappar bort nyckeln utan att ha ett \u00e5terkallelsecertifikat.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gpg --full-generate-key\n\nPlease select what kind of key you want:\n   (1) RSA and RSA\n   (9) ECC (sign and encrypt) *default*\n  ...\nYour selection? 9\n\nPlease select which elliptic curve you want:\n   (1) Curve 25519 *default*\nYour selection? 1\n\nPlease specify how long the key should be valid.\nKey is valid for? (0) 2y\n\nReal name: Anna Andersson\nEmail address: anna@exempel.se\nComment:\nYou selected this USER-ID:\n    \"Anna Andersson &lt;anna@exempel.se&gt;\"\n\n# Ange ett starkt losenord nar du blir tillfragad.\n# GnuPG genererar nyckeln och skriver ut fingeravtrycket.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e4r nyckeln \u00e4r klar skriver GnuPG ut ett 40 tecken l\u00e5ngt fingeravtryck. Det \u00e4r den unika identiteten f\u00f6r din nyckel. Notera det. Du kommer att anv\u00e4nda det varje g\u00e5ng n\u00e5gon ska verifiera att de har r\u00e4tt nyckel fr\u00e5n dig. Lista dina nycklar f\u00f6r att se resultatet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gpg --list-secret-keys --keyid-format 0xlong\nsec   ed25519\/0x9A7B3C2D1E4F5A6B 2026-06-13 [SC] [expires: 2028-06-12]\n      AB12CD34EF56AB78CD90EF12AB34CD56EF78AB90\nuid                 [ultimate] Anna Andersson &lt;anna@exempel.se&gt;\nssb   cv25519\/0x1122334455667788 2026-06-13 [E] [expires: 2028-06-12]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">L\u00e4gg m\u00e4rke till markeringarna <code>[SC]<\/code> och <code>[E]<\/code>. Huvudnyckeln kan signera och certifiera (S och C), medan undernyckeln (ssb) sk\u00f6ter kryptering (E). Den uppdelningen \u00e4r medveten och blir viktig i steg 11 n\u00e4r vi flyttar undernycklar till en h\u00e5rdvarunyckel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"steg-4-skapa-ett-aterkallelsecertifikat-direkt\">Steg 4: Skapa ett \u00e5terkallelsecertifikat direkt<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ett \u00e5terkallelsecertifikat \u00e4r din n\u00f6dbroms. Om din privata nyckel l\u00e4cker, om du gl\u00f6mmer l\u00f6senordet eller om du tappar bort nyckeln helt, \u00e4r \u00e5terkallelsecertifikatet det enda s\u00e4ttet att tala om f\u00f6r omv\u00e4rlden att nyckeln inte l\u00e4ngre ska litas p\u00e5. Skapa det nu, medan du har tillg\u00e5ng till nyckeln, inte den dag det redan \u00e4r f\u00f6r sent.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gpg --output anna-revoke.asc --gen-revoke 0x9A7B3C2D1E4F5A6B\n\nCreate a revocation certificate for this key? (y\/N) y\nPlease select the reason for the revocation:\n  0 = No reason specified\n  1 = Key has been compromised\n  3 = Key is no longer used\nYour decision? 0\nEnter an optional description; end it with an empty line:\n&gt;\nReason for revocation: No reason specified\nIs this okay? (y\/N) y\n\n# GnuPG skriver ut ett ASCII-armerat certifikat till anna-revoke.asc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fallgrop:<\/strong> \u00e5terkallelsecertifikatet \u00e4r lika kraftfullt som det \u00e4r farligt. Vem som helst som f\u00e5r tag i filen kan g\u00f6ra din nyckel oanv\u00e4ndbar. Spara den inte tillsammans med sj\u00e4lva nyckeln. L\u00e4gg den p\u00e5 ett USB-minne i ett kassask\u00e5p eller skriv ut den p\u00e5 papper. Behandla den som en reservnyckel till huset.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Flytta omedelbart certifikatet fr\u00e5n din arbetskatalog till ett s\u00e4kert st\u00e4lle och ta bort den lokala kopian. P\u00e5 Linux och macOS s\u00e4tter du dessutom strikta r\u00e4ttigheter p\u00e5 filen s\u00e5 att bara du kan l\u00e4sa den:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ chmod 600 anna-revoke.asc\n$ mv anna-revoke.asc \/media\/usb-backup\/\n# Verifiera att den flyttats och inte ligger kvar lokalt\n$ ls -l anna-revoke.asc\nls: cannot access 'anna-revoke.asc': No such file or directory<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"steg-5-exportera-och-dela-din-publika-nyckel\">Steg 5: Exportera och dela din publika nyckel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00f6r att n\u00e5gon ska kunna skicka krypterad post till dig beh\u00f6ver de din publika nyckel. Den \u00e4r gjord f\u00f6r att delas \u00f6ppet, s\u00e5 det finns ingen risk i att sprida den. Exportera den i ASCII-armerat format (\u00e4ndelsen <code>.asc<\/code>), som \u00e4r ren text och g\u00e5r att klistra in i ett mejl eller l\u00e4gga p\u00e5 en webbsida.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gpg --armor --export anna@exempel.se &gt; anna-public.asc\n$ head -3 anna-public.asc\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmDMEZ...<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Det finns tre vanliga s\u00e4tt att distribuera nyckeln. Det f\u00f6rsta \u00e4r att skicka <code>.asc<\/code>-filen direkt. Det andra \u00e4r att ladda upp den till en nyckelserver. Den moderna, rekommenderade servern \u00e4r keys.openpgp.org, som till skillnad fr\u00e5n de gamla SKS-servrarna verifierar e-postadressen innan den publicerar nyckeln knuten till adressen, vilket stoppar att vem som helst laddar upp en nyckel i ditt namn.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Ladda upp till den verifierande nyckelservern\n$ gpg --keyserver keys.openpgp.org --send-keys 0x9A7B3C2D1E4F5A6B\ngpg: sending key 0x9A7B3C2D1E4F5A6B to hkps:\/\/keys.openpgp.org\n# Du far ett bekraftelsemejl. Klicka pa lanken for att publicera\n# kopplingen mellan din e-postadress och nyckeln.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Det tredje s\u00e4ttet \u00e4r Web Key Directory (WKD), d\u00e4r du publicerar nyckeln p\u00e5 din egen dom\u00e4n. Klienter som st\u00f6der WKD hittar d\u00e5 nyckeln automatiskt utifr\u00e5n din e-postadress. WKD kr\u00e4ver kontroll \u00f6ver dom\u00e4nens webbserver och ligger utanf\u00f6r den h\u00e4r guidens grundfl\u00f6de, men det \u00e4r det renaste s\u00e4ttet f\u00f6r en organisation att dela ut nycklar i stor skala.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"steg-6-importera-och-verifiera-andras-nycklar\">Steg 6: Importera och verifiera andras nycklar<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Att importera en nyckel \u00e4r trivialt. Det sv\u00e5ra, och det viktiga, \u00e4r att verifiera att nyckeln verkligen tillh\u00f6r den person du tror. Annars kan en angripare skicka dig sin egen nyckel och l\u00e5tsas vara mottagaren, en klassisk man-in-the-middle-attack. Importera f\u00f6rst:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gpg --import bjorn-public.asc\ngpg: key 0xF1E2D3C4B5A69788: public key \"Bjorn Berg &lt;bjorn@exempel.se&gt;\" imported\ngpg: Total number processed: 1\ngpg:               imported: 1\n\n# Eller hamta direkt fran nyckelservern via e-postadress\n$ gpg --keyserver keys.openpgp.org --search-keys bjorn@exempel.se<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verifiera nyckeln genom att j\u00e4mf\u00f6ra dess fullst\u00e4ndiga fingeravtryck med mottagaren via en annan kanal, helst i person, via telefon eller via en signerad chatt. L\u00e4s upp fingeravtrycket och bekr\u00e4fta varje tecken. Detta \u00e4r hela grunden f\u00f6r PGP:s tillitsmodell.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gpg --fingerprint bjorn@exempel.se\npub   rsa4096\/0xF1E2D3C4B5A69788 2025-03-01 [SC]\n      Key fingerprint = F1E2 D3C4 B5A6 9788 1234  5678 9ABC DEF0 1122 3344\nuid                 [ unknown] Bjorn Berg &lt;bjorn@exempel.se&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e4r fingeravtrycket st\u00e4mmer signerar du nyckeln lokalt f\u00f6r att markera den som betrodd. Det \u00e4r s\u00e5 det decentraliserade f\u00f6rtroenden\u00e4tet (web of trust) byggs upp: du intygar med din signatur att den h\u00e4r nyckeln tillh\u00f6r r\u00e4tt person.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gpg --lsign-key 0xF1E2D3C4B5A69788\n# Bekrafta att du har verifierat fingeravtrycket, ange ditt losenord.\n# Nyckeln visas nu som [ full ] i stallet for [ unknown ].<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fallgrop:<\/strong> hoppa aldrig \u00f6ver verifieringen f\u00f6r att det \u00e4r obekv\u00e4mt. En importerad men overifierad nyckel ger en falsk k\u00e4nsla av s\u00e4kerhet. GnuPG varnar dig med &#8220;There is no assurance this key belongs to the named user&#8221; n\u00e4r du krypterar till en overifierad nyckel, och den varningen ska du ta p\u00e5 allvar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"steg-7-kryptera-och-dekryptera-filer\">Steg 7: Kryptera och dekryptera filer<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nu kommer den praktiska nyttan. F\u00f6r att kryptera en fil till en mottagare anger du deras e-postadress eller nyckel-ID med flaggan <code>--recipient<\/code>. L\u00e4gg g\u00e4rna till <code>--sign<\/code> s\u00e5 att filen samtidigt signeras, vilket bevisar att den kommer fr\u00e5n dig.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Kryptera och signera en fil till Bjorn\n$ gpg --encrypt --sign --armor --recipient bjorn@exempel.se rapport.pdf\n# Resultat: rapport.pdf.asc (ASCII) eller rapport.pdf.gpg (binar utan --armor)\n\n# Kryptera till flera mottagare samtidigt\n$ gpg --encrypt --recipient bjorn@exempel.se --recipient anna@exempel.se rapport.pdf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mottagaren dekrypterar med ett enda kommando. GnuPG ser automatiskt vilken privat nyckel som beh\u00f6vs, ber om l\u00f6senordet och skriver ut originalfilen. Om filen \u00e4ven var signerad verifieras signaturen i samma steg.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gpg --decrypt rapport.pdf.asc &gt; rapport.pdf\ngpg: encrypted with cv25519 key, ID 0x1122334455667788\ngpg: Good signature from \"Anna Andersson &lt;anna@exempel.se&gt;\" [full]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Vill du bara kryptera n\u00e5got \u00e5t dig sj\u00e4lv, till exempel en l\u00f6senordsfil eller en s\u00e4kerhetskopia, krypterar du till din egen adress. F\u00f6r ren symmetrisk kryptering med bara ett l\u00f6senord och ingen nyckel anv\u00e4nder du <code>--symmetric<\/code>. Det \u00e4r smidigt f\u00f6r en fil du vill skydda med en delad fras, men saknar f\u00f6rdelarna med asymmetrisk nyckelhantering.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Symmetrisk kryptering med enbart losenord (AES-256)\n$ gpg --symmetric --cipher-algo AES256 hemlig.txt\n# Skapar hemlig.txt.gpg, last upp med samma losenord vid dekryptering<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tekniken bakom <code>--cipher-algo AES256<\/code> \u00e4r samma AES-256 som driver h\u00e5rddiskkryptering och s\u00e4kra protokoll i \u00f6vrigt. Skillnaden mot PGP:s vanliga l\u00e4ge \u00e4r att h\u00e4r finns ingen publik nyckel inblandad, bara ett l\u00f6senord som m\u00e5ste delas p\u00e5 ett s\u00e4kert s\u00e4tt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"steg-8-signera-filer-och-verifiera-signaturer\">Steg 8: Signera filer och verifiera signaturer<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Signering handlar inte om sekretess utan om \u00e4kthet och integritet. En signatur bevisar att en fil kommer fr\u00e5n en viss nyckel och inte har \u00e4ndrats sedan den signerades. Det \u00e4r grunden f\u00f6r hur till exempel programvarudistributioner och s\u00e4kerhetsuppdateringar verifieras. Det finns tre signaturtyper.<\/p>\n\n\n\n<table>\n<thead><tr><th>Kommando<\/th><th>Flagga<\/th><th>Resultat<\/th><th>Anv\u00e4ndning<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>Inb\u00e4ddad signatur<\/td><td>&#8211;sign<\/td><td>Komprimerad fil med signatur i<\/td><td>Filer som ska skickas vidare<\/td><\/tr>\n<tr><td>Klartextsignatur<\/td><td>&#8211;clearsign<\/td><td>L\u00e4sbar text med signaturblock<\/td><td>E-post och meddelanden<\/td><\/tr>\n<tr><td>Frist\u00e5ende signatur<\/td><td>&#8211;detach-sign<\/td><td>Separat .sig-fil<\/td><td>Stora filer, mjukvarureleaser<\/td><\/tr>\n<\/tbody>\n<\/table>\n\n\n\n<p class=\"wp-block-paragraph\">Den frist\u00e5ende signaturen \u00e4r vanligast f\u00f6r filer som distribueras publikt, eftersom originalet f\u00f6rblir or\u00f6rt och signaturen ligger i en egen liten fil bredvid. S\u00e5 h\u00e4r skapar och verifierar du en s\u00e5dan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Skapa en fristaende signatur\n$ gpg --armor --detach-sign installer.tar.gz\n# Skapar installer.tar.gz.asc\n\n# Mottagaren verifierar mot originalet\n$ gpg --verify installer.tar.gz.asc installer.tar.gz\ngpg: Signature made tor 13 jun 2026 14:22:10 CEST\ngpg:                using EDDSA key AB12CD34EF56AB78CD90EF12AB34CD56EF78AB90\ngpg: Good signature from \"Anna Andersson &lt;anna@exempel.se&gt;\" [ultimate]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Raden &#8220;Good signature&#8221; \u00e4r det du vill se. F\u00e5r du i st\u00e4llet &#8220;BAD signature&#8221; har filen \u00e4ndrats eller signaturen h\u00f6r inte ihop med filen, och d\u00e5 ska du inte lita p\u00e5 inneh\u00e5llet. En varning om &#8220;no assurance&#8221; betyder att signaturen \u00e4r giltig men att du inte har verifierat avs\u00e4ndarens nyckel, vilket tar oss tillbaka till steg 6.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Klartextsignaturen med <code>--clearsign<\/code> \u00e4r praktisk f\u00f6r meddelanden som ska kunna l\u00e4sas av m\u00e4nniskor \u00e4ven utan PGP-st\u00f6d. Texten ligger kvar i klartext med ett signaturblock runt om, s\u00e5 mottagaren ser b\u00e5de inneh\u00e5llet och kan verifiera det. Det \u00e4r samma princip som beskrivs i v\u00e5r genomg\u00e5ng av <a href=\"\/se\/digitala-signaturer\/\">digitala signaturer<\/a>, fast applicerad p\u00e5 fritext.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"steg-9-kryptera-e-post-i-thunderbird\">Steg 9: Kryptera e-post i Thunderbird<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Filkryptering \u00e4r anv\u00e4ndbart, men f\u00f6r de flesta \u00e4r sj\u00e4lva po\u00e4ngen att kryptera e-post. Thunderbird har inbyggt OpenPGP-st\u00f6d sedan version 78, s\u00e5 du beh\u00f6ver inget till\u00e4gg l\u00e4ngre. Inst\u00e4llningarna ligger under kontots egenskaper, fliken &#8220;End-to-End-kryptering&#8221;.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"koppla-din-nyckel-till-kontot\">Koppla din nyckel till kontot<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Du kan antingen l\u00e5ta Thunderbird generera en ny nyckel \u00e5t sig, eller importera den nyckel du redan skapat i terminalen. F\u00f6r att \u00e5teranv\u00e4nda din befintliga nyckel exporterar du b\u00e5de den publika och den privata delen och importerar dem i Thunderbird via &#8220;L\u00e4gg till nyckel&#8221; och &#8220;Importera en befintlig OpenPGP-nyckel&#8221;.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Exportera den privata nyckeln for import i Thunderbird\n$ gpg --export-secret-keys --armor anna@exempel.se &gt; anna-private.asc\n# VARNING: denna fil innehaller din privata nyckel. Radera den\n# direkt efter import och behall den aldrig okrypterad pa disk.\n$ shred -u anna-private.asc   # saker radering pa Linux<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e4r nyckeln \u00e4r kopplad v\u00e4ljer du per meddelande om det ska krypteras och signeras genom knapparna i skrivf\u00f6nstret. Thunderbird h\u00e4mtar mottagarens publika nyckel automatiskt om den finns p\u00e5 en nyckelserver eller i WKD, annars m\u00e5ste du importera den f\u00f6rst som i steg 6.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"vad-pgp-inte-doljer\">Vad PGP inte d\u00f6ljer<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">En sak \u00e4r avg\u00f6rande att f\u00f6rst\u00e5: PGP krypterar meddelandets inneh\u00e5ll och eventuella bilagor, men inte metadata. \u00c4mnesraden, avs\u00e4ndare, mottagare och tidsst\u00e4mpel skickas i klartext. En angripare som avlyssnar trafiken ser allts\u00e5 att du och Bjorn mejlar, n\u00e4r och hur ofta, men inte vad. Skriv d\u00e4rf\u00f6r aldrig n\u00e5got k\u00e4nsligt i \u00e4mnesraden, och var medveten om att kommunikationsm\u00f6nstret i sig kan avsl\u00f6ja mycket.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PGP skyddar inte heller mot riktade <a href=\"\/se\/natfiske\/\">n\u00e4tfiskef\u00f6rs\u00f6k<\/a> d\u00e4r angriparen lurar dig att kryptera till fel nyckel. Det \u00e4r d\u00e4rf\u00f6r nyckelverifieringen i steg 6 inte g\u00e5r att hoppa \u00f6ver. Krypteringen \u00e4r bara s\u00e5 stark som ditt f\u00f6rtroende f\u00f6r mottagarens nyckel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"steg-10-sakerhetskopiera-nycklar-och-hantera-utgang\">Steg 10: S\u00e4kerhetskopiera nycklar och hantera utg\u00e5ng<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00f6rlorar du din privata nyckel f\u00f6rlorar du tillg\u00e5ngen till allt som krypterats till den. Det g\u00e5r inte att \u00e5terskapa. D\u00e4rf\u00f6r \u00e4r s\u00e4kerhetskopian inte valfri. Exportera hela nyckelringen, b\u00e5de publika och privata nycklar plus tillitsdatabasen, och l\u00e4gg den p\u00e5 ett offline-medium.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Komplett sakerhetskopia av nycklar och tillitsdatabas\n$ gpg --export --armor &gt; backup-public.asc\n$ gpg --export-secret-keys --armor &gt; backup-private.asc\n$ gpg --export-ownertrust &gt; backup-ownertrust.txt\n\n# Packa och kryptera sjalva backupen symmetriskt\n$ tar czf gpg-backup.tar.gz backup-*.asc backup-ownertrust.txt\n$ gpg --symmetric --cipher-algo AES256 gpg-backup.tar.gz\n$ shred -u backup-private.asc gpg-backup.tar.gz<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Den krypterade <code>gpg-backup.tar.gz.gpg<\/code> kan du l\u00e4gga p\u00e5 flera USB-minnen p\u00e5 olika fysiska platser. Eftersom den \u00e4r skyddad med AES-256 och ett starkt l\u00f6senord \u00e4r den s\u00e4ker \u00e4ven om ett minne kommer bort. F\u00f6r \u00e5terst\u00e4llning g\u00f6r du tv\u00e4rtom: dekryptera, packa upp och importera med <code>gpg --import backup-private.asc<\/code> f\u00f6ljt av <code>gpg --import-ownertrust backup-ownertrust.txt<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e4r nyckeln n\u00e4rmar sig sitt utg\u00e5ngsdatum f\u00f6rl\u00e4nger du den i st\u00e4llet f\u00f6r att skapa en ny. Det bevarar alla signaturer och allt f\u00f6rtroende du byggt upp. Redigera nyckeln, v\u00e4lj giltighetstiden och spara:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gpg --edit-key anna@exempel.se\ngpg&gt; expire\nKey is valid for? (0) 2y\ngpg&gt; key 1          # valj undernyckeln\ngpg&gt; expire         # forlang aven den\ngpg&gt; save<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Gl\u00f6m inte att ladda upp den uppdaterade publika nyckeln till nyckelservern efter\u00e5t, annars ser omv\u00e4rlden fortfarande den gamla utg\u00e5ngstiden. K\u00f6r samma <code>--send-keys<\/code> som i steg 5.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"steg-11-flytta-nyckeln-till-en-hardvarunyckel-yubikey\">Steg 11: Flytta nyckeln till en h\u00e5rdvarunyckel (YubiKey)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Det s\u00e4kraste du kan g\u00f6ra med din privata nyckel \u00e4r att flytta den till en h\u00e5rdvarunyckel, s\u00e5 att den aldrig finns p\u00e5 datorns disk. En YubiKey i 5-serien fungerar som ett OpenPGP-smartkort och st\u00f6der b\u00e5de RSA 4096 och Curve25519 fr\u00e5n firmware 5.2.3 och senare. Den privata nyckeln l\u00e4mnar d\u00e5 aldrig h\u00e5rdvaran, och all kryptografi sker p\u00e5 kortet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00f6rbered kortet genom att s\u00e4tta egna PIN-koder. Standardv\u00e4rdena \u00e4r 123456 f\u00f6r anv\u00e4ndar-PIN och 12345678 f\u00f6r admin-PIN, och de m\u00e5ste bytas direkt.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gpg --card-edit\ngpg\/card&gt; admin\ngpg\/card&gt; passwd\n# Byt bade PIN (1) och Admin PIN (3) till egna varden.\ngpg\/card&gt; quit<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Flytta sedan dina undernycklar till kortet med <code>keytocard<\/code>. Detta <strong>flyttar<\/strong> nyckeln, det vill s\u00e4ga den raderas fr\u00e5n disken och hamnar bara p\u00e5 kortet, s\u00e5 se till att du har en fungerande s\u00e4kerhetskopia fr\u00e5n steg 10 f\u00f6rst.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gpg --edit-key anna@exempel.se\ngpg&gt; key 1            # valj krypteringsundernyckeln\ngpg&gt; keytocard\nPlease select where to store the key:\n   (2) Encryption key\nYour selection? 2\ngpg&gt; save<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fallgrop:<\/strong> m\u00e5nga blir \u00f6verraskade av att <code>keytocard<\/code> tar bort den privata nyckeln fr\u00e5n datorn. Utan en testad backup kan du l\u00e5sa ut dig sj\u00e4lv permanent om kortet g\u00e5r s\u00f6nder eller tappas bort. Verifiera alltid att backupen g\u00e5r att importera p\u00e5 en separat maskin innan du flyttar nycklar till h\u00e5rdvara.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"steg-12-komplett-arbetsflode-ett-korbart-projekt\">Steg 12: Komplett arbetsfl\u00f6de, ett k\u00f6rbart projekt<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00f6r att knyta ihop allt f\u00f6ljer h\u00e4r ett komplett, k\u00f6rbart skript som krypterar och signerar en fil till en mottagare, verifierar resultatet och loggar utfallet. Det visar hur kommandona i guiden h\u00e4nger ihop i ett verkligt fl\u00f6de, till exempel i en backuprutin eller en fil\u00f6verf\u00f6ring. Spara det som <code>krypto-skicka.sh<\/code> och g\u00f6r det k\u00f6rbart med <code>chmod +x<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/usr\/bin\/env bash\n# krypto-skicka.sh - kryptera, signera och verifiera en fil med GPG\nset -euo pipefail\n\nMOTTAGARE=\"$1\"      # t.ex. bjorn@exempel.se\nFIL=\"$2\"            # filen som ska skickas\nUT=\"${FIL}.asc\"\n\n# 1. Kontrollera att mottagarens nyckel finns\nif ! gpg --list-keys \"$MOTTAGARE\" &gt;\/dev\/null 2&gt;&amp;1; then\n  echo \"FEL: ingen nyckel hittad for $MOTTAGARE\" &gt;&amp;2\n  echo \"Importera och verifiera nyckeln forst (se steg 6).\" &gt;&amp;2\n  exit 1\nfi\n\n# 2. Kryptera och signera\necho \"Krypterar $FIL till $MOTTAGARE ...\"\ngpg --batch --yes --armor --sign --encrypt \\\n    --recipient \"$MOTTAGARE\" --output \"$UT\" \"$FIL\"\n\n# 3. Verifiera att utdatafilen ar ett giltigt PGP-meddelande\nif head -1 \"$UT\" | grep -q \"BEGIN PGP MESSAGE\"; then\n  echo \"OK: $UT skapad ($(wc -c &lt; \"$UT\") byte)\"\nelse\n  echo \"FEL: utdata ser inte ut som ett PGP-meddelande\" &gt;&amp;2\n  exit 1\nfi\n\n# 4. Logga utfallet\necho \"$(date -Iseconds) krypterade $FIL till $MOTTAGARE\" &gt;&gt; krypto.log\necho \"Klart. Skicka $UT till mottagaren.\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">K\u00f6r skriptet med mottagare och fil som argument. Utdatat visar varje steg, och ett misslyckande avbryter direkt tack vare <code>set -euo pipefail<\/code>, s\u00e5 du aldrig av misstag skickar en okrypterad fil.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ .\/krypto-skicka.sh bjorn@exempel.se kvartalsrapport.pdf\nKrypterar kvartalsrapport.pdf till bjorn@exempel.se ...\nOK: kvartalsrapport.pdf.asc skapad (4821 byte)\nKlart. Skicka kvartalsrapport.pdf.asc till mottagaren.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mottagaren beh\u00f6ver bara k\u00f6ra <code>gpg --decrypt kvartalsrapport.pdf.asc &gt; rapport.pdf<\/code>, ange sitt l\u00f6senord och f\u00e5r b\u00e5de filen och en bekr\u00e4ftelse p\u00e5 att signaturen \u00e4r giltig. Du har nu ett fungerande PGP-uppl\u00e4gg fr\u00e5n nyckelgenerering till automatiserad, verifierad fil\u00f6verf\u00f6ring.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"snabbreferens-de-vanligaste-gpg-kommandona\">Snabbreferens: de vanligaste GPG-kommandona<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e4r grunden sitter beh\u00f6ver du s\u00e4llan sl\u00e5 upp mer \u00e4n den h\u00e4r tabellen. Den samlar de kommandon du anv\u00e4nder oftast i daglig drift av PGP-kryptering.<\/p>\n\n\n\n<table>\n<thead><tr><th>Uppgift<\/th><th>Kommando<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>Lista publika nycklar<\/td><td><code>gpg --list-keys<\/code><\/td><\/tr>\n<tr><td>Lista privata nycklar<\/td><td><code>gpg --list-secret-keys<\/code><\/td><\/tr>\n<tr><td>Generera nyckelpar<\/td><td><code>gpg --full-generate-key<\/code><\/td><\/tr>\n<tr><td>Exportera publik nyckel<\/td><td><code>gpg --armor --export ADRESS<\/code><\/td><\/tr>\n<tr><td>Importera nyckel<\/td><td><code>gpg --import fil.asc<\/code><\/td><\/tr>\n<tr><td>Visa fingeravtryck<\/td><td><code>gpg --fingerprint ADRESS<\/code><\/td><\/tr>\n<tr><td>Kryptera och signera<\/td><td><code>gpg -se -r ADRESS fil<\/code><\/td><\/tr>\n<tr><td>Dekryptera<\/td><td><code>gpg --decrypt fil.asc<\/code><\/td><\/tr>\n<tr><td>Verifiera signatur<\/td><td><code>gpg --verify fil.asc<\/code><\/td><\/tr>\n<tr><td>Redigera nyckel<\/td><td><code>gpg --edit-key ADRESS<\/code><\/td><\/tr>\n<\/tbody>\n<\/table>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"sex-vanliga-fallgropar-med-pgp-kryptering\">Sex vanliga fallgropar med PGP-kryptering<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">De flesta problem med PGP beror inte p\u00e5 krypteringen i sig utan p\u00e5 hur m\u00e4nniskor hanterar nycklarna. H\u00e4r \u00e4r de misstag vi ser oftast, och hur du undviker dem.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ingen s\u00e4kerhetskopia av privat nyckel.<\/strong> Tappar du nyckeln \u00e4r allt krypterat material f\u00f6rlorat f\u00f6r alltid. G\u00f6r backupen i steg 10 innan du krypterar n\u00e5got viktigt.<\/li>\n<li><strong>\u00c5terkallelsecertifikat skapas aldrig.<\/strong> Utan det kan du inte dra tillbaka en komprometterad nyckel. Skapa det i steg 4, samma dag som nyckeln.<\/li>\n<li><strong>Overifierade nycklar.<\/strong> Att importera en nyckel betyder inte att den \u00e4r \u00e4kta. J\u00e4mf\u00f6r alltid fingeravtrycket via en separat kanal.<\/li>\n<li><strong>K\u00e4nslig information i \u00e4mnesraden.<\/strong> PGP krypterar inte \u00e4mne, avs\u00e4ndare eller mottagare. H\u00e5ll \u00e4mnesraden intets\u00e4gande.<\/li>\n<li><strong>Svagt l\u00f6senord p\u00e5 nyckeln.<\/strong> Om nyckelfilen l\u00e4cker \u00e4r l\u00f6senordet sista f\u00f6rsvaret. Anv\u00e4nd en l\u00e5ng, unik fras.<\/li>\n<li><strong>Privat nyckel kvar i klartext p\u00e5 disk.<\/strong> N\u00e4r du exporterat den privata nyckeln f\u00f6r import n\u00e5gon annanstans, radera filen s\u00e4kert med <code>shred -u<\/code>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"felsokning-atta-vanliga-problem-och-losningar\">Fels\u00f6kning: \u00e5tta vanliga problem och l\u00f6sningar<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">St\u00f6ter du p\u00e5 fel \u00e4r chansen stor att det redan finns i tabellen nedan. Den t\u00e4cker de \u00e5tta vanligaste felmeddelandena och vad de beror p\u00e5.<\/p>\n\n\n\n<table>\n<thead><tr><th>Problem \/ meddelande<\/th><th>Orsak<\/th><th>L\u00f6sning<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>&#8220;No secret key&#8221;<\/td><td>Du saknar den privata nyckeln f\u00f6r att dekryptera<\/td><td>Importera din privata nyckel, eller be avs\u00e4ndaren kryptera till r\u00e4tt publik nyckel<\/td><\/tr>\n<tr><td>&#8220;There is no assurance this key belongs to&#8230;&#8221;<\/td><td>Mottagarens nyckel \u00e4r overifierad<\/td><td>Verifiera fingeravtrycket och signera nyckeln (steg 6)<\/td><\/tr>\n<tr><td>&#8220;Inappropriate ioctl for device&#8221;<\/td><td>gpg-agent kan inte visa l\u00f6senordsdialogen<\/td><td>S\u00e4tt <code>export GPG_TTY=$(tty)<\/code> i din shell-profil<\/td><\/tr>\n<tr><td>&#8220;signing failed: Inappropriate ioctl&#8221;<\/td><td>Pinentry hittar ingen terminal<\/td><td>Installera pinentry och starta om gpg-agent<\/td><\/tr>\n<tr><td>&#8220;BAD signature&#8221;<\/td><td>Filen \u00e4ndrad eller fel signaturfil<\/td><td>H\u00e4mta originalfilen p\u00e5 nytt, lita inte p\u00e5 inneh\u00e5llet<\/td><\/tr>\n<tr><td>&#8220;invalid option&#8221; vid start<\/td><td>Felaktig rad i gpg.conf<\/td><td>Kommentera ut den utpekade raden<\/td><\/tr>\n<tr><td>&#8220;key expired&#8221;<\/td><td>Nyckelns giltighetstid har g\u00e5tt ut<\/td><td>F\u00f6rl\u00e4ng med <code>--edit-key<\/code> och <code>expire<\/code> (steg 10)<\/td><\/tr>\n<tr><td>H\u00e4nger vid l\u00f6senordsfr\u00e5ga \u00f6ver SSH<\/td><td>Ingen grafisk pinentry tillg\u00e4nglig<\/td><td>Anv\u00e4nd <code>pinentry-curses<\/code> i gpg-agent.conf<\/td><\/tr>\n<\/tbody>\n<\/table>\n\n\n\n<p class=\"wp-block-paragraph\">Det \u00f6verl\u00e4gset vanligaste felet p\u00e5 servrar och i SSH-sessioner \u00e4r <code>Inappropriate ioctl for device<\/code>. Det l\u00f6ses n\u00e4stan alltid med en enda rad. L\u00e4gg den i <code>~\/.bashrc<\/code> eller <code>~\/.zshrc<\/code> s\u00e5 slipper du problemet permanent:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ echo 'export GPG_TTY=$(tty)' &gt;&gt; ~\/.bashrc\n$ source ~\/.bashrc\n$ gpgconf --kill gpg-agent   # tvinga omstart av agenten<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"avancerade-tips-for-proffsanvandning\">Avancerade tips f\u00f6r proffsanv\u00e4ndning<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e4r grunderna sitter finns det flera s\u00e4tt att h\u00f6ja s\u00e4kerheten och bekv\u00e4mligheten ytterligare. Det starkaste m\u00f6nstret \u00e4r att h\u00e5lla huvudnyckeln helt offline och bara anv\u00e4nda undernycklar i vardagen. Du genererar huvudnyckeln p\u00e5 en dator som aldrig kopplas till n\u00e4tet, skapar undernycklar f\u00f6r signering, kryptering och autentisering, och tar bara med dig undernycklarna p\u00e5 din arbetsdator. Blir arbetsdatorn komprometterad kan du \u00e5terkalla en undernyckel utan att f\u00f6rlora hela identiteten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En autentiseringsundernyckel (<code>[A]<\/code>) kan dessutom ers\u00e4tta vanliga SSH-nycklar. D\u00e5 loggar du in p\u00e5 servrar med samma h\u00e5rdvarunyckel som krypterar din e-post, och din privata SSH-nyckel finns aldrig p\u00e5 disk. Det g\u00f6rs genom att aktivera <code>enable-ssh-support<\/code> i gpg-agent.conf och exportera nyckeln i SSH-format.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00f6r organisationer \u00e4r Web Key Directory v\u00e4rt att st\u00e4lla in ordentligt. N\u00e4r nycklarna publiceras under <code>https:\/\/exempel.se\/.well-known\/openpgpkey\/<\/code> hittar moderna klienter dem automatiskt utifr\u00e5n e-postadressen, utan att anv\u00e4ndarna beh\u00f6ver leta p\u00e5 nyckelservrar. Det s\u00e4nker tr\u00f6skeln f\u00f6r krypterad e-post i hela organisationen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Slutligen, h\u00e5ll ett \u00f6ga p\u00e5 den kvants\u00e4kra utvecklingen. Dagens RSA- och ECC-nycklar \u00e4r s\u00e4kra mot klassiska datorer men s\u00e5rbara p\u00e5 l\u00e5ng sikt mot tillr\u00e4ckligt kraftfulla kvantdatorer. OpenPGP-v\u00e4rlden arbetar med st\u00f6d f\u00f6r de algoritmer som NIST standardiserat, och vi f\u00f6ljer den utvecklingen i v\u00e5r bevakning av <a href=\"\/se\/cryptography-hub\/\">kryptografi<\/a>. Material som krypteras i dag och m\u00e5ste vara hemligt om tjugo \u00e5r b\u00f6r du planera att kryptera om n\u00e4r kvants\u00e4kra OpenPGP-nycklar blir allm\u00e4nt tillg\u00e4ngliga.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"vanliga-fragor-om-pgp-kryptering\">Vanliga fr\u00e5gor om PGP-kryptering<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ar-pgp-och-gpg-samma-sak\">\u00c4r PGP och GPG samma sak?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Inte riktigt. PGP \u00e4r det ursprungliga programmet och i dag mest ett samlingsbegrepp. OpenPGP \u00e4r den \u00f6ppna standarden (RFC 4880 och RFC 9580). GPG, eller GnuPG, \u00e4r den fria implementationen av OpenPGP som de allra flesta anv\u00e4nder. N\u00e4r n\u00e5gon s\u00e4ger PGP-kryptering i praktiken menar de oftast OpenPGP via GnuPG.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"kan-pgp-kryptering-knackas\">Kan PGP-kryptering kn\u00e4ckas?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Inte genom att angripa sj\u00e4lva krypteringen. RSA 4096 och Curve25519 \u00e4r s\u00e4kra mot all k\u00e4nd klassisk ber\u00e4kningskraft. Det som kn\u00e4cks i praktiken \u00e4r nyckelhanteringen: svaga l\u00f6senord, stulna privata nycklar eller att man krypterar till fel, overifierad nyckel. S\u00e4kerheten ligger i rutinerna runt nyckeln, inte i matematiken.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"vad-hander-om-jag-glommer-mitt-losenord\">Vad h\u00e4nder om jag gl\u00f6mmer mitt l\u00f6senord?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">D\u00e5 kommer du inte \u00e5t din privata nyckel, och det finns ingen \u00e5terst\u00e4llningsfunktion. Allt som krypterats till nyckeln blir ol\u00e4sbart f\u00f6r dig. Det \u00e4r hela po\u00e4ngen med stark kryptering. Anv\u00e4nd ditt \u00e5terkallelsecertifikat f\u00f6r att markera nyckeln som ogiltig, och skapa ett nytt nyckelpar. F\u00f6rvara d\u00e4rf\u00f6r l\u00f6senordet i en p\u00e5litlig l\u00f6senordshanterare.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"maste-mottagaren-ocksa-anvanda-pgp\">M\u00e5ste mottagaren ocks\u00e5 anv\u00e4nda PGP?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ja, f\u00f6r krypterad e-post och filer beh\u00f6ver b\u00e5da parter PGP och varandras publika nycklar. F\u00f6r enbart signering r\u00e4cker det att mottagaren kan verifiera, vilket de kan g\u00f6ra med vilken OpenPGP-klient som helst utan egen nyckel. F\u00f6r symmetrisk kryptering med <code>--symmetric<\/code> beh\u00f6vs bara ett delat l\u00f6senord.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"rsa-4096-eller-ed25519-vilket-ska-jag-valja\">RSA 4096 eller Ed25519, vilket ska jag v\u00e4lja?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ed25519 med Curve25519 \u00e4r f\u00f6rstahandsvalet f\u00f6r nya nycklar 2026. De \u00e4r mindre, snabbare och minst lika s\u00e4kra som RSA. V\u00e4lj RSA 4096 bara om du vet att du m\u00e5ste kommunicera med gamla system eller klienter som inte st\u00f6der elliptiska kurvor. B\u00e5da ger fullgod s\u00e4kerhet i dag.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"skyddar-pgp-mot-massovervakning\">Skyddar PGP mot mass\u00f6vervakning?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Inneh\u00e5llet, ja. Metadata, nej. PGP d\u00f6ljer vad du skriver men inte vem du mejlar, n\u00e4r eller hur ofta. Den som vill skydda \u00e4ven m\u00f6nstret beh\u00f6ver komplettera med andra verktyg, till exempel anonymiserande n\u00e4tverk. PGP \u00e4r ett starkt skydd f\u00f6r inneh\u00e5ll, inte en helt\u00e4ckande anonymitetsl\u00f6sning.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"hur-ofta-bor-jag-byta-nyckel\">Hur ofta b\u00f6r jag byta nyckel?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Du beh\u00f6ver inte byta nyckel regelbundet om den inte komprometterats. S\u00e4tt i st\u00e4llet en utg\u00e5ngstid p\u00e5 ett till tv\u00e5 \u00e5r och f\u00f6rl\u00e4ng den l\u00f6pande, s\u00e5 bevarar du allt f\u00f6rtroende du byggt upp. Byt bara nyckel helt om den privata delen kan ha l\u00e4ckt, och anv\u00e4nd d\u00e5 \u00e5terkallelsecertifikatet p\u00e5 den gamla.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"relaterat-innehall\">Relaterat inneh\u00e5ll<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"\/se\/digitala-signaturer\/\">Digitala signaturer: hashfunktioner och asymmetriska nycklar<\/a><\/li>\n<li><a href=\"\/se\/hashfunktioner\/\">Kryptografiska hashfunktioner: egenskaper och anv\u00e4ndning<\/a><\/li>\n<li><a href=\"\/se\/https-och-tls\/\">HTTPS och TLS: h\u00e4ngl\u00e5set, certifikat och vad de skyddar<\/a><\/li>\n<li><a href=\"\/se\/losenordssakerhet\/\">L\u00f6senordss\u00e4kerhet: l\u00e4ngd, hashning och l\u00f6senordshanterare<\/a><\/li>\n<li><a href=\"\/se\/natfiske\/\">N\u00e4tfiske: hur bedr\u00e4gerif\u00f6rs\u00f6k fungerar och hur du k\u00e4nner igen dem<\/a><\/li>\n<li><a href=\"\/se\/cryptography-hub\/\">Kryptografi: hashfunktioner, SHA och digitalt f\u00f6rtroende<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Vill du g\u00e5 till k\u00e4llorna finns OpenPGP-standarden i sin helhet i <a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9580.html\" target=\"_blank\" rel=\"noopener\">RFC 9580<\/a>, GnuPG dokumenteras p\u00e5 <a href=\"https:\/\/gnupg.org\/\" target=\"_blank\" rel=\"noopener\">gnupg.org<\/a>, och Windows-anv\u00e4ndare hittar Gpg4win och Kleopatra p\u00e5 <a href=\"https:\/\/www.gpg4win.org\/\" target=\"_blank\" rel=\"noopener\">gpg4win.org<\/a>. F\u00f6r en pedagogisk genomg\u00e5ng av PGP p\u00e5 Linux har <a href=\"https:\/\/ssd.eff.org\/module\/how-use-pgp-linux\" target=\"_blank\" rel=\"noopener\">EFF:s Surveillance Self-Defense<\/a> en bra modul, och projektets officiella hemsida finns p\u00e5 <a href=\"https:\/\/www.openpgp.org\/\" target=\"_blank\" rel=\"noopener\">openpgp.org<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vanlig e-post skickas i klartext. Varje mejl passerar din e-postleverant\u00f6r, mottagarens leverant\u00f6r och ett ok\u00e4nt antal mellanliggande servrar, och p\u00e5 v\u00e4gen kan inneh\u00e5llet l\u00e4sas, kopieras och lagras. PGP-kryptering l\u00f6ser det\u2026<\/p>\n","protected":false},"author":2,"featured_media":64,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,2],"tags":[],"class_list":["post-63","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-10","category-cryptography"],"_links":{"self":[{"href":"https:\/\/shattered.io\/se\/wp-json\/wp\/v2\/posts\/63","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shattered.io\/se\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/shattered.io\/se\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/shattered.io\/se\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/shattered.io\/se\/wp-json\/wp\/v2\/comments?post=63"}],"version-history":[{"count":1,"href":"https:\/\/shattered.io\/se\/wp-json\/wp\/v2\/posts\/63\/revisions"}],"predecessor-version":[{"id":65,"href":"https:\/\/shattered.io\/se\/wp-json\/wp\/v2\/posts\/63\/revisions\/65"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/shattered.io\/se\/wp-json\/wp\/v2\/media\/64"}],"wp:attachment":[{"href":"https:\/\/shattered.io\/se\/wp-json\/wp\/v2\/media?parent=63"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/shattered.io\/se\/wp-json\/wp\/v2\/categories?post=63"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/shattered.io\/se\/wp-json\/wp\/v2\/tags?post=63"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}