Väsytyshyökkäys

Väsytyshyökkäys tai raakahyökkäys on kryptoanalyysihyökkäys, jossa yritetään järjestelmällisesti yrityksen ja erehdyksen kautta kokeilemalla löytää oikea salasana tai salausavain johonkin asiaan. Salasanaa saatetaan käyttää esim. kirjautumiseen johonkin käyttäjätunnukseen ja salausavainta tiedon salaukseen kiintolevyllä tai jollain muulla laitteella.
Myös nimeä brute-force-hyökkäys käytetään, koska englanninkielinen nimi käsitteelle on "brute-force attack". Suomen valtionhallinnon suosittelema nimi on kuitenkin "väsytyshyökkäys". Sanastokeskus TSK ry:n suosittelemat nimet ovat "väsytyshyökkäys" tai "raakahyökkäys".
Useimmiten väsytyshyökkäys -käsitettä käytetään tietotekniikassa, hyökkäys tehdään tietokoneella ja hyökkäystä käyttävää tahoa kutsutaan hyökkääjäksi.
Ensimmäisenä edellytyksenä hyökkäyksen toimivuudelle on se, että hyökkääjä saa kokeilla salasanoja niin monta kertaa kuin haluaa. Toinen edellytys on se, että hyökkääjä pystyy kokeilemaan salasanoja mahdollisimman nopeasti kyllin lyhyessä ajassa. Jos hyökkäykseen menisi viikon sijaan vaikkapa miljardi vuotta, ei hyökkäyksen voida sanoa olevan toimiva.
Väsytyshyökkäys on usein käytännössä toimimaton menetelmä, mutta tämä on tapauskohtaista.
Hyökkäyksen estäminen.
Hyökkäystä käyttämällä voidaan yrittää päästä kirjautumaan johonkin käyttäjätunnukseen. Rajoittamalla sallittuja kirjautumisyrityksiä vain muutamaan kertaan, voidaan väsytyshyökkäys estää. Kirjautumiskertoja ei välttämättä tarvitse rajoittaa, jos kirjautumisen automatisointi on estetty esim. CAPTCHA-kyselyllä. Tämä voi olla joissain tilanteissa toivottavaa esim. palvelunestohyökkäysten estämiseksi. Useilla kirjautumisyrityksillä voitaisiin ehkä estää käyttäjän pääsy käyttäjätunnuksiin.
Jos hyökkäysyritysten lukumäärää tai nopeutta ei voida rajoittaa, voidaan hyökkäys estää käyttämällä kyllin pitkää ja satunnaista salasanaa. Tämä pidentää hyökkäyksen keston mahdottomaksi, esim. viikosta miljardiin vuoteen. Jotkin salausohjelmat pidentävät niihin syötetyn salasanan kryptografisten tiivistefunktioiden sekä suolaamisen avulla, joilla heikkokin salasana voi vahvistua.
Kaikki salaukset, paitsi one-time pad -salaus (OTP) oikein toteutettuna voidaan teoriassa murtaa väsytyshyökkäyksellä, jos hyökkääjällä on käytössään aikaa tai laskentatehoa äärettömästi. OTP on ainoa täysin murtovarma tiedon salausmenetelmä, jota vastaan väsytyshyökkäys tai mikään muukaan kryptoanalyysimenetelmä ei toimi. Väsytyshyökkäyksellä voidaan OTP-salaukseen löytää oikea salasana ja selvittää salattu teksti, mutta OTP-salauksen luonteen vuoksi mikä tahansa selville saatu salana ja teksti ovat yhtä oikein. Jos salattu teksti on esim. 20 merkkiä pitkä teksti "QesvdfD4s$#sqSbRf4At", voidaan hyökkäyksen avulla tästä löytää viestit "salainen suunnitelma", "kuukauden ostoslista" tai mikä tahansa muu yhtä pitkä viesti, joista kaikki ovat yhtä oikein.
Hyökkäyksen tehostaminen.
Jos hyökkäyskertoja ei ole rajattu, voidaan hyökkäystä tehostaa lisäämällä hyökkäystä suorittavan tietokoneen tai tietokoneiden laskentatehoa esim. supertietokoneiden, laskentaverkkojen tai mahdollisesti kvanttitietokoneiden avulla.
Tietokoneiden kehittyessä aiemmin vahvaksi koettu salaus saatetaan voida murtaa. Esim. toisen maailmansodan aikana Enigma-laitteilla salattuja viestejä on onnistuttu nykyään murtamaan hyödyntäen väsytyshyökkäystä. 
Ihmiset käyttävät usein koneellisesti helposti arvattavia salasanoja, jotka pohjautuvat oikeisiin sanoihin (esim. musT1KKA) täysin satunnaisten merkkien sijaan (esim. QxM"90Sk). Salasanat ovat myös usein lyhyitä. Hyökkäystä voidaan siksi huomattavasti nopeuttaa huonosti toteutetuissa tiedon salausjärjestelmissä käyttämällä esim. sanakirjasta löytyviä sanoja. Sanat voidaan syöttää tekstitiedostona tietokoneohjelmaan, joka yhdistelee ja kokeilee niitä järjestelmällisesti kunnes salaus on murrettu. Menetelmää kutsutaan "sanakirjahyökkäykseksi", eikä se suoranaisesti ole väsytyshyökkäys, vaikka onkin samankaltainen. Hyvä salausjärjestelmä voi kuitenkin käyttää useasti perättäin toistettuja (iteroituja) tiivistefunktioita syötetyn salasanan muovaamiseen täysin satunnaisen näköiseksi. Sanakirjahyökkäystä ei voida tällöin käyttää. 
Sanakirjahyökkäyksen sijaan saatetaan voida käyttää esilaskettujen tiivistefunktioiden listaa "rainbow table" -hyökkäyksessä. Hyökkäystä voidaan käyttää erityisesti jos salausavaimen tiedetään olevan tietyn pituinen ja hyökkäys halutaan toteuttaa mahdollisimman nopeasti esim. jonkin tietomurron yhteydessä. Tämäkään hyökkäys ei ole väsytyshyökkäys ja on suoritustavaltaan päinvastainen: rainbow table -hyökkäyksessä tiivisteiden laskenta suoritetaan ennen salauksen murtoyritystä ja tiivisteet talletetaan murtoyritystä varten. Väsytyshyökkäyksessä puolestaan kokeiltavia tiivisteitä lasketaan murtoyrityksen aikana. Rainbow table -hyökkäys voidaan yksinkertaisesti estää käyttämällä useita iteraatioita (jolloin listan laskenta käy mahdottomaksi) ja/tai erityisesti lisäämällä salasanaan "suola" (eng. "salt"). Suolalla tarkoitetaan satunnaista merkkijonoa, jonka kanssa syötetty salasana käsitellään tiivistefunktiolla. Sama suola liitetään kuhunkin tiivistefunktion iteraatioon. Koska suola vaihtelee salausjärjestelmästä riippuen, ei hyökkääjä todennäköisesti tunne sitä ainakaan etukäteen, jolloin tiivistefunktiolistaa ei voida laskea etukäteen.