Jaukšana ir nefiksēta izmēra burtu un rakstzīmju ievades konvertēšanas process, lai iegūtu fiksēta izmēra izvadi. Šis process tiek veikts, izmantojot matemātiskas formulas, piemēram, jaucējfunkcijas (tiek ieviestas kā jaukšanas algoritmi). 

Lai gan ne visas jaucējfunkcijas izmanto kriptogrāfiju, kriptovalūtas pamatā ir tā dēvētās kriptogrāfiskās jaucējfunkcijas. Pateicoties tiem, blokķēde un citas izplatītās sistēmas var sasniegt augstu datu integritātes un drošības līmeni.

Tradicionālās hašu funkcijas un kriptogrāfiskās hašu funkcijas ir deterministiskas. Determinisms nozīmē, ka, kamēr ievade paliek nemainīga, hašu algoritms vienmēr sniedz to pašu izejas rezultātu (sauktu arī par reprezentāciju vai hašu).

Parasti kriptovalūtu hašu algoritmi ir izstrādāti kā vienvirziena hašu funkcijas, tas nozīmē, ka tos nav viegli pārvērst atpakaļ, neiztērējot daudz laika un resursu. Citiem vārdiem sakot, ir viegli radīt izejas rezultātu no ievades datiem, bet nav iespējams pārvērst to atpakaļ (atrast ievades datus no vienīgā izejas rezultāta). Parasti jo grūtāk ir atrast ievades datus, jo augstāka ir hašu algoritma drošība.


Kā darbojas hašu funkcijas?

Atšķirīgas hašu funkcijas radīs atšķirīgus izejas rezultātus, taču izejas rezultātu izmērs vienmēr būs noteikts un nemainīgs. Piemēram, SHA-256 algoritms var radīt tikai 256 bitu izmēra izejas rezultātus, savukārt SHA-1 algoritms vienmēr radīs 160 bitu izmēra reprezentāciju.

Lai ilustrētu, palaidiet vārdus “Binance” un “binance” caur SHA-256 hašu algoritmu (algoritms, kas tiek izmantots Bitcoin).

SHA-256

Ievade

Ievade (256 biti)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Var redzēt, ka neliela izmaiņa (pirmā burta maiņa uz lielo) noved pie pilnīgi atšķirīgas haša vērtības. Tomēr, kā mēs izmantojam SHA-256, izejas rezultāti vienmēr ir noteikta izmēra - 256 bitu (vai 64 simboli) - neatkarīgi no ievades datu apjoma. Šie divi izejas rezultāti paliek nemainīgi, lai cik reizes mēs šo vārdus palaist caur šo algoritmu.

Savukārt, kad mēs palaidām šos ievades datus caur SHA-1 hašu algoritmu, mēs iegūsim šādus izejas rezultātus:

SHA-1

Ievade

Izeja (160 biti)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


SHA ir saīsinājums no drošu koda algoritmiem (Hash Algorithms). Tas ir kriptogrāfisko hašu funkciju kopums, kas ietver hašu funkcijas SHA-0, SHA-1 un grupas hašu funkcijas SHA-2 un SHA-3. SHA-256, kopā ar SHA-512 un citām hašu funkcijām, pieder grupai SHA-2. Pašlaik tikai grupas SHA-2 un SHA-3 tiek uzskatītas par drošām hašu grupām.


Kāda ir hašu funkcijas nozīme?

Tradicionālās hašu funkcijas ir plaši izmantotas, tostarp datu bāzes meklēšanā, lielu failu analīzē un datu pārvaldībā. Savukārt kriptogrāfiskās hašu funkcijas tiek plaši izmantotas informācijas drošības lietojumos, piemēram, ziņojumu autentifikācijā un digitālajā pirkstu nospiedumā. Kad tās tiek izmantotas Bitcoin, kriptogrāfiskās hašu funkcijas ir būtiska ieguves procesa daļa un palīdz radīt jaunus adreses un atslēgas.

Hašs ir patiešām jaudīgs rīks, kad ir nepieciešams apstrādāt lielu informācijas apjomu. Piemēram, mēs varam palaist lielu failu vai datu kopu caur hašu un pēc tam izmantot tās rezultātu, lai ātri pārbaudītu datu precizitāti un integritāti. Tas ir iespējams, jo hašu funkcijām ir noteikta īpašība: ievade vienmēr noved pie īsas, vienkāršotas (haša) izejas. Pateicoties šai tehnoloģijai, vairs nav jāglabā un “jāatceras” liels informācijas apjoms.

Hašs ir īpaši noderīgs process blokķēdes tehnoloģijā. Bitcoin blokķēdē ir daudzas darbības, kas izmanto hašu procesu, lielākā daļa no tām ir ieguves procesā. Patiesībā gandrīz visi kriptovalūtu protokoli paļaujas uz hašu, lai saistītu un saīsinātu darījumu grupas blokos, kā arī lai radītu kriptogrāfiskus saites starp katru bloku, efektīvi veidojot blokķēdi.


Kriptogrāfiskās hašu funkcijas

Atkal, hašu funkcija, kas īsteno kriptogrāfijas tehnikas, var tikt definēta kā kriptogrāfiskā hašu funkcija. Parasti, lai pārtrauktu kriptogrāfisko hašu funkciju, nepieciešams veikt daudz stipru pūļu. Lai kāds varētu “atjaunot” kriptogrāfisko hašu, viņiem būs jāuzmin, kas ir ievade, izmantojot mēģinājumu un kļūdu procesu, līdz tiek izveidota attiecīgā izeja. Tomēr arī pastāv iespēja, ka dažādas ievades rada to pašu izeju, šādu gadījumu sauc par “konflikti”.

Tehniski kriptogrāfiskajai hašu funkcijai jābūt trim īpašībām, lai to uzskatītu par drošu. Šīs trīs īpašības ir pretkonflikts, pretkonflikts un otrais pretkonflikts.

Pirms runājam par katru īpašību, apskatīsim šīs īpašības.

  • Pretkonflikts: divi atšķirīgi dati nevar radīt to pašu hašu.

  • Pretkonflikts: nav iespējams “atjaunot” hašu (nav iespējams noteikt ievades datus, pamatojoties uz izejas rezultātu).

  • Otrais pretkonflikts: nav iespējams atrast otro ievades datu, kas konfliktētu ar iepriekš noteiktajiem datiem.


Pretkonflikts

Kā aprakstīts, konflikts notiek, kad dažādi ievades dati rada to pašu hašu. Tādējādi hašu funkcija tiek uzskatīta par pretkonfliktu, līdz kāds atrod konfliktu. Ņemiet vērā, ka konflikti vienmēr pastāvēs kādā hašā, jo ievades dati ir bezgalīgi, bet iespējamās izejas var būt ierobežotas.

Citiem vārdiem sakot, hašu funkcija tiek uzskatīta par pretkonfliktu, kad iespēja atrast konfliktu ir ļoti zema, un var paiet miljoni gadi, lai atrastu konfliktu. Tādējādi, lai gan nav nevienas hašu, kas ir pilnīgi izvairāma no konfliktiem, tomēr dažas hašu ir pietiekami spēcīgas, lai tiktu uzskatītas par pretkonflikta (piemēram, SHA-256).

No daudziem SHA algoritmiem grupas SHA-0 un SHA-1 vairs nav drošas, jo ir atklāti konflikti šajās grupās. Pašlaik grupas SHA-2 un SHA-3 tiek uzskatītas par pretkonfliktiem.


Pretkonflikts

Pretkonflikta īpašība ir saistīta ar vienvirziena funkciju jēdzienu. Hašs tiek uzskatīts par pretkonfliktu, kad iespēja atrast datus no kādas izejas ir ļoti zema.

Šī īpašība atšķiras no pirmās īpašības, uzbrucējs izmantos šo īpašību, lai mēģinātu uzminēt ievades datus, pamatojoties uz zināmu izejas rezultātu. Savukārt konflikts notiek, kad divi atšķirīgi ievades dati rada to pašu izejas rezultātu, bet nav svarīgi, kuri ievades dati tika izmantoti.

Pretkonflikta īpašība ir ļoti svarīga, lai aizsargātu datus, jo vienkārši nepieciešams hašs no ziņojuma, lai pierādītu tā autentiskumu, neizpaužot informāciju. Patiesībā daudzi pakalpojumu sniedzēji un tīmekļa lietojumprogrammas glabā un izmanto paroles kā hašus, nevis kā oriģinālo tekstu.


Otrais pretkonflikts

Vienkāršoti sakot, otrais pretkonflikts atrodas starp pirmajām divām īpašībām. Otrais pretkonflikta uzbrukums notiek, kad kāds atrod konkrētus ievades datus, kas rada izejas rezultātu, kas ir līdzīgs citam ievades rezultātam, ko viņi jau zina.

Citiem vārdiem sakot, otrais pretkonflikta uzbrukums ir konflikta meklēšana, bet, nevis meklējot divus nejaušus ievades datus, kas rada to pašu hašu, viņi meklē vienu ievades datu, kas rada hašu, kas ir līdzīgs kādai ievadei, ko viņi jau zina.

Tādējādi hašu, kas izvairās no konfliktiem, arī izvairās no otrā pretkonflikta uzbrukumiem, jo otrais pretkonflikts nozīmē, ka notiks konflikts. Tomēr joprojām var tikt veikts pretkonflikta uzbrukums pret pretkonflikta hašu funkciju, jo tas nozīmē atrast unikālus ievades datus, pamatojoties uz vienu unikālu izejas rezultātu.


Ieguve

Bitcoin ir ļoti daudz soļu, kas izmanto hašu ieguvi, piemēram, bilances pārbaude, datu ievades un izejas rezultātu saistīšana, un darījumu hašošana blokā, lai izveidotu Merkle koku. Bet viens no iemesliem, kāpēc Bitcoin blokķēde ir droša blokķēde, ir tas, ka kalnrači ir spiesti radīt neskaitāmus hašu darbus, lai galu galā atrastu derīgu risinājumu nākamajam blokam.

Konkrēti, kalnračiem ir jāizmēģina dažādi ievades dati, kad viņi veido haša vērtību savam potenciālajam blokam. Patiesībā kalnrači var apstiprināt savu bloku tikai tad, ja viņi rada izejas hašu, kas sākas ar noteiktu skaitu 0. 0 skaits nosaka ieguves grūtības pakāpi, un šī grūtība mainās atkarībā no tīkla hašu ātruma.

Šajā gadījumā hašu ātrums attēlo izmantotās datoru jaudas apjomu, lai iegūtu Bitcoin. Ja tīkla hašu ātrums palielinās, Bitcoin protokols automātiski pielāgo ieguves grūtības pakāpi, lai vidējais laiks, kas nepieciešams, lai iegūtu bloku, saglabātos 10 minūtēs. Savukārt, ja daži kalnrači pārtrauc ieguvi, samazinot hašu ātrumu ievērojami, ieguves grūtības pakāpe tiks pielāgota, tādējādi padarot ieguvi vieglāku (līdz brīdim, kad vidējais laiks, kas nepieciešams, lai iegūtu bloku, atkal sasniedz 10 minūtes).

Pievērsiet uzmanību, ka kalnrači nav jāatrod konflikti, jo ir daudz hašu, ko viņi var radīt kā derīgus izejas rezultātus (sākot ar noteiktu 0 skaitu). Tādējādi ir vairāki risinājumi, kā iegūt konkrētu bloku, un kalnrači vienkārši jāatrod viens no tiem - atbilstoši sliekšņiem, kas noteikti no ieguves grūtības.

Tā kā Bitcoin ieguve ir dārga uzdevums, kalnrači nav iemesla krāpties sistēmā, jo tas radītu ievērojamas finansiālas zaudējumus. Jo vairāk kalnraču piedalās blokķēdē, jo spēcīgāka kļūst šī blokķēde.


Secinājums

Var apgalvot, ka hašu funkcijas ir būtiski rīki informātikā, it īpaši, apstrādājot milzīgus datu blokus. Apvienojot ar kriptogrāfiju, hašu algoritmi var tikt izmantoti elastīgi, nodrošinot drošību un autentifikāciju dažādos veidos. Tādējādi kriptogrāfiskās hašu funkcijas ir būtiska loma lielākajā daļā kriptovalūtu tīklu, tāpēc izpratne par šo funkciju īpašībām un darbības mehānismiem noteikti būs noderīga tiem, kas interesējas par blokķēdes tehnoloģiju.