की स्ट्रेचिंग

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

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

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

की स्ट्रेचिंग एक हमलावर के पास दो विकल्प छोड़ती है:
 * उन्नत कुंजी के संभावित संयोजनों का प्रयास करें, किंतु यह संभव नहीं है यदि उन्नत कुंजी पर्याप्त रूप से लंबी और अप्रत्याशित है ( ⁠i.e.,एल्गोरिदम यादृच्छिकता की इतनी अच्छी तरह से नकल करता है कि हमलावर को संपूर्ण विस्तारित कुंजी स्थान का परीक्षण करना चाहिए)
 * अशक्त प्रारंभिक कुंजी के संभावित संयोजनों का प्रयास करें संभावित रूप से एक शब्दकोश हमले के साथ शुरू हो रहा है यदि प्रारंभिक कुंजी एक पासवर्ड या पासफ़्रेज़ है, किंतु प्रत्येक परीक्षण के लिए हमलावर का अतिरिक्त प्रयास हमले को असंवैधानिक बना सकता है, मूल्यवान गणना और मेमोरी की खपत अपेक्षित लाभ से अधिक होनी चाहिए

यदि हमलावर उपयोगकर्ता के समान हार्डवेयर वर्ग का उपयोग करता है तो प्रत्येक अनुमान को संसाधित करने में उतना ही समय लगेगा जितना कि उपयोगकर्ता को लगा (उदाहरण के लिए एक सेकंड)। यहां तक ​​कि यदि हमलावर के पास उपयोगकर्ता की तुलना में बहुत अधिक कंप्यूटिंग संसाधन हैं तो भी किसी भी वैध उपयोगकर्ता के लिए प्रणाली की उपयोगिता को गंभीरता से प्रभावित नहीं करते हुए की स्ट्रेचिंग हमलावर को धीमा कर देगी। ऐसा इसलिए है क्योंकि उपयोगकर्ता के कंप्यूटर को उपयोगकर्ता द्वारा अपना पासवर्ड अंकित करने पर केवल एक बार स्ट्रेचिंग कार्य की गणना करनी होती है जबकि हमलावर को हमले में हर अनुमान के लिए इसकी गणना करनी चाहिए।

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

हैश-आधारित
कई पुस्तकालय ऐसे कार्य प्रदान करते हैं जो उनके कार्य के भाग के रूप में की स्ट्रेचिंग करते हैं; एक उदाहरण के लिए क्रिप्ट (C) क्रिप्ट(3) देखें। पीबीकेडीएफ2 पासवर्ड से एन्क्रिप्शन कुंजी उत्पन्न करने के लिए है और पासवर्ड प्रमाणीकरण के लिए जरूरी नहीं है। पीबीकेडीएफ2 का उपयोग दोनों के लिए किया जा सकता है यदि आउटपुट बिट्स की संख्या पीबीकेडीएफ2 में प्रयुक्त आंतरिक हैशिंग एल्गोरिथम से कम या उसके समान है जो सामान्यतः एसएचए-2 (512 बिट्स तक) है या स्थैतिक डेटा को एन्क्रिप्ट करने के लिए एन्क्रिप्शन कुंजी के रूप में उपयोग किया जाता है।

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

परीक्षण पासवर्ड या पासफ़्रेज़ का परीक्षण करने के लिए सामान्यतः एक हैश ऑपरेशन की आवश्यकता होती है। किंतु यदि कुंजी स्ट्रेचिंग का उपयोग किया गया था, तो हमलावर को प्रत्येक परीक्षण के लिए एक शक्तिशाली कुंजी की गणना करनी चाहिए जिसका अर्थ है कि प्रति परीक्षण की गणना करने के लिए 65,000 हैश हैं। इससे हमलावर का वर्कलोड 65,000 के कारक से लगभग 216 बढ़ जाता है जिसका अर्थ है कि बढ़ी हुई कुंजी कुंजी शक्ति में लगभग 16 अतिरिक्त बिट्स के योग्य है।

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

सीपीयू-बाउंड हैश कार्य अभी भी कस्टम हार्डवेयर हमला के प्रति संवेदनशील हैं। एसएचए-1 के ऐसे कार्यान्वयन में 5,000 गेट्स और 400 घड़ी चक्रों का उपयोग होता है। $100 से कम लागत वाले मल्टी-मिलियन गेट एफपीजीए के साथ एक हमलावर लगभग $5,000 में पूरी तरह से लूप अनोलिंग हार्डवेयर क्रैकर बना सकता है। 100 मेगाहर्ट्ज पर क्लॉक किया गया ऐसा डिज़ाइन लगभग 300,000 कुंजी/सेकेंड का परीक्षण कर सकता है। हमलावर एक अच्छी कीमत/गति समझौता चुनने के लिए स्वतंत्र है उदाहरण के लिए $2,500 के लिए 150,000 कुंजी/दूसरा डिज़ाइन की स्ट्रेचिंग अभी भी ऐसी स्थिति में हमलावर को धीमा कर देती है; सीधे एसएचए-1 हैश पर हमला करने वाला $5,000 का डिज़ाइन 300,000÷216 ≈ 4.578 की/सेकंड को आज़माने में सक्षम होगा

इसी तरह आधुनिक उपभोक्ता जीपीयू हैशिंग को अधिक तेज कर सकते हैं। उदाहरण के लिए, एक बेंचमार्क में, एक एनवीडिया आरटीएक्स 2080 सुपर एफई 10 बिलियन एसएचए1 हैश प्रति सेकंड से अधिक की गणना करता है।

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

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

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

2009 में, कुंजी परीक्षण को गति देने के लिए कस्टम अत्यधिक समानांतर हार्डवेयर के उपयोग को सीमित करने के आशय से एक स्मृति-गहन कुंजी सुदृढ़ीकरण एल्गोरिदम, लिखी हुई कहानी प्रस्तुत किया गया था।

2013 में, एक उत्तम की स्ट्रेचिंग मानक का चयन करने के लिए एक पासवर्ड हैशिंग प्रतियोगिता आयोजित की गई थी जो ग्राफिक्स प्रोसेसर और विशेष प्रयोजन हार्डवेयर के हमलों का विरोध करेगी विजेता, आर्गन2, 1 जुलाई 2015 को चुना गया था।

कुछ प्रणालियाँ जो की स्ट्रेचिंग का उपयोग करती हैं
कुछ डिस्क एन्क्रिप्शन सॉफ्टवेयर की तुलना नहीं (डिस्क एन्क्रिप्शन सॉफ़्टवेयर की तुलना देखें):


 * 7- 7-ज़िप
 * अपाचे एचटीटीपी सर्वर .एचटीपासवार्ड अप्रैल 1और ओपनएसएसएल पासवार्ड एमडी5 की स्ट्रेचिंग के 1000 राउंड का उपयोग करते हैं।
 * कीपास और कीपासएक्ससी, फ्री और ओपन-सोर्स सॉफ्टवेयर ओपन-सोर्स पासवर्ड प्रबंधक यूटिलिटीज 2020 तक नवीनतम संस्करण डिफ़ॉल्ट 1 सेकंड की स्ट्रेचिंग देरी के साथ आर्गन2डी का उपयोग करता है।
 * लिनक्स और कुछ अन्य यूनिक्स-जैसी प्रणालियाँ एसएचए क्रिप्ट मोड प्रदान करती हैं जो डिफ़ॉल्ट रूप से न्यूनतम 1000 और अधिकतम 999,999,999 के साथ 5000 एसएचए256 या एसएचए512 हैश पुनरावृत्तियों का प्रदर्शन करती हैं।
 * पासवर्ड सुरक्षित फ्री और ओपन-सोर्स सॉफ्टवेयर ओपन-सोर्स पासवर्ड मैनेजर।
 * अधिक अच्छी गोपनीयता, जीएनयू प्राइवेसी गार्ड एनक्रिप्शन सॉफ्टवेयर जीपीजी डिफ़ॉल्ट रूप से हैश को 65536 बार दोहराता है।
 * व्यक्तिगत मोड में वाई-फाई संरक्षित पहुंच (डब्ल्यूपीए और डब्ल्यूपीए2) वायरलेस एन्क्रिप्शन प्रोटोकॉल ने 4096 पुनरावृत्तियों के साथ पीबीकेडीएफ2 का उपयोग किया। (डब्ल्यूपीए3 समान के एक साथ प्रमाणीकरण का उपयोग करता है जो पासवर्ड हैश को उजागर नहीं करने का प्रमाण करता है।)

यह भी देखें

 * कुंजी व्युत्पत्ति समारोह - अधिकांशतः कुंजी खींच का उपयोग करता है
 * पीबीकेडीएफ2, बीक्रिप्ट स्क्रिप्ट आर्गन2 - व्यापक रूप से उपयोग किए जाने वाले प्रमुख स्ट्रेचिंग एल्गोरिदम
 * हैश चेन