Cihaz saatı sürüşdükdə TOTP kodları niyə uğursuz olur
Kod, sirrin və cari zaman addımının heşidir. Hər iki tərəfdəki fərqi müqayisə edin, sonra pəncərəni genişlətmək əvəzinə saatı düzəldin.
Birdəfəlik kodlar telefonunuzda tamamilə düzgün ola bilər və eyni saniyədə server tərəfindən rədd edilə bilər. Hər iki tərəf ortaq sirrdən və cari zaman addımından eyni funksiyanı hesablayır, ona görə də zaman barədə fikir ayrılığı kod barədə fikir ayrılığı yaradır. Bu, saat sürüşməsini narahatlıq deyil, təhlükəsizlik baxımından əhəmiyyətli bir nasazlıq edir.
Burada iki saat vacibdir və görünən saatı düzəltmək insanların ilk etdiyi hissədir. Diqqət tələb edən saat adətən digəridir.
Kod zamanın funksiyasıdır, parol deyil
TOTP ortaq sirri və cari vaxtdan çıxarılan sayğacı götürür, hər ikisini açar ilə qorunan heşdən keçirir və nəticəni qısa onluq sətrə qədər kəsir; bu, RFC 6238 standartında müəyyən edilib. Sayğac hər zaman addımında irəliləyir, bu da adətən otuz saniyədir, ona görə də eyni sirr addım dəyişdikdə yeni dəyər yaradır. Yoxlayıcı cari addım üçün gözlənilən dəyəri yenidən hesablayır və müqayisə edir, bunun üçün eyni sirr və indiki an haqqında eyni təsəvvür tələb olunur. Parol dəyişdirilənə qədər təkrar istifadə oluna bilər, halbuki bu dəyər müştərinin görə bilmədiyi sərhəddə bitir.
Buna görə bir kod işləyir, sonrakı isə bir neçə an sonra uğursuz olur. Bu həm də çat mesajından kod kopyalamağın niyə bu qədər etibarsız bir vərdiş olduğunu izah edir.
İki saat razılaşmalıdır, biri deyil
Qeydiyyat materialı ilk ortaq şeydir, zaman isə ikincidir. Əgər sirr düzgündürsə, lakin saatlar tolere edilən pəncərədən çox fərqlənirsə, yaradılan hər dəyər yanlış addıma düşür və rədd edilir. Əgər saatlar razılaşır, lakin sirr yanlışdırsa, hər dəyər də rədd edilir və hər iki nasazlıq giriş ekranından eyni görünür. Onları ayırmaq hesab qeydini və vaxtı ayrı-ayrılıqda, bu ardıcıllıqla yoxlamaq deməkdir.
Yoxlayıcının saatı da cihazın saatı qədər diqqətə layiqdir. Vaxt mənbəyi xarab olan server bütün istifadəçilərin düzgün kodlarını eyni anda rədd edir və hesabatlar sürüşmə deyil, qəfil kəsinti təsvir edəcək. Bu nümunəni tanımağa dəyər, çünki onun düzəlişi yüz telefonlarda deyil, serverdə olmalıdır.
Pəncərəni genişlətməyin nəyə başa gəldiyi
Tətbiqlər kiçik fərqləri udmaq üçün qonşu addımdan kod qəbul edə bilər və bu tolerantlıq sərbəst düzəliş deyil, dizayn qərarıdır. Hər əlavə addım istənilən anda etibarlı olan dəyərlərin sayını çoxaldır və bu, təxmin edən hücumçunun tam istədiyi şeydir. Təkrar oynatma qaydası da eyni səbəbdən vacibdir, çünki iki dəfə qəbul edilən kod faydalı şəkildə sızmış koddur. Şikayətləri susdurmaq üçün pəncərəni genişlədən administrator real xassəni kosmetik yaxşılaşdırma ilə dəyişir.
Saatı düzəltmək təmirdir, pəncərəni genişlətmək isə sakitləşdiricidir. Birincisi səbəbi aradan qaldırır, ikincisi onu gizlədir.
Yenidən cəhd etməzdən əvvəl hər iki saatı yoxlayın
Cihazdakı və serverdəki vaxtı oxuyun və göstərilən yerli vaxtları deyil, fərqləri müqayisə edin. Aşağıdakı əmrlər Linux hostunda və ya serverində sinxronizasiya vəziyyətini və xam UTC anını göstərir. Hər hansı autentifikasiya parametrini dəyişməzdən əvvəl onları hər iki tərəfdə işə salın.
timedatectl
date -u +'%Y-%m-%dT%H:%M:%SZ'
chronyc tracking
timedatectl timesync-status
Saniyələrlə ölçülən fərq zərərsizdir, dəqiqələrlə ölçülən fərq rəddi izah edir, heç bir sinxronizasiya mənbəyi bildirməyən sistem isə hər ikisi üçün namizəddir. İki UTC vaxt damğasını birbaşa müqayisə edin, çünki yerli vaxt alqoritmin heç vaxt görmədiyi saat qurşağını ehtiva edir. Fərqlər kiçikdirsə və kodlar hələ də uğursuz olursa, saatları tənzimləməyi dayandırın və bunun əvəzinə qeydiyyat yazısını yoxlayın. Bloklanmış hesaba qarşı təkrar cəhdlər ilkin nasazlığı müşahidə etməyi çətinləşdirir.
Rədd vaxtını, fərqi və xəta mətnini qeyd edin və ortaq sirri oradan çıxarın. Dəstək ilk üçü ilə işləyə bilər və dördüncünü heç vaxt görməməlidir.