Обща информация
Двуфакторната автентикация (известна още като 2FA) е механизъм, който комбинира два различни метода за автентикация за удостоверяване на потребителите. През март 2011 г. Google обяви използването на двуфакторна автентикация онлайн, последвана от MSN и Yahoo.
Освен проверката на потребителското име и паролата, двуфакторната автентикация изисква и комбинация от друго физическо устройство, като RSA токен или мобилен телефон. Двуфакторните сертифицирани продукти могат да се разделят общо на две категории:
Хардуерни устройства, които могат да генерират токени Приложение за смартфон
OTP
Паролата, използвана при двустъпкова верификация, е еднократна парола (OTP), известна още като динамична парола. Това е силна технология за удостоверяване, която използва криптографска технология за споделяне на ключове между клиенти и сървъри, и е много удобен технически начин за подобряване на текущата статична автентикация с парола, както и важна двустепенна технология за верификация.
OTP е съкратено от One-Time Password, което означава еднократна парола. Тя е разделена на следните два типа:
HOTP (HMAC-базиран алгоритъм за еднократна парола)
HOTP е еднократна парола, генерирана въз основа на алгоритъма HMAC, известен още като динамична парола за синхронизация на събития, който е спецификация на алгоритъма, публикувана от ITEF, а псевдокодът е следният:
Клиентът и сървърът предварително договарят ключ K за генериране на еднократна парола. Клиентът и сървърът имат по един брояч на събития C и синхронизират стойностите на броя предварително. Truncate е алгоритъм, който преобразува 20-байтов низ, генериран от HMAC-SHA-1, в няколко десетични цифри.
TOTP (Времеви алгоритъм за еднократна парола)
TOTP е подобрена версия на HOTP, която използва времето, за да замени брояча на събития C на HOTP, известен още като динамичен шифър за синхронизация на времето. Псевдокод:
T0 е началното време за тест, което по подразбиране е 0 X е времевата стъпка, която по подразбиране е 30 секунди Официалната документация дава кестеняв пример, при условие че текущото unix време = 59, T0 = 0, X = 30, след това T=1 Приемайки текущото unix време=60, T0=0, X=30, след това T=2 Тоест, стойността на T се закръгля надолу, а десетичната числа се изхвърля
От горната фигура виждаме, че има два основни елемента на входния алгоритъм – единият е споделеният ключ (известен още като seed), а другият е броенето (или времевият фактор), който се изчислява от конкретен алгоритъм. Ако и двата елемента са последователни, сървърната и клиентската страна ще изчислят един и същ резултат, което ще позволи функционалността за удостоверяване.
|