Šifriranje, hashing, soljenje – u čemu je razlika?

Šifriranje, hashiranje, soljenje - u čemu je razlika


Šifriranje, raspršivanje i soljenje sve su povezane tehnike, ali svaki od tih procesa ima svojstva koja ih daju na različite načine.

Ukratko, enkripcija uključuje kodiranje podataka tako da im mogu pristupiti samo oni koji imaju ključ. To štiti od neovlaštenih strana.

Kriptografsko hashiranje uključuje izračune koji se ne mogu poništiti. Ove funkcije imaju neka posebna svojstva koja ih čine korisnim za digitalni potpis i druge oblike autentifikacije.

Soljenje uključuje dodavanje slučajnih podataka prije nego što se provede kroz kriptografsku hash funkciju. Najčešće se koristi za čuvanje lozinki tijekom pohrane, ali može se koristiti i s drugim vrstama podataka.

Što je enkripcija?

Jednostavno rečeno, enkripcija je postupak korištenja koda za zaustavljanje pristupa drugim informacijama drugim stranama. Kada su podaci šifrirani, pristupiti im mogu samo oni koji imaju ključ. Sve dok se koristi dovoljno kompliciran sustav i ako se ispravno koristi, napadači su onemogućeni da vide podatke.

Podaci se šifriraju algoritamima enkripcije koji su također poznati kao šifri. Jedna od najvažnijih razlika između šifriranja i hashiranja (o kojoj ćemo kasnije doći) je da je šifriranje dizajnirano tako da ide u oba smjera. To znači da jednom kada se nešto šifrira s ključem, može se i dešifrirati.

To šifriranje čini korisnim u nizu situacija, poput sigurnog pohranjivanja ili prijenosa informacija. Nakon što se podaci kriptiraju pravilno, smatra se sigurnim i mogu im pristupiti samo oni koji imaju ključ. Najčešća vrsta je šifriranje ključa simetričnog ključa, koje uključuje upotrebu istog ključa i u postupku šifriranja i dešifriranja..

Šifriranje javnih ključeva malo je složenije jer se za šifriranje podataka koristi jedan javno dostupan ključ, dok se za dešifriranje koristi njegov privatan privatni ključ. Ova značajka omogućuje osobama koje se nikada nisu upoznale međusobno na siguran način. Šifriranje javnim ključem također je važan dio digitalnog potpisa, koji se koriste za provjeru autentičnosti i integriteta podataka i poruka.

Vidi također: Objašnjene su uobičajene vrste šifriranja

Uobičajeni algoritmi šifriranja

  • Cezarov šifra - Ovo je jednostavan kod koji uključuje pomicanje svakog slova na određenom broju mjesta. Ako Cezarova šifra ima pomak od tri, svaki "a" će postati "d", svaki "b" će postati "e", svaki "c" će postati "f" i tako dalje. Ime je dobilo po Juliju Cezaru koji je prva osoba zabilježena koja je koristila shemu.
  • AES - Advanced Encryption Standard složen je algoritam simetričnog ključa koji osigurava značajan dio naših modernih komunikacija. To uključuje brojne sofisticirane korake i često se koristi za šifriranje podataka u TLS-u, aplikacijama za razmjenu poruka, u mirovanju i u mnogim drugim situacijama. Ovdje ćemo dublje zaroniti u AES enkripciju.
  • 3DES - Triple DES temelji se na algoritam DES. Kad je rastuća snaga računala učinila DES nesigurnim, 3DES je razvijen kao pojačani algoritam. U 3DES-u se podaci izvode putem algoritma DES tri puta umjesto samo jedanput, što otežava pucanje. 3DES se može koristiti za mnoge iste stvari kao i AES, ali samo se određene implementacije smatraju sigurnim.
  • RSA - Šifra Rivest-Shamir-Adleman bio je prvi oblik široko korištene kriptografije s javnim ključem. Entitetima omogućuje sigurnu komunikaciju, čak i ako se nisu sreli ili nisu imali priliku razmijeniti ključeve. Može se koristiti u velikom broju različitih sigurnosnih protokola, kao što su PGP i TLS. Ovdje imamo detaljni vodič za RSA enkripciju.
  • ECDSA - Algoritam digitalnog potpisa Elliptic Curve je varijanta DSA koja koristi kriptografiju eliptične krivulje. Kao algoritam javnog ključa, može se primijeniti u sličnim situacijama na RSA, iako se zbog nekih sigurnosnih problema rjeđe provodi..

Šifriranje na djelu

Da bismo vam dali do znanja kako šifriranje funkcionira u praksi, poslužit ćemo se Cezarovim šifrom kao primjer. Ako bismo željeli šifrirati poruku od "Idemo jesti"Sa smjenom od tri,L"Bi postao"O","e"Bi postao"h" i tako dalje. To nam daje šifriranu poruku:

Ohhd hdw

Da bi dešifrirao poruku, primatelj bi morao znati da algoritam šifriranja uključuje pomak od tri, a zatim svako pismo prebaciti na tri mjesta. Da smo željeli, kôd bismo mogli mijenjati mijenjajući svako slovo na drugi broj. Čak bismo mogli upotrijebiti daleko sofisticiraniji algoritam.

Jedan primjer je AES. Ako za šifriranje "koristimo 128-bitni AES-ov online kalkulator,"Idemo jesti"S tipkom"1234", To nam daje:

FeiUVFnIpb9d0cbXP / Ybrw ==

Ovaj se šifrirani tekst može dešifrirati samo ključem "1234”. Ako bismo koristili složeniji ključ i zadržali ga privatnim, mogli bismo razmotriti podatke sigurnim od napadača.

Što je hashing?

Kriptografske hash funkcije posebna su vrsta jednosmjernog izračuna. Oni uzimaju niz podataka bilo koje veličine i uvijek daju izlaz unaprijed određene dužine. Taj se izlaz naziva paprikaš, hash vrijednost ili sažetak poruka. Budući da ove funkcije ne koriste tipke, rezultat je za određeni unos uvijek isti.

Nije važno je li vaš unos cjelokupan Rat i mir ili jednostavno dva slova, rezultat hash funkcije uvijek će biti iste dužine. Hash funkcije imaju nekoliko različitih svojstava koja ih čine korisnim:

  • One su jednosmjerne funkcije - To znači da ne postoji praktičan način da se utvrdi koji je izvorni unos bio iz dane vrijednosti hash-a.
  • Malo je vjerojatno da dva ulaza imaju istu hash vrijednost - Iako su moguća dva različita ulaza da daju istu vrijednost hash-a, šanse da se to dogodi su tako male da se ne trebamo zbog toga. U praktične svrhe, hash vrijednosti mogu se smatrati jedinstvenim.
  • Isti ulaz uvijek daje isti rezultat - Svaki put kada iste podatke stavite u zadanu hash funkciju, uvijek će dobiti isti izlaz.
  • Čak i najmanja promjena daje potpuno drugačiji rezultat - Ako je izmijenjen čak i jedan znak, vrijednost hash-a bit će znatno drugačija.

Za što se koriste hashe?

Hash funkcije mogu imati zanimljiva svojstva, ali što zapravo možemo učiniti s njima? Mogućnost ispljunuti jedinstveni izlaz fiksne veličine za unos bilo koje duljine može izgledati kao ništa više od nejasnog trika stranke, ali hash funkcije zapravo imaju brojne koristi.

Oni su osnovna sastavnica digitalni potpisi, koji su važan aspekt provjere autentičnosti i integriteta na internetu. Hash kodovi za provjeru autentičnosti (HMAC) također koriste hash funkcije za postizanje sličnih rezultata.

Kriptografske hash funkcije mogu se koristiti i kao normalne hash funkcije. U tim scenarijima mogu djelovati kao kontrolni zbrojevi za provjeru integriteta podataka, kao algoritmi otiska prsta koji uklanjaju duplikat podataka ili stvaraju hash tablice za indeksiranje podataka.

Uobičajene kriptografske hash funkcije

  • MD5 -Ovo je hash funkcija koju je 1991. prvi objavio Ron Rivest. Sada se smatra nesigurnom i ne bi se trebala koristiti u kriptografske svrhe. Unatoč tome, još uvijek se može koristiti za provjeru integriteta podataka.
  • SHA-1 - Sigurni algoritam 1 Hash koristi se od 1995. godine, ali se ne smatra sigurnim od 2005. godine, kada je izvršen niz uspješnih sudara. Sada se preporuča uvesti umjesto SHA-2 ili SHA-3.
  • SHA-2 - Ovo je obitelj hash funkcija koja djeluju kao nasljednici SHA-1. Ove funkcije sadrže brojna poboljšanja, koja ih čine sigurnima u širokoj uporabi. Unatoč tome, SHA-256 i SHA-512 osjetljivi su na napade produljenja dužine, pa postoje određene situacije u kojima je najbolje primijeniti SHA-3.
  • SHA-3 - SHA-3 najnoviji je član algoritma sigurnog hash-a, ali izgrađen je sasvim drugačije od svojih prethodnika. U ovoj fazi još nije zamijenio SHA-2, već kriptografima jednostavno daje drugu mogućnost koja u određenim situacijama može poboljšati sigurnost.
  • RIPEMD - RIPEMD je još jedna obitelj funkcija koju je razvila akademska zajednica. Temelji se na mnogim idejama iz MD4 (MD5-ov prethodnik) i nisu ograničeni nijednim patentima. RIPEMD-160 se još uvijek smatra relativno sigurnim, ali nije vidio mnogo široko usvajanje.
  • vrtlog - Whirlpool je hash funkcija iz obitelji šifri kvadratnih blokova. Temelji se na modifikaciji AES-a i ne podliježe nikakvim patentima. Smatra se sigurnom, ali nešto sporijom od nekih alternativa, što je dovelo do ograničenog usvajanja.

Hashing funkcije u akciji

Sada kada ste razumjeli što su hash funkcije, vrijeme je da ih provedete u praksu. Ako stavimo isti tekst "Idemo jesti"U SHA-256 mrežni kalkulator daje nam:

5c79ab8b36c4c0f8566cee2c8e47135f2536d4f715a22c99fa099a04edbbb6f2

Ako jedan položaj promijenimo samo jednim položajem, ona drastično mijenja cijeli hash. Pogreška pri pisanju poput „Met jedi"Daje potpuno drugačiji rezultat:

4be9316a71efc7c152f4856261efb3836d09f611726783bd1fef085bc81b1342

Za razliku od enkripcije, ovu hash vrijednost ne možemo staviti kroz funkciju obrnuto, da bismo još jednom dobili svoj unos. Iako se ove hash funkcije ne mogu koristiti na isti način kao kodiranje, njihova svojstva čine ih vrijednim dijelom digitalnog potpisa i mnogim drugim aplikacijama.

Hash funkcije i lozinke

Hash funkcije imaju još jednu uobičajenu upotrebu o kojoj još nismo raspravljali. Oni su ujedno i ključna sastavnica čuvajući naše lozinke tijekom pohrane.

Vjerojatno imate desetak mrežnih računa s lozinkama. Za svaki od ovih računa vaša se lozinka mora negdje pohraniti. Kako bi se mogla provjeriti vaša prijava ako web lokacija nema svoju kopiju zaporke?

Tvrtke poput Facebooka ili Googlea pohranjuju milijarde korisničkih zaporki. Ako su te tvrtke lozinke zadržale kao otvoreni tekst, tada bi svaki napadač koji bi mogao ući u bazu podataka zaporki mogao pristupiti svakom računu koji nađu.

Ovo bi bila ozbiljna sigurnosna katastrofa, kako za tvrtku, tako i za njene korisnike. Ako bi se svaka pojedinačna lozinka izložila napadačima, tada bi svi njihovi računi i korisnički podaci bili u opasnosti.

Najbolji način da se to spriječi je da ne spremaju same lozinke, već umjesto njih hash vrijednosti za lozinke. Kao što smo raspravljali u prethodnom odjeljku, kriptografske hash funkcije djeluju u jednom smjeru, stvarajući izlaz fiksne veličine, koji nije moguće obrnuti.

Ako organizacija pohranjuje hash lozinke umjesto same lozinke, može provjeriti podudaraju li se dva heševa kad se korisnik prijavi. Korisnici unose svoje lozinke, koje se zatim hashe. Zatim se ovaj hash uspoređuje s hash-om lozinke koji je pohranjen u bazi podataka. Ako se dva hash-a podudaraju, tada je unesena ispravna lozinka i korisniku se daje pristup.

Ovo postavljanje znači to lozinka se nikada ne mora pohranjivati. Ako napadač uđe u bazu podataka, sve što će pronaći su šifre zaporki, a ne lozinke.

Iako hashiranje lozinki za pohranu ne sprečava napadače da koriste heheve za pronalaženje lozinki, to njihov rad čini znatno težim i zahtjevnijim. Ovo otvara našu zadnju temu, slanje.

Što je soljenje?

Soljenje je u osnovi zbrajanje slučajnih podataka prije stavljanja kroz hash funkciju, a najčešće se koriste sa zaporkama.

Najbolji način da se objasne pomoću soli je razgovarati o tome zašto su nam uopće potrebne. Možda ste pomislili da bi spremanje hashe lozinki riješilo sve naše probleme, ali nažalost, stvari su malo složenije od toga.

Slabe lozinke

Puno ljudi ima stvarno loše lozinke, možda i vi to učinite. Problem je što ljudi imaju tendenciju razmišljanja u predvidljivim obrascima i biraju lozinke koje se lako pamte. Ove su lozinke osjetljive na napade u rječniku, koji krože kroz tisuće ili milijune najčešćih kombinacija zaporki u sekundi, pokušavajući pronaći ispravnu lozinku za račun.

Ako se umjesto toga pohranjuju oznake zaporki, stvari su malo drugačije. Kad napadač naiđe na bazu podataka o hash-u lozinke, može ih koristiti bilo koji hash stolovi ili duge stolove potražite odgovarajuće hasheve pomoću kojih mogu saznati lozinke.

Hash tablica je unaprijed izračunati popis hash-ova za uobičajene lozinke koji su pohranjeni u bazi podataka. Potrebno im je više posla prije vremena, ali nakon što je tablica dovršena, mnogo je brže potražiti heševe u tablici nego što je to izračunavanje hash-a za svaku moguću lozinku. Još jedna prednost je ta što se ove tablice mogu koristiti više puta.

Rainbow tablice slične su hash tablicama, samo što zauzimaju manje prostora po cijeni veće računalne snage.

Obje ove metode napada postaju mnogo praktičnije ako se koriste slabe lozinke. Ako korisnik ima zajedničku lozinku, vjerovatno je da će se hash za lozinku nalaziti u tablici hash ili u obliku duge. Ako je to slučaj, tada je samo pitanje vremena kada će napadač imati pristup korisničkoj zaporki.

Korisnici mogu pomoći u prikrivanju ovih napada odabirom dužih i složenijih lozinki za koje je vjerovatno da će se pohraniti u tablice. U praksi se to ne događa ni blizu koliko bi trebalo jer korisnici imaju tendenciju u odabiru lozinki koje se lako pamte. Kao labavo pravilo, napadači su stvari koje je lako zapamtiti često lako pronaći.

Soli nude još jedan način rješavanja problema. Dodavanjem slučajnog niza podataka u lozinku prije nego što je hešišan, u osnovi je čini složenijom, što usporava šanse da ovi napadi budu uspješni.

Kako soljenje djeluje u praksi

Kao primjer, recimo da imate račun e-pošte i zaporka je "1234”. Kada koristimo mrežni kalkulator SHA-256, kao hash vrijednost dobivamo sljedeće:

03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4

Taj hash bi se pohranio u bazu podataka za vaš račun. Kada unesete zaporku "1234”, Heše se i zatim se vrijednost uspoređuje sa spremljenom vrijednošću. Budući da su dvije vrijednosti iste, imat ćete pristup.

Ako napadač provali u bazu podataka, imat će pristup toj vrijednosti kao i svim ostalim hash-ovima zaporki koje su se tamo nalazile. Napadač bi tada uzeo ovu hash vrijednost i potražio je u svojoj unaprijed izračunatoj hash tablici ili tablici duge. Od „1234"Jedna je od najčešćih zaporki, oni bi brzo pronašli odgovarajuću šifru.

Hash tablica bi im rekla da:

03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4

Odgovara:

1234

Napadač će tada znati da je vaša lozinka "1234”. Oni mogu upotrijebiti ovu lozinku za prijavu na svoj račun.

Kao što vidite, ovo nije puno posla za napadača. Da bismo stvari učinili težima, u lozinku smo dodali sol nasumičnih podataka prije nego što je hešišu. Soljenje pomaže da se značajno smanje šanse da se hash tablice i duge tablice ne vrate pozitivan rezultat.

Uzmimo slučajne podatke od 16 znakova:

H82BV63KG9SBD93B

Dodajemo ga u našu jednostavnu lozinku "1234"Ovako:

1234H82BV63KG9SBD93B

Tek sada kada smo ga solili, stavljamo ga kroz istu funkciju hash-a koju smo i prije, a koja se vraća:

91147f7666dc80ab5902bde8b426aecdb1cbebf8603a58d79182b750c10f1303

Naravno, ova hash vrijednost nije više ili složenija od prethodne, ali to nije stvar. Iako su obje iste dužine, "1234H82BV63KG9SBD93B"Je puno rjeđa lozinka, tako da je vjerovatnoća da će se hash pohraniti u tablicu hash-a.

Što je manja vjerojatnost da će lozinka biti pohranjena u hash tablici, manja je vjerojatnost da će napad uspjeti. Ovo je način na koji dodavanje soli pomaže da se sigurnosne zaporke učini sigurnijim.

Hakiranje čitavih baza podataka

Kada napadač ima pristup cijeloj bazi podataka o složenju zaporki, ne mora testirati svaki hash protiv svakog unosa. Umjesto toga, mogu pretraživati ​​čitavu bazu podataka kako bi se podudarali s njihovim hash tablicama. Ako je baza podataka dovoljno velika, napadač može ugroziti ogroman broj računa, čak i ako imaju samo pet posto uspješnosti.

Ako su lozinke dobile jedinstvene soli prije nego što su hashed, onda to postupak čini puno složenijim. Ako su soli dovoljno dugačke, šanse za uspjeh postaju mnogo manje, što bi zahtijevalo tablice hash-ova i duge tablice trebaju biti neprobojno velike da bi se mogli naći podudarajuće šifre.

Još jedna prednost soli dolazi kada više korisnika u istoj bazi podataka ima istu lozinku ili ako jedan korisnik ima istu lozinku za više računa. Ako se hash-ovi zaporki prethodno nisu usoljeni, napadači mogu usporediti heševe i utvrditi da li svi računi s istom hash vrijednošću dijele istu lozinku.

To olakšava hakerima ciljanje najčešće vrijednosti hash-a koje će im donijeti najveću nagradu. Ako su lozinke prethodno slane, tada će se vrijednosti hash-a razlikovati čak i kada se koriste iste lozinke.

Potencijalne slabosti soli

Soljenje gubi svoju učinkovitost ako se vrši pogrešno. Dva najčešće problema javljaju se kada soli su prekratke ili nisu jedinstvene za svaku lozinku. Kraće soli su i dalje podložne napadima duginskih stolova, jer rezultirajući hash ne čine dovoljno rijetkim.

Ako se soli ponovo upotrebljavaju za svaku raspravljenu lozinku, a sol je otkrivena, mnogo je jednostavnije shvatiti svaku lozinku u bazi podataka. Upotreba iste soli također znači da će svatko s istom lozinkom imati isti hash.

Uobičajeni algoritmi soljenja

Ne preporučuje se uporaba normalnih hashing funkcija za pohranu lozinki. Umjesto toga, brojne funkcije su dizajnirane sa specifičnim značajkama koje pomažu u povećanju sigurnosti. Oni uključuju Argon2, scrypt, bcrypt i PBKDF2.

Argon2

Argon2 bio je pobjednik 2015 natjecanja o skrivanju lozinki. To je još uvijek relativno novo što se algoritama tiče, ali brzo je postalo jedna od najpouzdanijih funkcija za čuvanje lozinki.

Unatoč svojoj mladosti, do sada je držao svoje mjesto u brojnim istraživačkim radovima koji su ga ispitivali za slabosti. Argon2 je fleksibilniji od ostalih algoritama mjerenja lozinke i može se implementirati na više različitih načina.

scrypt

Izgovoreno "ess kripta", Ovo je drugi najmlađi algoritam provjere lozinke koji se koristi. Dizajniran 2009. godine, scrypt koristi veliku, ali podesivu količinu memorije u svojim proračunima. Njegova prilagodljiva priroda znači da može i dalje biti otporna na napade čak i kako računalna snaga s vremenom raste.

bcrypt

bcrypt je razvijen 1999. godine i temelji se na šifri Blowfish. Bio je to jedan od najčešće korištenih algoritama koji se dugi niz godina upotrebljavaju za provjeru lozinki, ali sada je ranjiviji na polja programibilnih polja vrata (FPGAs). To je razlog zašto je Argon2 često preferiran u novijim implementacijama.

PKFD2

Ova ključna funkcija izvedbe razvijena je kao zamjena za PBKDF1, koji je imao kraću i manje sigurnu duljinu ključa. NIST-ove smjernice iz 2017. godine još uvijek preporučuju PKFD2 za sprečavanje lozinki, ali Argon2 rješava neke od sigurnosnih problema i može biti bolja opcija u mnogim situacijama.

Šifriranje, raspršivanje i soljenje: preljev

Sada kada smo prošli kroz detalje šifriranja, mesanja i soljenja, vrijeme je da se brzo vratimo na ključne razlike kako bi se one utapali. Iako je svaki od tih procesa povezan, svaki od njih služi drugačijoj svrsi.

Šifriranje je postupak kodiranja informacija radi njihove zaštite. Kad se podaci šifriraju, njima mogu dešifrirati i pristupiti samo oni koji imaju pravi ključ. Algoritmi za enkripciju su reverzibilni, što nam daje način da svoje podatke držimo podalje od napadača, ali da im ipak možemo pristupiti kad nam zatrebaju. Rasprostranjeno se koristi za sigurnost na mreži, odigravajući ključnu ulogu u mnogim našim sigurnosnim protokolima koji naše podatke čuvaju sigurnim kada su pohranjeni i u tranzitu..

U kontrastu, hashing je jednosmjerni proces. Kad nešto usitnimo, ne želimo ga moći vratiti u izvorni oblik. Kriptografske hash funkcije imaju niz jedinstvenih svojstava koja omogućuju nam da dokažemo autentičnost i cjelovitost podataka, poput digitalnih potpisa i kodova za provjeru autentičnosti poruka.

Za pohranu naših lozinki koriste se i određene vrste kriptografskih hash funkcija. Spremanje hash-a za lozinku umjesto same lozinke pruža dodatni sloj sigurnosti. To znači da ako napadač dobije pristup bazi podataka, ne može odmah pristupiti lozinkama.

Iako hashiranje lozinke otežava život hakerima, i dalje ih se može zaobići. Tu dolazi do soljenja. Salting dodaje dodatne podatke u lozinke prije nego ih se heše, što napade zahtijeva mnogo vremena i velike resurse. Ako se soli i lozinke koriste ispravno, oni čine hash tablice i tablice duge nepraktičnim sredstvima za napad.

Zajedno, šifriranje, raspršivanje i soljenje svi su važni aspekti zaštite interneta. Da se ti procesi ne bi odvijali, napadači bi imali besplatan račun za sve vaše račune i podatke, ostavljajući vam bez ikakve sigurnosti na internetu.

Tehnologija-1 od tec_estromberg pod CC0

Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me

About the author

Leave a Reply

Your email address will not be published. Required fields are marked *

46 − 36 =

Adblock
detector