Mis on rÀsimine?
Avaleht
Artiklid
Mis on rÀsimine?

Mis on rÀsimine?

EdasijÔudnud
Avaldatud Jul 29, 2019VĂ€rskendatud Jan 31, 2023
7m

RÀsimine tÀhendab protsessi, kus muutuva suurusega sisendist genereeritakse fikseeritud suurusega vÀljund. Selleks kasutatakse rÀsifunktsioonidena tuntud matemaatilisi valemeid (ehk rÀsialgoritme). 

Kuigi mitte kĂ”ik rĂ€sifunktsioonid ei hĂ”lma krĂŒptograafia kasutamist, on nn krĂŒptograafilised rĂ€sifunktsioonid krĂŒptovaluutade tuumikuks. TĂ€nu neile suudavad plokiahelad ja muud hajutatud sĂŒsteemid saavutada mĂ€rkimisvÀÀrse andmete terviklikkuse ja turvalisuse taseme.

Nii tavapĂ€rased kui ka krĂŒptograafilised rĂ€sifunktsioonid on deterministlikud. Deterministlik tĂ€hendab, et kuni sisend ei muutu, annab rĂ€sialgoritm alati sama vĂ€ljundi (tuntud ka kui kokkuvĂ”te vĂ”i rĂ€si).

Tavaliselt on krĂŒptovaluutade rĂ€sialgoritmid vĂ€lja töötatud ĂŒhesuunaliste funktsioonidena, mis tĂ€hendab, et neid ei saa hĂ”lpsasti tagasi arvutada ilma suure aja- ja ressursikuluta. Ehk siis sisendist vĂ€ljundit on ĂŒsna lihtne luua, vastupidises suunas (vĂ€ljundist sisendit genereerida) aga suhteliselt keeruline. Üldiselt vĂ”ib öelda, et mida keerulisem on sisendi leidmine, seda turvalisemaks rĂ€sialgoritmi peetakse.


Kuidas rÀsifunktsioon töötab?

Erinevad rĂ€sifunktsioonid annavad erineva suurusega vĂ€ljundeid, kuid iga rĂ€simisalgoritmi vĂ”imalikud vĂ€ljundsuurused on alati konstantsed. NĂ€iteks SHA‑256 algoritm suudab toota ainult 256‑bitise vĂ€ljundi, samas kui SHA‑1 genereerib ainult 160‑bitise rĂ€si.

Illustreerimiseks kĂ€ivitame sĂ”nad „Binance" ja „binance" lĂ€bi SHA‑256 rĂ€simisalgoritmi (sama, mida kasutatakse bitcoini puhul).

SHA‑256

Sisend

VĂ€ljund (256 bitti)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Pane tĂ€hele, et vĂ€ike muudatus (suur- vĂ”i vĂ€iketĂ€ht) andis tulemuseks tĂ€iesti erineva rĂ€sivÀÀrtuse. Kuna me kasutame SHA-256 algoritmi, on vĂ€ljunditel alati fikseeritud suurus 256 bitti (vĂ”i 64 tĂ€hemĂ€rki) – olenemata sisendi suurusest. Samuti pole vahet, mitu korda me kaks sĂ”na lĂ€bi algoritmi kĂ€ivitame, kaks vĂ€ljundit jÀÀvad konstantseks.

Kui kÀivitame samad sisendid SHA-1 rÀsimisalgoritmi kaudu, saame jÀrgmised tulemused:

SHA‑1

Sisend

VĂ€ljund (160 bitti)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


AkronĂŒĂŒm SHA tĂ€hendab Secure Hash Algorithm ehk turvaline rĂ€sialgoritm. See viitab krĂŒptograafiliste rĂ€sifunktsioonide komplektile, mis sisaldab SHA-0 ja SHA-1 algoritme koos rĂŒhmadega SHA-2 ja SHA-3. SHA-256 on osa SHA-2 rĂŒhmast koos SHA-512 ja teiste variantidega. Hetkel peetakse turvalisteks ainult rĂŒhmi SHA-2 ja SHA-3.


Miks rÀsifunktsioonid olulised on?

Tavalistel rĂ€sifunktsioonidel on lai valik kasutusvĂ”imalusi, sealhulgas andmebaasiotsingud, suurte failide analĂŒĂŒsid ja andmehaldus. Teisest kĂŒljest kasutatakse krĂŒptograafilisi rĂ€sifunktsioone laialdaselt teabeturbe rakendustes, nagu sĂ”numite autentimine ja digitaalsed sĂ”rmejĂ€ljed. Bitcoini puhul on krĂŒptograafilised rĂ€sifunktsioonid kaevandamise protsessi oluline osa ning need mĂ€ngivad rolli ka uute aadresside ja vĂ”tmete loomisel.

RÀsimise tegelik vÀÀrtus ilmneb tohutute andmemassiivide töötlemisel. NÀiteks saab rÀsifunktsiooni kaudu kÀivitada suure faili vÔi andmekogumi ja seejÀrel kasutada vÀljundit andmete tÀpsuse ja terviklikkuse kiireks kontrollimiseks. See on vÔimalik tÀnu rÀsifunktsioonide deterministlikule olemusele: sisendi tulemuseks on alati lihtsustatud, tihendatud vÀljund (rÀsi). Sellise tehnika puhul pole vajadust salvestada ja "mÀletada" suuri andmemahtusid.

RĂ€simine on eriti kasulik plokiahela tehnoloogia kontekstis. Bitcoini plokiahelal on mitu rĂ€simist hĂ”lmavat toimingut, enamikku neist kasutatakse kaevandamise kĂ€igus. Tegelikult pĂ”hinevad peaaegu kĂ”ik krĂŒptovaluutaprotokollid rĂ€simisel, mille abil seotakse ja koondatakse tehingute rĂŒhmad plokkidesse ning luuakse krĂŒptoĂŒhendused iga ploki vahel.


KrĂŒptograafilised rĂ€sifunktsioonid

KrĂŒptograafiatehnikaid juurutavat rĂ€sifunktsiooni vĂ”ib nimetada krĂŒptograafiliseks rĂ€sifunktsiooniks. Üldiselt nĂ”uab krĂŒptograafilise rĂ€sifunktsiooni rĂŒndamine lugematul hulgal töömahukate arvutustega katsetamist. Selleks, et keegi saaks krĂŒptograafilise rĂ€sifunktsiooni "tagasi arvutada", peab ta katse-eksituse meetodil Ă€ra arvama, mis sisend oli, kuni vastava vĂ€ljundi saamiseni. Samas on ka vĂ”imalus, et erinevad sisendid toodavad tĂ€pselt sama vĂ€ljundi ja tekib “kollisioon”.

Tehniliselt peab krĂŒptograafiline rĂ€sifunktsioon jĂ€rgima kolme omadust, et seda saaks pidada tĂ”husalt turvaliseks. VĂ”ime neid nimetada jĂ€rgmiselt: kollisioonikindlus, pööramatus ja teise liigi kollisioonikindlus.

Enne iga omaduse kĂ€sitlemist vĂ”tame nende loogika kolme lĂŒhikese lausega kokku.

  • Kollisioonikindlus: pole vĂ”imalik leida kahte erinevat sisendit, mis toodavad vĂ€ljunditena sarnase rĂ€si.

  • Pööramatus: rĂ€sifunktsiooni "tagasi pööramine" (sisendi leidmine antud vĂ€ljundist) on vĂ”imatu.

  • Teise liigi kollisioonikindlus: pole vĂ”imalik leida teist sisendit, millel oleks kollisioon mĂ”ne teadaoleva sisendiga.


Kollisioonikindlus

Nagu mainitud, tekib kollisioon siis, kui erinevad sisendid annavad tÀpselt sama rÀsi. Seega peetakse rÀsifunktsiooni kollisioonikindlaks hetkeni, mil keegi kollisiooni leiab. Pane tÀhele, et iga rÀsifunktsiooni puhul esineb alati kollisioone, kuna vÔimalikke sisendeid on lÔpmatu arv, samas kui vÔimalikud vÀljundid on piiratud.

RÀsifunktsioon on kollisioonikindel, kui kollisiooni leidmise vÔimalus on nii madal, et see nÔuaks miljoneid aastaid arvutusi. Ehkki kollisioonivabasid rÀsifunktsioone pole, on mÔned neist piisavalt tugevad, et neid pidada turvalisteks (nt SHA-256).

Erinevate SHA-algoritmide kĂ”rval ei ole SHA-0 ja SHA-1 rĂŒhmad enam turvalised, kuna neil on leitud kollisioone. Hetkel peetakse SHA-2 ja SHA-3 rĂŒhmi kollisioonikindlateks.


Pööramatus

Pööramatus on seotud funktsioonide ĂŒhesuunalisuse mĂ”istega. RĂ€sifunktsiooni peetakse pööramatuks, kui on vĂ€ga vĂ€ike tĂ”enĂ€osus, et keegi leiab vĂ€ljundist arvutamise teel sisendi.

Pane tĂ€hele, et see omadus erineb eelmisest, kuna rĂŒndaja ĂŒritab siin antud vĂ€ljundi pĂ”hjal arvata, mis oli sisend. Kollisioon seevastu tekib siis, kui keegi leiab kaks erinevat sisendit, mis genereerivad sarnase vĂ€ljundi, kuid pole vahet, milliseid sisendeid kasutati.

Pööramatus on funktsiooni vÀÀrtuslik omadus andmete kaitsmisel, kuna sÔnumist genereeritud lihtne rÀsi vÔib tÔestada tema autentsust, ilma et oleks vaja sÔnumit avaldada. Praktikas salvestavad ja kasutavad paljud teenusepakkujad ja veebirakendused paroolidest genereeritud rÀsi, mitte paroole.


Teise liigi kollisioonikindlus

Lihtsustamiseks vĂ”ime öelda, et see omadus on kusagil kahe eelmise omaduse vahepeal. Teise liigi kollisiooni rĂŒnnak toimub siis, kui keegi suudab leida konkreetse sisendi, mis genereerib sarnase vĂ€ljundi juba mĂ”ne teadaoleva sisendiga.

TeisisĂ”nu, teise liigi kollisiooni rĂŒnnak on kollisiooni leidmine, kuid kahe juhusliku ja sarnase rĂ€si genereeriva sisendi otsimise asemel otsitakse sisendit, mis genereerib rĂ€si, mille on juba genereerinud mĂ”ni muu konkreetne sisend.

SeetĂ”ttu on kĂ”ik kollisioonikindlad rĂ€sifunktsioonid vastupidavad ka teise liigi kollisiooni rĂŒnnakutele, kuna viimane tĂ€hendab alati kollisiooni tekkimist. Siiski saab sooritada teise liigi kollisiooni rĂŒnnaku kollisioonikindla funktsiooni vastu, kuna see eeldab ĂŒhe sisendi leidmist ĂŒhest vĂ€ljundist.


Kaevandus

Bitcoini kaevandamisel on palju samme, mis hĂ”lmavad rĂ€sifunktsioone, nagu saldode kontrollimine, tehingute sisendite ja vĂ€ljundite sidumine ning tehingute rĂ€simine plokis, et moodustada Merkle'i puu. Kuid ĂŒks peamisi pĂ”hjusi, miks Bitcoini plokiahel on turvaline, on asjaolu, et kaevandajad peavad jĂ€rgmise ploki jaoks sobiva lahenduse leidmiseks lĂ€bi viima hulgaliselt rĂ€sitoiminguid.

TÀpsemalt peab kaevandaja proovima oma kandidaatploki jaoks mitut erinevat sisendit, et luua rÀsi. Sisuliselt saavad nad oma plokki valideerida ainult siis, kui nad genereerivad vÀljundrÀsi, mis algab teatud arvu nullidega. Nullide arv mÀÀrab kaevandamise raskuse ja see varieerub vastavalt vÔrgule antud rÀsimÀÀrale.

Sel juhul nÀitab rÀsimÀÀr, kui palju arvutivÔimsust bitcoini kaevandamisesse investeeritakse. Kui vÔrgu rÀsimÀÀr suureneb, kohandab bitcoini protokoll automaatselt kaevandamise raskust nii, et keskmine ploki kaevandamiseks kuluv aeg jÀÀks 10 minuti lÀhedale. Seevastu kui mitu kaevandajat otsustab kaevandamise lÔpetada, mille tÔttu rÀsimÀÀr langeb mÀrkimisvÀÀrselt, muudetakse kaevandamise raskusastet lihtsamaks (kuni keskmise ploki arvutusaeg jÔuab tagasi 10 minutini).

Pane tĂ€hele, et kaevandajad ei pea leidma kollisioone; nad peavad genereerima nĂ”uetele vastava rĂ€si (teatud arv nulle rĂ€si alguses). Seega on konkreetse ploki jaoks mitu vĂ”imalikku lahendust ja kaevandajad peavad neist leidma vaid ĂŒhe – vastavalt kaevandamise raskusastmele. 

Kuna bitcoini kaevandamine on kulumahukas ĂŒlesanne, pole kaevandajatel pĂ”hjust sĂŒsteemi petta, kuna see tooks kaasa mĂ€rkimisvÀÀrse rahalise kahju. Mida rohkem kaevandajaid plokiahelaga liitub, seda suuremaks ja tugevamaks see muutub.


LÔppmÀrkused

Pole kahtlust, et rĂ€sifunktsioonid on arvutiteaduses olulised tööriistad, eriti kui tegemist on tohutute andmemahtudega. KrĂŒptograafiaga kombineeritult vĂ”ivad rĂ€sialgoritmid olla ĂŒsna mitmekĂŒlgsed, pakkudes turvalisust ja autentimist mitmel erineval viisil. KrĂŒptograafilised rĂ€sifunktsioonid on peaaegu kĂ”igi krĂŒptovaluutavĂ”rkude jaoks ĂŒliolulised, seega on nende omaduste ja töömehhanismide mĂ”istmine kindlasti kasulik kĂ”igile, kes on huvitatud plokiahela tehnoloogiast.