
Password Saja Tidak Pernah Cukup
Sebagai *developer*, kamu sudah mengamankan *password* *user* dengan *Hashing Bcrypt*. Tapi bagaimana jika *user* tersebut tertipu oleh website palsu (Phishing) dan secara sukarela mengetikkan *email* serta *password* aslinya di sana? Hacker memiliki kuncinya dan bisa bebas masuk ke sistemmu.
Untuk menghentikan *hacker* yang sukses mencuri *password*, dunia *Cybersecurity* menerapkan 2FA (Two-Factor Authentication / Autentikasi Dua Faktor).
Filosofi Tiga Faktor Keamanan
Sistem otentikasi di IT didasarkan pada 3 faktor bukti (Evidence):
- Sesuatu yang kamu TAHU (Knowledge): Password atau PIN. (Hacker bisa mencurinya).
- Sesuatu yang kamu MILIKI (Possession): HP-mu, Simcard, atau Aplikasi Google Authenticator.
- Sesuatu yang melekat pada DIRIMU (Inherence): Sidik jari (Fingerprint) atau Pemindai Wajah (FaceID).
Single-Factor berarti hanya pakai Password. Two-Factor (2FA) berarti gabungan 2 lapis. Setelah lolos Password (Tahu), kamu wajib membuktikan faktor kedua, yaitu memasukkan kode 6 digit dari HP yang kamu Genggam (Miliki).
Cara Kerja TOTP (Google Authenticator)
Dulu 2FA menggunakan SMS OTP (One-Time Password). Namun karena SMS mudah disadap (*SIM Swapping*), industri beralih ke aplikasi TOTP (Time-based One-Time Password) seperti *Google Authenticator* atau *Authy*.
Bagaimana aplikasi Authenticator yang sedang Offline (tanpa internet) bisa menghasilkan 6 angka kembar yang sama persis dengan angka yang diharapkan oleh Server *Backend*?
Sihir Kunci Matematika Waktu:
- Seed (Benih Rahasia): Saat *user* mengaktifkan 2FA, Server *Backend* membuatkan teks rahasia (Misal:
TAMPILKIT_SECRET_99). Server menampilkan teks ini dalam bentuk QR Code ke layar. - Scan: Aplikasi Google Authenticator di HP *user* memindai QR Code tersebut dan menyimpan
TAMPILKIT_SECRET_99di memori HP. - Hitungan Berjalan Berbarengan: Saat *user* mau Login, Aplikasi HP mengambil kunci rahasia itu, lalu menggabungkannya dengan Waktu Jam Dunia Internasional (Unix Timestamp) saat ini, dan di-hash (dikalkulasi) menjadi angka 6 digit (Misal:
123456). Angka ini otomatis berubah setiap 30 detik. - Validasi Server: User mengetik
123456di web. Server *Backend* (yang juga tahu Kunci Rahasia dan tahu jam berapa saat ini) akan melakukan kalkulasi matematika yang sama. "Hmm.. Jika kuncinya X dan jamnya Y, angkanya pasti 123456. Wah cocok! Orang ini memegang HP aslinya!"
Karena algoritma TOTP bersifat *Offline*, *hacker* dari Rusia yang memiliki *password* user tidak akan bisa masuk, kecuali mereka terbang ke Indonesia dan merampas HP fisik milik korban secara langsung!
Mau langsung pakai template?
Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.
Browse Templates