অস্বীকৃতি : এই উত্তরটি ২০০৮ সালে লেখা হয়েছিল।
তার পর থেকে, পিএইচপি আমাদের password_hash
এবং password_verify
এবং তাদের পরিচয় দেওয়ার পরে, তারা প্রস্তাবিত পাসওয়ার্ড হ্যাশিং এবং চেক করার পদ্ধতি।
উত্তরের তত্ত্বটি এখনও পড়া ভাল read
টি এল; ডিআর
কী করা উচিত না
- ব্যবহারকারীরা পাসওয়ার্ডের জন্য কী অক্ষর প্রবেশ করতে পারে তা সীমাবদ্ধ করবেন না। কেবল বোকা লোকেরা এটি করে।
- পাসওয়ার্ডের দৈর্ঘ্য সীমাবদ্ধ করবেন না। যদি আপনার ব্যবহারকারীরা এতে সুপার ক্যালিফেরাগিলিস্টিসিপিয়ালিডোসিয়াসের সাথে একটি বাক্য চান তবে তাদের এটি ব্যবহার থেকে বিরত রাখবেন না।
- পাসওয়ার্ডে এইচটিএমএল এবং বিশেষ অক্ষরগুলি সজ্জিত বা পালাতে পারবেন না।
- আপনার ব্যবহারকারীর পাসওয়ার্ড কখনও সরল-পাঠ্যে সংরক্ষণ করবেন না।
- আপনার ব্যবহারকারীকে তার পাসওয়ার্ড হারিয়ে যাওয়া ব্যতীত কখনও কোনও পাসওয়ার্ড ইমেল করবেন না এবং আপনি একটি অস্থায়ী পাসওয়ার্ড প্রেরণ করেছেন।
- কখনও না, কখনও কোনও উপায়ে পাসওয়ার্ড লগ ইন করুন।
- SHA1 বা MD5 বা এমনকি SHA256 এর সাথে কখনও পাসওয়ার্ড হ্যাশ করবেন না ! আধুনিক ক্র্যাকারগুলি 60 এবং 180 বিলিয়ন হ্যাশ / সেকেন্ড (যথাক্রমে) ছাড়িয়ে যেতে পারে।
- বিসিআরপিট এবং হ্যাশ () এর কাঁচা আউটপুট সাথে মিশ্রিত করবেন না , হয় হেক্স আউটপুট ব্যবহার করুন বা বেস 64-এনকোড ব্যবহার করুন। (এটি এমন কোনও ইনপুটটির ক্ষেত্রে প্রযোজ্য যাতে এতে কোনও দুর্বৃত্ত থাকতে পারে
\0
, যা সুরক্ষা গুরুতরভাবে দুর্বল করতে পারে))
করণীয়
- আপনি যখন পারেন তখন স্ক্রিপ্ট ব্যবহার করুন; আপনি যদি না পারেন তবে bcrypt করুন।
- আপনি SHA2 হ্যাশ সহ বিসিপি বা স্ক্রিপ্ট ব্যবহার করতে না পারলে PBKDF2 ব্যবহার করুন।
- ডাটাবেস আপোস করার সময় প্রত্যেকের পাসওয়ার্ড পুনরায় সেট করুন।
- একটি যুক্তিসঙ্গত 8-10 অক্ষর ন্যূনতম দৈর্ঘ্য প্রয়োগ করুন, কমপক্ষে কমপক্ষে 1 টি বড় অক্ষর, 1 ছোট ছোট অক্ষর, একটি সংখ্যা এবং একটি চিহ্ন প্রয়োজন require এটি পাসওয়ার্ডের এনট্রপিকে উন্নত করবে, ফলস্বরূপ ক্র্যাক করা আরও কঠিন করে তুলবে। (কিছু বিতর্কের জন্য "কী ভাল পাসওয়ার্ড দেয়?" বিভাগটি দেখুন))
কেন হ্যাশ পাসওয়ার্ড?
পাসওয়ার্ডগুলি হ্যাশ করার পিছনে উদ্দেশ্যটি সহজ: ব্যবহারকারীর অ্যাকাউন্টগুলিতে ডেটাবেসের সাথে আপোস করার মাধ্যমে দূষিত প্রবেশাধিকার রোধ করা। সুতরাং পাসওয়ার্ড হ্যাশিংয়ের লক্ষ্য হ্যাকার বা ক্র্যাকারকে প্লেইন-টেক্সট পাসওয়ার্ডগুলি গণনা করতে খুব বেশি সময় বা অর্থ ব্যয় করে বাধা দেওয়া। এবং সময় / ব্যয় হ'ল আপনার অস্ত্রাগারের সেরা প্রতিরোধক।
আপনি ব্যবহারকারীর অ্যাকাউন্টগুলিতে একটি ভাল, দৃ want় হ্যাশ চান তা অন্য কারণটি আপনাকে সিস্টেমে সমস্ত পাসওয়ার্ড পরিবর্তন করার জন্য পর্যাপ্ত সময় দেয়। যদি আপনার ডাটাবেস আপোস করা হয় তবে আপনার ডাটাবেসে প্রতিটি পাসওয়ার্ড না বদলে কমপক্ষে সিস্টেম লক করার জন্য পর্যাপ্ত সময় প্রয়োজন ।
হোয়াইটহ্যাট সিকিউরিটির সিটিও জেরেমিয় গ্রসম্যান, সাম্প্রতিক পাসওয়ার্ড পুনরুদ্ধারের পরে হোয়াইট হ্যাট সিকিউরিটি ব্লগে বলেছেন যে তার পাসওয়ার্ড সুরক্ষাটি ব্রুট-ফোর্সের প্রয়োজন:
মজার বিষয় হল, এই দুঃস্বপ্নটি কাটিয়ে উঠতে, আমি পাসওয়ার্ড ক্র্যাকিং, স্টোরেজ এবং জটিলতা সম্পর্কে খুব বেশি কিছু জানতাম না। আমি পাসওয়ার্ড জটিলতার চেয়ে পাসওয়ার্ড স্টোরেজ কেন এত বেশি গুরুত্বপূর্ণ তা উপলব্ধি করতে এসেছি। আপনার পাসওয়ার্ড কীভাবে সংরক্ষণ করা হয় তা আপনি যদি জানেন না, তবে আপনি যা নির্ভর করতে পারেন তা হ'ল জটিলতা। এটি পাসওয়ার্ড এবং ক্রিপ্টো পেশাদারগুলির পক্ষে সাধারণ জ্ঞান হতে পারে তবে গড় ইনফোসেক বা ওয়েব সুরক্ষা বিশেষজ্ঞের জন্য আমি অত্যন্ত সন্দেহ করি।
(জোর আমার।)
কী এক করে তোলে ভাল পাসওয়ার্ড যাহাই হউক না কেন?
এনট্রপি । (এমন নয় যে আমি র্যান্ডালের দৃষ্টিভঙ্গিতে সম্পূর্ণ সাবস্ক্রাইব করেছি))
সংক্ষেপে, এনট্রপি হ'ল পাসওয়ার্ডের মধ্যে কত পার্থক্য রয়েছে। যখন কোনও পাসওয়ার্ড কেবল রোমান অক্ষরগুলির ছোট হয়, কেবলমাত্র 26 টি অক্ষর। এটি খুব ভিন্নতা নয়। আলফা-সংখ্যাগত পাসওয়ার্ডগুলি 36 টি অক্ষরের সাথে আরও ভাল better তবে প্রতীক সহ, উচ্চ এবং নিম্নতর ক্ষেত্রে অনুমতি দেওয়া মোটামুটি 96 টি অক্ষর। এটি কেবলমাত্র চিঠির চেয়ে অনেক ভাল। একটি সমস্যা হ'ল, আমাদের পাসওয়ার্ডগুলিকে স্মরণীয় করে রাখতে আমরা নিদর্শনগুলি সন্নিবেশ করি। যা এনট্রপি হ্রাস করে। ওহো!
পাসওয়ার্ড এনট্রপি হয় আনুমানিক সহজে। এসকিআই অক্ষরের পুরো পরিসর (প্রায় 96 টি টাইপযোগ্য অক্ষর) ব্যবহার করে অক্ষর প্রতি 6.6 এর একটি এনট্রপি পাওয়া যায়, যা ভবিষ্যতের সুরক্ষার জন্য 8 পাসওয়ার্ডের পাসওয়ার্ডের জন্য এখনও খুব কম (52.679 বিট) রয়েছে। তবে সুসংবাদটি হ'ল: দীর্ঘতর পাসওয়ার্ড এবং ইউনিকোড অক্ষরযুক্ত পাসওয়ার্ডগুলি সত্যই একটি পাসওয়ার্ডের এনট্রপি বাড়িয়ে তোলে এবং ক্র্যাক করা আরও শক্ত করে তোলে।
ক্রিপ্টো স্ট্যাকএক্সচেঞ্জ সাইটে পাসওয়ার্ড এনট্রপি সম্পর্কিত দীর্ঘ আলোচনা রয়েছে । একটি ভাল গুগল অনুসন্ধানও প্রচুর ফলাফল ঘটাতে পারে।
মন্তব্যগুলিতে আমি @ পপনুডলসের সাথে কথা বলেছি, যিনি উল্লেখ করেছিলেন যে এক্স দৈর্ঘ্যের একটি অক্ষর, সংখ্যা, চিহ্ন ইত্যাদি দিয়ে এক্স দৈর্ঘ্যের একটি পাসওয়ার্ড নীতি প্রয়োগ করা পাসওয়ার্ড স্কিমটিকে আরও অনুমানযোগ্য করে প্রকৃতপক্ষে এনট্রপি হ্রাস করতে পারে। আমি একমত. যথাসম্ভব এলোমেলো র্যান্ডোমাস, সর্বদা নিরাপদ তবে কমপক্ষে স্মরণীয় সমাধান।
আমি এখন পর্যন্ত বলতে সক্ষম হয়েছি, বিশ্বের সেরা পাসওয়ার্ড তৈরি করা একটি ক্যাচ -২২। হয় এটি স্মরণীয় নয়, খুব অনুমানযোগ্য, খুব সংক্ষিপ্ত, অনেকগুলি ইউনিকোড অক্ষর (একটি উইন্ডোজ / মোবাইল ডিভাইসে টাইপ করা কঠিন) খুব দীর্ঘ ইত্যাদি No আমাদের উদ্দেশ্যে কোনও পাসওয়ার্ড সত্যই যথেষ্ট যথেষ্ট নয়, তাই আমাদের অবশ্যই তাদের রক্ষা করতে হবে যেমন তারা ফোর্ট নক্সে ছিল।
সেরা অনুশীলন
Bcrypt এবং scrypt বর্তমান সেরা অনুশীলন। স্ক্রিপ্ট সময়ক্রমে বিক্রিপ্টের চেয়ে ভাল হবে তবে এটি লিনাক্স / ইউনিক্স বা ওয়েবসার্ভার দ্বারা কোনও স্ট্যান্ডার্ড হিসাবে গ্রহণ করতে দেখেনি এবং এখনও পোস্ট করা অ্যালগরিদমের গভীরতর পর্যালোচনা নেই। তবে এখনও, অ্যালগরিদমের ভবিষ্যতটি আশাব্যঞ্জক বলে মনে হচ্ছে না। আপনি যদি রুবির সাথে কাজ করছেন তবে এমন একটি স্ক্রিপ্ট রত্ন রয়েছে যা আপনাকে সাহায্য করবে এবং নোড.জেসের এখন নিজস্ব স্ক্রিপ্ট প্যাকেজ রয়েছে। আপনি মাধ্যমে পারেন পিএইচপি Scrypt ব্যবহার করতে পারেন Scrypt এক্সটেনশন বা Libsodium এক্সটেনশন (উভয় PECL পাওয়া যায়)।
আমি অত্যন্ত ডকুমেন্টেশন পড়া সুপারিশ সমাধিগৃহ ফাংশন যদি আপনি বুঝতে bcrypt কীভাবে ব্যবহার করবেন তা চান বা আপনার নিজের একটি খোঁজার ভাল মোড়কের মত বা ব্যবহারের কিছু PHPASS আরো একটি উত্তরাধিকার বাস্তবায়নের। আমি কমপক্ষে 12 টি বৃত্তাকার ব্র্যাক্রিপ্টের প্রস্তাব দিই, যদি 15 থেকে 18 না হয়।
আমি যখন bcrypt জানতে পারলাম তখন bcrypt ব্যবহারের বিষয়ে আমার মতামত পরিবর্তন হয়েছিল যখন একটি পরিবর্তনশীল ব্যয় ব্যবস্থাপনার সাহায্যে bcrypt কেবল ব্লোফিশের মূল সময়সূচী ব্যবহার করে। পরেরটি আপনাকে ব্লো ফিশের ইতিমধ্যে ব্যয়বহুল মূল তফসিল বাড়িয়ে একটি পাসওয়ার্ডকে জোর করে চাপিয়ে দিতে খরচ বাড়াতে দেয়।
গড় অনুশীলন
আমি এই পরিস্থিতিটি প্রায় কল্পনাও করতে পারি না। পিএইচপিএসএস পিএইচপি 3.0.08 কে 5.3 এর মাধ্যমে সমর্থন করে, তাই এটি প্রায় প্রতিটি ইনস্টলেশন কল্পনাপ্রসূত on এবং এটি ব্যবহার করা উচিত যদি আপনি নিশ্চিতভাবে জানেন না যে আপনার পরিবেশ বিসিক্রিপ সমর্থন করে।
তবে ধরা যাক আপনি মোটেও bcrypt বা PHPASS ব্যবহার করতে পারবেন না। তখন কি?
আপনার পরিবেশ / অ্যাপ্লিকেশন / ব্যবহারকারী-ধারণা সহ্য করতে পারে এমন সর্বোচ্চ সংখ্যক রাউন্ডের সাথে PDKBF2 বাস্তবায়নের চেষ্টা করুন । আমি প্রস্তাবিত সর্বনিম্ন সংখ্যাটি 2500 রাউন্ড। এছাড়াও, যদি অপারেশনটিকে পুনরুত্পাদন করতে আরও শক্ত করে তুলতে পাওয়া যায় তবে hash_hmac () ব্যবহার নিশ্চিত করুন ।
ভবিষ্যতের অনুশীলনসমূহ
পিএইচপি 5.5 এ আসা একটি সম্পূর্ণ পাসওয়ার্ড সুরক্ষা লাইব্রেরি যা বিক্রিপ্টের সাথে কাজ করার কোনও ব্যথা দূরে রাখে। আমাদের বেশিরভাগ সাধারণ পরিবেশে বিশেষত পিএইচপি 5.2 এবং 5.3 এর সাথে আটকে আছে, বিশেষত ভাগ করা হোস্ট, @ ক্যারম্যাক্সেল আসন্ন এপিআইয়ের জন্য একটি সামঞ্জস্য স্তর তৈরি করেছে যা পিএইচপি 5.3.7 এর সাথে পিছনে সামঞ্জস্যপূর্ণ।
ক্রিপ্টোগ্রাফি পুনর্নির্মাণ এবং দাবি অস্বীকার
আসলে একটি হ্যাশ পাসওয়ার্ড ক্র্যাক করার জন্য প্রয়োজনীয় গণনার শক্তি বিদ্যমান নেই। কম্পিউটারগুলির পাসওয়ার্ডটিকে "ক্র্যাক" করার একমাত্র উপায় হ'ল এটি পুনরায় তৈরি করা এবং এটি সুরক্ষিত করার জন্য ব্যবহৃত হ্যাশিং অ্যালগরিদম অনুকরণ। হ্যাশের গতি রৈখিকভাবে এটি নিষ্ঠুর-জোর করার ক্ষমতার সাথে সম্পর্কিত। আরও খারাপ বিষয়, বেশিরভাগ হ্যাশ অ্যালগরিদমগুলি আরও দ্রুত সঞ্চালনের জন্য সহজেই সমান্তরাল করা যায়। এই কারণেই bcrypt এবং scrypt এর মতো ব্যয়বহুল প্রকল্পগুলি এত গুরুত্বপূর্ণ।
আপনি সম্ভবত আক্রমণের সমস্ত হুমকি বা উপায়গুলির পূর্বেই ধারণা করতে পারবেন না এবং তাই আপনাকে অবশ্যই আপনার ব্যবহারকারীদের সামনে রাখার জন্য যথাসাধ্য চেষ্টা করতে হবে । যদি আপনি তা না করেন, তবে আপনি এমনকি এই সত্যটি মিস করতে পারেন যে খুব বেশি দেরি না হওয়া অবধি আপনি আক্রমণ করেছিলেন ... এবং আপনি দায়বদ্ধ । এই পরিস্থিতি এড়াতে, শুরু করার জন্য ভৌতিক কাজ করুন। আপনার নিজের সফ্টওয়্যার (অভ্যন্তরীণভাবে) আক্রমণ করুন এবং ব্যবহারকারীর শংসাপত্রগুলি চুরি করার চেষ্টা করুন, বা অন্য ব্যবহারকারীর অ্যাকাউন্টগুলি সংশোধন করুন বা তাদের ডেটা অ্যাক্সেস করুন। আপনি যদি আপনার সিস্টেমের সুরক্ষা পরীক্ষা না করেন তবে আপনি নিজেকে ছাড়া অন্য কাউকে দোষ দিতে পারবেন না।
সবশেষে: আমি কোনও ক্রিপ্টোগ্রাফার নই। আমি যা কিছু বলেছি তা আমার মতামত, তবে আমি মনে করি এটি ভাল অল 'জ্ঞান ... এবং প্রচুর পড়ার উপর ভিত্তি করে। মনে রাখবেন, যতটা সম্ভব অসতর্ক হয়ে উঠুন, জিনিসগুলিকে যতটা সম্ভব অনুপ্রবেশ করা শক্ত করুন এবং তারপরে, আপনি এখনও যদি উদ্বিগ্ন থাকেন তবে আপনার কোড / সিস্টেম সম্পর্কে তারা কী বলেন তা দেখতে কোনও সাদা-টুপি হ্যাকার বা ক্রিপ্টোগ্রাফারের সাথে যোগাযোগ করুন।