Git Hash Chain Malleability
यह शोध पत्र यह प्रदर्शित करता है कि गिट कमिट हैश (Git commit hashes) परिवर्तनीय (malleable) हैं, जो हमलावरों को ECDSA में बीजगणितीय व्युत्क्रमण (algebraic inversion), अनहैश्ड (unhashed) OpenPGP सबपैकेट प्रविष्टि और गैर-कैनोनिकल (non-canonical) DER लंबाई पुन: एन्कोडिंग का लाभ उठाकर समान सामग्री, वैध हस्ताक्षर और "सत्यापित" (Verified) बैज वाले विशिष्ट कमिट उत्पन्न करने की अनुमति देते हैं, जिससे हैश-आधारित डिपेंडेंसी पिनिंग (dependency pinning) और पुनरुत्पादक बिल्ड (reproducible builds) की सुरक्षा धारणाएं कमजोर होती हैं।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि इंटरनेट एक विशाल, वैश्विक पुस्तकालय है जहाँ हर किताब, हर रेसिपी और हर निर्देश पुस्तिका एक डिजिटल तिजोरी में रखी गई है। इस पुस्तकालय को व्यवस्थित रखने के लिए, हर एक वस्तु को एक विशेष कोड से बना एक अनूत्वपूर्ण (unique) आईडी कार्ड दिया जाता है। सॉफ्टवेयर डेवलपमेंट की दुनिया में, इस प्रणाली को Git कहा जाता है। एक "कमिट" (commit) को किसी प्रोजेक्ट के एक विशिष्ट क्षण की तस्वीर के रूप में सोचें—जैसे कि आपने अभी-अभी बनाया गया लेगो (Lego) का किला बनाने के बाद उसकी फोटो खींच ली हो। यह सुनिश्चित करने के लिए कि कोई भी अंदर आकर ईंटों को प्लास्टिक से न बदल दे, डेवलपर्स अपनी तस्वीरों पर एक डिजिटल सील लगा सकते हैं, जैसे किसी पत्र पर मोम की मुहर (wax stamp) लगाई जाती है। यह सील प्रमाणित करती है, "हाँ, मैंने इसे बनाया है, और किसी ने इसे बदला नहीं है।"
इस प्रणाली के पीछे का बड़ा विचार विशिष्टता के माध्यम से विश्वास (trust through uniqueness) है। यदि आपके पास फोटो का अनूत्वपूर्ण आईडी कोड है, तो आप उस सटीक फोटो को ढूंढ पाने में सक्षम होने चाहिए और यह जानना चाहिए कि उसे बदला नहीं गया है। यह कहने जैसा है कि, "यदि आईडी कार्ड कहता है 'किला A', तो 'किला A' ही एकमात्र चीज़ है जो उस विवरण में फिट बैठती है।" यह विश्वास इतना मजबूत है कि कंप्यूटर इन आईडी कोडों का उपयोग स्वचालित रूप से यह जांचने के लिए करते हैं कि क्या सॉफ्टवेयर सुरक्षित है, कोड के विशिष्ट संस्करणों को लॉक करने के लिए ताकि वे टूट न जाएं, और यह साबित करने के लिए कि किसने क्या बनाया। यदि आईडी कोड अनूत्वपूर्ण और अपरिवर्तनीय है, तो पूरी प्रणाली एक सुव्यवस्थित मशीन की तरह काम करती है। लेकिन क्या होगा यदि कोई एक बिल्कुल अच्छी, हस्ताक्षरित फोटो ले ले, उसकी मोहर को थोड़ा सा बदल दे, और एक नया आईडी कार्ड प्राप्त कर ले जो फिर भी यह साबित करता है कि फोटो असली है? यही वह प्रश्न है जो यह शोध पत्र पूछता है।
द ग्रेट डिजिटल आइडेंटिटी स्वैप (The Great Digital Identity Swap)
इस शोध पत्र में, जैकब गिनेसिन (Jacob Ginesin) नामक एक शोधकर्ता ने एक चालाकी भरी ट्रिक खोजी है जो Git के "एक फोटो, एक आईडी" के नियम को तोड़ देती है। उन्होंने दिखाया कि एक हमलावर, बिना गुप्त हस्ताक्षर कुंजियों (signing keys) को चुराए या डिजिटल सीलों के गणित को तोड़े बिना, उसी सॉफ्टवेयर के लिए एक दूसरा, पूरी तरह से अलग आईडी कार्ड बना सकता है।
यहाँ जादू का खेल है: हमलावर एक हस्ताक्षरित कमिट (एक मोहर वाली फोटो) लेता है और सील में इस तरह से बदलाव करता है जो कंप्यूटर के लिए अलग दिखता है लेकिन इंसान के लिए बिल्कुल वही अर्थ रखता है। यह एक मोम की सील लेने, उसे थोड़े अलग आकार में दबाने, या एक ही संदेश को कागज पर अलग फॉन्ट का उपयोग करके लिखने जैसा है। फोटो की सामग्री बिल्कुल नहीं बदली है—लेगो का किला बिल्कुल वैसा ही है। सील अभी भी लेखक की पहचान सिद्ध करती है। लेकिन क्योंकि सील का "रूप" बदल गया है, कंप्यूटर उसके लिए एक पूरी तरह से नया आईडी कार्ड बनाता है।
डरावनी बात क्या है? इन आईडी की जांच करने वाले कंप्यूटर सिस्टम (जैसे GitHub) कहते हैं, "हे, यह सील वैध है! यह एक सत्यापित (verified) कमिट है!" और इसे एक चमकदार हरा "Verified" बैज दे देते हैं। अब, आपके पास एक ही लेगो किले के लिए दो अलग-अलग आईडी कार्ड हैं। एक कहता है "किला A," और दूसरा कहता है "किला B।" दोनों एक ही व्यक्ति द्वारा हस्ताक्षरित हैं, और दोनों को "Verified" के रूप में चिह्नित किया गया है।
सिस्टम को धोखा देने के तीन तरीके
यह शोध पत्र बताता है कि डिजिटल सील के प्रकार के आधार पर इस ट्रिक को अंजाम देने के तीन अलग-अलग तरीके हैं:
- द मैथ फ्लिप (ECDSA के लिए): एक संख्या रेखा की कल्पना करें जहाँ आपके पास एक संख्या है, मान लीजिए 5। इस विशिष्ट गणितीय खेल में, संख्या 5 और संख्या "कुल घटाव 5" वास्तव में एक ही चीज़ हैं। हमलावर सील पर संख्या को पलट देता है। यह अलग दिखता है, लेकिन गणित कहता है कि यह अभी भी एक वैध हस्ताक्षर है।
- द हिडन नोट (RSA और EdDSA के लिए): एक सीलबंद पत्र की कल्पना करें। सील मुख्य संदेश को कवर करती है, लेकिन पीछे की तरफ एक छोटा सा पॉकेट है जो सील नहीं है। हमलावर उस पॉकेट में एक छोटा, हानिरहित नोट डाल देता है। मुख्य संदेश अछूता है, और सील अभी भी वैध है, लेकिन पत्र का वजन और आकार थोड़ा बदल गया है, जिससे उसका आईडी कार्ड बदल जाता है।
- द फैंसी फॉन्ट (S/MIME के लिए): "32" जैसी संख्या लिखने की कल्पना करें। आप इसे "32" या "0x20" के रूप में लिख सकते हैं। दोनों का अर्थ एक ही है, लेकिन एक "मानक" तरीका है और दूसरा "फैंसी" तरीका। हमलावर संख्या को फैंसी तरीके से फिर से लिखता है। पत्र की जांच करने वाला कंप्यूटर (GitHub) थोड़ा उदार है और फैंसी फॉन्ट को स्वीकार कर लेता है, लेकिन एक सख्त कंप्यूटर (आपका स्थानीय लैपटॉप) भ्रमित हो सकता है और कह सकता है, "रुको, यह मानक तरीका नहीं है!"
यह क्यों मायने रखता है: "घोस्ट" (Ghost) की समस्या
आप सोच सकते हैं, "तो क्या हुआ? यदि किला वही है, तो किसे फर्क पड़ता है कि आईडी कार्ड अलग है?" लेकिन डिजिटल दुनिया में, आईडी कार्ड ही किला होता है।
- द बाउंसर प्रॉब्लम (The Bouncer Problem): एक क्लब के बाउंसर की कल्पना करें जिसके पास प्रतिबंधित आईडी की सूची है। यदि आप प्रतिबंधित हैं, तो आप अंदर नहीं जा सकते। लेकिन यदि हमलावर उसी व्यक्ति के लिए एक "घोस्ट आईडी" बना देता है जो प्रतिबंधित सूची में नहीं है, तो बाउंसर उसे अंदर जाने देता है। हमलावर केवल आईडी कार्ड बदलकर सुरक्षा फिल्टरों से घातक कोड को चुपके से पार करा सकता है।
- द मिरर प्रॉब्लम (The Mirror Problem): दो दर्पणों की कल्पना करें जो एक-दूसरे के सामने हैं। एक असली किला दिखाता है; दूसरा एक "घोस्ट किला" दिखाता है जो दिखने में बिल्कुल समान है लेकिन उसका नाम अलग है। यदि आप गलत दर्पण देख रहे हैं, तो आपको लग सकता है कि आप मूल देख रहे हैं, लेकिन वास्तव में आप एक ऐसी कॉपी देख रहे हैं जिसे हमलावर नियंत्रित करता है।
- द ब्रोकन चेन (The Broken Chain): क्योंकि श्रृंखला में प्रत्येक नया लेगो किला पिछले किले के ऊपर बनाया जाता है, एक किले का आईडी बदलने से उसके बाद बनने वाले हर किले का आईडी बदल जाता है। यह इतिहास में एक "फोर्क" (विभाजन) पैदा करता है। आप दो समानांतर समयरेखाओं के साथ समाप्त होते हैं: एक मूल आईडी के साथ और दूसरी घोस्ट आईडी के साथ। दोनों असली दिखते हैं, दोनों हस्ताक्षरित हैं, लेकिन वे अलग हैं।
निष्कर्ष
यह शोध पत्र सिद्ध करता है कि कमिट हैश पर "Verified" बैज सामग्री की अनूत्वपूर्ण गारंटी नहीं है। यह एक पासपोर्ट पर "Verified" स्टैंप होने जैसा है जो यह गारंटी नहीं देता कि आपके पास ही एकमात्र चेहरा है; यह केवल यह गारंटी देता है कि स्टैंप असली है।
लेखक ने एक टूल बनाया है जो स्वचालित रूप से किसी भी हस्ताक्षरित कमिट के साथ यह ट्रिक कर सकता है। उन्होंने GitHub पर इसका परीक्षण किया, और साइट ने खुशी-खुशी "घोस्ट" कमिट्स को स्वीकार किया, उन्हें अपने स्वयं के "Verified" बैज दिए। इसका मतलब है कि इन आईडी कार्डों पर भरोसा करने वाले सिस्टम, जो बुरे तत्वों को रोकने, सॉफ्टवेयर संस्करणों को लॉक करने, या यह साबित करने के लिए कि किसने क्या बनाया है, असुरक्षित हैं। समाधान साइनिंग (हस्ताक्षर) को रोकना नहीं है; बल्कि यह सुनिश्चित करना है कि सील की जांच करने वाले कंप्यूटर इतने सख्त हों कि वे कह सकें, "नहीं, यह ठीक वही सील नहीं है जो हमने पहले देखी थी," और वे केवल आईडी कार्ड की नहीं, बल्कि वास्तविक सामग्री की जांच करें।
संक्षेप में, एक हस्ताक्षरित कमिट एक वादा है, लेकिन शोध पत्र दिखाता है कि उस वादे को इस तरह लिखा जा सकता है कि वह अपने ही एक "घोस्ट" संस्करण को बना दे, जिससे उन प्रणालियों को मूर्ख बनाया जा सके जो हमें सुरक्षित रखने के लिए बनाई गई हैं।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।