क्रिप्ट (सी)

From Vigyanwiki
Revision as of 11:19, 21 May 2023 by alpha>Akriti


क्रिप्ट एक सी पॉज़िक्स लाइब्रेरी प्रकार्य है। यह सामान्यतः उपयोगकर्ता खाता पासवर्ड के गूढ़लेखिकी हैश प्रकार्य की गणना करने के लिए उपयोग किया जाता है। प्रकार्य एक टेक्स्ट स्ट्रिंग को निर्गम करता है जो साल्ट (गूढ़लेखिकी) को भी कोड करता है (सामान्यतः पहले दो वर्ण स्वयं साल्ट होते हैं और शेष हैशेड परिणाम होता है), और उपयोग किए गए हैश एल्गोरिदम की पहचान करता है (पारंपरिक रूप से नीचे समझाया गया है)। यह निर्गम स्ट्रिंग एक पासवर्ड अभिलेखबद्ध बनाता है, जो सामान्यतः टेक्स्ट फ़ाइल में संग्रहीत होता है।

अधिक औपचारिक रूप से, क्रिप्ट यूनिक्स सिस्टम पर पासवर्ड सत्यापन और भंडारण के लिए गूढ़लेखिकी कुंजी व्युत्पत्ति प्रकार्य प्रदान करता है।

यूनिक्स क्रिप्ट उपयोगिता से संबंध

यूनिक्स में एक असंबंधित क्रिप्ट (यूनिक्स) उपयोगिता है, जिसे प्रायः सी लाइब्रेरी प्रकार्य के साथ भ्रमित किया जाता है। दोनों के बीच अंतर करने के लिए, लेखक प्रायः उपयोगिता प्रोग्राम को 'क्रिप्ट (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

$8$aes256-gcm$hmac-एसएचए2-256$100$y/4YMC4YDLU$fzYDI4jjN6YCyQsYLsaf8A$Ilu4jLcZarD9YnyD /Hejww$okhBlc0cGakSqYxKww

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. 1.0 1.1 crypt(3) – FreeBSD Library Functions Manual
  2. 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. 3.0 3.1 3.2 3.3 "Modular Crypt Format — Passlib v1.7.1 Documentation". Pythonhosted.org. Retrieved 2 December 2018.
  4. "ademarre/binary-mcf". GitHub.com. Retrieved 2 December 2018.
  5. "क्रिप्ट - perldoc.perl.org". Perldoc.perl.org. Retrieved 2 December 2018.
  6. "PHP: crypt - Manual". Us.php.net. Retrieved 2 December 2018.
  7. "तहखाना ()". Archived from the original on 2012-10-02. Retrieved 2013-02-09.
  8. "crypt — Function to check Unix passwords — Python 3.7.1 documentation". Docs.python.org. Retrieved 2 December 2018.
  9. "Class: String (Ruby 2.5.3)". Ruby-doc.org. Retrieved 2 December 2018.
  10. Password Hash Competition. "पीएचसी स्ट्रिंग प्रारूप". Github.
  11. "crypt – password encoding". UNIX Third Edition Programmers' Manual. 1973-01-15.
  12. 12.0 12.1 Morris, Robert; Thompson, Ken (1978-04-03). "Password Security: A Case History". Bell Laboratories. Retrieved 2013-12-17.
  13. "crypt, setkey, encrypt – DES encryption". UNIX Seventh Edition Programmers' Manual. 1979.
  14. "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.
  15. Provos, Niels; Mazières, David (1999). "एक भविष्य-अनुकूलनीय पासवर्ड योजना". Proceedings of 1999 USENIX Annual Technical Conference: 81–92.
  16. Designer, Solar (2011-06-21). "crypt_blowfish 1.1; Owl glibc security update". See also CVE-2011-2483.
  17. "src/lib/libc/crypt/bcrypt.c – view – 1.27". Cvsweb.openbsd.org. Retrieved 2016-05-14.
  18. Designer, Solar (2012-01-02). "OpenBSD bcrypt 8-bit key_len wraparound".
  19. "NT MD4 password hash as new password encryption method for FreeBSD". Mail-archive.com. Retrieved 2 December 2018.
  20. "एनटीएलएम प्रमाणीकरण प्रोटोकॉल और सुरक्षा सहायता प्रदाता". Davenport.sourceforge.net. Retrieved 2 December 2018.
  21. 21.0 21.1 Drepper, Ulrich (19 September 2007). "Unix crypt with SHA-256/512". Retrieved 21 November 2018.
  22. Sun Microsystems. "crypt_sunmd5(5) man page". Archived from the original on 2008-04-16. Retrieved 2008-03-05.
  23. Muffett, Alec (2005-12-05). "OpenSolaris, Pluggable Crypt, and the SunMD5 Password Hash Algorithm". Retrieved 2012-08-11.
  24. 24.0 24.1 Drepper, Ulrich. "Unix crypt using SHA-256 and SHA-512".
  25. "FESCo Says "Yes" To Fedora 35 Using Yescrypt For Hashing Shadow Passwords - Phoronix". www.phoronix.com.
  26. "Changes/yescrypt as default hashing method for shadow - Fedora Project Wiki". libxcrypt: Is already capable for computing yescrypt hashes since v4.3.
  27. "passlib.hash.bigcrypt - BigCrypt — Passlib v1.7.1 Documentation". Pythonhosted.org. Retrieved 2 December 2018.
  28. "passlib.hash.crypt16 - Crypt16 — Passlib v1.7.1 Documentation". Pythonhosted.org. Retrieved 2 December 2018.
  29. 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.
  30. "bcrypt support for passwords in /etc/shadow - Red Hat Customer Portal". Access.redhat.com. Retrieved 2 December 2018.
  31. "आपके सॉफ़्टवेयर और आपके सर्वर के लिए bcrypt पासवर्ड हैशिंग ("पासवर्ड एन्क्रिप्शन")". www.openwall.com.
  32. "crypt_r.c\crypt\src - musl - musl - an implementation of the standard library for Linux-based systems". git.musl-libc.org.
  33. "कैसे मैक ओएस एक्स पासवर्ड प्रमाणीकरण लागू करता है". Dribin.org. Retrieved 2 December 2018.
  34. "मैक ओएस एक्स पासवर्ड कैसे क्रैक करें - ऑनलाइन हैश क्रैक". Onlinehashcrack.com. Retrieved 2 December 2018.


बाहरी संबंध