- મૂળભૂત ઇનપુટ તફાવત: HOTP એક મોનોટોનિકલી વધતા કાઉન્ટર C પરથી હેશની ગણતરી કરે છે, જ્યારે TOTP એ C ને યુગ સમય પગલાં (epoch time step) T (CurrentUnixTime / 30) થી બદલે છે.
- સીધો વારસો: TOTP એ ગાણિતિક રીતે HOTP નું વિશેષ રૂપાંતરણ છે:
TOTP(K, Time) = HOTP(K, T). બંને અલ્ગોરિધમ્સ બરાબર સમાન Dynamic Truncation ફંક્શનનો ઉપયોગ કરે છે. - આર્કિટેક્ચરલ નિર્ણાયક પરિબળ: HOTP સ્ટેટફુલ છે (દરેક માન્યતા પર સર્વર્સે કાઉન્ટર્સને ડિસ્ક પર લૉક અને સાચવવા પડે છે). TOTP સ્ટેટલેસ છે, જે આધુનિક ક્લાઉડ માઇક્રોસર્વિસિસને સેન્ટ્રલાઇઝ્ડ ડેટાબેઝ રાઇટ ઓપરેશન્સ વિના ડિસ્ટ્રિબ્યુટેડ લોડ-બેલેન્સ્ડ ક્લસ્ટર્સમાં ટોકન્સને માન્ય કરવાની મંજૂરી આપે છે.
ઐતિહાસિક મૂળ: માલિકીના હાર્ડવેર ટોકન્સથી ઓપન વેબ સ્ટાન્ડર્ડ્સ સુધી
2000 ના દાયકાની શરૂઆતમાં, કોર્પોરેટ ટુ-ફેક્ટર ઓથેન્ટિકેશન પર RSA SecurID જેવા માલિકીના કી ફોબ્સનું પ્રભુત્વ હતું. આ બંધ, ખર્ચાળ ઉપકરણોમાં માલિકીના એન્ટરપ્રાઇઝ સર્વર્સ સાથે સિંક્રનાઇઝ થયેલા આંતરિક ક્વાર્ટઝ સ્ફટિકો હતા. જો કોઈ સંસ્થા હજારો કર્મચારીઓને મલ્ટી-ફેક્ટર સુરક્ષા પ્રદાન કરવા માંગતી હોય, તો હાર્ડવેર પ્રાપ્તિ અને માલિકીના લાયસન્સ ખર્ચ અત્યંત ઊંચા હતા.
ઓથેન્ટિકેશનને માલિકીના વિક્રેતાઓથી મુક્ત કરવા માટે, ઉદ્યોગના અગ્રણીઓ દ્વારા OATH (Initiative for Open Authentication) કન્સોર્ટિયમની રચના કરવામાં આવી હતી જેથી ખુલ્લા, રોયલ્ટી-મુક્ત IETF ધોરણો પહોંચાડી શકાય કે જેનું કોઈપણ સોફ્ટવેર એન્જિનિયર મુક્તપણે નિરીક્ષણ, અમલીકરણ અને ઓડિટ કરી શકે:
HMAC-Based One-Time Password Algorithm. ફિઝિકલ પુશ બટનો ધરાવતા લો-પાવર માઇક્રોકંટ્રોલર્સ માટે તૈયાર કરાયેલ. બટન દબાવવાથી આંતરિક કાઉન્ટરમાં વધારો થાય છે અને LCD સ્ક્રીન પર 6-અંકનું ટોકન પ્રદર્શિત થાય છે.
Time-Based One-Time Password Algorithm. સ્માર્ટફોનનો ઉપયોગ વધતાં તેની રચના કરવામાં આવી હતી. સેલ્યુલર NTP નેટવર્ક ટાઇમ સિંક્રોનાઇઝેશનનો લાભ લઈને, TOTP એ ફિઝિકલ બટન સ્થિતિની વિસંગતતાઓને સંપૂર્ણપણે દૂર કરી દીધી.
HOTP (RFC 4226) આર્કિટેક્ચર અને Dynamic Truncation બાઇટ મિકેનિક્સ
HOTP ની મુખ્ય ગાણિતિક વ્યાખ્યા અત્યંત સંક્ષિપ્ત છે:
પેરામીટર વિશ્લેષણ:
K: શેર કરેલી સમપ્રમાણ ગુપ્ત કી (સામાન્ય રીતે Base32 ડીકોડ કરેલ 160-bit / 20-byte બાઈનરી સિક્વન્સ).C: 8-બાઇટ (64-બીટ) બિગ-એન્ડિયન ઇન્ટીજર કાઉન્ટર.HMAC-SHA-1: 20-બાઇટ (160-બીટ) ક્રિપ્ટોગ્રાફિક ડાયજેસ્ટ ઉત્પન્ન કરતો કીડ-હેશ મેસેજ ઓથેન્ટિકેશન કોડ.
🔍 Dynamic Truncation (DT) કેવી રીતે 20 બાઇટ્સને 6 અંકોમાં રૂપાંતરિત કરે છે:
HMAC-SHA1 ડાયજેસ્ટમાં 160 બિટ્સ (20 બાઇટ્સ) હોય છે. 6 સમાન દશાંશ અંકો મેળવવા માટે RFC 4226 ના સેક્શન 5.3 માં વ્યાખ્યાયિત નિશ્ચિત, અથડામણ-પ્રતિરોધક (collision-resistant) પસંદગી પદ્ધતિની જરૂર છે:
ધારો કે ગુપ્ત કી ASCII "12345678901234567890" છે અને કાઉન્ટર C = 0 છે. હેક્સાડેસિમલમાં પરિણામી HMAC-SHA1 ડાયજેસ્ટ આ મુજબ છે:
1. છેલ્લો બાઇટ 0x71 છે. 0x71 & 0x0F = 0x01, તેથી Offset = 1.
2. બાઇટ્સ 1 થી 4 છે: 93 cf 18 50. MSB શૂન્ય કરવાથી 0x13cf1850 મળે છે, જે દશાંશમાં 332,339,280 બરાબર છે.
3. 332339280 mod 1000000 = 339280. પરિણામી 6-અંકનો OTP 339280 છે!
TOTP (RFC 6238) ઇવોલ્યુશન: ટાઇમ-સ્ટેપનો જાદુ
HOTP માં ક્લાયન્ટ પરના કાઉન્ટરને સર્વર સાથે સિંકમાં રાખવું જરૂરી હતું. સોફ્ટવેર ઉપકરણો પર, કીસ્ટ્રોક અથવા બટન પ્રેસની ગણતરી સતત માનવીય ભૂલ લાવે છે.
RFC 6238 એ કાઉન્ટર C ને યુનિક્સ યુગ (Unix epoch) ઘડિયાળમાંથી સીધા મેળવેલા વિશિષ્ટ સમય પગલાં T સાથે બદલ્યું:
- CurrentUnixTime: 1970-01-01 00:00:00 UTC થી વીતેલી સેકન્ડો.
- T0: યુગ પ્રારંભ સંદર્ભ (બધા આધુનિક ડિપ્લોયમેન્ટ્સમાં ડિફૉલ્ટ તરીકે 0).
- X (ટાઇમ સ્ટેપ વિન્ડો): માનક ભલામણ કરેલ અવધિ 30 સેકન્ડ.
- ફ્લોર ફંક્શન ⌊ ⌋: 30-સેકન્ડની વિન્ડોમાં કોઈપણ ટાઇમસ્ટેમ્પ માટે, T યથાવત રહે છે. ઉદાહરણ તરીકે, યુગ સેકન્ડ 1728211200 અને 1728211229 વચ્ચે, T બરાબર સમાન 64-બીટ પૂર્ણાંક તરીકે મૂલ્યાંકન કરે છે.
બાઈનરી સીરિયલાઇઝેશન: એકવાર T ની ગણતરી થઈ જાય, પછી તેને 8-બાઇટ બિગ-એન્ડિયન બાઈનરી બાઇટ બફરમાં પેક કરવામાં આવે છે (મેમરી માળખામાં HOTP માં કાઉન્ટર C જેવું જ). પરિણામે, એકીકૃત સૂત્ર સરળ બને છે:
TOTP(K, Time) = HOTP(K, T)
આ ગાણિતિક સુંદરતા સમજાવે છે કે શા માટે ઓથેન્ટિકેટર એપ્લિકેશન્સ કોઈપણ સતત સ્થિતિ સિંક્રોનાઇઝેશનની જરૂર વગર દર 30 સેકન્ડે સિંક્રનસ રીતે ટોકન્સ બદલે છે.
HS[31] & 0x0F) માંથી લેવામાં આવે છે; SHA-512 (64-બાઇટ ડાયજેસ્ટ) માં, ઑફસેટ બાઇટ 63 (HS[63] & 0x0F) માંથી લેવામાં આવે છે. જો કે, 99.9% વ્યાવસાયિક વેબસાઇટ્સ (Google, Microsoft, GitHub, AWS) માં, લેગસી મોબાઇલ ક્લાયન્ટ સુસંગતતાને કારણે SHA-1 સર્વવ્યાપી ડિફૉલ્ટ રહે છે.
વ્યાપક આમને-સામને સરખામણી મેટ્રિક્સ (HOTP વિરુદ્ધ TOTP)
| પરિમાણ | HOTP (RFC 4226) | TOTP (RFC 6238) |
|---|---|---|
| ઇનપુટ વેરિએબલ | ઇવેન્ટ કાઉન્ટર C (મોનોટોનિકલી વધતું) | ટાઇમ સ્ટેપ T (30-સેકન્ડ યુનિક્સ યુગ વિન્ડો) |
| ટોકન આયુષ્ય | અનિશ્ચિત (આગામી લૉગિન દ્વારા વપરાય ત્યાં સુધી માન્ય) | સખત 30 સેકન્ડ (સ્વતઃ અમાન્ય બને છે) |
| સર્વર આર્કિટેક્ચર | સ્ટેટફુલ (પ્રતિ લૉગિન એટોમિક ડેટાબેઝ રાઇટ્સ જરૂરી છે) | સ્ટેટલેસ (સ્વતંત્ર NTP ચકાસણી) |
| રીપ્લે એટેક એક્સપોઝર | મધ્યમ (ઇન્ટરસેપ્ટ થયેલ ટોકન વપરાય ત્યાં સુધી માન્ય રહે છે) | ન્યૂનતમ (વર્તમાન વિન્ડોની બાકીની સેકન્ડો સુધી મર્યાદિત) |
| પ્રાથમિક નિષ્ફળતા મોડ | કાઉન્ટર ડિસિંક્રોનાઇઝેશન (આકસ્મિક કી પ્રેસ) | ક્લોક ડ્રિફ્ટ (ક્લાયન્ટ ફોન સમયની વિસંગતતા) |
| સપોર્ટેડ ક્રિપ્ટોગ્રાફિક હેશ | ફક્ત HMAC-SHA-1 | HMAC-SHA-1, HMAC-SHA-256, HMAC-SHA-512 |
| ઉદ્યોગ અપનાવવાની સ્થિતિ | લેગસી બેંકિંગ ફોબ્સ, વિશિષ્ટ ભૌતિક દરવાજા | 99.9% આધુનિક વેબ ઓથેન્ટિકેટર્સ |
ડિસિંક્રોનાઇઝેશન વિરુદ્ધ ટાઇમ ડ્રિફ્ટ: ટેકનિકલ ઉપાયો
ડિસ્ટ્રિબ્યુટેડ પ્રોડક્શન વાતાવરણમાં, ક્લાયન્ટ્સ અને સર્વર્સ અનિવાર્યપણે ડ્રિફ્ટ અનુભવે છે. ક્રિપ્ટોગ્રાફર્સે વિશ્વસનીયતા જાળવવા માટે સ્પષ્ટ વળતર વિન્ડોઝ ડિઝાઇન કરી છે:
જો કોઈ વપરાશકર્તા સબમિટ કર્યા વિના તેના ટોકન બટનને 5 વખત ક્લિક કરે છે, તો ક્લાયન્ટ કાઉન્ટર C+5 પર પહોંચે છે જ્યારે સર્વર C પર રહે છે.
RFC 4226 સ્પષ્ટ કરે છે કે પ્રમાણીકરણ પર, સર્વર [C+1, C+s] (સામાન્ય રીતે s=20) સુધી લંબાયેલી લુક-અહેડ વિન્ડોની ગણતરી કરે છે. જો કોઈ મેળ ખાય છે, તો સર્વર આગળ કૂદી જાય છે અને તરત જ કાઉન્ટર C ને સિંક્રનાઇઝ કરે છે.
નેટવર્ક વિલંબ અથવા ક્લાયન્ટ ડિવાઇસ ક્લોક ડ્રિફ્ટ (દા.ત. ફોનનું ઘડિયાળ 10 સેકન્ડ પાછળ ચાલતું હોવાને કારણે), ટોકન્સ નજીકના સમયના પગલાઓમાં આવી શકે છે.
પ્રોડક્શન સર્વર્સ 3-વિન્ડો એરેનું મૂલ્યાંકન કરે છે: [T-1, T, T+1], જે સ્વીકૃતિ વિન્ડોને અસરકારક રીતે 90 સેકન્ડ સુધી વિસ્તૃત કરે છે.
જ્યારે સર્વર્સ ચકાસે છે કે વપરાશકર્તા દ્વારા સબમિટ કરેલ કોડ ગણતરી કરેલ કોડ સાથે મેળ ખાય છે કે નહીં, ત્યારે સામાન્ય સ્ટ્રિંગ સમાનતા તપાસો (જેમ કે userOtp === serverOtp) પ્રથમ મેળ ન ખાતા અક્ષર પર સમાપ્ત થાય છે. માઇક્રોસ્કોપિક નેટવર્ક રાઉન્ડ-ટ્રીપ પ્રતિસાદ સમય માપતો હુમલાખોર ક્રમશઃ અંકોનું પુનઃનિર્માણ કરી શકે છે. એન્ટરપ્રાઇઝ બેકએન્ડ્સ સાઇડ-ચેનલ ટાઇમિંગ વિશ્લેષણને નિષ્ફળ બનાવવા માટે કોન્સ્ટન્ટ-ટાઇમ સમાનતા સરખામણી (દા.ત., Node.js માં crypto.timingSafeEqual) લાગુ કરે છે.
શા માટે TOTP એ આધુનિક ઇન્ટરનેટ જીત્યું
વેબ પર HOTP સામે TOTP નો નિર્ણાયક વિજય ત્રણ આર્કિટેક્ચરલ જરૂરિયાતો દ્વારા સંચાલિત હતો:
ડિસ્ટ્રિબ્યુટેડ મલ્ટિ-રિજન માઇક્રોસર્વિસિસમાં, NTP-સિંક્રનાઇઝ્ડ ઘડિયાળ ધરાવતું કોઈપણ સર્વર ઇન્સ્ટન્સ સેન્ટ્રલાઇઝ્ડ ડેટાબેઝ રેકોર્ડને ક્વેરી અથવા લૉક કર્યા વિના TOTP ટોકન્સને માન્ય કરી શકે છે.
સ્માર્ટફોન સેલ્યુલર બેઝ સ્ટેશનો અને GPS દ્વારા તેમની સિસ્ટમ ઘડિયાળોને સતત કેલિબ્રેટ કરે છે, જે ભૌતિક હાર્ડવેર જાળવણીની જરૂરિયાત વિના ક્લોક ડ્રિફ્ટને દૂર કરે છે.
HOTP ટોકન્સ ઉપયોગ થાય ત્યાં સુધી અનિશ્ચિત સમય માટે માન્ય રહે છે. TOTP ટોકન્સ 30 સેકન્ડની અંદર સમાપ્ત થઈ જાય છે, જે ચેડા થયેલા લોગ્સ અને પેસિવ પેકેટ કેપ્ચર્સને આપમેળે નિષ્ક્રિય કરે છે.
2FA-Tool માં રીઅલ-ટાઇમ TOTP ગણતરીઓનો અનુભવ કરો
જુઓ કે કેવી રીતે તમારી Base32 સિક્રેટ સ્ટ્રિંગ HMAC-SHA1 dynamic truncation દ્વારા ડાયનામિક 6-અંકના કોડમાં પરિવર્તિત થાય છે. તમારા બ્રાઉઝરમાં 100% ઑફલાઇન.
📚 સંબંધિત સુરક્ષા માર્ગદર્શિકાઓ
ઑફલાઇન QR કોડ્સ અને ક્લાઉડ સિંકનો ઉપયોગ કરીને સ્માર્ટફોન વચ્ચે 2FA એકાઉન્ટ્સ કેવી રીતે ટ્રાન્સફર કરવા.
પાલન નિયમો, રિકવરી કોડ સાચવવા, SSH કી ઇન્ટરપ્લે અને રેસ્ક્યુ વર્કફ્લો.
Google, Microsoft, Steam, Binance, Apple અને Discord પર એક્સેસ કેવી રીતે પુનઃપ્રાપ્ત કરવી.