ब्लॉग पर वापस जाएँ

Canvas फ़िंगरप्रिंट ट्रैकिंग और बचाव: रैंडमाइज़ेशन से बेहतर है संगति

Canvas फ़िंगरप्रिंट एक ही ड्रॉइंग निर्देश के अलग हार्डवेयर और सॉफ़्टवेयर पर रेंडर होने के सूक्ष्म अंतर को पहचान के रूप में इस्तेमाल करता है और इसे अकेले बहुत कम उपयोग किया जाता है। बेहतर उपाय हर बार मान बदलना नहीं, बल्कि एक ही वातावरण की सभी विशेषताओं को आपस में संगत रखना है।

Canvas फ़िंगरप्रिंट का सिद्धांत जटिल नहीं है, लेकिन इसके बारे में प्रचलित कई बचाव के तरीके उल्टा असर कर सकते हैं।

वही निर्देश, अलग मशीनें, अलग परिणाम

Canvas HTML5 का एक ड्रॉइंग घटक है, जिस पर वेब पेज स्क्रिप्ट की मदद से आकृतियाँ और टेक्स्ट बना सकता है। वही ड्रॉइंग निर्देश अलग-अलग डिवाइस पर थोड़ा अलग रेंडर हो सकता है। इसका कारण ऑपरेटिंग सिस्टम, ब्राउज़र संस्करण, फ़ॉन्ट लाइब्रेरी और ग्राफ़िक्स ड्राइवर जैसी निचले स्तर की भिन्नताएँ हैं। आँखों से ये फर्क लगभग दिखाई नहीं देते, लेकिन Canvas की सामग्री को डेटा के रूप में निर्यात करने पर ये तुलना किए जा सकने वाले मान बन जाते हैं।

प्रक्रिया लगभग ऐसी होती है: वेब पेज पहले कुछ ग्राफ़िक्स और टेक्स्ट बनाता है, फिर toDataURL() की मदद से परिणाम को Base64 स्ट्रिंग के रूप में निर्यात करता है। इसी स्ट्रिंग को पहचान के रूप में इस्तेमाल किया जा सकता है। अलग डिवाइस अलग आउटपुट देते हैं, इसलिए कई मामलों में यह मान विशिष्ट होता है। Cookies हटाने से इस पर असर नहीं पड़ता और cache साफ़ करने से भी नहीं।

इसे अकेले बहुत कम इस्तेमाल किया जाता है

केवल एक Canvas मान की उपयोगिता सीमित होती है और ब्राउज़र अपग्रेड या ड्राइवर अपडेट के बाद यह बदल सकता है। व्यवहार में Canvas को अक्सर दूसरी कई विशेषताओं के साथ जोड़ा जाता है और उन्हें एक-दूसरे से मिलाकर देखा जाता है:

  • WebGL, फ़ॉन्ट सूची और ग्राफ़िक्स कार्ड मॉडल जैसी ग्राफ़िक्स संबंधी जानकारी
  • UA, समय क्षेत्र, भाषा और स्क्रीन रिज़ॉल्यूशन जैसी वातावरण संबंधी जानकारी
  • Cookies, local storage और नेटवर्क निकास जैसी सत्र संबंधी जानकारी

इन संकेतों को जोड़ने का कारण संगति की जाँच करना है। हर विशेषता अलग से सामान्य सीमा में दिख सकती है, लेकिन संयोजन में विरोधाभास साफ़ दिखने लगते हैं: समय क्षेत्र अमेरिका का है, भाषा सूची पूरी तरह चीनी है, और Canvas मान integrated graphics से मेल खाता है जबकि UA किसी नए high-end डिवाइस का दावा करता है। प्लेटफ़ॉर्म को यह साबित करने की ज़रूरत नहीं कि आप कौन हैं। उसे बस यह पहचानना होता है कि विशेषताओं का यह समूह किसी असली मशीन जैसा नहीं दिखता।

इसे बंद करने से आप और अलग दिख सकते हैं

कई लोगों की पहली प्रतिक्रिया Canvas को बंद कर देना होती है, लेकिन इसका नतीजा उल्टा हो सकता है।

सामान्य उपयोगकर्ताओं के लगभग सभी ब्राउज़र Canvas को सपोर्ट करते हैं। ऐसा वातावरण जो स्पष्ट रूप से Canvas को सपोर्ट नहीं करता, सांख्यिकीय रूप से अल्पसंख्यक बन जाता है और विशेष बदलाव किए जाने का संकेत देता है। एक व्यावहारिक समस्या भी है: कई वेबसाइट image cropping, charts और CAPTCHA rendering के लिए Canvas पर निर्भर करती हैं। इसे बंद करने पर पेज की सुविधाएँ टूट सकती हैं और एक और असामान्यता जुड़ जाती है।

एक दूसरी रणनीति हर विज़िट पर नया random मान इस्तेमाल करना है। इसमें भी वही समस्या है: असली डिवाइस के फ़िंगरप्रिंट स्थिर होते हैं। हर बार बदलने वाला वातावरण सामान्य डिवाइस से अलग व्यवहार करता है और इसलिए उसे अलग करके चिन्हित करना आसान हो सकता है। रैंडमाइज़ेशन स्वयं भी एक पहचाना जा सकने वाला संकेत है।

सही दिशा है आंतरिक संगति

हर विज़िट पर सब कुछ बदलने की तुलना में यह अधिक वास्तविक है कि वातावरण के भीतर सभी विशेषताएँ एक-दूसरे से मेल खाएँ और पूरा प्रोफ़ाइल असामान्य न लगे।

व्यवहार में विशेषताओं को एक-दूसरे का समर्थन करना चाहिए: समय क्षेत्र, भाषा और egress IP की भौगोलिक स्थिति आपस में मेल खानी चाहिए। UA जिस डिवाइस का दावा करता है, उसकी क्षमता Canvas और WebGL से दिखने वाली ग्राफ़िक्स क्षमता के समान स्तर पर होनी चाहिए। एक ही account का वातावरण लंबे समय तक स्थिर रहना चाहिए और बार-बार आने पर स्पष्ट बदलाव नहीं दिखने चाहिए। ऐसे plugins पर निर्भर न रहें जो केवल किसी एक feature को बंद करते हैं, क्योंकि वे अक्सर और अधिक अलग दिखने वाली विशेषताएँ पैदा करते हैं। जहाँ संभव हो, third-party scripts कम चलाएँ ताकि डेटा संग्रह की सतह घटे।

यदि कई environments को एक-दूसरे से अलग रखना हो, तो यह environment isolation का काम है। PurpleMark जैसे tools कई accounts के लिए environment isolation करते समय आम तौर पर हर account को एक स्थिर environment देते हैं, न कि parameters को हर बार random तरीके से बदलते हैं। प्लेटफ़ॉर्म के लिए असली सवाल यह होता है कि विशेषताओं का समूह स्थिर है या नहीं और क्या वे आपस में तार्किक रूप से मेल खाते हैं।

सारांश

Canvas से ट्रैकिंग इसलिए संभव होती है क्योंकि यह hardware और software के सूक्ष्म अंतर को एक स्थिर और तुलना योग्य स्ट्रिंग में बदल देता है। प्रभावी उपाय इसे बंद करना या values को लगातार random बदलना नहीं, बल्कि इसे उसी environment की बाकी विशेषताओं के साथ संगत रखना है। असामान्य दिखने की तुलना में सामान्य दिखना अधिक सुरक्षित है।