Kod sekali guna boleh betul sepenuhnya pada telefon anda dan tetap ditolak oleh pelayan pada saat yang sama. Kedua-dua pihak mengira fungsi yang sama daripada rahsia dikongsi dan langkah masa semasa, jadi perselisihan tentang masa menghasilkan perselisihan tentang kod. Itu menjadikan hanyutan jam sebagai kecacatan yang berkaitan dengan keselamatan dan bukan sekadar gangguan.

Dua jam penting di sini, dan membetulkan yang kelihatan ialah bahagian yang orang lakukan dahulu. Yang biasanya memerlukan perhatian ialah yang satu lagi.

Kod ialah fungsi masa, bukan kata laluan

TOTP mengambil rahsia dikongsi dan pembilang yang diterbitkan daripada masa semasa, menyalurkan kedua-duanya melalui cincangan berkunci dan memotong hasilnya kepada rentetan perpuluhan pendek, seperti yang dinyatakan dalam RFC 6238. Pembilang bergerak maju pada setiap langkah masa, biasanya tiga puluh saat, jadi rahsia yang sama menghasilkan nilai baharu apabila langkah berubah. Pengesah mengira semula nilai jangkaan untuk langkah semasa dan membandingkan, yang memerlukan rahsia yang sama dan tanggapan yang sama tentang sekarang. Kata laluan kekal boleh diguna semula sehingga ditukar, manakala nilai ini luput pada sempadan yang tidak dapat dilihat oleh klien.

Sebab itulah satu kod berfungsi dan kod seterusnya gagal beberapa saat kemudian. Ini juga menjelaskan mengapa menyalin kod daripada mesej sembang ialah tabiat yang begitu tidak boleh diharap.

Dua jam mesti bersetuju, bukan satu

Bahan pendaftaran ialah perkara dikongsi yang pertama, dan masa ialah yang kedua. Jika rahsia betul sedangkan jam berbeza lebih daripada tetingkap yang dibenarkan, setiap nilai yang dijana jatuh pada langkah yang salah dan ditolak. Jika jam bersetuju sedangkan rahsia salah, setiap nilai juga ditolak, dan kedua-dua kegagalan kelihatan serupa dari skrin log masuk. Memisahkannya bermakna memeriksa entri akaun dan masa secara berasingan, dalam susunan itu.

Jam pengesah wajar mendapat penelitian yang sama seperti jam peranti. Pelayan yang sumber masanya rosak menolak kod betul daripada semua pengguna serentak, dan laporan akan menggambarkan gangguan mengejut dan bukan hanyutan. Corak itu wajar dikenali, kerana pembetulannya terletak pada pelayan dan bukan pada seratus telefon.

Apa kos meluaskan tetingkap

Pelaksanaan boleh menerima kod daripada langkah bersebelahan untuk menyerap perbezaan kecil, dan toleransi itu ialah keputusan reka bentuk, bukan pelarasan percuma. Setiap langkah tambahan menggandakan bilangan nilai yang sah pada bila-bila masa, iaitu tepat apa yang disukai penyerang yang meneka. Peraturan anti-ulangan penting atas sebab yang sama, kerana kod yang diterima dua kali ialah kod yang bocor secara berguna. Pentadbir yang meluaskan tetingkap untuk mendiamkan aduan menukar sifat sebenar dengan penambahbaikan kosmetik.

Membetulkan jam ialah pembaikan, manakala meluaskan tetingkap ialah penenang. Yang pertama menghapuskan punca dan yang kedua menyembunyikannya.

Periksa kedua-dua jam sebelum mencuba lagi

Baca masa pada peranti dan pada pelayan, dan bandingkan sisihan dan bukan waktu tempatan yang dipaparkan. Arahan di bawah menunjukkan keadaan penyegerakan dan detik UTC mentah pada hos atau pelayan Linux. Jalankannya pada kedua-dua hujung sebelum menukar mana-mana tetapan pengesahan.

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

Sisihan yang diukur dalam saat tidak berbahaya, yang diukur dalam minit menjelaskan penolakan, dan sistem yang tidak melaporkan sebarang sumber penyegerakan ialah calon untuk kedua-duanya. Bandingkan kedua-dua cap masa UTC secara langsung, kerana waktu tempatan merangkumi zon waktu yang tidak pernah dilihat oleh algoritma. Jika sisihan kecil dan kod masih gagal, berhenti melaras jam dan sebaliknya periksa entri pendaftaran. Cubaan berulang terhadap akaun yang dikunci menjadikan kecacatan asal lebih sukar diperhatikan.

Catat masa penolakan, sisihan dan teks ralat, dan jauhkan rahsia dikongsi daripada itu. Sokongan boleh bekerja dengan tiga yang pertama dan tidak sepatutnya pernah melihat yang keempat.

Artikel berkaitan