একটি হ্যাশের জন্য লবণ লুকানোর প্রয়োজনীয়তা


99

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

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

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

সম্পাদনা: ঠিক আছে তাই আমার মনে হয় লবণটি এনক্রিপ্ট করার পক্ষে এটি সত্যিই খারাপ। (আমি সঠিক পথে রয়েছি কিনা লেমমে জানি)।

নিম্নলিখিত ব্যাখ্যার জন্য, আমরা ধরে নেব যে পাসওয়ার্ডগুলি সর্বদা 8 টি অক্ষর এবং লবণের পরিমাণ 5 এবং সমস্ত পাসওয়ার্ডগুলি ছোট হাতের অক্ষর দ্বারা গঠিত (এটি কেবল গণিতকে সহজ করে তোলে)।

প্রতিটি প্রবেশের জন্য পৃথক লবণের অর্থ হ'ল আমি একই রংধনু টেবিলটি ব্যবহার করতে পারি না (আসলে প্রযুক্তিগতভাবে আমার পক্ষে পর্যাপ্ত আকারের একটি ছিল তবে আমি এই মুহূর্তের জন্য তা উপেক্ষা করব)। আমি যা বুঝি তার থেকে লবণের আসল চাবিকাঠি, কারণ প্রতিটি অ্যাকাউন্টের ক্র্যাক করতে আমাকে হুইলটি পুনরায় উদ্ভাবন করতে হবে যাতে প্রতিটিটির জন্য কথা বলতে হয়। এখন যদি আমি জানি যে কীভাবে হ্যাশ উত্পন্ন করতে কোনও পাসওয়ার্ডে সঠিক লবণ প্রয়োগ করতে হয়, আমি এটি করতাম কারণ একটি লবণ সত্যিই হ্যাশ শব্দবন্ধের দৈর্ঘ্য / জটিলতা বাড়ায়। সুতরাং আমি আমার "পাসওয়ার্ড + পাসওয়ার্ড + লবনের 13" থেকে 26 possible 8 ^ 26 নম্বরের পাসওয়ার্ডটি "জানতে" জেনারেট করতে হবে এমন সম্ভাব্য সংমিশ্রণের সংখ্যাটি কেটে ফেলছি কারণ আমি জানি লবণ কী তা। এখন এটি সহজ করে তোলে, তবে এখনও সত্যই শক্ত।

সুতরাং লবণ এনক্রিপ্ট করার উপর। যদি আমি জানি যে লবণটি এনক্রিপ্ট করা আছে, তবে আমি প্রথমে এটির চেষ্টা এবং ডিক্রিপ্ট করব না (ধরে নিলাম আমি জানি এটির পর্যাপ্ত স্তর এনক্রিপশন রয়েছে)। আমি এটি উপেক্ষা করবে। এটি কীভাবে ডিক্রিপ্ট করবেন তা বোঝার পরিবর্তে পূর্ববর্তী উদাহরণে ফিরে গিয়ে আমি 13 ^ 26 এর জন্য সমস্ত কী যুক্ত একটি বৃহত রংধনু টেবিল তৈরি করব। লবণ না জেনে নিশ্চিতভাবেই আমাকে ধীর করবে, তবে আমি মনে করি না এটি প্রথমে লবণের এনক্রিপশনটি ক্র্যাক করার চেষ্টা করার স্মৃতিস্তম্ভকে যুক্ত করবে add সে কারণেই আমি এটি মূল্যবান বলে মনে করি না। ভাবনা?

নিখুঁত ফোর্স আক্রমণে পাসওয়ার্ডগুলি কতক্ষণ ধরে থাকবে তা বর্ণনা করার জন্য এখানে একটি লিঙ্ক রয়েছে: http://www.lockdown.co.uk/?pg=combi


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

আপনার শালীন আকারের রেইনবো টেবিলটি উপেক্ষা করার দরকার নেই - এই টেবিলটি এনক্রিপ্ট হওয়া লবণের শাঁসকেও তৈরি করে যেহেতু এটি লবণযুক্ত হ্যাশটি ডিক্রিপ্ট করতে পারে এবং আসল হ্যাশটি ডিক্রিপ্ট করতে আবার ব্যবহার করা যেতে পারে। সুসংবাদটি হ'ল টেবিলটি তৈরি হতে সম্ভবত কয়েক শতাব্দী লাগবে।
tloach

আমাকে যে জিনিসটি পাওয়া যায় তা হ'ল আমি পুরোপুরি নিশ্চিত নই যে আকারের একটি রংধনু টেবিলটি তৈরি করতে এত বেশি সময় লাগবে। তিনি একটি উদ্বেগজনক ধারণা, এটি উত্পন্ন করার জন্য ক্রাকেনের মতো বিতরণকারী কম্পিউটিং প্ল্যাটফর্মটি গ্রহণ করুন (এটি আসলে কী তা কী) it তাহলে কতক্ষণ লাগবে?
কেমিলার2002

4
@ কেভিন: SHA1 40-অক্ষরের হেক্স স্ট্রিং প্রদান করে, তাই 40 ^ 16 সম্ভাব্য ফেরতের মান রয়েছে। একক কম্পিউটার ধরে নিলে প্রতি সেকেন্ডে 1000 হ্যাশ গণনা করা যায় আমি গণনা করি 1 000 000 কম্পিউটারের আকারটি একটি স্ট্রিং নির্ধারণ করতে সক্ষম একটি রেইনবো টেবিল তৈরি করতে 10 বিলিয়ন বছর সময় লাগবে।
চালিত

+1 ভাল প্রশ্ন এবং আপনি ভাল পড়েছেন। আমার মনে হয় আপনি এই প্রশ্নের ভুল উত্তর পেয়েছেন। সর্বদা এটি একটি গোপনীয় হওয়া উচিত কারণ হ্যাশটি না পাওয়া পর্যন্ত এটি ভাঙ্গা যায় না। আপনার কাছে আরো CWE-760 (পড়া উচিত cwe.mitre.org/data/definitions/760.html )
দাড়কাক

উত্তর:


45

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


এই ধারণাগুলিতে নতুন ধরনের সুতরাং, এটি একটি নিষ্পাপ প্রশ্নের মতো দেখতে পারে তবে প্রতিটি পাসওয়ার্ডের জন্য লবণ জেনে সেই রংধনু টেবিলটি তৈরি করা কি সহজ হবে না কারণ আপনি প্রতিটি সম্ভাব্য পাসওয়ার্ডের জন্য লবণের জন্য মাত্র একটি সংমিশ্রণ চেষ্টা করে দেখতে পারেন?
stdout

রেনবো টেবিল থেকে 1000 বলা সাধারণভাবে ব্যবহৃত পাসওয়ার্ডগুলি হ্যাশিংয়ের মতো প্রায় একই গতিতে এটি ভেঙে দেয়।
এটির

100

লবণ লুকানো অপ্রয়োজনীয়।

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

আমার আগের উত্তর থেকে :

সল্ট প্রাক-গণিত অভিধান আক্রমণগুলি ব্যর্থ করতে সহায়তা করে।

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

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

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


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


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


4
লবণের আড়াল করা প্রয়োজনীয় কারণ হ্যাশটি না পাওয়া পর্যন্ত তা ভাঙা যায় না। এই করতে CWE-760 (সম্পর্কযুক্ত cwe.mitre.org/data/definitions/760.html )
দাড়কাক

28
@ রুক - না, আপনি এই সমস্যাটির ভুল ব্যাখ্যা দিচ্ছেন are এটি অনুমানযোগ্য লবণের ব্যবহার বোঝায়। এতে নুন গোপন রাখার বিষয়ে কিছু বলা হয় না। প্রকৃতপক্ষে, আপনি আর একটি গোপন ব্যবহার না করে লবণকে সত্যই গোপন রাখতে পারবেন না ... এই ক্ষেত্রে, আপনি দ্বিতীয় গুপ্ত লবণের মতো ব্যবহার করবেন না কেন? লবণ হিসাবে ব্যবহারকারীর নাম ব্যবহার করা খারাপ কারণ একাধিক সিস্টেম একই ব্যবহারকারীর নাম ভাগ করে নেয় that নির্দিষ্ট লবণের জন্য একটি সারণী তৈরি করা আরও সার্থক করে তোলে। এলোমেলো সল্ট সবচেয়ে ভাল হয়, কিন্তু তারা না গোপন রাখা হবে।
এরিকসন


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

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

3

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


3

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

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


কীভাবে তারা অভিধান আক্রমণ থেকে রক্ষা করতে পারে?
tloach

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

"আক্রমণকারী যদি আপনার পুরো ডাটাবেস, সল্ট এবং সমস্ত কিছু পেয়ে যায় তবে অবশ্যই প্রশ্নটি মুখ্য।" লবণ এনক্রিপ্ট করা হয় না কেন?
প্যাট্রিক ম্যাকএলহানি

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

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

3

... হ্যাশটিকে নুন দেওয়ার জন্য ব্যবহারকারীর নাম বা ফোন নম্বর এর মতো কিছু। ...

আমার প্রশ্নটি যদি দ্বিতীয় পন্থাটি সত্যিই প্রয়োজনীয় হয়? আমি খাঁটি তাত্ত্বিক দৃষ্টিকোণ থেকে বুঝতে পারি যে এটি প্রথম পদ্ধতির চেয়ে বেশি সুরক্ষিত তবে বাস্তবের দৃষ্টিকোণ থেকে কী হবে?

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

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


4
আপনি যদি কিছু নির্বিচারে ব্যবহারকারীর তথ্য ব্যবহার করছেন কিনা তা উল্লেখ করার দরকার নেই, যখন তারা সেই তথ্য পরিবর্তন করে আপনার তাদের পাসওয়ার্ড আবার ইনপুট করার প্রয়োজন হয় যাতে আপনি এটি নতুন লবণের সাথে আবার এনক্রিপ্ট করতে পারেন।
ট্রেবোরবব

3

গোপন লবণ আর লবণ থাকে না। এটা মরিচ এটির ব্যবহার রয়েছে। এটি লবণের চেয়ে আলাদা।

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

মরিচ সম্পর্কিত আরও তথ্যের জন্য, এখানে চেক করুন

এইচএমএক দেখুন ।


2

প্রতিটি হ্যাশের জন্য একই লবণ থাকা কেন খারাপ তা বোঝানোর জন্য এখানে একটি সাধারণ উদাহরণ রয়েছে

নিম্নলিখিত সারণী বিবেচনা করুন

UserId  UserName,   Password
     1  Fred       Hash1 =  Sha(Salt1+Password1)    
     2  Ted        Hash2 =  Sha(Salt2+Password2)    

কেস 1 যখন লবণ 1 লবণের সমান হয় 2 হ্যাশ 2 এর সাথে হাশ 1 দিয়ে প্রতিস্থাপন করা হয় তবে ব্যবহারকারী 2 ব্যবহারকারীর 1 পাসওয়ার্ড দিয়ে লগইন করতে পারে

কেস 2 যখন লবণ 1 একই লবণের মতো নয় 2 যদি হাশ 2 এর সাথে হাশ 1 দিয়ে প্রতিস্থাপন করা হয় তবে ব্যবহারকারী 2 ব্যবহারকারীর সাথে 1 পাসওয়ার্ড দিয়ে লগইন করতে পারবেন না।


আমরা প্রতিটি অ্যাকাউন্টের জন্য একই হ্যাশ ব্যবহার করছি না, আমরা প্রতিটি হ্যাশের জন্য একই ধরণের তথ্য ব্যবহার করছি। উদাহরণস্বরূপ, একটি অ্যাকাউন্টের জন্য লবণ অ্যাকাউন্টের PHONENUMBER ইত্যাদি
kemiller2002

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

1

বিভিন্ন লক্ষ্য সহ দুটি কৌশল রয়েছে:

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

  • (ভাগ করা) "গোপনীয়তা" বার্তা হ্যাশ করার আগে যুক্ত করা হয়, যাতে কোনও অনুপ্রবেশকারী নিজের বার্তা তৈরি করতে না পারে এবং সেগুলি গ্রহণ করতে পারে।


0

আমি লবণ আড়াল করার ঝোঁক। আমি হ্যাশ করার আগে পাসওয়ার্ডের শুরু থেকে 1 থেকে 1024 পর্যন্ত একটি এলোমেলো সংখ্যার প্রিপেন্ড করে 10 বিট লবণ ব্যবহার করি। ব্যবহারকারীর পাসওয়ার্ডটি হ্যাশের সাথে প্রবেশ করার সাথে তুলনা করার সময়, আমি 1 থেকে 1024 পর্যন্ত লুপ করি এবং ম্যাচটি না পাওয়া পর্যন্ত লবণের প্রতিটি সম্ভাব্য মান চেষ্টা করি। এটি এক সেকেন্ডের 1/10 এরও কম সময় নেয়। আমি এইভাবে পিএইচপি পাসওয়ার্ড_হ্যাশ এবং পাসওয়ার্ড_মর্চা থেকে এটি করার ধারণা পেয়েছি । আমার উদাহরণ হিসাবে, "ব্যয়" 10 বিটের লবণের জন্য 10। বা অন্য ব্যবহারকারী যা বলেছেন তা থেকে, লুকানো "নুন" কে "মরিচ" বলা হয়। লবণ ডাটাবেসে এনক্রিপ্ট করা হয় না। এটি নিষ্ঠুরভাবে জোর করে বের করে দেওয়া হয়েছে। এটি হ্যাশটিকে 1000 গুণ বড় আকারের বিপরীত করার জন্য রংধনু টেবিলটিকে প্রয়োজনীয় করে তুলবে। আমি sha256 ব্যবহার করি কারণ এটি দ্রুত, তবে তবুও এটি নিরাপদ বলে মনে করা হচ্ছে।


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

-1

সত্যই, আপনি আপনার ডেটা রক্ষার জন্য কী ধরণের আক্রমণ চালাচ্ছেন তা থেকে এটি নির্ভর করে।

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

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

Marianne2ae85fb5d

ডিবিতে সংরক্ষিত একটি হ্যাশগুলিতে হ্যাশগুলি, কোন অংশটি পাস এবং কোন অংশে লবণ, তা বোঝা কি সত্যিই কঠিন?


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