इंटरनेट: एनक्रीप्शन आणि सार्वजनिक कीज हाय, माझं नाव आहे मिया गिल-एपनर, माझा युसी बर्कलेमध्ये कॉम्प्युटर सायन्स हा मुख्य विषय आहे. मी संरक्षण विभागासाठी काम करते, तिथं मी माहिती सुरक्षित ठेवण्याचा प्रयत्न करते. इंटरनेट एक खुली आणि सार्वजनिक व्यवस्था आहे. आपण सामायिक वायर्स आणि कनेक्शन्सवरून माहिती पाठवतो. पण ही खुली प्रणाली असली तरीही आपण मोठ्या प्रमाणावर खाजगी डेटाची देवाण-घेवाण करतो. म्हणजे क्रेडीट कार्डाचा क्रमांक, बँकेची माहिती, पासवर्ड्स आणि ईमेल यासारख्या गोष्टी. मग या सगळ्या खाजगी गोष्टी गोपनीय कशा ठेवल्या जातात? कोणत्याही प्रकारचा डेटा एनक्रीप्शन नावाच्या प्रक्रियेद्वारे गोपनीय ठेवला जातो, यात मजकूर लपवण्यासाठी मेसेज एकत्र मिसळला किंवा बदलला जातो. डीक्रीप्शन प्रक्रियेत मिसळलेला मेसेज पुन्हा वाचण्यायोग्य केला जातो. ही एक साधी कल्पना आहे आणि लोक याचा वापर कित्येक शतकांपासून करत आहेत. एनक्रीप्शनच्या माहिती असलेल्या पहिल्या काही पद्धतींपैकी एक म्हणजे सीझरचे सायफर. रोमन सेनानी ज्युलियस सीझरवरून हे नाव देण्यात आले आहे. त्याने लष्करी आज्ञा एनक्रीप्ट केल्या जेणे करून त्या शत्रूच्या हाती लागल्या तरी त्यांना वाचता येणार नाहीत. सीझर सायफर हा एक अल्गोरीदम असून त्यात मूळ मेसेजमधील प्रत्येक अक्षर बाराखडीतील ठराविक संख्येनंतर येणाऱ्या दुसऱ्या एका अक्षराने बदललेले असते. जर ही संख्या फक्त पाठवणाऱ्याला आणि स्वीकारणाऱ्याला माहिती असेल, तर तिला 'की' असे म्हणतात. ती वाचकाला गोपनीय मेसेज अनलॉक करण्यासाठी मदत करते. उदा. जर तुमचा मूळ मेसेज 'HELLO' असेल तर सीझर सायफर अल्गोरिदममध्ये 5 ही की वापरून एनक्रीप्टेड शब्द हा असेल... मेसेज डीक्रीप्ट करण्यासाठी, स्वीकारणारी व्यक्ती ही 'की' वापरून याच्या उलट प्रक्रिया करेल. सीझर सायफरची मोठी समस्या म्हणजे, शक्य असलेल्या सर्व कीज वापरून कोणालाही एनक्रीप्टेड मेसेज सहजपणे कळू शकतो. आणि इंग्रजी बाराखडीत फक्त 26 अक्षरं आहेत, म्हणजे मेसेज डीक्रीप्ट करण्यासाठी तुम्हाला फारतर 26 कीज वापरून पाहाव्या लागतील. आता 26 संभाव्य कीज वापरून बघणे, फारसे अवघड नाही, त्याला फारतर एक किंवा दोन तास लागतील. म्हणून आपण अजून अवघड की बनवूया. प्रत्येक अक्षर ठराविक संख्येने पुढे ढकलण्याऐवजी वेगवेगळ्या संख्येने पुढे ढकलूया. या उदाहरणात, मोठा मेसेज एनक्रीप्ट करण्यासाठी एक दहा आकडी की प्रत्येक अक्षर किती घरे पुढे जाईल, हे दर्शवते. ही की शोधणे खरंच अवघड असेल. 10 आकडी एनक्रीप्शन वापरले तर 1000 कोटी संभाव्य कीज असू शकतात. अर्थातच एखाद्या माणसानं शोधून काढण्यासाठी ही खूप मोठी संख्या आहे, त्याला काही शतकं लागतील. पण सध्याच्या सामान्य कॉम्प्युटरला, सगळ्या 1000 कोटी शक्यता तपासून पाहायला फक्त काही सेकंद लागतील. त्यामुळे आधुनिक जगात, वाईट लोकांकडे पेन्सिलऐवजी कॉम्प्युटर्स असताना आपण शोधून काढायला खूप अवघड अशा पद्धतीनं मेसेज एनक्रीप्ट कसे करू शकतो? आता खूप अवघड म्हणजे एका व्यवहार्य कालावधीत तपासता येणार नाहीत इतक्या संभाव्यता असणं. हल्लीचे संवाद 256 बीट कीज वापरून एनक्रीप्ट केलेले असतात. म्हणजे तुमचा मेसेज बघणाऱ्या वाईट लोकांच्या कॉम्प्युटर्सना एवढया सगळ्या शक्यता तपासून बघाव्या लागतील...त्यांना की सापडत नाही आणि मेसेजचा उलगडा करता येत नाही तोपर्यंत. जर तुमच्याकडे 100,000 सुपर कॉम्प्युटर्स असतील आणि त्यातल्या प्रत्येकाला प्रत्येक सेकंदाला लक्षावधी कोट्यावधी कीज दर सेकंदाला वापरून पाहता आल्या तरीही प्रत्येक पर्यायासाठी कित्येक अब्जावधी वर्षं लागतील, फक्त 256 बीट एनक्रीप्शन केलेला एकच मेसेज कळण्यासाठी. अर्थातच, कॉम्प्युटर चिप दरवर्षी दुप्पट वेगवान आणि निम्म्या आकाराची होते. जर घातांकीय प्रगतीचा वेग सुरू राहिला तर, आज अशक्य वाटणाऱ्या समस्या भविष्यातील काहीशे वर्षातच सोडवता येतील आणि 256 बीट्स पुरेशा सुरक्षित राहणार नाहीत. वास्तविक आपण कॉम्प्युटरच्या वेगाबरोबर जुळवून घेण्यासाठी यापूर्वीच स्टँडर्ड कीची लांबी वाढवलेली आहे. चांगली बातमी म्हणजे जास्त मोठी की वापरल्यामुळं मेसेज एनक्रीप्ट करणं फारसं अवघड होत नाही पण त्यामुळं सायफर उलगडण्यासाठी लागणाऱ्या अंदाजांची संख्या घातांकीय स्वरूपात वाढते. जेव्हा पाठवणारा आणि स्वीकारणारा एकच की वापरून मेसेजमध्ये बदल करतो आणि पुन्हा सरळ करतो तेव्हा त्याला सिमेट्रिक एनक्रीप्शन म्हणतात. सीझर सायफरप्रमाणंच, सिमेट्रिक एनक्रीप्शनमध्ये दोन लोकांनी वापरायची गोपनीय की आपापसात आधीच ठरवावी लागते. त्यामुळं लोकांसाठी हे चांगलं आहे, पण इंटरनेट खुलं आणि सार्वजनिक असल्यामुळं, दोन कॉम्प्युटर्सनी एकमेकांना खाजगीमध्ये "भेटून" गोपनीय की ठरवणं अशक्य आहे. त्याऐवजी कॉम्प्युटर्स असिमेट्रिक कीज वापरतात. ही सार्वजनिक की कोणालाही देता येते आणि खाजगी की शेअर केली जात नाही. सार्वजनिक की वापरून डेटा एनक्रीप्ट केला जातो आणि गोपनीय मेसेज तयार करण्यासाठी कोणीही ती वापरू शकतो. पण गोपनीय की फक्त खाजगी की माहिती असलेल्या कॉम्प्युटरलाच कळते. कोणत्या गणितामुळं हे शक्य होतं त्यात आत्ता आपण शिरणार नाही. अशी कल्पना करा की तुमचा एक वैयक्तिक मेलबॉक्स आहे, जिथं कोणीही पत्र पाठवू शकतात, पण त्यासाठी त्यांना की आवश्यक आहे. तुम्ही अनेक डीपॉझीट की बनवू शकता आणि त्यातील एक तुमच्या मित्राला पाठवू शकता किंवा ती सार्वजनिकरीत्या उपलब्ध करू शकता. तुमचा मित्र किंवा अगदी अनोळखी व्यक्ती सार्वजनिक की वापरून तुमच्या डीपॉझीट स्लॉटमध्ये प्रवेश करून मेसेज पाठवू शकते, पण तुमची खाजगी की वापरून फक्त तुम्हीच तुम्हाला आलेले गोपनीय मेसेज पाहू शकता. आणि तुम्ही तुमच्या मित्राच्या मेलबॉक्सची सार्वजनिक डीपॉझीट की वापरून त्याला सुरक्षित मेसेज पाठवू शकता. अशाप्रकारे लोक कोणतीही खाजगी की ठरवून न ठेवता सुरक्षितपणे मेसेजेसची देवाणघेवाण करू शकतात. सार्वजनिक की क्रीप्टोग्राफी हा खुल्या इंटरनेटवरील सर्व सुरक्षित मेसेजिंगचा पाया आहे. त्यामध्ये आपण वेब ब्राऊझ करताना आपल्याला सुरक्षित ठेवणाऱ्या SSL आणि TLS म्हणून ओळखल्या जाणाऱ्या सुरक्षा प्रोटोकॉल्सचासुद्धा समावेश आहे. जेव्हा तुमच्या ब्राऊझरच्या अॅड्रेसमध्ये तुम्हाला कधीही छोटेसे कुलूप किंवा https दिसते, तेव्हा तुमचा कॉम्प्युटर हे प्रोटोकॉल वापरत असतो. म्हणजेच तुमचा कॉम्प्युटर सार्वजनिक की एनक्रीप्शन वापरून त्या वेबसाईटवर सुरक्षितपणे डेटाची देवाणघेवाण करत असतो. अधिकाधिक लोक इंटरनेटवर आले की जास्तीत जास्त खाजगी डेटा पाठवला जाईल. आणि तो डेटा सुरक्षित ठेवण्याची गरज अजून महत्त्वाची ठरेल. आणि जसजसे कॉम्प्युटर्स अधिकाधिक वेगवान होतील तसतसे आपल्याला कॉम्प्युटर्सना एनक्रीप्शन समजणे खूप अवघड करण्यासाठी नवीन मार्ग शोधावे लागतील. हेच माझं काम आहे आणि ते सतत बदलणारे आहे.