دستاویز میں تبدیلی نہ ہونے کا ثبوت کیسے دیں
سب کے دستخط کرنے کے چھ ماہ بعد، ایک تنازعہ سامنے آتا ہے۔ دوسری فریق معاہدے کی اپنی کاپی پیش کرتی ہے، اور شق 7 جو کچھ آپ کو یاد ہے وہ نہیں کہتی۔ دونوں فائلوں کا نام agreement-final.pdf ہے۔ دونوں قابلِ یقین لگتے ہیں۔ ضروری نہیں کہ کوئی جھوٹ بول رہا ہو — فائلز دوبارہ محفوظ ہوتی ہیں، ورژن الجھ جاتے ہیں۔ وقت پر ریکارڈ کیے بغیر، "یہ وہ دستاویز ہے جس پر ہم متفق تھے" صرف دو لوگوں کی یادیں ہوتی ہیں، اور یادیں بحث جیتتی نہیں۔
ہیش کیا ہوتا ہے
کرپٹوگرافک ہیش ڈیٹا کی ایک انگلیوں کے نشان (fingerprint) کی طرح ہے۔ کسی فائل کو ہیش فنکشن میں ڈالیں — SHA-256 ایک سمجھدار جدید ڈیفالٹ ہے — اور یہ ایک مقررہ لمبائی کی قدر واپس کرتا ہے، 64 ہیکساڈیسیمل حروف، چاہے ان پٹ ایک صفحے کا ہو یا دس ہزار کا۔
یہ اسے مفید بنانے والی تین خصوصیات ہیں:
- یہ طے شدہ (deterministic) ہوتا ہے۔ ایک جیسے بائٹس ہمیشہ ایک ہی ہیش پیدا کرتے ہیں۔ کوئی بھی، کہیں بھی، کسی بھی مشین پر، بالکل وہی قدر حاصل کرتا ہے۔
- یہ کسی بھی ترمیم پر مکمل طور پر بدل جاتا ہے۔ صرف ایک حرف — ایک کوما، ایک بٹ — تبدیل کریں اور آؤٹ پٹ مکمل طور پر مختلف ہو جاتا ہے۔ تھوڑا سا مختلف نہیں۔ ناقابلِ شناخت حد تک مختلف۔ اسے اویلینچ ایفیکٹ (avalanche effect) کہا جاتا ہے، اور اسی وجہ سے ہیش "قریبی" نہیں ہو سکتے۔
- یہ الٹا نہیں چلتا۔ آپ ہیش سے دستاویز کو دوبارہ تشکیل نہیں دے سکتے، اور نہ ہی عملی طور پر کوئی مختلف بامعنی دستاویز بنا سکتے ہیں جو وہی ہیش پیدا کرے۔
لہٰذا فنگر پرنٹ عوامی طور پر شیئر کرنے کے لیے محفوظ ہے۔ ایک خفیہ معاہدے کا ہیش شائع کرنے سے اس کے مواد کے بارے میں کچھ ظاہر نہیں ہوتا — لیکن یہ معاہدے کو مستحکم کرتا ہے۔
ہیش (hash) کیا کام کرتا ہے نہ ثابت کرنا
یہاں خیال کو زیادہ فروخت کیا جاتا ہے، اس لیے درست ہونا ضروری ہے۔ ایک میچنگ ہیش آپ کو بتاتا ہے کہ فائل میں کوئی تبدیلی نہیں آئی۔ یہ نہیں بتاتا:
- اسے کس نے بنایا۔ ہیش کسی شناخت کو ساتھ نہیں رکھتا۔ کوئی بھی کچھ بھی کا ہیش بنا سکتا ہے۔
- کہ یہ کب موجود تھا۔ یہ قدر خود سے وقت کے بارے میں کچھ ثابت نہیں کرتی۔ آج جو ہیش آپ نکالتے ہیں وہ صرف اتنا کہتا ہے کہ آج کی فائل، آج کی فائل ہے — ایک بدیہی بات ہے۔
- کہ مواد سچ، قانونی یا متفقہ ہیں۔ جعلی دستاویز کا ہیش بھی جعلی دستاویز کا بالکل درست ہیش ہوتا ہے۔
ہیشز آپ کو صحت (integrity), نہ کہ حقیقت (authenticity) دیتے ہیں۔ ان دونوں کو ملا دینا اس شعبے میں سب سے عام غلطی ہے۔
وہ حصہ جو ہر کوئی غلط سمجھتا ہے
ایک ہیش جو ابھی کمپیوٹ کیا جاتا ہے، وہ ماضی کے بارے میں کچھ ثابت نہیں کرتا۔ اگر آپ آج کسی فائل کا ہیش کرتے ہیں اور ویلیو آج کی فائل سے ملتی ہے، تو آپ نے کچھ نیا نہیں سیکھا — ظاہر ہے کہ یہ ملتا ہی ہے؛ یہ وہی فائل ہے۔
ایک ہیش صرف اس وقت ثبوت بنتا ہے جب وہ ویلیو تنازعہ پیدا ہونے سے پہلے کہیں قابلِ اعتماد جگہ پر ریکارڈ کی گئی ہو۔ سیکیورٹی ریاضی میں نہیں ہوتی؛ یہ ٹائم لائن میں ہوتی ہے۔ ایک ہیش جو سوال کا جواب دیتا ہے، وہ ہے "کیا یہ اس چیز سے ملتا ہے جو ہم نے پہلے لکھ دی تھی؟" — اور اس کے لیے ضروری ہے کہ کسی نے اسے پہلے لکھا ہو۔
جس کی وجہ سے ورک فلو (workflow) اہم ہو جاتا ہے، نہ کہ الگورتھم۔
ایک ایسا ورک فلو جو واقعی اہمیت کا حامل ہو
- فائل کو اس لمحے ہیش کریں جب وہ حتمی بن جائے۔ دستخط کرنے کے فوراً بعد، فائل میں رکھنے سے پہلے۔ Document Hash استعمال کریں۔
- ویلیو کو وہاں ریکارڈ کریں جہاں اسے خاموشی سے تبدیل نہ کیا جا سکے۔ اسے اس ای میل میں ڈال دیں جو دستاویز بھیجتی ہے۔ اسے منٹس (minutes) میں پڑھ کر سنائیں۔ یہ کاؤنٹر پارٹی کو بھیجیں تاکہ وہ بھی اسے محفوظ رکھیں۔ مقصد ایک ایسا ریکارڈ ہے جس کی تاریخ صرف آپ کے کنٹرول میں نہ ہو۔
- اصل فائل کو محفوظ کریں۔ یہ دوبارہ ایکسپورٹ نہیں ہے۔ نہ ہی یہ کہ "وہی دستاویز" دوبارہ پرنٹ ہو جائے۔ وہ بالکل وہی بائٹس جو آپ نے ہیش کیے تھے۔
- بعد میں، دوبارہ کمپیوٹ اور موازنہ کریں۔ اگر ویلیو ایک جیسی ہے: بائٹ کے لحاظ سے یکساں، کوئی بحث نہیں۔ مختلف ویلیو: فائل بدل گئی ہے، حالانکہ ضروری نہیں کہ یہ نقصان دہ ہو۔ — نیچے دیکھیں۔
جب "کچھ نہ بدلا ہو" تو آپ کا ہیش کیوں بدل جاتا ہے
یہ لوگوں کو مسلسل الجھا دیتا ہے، اور یہ ہیش میں کوئی خامی نہیں ہے۔ ایک ہیش بائٹس کو کور کرتا ہے، ظاہری شکل کو نہیں۔ دو PDFs بالکل پکسل کے لحاظ سے یکساں نظر آ سکتی ہیں لیکن ان کا ہیش مختلف ہو سکتا ہے:
- آپ نے اسے دوبارہ محفوظ کیا ہے۔ ایک PDF کھولنا اور اسے دوبارہ ایکسپورٹ کرنا فائل کو دوبارہ لکھ دیتا ہے۔ نئے ٹائم سٹیمپ، ممکنہ طور پر نیا
Producer، مختلف اندرونی ساخت۔ پڑھنے کے لیے یکساں، لیکن بائٹس مختلف۔ - اس میں کچھ جوڑا گیا ہے۔ PDFs مرحلہ وار اپ ڈیٹس کو سپورٹ کرتے ہیں — ایک تبصرہ شامل کرنا یا کوئی فیلڈ بھرنا ڈیٹا کو دوبارہ لکھنے کے بجائے اسے جوڑ سکتا ہے۔ دستاویز بڑی ہو گئی؛ ہیش بدل گیا۔
- کسی ٹول نے اس پر گزرتے ہوئے ہاتھ لگایا۔ کچھ ای میل سسٹم اور ڈاکومنٹ مینیجر منسلکات (attachments) کو دوبارہ لکھ دیتے ہیں۔ یہ تبدیلی مکمل طور پر نظر نہ آنے والی اور مکمل طور پر حقیقی ہو سکتی ہے۔
تو مطابقت نہ ہونے کا مطلب یہ نہیں ہے کہ «یہ ایک ہی فائل نہیں ہیں»، بلکہ یہ ہے کہ «کسی نے اس میں تبدیلی کی ہے۔» صحیح ردعمل تحقیقات کرنا ہے، الزام لگانا نہیں۔ اور عملی سبق واضح ہے: جس فائل کو آپ نے hash کیا تھا اسے archive کریں، اور کسی کو بھی اسے دوبارہ save نہیں کرنے دیں۔
مقامی ریکارڈ رکھنا
اگر آپ کو باقاعدگی سے یہ ثابت کرنا ہو کہ دستاویزات میں کوئی تبدیلی نہیں آئی، تو ہر ایک کا ہاتھ سے hash بنانا تھکا دینے والا کام ہے۔ Local Signature Record آپ کے اپنے ڈیوائس پر ان دستاویزات کا ریکارڈ رکھتا ہے جنہیں آپ نے hash کیا ہے، تاکہ آپ کو بعد میں چیک کرنے کے لیے ذاتی لاگ مل سکے — بغیر کسی تیسرے فریق کے پاس دستاویزات رجسٹر کیے۔
اس بارے میں واضح رہیں کہ یہ کیا ہے اور کیا نہیں۔ یہ ایک نجی، خود سے برقرار رکھا گیا ریکارڈ ہے: جو آپ کے اپنے اعتماد کے لیے مضبوط ہے، اندرونی عمل کے لیے، یا اتفاقی تبدیلی کو پکڑنے کے لیے۔ یہ آپ کا ریکارڈ ہے — آپ اس کو کنٹرول کرتے ہیں، جو بالکل وہی حد بندی ہے جب وہ شخص جو آپ پر شک کر رہا ہے، میز کے دوسری طرف بیٹھا ہو۔
جب آپ کو hash سے زیادہ کی ضرورت ہو
اگر کسی تیسرے فریق کو قائل کرنا ہو، تو صرف integrity کافی نہیں ہے۔ آپ کو کچھ چاہیے جو دستاویز کو ایک شناخت (identity) اور مثالی طور پر ایک وقت (time) سے باندھے، جس پر نہ کوئی بھی فریق کنٹرول کرے۔
- ڈیجیٹل سگنیچر ایک hash کے ساتھ شناخت ہے: ویلیو کو ایک نجی key سے sign کیا جاتا ہے، تاکہ کسی بھی شخص جو matching certificate رکھتا ہو وہ یہ تصدیق کر سکے کہ فائل تبدیل نہیں ہوئی اور کس نے اس پر دستخط کیے ہیں۔ اسی لیے سگنیچرز کو ایک ٹرسٹ چین کی ضرورت ہوتی ہے اور hashes کو نہیں۔ مشکل حصہ یہ ثابت کرنا ہے کہ یہ کس کی key ہے۔
- ایک قابل اعتماد ٹائم سٹیمپ اتھارٹی کا وہ تصدیق شامل کرتا ہے کہ hash کسی مخصوص لمحے میں موجود تھا، جو اس "کب" کا جواب دیتا ہے جو ایک سادہ hash نہیں دے سکتا۔
- ایک ایکسچینج شدہ ہیش ایک مناسب درمیانی راستہ ہے: اگر دونوں فریقوں کے پاس دستخط کی تاریخ کا ویلیو ہو، تو کوئی بھی فریق اکیلے تاریخ نہیں بدل سکتا۔ کوئی انفراسٹرکچر نہیں، زیادہ تر فائدہ حاصل ہے۔
اندرونی ریکارڈز، ذاتی آرکائیوز اور عام "کیا یہ وہ فائل ہے جو میں نے بھیجی تھی؟" جیسے سوالات کے لیے، ایک ہیش جو آپ نے وقت پر ریکارڈ کیا ہو، واقعی کافی ہوتا ہے۔ قانونی کارروائی کے لیے، یہ کافی نہیں ہے، اور کسی کو بھی ایسا مشورہ نہیں دینا چاہیے۔
پرانے الگورتھم پر ایک نوٹ
اگر آپ موجودہ عمل میں MD5 یا SHA-1 کا سامنا کرتے ہیں، تو انہیں سیکیورٹی کے بجائے چیکسمز سمجھیں۔ دونوں میں عملی کولیژن حملے (practical collision attacks) ہو سکتے ہیں: یہ ممکن ہے کہ ایک ہی ویلیو والے دو مختلف فائلیں بنائی جائیں، جو بالکل وہ خاصیت ہے جس پر آپ انحصار کر رہے تھے۔ یہ اتفاقی خرابی کا پتہ لگانے کے لیے ٹھیک ہیں اور کسی بھی مخالف مقصد کے لیے موزوں نہیں ہیں۔ SHA-256 اچھی وجہ سے ڈیفالٹ ہے۔
یہ مقامی طور پر کیوں کمپیوٹ کریں؟
کسی ویب سائٹ کو دستاویز upload کرکے اس کا فنگر پرنٹ جاننا، وہ دستاویز کی ایک کاپی تیسرے فریق کو دے دینا ہے — ایسے حساب کے لیے جو آپ کا اپنا ڈیوائس ایک لمحے میں کر سکتا ہے۔ اگر فائل اتنی اہم ہے کہ اسے محفوظ کرنا ضروری ہے، تو یہ اتنی اہم ہے کہ اسے ہاتھ سے نہیں دیا جا سکتا۔ CyvoDocOps میں، اس طرح کی سپورٹڈ آپریشنز مقامی طور پر آپ کے browser میں چلتی ہیں اور دستاویز کو سرور پر upload نہیں کیا جاتا۔
اکثر پوچھے گئے سوالات
سادہ الفاظ میں فائل ہیش کیا ہے؟
یہ کسی فائل کے مواد سے اخذ کردہ ایک مختصر فنگر پرنٹ ہے۔ ایک ہی فائل، وہی فنگر پرنٹ؛ کچھ بھی تبدیل کریں اور فنگر پرنٹ مکمل طور پر بدل جاتا ہے۔
کیا دو مختلف دستاویزات کا ہیش (hash) ایک جیسا ہو سکتا ہے؟
نظریاتی طور پر ہاں، عملی طور پر SHA-256 کے ساتھ نہیں — کوئی بھی ایسا جوڑا تشکیل نہیں دے سکتا۔ MD5 یا SHA-1 کے ساتھ، ہاں، اور اسی لیے انہیں وہاں استعمال نہیں کرنا چاہیے جہاں اس کی اہمیت ہو۔
کیا ہیش یہ ثابت کرتا ہے کہ دستاویز کس نے لکھی؟
نہیں. یہ ثابت کرتا ہے کہ فائل میں کوئی تبدیلی نہیں آئی۔ شناخت کے لیے ایک ڈیجیٹل سگنیچر کی ضرورت ہوتی ہے، جو ایک ہیش کو کسی معروف شخص یا تنظیم سے تعلق رکھنے والی کلید (key) سے جوڑتا ہے۔
میرا ہیش بدل گیا لیکن دستاویز بالکل ایک جیسی لگ رہی ہے۔ کیا اس کے ساتھ کوئی تبدیلی کی گئی تھی؟
ضرور نہیں۔ دوبارہ محفوظ کرنا، فارم کا فیلڈ بھرنا، یا کسی سسٹم کا منسلکہ (attachment) کو دوبارہ لکھ دینا تمام بائٹس کو بدل دیتا ہے بغیر ظاہری شکل تبدیل کیے۔ اس کا مطلب ہے کہ فائل مختلف ہے — جس کی تحقیق کرنے لائق ہے، نہ کہ بدنیتی کا ثبوت۔
کیا فائل کو ہیش کرنے کے لیے upload کیا جاتا ہے؟
نہیں، ہیش آپریٹنگ (hash) آپ کے browser میں مقامی طور پر کمپیوٹ کیا جاتا ہے اور دستاویز کو کسی سرور پر بھیجا نہیں جاتا۔