Diffie-Hellman

Diffie-Hellman

সহজ

নির্দেশনা

Diffie-Hellman কী এক্সচেঞ্জ।

Alice ও Bob গোপন তথ্য শেয়ার করার জন্য Diffie-Hellman কী এক্সচেঞ্জ ব্যবহার করেন। তারা মৌলিক সংখ্যা দিয়ে শুরু করেন, প্রাইভেট কী বেছে নেন, পাবলিক কী তৈরি করে শেয়ার করেন, এবং তারপর একটি শেয়ার করা সিক্রেট কী তৈরি করেন।

ধাপ ০

টেস্ট প্রোগ্রামটি মৌলিক সংখ্যা p ও g সরবরাহ করে।

ধাপ ১

Alice একটি প্রাইভেট কী a বেছে নেন, যা ১-এর চেয়ে বড় এবং p-এর চেয়ে ছোট। Bob একইভাবে একটি প্রাইভেট কী b বেছে নেন।

ধাপ ২

Alice একটি পাবলিক কী A গণনা করেন।

A = gᵃ mod p

একই p ও g ব্যবহার করে Bob একইভাবে তার প্রাইভেট কী b থেকে একটি পাবলিক কী B গণনা করেন।

ধাপ ৩

Alice ও Bob পাবলিক কী বিনিময় করেন। Alice সিক্রেট কী s গণনা করেন।

s = Bᵃ mod p

Bob গণনা করেন

s = Aᵇ mod p

গণনাগুলো একই ফলাফল দেয়! এখন Alice ও Bob সিক্রেট s শেয়ার করেন।

এখানে random নাকি secrets ব্যবহার করা উচিত?

Python 3.6 থেকে শুরু করে "র‍্যান্ডম" সংখ্যা তৈরির জন্য দুটি ভিন্ন মডিউল রয়েছে:

random নামের মডিউলটি সিউডো-র‍্যান্ডম, অর্থাৎ এটি সত্যিকারের র‍্যান্ডমনেস তৈরি করে না, বরং এমন একটি অ্যালগরিদম অনুসরণ করে যা র‍্যান্ডমনেস সিমুলেট করে। যেহেতু এই "র‍্যান্ডম সংখ্যাগুলো" একটি জানা অ্যালগরিদমের মাধ্যমে তৈরি হয়, তাই এগুলো সত্যিকার অর্থে র‍্যান্ডম নয়। ফলে random মডিউলটি ক্রিপ্টোগ্রাফির জন্য সঠিকভাবে উপযুক্ত নয় এবং এটি ব্যবহার করা উচিত নয়, কারণ এটি সিউডো-র‍্যান্ডম।

secrets নামের মডিউলটি ক্রিপ্টোগ্রাফিকভাবে শক্তিশালী "র‍্যান্ডম" সংখ্যা তৈরি করে, যা ক্রিপ্টোগ্রাফির জন্য প্রয়োজনীয় বেশি নিরাপত্তা দেয়। কঠোর অর্থে এগুলো এখনও সিউডো-র‍্যান্ডম, তবে এদের একটি নিশ্চয়তা আছে যে এরা যে সংখ্যাগুলো তৈরি করে সেগুলো একেবারেই অনুমানযোগ্য নয়।

যেহেতু এটি কেবল একটি অনুশীলনী, তাই random মডিউল ব্যবহার করাই ঠিক আছে, তবে মনে রাখবেন যে এটি সত্যিই ক্রিপ্টোগ্রাফিতে ব্যবহার করা হলে বেশ অনিরাপদ হবে।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Python Exercism

Diffie-Hellman শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Python ট্র্যাকের 17টি কনসেপ্ট146টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।