DAT (Distributed Access Token)


DAT کے تعارف کا پس منظر

آج کل بہت سے سسٹم JWT اپناتے ہیں، لیکن اصل پروڈکشن ماحول میں درج ذیل ساختی حدود موجود ہیں۔
انہی مسائل کو حل کرنے کے لیے ایک نئی ٹوکن وضاحت، DAT، ڈیزائن کی گئی۔

🧩 سیکیورٹی وضاحتوں کا بکھراؤ اور نفاذ کی کمی

JWT، JWE جیسے انکرپشن معیارات فراہم کرتا ہے، لیکن ان کا استعمال لازمی نہیں ہے۔
نتیجتاً بہت سے ڈویلپمنٹ ماحول میں انکرپشن چھوڑ دی جاتی ہے یا غیر معیاری طریقوں سے ڈیٹا منتقل کیا جاتا ہے، جس سے سیکیورٹی کمزوریاں پیدا ہوتی ہیں۔

🔑 فکسڈ کی (Static Key) کے استعمال سے سیکیورٹی خطرات

دستخطی کی کی روٹیشن (Key Rolling) لازمی نہ ہونے کی وجہ سے اکثر ایک ہی کی طویل عرصے تک استعمال ہوتی رہتی ہے۔ کی چوری ہو جانے کی صورت میں یہ پورے سسٹم کی سیکیورٹی کے انہدام تک لے جا سکتا ہے؛ درحقیقت بڑی ای-کامرس سائٹس پر اسی وجہ سے سیکیورٹی واقعات پیش آ چکے ہیں۔

📉 اوور ہیڈ کی وجہ سے کارکردگی میں کمی

JWT ہر درخواست پر JSON پارسنگ کے عمل سے گزرتا ہے اور کافی CPU وسائل خرچ کرتا ہے۔ اعلیٰ کارکردگی کے متقاضی ماحول میں یہ پارسنگ لاگت پورے سسٹم کا بڑا رکاوٹ (bottleneck) بن سکتی ہے۔


DAT کا بنیادی فلسفہ

DAT اس اصول کے تحت ڈیزائن کیا گیا ہے کہ سیکیورٹی اختیاری نہیں بلکہ لازمی ہونی چاہیے، اور کارکردگی پر سمجھوتہ نہیں کیا جا سکتا۔

⚡ ہلکا اور تیز

expire
uint64 (اعشاری)
.
cid
uint64 (سولہ اعشاری)
.
plain
Base64Url
.
secure
Base64Url
.
signature
Base64Url
ہر فیلڈ پر ماؤس لے جائیں تو اس کی تفصیل دکھائی دے گی۔

DAT میں، جیسا کہ اوپر دکھایا گیا ہے، نقطے (.) سے الگ کیے گئے صرف پانچ فکسڈ فیلڈز ہوتے ہیں۔ فیلڈز کی ترتیب وضاحت میں طے شدہ ہے، اس لیے JSON پارسنگ کے بغیر صرف الگ کرنے والا نشان تلاش کر کے ہر قدر کاٹی جا سکتی ہے۔

🔐 لازمی سیکیورٹی

DAT ڈیٹا کی منتقلی کے دوران سادہ (Plain) اور خفیہ کردہ (Secure) علاقوں کو طبعی طور پر الگ رکھتا ہے۔
یہ لازمی بناتا ہے کہ حساس معلومات ہمیشہ خفیہ کی جائیں، اور پورا عمل سرٹیفکیٹ میں اعلان کردہ معیاری الگورتھمز (ECDSA، AES-GCM وغیرہ) سے محفوظ رہتا ہے۔

انکرپشن الگورتھم کا فیصلہ ٹوکن نہیں بلکہ سرٹیفکیٹ کرتا ہے۔ ٹوکن میں الگورتھم کی معلومات موجود ہی نہیں ہوتیں، اس لیے JWT کے alg ہیڈر سے پیدا ہونے والے الگورتھم کنفیوژن حملے کی کوئی سطح موجود نہیں۔

🔄 لازمی کی رولنگ

DAT سرٹیفکیٹ صرف ٹوکن کے اجراء اور میعاد ختم ہونے کا ہی نہیں بلکہ کی کے لائف سائیکل کا بھی براہ راست انتظام کرتا ہے۔
سرٹیفکیٹ میں "کب سے کب تک اجراء ممکن ہے" وضاحت کی سطح پر طے شدہ ہوتا ہے، لہٰذا وہ مدت گزر جانے پر اس سرٹیفکیٹ سے نئے ٹوکن نہیں بنائے جا سکتے۔ منتظم کی غفلت سے ایک ہی کی کئی سال تک استعمال ہوتے رہنے کی صورتحال ساختی طور پر پیدا ہی نہیں ہوتی۔

⏱️ اجراء کی مدت اور میعاد کی علیحدگی

"وہ مدت جس میں سرٹیفکیٹ ٹوکن جاری کر سکتا ہے" اور "جاری کردہ ٹوکن کے زندہ رہنے کی مدت" دو مختلف قدریں ہیں۔
اسی لیے سرٹیفکیٹ کے اجراء بند کر دینے کے بعد بھی پہلے سے جاری ٹوکنز اپنی پوری عمر مکمل کر لیتے ہیں، اور اسی دوران کلسٹر قدرتی طور پر اگلے سرٹیفکیٹ پر منتقل ہو جاتا ہے۔


توثیقی طریقہ کار کا موازنہ

درجہ بندیDATJWTسیشن
توثیق کا طریقہتقسیم شدہ تصدیقتقسیم شدہ تصدیقمرکزی
ڈیٹا ڈھانچہRaw Bytes
(فکسڈ آفسیٹ پر مبنی)
JSON
(Key-Value ٹیکسٹ پر مبنی)
Serialized Object
(آبجیکٹ سیریلائزیشن)
پارسنگ طریقہ کارByte ڈیٹا کی فوری میپنگJSON پارسنگ اور ٹائپ کاسٹنگ کی ضرورتآبجیکٹ ڈی سیریلائزیشن اور I/O
پروسیسنگ کارکردگیبہترین (پارسنگ اوور ہیڈ کم سے کم)درمیانہ (JSON پروسیسنگ کی کارکردگی پر منحصر)کم (نیٹ ورک/ڈسک I/O)
انکرپشنبطور ڈیفالٹ شاملالگ سے JWE کا نفاذ درکار (پیچیدہ)قابلِ اطلاق نہیں
کی مینجمنٹسسٹم کی جانب سے لازمی رولنگ (لازمی سیکیورٹی)خود نافذ کرنا پڑتا ہے (لاپرواہ انتظام کا خطرہ)قابلِ اطلاق نہیں
کی کی میعادکی کی وضاحت میں لازمی طور پر درجاختیاری (انتظام نہ ہونے پر مستقل)مرکزی سرور کا انتظام
الگورتھم کا انتخابسرٹیفکیٹ طے کرتا ہے (ٹوکن میں نہیں)ٹوکن ہیڈر کا algقابلِ اطلاق نہیں
میعاد ختم ہونے کا وقتوضاحت کے مطابق لازمی فیلڈاختیاری کلیم (exp)سرور انتظام کرتا ہے

کارکردگی

DAT اجرا × 10,000 (ملٹی تھریڈ)
Rust HMAC-512
6 ms
Go HMAC-512
9 ms
C / C++ HMAC-512
9 ms
Java / Kotlin HMAC-512
13 ms
C# HMAC-512
19 ms
Rust P256
24 ms
C / C++ P256
32 ms
Go P256
58 ms
Python HMAC-512
93 ms
Ruby HMAC-512
130 ms
JavaScript HMAC-512
134 ms
Ruby P256
155 ms
Java / Kotlin P256
158 ms
JavaScript P256
179 ms
Python P256
192 ms
C# P256
235 ms
DAT پارس × 10,000 (ملٹی تھریڈ)
Rust HMAC-512
4 ms
Go HMAC-512
5 ms
Java / Kotlin HMAC-512
7 ms
C / C++ HMAC-512
8 ms
C# HMAC-512
11 ms
Rust P256
52 ms
C / C++ P256
69 ms
Go P256
72 ms
Python HMAC-512
89 ms
Java / Kotlin P256
118 ms
JavaScript HMAC-512
143 ms
Ruby HMAC-512
150 ms
JavaScript P256
167 ms
Python P256
182 ms
C# P256
185 ms
Ruby P256
194 ms
mac mini m4 2024 basic (10 core) پر پیمائش · گراف صرف IV-AES256-GCM دکھاتے ہیں
خام ڈیٹا (فی 10,000 آپریشن ms)
Multi-Thread
Signature · CryptoRustGoJava / KotlinJavaScriptC#PythonRubyC / C++
IssueParseIssueParseIssueParseIssueParseIssueParseIssueParseIssueParseIssueParse
HMAC-SHA256-MFS · IV-AES128-GCM65115121301741822215888315015299
HMAC-SHA256-MFS · IV-AES256-GCM7595221315214819151068213816288
HMAC-SHA384-MFS · IV-AES128-GCM6495503115214218151008013014588
HMAC-SHA384-MFS · IV-AES256-GCM641052271411411911928013216588
HMAC-SHA512-MFS · IV-AES128-GCM641053571391481611947913014998
HMAC-SHA512-MFS · IV-AES256-GCM64951371341431911938913015098
ECDSA-P256 · IV-AES128-GCM265753712532401841702082031911811701893275
ECDSA-P256 · IV-AES256-GCM245258721581181791672351851921821551943269
ECDSA-P384 · IV-AES128-GCM954532145935075139968585605478672,036339441196424
ECDSA-P384 · IV-AES256-GCM1452572205662482771,0418775365048691,972320490186379
ECDSA-P521 · IV-AES128-GCM2324704681,4665926812,5412,1041,5231,4627281,446352554250449
ECDSA-P521 · IV-AES256-GCM1523064671,5074735802,6811,9991,4501,4657041,395374529260454
Single-Thread
Signature · CryptoRustGoJava / KotlinJavaScriptC#PythonRubyC / C++
IssueParseIssueParseIssueParseIssueParseIssueParseIssueParseIssueParseIssueParse
HMAC-SHA256-MFS · IV-AES128-GCM1258430302702623534353764601615
HMAC-SHA256-MFS · IV-AES256-GCM1257432302782613535343658661514
HMAC-SHA384-MFS · IV-AES128-GCM1379628272662645544353762611718
HMAC-SHA384-MFS · IV-AES256-GCM1369630292692714034363866731717
HMAC-SHA512-MFS · IV-AES128-GCM1369628272622373836363858631717
HMAC-SHA512-MFS · IV-AES256-GCM1369630292642473735353760671716
ECDSA-P256 · IV-AES128-GCM128287165358521492447681870785210431177392156373
ECDSA-P256 · IV-AES256-GCM123274156345473503446700845782202434172394147361
ECDSA-P384 · IV-AES128-GCM4721,0901,0953,1291,2841,4234,0113,5582,1762,1134,76011,2791,0552,1551,0392,147
ECDSA-P384 · IV-AES256-GCM4741,0741,0733,1511,2841,6764,0643,4562,1552,1264,74511,2781,0392,1601,0412,151
ECDSA-P521 · IV-AES128-GCM8331,6572,6538,6652,6973,2789,8697,6036,0395,9583,4997,1151,3582,3901,3592,394
ECDSA-P521 · IV-AES256-GCM8441,6772,6528,6832,6393,2839,7997,4095,9445,8563,4887,1161,3812,3981,3602,402

اگلی دستاویزات

  • DAT — ٹوکن کا وائر فارمیٹ اور معیاری اصول
  • سرٹیفکیٹ — سرٹیفکیٹ کا ڈھانچہ، الگورتھمز اور لائف سائیکل
  • CMS ہم آہنگی — سرٹیفکیٹ کی تقسیم اور آپریشن کے دوران جاننے کے قابل رویّہ