Tiivisterivit ovat muodossa “ALGORITMI tiiviste”, joten ne voi kopioida julkaisutiedotteisiin tai latausmanifesteihin.
Tiivistegeneraattori — jokainen algoritmi selitetty alusta asti
Yhdellä lauseella: kryptografinen tiivistefunktio on yksisuuntainen sekoitin — se ottaa minkä tahansa määrän tavuja ja puristaa ne kiinteänmittaiseksi sormenjäljeksi niin, että sama syöte antaa aina saman sormenjäljen, eikä sormenjälki kerro mitään siitä, miten syöte rakennetaan uudelleen. Tämä sivu ajaa niistä yhdentoista kokonaan selaimen välilehden sisällä.
Jokainen alla oleva algoritmi selitetään samoissa neljässä vaiheessa: mitä se on yksinkertaisin sanoin, intuitio siitä, miten se toimii ilman kaavoja, pitäisikö sitä yhä käyttää tänään ja virheet, joita ihmiset tekevät useimmin sen kanssa.
MD5
Mitä se on. MD5 (1992) puristaa minkä tahansa syötteen 128-bittiseksi (32 heksamerkkiä) sormenjäljeksi. Se suunniteltiin nopeaksi 1990-luvun koneilla, ja se on yhä — juuri siksi se on yhä kaikkialla: ohjelmien lataussivuilla, tiedostojen päällekkäisyyden poiston välimuisteissa, vanhoissa tietokantaavaimissa.
Miten se toimii intuitiivisesti. Syöte leikataan 64 tavun lohkoihin. Jokainen lohko sekoitetaan nelinkertaisesti 128-bittiseen liukuvaan tilaan (neljä hieman erilaista sekoituskierrosta), ja viimeisen lohkon jälkeen tila tulostetaan tiivisteenä. Sekoitus koostuu yhteenlaskuista, kierroista ja taulukkohauista — silloin halpaa, nytkin halpaa.
Pitäisikö sitä käyttää? Tarkistussummiin, joissa kukaan ei yritä huijata — vioittuneen latauksen havaitsemiseen, kaksoiskappaleiden etsimiseen — kyllä, se raportoi vioittumisen yhä täydellisesti. Kaikkeen vastustajalliseen ei: vuodesta 2004 lähtien tutkijat ovat voineet laatia kaksi eri tiedostoa, joilla on sama MD5, sekunneissa, ja todelliset sertifikaattiväärennökset MD5-törmäyksiä käyttäen tehtiin vuonna 2008. Käsittele sitä sarjanumerona, ei lukkona.
Yleiset virheet. MD5:n käyttö salasanoihin (aivan liian nopea — katso Salasanatiivisteen generaattori, mikä sinne kuuluu); tiedoston luottaminen siksi, että “MD5 täsmää”, vaikka hyökkääjä on julkaissut myös MD5:n; ja koko MD5 (file) = hash -rivin liittäminen pelkän tiivisteen sijaan — yllä oleva Vahvista-kenttä hyväksyy molemmat.
SHA-1
Mitä se on. SHA-1 (1995, NSA) tuottaa 160 bitin (40 heksamerkkiä) tiivisteen. Kahden vuosikymmenen ajan se oli Gitin, TLS-sertifikaattien ja PGP-allekirjoitusten oletusarvoinen eheystiiviste.
Miten se toimii intuitiivisesti. Sama reseptiperhe kuin MD5:ssä, mutta 160 bitin tilalla, 80 sekoituskierrosta 64 tavun lohkoa kohden ja laajempi joukko operaatioita. Lisäkierrosten oli tarkoitus tehdä sekoittimesta vaikeampi käänteissuunnitella.
Pitäisikö sitä käyttää? Ei vastustajallisiin tarkoituksiin. Teoreettinen murto tuli käytännölliseksi vuonna 2017, kun Google tuotti kaksi eri PDF-tiedostoa, joilla oli identtiset SHA-1-arvot (SHAttered-hyökkäys, noin 6500 CPU-vuotta). Git tallentaa yhä objektit SHA-1:n alle, mutta käsittelee sen vain tunnisteena, ja on sittemmin lisännyt törmäystunnistuksen. Uuteen työhön käytä SHA-256:ta tai SHA-3:a.
Yleiset virheet. Uskotaan, että 160 bittiä “on yhä riittävän pitkä” — murtuma koskee sisäistä rakennetta, ei raakavoimaa; ja sekoitetaan RIPEMD-160 SHA-1:een, koska molemmat ovat 40 heksamerkkiä pitkiä (yllä oleva tunnistuskenttä erottaa ne).
SHA-2: SHA-256, SHA-384 ja SHA-512
Mitä se on. SHA-2-perhe (2001, NSA) on nykyaikaisen eheystarkistuksen työjuhta. SHA-256 antaa 256 bittiä (64 heksamerkkiä), SHA-512 antaa 512 bittiä, ja SHA-384 on SHA-512 tulos katkaistuna 384 bittiin — hyödyllinen, kun protokolla vaatii lyhyemmän tunnisteen.
Miten se toimii intuitiivisesti. 64 tavun lohkot (512-bittisille muunnelmille 128 tavua) taitetaan 8 sanan tilaan 64 (tai 80) kierroksen aikana, joissa on yhteenlasku-, kierto- ja sekoitusvaiheita. Toisin kuin MD5:ssä, aikataulu venyttää ensin jokaisen lohkon laajennettuun puskuriin, ja juuri se torjui hyökkäystyypin, joka rikkoi MD5:n ja SHA-1:n. Kannattaa tietää: 64-bittisillä suorittimilla SHA-512 on nopeampi kuin SHA-256, koska se käsittelee kierrosta kohden kaksinkertaisen datamäärän 64-bittisellä aritmetiikalla.
Pitäisikö sitä käyttää? Kyllä — SHA-256 on tänään oletusvastaus tiedostojen tarkistussummiin, koodin allekirjoittamiseen ja sertifikaattien sormenjälkiin, eikä kahden vuosikymmenen analyysin jälkeen tunneta käytännöllistä murtoa. Käytä SHA-384/512:ta, kun halutaan lisää marginaalia tai kun alusta ajaa ne nopeammin.
Yleiset virheet. SHA-256:n käyttö yksinään salasanoihin — se on nopea tiiviste, ja nopeus on siinä vihollinen (käytä bcrypt/scrypt/Argon2id:tä); ja tiivisteen pituuden sekoittaminen vahvuuteen vastustajallisissa törmäysvastusasetuksissa — pituus asettaa vain katon.
SHA-3 (SHA3-256 / SHA3-512) ja Keccak-256
Mitä se on. SHA-3 (2015, standardoitiin Keccak-ehdotuksesta Bertonin, Daemenin, Peetersin ja Van Asschen toimesta) on NISTin kolmas tiivistestandardi. Sillä ei ole mitään yhteistä SHA-2:n sisäisten rakenteiden kanssa — se valittiin juuri riippumattomaksi varakappaleeksi siltä varalta, että SHA-2 joskus murtuu.
Miten se toimii intuitiivisesti. Sen sijaan, että lohkoja sekoitettaisiin pieneen tilaan, Keccak toistuvasti “imee ja puristaa”: syöte imeytyy bitti kerrallaan 5×5×64-bittiseen sieniin, koko sieni sekoitetaan kiinteällä permutaatiolla (24 kierrosta bittioperaatioita koko tilan yli), ja tiivisteen bitit puristetaan ulos. Sienikuva on koko idea: kapasiteettibittejä ei koskaan tulosteta, ja juuri ne tekevät funktiosta yksisuuntaisen.
Keccak-256 vs. SHA3-256. Ne eroavat täsmälleen yhdellä täytetavulla. Keccak-tiimin alkuperäinen ehdotus täytti viimeisen lohkon tavulla 0x01; NIST muutti standardin täytteen tavuun 0x06 (toimialueen erottelu, jota SHA-2-aikakauden Keccak käyttää). Ethereum otti alkuperäisen täytteen käyttöön, joten sen “keccak256” eroaa standardista SHA3-256:sta jokaisella syötteellä. Tämä sivu tarjoaa molemmat erikseen valittavina.
Pitäisikö sitä käyttää? Kyllä — joko ensisijaisena valintana, kun käytäntö vaatii muun kuin SHA-2-algoritmin, tai missä tahansa ekosysteemissä, joka sitä jo puhuu. Yleiset virheet: oletetaan, että SHA3-256 ja Keccak-256 ovat keskenään vaihdettavissa (eivät ole — vertaa tämän sivun tuottamia kahta riviä samalle syötteelle); ja oletetaan, että “SHA-3” korvaa SHA-2:n — molemmat ovat turvallisia, ja SHA-2 on yhä laajemmin käytössä.
RIPEMD-160
Mitä se on. RIPEMD-160 (1996, eurooppalaisten akatemian tutkijoiden RIPE-konsortio, vahvistettu Dobbertinin, Bosselaersin ja Preneelin toimesta) tuottaa 160 bittiä. Se on kokonaan eurooppalainen suunnittelu, tarkoituksella riippumaton NSA:n suunnittelemasta SHA-perheestä.
Miten se toimii intuitiivisesti. Jokaista 64 tavun lohkoa käsitellään kahdella rinnakkaisella 80 kierroksen linjalla, joilla on eri vakiot ja kiertomäärät; lopuksi kaksi linjaa ja vanha tila yhdistetään. Kaksiraiteinen rakenne oli suunnittelijoiden tapa vastustaa differentiaalihyökkäyksiä, jotka rikkoivat muita 1990-luvun tiivisteitä.
Pitäisikö sitä käyttää? Käytännössä se säilyy lähinnä muiden järjestelmien sisällä: Bitcoin-osoitteet tiivistävät julkiset avaimensa RIPEMD-160(SHA-256(pk))-muodossa, vanhemmat OpenPGP-avaimet tarjoavat sitä tiivistevaihtoehtona, ja se on BitTorrent v1 -osien perinteinen tiiviste SHA-1:n rinnalla. Sille ei ole käytännöllistä törmäyshyökkäystä, mutta 160 bitin koko antaa sille tällä sivulla pienimmän turvamarginaalin. Itsenäiseen uuteen käyttöön suosi SHA-256:ta tai SHA-3:a.
Yleiset virheet. Uskotaan, että kaksi rinnakkaista linjaa tekevät siitä “kaksinkertaisen vahvan” — tuloksen koko on se, mikä rajoittaa törmäysvastusta; ja sekoitetaan se SHA-1:een (sama 40 heksamerkin pituus; yllä oleva tunnistuskenttä listaa molemmat mahdollisuudet rinnakkain).
BLAKE2b-512 ja BLAKE2s-256
Mitä se on. BLAKE2 (2013, Aumasson, Neves, Wilcox-O’Hearn ja Winnerlein) on ohjelmistonopeuteen suunniteltu tiiviste: BLAKE2b on tarkoitettu 64-bittisille alustoille ja antaa jopa 512-bittisen tuloksen, BLAKE2s on tarkoitettu 32-bittisille alustoille ja antaa jopa 256-bittisen tuloksen.
Miten se toimii intuitiivisesti. Se juontuu SHA-3:n finalistista BLAKEsta, jonka ydin on avainpohjainen permutaatio, lainattu virtasalausalgoritmista ChaCha: 4×4-sanamatriisi sekoitetaan vuorotellen sarake- ja lävistäjäsekoitusvaiheilla — kuten ruudukon sekoittaminen ensin ylhäältä alas, sitten lävistäjien suuntaisesti — 12 (BLAKE2b) tai 10 (BLAKE2s) kierrosta lohkoa kohden. Koska nämä vaiheet kuvautuvat hyvin suorittimen käskyille, BLAKE2 on usein nopeampi kuin MD5 ja tarjoaa SHA-3:een verrattavan turvallisuuden.
Pitäisikö sitä käyttää? Kyllä — se on täysin nykyaikainen, murtamaton rakenne, suosittu suorituskykyä vaativissa ohjelmistoissa (paketin eheys joissakin ekosysteemeissä, sisältöosoitteinen tallennus, varmuuskopioiden päällekkäisyyden poisto) ja nopeana MAC:ina. Tällä sivulla BLAKE2b-512 antaa pisimmät tiivisteet ja BLAKE2s-256 tiiviin nykyaikaisen vaihtoehdon.
Yleiset virheet. Ajatellaan, että “nopeampi tarkoittaa heikompaa” — BLAKE2 on nopea suunnittelun ansiosta, ei oikoteiden kautta; ja ei tajuta, että BLAKE2 hyväksyy myös avaimen (jolloin se on MAC) tai personointimerkkijonon — tämä sivu käyttää sitä aina avaimettomassa tavallisessa tilassa.
Vahvista- ja Tunnista-kenttien lukeminen
Vahvista. Vahvista-kenttä normalisoi kaiken, mitä liität — isot tai pienet kirjaimet, kaksoispisteet joka kahden numeron välissä, sha256=-etuliitteen, BSD-tyyppisen SHA256 (file) = hash -kääreen, GNU:n md5sum-rivin, jossa tiedostonimi on tiivisteen jälkeen, eksyneet \r\n-merkit — ja laskee sitten uudelleen jokaisen valitun algoritmin nykyisen syötteen (tekstin tai valitun tiedoston) yli ja raportoi jokaisen täsmäävän algoritmin. Vihreä osuma tarkoittaa “nämä tavut ovat täsmälleen sitä, minkä julkaisija tiivisti”; punainen tarkoittaa, ettei mikään valituista algoritmeista tuottanut sitä — kokeile valita lisää algoritmeja tai tarkista, onko liitos katkennut.
Tunnista. Tunnistuskenttä ei tiivistä mitään; se lukee merkkijonon muodon. Pituus rajaa ehdokkaita: 32 heksamerkkiä voi olla MD5, 40 voi olla SHA-1 tai RIPEMD-160, 64 voi olla SHA-256 / SHA3-256 / Keccak-256 / BLAKE2s-256, 96 SHA-384, 128 SHA-512 / SHA3-512 / BLAKE2b-512. Etuliitteet paljastavat salasanatiivisteet ($2a$/$2b$/$2y$ bcrypt, $argon2id$, $scrypt$, $6$ sha512crypt, $1$ MD5-crypt) — ne ovat eri lajia (katso Salasanatiivisteen generaattori), eikä tämä sivu tarkoituksella laske niitä. Merkkijono, jossa on +, / ja = ja jonka pituus on nelljällä jaollinen, on todennäköisemmin Base64-koodattua dataa kuin heksatiiviste; työkalu purkaa sen ja raportoi tavupituuden, joka siitä seuraisi.
Mitä tunnistaminen voi ja ei voi kertoa. Pituus ja merkkijoukko ovat muodon sormenjälkiä, eivät todiste algoritmista: kaksi 64-heksamerkkistä merkkijonoa voi olla peräisin SHA-256:sta tai katkaistusta SHA-512:sta. Tunnistin järjestää mahdollisuudet; Vahvista-kenttä on se, joka todistaa, mihin algoritmiin tavut todellisuudessa täsmäävät.
Kaikki yhdentoista yhdellä silmäyksellä
| Algoritmi |
Hajotus |
Keksitty |
Tiiviste lauseelle “The quick brown fox jumps over the lazy dog” |
| MD5 | 128 bittiä | 1992 | 9e107d9d372bb6826bd81d3542a419d6 |
| SHA-1 | 160 bittiä | 1995 | 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 |
| SHA-256 | 256 bittiä | 2001 | d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592 |
| SHA-384 | 384 bittiä | 2001 | ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1 |
| SHA-512 | 512 bittiä | 2001 | 07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6 |
| SHA3-256 | 256 bittiä | 2015 | 69070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04 |
| SHA3-512 | 512 bittiä | 2015 | 01dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450 |
| Keccak-256 | 256 bittiä | ennen vuotta 2015 | 4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15 |
| RIPEMD-160 | 160 bittiä | 1996 | 37f332f68db77bd9d7edd4969571ad671cf9dd3b |
| BLAKE2b-512 | 512 bittiä | 2013 | a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918 |
| BLAKE2s-256 | 256 bittiä | 2013 | 606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812 |
Jokainen yllä olevan taulukon tiiviste tuotetaan tämän sivun omilla moottoreilla — valitse kaikki algoritmit, napsauta Näyte ja vertaa. SHA-3-, Keccak-, RIPEMD-160- ja BLAKE2-rivit tulevat tämän sivuston salaustyökalujen käyttämästä itseisännöidystä crypto-shared.js-ytimestä.
UKK
Mihin kenttään latauksen kohdalla kannattaa luottaa? Vahvista-kenttään, jossa SHA-256 on valittuna — useimmat julkaisijat allekirjoittavat nykyään SHA-256- tai SHA-512-tiivisteen. Tunnista-kenttä vain nimeää ehdokkaat; se ei todista mitään tiedostostasi.
Miksi Keccak-256 on ylipäätään listalla? Koska Ethereum, Swarm ja muutama kirjanpitojärjestelmä ovat standardoineet ennen standardointia käytetyn täytön. Jos vahvistat Ethereumin keccak256-tiivisteen, käytä sitä riviä, ei SHA3-256:ta.
Voivatko kaksi eri syötettä jakaa tiivisteen? Teoriassa kyllä — äärettömän monta syötettä kuvautuu äärelliseen tiivistejoukkoon (laatikkoperiaate). Käytännössä tällaisen parin löytäminen ennen maailmankaikkeuden kuolemaa on se, mitä “törmäysvastus” tarkoittaa, ja kaikki yllä olevat algoritmit paitsi MD5 ja SHA-1 ovat yhä pystyssä.
Ovatko tiivisteet salausta? Eivät. Salaus on palautettavissa avaimella; tiiviste on yksisuuntainen sekoitin. Mitään tällä sivulla ei voi “purkaa” takaisin tekstiksi — ja se on ominaisuus, ei rajoitus.