मंगळवार, १२ फेब्रुवारी, २००८

उघड कुंजी कूटांकन (Public Key Encryption)

कूटांकन, विषेशतः (उघड कुंजी वापरून) म्हणजे काय प्रकार आहे आणि ह्या तंत्रज्ञानाचा वापर केल्याने आंतरजालावर तुमच्या वैयक्तीक किंवा इतर महत्वाच्या माहितीची बुरुजगळ न होता सुरक्षितपणे कसे व्यवहार करता येतात हे मी एकदा माझ्या मामाला समजावून सांगायचा प्रयत्न करत होतो. ही माहिती इतरांनाही उपयुक्त वाटेल असे वाटल्याने मी ती सोप्या शब्दात येथे देण्याचा प्रयत्न करीत आहे.

संगणकांच्या क्लिष्ट भाषेत शिरण्याआधी आपण एक साधे उदाहरण घेऊ.

समजा शैलेश पुण्यात आहे आणि त्याला एक कागदपत्रांची पेटी नरेंद्रला सुरक्षितपणे डोंबिवलीला पाठवायची आहे. शैलेश ती एखाद्या कुरीयर कंपनीकडे स्वाधीन करतो आणि मग ती कंपनी आपल्या विविध साधनांचा वापर करुन ती पेटी नरेंद्रला डोंबिवलीत पोचवते. पेटीतील दस्तऐवज कोणा अगांतुकाच्या हाती लागू नये म्हणून शैलेशने पेटीला भले मोठे कुलुप लावले आहे. आपल्या चर्चेपुरते असे समजा की ती पेटी आणि कुलुप अभेद्य धातूचे बनवलेले आहेत आणि फोडणे अशक्य आहे. पेटीतील कागदपत्रे मिळवण्याचा एकमेव मार्ग म्हणजे ते कुलुप उघडणे हा
होय.

आता आपल्यासमोर दोन प्रश्न आहेत. नरेंद्रला ही पेटी मिळाल्यावर तो ती उघडणार कशी? अर्थाच त्याला किल्ली वापरावी लागणार. दुसरा प्रश्न हा की नरेंद्रला ही किल्ली मिळणार कशी? म्हणजे काही ना काही मार्गाने शैलेशला ती किल्ली पुण्याहून डोंबिवलीला पाठवावी लागेल. म्हणजे परत किल्लीच्या सुरक्षिततेचा प्रश्न आला. म्हणजे नरेंद्र आणि शैलेशला पेट्यांची देवघेव करण्याआधी एकदा भेटून किल्ल्यांची देवघेव करावी लागेल. पण ह्या प्रकारे त्यांना एकाच पेटीची देवघेव करता येईल. किंवा एकाच किल्लीने उघडणारी अनेक कुलपे वापरावी लागतील.

समस्या १: समजा कुरीयर कंपनीच्या एखाद्या लबाड नोकराने काही करुन जर ही किल्ली मिळवली, तर
प्रत्येक देवघेवीच्या वेळी हा लबाड माणूस मधेच ती पेटी उघडून कागदांच्या प्रती काढून घेईल आणि शैलेश आणि नरेंद्रला पत्ताही लागणार नाही. म्हणजे समजा शैलेश नरेंद्रला शेअर बाजाराच्या उलाढालीविषयी महत्वाची कागदपत्रे पाठवित असेल तर हा लबाड नोकर मधल्यामधे त्या माहितीचा वापर करून शैलेश आणि नरेंद्रचे मोठे नुकसान करू शकतो.

समस्या २: आता ह्यावर उपाय म्हणून समजा शैलेश आणि नरेंद्रने दरवेळेला वेगळे कुलुप वापरायचं ठरवलं तर? पण प्रत्येक देवघेवीच्यावेळी शैलेशने कोणते कुलुप (आणि किल्ली) वापरले आहे ते नरेंद्रला कसं कळणार? समजा शैलेशने पेटीवर कुठल्या क्रमांकाची किल्ली वापरुन ते कुलुप उघडता येइल हे लिहिलं तर? पण कुठल्या किल्लीला कुठला क्रमांक दिला आहे ते नरेंद्रला कसं कळणार?

म्हणजे नरेंद्र आणि शैलेशला एकदा प्रत्यक्ष भेटून कुठल्या किल्लीला कुठला क्रमांक दिला आहे ते ठरवावे लागणार. आता तुम्ही विचाराल की प्रत्यक्ष भेटायची काय गरज आहे, एका पेटीतूनच ही माहिती नाही का पाठवता येणार? नाही. हे म्हणजे कोंबडी आधी की अंडं आधी हा प्रश्न सोडवण्यासारखं आहे. किल्ल्यांच्या क्रमांकांची सुरक्षितपणे देवघेव केल्याशिवाय आपण समस्या १ सोडवू शकत नाही. पण समस्या २ सोडवल्याशिवाय पेट्यांची देवघेव सुरक्षितपणे होऊ शकत नाही. म्हणजे समस्या १ आणि २ सोडवण्यासाठी नरेंद्र आणि शैलेशला प्रत्यक्ष भेटणे आवश्यक आहे (किल्ल्यांच्या क्रमांकांची देवघेव करायला).

समस्या ३: आपल्या उदाहरणामधील शैलेश आणि नरेंद्र जर एकमेकांचे मित्र असतील तर किल्ल्यांची देवघेव शक्य आहे. पण हेच दोन अपरिचित व्यक्तींना अशी किल्ल्यांची देवघेव कशी करणार? एकतर ह्या दोन अपरिचित व्यक्ती जगाच्या पाठीवर कुठेही असू शकतात, आणि त्यांनी भेटायचं ठरवलं तर ते एकमेकांना ओळखणार कसे? म्हणजे त्यांची ओळख पटवण्यासाठी परत एक मध्यस्थ लागणार. शिवाय जर ह्या दोन व्यक्ती जगाच्या दोन टोकांवर राहत असतील तर भेट खूपच महाग पडेल.

जर शैलेश आणि नरेंद्र वारंवार अशी कागदपत्रांची देवाणघेवाण करणार असतील तर अशी किती कुलपे आणि किल्ल्या त्यांना वापराव्या लागतील. पण शेवटी कुलपांच्या संख्यांनाही मर्यादा आहेच ना. जर का कुलुपांची संख्या मर्यादित असेल तर दीर्घ काळात परत (१) मध्ये सांगितलेली परिस्थिती उद्भवू शकते (मान्य आहे की अनेक कुलुपे वापरल्याने त्याची शक्यता कमी आहे).

पण समजा या पेट्यांतून पाठवलेल्या कागदपत्रांचा दुरुपयोग करून जर कोणाचा कोट्यावधींचा फायदा होणार असेल तर? अशा परिस्थितीत समजा कोणा अगांतुकाच्या हाती ती पेटी लागलीच तर ते कुलुप कोठल्या कंपनीचे आहे ते शोधून त्या कंपनीच्या सर्व चाव्या एक एक करून वापरुत ती पेटी एकदाची उघडणे तत्वतः शक्य आहे. आता प्रत्यक्षात असे कोणी करेल का? जर त्या पेटीतील महत्वाची माहिती वापरुन काही आर्थिक किंवा इतर प्रकारचा फायदा असेल आणि सगळ्या किल्ल्या वापरण्याच्या खटाटोपापेक्षा फायदा जास्त असेल तर कुणीतरी नक्कीच हा खटाटोप करील.

आता तुम्ही म्हणाल की एखाद्या कुलुपाच्या सर्व किल्ल्या एक एक करून लावून बघणे अशक्य कोटीतील बाब आहे. खरं आहे. पण आपले हे उदाहरण केवळ संदर्भासाठी आहे. आपल्या चर्चेचा विषय संगणकाच्या जगातला आहे आणि त्या जगात जिथे सर्वच गोष्टी अंकीय स्वरुपात असतात (कुलुप आणि किल्ली दोन्ही) तिथे एखादा महासंगणक वापरुन अश्याप्रकारे सर्व किल्ल्या वापरुन अंकिय कुलपे उघडणे अशक्य नाही.

ह्या सर्व चर्चेतून एक मुद्दा आपल्या लक्षात येईल की साधी कुलपे वापरली तर एका कुलपाला एक किल्ली असते. ज्या किल्लीने कुलुप लावता येते त्याच किल्लीने (किंवा त्याच किल्लीची प्रत) ते उघडावे लागते. पण नेमक्या ह्याच कारणामुळे, किल्ल्यांची सुरक्षितता हा एक मोठा प्रश्न होऊन बसतो. संगणकाच्या जगात ह्याला समानाकार कूटांकन (सिमेट्रिक क्रिप्टोग्राफी) म्हणतात. प्रत्यक्ष जगात जर एखादे कुलुप किल्लीशिवाय उघडायचे असेल तर फार वेळ लागेल. पण संगणकाच्या जगात हे फार सोपे आहे. जसे कुलपांना (आणि किल्ल्यांना) ७-८ खटके (लीव्हर) असतात तसे संगणकाच्या जगात आकडे असतात. जितका आकडा मोठे तेव्हढे किल्ली ओळखणे कठीण. पण वर सांगितल्याप्रमाणे एखादा महासंगणक वापरून एक एक करून सर्व किल्ल्या (आकडे) तपासून कुलुप उघडणे अशक्य नाही. मग आता यावर उपाय काय?

तात्पुरतं असं समजा की एखादं असं कुलुप आहे की त्याला दोन किल्ल्या आहेत. एका किल्लीने (किल्ली १) कुलुप लावता येतं, आणि एका किल्लीने (किल्ली २) लावता आणि उघडता येतं. किल्ली १ वरून किल्ली २ बनवता येत नाही, पण जर का किल्ली २ उपलब्ध असेल, तर त्यावरून किल्ली १ बनावता येते. आता ही नवी कुलपं आणि किल्ल्या वापरून आपण नरेंद्र आणि शैलेशची समस्या सुटते का ते पाहू.

नरेंद्र आपल्या दारावर कुलुपांची एक माळ आणि किल्ली १ च्या अनेक प्रती टांगून ठेवतो. किल्ली १ ने फक्त कुलुपे बंद करता येतात, त्यामुळे ही कुलुपं किंवा किल्यांचा इतर कोणाला काही उपयोग नाही. नरेंद्रची ही कुलपे उघडणारी किल्ली २ फक्त नरेंद्रकडेच आहे आणि त्याने ती सुरक्षित ठेवली आहे. जर कोणी नरेंद्रला काही पाठवू इच्छित असेल, तर ह्या माळेतले एक कुलुप-किल्ली काढून घ्यायची आणि आपला ऐवज पेटीत बंद करून, त्यावर हे कुलुप लावायचं. एकदा कुलुप लावलं की ते फक्त नरेंद्रलाच उघडता येईल, इतर कोणालाही नाही. कुलुप उघडणारी किल्ली नरेंद्रशिवाय इतर कोणालाही वापरावी लागत नाही, त्यामुळे ती कायम सुरक्षित राहते. नरेंद्र शैलेशला अनेक कुलपे आणि किल्ली १ साध्या पार्सलनेही पाठवू शकतो. अशाप्रकारे ह्या नवीन कुलपांमुळे वर सांगितलेल्या समस्या १ आणि २ सहज सुटल्या. पण समजा अशाच एका पार्सलमधून नरेंद्रने पाठवलेल्या कुलुप-किल्ल्या कोणीतरी काढून घेऊन त्याजागी आपल्या कुलुप-किल्ल्या त्या पार्सलमध्ये ठेवल्या तर? शैलेश खात्रीने कसे सांगू शकणार की त्याला नरेंद्रच्या नावाने आलेल्या ह्या किल्ल्या त्याच्याच आहेत म्हणून? तो नरेंद्रला इतर मार्गाने (दूरध्वनीवरून, प्रत्यक्षात भेटून) खात्री करू शकतो. एकदा का शैलेशची खात्री झाली की मग काही अडचण नाही. आता समस्या ३ सोडवण्यासाठी काय करावे लागेल ते पाहू. वर सांगितल्याप्रमाणे ही समस्या सोडवायला एका मध्यस्थाची गरज आहे. ज्या व्यक्तीवर/संस्थेवर दोन्ही पक्षांचा विश्वास आहे त्या हे काम करू शकतात. मग हा मध्यस्थ दोन्ही कडच्या कुलपांची खात्री करून त्यांना ग्वाही देऊ शकतो, त्यासाठी दोन पक्षांना प्रत्यक्षात भेटायची गरज नाही, कारण कुलुप-किल्ल्यांची देव-घेव बिनाकुलपाच्या पेटीतून होऊ शकते.

अशा प्रकारच्या कूटांकनाला संगणकाच्या जगात विषमाकार कूटांकन म्हणतात. अत्यंत क्लिष्ट गणित वापरून वर सांगितलेल्या किल्ल्या बनवल्या जातात. किल्ली १ ला उघड कुंजी म्हणतात कारण ती उघड-उघड कोणालाही देता येते. किल्ली २ ला गुप्त कुंजी म्हणतात, कारण ती आपण फक्त आपल्याकडेच सुरक्षित ठेवतो. उघड कुंजी असेल तर ती वापरून गुप्त कुंजी ओळखणे अत्यंत अवघड आहे, पण अशक्य नाही. आता तुम्ही म्हणाल, जर समानाकार कूटांकनात जसे एखादा महासंगणक वापरून कुलुपावरून किल्ली ओळखता येते तशीच विषमाकार कूटांकनात का नाही येणार? प्रश्न बरोबर आहे. पण आज उपलब्ध असलेल्या मोठ्यात मोठ्या संगणकालाही उघड कुंजीवरून गुप्त कुंजी ओळखायला अनेक वर्षे लागतील, इतके हे गणित क्लिष्ट आहे. शिवाय जसजशी संगणकांची क्षमता वाढत जाईल तसतसे मोठमोठ्या आकड्याच्या किल्ल्या वापरल्या जातील. म्हणूनच उघड कुंजी कुटांकन सुरक्षित समजले जाते. आज हे तंत्रज्ञान वापरून तुम्ही आंतरजालावर सर्व प्रकारचे व्यवहार सुरक्षितपणे करू शकता.

उघड कुंजी कुटांकनामागचे गणितही फार लक्षवेधक आणि मनोरंजक आहे, पण त्याबद्दल पुन्हा कधीतरी...

Powered by ScribeFire.

३ टिप्पण्या:

Shreya's Shop म्हणाले...

बापरे ! फारच क्लिष्ट आहे. पण आपल्याला याचा उपयोग कसा आणि कुठे करता येईल ?

Amit Bapat म्हणाले...

आपण दररोज ह्या तंत्रज्ञानाचा उपयोग करता, आणि तुम्हाला पत्ताही लागत नाही. आहे ना सोपं. तुम्ही जेव्हा तुमच्या ब्राउझर मध्ये https:// असा दुवा बघता, तेव्हा तुमचा ब्राउझर public key encryption वापरत असतो ह्याची खात्री बाळगा.

Unknown म्हणाले...

Bap re kathin ahe......