Otentikasi Dua Faktor adalah metode keamanan digital yang mewajibkan pengguna untuk melalui dua tahap verifikasi berbeda saat ingin mengakses akun, sistem, atau layanan online.
Dengan kata lain, selain memasukkan kata sandi (password), pengguna juga harus memberikan bukti identitas kedua — biasanya berupa kode unik, perangkat, atau biometrik — sebelum dapat masuk ke sistem. Tujuannya adalah untuk memastikan bahwa orang yang mencoba login benar-benar pemilik akun, bukan orang lain yang hanya mengetahui kata sandi.
Konsep Dasar Otentikasi Dua Faktor
2FA didasarkan pada prinsip bahwa keam anan akan meningkat jika sistem meminta dua jenis bukti (faktor) yang berasal dari kategori yang berbeda, yaitu:
-
Sesuatu yang kamu tahu (Something you know)
Contohnya: kata sandi, PIN, jawaban pertanyaan keamanan. -
Sesuatu yang kamu punya (Something you have)
Contohnya: smartphone, token, smart card, atau kode OTP dari aplikasi autentikator (Google Authenticator, Authy, dll). -
Sesuatu yang kamu adalah (Something you are)
Contohnya: sidik jari, wajah, suara, atau retina mata.
(Ini termasuk kategori biometrik, dan sering disebut sebagai faktor ketiga bila digunakan.)
Dalam 2FA, sistem akan menggabungkan dua dari tiga faktor tersebut agar akses hanya bisa diberikan jika keduanya benar.
Cara Kerja Otentikasi Dua Faktor
-
Tahap 1 – Verifikasi Identitas Awal
Pengguna memasukkan kredensial dasar, seperti username dan password.
→ Sistem memeriksa kecocokan data dengan yang tersimpan di database. -
Tahap 2 – Verifikasi Faktor Kedua
Setelah tahap pertama berhasil, sistem meminta bukti kedua.
Misalnya:-
Kode OTP dikirim via SMS/email/aplikasi autentikator.
-
Permintaan konfirmasi pada perangkat terdaftar.
-
Pengenalan sidik jari atau wajah.
-
-
Akses Diberikan
Jika kedua faktor berhasil diverifikasi, pengguna diizinkan mengakses sistem atau melakukan transaksi.
Tujuan dan Manfaat 2FA
| Tujuan | Penjelasan |
|---|---|
| Meningkatkan keamanan akun | Meski kata sandi bocor, peretas tetap butuh faktor kedua. |
| Mencegah penipuan dan akses ilegal | Melindungi akun dari login tidak sah, terutama di aplikasi keuangan dan email. |
| Mengurangi risiko human error | Karena banyak pengguna memakai kata sandi lemah atau sama di banyak akun. |
| Melindungi transaksi keuangan | Setiap transaksi harus dikonfirmasi melalui kode unik atau biometrik. |
Contoh Implementasi 2FA
-
Aplikasi Perbankan / Mobile Banking:
Login dengan password → kirim OTP via SMS → masukkan OTP untuk konfirmasi. -
Dompet Digital (DANA, OVO, PayPal):
Transaksi > Rp1.000.000 memerlukan verifikasi sidik jari atau kode OTP. -
Email & Media Sosial:
Login > kirim kode verifikasi ke email atau aplikasi autentikator.
Kelemahan dan Tantangan 2FA
Meski jauh lebih aman, 2FA tidak sepenuhnya sempurna:
-
Pengguna bisa kehilangan akses ke perangkat atau nomor HP (jika berganti SIM).
-
Kode OTP via SMS rentan terhadap SIM swapping atau penyadapan.
-
Pengguna kadang mengabaikan keamanan perangkat autentikator.
Solusinya: gunakan aplikasi autentikator atau security key (USB/NFC) untuk tingkat keamanan tertinggi.
Dua Faktor yang Umum Digunakan
Biasanya, dua faktor tersebut berasal dari kategori yang berbeda:
-
Sesuatu yang kamu tahu — misalnya password atau PIN.
-
Sesuatu yang kamu punya — misalnya kode OTP (One-Time Password) yang dikirim lewat SMS, email, atau aplikasi autentikator seperti Google Authenticator, Authy, atau SMS banking.
-
(Opsional tambahan) Sesuatu yang kamu adalah — biometrik seperti sidik jari, pengenalan wajah, atau pemindaian iris.
Contoh Penggunaan di Aplikasi Keuangan
Misalnya kamu ingin login ke aplikasi mobile banking:
-
Kamu masukkan username dan password.
-
Setelah itu, aplikasi mengirimkan kode OTP ke nomor HP kamu.
-
Kamu masukkan kode tersebut → baru bisa masuk ke akun.
Atau pada aplikasi dompet digital (misalnya DANA, OVO, atau PayPal):
-
Saat melakukan transaksi besar, sistem meminta kamu memasukkan kode OTP atau verifikasi sidik jari untuk memastikan bahwa transaksi benar dilakukan oleh kamu sendiri.
Tujuan Utama
-
Mencegah akses ilegal, meskipun password kamu bocor.
-
Melindungi data dan dana pribadi dari penipuan atau peretasan.
-
Menambah kepercayaan pengguna terhadap keamanan platform keuangan.
Catatan
Meskipun 2FA meningkatkan keamanan, pengguna tetap perlu:
-
Menjaga kerahasiaan kode OTP (jangan dibagikan ke siapa pun).
-
Waspada terhadap phishing yang meniru tampilan aplikasi resmi.
-
Gunakan aplikasi autentikator daripada SMS jika memungkinkan (lebih aman dari penyadapan SIM card).
cara kerja teknis otentikasi dua faktor (2FA) — khususnya berbasis OTP (One-Time Password) — di backend aplikasi keuangan, seperti mobile banking atau dompet digital.
1. Tahapan Umum Proses 2FA di Backend
Proses ini biasanya melibatkan 3 komponen utama:
-
Server aplikasi (backend)
Bertugas menghasilkan, mengirim, dan memverifikasi OTP. -
Perangkat pengguna (frontend/app)
Tempat pengguna memasukkan kode OTP. -
Penyedia layanan pengiriman (gateway)
Misalnya SMS Gateway, Email Server, atau Push Notification Service.
2. Langkah Teknis Detail
Permintaan Login / Transaksi
Pengguna memasukkan username dan password.
Backend memverifikasi kecocokan kredensial. Jika benar, sistem memulai proses 2FA.
Pembuatan OTP
Backend menghasilkan kode OTP unik — biasanya 4–8 digit numerik.
Ada dua mekanisme umum:
a. Time-Based OTP (TOTP)
-
Menggunakan waktu sistem dan secret key unik per pengguna.
-
Kode hanya valid untuk periode singkat (biasanya 30–60 detik).
-
Algoritma yang umum: HMAC-SHA1 / SHA256.
Contoh algoritma TOTP (RFC 6238):
Artinya: setiap 30 detik, backend menghasilkan OTP baru berdasarkan secret key dan waktu saat itu.
Aplikasi autentikator (misalnya Google Authenticator) juga menggunakan metode ini.
b. Random OTP (Server-side generated)
-
Sistem membuat kode acak menggunakan random number generator.
-
Contoh:
OTP = random.randint(100000, 999999) -
OTP disimpan di database dengan metadata:
-
ID pengguna
-
Kode OTP
-
Waktu pembuatan
-
Masa berlaku (misal 5 menit)
-
Status (aktif / sudah digunakan)
-
Pengiriman OTP
Backend mengirimkan OTP ke pengguna melalui salah satu kanal:
-
SMS Gateway API
-
Email Server
-
Push Notification
-
Authenticator App
Backend tidak menyimpan kode OTP dalam teks asli di log — melainkan disimpan dalam bentuk hash (misal SHA-256) untuk keamanan.
Verifikasi OTP
Ketika pengguna memasukkan kode OTP di aplikasi:
Backend akan melakukan langkah berikut:
-
Ambil data OTP dari database (berdasarkan user ID).
-
Verifikasi:
-
Apakah OTP masih aktif (belum kedaluwarsa)?
-
Apakah OTP belum digunakan sebelumnya?
-
Apakah hash OTP yang dimasukkan cocok dengan yang tersimpan?
-
Jika semua valid, maka:
-
OTP ditandai “used”
-
Akses atau transaksi disetujui
Jika gagal (kode salah, kedaluwarsa, atau sudah dipakai), backend menolak permintaan.
Penghapusan / Kadaluarsa Otomatis
Setelah jangka waktu tertentu (misalnya 5 menit), sistem menghapus atau menonaktifkan OTP untuk mencegah reuse.
Biasanya dijalankan lewat scheduled job / cron job di backend.
Keamanan Tambahan di Backend
| Fitur | Tujuan |
|---|---|
| 🔒 Hashing OTP | Agar kode OTP tidak tersimpan dalam bentuk asli. |
| ⏱️ Waktu Kedaluwarsa | Mencegah OTP digunakan kembali setelah periode tertentu. |
| 🚫 Limit Percobaan | Misalnya maksimum 3 kali input salah, lalu akun diblokir sementara. |
| 📱 Binding Perangkat | OTP hanya berlaku pada device tertentu (dengan device ID atau fingerprint). |
| 📊 Audit Logging | Semua aktivitas OTP dicatat untuk audit dan pelacakan fraud. |
Contoh Arsitektur Teknis Sederhana
Penjelasan:
-
Auth Service: memverifikasi kredensial dan memanggil OTP Service.
-
OTP Service: membuat dan memvalidasi OTP, serta mengatur masa aktif.
-
SMS Gateway: mengirimkan OTP ke nomor pengguna.
-
Database: menyimpan data sementara dan log untuk audit.

Kesimpulan Teknis
Secara teknis, 2FA di aplikasi keuangan bekerja dengan:
-
Menghasilkan OTP berbasis waktu atau acak.
-
Mengirim OTP ke pengguna lewat kanal aman.
-
Menyimpan OTP secara terenkripsi/hash di server.
-
Memverifikasi kode yang dimasukkan pengguna terhadap data tersimpan.
-
Menandai OTP sebagai digunakan dan menghapusnya setelah kadaluarsa.
Metode ini memberikan lapisan keamanan tambahan karena meski password bocor, OTP hanya valid sebentar dan hanya dapat digunakan sekali.
