Home Tehnoloģija Kā darbojas divu faktoru autentifikācija (2FA)?

Kā darbojas divu faktoru autentifikācija (2FA)?

10
0

 

PūtītAsswords vairs nepietiek, lai jūsu konts būtu drošībā. Ja kāds nozog vai uzmin jūsu paroli, viņš var pieteikties jūsu kontā bez jūsu zināšanām. Lai samazinātu šo risku, daudzi pakalpojumi izmanto divu faktoru autentifikāciju (2FA). Tas pievieno otro prasību, kad jūs piesakāties, parasti kods, kas mainās ik pēc 30 sekundēm. Viens no populārākajiem veidiem, kā ģenerēt šos kodus, ir tādas lietotnes kā Google autentifikators. Kā tas darbojas?

Kas ir 2FA?

Ideja par 2FA ir tāda, ka jūs pierādāt savu identitāti divos dažādos veidos. Pirmais faktors ir kaut kas, ko jūs zināt: jūsu parole. Otrais faktors ir kaut kas, kas jums ir: autentifikatora lietotne, kas darbojas pa tālruni. Tas apgrūtina uzbrukumus, jo uzbrucējam ir nepieciešama gan jūsu parole, gan piekļuve tālrunim, lai gūtu panākumus.

OTP ir īsi ciparu kodi, kas darbojas tikai vienu reizi, un tikai īsā laika logā. Pat ja kāds pārtver vienu kodu, tas kļūst bezjēdzīgs 30 sekundes vēlāk.

TOTP ir sistēma, kas ģenerē šos kodus; Tas ir īss uz laiku balstītiem OTP. TOTP ir definēts atvērtā standartā, lai dažādas lietotnes un pakalpojumi varētu izmantot to pašu metodi un palikt saderīgi. Google autentifikators ir viena no pazīstamākajām ieviešanām.

Kā darbojas TOTP?

Pirms varat ģenerēt kodus, jūsu autentifikatora lietotnei un pakalpojumam, piemēram, Gmail vai Facebook, ir jāvienojas par slepenu informāciju. To sauc par slepeno atslēgu.

Iestatot Google autentifikatoru, pakalpojums sniedz jums šo noslēpumu. Parasti tas ir paslēpts QR koda iekšpusē, kuru jūs skenējat. Kad jūsu tālruņa lietotnei ir noslēpums un pakalpojums savā datu bāzē ir saglabājis to pašu noslēpumu, abas puses ir gatavas. Tagad viņi var izmantot šo atslēgu, kā arī pašreizējo laiku, lai ģenerētu tos pašus īsos kodus.

TOTP galvenā ideja ir izmantot laiku kā kustīgu ievadi. Laiks tiek sadalīts vienādos posmos, parasti 30 sekundes garš. Katram solim ir numurs, ko sauc par laika skaitītāju. Piemēram, ja pašreizējais laiks ir precīzi plkst. 14:00:00 un mēs skaitām ar 30 sekunžu intervālu, skaitītājs varētu būt liels skaits, piemēram, 50,00 000. Plkst. 14:00:30 pret vienu palielinās skaitītājs.

Lietotne ņem divas ieejas – koplietotā slepenā atslēga un pašreizējais laika skaitītājs.

Ar tiem tas darbojas kriptogrāfijas funkcijā, lai ģenerētu īsu ciparu kodu. Tā kā serveris var arī aprēķināt to pašu funkciju ar tām pašām divām ieejām, tas var pārbaudīt, vai jūsu kods ir derīgs.

Kas ir hash funkcijas?

Kodi tiek ģenerēti, izmantojot hash funkcijas. Hash funkcijai tiek veikta jebkura garuma ievade-piemēram, vārds, teikums vai garš numurs-un rada fiksēta garuma izvadi. Piemēram, SHA-256 hash funkcija vienmēr rada 256 bitu (32 baitu) izvadi.

Hash funkcijas ir vienvirziena: ņemot vērā izvadi, ir praktiski neiespējami izdomāt sākotnējo ievadi. Tie ir arī ļoti jutīgi: ja jūs maināt tikai vienu ieejas rakstzīmi, izvade pilnībā mainās.

Šīs īpašības padara hash funkcijas ideālas drošībai. Bet TOTP neizmanto tikai SHA-256. Tas to izmanto konstrukcijā, ko sauc par HMAC.

HMAC apzīmē “hash balstītu ziņojumu autentifikācijas kodu”. Tas ir gudrs veids, kā apvienot slepeno atslēgu ar ziņojumu, izmantojot hash funkciju. Rezultāts ir īss datu gabals, kas pierāda gan autentiskumu (“tas nāca no kāda ar slepeno atslēgu”) un integritāti (“Ziņojums netika mainīts”).

HMAC formula izskatās sarežģīta, bet ideja ir vienkārša – atspēkojiet atslēgu, pārliecinoties, ka tai ir pareizais garums; Apvienojiet atslēgu ar konstantu, ko sauc par iekšējo spilventiņu, izmantojot XOR funkciju (vairāk par to vēlāk); sajaukt to kopā ar ziņojumu; Apvienojiet atslēgu ar ārējo spilventiņu, izmantojot XOR funkciju; un sajauciet to kopā ar 2. darbības rezultātu.

Galīgā izvade ir 256 bitu virkne. Tas ir daudz garāks nekā seši cipari, ko redzat Google autentifikatorā. Tieši tur nāk nākamais solis.

Kā tiek izgatavots galīgais kods?

HMAC izeja ir 256 biti jeb 64 heksadecimālas rakstzīmes. Lai to pārvērstu par īsu kodu, TOTP izmanto procesu, ko sauc par dinamisko saīsinājumu. Tas izvēlas daļu no HMAC izejas, pamatojoties uz dažiem pēdējiem bitiem, pēc tam šos bitus interpretē kā skaitli. Visbeidzot, tas samazina to skaitu, dalot to ar 10,00 000 un ņemot atlikušo daļu.

Rezultāts ir sešciparu skaitlis no 000000 līdz 999999. Šis ir kods, kuru redzat savā lietotnē.

Tā kā laika skaitītājs mainās ik pēc 30 sekundēm, mainās arī kods. Tā kā gan jūsu lietotne, gan serveris izmanto vienu un to pašu noslēpumu un to pašu skaitītāju, viņi abi nonāk vienā un tajā pašā sešciparu skaitā.

Kas ir Xor?

XOR ir viena no vienkāršākajām, tomēr visspēcīgākajām operācijām datorzinātnēs. Tā nosaukums ir īss “ekskluzīvam vai”. Tā ir loģiska operācija, kas darbojas uz bitiem. Noteikumi ir vienkārši:

0 xor 0 = 0

1 xor 0 = 1

0 xor 1 = 1

1 xor 1 = 0

Citiem vārdiem sakot, XOR izvada 1, ja ieejas ir atšķirīgas un 0, ja tās ir vienādas. XOR ir noderīgs, jo tas ir atgriezenisks: a xor a = 0. teiksim, xor b = C. Zinot c, kā jūs atrodat a?

Jūs darāt c xor b, jo tas ir tāds pats kā (a xor b) xor B. Jo b xor b = 0, jums paliek A.

Šis īpašums padara XOR funkciju ļoti ērtu kriptogrāfijā.

HMAC funkcija XOR tiek izmantota, lai sajauktu slepeno atslēgu ar iekšējiem un ārējiem spilventiņiem, piemēram, šādi: HMAC_SHA256 (atslēga, ziņojums) = sha256 (ārējā_pada xor (sha256 (iekšējais_pada xor ziņojums)))))))))))))))))

Tas nodrošina, ka atslēga netiek izmantota tieši, bet mainītā, drošākā formā.

Cik drošs ir TOTP?

TOTP drošība nāk no vairākiem slāņiem. Slepenā atslēga ir zināma tikai jūsu ierīcei un serverim. HMAC-SHA-256 nodrošina, ka bez atslēgas neviens nevar paredzēt izvadi. Arī laika atkarība nozīmē, ka pat tad, ja kāds redz kodu, tas ir derīgs tikai uz īsu laiku. Kaut arī saīsināšana padara izvadi nelielu, jo iespējamo HMAC izvadu pamatā esošā telpa ir milzīga, uzminot, ka kods ir praktiski neiespējams.

Šī slāņainā pieeja nozīmē, ka uzbrucēji nevar vienkārši uzminēt vai aprēķināt jūsu kodus, ja arī nav arī jūsu slepenās atslēgas.

TOTP ir īpašs vispārīgākas sistēmas gadījums, ko sauc par HMAC balstītu OTP. Tas izmanto skaitītāju, kas palielinās katru reizi, kad pieprasāt kodu, nevis izmantojat laiku. TOTP arī aizstāj skaitītāju ar pašreizējo laika šķēli, kas padara to ērtāku, jo abas puses automātiski paliek sinhronizācijā.

Citas sistēmas izmanto dažādas pieejas. Piemēram, uz push balstītas 2FA lietotnes nosūta jums paziņojumu apstiprināšanai. Aparatūras žetoni, piemēram, Yubikeys, ģenerē kodus tieši fiziskā ierīcē. Bet visiem ir vienāds princips: pievienojot otro faktoru ārpus paroles.

Sakiet, ka jūsu slepenā atslēga ir “pūķis” (patiesībā tā būtu nejauša baitu virkne), un pašreizējais laika skaitītājs ir 10,00 000. Aprēķiniet slepenā un letes HMAC-SHA-256. Tas dod 256 bitu rezultātu, piemēram, 4a3b7f2c… (64 heksadecimālas rakstzīmes). Izmantojiet pēdējos dažus bitus, lai izvēlētos nobīdi, pēc tam startē četrus baitus. Pārvērtiet šos baitus skaitā, kas, teikts 123456789. Sadaliet 12,34,56,789 ar 1 000 000, un ņemiet atlikušo daļu: 4 56,789. Tādējādi jūsu sešciparu OTP ir 456789.

Tajā pašā brīdī serveris veic tādas pašas darbības un iegūst tādu pašu rezultātu. Ja jūsu ievade sakrīt, jūs esat autentificēts.

avots