Opensl कमांड लाइन टूल के साथ SSL ट्रैफ़िक को डिक्रिप्ट करें - भाग 3 जारी रखा


0

मेरे पिछले प्रश्नों / थ्रेड से भाग 1 शुरू करने और भाग 2 का पालन करने के बाद मेरी निर्देशित व्याख्या के बाद से मेरी फ़ाइलें / डेटा मैं कैप्चर कर रहा हूँ द्विआधारी प्रकृति में है मैंने निम्न ओपनसेल कमांड का उपयोग किया जहां मैं अपने प्रीमियर रहस्य से शुरू हुआ:

openssl rsautl -in cpre.key -inkey key.pem -decrypt -out spre.key

इसने मेरा 48 बाइट सर्वर प्री मास्टर सीक्रेट फाइल spre.key (मुझे लगता है कि सही है) और दशमलव में (बेड का उपयोग करके देखने के लिए) बनाया:

003 003 203 048 063 215 047 196 221 221 221 221 014 014 072 011 100 217 080 111 073 217 026 234 082 022 217 232 025 096 063 115 080 016 094 015 170 148 126 092 118 109 228 246 149 208 208 220

हेक्स: 0303CB303FD72FC4DDDDDDDE0E13480B64D9506F49D91AEA5216D9198198198198193198183

और शाब्दिक "मास्टर गुप्त" + client.random + server.random मेरे द्वारा बनाए गए श्रृंखलाबद्ध mseed.key और फिर बिस्तर के साथ दशमलव के रूप में एक ही तरह से देखने मैं बनाया:

109 097 115 116 101 114 032 115 101 099 114 101 116 173 212 147 215 014 129 225 102 1572727 001 125 167 097 014 085 064 025 11425 024 248 096 254 044 235 151 23 0 151 151 015 133 251 114 232 095 213 076 054 175 106 088 206 067 187 050 168 031 217 318 217 080 198 198 061 180 043

हेक्स: 6D617374657220736563726574ADD493D70E81E1669D1B017DA7610E554019721918F860FE2CEB978221970F85FB72E85FD54CC239AF6AE158CE45BB32A81FD950C63DB42B
69 बाइट्स के लिए कुल

अगला मुझे लगता है कि एक साथ रखा और के बाद से मैं सलाह दी गई थी कि डेटा बाइनरी फ़ाइलें में किया जा रहा मैं मास्टर गुप्त और कुंजी उत्पन्न करने के लिए निम्न प्रयोग किया जाता है।

openssl dgst -sha256 -hmac spre.key <mseed.key -binary >a1
openssl dgst -sha256 -hmac spre.key <a1 -binary >a2
openssl dgst -sha256 -hmac spre.key <a2 -binary >a3
openssl dgst -sha256 -hmac spre.key <a3 -binary >a4

इसने 4 32 बाइट फाइलें बनाईं।

इसके साथ कुंजी बनाकर पीछा किया:

cat a1 mseed.key | openssl dgst -sha256 -hmac spre.key -binary >k1
cat a2 mseed.key | openssl dgst -sha256 -hmac spre.key -binary >k2
cat a3 mseed.key | openssl dgst -sha256 -hmac spre.key -binary >k3
cat 42 mseed.key | openssl dgst -sha256 -hmac spre.key -binary >k4

इसने 4 32 बाइट फाइलें बनाईं।

मेरे द्वारा दिए गए उदाहरणों को पढ़ने और RFC को पढ़ने के बाद जैसा कि मैं समझता हूं कि इस बिंदु पर मास्टर कुंजी a1 + a2 के पहले 48 बाइट्स होंगे, क्या यह सही है या मुझे कुछ याद नहीं है? चूंकि मैं वास्तव में यह देखने में सक्षम नहीं हूं कि मास्टर_सेक्रेट पीआरएफ रिटर्न क्या कर रहा है या मुझे लगता है कि कमांड लाइन को ऊपर से चलाने से मुझे लगता है कि मुझे मास्टर गुप्त कैसे मिलेगा। धन्यवाद डेविड

जवाबों:


3

सबसे पहले, आपकी मैस्ड फाइल (PRF में लेबल + सीड वैल्यू) 77 बाइट होनी चाहिए, 69 नहीं। आपने क्लाइंट और / या सर्वर नॉन को किसी तरह गड़बड़ कर दिया होगा।

दूसरा, -hmac spre.keyबुरी तरह से गलत है। यह एचएमएसी कुंजी के रूप में वास्तविक पात्रों s p r e . k e y यानी ओकटेट्स 73 70 72 65 2e 6b 65 79 का उपयोग करता है। आपको डिक्रिप्टेड प्रीमेस्टर सीक्रेट के मूल्य का उपयोग करने की आवश्यकता है, जो आपकी spre.key फ़ाइल की सामग्री है। और जैसा कि क्योंकि उस बाइनरी डेटा कि बाइट्स जो विशेष वर्ण कोड हैं अशक्त, टैब, dollarsign, बोली, बैकस्लैश, हटाने, आदि की तरह आप सुरक्षित रूप से यह सीधे पारित नहीं हो सकता, शामिल कर सकते हैं है -hmac {key}या यहां तक कि -hmac '{key}'; इसके बजाय आपको उपयोग करने की आवश्यकता है -mac hmac -macopt hexkey:{hex key value}जैसा कि मैंने पिछले उत्तर में दिखाया था, वास्तविक क्यू कुंजी के उपयोग को छोड़कर जो आपने इस क्यू में दर्शाया था 0303CB30...2CDC

तीसरा, जैसा कि मैंने पिछले उत्तर में दिखाया था, आप एचएमएसीएस की दूसरी परत के परिणामों को मेरे संकेतन k1, k2, ... को आउटपुट बनाने के लिए संक्षिप्त करते हैं (जो उस उदाहरण में 100 ओकटेट थे):

$ cat k1 k2 k3 k4 | head -c100 | xxd

लेकिन जैसा कि मैंने कहा:

... वास्तविक TLS1.2 हैंडशेक के लिए भी, सही लंबाई के लिए समायोजित: मास्टर रहस्य के लिए 48, और कार्यशील कुंजियों के लिए सिफरसुइट पर निर्भर करता है।

पहली (पूर्व-से-मास्टर) व्युत्पत्ति के लिए आपको 48 ओकटेट की आवश्यकता होती है, इसलिए आपको केवल 32 के पहले दो चक्र (a0-> a1-> a2 a1 + a0-> k1 a2 + a0- - k2) की आवश्यकता होती है, फिर concatenate k1 + k2 और पहले 48 ओकटेट लें।

दूसरे (मास्टर-टू-वर्किंग) के लिए जिस लंबाई की आपको जरूरत होती है, उसे उस सिफरसुइट पर निर्भर करता है जिसकी बातचीत की गई थी। आपने कहा कि आप RSA-with-AES256CBC-SHA का उपयोग कर रहे हैं (जो कि TLS1.2 में, या 1.1 लेकिन 1.0 नहीं) को HMAC की 40 ऑक्टेट की और ऑक्टो को 104 ऑक्टेट की कुल 64 ऑक्टेट की की जरूरत है। 104 ओकेट्स के लिए आपको 32 के 4 चैंट्स, कॉनेटेट के k1 + k2 + k3 + k4 की गणना करने की जरूरत है, और इसे उस क्रम में क्लाइंट-मैक, सर्वर-मैक, क्लाइंट-एन्क्रिप्शन, सर्वर-एन्क्रिप्शन के लिए पार्सल करना होगा। देखें RFC के 6.3। यह भी ध्यान दें कि लेबल अलग है, और इस व्युत्पत्ति के लिए बीज (लेबल +) server_random + client_random है, न कि (लेबल +) client_random + server_random पहले वाले के रूप में।


आह ... ठीक है मैं शुद्ध रूप से यादृच्छिक संख्या के साथ mseed.key उत्पन्न करता था मुझे एहसास नहीं था कि इसमें समय शामिल होगा। मैं फिर से बनाऊंगा कि समय के साथ यह 77 बाइट्स बना दे। मैं ऐसा करने जा रहा हूं और फॉलोअप पोस्ट करने से पहले फिर से कदम बढ़ाऊंगा। जब ओपन मास्टर rsautl के साथ पूर्व मास्टर रहस्य को डिक्रिप्ट करना मेरे cpre.key द्विआधारी प्रारूप में था और key.pem बेस 64 फ़ाइल पीएम फ़ाइल थी जो मेरे प्रमाणपत्र पीढ़ी के दौरान बनाई गई थी। मेरा मानना ​​है कि pem फ़ाइल सही प्रारूप है निश्चित नहीं है कि cpre.key को एक अलग प्रारूप में होना चाहिए या नहीं। मैं किस प्रारूप पर प्रयोग करने में थोड़ा भ्रमित हो रहा हूं
डेविड बी

हां, rsautl -inkeyडिफ़ॉल्ट रूप से पीईएम है (चार पीईएम प्रारूपों में से कोई भी ओपनएसएसएल आरएसए निजी कुंजी के लिए उपयोग करता है) और इनपुट और आउटपुट (आपका cpre.key और spre.key) द्विआधारी है। आपके द्वारा spre.key के लिए दिखाया गया हेक्स सही दिखता है; यह निश्चित रूप से सही लंबाई और प्रारूप है (पहले दो ओकटेट्स 03 03 एक एंटी-डाउनग्रेड सुविधा हैं, RFC में 7.4.7.1 देखें) और यहां एक गलती से सही लंबाई और प्रारूप के साथ डिक्रिपटेबल पैडिंग का उत्पादन करने की संभावना नहीं होगी।
dave_thompson_085

कल रात कॉफी के 2 बर्तनों के बाद ठीक है और अपने अंतिम क्यूबा सिगार को धूम्रपान करने के बाद मैं यहाँ निम्नलिखित चरणों के साथ आया हूँ जो मुझे विश्वास है कि मैंने इन और पिछले मुद्दे को संबोधित किया है।
डेविड बी

डेव, मैं भाग 5 के साथ थोड़ा अटक गया हूं आप मेरी नवीनतम पोस्ट पर एक नज़र डाल सकते हैं और टिप्पणी कर सकते हैं कि मैं थोड़ा खो रहा हूं मुझे लगता है कि मैं प्रगति कर रहा हूं लेकिन अब थोड़ा अटक गया हूं। धन्यवाद
डेविड बी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.