OJK (Otoritas Jasa Keuangan) mewajibkan bank dan penyelenggara fintech di Indonesia menerapkan autentikasi berlapis untuk transaksi digital. Awalnya kebanyakan bank mengandalkan OTP lewat SMS, tapi maraknya penipuan SIM swap membuat semakin banyak aplikasi perbankan dan dompet digital beralih ke kode berbasis aplikasi seperti TOTP, di mana kunci rahasia tersimpan di perangkat dan tidak pernah melewati jaringan seluler operator.
Rahasia bersama plus waktu
Selama pengaturan, server dan aplikasi autentikator bertukar satu kunci rahasia bersama (itulah yang dikodekan dalam kode QR). Selanjutnya, kedua pihak secara independen menghitung HMAC dari rahasia itu dan waktu unix saat ini, dibulatkan ke interval 30 detik — menghasilkan kode yang sama tanpa saling berkomunikasi.
Mengapa ini berfungsi tanpa internet
Karena kode dihitung secara lokal dari rahasia dan jam sistem perangkat, aplikasi autentikator tidak membutuhkan koneksi jaringan untuk menghasilkan kode. Satu-satunya syarat adalah jam server dan ponsel tetap sinkron dalam toleransi kecil yang diizinkan (biasanya ±30–60 detik).
Mengapa kode berubah setiap 30 detik
Interval waktu yang singkat membatasi jendela waktu di mana kode yang tersadap tetap valid, mengurangi risiko penggunaan ulang oleh penyerang. Server biasanya menerima interval saat ini plus satu interval sebelumnya untuk mengompensasi sedikit keterlambatan jaringan saat memasukkan kode.
Untuk apa ini dibutuhkan
- Memahami mekanisme autentikasi dua faktor saat mengatur atau memecahkan masalah aplikasi autentikator.
- Menguji implementasi TOTP Anda sendiri saat mengembangkan sistem autentikasi.
- Menghasilkan kode untuk pengujian otomatis tanpa memasukkannya secara manual dari ponsel.
Apa yang Tidak Dilindungi TOTP
TOTP secara andal melindungi dari pencurian kata sandi secara terpisah dari kode, tetapi tidak dari phishing secara real-time: jika korban memasukkan kata sandi dan kode TOTP saat ini di situs palsu, penyerang dapat langsung menggunakan kedua nilai tersebut di situs asli selagi kode masih berlaku. Hanya kunci perangkat keras dengan standar FIDO2/WebAuthn, yang terikat secara kriptografis ke domain tertentu, yang melindungi dari serangan semacam ini.