Jag följer upp gårdagens inlägg med signering och kryptering med publika och privata nycklar genom PGP. Även här kan man använda principen på alla operativsystem för att dels förhindra att obehöriga kommer åt information, men även garantera att informationen man sprider är korrekt för utpekade användare.
Jag använder PGP (Pretty Good Privacy) som metod, vilket är ett system med privata och publika nycklar (PKI – Public Key Infrastructure). Den ena används för att ”signera” eller ”kryptera” informationen och den andra för att ”verifiera” eller ”dekryptera”. Det går inte att använda samma nyckel för båda processerna. Så länge du är säker på att din privata nyckel inte är ”röjd” så är systemet relativt säkert.
Den eller de personer som skall utbyta information säkert delar med sig av sina publika nycklar. Om person A sedan skall skicka ett meddelande till B, så krypteras meddelandet med person B’s nyckel. Då är det endast B som kan dekryptera meddelandet och läsa innehållet. Om A vill garantera för övriga att det är han/hon som skapat informationen så ”signeras” meddelandet med den egna privata nyckeln. De som då har A’s publika nyckel, och litar på att det är A’s nyckel, kan sedan säkerställa att informationen kommer från A.
Att garantera riktigheten i publika nycklar är inte så krångligt i ett litet sällskap, men om det är personer som inte egentligen känner varandra så kan man behöva en gemensam mellanhand som båda parter litar på för att utbyta de publika nycklarna, en nyckelserver. Det krävs dock inte en sådan för att PKI/PGP skall fungera.
Jag skrev tidigare ”signera” med privat nyckel och inte ”kryptera”. Det har att göra med att meddelandet som krypteras med den privata nyckeln bara är så hemligt som den publika nyckeln är spridd. Är den då publicerad offentligt så är krypteringen inte så mycket värd. Du behöver heller ingen lösenordsfras för att kryptera/dekryptera med en publik nyckel. Därför så brukar man inte tala om ”kryptering” när man använder den egna privata nyckeln, utan just ”signering”.
Just ”PGP” är proprietär mjukvara, men den är till del baserad på Open Source. De ”öppna” delarna brukar användas under namnet OpenPGP och förekommer i många program inklusive GnuPG för Linux. För andra operativsystem så är det bara att söka efter just ”OpenPGP” så hittar man mjukvara för att generera och hantera nycklar.
Det går att generera nycklar via terminalen, men det finns många GUI program som gör det enklare. På Linux använder jag ”Seahorse”, vilket går under andra namn exempelvis i Ubuntu (Lösenord och nycklar). På Windows så kan man exempelvis använda GPG4Win och på MacOS GPGtools.
Olika verktyg har olika för- och nackdelar. Exempelvis så går det att integrera Seahorse med filhanteraren Nautilus (apt install seahorse-nautilus), Nemo (apt install nemo-seahorse) eller Caja (apt install caja-seahorse). Vilket gör att kryptering/dekryptering/signering är ett högerklick bort.
Alla programmen kan generera nycklar av olika typ och i Seahorse kan man välja just PGP när man klickat på ”+” tecknet i programmet.
Sedan får man fylla i lite information som man vill skall följa med nycklarna. Vill man använda nycklarna i ett e-postprogram för att signera eller kryptera meddelanden så är det ganska noga att man anger rätt adress. För de flesta så kan man sedan acceptera inställningarna som de är, men man kanske skall överväga om man inte bör sätta ett datum för hur länge nyckeln gäller. Att byta nycklar med jämna mellanrum är en bra säkerhetsåtgärd, även om det innebär lite jobb med distribution av nya nycklar.
Nycklar hanteras sedan i Seahorse och det går exempelvis att ”Exportera” såväl den privata, som den publika nyckeln. Det är som tur är lite krångligare att exportera den privata nyckeln, för denna skall man vara riktigt försiktig med. Den privata nyckeln är en fil med ändelsen *.asc som kan importeras i andra datorer där man vill kunna använda den egna PGP nyckeln.
Den publika nyckeln exporteras genom att markera den och välja ”Exportera” från arkivmenyn. Den publika nyckeln har ändelsen *.pgp. Denna kan man öppet skicka/dela med andra som man vill utbyta information med.
Publika nycklar kan sedan importeras i datorns nyckelhanterare och användas i olika sammanhang. Jag kan exempelvis importera Olle Olssons nyckel och sedan kryptera ett dokument med hans publika nyckel.
För att detta skall fungera så kan (bör) man först ”signera” nyckeln och därmed tala om för systemet att man litar på den. Jag känner Olle och jag är säker på att den nyckel jag har fått är hans. Ingen kan heller ändra den signerade nyckeln på mitt system utan att jag får reda på det.
När jag högerklickar på mitt dokument i filhanteraren kan jag välja ”Kryptera…”, vilket öppnar en dialog med krypteringsinställningar.
Här kan jag välja vilken nyckel som skall användas för att kryptera filen. Den krypterade filen får filnamnstillägget .pgp och kan nu säkert skickas till Olle via vanlig mail.
Alla vars nycklar jag valt vid krypteringen kan öppna den krypterade filen (även jag själv). Jag behöver därför inte kryptera en fil per mottagare.
Som en liten bonus så verkar processen komprimera den krypterade informationen också. Kanske spelar mindre roll för redan kompakta filformat, men trevligt hur som helst.
När man ”signerar” en fil så är det inte så stor mening att kryptera informationen, så det görs inte heller. I stället skapas en ”sig-fil” med samma namn. Denna kan sedan användas av mottagaren för att säkerställa att det är den som signerat filen som verkligen sänt den. Om filen manipulerats på vägen så kommer signaturen inte att stämma.
Hur man kontrollerar signaturen kan variera, jag dubbelklickar bara på signaturfilen. Då görs en kontroll av den nedladdade filen och jag får ett meddelande om den är opåverkad eller ej. Det går även att använda ett gpg –validate kommando, men ett dubbelklick är betydligt enklare.
Om man inte har personen som signerat filens publika nyckel så kan man fortfarande använda filen, men man kan som sagt inte vara säker på att den är ”äkta” eller inte har manipulerats.
Avslutning
Det har varit lite förvirrande att läsa på om PGP och nycklar. På en del ställen så säger man att den publika nyckeln slutar på *.asc, vilket jag är ganska säker på inte stämmer i de fall jag beskriver här. Om det är så med andra system vet jag inte, men lite förvirrande är det som sagt.
PGP nycklar med OpenPGP/GnuPG kan användas i ganska många sammanhang, exempelvis i mail. För Thunderbird så behöver man ladda in ett tillägg för att detta ska fungera (-ish).
Jag känner mig långt ifrån säker på hur man skall hantera och använda nycklar och kryptering på ett säkert sätt, vilket jag ser som ett sundhetstecken. Så länge jag är väldigt försiktig med mina privata nycklar så är jag inte så värst orolig egentligen, men risken är ändå att jag råkar spara eller skicka iväg en fil som skulle varit krypterad utan att vara det. Hanterar man information som behöver skyddas så skall man se till att man har stöd av någon som kan lite mer om hur det verkligen fungerar än någon som läst på några timmar och skrivit lite på en blogg.
Min publika nyckel: Klas Karlsson.pgp
Md5 hash: Klas Karlsson.md5 (ae2765fc57dcf44d95b1194abec9296d)