कूटनतंत्राची (एन्क्रिप्शन) तोंडओळख - ३
या आधी - कूटनतंत्राची (एन्क्रिप्शन) तोंडओळख - २
मागील भागात सांगितल्याप्रमाणे कोणत्याही कूटन कृतीक्रमाची परिपूर्णता आणि सुरक्षितता त्यात वापरल्या गेलेल्या 'की' वर खूप अवलंबून असते. आधी सांगितलेल्या सब्स्टिट्यूशन किंवा कॉलमर सायफरमध्ये सरळसोटपणे 'की' वापरली गेलीच नव्हती; त्यामुळे 'की म्हणजे काय आणि ती कूटन कृतीक्रमात कशी वापरली जाते, याची ओळख या भागात करून घेऊया.
संगणकशास्त्र किंवा विद्युत अभियांत्रिकी यांचा अभ्यास केलेल्यांना बूलिअन बीजगणिताबद्दल वेगळे सांगायला नकोच. बूलिअन गणित हे या दोन्ही शास्त्रांचा आणि पर्यायाने विद्युत उपकरणे, संगणक, भ्रमणध्वनी इ. वस्तूंचा पायाच म्हणता येईल. मात्र ज्यांना ही ओळख नाही, त्यांना अगदी थोडक्यातच येथे करून देतो. कारण ही प्राथमिक माहिती असणे 'की'चे कार्य समजण्यासाठी आणि एकंदरच विविध कूटन कृतीक्रम आणि त्यांच्यातील साम्य तसेच फरक समजून घेण्यासाठी खूप उपयुक्त आहे.
हा भाग बूलिअन बीजगणित, त्यातील प्राथमिक प्रक्रिया, अक्षरे व अंकांचे द्विमान पद्धतीमधील (बायनरी सिस्टम) रूप आणि त्या सगळ्याचा 'की' आणि कूटन कृतीक्रमाशी संबंध यांवर केंद्रित असल्याने ज्या वाचकांना याबद्दल आधीच पुरेशी माहिती आहे, त्यांनी हा लेख वरवर चाळला, दुर्लक्षित केला तरी चालण्यासारखे आहे. मात्र उजळणी म्हणून आणि कूटन कृतीक्रमात या सगळ्याचा वापर कसा केला जातो, याबद्दलचे कुतूहल म्हणून वाचण्यास हरकत नसावी!
बूलिअन बीजगणित हे केवळ १ (एक) आणि ० (शून्य) या दोनच अंकांवर आधारलेले आहे. यांना बायनरी डिजिट्स (Binary Digits) - किंवा संक्षिप्त रुपात बिट्स (Bits) - असे म्हणतात. त्यांपैकी १ हा सर्वसाधारणपणे 'हाय वोल्टेज' किंवा एखाद्या सिग्नलचे अस्तित्त्व 'आहे', हे प्रतीत करण्यासाठी वापरला जातो; तर ० हा 'लो वोल्टेज' किंवा सिग्नलचे अस्तित्त्व 'नाही' हे दर्शविण्यासाठी वापरला जातो. अंकगणितात जशा बेरीज, वजाबाकी, गुणाकार, भागाकार या प्राथमिक प्रक्रिया आहेत, त्याप्रमाणे बूलिअन बीजगणितात अॅन्ड (AND), ऑर (OR) आणि नॉट (NOT) या तीन मूलभूत प्रक्रिया आहेत. १, ० आणि त्यांमधील या तीन मूलभूत प्रक्रियांचे निकाल खालील सत्यसरणीत (ज्याला बूलिअन बीजगणिताच्या आणि तर्कशास्त्राच्या परिभाषेत ट्रुथ टेबल म्हणतात) प्रमाणे आहेत (सोयीसाठी AND साठी &, OR साठी | आणि NOT साठी ~ ही चिह्ने वापरली आहेत; तर = या चिह्नाला त्याचा नेहमीचाच अर्थ आहे) -
० & ० = ०, ० | ० = ०
० & १ = ०, ० | १ = १
१ & ० = ०, १ | ० = १
१ & १ = १, १ | १ = १
~ ० = १, ~ १ = ०
या मूलभूत प्रक्रियांच्या जोडीला नॅन्ड (NAND), नॉर (NOR) आणि एक्सॉर (XOR) या प्रक्रिया आहेत. कूटनशास्त्राच्या दृष्टीने एक्सॉर (XOR) ही प्रक्रिया सगळ्यात जास्त महत्त्वाची आहे. एक्सॉर प्रक्रियेचे निकाल आता पाहू. या प्रक्रियेमध्ये निकाल १ तेव्हाच असतो, जेव्हा प्रक्रियेत सामील होणारे दोन्ही अंक १ किंवा ० असतात. दोन्हींपैकी एकच अंक १ किंवा ० असेल, तर निकाल ० असतो. थोडक्यात समान (सेम) 'इनपुट' वरील एक्सॉर प्रक्रियेचा निकाल १ तर अन्य (असमान) 'इन्पुट्स' वरील एक्सॉर प्रक्रियेचा निकाल ० असतो.
एक्सॉर प्रक्रियेची सत्यसारणी (ट्रुथ टेबल) -
० XOR ० = १
० XOR १ = ०
१ XOR ० = ०
१ XOR १ = १
संगणकीय गणनांमध्ये कोणतेही अक्षर, चिह्न, अंक, विरामचिह्ने इ. त्यांच्या द्विमान पद्धतीमधील रुपात वापरली जातात. याचाच अर्थ कोणतेही अक्षर, चिह्न, अंक, विरामचिह्न हे ० आणि १ यांच्या - अर्थात बिट्सच्या - मालगाडीच्या रुपात (string of bits) व्यक्त केले जाते. उदाहरणार्थ A चे द्विमान पद्धतीतील मूल्य ०१०००००१आहे, p चे ०१११०००० आहे, ब्लॅन्क स्पेस चे ००१००००० आहे, > चे ००१११११० आहे तर ८ चे ००१११००० आहे. लक्षात घ्या एकाच अक्षराच्या कॅपिटल आणि स्मॉल लिपीतील रुपाचे द्विमान पद्धतीमधील रूपही वेगवेगळे असते. याचाच अर्थ असा की संगणकाच्या दृष्टीने - तसेच कूटनप्रक्रियेच्या दृष्टीने, 'की'च्या दृष्टीने A आणि a ही दोन वेगळी अक्षरे असतात.
खरे सांगायचे तर 'की' म्हणजे तरी काय हो? 'की' म्हणजे दुसरेतिसरे काही नसून एक साधासोपा अक्षर/चिन्ह/अंक यांचा समूह. मूळ मजकूर आणि 'की' या दोहोंच्या द्विमान पद्धतीमधील रुपांमध्ये एक्सॉर प्रक्रिया करून जे मिळते तेच मूळ मजकुराचे सांकेतिक रूप होय. जो मजकूर सांकेतिक रुपात पाठवायचा आहे तो आणि 'की यांमधील एक्सॉर (XOR) प्रक्रिया हा कूटन कृतीक्रमाचा गाभा आहे. उदाहरणार्थ, मूळ शब्द आहे DOG आणि 'की' आहे KEY, तर मूळ शब्दाचे सांकेतिक रूप काय होईल ते पाहू.
D चे द्विमान रूप - ०१०००१००
O चे द्विमान रूप - ०१००११११
G चे द्विमान रूप - ०१०००१११
त्यामुळे मूळ शब्दाचे अर्थात DOG चे द्विमान रूप होईल - ०१०००१०००१००११११०१०००१११
K चे द्विमान रूप - ०१००१०११
E चे द्विमान रूप - ०१०००१०१
Y चे द्विमान रूप - ०१०११००१
त्यामुळे 'की'चे अर्थात KEY चे द्विमान रूप होईल - ०१००१०११०१०००१०१०१०११००१
मूळ शब्द आणि 'की'च्या द्विमान रूपात एक्सॉर प्रक्रिया करून जे मिळेल, ते मूळ शब्दाच्या सांकेतिक रुपाचे द्विमान पद्धतीतील रूप असेल.
०१०००१०००१००११११०१०००१११ XOR ०१००१०११०१०००१०१०१०११००१ = ११११००००११११०१०११११००००१ अर्थात ðõÁ
अशा प्रकारे आपल्या कूटन कृतीक्रमात DOG चे सांकेतिक रूप आहे ðõÁ आणि की आहे KEY. त्यामुळे जेव्हा तुम्ही तुमच्या मित्राला पाठवायच्या मजकुरात DOG हा शब्द लिहाल तेव्हा मित्राच्या हातात ðõÁ हे पडेल!
पण तुमच्या मित्राला ðõÁ हे म्हणजे DOG आहे, हे कसे बरे कळेल? त्यासाठी तुम्ही जी 'की' वापरलीत, ती तुमच्या मित्रालाही माहीत हवी! मिळालेल्या सांकेतिक मजकुरातून मूळ मजकूर परत मिळवण्यासाठी मित्र फक्त काय करेल, तर सांकेतिक मजकुराचे द्विमान रूप आणि 'की'चे द्विमान रूप यांच्यात एक्सॉर प्रक्रिया!!
सांकेतिक रुपाचे द्विमान रूप = ११११००००११११०१०११११००००१
'की'चे द्विमान रूप = ०१००१०११०१०००१०१०१०११००१
दोहोंमधील एक्सॉर प्रक्रियेचा निकाल =
११११००००११११०१०११११००००१ XOR ०१००१०११०१०००१०१०१०११००१ = ०१०००१०००१००११११०१०००१११
०१०००१०००१००११११०१०००१११????????!!!!!!!! अरेच्चा!! हे तर DOG चे सांकेतिक रूप (वर पहा)!!! हे कसे झाले? हे होण्याचे कारण असे की एक्सॉर प्रक्रिया परावर्तनीय (Reversible) आहे; एक्सॉर प्रक्रियेतील दोन्ही इन्पुट्स पैकी एकाची त्यांच्यातल्या एक्सॉर प्रक्रियेच्या निकालाशी पुन्हा एक्सॉर प्रक्रिया केली, तर दुसरे इन्पुट मिळवता येते!
इन्पुट १ XOR इन्पुट २ = निकाल
इन्पुट १ XOR निकाल = इन्पुट २
इन्पुट २ XOR निकाल = इन्पुट १
आपल्या उदाहरणात इन्पुट १ होते मूळ मजकूर (DOG) आणि इन्पुट २ होते 'की'(KEY) त्यामुळे जर 'की' (इन्पुट २ = KEY) माहीत असेल आणि निकाल (मूळ शब्दाचे सांकेतिक रूप अर्थात आपल्या उदाहरणानुसार ðõÁ) माहीत असेल, तर त्यांच्यातील एक्सॉर (XOR) प्रक्रियेतून इन्पुट १ म्हणजे मूळ शब्द (DOG) नक्कीच शोधून काढता येईल, नाही का!
तुमचा तुमच्या मित्राशी चालू असलेला संवाद तिसर्या कोणालाही 'की' माहीत नसेल तर गुप्तच राहील. कारण त्या तिसर्या दुष्ट मनुष्याचा हाती केवळ ðõÁ लागेल आणि 'की' माहीत नसल्याने त्याला 'की'शी एक्सॉर प्रक्रिया करून त्यातून मूळ मजकूर - अर्थात DOG - परत मिळवता येणार नाही.
म्हणूनच मागच्या भागात लिहिले होते की 'की' ही कोणत्याही कूटन कृतीक्रमाची जान आहे. 'की' ओळखता आली, की तो कूटन कृतीक्रम फसलाच!
या उदाहरणात कूटन तसेच अकूटनासाठी एकच 'की' वापरली आहे. या प्रकारच्या कूटन कृतीक्रमाला 'सिमेट्रिक की' अल्गोरिदम म्हणतात; कारण कूटन आणि अकूटन दोन्हीसाठी एकच, समान 'की' वापरण्यात आली आहे. ज्यावेळी कूटन आणि अकूटनासाठी वेगळ्या 'की' वापरल्या जातात, त्यावेळी त्याला 'असिमेट्रिक की' अल्गोरिदम म्हटले जाते. ज्या कूटनप्रणालीमध्ये कूटन-अकूटनासाठी एकच, समान 'की' वापरली जाते, त्याला 'शेअर्ड सीक्रेट की' अल्गोरिदम असेही म्हटले जाते कारण ज्याने मजकूर पाठवलाय तो (ज्या बाजूस कूटन होते ती) आणि ज्याला मजकूर पाठवला गेलाय तो (ज्या बाजूस अकूटन होते ती) असे दोघेही एकच, समान 'की' 'शेअर करतात'.
जर का अशी 'की' तिसर्याच कोणाच्या हाती पडली, तर मात्र संवाद 'गुप्त' राहू शकणार नाही. दुसरी अशीही गोम आहे की येनकेनप्रकारेण मूळ मजकूर गवसलाच, आणि मूळ मजकूर व त्याचे सांकेतिक रूप अशा दोन्हीचा पुरेसा साठा तयार झाला, तरीही 'की' ओळखता येऊ शकेल. पण प्रस्तुत लेखमाला केवळ तोंडओळख स्वरूपाची असल्याने त्या क्लिष्ट बाजूस आता न गेलेलेच श्रेयस्कर!
पुढील भागात एक-दोन प्रसिद्ध कूटन कृतीक्रम - जे 'सिमेट्रिक की' वापरतात - ते पाहू; आणि 'असिमेट्रिक की' तसेच अशी की वापरून तयार होणारे कूटन कृतीक्रम यांबाबत मूलभूत माहिती मिळवू.
या भागातील स्मरणीय गोष्टी -
१. बूलिअन बीजगणितातील एक्सॉर (XOR )प्रक्रिया, तिचे प्रमुख वैशिष्ट्य आणि कूटनशास्त्रातील तिचे महत्त्व
२. सिमेट्रिक की आणि असिमेट्रिक की
Book traversal links for कूटनतंत्राची (एन्क्रिप्शन) तोंडओळख - ३
वर्गीकरण
प्रतिक्रिया
हा भाग
छान प्रतिसाद दिलास गोगोल
>हा भाग काही जमला नाही. उगाचच
अर्थात काही गोष्टी बद्दल
किज आणि मेसेज सारख्याच लांबीचे
तरी पण थोडी शंका आहेच. "this
शंकासमाधान
धन्यवाद.
अर्थात कदाचित याचे सोपे उत्तर
व्हॅटेवर वर्क्स फोर यु
छान,
आधिचे दोन्ही व हा लेखही उत्तम
मस्त लेख पूढील भागाच्या प्रतीक्षेत.
वाचत आहे.
लाडू, वचन दिल्यानुसार झोपून
शुद्धीपत्र | दिलगिरी | आभार
छान चालली आहे