Što je hash i što je potrebno? Hash i hash kriptoval što je hash u sekundi

Pokušajmo razumjeti što je složenost mreže, koja je uplašena svim novim rudarima i kakvu je vrstu mreže za holsteriju.

Sada postoji toliko mnogo chat chats kriptokuncy i trgovanje. Svako pitanje pridošlica "Što je asic kupiti ili što farma za okupljanje" prati odgovor ... "Da, vidite kako složenost mreže raste i ne razmišlja o tome!"

Za jednostavnost, mi ćemo razmotriti složenost i kućište mreže na primjeru novčića (analog eterija, na sličnom algoritmu). Brojevi su manje i nadaju mi \u200b\u200bse da će vam biti lakše objasniti bit.

Mreža svake kriptokuncije ima takav parametar kao "vrijeme stvaranja bloka". U slučaju musicoin je 15 sekundi. Svakih 15 sekundi jedan od rudara bi trebao pronaći rješenje za stvaranje bloka.

Kako zadržati ovaj parametar za 15 sekundi, bez obzira na broj rudara koji su spojeni na mrežu? Uostalom, ako ima mnogo rudara, prečesto će pronaći blokove (ovdje je primjer praznog bloka u UBIQ mreži http://www.ubqu.cc/block/212214), i ako su rudari mali, onda će Blokovi će biti rijetko i mrežne transakcije će ići jako dugo.

Za pronalaženje 1 bloka u mailicama ili bazenu za glazbu (mnogo rudara zajedno) dobivate 309 glazba \u003d $ 13 kovanica na današnjem tečaju.

Povlačenje. U mreži, Etherom za pronalaženje jednog bloka plaća se 5 eth \u003d $ 1900, u mrežnom eteriju Classic 5 itd \u003d $ 75. Ali, nažalost, složenost i Hashiret mreže u tim kovanicama su mnogo puta više.

Ako rudari će proizvesti prazne blokove i primiti novac za nju - novčić će biti amortiziran, a ako blokovi pronađu polako - transakcije će ustati ... opet, novčić će biti amortiziran.

Složenost počinje raditi ovdje. Ako na prstima, onda je to samo složenost zadatka da se utičnica treba riješiti kako bi se stvorio blok i može se promijeniti. Složenost ovisi o nizu mreže (broj rudara povezanih s mrežom ovog novčića). Ako rudari nisu dovoljni - složenost pada ako su rudari mnogo - složenost počinje rasti, a jedan betonski stroj je teže pronaći blok ...

Mainik nagrađivanja dobivaju u novčićima same mreže, ali svi rudari vole dobre automobile, hranu i krpe. Stoga je za njih važno koliko je u američkim dolarima, jer ako je cijena kovanice narasla na burzi, onda je vrijednost naknade za pronalaženje bloka postala više u zloglasnim američkim dolarima.

Neki dan, 27. kolovoza (vidi grafikon iznad) Cijena glazbenica kovanica narasla je na vrijeme, rudari koji su bili angažirani u nasuminju zcash novčića, Ethyurium, Monero ... Achuli u očekivanju Više profita i prebacio njihove farme na novac Musioniin , U isto vrijeme, sama mreža MusionOin, naravno, odgovorila je oštrim povećanjem složenosti.

Složenost se mjeri u hash (obično Terrarahchs th), u uporabi rudarstvu, ovu jedinicu završenog rada. Mrežna snaga (broj rudara) mjeri se u hashas u sekundi (th / s). Sam mreža prilagođava složenost tako da složenost / snaga mreže \u003d vrijeme do sljedećeg bloka (u slučaju Musicoin 15 sekundi).

27. kolovoza na polijetanje kompleksnosti cijene mreže je: 7.5 u prosjeku, a Odemija mreže: 500 GH / s (oko 16.000 video kartica), a zatim nakon polijetanja, cijena mreže je narasla na: 1.12. / S (1120 g / s) (približno 35000 video kartica), a složenost je u isto vrijeme krenula na 16.728.

Kao rezultat toga, dobit na farmi, koja je minirala kovanica prije polijetanja cijena, a cijena se nije promijenila nakon polijetanja. Farma je počela proizvoditi manje kovanica, ali za veću cijenu (farma nije važna ili cijeli bazen farmi).

Ovo je ključna točka koju mnogi ljudi ne razumiju. Da, možete povući nekoliko dolara u ovim skokovima, ali, u pravilu, sve se miješa za nekoliko sati, a ne u osnovi u kojoj ćete valuti biti proizvedeni na istom algoritmu. Ispušni plin će biti isti. Naravno, ako čekate jednu ili drugu valutu, kopajte ga.

Potrebno je napraviti još jednu digresiju, postoje ljudi koji pažljivo slijede složenost i hashier ... sve mreže su okrugli dan i u trenucima kada će hesreite pasti ili složenost šalje, kupujete moć na lijepi priznati kovanice. I uhvatimo mnogo blokova.

Zapravo, zaključak: Zamislimo da postoji samo jedna valuta. HESREITE MREŽA ETROMER kontinuirano raste, sve više i više novih rudara dolazi. Ako je tijek eterija pada, a broj rudara će biti nepromijenjen (ili će rasti još gore), rudarstvo će doći na razinu utičnice (koliko je raširena $, toliko plaćena za električnu energiju). U takvoj situaciji, farma će početi isključiti i prodati, složenost će početi padati, a prihodi ponovno rastu.

Preživljava najjači i onaj koji ima novac ponekad čekaju glavni na izlazu.

Mnogi miminat ili Minnieli, ili će početi Maja, odabiru se opremu do maksimuma nekih žičaha tamo. Što su ove stvari?

Kao što znate, kriptokuncy (uzeti Bitcoin) je miniran kao rezultat rješavanja matematičkih problema. Ali zašto je Bitcoin generiran na ovaj način? Da biste to učinili, morate razumjeti vrijednost takvog procesa kao kriptografske hash ili hashing. Dakle, hashing je promjena u dolaznim podacima različitih veličina u početne podatke jasno određene veličine, koristeći poseban algoritam (pravila).

Shvatimo zašto je potrebno. Pretpostavimo da posjedujemo računalnu mrežu ili zatvorenu bazu podataka u koju možete dobiti samo pomoću prijave i lozinke. Ljudi su registrirani s tisućama nas, uvođenje tih podataka. Sada zamislite što će se dogoditi ako netko posjeduje pristup vašoj računalnoj mreži. Oni će dobiti osobne podatke ogromnog broja drugih ljudi. To je za to da se to ne dogodi, a izumljen je kriptografski hash.

Tako radi: proces raspršivanja dobiva podatke, kao što je lozinka, i obrađuje tih ulaza kroz poseban algoritam koji stvara veliki broj pod nazivom "Hash". Hash ima dva ključna posebna svojstva.

  1. Prvo, jedan i isti ulazni podaci uvijek odgovaraju istom broju. To jest, ako ćete svaki put unijeti istu lozinku, Hash će generirati isti broj na izlazu, što odgovara tome.
  2. Drugo, hashing je jednosmjerni proces. Gotovo je nemoguće uzeti značenje hash i uz pomoć obrnutog razvoja kako bi otkrio što je na ulazu. Dakle, nemoguće je otići iz obrnutog i unositi hash vrijednost, to jest, najveći broj, za određivanje lozinke. Zahvaljujući ove dvije hash stavke i koristi se kao neovisna metoda obrade podataka. Ako je proces bio reverzibilan, to bi se zvalo ne hashing, ali staro dobro šifriranje / dešifriranje da je u suvremenom svijetu neučinkovit.

Sada kako radi za još jednostavniji primjer. Registrirajte se na web-lokaciji, unesite zaporku. Sustav ga obrađuje i generira hash koji odgovara vašoj lozinki. U isto vrijeme, sama lozinka nije spremljena. A sada, kada dođete na ovu stranicu i unesete ovu lozinku, sustav će generirati hash, usporediti ga s pohranjenom vrijednošću i odobriti pristup slučajnosti. I hakeri, hakiranje sustava, primit će samo niz izmaglice, apsolutno beskoristan da biste dobili lozinku.


U ovom sustavu postoji samo jedan nedostatak - ako zaboravite lozinku, ne može se obnoviti. Sustav ne pohranjuje vaše lozinke, stoga ih ne može poslati. Međutim, u ekstremnim slučajevima, lozinku se može resetirati, slati ćete privremenu lozinku, prolaziti kroz koji možete ponovno postaviti. Ovaj nedostatak, po mom mišljenju, nije kritičan, osobito protiv pozadine sigurnosti raspršivanja.

A sada se vratite na temu Bitcoin i na činjenicu da je to za računalne zadatke, rješenje koje vam dodjeljuje s dragocjenim bitcoinima. Dakle, ranije smo rekli da uz pomoć hash ne možete odrediti svoju zaporku. Međutim, način da naučite tu vrijednost još uvijek postoji. To se naziva "metodom grube moći" ili drugim riječima - kombinacije se brutuksiraju do trenutka dok ne pogodi i vrijednost se ne podudara s Hash.

Zamislite da je Bitcoin protokol izdao zadatak - pogoditi broj 5, a ukupni brojevi su milijun. Vaše šanse za rješavanje ovog problema iznose 1 do milijun. Ako mreža želi pojednostaviti zadatak, postavlja raspon brojeva, recimo od 1 do 100, a vaše su šanse već 100 do milijun. Ako trebate komplicirati zadatak, proširite raspon, a sada morate pogoditi jedan broj ne od milijun, već od milijardu vrijednosti. Upravo je to matematički zadatak - potrebno je da broj koji odgovara određenom hash.

Hash se ažurira svakih 10 minuta, a prvo računalo, rješavanje zadatka, dobiva nagradu. Ali danas je raspon brojeva iz koje treba pronaći pravu stvar je ogromna. Svi Bitcoin-rudari svijeta zajedno procesuiraju minutu oko 50.000.000.000.000 doprinos vrijednosti u sekundi u pokušaju da pokupi ključ za navedenu hash.

Bitcoin mreža redovito prati brzinu rješavanja problema, a ako je riješeno mnogo brže od 10 minuta, učinite sljedeći teže. Ako se ne ulože u 10 minuta, sljedeći će biti lakši. Čim je prvo računalo odlučilo zadatak, to pokazuje svoje rješenje za sve sudionike koji provjeravaju ovu odluku, a pri potvrđivanju slučajnosti Heshema, on prima nagradu, a novi ciklus počinje sljedeće.

Navedeno je grafikon rasta u poteškoćama, tako da odabira oprema za rudarstvo bolje je umetnuta s dobrom napajanjem i brzinom izračuna.

Algoritmi gudača pomažu u rješavanju mnogo zadataka. Ali oni imaju mnogo nedostataka: najčešće nisu 100%, jer postoje mnoge linije čije se hashees podudaraju. Još jedna stvar je da u većini zadataka ne možete obratiti pozornost na to, budući da je vjerojatnost da je slučajnost i dalje vrlo mala.

Hash Definicija i njezin izračun

Jedan od najboljih načina za određivanje hash funkcije iz string je sljedeće:

H (s) \u003d s + s * p + s * p ^ 2 + s * p ^ 3 + ... + s [n] * p ^ n

gdje je P broj.

Razumno je odabrati za p a jednostavan broj, približno jednak broju znakova u ulaznoj abecedi. Na primjer, ako se pretpostavljaju da se nizovi koji se sastoje samo od malih latinskih slova, tada će dobar izbor biti p \u003d 31. Ako slova mogu biti kapital, i mali, zatim, na primjer, mogu p \u003d 53.

U svim dijelovima koda, u ovom članku će se koristiti p \u003d 31.

Hashina vrijednost je poželjno pohranjena u najvećem numeričkom tipu - INT64, on je dugo dugo. Očito, s dužinom dužine oko 20 znakova, pojavit će se preljev vrijednosti. Ključna točka je da ne obraćamo pozornost na ove preljeve, kao da uzimate hash u modulu 2 ^ 64.

Primjer izračuna Hash, ako su dopuštene samo mala latinska slova:

COST INT P \u003d 31; Dugačak dugačak hash \u003d 0, p_pow \u003d 1; za (veličine_t i \u003d 0; ja

U većini zadataka ima smisla najprije izračunati sve potrebne stupnjeve P u bilo kojem nizu.

Primjer. Potražite identičan niz

Već sada možemo učinkovito riješiti takav zadatak. Popis nizova s, svaka duljina ne više od m znakova. Pretpostavimo da želite pronaći sve repetitivne linije i podijeliti ih u skupine tako da u svakoj grupi postojale su samo iste linije.

Dobili bismo algoritam sa složenošću o (n m log n), dok koristite hashi, dobivamo o (n M + n log n).

Algoritam. Izračunajte hash iz svake linije i razvrstajte linije duž ove hash.

Vektor S N); // ... Redovi za čitanje ... // Smatramo da sve stupnjeve p, dopuštaju, do 10.000 - maksimalnu duljinu žica konstantne int p \u003d 31; Vektor p_pow (10.000); p_pow \u003d 1; za (veličine_t i \u003d 1; ja \u003e Hashes (n); za (int i \u003d 0;

Hish podniz i njegov brz izračun

Pretpostavimo da nam dajemo liniju, a dani su indeksi I i J. Trebalo je pronaći hash iz podvijedbe S.

Po definiciji, imamo:

H \u003d S [i] + S * P + S * P ^ 2 + ... + S [J] * P ^ (J-I)

H * P [i] * P [i] + ... + S [j] * p [j], h * p [i] \u003d h - h

Dobivena imovina je vrlo važna.

Doista, ispada da znajući samo Hashi iz svih prefiksa S reda, možemo za O (1) dobiti hash bilo koji podniz.

Jedini problem koji nastaje je ono što trebate biti u mogućnosti podijeliti na p [i]. Zapravo, nije tako lako. Budući da izračunavamo hash u modulu 2 ^ 64, zatim za dijeljenje na p [i], moramo pronaći obrnuti element na njega u polju (na primjer, koristeći produženi euklidni algoritm) i množenjem ovog obrnutog elementa.

Međutim, postoji jednostavniji način. U većini slučajeva, umjesto dijeljenja Hashi do stupnjeva P, moguće je, naprotiv, umnožavajući ih na ove stupnjeve.

Pretpostavimo da su dane dvije hash: jedan pomnožen s p [i], a drugi na p [j]. Ako ja.< J, то умножим перый хэш на P, иначе же умножим второй хэш на P. Теперь мы привели хэши к одной степени, и можем их спокойно сравнивать.

Na primjer, kod koji izračunava hashi od svih prefiksa, a zatim za O (1) uspoređuje dva podloga:

String s; int i1, i2, Len; // ulazni podaci // smatramo da su svi stupnjevi p konst int p \u003d 31; Vektor I2 && h1 \u003d\u003d h2 * p_pow) cout<< "equal"; else cout << "different";

Izležan

Ovdje su neke tipične aplikacije za raspršivanje:

  • Određivanje broja različitih podnizaka za O (n ^ 2 log n) (vidi dolje)
  • Određivanje broja palindroma unutar niza

Određivanje broja različitih podniza

Neka se string s duljini n, koji se sastoji samo od malih latinskih slova. Mora se naći broj različitih podniza u ovom redu.

Da biste riješili duljinu duljine podnizle: L \u003d 1 ..

Za svaki L, konstruiramo niz hash podnizljive duljine l, a mi ćemo dati hash u jednom stupnju i sortirati ovaj niz. Broj različitih elemenata u ovom nizu dodaje se na odgovor.

Prodajni:

String s; // ulazni niz int n \u003d (int) s.lth (); // smatramo da sve stupnjeve p konstruiranja int p \u003d 31; Vektor P_pow (s.lthngth ()); p_pow \u003d 1; za (veličine_t i \u003d 1; ja H (s.lthngth ()); za (veličine_t i \u003d 0; i HS (N-L + 1); za (int i \u003d 0;

Što je hash?Hash Funkcija se naziva matematička transformacija informacija u kratkom, određenom nizu dužine.

Zašto to trebate?Analiza korištenjem HASH funkcija se često koristi za praćenje cjelovitosti važnih datoteka operativnog sustava, važnih programa, važnih podataka. Kontrola se može obaviti i po potrebi i redovito.

Kako se radi?Isprva odredite koji se moraju pratiti integritet od kojih datoteke. Za svaku datoteku izračunava se za izračunavanje vrijednosti njegovog hash-a preko posebnog algoritma uz zadržavanje rezultata. Nakon traženog vremena stvara se sličan izračun i rezultati se uspoređuju. Ako se vrijednosti razlikuju, to znači da su informacije sadržane u datoteci promijenjene.

Koje karakteristike treba imati funkciju hash?

  • mora biti u stanju obavljati transformacije podataka proizvoljne duljine na fiksne;
  • mora imati otvoreni algoritam tako da se može istražiti njegov kriptoskop;
  • mora biti jednostrano, odnosno ne bi trebalo biti matematičkih sposobnosti određivanjem izvornih podataka;
  • mora "odoljeti" sukobima, to jest, ne bi trebalo dati iste vrijednosti s različitim ulaznim podacima;
  • ne bi trebalo zahtijevati velike računalne resurse;
  • uz najmanju promjenu ulaznih podataka, rezultat se mora značajno promijeniti.

Koji su popularni algoritmi hashing?Trenutno se koriste sljedeće hash funkcije:

  • CRC - ciklički višak koda ili kontrolni zbroj. Algoritam je vrlo jednostavan, ima veliki broj varijacija ovisno o potrebnoj duljini izlazne duljine. Ne kriptografski!
  • MD 5 je vrlo popularan algoritam. Kao i njezina prethodna verzija MD 4 je kriptografska funkcija. Hesha Veličina 128 Bitova.
  • SHA -1 je također vrlo popularna kriptografska konfonnaction. Hesha veličina 160 bitova.
  • GOST R 34.11-94 - ruski kriptografski standard za izračunavanje hash funkcija. Hesha veličine 256 bita.

Kada ovi algoritmi mogu koristiti administrator sustava?Često prilikom preuzimanja bilo kojeg sadržaja, kao što su programi proizvođača, glazbe, filmova ili drugih informacija, postoji vrijednost kontrolnog zbroja izračunatog određenim algoritmom. Iz sigurnosnih razloga, nakon preuzimanja potrebno je provesti neovisni izračun HASH funkcije i usporediti vrijednost s onim što je navedeno na web stranici ili u aplikaciji u datoteku. Jeste li ikad to učinili?

Što je prikladnije brojati hash?Sada postoji veliki broj sličnih komunalnih usluga plaćenog i slobodnog korištenja. Osobno mi se sviđa Hashtab. Prvo, uslužni program tijekom instalacije ugrađen je u obliku kartice na svojstva datoteka, drugo, omogućuje vam da odaberete veliki broj algoritama raspršivanja, a treće je besplatno za privatnu nekomercijalnu uporabu.

Što je ruski?Kao što je gore spomenuto u Rusiji, postoji standard goshing GOST R 34.11-94, koji se koristi svugdje u mnogim proizvođačima informacijske sigurnosne alate. Jedan od tih sredstava je program za popravak i kontrolu početnog stanja softvera za popravak. Ovaj program je sredstvo za kontrolu učinkovitosti primjene SZI.

Fix (verzija 2.0.1) za Windows 9x / NT / 2000 / XP

  • Izračunajte provjere navedenih datoteka jednim od 5 implementiranih algoritama.
  • Fiksiranje i naknadna kontrola izvornog stanja softveranog paketa.
  • Usporedba verzija softveranog paketa.
  • Fiksacija i kontrola kataloga.
  • Praćenje promjena u određenim datotekama (direktorija).
  • Formiranje izvješća u TXT, HTML, SV formata.
  • Proizvod ima potvrdu o FSTEC-u na NDV 3 br. 913 do 1. lipnja 2013. godine.

I kako o EDS-u?Rezultat izračuna funkcije zajedno s tajnim ključem korisnika ulazi u ulaz kriptografskog algoritma, gdje se izračunava elektronički digitalni potpis. Strogo govoreći, hash funkcija nije dio algoritma EDS-a, ali često se to čini posebno, kako bi se isključio napad pomoću javnog ključa.

Trenutno, mnoge aplikacije e-trgovine omogućuju vam pohranjivanje tajnog ključa korisnika u zatvorenom području tokena (rutoken, etokenirani) bez tehničke sposobnosti da ga izvuku odatle. Sam token ima vrlo ograničeno područje memorije, mjereno u kilobajci. Da biste potpisali dokument, ne postoji mogućnost prijenosa dokumenta na sam znak, ali za prijenos hash dokumenta na token i na izlazu da biste dobili EDS je vrlo jednostavan.