Lad os nedbryde hashingdata og dens betydning i sikkerhedskryptering:
Hvad er hashing -data?
Hashing er en proces, der tager et input af enhver størrelse (tekst, fil, billede, adgangskode osv.) Og producerer en output i fast størrelse kaldet en "hash" eller en "hashværdi." Tænk på det som et fingeraftryk:Uanset hvor stor personen er, optager deres fingeraftryk altid det samme område.
Her er en mere teknisk sammenbrud:
* algoritme: Hashing er afhængig af en specifik matematisk algoritme (en "hash -funktion") for at udføre transformationen. Populære hashfunktioner inkluderer SHA-256, SHA-3, MD5 (skønt MD5 nu betragtes som ødelagt for mange sikkerhedsapplikationer) og BCRYPT.
* deterministisk: For * samme * input vil hash -funktionen * altid * producere * samme * output. Dette er en kritisk egenskab.
* envejsfunktion (ideelt): Det skal være beregningsmæssigt umuligt (praktisk talt umuligt) at vende processen - det vil sige at tage hashværdien og bestemme det originale input. Dette er det vigtigste sikkerhedsaspekt.
* Kollisionsbestandighed (ideelt): Det skal være meget vanskeligt at finde to forskellige input, der producerer den samme hash -output (en "kollision"). Mens kollisioner teoretisk er mulige, gør en god hash -funktion dem ekstremt sjældne.
analogi
Forestil dig en Wood Chipper. Du kan fodre enhver mængde træ i flishuggeren, men det vil altid producere den samme * type * output - træchips. Det er vanskeligt (hvis ikke umuligt) at tage disse træflis og genopbygge det originale stykke træ. Og ideelt set, hvis du lægger et helt andet stykke træ, ville du få en markant anderledes bunke med træchips.
Hvorfor er hashing vigtig i sikkerhedskryptering?
Hashing spiller en afgørende rolle i forskellige sikkerhedsaspekter, *selvom det ikke er kryptering i sig selv *. Sådan bidrager det:
1. Opbevaring af adgangskode:
* Problemet: Opbevaring af adgangskoder i almindelig tekst i en database er en enorm sikkerhedsrisiko. Hvis databasen er kompromitteret, har angribere alles adgangskoder.
* Løsningen (hashing): I stedet for at gemme adgangskoder direkte, gemmer websteder * hash * på adgangskoden.
* hvordan det fungerer:
* Når en bruger opretter en konto, hashes webstedet deres adgangskode ved hjælp af en stærk hash -funktion (som BCrypt eller Argon2) og gemmer hash i databasen.
* Når brugeren logger ind, hasher webstedet den adgangskode, de indtaster * igen *, og sammenligner den resulterende hash med den gemte hash.
* Hvis hasherne matcher, er adgangskoden korrekt (uden webstedet har nogensinde brug for at kende den faktiske adgangskode i almindelig tekst).
* salt: Et "salt" (en tilfældig streng) føjes ofte til adgangskoden før hashing. Dette gør det endnu sværere for angribere at bruge præ-komponerede tabeller med fælles adgangskode-hash ("Rainbow Tables") til at revne adgangskoder. Saltet opbevares sammen med hash.
2. Verifikation af dataintegritet:
* Problemet: Du vil sikre dig, at en fil eller dataoverførsel ikke er blevet manipuleret under overførsel eller opbevaring.
* Løsningen (hashing): Beregn hash af de originale data, og gem de separat.
* hvordan det fungerer:
* Når du downloader en fil, kan du beregne hash af den downloadede fil.
* Sammenlign den beregnede hash med den originale hash leveret af kilden (f.eks. På webstedet).
* Hvis hasherne matcher, kan du være med rimelighed sikker på, at filen er intakt og ikke er blevet ændret. Selv en lille ændring af filen vil resultere i en markant anderledes hashværdi.
3. digitale underskrifter:
* Problemet: Du skal bevise, at et dokument eller en meddelelse stammer fra dig og ikke er blevet ændret.
* Løsningen (hashing + kryptering): Hashing bruges * i forbindelse med * kryptering for at skabe digitale underskrifter.
* hvordan det fungerer:
* Afsenderen beregner dokumentets hash.
*Afsenderen krypterer hash ved hjælp af deres *private nøgle *. Denne krypterede hash er den digitale signatur.
* Modtageren modtager dokumentet og den digitale signatur.
* Modtageren dekrypterer den digitale signatur ved hjælp af afsenderens * offentlige nøgle * for at få den originale hash.
* Modtageren beregner uafhængigt hash af det modtagne dokument.
* Hvis de to hash matcher, kan modtageren være sikker på, at dokumentet er autentisk og ikke er blevet manipuleret med. Kun indehaveren af den private nøgle kunne have skabt underskriften, og enhver ændring af dokumentet ville resultere i en anden hash.
4. Meddelelsesgodkendelseskoder (MAC'er):
* Problemet: Du skal verificere både integriteten og ægtheden af en meddelelse. Som en digital signatur, men bruger typisk en * delt hemmelig nøgle * snarere end offentlige/private nøglepar.
* Løsningen (hashing + hemmelig nøgle): Hashing er kombineret med en hemmelig nøgle til at oprette en Mac.
* hvordan det fungerer:
* Afsenderen beregner MAC for meddelelsen ved hjælp af en hash -funktion og en delt hemmelig nøgle.
* Afsenderen sender beskeden og MAC til modtageren.
* Modtageren beregner MAC for den modtagne meddelelse ved hjælp af den samme hash -funktion og den samme delte hemmelige nøgle.
* Hvis den beregnede MAC matcher den modtagne Mac, ved modtageren, at meddelelsen ikke er blevet manipuleret med, og at den stammer fra en, der kender den delte hemmelige nøgle. Dette beskytter mod både ændring og forfalskning.
Vigtige sondringer:Hashing vs. kryptering
* hashing er envejs: Designet til at være irreversibel. Du kan ikke få de originale data tilbage fra hash (ideelt).
* kryptering er tovej: Du krypterer data ved hjælp af en nøgle, og du kan dekryptere dem tilbage til de originale data ved hjælp af den tilsvarende nøgle.
* hash for integritet: Primært brugt til at verificere dataintegritet og ægthed.
* kryptering til fortrolighed: Primært brugt til at beskytte datafortrolighed (forhindre uautoriseret adgang).
Kortfattet
Hashing er en grundlæggende byggesten i computersikkerhed. Selvom det ikke er kryptering i sig selv, bruges den i vid udstrækning til opbevaring af adgangskode, verifikation af dataintegritet, digitale underskrifter og meddelelsesgodkendelse. Dens envejs natur og følsomhed over for ændringer i input gør det til et vigtigt værktøj til at beskytte data og verificere dets ægthed. Forståelse af hashing er afgørende for alle, der er involveret i softwareudvikling, systemadministration eller cybersikkerhed.