Sakerhets basta praxis for slumpstrangar
Slumpstrangar ar kritiska sakerhetsgrunder. Korrekt anvanda ger de oforutsagbara token som skyddar anvandarsessioner och autentiserar API-atkomst. Felaktigt anvanda skapar de sarbarheter som angripare kan utnyttja. Denna guide tacker vardade sakerhetsrutiner.
Anvand kryptografiskt sakra generatorer
Det mest kritiska sakerhetsbeslutet vid generering av slumpstrangar ar att anvanda en kryptografiskt saker slumptalsgenerator (CSPRNG). Detta kan inte betonas nog: icke-kryptografiska generatorer som Math.random() har lett till verkliga sakerhetsovertradelelser i produktionssystem.
CSPRNGs ar specifikt designade for att motsta forutsagelse och analys. De anvander entropi fran kallor som angripare inte kan observera eller kontrollera: systemtiming, hardvaruhankelser, miljosensorer. Denna entropi fodar algoritmer designade for att vara berakningsomojliga att forutsaga eller revertera. Aven om en angripare observerar miljontals slumpmassiga varden kan de inte forutsaga framtida varden eller bestamma tidigare varden.
Web Crypto API tillhandahaller crypto.getRandomValues() for webblasarmiljoer. I Node.js, anvand crypto.randomBytes(). I Python, anvand secrets-modulen (inte random-modulen). I Java, anvand SecureRandom. I C#, anvand RNGCryptoServiceProvider. Varje stor plattform tillhandahaller CSPRNG-faciliteter - anvand dem.
Math.random() och liknande icke-kryptografiska generatorer ar deterministiska algoritmer som producerar sekvenser som ser slumpmassiga ut men ar helt forutsagbara. De fodas med ett enda varde, och hela sekvensen bestams av det frot. Angripare som upptacker eller gissar frot kan reproducera hela sekvensen och forutsaga alla "slumpmassiga" varden. Dessa generatorer ar okej for simuleringar, spel eller visuella effekter men katastrofala for sakerhet.
Verkliga overtradelelser har resulterat fran anvandning av svaga slumptalsgeneratorer. Sessionstoken genererade med forutsagbara RNG:er har utnyttjats for att kapa anvandarsessioner. Autentiseringstoken med otillracklig slumpmassighet har mojliggjort oberorig atkomst. Ett anmarkningsvart fall involverade ECDSA-signaturer med forutsagbar slumpmassighet som tillat angripare att atervinna privata nycklar. Lardomen ar tydlig: kryptografiska operationer kraver kryptografisk slumpmassighet.
Att verifiera att din generator ar saker kraver att du kontrollerar dokumentation och kallkod. Sakererstall att du anvander de kryptografiska slumpfunktionerna, inte bekvamlighetsfunktioner som kan anvanda svagare generatorer. I kodgranskningar, flagga all sakerhetskansllig slumpgenerering som inte anvander explicita CSPRNG-funktioner. Detta ar lagthangande frukt som forhindrar hog-allvarliga sarbarheter.
Entropikrav
Entropi kvantifierar oforutsagbarhet i bitar. Varje bit representerar ett binart val - krona eller klave, 0 eller 1. En strang med n bitars entropi har 2^n mojliga varden. Fler bitar okar exponentiellt antalet varden som en angripare maste prova i en brute-force-attack.
For autentiseringstoken, sikta pa minst 128 bitars entropi. Detta ger 2^128 mojliga varden (cirka 340 undecillion). Aven vid en triljon forsok per sekund skulle brute-forcing av 128-bitars entropi ta miljarder ganger universums alder. Detta ar "berakningsomojligt" - teoretiskt mojligt men praktiskt omojligt med nagra tankbara resurser.
Sessions-ID:n bor anvanda minst 112-128 bitar. OWASP-riktlinje rekommenderar minst 64 bitar, men moderna applikationer bor overstiga detta. Sessionstoken ar hogvardesmal - att kompromittera ett sessionstoken ger omedelbar atkomst till en anvandares konto. Hogre entropi ger bekant sakerhetsmarginaler.
API-nycklar fortjanar annu hogre entropi - 128-256 bitar. API-nycklar har ofta langa livstider och breda behorgheter. De kan autentisera automatiserade system som gor miljontals begaran. Kombinationen av lang livstid, hog behorighet och automatiserad anvandning gor dem till primara mal for brute-force-attacker om entropin ar otillracklig.
Temporara koder kan anvanda mindre entropi om de gar ut snabbt och har hastighetsbegransning. En 6-siffrig numerisk kod har endast 20 bitars entropi (log2(1 000 000) ≈ 20). Detta verkar farligt lagt, men kombinerat med 5-minuters utgang och hastighetsbegransning efter 3 misslyckade forsok blir det praktiskt. Det begransade tidsfonstret och forsoksbegransningar gor brute-force-attacker opraktiska trots lag entropi.
Att berakna nodvandig entropi beror pa attackscenarion. Overvag: hur manga forsok kan en angripare gora per sekund? Hur lange kommer tokenet att vara giltigt? Vilken hastighetsbegransning finns? Om en angripare kan prova 1000 token per sekund i 24 timmar (86 400 sekunder) kan de gora 86,4 miljoner forsok. For att gora framgangschansen forsumbar behover du tillracklig entropi sa att 86,4 miljoner representerar en liten del av det totala utrymmet. Med 64 bitars entropi (2^64 ≈ 18 triljoner varden) har 86,4 miljoner forsok cirka 1 pa 214 miljoner chans att lyckas.
Fodelsedagsparadoxen paverkar kollisionssannolikhet for identifierare. Om du genererar slumpmassiga ID:n och vill ha kollisionssannolikhet under 1 pa en miljard nar du har en miljon ID:n behover du minst 80 bitars entropi. Formeln ar ungefar P ≈ n^2 / (2 * 2^b) dar P ar kollisionssannolikheten, n ar antalet ID:n och b ar bitar av entropi. Los for b baserat pa acceptabelt P och forvantat n.
Lagring och overfoering
Att generera sakra slumpstrangar ar bara halva kampen. Hur du lagrar och overforer dem avgot om de forblir sakra eller blir sarbarheter.
Lagra aldrig autentiseringstoken i klartext i din databas. Om din databas komprometteras har angripare omedelbart alla giltiga token. Hasha istallet token fore lagring med en kryptografisk hash som SHA-256. Nar du verifierar ett token, hasha det tillhandahallna tokenet och jamfor hashar. Pa detta satt avslotjar en databaskompromiss inte anvandabara token.
For sessionstoken, overvag krypterade kakor istallet for serversidig lagring. Krypterade sessionskakor lagrar sessionsdata pa klientsidan, krypterade med en hemlig nyckel som endast servern kanner till. Detta eliminerar serversidig lagring och tillhorande databasfragor. Dock kraver det noggrann implementering: anvand autentiserad kryptering (som AES-GCM), skydda krypteringsnycklar noggrant och begransa kakstorlek.
Overfor alltid token over HTTPS, aldrig vanlig HTTP. HTTP overfrt data i klartext, vilket tillater natverksangripare att fanga upp token genom man-in-the-middle-attacker eller passiv overvakning. HTTPS krypterar kommunikation och skyddar token under transit. Detta ar icke-forhandlingsbart for varje token som anvands for autentisering eller auktorisering.
Placera token i auktoriseringsrubriker istallet for URL-parametrar nar det ar mojligt. URL:er loggas av webbservrar, proxyservrar och webblasare. De forekommar i webblasarhistorik och bokmrken. De delas ofta nar anvandare kopierar och klistrar in URL:er. Att satta token i auktoriseringsrubriker haller dem utanfor loggar och forhindrar oavsiktlig exponering genom delade URL:er.
API-nycklar i synnerhet bor aldrig forekomma i URL:er eller versionskontroll. Anvand miljovariablar eller sakra konfigurationshanteringssystem. Rotera API-nycklar regelbundet och omedelbart om de kan ha kompromitterats. Manga sakerhetsovertradelelser intraffar for att utvecklare committar API-nycklar till publika GitHub-repositorier dar automatiserade skannrar hittar och utnyttjar dem inom minuter.
Implementera tokenrotation for langlivade sessioner. Utfarda kortlivade atkomsttoken (timmar) och langre levande uppdateringstoken (dagar/veckor). Klienter anvander uppdateringstoken for att fa nya atkomsttoken utan omautentisering. Om ett atkomsttoken komprometteras gar det snart ut. Uppdateringstoken kan vara engangs och ogiltigforklarar sig sjalva nar de anvands for att fa ett nytt atkomsttoken. Detta begransar fonstret for angripare.
Overvaka for misstankt tokenanvandning. Logga nar token anvands, fran vilka IP-adresser, for vilka resurser. Larma vid anomalier: token som anvands fran flera IP:er, ovanliga atkomstmonster eller misslyckade verifieringsforsok. Snabb upptackt och svar kan begransa skadan fran komprometterade token.
Prova verktyget
Random String Generator
Relaterade artiklar
Vad ar slumpstrangar?
Slumpstrangar ar sekvenser av tecken som valjs oforutsagbart fran en definierad uppsattning. De finns overallt i modern mjukvara - fran sessionskakan i din webblasare till API-nyckeln for dina molntjanster. Att forsta slumpstrangar hjalper dig att anvanda dem lampligt och sakert.
Teckenuppsattningar for slumpstrangar
Teckenuppsattningen du valjer for slumpstrangar paverkar entropi, kompatibilitet och anvandbarhet. Denna guide hjalper dig valja lampliga teckenuppsattningar for olika anvandningsfall.