(Inode hashing, engleză hashing) - re-crearea matricei de date de intrare pentru o perioadă lungă de timp și rândul de biți de ieșire al unei zile fixe. Astfel de transformări se mai numesc și funcții hash și funcții throat, iar rezultatele se numesc hash, cod hash sau mesaj digest.

Hashingul implică egalizarea datelor: dacă două matrice au coduri hash diferite, se garantează că matricele sunt diferite; yakshto totuși - masiv, swed pentru orice, totuși. În acest caz, nu există o relație neechivocă între datele de ieșire și codul hash prin acelea în care numărul de valori ale funcției hash este mai mic decât numărul de opțiuni din matricea de intrare; Nu există matrice care să poată produce noi coduri hash - așa-numita coliziune. Fiabilitatea monedei joacă un rol important în estimarea capacității funcției hash.

Nu există algoritmi de hashing cu caracteristici diferite (capacitate, complexitate de calcul, putere criptografică etc.). Alegerea uneia sau a altei funcții hash depinde de problema specifică rezolvată. Cele mai simple utilizări ale funcțiilor hash pot fi fie o sumă de control, fie un CRC.

Sume de control

Algoritmi hardware necomplicați, extrem de flexibili, care sunt ușor de implementat, sunt utilizați pentru a proteja împotriva problemelor inutile, inclusiv a defecțiunilor hardware.

Pentru viteza de calcul, de zeci și sute de ori mai rapidă, funcțiile hash criptografice mai mici sunt mult mai simple în implementarea hardware.

Compensația pentru o lichiditate atât de mare este lipsa de stabilitate cripto - capacitatea ușoară de a ajusta notificarea la suma pe care o plătiți în avans. De asemenea, luați în considerare dimensiunea sumelor de verificare (număr tipic: 32 de biți) mai mică decât hashurile criptografice (numerele tipice: 128, 160 și 256 de biți), ceea ce înseamnă posibilitatea unor coliziuni inexacte. Cea mai simplă versiune a unui astfel de algoritm este împărțirea mesajului în cuvinte de 32 sau 16 biți și semnificația lor, care ar sta, de exemplu, TCP/IP.

De regulă, înainte de un astfel de algoritm, este posibil să se implementeze șlefuitoare hardware tipice, cum ar fi un număr de biți de șlefuit, pentru a merge la o dată dată. Familia de algoritmi t.z. „coduri superflue ciclice” satisface aceste beneficii. Acestea includ, de exemplu, CRC32, care este utilizat în echipamentele Ethernet și în formatul de fișier ZIP.

Funcții hash criptografice

În absența funcțiilor hash esențiale, este obișnuit să vedem unele puternice din punct de vedere criptografic, care sunt stabilite în criptografie. Pentru funcția hash H Pentru a ne baza pe puterea criptografică, există trei beneficii principale care se bazează pe funcția hash a criptografiei:
  • Irevocabilitate: pentru o valoare hash dată m vinovat buti obslyuvalno imposibil de știut blocul de date X, pentru care H(X) = m.

  • Rezistență la pete de gradul întâi: pentru o cerință dată M Este evident imposibil să obțineți alte informații N, pentru care H(N) = H(M).

  • Rezistența la coliziuni de alt fel: poate fi destul de imposibil să alegeți o pereche pentru a informa (M, M"), care este noul hash?
Aceste beneficii nu sunt independente:
  • Funcția inversă este instabilă la coliziunile de primul și celălalt fel.

  • Funcție, instabilă la primul fel; instabil la colize de alt fel; Poarta nu este corecta.
Trebuie remarcat faptul că implementarea funcțiilor hash irevocabile nu a fost finalizată, pentru care calculul oricărui prototip al unei anumite valori a funcției hash este teoretic imposibil. Creșteți valoarea valorii returnate, ceea ce înseamnă sarcini mai complicate.

Atacul „zilele oamenilor” vă permite să găsiți monede pentru o funcție hash cu o valoare dublă n biți în mijloc pentru aproximativ 2 n/2 pentru a calcula funcția hash. Tom n Funcția hash -bit este considerată a fi cripto-stabilă, deoarece dificultatea de calcul de a găsi o roată pentru aceasta este aproape de 2 n/2.

Pentru funcțiile hash criptografice, este de asemenea important ca cea mai mică modificare a argumentului valorii funcției să se modifice foarte mult (efectul de avalanșă). Zokrema, adică hesh nu este vinovat că a oferit informații despre partea argumentului. Acest lucru este posibil prin garantarea cripto-siguranței algoritmilor de hashing pentru a hashing parola unui client pentru a recupera cheia

Definiția hash functions

Funcțiile hash pot fi utilizate și în diferite structuri de date - tabele hash, filtre Bloom și arbori cartezieni. Există diferite moduri de a utiliza funcția hash:
  • buna amestecare a datelor
  • algoritm de calcul rapid
Date animale
Acest proces poate fi descris ca verificarea anumitor informații pentru a se asigura că acestea sunt identice cu originalul, fără a modifica originalul. Pentru verificare, se verifică valoarea hash a informațiilor care sunt verificate. Există două direcții principale ale acestei stagnari:
  1. Verificarea prezenței grațierilor- De exemplu, suma de control poate fi transmisă de canal simultan cu textul principal. La sfârșitul zilei, suma de control poate fi reasigurată și poate fi egalată cu valorile transferate. Dacă se detectează o discrepanță, aceasta înseamnă că transmisia a eșuat și puteți solicita o repetare.

    Un analog similar al hashingului poate fi folosit uneori, dacă în timpul călătoriei trebuie să pierdeți mult spațiu pe bagaj. Pentru a o verifica, nu trebuie să știți despre căptușeala pielii, ci doar să le atingeți. Înseamnă că fiecare dolar nu a fost cheltuit. Există mult spațiu pentru bagaj și codul hash al acestuia. Această metodă poate fi extinsă cu ușurință pentru a preveni falsificarea informațiilor transmise (metoda MAC). În acest tip de hashing, se realizează o funcție cripto-securizată asupra notificărilor asociate cu o cheie secretă, care este cunoscută doar de expeditor și destinatarul notificării. Astfel, un criptoanalist nu poate analiza codul pe baza numeroaselor informații și valori ale funcției hash, deci nu este posibilă rafinarea informațiilor.


  2. Voi căuta rapid datele- De exemplu, la înregistrarea câmpurilor de text într-o bază de date, codul hash al acesteia poate fi preluat și datele pot fi plasate într-o secțiune care corespunde acelui cod hash. Apoi, atunci când căutați date, va trebui imediat să calculați codul hash al textului și va deveni imediat clar ce secțiune trebuie căutată, așa că nu va trebui să căutați întreaga bază de date, ci doar o secțiune ( aceasta va accelera căutarea).

    Un analog similar cu heshuvannya poate fi plasarea cuvintelor în dicționar alfabetic. Prima literă a cuvântului este identificată prin codul hash, iar atunci când căutăm, ne uităm nu la întreg dicționarul, ci doar la litera necesară.

Kheshuvannya

Kheshuvannya(uneori "heshuvannya", Engleză hashing) - reproiectarea matricei de date de intrare cu un algoritm determinist pentru o perioadă lungă de timp și un rând de biți de ieșire cu o valoare fixă. Astfel de re-creații mai sunt numite funcții hash sau funcțiile gâtului, iar rezultatele lor sunt numite hash, cod hash sau Alerte(Engleză) rezumatul mesajului). Deoarece două rânduri de coduri hash sunt diferite, este garantat că rândurile diferă, dar este posibil ca alte rânduri să convergă.

Hashing-ul este conceput pentru a încuraja matricele asociative, pentru a căuta duplicate în serii de seturi de date, pentru a crea identificatori unici pentru seturile de date, pentru a controla metoda de identificare a valorii aberante sau a nepotrivirilor Lapte la salvare sau transfer, pentru a salva parolele pentru sistemele de securitate (care au accesul în zona de memorie Acolo unde parolele sunt cunoscute, nu vă permite să reînnoiți parola în sine), când se creează o semnătură electronică (în practică, de multe ori nu informația în sine este semnată, ca o imagine hash).

În acest caz, nu există o relație neechivocă între datele de ieșire și codul hash prin acelea în care valoarea funcției hash este mai mică decât opțiunile din tabloul de intrare; Practic, nu există matrice cu locații diferite, dar puteți da în continuare coduri hash noi - așa-numita coliziune. Fiabilitatea monedei joacă un rol important în estimarea capacității funcției hash.

Nu există algoritmi de hashing cu puteri diferite (capacitate, complexitate de calcul, putere criptografică etc.). Alegerea uneia sau alteia funcții hash depinde de problema specifică rezolvată. Cele mai simple utilizări ale funcțiilor hash pot fi fie o sumă de control, fie un CRC.

Istorie

Prima lucrare serioasă, legată de o glumă din marile dosare, a fost articolul lui Wesley Peterson (ing. W. Wesley Peterson ) în Jurnalul IBM de Cercetare și Dezvoltare 1957 rock, de vin semnifică adresarea deschisă și indică creșterea productivității odată cu distanța. Șase ani mai târziu, a fost publicată lucrarea lui Werner Buchholz. Werner Buchholz ), care a fost supus unor cercetări ample asupra funcțiilor hash. Pe parcursul mai multor progrese, Kheshuvannya a câștigat pe scară largă, dar nu au fost publicate lucrări semnificative.

În 1967, procesul heshuvannya în sensul său actual a fost explicat în cartea lui Herbert Hellerman „Principiile sistemelor de calcul digitale”. Robert Morris s-a născut în 1968. Robert Morris ) după ce a publicat o recenzie excelentă a hashingului în Comunicațiile ACM, această lucrare este considerată o publicație cheie pentru a introduce conceptul de hashing în discursul științific și a consolidat termenul care fusese anterior blocat în jargonul întrebărilor frecvente tsiv, „hash”. ".

Până la începutul anilor 1990, literatura rusă folosea cuvântul „kheshuvannya” ca echivalent cu termenul "aranjament", și pentru Koliziy Vicoristovyuvuvyuvov Termin "Conflict" (єrshov Vikoristovavv "Rosstanovka" Z 1956 Rock, în Cartea rusă a Virt "Algorithmi that structures of the Dani" 1989 Roku Termin "Rosstation"). De asemenea, s-a sugerat să se numească metoda cuvântul rusesc "okroshka". Cu toate acestea, se așteaptă ca niciuna dintre aceste opțiuni să nu prindă, iar în literatura rusă termenul „kheshuvannya” este utilizat pe scară largă.

Vezi funcția hash

O funcție hash bună poate satisface două autorități:

  1. shvidko să fie numărat;
  2. Minimizați numărul de roți

Este acceptabil, pentru cânt, că există un număr mare de taste, iar funcția hash nu poate avea mai mult decât valori diferite:

Ca exemplu de funcție hash „proastă”, puteți utiliza funcția s, care oferă unui număr natural de zece cifre trei cifre alese din mijlocul pătratului de douăzeci de cifre al numărului. S-ar părea că valorile codului hash ar fi distribuite în mod egal între „000” și „999”, dar pentru datele reale această metodă este potrivită doar pentru că cheile nu conțin un număr mare de zerouri, fie corecte, fie greșite.

Cu toate acestea, există mult mai multe metode simple și de încredere, care se bazează pe o funcție hash bogată.

Funcțiile hash se bazează pe o divizare

Prima metodă se bazează pe ceea ce folosim ca hash al surplusului din subsecțiune, care este numărul tuturor hashurilor posibile:

Prin urmare, este evident că cu o valoare împerecheată a funcției va fi împerecheat, cu împerecheat și neîmperecheat - cu unpaired, ceea ce poate duce la o deplasare semnificativă a datelor din fișiere. De asemenea, nu ar trebui să câștigați în etapa de calcul a computerului, deoarece codul hash este conținut în doar câteva cifre ale numărului, care sunt rotite manual, ceea ce va duce la un număr mare de monede. De fapt, trebuie să alegi o alegere mai simplă - această alegere este complet satisfăcătoare.

Încă un lucru de spus despre metoda hashing, baza împărțirii într-un polinom după modulul doi. Această metodă are, de asemenea, o etapă de două, iar cheile binare () sunt reprezentate ca polinoame. În acest caz, ca cod hash, luăm valorile coeficienților polinomului, care sunt eliminate ca surplus din subcâmp în spatele etapei polinomului:

Dacă o alegeți pe cea potrivită, această metodă vă garantează că nu vor exista ciocniri între aceleași taste.

Schema heshuvannya multiplicativă

O altă metodă implică alegerea unei constante întregi care este mai simplă decât numărul de valori reprezentabile prin cuvinte ale mașinii (pe computerele IBM PC). Apoi putem lua o funcție hash ca:

În acest caz, pe un computer cu un sistem de numere cu două cifre, numărul este de ordinul a două și va fi adăugat la cei mai înalți biți din jumătatea dreaptă a creației.

Între aceste două metode, este clar că ele sunt susceptibile de a fi alese de cele pentru care cheile reale nu sunt consistente, de exemplu, deoarece cheile reprezintă o progresie aritmetică (secvență acceptabilă de nume „NUME1”, „NUME2”, „NUME3”. "). Metoda multiplicativă este de a mapa progresia aritmetică aproximativ pe progresia aritmetică a diferitelor valori hash, ceea ce modifică numărul de monede în funcție de situația unică.

O variantă a acestei metode este hashingul Fibonacci, care se bazează pe puterea tăierii de aur. Cum să alegeți numărul cel mai apropiat de numărul întreg este reciproc simplu

Heshuvanniya rânduri de dowzhin

Metodele de cercetare pot fi limitate în acest fel, deoarece trebuie să ne uităm la cheile care sunt formate din mai multe cuvinte sau la cheile unui porumbel schimbător. De exemplu, puteți combina cuvinte într-unul singur cu un modulo sau o operație suplimentară „ce include sau”. Unul dintre algoritmii care urmează acest principiu este funcția hash Pearson.

Heshuvannya universală

Universal kheshuvannyam (engleză) Hashing universal ) se numește hashing, în care nu este testată o funcție hash specifică, ci se face o selecție dintr-o familie dată folosind un algoritm aleator. Utilizarea hashingului universal va asigura un număr redus de colonii. Hashingul universal poate fi complet diferit, de exemplu, de implementarea unui tabel hash și a criptografiei.

Descriere

Să presupunem că vrem să convertim cheile în numere. La intrare, algoritmul selectează un anumit set de date care este mare și necunoscut de la distanță. De obicei, metoda hash este de a elimina cel mai mic număr de monede, ceea ce este important de realizat folosind o funcție de hash.

Ca o soluție la această problemă, puteți alege o funcție într-o ordine treptată dintr-un singur set, care se numește familia universală.

Metode de combatere a coliozei

După cum sa spus deja mai sus, o funcție hash (fie un conflict sau o combinație) este numele dat celor două blocuri de date de intrare care produc coduri hash noi.

Aveți tabele de hash

Cele mai multe dintre primele lucrări care descriu hash-ul au fost dedicate metodelor de tratare a coliziunilor în tabelele hash, deoarece funcțiile hash au fost stivuite pentru a căuta fișiere mari. Există două metode principale utilizate în tabelele hash:

  1. Metoda Lanciuzhk (metoda de conectare directă)
  2. Metoda de adresare privată

Prima metodă se bazează pe un subset de liste de linkuri, câte una pentru fiecare valoare a funcției hash. Lista salvează cheile, dar dă aceleași valori codului hash. În căutarea finală, care este cheia noastră pentru liste, dimensiunea medie a listei va fi hashing pentru a modifica numărul mediu de roboți egal cu ultima căutare cu aproximativ un factor.

O altă metodă este de a stoca perechi cheie-valoare într-un tabel matrice. În acest fel, suntem complet conștienți de mesaj și pur și simplu ne uităm prin intrările din tabel până găsim cheia necesară sau poziția goală. Secvența în care este vizualizat mijlocul tabelului se numește secvență de probă.

Puterea criptografică

Există o serie de moduri de a proteja detaliile parolelor și semnăturilor, care pot fi utilizate în același mod în care criptoanalistii sunt interesați de modalități de a genera un număr de valori pentru o funcție hash modificată. Una dintre aceste metode este adăugarea de sare criptografică (rânduri de date aleatoare) la datele de intrare (uneori „sarea” este adăugată la codul hash), ceea ce complică semnificativ analiza tabelelor hash sub-bag. Această metodă, de exemplu, este utilizată pentru salvarea parolelor pe sisteme de operare asemănătoare UNIX.

Definiția hash functions

Funcții hash criptografice

Printre absența funcțiilor hash pur, se obișnuiește să le vedem pe cele puternice din punct de vedere criptografic care sunt stabilite în criptografie, deoarece beneficiile suplimentare le sunt suprapuse. Pentru ca o funcție hash să fie sigură din punct de vedere criptografic, există trei motive principale pentru care funcțiile hash sunt utilizate în criptografie:

Aceste beneficii nu sunt independente:

  • Funcția inversă este instabilă la coliziunile de primul și celălalt fel.
  • Funcție, instabilă la primul fel; instabil la colize de alt fel; Poarta nu este corecta.

Trebuie remarcat faptul că implementarea funcțiilor hash irevocabile nu a fost finalizată, pentru care calculul oricărui prototip al unei anumite valori a funcției hash este teoretic imposibil. Creșteți valoarea valorii returnate, ceea ce înseamnă sarcini mai complicate.

Hashingul este adesea folosit în algoritmii de semnătură digitală, unde informația în sine nu este criptată, ca un cod hash, care schimbă timpul de calcul și, de asemenea, îmbunătățește puterea criptografică. De asemenea, pentru majoritatea înlocuirilor de parole, valorile codurilor lor hash sunt salvate.

Sume de control

Algoritmi hardware necomplicați, extrem de rapizi și ușor de utilizat, care pot fi utilizați pentru a proteja împotriva problemelor nedorite și pentru a preveni problemele hardware. Din punct de vedere matematic, este o funcție hash care calculează un cod de control care este folosit pentru a detecta erorile la transmiterea și stocarea informațiilor.

Pentru viteza de calcul, de zeci și sute de ori mai rapidă, funcțiile hash criptografice mai mici sunt mult mai simple în hardware.

Compensația pentru o lichiditate atât de mare este lipsa de stabilitate cripto - capacitatea ușoară de a ajusta notificarea la suma pe care o plătiți în avans. De asemenea, luați în considerare dimensiunea sumelor de verificare (număr tipic: 32 de biți) mai mică decât hashurile criptografice (numerele tipice: 128, 160 și 256 de biți), ceea ce înseamnă posibilitatea unor coliziuni inexacte.

Cea mai simplă versiune a unui astfel de algoritm este împărțirea mesajului în cuvinte de 32 sau 16 biți și semnificația lor, care ar sta, de exemplu, TCP/IP.

De regulă, înainte de un astfel de algoritm, este posibil să se implementeze șlefuitoare hardware tipice, cum ar fi un număr de biți de șlefuit, pentru a merge la o dată dată. Familia de algoritmi t.z. „coduri superflue ciclice” satisface aceste beneficii. Acestea includ, de exemplu, CRC32, formate găsite în dispozitivele Ethernet și în formatul de compresie a datelor ZIP.

Suma de control, de exemplu, poate fi transmisă de canal ca o legătură împreună cu textul principal. La sfârșitul zilei, suma de control poate fi reasigurată și poate fi egalată cu valorile transferate. Dacă se detectează o discrepanță, aceasta înseamnă că transmisia a eșuat și puteți solicita o repetare.

Un analog similar al hashingului poate fi folosit uneori, dacă în timpul călătoriei trebuie să pierdeți mult spațiu pe bagaj. Pentru a o verifica, nu trebuie să știți despre căptușeala pielii, ci doar să le atingeți. Înseamnă că fiecare dolar nu a fost cheltuit. Există mult spațiu pentru bagaj și codul hash al acestuia. Această metodă poate fi extinsă cu ușurință pentru a preveni falsificarea informațiilor transmise (metoda MAC). În acest tip de hashing, se realizează o funcție cripto-securizată asupra notificărilor asociate cu o cheie secretă, care este cunoscută doar de expeditor și destinatarul notificării. Astfel, un criptoanalist nu va putea actualiza codul pe baza abundenței de informații și a valorilor funcției hash, deci nu va fi posibilă elaborarea informațiilor (imitaționist extraordinar).

Geometrichetche Kheshuvannya

Geometrichetche Kheshuvannya (engleză) Hashing geometric) este o metodă utilizată pe scară largă în grafica computerizată și geometria computațională pentru rezolvarea problemelor pe un plan sau în spațiu trivial, de exemplu, pentru găsirea celor mai apropiate perechi de puncte anonime sau pentru căutarea de noi imagini. Funcția hash din această metodă ia orice spațiu metric ca intrare și îl împarte într-o grilă de celule. Tabelul conține uneori o matrice de doi sau mai mulți indecși și se numește fișier grilă. Fișier grilă). Hashingul geometric stagnează și în telecomunicații atunci când se lucrează cu un număr mare de semnale.

Voi căuta rapid datele

Un tabel hash este o structură de date care vă permite să stocați tipuri de date (cheie, cod hash) și acceptă operațiuni de căutare, inserări și elemente la distanță. Un tabel hash poate fi găsit rapid, de exemplu, atunci când scrieți câmpuri de text într-o bază de date, poate fi folosit codul hash al acestuia și datele pot fi plasate într-o secțiune care se potrivește cu acel cod hash. Apoi, atunci când căutați date, va trebui imediat să calculați codul hash al textului și va deveni imediat clar ce secțiune trebuie căutată, așa că nu va trebui să căutați întreaga bază de date, ci doar o secțiune ( aceasta va accelera căutarea).

Un analog similar cu heshuvannya poate fi plasarea cuvintelor în dicționar alfabetic. Prima literă a cuvântului este identificată prin codul hash, iar atunci când căutăm, ne uităm nu la întreg dicționarul, ci doar la litera necesară.

Note

Literatură

  • Bruce Schneier"Criptografie aplicată. Protocoale, algoritmi, texte de ieșire ale C-ului meu." – M.: Triumf, 2002. –

Unul dintre cuvintele cheie pe care începătorii le simt atunci când învață despre blockchain este conceptul de hash și algoritm de hashing, care sunt concepute pentru a fi extinse pentru securitate. Rularea unei măsuri de consens descentralizată, cum ar fi măsura Bitcoin sau Ethereum cu zeci de mii de noduri conectate prin p2p, îmbunătățește atât fiabilitatea, cât și eficiența verificării. Aceste sisteme vor necesita modalități de codificare a informațiilor într-un format compact care permite verificarea în siguranță de către participanți.

La marcaje

Caracteristica principală care este împărtășită atât de Bitcoin, cât și de Ethereum este înțelegerea bloc, care este o structură de date care include tranzacții, marcaje de timp și alte metadate importante. O parte critică a securității lor include capacitatea de a condensa o cantitate mare de informații despre sistemul global de frontieră într-un standard scurt de informații care poate fi verificat în mod eficient dacă este necesar. hash.

Schimbarea unui caracter în datele de intrare va avea ca rezultat un hash diferit.

Hashe-urile criptografice sunt verificate de la salvarea parolelor la sistemele de verificare a fișierelor. Ideea principală este de a crea un algoritm determinist (un proces algoritmic care generează un rezultat unic și inteligent pentru o intrare dată) care preia o intrare și produce o serie de ieșiri fixe simultan. Deci, repetarea aceleiași introduceri va duce la același rezultat. Determinismul este important nu numai pentru hash-uri, ci și pentru un bit care se modifică în datele de intrare, creând un hash complet diferit. Problema cu algoritmii de hashing este inevitabilitatea coliziunilor. Faptul că hashurile au un număr de valori fixe înseamnă că pentru administrarea cutanată, pe care o putem detecta singuri, Există și alte intrări posibile care vor avea ca rezultat același hash. Colizia e rea. Aceasta înseamnă că atacatorul poate crea coluziune, poate transfera fișiere corupte sau date care conțin hash-ul corect și incorect și se află sub hash-ul corect. Scopul unei bune funcții hash este acela de a face extrem de dificil pentru atacatori să găsească modalități de a genera date de intrare care se hash cu noile valori. Calculul hash-ului poate fi iertat în avans, deoarece acest lucru va face mai ușor pentru criminali să calculeze monedele. Algoritmii de hashing pot fi rezistenți la „atacuri prototip”. Apoi, după eliminarea hash-ului, ar fi extrem de simplu să se calculeze valorile deterministe ale porții create pentru crearea valorii care a creat hash-ul (apoi găsirea prototipului).

În teorie S = hash(x), cunoașterea X poate fi imposibilă.

Este clar că algoritmii de hashing „buni” au o astfel de putere:

  • Modificarea unui bit din datele de intrare poate avea ca efect schimbarea întregului hash;
  • Calculul hesh-ului este vinovat, dar vom ierta în avans, complexitatea cunoașterii prototipului este mare;
  • Prevalența coliozei este chiar scăzută;

Răul hașurilor

Unul dintre primele standarde este algoritmul hash MD5, care este utilizat pe scară largă pentru a verifica integritatea fișierelor (sume de control) și pentru a salva parolele hash în bazele de date ale suplimentelor web. Funcționalitatea sa este simplă, deoarece emite un rând fix de 128 de biți pentru intrarea skinului și efectuează operații triviale unidirecționale într-un număr de runde pentru a calcula rezultatul determinist. Acest weekend scurt și simplitatea operațiunilor au făcut ca MD5 să fie și mai ușor pentru rău și mai flexibil înainte de atacul „Ziua Poporului”.

Ce este „Atacul Zilei Poporului?”

Ați auzit vreodată că dacă puneți 23 de persoane într-o cameră, există o șansă de 50% ca doi dintre ei să aibă o naștere în aceeași zi? Aducerea numărului la 70 de persoane per cameră oferă o șansă de 99,9%. Dacă porumbeii sunt așezați în cutii, iar numărul de porumbei este mai mare decât numărul de cutii, atunci ați dori să aveți mai mult de un porumbel într-o cutie. Acest schimb fix la ieșire înseamnă că baza pentru fixare este stadiul permutărilor pe care poate fi găsită coliziunea.

Amintiți-vă, un porumbel va mama doi porumbei.

De fapt, desktop-urile MD5 sunt slabe până la punctul de coliziune, dar un procesor simplu de stoc Pentium de 2,4 GHz poate calcula coliziunile hash individuale în doar câteva secunde. În plus, această utilizare pe scară largă în primele zile ale streamingului a creat tone de turnări MD5 de imagini avansate pe Internet, care pot fi găsite prin simpla căutare pe Google pentru hash-ul lor.

Caracteristici și dezvoltări ale algoritmilor de hashing Cob: SHA1 și SHA2

NSA (Agenția Națională de Securitate) a fost mult timp un pionier al standardelor de algoritm de hashing, cu algoritmul său de pionierat Secure Hashing Algorithm sau SHA1, care creează ieșiri cu rată fixă ​​de 160 de biți. Din păcate, SHA1 pur și simplu îmbunătățește MD5, crescând numărul de operațiuni unidirecționale și complexitatea acestor operațiuni unidirecționale, dar nu oferă nicio îmbunătățire fundamentală împotriva mașinilor mai vechi care sunt capabile de atacuri victorioase. Deci, cum putem câștiga mai bine?

Wikoristannya SHA3

În 2006, Institutul Național de Standarde și Tehnologie (NIST) a lansat un concurs pentru a găsi o alternativă la SHA2 care să fie în concordanță cu arhitectura sa pentru a deveni un standard. Astfel, SHA3 a apărut ca parte a marii scheme de algoritmi de hashing cunoscută sub numele de KECCAK (cunoscut sub numele de Ketch-Ak). Indiferent de numele său, SHA3 este extrem de perturbator datorită mecanismului său intern, cunoscut sub numele de „design-ul burete”, care este o permutare victorioasă pentru „derularea” și „răsucirea” datelor, acționând ca un mecanism de vitalitate pentru intrările viitoare. care sunt incluse în algoritmul de hashing.

Kheshuvannya și dovada muncii

Când a venit vorba de integrarea algoritmului de hashing în protocoalele blockchain, Bitcoin a adoptat SHA256, la fel cum Ethereum a adoptat modificări ale SHA3 (KECCAK256) pentru PoW-ul său. Cu toate acestea, un factor important în alegerea unei funcții hash pentru un blockchain de dovadă a lucrului este eficiența calculării hash-ului desemnat. Algoritmul de hashing Bitcoin SHA256 poate fi procesat simplu cu ajutorul unor echipamente speciale cunoscute sub numele de circuite integrate specializate (sau ASIC-uri). S-au scris multe despre utilizarea ASIC-urilor în bazinele miniere și despre cum să eliminați protocolul direct la centralizarea calculelor. Această dovadă a muncii încurajează grupuri de mașini eficiente din punct de vedere computațional să se unească în gloanțe și să le mărească pe cele care sunt considerate „putere hash” sau numărul de hashuri pe care o mașină le poate calcula într-o oră. Ethereum, după ce a ales modificările SHA3 ca KECCAK 256. În plus, algoritmul Ethereum PoW - Dagger-Hashimoto, este responsabil pentru calcule importante pentru securitatea hardware.

De ce folosește Bitcoin criptarea SHA256?

Bitcoin are o metodă diferită de hashing a datelor folosind SHA256, deci are două iterații ale algoritmului în protocolul său. Recapitulând: acesta nu este un contraatac pentru atacurile de Ziua Națională, dar este clar că hash(x) = hash(y), apoi hash(hash(x)) = hash(hash(y)). Volumul sub-alertei SHA256 este folosit pentru a nota „Atacuri de sub-notificare sunt un tip de atac asupra funcției hash care este inclusă în informațiile noi adăugate la sfârșitul notificării de ieșire”. Atacul nu este sigur pentru că este posibilă schimbarea comenzii și, evident, anularea celor cărora le corespunde comanda (de exemplu, transferul de bănuți)

SHA3 ​​nu este singura descoperire care a apărut în urma competiției de hashing NIST în 2006. Indiferent de cei pe care SHA3 i-a câștigat, algoritmul, cunoscut sub numele de BLAKE, a luat un alt loc. Pentru a implementa shardingul Ethereum 2.0, Vikorist este mai eficient. Algoritmul de hashing BLAKE2b, care este o versiune foarte avansată a BLAKE în comparație cu concurenții săi, este intens lăudat pentru eficiența sa fantastică în comparație cu KECCAK256 pentru menținerea unui nivel ridicat de securitate. Costul lui BLAKE2b este de aproape 3 ori mai mare decât cel al KECCAK pe un procesor zilnic.

Viitorii algoritmi de hashing

Se pare că, indiferent de ce ne este frică, pur și simplu suntem fie (1) o complexitate mai mare a operațiunilor hash interne sau (2) Pe baza rezultatelor hash, presupunem că computerele atacatorilor nu vor fi suficient de rapide pentru a-și calcula eficient câștigurile. Ne bazăm pe ambiguitatea prototipurilor avansate ale operațiunilor unidirecționale pentru a asigura siguranța măsurilor noastre. Scopul algoritmului de hashing este de a crea ceva simplu pentru oricine dorește să găsească două valori care sunt hashing pe același simbol, indiferent de faptul că există un număr infinit de soluții posibile. „Dar viitoarele computere cuantice? Vor fi siguri algoritmii de hashing? Răspunsul scurt și o înțelegere mai precisă este că algoritmii de hashing au fost testați ore întregi împotriva calculelor cuantice. Cele pe care calculul cuantic le poate rezolva sunt probleme care stau în spatele unei structuri matematice bazate pe trucuri și teorii îngrijite, cum ar fi criptarea RSA. Pe de altă parte, algoritmii de hashing au o structură mai puțin formală în structurile lor interne. Calculatoarele cuantice pot oferi în mod eficient o flexibilitate sporită într-o serie de probleme nestructurate, cum ar fi hashingul, dar ele pot fi atacate în mod nepoliticos în același mod în care un computer va încerca astăzi să lucreze la el. Indiferent de algoritmii pe care îi alegem pentru protocoalele noastre, este clar că ne prăbușim în viitorul eficient din punct de vedere computațional și putem alege cea mai bună rațiune pentru a alege instrumentele potrivite pentru lucru, cum ar fi Și, credem, va fi nevoie de un oră să-l încerci.

_____________________________________________________________________________

______________________________________________________________________________

Adesea, atunci când sunteți interesat de torrente sau chiar de fișierele în sine, descrierea conține intrarea „ad33e486d0578a892b8vbd8b19e28754” (de exemplu, ex.ua), adesea cu prefixul „md5”. Acest cod hash este rezultatul pe care funcția hash îl vede după procesarea datelor de intrare. În traducerea în engleză, hash înseamnă zmeură, marijuana, iarbă sau ierburi din carne și legume tocate fin. Este foarte și foarte greu, s-ar putea spune că este practic imposibil. Apoi apare întrebarea: „Ard toate lucrurile necesare și duhoarea este vizibilă pentru galimul prost care nu poate fi încă descifrat?” Despre acest lucru este disponibil în această statistică.

Ce este o funcție hash și ce face ea?

Această funcție este concepută pentru a transforma datele de intrare la o dimensiune mare, rezultând un venit fix. Procesul de astfel de recreare în sine se numește hash, iar rezultatul este un hash sau cod hash. Uneori sunt folosite cuvintele „video” sau „rezumat de știri”, dar de fapt mirosurile devin mai pronunțate. Există o mulțime de algoritmi diferiți care pot transforma orice matrice de date pe baza secvenței de simboluri a cântecului. Cea mai mare expansiune a fost realizată de un algoritm numit md5, dezvoltat încă din 1991. Indiferent de faptul că astăzi md5 este oarecum depășit și nu este recomandat până acum, este încă în uz și adesea în locul cuvântului „cod hash”, pe site-uri pur și simplu scrieți md5 și indicați codul.

Este nevoie de o funcție hash?

Cunoscând rezultatul, este practic imposibil să se determine datele de ieșire, cu excepția cazului în care datele de intrare în sine dau același rezultat. Prin urmare, funcția hash (numită și funcție hash) este adesea folosită pentru a salva informații importante precum parola, autentificarea, numărul de referință și alte informații personale. În loc să egalăm datele introduse de client cu cele stocate în baza de date, se creează hash-urile acestora. Acest lucru garantează că, odată cu fluxul rapid de informații, nimeni nu poate obține rapid date importante pentru propriile scopuri. Prin verificarea codului hash puteți verifica și manual corectitudinea descărcării fișierelor de pe Internet, mai ales dacă au existat întreruperi de conexiune în timpul descărcării.

Funcții hash: ce este mirosul T

În funcție de scopul său, o funcție hash poate fi unul din trei tipuri:

1. Funcția de verificare a integrității informațiilor

Când este accesat prin intermediul middleware-ului, hash-ul pachetului este decomprimat, iar rezultatul este, de asemenea, transmis simultan cu fișierul. La primire, codul hash este calculat din nou și comparat cu diferitele valori. Dacă codul nu este salvat, vorbim de anulări, iar pachetul ziptat va fi transmis din nou. Această funcție are ca rezultat o expansiune mai rapidă, o valoare hash mai mică și o stabilitate slabă. Stocul este de acest tip: CRC32, care are peste 232 de valori distincte.

2. Funcția criptografică

Vikorist pentru protecție împotriva ND. Puteți verifica dacă nu a existat niciun conflict cu rezultatele ND în timpul transferului fișierelor prin barieră. Hash-ul de referință în acest caz este complet accesibil, iar hash-ul fișierului extras poate fi calculat folosind alte programe. Astfel de funcții au un termen lung și stabil de funcționare, iar căutarea coliziunilor (rezultate posibile din diferite date de ieșire) este și mai complicată. Aceste funcții în sine sunt folosite pentru a salva parolele bazei de date (SH1, SH2, MD5) și alte informații valoroase.

3. Funcție concepută pentru a crea o structură de date eficientă

În acest fel, organizarea înregistrărilor într-o structură specială numită tabel hash este compactă și bine organizată. Un astfel de tabel vă permite să adăugați informații noi, să ștergeți date și să căutați datele necesare cu o flexibilitate și mai mare.

În cadrul acestui articol, vă voi spune ce este Hash?, aici este nevoie, unde și cum să înghețe, precum și cel mai potrivit fund.

Oferta vastă de tehnologie a informației din lume este și mai critică pentru obligațiile de date. De exemplu, dacă trebuie să aliniați două fișiere de 1 KB și două fișiere de 10 GB, toate la un moment diferit. Prin urmare, algoritmii care vă permit să operați cu valori mai scurte și mai mici sunt la mare căutare.

Una dintre aceste tehnologii este hashingul, care și-a găsit utilitatea sub presiune ridicată. Ale, cred că tu, ca un adevărat mercenar, încă nu înțelegi ce fel de animal este acesta și pentru ce este nevoie de vin. Voi încerca să explic acest lucru în cele mai simple cuvinte.

Notă: Materialul de asigurare pentru clienții primari și ca să nu mai vorbim de multe aspecte tehnice, nu este suficient pentru cunoștințe de bază.

Ce este Hesh chi Kheshuvannya?

Să încep cu termenii.

Funcția Hash, funcția Hash- acesta este un tip special de funcție care vă permite să convertiți o mulțime de text în codul unei date fixe (numită înregistrare scurtă a scrisorii digitale).

Kheshuvannya- acesta este procesul de recreare a textelor de ieșire.

Hash, cod hash, valoare hash, suma hash- aceasta este valoarea de ieșire a funcției Hash, astfel încât blocul de fixare să fie îndepărtat.

După cum vedeți, termenii creează o descriere detaliată, ceea ce face dificilă înțelegerea de ce este necesar totul. Voi da un mic cap la asta (vom vorbi despre alte probleme puțin mai târziu). Să presupunem că aveți 2 fișiere cu o dimensiune de 10 GB. Cum poți afla rapid de care ai nevoie? Puteți schimba numele fișierului, dar îl puteți redenumi cu ușurință. Puteți vedea datele, dar după copierea fișierelor, datele pot rămâne aceleași sau într-un alt mod. Mărimea, după cum înțelegeți voi înșivă, este de puțin ajutor (mai ales dacă dimensiunea este evitată sau nu ați fost surprins de semnificația exactă a octeților).

Axa aici este necesitatea Hash-ului în sine, care este un bloc scurt care este format din fișierul text de ieșire. Aceste două fișiere, fiecare de 10 GB fiecare, vor avea două coduri hash separate, dar scurte (pentru comanda „ACCAC43535” și „BBB3232A42”). Folosind Vikorist, puteți recunoaște rapid fișierul necesar, faceți clic după copiere și schimbarea numelor.

Notă: În legătură cu faptul că Hash în lumea computerelor și pe Internet este deja bine înțeles, atunci de multe ori toate cele care pot fi legate de Hash sunt prescurtate la chiar cuvântul „Am o victorie MD5 Hash ” în traducere Aceasta înseamnă că site-ul sau aici folosește și un algoritm de hashing pentru standardul MD5.

Puterea funcției Hash

Acum, să vorbim despre puterea funcției hash, astfel încât să vă fie mai ușor să înțelegeți de ce este nevoie de hash. Să începem cu încă un lucru.

Colosseum- aceasta este situația dacă aceeași Sumă Hash iese pentru două texte diferite. După cum înțelegeți voi înșivă, deoarece blocul este o dată fixă, poate limita un număr de valori posibile și, prin urmare, posibile repetări.

Și acum la puterea funcțiilor hash în sine:

1. Intrarea poate fi un text de orice dimensiune, iar ieșirea poate fi un bloc de date cu o dată fixă. Aceasta vine din sens.

2. Suma hash a acestor texte în sine poate fi nouă. Într-un alt caz, astfel de funcții sunt pur și simplu marginale - sunt aceleași până la numărul de ieșire.

3. Buna funcționare a gâtului se datorează firii bune a mamei. Așteptați, deoarece dimensiunea ieșirii Hash, de exemplu, este de 16 octeți, atunci deoarece funcția rotește doar 3 valori diferite pentru orice text, atunci costul unei astfel de funcție este de 16 octeți de nimic (16 octeți este 2 ^ 128 de opțiuni, care este aproximativ egal cu 3 , 4 * 10 ^ 38 pas).

4. Măsura în care funcția răspunde la cele mai mici modificări ale textului de ieșire. Scuze fundul. Am schimbat 1 literă într-un fișier de 10 GB, sensul funcției poate deveni diferit. Dacă nu este cazul, atunci implementarea unei astfel de funcții este și mai problematică.

5. Posibilitatea de justificare a conflictului. Un parametru foarte flexibil care este asigurabil pentru mințile cântătoare. Ei bine, esența acestui lucru este că orice sens al funcției Hash, odată ce suma Hash este eliminată, va fi adesea salvat.

6. Viteza de calcul a hashului. La ce folosește funcția gâtului dacă există de mult timp? În orice caz, este mai ușor să revizuiți fișierele de date sau să utilizați o altă abordare.

7. Complexitatea actualizării datelor de ieșire din valoarea Hash. Această caracteristică este mai specifică, mai puțin secretă, deci nu este strict necesară. Prote, pentru cei mai populari algoritmi, aceasta caracteristica este evaluata. De exemplu, este puțin probabil să puteți prelua fișierul de ieșire folosind această funcție. Cu toate acestea, dacă există o problemă de coliaj (de exemplu, este necesar să cunoașteți un text care să corespundă unui astfel de Hesh), atunci o astfel de caracteristică poate fi importantă. De exemplu, parolele, dar sunt puține de știut despre ele.

8. Codul de ieșire al unei astfel de funcții este fie deschis, fie închis. Dacă codul nu este decriptabil, atunci complexitatea actualizării datelor și puterea criptografică în sine se pierde sub sursa de alimentare. În parte, aceasta este o problemă din cauza criptării.

Axa poate fi mutată acum la „Ce-i tot?”

Ce hash ai nevoie?

Există doar trei scopuri principale ale unei funcții hash (mai ales semnificațiile lor).

1. Verificarea integrității datelor. În acest caz, totul este simplu, această funcție trebuie calculată rapid și vă permite să verificați rapid că, de exemplu, un fișier descărcat de pe Internet nu este corupt în timpul transferului.

2. Creșterea productivității în căutarea datelor. Fixarea dimensiunii blocului vă permite să eliminați prioritatea celor mai importante sarcini de căutare. În acest caz, vorbim despre cele care, pur tehnic, utilizarea unei funcții hash poate avea un impact pozitiv asupra productivității. Pentru astfel de funcții, este și mai important să se stabilească consistența între podgorii și diviziunea garniy.

3. Pentru nevoi criptografice. Acest tip de funcție de încărcare de lucru este limitată în aceste zone de securitate, dar este important ca rezultatele să fie ușor modificate sau este necesar să se facă cât mai ușor extragerea informațiilor necesare din hash.

Unde și cum este creat hașul?

După cum probabil ați ghicit deja, Hash va stagna atunci când sarcina este ridicată. Axa dintre acestea:

1. Parolele sunt salvate în vizualizarea deschisă și în vizualizarea Hash Sum, ceea ce permite un nivel mai ridicat de securitate. Chiar dacă atacatorul refuză accesul la o astfel de bază de date, va trebui să petreacă mult timp încercând să găsească aceste coduri hash pentru textele subiacente. Caracteristica importantă aici este „complexitatea actualizării datelor de ieșire din valoarea Hash”.

Notă: Raju a citit acest articol despre pariurile pentru îmbunătățirea nivelului de securitate a parolei

2. Programat, inclusiv baze de date. Desigur, cel mai adesea vorbim despre structuri de date care permit o căutare rapidă. Doar un aspect tehnic.

3. Sub ora de transfer de date printr-o rețea (inclusiv Internet). Multe protocoale, cum ar fi TCP/IP, includ câmpuri speciale de inversare pentru a înlocui cantitatea de hash a mesajului de ieșire, astfel încât, dacă acesta devine corupt, nu afectează transmiterea datelor.

4. Pentru diverși algoritmi legați de securitate. De exemplu, Hash este stocat în semnături digitale electronice.

5. Pentru a verifica integritatea fișierelor. De fapt, puteți găsi adesea descrieri suplimentare cu un cod hash pe fișiere (de exemplu, arhive) pe Internet. Această autentificare este blocată nu numai pentru a lansa accidental un fișier care a fost corupt în timp ce navigați pe internet, dar există pur și simplu erori la găzduire. În astfel de situații, puteți verifica rapid Hash-ul și, dacă este necesar, apoi reîncărcați fișierul.

6. Unele funcții hash sunt folosite pentru a crea identificatori unici (ca parte). De exemplu, atunci când salvați imagini sau doar fișiere, utilizați vikoryst pentru a utiliza hash în nume împreună cu data și ora. Acest lucru vă permite să suprascrieți fișiere cu aceleași nume.

De fapt, funcțiile hash sunt mai des folosite în tehnologiile informaționale. În principal prin faptul că obligațiile acestor date și dificultățile celor mai simple computere au crescut foarte mult. În primul episod, limbajul este mai mult despre căutare, iar în celălalt, limbajul este mai mult despre securitatea alimentară.

Vedeți funcțiile Hash

Cele mai populare sunt cele trei funcții hash.