क्रिप्ट (सी): Difference between revisions
No edit summary |
No edit summary |
||
Line 3: | Line 3: | ||
{{DISPLAYTITLE:crypt (C)}} | {{DISPLAYTITLE:crypt (C)}} | ||
क्रिप्ट एक सी पॉज़िक्स लाइब्रेरी प्रकार्य है। यह सामान्यतः उपयोगकर्ता खाता पासवर्ड के [[क्रिप्टोग्राफ़िक हैश फ़ंक्शन|गूढ़लेखिकी हैश प्रकार्य]] की गणना करने के लिए उपयोग किया जाता है। प्रकार्य एक टेक्स्ट स्ट्रिंग को | क्रिप्ट एक सी पॉज़िक्स लाइब्रेरी प्रकार्य है। यह सामान्यतः उपयोगकर्ता खाता पासवर्ड के [[क्रिप्टोग्राफ़िक हैश फ़ंक्शन|गूढ़लेखिकी हैश प्रकार्य]] की गणना करने के लिए उपयोग किया जाता है। प्रकार्य एक टेक्स्ट स्ट्रिंग को निर्गम करता है जो [[नमक (क्रिप्टोग्राफी)|साल्ट (गूढ़लेखिकी)]] को भी [[कोड]] करता है (सामान्यतः पहले दो वर्ण स्वयं साल्ट होते हैं और शेष हैशेड परिणाम होता है), और उपयोग किए गए हैश एल्गोरिदम की पहचान करता है (पारंपरिक रूप से नीचे समझाया गया है)। यह निर्गम स्ट्रिंग एक पासवर्ड अभिलेखबद्ध बनाता है, जो सामान्यतः टेक्स्ट फ़ाइल में संग्रहीत होता है। | ||
अधिक औपचारिक रूप से, क्रिप्ट यूनिक्स सिस्टम पर पासवर्ड सत्यापन और भंडारण के लिए गूढ़लेखिकी कुंजी व्युत्पत्ति प्रकार्य प्रदान करता है। | अधिक औपचारिक रूप से, क्रिप्ट यूनिक्स सिस्टम पर पासवर्ड सत्यापन और भंडारण के लिए गूढ़लेखिकी कुंजी व्युत्पत्ति प्रकार्य प्रदान करता है। | ||
Line 12: | Line 12: | ||
== विवरण == | == विवरण == | ||
यह एक ही क्रिप्ट प्रकार्य का उपयोग भंडारण के लिए एक नवीन हैश उत्पन्न करने के लिए और तुलना के लिए अभिलेखबद्ध किए गए साल्ट ( | यह एक ही क्रिप्ट प्रकार्य का उपयोग भंडारण के लिए एक नवीन हैश उत्पन्न करने के लिए और तुलना के लिए अभिलेखबद्ध किए गए साल्ट (गूढ़लेखिकी) के साथ एक प्रस्तावित पासवर्ड को हैश करने के लिए भी किया जाता है। | ||
क्रिप्ट लाइब्रेरी | क्रिप्ट लाइब्रेरी परिच्छेदन के आधुनिक यूनिक्स कार्यान्वयन विभिन्न प्रकार की हैश योजनाओं का समर्थन करते हैं। मॉड्यूलर क्रिप्ट प्रारूप नामक वास्तविक मानक के बाद, परिणामस्वरूप हैशटेक्स्ट में उपयोग किए जाने वाले विशेष हैश एल्गोरिदम को एक अद्वितीय कोड प्रीफिक्स द्वारा पहचाना जा सकता है।<ref> | ||
Simson Garfinkel, Alan Schwartz, Gene Spafford. | Simson Garfinkel, Alan Schwartz, Gene Spafford. | ||
[https://books.google.com/books?id=50maN7VmpusC&q=Modular+Crypt+Format "Practical Unix & Internet Security"]. | [https://books.google.com/books?id=50maN7VmpusC&q=Modular+Crypt+Format "Practical Unix & Internet Security"]. | ||
Line 22: | Line 22: | ||
</ref><ref name=":0">{{cite web|url=http://pythonhosted.org/passlib/modular_crypt_format.html|title=Modular Crypt Format — Passlib v1.7.1 Documentation|website=Pythonhosted.org|access-date=2 December 2018}}</ref><ref>{{cite web|url=https://github.com/ademarre/binary-mcf|title=ademarre/binary-mcf|website=GitHub.com|access-date=2 December 2018}}</ref> | </ref><ref name=":0">{{cite web|url=http://pythonhosted.org/passlib/modular_crypt_format.html|title=Modular Crypt Format — Passlib v1.7.1 Documentation|website=Pythonhosted.org|access-date=2 December 2018}}</ref><ref>{{cite web|url=https://github.com/ademarre/binary-mcf|title=ademarre/binary-mcf|website=GitHub.com|access-date=2 December 2018}}</ref> | ||
<code>crypt()</code | <code>crypt()</code> लाइब्रेरी प्रकार्य [[पर्ल]],<ref>{{cite web|url=http://perldoc.perl.org/functions/crypt.html|title=क्रिप्ट - perldoc.perl.org|website=Perldoc.perl.org|access-date=2 December 2018}}</ref> [[पीएचपी]],<ref>{{cite web|url=http://us.php.net/manual/en/function.crypt.php|title=PHP: crypt - Manual|website=Us.php.net|access-date=2 December 2018}}</ref> पाईक (प्रोग्रामिंग भाषा),<ref>{{cite web |url=http://pike.ida.liu.se/generated/manual/modref/ex/predef_3A_3A/crypt.html |title=तहखाना ()|access-date=2013-02-09 |archive-url=https://web.archive.org/web/20121002215125/http://pike.ida.liu.se/generated/manual/modref/ex/predef_3A_3A/crypt.html |archive-date=2012-10-02 }}</ref> [[पायथन (प्रोग्रामिंग भाषा)]]<ref>{{cite web|url=https://docs.python.org/library/crypt.html|title=crypt — Function to check Unix passwords — Python 3.7.1 documentation|website=Docs.python.org|access-date=2 December 2018}}</ref> (यद्यपि अब इसे 3.11 के रूप में हटा दिया गया है), और [[रूबी (प्रोग्रामिंग भाषा)]]<ref>{{cite web|url=http://ruby-doc.org/core/classes/String.html#M001174|title=Class: String (Ruby 2.5.3)|website=Ruby-doc.org|access-date=2 December 2018}}</ref> प्रोग्रामिंग भाषाओं में भी सम्मिलित है। | ||
== क्रिप्ट | == क्रिप्ट द्वारा समर्थित प्रमुख व्युत्पत्ति प्रकार्य == | ||
समय के साथ विभिन्न एल्गोरिदम | समय के साथ विभिन्न एल्गोरिदम प्रस्तुत किए गए हैं। पिछड़े संगतता को सक्षम करने के लिए, प्रत्येक योजना ने [[पासवर्ड हैश]] के क्रमांकन के कुछ सम्मेलन का उपयोग करना प्रारम्भ किया जिसे बाद में मॉड्यूलर क्रिप्ट प्रारूप (एमसीएफ) कहा गया।<ref name=":0" /> वास्तविक एमसीएफ मानक से पहले जनित किया गया प्राचीन क्रिप्ट(3) हैश एक योजना से दूसरी योजना में भिन्न हो सकता है। [[पासवर्ड हैशिंग प्रतियोगिता]] के समय मॉड्यूलर क्रिप्ट प्रारूप का एक ठीक रूप से परिभाषित उपसमूह बनाया गया था।<ref name=":0" /> प्रारूप को इस प्रकार परिभाषित किया गया है:<ref name="phc-string-format">{{cite web | url=https://github.com/P-H-C/phc-string-format/blob/master/phc-sf-spec.md | title=पीएचसी स्ट्रिंग प्रारूप|website=Github|author=Password Hash Competition}}</ref> | ||
<code>$<id>[$<param>=<value>(,<param>=<value>)*][$<salt>[$<hash>]]</code> | <code>$<id>[$<nowiki><param></nowiki>=<value>(,<nowiki><param></nowiki>=<value>)*][$<salt>[$<hash>]]</code> | ||
* <code>id</code>: हैशिंग | जहाँ | ||
* <code>param</code> नाम और | |||
* <code>salt</code>: मूलांक-64 | * <code>id</code>: हैशिंग एल्गोरिदम का प्रतिनिधित्व करने वाला एक पहचानकर्ता (जैसे कि [[MD5|एमडी5]] के लिए 1, [[SHA-2|एसएचए-2]] आदि के लिए 5) | ||
* <code>hash</code>: पासवर्ड और साल्ट को हैश करने का मूलांक -64 | * <code>param</code> नाम और उसकी <code>value</code>: हैश जटिलता पैरामीटर, जैसे आवर्तन/पुनरावृत्तियों की संख्या | ||
क्रिप्ट में रेडिक्स-64 | * <code>salt</code>: मूलांक-64 विकोडित साल्ट (गूढ़लेखिकी) | ||
* <code>hash</code>: पासवर्ड और साल्ट को हैश करने का मूलांक -64 विकोडित परिणाम | |||
क्रिप्ट में रेडिक्स-64 विकोडन को बी64 कहा जाता है और वर्णमाला का उपयोग करता है <code>./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz</code> जो अधिक सामान्य बेस64 कार्यान्वयन और इतिहास से भिन्न है | |||
{| class="wikitable" | {| class="wikitable" | ||
! | !पद्धति आईडी | ||
! | !रूपरेखा | ||
! | !उदाहरण | ||
|- | |- | ||
| | | | ||
|[[Data Encryption Standard| | |[[Data Encryption Standard|डीईएस]] | ||
|<code>Kyq4bCxAXJkbg</code> | |<code>Kyq4bCxAXJkbg</code> | ||
|- | |- | ||
|{{mono|_}} | |{{mono|_}} | ||
|[[Berkeley Software Design| | |[[Berkeley Software Design|बीएसडीआई]] | ||
|<code>_EQ0.jzhSVeUyoSqLupI</code> | |<code>_EQ0.jzhSVeUyoSqLupI</code> | ||
|- | |- | ||
|{{mono|1}} | |{{mono|1}} | ||
| | |एमडी5 | ||
|<code>$1$etNnh7FA$OlM7eljE/B7F1J4XYNnk81</code> | |<code>$1$etNnh7FA$OlM7eljE/B7F1J4XYNnk81</code> | ||
|- | |- | ||
|{{mono|2}}, {{mono|2a}}, {{mono|2b}}, {{mono|2x}}, {{mono|2y}} | |{{mono|2}}, {{mono|2a}}, {{mono|2b}}, {{mono|2x}}, {{mono|2y}} | ||
|[[bcrypt]] | |[[bcrypt|बीक्रिप्ट]] | ||
|<code>$2a$10$VIhIOofSMqgdGlL4wzE//e.77dAQGqntF/1dT7bqCrVtquInWy2qi</code> | |<code>$2a$10$VIhIOofSMqgdGlL4wzE//e.77dAQGqntF/1dT7bqCrVtquInWy2qi</code> | ||
|- | |- | ||
|{{mono|3}} | |{{mono|3}} | ||
|[[NTLM Authentication| | |[[NTLM Authentication|एनटीहैश]] | ||
|<code>$3$$8846f7eaee8fb117ad06bdd830b7586c</code> | |<code>$3$$8846f7eaee8fb117ad06bdd830b7586c</code> | ||
|- | |- | ||
|{{mono|5}} | |{{mono|5}} | ||
|[[SHA-2| | |[[SHA-2|एसएचए-256]] | ||
|<code>$5$9ks3nNEqv31FX.F$gdEoLFsCRsn/WRN3wxUnzfeZLoooVlzeF4WjLomTRFD</code> | |<code>$5$9ks3nNEqv31FX.F$gdEoLFsCRsn/WRN3wxUnzfeZLoooVlzeF4WjLomTRFD</code> | ||
|- | |- | ||
|{{mono|6}} | |{{mono|6}} | ||
|[[SHA-2| | |[[SHA-2|एसएचए-512]] | ||
|<code>$6$qoE2letU$wWPRl.PVczjzeMVgjiA8LLy2nOyZbf7Amj3qLIL978o18gbMySdKZ7uepq9tmMQXxyTIrS12Pln.2Q/6Xscao0</code> | |<code>$6$qoE2letU$wWPRl.PVczjzeMVgjiA8LLy2nOyZbf7Amj3qLIL978o18gbMySdKZ7uepq9tmMQXxyTIrS12Pln.2Q/6Xscao0</code> | ||
|- | |- | ||
|{{mono|7}} | |{{mono|7}} | ||
| | |एसक्रिप्ट | ||
|<code>$7$DU..../....2Q9obwLhin8qvQl6sisAO/$ | |<code>$7$DU..../....2Q9obwLhin8qvQl6sisAO/$एसएचएyJj/JBdcuD4lJ1AxiwCo9e5XSi8TcINcmyID12i8</code> | ||
|- | |- | ||
|{{mono|8 (Cisco)}} | |{{mono|8 (Cisco)}} | ||
|[[ | |[[SHA256|एसएचए256]] के साथ[[SHA256|पीबीकेडीएफ2]] | ||
|<code>$8$mTj4RZG8N9ZDOk$elY/asfm8kD3iDmkBe3hD2r4xcA/0oWS5V3os.O91u.</code> | |<code>$8$mTj4RZG8N9ZDOk$elY/asfm8kD3iDmkBe3hD2r4xcA/0oWS5V3os.O91u.</code> | ||
|- | |- | ||
|{{mono|8 (JunOS)}} | |{{mono|8 (JunOS)}} | ||
|[[PBKDF2]] | |[[PBKDF2|पीबीकेडीएफ2]] | ||
|<code>$8$crypt-algo$hash-algo$iterations$salt$iv$tag$encrypted</code> | |<code>$8$crypt-algo$hash-algo$iterations$salt$iv$tag$encrypted</code> | ||
<code>$8$aes256-gcm$hmac- | <code>$8$aes256-gcm$hmac-एसएचए2-256$100$y/4YMC4YDLU$fzYDI4jjN6YCyQsYLsaf8A$Ilu4jLcZarD9YnyD /Hejww$okhBlc0cGakSqYxKww</code> | ||
|- | |- | ||
|{{mono|gy}} | |{{mono|gy}} | ||
| | |गोस्त-यसक्रिप्ट | ||
|<code>$gy$jCT$HM87v.7RwpQLba8fDjNSk1$VgqS7k2OZWhFbAJVBye2vaA7ex/1VtU3a5fmL8Wv/26</code> | |<code>$gy$jCT$HM87v.7RwpQLba8fDjNSk1$VgqS7k2OZWhFbAJVBye2vaA7ex/1VtU3a5fmL8Wv/26</code> | ||
|- | |- | ||
|{{mono|md5}} | |{{mono|md5}} | ||
| | |सोलारिस एमडी5 | ||
|<code>$ | |<code>$एमडी5,rounds=5000$GUBv0xjJ$$mSwgIswdjlTY0YxV7HBVm0</code> | ||
|- | |- | ||
|{{mono|sha1}} | |{{mono|sha1}} | ||
|[[ | |[[SHA-1|एसएचए-1]] | ||
|<code>$ | के साथ[[PBKDF1|पीबीकेडीएफ1]] | ||
|<code>$एसएचए1$40000$jtNX3nZ2$hBNaIXkt4wBI2o5rsi8KejSjNqIq</code> | |||
|- | |- | ||
|{{mono|y}} | |{{mono|y}} | ||
|[[yescrypt]] | |[[yescrypt|यसक्रिप्ट]] | ||
|<code>$y$j9T$F5Jx5fExrKuPp53xLKQ..1$X3DX6M94c7o.9agCG9G317fhZg9SqC.5i5rd.RhAtQ7</code> | |<code>$y$j9T$F5Jx5fExrKuPp53xLKQ..1$X3DX6M94c7o.9agCG9G317fhZg9SqC.5i5rd.RhAtQ7</code> | ||
|} | |} | ||
पीएचसी उपसमूह में अधिकांश एमसीएफ हैश सम्मिलित हैं। कई अतिरिक्त एप्लिकेशन-परिभाषित विधियां स्थित हैं।<ref name=":0" /> | |||
=== एक कुंजी | === एक कुंजी के रूप में पासवर्ड का उपयोग करके मूल कार्यान्वयन === | ||
क्रिप्ट() लाइब्रेरी प्रकार्य का मूल कार्यान्वयन<ref name="passwd">{{cite web | url=https://www.bell-labs.com/usr/dmr/www/passwd.ps | title=Password Security: A Case History. | work=Bell Laboratories |author1=Morris, Robert |author2=Thompson, Ken | date=1978-04-03 | access-date=2013-12-17 }}</ref> | तीसरे संस्करण यूनिक्स में<ref>{{cite web | url=http://minnie.tuhs.org/cgi-bin/utree.pl?file=V3/man/man3/crypt.3 | title=crypt – password encoding | work=UNIX Third Edition Programmers' Manual | date = 1973-01-15 }}</ref> क्रिप्ट() लाइब्रेरी प्रकार्य का मूल कार्यान्वयन<ref name="passwd">{{cite web | url=https://www.bell-labs.com/usr/dmr/www/passwd.ps | title=Password Security: A Case History. | work=Bell Laboratories |author1=Morris, Robert |author2=Thompson, Ken | date=1978-04-03 | access-date=2013-12-17 }}</ref> ने [[M-209|एम-209]] सिफर मशीन का अनुकरण किया। एक कुंजी के साथ [[पासवर्ड]] को एन्क्रिप्ट करने के अतिरिक्त, जो पासवर्ड को गूढलेखित मान और कुंजी से पुनर्प्राप्त करने की अनुमति देता, उसने पासवर्ड को एक कुंजी के रूप में उपयोग किया, और पासवर्ड डेटाबेस में इस कुंजी के साथ पासवर्ड को एन्क्रिप्ट करने का परिणाम था। | ||
=== पारंपरिक डीईएस-आधारित योजना === | === पारंपरिक डीईएस-आधारित योजना === | ||
मूल पासवर्ड एन्क्रिप्शन योजना बहुत तेज़ पाई गई और इस प्रकार सबसे संभावित पासवर्डों की क्रूर बल गणना के अधीन थी।<ref name="passwd"/>सातवें संस्करण यूनिक्स में,<ref>{{cite web | url=http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/man/man3/crypt.3 | title=crypt, setkey, encrypt – DES encryption | work=UNIX Seventh Edition Programmers' Manual | date = 1979 }}</ref> योजना को [[डेटा एन्क्रिप्शन मानक]] | मूल पासवर्ड एन्क्रिप्शन योजना बहुत तेज़ पाई गई और इस प्रकार सबसे संभावित पासवर्डों की क्रूर बल गणना के अधीन थी।<ref name="passwd"/>सातवें संस्करण यूनिक्स में,<ref>{{cite web | url=http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/man/man3/crypt.3 | title=crypt, setkey, encrypt – DES encryption | work=UNIX Seventh Edition Programmers' Manual | date = 1979 }}</ref> योजना को [[डेटा एन्क्रिप्शन मानक]] एल्गोरिदम के एक संशोधित रूप में बदल दिया गया था। इस परिवर्तन का एक लक्ष्य एन्क्रिप्शन को धीमा करना था। इसके अलावा, एल्गोरिदम में एक 12-बिट साल्ट (गूढ़लेखिकी) सम्मिलित है ताकि यह सुनिश्चित किया जा सके कि एक हमलावर को एक साथ पूरे पासवर्ड डेटाबेस को लक्षित करने में सक्षम होने के विपरीत प्रत्येक पासवर्ड को स्वतंत्र रूप से क्रैक करने के लिए मजबूर किया जाएगा। | ||
विस्तार से, उपयोगकर्ता के पासवर्ड को आठ अक्षरों तक छोटा कर दिया जाता है, और उनमें से प्रत्येक को केवल 7-बिट्स तक सीमित कर दिया जाता है; यह 56-बिट डेस कुंजी बनाता है। उस कुंजी का उपयोग तब एक ऑल-बिट्स-जीरो ब्लॉक को एन्क्रिप्ट करने के लिए किया जाता है, और फिर सिफरटेक्स्ट को उसी कुंजी के साथ फिर से एन्क्रिप्ट किया जाता है, और इसी | विस्तार से, उपयोगकर्ता के पासवर्ड को आठ अक्षरों तक छोटा कर दिया जाता है, और उनमें से प्रत्येक को केवल 7-बिट्स तक सीमित कर दिया जाता है; यह 56-बिट डेस कुंजी बनाता है। उस कुंजी का उपयोग तब एक ऑल-बिट्स-जीरो ब्लॉक को एन्क्रिप्ट करने के लिए किया जाता है, और फिर सिफरटेक्स्ट को उसी कुंजी के साथ फिर से एन्क्रिप्ट किया जाता है, और इसी प्रकार कुल 25 डेस एन्क्रिप्शन के लिए। एन्क्रिप्शन एल्गोरिदम को खराब करने के लिए 12-बिट साल्ट का उपयोग किया जाता है, इसलिए क्रिप्ट() को लागू करने के लिए मानक डीईएस कार्यान्वयन का उपयोग नहीं किया जा सकता है। साल्ट और अंतिम सिफरटेक्स्ट को [[बेस 64]] के रूप में प्रिंट करने योग्य स्ट्रिंग में एन्कोड किया गया है। | ||
यह तकनीकी रूप से एन्क्रिप्शन नहीं है क्योंकि डेटा (सभी बिट्स शून्य) को गुप्त नहीं रखा जा रहा है; यह व्यापक रूप से पहले से सभी के लिए जाना जाता है। | यह तकनीकी रूप से एन्क्रिप्शन नहीं है क्योंकि डेटा (सभी बिट्स शून्य) को गुप्त नहीं रखा जा रहा है; यह व्यापक रूप से पहले से सभी के लिए जाना जाता है। यद्यपि, डीईएस की एक विशेषता यह है कि यह [[ज्ञात सादा पाठ]] स्थितियों में भी की रिकवरी के लिए बहुत प्रतिरोधी है। यह सैद्धांतिक रूप से संभव है कि दो अलग-अलग पासवर्ड का परिणाम एक ही हैश में हो सकता है। इस प्रकार पासवर्ड को कभी भी डिक्रिप्ट नहीं किया जाता है: इसका उपयोग केवल परिणाम की गणना करने के लिए किया जाता है, और मिलान के परिणामों को प्रमाण माना जाता है कि पासवर्ड समान थे। | ||
इस पद्धति का लाभ यह रहा है कि हैशटेक्स्ट को सिस्टम प्रशासकों या अन्य उपयोगकर्ताओं को संबंधित प्लेनटेक्स्ट पासवर्ड को उजागर किए बिना यूनिक्स सिस्टम के बीच संग्रहीत और कॉपी किया जा सकता है। इस सुवाह्यता ने 30 से अधिक वर्षों तक कंप्यूटिंग आर्किटेक्चर की कई पीढ़ियों और कई विक्रेताओं से यूनिक्स के कई संस्करणों में काम किया है। | इस पद्धति का लाभ यह रहा है कि हैशटेक्स्ट को सिस्टम प्रशासकों या अन्य उपयोगकर्ताओं को संबंधित प्लेनटेक्स्ट पासवर्ड को उजागर किए बिना यूनिक्स सिस्टम के बीच संग्रहीत और कॉपी किया जा सकता है। इस सुवाह्यता ने 30 से अधिक वर्षों तक कंप्यूटिंग आर्किटेक्चर की कई पीढ़ियों और कई विक्रेताओं से यूनिक्स के कई संस्करणों में काम किया है। | ||
==== पारंपरिक योजना की कमजोरियां ==== | ==== पारंपरिक योजना की कमजोरियां ==== | ||
पारंपरिक डीईएस-आधारित क्रिप्ट | पारंपरिक डीईएस-आधारित क्रिप्ट एल्गोरिदम मूल रूप से चुना गया था क्योंकि डीईएस ज्ञात प्लेनटेक्स्ट हमलों के सामने भी कुंजी पुनर्प्राप्ति के लिए प्रतिरोधी था, और क्योंकि यह कम्प्यूटेशनल रूप से महंगा था। शुरुआती यूनिक्स मशीनों पर पासवर्ड हैश की गणना करने में पूरे एक सेकंड का समय लगता था। इसने उस युग में शब्दकोष के हमलों के लिए यथोचित प्रतिरोधी बना दिया। उस समय पासवर्ड हैश सामान्यतः एक खाता फ़ाइल (<code>[[/etc/passwd]]</code>) जो सिस्टम पर किसी के लिए भी पठनीय था। (इस खाता फ़ाइल का उपयोग उपयोगकर्ता आईडी नंबरों को नामों में, और उपयोगकर्ता नामों को पूर्ण नामों आदि में मैप करने के लिए भी किया गया था)। | ||
उस समय से तीन दशकों में, कंप्यूटर बहुत अधिक शक्तिशाली हो गए हैं। मूर के नियम को सामान्यतः सही माना गया है, इसलिए किसी दिए गए वित्तीय निवेश के लिए उपलब्ध कंप्यूटर की गति और क्षमता यूनिक्स के पहली बार लिखे जाने के बाद से 20 गुना से अधिक हो गई है। इसने लंबे समय से डीईएस-आधारित एल्गोरिदम को शब्दकोश हमलों के प्रति संवेदनशील बना दिया है, और यूनिक्स और यूनिक्स जैसी प्रणालियों जैसे कि [[लिनक्स]] ने शैडो पासवर्ड का उपयोग किया है। लंबे समय तक शैडो फाइलें, खाता फ़ाइल से केवल पासवर्ड हैश मानों को माइग्रेट करना (<code>/etc/passwd</code>) और एक फ़ाइल में (पारंपरिक रूप से नामित <code>[[/etc/shadow]]</code>) जिसे केवल विशेषाधिकार प्राप्त प्रक्रियाओं द्वारा ही पढ़ा जा सकता है। | उस समय से तीन दशकों में, कंप्यूटर बहुत अधिक शक्तिशाली हो गए हैं। मूर के नियम को सामान्यतः सही माना गया है, इसलिए किसी दिए गए वित्तीय निवेश के लिए उपलब्ध कंप्यूटर की गति और क्षमता यूनिक्स के पहली बार लिखे जाने के बाद से 20 गुना से अधिक हो गई है। इसने लंबे समय से डीईएस-आधारित एल्गोरिदम को शब्दकोश हमलों के प्रति संवेदनशील बना दिया है, और यूनिक्स और यूनिक्स जैसी प्रणालियों जैसे कि [[लिनक्स]] ने शैडो पासवर्ड का उपयोग किया है। लंबे समय तक शैडो फाइलें, खाता फ़ाइल से केवल पासवर्ड हैश मानों को माइग्रेट करना (<code>/etc/passwd</code>) और एक फ़ाइल में (पारंपरिक रूप से नामित <code>[[/etc/shadow|/etc/एसएचएdow]]</code>) जिसे केवल विशेषाधिकार प्राप्त प्रक्रियाओं द्वारा ही पढ़ा जा सकता है। | ||
पासवर्ड तोड़ने की कम्प्यूटेशनल लागत को बढ़ाने के लिए, कुछ यूनिक्स साइटों ने निजी तौर पर तदर्थ आधार पर एन्क्रिप्शन | पासवर्ड तोड़ने की कम्प्यूटेशनल लागत को बढ़ाने के लिए, कुछ यूनिक्स साइटों ने निजी तौर पर तदर्थ आधार पर एन्क्रिप्शन आवर्तन की संख्या में वृद्धि करना प्रारम्भ कर दिया।{{Citation needed|date=July 2011}} इसका उनके बनाने का साइड इफेक्ट था <code>crypt()</code> मानक के साथ असंगत <code>crypt()</code>: हैश का शाब्दिक रूप समान था, लेकिन अब एक अलग एल्गोरिदम का उपयोग करके गणना की गई थी। मानक ऑल-बिट्स-शून्य से प्रारंभिक ब्लॉक को संशोधित करके कुछ साइटों ने इस असंगति प्रभाव का भी लाभ उठाया।{{Citation needed|date=July 2011}} इससे हैशिंग की लागत में वृद्धि नहीं हुई, लेकिन इसका मतलब यह था कि मानक के आधार पर प्रीकंप्यूटेड हैश शब्दकोश {{mono|crypt()}} लागू नहीं किया जा सका। | ||
=== बीएसडीआई ने डीईएस-आधारित योजना का विस्तार किया === | === बीएसडीआई ने डीईएस-आधारित योजना का विस्तार किया === | ||
[[बर्कले सॉफ्टवेयर डिजाइन]] ने क्लासिक डेस-आधारित योजना में मामूली संशोधन किया। बीएसडीआई ने साल्ट को 24 बिट्स तक बढ़ाया और | [[बर्कले सॉफ्टवेयर डिजाइन]] ने क्लासिक डेस-आधारित योजना में मामूली संशोधन किया। बीएसडीआई ने साल्ट को 24 बिट्स तक बढ़ाया और आवर्तन की संख्या को चर बना दिया (2 तक<sup>24</sup>-1). आवर्तन की चुनी हुई संख्या संग्रहीत पासवर्ड हैश में एन्कोड की गई है, जो साइट द्वारा मूल योजना द्वारा उपयोग किए जाने वाले आवर्तन की संख्या को संशोधित करने पर उत्पन्न होने वाली असंगति से बचाती है। अंडरस्कोर से प्रारम्भ करके इन हैश की पहचान की जाती है (<code>_</code>), जिसके बाद 4 वर्ण आवर्तन की संख्या का प्रतिनिधित्व करते हैं, फिर साल्ट के लिए 4 वर्ण। | ||
बीएसडीआई एल्गोरिदम भी लंबे पासवर्ड का समर्थन करता है, डीईएस का उपयोग करके प्रारंभिक लंबे पासवर्ड को मूल एल्गोरिदम द्वारा समर्थित आठ 7-बिट बाइट्स तक नीचे कर देता है। | बीएसडीआई एल्गोरिदम भी लंबे पासवर्ड का समर्थन करता है, डीईएस का उपयोग करके प्रारंभिक लंबे पासवर्ड को मूल एल्गोरिदम द्वारा समर्थित आठ 7-बिट बाइट्स तक नीचे कर देता है। | ||
=== | === एमडी5-आधारित योजना === | ||
[[Poul-Henning Kamp]] ने | [[Poul-Henning Kamp]] ने एमडी5 संदेश डाइजेस्ट एल्गोरिदम पर आधारित एक बारोक और (उस समय) कम्प्यूटेशनल रूप से महंगा एल्गोरिदम डिज़ाइन किया। एमडी5 स्वयं पासवर्ड हैश के लिए ठीक गूढ़लेखिकी ताकत प्रदान करेगा, लेकिन यह प्रदान की जाने वाली ताकत के सापेक्ष गणना करने के लिए काफी तेज़ डिज़ाइन किया गया है। शब्दकोश हमलों को धीमा करने के लिए, क्रिप्ट () योजना की गणना करने के लिए महंगा होने के लिए डिज़ाइन किया गया है। एमडी5 पासवर्ड हैश का प्रिंट करने योग्य रूप से प्रारम्भ होता है <code>$1$</code>. | ||
यह योजना उपयोगकर्ताओं को किसी भी लम्बाई के पासवर्ड की अनुमति देती है, और वे अपने प्लेटफ़ॉर्म द्वारा समर्थित किसी भी वर्ण का उपयोग कर सकते हैं (केवल 7-बिट ASCII नहीं)। (व्यावहारिक रूप से कई कार्यान्वयन पासवर्ड की लंबाई को सीमित करते हैं, लेकिन वे सामान्यतः किसी भी व्यक्ति द्वारा टाइप करने के इच्छुक होने की तुलना में लंबे समय तक पासवर्ड का समर्थन करते हैं।) साल्ट भी एक मनमाना स्ट्रिंग है, जो केवल वर्ण सेट विचारों द्वारा सीमित है। | यह योजना उपयोगकर्ताओं को किसी भी लम्बाई के पासवर्ड की अनुमति देती है, और वे अपने प्लेटफ़ॉर्म द्वारा समर्थित किसी भी वर्ण का उपयोग कर सकते हैं (केवल 7-बिट ASCII नहीं)। (व्यावहारिक रूप से कई कार्यान्वयन पासवर्ड की लंबाई को सीमित करते हैं, लेकिन वे सामान्यतः किसी भी व्यक्ति द्वारा टाइप करने के इच्छुक होने की तुलना में लंबे समय तक पासवर्ड का समर्थन करते हैं।) साल्ट भी एक मनमाना स्ट्रिंग है, जो केवल वर्ण सेट विचारों द्वारा सीमित है। | ||
सबसे पहले पासफ़्रेज़ और साल्ट को एक साथ हैश किया जाता है, जिससे एक | सबसे पहले पासफ़्रेज़ और साल्ट को एक साथ हैश किया जाता है, जिससे एक एमडी5 संदेश डाइजेस्ट प्राप्त होता है। फिर एक नए डाइजेस्ट का निर्माण किया जाता है, पासफ़्रेज़, साल्ट और पहले डाइजेस्ट को एक साथ मिलाते हुए, सभी जटिल रूप में। फिर इस डाइजेस्ट को एक प्रकार्य के एक हजार पुनरावृत्तियों के माध्यम से पारित किया जाता है जो इसे पासफ़्रेज़ और साल्ट के साथ एक प्रकार से दोहराता है जो कि आवर्तन के बीच भिन्न होता है। इन आवर्तन के अंतिम का निर्गम परिणामी पासफ़्रेज़ हैश है। | ||
निश्चित पुनरावृति गणना के कारण इस योजना ने कम्प्यूटेशनल व्यय को खो दिया है जो एक बार आनंद लिया था और अब चक्रों की परिवर्तनीय संख्या का समर्थन किया जाता है। जून 2012 में, पॉल-हेनिंग काम्प ने | निश्चित पुनरावृति गणना के कारण इस योजना ने कम्प्यूटेशनल व्यय को खो दिया है जो एक बार आनंद लिया था और अब चक्रों की परिवर्तनीय संख्या का समर्थन किया जाता है। जून 2012 में, पॉल-हेनिंग काम्प ने एल्गोरिदम को असुरक्षित घोषित किया और उपयोगकर्ताओं को मजबूत पासवर्ड स्क्रैम्बलर में माइग्रेट करने के लिए प्रोत्साहित किया।<ref>{{cite web|url=http://phk.freebsd.dk/sagas/md5crypt_eol.html|title=Md5crypt Password scrambler is no longer considered safe by author — PHKs Bikeshed|website=Phk.freebsd.dk|access-date=2 December 2018|archive-url=https://web.archive.org/web/20180317164935/http://phk.freebsd.dk/sagas/md5crypt_eol.html|archive-date=17 March 2018}}</ref> | ||
=== ब्लोफिश-आधारित योजना === | === ब्लोफिश-आधारित योजना === | ||
{{Main|bcrypt}} | {{Main|bcrypt}} | ||
[[नील्स प्रोवोस]] और डेविड माज़िएरेस ने [[ब्लोफिश (सिफर)]] पर आधारित एक क्रिप्ट () योजना को डिजाइन किया, जिसे बीक्रिप्ट कहा जाता है, और इसे 1999 में [[यूसेनिक्स]] में प्रस्तुत किया।<ref>{{cite journal | url = http://www.usenix.org/events/usenix99/provos/provos_html/node1.html | title = एक भविष्य-अनुकूलनीय पासवर्ड योजना| first = Niels | last = Provos |author2=Mazières, David | year = 1999 | journal = Proceedings of 1999 USENIX Annual Technical Conference | pages = 81–92}}</ref> इन हैश का प्रिंट करने योग्य रूप से | [[नील्स प्रोवोस]] और डेविड माज़िएरेस ने [[ब्लोफिश (सिफर)]] पर आधारित एक क्रिप्ट () योजना को डिजाइन किया, जिसे बीक्रिप्ट कहा जाता है, और इसे 1999 में [[यूसेनिक्स]] में प्रस्तुत किया।<ref>{{cite journal | url = http://www.usenix.org/events/usenix99/provos/provos_html/node1.html | title = एक भविष्य-अनुकूलनीय पासवर्ड योजना| first = Niels | last = Provos |author2=Mazières, David | year = 1999 | journal = Proceedings of 1999 USENIX Annual Technical Conference | pages = 81–92}}</ref> इन हैश का प्रिंट करने योग्य रूप से प्रारम्भ होता है <code>$2$</code>, <code>$2a$</code>, <code>$2b$</code>, <code>$2x$</code> या <code>$2y$</code> एल्गोरिदम के किस संस्करण का उपयोग किया जाता है इसके आधार पर: | ||
* <code>$2$</code>{{snd}} अप्रचलित। | * <code>$2$</code>{{snd}} अप्रचलित। | ||
* <code>$2a$</code>{{snd}} इस योजना की पहचान करने के लिए उपयोग की जाने वाली वर्तमान कुंजी। चूंकि 2011 में एक गैर-ओपनबीएसडी में एक बड़ी सुरक्षा खामी का पता चला था {{tt|crypt_blowfish}} | * <code>$2a$</code>{{snd}} इस योजना की पहचान करने के लिए उपयोग की जाने वाली वर्तमान कुंजी। चूंकि 2011 में एक गैर-ओपनबीएसडी में एक बड़ी सुरक्षा खामी का पता चला था {{tt|crypt_blowfish}} एल्गोरिदम का कार्यान्वयन,<ref>{{cite web | ||
| url = http://www.openwall.com/lists/announce/2011/06/21/1 | | url = http://www.openwall.com/lists/announce/2011/06/21/1 | ||
| title = crypt_blowfish 1.1; Owl glibc security update | date = 2011-06-21 | | title = crypt_blowfish 1.1; Owl glibc security update | date = 2011-06-21 | ||
| first = Solar | last = Designer | | first = Solar | last = Designer | ||
}} See also {{CVE|2011-2483}}.</ref> इस स्ट्रिंग द्वारा संकेतित हैश अब अस्पष्ट हैं और त्रुटिपूर्ण कार्यान्वयन, या बाद के निश्चित, कार्यान्वयन द्वारा उत्पन्न हो सकते हैं। गैर-ASCII (8-बिट-सेट) वर्ण वाले कुछ पासवर्ड स्ट्रिंग्स द्वारा त्रुटि को ट्रिगर किया जा सकता है। | }} See also {{CVE|2011-2483}}.</ref> इस स्ट्रिंग द्वारा संकेतित हैश अब अस्पष्ट हैं और त्रुटिपूर्ण कार्यान्वयन, या बाद के निश्चित, कार्यान्वयन द्वारा उत्पन्न हो सकते हैं। गैर-ASCII (8-बिट-सेट) वर्ण वाले कुछ पासवर्ड स्ट्रिंग्स द्वारा त्रुटि को ट्रिगर किया जा सकता है। | ||
* <code>$2b$</code>{{snd}} | * <code>$2b$</code>{{snd}} रैपअआवर्तन समस्या को कम करने के लिए हाल के OpenBSD कार्यान्वयन द्वारा उपयोग किया जाता है।<ref>{{Cite web|url=http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libc/crypt/bcrypt.c?rev=1.27&content-type=text/x-cvsweb-markup|title=src/lib/libc/crypt/bcrypt.c – view – 1.27|website=Cvsweb.openbsd.org|access-date=2016-05-14}}</ref> एल्गोरिदम के पिछले संस्करणों में लंबे पासवर्ड की समस्या है। डिज़ाइन के अनुसार, लंबे पासवर्ड को 72 अक्षरों में काट दिया जाता है, लेकिन कुछ पासवर्ड लंबाई के साथ एक बाइट पूर्णांक रैपआवर्तन समस्या होती है, जिसके परिणामस्वरूप कमजोर हैश होता है।<ref>{{cite web | ||
| url = http://www.openwall.com/lists/oss-security/2012/01/02/4 | | url = http://www.openwall.com/lists/oss-security/2012/01/02/4 | ||
| title = OpenBSD bcrypt 8-bit key_len wraparound | date = 2012-01-02 | | title = OpenBSD bcrypt 8-bit key_len wraparound | date = 2012-01-02 | ||
| first = Solar | last = Designer | | first = Solar | last = Designer | ||
}}</ref> | }}</ref> | ||
* <code>$2x$</code>{{snd}} के बाद एक ध्वज जोड़ा गया {{tt|crypt_blowfish}} बग खोज। पुराने हैश का नाम बदलकर किया जा सकता है <code>$2x$</code> यह इंगित करने के लिए कि वे टूटे हुए | * <code>$2x$</code>{{snd}} के बाद एक ध्वज जोड़ा गया {{tt|crypt_blowfish}} बग खोज। पुराने हैश का नाम बदलकर किया जा सकता है <code>$2x$</code> यह इंगित करने के लिए कि वे टूटे हुए एल्गोरिदम के साथ उत्पन्न हुए थे। ये हैश अभी भी कमजोर हैं, लेकिन कम से कम यह स्पष्ट है कि उन्हें उत्पन्न करने के लिए किस एल्गोरिदम का उपयोग किया गया था। | ||
* <code>$2y$</code>{{snd}} में एक झंडा {{tt|crypt_blowfish}} स्पष्ट रूप से नए, सही | * <code>$2y$</code>{{snd}} में एक झंडा {{tt|crypt_blowfish}} स्पष्ट रूप से नए, सही एल्गोरिदम का उपयोग करने के लिए। बग से पीड़ित पुराने कार्यान्वयन पर, <code>$2y$</code> बस काम नहीं करेगा। एक नए, निश्चित कार्यान्वयन पर, यह उपयोग करने के समान परिणाम देगा <code>$2b$</code>. | ||
ब्लोफिश अपने महंगे कुंजी सेटअप चरण के लिए ब्लॉक सिफर के बीच उल्लेखनीय है। यह एक मानक स्थिति में उपकुंजियों के साथ | ब्लोफिश अपने महंगे कुंजी सेटअप चरण के लिए ब्लॉक सिफर के बीच उल्लेखनीय है। यह एक मानक स्थिति में उपकुंजियों के साथ प्रारम्भ होता है, फिर कुंजी के हिस्से का उपयोग करके ब्लॉक एन्क्रिप्शन करने के लिए इस स्थिति का उपयोग करता है, और कुछ उपकुंजियों को बदलने के लिए उस एन्क्रिप्शन (वास्तव में, एक हैशिंग) के परिणाम का उपयोग करता है। फिर यह कुंजी के दूसरे भाग को एन्क्रिप्ट करने के लिए इस संशोधित स्थिति का उपयोग करता है, और अधिक उपकुंजियों को बदलने के लिए परिणाम का उपयोग करता है। यह इस प्रकार से आगे बढ़ता है, जब तक कि सभी उपकुंजियों को सेट नहीं किया जाता है, तब तक कुंजी को हैश करने और राज्य के बिट्स को बदलने के लिए उत्तरोत्तर संशोधित स्थिति का उपयोग किया जाता है। | ||
कीइंग के | कीइंग के आवर्तन की संख्या दो की शक्ति है, जो एल्गोरिदम का एक इनपुट है। संख्या टेक्स्ट हैश में विकोडित है, उदा। <code>$2y$10...</code> | ||
=== एनटी हैश योजना === | === एनटी हैश योजना === | ||
[[MS-CHAP]] के माध्यम से NT खातों के साथ आसान संगतता प्रदान करने के लिए FreeBSD ने [[NTLM]] हैश | [[MS-CHAP]] के माध्यम से NT खातों के साथ आसान संगतता प्रदान करने के लिए FreeBSD ने [[NTLM]] हैश एल्गोरिदम के लिए समर्थन लागू किया।<ref>{{cite web|url=http://www.mail-archive.com/freebsd-current@freebsd.org/msg52586.html|title=NT MD4 password hash as new password encryption method for FreeBSD|website=Mail-archive.com|access-date=2 December 2018}}</ref> एनटी-हैश एल्गोरिदम कमजोर होने के लिए जाना जाता है, क्योंकि यह बिना किसी साल्ट के बहिष्कृत एमडी 4 हैश एल्गोरिदम का उपयोग करता है।<ref>{{cite web|url=http://davenport.sourceforge.net/ntlm.html#theNtlmResponse|title=एनटीएलएम प्रमाणीकरण प्रोटोकॉल और सुरक्षा सहायता प्रदाता|website=Davenport.sourceforge.net|access-date=2 December 2018}}</ref> फ्रीबीएसडी ने इस्तेमाल किया <code>$3$</code> इसके लिए प्रीफिक्स। इसके उपयोग की अनुशंसा नहीं की जाती है, क्योंकि यह आसानी से टूट जाता है।<ref name=fbsd3>{{man|3|crypt|FreeBSD}}</ref> | ||
=== | === एसएचए2-आधारित योजना === | ||
सामान्यतः इस्तेमाल की जाने वाली | सामान्यतः इस्तेमाल की जाने वाली एमडी5 आधारित योजना पर हमला करना आसान हो गया है क्योंकि कंप्यूटर की शक्ति बढ़ गई है। यद्यपि ब्लोफिश-आधारित प्रणाली में आवर्तन जोड़ने का विकल्प होता है और इस प्रकार यह एक चुनौतीपूर्ण पासवर्ड एल्गोरिदम बना रहता है, यह राष्ट्रीय मानक और प्रौद्योगिकी-अनुमोदित एल्गोरिदम का उपयोग नहीं करता है। इन तथ्यों के आलोक में, [[Red Hat]] के [[Ulrich Drepper]] ने एसएचए-2 (एसएचए-256 और एसएचए-512) हैश फ़ंक्शंस पर आधारित एक योजना बनाने का प्रयास किया।<ref name="shacrypt">{{cite web | ||
| first = Ulrich | | first = Ulrich | ||
| last = Drepper | | last = Drepper | ||
Line 171: | Line 174: | ||
| url = http://people.redhat.com/drepper/sha-crypt.html | | url = http://people.redhat.com/drepper/sha-crypt.html | ||
| df = dmy-all | | df = dmy-all | ||
}}</ref> इन हैश का प्रिंट करने योग्य रूप से | }}</ref> इन हैश का प्रिंट करने योग्य रूप से प्रारम्भ होता है <code>$5$</code> (एसएचए-256 के लिए) या <code>$6$</code> (एसएचए-512 के लिए) जिसके आधार पर एसएचए संस्करण का उपयोग किया जाता है। इसका डिज़ाइन एमडी5-आधारित क्रिप्ट के समान है, कुछ उल्लेखनीय अंतरों के साथ:<ref name="shacrypt" /> | ||
* यह कुछ ही चरणों में लगातार डेटा जोड़ने से बचता है। | * यह कुछ ही चरणों में लगातार डेटा जोड़ने से बचता है। | ||
* | * एमडी5 एल्गोरिद्म बार-बार पासवर्ड का पहला अक्षर जोड़ देगा;{{Citation needed|date=April 2010}} इस कदम को काफी बदल दिया गया था। | ||
* सन माइक्रोसिस्टम्स से प्रेरित | सन का क्रिप्ट () कार्यान्वयन, पुनरावृत्तियों की संख्या निर्दिष्ट करने के लिए कार्यक्षमता ( | * सन माइक्रोसिस्टम्स से प्रेरित | सन का क्रिप्ट () कार्यान्वयन, पुनरावृत्तियों की संख्या निर्दिष्ट करने के लिए कार्यक्षमता (आवर्तन) एल्गोरिदम प्रदर्शन में मुख्य लूप जोड़ा गया था<ref>{{cite web | author = Sun Microsystems | title = crypt_sunmd5(5) man page | url = http://docs.sun.com/app/docs/doc/816-5175/6mbba7evg | access-date = 2008-03-05 | archive-url = https://web.archive.org/web/20080416021006/http://docs.sun.com/app/docs/doc/816-5175/6mbba7evg | archive-date = 2008-04-16 }}</ref><ref>{{cite web | title = OpenSolaris, Pluggable Crypt, and the SunMD5 Password Hash Algorithm | first = Alec | last = Muffett | url = http://dropsafe.crypticide.com/article/1389 | date = 2005-12-05 | access-date = 2012-08-11}}</ref> | ||
* पुनरावृत्तियों की संख्या डिफ़ॉल्ट रूप से 5000 है, न्यूनतम 1000 और अधिकतम 999,999,999।<ref name="shacryptcode"/> | * पुनरावृत्तियों की संख्या डिफ़ॉल्ट रूप से 5000 है, न्यूनतम 1000 और अधिकतम 999,999,999।<ref name="shacryptcode"/> | ||
विनिर्देश और नमूना कोड सार्वजनिक डोमेन में जारी किए गए हैं; इसे प्रायः | विनिर्देश और नमूना कोड सार्वजनिक डोमेन में जारी किए गए हैं; इसे प्रायः एसएचएcrypt के रूप में संदर्भित किया जाता है।<ref name="shacryptcode">{{cite web | url = http://www.akkadia.org/drepper/SHA-crypt.txt | title = Unix crypt using SHA-256 and SHA-512 | first = Ulrich | last = Drepper }}</ref> | ||
=== अन्य हैश === | === अन्य हैश === | ||
; {{code|$y$}} | ; {{code|$y$}} | ||
: | : यसक्रिप्ट, एसक्रिप्ट का एक विस्तार है ({{code|$7$}}) और एक पीएचसी फाइनलिस्ट। इसका उपयोग वर्तमाना योजनाओं के विकल्प के रूप में कई [[लिनक्स वितरण]]ों में किया जाता है।<ref>{{cite web |title=FESCo Says "Yes" To Fedora 35 Using Yescrypt For Hashing Shadow Passwords - Phoronix |url=https://www.phoronix.com/scan.php?page=news_item&px=Fedora-35-Yescrypt-Yes |website=www.phoronix.com}}</ref> इस हैश का उपयोग करने के लिए, {{code|libcrypt}} को glibc से libxcrypt प्रोजेक्ट से पिछड़े-संगत से बदल दिया गया है।<ref>{{cite web |title=Changes/yescrypt as default hashing method for shadow - Fedora Project Wiki |url=https://fedoraproject.org/wiki/Changes/yescrypt_as_default_hashing_method_for_shadow |website=libxcrypt: Is already capable for computing yescrypt hashes since v4.3.}}</ref> | ||
; {{code|$argon2d$}}, {{code|$argon2i$}}, {{code|$argon2ds$}} | ; {{code|$argon2d$}}, {{code|$argon2i$}}, {{code|$argon2ds$}} | ||
: ये [[Argon2]] | : ये [[Argon2]] एल्गोरिदम के लिए पीएचसी द्वारा निर्दिष्ट नाम हैं, लेकिन व्यापक रूप से उपयोग किए जाने वाले प्रतीत नहीं होते हैं। | ||
अतिरिक्त प्रारूप, यदि कोई हो, कार्यान्वयन के [[मैन पेज|मैन पृष्ठ]] में वर्णित हैं।<ref> | अतिरिक्त प्रारूप, यदि कोई हो, कार्यान्वयन के [[मैन पेज|मैन पृष्ठ]] में वर्णित हैं।<ref> | ||
Line 194: | Line 197: | ||
==== पुरातन यूनिक्स योजनाएं ==== | ==== पुरातन यूनिक्स योजनाएं ==== | ||
BigCrypt, HP-UX, Digital Unix, और OSF/1 पर प्रयुक्त | BigCrypt, HP-UX, Digital Unix, और OSF/1 पर प्रयुक्त डीईएस-Crypt का संशोधित संस्करण है। इसके और डीईएस के बीच मुख्य अंतर यह है कि BigCrypt एक पासवर्ड के सभी वर्णों का उपयोग करता है, न कि केवल पहले 8 का, और इसकी एक चर लंबाई हैश है।<ref>{{cite web|url=https://pythonhosted.org/passlib/lib/passlib.hash.bigcrypt.html|title=passlib.hash.bigcrypt - BigCrypt — Passlib v1.7.1 Documentation|website=Pythonhosted.org|access-date=2 December 2018}}</ref> | ||
Crypt16 | Crypt16 डीईएस का मामूली संशोधन है, जो 16 अक्षरों तक के पासवर्ड की अनुमति देता है। अल्ट्रिक्स और ट्रू64 पर इस्तेमाल किया गया।<ref>{{cite web|url=https://pythonhosted.org/passlib/lib/passlib.hash.crypt16.html|title=passlib.hash.crypt16 - Crypt16 — Passlib v1.7.1 Documentation|website=Pythonhosted.org|access-date=2 December 2018}}</ref> | ||
== ऑपरेटिंग सिस्टम में सहायता == | == ऑपरेटिंग सिस्टम में सहायता == | ||
{| class="wikitable" style="margin-bottom: 10px;" | {| class="wikitable" style="margin-bottom: 10px;" | ||
! | !पद्धति आईडी | ||
!Scheme | !Scheme | ||
!Linux ([[GNU C Library|glibc]]) | !Linux ([[GNU C Library|glibc]]) | ||
Line 206: | Line 209: | ||
!NetBSD | !NetBSD | ||
!OpenBSD | !OpenBSD | ||
! | !सोलारिस | ||
!MacOS | !MacOS | ||
|- | |- | ||
| | | | ||
| | |डीईएस | ||
|{{yes}}<ref name="debian-manpage-crypt">{{cite web|url=https://manpages.debian.org/experimental/libcrypt-dev/crypt.5.en.html|title=Debian manpage crypt|website=manpages.debian.org|access-date=11 Jan 2022}}</ref> | |{{yes}}<ref name="debian-manpage-crypt">{{cite web|url=https://manpages.debian.org/experimental/libcrypt-dev/crypt.5.en.html|title=Debian manpage crypt|website=manpages.debian.org|access-date=11 Jan 2022}}</ref> | ||
|{{yes}} | |{{yes}} | ||
Line 219: | Line 222: | ||
|- | |- | ||
|_ | |_ | ||
| | |बीएसडीआई | ||
|{{yes}}<ref name="debian-manpage-crypt" /> | |{{yes}}<ref name="debian-manpage-crypt" /> | ||
|{{yes}} | |{{yes}} | ||
Line 228: | Line 231: | ||
|- | |- | ||
|1 | |1 | ||
| | |एमडी5 | ||
|{{yes}}<ref name="debian-manpage-crypt" /> | |{{yes}}<ref name="debian-manpage-crypt" /> | ||
|{{yes}} | |{{yes}} | ||
Line 237: | Line 240: | ||
|- | |- | ||
|2, 2a, 2b, 2x, 2y | |2, 2a, 2b, 2x, 2y | ||
| | |बीक्रिप्ट | ||
|{{yes}}<ref name="debian-manpage-crypt" /> | |{{yes}}<ref name="debian-manpage-crypt" /> | ||
|{{yes}} | |{{yes}} | ||
Line 246: | Line 249: | ||
|- | |- | ||
|3 | |3 | ||
| | |एनटीहैश | ||
|{{yes}}<ref name="debian-manpage-crypt" /> | |{{yes}}<ref name="debian-manpage-crypt" /> | ||
|{{yes}} | |{{yes}} | ||
Line 255: | Line 258: | ||
|- | |- | ||
|5 | |5 | ||
| | |एसएचए-256 | ||
|{{yes|2.7+}}<ref name="debian-manpage-crypt" /> | |{{yes|2.7+}}<ref name="debian-manpage-crypt" /> | ||
|{{yes|8.3+}} | |{{yes|8.3+}} | ||
Line 264: | Line 267: | ||
|- | |- | ||
|6 | |6 | ||
| | |एसएचए-512 | ||
|{{yes|2.7+}}<ref name="debian-manpage-crypt" /> | |{{yes|2.7+}}<ref name="debian-manpage-crypt" /> | ||
|{{yes|8.3+}} | |{{yes|8.3+}} | ||
Line 273: | Line 276: | ||
|- | |- | ||
|7 | |7 | ||
| | |एसक्रिप्ट | ||
|{{yes}}<ref name="debian-manpage-crypt" /> | |{{yes}}<ref name="debian-manpage-crypt" /> | ||
|{{yes}} | |{{yes}} | ||
Line 281: | Line 284: | ||
|{{no}} | |{{no}} | ||
|- | |- | ||
| | |एमडी5 | ||
| | |सोलारिस एमडी5 | ||
|{{yes}}<ref name="debian-manpage-crypt" /> | |{{yes}}<ref name="debian-manpage-crypt" /> | ||
|{{no}} | |{{no}} | ||
Line 290: | Line 293: | ||
|{{no}} | |{{no}} | ||
|- | |- | ||
| | |एसएचए1 | ||
| | |पीबीकेडीएफ1 के साथ एसएचए1 | ||
|{{yes}}<ref name="debian-manpage-crypt" /> | |{{yes}}<ref name="debian-manpage-crypt" /> | ||
|{{no}} | |{{no}} | ||
Line 300: | Line 303: | ||
|- | |- | ||
|gy | |gy | ||
| | |गोस्त-यसक्रिप्ट | ||
|{{yes}}<ref name="debian-manpage-crypt" /> | |{{yes}}<ref name="debian-manpage-crypt" /> | ||
|{{no}} | |{{no}} | ||
Line 309: | Line 312: | ||
|- | |- | ||
|y | |y | ||
| | |यसक्रिप्ट | ||
|{{yes}}<ref name="debian-manpage-crypt" /> | |{{yes}}<ref name="debian-manpage-crypt" /> | ||
|{{no}} | |{{no}} | ||
Line 321: | Line 324: | ||
=== लिनक्स === | === लिनक्स === | ||
लगभग सभी लिनक्स वितरणों द्वारा उपयोग की जाने वाली [[जीएनयू सी लाइब्रेरी]] क्रिप्ट प्रकार्य का कार्यान्वयन प्रदान करती है जो डीईएस, एमडी5 और (संस्करण 2.7 के बाद से) एसएचए-2 आधारित हैशिंग एल्गोरिदम का समर्थन करती है। | लगभग सभी लिनक्स वितरणों द्वारा उपयोग की जाने वाली [[जीएनयू सी लाइब्रेरी]] क्रिप्ट प्रकार्य का कार्यान्वयन प्रदान करती है जो डीईएस, एमडी5 और (संस्करण 2.7 के बाद से) एसएचए-2 आधारित हैशिंग एल्गोरिदम का समर्थन करती है। | ||
glibc अनुरक्षक, Ulrich Drepper ने | glibc अनुरक्षक, Ulrich Drepper ने बीक्रिप्ट (स्कीम 2) समर्थन को अस्वीकार कर दिया क्योंकि यह राष्ट्रीय मानक और प्रौद्योगिकी संस्थान द्वारा अनुमोदित नहीं है।<ref>{{cite web|url=https://access.redhat.com/articles/1519843|title=bcrypt support for passwords in /etc/shadow - Red Hat Customer Portal|website=Access.redhat.com|access-date=2 December 2018}}</ref> बिना बीक्रिप्ट वाले सिस्टम के लिए एक सार्वजनिक डोमेन crypt_blowfish लाइब्रेरी उपलब्ध है। इसे [[एसयूएसई लिनक्स]] में ग्लिबैक में एकीकृत किया गया है।<ref>{{cite web |title=आपके सॉफ़्टवेयर और आपके सर्वर के लिए bcrypt पासवर्ड हैशिंग ("पासवर्ड एन्क्रिप्शन")|url=https://www.openwall.com/crypt/ |website=www.openwall.com}}</ref> इसके अलावा, उपर्युक्त libxcrypt का उपयोग यसक्रिप्ट-सक्षम सिस्टम पर glibc crypt() को बदलने के लिए किया जाता है। | ||
[[musl]] C लाइब्रेरी स्कीम 1, 2, 5 और 6 के साथ-साथ परंपरा | [[musl]] C लाइब्रेरी स्कीम 1, 2, 5 और 6 के साथ-साथ परंपरा डीईएस स्कीम का समर्थन करती है। पारंपरिक डीईएस कोड बीएसडी फ्रीसेक पर आधारित है, जिसमें ग्लिबक यूएफसी-क्रिप्ट के साथ संगत होने के लिए संशोधन किया गया है।<ref>{{cite web |title=crypt_r.c\crypt\src - musl - musl - an implementation of the standard library for Linux-based systems |url=https://git.musl-libc.org/cgit/musl/tree/src/crypt/crypt_r.c |website=git.musl-libc.org}}</ref> | ||
Line 332: | Line 335: | ||
== यह भी देखें == | == यह भी देखें == | ||
* [[कुंजी व्युत्पत्ति समारोह]] | * [[कुंजी व्युत्पत्ति समारोह]] | ||
* साल्ट ( | * साल्ट (गूढ़लेखिकी) | ||
== संदर्भ == | == संदर्भ == | ||
Line 339: | Line 342: | ||
== बाहरी संबंध == | == बाहरी संबंध == | ||
* [http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/libc/gen/crypt.c Source code for crypt(3)] from Seventh Edition Unix (implements proposed | * [http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/libc/gen/crypt.c Source code for crypt(3)] from Seventh Edition Unix (implements proposed डीईएस) | ||
* [http://openwall.info/wiki/john/sample-hashes Sample password hash encoding strings] | * [http://openwall.info/wiki/john/sample-hashes Sample password hash encoding strings] | ||
* [http://www.zer7.com/software/cryptsharp .NET crypt implementation] | * [http://www.zer7.com/software/cryptsharp .NET crypt implementation] |
Revision as of 11:19, 21 May 2023
क्रिप्ट एक सी पॉज़िक्स लाइब्रेरी प्रकार्य है। यह सामान्यतः उपयोगकर्ता खाता पासवर्ड के गूढ़लेखिकी हैश प्रकार्य की गणना करने के लिए उपयोग किया जाता है। प्रकार्य एक टेक्स्ट स्ट्रिंग को निर्गम करता है जो साल्ट (गूढ़लेखिकी) को भी कोड करता है (सामान्यतः पहले दो वर्ण स्वयं साल्ट होते हैं और शेष हैशेड परिणाम होता है), और उपयोग किए गए हैश एल्गोरिदम की पहचान करता है (पारंपरिक रूप से नीचे समझाया गया है)। यह निर्गम स्ट्रिंग एक पासवर्ड अभिलेखबद्ध बनाता है, जो सामान्यतः टेक्स्ट फ़ाइल में संग्रहीत होता है।
अधिक औपचारिक रूप से, क्रिप्ट यूनिक्स सिस्टम पर पासवर्ड सत्यापन और भंडारण के लिए गूढ़लेखिकी कुंजी व्युत्पत्ति प्रकार्य प्रदान करता है।
यूनिक्स क्रिप्ट उपयोगिता से संबंध
यूनिक्स में एक असंबंधित क्रिप्ट (यूनिक्स) उपयोगिता है, जिसे प्रायः सी लाइब्रेरी प्रकार्य के साथ भ्रमित किया जाता है। दोनों के बीच अंतर करने के लिए, लेखक प्रायः उपयोगिता प्रोग्राम को 'क्रिप्ट (1)' के रूप में संदर्भित करते हैं, क्योंकि यह यूनिक्स मैनुअल पृष्ठ (यूनिक्स) के खंड 1 में प्रलेखित है, और सी लाइब्रेरी प्रकार्य को 'क्रिप्ट' के रूप में संदर्भित करता है। (3) , क्योंकि इसका प्रलेखन मैनुअल अनुभाग 3 में है।[1]
विवरण
यह एक ही क्रिप्ट प्रकार्य का उपयोग भंडारण के लिए एक नवीन हैश उत्पन्न करने के लिए और तुलना के लिए अभिलेखबद्ध किए गए साल्ट (गूढ़लेखिकी) के साथ एक प्रस्तावित पासवर्ड को हैश करने के लिए भी किया जाता है।
क्रिप्ट लाइब्रेरी परिच्छेदन के आधुनिक यूनिक्स कार्यान्वयन विभिन्न प्रकार की हैश योजनाओं का समर्थन करते हैं। मॉड्यूलर क्रिप्ट प्रारूप नामक वास्तविक मानक के बाद, परिणामस्वरूप हैशटेक्स्ट में उपयोग किए जाने वाले विशेष हैश एल्गोरिदम को एक अद्वितीय कोड प्रीफिक्स द्वारा पहचाना जा सकता है।[2][3][4]
crypt()
लाइब्रेरी प्रकार्य पर्ल,[5] पीएचपी,[6] पाईक (प्रोग्रामिंग भाषा),[7] पायथन (प्रोग्रामिंग भाषा)[8] (यद्यपि अब इसे 3.11 के रूप में हटा दिया गया है), और रूबी (प्रोग्रामिंग भाषा)[9] प्रोग्रामिंग भाषाओं में भी सम्मिलित है।
क्रिप्ट द्वारा समर्थित प्रमुख व्युत्पत्ति प्रकार्य
समय के साथ विभिन्न एल्गोरिदम प्रस्तुत किए गए हैं। पिछड़े संगतता को सक्षम करने के लिए, प्रत्येक योजना ने पासवर्ड हैश के क्रमांकन के कुछ सम्मेलन का उपयोग करना प्रारम्भ किया जिसे बाद में मॉड्यूलर क्रिप्ट प्रारूप (एमसीएफ) कहा गया।[3] वास्तविक एमसीएफ मानक से पहले जनित किया गया प्राचीन क्रिप्ट(3) हैश एक योजना से दूसरी योजना में भिन्न हो सकता है। पासवर्ड हैशिंग प्रतियोगिता के समय मॉड्यूलर क्रिप्ट प्रारूप का एक ठीक रूप से परिभाषित उपसमूह बनाया गया था।[3] प्रारूप को इस प्रकार परिभाषित किया गया है:[10]
$<id>[$<param>=<value>(,<param>=<value>)*][$<salt>[$<hash>]]
जहाँ
id
: हैशिंग एल्गोरिदम का प्रतिनिधित्व करने वाला एक पहचानकर्ता (जैसे कि एमडी5 के लिए 1, एसएचए-2 आदि के लिए 5)param
नाम और उसकीvalue
: हैश जटिलता पैरामीटर, जैसे आवर्तन/पुनरावृत्तियों की संख्याsalt
: मूलांक-64 विकोडित साल्ट (गूढ़लेखिकी)hash
: पासवर्ड और साल्ट को हैश करने का मूलांक -64 विकोडित परिणाम
क्रिप्ट में रेडिक्स-64 विकोडन को बी64 कहा जाता है और वर्णमाला का उपयोग करता है ./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
जो अधिक सामान्य बेस64 कार्यान्वयन और इतिहास से भिन्न है
पद्धति आईडी | रूपरेखा | उदाहरण |
---|---|---|
डीईएस | Kyq4bCxAXJkbg
| |
_ | बीएसडीआई | _EQ0.jzhSVeUyoSqLupI
|
1 | एमडी5 | $1$etNnh7FA$OlM7eljE/B7F1J4XYNnk81
|
2, 2a, 2b, 2x, 2y | बीक्रिप्ट | $2a$10$VIhIOofSMqgdGlL4wzE//e.77dAQGqntF/1dT7bqCrVtquInWy2qi
|
3 | एनटीहैश | $3$$8846f7eaee8fb117ad06bdd830b7586c
|
5 | एसएचए-256 | $5$9ks3nNEqv31FX.F$gdEoLFsCRsn/WRN3wxUnzfeZLoooVlzeF4WjLomTRFD
|
6 | एसएचए-512 | $6$qoE2letU$wWPRl.PVczjzeMVgjiA8LLy2nOyZbf7Amj3qLIL978o18gbMySdKZ7uepq9tmMQXxyTIrS12Pln.2Q/6Xscao0
|
7 | एसक्रिप्ट | $7$DU..../....2Q9obwLhin8qvQl6sisAO/$एसएचएyJj/JBdcuD4lJ1AxiwCo9e5XSi8TcINcmyID12i8
|
8 (Cisco) | एसएचए256 के साथपीबीकेडीएफ2 | $8$mTj4RZG8N9ZDOk$elY/asfm8kD3iDmkBe3hD2r4xcA/0oWS5V3os.O91u.
|
8 (JunOS) | पीबीकेडीएफ2 | $8$crypt-algo$hash-algo$iterations$salt$iv$tag$encrypted
|
gy | गोस्त-यसक्रिप्ट | $gy$jCT$HM87v.7RwpQLba8fDjNSk1$VgqS7k2OZWhFbAJVBye2vaA7ex/1VtU3a5fmL8Wv/26
|
md5 | सोलारिस एमडी5 | $एमडी5,rounds=5000$GUBv0xjJ$$mSwgIswdjlTY0YxV7HBVm0
|
sha1 | एसएचए-1
के साथपीबीकेडीएफ1 |
$एसएचए1$40000$jtNX3nZ2$hBNaIXkt4wBI2o5rsi8KejSjNqIq
|
y | यसक्रिप्ट | $y$j9T$F5Jx5fExrKuPp53xLKQ..1$X3DX6M94c7o.9agCG9G317fhZg9SqC.5i5rd.RhAtQ7
|
पीएचसी उपसमूह में अधिकांश एमसीएफ हैश सम्मिलित हैं। कई अतिरिक्त एप्लिकेशन-परिभाषित विधियां स्थित हैं।[3]
एक कुंजी के रूप में पासवर्ड का उपयोग करके मूल कार्यान्वयन
तीसरे संस्करण यूनिक्स में[11] क्रिप्ट() लाइब्रेरी प्रकार्य का मूल कार्यान्वयन[12] ने एम-209 सिफर मशीन का अनुकरण किया। एक कुंजी के साथ पासवर्ड को एन्क्रिप्ट करने के अतिरिक्त, जो पासवर्ड को गूढलेखित मान और कुंजी से पुनर्प्राप्त करने की अनुमति देता, उसने पासवर्ड को एक कुंजी के रूप में उपयोग किया, और पासवर्ड डेटाबेस में इस कुंजी के साथ पासवर्ड को एन्क्रिप्ट करने का परिणाम था।
पारंपरिक डीईएस-आधारित योजना
मूल पासवर्ड एन्क्रिप्शन योजना बहुत तेज़ पाई गई और इस प्रकार सबसे संभावित पासवर्डों की क्रूर बल गणना के अधीन थी।[12]सातवें संस्करण यूनिक्स में,[13] योजना को डेटा एन्क्रिप्शन मानक एल्गोरिदम के एक संशोधित रूप में बदल दिया गया था। इस परिवर्तन का एक लक्ष्य एन्क्रिप्शन को धीमा करना था। इसके अलावा, एल्गोरिदम में एक 12-बिट साल्ट (गूढ़लेखिकी) सम्मिलित है ताकि यह सुनिश्चित किया जा सके कि एक हमलावर को एक साथ पूरे पासवर्ड डेटाबेस को लक्षित करने में सक्षम होने के विपरीत प्रत्येक पासवर्ड को स्वतंत्र रूप से क्रैक करने के लिए मजबूर किया जाएगा।
विस्तार से, उपयोगकर्ता के पासवर्ड को आठ अक्षरों तक छोटा कर दिया जाता है, और उनमें से प्रत्येक को केवल 7-बिट्स तक सीमित कर दिया जाता है; यह 56-बिट डेस कुंजी बनाता है। उस कुंजी का उपयोग तब एक ऑल-बिट्स-जीरो ब्लॉक को एन्क्रिप्ट करने के लिए किया जाता है, और फिर सिफरटेक्स्ट को उसी कुंजी के साथ फिर से एन्क्रिप्ट किया जाता है, और इसी प्रकार कुल 25 डेस एन्क्रिप्शन के लिए। एन्क्रिप्शन एल्गोरिदम को खराब करने के लिए 12-बिट साल्ट का उपयोग किया जाता है, इसलिए क्रिप्ट() को लागू करने के लिए मानक डीईएस कार्यान्वयन का उपयोग नहीं किया जा सकता है। साल्ट और अंतिम सिफरटेक्स्ट को बेस 64 के रूप में प्रिंट करने योग्य स्ट्रिंग में एन्कोड किया गया है।
यह तकनीकी रूप से एन्क्रिप्शन नहीं है क्योंकि डेटा (सभी बिट्स शून्य) को गुप्त नहीं रखा जा रहा है; यह व्यापक रूप से पहले से सभी के लिए जाना जाता है। यद्यपि, डीईएस की एक विशेषता यह है कि यह ज्ञात सादा पाठ स्थितियों में भी की रिकवरी के लिए बहुत प्रतिरोधी है। यह सैद्धांतिक रूप से संभव है कि दो अलग-अलग पासवर्ड का परिणाम एक ही हैश में हो सकता है। इस प्रकार पासवर्ड को कभी भी डिक्रिप्ट नहीं किया जाता है: इसका उपयोग केवल परिणाम की गणना करने के लिए किया जाता है, और मिलान के परिणामों को प्रमाण माना जाता है कि पासवर्ड समान थे।
इस पद्धति का लाभ यह रहा है कि हैशटेक्स्ट को सिस्टम प्रशासकों या अन्य उपयोगकर्ताओं को संबंधित प्लेनटेक्स्ट पासवर्ड को उजागर किए बिना यूनिक्स सिस्टम के बीच संग्रहीत और कॉपी किया जा सकता है। इस सुवाह्यता ने 30 से अधिक वर्षों तक कंप्यूटिंग आर्किटेक्चर की कई पीढ़ियों और कई विक्रेताओं से यूनिक्स के कई संस्करणों में काम किया है।
पारंपरिक योजना की कमजोरियां
पारंपरिक डीईएस-आधारित क्रिप्ट एल्गोरिदम मूल रूप से चुना गया था क्योंकि डीईएस ज्ञात प्लेनटेक्स्ट हमलों के सामने भी कुंजी पुनर्प्राप्ति के लिए प्रतिरोधी था, और क्योंकि यह कम्प्यूटेशनल रूप से महंगा था। शुरुआती यूनिक्स मशीनों पर पासवर्ड हैश की गणना करने में पूरे एक सेकंड का समय लगता था। इसने उस युग में शब्दकोष के हमलों के लिए यथोचित प्रतिरोधी बना दिया। उस समय पासवर्ड हैश सामान्यतः एक खाता फ़ाइल (/etc/passwd
) जो सिस्टम पर किसी के लिए भी पठनीय था। (इस खाता फ़ाइल का उपयोग उपयोगकर्ता आईडी नंबरों को नामों में, और उपयोगकर्ता नामों को पूर्ण नामों आदि में मैप करने के लिए भी किया गया था)।
उस समय से तीन दशकों में, कंप्यूटर बहुत अधिक शक्तिशाली हो गए हैं। मूर के नियम को सामान्यतः सही माना गया है, इसलिए किसी दिए गए वित्तीय निवेश के लिए उपलब्ध कंप्यूटर की गति और क्षमता यूनिक्स के पहली बार लिखे जाने के बाद से 20 गुना से अधिक हो गई है। इसने लंबे समय से डीईएस-आधारित एल्गोरिदम को शब्दकोश हमलों के प्रति संवेदनशील बना दिया है, और यूनिक्स और यूनिक्स जैसी प्रणालियों जैसे कि लिनक्स ने शैडो पासवर्ड का उपयोग किया है। लंबे समय तक शैडो फाइलें, खाता फ़ाइल से केवल पासवर्ड हैश मानों को माइग्रेट करना (/etc/passwd
) और एक फ़ाइल में (पारंपरिक रूप से नामित /etc/एसएचएdow
) जिसे केवल विशेषाधिकार प्राप्त प्रक्रियाओं द्वारा ही पढ़ा जा सकता है।
पासवर्ड तोड़ने की कम्प्यूटेशनल लागत को बढ़ाने के लिए, कुछ यूनिक्स साइटों ने निजी तौर पर तदर्थ आधार पर एन्क्रिप्शन आवर्तन की संख्या में वृद्धि करना प्रारम्भ कर दिया।[citation needed] इसका उनके बनाने का साइड इफेक्ट था crypt()
मानक के साथ असंगत crypt()
: हैश का शाब्दिक रूप समान था, लेकिन अब एक अलग एल्गोरिदम का उपयोग करके गणना की गई थी। मानक ऑल-बिट्स-शून्य से प्रारंभिक ब्लॉक को संशोधित करके कुछ साइटों ने इस असंगति प्रभाव का भी लाभ उठाया।[citation needed] इससे हैशिंग की लागत में वृद्धि नहीं हुई, लेकिन इसका मतलब यह था कि मानक के आधार पर प्रीकंप्यूटेड हैश शब्दकोश crypt() लागू नहीं किया जा सका।
बीएसडीआई ने डीईएस-आधारित योजना का विस्तार किया
बर्कले सॉफ्टवेयर डिजाइन ने क्लासिक डेस-आधारित योजना में मामूली संशोधन किया। बीएसडीआई ने साल्ट को 24 बिट्स तक बढ़ाया और आवर्तन की संख्या को चर बना दिया (2 तक24-1). आवर्तन की चुनी हुई संख्या संग्रहीत पासवर्ड हैश में एन्कोड की गई है, जो साइट द्वारा मूल योजना द्वारा उपयोग किए जाने वाले आवर्तन की संख्या को संशोधित करने पर उत्पन्न होने वाली असंगति से बचाती है। अंडरस्कोर से प्रारम्भ करके इन हैश की पहचान की जाती है (_
), जिसके बाद 4 वर्ण आवर्तन की संख्या का प्रतिनिधित्व करते हैं, फिर साल्ट के लिए 4 वर्ण।
बीएसडीआई एल्गोरिदम भी लंबे पासवर्ड का समर्थन करता है, डीईएस का उपयोग करके प्रारंभिक लंबे पासवर्ड को मूल एल्गोरिदम द्वारा समर्थित आठ 7-बिट बाइट्स तक नीचे कर देता है।
एमडी5-आधारित योजना
Poul-Henning Kamp ने एमडी5 संदेश डाइजेस्ट एल्गोरिदम पर आधारित एक बारोक और (उस समय) कम्प्यूटेशनल रूप से महंगा एल्गोरिदम डिज़ाइन किया। एमडी5 स्वयं पासवर्ड हैश के लिए ठीक गूढ़लेखिकी ताकत प्रदान करेगा, लेकिन यह प्रदान की जाने वाली ताकत के सापेक्ष गणना करने के लिए काफी तेज़ डिज़ाइन किया गया है। शब्दकोश हमलों को धीमा करने के लिए, क्रिप्ट () योजना की गणना करने के लिए महंगा होने के लिए डिज़ाइन किया गया है। एमडी5 पासवर्ड हैश का प्रिंट करने योग्य रूप से प्रारम्भ होता है $1$
.
यह योजना उपयोगकर्ताओं को किसी भी लम्बाई के पासवर्ड की अनुमति देती है, और वे अपने प्लेटफ़ॉर्म द्वारा समर्थित किसी भी वर्ण का उपयोग कर सकते हैं (केवल 7-बिट ASCII नहीं)। (व्यावहारिक रूप से कई कार्यान्वयन पासवर्ड की लंबाई को सीमित करते हैं, लेकिन वे सामान्यतः किसी भी व्यक्ति द्वारा टाइप करने के इच्छुक होने की तुलना में लंबे समय तक पासवर्ड का समर्थन करते हैं।) साल्ट भी एक मनमाना स्ट्रिंग है, जो केवल वर्ण सेट विचारों द्वारा सीमित है।
सबसे पहले पासफ़्रेज़ और साल्ट को एक साथ हैश किया जाता है, जिससे एक एमडी5 संदेश डाइजेस्ट प्राप्त होता है। फिर एक नए डाइजेस्ट का निर्माण किया जाता है, पासफ़्रेज़, साल्ट और पहले डाइजेस्ट को एक साथ मिलाते हुए, सभी जटिल रूप में। फिर इस डाइजेस्ट को एक प्रकार्य के एक हजार पुनरावृत्तियों के माध्यम से पारित किया जाता है जो इसे पासफ़्रेज़ और साल्ट के साथ एक प्रकार से दोहराता है जो कि आवर्तन के बीच भिन्न होता है। इन आवर्तन के अंतिम का निर्गम परिणामी पासफ़्रेज़ हैश है।
निश्चित पुनरावृति गणना के कारण इस योजना ने कम्प्यूटेशनल व्यय को खो दिया है जो एक बार आनंद लिया था और अब चक्रों की परिवर्तनीय संख्या का समर्थन किया जाता है। जून 2012 में, पॉल-हेनिंग काम्प ने एल्गोरिदम को असुरक्षित घोषित किया और उपयोगकर्ताओं को मजबूत पासवर्ड स्क्रैम्बलर में माइग्रेट करने के लिए प्रोत्साहित किया।[14]
ब्लोफिश-आधारित योजना
नील्स प्रोवोस और डेविड माज़िएरेस ने ब्लोफिश (सिफर) पर आधारित एक क्रिप्ट () योजना को डिजाइन किया, जिसे बीक्रिप्ट कहा जाता है, और इसे 1999 में यूसेनिक्स में प्रस्तुत किया।[15] इन हैश का प्रिंट करने योग्य रूप से प्रारम्भ होता है $2$
, $2a$
, $2b$
, $2x$
या $2y$
एल्गोरिदम के किस संस्करण का उपयोग किया जाता है इसके आधार पर:
$2$
– अप्रचलित।$2a$
– इस योजना की पहचान करने के लिए उपयोग की जाने वाली वर्तमान कुंजी। चूंकि 2011 में एक गैर-ओपनबीएसडी में एक बड़ी सुरक्षा खामी का पता चला था crypt_blowfish एल्गोरिदम का कार्यान्वयन,[16] इस स्ट्रिंग द्वारा संकेतित हैश अब अस्पष्ट हैं और त्रुटिपूर्ण कार्यान्वयन, या बाद के निश्चित, कार्यान्वयन द्वारा उत्पन्न हो सकते हैं। गैर-ASCII (8-बिट-सेट) वर्ण वाले कुछ पासवर्ड स्ट्रिंग्स द्वारा त्रुटि को ट्रिगर किया जा सकता है।$2b$
– रैपअआवर्तन समस्या को कम करने के लिए हाल के OpenBSD कार्यान्वयन द्वारा उपयोग किया जाता है।[17] एल्गोरिदम के पिछले संस्करणों में लंबे पासवर्ड की समस्या है। डिज़ाइन के अनुसार, लंबे पासवर्ड को 72 अक्षरों में काट दिया जाता है, लेकिन कुछ पासवर्ड लंबाई के साथ एक बाइट पूर्णांक रैपआवर्तन समस्या होती है, जिसके परिणामस्वरूप कमजोर हैश होता है।[18]$2x$
– के बाद एक ध्वज जोड़ा गया crypt_blowfish बग खोज। पुराने हैश का नाम बदलकर किया जा सकता है$2x$
यह इंगित करने के लिए कि वे टूटे हुए एल्गोरिदम के साथ उत्पन्न हुए थे। ये हैश अभी भी कमजोर हैं, लेकिन कम से कम यह स्पष्ट है कि उन्हें उत्पन्न करने के लिए किस एल्गोरिदम का उपयोग किया गया था।$2y$
– में एक झंडा crypt_blowfish स्पष्ट रूप से नए, सही एल्गोरिदम का उपयोग करने के लिए। बग से पीड़ित पुराने कार्यान्वयन पर,$2y$
बस काम नहीं करेगा। एक नए, निश्चित कार्यान्वयन पर, यह उपयोग करने के समान परिणाम देगा$2b$
.
ब्लोफिश अपने महंगे कुंजी सेटअप चरण के लिए ब्लॉक सिफर के बीच उल्लेखनीय है। यह एक मानक स्थिति में उपकुंजियों के साथ प्रारम्भ होता है, फिर कुंजी के हिस्से का उपयोग करके ब्लॉक एन्क्रिप्शन करने के लिए इस स्थिति का उपयोग करता है, और कुछ उपकुंजियों को बदलने के लिए उस एन्क्रिप्शन (वास्तव में, एक हैशिंग) के परिणाम का उपयोग करता है। फिर यह कुंजी के दूसरे भाग को एन्क्रिप्ट करने के लिए इस संशोधित स्थिति का उपयोग करता है, और अधिक उपकुंजियों को बदलने के लिए परिणाम का उपयोग करता है। यह इस प्रकार से आगे बढ़ता है, जब तक कि सभी उपकुंजियों को सेट नहीं किया जाता है, तब तक कुंजी को हैश करने और राज्य के बिट्स को बदलने के लिए उत्तरोत्तर संशोधित स्थिति का उपयोग किया जाता है।
कीइंग के आवर्तन की संख्या दो की शक्ति है, जो एल्गोरिदम का एक इनपुट है। संख्या टेक्स्ट हैश में विकोडित है, उदा। $2y$10...
एनटी हैश योजना
MS-CHAP के माध्यम से NT खातों के साथ आसान संगतता प्रदान करने के लिए FreeBSD ने NTLM हैश एल्गोरिदम के लिए समर्थन लागू किया।[19] एनटी-हैश एल्गोरिदम कमजोर होने के लिए जाना जाता है, क्योंकि यह बिना किसी साल्ट के बहिष्कृत एमडी 4 हैश एल्गोरिदम का उपयोग करता है।[20] फ्रीबीएसडी ने इस्तेमाल किया $3$
इसके लिए प्रीफिक्स। इसके उपयोग की अनुशंसा नहीं की जाती है, क्योंकि यह आसानी से टूट जाता है।[1]
एसएचए2-आधारित योजना
सामान्यतः इस्तेमाल की जाने वाली एमडी5 आधारित योजना पर हमला करना आसान हो गया है क्योंकि कंप्यूटर की शक्ति बढ़ गई है। यद्यपि ब्लोफिश-आधारित प्रणाली में आवर्तन जोड़ने का विकल्प होता है और इस प्रकार यह एक चुनौतीपूर्ण पासवर्ड एल्गोरिदम बना रहता है, यह राष्ट्रीय मानक और प्रौद्योगिकी-अनुमोदित एल्गोरिदम का उपयोग नहीं करता है। इन तथ्यों के आलोक में, Red Hat के Ulrich Drepper ने एसएचए-2 (एसएचए-256 और एसएचए-512) हैश फ़ंक्शंस पर आधारित एक योजना बनाने का प्रयास किया।[21] इन हैश का प्रिंट करने योग्य रूप से प्रारम्भ होता है $5$
(एसएचए-256 के लिए) या $6$
(एसएचए-512 के लिए) जिसके आधार पर एसएचए संस्करण का उपयोग किया जाता है। इसका डिज़ाइन एमडी5-आधारित क्रिप्ट के समान है, कुछ उल्लेखनीय अंतरों के साथ:[21]
- यह कुछ ही चरणों में लगातार डेटा जोड़ने से बचता है।
- एमडी5 एल्गोरिद्म बार-बार पासवर्ड का पहला अक्षर जोड़ देगा;[citation needed] इस कदम को काफी बदल दिया गया था।
- सन माइक्रोसिस्टम्स से प्रेरित | सन का क्रिप्ट () कार्यान्वयन, पुनरावृत्तियों की संख्या निर्दिष्ट करने के लिए कार्यक्षमता (आवर्तन) एल्गोरिदम प्रदर्शन में मुख्य लूप जोड़ा गया था[22][23]
- पुनरावृत्तियों की संख्या डिफ़ॉल्ट रूप से 5000 है, न्यूनतम 1000 और अधिकतम 999,999,999।[24]
विनिर्देश और नमूना कोड सार्वजनिक डोमेन में जारी किए गए हैं; इसे प्रायः एसएचएcrypt के रूप में संदर्भित किया जाता है।[24]
अन्य हैश
$y$
- यसक्रिप्ट, एसक्रिप्ट का एक विस्तार है (
$7$
) और एक पीएचसी फाइनलिस्ट। इसका उपयोग वर्तमाना योजनाओं के विकल्प के रूप में कई लिनक्स वितरणों में किया जाता है।[25] इस हैश का उपयोग करने के लिए,libcrypt
को glibc से libxcrypt प्रोजेक्ट से पिछड़े-संगत से बदल दिया गया है।[26] $argon2d$
,$argon2i$
,$argon2ds$
- ये Argon2 एल्गोरिदम के लिए पीएचसी द्वारा निर्दिष्ट नाम हैं, लेकिन व्यापक रूप से उपयोग किए जाने वाले प्रतीत नहीं होते हैं।
अतिरिक्त प्रारूप, यदि कोई हो, कार्यान्वयन के मैन पृष्ठ में वर्णित हैं।[27]
पुरातन यूनिक्स योजनाएं
BigCrypt, HP-UX, Digital Unix, और OSF/1 पर प्रयुक्त डीईएस-Crypt का संशोधित संस्करण है। इसके और डीईएस के बीच मुख्य अंतर यह है कि BigCrypt एक पासवर्ड के सभी वर्णों का उपयोग करता है, न कि केवल पहले 8 का, और इसकी एक चर लंबाई हैश है।[28] Crypt16 डीईएस का मामूली संशोधन है, जो 16 अक्षरों तक के पासवर्ड की अनुमति देता है। अल्ट्रिक्स और ट्रू64 पर इस्तेमाल किया गया।[29]
ऑपरेटिंग सिस्टम में सहायता
पद्धति आईडी | Scheme | Linux (glibc) | FreeBSD | NetBSD | OpenBSD | सोलारिस | MacOS |
---|---|---|---|---|---|---|---|
डीईएस | Yes[30] | Yes | Yes | Yes | Yes | Yes | |
_ | बीएसडीआई | Yes[30] | Yes | Yes | Yes | No | Yes |
1 | एमडी5 | Yes[30] | Yes | Yes | Yes | Yes | No |
2, 2a, 2b, 2x, 2y | बीक्रिप्ट | Yes[30] | Yes | Yes | Yes | Yes | No |
3 | एनटीहैश | Yes[30] | Yes | No | No | No | No |
5 | एसएचए-256 | 2.7+[30] | 8.3+ | No | No | Yes | No |
6 | एसएचए-512 | 2.7+[30] | 8.3+ | No | No | Yes | No |
7 | एसक्रिप्ट | Yes[30] | Yes | No | No | Yes | No |
एमडी5 | सोलारिस एमडी5 | Yes[30] | No | No | No | Yes | No |
एसएचए1 | पीबीकेडीएफ1 के साथ एसएचए1 | Yes[30] | No | Yes | No | No | No |
gy | गोस्त-यसक्रिप्ट | Yes[30] | No | No | No | No | No |
y | यसक्रिप्ट | Yes[30] | No | No | No | No | No |
लिनक्स
लगभग सभी लिनक्स वितरणों द्वारा उपयोग की जाने वाली जीएनयू सी लाइब्रेरी क्रिप्ट प्रकार्य का कार्यान्वयन प्रदान करती है जो डीईएस, एमडी5 और (संस्करण 2.7 के बाद से) एसएचए-2 आधारित हैशिंग एल्गोरिदम का समर्थन करती है। glibc अनुरक्षक, Ulrich Drepper ने बीक्रिप्ट (स्कीम 2) समर्थन को अस्वीकार कर दिया क्योंकि यह राष्ट्रीय मानक और प्रौद्योगिकी संस्थान द्वारा अनुमोदित नहीं है।[31] बिना बीक्रिप्ट वाले सिस्टम के लिए एक सार्वजनिक डोमेन crypt_blowfish लाइब्रेरी उपलब्ध है। इसे एसयूएसई लिनक्स में ग्लिबैक में एकीकृत किया गया है।[32] इसके अलावा, उपर्युक्त libxcrypt का उपयोग यसक्रिप्ट-सक्षम सिस्टम पर glibc crypt() को बदलने के लिए किया जाता है।
musl C लाइब्रेरी स्कीम 1, 2, 5 और 6 के साथ-साथ परंपरा डीईएस स्कीम का समर्थन करती है। पारंपरिक डीईएस कोड बीएसडी फ्रीसेक पर आधारित है, जिसमें ग्लिबक यूएफसी-क्रिप्ट के साथ संगत होने के लिए संशोधन किया गया है।[33]
मैकोज़
डार्विन के मूल निवासी crypt()
सीमित कार्यक्षमता प्रदान करता है, केवल डीईएस और बीएसडीआई का समर्थन करता है। OS X अपने स्वयं के पासवर्ड हैश के लिए कुछ सिस्टम का उपयोग करता है, जो पुराने NeXTStep netinfo से लेकर नई डायरेक्टरी सर्विसेज (ds) सिस्टम तक है।[34][35]
यह भी देखें
- कुंजी व्युत्पत्ति समारोह
- साल्ट (गूढ़लेखिकी)
संदर्भ
- ↑ 1.0 1.1 FreeBSD Library Functions Manual –
- ↑ Simson Garfinkel, Alan Schwartz, Gene Spafford. "Practical Unix & Internet Security". 2003. section "4.3.2.3 crypt16( ), DES Extended, and Modular Crypt Format". "The Modular Crypt Format (MCF) specifies an extensible scheme for formatting encrypted passwords. MCF is one of the most popular formats for encrypted passwords"
- ↑ 3.0 3.1 3.2 3.3 "Modular Crypt Format — Passlib v1.7.1 Documentation". Pythonhosted.org. Retrieved 2 December 2018.
- ↑ "ademarre/binary-mcf". GitHub.com. Retrieved 2 December 2018.
- ↑ "क्रिप्ट - perldoc.perl.org". Perldoc.perl.org. Retrieved 2 December 2018.
- ↑ "PHP: crypt - Manual". Us.php.net. Retrieved 2 December 2018.
- ↑ "तहखाना ()". Archived from the original on 2012-10-02. Retrieved 2013-02-09.
- ↑ "crypt — Function to check Unix passwords — Python 3.7.1 documentation". Docs.python.org. Retrieved 2 December 2018.
- ↑ "Class: String (Ruby 2.5.3)". Ruby-doc.org. Retrieved 2 December 2018.
- ↑ Password Hash Competition. "पीएचसी स्ट्रिंग प्रारूप". Github.
- ↑ "crypt – password encoding". UNIX Third Edition Programmers' Manual. 1973-01-15.
- ↑ 12.0 12.1 Morris, Robert; Thompson, Ken (1978-04-03). "Password Security: A Case History". Bell Laboratories. Retrieved 2013-12-17.
- ↑ "crypt, setkey, encrypt – DES encryption". UNIX Seventh Edition Programmers' Manual. 1979.
- ↑ "Md5crypt Password scrambler is no longer considered safe by author — PHKs Bikeshed". Phk.freebsd.dk. Archived from the original on 17 March 2018. Retrieved 2 December 2018.
- ↑ Provos, Niels; Mazières, David (1999). "एक भविष्य-अनुकूलनीय पासवर्ड योजना". Proceedings of 1999 USENIX Annual Technical Conference: 81–92.
- ↑ Designer, Solar (2011-06-21). "crypt_blowfish 1.1; Owl glibc security update". See also CVE-2011-2483.
- ↑ "src/lib/libc/crypt/bcrypt.c – view – 1.27". Cvsweb.openbsd.org. Retrieved 2016-05-14.
- ↑ Designer, Solar (2012-01-02). "OpenBSD bcrypt 8-bit key_len wraparound".
- ↑ "NT MD4 password hash as new password encryption method for FreeBSD". Mail-archive.com. Retrieved 2 December 2018.
- ↑ "एनटीएलएम प्रमाणीकरण प्रोटोकॉल और सुरक्षा सहायता प्रदाता". Davenport.sourceforge.net. Retrieved 2 December 2018.
- ↑ 21.0 21.1 Drepper, Ulrich (19 September 2007). "Unix crypt with SHA-256/512". Retrieved 21 November 2018.
- ↑ Sun Microsystems. "crypt_sunmd5(5) man page". Archived from the original on 2008-04-16. Retrieved 2008-03-05.
- ↑ Muffett, Alec (2005-12-05). "OpenSolaris, Pluggable Crypt, and the SunMD5 Password Hash Algorithm". Retrieved 2012-08-11.
- ↑ 24.0 24.1 Drepper, Ulrich. "Unix crypt using SHA-256 and SHA-512".
- ↑ "FESCo Says "Yes" To Fedora 35 Using Yescrypt For Hashing Shadow Passwords - Phoronix". www.phoronix.com.
- ↑ "Changes/yescrypt as default hashing method for shadow - Fedora Project Wiki". libxcrypt: Is already capable for computing yescrypt hashes since v4.3.
- ↑
- ↑ "passlib.hash.bigcrypt - BigCrypt — Passlib v1.7.1 Documentation". Pythonhosted.org. Retrieved 2 December 2018.
- ↑ "passlib.hash.crypt16 - Crypt16 — Passlib v1.7.1 Documentation". Pythonhosted.org. Retrieved 2 December 2018.
- ↑ 30.00 30.01 30.02 30.03 30.04 30.05 30.06 30.07 30.08 30.09 30.10 30.11 "Debian manpage crypt". manpages.debian.org. Retrieved 11 Jan 2022.
- ↑ "bcrypt support for passwords in /etc/shadow - Red Hat Customer Portal". Access.redhat.com. Retrieved 2 December 2018.
- ↑ "आपके सॉफ़्टवेयर और आपके सर्वर के लिए bcrypt पासवर्ड हैशिंग ("पासवर्ड एन्क्रिप्शन")". www.openwall.com.
- ↑ "crypt_r.c\crypt\src - musl - musl - an implementation of the standard library for Linux-based systems". git.musl-libc.org.
- ↑ "कैसे मैक ओएस एक्स पासवर्ड प्रमाणीकरण लागू करता है". Dribin.org. Retrieved 2 December 2018.
- ↑ "मैक ओएस एक्स पासवर्ड कैसे क्रैक करें - ऑनलाइन हैश क्रैक". Onlinehashcrack.com. Retrieved 2 December 2018.
बाहरी संबंध
- Source code for crypt(3) from Seventh Edition Unix (implements proposed डीईएस)
- Sample password hash encoding strings
- .NET crypt implementation