Kryptovaluutan perusteet: hajautuksen perusteet ja historia

Hajauttamisen historia

Geneerinen hajautusfunktio on erityinen ohjelmointitoiminto, jota käytetään mielivaltaisen koon tietojen kartoittamiseen kiinteä koko. Hash-toiminnot ovat syntyneet tarpeesta puristaa tietoja suurten tiedostojen tallentamiseen tarvittavan muistin määrän vähentämiseksi. Hajautusfunktion suosituin käyttötapaus on toinen erityinen tietorakenne nimeltä a hash-taulukko, jota käytetään laajasti tietojen nopeaan hakuun. Hash-toiminnot auttavat nopeuttamaan taulukon tai tietokannan hakua havaitsemalla kaikki kaksi täsmälleen samaa hajautusta.

Ne auttavat myös minimoimaan valtavien tiedostojen, kuten mp3, PDF tai kuvat, tunnisteet, jotta näiden melko suurten tiedostotyyppien käsittely olisi hallittavissa. Nopeaan tunnistamiseen hash-toimintojen keskeinen vaatimus on, että ne tulostaa kiinteän pituisen aakkosnumeerisen merkkijonon.

Vaikka ydin syy hash-toiminnon syntymiseen tuli tarpeesta pakata sisältöä, toissijaisesta hyödystä tuli pian hajautuksen pääosa: yksittäin yksilölliset tunnisteet. Ihannetapauksessa, kun hajautetaan useita viestejä, ei kahta erilaista viestiä koskaan tule palauttaa samaa hajautusta. Kaksi erilaista tiivistettyä viestiä, jotka johtavat samaan lähtöhajautukseen, kutsutaan a törmäys.

Tietokannan hallinnan näkökulmasta tämä tarkoittaisi, että kaksi erilaista objektia päätyy varastoitumaan samaan soluun – ei ole hyvä, jos halutaan määritellä yksitellen yksilöllisiä tunnisteita. Jos katsomme hash-funktion kanssa ääretön tulo (mikä tarkoittaa, että voimme hajauttaa minkä tahansa merkkijonon), voimme johtaa juuri sen, miksi törmäykset ovat itse asiassa väistämätöntä.

Kyyhkyaukon periaate

Salausmatematiikassa on käsite nimeltä kyyhkysreikäperiaate jossa todetaan, että jos sovitamme (n) elementtiä (m) tiloihin missä n > m, silloin periaatteessa on ainakin yksi tila (m), jonka vievät useampi kuin kaksi elementtiä (n).

Esimerkiksi viisi henkilöä tarkistaa takinsa yhdessä kolmesta saatavilla olevasta takki-pennusta. Kyyhkysreikaperiaatteen mukaan, koska varastoitujen kerrosten määrä (n) on suurempi kuin käytettävissä olevat cubbies (m), on taattu, että ainakin yhdessä cubbessa on enemmän kuin yksi kerros.

Tyypillisesti ohjelmistoinsinöörit ovat kiinnostuneita hash-toiminnoista ääretön verkkotunnus (toisin sanoen he ottavat kaiken mahdollisen pituisen syöttöjonon) ja a rajallinen alue. Jälleen kyyhkysreikaperiaatetta noudattaen, koska alueemme (n) on pienempi kuin toimialueemme (m), seuraa, että vähintään yhden törmäyksen on oltava olemassa. Tehokas hajautusfunktio näyttää siis vain minimoivan törmäysten määrän – miksi tämä asia tulee selvemmäksi hetkessä, mutta palataan nyt palaamaan hajautusten historiaan.

Hajautusfunktiot ovat peräisin tiukasti tietokannan ylläpidosta & hallinnan tarpeet, jotka suosivat ennen kaikkea nopeutta, niiden hyödyllisyys kehittyi nopeasti. Erityinen hash-toimintojen haara, joka suosi yksityisyyttä ja turvallisuutta, & läpinäkyvyys tuli pian kentälle; haaran hash-toimintoja, jotka pysyvät tämän artikkelin painopisteenä: salauksen hajautusfunktiot.

Salaushajautus

Salausfunktiot, kuten nimestä osuvasti käy ilmi, suosivat ehdottomasti keskeytymättömien viestien säilyttämistä. Vaikka törmäysten minimointi on hyvä käytäntö muille hash-toiminnoille, erityisesti salaustoiminnoille, törmäysten minimointi on a vaatimus. Sen sijaan, että maksimoidaan nopean tietokannan tai taulukkohaun skenaarion hyödyllisyys, salauksen hajautusfunktiot rakennetaan ottamalla huomioon kontradiktorinen skenaario: sellainen, jossa koodinvaihtaja (salausanalyytikko) yrittää aktiivisesti aiheuttaa törmäyksen. Määritämme nyt vakiomaiset hajautusfunktiomerkinnät & luoda hash-toimintaperiaatteet salauksen näkökulmasta.

Hash-toiminnon merkintä

Yleisellä kryptografisella hajautusfunktiolla on kaksi tuloa: viesti, jonka se pakkaa, tai hajautus (x) & julkinen avain (avaimet), joka edustaa hashemme kiinteän pituista lähtöä aakkosnumeerisilla merkeillä. Hajautettua tulosta kutsutaan sanan sulatukseksi tai yksinkertaisesti tiivistelmäksi (x *). Tämä näyttää seuraavalta:


H (s, x) = x *

Kiihdytetään tätä merkintää kävelemällä läpi tosielämän esimerkki, joka hajauttaa merkkijonon aiemmin vakiomaisella hajautusfunktiolla nimeltä MD5. Sano, että haluamme käyttää MD5: tä “Hei maailma!” merkkijono. Tiedämme myös, että MD5 antaa oletusarvoisesti aina 128-bittisen merkkijonon (0: t & 1). Tämä merkintä näyttää seuraavalta:

H (128, x) = ed076287532e86365e841e92bfc50d8c

Itse asiassa, jos jatkat & yritä tarjota MD5-hash-toiminto “Hello World!” itse sinun pitäisi nähdä täsmälleen sama tuloksena oleva hash. Mahtava. Siirrytään nyt eteenpäin asettamaan törmäysmerkintä; edellisten muuttujien lisäksi H, s, x, & x * esitämme nyt toisen viestin (x ’). Numeerisesti törmäys tapahtuu, kun hajautetaan kaksi erillistä viestiä (x & x ’) tuottaa täsmälleen saman viestin tiivistelmän (x *):

Jos H (128, x) = H (128, x ’), hash-funktion (H) sanotaan olevan törmäys x: ssä & x ’.

Olemme nyt asettaneet merkinnän nykyiselle hash-funktion salauksen tunnusmerkille; jos vastustaja voi käytännössä (laskennallisesti) aiheuttaa törmäyksen, hash-toimintoa ei enää pidetä käytännössä turvallisena.

Päätösajatukset seuraavaan kertaan asti

Viimeinen matemaattinen määritelmä on paikka, jossa kiehtova saalis-22 hash-funktion käytännöllisyydelle elää. Hash-toiminnot ovat alkaneet tarpeesta pakata & tulostaa standardoidut yhtenäiset tiedot tallennuksen helpottamiseksi, mikä tarkoittaa, että ne sylkevät a. näennäissatunnaiset merkkijonot kiinteä pituus. Silti luoda a täysin törmäyskestävä hash-toiminto, jokaisella yksittäisellä viestillä (x) olisi oltava hajautettu lähtö sama pituus kuin tulo. Ilman kiinteän pituisia hajautuksia menetämme kykymme käyttää niitä kätevänä tietorakenteena, mutta määrittelemällä kiinteän pituuden, hajautustoimintomme ei ole täysin törmäysvapaa.

PS – Olen varma, että jotkut älykkäistä evästeistä huomasivat, että MD5-esimerkissämme merkitsimme hash-funktion, joka palauttaa merkkijonon 128, vielä “Hello World!” hash palautti a 32 aakkosnumeerinen merkkijono. Tule takaisin seuraavan kerran & menemme syvemmälle hash-funktioihin selittääkseen, mistä tämä ero johtui.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map