- Ang Pangunahing Pagkakaiba sa Input: Kinakalkula ng HOTP ang mga hash mula sa isang monotonically increasing counter C, samantalang pinapalitan ng TOTP ang C ng isang epoch time step T (CurrentUnixTime / 30).
- Direktang Pamana: Sa matematika, ang TOTP ay isang espesyalisasyon ng HOTP:
TOTP(K, Time) = HOTP(K, T). Parehong gumagamit ang dalawang algorithm ng eksaktong parehong function ng Dynamic Truncation. - Pang-arkitekturang Salik: Ang HOTP ay stateful (dapat i-lock at i-save ng mga server ang mga counter sa disk sa bawat validation). Ang TOTP ay stateless, na nagbibigay-daan sa mga modernong cloud microservice na mag-validate ng mga token sa mga distributed load-balanced cluster nang hindi nangangailangan ng centralized database write operation.
Mga Pinagmulang Kasaysayan: Mula sa Proprietaryong Hardware Token Hanggang sa Mga Bukas na Pamantayan ng Web
Noong unang bahagi ng dekada 2000, ang corporate two-factor authentication ay pinangungunahan ng mga proprietaryong key fob tulad ng RSA SecurID. Ang mga sarado at mamahaling device na ito ay naglalaman ng mga internal quartz crystal na naka-synchronize sa mga proprietaryong enterprise server. Kung nais ng isang organisasyon na magbigay ng multi-factor security sa libu-libong empleyado, napakataas ng gastos sa pagbili ng hardware at mga proprietaryong lisensya.
Upang palayain ang authentication mula sa mga proprietaryong vendor, binuo ng mga pinuno ng industriya ang OATH (Initiative for Open Authentication) upang maghatid ng mga bukas at walang-royalty na pamantayan ng IETF na malayang masusuri, maipatutupad, at ma-audit ng sinumang software engineer:
HMAC-Based One-Time Password Algorithm. Idinisenyo para sa mga low-power microcontroller na may pisikal na push button. Ang pagpindot sa button ay nagdaragdag sa internal counter at nagpi-print ng 6-digit token sa isang LCD screen.
Time-Based One-Time Password Algorithm. Idinisenyo kasabay ng mabilis na paglaganap ng mga smartphone. Sa pamamagitan ng paggamit ng cellular NTP network time synchronization, ganap na inalis ng TOTP ang mga mismatch sa estado ng pisikal na button.
Arkitektura ng HOTP (RFC 4226) at Byte Mechanics ng Dynamic Truncation
Ang pangunahing mathematical definition ng HOTP ay napakapayak sa paningin ngunit makapangyarihan:
Pagkasira ng mga Parameter:
K: Shared symmetric secret key (karaniwang isang Base32 decoded 160-bit / 20-byte binary sequence).C: 8-byte (64-bit) big-endian integer counter.HMAC-SHA-1: Keyed-hash message authentication code na bumubuo ng 20-byte (160-bit) cryptographic digest.
🔍 Paano Kino-convert ng Dynamic Truncation (DT) ang 20 Bytes Tungo sa 6 Digits:
Ang isang HMAC-SHA1 digest ay naglalaman ng 160 bits (20 bytes). Ang pag-extract ng 6 na pare-parehong decimal digit ay nangangailangan ng isang deterministic at collision-resistant na mekanismo sa pagpili na tinukoy sa Seksyon 5.3 ng RFC 4226:
Ipagpalagay na ang secret key ay ASCII "12345678901234567890" at ang Counter ay C = 0. Ang nagreresultang HMAC-SHA1 digest sa hexadecimal ay:
1. Ang huling byte ay 0x71. 0x71 & 0x0F = 0x01, kaya Offset = 1.
2. Ang bytes 1 hanggang 4 ay: 93 cf 18 50. Ang pag-zero sa MSB ay nagbibigay ng 0x13cf1850, na sa decimal ay katumbas ng 332,339,280.
3. 332339280 mod 1000000 = 339280. Ang nagreresultang 6-digit OTP ay 339280!
Ebolusyon ng TOTP (RFC 6238): Ang Mahika ng Time-Step
Kinakailangan ng HOTP na panatilihing naka-sync ang counter sa client at sa server. Sa mga software device, ang pagbibilang ng mga keystroke o pagpindot sa button ay nagdudulot ng patuloy na pagkakamali ng tao.
Pinalitan ng RFC 6238 ang counter C ng isang discrete time step T na direktang nagmumula sa Unix epoch clock:
- CurrentUnixTime: Mga segundong lumipas mula noong 1970-01-01 00:00:00 UTC.
- T0: Sanggunian sa pagsisimula ng epoch (naka-default sa 0 sa lahat ng modernong deployment).
- X (Time Step Window): Karaniwang inirerekomendang tagal na 30 segundo.
- Floor Function ⌊ ⌋: Para sa anumang timestamp sa loob ng 30-segundong window, ang T ay nananatiling hindi nagbabago. Halimbawa, sa pagitan ng epoch seconds na 1728211200 at 1728211229, ang T ay nagreresulta sa eksaktong parehong 64-bit integer.
Binary Serialization: Kapag nakalkula na ang T, ito ay ibinabalot sa isang 8-byte big-endian binary byte buffer (katulad sa memory structure ng counter C sa HOTP). Dahil dito, ang pinag-isang formula ay nagiging simple:
TOTP(K, Time) = HOTP(K, T)
Ipinapaliwanag ng mathematical elegance na ito kung bakit ang mga authenticator app ay sabay-sabay na nagpapalit ng mga token bawat 30 segundo nang hindi nangangailangan ng persistent state synchronization.
HS[31] & 0x0F); sa SHA-512 (64-byte digest), ang offset ay kinukuha mula sa byte 63 (HS[63] & 0x0F). Gayunpaman, sa 99.9% ng mga komersyal na website (Google, Microsoft, GitHub, AWS), ang SHA-1 ay nananatiling pamantayan dahil sa compatibility sa mga legacy mobile client.
Komprehensibong Paghahambing Matrix (HOTP vs. TOTP)
| Dimensyon | HOTP (RFC 4226) | TOTP (RFC 6238) |
|---|---|---|
| Input Variable | Event Counter C (monotonically incrementing) | Time Step T (30-segundong Unix epoch window) |
| Haba ng Buhay ng Token | Walang takda (wasto hanggang magamit sa susunod na pag-login) | Mahigpit na 30 segundo (awtomatikong mawawalan ng bisa) |
| Arkitektura ng Server | Stateful (nangangailangan ng atomic database writes bawat pag-login) | Stateless (independiyenteng NTP verification) |
| Exposure sa Replay Attack | Katamtaman (ang naharang na token ay nananatiling wasto hanggang magamit) | Napakaliit (limitado sa mga natitirang segundo sa kasalukuyang window) |
| Pangunahing Paraan ng Pagkabigo | Counter Desynchronization (hindi sinasadyang pagpindot sa button) | Clock Drift (pagkaantala o pagkaabante ng oras sa telepono ng client) |
| Sinusuportahang Cryptographic Hashes | HMAC-SHA-1 lamang | HMAC-SHA-1, HMAC-SHA-256, HMAC-SHA-512 |
| Paggamit sa Industriya | Mga lumang banking fob, mga espesyal na pisikal na gate | 99.9% ng mga modernong web authenticator |
Desynchronization vs. Time Drift: Mga Teknikal na Solusyon
Sa mga distributed production environment, hindi maiiwasang magkaroon ng drift ang mga client at server. Nagdisenyo ang mga cryptographer ng mga tahasang compensation window upang mapanatili ang pagiging maaasahan:
Kung pinindot ng isang user ang button ng kanyang token nang 5 beses nang hindi ito isinusumite, ang counter ng client ay aabot sa C+5 habang ang server ay mananatili sa C.
Tinutukoy ng RFC 4226 na sa oras ng authentication, kinakalkula ng server ang isang look-ahead window na sumasaklaw sa [C+1, C+s] (karaniwang s=20). Kung mayroong tumugma, ang server ay agad na aabante at i-synchronize ang counter C.
Dahil sa network latency o clock drift ng client device (halimbawa, ang oras ng telepono ay nahuhuli nang 10 segundo), maaaring dumating ang mga token sa katabing time steps.
Sinusuri ng mga production server ang isang 3-window array: [T-1, T, T+1], na epektibong nagpapalawig sa acceptance window hanggang 90 segundo.
Kapag sinusuri ng mga server kung ang isinumiteng code ng user ay tumutugma sa kinakalkulang code, ang mga simpleng string equality check (tulad ng userOtp === serverOtp) ay agad na humihinto sa unang hindi tumugmang character. Ang isang attacker na sumusukat sa microscopic network round-trip response times ay maaaring muling buuin ang mga digit nang paunti-unti. Nagpapatupad ang mga enterprise backend ng constant-time equality comparisons (tulad ng crypto.timingSafeEqual sa Node.js) upang pigilan ang side-channel timing analysis.
Kung Bakit TOTP ang Nanaig sa Modernong Internet
Ang mapagpasyang tagumpay ng TOTP laban sa HOTP sa buong web ay dulot ng tatlong pang-arkitekturang pangangailangan:
Sa mga distributed multi-region microservices, ang sinumang server instance na may NTP-synchronized na orasan ay maaaring mag-validate ng mga TOTP token nang hindi kailangang mag-query o mag-lock ng centralized database record.
Patuloy na itinutugma ng mga smartphone ang kanilang mga system clock sa pamamagitan ng mga cellular base station at GPS, na nag-aalis sa clock drift nang hindi nangangailangan ng pisikal na pagpapanatili ng hardware.
Ang mga HOTP token ay nananatiling wasto nang walang takda hanggang magamit. Ang mga TOTP token ay nag-e-expire sa loob ng 30 segundo, na awtomatikong nagpapawalang-bisa sa mga nakompromisong log at passive packet captures.
Subukan ang Real-Time na Pagkalkula ng TOTP sa 2FA-Tool
Tingnan kung paano ang iyong Base32 secret string ay nagiging mga dynamic na 6-digit code sa pamamagitan ng HMAC-SHA1 dynamic truncation. 100% offline sa iyong browser.
📚 Mga Kaugnay na Gabay sa Seguridad
Paano maglipat ng mga 2FA account sa mga smartphone gamit ang mga offline QR code at Cloud Sync.
Mga patakaran sa pagsunod, pag-save ng recovery codes, kaugnayan sa SSH key, at mga proseso ng pagbawi.
Paano mababawi ang access sa Google, Microsoft, Steam, Binance, Apple, at Discord.