Riadky odtlačkov majú tvar „ALGORITMUS hash“, takže ich možno kopírovať do poznámok k vydaniu alebo manifestov sťahovania.
Generátor hashov — každý algoritmus vysvetlený od začiatku
Jednou vetou: kryptografická hašovacia funkcia je jednosmerný mixér — vezme ľubovoľný počet bajtov a stlačí ich do odtlačku pevnej dĺžky tak, že ten istý vstup vždy dá ten istý odtlačok, pričom z odtlačku nemožno zrekonštruovať vstup. Táto stránka spúšťa jedenásť takýchto funkcií výlučne vo vnútri karty prehliadača.
Každý algoritmus nižšie je vysvetlený v rovnakých štyroch krokoch: čo to je prostými slovami, intuícia o tom, ako funguje bez akýchkoľvek vzorcov, či by sa dnes mal stále používať a chyby, ktoré s ním ľudia najčastejšie robia.
MD5
Čo to je. MD5 (1992) stlačí ľubovoľný vstup do odtlačku s 128 bitmi (32 hexadecimálnych znakov). Navrhnutý bol tak, aby bol rýchly na počítačoch 90. rokov, a je to tak — práve preto je stále všade: stránky na sťahovanie softvéru, cache na deduplikáciu súborov, staré databázové kľúče.
Ako to funguje intuitívne. Vstup sa rozreže na bloky po 64 bajtoch. Každý blok sa štyrikrát premieša do 128-bitového prebiehajúceho stavu (štyri mierne odlišné kolá miešania) a po poslednom bloku sa stav vypíše ako odtlačok. Miešanie je zložené zo sčítania, rotácií a vyhľadávania v tabuľkách — vtedy lacné, dnes tiež lacné.
Malo by sa použiť? Pri kontrolných súčtoch, kde sa nikto nesnaží podvádzať — zistenie poškodeného sťahovania, hľadanie duplicitných súborov — áno, stále spoľahlivo hlási poškodenie. Pri čomkoľvek protivníckom nie: od roku 2004 môžu výskumníci v priebehu sekúnd vytvoriť dva rôzne súbory s rovnakým MD5 a skutočné sfalšovanie certifikátov pomocou kolízií MD5 sa stalo v roku 2008. Je to skôr sériové číslo než zámok.
Časté chyby. Používanie MD5 na heslá (príliš rýchly — na to, čo tam patrí, slúži Generátor hashov hesiel); dôverovanie súboru, pretože „MD5 sa zhoduje“, keď útočník zverejnil aj MD5; a vloženie celého riadku MD5 (file) = hash namiesto samotného hashu — pole Overiť vyššie prijíma oboje.
SHA-1
Čo to je. SHA-1 (1995, NSA) vytvára odtlačok s 160 bitmi (40 hexadecimálnych znakov). Dvadsať rokov bol predvoleným hashom integrity pre Git, certifikáty TLS a podpisy PGP.
Ako to funguje intuitívne. Rovnaký rodinný recept ako MD5, ale s 160-bitovým stavom, 80 kolami miešania na blok po 64 bajtoch a širšou množinou operácií. Dodatočné kolá mali sťažiť spätné inžinierstvo miešača.
Malo by sa použiť? Nie, pri čomkoľvek protivníckom. Teoretické prelomenie sa stalo prakticky použiteľným v roku 2017, keď Google vytvoril dva rôzne PDF s identickými hodnotami SHA-1 (útok SHAttered, asi 6 500 rokov procesorového času). Git stále ukladá objekty pod SHA-1, ale berie ho iba ako identifikátor a odvtedy pridal detekciu kolízií. Pre novú prácu sa používa SHA-256 alebo SHA-3.
Časté chyby. Presvedčenie, že 160 bitov „je stále dosť dlhé“ — prelomenie sa týka vnútornej štruktúry, nie hrubej sily; a zamieňanie RIPEMD-160 s SHA-1, pretože obe majú 40 hexadecimálnych znakov (pole identifikátora ich rozlišuje).
SHA-2: SHA-256, SHA-384 a SHA-512
Čo to je. Rodina SHA-2 (2001, NSA) je pracovným koňom moderného overovania integrity. SHA-256 dáva 256 bitov (64 hexadecimálnych znakov), SHA-512 dáva 512 bitov a SHA-384 je SHA-512 s výsledkom skráteným na 384 bitov — užitočné, keď protokol vyžaduje kratšiu značku.
Ako to funguje intuitívne. Bloky po 64 bajtoch (alebo 128 bajtov pri 512-bitových variantoch) sa cez 64 (alebo 80) kôl krokov sčítania, rotácie a miešania zložia do stavu s 8 slovami. Na rozdiel od MD5 plán najprv roztiahne každý blok do rozšíreného buffera, a práve to porazilo typ útoku, ktorý lámal MD5 a SHA-1. Zaujímavosť: na 64-bitových procesoroch je SHA-512 rýchlejší než SHA-256, pretože spracováva dvojnásobok dát na kolo 64-bitovou aritmetikou.
Malo by sa použiť? Áno — SHA-256 je dnes predvolená odpoveď pre kontrolné súčty súborov, podpisovanie kódu a odtlačky certifikátov, bez známeho praktického prelomenia po dvoch desaťročiach analýzy. SHA-384/512 sa vyberá vtedy, keď sa chce väčšia rezerva alebo keď ich platforma spúšťa rýchlejšie.
Časté chyby. Používanie samotného SHA-256 na heslá — je to rýchly hash a rýchlosť je tam nepriateľ (vhodné sú bcrypt/scrypt/Argon2id); a zamieňanie dĺžky odtlačku so silou pri nastaveniach odolnosti voči kolíziám — dĺžka iba nastavuje strop.
SHA-3 (SHA3-256 / SHA3-512) a Keccak-256
Čo to je. SHA-3 (2015, štandardizovaný z návrhu Keccak Bertonim, Daemenom, Peetersom a Van Asscheom) je tretí hashový štandard NIST. Nemá nič spoločné s vnútornými časťami SHA-2 — bol vybraný práve preto, aby bol nezávislou záložou, keby SHA-2 niekedy padol.
Ako to funguje intuitívne. Namiesto pretláčania blokov cez malý stav Keccak opakovane „nasiakne a vyždíma“: vstup sa po bitoch vstrebáva do špongie 5×5×64 bitov, celá špongia sa premieša pevnou permutáciou (24 kôl bitových operácií nad celým stavom) a bity odtlačku sa potom vyždímajú. Obraz špongie je celá myšlienka: kapacitné bity sa nikdy nevypisujú a práve oni robia funkciu jednosmernou.
Keccak-256 verzus SHA3-256. Líšia sa presne jedným bajtom vycpávania. Pôvodný návrh tímu Keccak vyplnil posledný blok bajtom 0x01; NIST zmenil štandardné vycpávanie na 0x06 (oddelenie domén, ktoré používa Keccak z éry SHA-2). Ethereum prevzal pôvodné vycpávanie, takže jeho „keccak256“ sa pre každý vstup líši od štandardného SHA3-256. Táto stránka ponúka oba, zaškrtávajú sa oddelene.
Malo by sa použiť? Áno — buď ako primárna voľba, keď politika chce algoritmus mimo SHA-2, alebo všade tam, kde ekosystém už tento algoritmus používa. Časté chyby: predpoklad, že SHA3-256 a Keccak-256 sú zameniteľné (nie sú — dva riadky, ktoré táto stránka vytvorí pre ten istý vstup, sa porovnajú); a predpoklad, že „SHA-3“ nahrádza SHA-2 — obe sú bezpečné, SHA-2 zostáva širšie nasadený.
RIPEMD-160
Čo to je. RIPEMD-160 (1996, konzorcium RIPE európskych akademikov, posilnený Dobbertinom, Bosselaersom a Preneelom) vydáva 160 bitov. Je to čisto európsky návrh, zámerne nezávislý od rodiny SHA navrhnutej NSA.
Ako to funguje intuitívne. Každý blok po 64 bajtoch sa spracuje dvoma paralelnými líniami po 80 kolách s rôznymi konštantami a veľkosťami rotácií; na konci sa obe línie a starý stav skombinujú. Štruktúra dvoch stôp bola spôsob, akým návrhári odolávali diferenciálnym útokom, ktoré lámali iné hashe z 90. rokov.
Malo by sa použiť? V praxi prežíva hlavne v iných systémoch: adresy Bitcoin hashujú verejné kľúče pomocou RIPEMD-160(SHA-256(pk)), staršie kľúče OpenPGP ho ponúkajú ako voľbu hashu a je tradičným hashom pre časti BitTorrent v1 spolu s SHA-1. Nemá praktický útok na kolízie, ale veľkosť 160 bitov mu dáva najmenšiu bezpečnostnú rezervu na tejto stránke. Pre nové samostatné použitie sa uprednostňuje SHA-256 alebo SHA-3.
Časté chyby. Presvedčenie, že dve paralelné línie ho robia „dvojnásobne silným“ — veľkosť výstupu je to, čo obmedzuje odolnosť voči kolíziám; a zamieňanie s SHA-1 (rovnaká dĺžka 40 hexadecimálnych znakov; pole identifikátora vyššie uvádza obe možnosti vedľa seba).
BLAKE2b-512 a BLAKE2s-256
Čo to je. BLAKE2 (2013, Aumasson, Neves, Wilcox-O’Hearn a Winnerlein) je hash navrhnutý pre rýchlosť softvéru: BLAKE2b cieľuje na 64-bitové platformy s výstupom až 512 bitov, BLAKE2s cieľuje na 32-bitové platformy s výstupom až 256 bitov.
Ako to funguje intuitívne. Vychádza zo finalistu súťaže SHA-3 BLAKE, ktorého jadrom je kľúčová permutácia prevzatá z prúdovej šifry ChaCha: matica 4×4 slov sa premieša striedavým zmiešavaním stĺpcov a diagonál — ako keď sa mriežka najprv premieša zhora nadol a potom pozdĺž diagonál — a to 12 (BLAKE2b) alebo 10 (BLAKE2s) kôl na každý blok. Pretože tieto kroky sa pekne zobrazujú na inštrukcie procesora, BLAKE2 je často rýchlejší než MD5 a ponúka bezpečnosť porovnateľnú s SHA-3.
Malo by sa použiť? Áno — ide o plne moderný, neprelomený návrh, obľúbený v softvéri citlivom na výkon (integrita balíkov v niektorých ekosystémoch, úložiská adresované obsahom, deduplikácia zálohovania) a ako rýchly MAC. Na tejto stránke dáva BLAKE2b-512 najdlhšie odtlačky a BLAKE2s-256 kompaktnú moderná voľbu.
Časté chyby. Myslenie, že „rýchlejšie musí znamenať slabšie“ — BLAKE2 je rýchlejší svojím návrhom, nie skracovaním rohov; a neuvedomenie si, že BLAKE2 prijíma aj kľúč (čím sa stáva MAC) alebo personalizačný reťazec — táto stránka ho vždy používa v čistom režime bez kľúča.
Čítanie polí Overiť a Identifikovať
Overiť. Pole overenia normalizuje všetko, čo sa vloží — veľké alebo malé písmená, dvojbodky po dvoch číslicach, prefix sha256=, obal v štýle BSD SHA256 (file) = hash, riadok GNU md5sum s názvom súboru za hashom, zatúlané \r\n — potom prepočíta každý zaškrtnutý algoritmus nad aktuálnym vstupom (text alebo zvolený súbor) a uvedie každý algoritmus, ktorý sa zhoduje. Zelená zhoda znamená „tieto bajty sú presne to, čo vydavateľ hashoval“; červená znamená, že žiadny zaškrtnutý algoritmus to nevytvoril — možno treba zaškrtnúť viac algoritmov alebo skontrolovať, či vložený text nebol orezaný.
Identifikovať. Pole identifikátora nič nehashuje; číta tvar reťazca. Dĺžka zužuje kandidátov: 32 hexadecimálnych znakov môže byť MD5, 40 môže byť SHA-1 alebo RIPEMD-160, 64 môže byť SHA-256 / SHA3-256 / Keccak-256 / BLAKE2s-256, 96 SHA-384, 128 SHA-512 / SHA3-512 / BLAKE2b-512. Predpony odhaľujú heslové hashe ($2a$/$2b$/$2y$ bcrypt, $argon2id$, $scrypt$, $6$ sha512crypt, $1$ MD5-crypt) — to je iný druh (súvisiace: Generátor hashov hesiel) a táto stránka ich zámerne nevypočítava. Reťazec s +, / a =, ktorého dĺžka je násobkom 4, je pravdepodobnejšie dáta zakódované v Base64 než hexadecimálny odtlačok; nástroj ho dekóduje a uvedie dĺžku v bajtoch, ktorá by zodpovedala.
Čo dokáže a čo nedokáže identifikácia. Dĺžka a znaková sada sú odtlačky formátu, nie dôkaz algoritmu: dva reťazce so 64 hexadecimálnymi znakmi môžu pochádzať z SHA-256 alebo zo skráteného SHA-512. Identifikátor zoraďuje možnosti; pole Overiť je to, ktoré dokáže, aké algoritmus sa skutočne zhodujú s bajtmi vstupu.
Všetkých jedenásť na jednom mieste
| Algoritmus |
Štiepenie |
Vymyslené |
Odtlačok „The quick brown fox jumps over the lazy dog“ |
| MD5 | 128 bitov | 1992 | 9e107d9d372bb6826bd81d3542a419d6 |
| SHA-1 | 160 bitov | 1995 | 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 |
| SHA-256 | 256 bitov | 2001 | d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592 |
| SHA-384 | 384 bitov | 2001 | ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1 |
| SHA-512 | 512 bitov | 2001 | 07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6 |
| SHA3-256 | 256 bitov | 2015 | 69070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04 |
| SHA3-512 | 512 bitov | 2015 | 01dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450 |
| Keccak-256 | 256 bitov | pred rokom 2015 | 4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15 |
| RIPEMD-160 | 160 bitov | 1996 | 37f332f68db77bd9d7edd4969571ad671cf9dd3b |
| BLAKE2b-512 | 512 bitov | 2013 | a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918 |
| BLAKE2s-256 | 256 bitov | 2013 | 606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812 |
Každý odtlačok v tabuľke vyššie vytvárajú motory priamo na tejto stránke — zaškrtnú sa všetky algoritmy, klikne sa na Ukážka a porovnajú sa. Riadky SHA-3, Keccak, RIPEMD-160 a BLAKE2 pochádzajú z vlastného jadra crypto-shared.js, ktoré používajú všetky kryptografické nástroje tejto stránky.
FAQ
Ktorému poľu dôverovať pri sťahovaní? Poľu Overiť so zaškrtnutým SHA-256 — väčšina vydavateľov dnes podpisuje SHA-256 alebo SHA-512. Pole Identifikovať iba pomenúva kandidátov; nikdy nič nedokazuje o súbore.
Prečo je Keccak-256 v zozname vôbec? Pretože Ethereum, Swarm a niektoré účtovné systémy štandardizovali predštandardné vycpávanie. Ak sa overuje keccak256 z Etherea, musí sa použiť tento riadok, nie SHA3-256.
Môžu dva rôzne vstupy zdieľať odtlačok? Teoreticky áno — nekonečne veľa vstupov sa zobrazuje do konečnej množiny odtlačkov (princíp holubníka). Prakticky je nájdenie takého páru pred tepelnou smrťou vesmíru tým, čo znamená „odolnosť voči kolíziám“, a každý vyššie uvedený algoritmus okrem MD5 a SHA-1 stále obstojí.
Sú hashe šifrovanie? Nie. Šifrovanie je vratné pomocou kľúča; hash je jednosmerný mixér. Nič na tejto stránke sa nedá „dešifrovať“ späť na text — a to je vlastnosť, nie obmedzenie.