मेरे पास एक ऐसा एप्लिकेशन है जहां मुझे यूडीपी का उपयोग करके नेटवर्क के माध्यम से प्रति सेकंड कई छोटे डेटा भेजना पड़ता है। एप्लिकेशन को वास्तविक समय में डेटा भेजने की आवश्यकता है (कोई प्रतीक्षा नहीं)। मैं इन आंकड़ों को एन्क्रिप्ट करना चाहता हूं और बीमा कर रहा हूं कि मैं जो कर रहा हूं वह जितना संभव हो उतना सुरक्षित है।निरंतर/छोटे यूडीपी डेटा को एन्क्रिप्ट करने के लिए सर्वोत्तम अभ्यास
चूंकि मैं यूडीपी का उपयोग कर रहा हूं, इसलिए एसएसएल/टीएलएस का उपयोग करने का कोई तरीका नहीं है, इसलिए मुझे प्रत्येक पैकेट को अकेले एन्क्रिप्ट करना होगा क्योंकि प्रोटोकॉल कनेक्शन रहित/अविश्वसनीय/अनियमित है।
अभी, मैं उपयोगकर्ता से पासफ्रेज से व्युत्पन्न 128-बिट कुंजी का उपयोग कर रहा हूं, और सीईसी मोड में एईएस (एईएस-सीबीसी का उपयोग कर पीबीई) का उपयोग कर रहा हूं। मैंने 128-बिट कुंजी प्राप्त करने के लिए पासफ्रेज़ के साथ एक यादृच्छिक नमक का उपयोग करने का निर्णय लिया (पासफ्रेज पर शब्दकोश हमले को रोकें), और निश्चित रूप से IVs (पैकेट के लिए सांख्यिकीय विश्लेषण को रोकने के लिए) का उपयोग करें।
हालांकि मैं कुछ चीजों के बारे में चिंतित हूँ: प्रत्येक पैकेट जो एन्क्रिप्टेड पैकेट में जाना जाता प्लेन टेक्स्ट हमले के लिए असुरक्षित (जो इसे और आसान बना का परिणाम देगा कर देगा (पैकेट प्रति पूर्णांक मूल्यों के एक जोड़े की तरह) डेटा की कम मात्रा में होती कुंजी को दरकिनार करने के लिए)। इसके अलावा, चूंकि एन्क्रिप्शन कुंजी पासफ्रेज़ से ली गई है, इससे कुंजी स्थान कम हो जाएगा (मुझे पता है कि नमक मदद करेगा, लेकिन मुझे नेटवर्क के माध्यम से नमक भेजना होगा और कोई भी इसे प्राप्त कर सकता है)। इन दो चीजों को देखते हुए, कोई भी भेजा गया डेटा स्नीफ और स्टोर कर सकता है, और कुंजी को क्रैक करने का प्रयास कर सकता है। यद्यपि इस प्रक्रिया में कुछ समय लग सकता है, एक बार जब कुंजी क्रैक हो जाती है तो सभी संग्रहीत डेटा डिक्रिप्ट हो जाएंगे, जो मेरे आवेदन के लिए एक वास्तविक समस्या होगी।
तो मेरा सवाल यह है कि कनेक्शन रहित प्रोटोकॉल (यूडीपी) का उपयोग करके निरंतर छोटे डेटा को भेजने/एन्क्रिप्ट करने के लिए सबसे अच्छा प्रथा क्या है? क्या मेरा तरीका यह करने का सबसे अच्छा तरीका है? ... प्रवाहित होती? ... Overkill?
कृपया ध्यान दें कि मैं 100% सुरक्षित समाधान नहीं मांग रहा हूं, क्योंकि ऐसी कोई चीज़ नहीं है।
बस एक नोटिस के रूप में: आज (5.12.2014) के रूप में, स्पार्क कोर सर्वर (क्लाउड) के साथ संचार करते समय एईएस-128-सीबीसी का उपयोग कर रहा है। यह ~ 15bytes संदेश के साथ प्रत्येक 15 सेकंड में कम से कम एक बार सर्वर को पिंग करता है जो एन्क्रिप्शन के बाद 2 + 128bytes लेता है। जब उपयोगकर्ता अधिक डेटा भेजने/पुनः प्राप्त करने का निर्णय लेता है तो यह जल्दी से जमा हो जाता है (विशेष रूप से 3 जी पर)। –