Jaukšana attiecas uz fiksēta izmēra izvades izveides procesu no mainīga izmēra ievades. Tas tiek darīts, izmantojot matemātiskas formulas, kas pazīstamas kā jaucējfunkcijas (tiek ieviestas kā jaukšanas algoritmi).

Lai gan ne visas jaucējfunkcijas izmanto kriptogrāfiju, digitālo valūtu pamatā ir tā sauktās kriptogrāfiskās jaucējfunkcijas. Pateicoties tiem, blokķēdes un citas sadalītās sistēmas spēj sasniegt ievērojamu datu integritātes un drošības līmeni.

Gan tradicionālās, gan kriptogrāfiskās jaucējfunkcijas ir determinētas. Determinisma nozīme ir tāda, ka, kamēr ievade(-s) nemainās, jaukšanas algoritms vienmēr radīs vienu un to pašu izvadi (pazīstams arī kā Digest vai Hash).

Kriptovalūtas jaukšanas algoritmi parasti tiek veidoti kā vienvirziena funkcijas, kas nozīmē, ka tos nevar viegli atsaukt bez ievērojama laika un skaitļošanas resursu daudzuma. Citiem vārdiem sakot, ir ļoti viegli iegūt izejas no ieejām, bet salīdzinoši grūti izdarīt pretējo (iegūt ievadi tikai no izvadiem). Kopumā, jo grūtāk ir atrast ievadi, jo drošāks ir jaukšanas algoritms.


Kā darbojas jaucējfunkcijas?

Dažādas jaucējfunkcijas rada dažāda lieluma izvades, taču iespējamie izvades izmēri katram jaukšanas algoritmam vienmēr ir fiksēti. Piemēram, SHA-256 var radīt tikai 256 bitu izvadi, savukārt SHA-1 vienmēr ģenerē 160 bitu īssavilkumu.

Lai ilustrētu, izpildīsim vārdus “Binance” un “binance”, izmantojot SHA-256 jaukšanas algoritmu (kas tiek izmantots Bitcoin).

SHA-256

Ievade

Izvade (256 biti)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Ņemiet vērā, ka nelielas izmaiņas (pirmā burta formā) radīja pavisam citu jaucējvērtību. Bet, tā kā mēs izmantojam SHA-256, izvadei vienmēr būs fiksēts 256 bitu (vai 64 rakstzīmju) lielums neatkarīgi no ievades lieluma. Tāpat nav nozīmes tam, cik reizes mēs palaižam divus vārdus, izmantojot algoritmu, jo abi izvadi paliks nemainīgi.

Un otrādi, ja mēs palaižam to pašu ievadi, izmantojot SHA-1 jaukšanas algoritmu, mēs iegūsim šādus rezultātus:

SHA-1

Ievade

Izvade (160 biti)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Ir vērts atzīmēt, ka vārds SHA ir saīsinājums no Secure Hash Algorithms. Tas attiecas uz kriptogrāfisko jaucējfunkciju kopu, kas ietver SHA-0 un SHA-1 algoritmus, kā arī SHA-2 un SHA-3 kombinācijas. SHA-256 ir daļa no SHA-2 komplekta kopā ar SHA-512 un citiem variantiem. Pašlaik tikai SHA-2 un SHA-3 bloki tiek uzskatīti par drošiem.


Kāpēc tas ir svarīgi?

Tradicionālajām jaucējfunkcijām ir plašs izmantošanas gadījumu klāsts, tostarp datu bāzu meklēšana, lielu failu analīze un datu pārvaldība. Savukārt kriptogrāfijas jaucējfunkcijas tiek plaši izmantotas informācijas drošības lietojumprogrammās, piemēram, ziņojumu autentifikācija un digitālā pirkstu nospiedumu noņemšana. Attiecībā uz Bitcoin kriptogrāfijas jaucējkrāni ir būtiska ieguves procesa sastāvdaļa, un tiem ir arī nozīme jaunu adrešu un atslēgu ģenerēšanā.

Segmentācijas patiesais spēks rodas, strādājot ar milzīgu informācijas daudzumu. Piemēram, lielu failu vai datu kopu var palaist, izmantojot jaucējfunkciju, un pēc tam izmantot tās izvadi, lai ātri pārbaudītu datu precizitāti un integritāti. Tas ir iespējams jaucējfunkciju deterministiskā rakstura dēļ: ievades vienmēr noved pie vienkāršotām, saīsinātām (jaukšanas) izvadēm. Šī tehnoloģija novērš nepieciešamību uzglabāt un atcerēties lielu datu apjomu.

Jaukšana ir īpaši noderīga blokķēdes tehnoloģijas kontekstā. Bitcoin blokķēde satur daudzas darbības, kas ietver jaukšanu, no kurām lielākā daļa ir ieguves procesā. Faktiski gandrīz visi kriptovalūtas protokoli balstās uz jaukšanu, lai saistītu darījumu kopas un apkopotu tās blokos. Un arī izveidot kriptogrāfiskas saites starp katru bloku, efektīvi izveidojot blokķēdi.


Kriptogrāfiskās jaucējfunkcijas

Atkal, jaucējfunkciju, kas izmanto kriptogrāfijas metodes, var definēt kā kriptogrāfijas jaucējfunkciju. Jaukšanas funkcijas uzlaušanai ir nepieciešami neskaitāmi brutāla spēka uzbrukumi. Lai jaucējfunkcija tiktu apgriezta, viņiem izmēģinājumu un kļūdu ceļā ir jāuzmin ievade, līdz tiek iegūta atbilstošā izvade. Taču dažādas ievades var arī radīt vienu un to pašu izvadi, un tādā gadījumā notiek “sadursme”.

Tehniski kriptogrāfiskai jaukšanas funkcijai ir jāievēro trīs īpašības, lai to uzskatītu par efektīvi drošu. Šīs īpašības mēs varētu raksturot kā sadursmes pretestību, priekšattēla pretestību un otrā priekšattēla pretestību.

Pirms apspriest katru īpašumu, apkoposim to argumentāciju trīs īsos teikumos.

  • Sadursmes pretestība: nav iespējams atrast divus dažādus ievades datus, kas rada tādu pašu jaucējkodu kā izvade.

  • Priekšattēla pretestība: jaucējfunkciju nevar “apgriezt” (atrodiet ievades no norādītajām izejām).

  • Otrā priekšattēla pretestība: nevar atrast otru ievadi, kas saduras ar citu norādīto ievadi.


Sadursmes pretestība

Kā minēts iepriekš, sadursme notiek, ja dažādas ievades rada tieši tādu pašu jaucējfunkciju. Tādējādi jaucējfunkcija ir izturīga pret sadursmēm līdz brīdim, kad kāds konstatē sadursmi. Ņemiet vērā, ka sadursmes vienmēr pastāvēs jebkurai jaukšanas funkcijai, jo iespējamās ievades ir bezgalīgas, bet iespējamās izejas ir ierobežotas.

Citiem vārdiem sakot, jaucējfunkcija ir izturīga pret sadursmēm, ja sadursmes konstatēšanas iespējamība ir tik zema, ka būtu nepieciešami miljoniem gadu. Tātad, lai gan nav bezsadursmju jaucējfunkciju, dažas ir pietiekami spēcīgas, lai tās uzskatītu par izturīgām (piemēram, SHA-256).

Starp dažādiem SHA algoritmiem SHA-0 un SHA-1 kombinācijas vairs nav drošas sadursmju dēļ. SHA-2 un SHA-3 bloki pašlaik tiek uzskatīti par izturīgiem pret sadursmi.


Priekšattēla pretestība

Priekšattēla pretestības īpašība ir saistīta ar vienvirziena funkciju jēdzienu. Jaucējfunkcija tiek uzskatīta par noturīgu pret priekšattēlu, ja ir ļoti maza varbūtība, ka kāds atradīs ievadi, kas rada noteiktu izvadi.

Paturiet prātā, ka šī funkcija atšķiras no iepriekšējās, jo uzbrucējs mēģinās uzminēt, kāda bija ievade, aplūkojot noteiktas izvades. No otras puses, sadursme notiek, kad kāds atrod dažādas ievades, kas ģenerē vienu un to pašu izvadi, bet nav nozīmes, kura ievade tika izmantota.

Priekšattēla pretestība ir vērtīga datu aizsardzībā, jo vienkārša ziņojuma sajaukšana var pierādīt tā autentiskumu, neatklājot nekādu informāciju. Praksē daudzi pakalpojumu sniedzēji un tīmekļa lietojumprogrammas uzglabā un izmanto jaucējfailus, kas ģenerēti no parolēm, nevis vienkārša teksta parolēm.


Otrā priekšattēla pretestība

Vienkāršības labad mēs varam teikt, ka otrā priekšattēla pretestība atrodas kaut kur starp pārējām iepriekšējām īpašībām. Otrā priekšattēla uzbrukums notiek, kad kāds atrod konkrētu ievadi, kas ģenerē tādu pašu izvadi kā cita viņam jau zināma ievade.

Citiem vārdiem sakot, otrā priekšattēla uzbrukums ietver sadursmes atrašanu, bet tā vietā, lai meklētu divas nejaušas ievades, kas ģenerē tādu pašu jaucējkodu kā izvade, viņi meklē ievadi, kas ģenerē to pašu jaucējkodu, ko ģenerēja cita noteikta ievade.

Tāpēc jebkura jaukšanas funkcija, kas ir izturīga pret sadursmēm, ir izturīga arī pret otrā priekšattēla uzbrukumiem, jo ​​​​pēdējais vienmēr nozīmēs sadursmi. Taču uzbrucēji joprojām var veikt agrīnu uzbrukumu sadursmju izturīgai funkcijai, jo tas ietver vienas ievades atrašanu no vienas izejas.


Kalnrūpniecība

Bitcoin ieguves procesā ir vairāki soļi, kas ietver jaukšanas funkcijas, piemēram, bilanču pārbaudi, ievades un izvades sasaisti ar darījumiem un darījumu jaukšanu blokā, lai izveidotu Merkle Tree. Bet viens no galvenajiem iemesliem, kāpēc Bitcoin blokķēde ir droša, ir fakts, ka kalnračiem ir nepieciešami neskaitāmi jaucēji, lai atrastu derīgu risinājumu nākamajam blokam.

Konkrēti, kalnračiem, ģenerējot jaucējvērtību kandidāta blokam, ir jāizmēģina vairākas dažādas ievades. Būtībā viņi varēs apstiprināt savu bloku tikai tad, ja tiks ģenerēts rezultāts, kas sākas ar noteiktu nulles skaitu. Nuļļu skaits nosaka ieguves sarežģītību un mainās atkarībā no tīklam piešķirtā jaukšanas ātruma.

Šajā gadījumā jaukšanas ātrums ir skaitļošanas jaudas apjoms, kas tiek ieguldīts Bitcoin ieguvē. Ja tīkla jaukšanas ātrums palielinās, Bitcoin protokols automātiski pielāgos ieguves grūtības tā, lai vidējais bloka ieguves laiks būtu tuvu 10 minūtēm. No otras puses, ja daudzi kalnrači nolems pārtraukt ieguvi, kas izraisīs ievērojamu jaukšanas ātruma samazināšanos, tiks pielāgota ieguves grūtības pakāpe, kas atvieglo ieguves procesu (līdz vidējais bloku ieguves laiks atgriezīsies pie 10 minūtēm).

Ņemiet vērā, ka kalnračiem nav jāatrod sadursmes, jo ir tikai tik daudz jaucējvārdu, ko viņi var ģenerēt kā derīgus izvadus (sākot ar noteiktu skaitu nullēm). Tātad konkrētam blokam ir daudz iespējamo risinājumu, un kalnračiem nav jāatrod viens no tiem atbilstoši sākumam, ko nosaka ieguves grūtības. 

Tā kā Bitcoin ieguve ir ļoti dārga, kalnračiem ir maz iemesla apkrāpt sistēmu, jo tas radīs ievērojamus finansiālus zaudējumus. Jo vairāk kalnraču pievienojas blokķēdei, jo spēcīgāka tā kļūst.


Noslēguma domas

Nav šaubu, ka jaucējfunkcijas ir būtiski rīki datorzinātnēs, jo īpaši, strādājot ar milzīgu datu apjomu. Jaukšanas algoritmi var būt daudzpusīgi, ja tos apvieno ar kriptogrāfiju, nodrošinot drošību un autentifikāciju daudzos dažādos veidos. Tādējādi kriptogrāfijas jaucējfunkcijas ir ārkārtīgi svarīgas gandrīz visiem kriptovalūtu tīkliem. Tāpēc izprast tās īpašības un darbības mehānismus noteikti noder ikvienam, kas interesējas par blokķēdes tehnoloģiju.