এই চ্যালেঞ্জটি প্রথমে উত্তর দেওয়ার জন্য 200 পয়েন্টের সওয়াব বহন করে এবং কমপক্ষে 3 দিনের জন্য অপরাজিত থাকে।ব্যবহারকারী দ্বারা দাবি করা হয়েছে 3080953 ।
এন্ড-টু-এন্ড এনক্রিপশন সম্পর্কে ইদানীং অনেক কথা হয়েছে এবং সংস্থাগুলি তাদের পণ্যগুলি থেকে এটি সরিয়ে নেওয়ার জন্য চাপ দেয়। আমি এর অধিকার-ভুল সম্পর্কে আগ্রহী নই, তবে আমি ভাবলাম: কোডটি কীভাবে সংক্ষিপ্ত হতে পারে যে কোনও সংস্থাকে এটি ব্যবহার না করার জন্য চাপ দেওয়া হবে?
এখানে চ্যালেঞ্জটি হ'ল দুটি নেটওয়াক সিস্টেমের মধ্যে একটি ডিফি হেলম্যান কী এক্সচেঞ্জ বাস্তবায়ন করা , তারপরে ব্যবহারকারীদের উত্পন্ন প্রতিসাম্য কীটি ব্যবহার করে পিছনে এবং বাইরে যোগাযোগ করার অনুমতি দেওয়া। এই কাজের উদ্দেশ্যে, অন্য কোনও সুরক্ষার প্রয়োজন নেই (যেমন কীটি চালানো, পরিচয় যাচাই করা, ডস এর বিরুদ্ধে সুরক্ষা দেওয়ার দরকার নেই) এবং আপনি একটি উন্মুক্ত ইন্টারনেট ধরে নিতে পারেন (আপনি যে কোনও বন্দর শুনেছেন তা সবার জন্য উপলব্ধ)। বিল্টিনগুলির ব্যবহার অনুমোদিত এবং উত্সাহিত!
আপনি দুটি মডেলের একটি বেছে নিতে পারেন:
- একটি সার্ভার এবং একটি ক্লায়েন্ট: ক্লায়েন্ট সার্ভারের সাথে সংযুক্ত হয়, তারপরে সার্ভার বা ক্লায়েন্ট অন্যকে বার্তা পাঠাতে পারে। দুজনের মধ্যে থাকা তৃতীয় পক্ষগুলি অবশ্যই বার্তাগুলি পড়তে অক্ষম হবে। একটি উদাহরণ প্রবাহ হতে পারে:
- ব্যবহারকারী এ সার্ভার চালু করে
- ব্যবহারকারী বি ক্লায়েন্ট প্রবর্তন করে এবং এটি এ এর সার্ভারের দিকে নির্দেশ করে (যেমন আইপি / পোর্টের মাধ্যমে), প্রোগ্রামটি একটি সংযোগ খোলে
- ব্যবহারকারী এ এর প্রোগ্রামটি সংযোগটিকে স্বীকৃতি দেয় (allyচ্ছিকভাবে প্রথমে ব্যবহারকারীকে সম্মতির জন্য জিজ্ঞাসা করে)
- ব্যবহারকারীর বি এর প্রোগ্রামটি ডিএইচ গোপন তৈরি করা শুরু করে এবং প্রয়োজনীয় তথ্য (পাবলিক কী, প্রাইম, জেনারেটর, আপনার প্রয়োগের জন্য প্রয়োজনীয় যে কোনও কিছু) ব্যবহারকারী এগুলিতে প্রেরণ করে
- ব্যবহারকারীর এ প্রোগ্রামটি ভাগ করা গোপনীয়তা তৈরির জন্য প্রেরিত ডেটা ব্যবহার করে এবং প্রয়োজনীয় তথ্য (পাবলিক কী) ব্যবহারকারী বিতে ফেরত পাঠায় এদিক থেকে ব্যবহারকারী এ বার্তা প্রবেশ করতে পারে (যেমন স্টিডিনের মাধ্যমে) যা এনক্রিপ্ট করা হবে এবং ব্যবহারকারীর কাছে প্রেরণ করা হবে বি (যেমন স্টাডাউট)
- ব্যবহারকারীর বি এর প্রোগ্রাম ভাগ করা গোপনীয়তা তৈরি করে। এই বিন্দু থেকে, ব্যবহারকারী বি ব্যবহারকারী এতে বার্তা প্রেরণ করতে পারে
- বা: এটির সাথে সংযুক্ত দুটি ক্লায়েন্ট সহ একটি সার্ভার: প্রতিটি ক্লায়েন্ট সার্ভারের সাথে কথা বলে, যা তাদের বার্তাটি অন্য ক্লায়েন্টের কাছে ফরোয়ার্ড করে। সার্ভার নিজেই (এবং এর মধ্যে থাকা কোনও তৃতীয় পক্ষ) অবশ্যই বার্তাগুলি পড়তে অক্ষম হবে। প্রাথমিক সংযোগ ব্যতীত, প্রক্রিয়াটি প্রথম বিকল্পটিতে বর্ণিত হিসাবে একই।
বিস্তারিত নিয়ম:
- আপনি একটি একক প্রোগ্রাম, বা একাধিক প্রোগ্রাম (যেমন সার্ভার এবং ক্লায়েন্ট) সরবরাহ করতে পারেন। আপনার স্কোর সমস্ত প্রোগ্রাম জুড়ে মোট কোড আকার।
- আপনার প্রোগ্রামটি অবশ্যই তাত্ত্বিকভাবে কোনও নেটওয়ার্কের সাথে যোগাযোগের জন্য সক্ষম হতে হবে (তবে পরীক্ষার জন্য, লোকালহোস্ট ভাল আছে)। আপনার পছন্দের ভাষা যদি নেটওয়ার্কিং সমর্থন করে না, আপনি এটিকে এমন কোনও কিছুর সাথে একত্রিত করতে পারেন (যেমন শেল স্ক্রিপ্ট); এক্ষেত্রে আপনার স্কোরটি ব্যবহৃত সমস্ত ভাষায় মোট কোড আকার।
- ডিফি হেলম্যান কী প্রজন্ম হার্ড-কোডড "পি" এবং "জি" মান ব্যবহার করতে পারে।
- উত্পন্ন শেয়ার্ড কীটি কমপক্ষে 1024 বিট হতে হবে।
- কীটি ভাগ হয়ে গেলে, প্রতিসম কী-এনক্রিপশন পছন্দ আপনার উপর নির্ভর করে, তবে আপনাকে অবশ্যই এমন কোনও পদ্ধতি বাছাই করতে হবে না যা বর্তমানে এটির বিরুদ্ধে ব্যবহারিক আক্রমণ রয়েছে (যেমন সিজার শিফটটি কীটির অজান্তেই বিপরীত দিকে তুচ্ছ হয়) )। অনুমোদিত অ্যালগরিদম উদাহরণ:
- এইএস (কোনও মূল আকার)
- আরসি 4 (তাত্ত্বিকভাবে ভাঙ্গা, তবে এমন কোনও ব্যবহারিক আক্রমণ যা আমি উল্লেখ করতে পারি না, তাই এটি এখানে অনুমোদিত)
- ব্যবহারকারী এ এবং বি উভয়কে অবশ্যই একে অপরকে (দ্বি-মুখী যোগাযোগ) ইন্টারেক্টিভ বার্তাগুলি প্রেরণ করতে সক্ষম হতে হবে (যেমন স্টিডিনের লাইনগুলি পড়া, ক্রমাগত প্রম্পট করা বা কোনও বোতাম টিপানোর মতো ইভেন্ট)। যদি এটি আরও সহজ করে তোলে, আপনি একটি বিকল্প কথোপকথন ধরে নিতে পারেন (যেমন কোনও ব্যবহারকারী কোনও বার্তা প্রেরণের পরে তাদের পরবর্তী বার্তা প্রেরণের আগে তাদের অবশ্যই প্রতিক্রিয়ার জন্য অপেক্ষা করতে হবে)
- ভাষা builtins হয় অনুমতি (যদি ইতিমধ্যে তারা সমর্থিত করছি আপনার নিজের ক্রিপ্টোগ্রাফিক বা নেটওয়ার্কিং পদ্ধতি লিখতে কোন প্রয়োজন)।
- অন্তর্নিহিত যোগাযোগ বিন্যাসটি আপনার উপর নির্ভর করে।
- উপরে বর্ণিত যোগাযোগের পদক্ষেপগুলি উদাহরণ, তবে আপনাকে সেগুলি অনুসরণ করার প্রয়োজন নেই (যতক্ষণ না প্রয়োজনীয় তথ্য ভাগ করা হয়, এবং কোনও মধ্যবিত্ত পুরুষ ভাগ করা কী বা বার্তা গণনা করতে সক্ষম হয় না)
- আপনার সার্ভারের সাথে সংযোগের জন্য প্রয়োজনীয় বিশদগুলি যদি আগে থেকে জানা না যায় (যেমন এটি কোনও এলোমেলো বন্দরে শোনা যায়), এই বিবরণগুলি অবশ্যই মুদ্রিত করা উচিত। আপনি ধরে নিতে পারেন যে মেশিনের আইপি ঠিকানাটি জানা গেছে।
- ত্রুটি পরিচালনার ক্ষেত্রে (যেমন অবৈধ ঠিকানা, হারিয়ে যাওয়া সংযোগ ইত্যাদি) প্রয়োজনীয় নয়।
- চ্যালেঞ্জটি কোড গল্ফ, তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।
p
এবংg
অনুমোদিত?