Nyligen fick jag tid att fundera pÄ hur funktionen för sÀker lösenordsÄterstÀllning bör fungera, först nÀr jag integrerade den hÀr funktionen i , och sedan nÀr jag hjÀlpte en annan person att göra nÄgot liknande. I det andra fallet ville jag ge honom en lÀnk till en kanonisk resurs med alla detaljer om sÀker implementering av ÄterstÀllningsfunktionen. Problemet Àr att en sÄdan resurs inte existerar, Ätminstone ingen som beskriver allt som jag anser vara viktigt. DÀrför beslutade jag mig för att skriva den sjÀlv.
Ser ni, vÀrlden av bortglömda lösenord Àr faktiskt ganska mystisk. Det finns mÄnga olika, helt rimliga stÄndpunkter och en hel del som Àr ganska farliga. Det Àr troligt att ni har stött pÄ nÄgra av dessa som slutanvÀndare flera gÄnger; dÀrför kommer jag försöka anvÀnda dessa exempel för att visa vem som gör allt rÀtt, vem som inte gör det och vad man bör fokusera pÄ för att korrekt implementera funktionen i sin applikation.

Lösenordshantering: hashning, kryptering och (Äh!) klartext
Vi kan inte diskutera vad man ska göra med bortglömda lösenord innan vi diskuterar hur de ska lagras. I databasen lagras lösenorden i en av tre huvudtyper:
- Klartext. Det finns en kolumn med lösenordet som lagras i vanlig text.
- Krypterat. Vanligtvis med symmetrisk kryptering (en nyckel anvÀnds bÄde för kryptering och dekryptering), och de krypterade lösenorden lagras ocksÄ i en kolumn.
- Hashat. En en-vÀgs process (lösenord kan hashats, men inte dekrypteras); lösenordet, man kan hoppas, Ätföljs av en salt, och var och en lagras i sin egen kolumn.
LĂ„t oss gĂ„ direkt till den enklaste frĂ„gan: lagra aldrig lösenord i klartext! Aldrig. En enda sĂ„rbarhet för , en vĂ„rdslöst gjord sĂ€kerhetskopia eller ett av tiotals andra enkla misstag â och det Ă€r över, game over, alla era lösenord â förlĂ„t, lösenorden för alla era kunder blir offentliga. Naturligtvis skulle detta innebĂ€ra en enorm risk att alla deras lösenord frĂ„n alla deras konton i andra system. Och det skulle vara ditt fel.
Kryptering Ă€r bĂ€ttre, men har sina svagheter. Problemet med kryptering ligger i dekrypteringen; man kan ta dessa galet utseende kryptor och omvandla dem tillbaka till vanlig text, och nĂ€r detta sker, hamnar vi tillbaka i situationen med lĂ€sbara lösenord. Hur sker det? En liten svaghet infiltrerar koden som hanterar dekrypteringen av lösenordet, vilket gör det offentligt tillgĂ€ngligt â det Ă€r ett sĂ€tt. Hackare fĂ„r tillgĂ„ng till maskinen dĂ€r de krypterade uppgifterna lagras â det Ă€r det andra sĂ€ttet. Ett tredje sĂ€tt Ă€r att en sĂ€kerhetskopia av databasen stjĂ€ls, och nĂ„gon fĂ„r Ă€ven krypteringsnyckeln, som ofta lagras mycket osĂ€kert.
Och det leder oss till hashning. Idén med hashning Àr att den utförs i en riktning; det enda sÀttet att jÀmföra det lösenord som anvÀndaren anger med dess hashade version Àr att hash anvÀndarens inmatning och jÀmföra dem. För att förhindra attacker med verktyg som "regnbÄgsbord", lÀgger vi till randomness i processen med hjÀlp av salt (för en fullstÀndig bild, lÀs min om kryptografisk lagring). I slutÀndan, med en korrekt implementering, kan vi med stor sÀkerhet sÀga att hashade lösenord aldrig igen blir vanlig text (om fördelarna med olika hashalgoritmer kommer jag att berÀtta i ett annat inlÀgg).
Ett kort argument om hashning och kryptering: den enda anledningen till att du nÄgonsin skulle behöva kryptera istÀllet för att hash ett lösenord Àr nÀr du behöver se lösenordet i vanlig text, och det borde du aldrig vilja, Ätminstone i en standardwebbplats-situation. Om du behöver det Àr det troligt att du gör nÄgot fel!
Varning!
Lite lÀngre ner i inlÀgget finns en del av en skÀrmdump frÄn den pornografiska webbplatsen AlotPorn. Den Àr prydligt beskuren, och det finns ingenting som Àr osynligt pÄ stranden, men om det kan orsaka nÄgra problem, scrolla dÄ inte ner pÄ sidan.
à terstÀll alltid lösenordet, aldrig pÄminn det inte
Har du nÄgonsin blivit ombedd att skapa en funktion för pÄminnelse Lösenord? Ta ett steg tillbaka och tÀnk pÄ denna begÀran ur motsatt perspektiv: varför behöver vi denna "pÄminnelse"? För att anvÀndaren har glömt sitt lösenord. Vad vill vi egentligen Ästadkomma? HjÀlpa dem att logga in igen.
Jag förstÄr att ordet "pÄminnelse" anvÀnds (ofta) i ett vardagligt sammanhang, men vi försöker faktiskt tryggt hjÀlpa anvÀndaren att ÄterfÄ tillgÄng online. Eftersom vi behöver sÀkerhet finns det tvÄ skÀl till varför pÄminnelsen (dvs. att skicka anvÀndarens lösenord) inte Àr lÀmplig:
- E-post Àr en osÀker kanal. Precis som vi inte skulle överföra nÄgot konfidentiellt via HTTP (vi skulle anvÀnda HTTPS), bör vi inte skicka nÄgot via e-post eftersom dess transportlager Àr osÀkert. Faktum Àr att detta Àr mycket vÀrre Àn att bara överföra information via ett oskyddat transportprotokoll, eftersom e-post ofta lagras pÄ lagringsmedia, Àr tillgÀnglig för systemadministratörer, vidarebefordras och sprids, och Àr tillgÀnglig för skadlig programvara, och sÄ vidare. Oenkrypterad e-post Àr en extremt osÀker kanal.
- Du bör i vilket fall som helst inte ha tillgÄng till lösenordet. LÀs igenom föregÄende avsnitt om lagring - du bör ha en hash av lösenordet (med en bra salt), vilket innebÀr att du pÄ inget sÀtt bör kunna extrahera lösenordet och skicka det via e-post.
LÄt mig demonstrera problemet med ett exempel : HÀr Àr en typisk inloggningssida:

Den första uppenbara problematiken Àr att inloggningssidan inte laddas via HTTPS, men webbplatsen erbjuder dessutom att skicka lösenordet ("Send Password"). Det kan vara ett exempel pÄ den tidigare nÀmnda vardagliga anvÀndningen av termen, sÄ lÄt oss ta ett steg till och se vad som hÀnder:

Det ser tyvÀrr inte mycket bÀttre ut; och e-post bekrÀftar att det finns ett problem:

Detta berÀttar för oss tvÄ viktiga aspekter av usoutdoor.com:
- Webbplatsen hashar inte lösenord. Som bÀst Àr de krypterade, men det Àr troligt att de lagras i klartext; vi ser inget som motsÀger detta.
- Webbplatsen skickar ett lÄngvarigt lösenord (vi kan gÄ tillbaka och anvÀnda det gÄng pÄ gÄng) via en osÀker kanal.
Efter att ha tagit itu med detta behöver vi kontrollera att ÄterstÀllningsprocessen sker pÄ ett sÀkert sÀtt. Först och frÀmst mÄste vi sÀkerstÀlla att den som begÀr har rÀtt att genomföra ÄterstÀllningen. Med andra ord, vi behöver en identitetskontroll; lÄt oss titta pÄ vad som hÀnder nÀr identiteten bekrÀftas utan föregÄende kontroll av att den som begÀr verkligen Àr Àgaren av kontot.
UpprÀkning av anvÀndarnamn och dess pÄverkan pÄ anonymitet
Detta problem Àr bÀttre att illustrera visuellt. Problemet:

Ser du? Notera meddelandet «Det finns ingen anvĂ€ndare registrerad med denna e-postadress». Problemet uppstĂ„r uppenbarligen om en sĂ„dan webbplats bekrĂ€ftar tillgĂ„ng en anvĂ€ndare registrerad med denna e-postadress. Bingo â du har just upptĂ€ckt din mans/chefs/grannes pornofetisch!
SjÀlvklart Àr pornografi ett ganska klassiskt exempel pÄ vikten av sekretess, men faran med att koppla en identitet till en viss webbplats Àr mycket bredare Àn den potentiellt pinsamma situation som beskrivits ovan. En av farorna Àr social ingenjörskonst; om en angripare kan koppla en person till tjÀnsten fÄr de information som de kan börja anvÀnda. Till exempel kan de kontakta personen och utge sig för att vara en representant för webbplatsen och begÀra mer information i ett försök att göra .
SÄdana metoder medför ocksÄ en risk för att «upprÀkning av anvÀndarnamn» intrÀffar, dÀr man kan kontrollera existensen av en hel samling anvÀndarnamn eller e-postadresser pÄ en webbplats genom enkla gruppförfrÄgningar och studera svaren pÄ dem. Har du en lista med e-postadresser till alla anstÀllda och nÄgra minuter pÄ att skriva ett skript? DÄ ser du vad problemet Àr!
Vad Àr alternativet? Det Àr faktiskt ganska enkelt och Àr utmÀrkt implementerat pÄ :

HÀr avslöjar Entropay inget alls om existensen av e-postadressen i sitt system för den som inte Àger denna adress. Om du Àger den hÀr adressen finns inte i systemet, kommer du att fÄ ett liknande e-postmeddelande:

Naturligtvis kan det förekomma situationer dÀr nÄgon tÀnker, att de har registrerat sig pÄ webbplatsen. men sÄ Àr inte fallet, eller har gjort det med en annan e-postadress. Exemplet ovan hanterar bÄda situationerna framgÄngsrikt. Om adressen matchar kommer du uppenbarligen att fÄ ett e-postmeddelande som förenklar ÄterstÀllningen av lösenordet.
Finessen med det valda Entropay-lösningen Àr att identifieringsverifieringen utförs via e-post innan nÄgon online-verifiering. Vissa webbplatser frÄgar anvÀndare om svaret pÄ en hemlig frÄga (mer om detta nedan) till som kan inledas för att ÄterstÀlla lösenordet; problemet med detta Àr dock att man mÄste svara pÄ frÄgan och samtidigt tillhandahÄlla nÄgon form av identifiering (e-post eller anvÀndarnamn), vilket gör det nÀstan omöjligt att intuitivt svara utan att avslöja existensen av ett anonymt anvÀndarkonto.
Med en sÄdan strategi finns det en liten minskning av anvÀndbarheten, eftersom det vid ett försök att ÄterstÀlla ett icke-existerande konto finns ingen omedelbar Äterkoppling. Naturligtvis Àr syftet med att skicka e-post just detta, men frÄn det faktiska slutkundens perspektiv, om de anger en felaktig adress, fÄr de veta detta först nÀr de fÄr e-postmeddelandet. Detta kan orsaka viss spÀnning frÄn deras sida, men det Àr en liten kostnad för en sÄ sÀllsynt process.
En annan anmÀrkning, som avviker nÄgot frÄn Àmnet: funktioner som hjÀlper vid inloggning, som bekrÀftar riktigheten av anvÀndarnamn eller e-postadress, har samma problem. Svara alltid anvÀndaren med meddelandet "Kombinationen av ditt anvÀndarnamn och lösenord Àr ogiltig" (Your username and password combination is invalid), istÀllet för att bekrÀfta existensen av identifikationsinformation (till exempel "anvÀndarnamnet Àr korrekt, men lösenordet Àr felaktigt").
Skicka ÄterstÀllningslösenord kontra skicka ÄterstÀllningslÀnk
Det nÀsta koncept som vi behöver diskutera handlar om sÀttet att ÄterstÀlla lösenordet. Det finns tvÄ populÀra lösningar:
- Generera ett nytt lösenord pÄ servern och skicka det via e-post
- Skicka ett e-postmeddelande med en unik URL som förenklar ÄterstÀllningsprocessen
Trots att , den första punkten bör aldrig anvÀndas. Problemet med den Àr att den innebÀr att det finns ett sparat lösenord, som man kan ÄtergÄ till och anvÀnda igen nÀr som helst; det har överförts via en osÀker kanal och finns kvar i din inkorg. Det finns en risk att inkorgen synkroniseras med mobila enheter och e-postklienten, plus att den kan lagras online i en e-posttjÀnst under lÄng tid. PoÀngen Àr att en e-postlÄda inte kan betraktas som ett pÄlitligt medium för lÄngsiktig lagring.
Men förutom detta har den första punkten ett annat allvarligt problem â den maximalt förenklar blockeringen av konton med ond avsikt. Om jag kĂ€nner till e-postadressen till den som Ă€ger kontot pĂ„ webbplatsen kan jag blockera honom eller henne nĂ€r som helst genom att bara Ă„terstĂ€lla lösenordet; det Ă€r en denial-of-service-attack serverad pĂ„ en silverfat! DĂ€rför bör en Ă„terstĂ€llning endast utföras efter en framgĂ„ngsrik verifiering av rĂ€ttigheten att begĂ€ra det.
NÀr vi pratar om en ÄterstÀllnings-URL, menar vi en webbadress som Àr unik för just det hÀr specifika ÄterstÀllningsprocessen. SjÀlvklart bör den vara slumpmÀssig, lÀtt att inte knÀcka och den bör inte innehÄlla nÄgra externa lÀnkar till kontot som förenklar en ÄterstÀllning. Till exempel bör en ÄterstÀllnings-URL inte vara bara en vÀg som "Reset/?username=JohnSmith".
Vi vill skapa en unik token som kan skickas via e-post som en ÄterstÀllnings-URL, och sedan kontrollera den mot posten pÄ servern med anvÀndarkontot, vilket sÄlunda bekrÀftar att kontoinnehavaren verkligen Àr samma person som försöker ÄterstÀlla lösenordet. Till exempel kan token se ut som "3ce7854015cd38c862cb9e14a1ae552b" och lagras i en tabell tillsammans med anvÀndarens ID som gör ÄterstÀllningen och tidpunkten för tokenutsÀndningen (mer om detta lÀngre ner). NÀr e-postmeddelandet skickas innehÄller det en URL som "Reset/?id=3ce7854015cd38c862cb9e14a1ae552b", och nÀr anvÀndaren laddar upp den, kontrollerar sidan existensen av token, bekrÀftar anvÀndarinformationen och tillÄter att lösenordet Àndras.
SjÀlvklart, eftersom den beskrivna processen (vi fÄr hoppas) gör det möjligt för anvÀndaren att skapa ett nytt lösenord, mÄste vi sÀkerstÀlla att URL:en laddas via HTTPS. Nej, , denna URL med token mÄste anvÀnda transportsÀkerhet för att förhindra att ett angrepp görs pÄ formulÀret för att ange det nya lösenordet. och det anvÀndarskapade lösenordet skickas över en sÀker anslutning.
Dessutom bör URL:en för ÄterstÀllning ha en tidsgrÀns för token sÄ att ÄterstÀllningsprocessen kan genomföras inom en viss tidsram, till exempel inom en timme. Detta sÀkerstÀller att tidsfönstret för ÄterstÀllning Àr minimalt, sÄ att den som mottagit denna ÄterstÀllnings-URL bara kan agera inom detta mycket lilla fönster. SjÀlvklart kan angriparen starta ÄterstÀllningsprocessen igen, men de behöver fÄ en ny unik ÄterstÀllnings-URL.
Slutligen mÄste vi sÀkerstÀlla att denna process Àr engÄngsbruk. Efter att ÄterstÀllningsprocessen har slutförts mÄste token tas bort sÄ att ÄterstÀllnings-URL:en inte lÀngre fungerar. Den föregÄende punkten Àr nödvÀndig för att ge angriparen ett mycket litet fönster dÀr de kan manipulera ÄterstÀllnings-URL:en. Dessutom, sjÀlvklart, efter att ÄterstÀllningen har slutförts behöver vi inte lÀngre token.
NÄgra av dessa steg kan verka överdrivna, men de pÄverkar inte anvÀndbarheten och som faktiskt ökar sÀkerheten, Àven om i situationer som vi hoppas kommer att vara sÀllsynta. I 99% av fallen kommer anvÀndaren att anvÀnda ÄterstÀllningen under en mycket kort tidsperiod och inte ÄterstÀlla lösenordet igen inom en överskÄdlig framtid.
Roll av CAPTCHA
Ă h, CAPTCHA, skyddsmedlet som vi alla Ă€lskar att hata! Faktum Ă€r att CAPTCHA inte bara Ă€r ett skydd, utan ocksĂ„ en identifiering â Ă€r du mĂ€nniska eller robot (eller automatiserat skript). Syftet Ă€r att förhindra automatisk inskickning av formulĂ€r, vilket sjĂ€lvklart hantera plötsliga kraschar och visa anvĂ€ndbara detaljer för felsökning, som stacktrace. Att skicka felmeddelanden har förenklats â det rĂ€cker att klicka pĂ„ lĂ€nken. kan anvĂ€ndas som ett försök att bryta skyddet. I kontexten av lösenordsĂ„terstĂ€llning betyder CAPTCHA att Ă„terstĂ€llningsfunktionen inte kan hackas med bruteforce, för att antingen skicka skrĂ€ppost till anvĂ€ndaren, eller försöka faststĂ€lla existensen av konton (vilket sjĂ€lvklart inte Ă€r möjligt om du följt rĂ„d frĂ„n avsnittet om identitetsverifiering).
SjÀlvklart, CAPTCHA i sig Àr inte perfekt; det finns mÄnga exempel pÄ dess programvaruhackning och uppnÄdda framgÄngsnivÄer (60-70%). Dessutom finns det en lösning, som jag visade i mitt inlÀgg om , dÀr man kan betala mÀnniskor nÄgra ören för att lösa varje CAPTCHA och fÄ en framgÄngsnivÄ pÄ 94%. Det vill sÀga, den Àr sÄrbar, men (nÄgot) höjer ingÄngströskeln.
LÄt oss titta pÄ exemplet PayPal:

I det hÀr fallet kan processen för att ÄterstÀlla bara inte pÄbörjas förrÀn CAPTCHA har lösts, sÄ teoretiskt Àr det omöjligt att automatisera processen. Teoretiskt.
Men för de flesta webbapplikationer skulle det vara en överdrift och det Ă€r helt klart en minskning av anvĂ€ndbarheten â folk gillar helt enkelt inte CAPTCHA! Dessutom Ă€r CAPTCHA nĂ„got som man enkelt kan Ă„terkomma till vid behov. Om en tjĂ€nst börjar utsĂ€ttas för angrepp (hĂ€r hjĂ€lper loggning, men mer om det senare), Ă€r det enklare Ă€n nĂ„gonsin att lĂ€gga till CAPTCHA.
SÀkra frÄgor och svar
Vid alla de metoder vi har diskuterat har vi kunnat ÄterstÀlla lösenordet enbart med tillgÄng till e-postkontot. Jag sÀger "enbart", men sjÀlvklart Àr det olagligt att fÄ obehörig Ätkomst till nÄgon annans e-postkonto bör vara en komplicerad process. Men .
Faktum Àr att den lÀnk som presenterades ovan om hackning av Sarah Palins konto pÄ Yahoo! tjÀnar tvÄ syften; för det första illustrerar den hur lÀtt det kan vara att hacka (vissa) e-postkonton, för det andra visar den hur dÄliga sÀkra frÄgor kan anvÀndas med ond avsikt. Men vi Äterkommer till det senare.
Problemet med att ÄterstÀlla lösenord med en fullstÀndig beroende av e-post Àr att integriteten hos det webbplatskonto vars lösenord du försöker ÄterstÀlla blir helt beroende av integriteten hos e-postkontot. Den som har tillgÄng till din e-post har tillgÄng till vilket konto som helst som kan ÄterstÀllas genom att helt enkelt fÄ ett e-postmeddelande. För sÄdana konton Àr e-posten "nyckeln till alla dörrar" i ditt liv online.
Ett av sÀtten att minska denna risk Àr att implementera en metod med hemliga frÄgor och svar. Utan tvekan har du redan sett dem: du vÀljer en frÄga vars svar endast du mÄste kÀnner till, som sedan stÀlls till dig nÀr du ÄterstÀller ditt lösenord. Detta ger en ökad sÀkerhet för att personen som försöker genomföra ÄterstÀllningen verkligen Àr kontoinnehavaren.
LÄt oss ÄtervÀnda till Sarah Palin: felet var att svaren pÄ hennes hemliga frÄgor enkelt kunde hittas. SÀrskilt nÀr du Àr en sÄ betydande offentlig person, Àr information om din mors flicknamn, utbildningshistorik eller var nÄgon kanske har bott i det förflutna inte sÀrskilt hemlig. Faktum Àr att en stor del av detta kan hittas av nÀstan vem som helst. SÄ blev det Àven för Sarah:
Hackaren David Kernell fick tillgÄng till Palins konto genom att hitta detaljer frÄn hennes biografi, sÄsom hennes universitet och födelsedatum, och sedan anvÀnda funktionen för att ÄterstÀlla glömda lösenord för Yahoo!-konton.
Detta Àr i första hand en designfel frÄn Yahoo:s sida - genom att stÀlla sÄdana enkla frÄgor saboterade företaget i praktiken vÀrdet av den hemliga frÄgan och dÀrmed skyddet av sitt system. SjÀlvklart Àr det alltid svÄrare att ÄterstÀlla lösenord för ett e-postkonto, eftersom du inte kan bekrÀfta Àgandeskapet genom att skicka ett e-postmeddelande till Àgaren (utan att ha en andra adress), men lyckligtvis finns det inte sÄ mÄnga sÀtt att implementera ett sÄdant system idag.
à ter till de hemliga frÄgorna - ett alternativ Àr att ge anvÀndaren möjlighet att skapa sina egna frÄgor. Problemet Àr att det resulterar i fruktansvÀrt uppenbara frÄgor:
Vilken fÀrg har himlen?
FrÄgor som stÀller mÀnniskor i en obekvÀm position nÀr den hemliga frÄgan identifierar personen (till exempel i en kundtjÀnst):
Vem sov jag med pÄ juldagen?
Eller rentav idiotiska frÄgor:
Hur stavas "lösenord"?
NÀr det kommer till hemliga frÄgor mÄste anvÀndarna skyddas frÄn sig sjÀlva! Med andra ord, den hemliga frÄgan bör bestÀmmas av sjÀlva webbplatsen, och Ànnu bÀttre, stÀlla en serie hemliga frÄgor som anvÀndaren kan vÀlja bland. Och inte bara vÀlja en; i idealfallet bör anvÀndaren vÀlja tvÄ eller flera hemliga frÄgor vid registreringen av kontot., som sedan kommer att anvÀndas som en andra identifikationskanal. Att ha flera frÄgor ökar sÀkerheten i verifieringsprocessen och ger ocksÄ en möjlighet att lÀgga till slumpmÀssighet (att inte alltid visa samma frÄga), plus ger lite redundans om den verkliga anvÀndaren skulle glömma sitt lösenord.
Vad bör en bra hemlig frÄga vara? Flera faktorer pÄverkar detta:
- Den bör vara kortfattad â frĂ„gan bör vara tydlig och entydig.
- Svaret bör vara specifikt â vi behöver inte en frĂ„ga som olika personer kan svara pĂ„ olika sĂ€tt.
- Möjliga svar bör vara varierande â en frĂ„ga om nĂ„gons favoritfĂ€rg ger en mycket liten mĂ€ngd möjliga svar.
- Sökandet efter svaret bör vara svĂ„rt â om svaret lĂ€tt kan hittas av nĂ„gon (tĂ€nk pĂ„ personer i höga positioner), Ă€r det dĂ„ligt.
- Svaret bör vara konstant Ăver tid â om man frĂ„gar efter nĂ„gons favoritfilm kan svaret vara annorlunda om ett Ă„r.
Som det ofta Àr, finns det en webbplats dedikerad till bra frÄgor som kallas . Vissa frÄgor verkar ganska bra, medan andra inte klarar en del av de ovan beskrivna testerna, sÀrskilt testet för "lÀtthet att hitta".
LÄt mig visa hur hemliga frÄgor implementeras i PayPal och specifikt vilka insatser webbplatsen gör för att identifiera. Ovan sÄg vi sidan dÀr processen inleds (med CAPTCHA), och hÀr visar vi vad som hÀnder efter att du har angett din e-postadress och löst CAPTCHA:

Resultatet Àr att anvÀndaren fÄr ett sÄdant mejl:

Hitills ser allt ganska normalt ut, men hÀr Àr vad som döljer sig bakom den hÀr ÄterstÀllnings-URL:en:

SĂ„ hĂ€r kommer de hemliga frĂ„gorna in i bilden. Faktum Ă€r att PayPal ocksĂ„ tillĂ„ter att Ă„terstĂ€lla lösenordet genom att bekrĂ€fta kreditkortsnummer, sĂ„ det finns en ytterligare kanal som mĂ„nga webbplatser inte har tillgĂ„ng till. Jag kan helt enkelt inte Ă€ndra lösenordet utan att svara pĂ„ bĂ„da de hemliga frĂ„gorna (eller veta nummer till kortet). Ăven om nĂ„gon skulle ta över min e-post, kan de inte Ă„terstĂ€lla lösenordet till PayPal-kontot om de inte vet lite mer personlig information om mig. Vilken information? HĂ€r Ă€r alternativen för hemliga frĂ„gor som erbjuds av PayPal:

FrÄgan om skolan och sjukhuset kan vara nÄgot tveksam utifrÄn enkelheten i sökandet, men de andra Àr inte sÄ dÄliga. Men för att öka sÀkerheten krÀver PayPal ytterligare identifiering för för svar pÄ hemliga frÄgor:

PayPal Àr ett ganska utopiskt exempel pÄ sÀker ÄterstÀllning av lösenord: det implementerar CAPTCHA för att minska risken för brute force-attacker, krÀver tvÄ hemliga frÄgor och sedan ytterligare en form av helt annan identifiering bara för att Àndra svaren - och detta efter att anvÀndaren redan har loggat in. SjÀlvklart Àr detta exakt vad vi förvÀntade av PayPal; det Àr en finansiell institution som hanterar stora summor pengar. Det betyder inte att varje ÄterstÀllning av lösenord mÄste följa dessa steg - i de flesta fall Àr det överdrivet - men det Àr ett bra exempel pÄ fall dÀr sÀkerhet Àr en seriös affÀr.
Fördelarna med systemet med hemliga frÄgor Àr att om du inte implementerade det direkt, kan det lÀggas till senare om resursens skyddsnivÄ krÀver det. Ett bra exempel pÄ detta Àr Apple, som nyligen implementerade denna mekanism [artikeln skrevs 2012]. En gÄng nÀr jag uppdaterade en app pÄ iPad sÄg jag följande meddelande:

Sedan sÄg jag en skÀrm dÀr jag kunde vÀlja flera par av hemliga frÄgor och svar, samt en rÀddnings-e-postadress:

NÀr det gÀller PayPal vÀljs frÄgorna i förvÀg och nÄgra av dem Àr faktiskt ganska bra:

Varje av de tre paren av frÄgor och svar representerar en separat uppsÀttning möjliga frÄgor, sÄ det finns tillrÀckligt med sÀtt att konfigurera kontot.
En annan aspekt som mÄste beaktas angÄende svaret pÄ den hemliga frÄgan Àr lagringen. Att finnas i en vanlig textdatabas innebÀr nÀstan samma hot som i fallet med lösenord, nÀmligen att ett databasintrÄng omedelbart avslöjar vÀrdet och utsÀtter inte bara applikationen, utan potentiellt helt andra applikationer som anvÀnder samma hemliga frÄgor (detta Àr Äterigen ). Ett av alternativen Àr sÀker hashing (en robust algoritm och kryptografiskt slumpmÀssig salt), men till skillnad frÄn de flesta fall av lösenordshantering kan det hÀr finnas en legitim anledning till att svaret visas som ren text. Ett typiskt scenario Àr identitetsverifiering av en levande operatör via telefon. SjÀlvklart Àr hashing ocksÄ tillÀmpligt hÀr (operatören kan helt enkelt ange svaret som kunden nÀmnt), men i vÀrsta fall mÄste det hemliga svaret lagras pÄ nÄgot nivÄ i en kryptografisk lagring, Àven om det bara Àr symmetrisk kryptering. Sammanfattningsvis: behandla hemligheter som hemligheter!
Och den sista aspekten av hemliga frĂ„gor och svar â de Ă€r mer sĂ„rbara för social ingenjörskonst. Att försöka fĂ„ ut ett lösenord till nĂ„gons konto direkt Ă€r en sak, men att inleda ett samtal om deras utbildning (en populĂ€r hemlig frĂ„ga) Ă€r nĂ„got helt annat. I sjĂ€lva verket kan du helt realistiskt prata med nĂ„gon om mĂ„nga aspekter av deras liv som kan utgöra en hemlig frĂ„ga, utan att vĂ€cka misstankar. Naturligtvis Ă€r sjĂ€lva poĂ€ngen med den hemliga frĂ„gan att den Ă€r kopplad till nĂ„gons livserfarenhet, sĂ„ den minns, och det Ă€r just detta som Ă€r problemet â mĂ€nniskor Ă€lskar att berĂ€tta om sina livserfarenheter! Detta finns det inte mycket att göra Ă„t, annat Ă€n att vĂ€lja sĂ„dana alternativ för hemliga frĂ„gor som med mindre sannolikhet kan dras ut genom social ingenjörskonst.
[FortsÀttning följer.]
I reklamens namn
VDSina erbjuder pÄlitliga , varje server Àr ansluten till en internetkanal pÄ 500 megabit och Àr gratis skyddad mot DDoS-attacker!
KĂ€lla: habr.com
