• salasanojen murtaminen
  • rainbow taulukkohyökkäys
  • hajautus

Kuinka salasanasi murretaan? Kuinka parantaa salasanojen turvallisuutta?

Tässä artikkelissa olemme esittäneet useita klassisia menetelmiä salasanojen murtamiseen, sekä näiden lähestymistapojen taustalla olevia periaatteita. Näihin käsitteisiin liittyen olemme antaneet käytäntöjä sekä salasanojen säilyttäjien että tilinomistajien näkökulmasta siitä, kuinka parantaa salasanojen turvallisuutta.

Darcy Ye
Darcy Ye
Developer

Usein näemme uutisia siitä, että joidenkin tunnettujen suurille käyttäjämäärille tarkoitettujen sovellusten käyttäjien salasanat vuotavat. Voit ajatella, että koska et käytä kyseistä sovellusta, tällaisilla tapauksilla ei ole mitään tekemistä kanssasi, mutta todellisuudessa asia ei ole näin.

Viime aikoina Twitterissä oli myös uutisia siitä, että tekoälymenetelmät voivat merkittävästi nopeuttaa salasanamurtamista. Joten halusimme ymmärtää sen taustalla olevia monimutkaisuuksia ja nähdä, kuinka voimme parantaa salasanojemme turvallisuutta.

PassGAN Twitter

Kuinka salasanat murretaan?

Yleisesti ottaen tilien salasanat käsitellään tyypillisesti erilaisilla hajautusalgoritmeilla ja tallennetaan sitten tietokantoihin. Voit viitata edelliseen blogiimme saadaksesi paremman käsityksen salasanojen hajautuksesta. Valitettavasti jotkut palveluntarjoajat, joilta puuttuu maalaisjärki, tallentavat salasanat selkokielellä tietokantoihinsa. Tämä käytäntö voi aiheuttaa vielä merkittävämpää vahinkoa, jos tiedot vuotavat.

Tallentamalla hajautettuja salasanoja, edes tietokantojen ylläpitäjät eivät pääse käsiksi alkuperäiseen salasanaasi, mikä parantaa turvallisuutta merkittävästi. Kun syötetyn salasanan oikeellisuutta pyritään varmistamaan, käytetään samaa hajautusalgoritmia syötetyn salasanan käsittelyyn. Tuloksena saatu hajautus vertaillaan sitten tietokantaan tallennettuun arvoon. Jos kaksi hajautusarvoa täsmäävät, syötettyä salasanaa pidetään oikeana.

Yksinkertaistettuna salasanojen murtaminen käsittää merkkijonojen tuottamisen, jotka noudattavat sallittuja salasanojen sääntöjä. Se sisältää sitten näiden merkkijonojen jatkuvan tarkistamisen edellä mainitulla menetelmällä, jotta löydetään lopulta oikea selkokielinen salasana.

Yleiset menetelmät salasanojen murtamiseen

Tässä osiossa esittelemme lyhyesti kolme yleistä tapaa murtamiseen.

Brute-force hyökkäys

Brute force -hyökkäykset yleensä käyvät kaikki mahdollisuudet läpi sallittujen salasanamääräysten sisällä ja yrittävät niitä yksi kerrallaan.

Esimerkiksi matkapuhelimissa voi olla asetettuna 4-numeroinen salasana. Brute-force -hyökkäykset yrittävät kaikkia mahdollisuuksia yksi kerrallaan 0000, 0001, 0002, …, aina 9999 asti.

Brute-force -hyökkäykset ovat erittäin aikavieviä, koska yrityksiä on liian monta. Oletetaan, että salasanan pituus on $L$, ja mahdollisten merkkien lukumäärä per salasanamerkki on $n$, silloin mahdollisuuksien määrä, joita brute-force -hyökkäysten on kokeiltava, on $n^L$, mikä on erittäin suuri numero.

Syynä siihen, miksi monissa salasanoissa vaaditaan numeroiden, isojen ja pienten kirjainten sekä erikoismerkkien yhdistelmä, on $n$:n kasvattaminen, mikä kasvattaa huomattavasti mahdollisuuksien määrää ja lisää siten salasanan murtamisen vaikeutta.

Sanakirjahyökkäys

Sanakirjahyökkäykset käyttävät sanakirjoista peräisin olevia sanoja, usein yhdistettynä välilyönteihin, numeroihin, erikoissymboleihin ja muihin elementteihin, muodostaakseen erilaisia salasanayhdistelmiä. Näitä yhdistelmiä käytetään sitten yrittämään salasanatarkistuksia.

Monet ihmiset valitsevat selkeämerkityksisiä lauseita salasanoiksi niiden helpon muistettavuuden vuoksi. Sanakirjahyökkäykset osoittautuvat tehokkaaksi menetelmäksi salasanojen murtamiseksi, joilla on tällaisia piirteitä.

Rainbow taulukkohyökkäys

Rainbow taulukko on ennalta laskettu kartta selkokielisistä salasanoista niiden vastaaviin hajautusarvoihin. Vertaamalla suoraan tietokantaan tallennettuja hajautusarvoja rainbow-taulukkoon mahdolliset osumat voidaan käyttää hakemaan ja palauttamaan suoraan vastaava selkokielinen salasana.

Rainbow taulukot tarjoavat etuna välittömän pääsyn selkokielisiin salasanoihin, jos hajautusarvo on ennalta laskettu (ja tallennettu rainbow-taulukkoon). On kuitenkin tärkeää huomata, että jos hajautusarvoa ei ole ennalta laskettu (eikä siten ole taulukossa), rainbow taulukkoa ei voida käyttää.

Edellä kuvattujen menetelmien lisäksi on lukuisia muita tekniikoita, joita ei tässä käsitellä. Yleisesti ottaen yhdistelmänä näitä menetelmiä käytetään kattamaan kaikki mahdolliset salasanat ja nopeuttamaan murtamisprosessia.

Kuinka nopeuttaa salasanamurtoa?

Edellisessä osiossa esittelimme lyhyesti joitakin klassisia salasanan murtamismenetelmiä. Niistä voimme tiivistää ideoita salasanan murtamisen nopeuden tai onnistumisasteen parantamiseksi.

Salasana murtamisessa on yleensä kaksi vaihetta:

  1. Määrittele salasanan hakutila (tuota mahdolliset salasanat)
  2. Käytä hash-algoritmia tuottamaan hash-arvot edellisessä vaiheessa saaduille mahdollisille salasanoille ja vertaa niitä murtettavan salasanan hash-arvoon

Edellä mainitut sanakirjahyökkäys ja rainbow taulukkohyökkäys optimoivat näitä kahta vaihetta:

  • Sanakirjahyökkäys kaventaa salasanojen hakutilaa. Rakennetaan olettamuksella, että "käyttäjät pyrkivät luomaan salasanoja, jotka ovat sanayhdistelmiä, joilla on todellisia merkityksiä", kuten zzzz ei sisälly sanakirjaan, mikä tarkoittaa, että niitä ei yritetä potentiaalisina salasanoina. Tämä käytäntö on samanlainen kuin väärien vastausten ennakoiva sulkeminen. Vastaavan monivalintakysymyksen kohdalla, vaikka et voi olla varma oikeasta vaihtoehdosta, voit tunnistaa, mitkä valinnat ovat ehdottomasti vääriä. Sulkemalla nämä selvästi väärät vaihtoehdot, parannat mahdollisuuksiasi arvata oikein jäljellä olevista vaihtoehdoista.
  • Rainbow taulukkohyökkäys nopeuttaa hash-algoritmin suoritusaikaa. Hyvin tietorakenteisiin perehtyneille henkilöille hakeminen on $O(1)$-monimutkaisuusoperaatio, eikä mikään operaatio voi olla yksinkertaisempi kuin $O(1)$ aikamonimutkaisuudessa. Sitä vastoin tavallisesti käytettyjen hash-algoritmien, kuten MD5 ja SHA, aikamonimutkaisuus on $O(n)$, mikä on huomattavasti hitaampaa kuin $O(1)$.

Käytännössä salasanan murtamisen prosessin optimointi alkaa myös edellä mainituista kahdesta näkökulmasta. On syytä mainita, että johtuen merkkijonohajautusalgoritmien $O(n)$ aikakompleksisuuden suhteellisen pienestä optimointitilasta, enemmän huomioita kiinnitetään laitteistoihin tai laskentamenetelmien parantamiseen, joita ei tässä käsitellä yksityiskohtaisesti.

Kuinka tekoäly auttaa murtamaan salasanat?

Koko salasanamurtamisyrityksessä tekoälyn rooli ulottuu oppimaan tiettyjä malleja ja rakennusmenetelmiä paljastetuista selkokielisistä salasanoista. Sen jälkeen tekoäly voi simuloida näitä salasanarakennusmalleja tuottaakseen joukon potentiaalisia salasanoja. Tämän jälkeen tekoäly voi käyttää hajautusalgoritmeja tai jopa erikoistuneita laitteistoja suorittamaan salasanamurtamisen.

Itse asiassa, verrattuna muihin salasanojen murtamistyökaluihin, PassGAN:n tappava etu on, että se voi "arvata todennäköisimmät salasanat mahdollisimman nopeasti", mikä on "mahdollisen salasanan hakutilan kaventaminen", kuten edellä mainitsimme.

Salasanan arvaamisen todennäköisyys

Kuinka tehdä salasanoista turvallisempia?

Selitämme, kuinka suojella salasanoja kahdesta näkökulmasta. Tässä aloitamme yksinkertaisesti itse salasanasta, keskustelematta muista keinoista varmistaa tilin turvallisuus, kuten monivaiheinen todentaminen (MFA) jne.

Identiteettipalveluntarjoajien näkökulmasta

Identiteettipalveluntarjoajina he ylläpitävät kaikkien käyttäjien salasanoja, mikä velvoittaa heidät suojaamaan näiden salasanojen turvallisuutta. Tässä on useita järjestelmiä, joita voidaan toteuttaa käyttäjien salasanojen turvallisuuden parantamiseksi:

  1. Vältä salasanojen tallentamista selkokielellä: Vaikka tämä saattaa vaikuttaa itsestään selvältä, jotkut palveluntarjoajat tallentavat silti salasanat selkokielellä tietokantoihinsa. Hash-arvojen käyttö salasanojen tallentamisessa lisää turvallisuutta; edes jos tietokanta vaarantuu, hakkerit tarvitsisivat huomattavaa vaivaa murtaakseen hajautetut salasanat.

  2. Sovella käyttörajoituksia API-rajapintaan salasanan tarkistamiseksi: Palataan aikaisemmin mainittuun salasanan murtamisprosessiin. Tärkeä osa tätä prosessia on "vahvistaa", onko salasana oikein. Koska salasanat luotetaan identiteettipalveluntarjoajille, he ovat ainoita tahoja, jotka pystyvät tarjoamaan API: n salasanan tarkistamiseen. Rajoittamalla tämän API: n käyttötiheyttä, voimme estää hakkereita yrittämästä nopeasti erilaisia salasanoja, vaikka heillä olisi hyvin todennäköisiä salasana-arvauksia.

  3. Pakota monimutkaisempia salasanakoostumuksia: Esimerkiksi, kuten aiemmin mainittiin, suurempi merkkikirjo monimutkaisuuden lisäämiseksi tietyn pituisissa salasanoissa lisää monimutkaisuutta. Lisäksi edellä käsiteltyjen kaltaisten tekoälytekniikoiden käyttö mahdollistaa salasanan turvallisuuden arvioinnin ennen lähettämistä. Jos salasanaa pidetään heikkona, käyttäjiä voidaan kehottaa valitsemaan vahvempi vaihtoehto.

Käyttäjän näkökulmasta

Tiliomistajina ja niihin liittyvinä digitaalisina omaisuuksina käyttäjien on kiinnitettävä erityistä huomiota varmistaakseen tilinsä salasanojen turvallisuuden.

  1. Vältä samojen salasanojen käyttöä eri verkkosivuilla: Kun hakkerit ovat saaneet salasanat tietyiltä verkkosivuilta, monet heistä yrittävät käyttää näitä tilitietoja muihin verkkosivuihin. Jos useilla eri palveluille tarkoitetuilla tileillä on sama salasana, voi olla riski menettää tilit ja kokea tietojen vuotaminen edellä mainitussa tilanteessa.

  2. Valitse täysin satunnaiset salasanat mahdollisuuksien mukaan: Tämä lähestymistapa auttaa estämään yleisten salasanakaavojen uudelleenkäyttöä, joita useimmat ihmiset käyttävät (kuten aiemmin mainittiin käyttämällä englanninkielisiä lauseita), vaikeuttaen hakkereiden pyrkimyksiä "kaventaa salasanan hakutilaa" ja lisäten salasanan monimutkaisuutta.

Identiteettipalveluiden infrastruktuurintarjoajana Logto on ottanut käyttöön monia edellä mainittuja parhaita käytäntöjä, jotta käyttäjätilien turvallisuus voidaan taata. Tämä mahdollistaa käyttäjien osallistumisen erilaisiin sovelluksiin ilman tilin menettämisen pelkoa ja samalla mahdollistaa verkkopalveluntarjoajien varmistaa käyttäjien tietoturva minimaalisella vaivalla, mikä mahdollistaa heidän keskittymisensä ydintoimintaansa.