Pernah ga sih nyobain login ke suatu aplikasi yang udah dipasang multi-factor authentication, terus dia nanya mau pasang authenticator atau engga? Pas nanti MFA nya jalan, dia butuh verifikasi tambahan itu beneran kita, dia bakal minta 6 digit passcode ke kita, dan kita tinggal buka authenticatornya di smartphone, pilih akunnya, dan masukin kodenya sementaranya sebelum waktunya abis.
Kerennya, kalau misal smartphone kita ga punya kuota pun, itu tetep jalan loh. Jadi gimana caranya mereka bisa komunikasi, dan ngesinkronin kode, padahal ga ada koneksi? Gimana itu tau memang beneran smartphone kita yang bikin itu kode, bukan orang sembarangan? Coba kita bahas pelan pelan ya.
Jadi TOTP itu apa?
Kepanjangannya sendiri itu Time-based One-Time Password, dan seharusnya itu udah cukup menggambarkan lah ya. Dia menggunakan waktu yang ada di smartphone, dan juga di server aplikasinya, dimasukin ke dalem persamaannya untuk ngebuat kode TOTP nya itu.
Cara kerjanya gimana?
Waktu masang MFA, nanti sistemnya ngebuat kode rahasia dulu, dan kode rahasianya dibagi ke aplikasi authenticator dan juga servernya, jadi sebuah shared secret.
Kalo penasaran, kurang lebih kaya gini persamaannya buat masukin waktu ke dalem perhitungan kodenya:

- CT disini sebagai input yang dimasukin ke algoritma TOTP nya.
- T adalah waktu sekarang tapi dalam unix.
- T0 adalah waktu awal, dalam unix itu 0.
- TX adalah durasi lamanya passcode itu berlaku, misal 30 atau 60 detik.
Jadi itu CT masuk kedalem kode rahasia yang tadi udah dibagi, dan jadi deh kode TOTP, yang ganti setiap TX. Jadi misal waktunya udah sinkron, kalo ga ada internet pun kode bakal tetep sinkron. Nah kalo waktunya ga sinkron, itu baru gagal, untuk itu perlu timeserver yang sama dan sinkron.
Masalah dengan TOTP
Inget tadi pas gw bilang sistemnya ngebuat shared secret? Ya, kalo ada yang berhasil nyolong, dia bisa pasang di authenticatornya sendiri terus ngebuat passcode yang jalan terus-terusan.
Karena passcode ini kita masukin lewat interface aplikasi, masih ada kemungkinan kena phising, tapi karena memang durasi hidupnya passcodenya cuma TX (kemungkinan cuma 1/2 – 1 menit), orang yang berhasil nyuri pun perlu cepet-cepet manfaatin, kalau tidak, hangus.
Kesimpulan
TOTP ini menggunakan shared secret dan memanfaatkan waktu untuk membuat passcode sementara, tapi jangan lupa jaga juga secret itu dengan aman, soalnya kalo secretnya kebobol ya sama aja boong.
Penutup
Untuk post kali ini gw nyobain gaya yang lebih casual lagi, moga lebih gampang kali ya dicernanya. Post macam gini pengen coba yang lebih ringan aja kaya knowledge bites gitu. Moga aja bermanfaat.
Kalo mau lebih jelas lagi mungkin liat sumber-sumbernya aja nih:
Leave a Reply