मूल सिद्धांत
Droplet Drop में न अकाउंट है, न ट्रांसफ़र सर्वर। फ़ाइलें आपके लोकल नेटवर्क पर भेजने वाले डिवाइस से सीधे पाने वाले तक जाती हैं। हम आपकी फ़ाइलें कभी नहीं देखते, न यह कि कौन किसे भेजता है: वे हमसे होकर नहीं जातीं।
कोई घर में बनी क्रिप्टोग्राफ़ी नहीं: Droplet Drop परखी हुई लाइब्रेरी पर चलता है — rustls (TLS 1.3), ring, rcgen (ECDSA P-256), SHA-256 और BLAKE3।
एन्क्रिप्शन
हर कनेक्शन TLS 1.3 से, और सिर्फ़ TLS 1.3 से, एन्क्रिप्ट होता है। प्रमाणीकरण परस्पर है: दोनों डिवाइस अपनी पहचान साबित करते हैं।
पहली बार खुलने पर हर डिवाइस अपनी कुंजी (ECDSA P-256) बनाता है। उसकी पहचान इस कुंजी का फ़िंगरप्रिंट है; ऐप में दिखने वाला सुरक्षा कोड उसकी शुरुआत है, ताकि एक नज़र में जाँच सकें।
कनेक्ट करने वाला डिवाइस अपेक्षित पहचान को पिन करता है, जो उसे नेटवर्क पर खोज या QR कोड से मिली। उसका रूप धरने वाला कोई और डिवाइस अस्वीकार कर दिया जाता है।
आपकी सहमति के बिना कुछ नहीं आता
हर ट्रांसफ़र एक प्रस्ताव से शुरू होता है: भेजने वाले का नाम, उसके डिवाइस का कोड, फ़ाइलों की संख्या और साइज़। जवाब न मिले तो यह दो मिनट बाद ख़त्म हो जाता है।
सिर्फ़ वे डिवाइस जिन्हें आपने «भरोसेमंद» चुना है, बिना पुष्टि के भेज सकते हैं, और आप उन्हें कभी भी हटा सकते हैं।
पाई गई फ़ाइल कभी चलाई नहीं जाती। अगर ट्रांसफ़र में कोई प्रोग्राम है, तो प्रस्ताव में यह बताया जाता है।
आख़िरी बाइट तक जाँचा हुआ
भेजने से पहले हर फ़ाइल 4 MiB के ब्लॉक में बाँटी जाती है, और हर ब्लॉक को उसका BLAKE3 फ़िंगरप्रिंट मिलता है, पूरी फ़ाइल की तरह। पाने वाला हर ब्लॉक को आते ही जाँचता है, फिर पूरी फ़ाइल दोबारा पढ़ता है।
ख़राब या छेड़छाड़ वाला ब्लॉक दोबारा माँगा जाता है। जो फ़ाइल मूल से मेल नहीं खाती, वह कभी सौंपी नहीं जाती: वह सही होने तक छिपे फ़ोल्डर में रहती है, या मिटा दी जाती है।
Group Drop
न्योते में लोकल नेटवर्क पर होस्ट का पता, उसके डिवाइस की पहचान (पिन की हुई), 128-बिट सेशन आईडी और एक 256-बिट टोकन होता है जिसका अनुमान लगाना असंभव है। होस्ट टोकन की तुलना स्थिर समय में करता है।
न्योता सीमित समय के लिए है (30 मिनट, 2 घंटे या 8 घंटे)। लिंक शेयर करना जुड़ने का अधिकार देना है: इसे सिर्फ़ भाग लेने वालों से शेयर करें।
न्योते का लिंक drop.dropletmesh.app पर खुल सकता है: «#» के बाद वाला हिस्सा, जिसमें न्योता होता है, कभी हमारे सर्वर पर नहीं भेजा जाता। वह आपके ब्राउज़र में ही रहता है।
सुरक्षा उपाय, एक-एक करके
| ख़तरा | सुरक्षा |
|---|---|
| नेटवर्क पर जासूसी | हर कनेक्शन पर TLS 1.3 |
| डिवाइस का रूप धरना | पिन की हुई पहचान; TLS हैंडशेक कुंजी होने का सबूत देता है |
| बिन माँगा ट्रांसफ़र | स्पष्ट सहमति (या भरोसेमंद डिवाइस); 2 मिनट बाद ख़त्म |
| वितरण में घुसपैठिया | 256-बिट टोकन, स्थिर समय में तुलना; समय-सीमित न्योता |
| ख़राब या छेड़छाड़ वाली फ़ाइल | हर ब्लॉक और पूरी फ़ाइल का BLAKE3 फ़िंगरप्रिंट; जाँच से पहले कुछ नहीं सौंपा जाता |
| रिसीव फ़ोल्डर के बाहर लिखना | पाते समय पाथ साफ़ किए जाते हैं («..», रूट, आरक्षित नाम, वर्जित अक्षर) |
| किसी फ़ाइल को ओवरराइट करना | कभी नहीं: ख़ाली नाम चुना जाता है, «नाम (1).ext» |
| डिस्क भरी हुई | स्वीकार करने से पहले ख़ाली जगह जाँची जाती है |
| बहुत बड़ा डेटा | सीमित संदेश; एक ट्रांसफ़र 1,00,000 फ़ाइलों और 4 TiB तक सीमित |
| बार-बार हमले | एक मिनट में 20 विफलताओं के बाद पता अनदेखा; एक साथ अधिकतम 128 कनेक्शन |
आपके डिवाइस की कुंजी
डिवाइस की प्राइवेट कुंजी उसे कभी नहीं छोड़ती। यह ऐप के डेटा फ़ोल्डर में रखी जाती है (Mac और Linux पर सिर्फ़ आपका अकाउंट पढ़ सकता है)। अगर यह फ़ोल्डर मिटा दिया जाए — जैसे फ़ोन से ऐप हटाने पर — तो डिवाइस को नई पहचान मिलती है, और आपके दूसरे डिवाइस को उस पर फिर से भरोसा करना होगा।
कमज़ोरी की सूचना दें
लगता है आपको कोई कमज़ोरी मिली है? contact@dropletmesh.app पर लिखें, और उसे दोहराने के लिए ज़रूरी जानकारी दें। कृपया सार्वजनिक करने से पहले हमें ठीक करने का समय दें; हम आपको जवाब देंगे और जानकारी देते रहेंगे।