DAT (Distributed Access Token)


DAT को अपनाने की पृष्ठभूमि

आज बहुत-से सिस्टम JWT अपना रहे हैं, लेकिन वास्तविक उत्पादन परिवेश में निम्नलिखित संरचनात्मक सीमाएँ मौजूद हैं।
इन्हें हल करने के लिए ही एक नया टोकन विनिर्देश, DAT, डिज़ाइन किया गया।

🧩 सुरक्षा विनिर्देश का विखंडन और अनिवार्यता का अभाव

JWT, JWE जैसे एन्क्रिप्शन मानक उपलब्ध कराता है, परंतु उनका उपयोग अनिवार्य नहीं है।
इसके कारण कई विकास परिवेशों में एन्क्रिप्शन को छोड़ दिया जाता है या डेटा को गैर-मानक तरीकों से भेजा जाता है, जिससे सुरक्षा कमज़ोरियाँ पैदा होती हैं।

🔑 स्थिर कुंजी (Static Key) के उपयोग से उत्पन्न सुरक्षा जोखिम

हस्ताक्षर कुंजी का रोटेशन (Key Rolling) अनिवार्य न होने के कारण एक ही कुंजी को लंबे समय तक इस्तेमाल करने के मामले अक्सर होते हैं। कुंजी चोरी हो जाने पर यह पूरे सिस्टम की सुरक्षा के ढहने तक ले जा सकता है, और वास्तव में बड़ी कॉमर्स साइटों पर इसी कारण से उल्लंघन की घटनाएँ हो चुकी हैं।

📉 ओवरहेड के कारण प्रदर्शन में गिरावट

JWT हर अनुरोध पर JSON पार्सिंग की प्रक्रिया से गुज़रता है और काफ़ी CPU संसाधन खर्च करता है। उच्च प्रदर्शन की माँग वाले परिवेशों में यह पार्सिंग लागत पूरे सिस्टम का अवरोध बिंदु बन सकती है।


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
(की-वैल्यू टेक्स्ट आधारित)
Serialized Object
(ऑब्जेक्ट सीरियलाइज़ेशन)
पार्सिंग तंत्रबाइट डेटा की तत्काल मैपिंग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 सिंक — प्रमाणपत्र वितरण और संचालन के समय जानने योग्य व्यवहार