
बर्थडे पैराडॉक्स पर आधारित क्रिप्टोग्राफी हमले का सरलीकृत संस्करण: Sweet32 (CVE-2016-2183)
यह Sweet32 अटैक (CVE-2016-2183) का एक प्रदर्शन है: https://sweet32.info/
यह अटैक बर्थडे अटैक का एक उदाहरण है जो CBC मोड में छोटे ब्लॉक साइज़ (64-बिट) वाले क्रिप्टो एल्गोरिदम, जैसे 3DES और Blowfish, का शोषण करता है। इस अटैक के लिए ज्ञात प्लेनटेक्स्ट के साथ बहुत सारे एन्क्रिप्टेड ब्लॉक्स उत्पन्न करने की आवश्यकता होती है। उत्पन्न होने के बाद, समान एन्क्रिप्टेड ब्लॉक्स की पहचान की जा सकती है और अज्ञात प्लेनटेक्स्ट वाले ब्लॉक्स के प्लेनटेक्स्ट मान की पहचान करने के लिए उपयोग किया जा सकता है।
यह इम्प्लीमेंटेशन अपने एन्क्रिप्शन एल्गोरिदम के रूप में 3DES (Triple DES) का उपयोग करता है, जिसका ब्लॉक साइज़ 64-बिट (8 बाइट) है - यह वही ब्लॉक साइज़ है जो वास्तविक दुनिया के 3DES को Sweet32 अटैक के प्रति संवेदनशील बनाता है।
जब दो सिफरटेक्स्ट ब्लॉक्स टकराते हैं (c_i = c_j), तो हम अज्ञात प्लेनटेक्स्ट को इस प्रकार पुनर्प्राप्त कर सकते हैं:
p_i = p_j ⊕ c_{i-1} ⊕ c_{j-1}
जहाँ:
p_i अज्ञात प्लेनटेक्स्ट है (जैसे, गुप्त कुकी)p_j ज्ञात प्लेनटेक्स्ट है (जैसे, HTTP हेडर)c_{i-1} और c_{j-1} पिछले सिफरटेक्स्ट ब्लॉक्स हैंयह इसलिए काम करता है क्योंकि CBC मोड में, टकराव का अर्थ है कि ब्लॉक सिफर के इनपुट समान थे, जिससे एन्क्रिप्शन कुंजी को जाने बिना XOR पुनर्प्राप्ति संभव हो जाती है।
गारंटीकृत टकराव के साथ डेमो चलाएँ:
# Step 1: Generate encrypted packet with secret cookie
python generate_rigged_packets.py rigged_demo.bin
# Step 2: Execute the attack to recover the cookie
python sweet32.py --block-size 8 rigged_demo.bin
अटैक SECRET COOKIE मान दिखाएगा, फिर केवल सिफरटेक्स्ट का उपयोग करके इसे पुनर्प्राप्त करेगा!
generate_rigged_packets.pyप्रदर्शन उद्देश्यों के लिए गारंटीकृत टकराव वाला एक पैकेट बनाता है। कुकी मान इस प्रकार तैयार किया जाता है कि यह ज्ञात-प्लेनटेक्स्ट ब्लॉक से टकराए।
sweet32.pyकुकी को पुनर्प्राप्त करने के लिए Sweet32 बर्थडे अटैक निष्पादित करें।
Sweet32 अटैक बर्थडे पैराडॉक्स का शोषण करता है। 64-बिट ब्लॉक सिफर के लिए:
यह 3DES (और अन्य 64-बिट ब्लॉक सिफर) को लंबे समय तक चलने वाले HTTPS सत्रों में संवेदनशील बनाता है।
वास्तविक 3DES (64-बिट ब्लॉक्स) पर Sweet32 अटैक के लिए:
| ब्लॉक साइज़ | ब्लॉक साइज़ | पैकेट्स की संख्या | आवश्यक डेटा | ब्लॉक गिनती |
|---|---|---|---|---|
| 8 byte | 64 bits | ~785GB | ~785GB | ~2^32 blocks |
वास्तविक अटैक के लिए ~785GB डेटा को समान कुंजी के तहत एन्क्रिप्ट करने की आवश्यकता होती है, यही कारण है कि यह मुख्य रूप से लंबे समय तक चलने वाले HTTPS कनेक्शनों को प्रभावित करता है।