पीबीकेडीएफ2: Difference between revisions
(tex) |
|||
Line 1: | Line 1: | ||
{{short description|Standard for a password-based key derivation function}} | {{short description|Standard for a password-based key derivation function}} | ||
[[क्रिप्टोग्राफी]] में, पीबीकेडीएफ1 और पीबीकेडीएफ2 (पासवर्ड-आधारित कुंजी व्युत्पत्ति फ़ंक्शन 1 और 2) स्लाइडिंग कम्प्यूटेशनल लागत के साथ प्रमुख व्युत्पत्ति फ़ंक्शन हैं, जिनका उपयोग ब्रूट-फ़ोर्स आक्षेप की भेद्यता को कम करने के लिए किया जाता है।<ref name="RFC3962" /> | [[क्रिप्टोग्राफी]] में, '''पीबीकेडीएफ1 और पीबीकेडीएफ2 (पासवर्ड-आधारित कुंजी व्युत्पत्ति फ़ंक्शन 1 और 2)''' स्लाइडिंग कम्प्यूटेशनल लागत के साथ प्रमुख व्युत्पत्ति फ़ंक्शन हैं, जिनका उपयोग ब्रूट-फ़ोर्स आक्षेप की भेद्यता को कम करने के लिए किया जाता है।<ref name="RFC3962" /> | ||
पीबीकेडीएफ2 [[आरएसए प्रयोगशालाओं]] की सार्वजनिक-कुंजी क्रिप्टोग्राफ़ी मानक (पीकेसीएस) श्रृंखला का हिस्सा है, विशेष रूप से पीकेसीएस#5 v2.0, [[इंटरनेट इंजीनियरिंग टास्क फोर्स]] के आरएफसी 2898 के रूप में भी प्रकाशित किया गया है। यह पीबीकेडीएफ1 का अधिक्रमण करता है, जो केवल 160 बिट तक लंबी व्युत्पन्न कुंजी का उत्पादन कर सकता है।<ref>{{Cite journal|title = PKCS{{nbsp}}#5: Password-Based Cryptography Specification, Version 2.0 |url=http://tools.ietf.org/html/rfc2898#section-5.2 |id=RFC{{nbsp}}2898 |website = tools.ietf.org |access-date = 2015-10-23|first = Burt|last = Kaliski|year=2000 |doi=10.17487/RFC2898 |author-link=Burt Kaliski|doi-access=free }}</ref> आरएफसी 8018 (पीकेसीएस#5 v2.1), 2017 में प्रकाशित, पासवर्ड हैशिंग के लिए पीबीकेडीएफ2 की अनुशंसा करता है।<ref>{{cite journal |id=RFC{{nbsp}}8018 |title=PKCS{{nbsp}}#5: Password-Based Cryptography Specification, Version 2.1 |first=Kathleen |last=Moriarty |editor-first1=K |editor-last1=Moriarty |display-authors=etal |url=https://tools.ietf.org/html/rfc8018 |website = tools.ietf.org|year=2017 |doi=10.17487/RFC8018 }}</ref> | पीबीकेडीएफ2 [[आरएसए प्रयोगशालाओं]] की सार्वजनिक-कुंजी क्रिप्टोग्राफ़ी मानक (पीकेसीएस) श्रृंखला का हिस्सा है, विशेष रूप से पीकेसीएस#5 v2.0, [[इंटरनेट इंजीनियरिंग टास्क फोर्स]] के आरएफसी 2898 के रूप में भी प्रकाशित किया गया है। यह पीबीकेडीएफ1 का अधिक्रमण करता है, जो केवल 160 बिट तक लंबी व्युत्पन्न कुंजी का उत्पादन कर सकता है।<ref>{{Cite journal|title = PKCS{{nbsp}}#5: Password-Based Cryptography Specification, Version 2.0 |url=http://tools.ietf.org/html/rfc2898#section-5.2 |id=RFC{{nbsp}}2898 |website = tools.ietf.org |access-date = 2015-10-23|first = Burt|last = Kaliski|year=2000 |doi=10.17487/RFC2898 |author-link=Burt Kaliski|doi-access=free }}</ref> आरएफसी 8018 (पीकेसीएस#5 v2.1), 2017 में प्रकाशित, पासवर्ड हैशिंग के लिए पीबीकेडीएफ2 की अनुशंसा करता है।<ref>{{cite journal |id=RFC{{nbsp}}8018 |title=PKCS{{nbsp}}#5: Password-Based Cryptography Specification, Version 2.1 |first=Kathleen |last=Moriarty |editor-first1=K |editor-last1=Moriarty |display-authors=etal |url=https://tools.ietf.org/html/rfc8018 |website = tools.ietf.org|year=2017 |doi=10.17487/RFC8018 }}</ref> | ||
Line 44: | Line 44: | ||
एचएमएसी को अपने छद्म-यादृच्छिक फ़ंक्शन के रूप में उपयोग करते समय पीबीकेडीएफ 2 का रोचक गुण है। प्रत्येक युग्म के भीतर संघट्ट के साथ कई अलग-अलग पासवर्ड युग्म को तुच्छ रूप से बनाना संभव है।<ref>{{Cite web |url=https://mathiasbynens.be/notes/pbkdf2-hmac |title=PBKDF2+HMAC hash collisions explained |first=Mathias |last=Bynens |website=mathiasbynens.be}}</ref> यदि आपूर्ति किया गया पासवर्ड अंतर्निहित एचएमएसी हैश फ़ंक्शन के ब्लॉक आकार से अधिक लंबा है, तो पासवर्ड को पहले डाइजेस्ट में प्री-हैश किया जाता है, और उस डाइजेस्ट को पासवर्ड के रूप में उपयोग किया जाता है। उदाहरण के लिए, निम्न पासवर्ड बहुत लंबा है: | एचएमएसी को अपने छद्म-यादृच्छिक फ़ंक्शन के रूप में उपयोग करते समय पीबीकेडीएफ 2 का रोचक गुण है। प्रत्येक युग्म के भीतर संघट्ट के साथ कई अलग-अलग पासवर्ड युग्म को तुच्छ रूप से बनाना संभव है।<ref>{{Cite web |url=https://mathiasbynens.be/notes/pbkdf2-hmac |title=PBKDF2+HMAC hash collisions explained |first=Mathias |last=Bynens |website=mathiasbynens.be}}</ref> यदि आपूर्ति किया गया पासवर्ड अंतर्निहित एचएमएसी हैश फ़ंक्शन के ब्लॉक आकार से अधिक लंबा है, तो पासवर्ड को पहले डाइजेस्ट में प्री-हैश किया जाता है, और उस डाइजेस्ट को पासवर्ड के रूप में उपयोग किया जाता है। उदाहरण के लिए, निम्न पासवर्ड बहुत लंबा है: | ||
* पासवर्ड: <code>{{not a typo|plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd}}</code> | * '''पासवर्ड:''' <code>{{not a typo|plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd}}</code> | ||
इसलिए, एचएमएसी-एसएचए1 का उपयोग करते समय, इसे एसएचए-1 का उपयोग करके प्री-हैश किया जाता है: | इसलिए, एचएमएसी-एसएचए1 का उपयोग करते समय, इसे एसएचए-1 का उपयोग करके प्री-हैश किया जाता है: | ||
* एसएचए1 (हेक्स): <code>65426b585154667542717027635463617226672a</code> | * '''एसएचए1''' (हेक्स): <code>65426b585154667542717027635463617226672a</code> | ||
ASCII में किसका प्रतिनिधित्व किया जा सकता है: | ASCII में किसका प्रतिनिधित्व किया जा सकता है: | ||
* एसएचए1 (ASCII): <code>eBkXQTfuBqp'cTcar&g*</code> | * '''एसएचए1''' (ASCII): <code>eBkXQTfuBqp'cTcar&g*</code> | ||
इसका मतलब है कि साल्ट या पुनरावृत्तियों की परवाह किए बिना, पीबीकेडीएफ2-एचएमएसी-एसएचए1 पासवर्ड के लिए समान कुंजी बाइट उत्पन्न करेगा: | इसका मतलब है कि साल्ट या पुनरावृत्तियों की परवाह किए बिना, पीबीकेडीएफ2-एचएमएसी-एसएचए1 पासवर्ड के लिए समान कुंजी बाइट उत्पन्न करेगा: | ||
Line 58: | Line 58: | ||
उदाहरण के लिए, का उपयोग कर: | उदाहरण के लिए, का उपयोग कर: | ||
* पीआरएफ: एचएमएसी-SHA1 | * '''पीआरएफ''': एचएमएसी-SHA1 | ||
* साल्ट: A009C1A485912C6AE630D3E744240B04 | * '''साल्ट''': A009C1A485912C6AE630D3E744240B04 | ||
* पुनरावृत्तियाँ: 1,000 | * '''पुनरावृत्तियाँ''': 1,000 | ||
* व्युत्पन्न कुंजी लंबाई: 16 बाइट्स | * '''व्युत्पन्न कुंजी लंबाई''': 16 बाइट्स | ||
निम्नलिखित दो फ़ंक्शन कॉल: | निम्नलिखित दो फ़ंक्शन कॉल: |
Revision as of 10:17, 31 May 2023
क्रिप्टोग्राफी में, पीबीकेडीएफ1 और पीबीकेडीएफ2 (पासवर्ड-आधारित कुंजी व्युत्पत्ति फ़ंक्शन 1 और 2) स्लाइडिंग कम्प्यूटेशनल लागत के साथ प्रमुख व्युत्पत्ति फ़ंक्शन हैं, जिनका उपयोग ब्रूट-फ़ोर्स आक्षेप की भेद्यता को कम करने के लिए किया जाता है।[1]
पीबीकेडीएफ2 आरएसए प्रयोगशालाओं की सार्वजनिक-कुंजी क्रिप्टोग्राफ़ी मानक (पीकेसीएस) श्रृंखला का हिस्सा है, विशेष रूप से पीकेसीएस#5 v2.0, इंटरनेट इंजीनियरिंग टास्क फोर्स के आरएफसी 2898 के रूप में भी प्रकाशित किया गया है। यह पीबीकेडीएफ1 का अधिक्रमण करता है, जो केवल 160 बिट तक लंबी व्युत्पन्न कुंजी का उत्पादन कर सकता है।[2] आरएफसी 8018 (पीकेसीएस#5 v2.1), 2017 में प्रकाशित, पासवर्ड हैशिंग के लिए पीबीकेडीएफ2 की अनुशंसा करता है।[3]
उद्देश्य और संचालन
पीबीकेडीएफ2 साल्ट (क्रिप्टोग्राफी) मान के साथ इनपुट पासवर्ड या पासफ़्रेज़ के लिए हैश-आधारित संदेश प्रमाणीकरण कोड (एचएमएसी) जैसे छद्म-यादृच्छिक फ़ंक्शन को लागू करता है और व्युत्पन्न कुंजी उत्पन्न करने के लिए प्रक्रिया को कई बार दोहराता है, जिसे बाद के फ़ंक्शन में तब क्रिप्टोग्राफ़िक कुंजी के रूप में उपयोग किया जा सकता है। जोड़ा गया कम्प्यूटेशनल फ़ंक्शन पासवर्ड क्रैकिंग को और अधिक कठिन बना देता है, और इसे स्ट्रेचिंग के रूप में जाना जाता है।
जब मानक वर्ष 2000 में लिखा गया था, तो पुनरावृत्तियों की अनुशंसित न्यूनतम संख्या 1,000 थी, लेकिन सीपीयू की गति में वृद्धि के साथ पैरामीटर को समय के साथ बढ़ाने का इरादा है। 2005 में करबरोस (प्रोटोकॉल) मानक ने 4,096 पुनरावृत्तियों की अनुशंसा की;[1]एप्पल ने कथित तौर पर iOS 3 के लिए 2,000 और iOS 4 के लिए 10,000 का उपयोग किया;[4] जबकि 2011 में लास्ट पास ने जावास्क्रिप्ट क्लाइंट के लिए 5,000 पुनरावृत्तियों और सर्वर-साइड हैशिंग के लिए 100,000 पुनरावृत्तियों का उपयोग किया है।[5] 2023 में, ओडब्ल्यूएएसपी ने पीबीकेडीएफ2-एचएमएसी-एसएचए256 के लिए 600,000 पुनरावृत्तियों और पीबीकेडीएफ2-एचएमएसी-एसएचए512 के लिए 210,000 पुनरावृत्तियों का उपयोग करने की अनुशंसा की है।[6]
पासवर्ड में साल्ट से आक्षेप के लिए प्रीकंप्यूटेड हैश (रेनबो टेबल) का उपयोग करने की क्षमता कम हो जाती है, और इसका मतलब है कि एक बार में नहीं कई पासवर्डों का अलग-अलग परीक्षण किया जाना चाहिए। सार्वजनिक कुंजी क्रिप्टोग्राफी मानक कम से कम 64 बिट्स की साल्ट लंबाई की अनुशंसा करता है।[7] यूएस के राष्ट्रीय मानक और प्रौद्योगिकी का राष्ट्रीय संस्थान 128 बिट्स की साल्ट लंबाई की अनुशंसा की है।[8]
कुंजी व्युत्पत्ति प्रक्रिया
पीबीकेडीएफ2 कुंजी व्युत्पत्ति फ़ंक्शन में पाँच इनपुट पैरामीटर हैं:[9]
- DK = PBKDF2(PRF, Password, Salt, c, dkLen)
जहाँ:
- पीआरएफ आउटपुट लंबाई hLen (उदाहरण के लिए, बंद एचएमएसी) के साथ दो मापदंडों का छद्म यादृच्छिक कार्य है।
- पासवर्ड मास्टर पासवर्ड है जिससे व्युत्पन्न कुंजी उत्पन्न होती है
- साल्ट बिट्स का अनुक्रम है, जिसे साल्ट (क्रिप्टोग्राफी) के रूप में जाना जाता है
- c वांछित पुनरावृत्तियों की संख्या है
- डीकेलेन व्युत्पन्न कुंजी की वांछित बिट-लंबाई है
- डीके उत्पन्न व्युत्पन्न कुंजी है
व्युत्पन्न कुंजी डीके के प्रत्येक hLen-बिट ब्लॉक {{math|Ti} की गणना निम्नानुसार की जाती है (के साथ + अंकन स्ट्रिंग संयोजन):
- DK = T1 + T2 + ⋯ + Tdklen/hlen
- Ti = F(Password, Salt, c, i)
फ़ंक्शन F श्रृंखलित पीआरएफ के c पुनरावृत्तियों का xor (^) है। पीआरएफ का पहला पुनरावृत्ति पीआरएफ कुंजी के रूप में पासवर्ड का उपयोग करता है और और इनपुट के रूप बिग-एंडियन 32-बिट पूर्णांक के रूप में i एन्कोड साल्ट के साथ जुड़ा हुआ है।(ध्यान दें कि i एक 1-आधारित इंडेक्स है।) पीआरएफ के बाद के पुनरावृत्तियों में पीआरएफ कुंजी के रूप में पासवर्ड का उपयोग किया जाता है और इनपुट के रूप में पिछले पीआरएफ गणना का आउटपुट:
- F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc
जहाँ:
- U1 = PRF(Password, Salt + INT_32_BE(i))
- U2 = PRF(Password, U1)
- ⋮
- Uc = PRF(Password, Uc−1)
उदाहरण के लिए, WPA2 उपयोग करता है:
- DK = PBKDF2(HMAC−SHA1, passphrase, ssid, 4096, 256)
पीबीकेडीएफ1 की सरल प्रक्रिया थी: प्रारंभिक U (इस संस्करण में T कहा जाता है) PRF(Password + Salt) द्वारा बनाया गया है और निम्नलिखित बस हैं PRF(Uprevious). कुंजी को अंतिम हैश के पहले dkLen बिट्स के रूप में निकाला जाता है, यही कारण है कि आकार सीमा होती है।[9]
एचएमएसी संघट्ट
एचएमएसी को अपने छद्म-यादृच्छिक फ़ंक्शन के रूप में उपयोग करते समय पीबीकेडीएफ 2 का रोचक गुण है। प्रत्येक युग्म के भीतर संघट्ट के साथ कई अलग-अलग पासवर्ड युग्म को तुच्छ रूप से बनाना संभव है।[10] यदि आपूर्ति किया गया पासवर्ड अंतर्निहित एचएमएसी हैश फ़ंक्शन के ब्लॉक आकार से अधिक लंबा है, तो पासवर्ड को पहले डाइजेस्ट में प्री-हैश किया जाता है, और उस डाइजेस्ट को पासवर्ड के रूप में उपयोग किया जाता है। उदाहरण के लिए, निम्न पासवर्ड बहुत लंबा है:
- पासवर्ड:
plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd
इसलिए, एचएमएसी-एसएचए1 का उपयोग करते समय, इसे एसएचए-1 का उपयोग करके प्री-हैश किया जाता है:
- एसएचए1 (हेक्स):
65426b585154667542717027635463617226672a
ASCII में किसका प्रतिनिधित्व किया जा सकता है:
- एसएचए1 (ASCII):
eBkXQTfuBqp'cTcar&g*
इसका मतलब है कि साल्ट या पुनरावृत्तियों की परवाह किए बिना, पीबीकेडीएफ2-एचएमएसी-एसएचए1 पासवर्ड के लिए समान कुंजी बाइट उत्पन्न करेगा:
- plnlrtfpijpuhqylxbgqiiyipeyxvfsavzgxbbcfusqkozwpngsyjqlmjsytrmd
- eBkXQTfuBqp'cTcar&g*
उदाहरण के लिए, का उपयोग कर:
- पीआरएफ: एचएमएसी-SHA1
- साल्ट: A009C1A485912C6AE630D3E744240B04
- पुनरावृत्तियाँ: 1,000
- व्युत्पन्न कुंजी लंबाई: 16 बाइट्स
निम्नलिखित दो फ़ंक्शन कॉल:
PBKDF2-HMAC-SHA1( plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd , ...) PBKDF2-HMAC-SHA1(eBkXQTfuBqp'cTcar&g* , ...)
समान व्युत्पन्न कुंजी बाइट (17EB4014C8C461C300E9B61518B9A18B
) उत्पन्न करेगा। ये व्युत्पन्न कुंजी संघट्ट सुरक्षा भेद्यता का प्रतिनिधित्व नहीं करते हैं - क्योंकि पासवर्ड का हैश उत्पन्न करने के लिए किसी को अभी भी मूल पासवर्ड पता होना चाहिए।[11]
पीबीकेडीएफ2 के विकल्प
पीबीकेडीएफ2 की कमजोरी यह है कि इसकी पुनरावृत्तियों की संख्या को समायोजित किया जा सकता है जिससे कि यह मनमाने ढंग से बड़ी मात्रा में कंप्यूटिंग समय ले सके, इसे एक छोटे सर्किट और बहुत कम रैम के साथ लागू किया जा सकता है, जो एप्लिकेशन-विशिष्ट एकीकृत का उपयोग करके मनमानीबल आक्षेप करता है। सर्किट या ग्राफ़िक्स प्रोसेसिंग युनिटअपेक्षाकृत सस्ते हैं।[12] bcrypt पासवर्ड हैशिंग फ़ंक्शन के लिए बड़ी मात्रा में रैम की आवश्यकता होती है (लेकिन अभी भी अलग से ट्यून करने योग्य नहीं है, अर्थात सीपीयू समय की दी गई परिमाण के लिए निश्चित है) और इस तरह के आक्षेप के खिलाफ थोड़ा मजबूत है,[13] जबकि अधिक आधुनिक स्क्रीप्ट कुंजी व्युत्पन्न फ़ंक्शन मनमाने ढंग से बड़ी मात्रा में मेमोरी का उपयोग कर सकता है और इसलिए एएसआईसी और जीपीयू आक्षेप के लिए अधिक प्रतिरोधी है।[12]
2013 में, अधिक प्रतिरोधी दृष्टिकोण विकसित करने के लिए पासवर्ड हैशिंग प्रतियोगिता (पीएचसी) आयोजित की गई थी। 20 जुलाई 2015 को Argon2 को अंतिम पीएचसी विजेता के रूप में चुना गया था, जिसमें चार अन्य पासवर्ड हैशिंग योजनाओं को विशेष मान्यता दी गई थी: Catena, Lyra2, Yescrypt और Makwa।[14] अन्य विकल्प बैलून हैशिंग है, जिसकी एनआईएसटी पासवर्ड दिशानिर्देशों में अनुशंसा की गई है।[15]
यह भी देखें
संदर्भ
- ↑ 1.0 1.1 Raeburn, Kenneth (2005). "Advanced Encryption Standard (AES) Encryption for Kerberos 5". tools.ietf.org. doi:10.17487/RFC3962. RFC 3962. Retrieved 2015-10-23.
- ↑ Kaliski, Burt (2000). "PKCS #5: Password-Based Cryptography Specification, Version 2.0". tools.ietf.org. doi:10.17487/RFC2898. RFC 2898. Retrieved 2015-10-23.
- ↑ Moriarty, Kathleen; et al. (2017). Moriarty, K (ed.). "PKCS #5: Password-Based Cryptography Specification, Version 2.1". tools.ietf.org. doi:10.17487/RFC8018. RFC 8018.
- ↑ "Smartphone Forensics: Cracking BlackBerry Backup Passwords". Advanced Password Cracking – Insight. ElcomSoft. 30 September 2010. Retrieved 2015-10-23.
- ↑ "लास्टपास सुरक्षा अधिसूचना". The LastPass Blog. 5 May 2011. Retrieved 2023-01-31.
- ↑ "पासवर्ड स्टोरेज चीट शीट". OWASP Cheat Sheet Series. 15 August 2021. Archived from the original on 23 January 2023. Retrieved 2023-01-23.
- ↑ Moriarty, Kathleen; et al. (2017). Moriarty, K (ed.). "PKCS #5: Password-Based Cryptography Specification, Version 2.1: Section 4. Salt and Iteration Count". tools.ietf.org. doi:10.17487/RFC8018. RFC 8018. Retrieved 2018-01-24.
- ↑ Sönmez Turan, Meltem; Barker, Elaine; Burr, William; Chen, Lily. "Recommendation for Password-Based Key Derivation Part 1: Storage Applications" (PDF). NIST. SP 800-132. Retrieved 2018-12-20.
- ↑ 9.0 9.1 Password-Based Cryptography Specification RFC 2898
- ↑ Bynens, Mathias. "PBKDF2+HMAC hash collisions explained". mathiasbynens.be.
- ↑ "Collision resistance - Why is HMAC-SHA1 still considered secure?". crypto.stackexchange.com.
- ↑ 12.0 12.1 Colin Percival. scrypt. As presented in "Stronger Key Derivation via Sequential Memory-Hard Functions". presented at BSDCan'09, May 2009.
- ↑ "New 25 GPU Monster Devours Passwords In Seconds". The Security Ledger. 2012-12-04. Retrieved 2013-09-07.
- ↑ "Password Hashing Competition"
- ↑ "Digital Identity Guidelines Authentication and Lifecycle Management Section 5.1.1.2" (PDF). NIST. SP 800-63B. Retrieved June 18, 2021.
बाहरी संबंध
- "PKCS #5 v2.1" (PDF). RSA Laboratories. Archived from the original (PDF) on 2017-04-11.
- RFC 2898 – Specification of PKCS #5 v2.0.
- RFC 6070 – Test vectors for पीबीकेडीएफ2 with एचएमएसी-SHA1.
- NIST Special Publication 800-132 Recommendation for Password-Based Key Derivation