पीबीकेडीएफ2

क्रिप्टोग्राफी में, पीबीकेडीएफ1 और पीबीकेडीएफ2 (पासवर्ड-आधारित कुंजी व्युत्पत्ति फ़ंक्शन 1 और 2) स्लाइडिंग कम्प्यूटेशनल लागत के साथ प्रमुख व्युत्पत्ति फ़ंक्शन हैं, जिनका उपयोग ब्रूट-फ़ोर्स आक्षेप की भेद्यता को कम करने के लिए किया जाता है।

पीबीकेडीएफ2 आरएसए प्रयोगशालाओं की सार्वजनिक-कुंजी क्रिप्टोग्राफ़ी मानक (पीकेसीएस) श्रृंखला का हिस्सा है, विशेष रूप से पीकेसीएस#5 v2.0, इंटरनेट इंजीनियरिंग टास्क फोर्स के आरएफसी 2898 के रूप में भी प्रकाशित किया गया है। यह पीबीकेडीएफ1 का अधिक्रमण करता है, जो केवल 160 बिट तक लंबी व्युत्पन्न कुंजी का उत्पादन कर सकता है। आरएफसी 8018 (पीकेसीएस#5 v2.1), 2017 में प्रकाशित, पासवर्ड हैशिंग के लिए पीबीकेडीएफ2 की अनुशंसा करता है।

उद्देश्य और संचालन
पीबीकेडीएफ2 साल्ट (क्रिप्टोग्राफी) मान के साथ इनपुट पासवर्ड या पासफ़्रेज़ के लिए हैश-आधारित संदेश प्रमाणीकरण कोड (एचएमएसी) जैसे छद्म-यादृच्छिक फ़ंक्शन को लागू करता है और व्युत्पन्न कुंजी उत्पन्न करने के लिए प्रक्रिया को कई बार दोहराता है, जिसे बाद के फ़ंक्शन में तब क्रिप्टोग्राफ़िक कुंजी के रूप में उपयोग किया जा सकता है। जोड़ा गया कम्प्यूटेशनल फ़ंक्शन पासवर्ड क्रैकिंग को और अधिक कठिन बना देता है, और इसे स्ट्रेचिंग के रूप में जाना जाता है।

जब मानक वर्ष 2000 में लिखा गया था, तो पुनरावृत्तियों की अनुशंसित न्यूनतम संख्या 1,000 थी, लेकिन सीपीयू की गति में वृद्धि के साथ पैरामीटर को समय के साथ बढ़ाने का इरादा है। 2005 में करबरोस (प्रोटोकॉल) मानक ने 4,096 पुनरावृत्तियों की अनुशंसा की; एप्पल ने कथित तौर पर iOS 3 के लिए 2,000 और iOS 4 के लिए 10,000 का उपयोग किया; जबकि 2011 में लास्ट पास ने जावास्क्रिप्ट क्लाइंट के लिए 5,000 पुनरावृत्तियों और सर्वर-साइड हैशिंग के लिए 100,000 पुनरावृत्तियों का उपयोग किया है। 2023 में, ओडब्ल्यूएएसपी ने पीबीकेडीएफ2-एचएमएसी-एसएचए256 के लिए 600,000 पुनरावृत्तियों और पीबीकेडीएफ2-एचएमएसी-एसएचए512 के लिए 210,000 पुनरावृत्तियों का उपयोग करने की अनुशंसा की है।

पासवर्ड में साल्ट से आक्षेप के लिए प्रीकंप्यूटेड हैश (रेनबो टेबल) का उपयोग करने की क्षमता कम हो जाती है, और इसका मतलब है कि एक बार में नहीं कई पासवर्डों का अलग-अलग परीक्षण किया जाना चाहिए। सार्वजनिक कुंजी क्रिप्टोग्राफी मानक कम से कम 64 बिट्स की साल्ट लंबाई की अनुशंसा करता है। यूएस के राष्ट्रीय मानक और प्रौद्योगिकी का राष्ट्रीय संस्थान 128 बिट्स की साल्ट लंबाई की अनुशंसा की है।

कुंजी व्युत्पत्ति प्रक्रिया
पीबीकेडीएफ2 कुंजी व्युत्पत्ति फ़ंक्शन में पाँच इनपुट पैरामीटर हैं:

जहाँ:
 * $DK = PBKDF2(PRF, Password, Salt, c, dkLen)$ आउटपुट लंबाई hLen (उदाहरण के लिए, बंद एचएमएसी) के साथ दो मापदंडों का छद्म यादृच्छिक कार्य है।
 * पासवर्ड मास्टर पासवर्ड है जिससे व्युत्पन्न कुंजी उत्पन्न होती है
 * साल्ट बिट्स का अनुक्रम है, जिसे साल्ट (क्रिप्टोग्राफी) के रूप में जाना जाता है
 * c वांछित पुनरावृत्तियों की संख्या है
 * डीकेलेन व्युत्पन्न कुंजी की वांछित बिट-लंबाई है
 * डीके उत्पन्न व्युत्पन्न कुंजी है

व्युत्पन्न कुंजी डीके के प्रत्येक hLen-बिट ब्लॉक T$i$} की गणना निम्नानुसार की जाती है (के साथ $पीआरएफ$ अंकन स्ट्रिंग संयोजन):



फ़ंक्शन $+$ श्रृंखलित पीआरएफ के c पुनरावृत्तियों का xor ($DK = T1 + T2 + ⋯ + Tdklen/hlen$) है। पीआरएफ का पहला पुनरावृत्ति पीआरएफ कुंजी के रूप में पासवर्ड का उपयोग करता है और और इनपुट के रूप बिग-एंडियन 32-बिट पूर्णांक के रूप में i एन्कोड साल्ट के साथ जुड़ा हुआ है।(ध्यान दें कि i एक 1-आधारित इंडेक्स है।) पीआरएफ के बाद के पुनरावृत्तियों में पीआरएफ कुंजी के रूप में पासवर्ड का उपयोग किया जाता है और इनपुट के रूप में पिछले पीआरएफ गणना का आउटपुट:



जहाँ:

उदाहरण के लिए, WPA2 उपयोग करता है:



पीबीकेडीएफ1 की सरल प्रक्रिया थी: प्रारंभिक U (इस संस्करण में T कहा जाता है) $Ti = F(Password, Salt, c, i)$ द्वारा बनाया गया है और निम्नलिखित बस हैं $F$. कुंजी को अंतिम हैश के पहले dkLen बिट्स के रूप में निकाला जाता है, यही कारण है कि आकार सीमा होती है।

एचएमएसी संघट्ट
एचएमएसी को अपने छद्म-यादृच्छिक फ़ंक्शन के रूप में उपयोग करते समय पीबीकेडीएफ 2 का रोचक गुण है। प्रत्येक युग्म के भीतर संघट्ट के साथ कई अलग-अलग पासवर्ड युग्म को तुच्छ रूप से बनाना संभव है। यदि आपूर्ति किया गया पासवर्ड अंतर्निहित एचएमएसी हैश फ़ंक्शन के ब्लॉक आकार से अधिक लंबा है, तो पासवर्ड को पहले डाइजेस्ट में प्री-हैश किया जाता है, और उस डाइजेस्ट को पासवर्ड के रूप में उपयोग किया जाता है। उदाहरण के लिए, निम्न पासवर्ड बहुत लंबा है:

इसलिए, एचएमएसी-एसएचए1 का उपयोग करते समय, इसे एसएचए-1 का उपयोग करके प्री-हैश किया जाता है:
 * पासवर्ड:

ASCII में किसका प्रतिनिधित्व किया जा सकता है:
 * एसएचए1 (हेक्स):

इसका मतलब है कि साल्ट या पुनरावृत्तियों की परवाह किए बिना, पीबीकेडीएफ2-एचएमएसी-एसएचए1 पासवर्ड के लिए समान कुंजी बाइट उत्पन्न करेगा:
 * एसएचए1 (ASCII):


 * plnlrtfpijpuhqylxbgqiiyipeyxvfsavzgxbbcfusqkozwpngsyjqlmjsytrmd
 * eBkXQTfuBqp'cTcar&g*

उदाहरण के लिए, का उपयोग कर:


 * पीआरएफ: एचएमएसी-SHA1
 * साल्ट: A009C1A485912C6AE630D3E744240B04
 * पुनरावृत्तियाँ: 1,000
 * व्युत्पन्न कुंजी लंबाई: 16 बाइट्स

निम्नलिखित दो फ़ंक्शन कॉल:

PBKDF2-HMAC-SHA1( plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd, ...) PBKDF2-HMAC-SHA1(eBkXQTfuBqp'cTcar&g*, ...)

समान व्युत्पन्न कुंजी बाइट उत्पन्न करेगा। ये व्युत्पन्न कुंजी संघट्ट सुरक्षा भेद्यता का प्रतिनिधित्व नहीं करते हैं - क्योंकि पासवर्ड का हैश उत्पन्न करने के लिए किसी को अभी भी मूल पासवर्ड पता होना चाहिए।

 पीबीकेडीएफ2 के विकल्प 

पीबीकेडीएफ2 की कमजोरी यह है कि इसकी पुनरावृत्तियों की संख्या को समायोजित किया जा सकता है जिससे कि यह मनमाने ढंग से बड़ी मात्रा में कंप्यूटिंग समय ले सके, इसे एक छोटे सर्किट और बहुत कम रैम के साथ लागू किया जा सकता है, जो एप्लिकेशन-विशिष्ट एकीकृत का उपयोग करके मनमानीबल आक्षेप करता है। सर्किट या ग्राफ़िक्स प्रोसेसिंग युनिटअपेक्षाकृत सस्ते हैं। bcrypt पासवर्ड हैशिंग फ़ंक्शन के लिए बड़ी मात्रा में रैम की आवश्यकता होती है (लेकिन अभी भी अलग से ट्यून करने योग्य नहीं है, अर्थात सीपीयू समय की दी गई परिमाण के लिए निश्चित है) और इस तरह के आक्षेप के खिलाफ थोड़ा मजबूत है, जबकि अधिक आधुनिक स्क्रीप्ट कुंजी व्युत्पन्न फ़ंक्शन मनमाने ढंग से बड़ी मात्रा में मेमोरी का उपयोग कर सकता है और इसलिए एएसआईसी और जीपीयू आक्षेप के लिए अधिक प्रतिरोधी है।

2013 में, अधिक प्रतिरोधी दृष्टिकोण विकसित करने के लिए पासवर्ड हैशिंग प्रतियोगिता (पीएचसी) आयोजित की गई थी। 20 जुलाई 2015 को Argon2 को अंतिम पीएचसी विजेता के रूप में चुना गया था, जिसमें चार अन्य पासवर्ड हैशिंग योजनाओं को विशेष मान्यता दी गई थी: Catena, Lyra2, Yescrypt और Makwa। अन्य विकल्प बैलून हैशिंग है, जिसकी एनआईएसटी पासवर्ड दिशानिर्देशों में अनुशंसा की गई है।

यह भी देखें

 * पीबीकेडीएफ2 कार्यान्वयन की सूची

बाहरी संबंध

 * – Specification of PKCS#5 v2.0.
 * – Test vectors for पीबीकेडीएफ2 with एचएमएसी-SHA1.
 * NIST Special Publication 800-132 Recommendation for Password-Based Key Derivation
 * NIST Special Publication 800-132 Recommendation for Password-Based Key Derivation