भविष्य को आकार देने वाली तकनीक पर गहन लेख।

आपका फिटनेस ऐप एक निगरानी उपकरण है

Strava जैसे फिटनेस ऐप्स मिलिट्री बेस से लेकर एयरक्राफ्ट कैरियर तक संवेदनशील लोकेशन डेटा कैसे लीक करते हैं। डेवलपर्स के लिए OPSEC सबक।

समुद्र में एक एयरक्राफ्ट कैरियर, जिसके डेक के चारों ओर चमकती लाल रनिंग रूट की रेखा खिंची है

एक फ्रेंच अखबार ने हाल ही में फ्रांस के इकलौते विमानवाहक पोत Charles de Gaulle की रियल-टाइम लोकेशन ट्रैक की। यह यूरोप की सबसे रणनीतिक रूप से संवेदनशील सैन्य संपत्तियों में से एक है। यह जानकारी फिटनेस ऐप्स के सार्वजनिक डेटा से निकाली गई। क्रू के सदस्य फ्लाइट डेक पर चक्कर लगा रहे थे और Strava हर कदम रिकॉर्ड कर रहा था। जहाज़ की पोज़िशन, रास्ता और रफ़्तार हर उस इंसान को दिख रही थी जिसे पता था कि कहाँ देखना है।

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

“हानरहित” डेटा की समस्या

किसी एक फ़िटनेस ऐप का लोकेशन डेटा अलग से देखें तो बेज़ुबान लगता है। आप दौड़ने गए थे। आप काम पर साइकिल से गए। आपने पूल में लैप लगाए। लेकिन समय के साथ इकट्ठा होने पर यही डेटा ऐसे पैटर्न दिखाता है जो बिल्कुल भी हानरहित नहीं होते।

  • घर और ऑफ़िस की लोकेशन। आपके सबसे ज़्यादा बार इस्तेमाल होने वाले शुरुआती और आखिरी पॉइंट लगभग तय तौर पर आपका घर और दफ़्तर होते हैं। जो भी ऐप आपके रनिंग रूट रिकॉर्ड करता है, उसे पता होता है कि आप कहाँ रहते हैं और कहाँ काम करते हैं, भले ही आपने यह जानकारी कभी साफ़ तौर पर न दी हो।
  • रोज़ का शेड्यूल। हर वीकडे सुबह 6 बजे दौड़ते हैं? डेटा बता देता है कि आपका घर कब खाली रहता है। मंगलवार को काम के सिलसिले में बाहर जाते हैं? आपकी गैरमौजूदगी का पैटर्न भी दर्ज हो जाता है।
  • संवेदनशील लोकेशन। मिलिट्री कर्मी, इंटेलिजेंस अफ़सर, सरकारी कर्मचारी, कॉर्पोरेट एग्ज़ीक्यूटिव, जो भी किसी संवेदनशील जगह पर काम करता है या वहाँ जाता है, वह एक निशान छोड़ जाता है। किसी क्लासिफ़ाइड सुविधा पर एक अकेली वर्कआउट भी यह बता देती है कि वह सुविधा मौजूद है और आपकी उस तक पहुँच है।
  • सामाजिक संबंध। ग्रुप रन, साझा रूट और सेगमेंट लीडरबोर्ड बताते हैं कि कौन साथ में कसरत करता है। इंटेलिजेंस के संदर्भ में, इससे संवेदनशील ठिकानों पर काम करने वाले लोगों के सोशल नेटवर्क का नक्शा बन सकता है।

एयरक्राफ्ट कैरियर वाला मामला नाटकीय है, पर वही सिद्धांत आम लोगों पर भी लागू होते हैं। पीछा करने वाले (स्टॉकर्स) फिटनेस ऐप के डेटा से पीड़ितों को ढूँढ चुके हैं। चोर यह पहचान सकते हैं कि कब घर खाली है। नियोक्ता काम के घंटों के बाद कर्मचारियों की आवाजाही पर नज़र रख सकते हैं। यह डेटा बेहद बारीक और विस्तृत है, और ज़्यादातर मामलों में किसी भी व्यक्ति के लिए मुफ़्त अकाउंट से उपलब्ध है।

डेटा कैसे लीक होता है

फिटनेस ऐप्स कई रास्तों से लोकेशन डेटा लीक करते हैं, कुछ स्पष्ट तो कुछ बेहद सूक्ष्म।

सार्वजनिक एक्टिविटी प्रोफ़ाइल

कई ऐप्स डिफ़ॉल्ट रूप से पब्लिक प्रोफ़ाइल रखते हैं। आपकी रन, राइड और स्विम किसी को भी दिख सकती है, GPS ट्रेस के साथ नक्शे पर प्लॉट किए हुए। Strava के डिफ़ॉल्ट्स में सालों में सुधार हुआ है, लेकिन कई यूज़र्स ने तब अकाउंट बनाए थे जब डिफ़ॉल्ट ज़्यादा ढीले थे, और उन्होंने अपनी सेटिंग्स दोबारा कभी नहीं देखीं। Strava पर किसी मिलिट्री बेस, डेटा सेंटर या सरकारी इमारत के पास की एक्टिविटी खोजने पर अक्सर उससे ज़्यादा जानकारी मिल जाती है जितनी मिलनी चाहिए।

हीटमैप और एग्रीगेटेड डेटा

भले ही व्यक्तिगत एक्टिविटी प्राइवेट हो, एग्रीगेटेड डेटा संवेदनशील पैटर्न उजागर कर सकता है। Strava का ग्लोबल हीटमैप, जो सभी रिकॉर्ड की गई एक्टिविटी का घनत्व दिखाता है, संघर्ष क्षेत्रों में फ़ॉरवर्ड ऑपरेटिंग बेस के फ़्लोर प्लान की रूपरेखा के रूप में मशहूर हो गया। वीरान रेगिस्तान में ये ठिकाने एक्टिविटी के चमकते धब्बों की तरह दिखे। व्यक्तिगत यूज़र्स गुमनाम थे, लेकिन कुल पैटर्न साफ़ पहचाना जा सकता था।

सेगमेंट लीडरबोर्ड

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

API एक्सेस और डेटा ब्रोकर

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

नियमित डेवलपर्स के लिए OPSEC के सबक

अगर आप ऐसे ऐप्लिकेशन बना रहे हैं जो लोकेशन डेटा संभालते हैं, या कोई भी ऐसा डेटा जो संवेदनशील पैटर्न दिखा सकता है, तो फिटनेस ऐप्स की विफलताएँ ठोस सबक देती हैं।

डिफ़ॉल्ट रूप से प्राइवेट रखें

यह सुनने में साफ़ लगता है, पर ज़्यादातर फिटनेस ऐप्स सालों तक इसका उल्लंघन करते रहे, क्योंकि पब्लिक प्रोफ़ाइल से एंगेजमेंट और ग्रोथ बढ़ती थी। अगर आपका ऐप लोकेशन डेटा इकट्ठा करता है, तो डिफ़ॉल्ट प्राइवेट होना चाहिए और यूज़र्स स्पष्ट रूप से शेयरिंग के लिए opt-in करें। “पब्लिक, और सेटिंग्स में कहीं दबा हुआ प्राइवेट होने का विकल्प” नहीं, बल्कि सचमुच डिफ़ॉल्ट रूप से प्राइवेट।

// Bad: default to public, user must opt out
const userSettings = {
profileVisibility: 'public',
activityVisibility: 'public',
showOnHeatmap: true,
shareWithPartners: true
};
// Good: default to private, user must opt in
const userSettings = {
profileVisibility: 'private',
activityVisibility: 'private',
showOnHeatmap: false,
shareWithPartners: false
};
// Better: explain what each setting actually means
const privacySettings = {
profileVisibility: {
value: 'private',
description: 'Only people you approve can see your profile',
riskLevel: 'Your name and activity history are visible'
},
activityVisibility: {
value: 'private',
description: 'Only you can see your activities',
riskLevel: 'GPS routes show where you live, work, and travel'
}
};

प्राइवेसी ज़ोन लागू करें

Strava ने आखिरकार “प्राइवेसी ज़ोन” जोड़े, यानी संवेदनशील लोकेशन के आसपास के वे इलाके जहाँ GPS डेटा छिपा दिया जाता है। यह अच्छा फ़ीचर है, पर इसे लागू करने में सालों की देर हो गई। अगर आपका ऐप लोकेशन रिकॉर्ड करता है, तो यूज़र्स को ऐसे इलाके तय करने देने चाहिए जहाँ रिकॉर्डिंग रोक दी जाए या डेटा धुंधला (fuzz) कर दिया जाए। ज़्यादातर यूज़र्स इसे अपने घर और ऑफ़िस के आसपास सेट करेंगे, और इससे सबसे संवेदनशील पैटर्न खत्म हो जाएँगे।

इम्प्लीमेंटेशन की बारीकी: अगर रूट का पैटर्न अलग-सा हो, तो रूट के शुरुआती और आखिरी हिस्से में रैंडम ऑफ़सेट जोड़ना काफ़ी नहीं है। जो इंसान रोज़ एक ही 5K लूप दौड़ता है, उसका आकार एंडपॉइंट छिपे होने पर भी पहचाना जा सकता है। बेहतर तरीके हैं: रूट के पहले और आखिरी N मीटर काट देना, या सटीक लोकेशन के अनुमान से बचने के लिए एंडपॉइंट्स को ग्रिड पर स्नैप कर देना।

एग्रीगेशन अटैक के बारे में सोचें

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

समाधान यह है: एग्रीगेशन के लिए न्यूनतम सीमा तय करें (जहाँ N से कम अलग-अलग यूज़र हों, वहाँ हीटमैप डेटा न दिखाएँ), संवेदनशील भौगोलिक क्षेत्रों को बाहर रखें, और विज़ुअलाइज़ेशन जारी करने से पहले अप्रत्याशित पैटर्न खुलासों की जाँच करें। डिफ़रेंशियल प्राइवेसी तकनीकें, यानी एग्रीगेटेड क्वेरी में कैलिब्रेटेड नॉइज़ जोड़ना, मदद कर सकती हैं, हालाँकि इन्हें सही ढंग से लागू करना जटिल है।

अपनी डेटा शेयरिंग का ऑडिट करें

हर API एंडपॉइंट जो लोकेशन डेटा देता है, हर डेटा एक्सपोर्ट फ़ीचर, हर थर्ड-पार्टी इंटीग्रेशन, ये सब उन चैनलों की तरह हैं जिनसे संवेदनशील डेटा लीक हो सकता है। अपने डेटा के प्रवाह का नक्शा बनाएँ। जानें कि यूज़र का लोकेशन डेटा कहाँ जाता है, उसे कौन एक्सेस कर सकता है और किन शर्तों पर। अगर आप पार्टनर्स या एडवर्टाइज़रों के साथ डेटा साझा करते हैं, तो यूज़र्स को साफ़ बताएँ कि क्या और किसके साथ साझा हो रहा है।

बड़ी तस्वीर: डेटा मिनिमाइज़ेशन

बुनियादी सवाल यह है कि क्या आपके ऐप को वह डेटा चाहिए जो वह इकट्ठा करता है। क्या रनिंग ऐप को हर एक सेकंड पर GPS कोऑर्डिनेट्स चाहिए? रूट विज़ुअलाइज़ेशन के लिए हाँ। दूरी और पेस की गणना के लिए कम रेज़ोल्यूशन भी काफ़ी होगा। कैलोरी के अनुमान के लिए आपको सिर्फ़ कुल दूरी और ऊँचाई में बदलाव चाहिए।

डेटा मिनिमाइज़ेशन, यानी सिर्फ़ उतना डेटा इकट्ठा करना जितना यूज़र द्वारा इस्तेमाल किए जा रहे खास फ़ीचर के लिए ज़रूरी हो, डेटा लीक के खिलाफ़ सबसे मज़बूत सुरक्षा है। जो डेटा आपने इकट्ठा ही नहीं किया, वह लीक नहीं हो सकता, सबपोएना नहीं किया जा सकता, बेचा नहीं जा सकता, और निगरानी पैटर्न में एग्रीगेट नहीं किया जा सकता। यह “सब कुछ इकट्ठा करो और बाद में इस्तेमाल सोच लो” वाली ग्रोथ की प्रवृत्ति से टकराता है, लेकिन यही एकमात्र तरीका है जो सच में मज़बूत है।

यूज़र डेटा की सबसे अच्छी सुरक्षा बेहतर एन्क्रिप्शन या सख्त एक्सेस कंट्रोल नहीं है। सबसे अच्छी सुरक्षा यह है कि डेटा हो ही नहीं।

फिटनेस ऐप इंडस्ट्री ने यह सबक कड़े तरीके से सीखा, और कुछ कंपनियाँ अब भी नहीं सीख पाईं। मिलिट्री कर्मी अब भी एयरक्राफ्ट कैरियर पर Strava इस्तेमाल कर रहे हैं। इंटेलिजेंस अफ़सर अब भी क्लासिफ़ाइड सुविधाओं के पास रन लॉग कर रहे हैं। डेटा अब भी सर्वरों, APIs और डेटा ब्रोकरों तक पहुँच रहा है, जो ऐसे पैटर्न जोड़ सकते हैं जिन्हें कोई यूज़र उजागर करना नहीं चाहता था। डेवलपर्स के रूप में हम या तो ऐसे सिस्टम बना सकते हैं जो डिफ़ॉल्ट रूप से यूज़र्स को इन जोखिमों से बचाएँ, या ऐसे सिस्टम जो उनकी लापरवाही का फ़ायदा उठाएँ। एयरक्राफ्ट कैरियर के क्रू ने जब अपना रनिंग ऐप खोला, तब उन्होंने कोई सिक्योरिटी फ़ैसला नहीं लिया। वह फ़ैसला ऐप के डेवलपर्स ने सालों पहले लिया था, जब उन्होंने डिफ़ॉल्ट सेटिंग्स चुनी थीं।