Säkra kanaler

Kryptering handlar oftast om att skydda kommunikation mellan två parter genom att sätta upp en säker kanal från sändare till mottagare. För att kunna sätta upp en säker kanal måste man kunna säkerställa identiteten på mottagaren i den andra ändan av kanalen, annars finns det en risk för något som kallas för MITM-attacker mot den krypterade kanalen. En MITM-attack gör att krypteringen helt eller delvis kan kringgås.

Den bästa lösningen som man känner till idag på det här problemet är att använda en extern pålitlig part som kan intyga identiteterna för de som ska kommunicera inför varandra. Detta brukar då kallas för kallas för ett PKI.

I ett PKI har varje användare ett eget certifikat. Ett certifikat består av minst tre saker: (1) en publik krypteringsnyckel som kan användas för att kryptera information till användaren, (2) en identitet för den här användaren och (3) en digital signatur från den pålitliga parten som intygar att nyckeln används av den här användare.

 

X.509

Nästan alltid när man skapar ett PKI görs detta i enlighet en urgammal standard som heter X.509. Det är en rekursiv signeringsordning där varje användare har ett certifikat som sedan intygas uppåt i en hierarkisk ordning i en serie av flera pålitliga parter.

I ett sådant här PKI tilldelas varje användare en unik identitet som garanteras uppåt i hierarkin, och på den högsta nivån i hierarkin (root-nivån) sitter den högsta garanten för att samtliga tilldelade identiteter är korrekta. Matematiskt strikt och korrekt, men tyvärr inte så samstämmigt med verkligheten.

Problemet är i grunden att det här är en mycket stel bild av en persons identitet, där det ses som en unik egenskap som ska garantera globalt. Men det är inte vad en identitet egentligen är i praktiken, utan vi kan ha olika identiteter beroende på vilket sammanhang vi befinner oss i för stunden. I verkligheten har vi en identitet som bättre kan beskrivas via de grupper där vi ingår. Vi kan vara anställd på ett företag, vi kan tillhöra en familj, vi kan vara medlemmar i en förening eller organisation, eller vara medborgare i ett land, och sammantaget är det tillhörigheterna i de här grupperna och hur vi är kända där som skapar en samlad bild av våran identitet.

Tilldelning av vår identitet borde alltså snarare göras med en distribuerad modell där respektive av dessa grupper som vi tillhör står för att intyga att vi tillhör den här gruppen. Vi kan sedan själva intyga vår identitet genom att samla in bevis för tillhörighet i de grupper som vi vill använda till vårat certifikat. Detta kan dock inte göras med ett X.509 certifikat.

 

OKI

Det här som OKI kommer in i bilden. OKI är tänkt att vara ett distribuerat och öppen PKI där vem som helst kan ta rollen som en pålitlig part (ett CA) och börja intyga identiteten av de användare man känner identiteten för. Det kan exempelvis vara ett företag som intygar identiteten för sina anställda, en organisation som intygar sina medlemmar, en avdelning som intygar medarbetare, eller liknande.

Notera att i den här modellen skapar man själv sitt eget certifikat, fast från en samling av certifieringar från de CA man vill ska ingå i certifikatet. Varje CA intygar bara exakt den informationen man känner till om användaren.

Eftersom alla kan starta ett eget CA finns det ingen undre gräns för hur många certifikat man måste utfärda. Kanske bara till sig själv eller sina tre anställda, eller för en hel myndighet, eller så sitter man på en stor databas med identiteter som exempelvis skatteverket och vill starta ett CA utifrån denna databasen.

För att göra det här behövs ett nytt distribuerat format för certifikat (och certifieringar) som tar med de aspekter som behövs för att det här ska fungera, och det är det som är OKI.

 

Hög säkerhet

OKI är ett distribuerat PKI, vilket innebär att säkerheten potentiellt sett kan bli mycket högre än med ett vanligt X.509 baserat PKI. Om en garant längs upp i hierarkin ska garantera alla användares identitet krävs det att inget går snett högt upp i den här hierarkin, för då faller allt ned på alla användarna under denna nivån där säkerheten kan kringgås.

I ett distribuerat PKI kan du exempelvis ställa som krav att en nyckel ska vara certifierad av minst två eller flera av varandra oberoende CA:n som du känner tillit till för att nyckeln ska vara pålitlig. Det gör i sin tur att certifikat blir mycket svårare att förfalska eftersom två oberoende parter intygar äktheten av certifikatet. Ett komprometterat CA kan hända ibland, men två samtligt är mindre sannolikt.

Certifieringen kommer dessutom närmare de fysiska användarna vilken kan öka kvalitén i certifieringen. Ett företag som själv certifierar sina egna anställda blir betydligt mer trovärdigt än ett certifikat från något stort företag på andra sidan av ett stort hav som aldrig har träffat de användare de certifierar.

 

Öppen standard

Det finns ingen orsak att skapa ytterligare en sluten och proprietär standard, utan det bästa är om det här blir en öppen standard som vem som helst kan använda helt fritt. Därför är tanken att OKI ska vara en öppen standard och specifikationen är därför beskriven i ett öppet dokument som kan laddas ned längre ned på den här sidan.

För att standarden ska vara helt öppen och kunna användas av vem som helst har källkoden för OKI släppts öppet och kan användas av vem som helst i ett eget Open Source-projekt.

 

OKI Tool

OKI Tool är ett program med öppen källkod som kan användas för att kryptera och signera filer enligt OKI. OKI Tool är ett textbaserat program (Command Line Interface) utan några speciellt avancerade funktioner, men programmet är helt kompatibelt med Easy Encrypt och filer som krypteras med OKI Tool kan dekrypteras med Easy Encrypt. Omvänt gäller också om man väljer “OKI-format” vid kryptering av filer i Easy Encrypt. Källkoden för OKI Tool är öppen och både programmet och källkoden kan laddas ned på den här sidan.

Easy Encrypt är däremot inte ett Open Source projekt. Orsaken är att det finns både fördelar och nackdelar med Open Source, en av nackdelarna är att Open Soruce projekt oftast är underfinansierade, en annan är just det att källkoden är öppen vilket gör det lättare för utomstående att hitta sårbarheter som inte rapporteras in på rätt sätt. Det går också att skapa modifierade versioner av mjukvaran när källkoden är öppen. Därför har den här kompromissen gjorts där källkoden för Easy Encrypt sluten men de viktiga delarna är öppna, och programmet är kompatibelt med OKI Tool som har öppen källkod. Dessutom är Easy Encrypt freeware och kan användas fritt av privatpersoner. Företag betalar en mindre kostnad för programmet.

 

Dokumentation

Protokollet finns dokumenterat här nedanför, vilket gör att du kan se exakt hur den krypterade informationen lagras och hur nycklarna är sammansatta.

protokoll_oki.pdf

 

Programmet

OKI Tool har öppen källkod så du som kan C/C++ kan gå in och kontrollera i detalj hur programmet fungerar. Exakt samma kodbibliotek (PKE) som som används av OKI Tool används också av Easy Encrypt.

Programmet är textbaserat (Command Line Interface) och måste köras från en kommandotolk.

oki_tool_v10.zip

OBS! Version 1.0 är inte bakåtkompatibelt med de tidigare beta-versionerna.

 

Källkoden för programmet

kod_oki_tool_v10_2018-03-13.zip

Programmet är skrivet i C/C++ och kompileras enklast med Visual Studio.

 

Förbättra Open Key Infrastructure

Skicka in ett förslag till förbättring om du vet hur OKI kan bli bättre.