Igår var vi ett gäng medarbetare på AcobiaFLUX som besökte nForum, en arrangör av seminarium för utvecklare. Konsulter från Squeed höll tre föredrag om Polymer, ASP.NET vNext samt skydd av lösenord. Alla tre föredragen var mycket bra och intressanta. Jag har nog aldrig tidigare varit så sugen på en ny version av Visual Studio som efter Fredrik Norméns föredrag om ASP.NET vNext.
Det var dock föredraget om ”Skydda dina användare. Hur gör vi livet svårare för en hacker?” av Adam Lith som jag fastnade mest för. Både roligt och intressant, tack för det Adam! Föredraget handlade om vad vi som utvecklare kan göra för att bättre ta hand om våra användares lösenord. Här kommer en sammanfattning av de praktiska råd för att förbättra skyddet av lösenord som vi fick ta del av:
- Använd en bra algoritm för att skapa hash av lösenordet (t ex PBKDF2, bcrypt, scrypt).
- Använd en kostnad för hashalgoritmen som ger en rimligt långsam hashning utan att användaren upplever inloggningen som allt för långsam.
- Salta lösenordet innan hashning med ett salt som är lika långt som längden på den resulterande hashen.
- Använd ett slumpmässigt valt salt för varje användare.
- Spara hashen, saltet och kostnaden för hashalgoritmen tillsammans med användarinformationen.
- Vid authenticering skall jämförelse ske på en konstant tid för samtliga värden (se SlowEquals).
Det är varken tidskrävande eller krångligt att skydda lösenorden på rätt sätt enligt ovan. Gör man fel kan det gå som för Adobe under förra året:
För den som är intresserad av mer information har CrackStation en bra fördjupning i ämnet. På NuGet Gallery finns paket för PBKDF2, bcrypt och scrypt.
Och slutligen, kom ihåg att aldrig lagra lösenord i klartext! Och du vet väl om ditt lösenord redan har läckts?