Jaukšanas apstrāde attiecas uz fiksēta izmēra izvades ģenerēšanas procesu no dažāda izmēra ievades. Tas tiek darīts, izmantojot matemātisko formulu, kas pazīstama kā jaukšanas funkcija (tiek ieviesta kā jaukšanas algoritms). 

Lai gan ne visas jaucējfunkcijas ir saistītas ar kriptogrāfijas izmantošanu, tās, kas pazīstamas kā kriptogrāfiskās jaukšanas funkcijas, ir kriptovalūtu pamatā. Pateicoties tam, blokķēde un citas izplatītās sistēmas spēj sasniegt ievērojamu datu integritātes un drošības līmeni.

Parastās jaucējfunkcijas un kriptogrāfiskās jaucējfunkcijas ir vienādas: deterministiskas. Deterministisks nozīmē, ka tik ilgi, kamēr ievade nemainās, jaukšanas algoritms vienmēr radīs vienu un to pašu izvadi (citādi sauktu par īssavilkumu vai jaukšanu).

Jo īpaši kriptovalūtu jaukšanas algoritms ir izstrādāts kā vienvirziena funkcija, kas nozīmē, ka to nevar viegli mainīt bez milzīga skaitļošanas laika un resursiem. Citiem vārdiem sakot, ir ļoti viegli ražot produkciju no ievades, bet salīdzinoši grūti izdarīt pretējo (ģenerēt ievadi tikai no izejas). Kopumā, jo grūtāk ir atrast ievadi, jo drošāks būs jaukšanas algoritms.


Kā darbojas jaucējfunkcija?

Dažādas jaucējfunkcijas radīs dažāda lieluma izvades, taču katra jaukšanas algoritma iespējamais izvades lielums vienmēr ir nemainīgs. Piemēram, SHA-256 algoritms radīs tikai 256 bitu izvadi, savukārt SHA-1 vienmēr veidos 160 bitu īssavilkumu.

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

SHA-265

Ievade

Izvade (256 biti)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Ņemiet vērā, ka nelielas izmaiņas (pirmā burta lielums) rada ļoti dažādas jaucējvērtības. 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. Turklāt neatkarīgi no tā, cik reižu mēs izpildām šos divus vārdus, izmantojot algoritmu, abas izejas vienmēr būs nemainīgas.

No otras puses, ja mēs izpildīsim ievades, izmantojot SHA-1 jaukšanas algoritmu, mēs iegūsim tālāk norādītos rezultātus.

SHA-1

Ievade

Izvade (160 biti)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Konkrētāk, akronīms SHA nozīmē 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 grupas. SHA-256 ir daļa no SHA-2 grupas kopā ar SHA-512 un citiem variantiem. Pašlaik tikai SHA-2 un SHA-3 grupas tiek uzskatītas par drošām.


Kāpēc tas ir svarīgi?

Parastajām jaucējfunkcijām ir plašs lietojuma gadījumu klāsts, tostarp datu bāzu meklēšana, liela datu analīze un datu pārvaldība. No otras puses, kriptogrāfijas jaucējfunkcijas tiek plaši izmantotas informācijas drošības lietojumprogrammās, piemēram, ziņojumu autentifikācijā un digitālajā pirkstu nospiedumu noņemšanā. Runājot par Bitcoin, kriptogrāfiskās jaucējfunkcijas ir svarīga ieguves procesa sastāvdaļa un veicina jaunu adrešu un atslēgu ģenerēšanu.

Patiesa jaukšanas jauda ir redzama, strādājot ar ļoti lielu informācijas apjomu. Piemēram, var palaist lielu failu vai datu kopu, izmantojot jaucējfunkciju, un pēc tam izmantot izvadi, lai ātri pārbaudītu datu precizitāti un integritāti. Tas ir iespējams jaucējfunkciju deterministiskā rakstura dēļ: ievade vienmēr rada vienkāršu un kodolīgu izvadi (jaucēju). Šādas metodes novērš nepieciešamību uzglabāt un “atcerēties” ļoti lielu datu apjomu.

Jo īpaši jaukšana ir ļoti noderīga blokķēdes tehnoloģijā. Bitcoin blokķēdē ir vairāki procesi, kas saistīti ar jaukšanu, no kuriem lielākā daļa ir ieguves procesā. Faktiski gandrīz visi kriptovalūtas protokoli balstās uz jaukšanu, lai savienotu kompaktas darījumu grupas blokos, kā arī ģenerētu kriptogrāfiskas saites starp atsevišķiem blokiem, efektīvi izveidojot blokķēdi.


Kriptogrāfiskās jaucējfunkcijas

Atkal, jaucējfunkciju, kas izvieto kriptogrāfijas metodes, var definēt kā kriptogrāfijas jaucējfunkciju. Kopumā kriptogrāfijas jaucējfunkcijas pārtraukšana prasa daudz pūļu ar rupju spēku. Ja kāds vēlas “apgriezt” kriptogrāfisko jaucējfunkciju, viņam vai viņai ir jāuzmin ievade, izmantojot izmēģinājumus un kļūdas, līdz tiek iegūta atbilstošā izvade. Tomēr ir arī iespējams, ka dažādas ievades rada tieši tādu pašu izvadi, tāpēc šajā gadījumā notiek “sadursme”.

Tehniski kriptogrāfijas jaucējfunkcijai ir jāatbilst trim īpašībām, lai to uzskatītu par drošu un efektīvu. Mēs tos varam raksturot kā sadursmes pretestību, priekšattēla pretestību un sekundāro priekšattēla pretestību.

Pirms apspriest katru pazīmi, apkoposim šo loģiku trīs īsos teikumos.

  • Sadursmes pretestība: nav viegli atrast divas dažādas ievades, kas rada tādu pašu jaucējkodu kā izvade.

  • Priekšattēla pretestība: nav viegli “invertēt” jaucējfunkciju (atrodiet ievadi no pieejamās izvades).

  • Otrā priekšattēla pretestība: nav viegli atrast otru ievadi, kas ir pretrunā ar norādīto ievadi.


Sadursmes pretestība

Kā minēts, sadursme notiek, ja dažādas ievades rada vienu un to pašu jaucējfunkciju. Tādējādi jaucējfunkcija tiek uzskatīta par noturīgu pret sadursmi līdz brīdim, kad notiek sadursme. Lūdzu, ņemiet vērā, ka šīs 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 tiek uzskatīta par drošu pret sadursmi, ja sadursmes konstatēšanas iespējamība ir ļoti maza, jo tai ir nepieciešami miljoniem gadu. Tāpēc, neskatoties uz to, ka nav bezsadursmju jaucējfunkciju, dažas no tām ir ļoti spēcīgas un var tikt uzskatītas par stabilām (piemērs: SHA-256).

Starp dažādiem SHA algoritmiem grupas SHA-0 un SHA-1 vairs nav drošas, jo ir atklātas sadursmes. Pašlaik SHA-2 un SHA-3 grupas tiek uzskatītas par triecienizturīgām.


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 varbūtība, ka kāds atradīs ievadi, kas iegūta no noteiktas izvades, ir ļoti maza.

Lūdzu, ņemiet vērā, ka šis rekvizīts atšķiras no iepriekšējā, jo uzbrucējs mēģinās uzminēt, kāda ir ievade, apskatot pieejamo izvadi. No otras puses, sadursme notiek, kad kāds saskaras ar divām dažādām ieejām, kas rada vienu un to pašu izvadi, taču nav nozīmes, kura ievade tiek izmantota.

Priekšattēla pretestības īpašība ir ļoti noderīga datu aizsardzībai, jo vienkārša ziņojuma jaukšana var pierādīt autentiskumu, neatklājot informāciju. Praksē daudzi pakalpojumu sniedzēji un tīmekļa lietojumprogrammas uzglabā un izmanto iegūtās paroļu jaucējkodas, nevis paroles vienkāršā tekstā.


Otrais pretestības priekšskatījums

Vienkārši sakot, mēs varam teikt, ka šī otrā Preimage pretestība ir starp abām iepriekš apspriestajām īpašībām. Otrais priekšattēla uzbrukums notiek, kad kāds spēj atrast noteiktu ievadi, kas rada tādu pašu izvadi kā cita izvade no citas jau zināmas ievades.

Citiem vārdiem sakot, otrais priekšattēla uzbrukums ir sadursmju atrašana, taču tā vietā, lai meklētu divas nejaušas ievades, kas rada vienu un to pašu jaucējkodu, viņi meklē ievades, kas rada tādu pašu jaucēju, ko rada cita noteikta ievade.

Tāpēc jebkura sadursmēm izturīga jaukšanas funkcija ir izturīga arī pret otro priekšattēlu. Tomēr joprojām var veikt priekšattēla uzbrukumu sadursmju izturīgai funkcijai, jo tas nozīmē arī vienas ievades atrašanu no vienas izejas.


Kalnrūpniecība

Bitkoinu ieguvē ir daudz darbību, kas ietver jaucējfunkcijas, piemēram, bilances pārbaudi, ievades un izvades darījumu saistīšanu un darījumu jaukšanu blokā, lai izveidotu Merkle Tree. Taču viens no galvenajiem iemesliem, kāpēc Bitcoin blokķēde ir droša, ir fakts, ka kalnračiem ir jāveic liels skaits jaukšanas darbību, lai galu galā atrastu pareizo risinājumu nākamajam blokam.

Konkrēti, kalnračiem, ģenerējot jaucējvērtības saviem kandidātu blokiem, ir jāizmēģina vairākas dažādas ievades. Būtībā viņš var apstiprināt savu bloku tikai tad, ja viņš izveido izejas jaucēju, kas sākas ar noteiktu nulles skaitu. Nulles skaits nosaka ieguves grūtības, un tas mainās atkarībā no tīklam raksturīgā jaukšanas ātruma.

Šajā gadījumā jaukšanas ātrums parāda, cik daudz datora enerģijas tiek izmantots Bitcoin ieguvei. Ja tīkla jaukšanas ātrums palielinās, Bitcoin protokols automātiski pielāgos ieguves grūtības, lai vidējais laiks, kas nepieciešams viena atlikušā bloka ieguvei, ir tuvāk 10 minūtēm. Un otrādi, ja daži kalnrači nolemj pārtraukt ieguvi, jaukšanas ātrums krasi samazinās, ieguves grūtības pielāgosies, padarot to vieglāku (līdz vidējais bloka laiks atgriezīsies pie 10 minūtēm).

Lūdzu, saprotiet, ka kalnračiem nav jāsaskaras ar sadursmēm, jo ​​ir daudz jaucējkodu, ko viņi var izveidot kā derīgu izvadi (sākot ar noteiktu skaitu nullēm). Tātad konkrētam blokam ir vairāki iespējamie risinājumi, un kalnračiem ir jāatrod tikai viens risinājums atkarībā no sliekšņa, ko nosaka ieguves grūtības līmenis. 

Tā kā Bitcoin ieguve ir dārgs pasākums, kalnračiem nav iemesla krāpt sistēmu, tas radītu ievērojamus finansiālus zaudējumus. Jo vairāk kalnraču pievienosies blokķēdei, jo lielāka un spēcīgāka tā kļūs.


Noslēguma ideja

Nav šaubu, ka jaucējfunkcijas ir ļoti svarīgs rīks datorzinātnēs, it īpaši, strādājot ar lielu datu apjomu. Kombinācijā ar kriptogrāfiju jaukšanas algoritmi var būt daudzpusīgi, piedāvājot drošību un autentiskumu dažādos veidos. Tādējādi kriptogrāfijas jaucējfunkcijas ir būtiskas gandrīz visiem kriptovalūtu tīkliem, tāpēc to īpašību un darbības izpratne ir ļoti noderīga ikvienam, kas interesējas par blokķēdes tehnoloģiju.