Jaukšana ir fiksēta izmēra izvades ģenerēšanas process no mainīga izmēra ievades. Šis process tiek veikts, izmantojot matemātisko formulu, ko sauc par "jaukšanas funkciju" (tiek ieviesta kā jaukšanas algoritms).

Ne visas jaucējfunkcijas ietver kriptogrāfijas izmantošanu, bet "kriptogrāfiskās jaucējfunkcijas" ir kriptovalūtu pamatā. Pateicoties kriptogrāfijas jaucējfunkcijām, blokķēdes un citās sadalītās sistēmās var sasniegt augstu datu integritātes un drošības līmeni.

Gan tradicionālās jaucējfunkcijas, gan kriptogrāfiskās jaucējfunkcijas ir determinētas. Determinisms attiecas uz faktu, ka jaukšanas algoritms vienmēr radīs vienu un to pašu izvadi (ko sauc arī par "savilkšanas" vai "jaukšanas vērtību"), ja vien ievade nemainās.

Parasti kriptovalūtas jaukšanas algoritmi ir izstrādāti kā vienvirziena funkcijas, kas nozīmē, ka tos nevar viegli atgūt bez ievērojama skaitļošanas laika un resursu. Citiem vārdiem sakot, ir ārkārtīgi viegli izveidot izvadi no ievades, bet ir salīdzinoši grūti izveidot ievadi no izejas pretējā virzienā. Kopumā, jo grūtāk ir atrast ievadi, jo drošāks ir jaukšanas algoritms.


Kā darbojas jaucējfunkcija?

Dažādas jaucējfunkcijas rada dažāda lieluma izvades, taču katra jaukšanas algoritma izvades lielums vienmēr ir vienāds. Piemēram, SHA-256 algoritms var radīt tikai 256 bitu izvadi, savukārt SHA-1 vienmēr rada 160 bitu īssavilkumu.

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

SHA-256

ievadiet

Izvade (256 biti)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Ņemiet vērā, ka nelielas izmaiņas pirmā burta lielo burtu lietošanā radīs pavisam citu jaucējvērtību. Neatkarīgi no ievades vērtības garuma, izvadei, izmantojot SHA-256, vienmēr ir fiksēts 256 bitu (vai 64 rakstzīmju) garums. Turklāt neatkarīgi no tā, cik reizes algoritms izpilda šos divus vārdus, abu izvade paliek nemainīga.

Un otrādi, ja palaižat to pašu ievadi, izmantojot SHA-1 jaukšanas algoritmu, tiek iegūti šādi rezultāti:

SHA-1

ievadiet

Izvade (160 biti)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Lūdzu, ņemiet vērā, ka "SHA" ir akronīms vārdam Secure Hash Algorithms. Algoritms attiecas uz kriptogrāfisko jaucējfunkciju kopu, kurā ietilpst SHA-0 un SHA-1 algoritmi, kā arī SHA-2 un SHA-3 kopas. SHA-256 kopā ar SHA-512 un citiem variantiem ir daļa no SHA-2 grupas. Pašlaik tikai SHA-2 un SHA-3 grupas tiek uzskatītas par drošām.


Kāda ir jaucējfunkciju nozīme?

Tradicionālajām jaukšanas funkcijām ir dažādi lietošanas gadījumi, tostarp datu bāzes meklēšana, lielu failu analīze un datu pārvaldība. Kriptogrāfiskās jaukšanas funkcijas tiek plaši izmantotas informācijas drošības lietojumprogrammās, piemēram, ziņojumu autentifikācija un digitālā pirkstu nospiedumu noņemšana. Bitcoin gadījumā kriptogrāfijas jaucējfunkcijas ir ieguves procesa neatņemama sastāvdaļa, kas ietekmē gan jaunas adreses, gan atslēgu ģenerēšanu.

Jaukšanas operācijas ir patiesi spēcīgas, apstrādājot lielu informācijas daudzumu. Piemēram, palaidiet lielu failu vai datu kopu, izmantojot jaucējfunkciju, un pēc tam izmantojiet tās izvadi, lai ātri pārbaudītu datu precizitāti un pilnīgumu. Jaucējfunkcijas darbojas, jo tās ir deterministiskas: ievade vienmēr rada saspiestu, vienkāršotu izvadi (t.i., jaucējvērtību). Šī tehnoloģija novērš nepieciešamību uzglabāt un "atcerēties" lielu datu apjomu.

Hash operācijas ir īpaši noderīgas blokķēdes tehnoloģijas jomā. Bitcoin blokķēdē ir daudzas darbības, kas saistītas ar jaukšanas operācijām, no kurām lielākā daļa ir daļa no ieguves procesa. Faktiski gandrīz visi kriptovalūtas protokoli balstās uz jaukšanu, lai savienotu darījumu grupas un saspiestu tās blokos, vienlaikus ģenerējot kriptogrāfiskas saites starp atsevišķiem blokiem, efektīvi izveidojot blokķēdi.


kriptogrāfiskā jaucējfunkcija

Tāpat jaucējfunkcijas, kurās tiek izmantotas kriptogrāfijas metodes, var definēt kā kriptogrāfijas jaucējfunkcijas. Vispārīgi runājot, kriptogrāfijas jaucējfunkcijas pārtraukšana prasa neskaitāmus brutāla spēka mēģinājumus. Lai "atjaunotu" kriptogrāfijas jaucējfunkciju, uzminiet ievadi, izmantojot izmēģinājumus un kļūdas, līdz tiek ģenerēta atbilstošā izvade. Tomēr ir arī iespējams, ka dažādas ievades rada tieši tādu pašu izvadi, tāpēc rodas "konflikts".

Tehniski runājot, kriptogrāfijas jaucējfunkcijai ir jābūt trim īpašībām, lai to uzskatītu par efektīvu drošības nodrošināšanā. Trīs galvenie atribūti ir pretsadursmes, pirmsattēla un otrā priekšattēla novēršana.

Pirms apspriest katru atribūtu atsevišķi, īsi apkoposim katra atribūta loģiku.

  • Sadursmes pretestība: nav iespējams, ka divas dažādas ievades ģenerē vienādu jaucējvērtību izvadi.

  • Pretstatējamība: jaucējfunkciju nav iespējams "atjaunot" (t.i., ievadi nevar atrast no dotās izvades).

  • Otrā priekšattēla pretestība: nav iespējams atrast citu ievadi, kas ir pretrunā ar konkrētu ievadi.


konfliktu pretestība

Kā minēts iepriekš, sadursmes notiek, ja dažādas ievades ģenerē tieši tādu pašu jaucējvērtību. Tāpēc jaucējfunkcija tiek uzskatīta par noturīgu pret sadursmi, kamēr neviens nekonstatē sadursmi. Ņemiet vērā, ka, tā kā iespējamās ievades ir bezgalīgas un iespējamās izejas ir ierobežotas, vienmēr notiek sadursmes ar jaukšanas funkcijām.

Pieņemot, ka sadursmes atrašanas iespējamība ir pat miljoniem gadu, var teikt, ka jaucējfunkcija ir izturīga pret sadursmi. Tāpēc, lai gan patiesībā nav bezsadursmju jaucējfunkciju, dažas no tām (piemēram, SHA-256) tiek uzskatītas par sadursmju izturīgām, ja vien tās ir pietiekami spēcīgas.

Starp dažādiem SHA algoritmiem SHA-0 un SHA-1 grupām ir konflikti, tāpēc tās vairs nav drošas. Pašlaik SHA-2 un SHA-3 komplekti tiek uzskatīti par izturīgiem pret sadursmēm.


Antiattēli

Antiikoniskais īpašums ir saistīts ar vienvirziena funkciju jēdzienu. Tiek uzskatīts, ka jaucējfunkcija ir pretattēli, pieņemot, ka varbūtība atrast ievadi, kas rada noteiktu izvadi, ir ārkārtīgi zema.

Ņemiet vērā, ka uzbrucējs aplūko doto izvadi, lai uzminētu ievadi, tāpēc šī īpašība atšķiras no sadursmes pretestības. Turklāt divas dažādas ievades, kas rada vienu un to pašu izvadi, konfliktēs, taču nav īsti svarīgi, kura ievade tiek izmantota.

Prettēla īpašības ir vērtīgas datu aizsardzībai, jo vienkārša ziņojuma jaukšana var pierādīt tā autentiskumu, neatklājot informāciju. Praksē daudzi pakalpojumu sniedzēji un tīmekļa lietojumprogrammas uzglabā un izmanto jaucējfunkcijas, kas ģenerētas no parolēm, nevis paroles skaidrā tekstā.


Izturība pret otro priekšattēlu

Īsāk sakot, pretestība otrajiem priekštēliem atrodas kaut kur starp abām iepriekš minētajām īpašībām. Otrs priekšattēla uzbrukums notiek, ja kāds var atrast konkrētu ievadi, kas rada izvadi, kas ir tāda pati kā cita zināma ievade.

Citiem vārdiem sakot, otrais priekšattēla uzbrukums ir saistīts ar konfliktu atrašanu, taču tā vietā, lai meklētu divas nejaušas ievades, kas ģenerē vienādu jaucējvērtību, jūs meklējat citu ievadi, kas ģenerē tādu pašu jaucējvērtību, ņemot vērā konkrēto ievadi.

Otrs priekšattēla uzbrukums parasti nozīmē konfliktu. Tāpēc jebkura sadursmēm izturīga jaukšanas funkcija ir izturīga arī pret otrā priekšattēla uzbrukumiem. Tomēr, ja tas ir izturīgs pret sadursmēm, tas nozīmē, ka no vienas izejas var atrast vienu ievadi, tāpēc uzbrucējs joprojām var veikt priekšattēla uzbrukumu pret sadursmju izturīgu funkciju.


Kriptovalūtas ieguve

Jaucējfunkcijas tiek izmantotas vairākos Bitcoin ieguves posmos, piemēram, pārbaudot atlikumus, savienojot transakciju ievades un izvades, kā arī sajaucot darījumus tajā pašā blokā, lai izveidotu Merkle koku. Tomēr viens no galvenajiem iemesliem, kāpēc Bitcoin blokķēde ir droša, ir tas, ka kalnračiem ir jāveic neskaitāmas jaukšanas darbības, pirms viņi beidzot var atrast derīgu risinājumu nākamajam blokam.

Konkrēti, kalnračiem, veidojot kandidātu bloku jaucējus, ir jāizmēģina vairākas dažādas ievades. Būtībā kalnrači var apstiprināt bloku tikai tad, ja ģenerētais izvades jaucējs sākas ar noteiktu nulles skaitu. Nulles skaits nosaka ieguves grūtības un mainās atkarībā no tīklam paredzētā jaukšanas ātruma.

Šajā gadījumā jaukšanas ātrums atspoguļo skaitļošanas jaudas daudzumu, kas tiek izmantots 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 ģenerēšanai nepieciešamais laiks paliktu tuvu 10 minūtēm. Gluži pretēji, ja daudzi kalnrači nolemj pārtraukt ieguvi, izraisot jaukšanas koeficienta ievērojamu samazināšanos, ieguves grūtības tiks samazinātas, līdz vidējais bloka laiks atgriezīsies pie 10 minūtēm.

Ņemiet vērā, ka kalnrači var ģenerēt vairākus jaucējus kā derīgu izvadi (sākot ar noteiktu skaitu nullēm), tāpēc viņiem nav jāmeklē sadursmes. Blokam ir vairāki iespējamie risinājumi, taču atkarībā no ieguves grūtības sliekšņa kalnračiem ir jāatrod tikai viens no risinājumiem.

Bitcoin ieguve ir dārgs uzdevums, un kalnračiem nav jākrāpj sistēma, kas tā vietā radītu ievērojamus finansiālus zaudējumus. Jo vairāk kalnraču pievienojas blokķēdei, jo lielāka un jaudīgāka kļūst blokķēde.


Apkopojiet

Nav šaubu, ka jaucējfunkcijas ir būtisks datorzinātņu instruments, un to spēja apstrādāt milzīgus datu apjomus ir īpaši izcila. Apvienojumā ar kriptogrāfiju jaukšanas algoritmus var izmantot dažādos veidos, lai nodrošinātu drošību un autentifikāciju dažādos veidos. Gandrīz visos kriptovalūtas tīklos kriptogrāfiskās jaucējfunkcijas ir ļoti svarīgas. Tāpēc, ja jūs interesē blokķēdes tehnoloģija, būs liels ieguvums izprast kriptogrāfijas jaucējfunkciju īpašības un darbības mehānismu.