Verify

Apa arti OTP? Penjelasan one-time password

OTP adalah singkatan dari one-time password (terkadang disebut one-time passcode). Ini adalah kode pendek, biasanya empat hingga delapan digit, yang berlaku untuk satu kali login atau satu transaksi, lalu kedaluwarsa. Karena setiap kode hanya bisa dipakai sekali dan hanya dalam jendela waktu singkat, kode yang bocor setelah digunakan tidak bernilai bagi penyerang. Sifat sekali pakai inilah alasan OTP ada.

Anda hampir pasti pernah mengetik salah satunya: enam digit yang dikirim bank lewat SMS sebelum transfer, kode yang ditampilkan aplikasi autentikator saat Anda masuk, atau angka yang dikirim situs web lewat email untuk memastikan itu benar-benar Anda. Semua itu adalah OTP, yang berbeda terutama dalam cara kode dibuat dan cara kode sampai ke Anda.

Bagaimana cara kerja OTP?

Layanan dan pengguna membutuhkan cara untuk menyepakati kode yang valid saat ini, tanpa mengirim kata sandi itu sendiri dengan cara yang bisa ditebak. Ada dua metode standar, dan perbedaannya terletak pada apa yang membuat kode berubah.

  • HOTP (one-time password berbasis HMAC). Kode diturunkan dari kunci rahasia bersama dan penghitung. Token pengguna memajukan penghitung saat membuat kode. Verifier layanan memajukan statusnya setelah menerima kode yang diharapkan. Kode HOTP tidak kedaluwarsa hanya karena waktu berlalu.
  • TOTP (one-time password berbasis waktu). Kode diturunkan dari kunci rahasia bersama dan waktu saat ini, dibulatkan ke jendela waktu tertentu (umumnya 30 detik). Kode berubah dengan sendirinya seiring berjalannya waktu, baik ada yang menggunakannya maupun tidak. Inilah yang dihasilkan oleh aplikasi autentikator.

TOTP lebih umum dari keduanya karena kedaluwarsa otomatis membatasi berapa lama kode curian bisa digunakan. HOTP masih muncul di token perangkat keras dan di alur di mana jam yang tersinkronisasi waktu sulit dijamin.

Bagaimana OTP dikirimkan?

Metode pembuatan dan kanal pengiriman adalah pilihan yang terpisah. Kode bisa dihitung di perangkat pengguna sendiri, atau dibuat di server lalu dikirim ke mereka.

  • SMS. Server membuat kode dan mengirimkannya lewat SMS ke nomor telepon pengguna. Jangkauan universal, tanpa perlu aplikasi. Ini juga kanal yang paling mudah disadap, melalui SIM-swap atau serangan jaringan.
  • Email. Kode masuk ke kotak masuk pengguna. Praktis dan tanpa aplikasi, tetapi hanya seaman akun email itu sendiri.
  • Panggilan suara. Panggilan otomatis membacakan kode, yang membantu pengguna yang tidak bisa menerima SMS atau yang membutuhkan opsi aksesibel.
  • Aplikasi autentikator. Kode dihitung secara lokal dengan TOTP. Tidak ada yang dikirim lewat jaringan, sehingga tidak ada yang bisa disadap dalam perjalanan.

Setiap kanal menukar jangkauan dengan seberapa sulit kanal itu diserang. SMS dan email menjangkau hampir semua orang; kode berbasis aplikasi lebih sulit dicuri tetapi mengharuskan pengguna sudah menyiapkan aplikasi terlebih dahulu.

Di mana OTP digunakan?

Penggunaan paling umum adalah sebagai faktor kedua dalam autentikasi dua faktor, di mana OTP membuktikan kepemilikan ponsel atau perangkat di atas kata sandi. Tetapi OTP juga muncul jauh di luar login.

  • Verifikasi login: mengonfirmasi proses masuk, terutama dari perangkat atau lokasi baru.
  • Konfirmasi transaksi: menyetujui pembayaran, transfer, atau perubahan detail pembayaran.
  • Pemulihan akun: mengonfirmasi kendali atas nomor telepon atau email sebelum mereset kata sandi.
  • Pemeriksaan tambahan: meminta kode baru sebelum tindakan sensitif, bahkan di tengah sesi.

Jika Anda mempertimbangkan apakah OTP menjadikan login benar-benar "two-factor", itu tergantung pada sisa alurnya. Perbedaannya dibahas di autentikasi dua faktor vs. verifikasi dua langkah.

Pertimbangan keamanan dan praktik terbaik

OTP itu sederhana, dan justru karena itulah detailnya penting. Beberapa kebiasaan menjaga efektivitasnya.

  • Kedaluwarsa singkat. Batasi waktu kode secara ketat. Beberapa menit untuk SMS dan email, jendela standar 30 detik untuk TOTP. Semakin pendek jendela waktu, semakin kecil peluang kode dipakai ulang.
  • Pembatasan laju permintaan. Batasi berapa banyak kode yang bisa diminta pengguna dan berapa banyak tebakan yang bisa mereka coba. Kode enam digit memiliki sejuta kemungkinan, yang bisa di-brute-force oleh penyerang tanpa throttle; beberapa percobaan per kode menutup celah itu.
  • Sekali pakai, diterapkan di sisi server. Batalkan kode begitu diterima, dan setelah terlalu banyak kegagalan. Jangan mengandalkan klien untuk mencegah penggunaan ulang.
  • Jangan pernah mencatat kode. Jauhkan OTP dari log aplikasi, analitik, dan laporan kesalahan. Kode yang tersimpan di file log adalah kode yang bisa dibaca oleh orang dalam atau lewat kebocoran log.
  • Ikat kode ke konteks. Kaitkan kode ke pengguna dan tindakan spesifik yang menjadi tujuan penerbitannya, sehingga kode yang ditujukan untuk satu keperluan tidak bisa dipakai ulang untuk keperluan lain.

Catatan singkat tentang phishing: pengguna bisa ditipu untuk membacakan kode SMS atau kode aplikasi kepada penyerang di situs palsu, sehingga OTP tidak tahan phishing seperti kunci perangkat keras. OTP tetap memblokir serangan yang jauh lebih umum, yaitu seseorang yang masuk hanya dengan kata sandi curian.

Mengirim dan memverifikasi OTP

Anda bisa menjalankan alur OTP sendiri: buat kode, simpan dengan kedaluwarsa, kirim, dan cocokkan input pengguna dalam jendela waktu tersebut. Jika Anda ingin pengiriman dan verifikasi ditangani untuk Anda (termasuk pembatasan laju permintaan dan kedaluwarsa), produk Verifications Bird mengirim dan memvalidasi kode melalui SMS, suara, dan email. Jika Anda hanya membutuhkan transportnya dan ingin mengelola logika verifikasi sendiri, produk SMS menangani pengiriman kode ke ponsel.

FAQ

Apa perbedaan antara HOTP dan TOTP?

HOTP memajukan penghitung token pengguna saat membuat kode. Verifier layanan memajukan statusnya setelah menerima kode yang diharapkan. TOTP menurunkan kodenya dari waktu saat ini, sehingga berubah pada jadwal tetap (biasanya setiap 30 detik). TOTP lebih umum karena kedaluwarsa otomatis membatasi kegunaan kode curian.

Apakah OTP SMS aman?

Cukup aman untuk sebagian besar akun dan memblokir sebagian besar serangan berbasis kata sandi saja, tetapi SMS bisa disadap melalui penipuan SIM-swap atau serangan jaringan. Untuk akun bernilai tinggi, gunakan aplikasi autentikator atau kunci perangkat keras.

Berapa lama OTP sebaiknya tetap valid?

Cukup lama bagi pengguna untuk membaca dan mengetiknya, tidak lebih. Beberapa menit untuk SMS atau email, dan jendela standar 30 detik untuk TOTP. Jendela yang lebih pendek mengurangi peluang kode yang bocor masih bisa dipakai.

Bisakah OTP yang sama digunakan dua kali?

Seharusnya tidak. Sistem yang diimplementasikan dengan benar membatalkan kode begitu diterima, dan juga setelah terlalu banyak percobaan gagal. Terapkan penggunaan sekali pakai di server, jangan pernah di klien.

One-time password adalah ide sederhana yang memiliki peran besar dalam keamanan akun. Untuk melihat bagaimana OTP masuk ke dalam pertahanan login secara menyeluruh, baca apa itu autentikasi dua faktor, atau lihat bagaimana Bird membuat, mengirimkan, dan memeriksa kode di produk Verifications.

Bangun di jaringan yang sama.

Kunci API uji coba langsung tersedia untuk Anda. Akses produksi terbuka saat Anda menambahkan metode pembayaran dan memverifikasi pengirim.

Ide Anda berikutnya.
Siap terhubung.