पीबीकेडीएफ2: Difference between revisions
(text) |
|||
Line 4: | Line 4: | ||
पीबीकेडीएफ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> | ||
== उद्देश्य और संचालन == | == उद्देश्य और संचालन == | ||
पीबीकेडीएफ2 [[नमक (क्रिप्टोग्राफी)]] मान के साथ इनपुट [[पासवर्ड]] या [[पदबंध]] के लिए [[हैश-आधारित संदेश प्रमाणीकरण कोड]] ( | पीबीकेडीएफ2 [[नमक (क्रिप्टोग्राफी)|साल्ट (क्रिप्टोग्राफी)]] मान के साथ इनपुट [[पासवर्ड]] या [[पदबंध|पासफ़्रेज़]] के लिए [[हैश-आधारित संदेश प्रमाणीकरण कोड]] (एचएमएसी) जैसे छद्म-यादृच्छिक फलन को लागू करता है और व्युत्पन्न कुंजी उत्पन्न करने के लिए प्रक्रिया को कई बार दोहराता है, जिसे बाद के फलन में तब क्रिप्टोग्राफ़िक कुंजी के रूप में उपयोग किया जा सकता है। जोड़ा गया कम्प्यूटेशनल फलन [[पासवर्ड क्रैकिंग]] को और अधिक कठिन बना देता है, और इसे [[कुंजी खींचना|स्ट्रेचिंग]] के रूप में जाना जाता है। | ||
जब मानक वर्ष 2000 में लिखा गया था, तो पुनरावृत्तियों की अनुशंसित न्यूनतम संख्या 1,000 थी, लेकिन सीपीयू की गति में वृद्धि के साथ पैरामीटर को समय के साथ बढ़ाने का इरादा है। 2005 में | जब मानक वर्ष 2000 में लिखा गया था, तो पुनरावृत्तियों की अनुशंसित न्यूनतम संख्या 1,000 थी, लेकिन सीपीयू की गति में वृद्धि के साथ पैरामीटर को समय के साथ बढ़ाने का इरादा है। 2005 में करबरोस (प्रोटोकॉल) मानक ने 4,096 पुनरावृत्तियों की सिफारिश की;<ref name="RFC3962">{{Cite journal|title = Advanced Encryption Standard (AES) Encryption for Kerberos 5|url = http://tools.ietf.org/html/rfc3962|website = tools.ietf.org|access-date = 2015-10-23 |first=Kenneth |last=Raeburn | year=2005 | doi=10.17487/RFC3962 |id=RFC{{nbsp}}3962|doi-access=free }}</ref>एप्पल ने कथित तौर पर [[iOS 3]] के लिए 2,000 और [[iOS 4]] के लिए 10,000 का उपयोग किया;<ref>{{Cite web|title = Smartphone Forensics: Cracking BlackBerry Backup Passwords |work=Advanced Password Cracking – Insight |publisher=ElcomSoft |date=30 September 2010 |url=http://blog.elcomsoft.com/2010/09/smartphone-forensics-cracking-blackberry-backup-passwords/ |access-date=2015-10-23}}</ref> जबकि 2011 में [[ लास्ट पास |लास्ट पास]] ने [[जावास्क्रिप्ट]] क्लाइंट के लिए 5,000 पुनरावृत्तियों और सर्वर-साइड हैशिंग के लिए 100,000 पुनरावृत्तियों का उपयोग किया है।<ref>{{Cite web |title = लास्टपास सुरक्षा अधिसूचना|url=https://blog.lastpass.com/2011/05/lastpass-security-notification/|website = The LastPass Blog|date = 5 May 2011|access-date = 2023-01-31}}</ref> 2023 में, [[OWASP|ओडब्ल्यूएएसपी]] ने पीबीकेडीएफ2-एचएमएसी-एसएचए256 के लिए 600,000 पुनरावृत्तियों और पीबीकेडीएफ2-एचएमएसी-एसएचए512 के लिए 210,000 पुनरावृत्तियों का उपयोग करने की अनुशंसा की है।<ref>{{Cite web |date=15 August 2021 |title=पासवर्ड स्टोरेज चीट शीट|url=https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html#pbkdf2 |url-status=live |archive-url=https://web.archive.org/web/20230123232056/https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html |archive-date=23 January 2023 |access-date=2023-01-23 |website=OWASP Cheat Sheet Series}}</ref> | ||
[[File:Pbkdf2 nist.png|thumb|पासवर्ड-आधारित कुंजी व्युत्पत्ति फलन 2 की पुनरावृत्ति प्रक्रिया का एल्गोरिथम प्रतिनिधित्व।]]पासवर्ड में | [[File:Pbkdf2 nist.png|thumb|पासवर्ड-आधारित कुंजी व्युत्पत्ति फलन 2 की पुनरावृत्ति प्रक्रिया का एल्गोरिथम प्रतिनिधित्व।]]पासवर्ड में साल्ट मिलाने से हमलों के लिए प्रीकंप्यूटेड हैश ([[इंद्रधनुष टेबल]]) का उपयोग करने की क्षमता कम हो जाती है, और इसका मतलब है कि कई पासवर्डों का अलग-अलग परीक्षण किया जाना चाहिए, एक बार में नहीं। सार्वजनिक कुंजी क्रिप्टोग्राफी मानक कम से कम 64 बिट्स की साल्ट लंबाई की सिफारिश करता है।<ref name="RFC8018s4">{{Cite journal |id=RFC{{nbsp}}8018 |title=PKCS{{nbsp}}#5: Password-Based Cryptography Specification, Version 2.1: Section 4. Salt and Iteration Count |url = https://tools.ietf.org/html/rfc8018#section-4 |website = tools.ietf.org|access-date = 2018-01-24 |first=Kathleen |last=Moriarty |editor-first1=K |editor-last1=Moriarty |year=2017 |doi=10.17487/RFC8018 |display-authors=etal}}</ref> यूएस [[मानक और प्रौद्योगिकी का राष्ट्रीय संस्थान]] 128 बिट्स की साल्ट लंबाई की सिफारिश करता है।<ref>{{Cite web |id=SP{{nbsp}}800-132 |title=Recommendation for Password-Based Key Derivation Part 1: Storage Applications |url=https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf |website=NIST |access-date = 2018-12-20 |first1=Meltem |last1=Sönmez Turan |first2=Elaine |last2=Barker |first3=William |last3=Burr |first4=Lily |last4=Chen}}</ref> | ||
Line 16: | Line 16: | ||
कहाँ: | कहाँ: | ||
* {{math|PRF}} आउटपुट लंबाई के साथ दो पैरामीटर का छद्म यादृच्छिक फलन है {{var|hLen}} (उदा., एक बंद | * {{math|PRF}} आउटपुट लंबाई के साथ दो पैरामीटर का छद्म यादृच्छिक फलन है {{var|hLen}} (उदा., एक बंद एचएमएसी) | ||
* {{var|Password}} मास्टर पासवर्ड है जिससे व्युत्पन्न कुंजी उत्पन्न होती है | * {{var|Password}} मास्टर पासवर्ड है जिससे व्युत्पन्न कुंजी उत्पन्न होती है | ||
* {{var|Salt}} बिट्स का अनुक्रम है, जिसे | * {{var|Salt}} बिट्स का अनुक्रम है, जिसे साल्ट (क्रिप्टोग्राफी) के रूप में जाना जाता है | ||
* {{var|c}} वांछित पुनरावृत्तियों की संख्या है | * {{var|c}} वांछित पुनरावृत्तियों की संख्या है | ||
* {{var|dkLen}} व्युत्पन्न कुंजी की वांछित बिट-लंबाई है | * {{var|dkLen}} व्युत्पन्न कुंजी की वांछित बिट-लंबाई है | ||
Line 28: | Line 28: | ||
:{{math|1=T{{sub|i}} = F({{var|Password}}, {{var|Salt}}, {{var|c}}, {{var|i}})}} | :{{math|1=T{{sub|i}} = F({{var|Password}}, {{var|Salt}}, {{var|c}}, {{var|i}})}} | ||
कार्यक्रम {{math|F}} [[xor]] है ({{math|^}}) श्रृंखलित PRFs के पुनरावृत्तियों का। PRF का पहला पुनरावृत्ति PRF कुंजी के रूप में पासवर्ड का उपयोग करता है और | कार्यक्रम {{math|F}} [[xor]] है ({{math|^}}) श्रृंखलित PRFs के पुनरावृत्तियों का। PRF का पहला पुनरावृत्ति PRF कुंजी के रूप में पासवर्ड का उपयोग करता है और साल्ट के साथ जुड़ा हुआ है {{var|i}} इनपुट के रूप में बिग-एंडियन 32-बिट पूर्णांक के रूप में एन्कोड किया गया। (ध्यान दें कि i एक 1-आधारित इंडेक्स है।) PRF के बाद के पुनरावृत्तियों में PRF कुंजी के रूप में पासवर्ड का उपयोग किया जाता है और इनपुट के रूप में पिछले PRF गणना का आउटपुट: | ||
:{{math|1=F({{var|Password}}, {{var|Salt}}, {{var|c}}, {{var|i}}) = U{{sub|1}} ^ U{{sub|2}} ^ ⋯ ^ U{{sub|{{var|c}}}}}} | :{{math|1=F({{var|Password}}, {{var|Salt}}, {{var|c}}, {{var|i}}) = U{{sub|1}} ^ U{{sub|2}} ^ ⋯ ^ U{{sub|{{var|c}}}}}} | ||
Line 46: | Line 46: | ||
== एचएमएसी टकराव == | == एचएमएसी टकराव == | ||
एचएमएसी को अपने छद्म-यादृच्छिक फलन के रूप में उपयोग करते समय पीबीकेडीएफ 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> | ||
इसलिए, | इसलिए, एचएमएसी-SHA1 का उपयोग करते समय, इसे SHA-1 का उपयोग करके प्री-हैश किया जाता है: | ||
* SHA1 (हेक्स): <code>65426b585154667542717027635463617226672a</code> | * SHA1 (हेक्स): <code>65426b585154667542717027635463617226672a</code> | ||
Line 55: | Line 55: | ||
* SHA1 (ASCII): <code>eBkXQTfuBqp'cTcar&g*</code> | * SHA1 (ASCII): <code>eBkXQTfuBqp'cTcar&g*</code> | ||
इसका मतलब है कि | इसका मतलब है कि साल्ट या पुनरावृत्तियों की परवाह किए बिना, पीबीकेडीएफ2-एचएमएसी-SHA1 पासवर्ड के लिए समान कुंजी बाइट उत्पन्न करेगा: | ||
* plnlrtfpijpuhqylxbgqiiyipeyxvfsavzgxbbcfusqkozwpngsyjqlmjsytrmd | * plnlrtfpijpuhqylxbgqiiyipeyxvfsavzgxbbcfusqkozwpngsyjqlmjsytrmd | ||
Line 62: | Line 62: | ||
उदाहरण के लिए, का उपयोग कर: | उदाहरण के लिए, का उपयोग कर: | ||
* पीआरएफ: | * पीआरएफ: एचएमएसी-SHA1 | ||
* | * साल्ट: A009C1A485912C6AE630D3E744240B04 | ||
* पुनरावृत्तियाँ: 1,000 | * पुनरावृत्तियाँ: 1,000 | ||
* व्युत्पन्न कुंजी लंबाई: 16 बाइट्स | * व्युत्पन्न कुंजी लंबाई: 16 बाइट्स | ||
Line 69: | Line 69: | ||
निम्नलिखित दो फलन कॉल: | निम्नलिखित दो फलन कॉल: | ||
पीबीकेडीएफ2- | पीबीकेडीएफ2-एचएमएसी-SHA1( plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd , ...) | ||
पीबीकेडीएफ2- | पीबीकेडीएफ2-एचएमएसी-SHA1(eBkXQTfuBqp'cTcar&g* , ...) | ||
समान व्युत्पन्न कुंजी बाइट उत्पन्न करेगा (<code>17EB4014C8C461C300E9B61518B9A18B</code>). ये व्युत्पन्न कुंजी टकराव एक सुरक्षा भेद्यता का प्रतिनिधित्व नहीं करते हैं - क्योंकि पासवर्ड का हैश उत्पन्न करने के लिए किसी को अभी भी मूल पासवर्ड पता होना चाहिए।<ref>{{Cite web|url=https://crypto.stackexchange.com/questions/26510/why-is-hmac-sha1-still-considered-secure|title = Collision resistance - Why is HMAC-SHA1 still considered secure? |website=crypto.stackexchange.com}}</ref> | समान व्युत्पन्न कुंजी बाइट उत्पन्न करेगा (<code>17EB4014C8C461C300E9B61518B9A18B</code>). ये व्युत्पन्न कुंजी टकराव एक सुरक्षा भेद्यता का प्रतिनिधित्व नहीं करते हैं - क्योंकि पासवर्ड का हैश उत्पन्न करने के लिए किसी को अभी भी मूल पासवर्ड पता होना चाहिए।<ref>{{Cite web|url=https://crypto.stackexchange.com/questions/26510/why-is-hmac-sha1-still-considered-secure|title = Collision resistance - Why is HMAC-SHA1 still considered secure? |website=crypto.stackexchange.com}}</ref> | ||
Line 92: | Line 92: | ||
*{{cite web |url=https://www.emc.com/collateral/white-papers/h11302-pkcs5v2-1-password-based-cryptography-standard-wp.pdf |archiveurl=https://web.archive.org/web/20170411220929/https://www.emc.com/collateral/white-papers/h11302-pkcs5v2-1-password-based-cryptography-standard-wp.pdf |archivedate=2017-04-11 |website=RSA Laboratories |title=PKCS{{nbsp}}#5 v2.1}} | *{{cite web |url=https://www.emc.com/collateral/white-papers/h11302-pkcs5v2-1-password-based-cryptography-standard-wp.pdf |archiveurl=https://web.archive.org/web/20170411220929/https://www.emc.com/collateral/white-papers/h11302-pkcs5v2-1-password-based-cryptography-standard-wp.pdf |archivedate=2017-04-11 |website=RSA Laboratories |title=PKCS{{nbsp}}#5 v2.1}} | ||
*{{IETF RFC|2898|link=no}} – Specification of PKCS{{nbsp}}#5 v2.0. | *{{IETF RFC|2898|link=no}} – Specification of PKCS{{nbsp}}#5 v2.0. | ||
*{{IETF RFC|6070|link=no}} – Test vectors for पीबीकेडीएफ2 with | *{{IETF RFC|6070|link=no}} – Test vectors for पीबीकेडीएफ2 with एचएमएसी-SHA1. | ||
*[http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf NIST Special Publication 800-132 Recommendation for Password-Based Key Derivation] | *[http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf NIST Special Publication 800-132 Recommendation for Password-Based Key Derivation] | ||
Revision as of 10:43, 30 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)
कहाँ:
- PRF आउटपुट लंबाई के साथ दो पैरामीटर का छद्म यादृच्छिक फलन है hLen (उदा., एक बंद एचएमएसी)
- Password मास्टर पासवर्ड है जिससे व्युत्पन्न कुंजी उत्पन्न होती है
- Salt बिट्स का अनुक्रम है, जिसे साल्ट (क्रिप्टोग्राफी) के रूप में जाना जाता है
- c वांछित पुनरावृत्तियों की संख्या है
- dkLen व्युत्पन्न कुंजी की वांछित बिट-लंबाई है
- DK उत्पन्न व्युत्पन्न कुंजी है
प्रत्येक hLen-बिट ब्लॉक {{math|Ti}व्युत्पन्न कुंजी का } DK, की गणना निम्नानुसार की जाती है (के साथ + अंकन स्ट्रिंग संयोजन):
- DK = T1 + T2 + ⋯ + Tdklen/hlen
- Ti = F(Password, Salt, c, i)
कार्यक्रम F xor है (^) श्रृंखलित PRFs के पुनरावृत्तियों का। PRF का पहला पुनरावृत्ति PRF कुंजी के रूप में पासवर्ड का उपयोग करता है और साल्ट के साथ जुड़ा हुआ है i इनपुट के रूप में बिग-एंडियन 32-बिट पूर्णांक के रूप में एन्कोड किया गया। (ध्यान दें कि i एक 1-आधारित इंडेक्स है।) PRF के बाद के पुनरावृत्तियों में PRF कुंजी के रूप में पासवर्ड का उपयोग किया जाता है और इनपुट के रूप में पिछले PRF गणना का आउटपुट:
- 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
इसलिए, एचएमएसी-SHA1 का उपयोग करते समय, इसे SHA-1 का उपयोग करके प्री-हैश किया जाता है:
- SHA1 (हेक्स):
65426b585154667542717027635463617226672a
ASCII में किसका प्रतिनिधित्व किया जा सकता है:
- SHA1 (ASCII):
eBkXQTfuBqp'cTcar&g*
इसका मतलब है कि साल्ट या पुनरावृत्तियों की परवाह किए बिना, पीबीकेडीएफ2-एचएमएसी-SHA1 पासवर्ड के लिए समान कुंजी बाइट उत्पन्न करेगा:
- plnlrtfpijpuhqylxbgqiiyipeyxvfsavzgxbbcfusqkozwpngsyjqlmjsytrmd
- eBkXQTfuBqp'cTcar&g*
उदाहरण के लिए, का उपयोग कर:
- पीआरएफ: एचएमएसी-SHA1
- साल्ट: A009C1A485912C6AE630D3E744240B04
- पुनरावृत्तियाँ: 1,000
- व्युत्पन्न कुंजी लंबाई: 16 बाइट्स
निम्नलिखित दो फलन कॉल:
पीबीकेडीएफ2-एचएमएसी-SHA1( plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd , ...) पीबीकेडीएफ2-एचएमएसी-SHA1(eBkXQTfuBqp'cTcar&g* , ...)
समान व्युत्पन्न कुंजी बाइट उत्पन्न करेगा (17EB4014C8C461C300E9B61518B9A18B
). ये व्युत्पन्न कुंजी टकराव एक सुरक्षा भेद्यता का प्रतिनिधित्व नहीं करते हैं - क्योंकि पासवर्ड का हैश उत्पन्न करने के लिए किसी को अभी भी मूल पासवर्ड पता होना चाहिए।[11]
== पीबीकेडीएफ2 == के विकल्प पीबीकेडीएफ2 की एक कमजोरी यह है कि जबकि इसकी पुनरावृत्तियों की संख्या को समायोजित किया जा सकता है ताकि यह मनमाने ढंग से बड़ी मात्रा में कंप्यूटिंग समय ले सके, इसे एक छोटे सर्किट और बहुत कम रैम के साथ लागू किया जा सकता है, जो एप्लिकेशन-विशिष्ट एकीकृत का उपयोग करके क्रूर-बल हमले करता है। सर्किट या ग्राफ़िक्स प्रोसेसिंग युनिट अपेक्षाकृत सस्ते।[12] bcrypt पासवर्ड हैशिंग फलन के लिए बड़ी मात्रा में RAM की आवश्यकता होती है (लेकिन अभी भी अलग से ट्यून करने योग्य नहीं है, यानी CPU समय की दी गई राशि के लिए निश्चित है) और इस तरह के हमलों के खिलाफ थोड़ा मजबूत है,[13] जबकि अधिक आधुनिक लिखी हुई कहानी कुंजी व्युत्पन्न फलन मनमाने ढंग से बड़ी मात्रा में मेमोरी का उपयोग कर सकता है और इसलिए एएसआईसी और जीपीयू हमलों के लिए अधिक प्रतिरोधी है।[12]
2013 में, अधिक प्रतिरोधी दृष्टिकोण विकसित करने के लिए पासवर्ड हैशिंग प्रतियोगिता (PHC) आयोजित की गई थी। 20 जुलाई 2015 को Argon2 को अंतिम PHC विजेता के रूप में चुना गया था, जिसमें चार अन्य पासवर्ड हैशिंग योजनाओं को विशेष मान्यता दी गई थी: Catena, Lyra2, Yescrypt और Makwa।[14] एक अन्य विकल्प गुब्बारा हैशिंग है, जिसकी पासवर्ड नीति#NIST दिशानिर्देशों में अनुशंसा की गई है।[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