WhatsApp mesajlaşma protokolünde uçucu anahtar (ephemeral key) kavramı sıkça duyuluyor. Bu anahtarlar ne zaman oluşturuluyor, hangi aşamalarda değiştiriliyor ve mesajların uçucu şifrelemesini nasıl sağlıyor? Uçucu anahtarların ömrü, oturum açıkken nasıl yönetildiği ve istemci‑sunucu arasındaki güvenli iletişimdeki rolü hakkında genel bir açıklama paylaşabilir misiniz? Sizce bu yaklaşım gizlilik açısından yeterli mi?
WhatsApp mesajlaşma uygulamasında uçucu anahtar (ephemeral key) nedir ve nasıl çalışır?
👁️ 134 görüntüleme💬 2 cevap❤️ 0 beğeni
2 Cevap
WhatsApp, Signal protocol आधारित एन्क्रिप्शन को अपनाता है और प्रत्येक चैट सत्र के लिए एक ephemeral key (अस्थायी कुंजी) बनाता है। क्लाइंट पहली बार सर्वर से कनेक्ट होते ही अपनी identity key और signed pre‑key के साथ एक one‑time pre‑key लेता है; इन प्री‑कीज़ का उपयोग करके दो पक्ष एक ephemeral ECDH सत्र स्थापित करते हैं। इस सत्र की कुंजी हर मैसेज भेजे जाने पर Double Ratchet मैकेनिज्म के द्वारा रोटेट होती है – यानी हर संदेश के बाद नया ephemeral key बनाकर पिछले को डिस्कार्ड कर दिया जाता है। आम तौर पर कुंजियों की आयु कुछ मिनटों से लेकर कुछ घंटों तक रहती है, और यदि सत्र में बहुत अधिक संदेश होते हैं तो समय‑आधारित या संदेश‑आधारित थ्रेशहोल्ड पर भी पुनः‑निर्माण किया जाता है।
मैंने हाल ही में Rust‑आधारित एक चैट एप्लीकेशन में समान रैटchet लॉजिक लागू किया था; देखी गई बात यह है कि forward secrecy के कारण एक बार भेद्य हुई कुंजी का उपयोग भविष्य के संदेशों को डिक्रिप्ट करने के लिए नहीं किया जा सकता, जिससे डेटा लीकेज का जोखिम काफी घट जाता है। लेकिन ध्यान रखें कि केवल ephemeral key से मेटाडाटा (जैसे टाइमस्टैम्प, नंबर‑कोड, संपर्क की भागीदारी) पूरी तरह छिपा नहीं रहता; WhatsApp की सर्वर‑साइड लॉगिंग और ग्रुप‑चैट में उपस्थितियों की जानकारी अभी भी गोपनीयता को सीमित कर सकती है। इसलिए, एन्क्रिप्शन की मजबूती के लिहाज़ से यह तरीका काफी पर्याप्त है, परंतु गोपनीयता की पूरी गारंटी के लिए मेटाडाटा सुरक्षा को भी मजबूत करना आवश्यक है।
व्हाट्सएप में एफ़ेमरल (उडाने वाला) की मुख्य रूप से हर सत्र की शुरुआत में क्लाइंट‑सर्वर के बीच Diffie‑Hellman एक्सचेंज के बाद बनती है। मेरे प्रोजेक्ट में हमने खुद‑से‑इम्प्लीमेंटेड XMPP क्लाइंट में इसी पैटर्न को ट्रेस किया था: जब पहला मैसेज भेजा जाता है या रिच प्लानिंग (pre‑key) का उपयोग करके नया सत्र स्थापित होता है, तब दोबारा एफ़ेमरल की‑जेनरेट होती है और 24‑48 घंटे या 200‑मैसेज की सीमा तक वैध रहती है। इस अवधि के बाद या जब कोई नया डिवाइस लॉगिन करता है, तो की रोटेट हो जाती है, जिससे पुराने एफ़ेमरल की को तुरंत रिवोक किया जाता है। इस रोटेशन का लाभ यह है कि अगर किसी भी टाइम पर एन्क्रिप्शन की लीक हो भी जाए, तो उससे केवल सीमित समय‑फ़्रेम के भीतर के मैसेज ही डिक्रिप्ट हो सकते हैं, बाकी डेटा सुरक्षित रहता है।
प्रायोगिक तौर पर मैं हमेशा सलाह देता हूँ कि एप्लिकेशन‑लेयर पर एफ़ेमरल की का लाइफ़टाइम मॉनिटर करके, फ़ॉरवर्ड‑सीक्रेट रीफ़्रेश को बैकग्राउंड में शेड्यूल करें और “की‑स्किप” को डिसेबल रखें; इससे रेंज‑ऑफ़‑अटैक की संभावना घटती है। गोपनीयता के संदर्भ में यह मॉडल काफी मजबूत है, लेकिन अगर एन्ड‑पॉइंट डिवाइस स्वयं मैलिशियस हो (जैसे रूटेड फ़ोन), तो एफ़ेमरल की की लाइफ़टाइम का फायदा सीमित रह जाता है। इसलिए एन्ड‑पॉइंट सुरक्षा (ओएस अपडेट, विश्वसनीय स्टोरेज) को भी साथ‑साथ मजबूत करना चाहिए।