Jaukšana attiecas uz fiksēta izmēra izvades ģenerēšanas procesu no mainīga izmēra ievades. Tas tiek darīts, izmantojot matemātiskas formulas, kas pazīstamas kā jaukšanas funkcijas (tiek ieviestas kā jaukšanas algoritmi).
Lai gan ne visas jaucējfunkcijas ietver kriptogrāfijas izmantošanu, kriptovalūtu pamatā ir tā dēvētās kriptogrāfiskās jaukšanas funkcijas. Pateicoties tiem, blokķēdes un citas izplatītās sistēmas spēj sasniegt ievērojamu datu integritātes un drošības līmeni.
Gan parastās, gan kriptogrāfiskās jaucējfunkcijas ir determinētas. Deterministisks nozīmē, ka, kamēr ievade nemainās, jaukšanas algoritms vienmēr radīs vienu un to pašu izvadi (pazīstams arī kā īssavilkums vai jaukšana).
Parasti kriptovalūtu jaukšanas algoritmi ir izstrādāti kā vienvirziena funkcijas, kas nozīmē, ka tos nevar viegli atgriezt bez liela skaitļošanas laika un resursu daudzuma. Citiem vārdiem sakot, ir diezgan viegli izveidot izvadi no ievades, bet salīdzinoši grūti iet pretējā virzienā (ģenerēt ievadi tikai no izejas). Vispārīgi runājot, jo grūtāk ir atrast ievadi, jo drošāks tiek uzskatīts jaukšanas algoritms.
Kā darbojas jaucējfunkcija?
Dažādas jaukšanas funkcijas radīs dažāda lieluma izvades, taču iespējamie izvades izmēri katram jaukšanas algoritmam vienmēr ir nemainīgi. Piemēram, SHA-256 algoritms var radīt tikai 256 bitu izvadi, savukārt SHA-1 vienmēr ģenerēs 160 bitu īssavilkumu.
Lai ilustrētu, izpildīsim vārdus “Binance” un “binance”, izmantojot SHA-256 jaukšanas algoritmu (to, ko izmanto Bitcoin).
Ņemiet vērā, ka nelielas izmaiņas (pirmā burta burts) izraisīja pilnīgi atšķirīgu jaucējvērtību. Bet, tā kā mēs izmantojam SHA-256, izvadiem vienmēr būs fiksēts izmērs 256 biti (vai 64 rakstzīmes) neatkarīgi no ievades lieluma. Turklāt nav svarīgi, cik reižu mēs izpildām divus vārdus, izmantojot algoritmu, abi izvadi paliks nemainīgi.
Un otrādi, ja mēs palaižam tās pašas ievades, izmantojot SHA-1 jaukšanas algoritmu, mēs iegūtu šādus rezultātus:
Konkrēti, akronīms SHA apzī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 viņiem ir nozīme?
Parastajām jaucējfunkcijām ir plašs lietošanas gadījumu klāsts, tostarp datu bāzes meklēšana, lielu failu analīze un datu pārvaldība. No otras puses, kriptogrāfiskās jaucējfunkcijas tiek plaši izmantotas informācijas drošības lietojumprogrammās, piemēram, ziņojumu autentificēšanā un digitālajā pirkstu nospiedumu noņemšanā. Runājot par Bitcoin, kriptogrāfiskās jaucējfunkcijas ir būtiska ieguves procesa sastāvdaļa, un tām ir arī nozīme jaunu adrešu un atslēgu ģenerēšanā.
Patiesais jaukšanas spēks rodas, strādājot ar milzīgu informācijas daudzumu. Piemēram, var palaist lielu failu vai datu kopu, izmantojot jaucējfunkciju, un pēc tam izmantot tā izvadi, lai ātri pārbaudītu datu precizitāti un integritāti. Tas ir iespējams jaucējfunkciju deterministiskā rakstura dēļ: ievade vienmēr radīs vienkāršotu, saīsinātu izvadi (jaucēju). Šāds paņēmiens novērš nepieciešamību uzglabāt un “atcerēties” lielus datu apjomus.
Jaukšana ir īpaši noderīga blokķēdes tehnoloģijas kontekstā. Bitcoin blokķēdē ir vairākas darbības, kas ietver jaukšanu, lielākā daļa no tām notiek ieguves procesā. Faktiski gandrīz visi kriptovalūtas protokoli balstās uz jaukšanu, lai saistītu un apvienotu darījumu grupas blokos, kā arī lai izveidotu 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. Kopumā kriptogrāfijas jaucējfunkcijas pārtraukšanai ir nepieciešami neskaitāmi brutāla spēka mēģinājumi. Lai persona varētu “atgriezt” kriptogrāfijas jaucējfunkciju, viņam izmēģinājumu un kļūdu ceļā būtu jāuzmin ievade, līdz tiek iegūta atbilstošā izvade. Tomēr pastāv arī iespēja, ka dažādas ievades rada tieši tādu 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. Mēs tos varam raksturot kā sadursmes pretestību, priekšattēla pretestību un otrā priekšattēla pretestību.
Pirms apspriest katru īpašumu, apkoposim to loģiku trīs īsos teikumos.
Sadursmes pretestība: nav iespējams atrast divas atšķirīgas ievades, kas rada tādu pašu jaucējkodu kā izvade.
Priekšattēla pretestība: nav iespējams “atgriezt” jaucējfunkciju (atrast ievadi no noteiktās izvades).
Otrā priekšattēla pretestība: nav iespējams atrast nevienu otro ievadi, kas saduras ar noteiktu ievadi.
Sadursmes pretestība
Kā minēts, sadursme notiek, ja dažādas ievades rada tieši tādu pašu jaucējfunkciju. Tādējādi jaucējfunkcija tiek uzskatīta par noturīgu pret sadursmi 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 iespēja atrast sadursmi ir tik zema, ka būtu nepieciešami miljoniem gadu ilgus aprēķinus. Tāpēc, neskatoties uz to, ka nav bezsadursmju jaucējfunkciju, dažas no tām ir pietiekami spēcīgas, lai tās uzskatītu par izturīgām (piemēram, SHA-256).
Starp dažādiem SHA algoritmiem grupas SHA-0 un SHA-1 vairs nav drošas, jo ir konstatētas sadursmes. Pašlaik SHA-2 un SHA-3 grupas tiek uzskatītas par noturīgām pret sadursmē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 ir ļoti maza varbūtība, ka kāds atradīs ievadi, kas ģenerēja noteiktu izvadi.
Ņemiet vērā, ka šis rekvizīts atšķiras no iepriekšējā, jo uzbrucējs mēģinātu uzminēt, kas bija ievade, skatoties uz doto izvadi. No otras puses, sadursme notiek, kad kāds atrod divas dažādas ievades, kas ģenerē vienu un to pašu izvadi, taču nav nozīmes, kuras ievades tika izmantotas.
Priekšattēla pretestības īpašība ir vērtīga datu aizsardzībai, jo vienkārša ziņojuma jaukšana var pierādīt tā autentiskumu bez nepieciešamības izpaust informāciju. Praksē daudzi pakalpojumu sniedzēji un tīmekļa lietojumprogrammas uzglabā un izmanto jaucējkodus, kas ģenerēti no parolēm, nevis parolēm vienkāršajā tekstā.
Otrā priekšattēla pretestība
Lai vienkāršotu, mēs varam teikt, ka otrā priekšattēla pretestība ir kaut kur starp pārējām divām īpašībām. Otrā priekšattēla uzbrukums notiek, kad kāds var atrast konkrētu ievadi, kas ģenerē tādu pašu izvadi no citas ievades, ko viņš jau zina.
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ē vienu un to pašu jaucējkodu, 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. Tomēr joprojām var veikt priekšattēla uzbrukumu sadursmju izturīgai funkcijai, jo tas nozīmē, ka no vienas izejas ir jāatrod viena ievade.
Kalnrūpniecība
Bitcoin ieguvē ir daudz darbību, kas ietver jaukšanas funkcijas, piemēram, bilances pārbaudi, darījumu ievades un izvades sasaisti 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 neskaitāmas jaukšanas darbības, lai galu galā atrastu derīgu risinājumu nākamajam blokam.
Konkrēti, kalnračiem ir jāizmēģina vairākas dažādas ievades, veidojot jaucējvērtību savam kandidātu blokam. Būtībā viņi varēs apstiprināt savu bloku tikai tad, ja tie ģenerēs izejas jaucējkodu, kas sākas ar noteiktu nulles skaitu. Nulles skaits ir tas, kas nosaka ieguves grūtības, un tas mainās atkarībā no tīklam paredzētā jaukšanas ātruma.
Šajā gadījumā jaukšanas ātrums parāda, cik daudz datora jaudas 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 ieguvei nepieciešamais laiks būtu tuvu 10 minūtēm. Turpretim, ja vairāki kalnrači nolemj pārtraukt ieguvi, izraisot jaukšanas ātruma ievērojamu samazināšanos, ieguves grūtības tiks pielāgotas, padarot to vieglāku (līdz vidējais bloka laiks atgriezīsies līdz 10 minūtēm).
Ņemiet vērā, ka kalnračiem nav jāatrod sadursmes, jo ir vairākas jaucējvērtības, kuras viņi var ģenerēt kā derīgu izvadi (sākot ar noteiktu nulles skaitu). Tātad konkrētam blokam ir vairāki iespējamie risinājumi, un kalnračiem ir jāatrod tikai viens no tiem – atbilstoši slieksnim, ko nosaka ieguves grūtības.
Tā kā Bitcoin ieguve ir izmaksu ziņā ietilpīgs uzdevums, kalnračiem nav iemesla krāpt sistēmu, jo tas radītu ievērojamus finansiālus zaudējumus. Jo vairāk kalnraču pievienojas blokķēdei, jo lielāka un spēcīgāka tā kļūst.
Noslēguma domas
Nav šaubu, ka jaucējfunkcijas ir būtiski rīki datorzinātnēs, it īpaši, strādājot ar milzīgu datu apjomu. Kombinācijā ar kriptogrāfiju jaukšanas algoritmi var būt diezgan daudzpusīgi, piedāvājot drošību un autentifikāciju dažādos veidos. Kā tādas, kriptogrāfijas jaucējfunkcijas ir ļoti svarīgas gandrīz visiem kriptovalūtu tīkliem, tāpēc to īpašību un darbības mehānismu izpratne noteikti ir noderīga ikvienam, kas interesējas par blokķēdes tehnoloģiju.

