HMAC-baserat engångslösenord

HMAC-baserat engångslösenord ( HOTP ) är en engångslösenord (OTP) algoritm baserad på HMAC . Det är en hörnsten i initiativet för öppen autentisering ( OATH).

HOTP publicerades som en informativ IETF RFC 4226 i december 2005, som dokumenterar algoritmen tillsammans med en Java-implementering. Sedan dess har algoritmen antagits av många företag världen över (se nedan). HOTP - algoritmen är en fritt tillgänglig öppen standard .

Algoritm

HOTP-algoritmen tillhandahåller en metod för autentisering genom symmetrisk generering av mänskligt läsbara lösenord, eller värden , som vart och ett används för endast ett autentiseringsförsök. Engångsegenskapen leder direkt från engångsanvändningen av varje räknarvärde.

Parter som avser att använda HOTP måste fastställa vissa parametrar ; vanligtvis specificeras dessa av autentiseringsenheten, och antingen accepteras eller inte av den autentiserade:

Båda parter beräknar HOTP-värdet som härletts från den hemliga nyckeln K och räknaren C. Sedan kontrollerar autentiseringsenheten sitt lokalt genererade värde mot värdet som tillhandahålls av den autentiserade.

  Autentiseringsenheten och den autentiserade ökar räknaren C oberoende av varandra, där den senare kan öka före den förra, sålunda är ett omsynkroniseringsprotokoll klokt. RFC 4226 kräver faktiskt inget sådant, men ger en rekommendation. Detta får helt enkelt autentiseringsenheten att upprepade gånger försöka verifiera före sin disk genom ett fönster av storleken s . Autentiseringsenhetens räknare fortsätter framåt med värdet vid vilket verifieringen lyckas och kräver inga åtgärder av den autentiserade.

Rekommendationen görs att en ihållande strypning av HOTP-värdeverifiering sker för att åtgärda deras relativt lilla storlek och därmed sårbarheten för brute-force-attacker. Det föreslås att verifieringen låses ute efter ett litet antal misslyckade försök eller att varje misslyckat försök drar till sig en ytterligare (linjärt ökande) fördröjning.

6-siffriga koder tillhandahålls vanligtvis av proprietära maskinvarutokens från ett antal leverantörer som informerar om standardvärdet för d . Trunkering extraherar 31 bitar eller decimalsiffror, vilket betyder att d kan vara högst 10, med den 10:e siffran lägga till mindre variation, ta värden på 0, 1 och 2 (dvs. 0,3 siffror).

Efter verifiering kan autentiseringsenheten autentisera sig själv helt enkelt genom att generera nästa HOTP-värde, returnera det, och sedan kan de autentiserade generera sitt eget HOTP-värde för att verifiera det. Observera att räknare garanteras synkroniseras vid denna tidpunkt i processen.

HOTP- värdet är den mänskliga läsbara designutgången, ett d -siffrigt decimaltal (utan att utelämna inledande nollor):

HOTP-värde = HOTP ( K , C ) mod 10 d .

Det vill säga värdet är de minst signifikanta bas-10 siffrorna i HOTP.

HOTP är en trunkering av HMAC för räknaren C (under tangenten K och hashfunktionen H ):

HOTP ( K , C ) = trunkerat (HMAC H ( K , C )),

där räknaren C måste användas big-endian .

Trunkering tar först de 4 minst signifikanta bitarna i MAC:n och använder dem som en byteoffset i :

trunkate( MAC ) = extrahera31( MAC , MAC [(19 × 8 + 4):(19 × 8 + 7)]),

där ":" används för att extrahera bitar från ett startbitnummer upp till och inklusive ett slutbitnummer, där dessa bitnummer har 0-ursprung. Användningen av "19" i formeln ovan relaterar till storleken på utdata från hashfunktionen. Med standardinställningen för SHA-1 är utdata 20 byte , så den sista byten är byte 19 (0-ursprung).

Det indexet i används för att välja 31 bitar från MAC , med början på bit i × 8 + 1:

extrahera31( MAC , i ) = MAC [( i × 8 + 1):( i × 8 + 4 × 8 - 1)].

31 bitar är en enda bit mindre än ett 4-byte ord. Således kan värdet placeras inuti ett sådant ord utan att använda teckenbiten (den mest signifikanta biten). Detta görs för att definitivt undvika att göra modulära aritmetiker på negativa tal, eftersom detta har många olika definitioner och implementeringar.

Polletter

Både hårdvaru- och mjukvarutokens är tillgängliga från olika leverantörer, för några av dem se referenser nedan. Hårdvarutokens som implementerar OATH HOTP tenderar att vara betydligt billigare än sina konkurrenter baserat på proprietära algoritmer. Från och med 2010 kan OATH HOTP-maskinvarutokens köpas för ett marginellt pris. Vissa produkter kan användas för starka lösenord såväl som OATH HOTP.

Programvarutokens är tillgängliga för (nästan) alla större mobil-/ smarttelefonplattformar ( J2ME , Android , iPhone , BlackBerry , Maemo , macOS och Windows Mobile ).

Reception

Även om mottagandet från en del av datorpressen har varit negativt under 2004 och 2005, efter att IETF antog HOTP som RFC 4226 i december 2005, började olika leverantörer producera HOTP-kompatibla tokens och/eller hela autentiseringslösningar.

Enligt artikeln "Road Map: Replaceing Passwords with OTP Authentication" om stark autentisering, publicerad av Burton Group (en division av Gartner, Inc. ) 2010, " är Gartners förväntningar att OTP -formfaktorn för hårdvara kommer att fortsätta att njuta av blygsam tillväxt medan OTP:er för smartphones kommer att växa och bli standardplattformen för hårdvara med tiden."

Se även

externa länkar