Cryptology Academy · Lektion

bcrypt: algoritm och kostnadsfaktor

Lär dig hur bcrypt fungerar internt, arbetsfaktorn och hur kostnaden ställs in korrekt.

Lektion 2 av 413 steg

bcrypt: algoritm och kostnadsfaktor är en gratis lektion i Cryptology Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cryptology Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cryptology Academy innehåller totalt 4 lektioner.

Välkommen

bcrypt är en lösenordshashningsalgoritm som utvecklades 1999 specifikt för att vara långsam och motståndskraftig mot hårdvaruattacker. Den är fortfarande den mest utbredda lösenordshashningsalgoritmen.

bcrypts ursprung

Utvecklad av Niels Provos och David Mazières, baserad på Blowfish-chiffret. 'b' står för Blowfish. Den viktiga insikten var att använda Blowfishs kostsamma nyckelinställning för att göra algoritmen långsam med avsikt.

bcrypts hashformat

$2b$12$saltsaltsaltsaltsaltsalthashhashhashhashhashhashhash $2b$: algoritmversion 12: kostnadsfaktor (log2 av antalet iterationer) salt: 22 Base64-tecken (16 byte) hash: 31 Base64-tecken (24 byte)

Kostnadsfaktor

Kostnad 12 = 2^12 = 4096 iterationer. Kostnad 13 = 8192 iterationer. Varje ökning fördubblar beräkningstiden. Ställ in värdet så att hashning tar cirka 100–300 ms på er hårdvara. Angriparens hastighet skalas på samma sätt.

bcrypt i Python

import bcrypt password = b'my_password' salt = bcrypt.gensalt(rounds=12) # generates random salt hashed = bcrypt.hashpw(password, salt) # Verify: bcrypt.checkpw(password, hashed) # True

Inbyggt salt

bcrypt genererar och lagrar alltid saltet automatiskt. gensalt() skapar ett kryptografiskt slumpmässigt salt på 16 byte. Ni behöver aldrig hantera salt separat — det är inbäddat i hashsträngen.

bcrypt-gräns på 72 tecken

bcrypt trunkerar indata efter 72 byte. Lösenord som är längre än 72 tecken behandlas som identiska efter de första 72 byten. Lösning: beräkna först en SHA-512-hash och använd sedan bcrypt (men validera metoden).

Flöde för lösenordsverifiering

Inloggning: 1. Användaren skickar in sitt lösenord 2. Hämta den lagrade hashen från databasen 3. bcrypt.checkpw(submitted, stored_hash) 4. checkpw hämtar saltet från den lagrade hashen och beräknar om hashen 5. Returnerar True/False Lagra aldrig lösenordet i klartext.

Prestandamätningar

bcrypt med kostnadsfaktor 12: - Konsumentprocessor: ~150 ms per hash - GPU (RTX 4090): ~50 000 hashningar/sekund (jämfört med 10 miljarder för SHA-256) Angriparens fördel minskar från 1 miljard till ~300 med bcrypt och kostnadsfaktor 12.

Rekommendationer för kostnadsfaktor

OWASP 2024: kostnadsfaktor för bcrypt ≥ 10. Rekommenderat: 12. Kontrollera årligen — öka faktorn i takt med att hårdvaran blir snabbare. Implementera hashning på nytt online: kontrollera vid inloggning och uppgradera vid behov.

Begränsningar hos bcrypt

Svaghet hos bcrypt: algoritmen är inte minneshård. Angripare kan använda anpassade ASIC:er som är optimerade för bcrypt. För nya applikationer bör ni föredra Argon2id, som är minneshård och motståndskraftig mot ASIC-attacker.

Snabbkontroll

Vad innebär kostnadsfaktor 12 i en bcrypt-hash?

Sammanfattning

bcrypt är robust men inte minneshård. Därefter studerar vi Argon2 — den moderna mästaren inom lösenordshashning, med konfigurerbara minneskrav.
Gratis att börja

Lär dig Cryptology Academy med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
67
Lektioner
261

Vanliga frågor

Är lektionen ”bcrypt: algoritm och kostnadsfaktor” gratis?

Ja – hela texten till ”bcrypt: algoritm och kostnadsfaktor” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cryptology Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Cryptology Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”bcrypt: algoritm och kostnadsfaktor”?

Lär dig hur bcrypt fungerar internt, arbetsfaktorn och hur kostnaden ställs in korrekt. Ni övar på Cryptology Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Cryptology Academy?

Du behöver inga förkunskaper. Utbildningen i Cryptology Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”bcrypt: algoritm och kostnadsfaktor”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Cryptology Academy-lektionen?

Ja. Varje Cryptology Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Varför vanlig SHA-256 inte fungerar för lösenord
  2. bcrypt: algoritm och kostnadsfaktor
  3. Argon2: minneskrävande lösenordshashning
  4. PBKDF2 och att välja rätt algoritm
← Tillbaka till Cryptology Academy