সকেটের মাধ্যমে একটি মাল্টিপ্লেয়ার গেমের জন্য প্রমাণীকরণ


11

আমি যে নতুন মাল্টিপ্লেয়ার গেমটিতে কাজ করছি তার জন্য আমি একটি কাস্টম বাইনারি প্রোটোকল বাস্তবায়ন করছি। এটি একটি পালা-ভিত্তিক কৌশল খেলা তাই সময় নির্ধারণ করা আসলেই কিছু যায় আসে না। আমি বর্তমানে সিস্টেমের বুনিয়াদি ডেটা সিঙ্ক অংশটি সম্পূর্ণ করেছি এবং আমি ভাবছিলাম যে এমএমআরপিজি গেমস বা এর অনুরূপভাবে সাধারণত ব্যবহারকারী লগইন / লগআউট এবং এনক্রিপশন কীভাবে করা হয়।

  • আপনি লগইন চলাকালীন নিরাপদ / গোপন পাসওয়ার্ড ট্রান্সমিশনের জন্য কোনও প্রকল্পের প্রস্তাব দিতে পারেন? (ডিফি-হেলম্যান কী এক্সচেঞ্জ?)
  • আমি কীভাবে ডেটা প্যাকেটের জন্য শক্তিশালী এনক্রিপশন প্রয়োগ করব? (এইএস 128-বিট? .. বা এই পোস্টটি যে কোনও স্কিমকে "আপনার ক্র্যাক হওয়ার সম্ভাবনা থেকে শক্তিশালী এনক্রিপশন" হিসাবে উল্লেখ করেছে )
  • এমন কোন ডেটাগ্রাম ফর্ম্যাট স্কিম রয়েছে যা আক্রমণ, অবৈধ ডেটা প্যাকেট এবং এর মতো পুনরায় খেলতে গেম সার্ভারকে শক্ত করতে সহায়তা করে?

উত্তর:


15

উত্তর

  • এসআরপি - নিরাপদ রিমোট পাসওয়ার্ড - এটি ডিফি-হেলম্যানের উপর ভিত্তি করে। ধারণাটি হ'ল আপনি কখনই পাসওয়ার্ড বা এটির জন্য ব্যবহার করা যেতে পারে এমন কোনও তথ্য হস্তান্তর না করে একটি পারস্পরিক পাসওয়ার্ড চেক করতে পারেন। যদিও এটি তারের উপরে সুরক্ষিত রয়েছে তবুও আপনার পাসওয়ার্ডগুলি হ্যাশ করা উচিত এবং আপনার পাসওয়ার্ডগুলিকে নুন দেওয়া উচিত কারণ আপনার সার্ভারটি এগুলি কখনও সরল পাঠ্যে সংরক্ষণ করতে হবে না
  • এসআরপির সুবিধাটি হ'ল এটি একবার সম্পূর্ণ করার পরে আপনাকে একটি পারস্পরিক আলোচিত এনক্রিপশন কীও দেয় যা কোনও আক্রমণকারী আপনার স্থানান্তরিত ডেটার পরিমাপের ফলে কেটে নিতে সক্ষম হয় না। এর অর্থ হল যে ব্যবহারকারী একবার প্রমাণিত হয়ে গেলে আপনি একটি প্রতিসৃত এনক্রিপশন অ্যালগরিদম (AES এর মত) ব্যবহার করতে মুক্ত হন।
  • ধরে নিই যে এর উপরে আপনি নিজের নির্ভরযোগ্য / অর্ডারযুক্ত (সংযোগ-ভিত্তিক) প্রয়োগের সাথে ইউডিপি ব্যবহার করছেন: পুরো ইউডিপি প্লেলোড এনক্রিপ্ট করুন - এতে আপনার 'প্যাকেট সিকোয়েন্স নম্বর' রয়েছে। যদি আপনার সিস্টেমটি সঠিকভাবে ডিজাইন করা হয়েছে তবে এটি স্বয়ংক্রিয়ভাবে পুনরায় খেলানো বার্তাগুলি প্রত্যাখ্যান করবে এবং একটি প্রবেশকারী প্যাকেট সিকোয়েন্স নম্বরটি পরিবর্তন করতে সক্ষম হবে না কারণ এটি এনক্রিপ্ট করা হয়েছে (সুতরাং এটি পুনরায় খেলানো সম্ভব - তবে এটি স্বয়ংক্রিয়ভাবে উপেক্ষা করা হবে)।

থটস

আপনার প্রমাণীকরণ নিরাপদ করা উচিত? একেবারে। কোনও পাসওয়ার্ড নিয়ে প্রশ্ন থাকলে সুরক্ষার ক্ষেত্রে কোনও আপস করবেন না Make সুতরাং আপনি অবশ্যই আমার উত্তর প্রথম বুলেট বিবেচনা করা উচিত।

আপনার ডেটা নিরাপদ করা উচিত? কেবলমাত্র যদি এটি ইন-গেম ক্রয় / মাইক্রো-লেনদেন হয় - এবং তবে কেবল এইচটিটিপিএসের মতো চেষ্টা করা এবং সত্য কিছু কেন ব্যবহার করা যায় না। আপনার গেম ট্র্যাফিক এনক্রিপ্ট করা নিম্নলিখিত কারণগুলির জন্য সম্ভবত একটি কার্যকর সমাধান নয়:

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

দয়া করে, আপনি যদি প্রতারণা প্রতিরোধের জন্য এনক্রিপ্ট করছেন তবে এটিকে ত্যাগ করুন। আপনি সংক্ষেপে সামনে আসতে চলেছেন - আপনি যে ইভেন্টটি নন সেই তথ্যটি আমি আপনাকে দিয়েছি। মনে রাখবেন যে আপনি প্যাকেটের প্রথম বাইট দ্বারা নির্বাচিতভাবে প্যাকেটগুলি এনক্রিপ্ট করতে পারবেন এবং বাকীটি এনক্রিপ্ট করা হয়েছে কিনা তার সূচক: যদিও, আবারও, যদি আপনার ক্রেডিট কার্ডের লেনদেনের মতো কিছু করার দরকার হয় তবে আমি এইচটিটিপিএসের সাথে লেগে থাকব: এগুলি অত্যন্ত অপ্রতুল এবং এইচটিটিপিএস বিশেষজ্ঞরা ডিজাইন করেছেন - আপনি বা আমি ডিজাইন করেছেন এমন কিছু থেকে ভিন্ন।

এই সমস্ত বলেছিল, বরফখণ্ড আসলে তাদের ওয়া ট্র্যাফিক এনক্রিপ্ট করে। এটি ভেঙে যাওয়ার মূল কারণ হ'ল কেউ, যিনি সম্ভবত সম্পূর্ণ অপেশাদার, সিদ্ধান্ত নিয়েছিলেন যে তারা বাড়ির বর্ধিত এনক্রিপশন অ্যালগরিদমে তাদের হাত চেষ্টা করবেন; এই সত্যিই ভাল প্যানড আউট । এমনকি যদি আপনি শিল্পের স্ট্যান্ডার্ড অ্যালগরিদম ব্যবহার করেন তবে কেউ আপনার কোডটি রিভার-ইঞ্জিনিয়ার করে এটিকে অনুকরণ করতে পারে - এমন একটি ভাল সুযোগ রয়েছে যখন ক্লায়েন্ট তাদের পাসওয়ার্ড প্রবেশ করিয়ে দেয় তবে কোনও অসমর্থিত সিস্টেম সংযুক্ত আছে তা বলার অপেক্ষা রাখে না।


2
প্রতারক প্রতিরোধের জন্য ডেটা প্যাকেটগুলি এনক্রিপ্ট করা অকারণ বলে বলার জন্য +1। ওপি: যাচাই না সবকিছু যদি কর্ম ক্লায়েন্ট অনুরোধ সম্ভব আপনি ক্লায়েন্ট থেকে পাবেন, মানসিক সুস্থতা চেক চালানোর জন্য, দুবার-যাচাই করুন, চেক অস্ত্র রেঞ্জ, আন্দোলন গতি ইত্যাদি কিন্তু সময় নষ্ট করবেন আপনার ক্লায়েন্ট সুরক্ষিত না যেমন হবে যদি হ্যাক আপনার খেলা এটি মূল্যবান। কিছু এমএমও সংস্থাগুলি তাদের ক্লায়েন্ট / প্রোটোকল এনক্রিপ্ট করে এবং তা অবলম্বন করে তবে প্রতারণা প্রতিরোধ করা নয়, উদাহরণস্বরূপ বট নির্মাতাদের ভাল ফলাফল পাওয়া আরও কঠিন করে তোলে, এমনকি বিশেষজ্ঞদের নিবেদিত দলগুলিও এটি করে।
গিলিয়েড

1
আপনার তৃতীয় উত্তর সম্পর্কে একটি ছোটখাটো বাচ্চা: কেবল প্যাকেটগুলি এনক্রিপ্ট করা চলাচল প্রতিরোধের জন্য যথেষ্ট নাও হতে পারে, যেহেতু অনেকগুলি এনক্রিপশন স্কিম কমপক্ষে কিছুটা হ্রাসযোগ্য । বার্তার অখণ্ডতা রক্ষা করতে আপনার একটি ম্যাক বা একটি প্রমাণীকৃত এনক্রিপশন মোড দরকার
ইলমারি করোনেন

+1 একটি সম্পূর্ণ সম্পূর্ণ উত্তরের জন্য আপনাকে ধন্যবাদ। এখনই এসআরপি বাস্তবায়নের দিকে তাকাচ্ছেন। পাসওয়ার্ডগুলির জন্য ব্যবহৃত হ্যাশ ফাংশন সম্পর্কিত আপনি কী সুপারিশ করছেন? MD5? ওটিআর প্রোটোকল (অফ দ্য রেকর্ড) কীভাবে এমন ব্যবহারের ক্ষেত্রে থাকবে? এটি এসআরপি এর পরিবর্তে লেখক / ক্রিপ্টোর জন্য ভাল কাজ করবে? আমি যদি এসআরপি ব্যবহার করি তবে আমার কি নীচের "সত্যায়িত এনক্রিপশন" মোডগুলি ব্যবহার করা দরকার? (ওসিবি ২.০, কী মোড়ানো, সিসিএম, ইএএক্স, এনক্রিপ্ট-ম্যাক এবং জিসিএম)
রবিনিক্স

1
@ জেনকো অ্যালগরিদমের SHA পরিবার ব্যবহার করুন (সম্ভবত SHA1) - আপনার এই দিনগুলিতে MD5 এড়ানো উচিত। ওটিআর আসলে আপনার দেখার মতো কিছু নয় - এটি সুরক্ষিত / অস্পষ্ট হওয়ার জন্য ডিজাইন করা হয়নি (বাস্তবে এটির নকশাটি যাতে কেউ আরও সহজে প্যাকেট তৈরি করতে পারে) এটি তাত্ক্ষণিক বার্তাপ্রেরণের জন্যও তৈরি করা হয়েছে, মেশিন যোগাযোগের জন্য নয়। এই মোডগুলির কোনওটির প্রয়োজন নেই, কেবল এসআরপি ব্যবহার করুন: আপনি যখন কোনও পারস্পরিক আলোচিত প্রতিসাম্য কীটি কেবল কোনও কিছু এনক্রিপ্ট করতে সক্ষম হন তা যথেষ্ট গ্যারান্টিযুক্ত যে আপনি সঠিক তৃতীয় পক্ষের সাথে কথা বলছেন। এছাড়াও, আবার আমার শেষ দুটি অনুচ্ছেদটি আবার পড়ুন।
জোনাথন ডিকিনসন

1
আসলে, আমার আরও আরও ভাল পরামর্শ রয়েছে: ইউডিপি বাস্তবায়নের জন্য একটি বিদ্যমান ডিটিএলএস ব্যবহার করুন এবং আপনার নিজের রোল করার চেষ্টা করবেন না। এটি আপনার সময় সাশ্রয় করবে এবং আপনি নিজের ডেটাগ্রামের এনক্রিপশন স্তরটি ডিজাইনের চেষ্টা করতে পারলে অনেকগুলি ছোট কিন্তু সমালোচনামূলক বিশদ রয়েছে যা ভুল হওয়া সহজ।
ইলমারি করোনেন

2

আমি মনে করি জোনাথনের আমার শেষ মন্তব্যটি অন্যথায় দুর্দান্ত উত্তরটির নিজস্ব উত্তরে প্রসারণযোগ্য:

আপনার কাছে যদি ক্রিপ্টোর প্রচুর অভিজ্ঞতা না থাকে, আপনি যদি এড়াতে পারেন তবে আপনার নিজের এনক্রিপশন স্তরটি ডিজাইনের চেষ্টা করা উচিত নয়। যদি আপনার কাছে প্রচুর ক্রিপ্টো অভিজ্ঞতা থাকে তবে আপনার নিজের এনক্রিপশন স্তরটি ডিজাইনের চেয়ে ভাল জানা উচিত যদি আপনি এড়াতে পারেন know

পরিবর্তে, একটি বিদ্যমান, প্রমিত এবং ভাল পরীক্ষিত ক্রিপ্টো লাইব্রেরিটি অনুসন্ধান করার চেষ্টা করুন যা আপনার প্রয়োজন অনুযায়ী করে does আপনার ক্ষেত্রে, আমি জ্ঞানটিএলএসের পরামর্শ দেব , যা উইকিপিডিয়া অনুসারে , টিএলএস-এসআরপি প্রমাণীকরণ ( আরএফসি 5054 ) এবং ডিটিএলএস ( আরএফসি 6347 ) এর সাথে সুরক্ষিত ইউডিপি যোগাযোগ সরবরাহ করে provides প্রাক্তনটি লগ ইন করার যত্ন নেয়, যদিও পরবর্তীকটি এইভাবে সুরক্ষিত চ্যানেলকে উভয় শ্রুতিমধুর ও সক্রিয় আক্রমণ উভয় থেকে রক্ষা করে এবং এমনকি আপনাকে পুনরায় খেলানো আক্রমণ থেকে রক্ষা করতে পারে ।


আমি টিসিপি ব্যবহার করছি। এটি একটি নির্দিষ্ট ক্লায়েন্টের জন্য খুব আলাদা ধরণের গেম। জুয়া খেলা / বাজির মতো, প্রক্রিয়াটি হাইজ্যাক করতে ব্যবহৃত সমস্ত তথ্য বাড়ির দ্বারা অপ্রয়োজনীয় ক্ষতির সম্ভাবনা বাড়িয়ে তোলে। আমাদের ডেটা অত্যন্ত সুরক্ষিত রাখা দরকার, কারণ এই ক্ষেত্রে তথ্য অর্থ money
রবিনিক্স

ঠিক আছে, আপনি যদি টিসিপি ব্যবহার করেন, তবে এটি আরও সহজ: আপনি ডিটিএলএসের পরিবর্তে সাধারণ টিএলএস 1.2 ব্যবহার করতে পারেন, যা আপনাকে চয়ন করার জন্য আরও বিকল্প দেয়। যদিও আমি এখনও GnuTLS গ্রন্থাগারটি সুপারিশ করব।
ইলমারি করোনেন

আমি কিছুটা গবেষণা করব এবং দেখতে পাচ্ছি যে আমি ক্লায়েন্ট এবং সার্ভার উভয় পক্ষেই টিএলএস উত্স কোডটি উল্লেখ করতে পারি এবং এটি আমার প্রোটোকলটি কী করে তা ভিত্তি করে। এটি কি যথেষ্ট শক্তিশালী হবে? মূলত কিছু সাইফার / মোডের সাথে এর কেবল প্যাকেট এনক্রিপশন, সঠিক?
রবিনিক্স

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