Vi är mitt inne
i vad som brukar kallas för informationssamhället. Att utbyta
information säkert är nu inte bara en militär angelägenhet
utan även civilt nödvändigt . Den moderna IT-tekniken sparar
enorma summor åt industrin. Men den medför även risker.
Hur skickar man information värd kanske miljarder kronor på ett
nätverk som kan avlyssnas hur lätt som helst?
Att använda hemlig skrift för att hindra obehöriga att
förstå ett meddelande är antagligen lika gammalt som skriftspråket
självt. Metoden att göra ett meddelande oläsbart förutom
för mottagaren kallas kryptering.
Bland de första som använde kryptering var Julius Caesar. Han
litade inte på sina kurirer och skickade meddelanden där han
förskjutit hela alfabetet ett bestämt antal steg. Meddelandet
"ANFALL" blev således "CPHCNN" om Caesar och mottagaren
kommit överens om att skjuta alfabetet två steg framåt.
Systemet är mycket simpelt och lätt att dekryptera förutsatt
att men visste algoritmen. En spion som kom över ett krypterat meddelande
kunde lätt pröva alla 26 kombinationer för att se vilket
som gav ett läsbart meddelande. Ändå finns likheter med
dagens mer sofistikerade system. Ett krypteringssystem består oftast
av en algoritm och en nyckel. I Caesars system var algoritmen "skifta
n steg framåt" och n var nyckeln.
När man konstruerar krypteringsalgoritmer idag förutsätter
man att ens fiender förr eller senare kommer att få reda på
hur de fungerar. Säkerheten i systemen ligger därför endast
i nyckeln. Bara den som har nyckeln som ett meddelande är krypterat
med ska kunna dekryptera det. Tyvärr är det, vad man idag vet,
omöjligt att konstruera ett sådant system som dessutom är
praktiskt användbart.
Forcering
Idag är det alltid teoretiskt möjligt att dekryptera meddelanden
även om man inte har nyckeln. Detta kallas forcering. Även om
det nu inte finns något hundraprocentigt säkert krypteringsystem
finns det ändå vissa som anses som tillräckligt säkra.
Om det tar så lång tid att forcera krypterad information att
den har blivit värdelös kan man säga att det system man använt
är tillräckligt säkert. Hur gör man då för
att forcera krypterad information?
För att forcera ett krypterat meddelande krävs att man vet
någonting om det okrypterade meddelandet. Antag att engelsmännen
har fått tag på ett tyskt meddelande under andra världskriget.
Man råkar veta vilken algoritm tyskarna har använt men kan inte
enkelt dekryptera meddelandet då man saknar den nyckel som krävs.
Man antar att meddelandet är ett brev och börjar med texten
"Guten Tag". Man prövar därefter att dekryptera meddelandet
genom att testa sig igenom alla möjliga nyckelkombinationer. Den nyckelkombination
som ger början "Guten Tag" är antagligen den rätta
och man har således även fått resten av meddelandet.
Man inser lätt att ju längre nyckel man använder desto
jobbigare blir det att testa alla kombinationer.
Hemliga nycklar
När två parter ska etablera en säker krypterad förbindelse
måste de båda använda samma algoritm och nyckel. Sändaren
krypterar meddelandet med nyckeln och mottagaren dekrypterar meddelandet
med samma nyckel. De krypteringsalgoritmer som bygger på detta system
kallas "Hemlig nyckel"-algoritmer.
Dessa har ett stort problem: Hur ska sändaren informera mottagaren
om vilken nyckel som ska användas för dekryptering? Han kan ju
inte skicka den i klartext eftersom överföringskanalen tydligen
inte är säker (då skulle han ju inte ha behövt kryptera
meddelandet alls).
Publika nycklar
För att komma runt detta problem använder man sig av en speciell
typ av algoritmer kallade "dubbel nyckel"-algoritmer. Dessa fungerar
så att man krypterar meddelandet med en nyckel och dekrypterar med
en annan.
I praktiken fungerar det så att varje person har ett nyckelpar:
en publik nyckel som alla vet om och en privat nyckel som bara är tillgänglig
för en själv.
Om Arne vill skicka ett meddelande som bara Berit ska kunna läsa
tar han reda på Berits publika nyckel och krypterar meddelandet med
den. Berit tar emot Arnes meddelande och dekrypterar det med sin privata
hemliga nyckel.
Proceduren kan liknas vid ett hänglåssystem. Arne ska skicka
en present till Berit. Han går till postkontoret och hämtar ett
hänglås som Berit har deponerat där. Han lägger presenten
i en kista och sluter hänglåset. Den enda som nu kan öppna
kistan är Berit som har nyckeln som passar och Arne kan således
riskfritt skicka kistan.
Metoden är inte speciellt ny, men det är först på
senare tid som man matematiskt har kunnat analysera dess säkerhet.
Digitala signaturer
Systemen med nyckelpar är enormt mycket mer användbart än
systemen med bara en nyckel. Algoritmer som använder nyckelpar löser
ett annat problem: Hur kan mottagaren av ett meddelande vara säker
på att avsändaren verkligen är den han utger sig att vara
och hur vet mottagaren att meddelandet inte har blivit ändrat på
vägen?
Vi låter KA och KB representera Arnes respektive
Berits publika nycklar för kryptering samt DA och DB
de privata nycklarna för dekryptering. Vi låter också "M"
vara ett meddelande.
Vi återgår till det förra exemplet då Arne skickar
ett meddelande till Berit.
Arne skickar då KB(M) och Berit gör DB(KB(M))=M
då DB och KB är varandras inverser.
Berit kan dock inte garantera att Bertil är den verkliga avsändaren.
Idén med digitala signaturer kan realiseras på följande
sätt:
1) Arne sänder KB(DA(M)) till Be rit.
2) Berit tar fram DA(M) genom att använda DB.
3) Berit använder nu Arnes publi ka nyckel KA på
DA(M) dvs KA(DA(M)) vilket ger M.
Berit är nu säker på att avsändaren verkligen är
Arne . Om det inte var så skulle inte Bertils publika nyckel KB
ta fram det ursprungliga meddelandet M. Vi kan även notera att ingen
av parterna har behövt avslöja sin privata nyckel.
Äkthetsintyg
I många fall är man inte intresserad av att göra texten
hemlig. För att garantera ett meddelandes äkthet, dvs att ingen
har förändrat det på vägen mellan sändare och
mottagare, används ett system med signering. Utifrån meddelandet
räknas en kontrollsumma ut. Denna signeras och skickas med det ursprungliga
meddelandet som sänds i klartext.
Den person som försöker ändra meddelandet kan givetvis
räkna ut en ny kontrollsumma. Däremot kan han inte signera kontrollsumman
med avsändarens signatur (han har ju inte tillgång till avsändarens
privata nyckel).
Matematiska falluckor
Många av dagens krypteringsalgoritmer bygger på så
kallade enkelriktade funktioner. En sådan funktion är lätt
att beräkna åt ena hållet, men dess invers är snudd
på omöjlig att hitta. Sådana funktioner lämpar sig
väl för kryptering av information ty det ska vara lätt att
kryptera information men mycket svårt att forcera den krypterade informationen.
Man brukar benämna funktionerna "matematiska falluckor",
som öppnar sig då man försöker forcera meddelandet.
Mottagaren har dock ytterligare information i form av en nyckel vilken gör
det möjligt att "gå åt andra hållet".
RSA (efter dess upfinnare Rivest, Shamir och Adleman) kallas en mycket
vanlig, och idag säker, krypteringsalgoritm baserad på ett nyckelpar.
Den använder en klassisk enkelriktad funktion, nämligen multiplikation
av två stora primtal.
Antag att man har de två stora primtalen p och q. Att bilda produkten
n=p*q är en mycket enkel beräkningsuppgift. Att gå åt
motsatt håll, dvs ur n hitta p och q är mycket svårare.
Man kan därför ge ut n som sin publika nyckel utan att avslöja
vare sig p eller q som kan vara ens privata nyckel.
Denna metod medför att RSA-krypteringen säkerhet beror på
hur snabbt man kan primfaktorisera stora tal. Om man kommer på ett
sätt att snabbt primfaktorisera n skulle ens privata nyckel vara lätt
att ta fram, och med ens skulle RSA-kryptering bli helt värdelös.
Sannolikheten att man gör en revolutionerande upptäkt inom
området primfaktorisering är dock liten. Problemet ligger istället
i att man ofta underskattar framtidens beräkningskraft. År 1977
ansåg man att det skulle ta 40 driljoner år att primfaktorisera
ett tal av storleksordningen 2125. Redan 1994 lyckades man primfaktorisera
ett tal av storleksordningen 2129. Att kryptera information med
en metod som idag verkar överdrivet säkert är ett måste,
om man vill att informationen ska förbli hemlig även om tio år.
Exportrestriktioner
Olika grupper i samhället har olika intressen vad gäller informationshantering.
Militären vill exempelvis skydda sin egen information mot spionage
samtidigt som man vill kunna spionera på alla sina fiender. USA är
ett typiskt exempel på detta. Inom USA's gränser är det
fritt tillåtet att använda säker kryptering. Amerikanska
företag får dock inte exportera säkra krypteringssystem
till andra länder. NSA (National Security Agency) hanterar säkerhetsfrågor
beträffande kommunikation i USA. NSA har satt upp en gräns för
hur pass säkra system som får exporteras. Man får anta
att denna gräns är satt så att NSA kan forcera den krypterade
informationen om de behöver.
Används av kriminella
Dagens största farhåga med kryptering är att kriminella
grupper enekelt kan skydda sin verksamhet. I praktiken innebär de detta
att t ex knarklangare kan tala ostört över krypterade telefonförbindelser
utan att polisen har möjlighet att avlyssna dem. Detta är ett
stort problem som man brottas med världen över. Visserligen skulle
man helt och hållet kunna förbjuda kryptering och göra användandet
straffbart. Men för att kriminella ska avstå från att kryptera
sin information måste straffet för användning av kryptering
vara hårdare än det brott de försöker dölja. Detta
skulle medföra att en person som krypterar sina kärleksbrev skulle
behöva dömmas till samma straff som en grovt kriminell.
Ett annat förslag är att alla som vill använda kryptering
måste deponera sin privata nyckel hos en tillförlitlig myndighet.
Vid misstanke om brott skulle polisen då efter domstolsbeslut få
tillgång till nyckeln. Detta förslag har två svagheter.
Att samla alla privata nycklar på ett enda ställe ställer
enormt höga krav på säkerhet. Det andra problemet är
att kriminella knappast frivilligt kommer deponera sina nycklar.
Som det ser ut idag verkar det inte finnas något bra sätt
att hindra kriminella att dra fördel av möjligheterna med kryptering. |