কী ব্যবহার না করে কীভাবে ফাইল সংরক্ষণ করুন এনক্রিপ্ট করবেন? [বন্ধ]


21

বলুন আমি একটি সাধারণ প্রোগ্রাম তৈরি করেছি যা বাইনারি ফরম্যাটে.dat এনক্রিপ্ট করা একটি ফাইল নেয় , তারপরে আমি এটিকে একটি বাইট অ্যারেতে ডিক্রিপ্ট করি এবং তারপরে সবকিছু ডিক্রিপ্ট করা ফাইলটিতে আবার লিখিত হয়।

উদাহরণ স্বরূপ:

আমি বাইনারি এনক্রিপশন অ্যালগরিদম তৈরি করেছি। => 0100100001100101001000000101000001100101011000 ...

তবে এটি ডিক্রিপ্ট করা খুব সহজ ...

কোনও উপায় আছে কি, যদি সম্ভব হয় তবে আমার সংরক্ষণের অগ্রগতি এনক্রিপ্ট করার জন্য কোনও ধরণের কী প্রয়োজন হয় না?


15
আপনি কি নিশ্চিত যে সংরক্ষণগুলি এনক্রিপ্ট করতে চান? প্রতারণা করার সহজ উপায় রয়েছে, উদাহরণস্বরূপ মেমরি সংশোধন করার সময়। আমি কেবল তাদের zlib দিয়ে সংকুচিত করব (এগুলিকে .gz এ রাখুন), এটি আকার হ্রাস করবে এবং সম্ভাব্য কিছু প্রতারককে এটি পরিবর্তন করতে বাধা দেবে।
হলি ব্ল্যাককিট

36
নিতপিকিং: আপনি যা করছেন তা একটি এনকোডিং , কোনও এনক্রিপশন নয়
ফিলিপ

13
(ধরে নিই এটি একক প্লেয়ারের জন্য) একক প্লেয়ার খেলায় প্রতারণা ঠেকানোর চেষ্টা করবেন না, এটি আপনার এবং প্লেয়ার উভয়েরই জন্য বিরক্তিকর। এবং শেষ পর্যন্ত অকেজো।

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

6
@ ড্যানিয়েলবেজার আমি আপনাকে কেবল বলেছিলাম, আপনি এটি অসম্ভব করতে পারবেন না, আপনি কেবল এটি আরও শক্ত করে তুলতে পারেন।
ব্যবহারকারী 253751

উত্তর:


77

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

তবে প্রশ্নটি হল যদি সেভগেমগুলি এনক্রিপ্ট করা ভাল ধারণা হয়।

প্রথমত, যখন আপনি আপনার গেমটি এক্সিকিউটেবল করে এনক্রিপশন এবং ডিক্রিপশন করেন, আপনাকে কার্যকর করতে সক্ষম হবে আপনার গেমের অ্যালগরিদম এবং কী উভয়ই। এর অর্থ একটি নির্ধারিত হ্যাকার সেগুলি খুঁজে পেতে পারে, তাদের নিষ্কাশন করতে পারে এবং সেভগেম সম্পাদক তৈরি করতে তাদের ব্যবহার করতে পারে। সুতরাং এটি কখনই 100% সুরক্ষিত হতে পারে না।

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


5
যদিও আমি কয়েক ঘন্টার মধ্যে কেউ ভাল কিছু নিয়ে আসতে ভাবতে পারি না। এবং আপনি এমন কোনও কিছুর জন্য সংস্থান নষ্ট করবেন যা আপনার সম্ভবত প্রয়োজন নেই।
এস্টিস

6
"এটি যখন অফলাইনের খেলা, তবে কেন বিরক্ত করবেন?" যদি এটি অনলাইন হাইস্কোরগুলির সাথে একক প্লেয়ারের খেলা হয়?
দ্য

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

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

5
@ ফ্রেসনল আপনি প্রযুক্তিগত দিক থেকে ঠিক থাকাকালীন, পিএইচডি হ'ল বিশ্বস্ত প্রতিষ্ঠানগুলি দ্বারা পুরষ্কার হিসাবে একটি তাত্ত্বিক বিষয়ের উপর দক্ষতা অর্জনের একটি মানক মেট্রিক। সুতরাং পিএইচডি অর্জনের জন্য প্রয়োজনীয় পরিমাণ জ্ঞান এবং দক্ষতার জন্য এটিকে শর্টহ্যান্ড হিসাবে ব্যবহার করা বোধগম্য। অন্য কথায়: ওপি বলতে যা বোঝায় তা যথেষ্ট পরিষ্কার :-)
টোবিয়া

10

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

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

আপনি যদি এমন কিছু চান যা তাদের ডিভাইসে বাইনারিগুলি অ্যাক্সেস করে এমন কোনও ব্যক্তির দ্বারা ছড়িয়ে দেওয়া যায় না, তবে আপনার নিয়ন্ত্রণে থাকা কোনও সার্ভারে আপনাকে প্রোগ্রামটির কিছু অংশ চালানো দরকার।

আপনার শেষ প্রশ্নের উত্তর দেওয়ার জন্য, একটি কী প্লাস এনক্রিপশন ধরণটি ঠিক সঠিক অ্যালগরিদম সনাক্ত করে যা এনক্রিপ্ট / ডিক্রিপ্টে প্রয়োগ করতে হবে। আপনি কীভাবে এটি করবেন তা সংজ্ঞায়িত করে এমন একটি অ্যালগরিদম ছাড়াই ডেটা এনক্রিপ্ট / ডিক্রিপ্ট করতে পারবেন না।


আপনার দ্বিতীয় পয়েন্ট সুন্দর। এটি ফাইল দুর্নীতির ক্ষেত্রে সমস্যাগুলি ট্র্যাক করতে সহায়তা করতে পারে।
knowledge_is_power

4

সেভ ফাইলে আসল সেভ ডেটার একটি রূপান্তরিত SHA256 হ্যাশ সঞ্চয় করুন।

সঞ্চিত হ্যাশটিকে ডেটা লোড করার সাথে সাথে SHA256 মানের সাথে তুলনা করুন।

যদি এটি মেলে না, তারা ফাইলটি প্রতারণা করেছে বা দূষিত করেছে।

পরিষ্কার করার জন্য সম্পাদনা করুন: এটি প্রতারণামূলক বিরোধী সিস্টেমটি ক্র্যাক করা আরও কঠিন করে তোলে তবে এখনও সম্ভব


7
পরিবর্তনগুলি করার পরে লোকেরা হ্যাশটিকে পুনরায় গণনা করতে কোনও কিছুই থামায় না। এছাড়াও, আমি বুঝতে পারছি না কেন এখনও এমন লোকেরা কেন রয়েছেন যারা ভাঙা এমডি 5 অ্যালগরিদমকে তার সমস্ত জ্ঞাত ক্রিপ্টোগ্রাফিক দুর্বলতাগুলির সাথে সমর্থন করেন যখন যখন SHA-256 (স্বাক্ষরের জন্য) বা বিসিআরপি (পাসওয়ার্ডের জন্য) এর মতো আরও ভাল বিকল্প থাকে।
ফিলিপ

1
সহজ, দ্রুত এবং সম্পূর্ণরূপে ভাঙা।
ডেড এমজি

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

7
@ ফিলিপ্প কারণ এমডি 5 স্পষ্টতই SHA-256 এর চেয়ে উচ্চতর। বর্ণিত পদ্ধতির দ্বারা যা প্রয়োজন তা হ'ল একটি সস্তা চেকসাম অ্যালগরিদম, যা এমডি 5 হ'ল।
পিটার - আনবান রবার্ট হার্ভে

3
@ ট্রানজিস্টার09 যদি এটি নিখুঁতভাবে ক্লায়েন্টের পক্ষে থাকে তবে আমরা কিছুই নিশ্চিত করতে পারি না এবং ক্লায়েন্ট পুরো জিনিসটি এনক্রিপ্ট করার পাশাপাশি একটি চেকসাম কাজ করে। যেভাবেই হোক, এটি ক্র্যাক করা যেতে পারে।
লোলমস

1

আমি একটি স্ট্যান্ডার্ড এনক্রিপশন অ্যালগরিদম ব্যবহার করব (কারণ এটি সংরক্ষিত ফাইলে ক্রিপ্টো-বিশ্লেষণ করা আরও শক্ত করে তোলে) তবে সবচেয়ে বেশি ব্যবহৃত পাঁচটির মধ্যে একটিও নয়, এবং আপনার কোড জুড়ে এটি আড়াল করুন (কারণ এটি কোন অ্যালগরিদমকে বুঝতে অসুবিধা হয়) কী এবং কোথায় কী।)

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

এগুলি সব কিছুরই অর্থনৈতিক ধারণা তৈরি করে কিনা তা পুরোপুরি অন্য একটি বিষয়।


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