⏱️ کرپٹوگرافی اور RFC پروٹوکولز ✓ 2026 کے لیے تصدیق شدہ

TOTP بمقابلہ HOTP کی تفصیلی وضاحت: بنیادی فرق، سیکیورٹی اور کام کرنے کے اصول

لاکھوں ڈویلپرز اور سیکیورٹی انجینئرز روزانہ گھومتے ہوئے 6 ہندسوں کے تصدیقی کوڈز دیکھتے ہیں، لیکن بہت کم لوگ اسکرین کے پیچھے کام کرنے والی نفیس ریاضیاتی مشینری کو سمجھتے ہیں۔ 2005 میں RFC 4226 (HOTP) ایونٹ سے چلنے والے کاؤنٹرز سے لے کر 2011 میں RFC 6238 (TOTP) کے الگ الگ ٹائم اسٹیپس تک، یہ رہنما بائٹ لیول کے Dynamic Truncation الگورتھم، کاؤنٹر ڈی سنک کمزوریوں، کلاک ڈرفٹ کی گنجائش، اور جدید ویب پر TOTP کی فتح کا تفصیلی احاطہ کرتا ہے۔

2FA
2FA-Tool سیکیورٹی ٹیم
اپ ڈیٹ شدہ اکتوبر 2026
مطالعہ کا تخمینہ وقت: 14 منٹ (2,600+ الفاظ)
RFC 6238 RFC 4226 Dynamic Truncation
💡 کرپٹوگرافک اہم نکات (TL;DR)
  • بنیادی ان پٹ کا فرق: HOTP مسلسل بڑھنے والے کاؤنٹر C (monotonically increasing counter C) سے ہیش شمار کرتا ہے، جبکہ TOTP کاؤنٹر C کی جگہ ایپوک ٹائم سٹیپ T (CurrentUnixTime / 30) کا استعمال کرتا ہے۔
  • براہ راست وراثت: TOTP ریاضیاتی طور پر HOTP کی ایک خصوصی شکل ہے: TOTP(K, Time) = HOTP(K, T)۔ دونوں الگورتھم بالکل وہی Dynamic Truncation فنکشن استعمال کرتے ہیں۔
  • آرکیٹیکچرل فیصلہ کن عنصر: HOTP اسٹیٹ فل (stateful) ہے (سرورز کو ہر لاگ ان کی توثیق پر کاؤنٹرز کو ڈیٹا بیس میں لاک اور محفوظ کرنا پڑتا ہے)۔ TOTP اسٹیٹ لیس (stateless) ہے، جو جدید کلاؤڈ مائیکرو سروسز کو مرکزی ڈیٹا بیس پر رائٹ آپریشنز کے بغیر، ڈسٹری بیوٹڈ لوڈ بیلنسڈ کلسٹرز میں ٹوکنز کی تصدیق کرنے کی اجازت دیتا ہے۔
01

تاریخی بنیادیں: ملکیتی ہارڈ ویئر ٹوکنز سے اوپن ویب معیارات تک

2000 کی دہائی کے اوائل میں، کارپوریٹ ٹو فیکٹر توثیق پر RSA SecurID جیسے ملکیتی فزیکل ٹوکنز کا غلبہ تھا۔ ان بند اور مہنگے آلات میں اندرونی کوارٹز کرسٹل موجود تھے جو ملکیتی انٹرپرائز سرورز کے ساتھ ہم آہنگ تھے۔ اگر کوئی تنظیم ہزاروں ملازمین کو ملٹی فیکٹر سیکیورٹی فراہم کرنا چاہتی، تو ہارڈ ویئر کی خریداری اور لائسنس کے اخراجات بے پناہ تھے۔

توثیق کو نجی وینڈرز سے آزاد کرانے کے لیے، صنعت کے رہنماؤں نے OATH (Initiative for Open Authentication) کنسورشیم تشکیل دیا تاکہ اوپن، رائلٹی سے پاک IETF معیارات فراہم کیے جا سکیں جن کا کوئی بھی سافٹ ویئر انجینئر آزادانہ طور پر معائنہ، نفاذ اور آڈٹ کر سکے:

📜 2005: RFC 4226 (HOTP)

HMAC-Based One-Time Password Algorithm۔ فزیکل پش بٹن والے کم طاقت والے مائیکرو کنٹرولرز کے لیے تیار کیا گیا۔ بٹن دبانے سے اندرونی کاؤنٹر بڑھتا ہے اور LCD اسکرین پر 6 ہندسوں کا ٹوکن پرنٹ ہوتا ہے۔

📜 2011: RFC 6238 (TOTP)

Time-Based One-Time Password Algorithm۔ اسمارٹ فونز کے بڑھتے ہوئے پھیلاؤ کے ساتھ ڈیزائن کیا گیا۔ سیلولر NTP نیٹ ورک ٹائم سنکرونائزیشن کا فائدہ اٹھاتے ہوئے، TOTP نے فزیکل بٹن کی عدم مطابقت کے مسائل کو جڑ سے ختم کر دیا۔

02

HOTP (RFC 4226) آرکیٹیکچر اور ڈائنامک ٹرنکیشن بائٹ میکانکس

HOTP کی بنیادی ریاضیاتی تعریف بظاہر انتہائی جامع اور مختصر ہے:

HOTP(K, C) = Truncate(HMAC-SHA-1(K, C)) mod 10DigitCount

پیرامیٹرز کی تفصیل:

  • K: مشترکہ سڈول خفیہ کلید (shared symmetric secret key - عام طور پر Base32 ڈیکوڈ شدہ 160-bit / 20-byte بائنری سیکوئنس)۔
  • C: 8-byte (64-bit) بگ اینڈین انٹیجر کاؤنٹر۔
  • HMAC-SHA-1: کلید والی ہیش میسج توثیقی کوڈ جو 20-byte (160-bit) کا کرپٹوگرافک ڈائجسٹ تیار کرتا ہے۔

🔍 ڈائنامک ٹرنکیشن (DT) 20 بائٹس کو 6 ہندسوں میں کیسے بدلتا ہے:

ایک HMAC-SHA1 ڈائجسٹ میں 160 بٹس (20 بائٹس) ہوتے ہیں۔ یکساں 6 اعشاری ہندسوں کو نکالنے کے لیے ایک متعین، تصادم کے خلاف مزاحم انتخابی طریقہ کار درکار ہوتا ہے جیسا کہ RFC 4226 کے سیکشن 5.3 میں بیان کیا گیا ہے:

// مرحلہ 1: ڈائنامک آفسیٹ کا حساب لگانا
Offset = HS[19] & 0x0F
20 بائٹ ڈائجسٹ کی آخری بائٹ (انڈیکس 19) لیں۔ 0x0F کے ساتھ ماسک کرنے سے نچلی 4 بٹس الگ ہو جاتی ہیں، جس سے 0 اور 15 (0x0 سے 0xF) کے درمیان ایک عدد ملتا ہے۔ یہ یقینی بناتا ہے کہ اگلا 4 بائٹ کا اخراج کبھی بھی 20 بائٹ کے بفر سے باہر نہ جائے (کیونکہ 15 + 4 = 19)۔
// مرحلہ 2: ماسکنگ کے ساتھ لگاتار 4 بائٹس نکالنا
P = ( (HS[Offset] & 0x7F) << 24 ) | ( (HS[Offset+1] & 0xFF) << 16 ) | ( (HS[Offset+2] & 0xFF) << 8 ) | ( HS[Offset+3] & 0xFF )
آفسیٹ سے شروع ہونے والی 4 بائٹس نکالیں۔ ماسک 0x7F سب سے اہم بٹ (MSB) کو صفر کر دیتا ہے تاکہ مختلف CPU آرکیٹیکچرز پر سائنڈ انٹیجر اوور فلو سے بچا جا سکے (ایک مثبت 31 بٹ انٹیجر کو یقینی بناتے ہوئے)۔
// مرحلہ 3: حتمی ہندسوں کے لیے ماڈیولو ریاضی
OTP = P mod 106 = P mod 1000000
1,000,000 کا ماڈیولو لاگو کرنے سے آخری 6 اعشاری ہندسے حاصل ہوتے ہیں، اور اگر ضرورت ہو تو شروع میں صفر شامل کر دیے جاتے ہیں (مثلاً 748 بن جاتا ہے "000748")۔
🧪 RFC 4226 ضمیمہ D سے مصدقہ ٹیسٹ ویکٹر:

فرض کریں کہ خفیہ کلید ASCII "12345678901234567890" ہے اور کاؤنٹر C = 0 ہے۔ ہیکساڈیسیمل میں حاصل ہونے والا HMAC-SHA1 ڈائجسٹ ہے:

cc 93 cf 18 50 8d 94 93 4c 64 b6 6d 8b fb 87 fb 23 cb 4b 71

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!

03

TOTP (RFC 6238) کا ارتقا: ٹائم سٹیپ کا جادو

HOTP میں کلائنٹ پر موجود کاؤنٹر کو سرور کے ساتھ مستقل ہم آہنگ رکھنا لازمی تھا۔ سافٹ ویئر ڈیوائسز پر، بٹن دبانے یا کی اسٹروکس کی گنتی میں مسلسل انسانی غلطی واقع ہو سکتی ہے۔

RFC 6238 نے کاؤنٹر C کی جگہ یونکس ایپوک کلاک سے اخذ کردہ ایک الگ الگ ٹائم سٹیپ T متعارف کرایا:

T = ⌊ (CurrentUnixTime - T0) / X ⌋
  • CurrentUnixTime: یکم جنوری 1970 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 سیکنڈ بعد ٹوکنز کو خودکار طور پر کیسے بدلتی ہیں۔

SHA-256 اور SHA-512 کے لیے RFC 6238 سپورٹ: جہاں RFC 4226 نے سختی سے صرف HMAC-SHA-1 کی تعریف کی تھی، وہیں RFC 6238 نے HMAC-SHA-256 اور HMAC-SHA-512 کے لیے سپورٹ فراہم کی۔ SHA-256 (32 بائٹ ڈائجسٹ) میں، آفسیٹ بائٹ 31 (HS[31] & 0x0F) سے لیا جاتا ہے؛ SHA-512 (64 بائٹ ڈائجسٹ) میں، آفسیٹ بائٹ 63 (HS[63] & 0x0F) سے لیا جاتا ہے۔ تاہم، 99.9% تجارتی پلیٹ فارمز (Google، Microsoft، GitHub، AWS) پر، پرانے موبائل کلائنٹس کی مطابقت کی وجہ سے SHA-1 ہی سب سے عام معیار کے طور پر استعمال ہوتا ہے۔
04

آمنے سامنے تفصیلی موازنہ جدول (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% جدید ویب تصدیق کار ایپس
05

ڈی سنکرونائزیشن بمقابلہ ٹائم ڈرفٹ: تکنیکی حل

ڈسٹری بیوٹڈ پروڈکشن ماحول میں، کلائنٹس اور سرورز کے درمیان وقت کا تفاوت فطری ہے۔ کرپٹوگرافرز نے وشوسنییتا برقرار رکھنے کے لیے واضح تلافی کرنے والی ونڈوز وضع کیں:

⚙️ HOTP کا حل: لُک اہیڈ ویریفکیشن ونڈو (Look-Ahead Window - s)

اگر کوئی صارف لاگ ان کیے بغیر 5 بار ٹوکن کا بٹن دباتا ہے، تو کلائنٹ کا کاؤنٹر C+5 پر پہنچ جاتا ہے جبکہ سرور C پر رہتا ہے۔
RFC 4226 بتاتا ہے کہ توثیق کے وقت سرور [C+1, C+s] (عام طور پر s=20) پر مشتمل آگے دیکھنے والی ونڈو کا حساب لگاتا ہے۔ اگر مماثلت مل جائے، تو سرور آگے بڑھتا ہے اور فوری طور پر کاؤنٹر C کو ہم آہنگ کر لیتا ہے۔

⏱️ TOTP کا حل: ٹائم سکیو کی گنجائش (Time Skew Tolerance - ±1 Window)

نیٹ ورک کی تاخیر یا کلائنٹ ڈیوائس کلاک ڈرفٹ (مثلاً فون کی گھڑی 10 سیکنڈ پیچھے چل رہی ہو) کی وجہ سے، ٹوکنز قریبی ٹائم اسٹیپس میں موصول ہو سکتے ہیں۔
پروڈکشن سرورز 3 ونڈوز کی ارے کی جانچ کرتے ہیں: [T-1, T, T+1]، جس سے قبولیت کی ونڈو مؤثر طریقے سے 90 سیکنڈ تک وسیع ہو جاتی ہے۔

لازمی اینٹی ری پلے اصول: 90 سیکنڈ کی سکیو ونڈو میں ری پلے حملوں کو روکنے کے لیے، سرورز کو استعمال شدہ ٹوکنز کو 90 سیکنڈ کے لیے میموری (جیسے Redis) میں کیش اور لاک کرنا چاہیے، اور ڈپلیکیٹ جمع کرانے کو مسترد کرنا چاہیے۔
🛡️ کانسٹنٹ ٹائم سٹرنگ کا موازنہ (Timing Attack سے بچاؤ):

جب سرورز اس بات کی توثیق کرتے ہیں کہ آیا صارف کا درج کردہ کوڈ متوقع کوڈ سے مماثل ہے، تو عام سٹرنگ موازنہ (جیسے userOtp === serverOtp) پہلے بے جوڑ کریکٹر پر ہی عمل بند کر دیتا ہے۔ باریک نیٹ ورک رسپانس ٹائمز کی پیمائش کر کے ایک حملہ آور ہندسوں کو ایک ایک کر کے حاصل کر سکتا ہے۔ انٹرپرائز بیک اینڈز سائیڈ چینل ٹائمنگ کے تجزیے کو ناکام بنانے کے لیے مستقل وقت کی مساوات کے موازنے (جیسے Node.js میں crypto.timingSafeEqual) کو سختی سے نافذ کرتے ہیں۔

06

TOTP نے جدید انٹرنیٹ پر فتح کیوں حاصل کی

ویب پر HOTP کے مقابلے TOTP کی فیصلہ کن کامیابی تین اہم آرکیٹیکچرل خوبیوں کی بدولت حاصل ہوئی:

☁️ اسٹیٹ لیس کلاؤڈ اسکیل ایبلٹی

کثیر علاقائی مائیکرو سروسز میں، NTP سے مطابقت پذیر گھڑی رکھنے والا کوئی بھی سرور مرکزی ڈیٹا بیس کے ریکارڈ کو پوچھے یا لاک کیے بغیر TOTP ٹوکنز کی توثیق کر سکتا ہے۔

📱 موبائل ایکو سسٹم کا تعاون

اسمارٹ فونز سیلولر بیس اسٹیشنز اور GPS کے ذریعے اپنے سسٹم کی گھڑیوں کو خودکار کیلیبریٹ کرتے رہتے ہیں، جس سے کسی الگ دیکھ بھال کے بغیر کلاک ڈرفٹ ختم ہو جاتا ہے۔

🛡️ تنگ 30 سیکنڈز کی ونڈو کا تحفظ

HOTP ٹوکن استعمال ہونے تک غیر معینہ مدت تک درست رہتے ہیں۔ TOTP ٹوکنز 30 سیکنڈ میں ختم ہو جاتے ہیں، جس سے سمجھوتہ شدہ لاگز اور نیٹ ورک پر پکڑے گئے پیکٹس خود بخود بیکار ہو جاتے ہیں۔

🧮 خالص کلائنٹ سائیڈ RFC 6238 انجن

2FA-Tool میں ریئل ٹائم TOTP حسابی عمل کا تجربہ کریں

دیکھیں کہ آپ کی Base32 خفیہ سٹرنگ HMAC-SHA1 ڈائنامک ٹرنکیشن کے ذریعے متحرک 6 ہندسوں کے کوڈز میں کیسے تبدیل ہوتی ہے۔ آپ کے براؤزر میں 100% آف لائن۔

آن لائن جنریٹر کھولیں