Liten lektion i krypto

Jag nämnde förra veckan att man i allmänhet inte har särskilt mycket nytta av en certification authority (CA) inom hälsovårdens tillämpningar, trots att ett antal personer väldigt gärna skulle ha makten över en sådan. Det är synd, för det är dyrt och jobbigt att sätta upp en fullständig Public Key Infrastructure (PKI) och om den inte egentligen behövs borde man strunta i det och komma igång lite fortare och billigare.

Först behöver jag nog rekapitulera lite grann vad assymetrisk krypto, digitala signaturer och certifikat egentligen är. I sin helhet kallas dessa teknologier oftast public key cryptography. Grunden till det hela är att Rivest, Shamir och Adleman på 70-talet upptäckte en metod som gjorde att man kan kryptera någonting med en nyckel och dekryptera med en annan. Det som krypterats med ena nyckeln kan endast dekrypteras med den andra. Det kallas alltså “assymmetrisk kryptering”. (“Symmetrisk kryptering” är när samma nyckel används för kryptering och dekryptering av ett meddelande.)

Nåväl, om du nu har två nycklar som hör ihop på det här viset, kan du ju spara den ena för dig själv och sen publicera den andra någonstans där vem som helst kan hitta den. På så vis kan ju vem som helst kryptera ett meddelande med den publika delen som endast du själv med hjälp av den andra privata delen kan dekryptera och läsa. Smutt, men det är inte allt.

Du kan ju också vända på steken. Om du krypterar något välkänt med din privata del av nyckeln så kan ju vem som helst hitta din publika nyckel och dekryptera det. Särskilt hemligt är det inte då, men bevisligen kom det från dig, eftersom ingen annan kan ha krypterat det på det viset. Det är vad en digital signatur är, mer eller mindre.

(I realiteten krypterar man med en enklare och snabbare symmetrisk algoritm och krypterar man endast den nyckeln med hjälp av assymetrisk krypto, men den detaljen ändrar inte på principerna.)

En digital signatur kräver lite mer. Säg att jag skriver ett elektroniskt dokument, sen med en viss formel beräknar en “checksumma” på texten, dvs ett stort tal som beror på det exakta innehållet, och sen krypterar den checksumman med min privata nyckel. Då kan vem som helst dekryptera checksumman med min publika nyckel och kolla att den stämmer mot dokumentet. Om den gör det så vet man att dokumentet kommer från mig och att ingen har ändrat något i dokumentet sen jag signerade det.

Det här kan man också använda för inloggning
genom att systemet ger användaren ett slumpartat tal eller ord och sen ber användaren signera det med sin privata nyckel. Systemet verifierar signaturen mot den publika nyckeln och är då säker på vem användaren är.

Nästan…

Var kom den publika nyckeln ifrån? Där sitter problemet. Om jag nu tillverkar ett nyckelpar och sen publicerar den publika nyckeln under namnet “Göran Persson”, kan jag då köpa gods i Sörmland med min digitala signatur? Antagligen inte eftersom ingen kan garantera att det var “Göran Persson” som verkligen publicerade nyckeln, eller precis vilken “Göran Persson” det var. Å andra sidan, om jag själv vid ett tidigare tillfälle personligen gett min publika nyckel till mäklaren och visat min legitimation, så kommer mäklaren absolut kunna lita på att min digitala signatur kommer från mig och ingen annan. Vilket garanterar att mäklaren inte kommer att sälja ett gods i Sörmland till mig, men det är en annan femma.

En lösning är att vi ser till att endast de rätta nycklarna finns att få i ett publikt register. Om nu t.ex. Skatteverket, som vi ju allihopa litar på även om dom inte litar på oss, skulle ha ett register med alla svenskars publika nyckel i, kunde vi nog använda oss av det registret. Men ännu enklare vore att Skatteverket satte sin egen digitala signatur på vår publika nyckel, för då kunde man vara säker på att nyckeln var äkta oavsett var man hittade den om man bara såg en giltig skatteverks-signatur på nyckeln. Det förutsätter förstås att man har Skatteverkets publika nyckel och att man vet med säkerhet att det är Skatteverkets nyckel, så man kan kolla att dom faktiskt skrivit på nyckeln man fått från någon. (Förresten, en påskriven publik nyckel kallas “certifikat”. Skatteverket i detta sammanhang är en “certification authority” (CA).) Så vitt jag vet säljer inte Skatteverket CA tjänster, men dom kunde göra det.

Sammanfattningsvis finns det alltså tre sätt att försäkra sig om att man fått rätt publik nyckel för en viss person eller instans:

  1. Man fick den i handen direkt från den personen vid ett tidigare tillfälle
  2. Man fick den från en databas som man helt litar på och som endast innehåller verifierade nycklar
  3. Man fick den publika nyckeln från var som helst, men nyckeln innehåller även en digital signatur på nyckeln av en betrodd instans som intygar att nyckeln tillhör personen vi tror att den tillhör, nyckeln är (eller “innehåller”, terminologin växlar) ett certifikat.

Notera noga att ingen av ovanstående tre alternativ är inherent säkrare än något annat. Man ska helt enkelt välja rätt metod beroende på tillämpningen och just vilken metod som lämpar sig för vården återkommer jag till nästa vecka. Det här håller på att bli alldeles för långt.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.