Moderne kryptografi tilbyr et bredt spekter av verktøy og teknikker for å beskytte data i transitt og i ro. Kryptografiske hasjfunksjoner tilhører den typen kryptografiske protokoll som er basert på blokkeringskiphers. De spiller en betydelig rolle i å sikre moderne kommunikasjonssystemer og jobbe som en barriere for inntrengere ved å sikre data-autentisitet. Sikkert lagring og henting av passord og anonyme kryptografiske transaksjoner er noen av de mange hasjfunksjonsapplikasjonene.
Artikkelen gir en bred oversikt og bruk av kryptografiske hasjfunksjoner. Vi forklarer hasjegenskaper, deres bruk i forskjellige domener, mulige angrep og svakheter, og viktigst av alt, måter å styrke hasj og forbedre hasjfunksjoner.
Hva er en hasjfunksjon?
Det er en enveisfunksjon eller en unik identifikator som, gitt en inngang med variabel lengde, sender ut en fast lengde hash-fordøyelse. Imidlertid avhenger lengden på utgangen av hash -algoritmen. Generelt sett har de mest populære kjente algoritmene en hasjlengde på 160-512 biter.
Men for å sende ut dataene til en fast lengde, tar Hash-funksjoner først inn en forhåndsinnstilt datablokk kjent som datablokker. Størrelsen på datablokken varierer fra en algoritme til en annen, men den er alltid den samme for en algoritme. For eksempel aksepterer SHA-1-hasjfunksjonen en blokkstørrelse på 512 biter, og hvis inngangen er av samme størrelse, kjører den bare en gang, det er 80 runder. Hvis inngangsstørrelsen er 1024, vil algoritmen kjøres to ganger.
Realistisk sett er inngangsstørrelsen sjelden et multiplum av 512-bit. I slike tilfeller bruker vi en teknikk kjent som polstring som deler meldingen/dataene i datablokker i samme lengde. Slik at funksjonen utføres på grunnlag av et totalt antall datablokker og behandler hver datablokk om gangen. Det tar utgangen fra den første blokken som en inngang med den andre blokken, og så videre. Derfor er den endelige hasj den samlede verdien av alle utgangsverdier.
Hashing vs. Kryptering
Hashing og kryptering er unike og separate prosesser med sitt eget sett med funksjoner, egenskaper og prosedyrer.
Kryptering er en toveis/reversibel prosess da den inneholder bruken av en nøkkel som enten er delt eller er matematisk relatert, men ikke-identiske offentlige og private nøkler. I motsetning til kryptering, er hashes enkle å beregne og vanskelige å reversere til den opprinnelige klarteksten.
Hashing gir integriteten til dataene. Kryptering, derimot, gjør data konfidensialitet.
Det gode med hasj
Selv om hashing ikke er kryptering, er det en form for kryptografi som gir:
Passordbeskyttelse
Hver gang en bruker skriver inn et passord for autentisering, sammenlignes passordet Hash -hashen mot filen som inneholder systemet hashes på datamaskinen. Systemet gir bare tilgang etter vellykket autentisering. For eksempel lagrer Windows Password Hashes in the Security Account Manager (SAM), mens Linux lagrer passordhashes i /etc /skyggefilen.
Filbekreftelse
Tilsvarende deler noen nettsteder en hasjverdi for å bekrefte integriteten til nedlastet programvare som sikrer at den ikke er korrupt eller at noen ikke tuklet med filen under nedlasting.
For eksempel nettstedet for nedlasting av Linux Mint 20.2 “Uma” -Cinnamon (64-bit) ISO-bilde deler sin SHA256-hasj i SHA256SUM.txt -fil. For å bekrefte integriteten til bildet, CD inn i den nedlastede bildekatalogen og genererer SHA256 -summen som følger:
ubuntu@ubuntu: ~ $ sha256sum -b *.ISODe SHA256SUM.tekst Filen inneholder fire hasj avhengig av de forskjellige desktop -utgivelsene. Sammenlign den genererte hasjverdien med Cinnamon Desktop ISO Image Hash i filen for å bekrefte dens integritet hvis de stemmer overens; Det betyr at ISO -bildet er klart til bruk.
Før SHA256 ble MD5-hashing-algoritmen brukt for å bekrefte integriteten til en nedlastet fil, men det er ikke lenger en ekte kryptografisk hash-algoritme da den ikke er kollisjonsresistent (mer om dette senere).
Digitale signaturer
En digital signatur autentiserer avsenderen ved å legge til den opprinnelige meldingen med den krypterte meldingen Digest. Avsenderen krypterer med den private nøkkelen for å sikre ikke -repudiation mens hasj beskytter mot dataprogrammer og gir integritet i.e., Digital signatur = avsenders private nøkkel (hash (melding)).
Mottakeren dekrypterer meldingen Digest med avsenderens offentlige nøkkel og tar hasj i den opprinnelige meldingen for å sammenligne med den dekrypterte hasj.
Virussignaturer
Antivirusløsninger bruker forskjellige tilnærminger for å identifisere skadelig programvare; En av dem er hasjmatchende. De tar en del eller blokkering av en kjørbar for å lage en hasj og sammenligne den mot hasjene av skadelig programvare som er lagret i databasene sine.
Egenskaper til hasj
Settet med egenskaper som gjør at hasjfunksjoner spiller en kritisk rolle i offentlig nøkkelkryptografi er som følger:
Måter av hasj
De mest kjente hasjfunksjonene er meldings-fordøyelsesalgoritme (MDA), Secure Hash-algoritmen (SHA), NTLM, etc.
Det dårlige av hasj
Som diskutert tidligere, kan hasjene i stor blokkstørrelse bremse angripere, og omvendt prosjektering en kryptografisk hasj kan være vanskelig, men det er ikke umulig. Alle angripere krever er en tid som de enkelt kan administrere ved å bruke rask maskinvare, og ved å lage kollisjoner eller sidekanalsangrep. Seksjonen diskuterer noen av måtene for hasjutnyttelse.
Kollisjon
Kollisjon i hash oppstår når to innganger returnerer samme utgangsverdi. Pålitelige hashfunksjoner er designet for å gi kollisjonsmotstand. Men det er uunngåelig på grunn av en duehullseffekt. I henhold til duehullseffekten er det et bestemt antall utgangsverdier mot inngangen til alle størrelser. Det betyr at siden det alltid vil være flere innganger enn output, er kollisjonen en uunngåelig hendelse.
Regnbuebord
Som nevnt tidligere lagrer ikke operativsystemer passord i klartekst. Derfor er regnbuetabeller forhåndsberettigede databaser eller oppslagstabeller som kartlegger hasj til klartekstpassordet. CrackStation -nettstedet gir for eksempel en massiv database for sprekker hashes til passord uten salting. Regnbuebordene handler imidlertid om å knekke hashes med en stor mengde lagringsplass.
Fordelen med regnbuebord mot brute-tvang er et enkelt søk og sammenlign operasjon i motsetning til de automatiserte prøve-og-feilforsøkene med et problem med hasjberegning. Dessuten krever det ikke en eksakt passordkamp som betyr at hvis hasjen stemmer overens mot noe passord/setning, tillater systemet autentisering.
John the Ripper
John er et kraftig og allsidig verktøy som hjelper til med å knekke hasjene. Det ligner på et automatisert ordbokangrep som bruker en ordliste eller en ordbok for å beregne hasj og sammenligne. Derfor tillater den brute kraft på en rekke hasjmodus. Et eksempel på ordlisten er en rockyou.TXT -fil som inneholder passord fra et brudd på Rockyou.com nettsted. Ordlisten er tilgjengelig fra GitHub -sekrettere under /Passord/lekkede databaser.
Den enkleste måten å knekke hasj er å bruke John Kommando med formatalternativet for å spesifisere hashtypen, banen til ordlisten og filen med hasjverdien. I Kali Linux, veien til Rouckyou.txt -filen er /usr/share/wordlists.
ubuntu@ubuntu: ~ $ John --format = --wordList =/usr/share/wordlists/rockyou.txt hash.tekstPassere hasj
Pass-the-Hash er et legitimasjonstyveri som har potensial for opptrapping av horisontalt privilegium. Selv om angrepet kan oppstå på Linux/UNIX -systemer, er det mer utbredt i Windows. Windows autentiserer en legitim bruker ved å matche hasj for det angitte passordet, som er statisk og som bare endres når passordet endres. Dessuten er passord tilgjengelig på forskjellige steder i Windows, for eksempel Sam og Local Security Authority Subsystem (LSASS) prosessminne, etc.
Derfor manipulerer angriperne utfordrings- og responsmodellen til NTLM -sikkerhetsprotokollen som lar dem autentisere seg som gyldige brukere. Angriperen dumper hasjene i et målsystem og bruker verktøyet "Pass-the-Hash" for å etterligne en autentisk bruker. Derfor trenger angriperen ikke å legge inn eller bryte på passordet eller omvendt konstruerer hasjverdien. Finn flere detaljer om angrepet herfra.
Bursdagsangrep
Angrepet tilhører klassen Brute-Force Attack og er basert på et bursdagsparadoks i sannsynlighetsteori. Den bruker bursdagsproblemet for å sende to forskjellige meldinger med samme kryptografiske hasjprotokoll for å forårsake kollisjon. Angrepet tar generelt sikte på å manipulere kommunikasjon. Flere detaljer om bursdagsangrepet er tilgjengelig her.
Power Up Hash
Det er forskjellige måter å beskytte mot angrep på hasj og begrense dem mot kryptografiske hasjfunksjoner.
Saltede hasj
Salting er prosessen med å tilsette tilfeldig genererte data (salt) til inngangen til en hasjfunksjon. Prosessen hjelper til med å beskytte mot regnbuebordangrep. Brukere kan inkludere saltverdien i starten eller slutten av passordet før de oppretter en hasj som genererer forskjellige utganger selv om passordene er like. Dessuten kan en bruker holde saltet offentlig.
Tasted hash
HMAC er et eksempel på tastede hasj som bruker kryptografiske nøkler og hasjfunksjoner for å forbedre begrensningene i algoritmen for meldingsgodkjenningskode (MAC). Det hjelper med å oppnå konfidensialitet og integritet av informasjon samtidig.
Adaptiv hash -funksjon
Adaptive hash -funksjoner er designet for å gjenta deres indre arbeid, da navnet antyder at brukeren kan justere antall iterasjoner. Key-stretching er en teknikk som tar en svak nøkkel som en inngang, behandler den og itererer prosessen for å sende ut en kraftig storstørrelse nøkkel. Prosessen kan øke nøkkelstørrelsen opp til 128 biter, noe som er vanskelig for brute-force-angrepet. Pbkdf2 og bcrypt er eksempler på adaptive hasjfunksjoner.
Konklusjon
Artikkelen gir en omfattende oversikt over kryptografiske hasjprotokoller. Den demonstrerer hvordan du kan bekrefte filintegritet og gir en oversikt over hvordan det er mulig å knekke passordhashes via John the Ripper -verktøyet. Vi diskuterer også en rekke angrep og tiltak for å generere ukrakkbare hasj via salting, tastede hasj og adaptive hasjfunksjoner.