Brute-force-hyökkäysten toimintaperiaate
Miksi pituudella on merkitystä: laskelmia ja vastatoimenpiteitä.
Brute-force-hyökkäyksissä hyökkääjät yrittävät arvata salasanan kokeilemalla järjestelmällisesti kaikkia mahdollisia merkkikombinaatioita. Perusidea on yksinkertainen: testata mahdollisimman monta yhdistelmää sekunnissa – mieluiten GPU:illa tai hajautetuissa järjestelmissä. Tätä kutsutaan myös kattavaksi haun (exhaustive search).
Käytännössä tällaiset hyökkäykset ovat valitettavasti usein onnistuneita, koska monet salasanat ovat liian lyhyitä, rajoittuvat muutamaan merkkiryhmään (vain kirjaimet) tai esiintyvät sanaluetteloissa. Tämä pienentää hakualuetta huomattavasti ja helpottaa salasanan arvaamista. Vielä tärkeämpää: Erotetaan online-hyökkäykset (kirjautumislomakkeita vastaan, joissa auttavat arvausten rajoittaminen/tilien lukitseminen) ja offline-hyökkäykset (varastettuja salasanahash-arvoja vastaan, joissa hash-funktio ja salasanan vahvuus ratkaisevat hyökkäyksen keston).
Salasanojen murtaminen (offline) ≠ ”salauksen purkaminen”
Salasanoja ei purka salausta, vaan ne tallennetaan hash-arvoina ja sitten etsitään arvaamalla + hashaamalla</ em> (brute force, sanakirja-/naamiohyökkäykset). Nykyaikaisen laitteiston laskentanopeus on miljardeja sekunnissa (nopeille hash-menetelmille), minkä vuoksi pitkät ja hitailla menetelmillä (esim. Argon2, scrypt, PBKDF2, bcrypt) hajautetut salasanat ovat ratkaisevia.
Salasanan yhdistelmä ja pituus
Seuraavat esimerkit osoittavat pituuden ja merkkivalinnan vaikutuksen. Havainnollistamiseksi lasketaan 2 miljardia yritystä sekunnissa (erittäin tehokas yksittäinen tietokone; todelliset arvot vaihtelevat suuresti laitteistosta ja – offline-tilassa – hajautusmenetelmästä riippuen).
Tyypillisiä merkkiryhmiä:
- Numerot (10: 0–9)
- Kirjaimet (52: A–Z ja a–z)
- Erikoismerkit (≈ 32; riippuu palvelun sallimasta merkkijonosta)
Mahdollisten yhdistelmien määrä lasketaan seuraavasti:
Mahdolliset yhdistelmät = (merkkimäärä)salasanan pituus
Tärkeää: Taulukossa on esitetty maksimi hakuaika. Keskimäärin todellinen aika on noin puolet tästä. Lisäksi sanakirja-, sääntö- ja maskikohtaiset hyökkäykset vähentävät hakualuetta huomattavasti, kun taas hitaat salasanan hajautusmenetelmät laskevat tehokasta nopeutta dramaattisesti.
| Salasana koostuu | Mahdolliset yhdistelmät (kaava) | Tarvittava aika (2 miljardia/s) |
|---|---|---|
|
5 merkkiä |
( 53) ×
263 × 102 = |
17 576 000 / 2 000 000 000 = |
|
7 merkkiä |
( 71) ×
261+6 = |
56 222 671 232 / 2 000 000 000 = |
|
8 merkkiä |
( 84) × ( 42 ) × 264
× 322 × 102 = |
19 653 623 808 000 / 2 000 000 000 = |
|
9 merkkiä |
( 92 ) × ( 73) × ( 42 ) ×
262+3 × 102 × 322 = |
9 197 895 942 144 000 / 2 000 000 000 = |
|
12 merkkiä |
( 123) × ( 94 ) × ( 53) ×
263+4 × 323 × 102 = |
7 295 525 784 083 496 960 000 / 2 000 000 000 = |
|
14 merkkiä |
( 144 ) × (
104) × ( 63 ) ×
264+4 × 103 × 323 = |
28 768 690 008 569 256 345 600 000 / 2 000 000 000 = |
Johtopäätös: Jokainen ylimääräinen merkki moninkertaistaa hakualueen. Pituus voittaa monimutkaisuus säännöt – erityisesti offline-hyökkäyksiä vastaan – edellyttäen, että palvelut käyttävät sopivia, hitaita hajautusmenetelmiä suolalla.
Suojautuminen brute force -hyökkäyksiltä
Tehokkain käyttäjän toimenpide on pitkä, satunnainen pääsalasana tai salasana (esim. useita satunnaisia sanoja) – joka on yksilöllinen jokaiselle palvelulle. Password Depot auttaa luomisessa ja näyttää arvioidun hyökkäysajan, joka ottaa huomioon pituuden/merkkijonon lisäksi myös sanakirjan heikkoudet.
- Ota MFA/2FA käyttöön (esim. TOTP-sovellus tai laitteistotunnus) – mahdollisuuksien mukaan salasanat ovat vielä parempia. Katso BSI-ohjeet.
- Ei salasanan kierrätystä. Jokaisella tilillä on oltava oma vahva salasana.
- Pitkä salasana pakollisen monimutkaisuuden sijaan. Palveluiden tulisi sallia pitkät salasanat/salasanalauseet (vähintään 64 merkkiä) ja estää vaarantuneet salasanat (mustalista).
- Hidas hash-menetelmä palvelinpuolella (esim. Argon2, scrypt, PBKDF2, bcrypt) Saltilla ja sopivilla työkertoimilla; nopeat hash-menetelmät, kuten MD5/SHA-1, eivät sopivia salasanan tallentamiseen.
- Nopeuden rajoittaminen/kuristaminen ja lukitseminen: Online-hyökkäykset on hidastettava rajoittamalla virheellisten yritysten määrää, lisäämällä odotusaikoja ja tarvittaessa käyttämällä CAPTCHA-tunnistusta.
Lisäksi Password Depot vaikeuttaa online-yrityksiä estämällä pääsalasanan syöttömaskin virheellisten syöttöjen jälkeen – lisäämällä odotusaikaa toistuvien virheellisten yritysten yhteydessä.
Lisätietoja
- NIST SP 800‑63B (Rev. 4), liite: Salasanojen vahvuus – pituus, salasanalauseet, offline-hyökkäykset (miljardeja hajautuksia sekunnissa) ja nopeuden rajoittamisen käsite.
- NIST SP 800‑63B (Rev. 3) – mm. vähimmäispituus, pitkien salasanojen salliminen (≥ 64), mustat listat, liittämisen salliminen; nopeuden rajoittaminen/kuristaminen rajoituksella enintään 100 peräkkäistä virheellistä yritystä.
- OWASP Password Storage Cheat Sheet – sopivat menetelmät (Argon2, scrypt, PBKDF2, bcrypt), suola-/työtekijät.
- OWASP Authentication Cheat Sheet – ohjeet salasanan syöttämisestä, pituudesta, mustista listoista ja lukitusmekanismeista.
- BSI: Turvallisten salasanojen luominen – mm. pitkät/monimutkaiset salasanat ja salasanalauseet; käytännön vinkkejä.
- BSI‑Presse 31.01.2025 – Ei pakollisia säännöllisiä salasananvaihtoja; suositaan 2FA/salasanoja.
- distributed.net RC5 / nykyinen välityspalvelimen tila – esimerkki tyhjentävästä hausta ja hajautetusta laskentatehosta.