লিনাক্স পাসওয়ার্ড হ্যাশে কী কী উপাদান থাকে এবং কেন এটি গুরুত্বপূর্ণ?

সর্বশেষ আপডেট: 04/12/2025
লেখক: ইসহাক
  • সল্ট হলো একটি এলোমেলো স্ট্রিং যা হ্যাশের আগে পাসওয়ার্ডে যোগ করা হয় যাতে প্রতি ব্যবহারকারীর জন্য অনন্য হ্যাশ তৈরি করা যায়।
  • লিনাক্স এটি /etc/shadow-তে হ্যাশ, সল্ট এবং অ্যালগরিদম সংরক্ষণ করে, যা অভিধান আক্রমণ এবং রেইনবো টেবিলের বিরুদ্ধে সুরক্ষা জোরদার করে।
  • ভালো অনুশীলনের জন্য দীর্ঘ, এলোমেলো এবং অনন্য লবণের প্রয়োজন হয়, সাথে শক্তিশালী হ্যাশ অ্যালগরিদম এবং ডাটাবেস ভালোভাবে সুরক্ষিত।
  • পাসওয়ার্ড সল্টিংকে বৃহত্তর নিরাপত্তা নীতির সাথে একীভূত করা উচিত যার মধ্যে রয়েছে শক্তিশালী পাসওয়ার্ড, এমএফএ এবং পাসওয়ার্ড ম্যানেজার।

লিনাক্সে পাসওয়ার্ড হ্যাশে লবণ

আপনি যদি GNU/Linux সিস্টেমের সাথে কাজ করেন অথবা আপনার অ্যাকাউন্টের নিরাপত্তা নিয়ে চিন্তিত হন, তাহলে আপনি সম্ভবত শুনেছেন পাসওয়ার্ড হ্যাশে লবণএটি এমন একটি ধারণা যার কথা অনেকবার উল্লেখ করা হয়েছে, কিন্তু প্রায়শই অর্ধেক বোঝা যায় না: এটি প্রযুক্তিগত শোনায়, কিন্তু বাস্তবে এটি এমন একটি সিস্টেমের মধ্যে পার্থক্য তৈরি করে যা ভাঙা সহজ এবং আক্রমণের বিরুদ্ধে অনেক বেশি প্রতিরোধী।

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

একটি পাসওয়ার্ড হ্যাশে আসলে কী পরিমাণ লবণ থাকে?

পাসওয়ার্ড হ্যাশে লবণের সংজ্ঞা

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

যখন একজন ব্যবহারকারী তাদের পাসওয়ার্ড তৈরি বা পরিবর্তন করেন, তখন সিস্টেমটি একটি তৈরি করে এলোমেলো লবণএটি পাসওয়ার্ডের সাথে একত্রিত করে (আগে, পরে, অথবা স্কিমের উপর নির্ভর করে একটি নির্দিষ্ট বিন্যাসে) এবং সেই সংমিশ্রণে একটি হ্যাশ অ্যালগরিদম প্রয়োগ করে, যেমন রয়েছে SHA-256 o রয়েছে SHA-512পাসওয়ার্ডটি ডাটাবেসে সংরক্ষণ করা হয় না, বরং (পাসওয়ার্ড + লবণ) এর হ্যাশ, এবং বেশিরভাগ স্কিমে লবণ নিজেই হ্যাশের সাথে সংরক্ষণ করা হয়।

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

এটা বোঝা গুরুত্বপূর্ণ যে লবণ নিজেই কোনও গোপন বিষয় নয়: এটি কোনও পাসওয়ার্ড বা ব্যক্তিগত কী নয়।এর কাজ হল হ্যাশিং প্রক্রিয়ায় এলোমেলোতা এবং স্বতন্ত্রতা প্রবর্তন করা। নিরাপত্তা এখনও ব্যবহারের উপর নির্ভর করে শক্তিশালী পাসওয়ার্ড y উপযুক্ত হ্যাশ অ্যালগরিদম, বিশেষভাবে পাসওয়ার্ডের জন্য ডিজাইন করা (যেমন bcrypt, scrypt, Argon2), যদিও অনেক ক্লাসিক লিনাক্স সিস্টেম SHA-256 বা SHA-512 এর ভেরিয়েন্ট ব্যবহার করে।

ধাপে ধাপে পাসওয়ার্ড সল্টিং কীভাবে কাজ করে

পাসওয়ার্ড সল্টিং কীভাবে কাজ করে

লবণাক্তকরণ প্রক্রিয়াটি বেশ কয়েকটি সহজ ধাপে সংক্ষিপ্ত করা যেতে পারে, তবে এর সাথে নিরাপত্তার উপর বিরাট প্রভাব:

  প্রসেস এক্সপ্লোরার এবং ভাইরাসটোটাল দিয়ে কীভাবে ক্ষতিকারক প্রক্রিয়াগুলি সনাক্ত করবেন

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

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

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

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

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

পাসওয়ার্ড হ্যাশে লবণ ব্যবহারের সুবিধা

পাসওয়ার্ডে লবণ ব্যবহারের সুবিধা

লবণ ব্যবহারের প্রধান কারণ হল সংরক্ষিত পাসওয়ার্ডের নিরাপত্তা জোরদার করে বিভিন্ন ধরণের আক্রমণের বিরুদ্ধে। কিন্তু নির্দিষ্ট সুবিধাগুলি বিস্তারিতভাবে বলা মূল্যবান।

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

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

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

  নতুন হোয়াটসঅ্যাপ কেলেঙ্কারির জন্য সতর্কতা: অ্যাকাউন্ট এবং অর্থ চুরি করার জন্য বিজুম এবং ভিডিও কল

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

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

লিনাক্স কীভাবে পাসওয়ার্ড সল্টিং (/etc/shadow) প্রয়োগ করে

লিনাক্স সিস্টেম এবং অন্যান্য *NIX ভেরিয়েন্টে, ব্যবহারকারীর পাসওয়ার্ড /etc/passwd তে সংরক্ষণ করা হয় না, বরং ফাইলে সংরক্ষণ করা হয় / ইত্যাদি / ছায়াএই ফাইলটি, যা শুধুমাত্র সুপারইউজারের জন্য অ্যাক্সেসযোগ্য, অতিরিক্ত তথ্য সহ পাসওয়ার্ড হ্যাশ সংরক্ষণ করে এবং যেখানে লবণ এবং হ্যাশ অ্যালগরিদমের ব্যবহার স্পষ্টভাবে দেখা যায়।

/etc/shadow-এর লাইনগুলির গঠন এইরকম:

ব্যবহারকারী:$id$sal$hash:অতিরিক্ত_ক্ষেত্র…

প্রতীক $ বিভিন্ন অংশ আলাদা করুন। ব্যবহারকারীর নাম পরে প্রথম অংশটি নির্দেশ করে অ্যালগরিদমের ধরণ ব্যবহৃত। উদাহরণস্বরূপ, $1$ সাধারণত MD5 প্রতিনিধিত্ব করে, $5$ SHA-256 এবং $6$ SHA-512, যা আধুনিক বিতরণে সবচেয়ে সাধারণ অ্যালগরিদম কারণ এটি DES বা MD5 ভিত্তিক পুরানো স্কিমগুলির তুলনায় বেশি সুরক্ষা প্রদান করে।

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

কোন ব্যবহারকারীদের পাসওয়ার্ড এনক্রিপ্ট করা আছে এবং কোন অ্যালগরিদম ব্যবহার করা হচ্ছে তা দ্রুত পরীক্ষা করতে চাইলে, আপনি এই কমান্ডটি ব্যবহার করতে পারেন গ্রেপ '\$' /ইত্যাদি/ছায়াএই প্রসঙ্গে, আধুনিক বিন্যাসে হ্যাশযুক্ত লাইনগুলি সনাক্ত করতে ডলার চিহ্ন ($) ব্যবহার করা হয়। প্রতীকটিকে ব্যাকস্ল্যাশ দিয়ে এস্কেপ করতে হবে কারণ নিয়মিত এক্সপ্রেশনে এটি "লাইনের শেষ" বোঝায়।

পাসওয়ার্ডবিহীন অ্যাকাউন্ট বা লক করা অ্যাকাউন্টগুলি সাধারণত সেই ক্ষেত্রে এই ধরণের মান প্রদর্শন করে। ! o * ডলার সহ একটি হ্যাশের পরিবর্তে, যা নির্দেশ করে যে এটি একটি স্ট্যান্ডার্ড পাসওয়ার্ড ব্যবহার করে প্রমাণীকরণ করা যাবে না। এই কাঠামোটি একটি জিনিস স্পষ্ট করে: লিনাক্স তার ফর্ম্যাটে সল্টিংকে একীভূত করে স্টোরেজ পাসওয়ার্ড স্থানীয়ভাবে

পাসওয়ার্ড হ্যাশিং এবং সল্টিংয়ের মধ্যে পার্থক্য

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

  WINUX কী: মুক্ত আত্মা এবং উইন্ডোজের মতো চেহারা এবং অনুভূতি সহ লিনাক্স

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

সেই দুর্বলতা দূর করার জন্যই সল্টিং আসে: এটি প্রায় পাসওয়ার্ডে এলোমেলো তথ্য যোগ করুন হ্যাশ করার আগে। এর ফলে যদি দুজন ব্যবহারকারী "casa" কে তাদের পাসওয়ার্ড হিসেবে বেছে নেয়, তবুও ডাটাবেসের হ্যাশগুলি সম্পূর্ণ আলাদা হবে, কারণ একটিতে থাকবে, উদাহরণস্বরূপ, "casa+7Ko#" এবং অন্যটিতে "casa8p?M" প্রি-হ্যাশ স্ট্রিং হিসেবে।

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

mkpasswd দিয়ে লিনাক্সে লবণ ব্যবহার করা

GNU/Linux পরিবেশ এবং অন্যান্য সিস্টেমে ইউনিক্সলবণাক্তকরণ পরীক্ষা করার একটি খুব ব্যবহারিক উপায় হল হাতিয়ারটি mkpasswdএই কমান্ডটি তৈরি করতে ব্যবহৃত হয় এনক্রিপ্ট করা পাসওয়ার্ড নিরাপদে, এবং সাধারণত ব্যবহারকারী তৈরির প্রক্রিয়া, প্রশাসনিক স্ক্রিপ্ট ইত্যাদিতে একত্রিত হয়।

mkpasswd এর মৌলিক বাক্য গঠন আপনাকে এনক্রিপ্ট করা পাসওয়ার্ড এবং অ্যালগরিদমের ধরণ (উদাহরণস্বরূপ, des, md5, sha-256, sha-512) এর মতো বিকল্পগুলির একটি সিরিজ নির্দিষ্ট করতে দেয়। -mআধুনিক ব্যবস্থায়, বুদ্ধিমানের কাজ হল বেছে নেওয়া রয়েছে SHA-512 অন্ততপক্ষে, অথবা আরও শক্তিশালী স্কিম দ্বারা যদি বিতরণ তাদের সমর্থন করে।

লবণাক্তকরণের প্রেক্ষাপটে বিশেষ আকর্ষণীয় বিকল্পটি হল -S, যার অনুমতি দেয় লবণ যোগ করুন এনক্রিপ্ট করার আগে পাসওয়ার্ডে। ম্যানুয়ালি নির্দিষ্ট না করা হলে, mkpasswd একটি তৈরি করতে পারে প্রতিটি মৃত্যুদন্ডে এলোমেলো লবণযাতে একই লগইন পাসওয়ার্ড ব্যবহার করেও, ফলাফল হ্যাশ প্রতিবার ভিন্ন হয়।

এটি সহজেই যাচাই করা যেতে পারে: যদি আপনি SHA-512 এবং একটি র‍্যান্ডম সল্ট ব্যবহার করে mkpasswd দিয়ে "password123" কয়েকবার এনক্রিপ্ট করেন, তাহলে আপনি সম্পূর্ণ ভিন্ন হ্যাশ পাবেন। তবে, যদি আপনি -S ব্যবহার করে একই সল্ট মান পাস করেন, তাহলে হ্যাশ সর্বদা অভিন্ন থাকবে, কারণ পাসওয়ার্ড + সল্ট সংমিশ্রণ পরিবর্তন হয় না।

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

ডিজিটাল হাইজিন কী?
সম্পর্কিত নিবন্ধ:
ডিজিটাল স্বাস্থ্যবিধি: আপনার অনলাইন জীবনে নিরাপত্তা, সুস্থতা এবং শৃঙ্খলা