Бір реттік кодтар телефоныңызда мүлдем дұрыс болуы мүмкін, бірақ сервер оларды сол секундта қабылдамауы мүмкін. Екі жақ та ортақ құпия мен ағымдағы уақыт қадамынан бірдей функцияны есептейді, сондықтан уақыт туралы келіспеушілік код туралы келіспеушілікке әкеледі. Бұл сағат ауытқуын жай ғана қолайсыздық емес, қауіпсіздікке қатысты ақауға айналдырады.

Мұнда екі сағат маңызды, ал көрінетін сағатты түзету — адамдар бірінші жасайтын бөлік. Әдетте назар аударуды қажет ететін сағат — екіншісі.

Код — уақыт функциясы, құпиясөз емес

TOTP ортақ құпия мен ағымдағы уақыттан алынған санағышты алады, екеуін де кілтті хэштен өткізіп, нәтижені қысқа ондық жолға қысқартады, бұл RFC 6238 стандартында айқындалған. Санағыш әр уақыт қадамында алға жылжиды, әдетте отыз секунд, сондықтан қадам өзгергенде сол құпия жаңа мән жасайды. Тексеруші ағымдағы қадамның күтілетін мәнін қайта есептеп салыстырады, бұл сол құпия мен қазір туралы бірдей түсінікті талап етеді. Құпиясөз өзгертілгенге дейін қайта қолданылады, ал бұл мән клиент көрмейтін шекарада мерзімі бітеді.

Сондықтан бір код жұмыс істейді, ал келесісі бірнеше сәттен кейін істемейді. Бұл сондай-ақ чат хабарламасынан кодты көшіру неге соншалықты сенімсіз әдет екенін түсіндіреді.

Екі сағат сәйкес келуі керек, біреуі емес

Тіркеу материалы — бірінші ортақ нәрсе, ал уақыт — екіншісі. Егер құпия дұрыс болса, ал сағаттар рұқсат етілген терезедегіден көбірек ауытқыса, әрбір жасалған мән дұрыс емес қадамға түсіп, қабылданбайды. Егер сағаттар сәйкес келсе, ал құпия дұрыс болмаса, әрбір мән де қабылданбайды, және екі сәтсіздік те кіру экранынан бірдей көрінеді. Оларды ажырату үшін тіркелгі жазбасы мен уақытты бөлек, осы тәртіппен тексеру керек.

Тексерушінің сағаты да құрылғының сағатындай мұқият тексеруге лайық. Уақыт көзі бүлінген сервер барлық пайдаланушының дұрыс кодтарын бірден қабылдамайды, ал есептер ауытқуды емес, кенет іркілісті сипаттайды. Бұл үлгіні тану керек, өйткені оны түзету жүз телефонға емес, серверге тиесілі.

Терезені кеңейту қанша тұрады

Іске асырулар шағын айырмашылықтарды сіңіру үшін көршілес қадамның кодын қабылдауы мүмкін, және бұл төзімділік тегін реттеу емес, дизайн шешімі. Әрбір қосымша қадам кез келген сәтте жарамды мәндердің санын көбейтеді, бұл дәл болжаушы шабуылдаушыға ұнайтын нәрсе. Қайталауға қарсы ереже де сол себепті маңызды, өйткені екі рет қабылданған код тиімді түрде ағып кеткен код. Терезені шағымдарды тыныштандыру үшін кеңейтетін әкімші нақты қасиетті косметикалық жақсартуға айырбастайды.

Сағатты түзету — жөндеу, ал терезені кеңейту — тыныштандырғыш. Біріншісі себепті жояды, екіншісі оны жасырады.

Қайта көріп көру алдында екі сағатты да тексеріңіз

Уақытты құрылғыдан және серверден оқып, көрсетілген жергілікті уақыттарды емес, ауытқуларды салыстырыңыз. Төмендегі пәрмендер Linux хостында немесе серверінде синхрондау күйін және таза UTC сәтін көрсетеді. Кез келген аутентификация параметрін өзгерту алдында оларды екі ұшта да іске қосыңыз.

timedatectl
date -u +'%Y-%m-%dT%H:%M:%SZ'
chronyc tracking
timedatectl timesync-status

Секундпен өлшенген ауытқу зиянсыз, минутпен өлшенген ауытқу бас тартуды түсіндіреді, ал синхрондау көзін мүлде хабарламайтын жүйе екеуіне де үміткер. Екі UTC уақыт белгісін тікелей салыстырыңыз, өйткені жергілікті уақыт алгоритм ешқашан көрмейтін уақыт белдеуін қамтиды. Егер ауытқулар аз болса және кодтар әлі де істемесе, сағаттарды реттеуді тоқтатып, оның орнына тіркеу жазбасын тексеріңіз. Құлыпталған тіркелгіге қарсы қайталанған әрекеттер бастапқы ақауды байқауды қиындатады.

Бас тарту уақытын, ауытқуды және қате мәтінін жазып алыңыз, ал ортақ құпияны одан тыс қалдырыңыз. Қолдау алғашқы үшеуімен жұмыс істей алады және төртіншісін ешқашан көрмеуі керек.

Қатысты мақалалар