OTPW

OTPW är ett engångslösenordssystem utvecklat för autentisering i Unix-liknande operativsystem av Markus Kuhn . En användares riktiga lösenord överförs inte direkt över nätverket . Snarare skapas en serie engångslösenord av en kort uppsättning tecken (konstant hemlighet) och en uppsättning engångstokens. Eftersom varje engångslösenord endast kan användas en gång, är lösenord som fångas upp av en lösenordssniffer eller nyckellogger inte användbara för en angripare.

OTPW stöds i Unix och Linux (via pluggbara autentiseringsmoduler ), OpenBSD , NetBSD och FreeBSD , och en generisk implementering av öppen källkod kan användas för att möjliggöra dess användning på andra system.

OTPW, liksom de andra engångslösenordssystemen, är känsliga för en man i mittenattacken om den används av sig själv. Detta skulle till exempel kunna lösas genom att lägga SSL , SPKM eller liknande säkerhetsprotokoll "under" som autentiserar servern och ger punkt-till-punkt säkerhet mellan klient och server.

Design och skillnader från andra implementeringar

Till skillnad från S/KEY är OTPW inte baserat på Lamports system där varje engångslösenord är envägs- hashvärdet för dess efterföljare. Lösenordslistor baserade på Lamports schema har problemet att om angriparen kan se ett av de sista lösenorden på listan, så kan alla tidigare lösenord beräknas utifrån det. Den lagrar inte heller de krypterade lösenorden som föreslagits av Aviel D. Rubin i Independent One-Time Passwords , för att hålla värden fri från filer med hemligheter.

I OTPW lagras ett enkelriktat hashvärde för varje enskilt lösenord i en potentiellt allmänt läsbar fil i användarens hemkatalog . Till exempel kräver hashvärden för 300 lösenord (en typisk A4-sida ) bara en fyra kilobyte lång .otpw- fil, en vanligtvis försumbar mängd lagringsutrymme.

Lösenorden är noggrant genererade slumptal. Slumptalsgeneratorn är baserad på RIPEMD-160 säker hash-funktion , och den seedas genom att hasha ihop utdata från olika skalkommandon . Dessa ger oförutsägbarhet i form av ett system med slumptalsfrö, åtkomsttider för viktiga systemfiler, användningshistorik för värden och mer. Det slumpmässiga tillståndet är 160-bitars utdata från hashfunktionen. Det slumpmässiga tillståndet upprepas efter varje användning genom att sammanfoga det gamla tillståndet med den aktuella högupplösta timerutgången och hasha resultatet igen. De första 72 bitarna av hash-utgången kodas med ett modifierat base64- schema för att producera läsbara lösenord, medan de återstående 88 bitarna representerar det okända interna tillståndet för slumptalsgeneratorn.

0 I många teckensnitt är tecknen och O eller 1 och l och I svåra att särskilja, därför ersätter den modifierade base64-kodningen de tre tecknen 01l med motsvarande : , = och % . Om till exempel en nolla förväxlas med ett stort O av användaren, kommer lösenordsverifieringsrutinen automatiskt att korrigera detta. S/KEY använder sekvenser av korta engelska ord som lösenord. OTPW använder som standard en base64-kodning istället, eftersom det gör att fler lösenord kan skrivas ut på en enda sida, med samma lösenordsentropi . Dessutom behöver en genomsnittlig mänsklig spion över 30 sekunder för att skriva en slumpmässig sträng på 12 tecken i korttidsminnet, vilket ger ett bra skydd mot korta blickar som en angripare kan ha på en lösenordslista. Listor över korta ord är å andra sidan mycket snabbare att memorera. OTPW kan hantera godtyckliga lösenordsgenereringsalgoritmer, så länge som längden på lösenordet är fast. I den nuvarande versionen otpw-gen- programmet generera både bas-64-kodade (alternativ -p) och 4-bokstavskodade (alternativ -p1) lösenord med en användarspecificerad entropi (alternativ -e).

Prefixlösenordet säkerställer att varken att stjäla lösenordslistan eller avlyssna linjen enbart kan ge obehörig åtkomst. Visserligen är den säkerhet som OTPW uppnår inte jämförbar med den för ett utmaning-svarssystem där användaren har en PIN-skyddad specialräknare som genererar svaret. Å andra sidan är ett papper mycket mer bärbart, mycket robustare och mycket billigare än en speciell miniräknare. OTPW designades för den stora användarbasen, för vilken en extra batteridriven enhet är obekväm eller inte kostnadseffektiv och som därför fortfarande använder vanliga Unix-lösenord överallt.

I motsats till förslaget i RFC 1938, låser OTPW inte mer än ett engångslösenord åt gången. Om den gjorde detta kan en angripare lätt tömma sin lista över olåsta lösenord och tvinga den att antingen inte logga in alls eller använda det vanliga Unix-inloggningslösenordet. Därför låser OTPW endast ett enda lösenord och för alla ytterligare inloggningar utfärdas en triple-challenge . Om mer än 100 oanvända lösenord förblir tillgängliga, så finns det över en miljon olika utmaningar och en angripare har mycket liten chans att utföra en framgångsrik raceattack medan den auktoriserade användaren avslutar lösenordsinmatningen.

Användande

Engångslösenordsautentisering med OTPW-paketet åstadkommes via en fil .otpw som finns i användarens hemkatalog. Inget tillstånd bevaras i några systemomfattande filer, därför introducerar OTPW inga nya setuid- rotprogram. Så länge en användare inte har .otpw i sin hemkatalog, har engångslösenordsfunktionen inte aktiverats för honom.

En användare som vill ställa in engångslösenordsförmågan kör bara programmet otpw-gen . Programmet kommer att fråga efter ett prefixlösenord och det kommer sedan att skriva en lösenordslista till standardutdata. Det valda prefixlösenordet bör memoreras och lösenordslistan kan formateras och skrivas ut.

När autentisering med engångslösenord används kommer lösenordsuppmaningen att följas av ett tresiffrigt lösenordsnummer. Ange först prefixlösenordet som gavs till otpw-gen , följt direkt (utan att trycka retur mellan) av lösenordet med det begärda numret från den utskrivna lösenordslistan:

inloggning: kuhn Lösenord 019: geHeimOdAkH62c

I det här exemplet var geHeim prefixlösenordet .

En smart angripare kan observera lösenordet som skrivs in och kan försöka använda det faktum att datorer kan skicka data mycket snabbare än användarna kan avsluta med att ange lösenord. Under de flera hundra millisekunder som användaren behöver för att trycka på returtangenten efter det sista tecknet kan en angripare på en parallellkoppling till samma maskin skicka koden för returtangenten snabbare än användaren.

För att förhindra ett sådant lopp-för-den-sista-nyckel-attack, kommer alla inloggningsförsök som äger rum samtidigt med ett annat försök att kräva att tre engångslösenord anges, varav inget av dem kommer någonsin att vara lösenordet som låses av samtidigt autentiseringsförsök.

inloggning: kuhn Lösenord 022/000/004: geHeimQ=XK4I7wIZdBbqyHA5z9japt

Se även

externa länkar

  • "OTPW Home" .
  • Haller, Neil; Metz, Craig; Nesser, Philip J.; Straw, Mike (februari 1998). Ett engångslösenordssystem . IETF . doi : 10.17487/RFC2289 . STD 61. RFC 2289 . Hämtad 2009-10-24 .