SHA1 বনাম md5 বনাম SHA256: পিএইচপি লগইনের জন্য কোনটি ব্যবহার করবেন?


133

আমি একটি পিএইচপি লগইন করছি, এবং আমি সিদ্ধান্ত নেওয়ার চেষ্টা করছি যে SHA1 বা মোড 5 বা SHA256 ব্যবহার করব যা আমি অন্য স্ট্যাকওভারফ্লো নিবন্ধে পড়েছি। এগুলির মধ্যে কি অন্যের চেয়ে নিরাপদ? SHA1 / 256 এর জন্য, আমি কি এখনও লবণ ব্যবহার করব?

এছাড়াও, এটি কি মাইএসকিএলে হ্যাশ হিসাবে পাসওয়ার্ডটি সংরক্ষণ করার নিরাপদ উপায়?

function createSalt()
{
    $string = md5(uniqid(rand(), true));
    return substr($string, 0, 3);
}

$salt = createSalt();

$hash = sha1($salt . $hash);


এই উত্তরটি দেখুন এবং পাসওয়ার্ড হ্যাশিং সম্পর্কে বিভাগটি পড়ুন।
জ্যাক

উত্তর:


110

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

পিএইচপি 5.5+ এ bcrypt ব্যবহার করা

পিএইচপি 5.5 পাসওয়ার্ড হ্যাশিংয়ের জন্য নতুন ফাংশন সরবরাহ করে । এটি আধুনিক ওয়েব অ্যাপ্লিকেশনগুলিতে পাসওয়ার্ড স্টোরেজের জন্য প্রস্তাবিত পদ্ধতির।

// Creating a hash
$hash = password_hash($password, PASSWORD_DEFAULT, ['cost' => 12]);
// If you omit the ['cost' => 12] part, it will default to 10

// Verifying the password against the stored hash  
if (password_verify($password, $hash)) {
    // Success! Log the user in here.
}

আপনি যদি পিএইচপি-র কোনও পুরানো সংস্করণ ব্যবহার করছেন তবে আপনার সত্যিকারের আপগ্রেড করা উচিত , তবে আপনি যতক্ষণ না এই পাসপোর্টটি প্রকাশ করতে পাসওয়ার্ড_কম্প্যাট ব্যবহার করতে পারবেন ।

এছাড়াও, দয়া করে password_hash()আপনার জন্য লবণ তৈরি করতে দিন । এটি একটি সিএসপিআরএনজি ব্যবহার করে ।

বিক্রিপ্টের দুটি ক্যাভেট

  1. Bcrypt নিঃশব্দে 72 টি অক্ষরের বেশি লম্বা কোনও পাসওয়ার্ড ছিন্ন করবে।
  2. Bcrypt যে কোনও NULঅক্ষরের পরে কেটে যাবে ।

( উভয় ক্যাভেটের জন্য ধারণার প্রমাণ এখানে here

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

আপনার নিজের স্কিমটি লেখার পরিবর্তে, বিদ্যমান বিশেষজ্ঞের লিখিত এবং / অথবা সুরক্ষা বিশেষজ্ঞদের দ্বারা মূল্যায়ন করা লাইব্রেরি ব্যবহার করুন।

টিএল; ডিআর - বিসিক্রিপ্ট ব্যবহার করুন


1
এছাড়াও, আমি এটিতে খুব নতুন: আপনি যে সমস্ত 'হ্যাশ' উল্লেখ করেছেন সেগুলি কি sha1, sha256 এবং এমডি 5 রয়েছে?
টনি স্টার্ক

3
হ্যাঁ. আমি SHA1, SHA256 এবং MD5 এবং গতির জন্য অনুকূলিত করা অন্যান্য হ্যাশগুলির একটি সিরিজ উল্লেখ করছি। আপনি পাসওয়ার্ড সুরক্ষিত করতে গতির জন্য অনুকূলিত একটি হ্যাশ ব্যবহার করতে চান না। আছে: বিশেষ এই এক মত অনেক ভাল নিবন্ধের আলোচনা কেন, এবং আমি chargen.matasano.com/chargen/2007/9/7/...
জোহানেস Gorset

4
এটি পিএইচপি 5.3 থেকে "ক্রিপ্ট" ফাংশনে অন্তর্ভুক্ত। আপনার যদি পূর্ববর্তী সংস্করণ থাকে তবে আমি পরের সেরা জিনিসের জন্য "phpass" ফ্রেমওয়ার্কটি সন্ধান করব।
জোহানেস গর্সেট

3
@ স্ট্যানিস্লাভ পলাটনিক SHA512 একটি ভাল বিকল্প। আমাকে ভুল করবেন না; আমি বলছি না যে একটি প্রসারিত এবং লবণযুক্ত SHA512 হ্যাশটি নিরাপত্তাহীন is এটি সুরক্ষিত তবুও, সত্যটি এখনও অব্যাহত রয়েছে যে bcrypt আরও সুরক্ষিত এবং তাই আমি এটি ব্যবহার না করার কোনও কারণ দেখতে পাচ্ছি না।
জোহানেস গর্সেট

10
@ সাইফার: bcryptক্র্যাক করার জন্য সমান ধীর হওয়ার স্বার্থে ডিজাইন করা হয়েছে।
জোহানেস গর্সেট

23

আমি মনে করি এমডি 5 বা sha256 বা গতির জন্য অনুকূলিত কোনও হ্যাশ ব্যবহার করা পুরোপুরি ঠিক আছে এবং অন্য ব্যবহারকারীদের যে কোনও বিদ্রোহ শুনতে পারে তা শুনতে খুব আগ্রহী। এখানে আমার কারণ আছে

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

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

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

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

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

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

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


1
ভালই বলেছে। সাইবার সিকিউরিটি হ্যাশিং কৌশলগুলির চেয়ে বেশি পছন্দ করা হবে, তারা কেবল আপনার ডেটা সংরক্ষণ করে না তবে সার্ভারের প্রতিরক্ষা প্রস্তুত রাখে।
সিউজেড

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

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

6
"যদি আপনার ডাটাবেস আপোষহীন হয়ে যায় তবে সম্ভবত আপনি হ্যাশিংয়ের কৌশলগুলি সহ সমস্ত কিছু আপস করে ফেলেছেন তা আপনি যতই ক্রিপ্টিক তৈরি করেছেন তা নয়।" এই কারণেই বিক্রিপ্ট এত গুরুত্বপূর্ণ। Bcrypt দিয়ে কারও কাছে হ্যাশ রয়েছে কিনা তা আসলেই কিছু যায় আসে না। SHA1 / MD5 এর মতো দ্রুত হ্যাশিং অ্যালগরিদম সহ এটি হয়।
সিজেজোজ

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

15

জোহানেস গর্সেট যেমন উল্লেখ করেছেন, মাতাসানো সিকিউরিটির থমাস প্যাটাসেকের পোস্টটি ব্যাখ্যা করেছে যে সাধারণ, সাধারণ-উদ্দেশ্যে হ্যাশিং ফাংশনগুলি যেমন এমডি 5, এসএএএ 1, এসএএচ 256 এবং এসএএচ 512 কেন পাসওয়ার্ড হ্যাশিং পছন্দ নয়

কেন? এগুলি খুব দ্রুত - আপনি একটি আধুনিক কম্পিউটারের মাধ্যমে কমপক্ষে 1,000,000 এমডি 5 হ্যাশ প্রতি এক সেকেন্ডে গণনা করতে পারেন, তাই লোকেদের ব্যবহার করা বেশিরভাগ পাসওয়ার্ডের বিরুদ্ধে নিষ্ঠুর শক্তি প্রয়োগযোগ্য। এবং এটি জিপিইউ-ভিত্তিক ক্র্যাকিং সার্ভার ক্লাস্টারের চেয়ে অনেক কম!

মূল প্রসারিত ছাড়াই লবণাক্তকরণের অর্থ হ'ল আপনি রংধনু টেবিলটিকে সংক্ষেপণ করতে পারবেন না, আপনাকে সেই নির্দিষ্ট লবণের জন্য এটি তৈরি করতে হবে। তবে এটি সত্যিই এত কঠিন জিনিসগুলি তৈরি করবে না।

ব্যবহারকারী @ উইল বলেছেন:

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

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

তারপরে তিনি আবার অফলাইনে আক্রমণ পরিস্থিতি ফিরে যান:

পুরো ডেটাবেস আপস করা হয়ে গেলে এবং হ্যাকার এমডি 5 হ্যাশের বিপরীতে প্রতি সেকেন্ডে 100 মিলিয়ন পাসওয়ার্ড চেষ্টা করতে পারে সেই সুরক্ষাটি সত্যই কার্যকর হয়। SHA512 প্রায় 10,000 গুণ ধীর।

না, SHA512 এমডি 5 এর চেয়ে 10000 গুণ ধীর নয় - এটি কেবল দ্বিগুণ হয়ে যায়। অন্যদিকে, ক্রিপট / এসএএ ৫২১২ একেবারেই আলাদা জন্তু যা তার বিসিপ্রিপ অংশের মতো একটি মূল স্ট্র্যাচিং সম্পাদন করে , অভ্যন্তরীণ এলোমেলো লবণের সাথে একটি খুব আলাদা হ্যাশ তৈরি করে এবং 500 এবং 999999 এর মধ্যে যে কোনও কিছু গ্রহণ করতে পারে (প্রসারিত টিউনযোগ্য)

SHA512 => aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
Crypt/SHA512 => $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21

সুতরাং পিএইচপি-র জন্য পছন্দগুলি হ'ল হয় ক্রিপ্ট / ব্লোফিশ (বিসিক্রিপ্ট), ক্রিপ্ট / এসএএএল 256 বা ক্রিপ্ট / এসএএএচ 512। বা কমপক্ষে ক্রিপ্ট / এমডি 5 (পিএইচকে)। Www.php.net/manual/en/function.crypt.php দেখুন


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

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

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

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

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

13

ব্যবহার SHA256। এটি নিখুঁত নয়, যেমন SHA512দ্রুত হ্যাশের জন্য আদর্শ হবে, তবে বিকল্পগুলির বাইরে এটির সুনির্দিষ্ট পছন্দ। যে কোনও হ্যাশিং প্রযুক্তি অনুসারে, অতিরিক্ত সুরক্ষার জন্য হ্যাশটিতে লবণ দিতে ভুলবেন না।

একটি অতিরিক্ত নোট, এফআরকেটি হিসাবে, দয়া করে আমাকে দেখান যেখানে কেউ সহজেই একটি সল্টেড SHA256 হ্যাশ ক্র্যাক করতে পারে? আমি সত্যিই এটি দেখতে খুব আগ্রহী।

গুরুত্বপূর্ণ সম্পাদনা:

এগিয়ে চলুন দয়া করে bcryptকঠোর হ্যাশ হিসাবে ব্যবহার করুন । আরও তথ্য এখানে পাওয়া যাবে


সল্টিং এ সম্পাদনা করুন:

একটি এলোমেলো নম্বর, বা এলোমেলো বাইট স্ট্রিম ইত্যাদি ব্যবহার করুন আপনি নিজের ডেটাবেজে রেকর্ডের অনন্য ক্ষেত্রটিকে লবণ হিসাবেও ব্যবহার করতে পারেন, এইভাবে ব্যবহারকারীর প্রতি লবণ আলাদা different


1
তবে তাদের গতির জন্য অনুকূলিতকরণ, যার অর্থ তারা ব্রুট-ফোর্স হ্যাকিং সক্ষম করে।
আরবালেস

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

1
যেমনটি উল্লেখ করা হয়েছে, এমডি এবং এসএএএ-সিরিজগুলির সমস্যা হ'ল তারা গতির জন্য অনুকূলিত। এটি অনিবার্য যে এই প্রকৃতির হ্যাশগুলি কম্পিউটারের বিবর্তনের সাথে সাথে ক্রমবর্ধমান নিরাপত্তাহীন হয়ে পড়ে।
জোহানেস গর্সেট

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

1
পিএইচপি তে লবণ তৈরির একটি ভাল উপায় কী? উদাহরণ কোড আছে? আমি ভাবছি আমার কেবল 'জিরাফ' এর মতো কিছু বাছাই করা উচিত নয়
টনি স্টার্ক

4

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

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


"লোকেরা যা অনুপস্থিত বলে মনে হচ্ছে তা হ্যাকারের যদি ডাটাবেসে অ্যাক্সেস থাকে তবে তার সম্ভবত পাসওয়ার্ড হ্যাশ করা পিএইচপি ফাইলটিতে অ্যাক্সেস থাকতে পারে ..." এটি সত্য নয় isn't সর্বাধিক সাধারণ দুর্বলতার মধ্যে একটি হ'ল এসকিউএল ইনজেকশন, যা ডাটাবেসে পঠন / লেখার ক্ষমতা দেয় তবে পিএইচপি কোডে শূন্য অ্যাক্সেস দেয়।
ceejayoz

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

3

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

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

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


1

সংঘর্ষের সমস্যার কারণে এমডি 5 খারাপ - দুটি পৃথক পাসওয়ার্ড সম্ভবত একই এমডি -5 তৈরি করে।

শা -১ এ জন্য যথেষ্ট সুরক্ষিত হবে। আপনি পাসওয়ার্ডের সল্টেড শা -১ সংস্করণ সংরক্ষণ করার কারণটি হ'ল আপনি সুইওয়ারটি ব্যবহারকারীর অ্যাপসওয়ার্ডটি ফাইলটিতে রাখেন না, যাতে তারা অন্য ব্যক্তির সার্ভারের সাথে ব্যবহার করতে পারে। নাহলে কী পার্থক্য হয়?

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

আক্রমণকারীটির হ্যাশ মানটি কী কী ভাল, যদি আপনার ব্যবহারকারীর ইনপুটগুলি সরল পাসওয়ার্ড হয়?

এমনকি যদি ভবিষ্যতের প্রযুক্তির সাথে হ্যাকার জাল ফোর্স আক্রমণের জন্য একটি সেকেন্ডে মিলিয়ন শ -১ কীগুলি উত্পন্ন করতে পারে, তবে কি আপনার সার্ভার হ্যাকারকে তার কীগুলি পরীক্ষা করার জন্য এক মিলিয়ন লগইন সেকেন্ডে পরিচালনা করবে? যদি আপনি হ্যাকারকে কোনও সাধারণ লগনের মতো পাসওয়ার্ডের পরিবর্তে সল্টেড শ -১ দিয়ে লগনের চেষ্টা করতে দেন That's

সেরা বাজিটি হ'ল খারাপ লগনের প্রচেষ্টাগুলি কিছু যুক্তিসঙ্গত সংখ্যার মধ্যে সীমাবদ্ধ করা হয় - উদাহরণস্বরূপ 25, এবং তারপরে ব্যবহারকারীকে এক বা দুই মিনিটের জন্য বেরিয়ে আসুন। এবং যদি ক্রমযুক্ত বেডি লগন 24 ঘন্টার মধ্যে 250 টি হিট করে তবে অ্যাকাউন্ট অ্যাক্সেস বন্ধ করে মালিককে ইমেল করুন।


এমনকি যদি আমি একটি দুর্বল এনক্রিপশন ব্যবহার করি তবে ব্যবহারিকভাবে কোনও সিস্টেমই প্রতি সেকেন্ডে 1 মিলিয়নেরও বেশি চেষ্টা করে প্রাণঘাতী আক্রমণ করতে পারে না।
মাগালেনেস

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

এই উত্তরটি অন্য কারও কাছে বোঝাতে ব্যর্থ হয়েছে, বা এটি কেবল আমার?
ওয়াইল্ডকার্ড

1

এখানে MD5 এবং SHA1 এর মধ্যে তুলনা করা হচ্ছে। কোনটি আরও ভাল সে সম্পর্কে আপনি একটি পরিষ্কার ধারণা পেতে পারেন।

এখানে চিত্র বর্ণনা লিখুন


1

Argon2i ব্যবহার করুন । Argon2 পাসওয়ার্ড হ্যাশ ফাংশন পাসওয়ার্ড হ্যাশ প্রতিযোগিতা জিতেছেন।

অন্যান্য যুক্তিসঙ্গত পছন্দগুলি, যদি আরগন 2 ব্যবহার করা না পাওয়া যায় তবে সেগুলি হ'ল স্ক্রিপ্ট , বিসিআরপিট এবং পিবিকেডিএফ 2 । উইকিপিডিয়ায় এই ফাংশনগুলির জন্য পৃষ্ঠা রয়েছে:

MD5, SHA1 এবং SHA256 বার্তা হজম হয়, পাসওয়ার্ড-হ্যাসিং ফাংশন নয়। তারা এই উদ্দেশ্যে উপযুক্ত নয়।

MD5 থেকে SHA1 বা SHA512 এ স্যুইচ করা নির্মাণের সুরক্ষা এতটা উন্নতি করতে পারে না। কোনও SHA256 বা SHA512 হ্যাশ গণনা করা খুব দ্রুত। সাধারণ হার্ডওয়্যার সহ একটি আক্রমণকারী এখনও প্রতি সেকেন্ডে কয়েক মিলিয়ন (একক সিপিইউ সহ) বা কয়েক বিলিয়ন (একক জিপিইউ সহ) হ্যাশ চেষ্টা করতে পারে। গুড পাসওয়ার্ড হ্যাশিং ফাংশনগুলির মধ্যে অভিধান আক্রমণগুলি ধীর করার জন্য একটি কার্য কারণ অন্তর্ভুক্ত।

পিএইচপি প্রোগ্রামারদের জন্য এখানে একটি পরামর্শ: পিএইচপি FAQ পড়ুন এবং তারপরে পাসওয়ার্ড_হ্যাশ () ব্যবহার করুন ।


0

আসুন পরবর্তী বিষয়টি ধরে নেওয়া যাক: হ্যাকাররা ব্যবহারকারী এবং পাসওয়ার্ড (এনক্রিপ্ট) সহ আমাদের ডাটাবেস চুরি করে। এবং হ্যাকাররা একটি পাসওয়ার্ড দিয়ে একটি জাল অ্যাকাউন্ট তৈরি করেছে যা তারা জানে।

MD5 দুর্বল কারণ এটির সংক্ষিপ্ত এবং জনপ্রিয় এবং ব্যবহারিকভাবে পাসওয়ার্ড ছাড়াই প্রতিটি হ্যাশ জেনারেশন অভিধানের আক্রমণে দুর্বল। কিন্তু ..

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

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

উদাহরণস্বরূপ, ধরা যাক যে আমার পাসওয়ার্ডটি: 12345 S সল্টটি বিলক্লিংটন

এমডি 5: 827ccb0eea8a706c4c34a16891f84e7b

এমডি 5 হ্যাশ সহ: 56adb0f19ac0fb50194c312d49b15378

এমডি 5 হ্যাশ সহ এমডি 5: 28a03c0bc950decdd9ee362907d1798a আমি এই অনলাইন পরিষেবাটি ব্যবহার করার চেষ্টা করেছি এবং এমন কোনও কিছুই খুঁজে পেল না যা এটি ক্র্যাক করতে সক্ষম ছিল। আর এর একমাত্র এমডি 5! (আজকের মতো হতে পারে এটি ক্র্যাকযোগ্য হবে কারণ আমি এমডি 5 অনলাইন তৈরি করেছি)

যদি আপনি ওভারকিল করতে চান তবে SHA256 যদি এটি একটি লবণের সাথে এবং দুবার প্রয়োগ করা হয় তবে যথেষ্ট পরিমাণে।

tldr MD5 (HASH + MD5 (পাসওয়ার্ড)) = ঠিক তবে সংক্ষিপ্ত, SHA256 যথেষ্টের চেয়ে বেশি।


নুনের সাথে এমডি 5 ব্যবহার করার সমস্যাটি হ'ল কম্পিউটারগুলি দ্রুত গতির সাথে এক পাসওয়ার্ডে একটি জবরদস্তি আক্রমণ তৈরি করতে পারে। shylor.com/2015/09/14/php-5-5-secure-password-hashing
Shylor

0

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

password_hash() example using Argon2i

<?php
echo 'Argon2i hash: ' . password_hash('rasmuslerdorf', PASSWORD_ARGON2I);
?>
The above example will output something similar to:

Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.