ওপেনএসএসএল: ডিএইচ প্যারামিটারগুলি প্রদর্শন করুন


15

এসএসএল সিফার্স যখন কোনও ডিফাই হেলম্যানম্যান কী এক্সচেঞ্জের উপর নির্ভরশীল ব্যবহার করেন, তখন সেই কী এক্সচেঞ্জের সুরক্ষার জন্য নিযুক্ত প্রাইভেট কীটির আকার অত্যন্ত গুরুত্বপূর্ণ।

আমি যখন "ওপেনসেল এস_স্লায়েন্ট" সরঞ্জামটি ব্যবহার করে কোনও সার্ভারের সাথে সংযোগ করি, তখন আমি কীভাবে ব্যবহৃত ডিএইচ প্যারামিটারগুলি জিজ্ঞাসা করতে পারি?

উত্তর:


17

কমান্ড-লাইন স্যুইচটি ব্যবহার করা সহজ আমি জানি না, তবে openssl s_clientকমান্ড লাইনে আপনি -msgহ্যান্ডশেক ম্যাসেজটির হেক্সাডেসিমাল ডাম্প পেতে বিকল্প যুক্ত করতে পারেন । তারপরে ServerKeyExchangeবার্তাটি দেখুন; এটিকে ঐটির মত দেখতে হবে:

<<< TLS 1.2 Handshake [length 030f], ServerKeyExchange
    0c 00 03 0b 01 00 ff ff ff ff ff ff ff ff c9 0f
    da a2 21 68 c2 34 c4 c6 62 8b 80 dc 1c d1 29 02
    4e 08 8a 67 cc 74 02 0b be a6 3b 13 9b 22 51 4a
    (...)

এবং এটি সেভাবে পড়ে:

  • 0c 00 03 0b: 0x00030 বি বাইট দৈর্ঘ্যের "সার্ভারকি এক্সচেঞ্জ" টাইপের বার্তা (এটি "0c")।
  • প্রথম উপাদানটি হ'ল দুটি বাইট দৈর্ঘ্যের শিরোনাম সহ একটি বড় পূর্ণসংখ্যার হিসাবে ডিএইচ মডুলাস। এখানে দৈর্ঘ্যটি এনকোড করা হয়েছে 01 00যার অর্থ 0x0100 বাইটের মধ্যে একটি পূর্ণসংখ্যা এনকোড করা হয়েছে। এটি 256 বাইট, সুতরাং মডিউলসের দৈর্ঘ্য 2041 এবং 2048 বিটের মধ্যে রয়েছে।
  • মডুলাস বাইটগুলি স্বাক্ষরবিহীন বড়-এন্ডিয়ান ক্রমে অনুসরণ করে। এই মডুলাসের শীর্ষ বাইটগুলি এক্ষেত্রে ff ff ff ff...,। মডুলাসটির তখন দৈর্ঘ্য 2048 বিট হয় 48

আপনি যদি কোনও ECDHE সাইফার স্যুট (উপবৃত্তাকার বক্ররেখা) ব্যবহার করেন তবে অবশ্যই ServerKeyExchangeফর্ম্যাটটি আলাদা।

বার্তার সংজ্ঞা জন্য মান দেখুন ServerKeyExchange। ডিএইচই সাইফার স্যুটগুলির জন্য, এতে মডিউলাস পি , জেনারেটর জি এবং সার্ভার ডিএইচ পাবলিক কী ওয়াই রয়েছে যাতে ক্রম অনুযায়ী প্রতিটি বর্ণিত উপরে বর্ণিত বিন্যাসে বড় সংখ্যার হিসাবে প্রকাশিত হয় (16-বিট শিরোনামে বাইটগুলির দৈর্ঘ্য রয়েছে, তারপরে পূর্ণসংখ্যার স্বাক্ষরযুক্ত বিগ-এন্ডিয়ান এনকোডিংয়ের মান)।

সাম্প্রতিক ওপেনএসএসএল সংস্করণগুলি একটি ডিএইচ মডুলাস আকার নির্বাচন করে যা সার্ভারের কী জোড় ( বার্তায় স্বাক্ষর করতে ব্যবহৃত) এর শক্তির সাথে মিলিত হয় (সুরক্ষা দৃষ্টিকোণ থেকে) matches ServerKeyExchangeউপরের উদাহরণে, সার্ভারের একটি 2048-বিট আরএসএ কী রয়েছে, সুতরাং ওপেনএসএসএল একটি 2048-বিট ডিএইচ মডুলাস ব্যবহার করার জন্য নির্বাচিত হয়েছে (এই ক্ষেত্রে, আরএফসি 3526, বিভাগ 3-এ বর্ণিত সুপরিচিত মডুলাস )।

বৃহত্তর ডিএইচ গ্রুপ সমর্থন করে না এমন কিছু বিদ্যমান ক্লায়েন্টের সাথে সামঞ্জস্যতা নিশ্চিত করার জন্য কিছু অন্যান্য সার্ভারগুলি 1024-বিট ডিএইচ গোষ্ঠীর সাথে লেগে রয়েছে ( 2012 সালে জাভা 8-তে নির্ধারিত 56 জনের মধ্যে জাভাতে এসএসএল বাস্তবায়ন হওয়া সবচেয়ে বড় অপরাধী )। ডিএইচই সাইফার স্যুটগুলির জন্য টিএলএস প্রোটোকলের একটি ত্রুটিযুক্ত কারণ হ'ল ক্লায়েন্টটি কোন মডুলাসের আকারটি সমর্থন করতে পারে তা নির্দিষ্ট করার কোনও উপায় নেই (এটি ECDHE এর জন্য স্থির, কারণ ক্লায়েন্টটি গ্রহণযোগ্য বক্ররেখার সঠিক তালিকা নির্দিষ্ট করতে পারে) ।


1
ওপেনএসএসএল ডিএইচই অটোলেক্ট করে না, তবে একটি অ্যাপ কলব্যাক পারে। ওপেনএসএসএল ১.০.২ (জানুয়ারী ২০১৫) ECDHE কে oseচ্ছিকভাবে নির্বাচন করতে পারে এবং 1.0.2 তে s_clientসর্বদা "টেম্প সার্ভার কী" ডিএইচ এবং আকার বা ইসিডিএইচ এবং বক্ররেখা প্রদর্শিত হয়, "হ্যান্ডশেকটি এক্স এবং লিখিত y পড়েছে" তার ঠিক আগে, আপনার আর দরকার নেই এটি ডিকোড করতে। এটি সাম্প্রতিক অ্যাপাচি Mod_ssl যা ডিএইচই : httpd.apache.org/docs/trunk/mod/mod_ssl.html#sslcertificatefile (যা জাভা ক্লায়েন্টদের সম্পর্কে ইস্যুটি নোট করে) aut
dave_thompson_085

আমি OpenSSL 1.0.1e ব্যবহার এবং আমি কোনো না ServerKeyExchangeসঙ্গে 0c 00 03 0b। আপনি আউটপুট পেতে সঠিক আদেশ প্রদান করতে পারেন? আমার কোনও হ্যান্ডশেকের শুরু নেই0c
রুবু

যদি সার্ভার দ্বারা নির্বাচিত সিফার স্যুটটি "ডিএইচই" বা "ইসিইচডিই" সাইফার স্যুট না হয়, তবে কোনও সার্ভারকি এক্সচেঞ্জ বার্তা থাকবে না।
থমাস পর্নিন

আমি <<< টিএলএস 1.2 হ্যান্ডশেক [দৈর্ঘ্য 01 সিডি], সার্ভারকি এক্সচেঞ্জ 0 সি 00 01 সি 9 03 00 17 41 04 08 5f 82 88 1e ই 5 বি 6 এর পরে 443 অক্টেট রয়েছে যা 0x1c9 দৈর্ঘ্যের সাথে পঞ্চম অক্টেট থেকে শুরু হয়। তবে "0300" এর অর্থ 768 অক্টেট রয়েছে বলে মনে হয় যখন আমার ডিএইচ পরম "কেবল" 2048 বিট হয় sure
Law29

1
@ Law29 এটিকে আরও একটি ECDHE সার্ভারকি-এক্সচেঞ্জের মতো দেখাচ্ছে। যদি কোনও উপবৃত্তাকার বক্র ব্যবহার করে থাকে তবে "03" এর অর্থ "এটি একটি নামযুক্ত বক্ররেখা, পরবর্তী দুটি বাইটগুলি বক্ররেখা সনাক্তকারীকে এনকোড করে"। তারপরে "00 17" হ'ল বাঁক শনাক্তকারী, যা NIST পি -256 (ECDHE এর জন্য সর্বাধিক ব্যবহৃত বক্র)। তারপরে "41" হ'ল সর্বজনীন পয়েন্ট দৈর্ঘ্য, যা সঙ্কুচিত বিন্যাসে P-256 পয়েন্টের জন্য ঠিক সঠিক মান; এই জাতীয় বিন্দু 0x04 মানের বাইট দিয়ে শুরু হবে এবং এটি আপনার কাছে অবিকল রয়েছে। সংক্ষিপ্তসার হিসাবে: মনে হচ্ছে আপনার টিএলএস 1.2 টি হ্যান্ডশেক সত্যই ডিসিএইচই নয়, ইসিডিএইচই ব্যবহার করে।
টমাস পর্নিন

9

আপনার যদি পিইএম ফর্ম্যাটে শংসাপত্র থাকে, আপনি এই কমান্ডটি চেষ্টা করতে পারেন, এটি আপনাকে ওপেনসেল কমান্ড থেকে একটি সঠিক আউটপুট দেয়।

ওপেনএসএল ধাপরম-ইনফর্ম পিইএম-ইন ./imapd.pem -check -text

(নমুনা আউটপুট)
    পিকেসিএস # 3 ডিএইচ প্যারামিটার: (512 বিট)
        প্রধান:
            XX: XX: XX: xx
            XX: XX: XX: xx
            XX: XX: XX: xx
        জেনারেটর: 2 (0x2)
ডিএইচ প্যারামিটারগুলি ঠিক আছে বলে মনে হচ্ছে।
----- ডিএইচ প্যারামেটর শুরু করুন -----
XXXX এর
XXXX এর
----- ডিএইচ প্যারামিটারগুলি শেষ করুন -----

আশা করি এটিই আপনি খুঁজছেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.