Tunnista hashin algoritmi
- Hallintapaneeli
- Dokumentaatio
- API
Mikä on kryptografinen tiiviste ?
Tiiviste (hash tai kryptografinen sormenjälki) on tulos funktiosta, joka muuntaa minkä tahansa kokoisen syötteen (salasanan, tiedoston, merkkijonon) kiinteän kokoiseksi merkkijonoksi. Tämä funktio on yksisuuntainen : tiivisteen perusteella on matemaattisesti mahdotonta palauttaa alkuperäistä syötettä. Kaksi identtistä syötettä tuottavat aina saman tiivisteen, mutta pienikin muutos syötteessä muuttaa tuloksen täysin.
Työkalumme tunnistaa todennäköisen algoritmin tiivisteen muodosta ja yrittää hakua (lookup) erittäin yleisten salasanojen sanakirjasta, jotka on esilaskettu pääasiallisille algoritmeille.
Kuinka tunnistaa tiiviste ?
Tunnistaminen perustuu kolmeen vihjeeseen :
- Pituus : jokainen algoritmi tuottaa kiinteän kokoisen sormenjäljen.
- Muoto : puhdas heksadesimaali, Base64 tai Modular Crypt Format tietyillä etuliitteillä.
- Etuliite : nykyaikaiset salasanojen tiivisteet noudattavat muotoa
$id$params$salt$hash, jossaidtunnistaa yksiselitteisesti käytetyn funktion.
Yleiset heksadesimaalipituudet
- 8 merkkiä : CRC32 (tarkistussumma, ei kryptografinen tiiviste)
- 32 merkkiä : MD5, MD4, NTLM, RIPEMD-128
- 40 merkkiä : SHA-1, RIPEMD-160
- 64 merkkiä : SHA-256, SHA3-256
- 96 merkkiä : SHA-384, SHA3-384
- 128 merkkiä : SHA-512, SHA3-512, Whirlpool
Pituus yksinään ei riitä johtopäätökseen : esimerkiksi MD5 ja NTLM jakavat saman 32 heksamerkin koon. Työkalumme palauttaa tällöin luettelon mahdollisista algoritmeista.
Modular Crypt Format -etuliitteet
crypt()-funktiosta tai nykyaikaisista kirjastoista peräisin olevat salasanojen tiivisteet käyttävät selkeää etuliitettä :
$1$: MD5 crypt$5$: SHA-256 crypt$6$: SHA-512 crypt$2y$,$2a$,$2b$: Bcrypt (muunnelmia alustan mukaan)$argon2i$,$argon2id$,$argon2d$: Argon2 (käyttömuunnelmia, Argon2id on nykyään suositeltu)
Esimerkki Bcrypt-tiivisteestä
$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
Käyttötapaukset
- Datan vuotojen analysointi : tunnistetaan vaarantuneen tietokannan käyttämä algoritmi hyökkäyksen vaikeusasteen arvioimiseksi.
- Vianmääritys : vahvistetaan nopeasti, mikä algoritmi on luonut API-vastauksesta tai lokista löytyneen sormenjäljen.
- Tietoturva-auditointi: etsi järjestelmä, joka tallentaa edelleen salasanoja MD5- tai SHA-1-muodossa (vältettävä).
- Forensiikka: artefaktin tunnistaminen tutkinnassa.
Miksi tiiviste ei ole palautettavissa
Tiivistefunktio on suunniteltu olemaan yksisuuntainen. Ei ole olemassa algoritmia "tiivisteen purkamiseen", koska tiiviste ei ole salausta: se on projektio. Useat eri syötteet voivat teoriassa tuottaa saman tiivisteen (törmäys), joten vaikka tietäisit syötteen, joka tuottaa oikean tiivisteen, sinulla ei ole takuuta siitä, että se on alkuperäinen syöte.
Käytännössä tiivisteen "murtaminen" tarkoittaa ehdokassyötteiden massiivista testaamista, kunnes löytyy sellainen, jonka sormenjälki vastaa haluttua. Tätä tekevät sanastohyökkäykset ja brute force -hyökkäykset.
Sisäänrakennettu sanastohaku
Työkalumme sisältää pienen sanaston, jossa on 39 erittäin yleistä salasanaa:
tyhjä merkkijono, password, admin, 123456, qwerty,
letmein jne. Nämä 39 syötettä on esilaskettu 10 algoritmilla
(MD5, SHA-1, SHA-256, SHA-512, MD4, NTLM jne.). Jos tiivisteesi vastaa jotakin näistä sormenjäljistä,
työkalu palauttaa salasanan selkokielisenä.
Tämä ominaisuus havainnollistaa, miksi yksinkertaiset tiivisteet eivät sovellu salasanoille: hyökkääjän ei tarvitse edes laskea mitään, hän vain katsoo taulukosta.
Yksinkertainen tiiviste vs. salasanatiiviste
Kaikki tiivisteet eivät ole samanarvoisia salasanojen tallentamiseen:
- Yksinkertaiset tiivisteet (MD5, SHA-256, SHA-512): suunniteltu olemaan nopeita, mikä on heikkous, kun halutaan vastustaa brute force -hyökkäystä. Ne eivät oletuksena sisällä suolaa (salt), joten kahdella käyttäjällä, joilla on sama salasana, on sama tiiviste, mikä altistaa esilaskettuihin taulukoihin (rainbow tables) perustuville hyökkäyksille.
- Salasanatiivisteet (bcrypt, scrypt, Argon2): suunniteltu olemaan rakenteellisesti hitaita, sisältävät satunnaisen suolan ja säädettävän kustannuskertoimen. Argon2id on nykyään OWASP:n suosittelema huipputeknologia.
Työkalun käyttöohje
- Liitä tiiviste syötekenttään.
- Työkalu tunnistaa muodon (pituus, etuliite) ja ehdottaa mahdollisia algoritmeja.
- Jos tiiviste vastaa erittäin yleistä salasanaa, selkokielinen sana näytetään.
- Muussa tapauksessa saat luettelon ehdokasalgoritmeista, joita voit tutkia tarkemmin siihen tarkoitetulla työkalulla.
Usein kysytyt kysymykset
Miksi bcrypt-tiivistettäni ei löydy sanastosta?
Bcrypt käyttää yksilöllistä satunnaista suolaa jokaisessa tiivisteessä: vaikka salasana olisi password,
jokainen käyttäjä tuottaa eri tiivisteen. Sanaston esilaskenta ei siis toimi.
Tämä on juuri se ominaisuus, joka tekee bcryptistä vastustuskykyisen taulukkohyökkäyksille.
Mitä tehdä, jos samalle pituudelle on useita mahdollisia algoritmeja?
Käytä apuna muita vihjeitä: tiivisteen lähde (Active Directory viittaa NTLM:ään, Linuxin
/etc/shadow SHA-512 cryptiin, vanha MySQL-tietokanta MD5:een jne.) ja sovellusympäristö.
Samanpituisten joukossa MD5 on tilastollisesti todennäköisin vanhoissa järjestelmissä.
Miten tiiviste "murtetaan" käytännössä?
Laillisissa tietoturvatesteissä (auditointi, penetraatiotestaus) käytettävät standardityökalut ovat John the Ripper ja hashcat. Ne hyväksyvät valtavia sanalistoja (rockyou jne.) ja hyödyntävät näytönohjainta (GPU) miljardien ehdokkaiden testaamiseen sekunnissa. Mahdollisuus onnistua riippuu algoritmista: MD5 ja SHA-1 murtuvat nopeasti, bcrypt ja Argon2 hidastavat hyökkäystä useilla kertaluokilla.
Onko sisäänrakennettu sanasto selattavissa?
Sanasto on tarkoituksella minimalistinen (39 syötettä) ja sen tarkoituksena on havainnollistaa yksinkertaisten tiivisteiden heikkoutta triviaalien salasanojen kohdalla. Vakavampaan käyttöön kannattaa käyttää ulkoista sanalistaa (rockyou, SecLists) John the Ripperin tai hashcatin kanssa.
Voiko tiivisteen "purkaa"?
Ei. Tiiviste ei ole salausta: käänteisfunktiota ei ole olemassa. Kaikki sivustot, jotka lupaavat "purkaa tiivisteen", tekevät todellisuudessa haun esilasketusta tietokannasta. Jos salasanasi on uniikki ja pitkä, sitä ei sieltä löydy.
Pyyntöesimerkki
curl -X POST https://cdrn.fr/api/v1/tools/hash-identifier/execute \
-H "Content-Type: application/json" \
-d '{"hash":"..."}'
Syöteskeema
| Kenttä | Tyyppi | Pakollinen | Oletus |
|---|---|---|---|
hash |
text | ✓ | – |
Päätepisteet
GET https://cdrn.fr/api/v1/tools- listaa kaikki saatavilla olevat työkalutGET https://cdrn.fr/api/v1/tools/hash-identifier- hakee tämän työkalun skeemanPOST https://cdrn.fr/api/v1/tools/hash-identifier/execute- suorittaa tämän työkalun JSON-payloadilla