Qurilma soati siljiganda TOTP kodlari nima uchun ishlamaydi
Kod sir va joriy vaqt qadamining xeshidir. Ikkala uchdagi og‘ishlarni solishtiring, so‘ng oynani kengaytirish o‘rniga soatni to‘g‘rilang.
Bir martalik kodlar telefoningizda mutlaqo to‘g‘ri bo‘lishi mumkin, ammo server ularni o‘sha soniyada rad etishi mumkin. Ikki tomon ham umumiy sir va joriy vaqt qadamidan bir xil funksiyani hisoblaydi, shuning uchun vaqt borasidagi kelishmovchilik kod borasida kelishmovchilik tug‘diradi. Bu soat siljishini shunchaki noqulaylik emas, xavfsizlikka oid nuqson qiladi.
Bu yerda ikkita soat muhim, ko‘rinadiganini to‘g‘rilash esa odamlar birinchi qiladigan qismdir. Odatda e’tibor talab qiladigan soat boshqasi.
Kod vaqt funksiyasidir, parol emas
TOTP umumiy sirni va joriy vaqtdan olingan hisoblagichni oladi, ikkalasini ham kalitli xeshdan o‘tkazadi va natijani qisqa o‘nlik satrga qisqartiradi, bu RFC 6238 standartida belgilangan. Hisoblagich har vaqt qadamida oldinga siljiydi, odatda o‘ttiz soniya, shuning uchun qadam o‘zgarganda o‘sha sir yangi qiymat hosil qiladi. Tekshiruvchi joriy qadam uchun kutilgan qiymatni qayta hisoblab solishtiradi, bu esa o‘sha sirni va hozir haqidagi bir xil tasavvurni talab qiladi. Parol o‘zgartirilmaguncha qayta ishlatilishi mumkin, bu qiymat esa mijoz ko‘rmaydigan chegarada tugaydi.
Shuning uchun bir kod ishlaydi, keyingisi esa bir necha lahzadan keyin ishlamaydi. Bu chat xabaridan kod nusxalash nima uchun bunchalik ishonchsiz odat ekanini ham tushuntiradi.
Ikki soat mos kelishi kerak, bittasi emas
Ro‘yxatdan o‘tish materiali birinchi umumiy narsa, vaqt esa ikkinchisi. Agar sir to‘g‘ri bo‘lsa-yu, soatlar ruxsat etilgan oynadan ko‘proq farq qilsa, hosil qilingan har bir qiymat noto‘g‘ri qadamga tushadi va rad etiladi. Agar soatlar mos kelsa-yu, sir noto‘g‘ri bo‘lsa, har bir qiymat ham rad etiladi, va ikkala nosozlik ham kirish ekranidan bir xil ko‘rinadi. Ularni ajratish hisob yozuvi va vaqtni alohida-alohida, shu tartibda tekshirishni anglatadi.
Tekshiruvchining soati ham qurilma soatidek sinchkovlikka loyiq. Vaqt manbasi buzilgan server barcha foydalanuvchilarning to‘g‘ri kodlarini bir yo‘la rad etadi va hisobotlarda siljish emas, to‘satdan uzilish tasvirlanadi. Bu qolipni tanigan ma’qul, chunki uni tuzatish yuzlab telefonlarga emas, serverga tegishli.
Oynani kengaytirish qancha turadi
Amalga oshirishlar kichik farqlarni yutish uchun qo‘shni qadamdan kod qabul qilishi mumkin, va bu bag‘rikenglik bepul sozlash emas, dizayn qaroridir. Har bir qo‘shimcha qadam har qanday lahzada amal qiladigan qiymatlar sonini ko‘paytiradi, bu esa aynan taxmin qiluvchi hujumchi yoqtiradigan narsa. Takrorlashga qarshi qoida ham shu sababdan muhim, chunki ikki marta qabul qilingan kod foydali tarzda oqib chiqqan koddir. Shikoyatlarni jim qilish uchun oynani kengaytirgan administrator haqiqiy xususiyatni tashqi yaxshilanishga almashtiradi.
Soatni to‘g‘rilash ta’mirlashdir, oynani kengaytirish esa tinchlantiruvchi. Birinchisi sababni yo‘q qiladi, ikkinchisi uni yashiradi.
Qayta urinishdan oldin ikkala soatni tekshiring
Qurilma va serverdagi vaqtni o‘qing va ko‘rsatilgan mahalliy vaqtlar o‘rniga og‘ishlarni solishtiring. Quyidagi buyruqlar Linux xosti yoki serverida sinxronizatsiya holatini va xom UTC lahzani ko‘rsatadi. Har qanday autentifikatsiya sozlamasini o‘zgartirishdan oldin ularni ikkala uchda ishga tushiring.
timedatectl
date -u +'%Y-%m-%dT%H:%M:%SZ'
chronyc tracking
timedatectl timesync-status
Soniyalarda o‘lchangan og‘ish zararsiz, daqiqalarda o‘lchangani rad etishni tushuntiradi, va hech qanday sinxronizatsiya manbasini xabar qilmaydigan tizim ikkalasiga ham nomzod. Ikki UTC vaqt belgisini to‘g‘ridan-to‘g‘ri solishtiring, chunki mahalliy vaqt algoritm hech qachon ko‘rmaydigan vaqt zonasini o‘z ichiga oladi. Agar og‘ishlar kichik bo‘lsa-yu, kodlar hali ham ishlamasa, soatlarni sozlashni to‘xtating va buning o‘rniga ro‘yxat yozuvini tekshiring. Qulflangan hisobga qarshi takroriy urinishlar asl nuqsonni kuzatishni qiyinlashtiradi.
Rad etish vaqtini, og‘ishni va xato matnini yozib oling, umumiy sirni esa bundan tashqarida qoldiring. Yordam birinchi uchtasi bilan ishlay oladi va to‘rtinchisini hech qachon ko‘rmasligi kerak.