दस्तावेज़ के न बदलने का प्रमाण कैसे दें
सभी द्वारा हस्ताक्षर करने के छह महीने बाद, एक विवाद सामने आता है। दूसरी पार्टी समझौते की अपनी प्रति प्रस्तुत करती है, और खंड 7 वह नहीं कहता जो आपको याद है कि यह कहता था। दोनों फ़ाइलों को agreement-final.pdf कहा जाता है। दोनों विश्वसनीय दिखते हैं। आप में से कोई भी ज़रूरी नहीं कि झूठ बोल रहा हो — फाइलें फिर से सेव होती हैं, संस्करण गड़बड़ा जाते हैं। समय पर कुछ रिकॉर्ड किए बिना, "यह वह दस्तावेज़ है जिस पर हम सहमत थे" केवल दो लोगों की यादें होती हैं, और यादें बहस नहीं जीततीं।
हैश क्या होता है
क्रिप्टोग्राफ़िक हैश डेटा के लिए एक फ़िंगरप्रिंट होता है। किसी फ़ाइल को हैश फ़ंक्शन में डालें — SHA-256 एक समझदार आधुनिक डिफ़ॉल्ट है — और यह एक निश्चित लंबाई का मान लौटाता है, 64 हेक्साडेसिमल वर्ण, भले ही इनपुट एक पेज का हो या दस हज़ार का।
यह इसे उपयोगी बनाने वाले तीन गुण हैं:
- यह नियतात्मक है। एक ही बाइट्स हमेशा एक ही हैश उत्पन्न करते हैं। कोई भी, कहीं भी, किसी भी मशीन पर, समान मान प्राप्त करता है।
- यह किसी भी संपादन पर पूरी तरह बदल जाता है। एक अक्षर — एक कॉमा, एक बिट — बदलने से आउटपुट पूरी तरह अलग हो जाता है। थोड़ा अलग नहीं। पहचानने योग्य रूप से अलग। इसे एवलांच प्रभाव कहा जाता है, और यही कारण है कि हैश "करीब" नहीं हो सकते।
- यह उल्टे ढंग से काम नहीं करता। आप हैश से दस्तावेज़ का पुनर्निर्माण नहीं कर सकते, और न ही आप व्यावहारिक रूप से कोई अलग सार्थक दस्तावेज़ बना सकते हैं जो समान हैश उत्पन्न करे।
इसलिए फ़िंगरप्रिंट को सार्वजनिक रूप से साझा करना सुरक्षित है। एक गोपनीय अनुबंध का हैश प्रकाशित करने से उसकी सामग्री के बारे में कुछ भी पता नहीं चलता — लेकिन यह अनुबंध को निश्चित कर देता है।
हैश क्या करता है यह साबित नहीं करता
यहीं पर इस विचार को बढ़ा-चढ़ाकर पेश किया जाता है, इसलिए सटीक होना ज़रूरी है। एक मिलान करने वाला हैश आपको बताता है कि फ़ाइल अपरिवर्तित है। यह नहीं बताता कि:
- किसने बनाया। एक हैश किसी पहचान को नहीं ले जाता। कोई भी कुछ भी हैश कर सकता है।
- यह कब मौजूद था। यह मान अपने आप में समय के बारे में कुछ साबित नहीं करता। आज गणना किया गया हैश कहता है कि आज की फ़ाइल आज की फ़ाइल है — एक तार्किकता।
- कि सामग्री सत्य, कानूनी या सहमत है। किसी जालसाजी का हैश भी जालसाजी का एक पूरी तरह से वैध हैश होता है।
हैश आपको अखंडता (integrity) देते हैं, न कि प्रामाणिकता (authenticity)। इन दोनों को मिलाना इस क्षेत्र में सबसे आम गलती है।
वह हिस्सा जो हर कोई गलत समझता है
एक हैश की गणना करना अब अतीत के बारे में कुछ भी साबित नहीं करता। यदि आप आज किसी फ़ाइल का हैश करते हैं और मान आज की फ़ाइल से मेल खाता है, तो आपने कुछ नहीं सीखा है — बेशक यह मेल खाएगा; यह वही फ़ाइल है।
एक हैश केवल तभी सबूत बनता है जब वह मान विवाद होने से पहले कहीं विश्वसनीय जगह पर रिकॉर्ड किया गया हो। सुरक्षा गणित में नहीं रहती; यह समयरेखा (timeline) में रहती है। एक हैश क्या जवाब देता है, वह है: "क्या यह उस चीज़ से मेल खाता है जो हमने तब लिखी थी?" — और इसके लिए ज़रूरी है कि किसी ने तब कुछ लिखा हो।
जिससे वर्कफ़्लो (workflow) मायने रखता है, न कि एल्गोरिथम।
एक ऐसा वर्कफ़्लो जो वास्तव में मूल्यवान हो
- जैसे ही फ़ाइल अंतिम हो जाए, उसका हैश करें। हस्ताक्षर करने के तुरंत बाद, इससे पहले कि उसे कहीं रखा जाए। डॉक्यूमेंट हैश का उपयोग करें।
- उस मान को ऐसी जगह रिकॉर्ड करें जहाँ इसे चुपचाप संशोधित न किया जा सके। इसे उस ईमेल में डालें जो दस्तावेज़ भेजता है। इसे कार्यवृत्त (minutes) में पढ़ें। यह प्रतिपक्ष को भी भेजें ताकि वे इसे अपने पास रखें। लक्ष्य एक ऐसा रिकॉर्ड बनाना है जिसकी तारीख केवल आपके नियंत्रण में न हो।
- सटीक फ़ाइल का संग्रह करें। यह पुन: निर्यात नहीं है। इसे फिर से प्रिंट किया गया "वही दस्तावेज़" नहीं है। वे सटीक बाइट्स जिन्हें आपने हैश किया था।
- बाद में, पुनः गणना करें और तुलना करें। समान मान: बाइट-समान, कोई बहस नहीं। भिन्न मान: फ़ाइल बदल गई है, भले ही यह ज़रूरी न हो कि दुर्भावनापूर्ण हो — नीचे देखें।
जब "कुछ नहीं बदला" तो आपका हैश क्यों बदल गया
यह लोगों को लगातार भ्रमित करता रहता है, और यह हैश में कोई गलती नहीं है। एक हैश बाइट्स को कवर करता है, न कि स्वरूपण (appearance) को। दो PDFs दिखने में पिक्सेल-समान हो सकते हैं और फिर भी अलग हैश दे सकते हैं:
- आपने इसे पुनः सहेजा। एक PDF खोलना और उसे फिर से एक्सपोर्ट करना फ़ाइल को फिर से लिख देता है। नए टाइमस्टैम्प, संभवतः नया
Producer, अलग आंतरिक संरचना। पढ़ने के लिए समान, लेकिन बाइट्स अलग। - इसमें कुछ जोड़ा गया। PDFs क्रमिक अपडेट का समर्थन करते हैं — एक टिप्पणी जोड़ना या फ़ील्ड भरना डेटा को फिर से लिखने के बजाय उसे जोड़ सकता है। दस्तावेज़ बढ़ गया; हैश बदल गया।
- किसी टूल ने इसे गुज़रते हुए छुआ। कुछ ईमेल सिस्टम और डॉक्यूमेंट मैनेजर अटैचमेंट को फिर से लिखते हैं। यह बदलाव पूरी तरह से अदृश्य और पूरी तरह से वास्तविक हो सकता है।
तो एक मिसमैच का मतलब है कि "ये फ़ाइलें एक जैसी नहीं हैं", न कि "किसी ने इसमें छेड़छाड़ की है"। सही प्रतिक्रिया जांच करना है, आरोप लगाना नहीं। और व्यावहारिक सबक यह है: जिस फ़ाइल को आपने hash किया था, उसे archive करें, और किसी को भी उसे re-save न करने दें।
स्थानीय रिकॉर्ड रखना
यदि आपको नियमित रूप से यह स्थापित करने की आवश्यकता है कि दस्तावेज़ों में कोई बदलाव नहीं आया है, तो हर एक का हाथ से hash करना थकाऊ हो सकता है। स्थानीय हस्ताक्षर रिकॉर्ड उन दस्तावेज़ों का रिकॉर्ड रखता है जिन्हें आपने अपने स्वयं के डिवाइस पर hash किया है, ताकि आपके पास बाद में जांच करने के लिए एक व्यक्तिगत लॉग रहे — बिना किसी तीसरे पक्ष को दस्तावेज़ पंजीकृत किए।
इस बात को स्पष्ट करें कि यह क्या है और क्या नहीं। यह एक निजी, स्व-रखा गया रिकॉर्ड है: जो आपके अपने विश्वास के लिए, आंतरिक प्रक्रिया के लिए, या आकस्मिक बदलाव पकड़ने के लिए मजबूत है। यह आपका रिकॉर्ड है — आप इसे नियंत्रित करते हैं, जो बिल्कुल वह सीमा है जब संदेह करने वाला व्यक्ति मेज के दूसरी तरफ बैठा होता है।
जब आपको hash से अधिक की आवश्यकता हो
यदि किसी तीसरे पक्ष को मनाना है, तो केवल अखंडता (integrity) ही काफी नहीं होगी। आपको दस्तावेज़ को एक पहचान और आदर्श रूप से एक समय से बांधने के लिए कुछ चाहिए, जिस पर कोई भी पक्ष नियंत्रण न कर सके:
- एक डिजिटल हस्ताक्षर hash प्लस पहचान है: मान को एक निजी कुंजी (private key) से हस्ताक्षरित किया जाता है, ताकि मैचिंग प्रमाण पत्र वाले कोई भी व्यक्ति यह पुष्टि कर सकें कि फ़ाइल अपरिवर्तित है और किसने इसे हस्ताक्षरित किया। इसीलिए हस्ताक्षरों के लिए एक विश्वास श्रृंखला (trust chain) की आवश्यकता होती है और hashes के लिए नहीं — मुश्किल हिस्सा यह साबित करना है कि कुंजी किसकी है।
- एक विश्वसनीय टाइमस्टैम्प किसी प्राधिकरण का प्रमाण जोड़ता है कि hash एक निश्चित क्षण में मौजूद था, जो "कब" का उत्तर देता है जो केवल एक सादे hash से नहीं दिया जा सकता।
- 'एक्सचेंज किया गया हैश' (An exchanged hash) एक अच्छा मध्य मार्ग है: यदि दोनों पक्षों के पास हस्ताक्षर के दिन का मान है, तो कोई भी पक्ष इतिहास को एकतरफा रूप से नहीं बदल सकता। कोई बुनियादी ढाँचा नहीं, अधिकांश लाभ।
आंतरिक रिकॉर्ड, व्यक्तिगत संग्रह और सामान्य 'क्या यह वह फ़ाइल है जो मैंने भेजी थी?' जैसे सवालों के लिए, उस समय दर्ज किया गया एक हैश वास्तव में पर्याप्त होता है। कानूनी कार्यवाही के लिए, यह नहीं है, और किसी को भी ऐसा सुझाव नहीं देना चाहिए।
पुराने एल्गोरिदम पर एक नोट
यदि आप मौजूदा प्रक्रिया में MD5 या SHA-1 का सामना करते हैं, तो उन्हें सुरक्षा के बजाय चेकसम (checksums) मानें। दोनों में व्यावहारिक टकराव हमले (practical collision attacks) होते हैं: यह संभव है कि समान मान वाले दो अलग-अलग फ़ाइल बनाना हो, जो बिल्कुल वह गुण है जिस पर आप भरोसा कर रहे थे। वे आकस्मिक भ्रष्टाचार का पता लगाने के लिए ठीक हैं और किसी भी विरोधी कार्य के लिए उपयुक्त नहीं हैं। SHA-256 अच्छे कारण से डिफ़ॉल्ट है।
इसे स्थानीय रूप से क्यों गणना करें?
किसी दस्तावेज़ को उसकी फ़िंगरप्रिंट जानने के लिए किसी वेबसाइट पर upload करना, उस दस्तावेज़ की एक प्रति तीसरे पक्ष को दे देता है — जबकि आपके अपने डिवाइस द्वारा पल भर में गणना की जा सकती है। यदि फ़ाइल इतनी महत्वपूर्ण है कि उसे पक्का करने लायक है, तो वह इतनी महत्वपूर्ण है कि उसे सौंपने लायक नहीं है। CyvoDocOps में, इस तरह के समर्थित ऑपरेशन स्थानीय रूप से आपके browser में चलते हैं और दस्तावेज़ को सर्वर पर upload नहीं किया जाता है।
अक्सर पूछे जाने वाले प्रश्न
सादे शब्दों में फ़ाइल हैश क्या होता है?
यह किसी फ़ाइल की सामग्री से प्राप्त एक छोटा फिंगरप्रिंट होता है। एक ही फ़ाइल, एक ही फिंगरप्रिंट; कुछ भी बदलें और फिंगरप्रिंट पूरी तरह बदल जाएगा।
क्या दो अलग-अलग दस्तावेज़ों का हैश (hash) समान हो सकता है?
सिद्धांत रूप में हाँ, लेकिन SHA-256 के साथ व्यवहार में नहीं — कोई भी ऐसा जोड़ा बना नहीं सकता। MD5 या SHA-1 के साथ, हाँ, और इसीलिए उन्हें उन जगहों पर इस्तेमाल नहीं किया जाना चाहिए जहाँ यह मायने रखता है।
क्या एक हैश साबित करता है कि दस्तावेज़ किसने लिखा?
नहीं। यह साबित करता है कि फ़ाइल में कोई बदलाव नहीं हुआ है। पहचान के लिए डिजिटल सिग्नेचर की आवश्यकता होती है, जो एक हैश को किसी ज्ञात व्यक्ति या संगठन से संबंधित कुंजी (key) से बांधता है।
मेरा हैश बदल गया लेकिन दस्तावेज़ बिल्कुल वैसा ही दिख रहा है। क्या इसमें छेड़छाड़ हुई थी?
ज़रूरी नहीं कि। री-सेव करना, एक फॉर्म फ़ील्ड भरना, या किसी सिस्टम द्वारा अटैचमेंट को फिर से लिखना—ये सभी बदलाव बिना दिखावट बदले बाइट्स बदल देते हैं। इसका मतलब है कि फ़ाइल अलग है — जांच करने लायक बात है, बुरे इरादे का प्रमाण नहीं।
क्या हैश बनाने के लिए फ़ाइल upload की जाती है?
नहीं। हैश आपके browser में स्थानीय रूप से (locally) कंप्यूट किया जाता है और दस्तावेज़ को किसी सर्वर पर नहीं भेजा जाता है।