मैं Android BLE कनेक्शन में एप्लिकेशन स्तर एन्क्रिप्शन कैसे जोड़ूं?
एंड्रॉयड ब्लूटूथ निम्न ऊर्जा प्रलेखन पर टॉप BLE कनेक्शन के आवेदन परत एन्क्रिप्शन जोड़ने की सलाह देता है, तो विमर्श डेटा संवेदनशील होता है:
सावधानी : जब कोई उपयोगकर्ता BLE का उपयोग करके अपने डिवाइस को किसी अन्य डिवाइस के साथ जोड़ देता है, तो दो डिवाइसों के बीच संचार करने वाला डेटा उपयोगकर्ता के डिवाइस के सभी ऐप्स तक पहुंच योग्य होता है।
इस कारण से, यदि आपका ऐप संवेदनशील डेटा कैप्चर करता है, तो आपको उस डेटा की गोपनीयता की सुरक्षा के लिए ऐप-लेयर सुरक्षा को लागू करना चाहिए।
जैसा कि मैं "अपने स्वयं के एन्क्रिप्शन को रोल करना" से बचना चाहूंगा, मैं पैकेटों को एन्क्रिप्ट करने के लिए उत्पादन-तैयार तरीके की तलाश कर रहा हूं।
मेरे पास एक संदेश (जैसे कुंजी) एक प्रतिभागी से दूसरे (QR कोड) का आदान-प्रदान करने के लिए एक आउट-ऑफ-बैंड चैनल है। दोनों प्रतिभागी एंड्रॉइड डिवाइस हैं, एक सर्वर मोड (परिधीय) में ऑपरेटिंग है, और एक क्लाइंट (केंद्रीय) के रूप में है।
मैंने शोर प्रोटोकॉल फ्रेमवर्क को टीएलएस के लिए अधिक हल्के विकल्प के रूप में देखा , लेकिन ऐसा लगता है कि यह अभी भी बहुत मैनुअल काम (?) के लिए है।
क्या कोई आसान उपाय है? ऐसा लगता है कि यह एक सुलझी हुई समस्या है।
जवाब
सबसे पहले, सलाह का एक शब्द: StackExchange विशिष्ट उत्पादों की सिफारिश करने के लिए नहीं है, इसलिए मैं यहां अपेक्षाकृत सामान्य होने जा रहा हूं। जो कोई भी भविष्य में इसे पढ़ता है वह एक ऐसी दुनिया में हो सकता है जहां नए और बहुत बेहतर विकल्प हैं, या यहां तक कि जहां पुराने गार्ड को तोड़ा गया है।
कई उच्च-स्तरीय क्रिप्टो लाइब्रेरी हैं - जिन्हें पूर्व-साझा कुंजी दी गई है - न्यूनतम प्रयास के साथ संदेश या संभवतः स्ट्रीम एन्क्रिप्शन (और डेटा अखंडता जैसे संबंधित सुरक्षा आवश्यकताओं) को संभाल लेंगे। बस "आसान क्रिप्टो लाइब्रेरी" के लिए खोज करने पर आपको कुछ उम्मीदवार मिलेंगे। ध्यान दें कि बहुत से लोग आपके स्वयं के क्रिप्टो को रोल करने के खिलाफ सलाह को अनदेखा करते हैं, और उनमें से कुछ इसे प्रकाशित करते हैं, इसलिए आप यह सुनिश्चित करना चाहते हैं कि आपके द्वारा चुनी गई लाइब्रेरी विशेषज्ञों द्वारा अच्छी तरह से समीक्षा की जाती है, आदर्श रूप से इसके विकास के लिए असंबंधित है।
आप यह भी विचार करना चाहेंगे कि आप अपने पुस्तकालय से वास्तव में क्या चाहते हैं (और आवश्यकता है)। क्या इसे मनमाने ढंग से लंबाई वाली एन्क्रिप्टेड स्ट्रीम (या बहुत बड़े संदेश जो आसानी से मेमोरी में फिट नहीं होते हैं) का समर्थन करने की आवश्यकता है, या एक सरल संदेश-आधारित प्रोटोकॉल काम करेगा? पुस्तकालय बहुत छोटा होना चाहिए, पदचिह्न या रैम उपयोग को स्थापित करने में? बहुत तेजी से, एक विशेष सीपीयू पर? किसी विशेष अन्य पुस्तकालय के साथ संगत? अनुपालन कारणों के लिए विशिष्ट सिफर या अन्य आदिम का उपयोग करें (मुझे आशा नहीं है)? किसी विशेष भाषा में उपलब्ध है?
2020 के मध्य के कुछ प्रसिद्ध उदाहरणों के लिए, लिबसोडियम या मोनोसेफियर पर विचार करें । दोनों ही सुविचारित, समीक्षित और उपयोग में आसानी पर केंद्रित हैं। अन्य विकल्प NaCl, LibHydrogen और इतने पर हैं। ध्यान दें कि ये सभी सुरक्षा, गति या सुविधा पर समान रूप से ध्यान केंद्रित नहीं करते हैं; उदाहरण के लिए, TweetNaCl न्यूनतम कोड आकार पर जोर देती है, मूल NaCl की तुलना में प्रक्रिया में बहुत अधिक गति और संभवतः कुछ सुरक्षा का त्याग करती है।