![]() | |
---|---|
![]() | |
Տեսակ | authenticator? |
Հեղինակ | |
Նախագծումը՝ | Գուգլ |
ՕՀ | Android, iOS, BlackBerry OS |
Լույս տեսավ՝ | 2010-9-20 )[1] |
Պլատֆորմ | բջջային |
Արտոնագիր | ոչ ազատ ծրագրային ապահովման արտոնագիր[2] |
Կայք | github.com/google/google-authenticator-libpam |
![]() |
Google Authenticator, Google-ի կողմից թողարկված երկփուլ աուտենտիֆիկացման հավելված, որը աշխատում է Time-based One-time Password Algorithm (TOTP) և HMAC-based One-time Password Algorithm (HOTP) ալգորիթմների շնորհիվ։ Ծառայությունը իրականացնում է [rfc:6238 RFC 6238-ում] և [rfc:4226 RFC 4226-ում] նշված ալգորիթմները[3]։
Authenticator-ը 6- կամ 8-նիշանի, միանգամյա օգտագործման համար նախատեսված թվային գաղտնաբառ է, որը օգտագերը պետք է ներկայացնի մասնակցային հաշվի և գաղտնաբառի հետ՝ Google-ի կամ այլ ծառայությունների ծառայությունները մուտք գործելու համար։ Authenticator նաև կարող է կոդ ստանալ կողմնակի հավելվածների համար, ինչպիսիք են, օրինակ, գաղտնաբառերի մենեջերները և ֆայլերի հոսթինգի ծառայությունները։ Հավելվածի նախկին տարբերակները բաց կոդով մատչելի էին GitHub-ում, բայց վերջին տարբերակները Google-ի սեփականությունն են[4]։
Որպես կանոն, ի սկզբանե օգտատերերը պետք է հավելվածը ներբեռնեն և տեղադրեն իրենց բջջային սարքերում։ Կայք մուտք գործելու կամ ծառայության ծառայություններով օգտվելու համար, պետք է ներմուծել մասնակցային հաշիվը և գաղտնաբառը, բացել Authenticator հավելվածը և հատուկ դաշտում ներմուշել միանգամյա օգտագործման համար նախատեսված գաղտնաբառը։
Դրա համար կայքը օգտագիրոջը տրամադրում է ընդհանուր գաղտնի բանալի, որը պետք է պահպանված լինի Google Authenticator հավելվածում։ Այդ գաղտնի բանալին կօգտագործվի բոլոր հետագա կայք մուտքերի համար։
Երկփուլ աուտենտիֆիկացման շնորհիվ գաղտնաբառի/մասնակցային հաշվի իմացությունը բավական չէ մասնակցային հաշիվը ջարդելու համար։ Չարագործը նաև պետք է իմանա գաղտնի բանալին կամ պետք է Google Authenticator-ով սարքին ֆիզիկական մուտք ունենա։ Այլընտրանքային տարբերակ է MITM հարձակումը՝ եթե օգտատիրոջ համակարգիչը վարակված է տրոյանով, ապա մասնակցային հաշիվը, գաղտնաբառը և միանգամյա օգտագործման համար նախատեսված գաղտնաբառը կարող են խափանվել՝ սեփական մուտքի սեսսիան նախաձեռնելու կամ օգտատիրոջ ու կայքի միջև ինֆորմացիան փոփոխելու համար։
Google Authenticator տրամադրված է Android-ի[5], BlackBerry-ի, և iOS-ի համար[6]։ Նաև առկա են մի քանի կողմնակի իրականացումներ՝
Ծառայություն մատուցողը յուրաքանչյուր օգտատիրոջ համար ստանում է 80-բիթանոց գաղտնի բանալի (սակայն RFC 4226 §4-ը պահանջում է նվազագույնը 128 բիթ և խորհուրդ է տալիս 160 բիթ)[37]։ Բանալին տրամադրվում է Base32 կոդավորմամբ 16-, 26-, 32-նիշանի տողի կամ QR-կոդի տեսքով։ Գաղտնի բանալու միջոցով կլիենտը ստեղծում է HMAC-SHA1
Հետո HMAC -ի մի մաս հանվում է փոխակերպվում է 6-նիշանի կոդի։
function GoogleAuthenticatorCode(string secret)
key := base32decode(secret)
message := floor(current Unix time / 30)
hash := HMAC-SHA1(key, message)
offset := last nibble of hash
truncatedHash := hash[offset..offset+3] //4 bytes starting at the offset
Set the first bit of truncatedHash to zero //remove the most significant bit
code := truncatedHash mod 1000000
pad code with 0 until length of code is 6
return code
function GoogleAuthenticatorCode(string secret)
key := base32decode(secret)
message := counter encoded on 8 bytes
hash := HMAC-SHA1(key, message)
offset := last nibble of hash
truncatedHash := hash[offset..offset+3] //4 bytes starting at the offset
Set the first bit of truncatedHash to zero //remove the most significant bit
code := truncatedHash mod 1000000
pad code with 0 until length of code is 6
return code