- Perbedaan Input Mendasar: HOTP menghitung hash dari counter C yang bertambah secara monoton, sedangkan TOTP menggantikan C dengan langkah waktu epoch T (CurrentUnixTime / 30).
- Pewarisan Langsung: Secara matematis TOTP merupakan spesialisasi dari HOTP:
TOTP(K, Time) = HOTP(K, T). Kedua algoritma mengimplementasikan fungsi Dynamic Truncation yang sama persis. - Faktor Penentu Arsitektural: HOTP bersifat stateful (server wajib mengunci dan menyimpan counter ke disk pada setiap validasi). TOTP bersifat stateless, memungkinkan layanan mikro cloud modern memvalidasi token di seluruh klaster beban terdistribusi tanpa operasi penulisan basis data terpusat.
Akar Sejarah: Dari Token Perangkat Keras Kepemilikan (Proprietary) ke Standar Web Terbuka
Pada awal tahun 2000-an, autentikasi dua faktor di lingkungan korporat didominasi oleh perangkat token perangkat keras kepemilikan (proprietary hardware token) seperti RSA SecurID. Perangkat tertutup dan berbiaya mahal ini memuat osilator kristal kuarsa internal yang disinkronkan dengan server perusahaan proprietary. Jika suatu organisasi ingin menyediakan keamanan multi-faktor untuk ribuan karyawan, biaya pengadaan perangkat keras fisik dan lisensi proprietary sangatlah membebani.
Untuk membebaskan autentikasi dari vendor monopoli tertutup, konsorsium OATH (Initiative for Open Authentication) didirikan oleh para pemimpin industri guna menghasilkan standar terbuka IETF bebas royalti yang dapat diinspeksi, diimplementasikan, dan diaudit secara bebas oleh setiap insinyur perangkat lunak:
HMAC-Based One-Time Password Algorithm. Dirancang untuk mikrokontroler berdaya rendah dengan tombol tekan fisik. Menekan tombol akan menaikkan counter internal dan menampilkan token 6 digit pada layar LCD.
Time-Based One-Time Password Algorithm. Dirancang seiring dengan melonjaknya adopsi ponsel pintar (smartphone). Dengan memanfaatkan sinkronisasi waktu jaringan NTP seluler, TOTP sepenuhnya mengeliminasi ketidaksesuaian status tombol fisik.
Arsitektur HOTP (RFC 4226) & Mekanika Bita Dynamic Truncation
Definisi matematika inti dari HOTP sangat ringkas dan elegan:
Rincian Parameter:
K: Kunci rahasia simetris bersama (biasanya urutan biner 160-bit / 20-byte hasil dekode Base32).C: Counter integer big-endian 8-byte (64-bit).HMAC-SHA-1: Keyed-hash message authentication code yang menghasilkan digest kriptografi 20-byte (160-bit).
🔍 Cara Dynamic Truncation (DT) Mengonversi 20 Byte Menjadi 6 Digit:
Digest HMAC-SHA1 memuat 160 bit (20 byte). Mengekstrak 6 digit desimal yang seragam membutuhkan mekanisme seleksi deterministik dan tahan terhadap kolisi seperti yang didefinisikan dalam Bagian 5.3 dari RFC 4226:
Misalkan kunci rahasia dalam ASCII adalah "12345678901234567890" dan Counter C = 0. Digest HMAC-SHA1 yang dihasilkan dalam heksadesimal adalah:
1. Byte terakhir adalah 0x71. 0x71 & 0x0F = 0x01, sehingga Offset = 1.
2. Byte 1 sampai 4 adalah: 93 cf 18 50. Menolkan MSB menghasilkan 0x13cf1850, yang dalam desimal sama dengan 332.339.280.
3. 332339280 mod 1000000 = 339280. OTP 6 digit yang dihasilkan adalah 339280!
Evolusi TOTP (RFC 6238): Keajaiban Langkah Waktu
HOTP membutuhkan sinkronisasi counter pada klien dengan server. Pada perangkat lunak, menghitung penekanan tombol atau aksi pengguna memicu kesalahan manusia yang terus-menerus.
RFC 6238 menggantikan counter C dengan langkah waktu diskrit T yang diturunkan langsung dari jam epoch Unix:
- CurrentUnixTime: Detik yang telah berlalu sejak 1970-01-01 00:00:00 UTC.
- T0: Referensi inisialisasi epoch (standar bernilai 0 di seluruh sistem modern).
- X (Jendela Langkah Waktu / Time Step Window): Durasi standar yang direkomendasikan sebesar 30 detik.
- Fungsi Floor ⌊ ⌋: Untuk setiap timestamp dalam jendela 30 detik, T tetap konstan (invarian). Misalnya, antara detik epoch 1728211200 dan 1728211229, nilai T menghasilkan integer 64-bit yang persis sama.
Serialisasi Biner: Setelah T dihitung, nilainya dikemas ke dalam buffer byte biner big-endian 8-byte (identik dalam struktur memori dengan counter C pada HOTP). Akibatnya, formula terpadu disederhanakan menjadi:
TOTP(K, Time) = HOTP(K, T)
Keanggunan matematika ini menjelaskan mengapa aplikasi autentikator memperbarui token secara sinkron setiap 30 detik tanpa membutuhkan sinkronisasi status persisten.
HS[31] & 0x0F); pada SHA-512 (digest 64-byte), offset diambil dari byte 63 (HS[63] & 0x0F). Namun, di 99,9% situs web komersial (Google, Microsoft, GitHub, AWS), SHA-1 tetap menjadi default yang dominan demi kompatibilitas klien seluler lawas.
Matriks Perbandingan Komprehensif (HOTP vs. TOTP)
| Dimensi | HOTP (RFC 4226) | TOTP (RFC 6238) |
|---|---|---|
| Variabel Input | Counter Peristiwa C (bertambah secara monoton) | Langkah Waktu T (jendela epoch Unix 30 detik) |
| Masa Berlaku Token | Tidak terbatas (valid hingga digunakan pada login berikutnya) | Tepat 30 detik (kedaluwarsa otomatis) |
| Arsitektur Server | Stateful (membutuhkan penulisan basis data atomik per login) | Stateless (verifikasi independen berbasis NTP) |
| Paparan Serangan Replay | Sedang (token yang dicegat tetap valid sampai digunakan) | Minimal (terbatas pada sisa detik dalam jendela aktif saat ini) |
| Modus Kegagalan Utama | Desinkronisasi Counter (penekanan tombol yang tidak disengaja) | Clock Drift (pergeseran waktu pada ponsel klien) |
| Hash Kriptografi yang Didukung | HMAC-SHA-1 eksklusif | HMAC-SHA-1, HMAC-SHA-256, HMAC-SHA-512 |
| Adopsi Industri | Token perbankan lawas, gerbang fisik khusus | 99,9% aplikasi autentikator web modern |
Desinkronisasi vs. Time Drift: Solusi Rekayasa Teknis
Dalam lingkungan produksi terdistribusi, waktu antara klien dan server pasti mengalami pergeseran. Para pakar kriptografi merancang jendela kompensasi eksplisit untuk menjaga keandalan:
Jika pengguna menekan tombol token 5 kali tanpa mengirimkannya, counter klien mencapai C+5 sementara server tetap berada di C.
RFC 4226 menetapkan bahwa saat autentikasi berlangsung, server menghitung jendela look-ahead yang mencakup rentang [C+1, C+s] (biasanya s=20). Jika kecocokan ditemukan, server segera melompat maju dan menyinkronkan counter C secara langsung.
Akibat latensi jaringan atau clock drift perangkat klien (misalnya jam ponsel terlambat 10 detik), token dapat tiba di langkah waktu yang berdekatan.
Server produksi mengevaluasi larik 3 jendela: [T-1, T, T+1], yang secara efektif memperluas jendela penerimaan menjadi 90 detik.
Ketika server memverifikasi apakah kode yang dikirimkan pengguna cocok dengan kode yang dihitung, pemeriksaan kesetaraan string sederhana (seperti userOtp === serverOtp) berhenti pada karakter pertama yang tidak cocok. Penyerang yang mengukur waktu respons bolak-balik jaringan secara mikroskopis dapat merekonstruksi setiap digit secara bertahap. Backend kelas enterprise menerapkan perbandingan kesetaraan constant-time (misalnya crypto.timingSafeEqual di Node.js) guna menggagalkan analisis timing saluran samping (side-channel timing attacks).
Mengapa TOTP Menaklukkan Internet Modern
Kemenangan mutlak TOTP atas HOTP di seluruh lanskap web didorong oleh tiga keharusan arsitektur:
Dalam arsitektur layanan mikro (microservices) multi-kawasan yang terdistribusi, setiap instans server dengan jam yang disinkronkan via NTP dapat memvalidasi token TOTP tanpa perlu melakukan kueri atau mengunci rekaman basis data terpusat.
Ponsel pintar secara berkesinambungan mengkalibrasi jam sistemnya melalui menara BTS seluler dan GPS, meniadakan persoalan clock drift tanpa memerlukan perawatan perangkat keras fisik.
Token HOTP tetap valid tanpa batas waktu sampai digunakan. Sebaliknya, token TOTP kedaluwarsa dalam 30 detik, menetralkan log yang bocor dan intersepsi paket pasif secara otomatis.
Rasakan Perhitungan TOTP Real-Time di 2FA-Tool
Saksikan bagaimana string rahasia Base32 Anda bertransformasi menjadi kode 6 digit dinamis melalui dynamic truncation HMAC-SHA1. 100% offline di browser Anda.
📚 Panduan Keamanan Terkait
Cara mentransfer akun 2FA antar ponsel pintar menggunakan kode QR offline dan Sinkronisasi Cloud.
Aturan kepatuhan, penyimpanan aman kode pemulihan, integrasi kunci SSH, dan alur pemulihan darurat.
Cara memulihkan akses akun Google, Microsoft, Steam, Binance, Apple, dan Discord.