Funderingar kring One Time Pad

Jag tänkte egentligen skriva några ord om Säpo-härvan, men jag drabbades av skrivkramp eftersom det var andra tankar som bestämde sig för att annektera skrivdelen av min hjärna.

Det som mest har legat och gnagt är lite funderingar om användningen av kryptering när man kommunicera över internet, denna biten har jag inte direkt några synpunkter på (tvärtom). Det som har legat och gnagt var en diskussion jag blev involverad i om att använda One Time Pads för krypteringen, något jag personligen anser vara meningslöst och dessutom mycket riskfyllt.

One Time Pad är ett extremt enkelt krypto, egentligen så handlar det om att man adderar klartext till nyckelmaterialet.
Problemet med One Time Pad ligger inte i själva algoritmen utan i nyckeln, för att ett chiffer ska kunna kallas One Time Pad är det några saker som måste uppfyllas och dessa är:
1. Nyckeln måste vara av samma längd som klartexten
2. Nyckeln måste vara slumpmässig
3. Nyckeln måste överföras till motparten på ett säkert sätt
4. Nyckeln måste förstöras och aldrig återanvändas

Om ovanstående fyra kriterier uppfylls så är ett dokument krypterat med en OTP matematiskt oknäckbart eftersom en icke slumpmässig datamängd adderad till en slumpmässig datamängd av samma storlek ger ett slumpmässigt resultat.
Kryptotexten ger inga ledtrådar om innehållet som man kan upptäcka på statistisk väg och försök med varje möjlig nyckel kommer ge som resultat att man får samtliga klartexter av samma längd.

Om man tittar på de fyra punkterna ovan så är det punkt två och tre som ställer till problem.

För att chiffret ska räknas som ett OTP krävs det att nyckeln är sant slumpmässig, utnyttjas mjukvarubaserade slumptalsgeneratorer så får man inte äkta slumptal. Det finns mjukvarubaserade slumptalsgeneratorer som anses som kryptografiskt säkra (d.v.s. det är i princip omöjligt att utifrån föregående slumptal förutse kommande).
Utan att föra en lång diskussion om slumptalsgeneratorer så kan man konstatera att ifall en mjukvaruslumptalsgenerator används för att skapa nyckeln så är det inte ett OTP och därmed är beviset för oknäckbarhet upphävt.
Förmågan att motstå angrepp ligger hos slumptalsgeneratorn; knäcks den så att ett angripare kan förutse och återskapa slumptalen så har han knäckt chiffret.

Nästa problem är egentligen det riktigt stora, ovanstående är av mer akademisk karaktär; att överföra nyckeln på ett säkert sätt. Detta hänger ihop med att nyckeln måste vara lika lång som det överförda meddelandet; man måste överföra stora mängder nyckeldata via en säker kanal. Säker kanal i detta fallet är i princip att överlämna en dvd-skiva eller ett usb-minne med nyckeln på till mottagaren, antingen ansikte mot ansikte eller via en betrodd kurir.
I diskussionen jag deltog i menade en av deltagarna att man kan skicka nyckeln i krypterad form (t.ex. med gnupg eller liknande) till mottagaren, jag menar att det tillvägagångssättet är förkastligt.

Om man använder OTP så gör man det för att man inte litar på att andra krypteringsmetoder är tillräckligt säkra, man behöver garanterad oknäckbarhet. Att då skicka nyckeln (som antagligen är åtskilliga hundra megabyte eller gigabyte för att minska antalet nyckeltransporter) under ett skydd som är sämre än det man vill uppnå är bara korkat. Då kan man lika gärna använda den ”sämre” krypteringen redan från början.

Summasummarum; Att använda OTP vid kommunikation är sannolikt en dålig idé.
För det första så är nyckelhanteringen ett stort problem då man dels måste skapa stora mängder slumptal och dels för att dessa ska överföras till mottagaren på ett säkert sätt.
För det andra så finns det en risk att man invaggar sig själv i en falsk känsla av trygghet då det är svårt att skapa äkta slumptal och det är svårt att skapa dem i stora mängder. Är inte nyckelmaterialet sant slumpmässigt så har man inte garanterad oknäckbarhet.

Jag kan dock se vissa användningsområden för OTP, och det skulle vara för överföring av sessionsnycklar till andra krypteringssystem.
Det blir gnupg (etc.) på steroider. De flesta system som bygger på kryptering med öppna nycklar funkar som så att man krypterar data med en symmetrisk algoritm (ex. AES) och en för meddelandet unik nyckel. Nyckeln krypteras sedan med mottagarens offentliga nyckel och bifogas meddelandet.
I detta fallet kan en angripare välja att antingen angripa den symmetriska delen med meddelandet eller den asymmetriska som innehåller nyckeln. Det är alltså två skilda algoritmer som man måste lita på att de är tillräckligt säkra.
Ersätter man den asymmetriska delen med otp så har man eliminerat den ena riskfaktorn, men skyddet är fortfarande inte starkare än den symmetriska algoritmen.

Nackdelen är dock att man förlorar hela poängen med att använda kryptering med öppen nyckel, men för personer som har möjlighet att träffa varandra fysiskt nångång ibland och som behöver kommunicera säkert över ett osäkert medium så kan detta vara en fungerande lösning…

Annonser

2 svar to “Funderingar kring One Time Pad”

  1. Mikael Nilsson Says:

    Tja, det hela beror som vanligt på hur hotmodellen ser ut. Om hotet är tex att någon råkar få tag i ett OTP-krypterat email som hamnat på avvägar, så kan man ju göra bedömningen att sannolikheten att denne *också* fått tag i mailet där man skickade den gpg-krypterade OTP-nyckeln (två år tidigare) är i praktiken noll. Dvs separation av kommunikationerna i tid eller rum kan göra det väldigt säkert.

    • Martin a.k.a. NPC]Otyg Says:

      Det ligger rätt mycket sanning i den kommentaren.
      Å andra sidan så kan man tänka sig att den som väljer OTP över andra krypton antar sig vara under konstant övervakning och därmed kan man anta att även nyckeln snappades upp, och två års analystid är ganska länge.

      Men som sagt; skiljer man på överföringen i tid eller rum så minskar man risken att både nyckel och meddelande faller i fel händer.

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s


%d bloggare gillar detta: