পাসওয়ার্ড হ্যাশগুলির জন্য নন-এলোমেলো লবণ


89

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


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

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


দ্রষ্টব্য, আমি কেন লবণ ব্যবহার করবেন, কীভাবে এটি রক্ষা করবেন (এটি হওয়ার দরকার নেই), একটি একক ধ্রুব হ্যাশ ব্যবহার করবেন না (কী করবেন না) বা কী ধরণের হ্যাশ ফাংশন ব্যবহার করবেন তা আমি জিজ্ঞাসা করছি না।
শুধু লবণের জন্য এনট্রপি দরকার কিনা।


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


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


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

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

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

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

4
শুধু পিএইচপি সিকিউরিটি সাহচর্য ওয়েবসাইটে একটি নিবন্ধ পাওয়া গেছে যে তার উদাহরণ ব্যবহারসমূহ একটি MD5 কুচি-কুচি করিয়া কাটা বস্তু র্যান্ডম লবণ যেমন সংখ্যা phpsec.org/articles/2005/password-hashing.html
helloworlder

উত্তর:


156

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

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

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

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

যোগ করার জন্য সম্পাদিত: প্রচুর লোক এনট্রপি সম্পর্কে এবং লবণের ক্ষেত্রে এনট্রপি গুরুত্বপূর্ণ কিনা তা নিয়ে কথা বলছেন। এটি, তবে কারণ হিসাবে এটি সম্পর্কে বেশিরভাগ মন্তব্য মনে হয় বলে মনে হয় না।

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

এন্ট্রপি গুরুত্বপূর্ণ যে কারণটি হ'ল লবণের মূল্যবোধের ক্লাস্টারিং এড়ানো। যদি লবণটি ব্যবহারকারীর উপর ভিত্তি করে থাকে এবং আপনি জানেন যে বেশিরভাগ সিস্টেমে "রুট" বা "অ্যাডমিন" নামে একটি অ্যাকাউন্ট থাকবে, তবে আপনি সেই দুটি লবণের জন্য একটি রংধনু টেবিল তৈরি করতে পারেন এবং এটি বেশিরভাগ সিস্টেমে ক্র্যাক হয়ে যাবে। অন্যদিকে, যদি একটি এলোমেলো 16-বিট লবণ ব্যবহৃত হয় এবং এলোমেলো মানগুলির মোটামুটি এমনকি বিতরণ থাকে তবে আপনার সমস্ত 2 ^ 16 সম্ভাব্য লবণের জন্য একটি রেইনবো টেবিলের প্রয়োজন।

আক্রমণকারীকে কোনও পৃথক অ্যাকাউন্টের লবণ কী তা জানতে বাধা দেওয়ার বিষয়ে নয়, এটি তাদের একক লবণের বৃহত, চর্বিযুক্ত লক্ষ্য না দেওয়ার বিষয়ে যা সম্ভাব্য লক্ষ্যমাত্রার যথেষ্ট পরিমাণে ব্যবহার করা হবে।


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

আমি ক্রস-সিস্টেম সুরক্ষার বিষয়ে আপনার দৃষ্টিভঙ্গির প্রশংসা করি। এছাড়াও, আমি অনুমান করি যে ভবিষ্যতে এটি ব্যবহারকারী-নির্দিষ্ট রংধনু টেবিলগুলি দেখার সম্ভাবনা নয় ...
এভিডি

@ অ্যাভিডি: আপনার কি মনে হয়? এটি বেশ একটি নির্দিষ্ট আক্রমণ ভেক্টর।
ডেভিড গ্রান্ট

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

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

29

নিরাপদে পাসওয়ার্ডগুলি সংরক্ষণ করার জন্য একটি উচ্চ-এনট্রপি লবণ ব্যবহার করা একেবারে প্রয়োজনীয়।

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

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

তাদের একটি 12-বিট লবণ থাকত । 12 বিট 4096 বিভিন্ন সমন্বয় different এটি পর্যাপ্ত সুরক্ষিত ছিল না কারণ আজকাল এত বেশি তথ্য সহজেই সংরক্ষণ করা যায় । 4096 সর্বাধিক ব্যবহৃত ব্যবহারকারীর নামগুলির জন্য এটি একই প্রযোজ্য। সম্ভবত আপনার কয়েকজন ব্যবহারকারী এমন ব্যবহারকারীর নাম বেছে নেবেন যা সর্বাধিক সাধারণ ব্যবহারকারীর নামের সাথে সম্পর্কিত।

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


একটি ভাল পয়েন্ট জন্য +1 যাইহোক, আপনি হয় একটি সম্ভাব্য বিষয়ে কথা বৃহদায়তন রামধনু টেবিল। জিএসএমপাইসওয়ার্ডের দৈর্ঘ্যের সমস্ত মান কভার করার জন্য (মিশ্র-কেস বর্ণানুক্রমিক ধরে নেওয়া) টেবিলের 36 ^ 12 সারি প্রয়োজন!
ডেভিড গ্রান্ট

অনুসরণ হিসাবে: বিতরণ করা রংধনু টেবিল প্রকল্পে ,৩,৯70০ টি ক্র্যাক হ্যাশ রয়েছে তবে ৩ 36 ^ 12 হল 4,738,381,338,321,616,896!
ডেভিড গ্রান্ট

ধন্যবাদ, এবং এটি অর্থবোধ করে - তবে মিঃ পোটাটোহিড নির্দেশ করেছেন, আপনি এখনও আরটি দিয়ে ক্র্যাকিংয়ের যুক্তিসঙ্গত সম্ভাবনা ছাড়িয়ে আপনার স্থানটি প্রসারিত করছেন। এছাড়াও, ধরে নিচ্ছি যে আমার ব্যবহারকারীর নামগুলি কমপক্ষে 6-8 টি অক্ষর - এন্ট্রপির জন্য কী অতিরিক্ত প্রয়োজনীয় মান সরবরাহ করে?
এভিডি

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

4
সিস্টেমের ক্ষেত্রে লবণ হিসাবে ব্যবহারকারীর নাম ব্যবহার করাও খারাপ ধারণা where যেখানে উইন্ডোজে "অ্যাডমিনিস্ট্রেটর" উইন্ডোজে "অ্যাডমিনিস্ট্রেটর", এমএসএসকিউএল এ "রুট", ইত্যাদি
কেউই

8

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

হ্যাশফংশন ("www.yourpage.com /" + ব্যবহারকারীর নাম + "/" + পাসওয়ার্ড)

এই সমস্যার সমাধান করা উচিত। আমি ক্রিপ্টেনালাইসিসের মাস্টার নই, তবে আমি নিশ্চিত সন্দেহ করি যে আমরা উচ্চ এনট্রপি ব্যবহার করি না তা হ্যাশটিকে দুর্বল করে তুলবে।


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

7

আমি উভয়ই ব্যবহার করতে চাই: প্রতি-রেকর্ড লবণের জন্য একটি উচ্চ-এনট্রপি রেডম, প্লাস রেকর্ডের অনন্য আইডি।

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

(স্বীকার করে নেওয়া হয়েছে যে এটি প্রযোজ্য এমন পরিস্থিতিতে ভাবতে অসুবিধা হয়, তবে সুরক্ষার ক্ষেত্রে আমি বেল্ট এবং ধনুর্বন্ধকে কোনও ক্ষতি দেখতে পাই না))


আমি ব্যবহারকারীর কাছে পাসওয়ার্ড বাঁধাইয়ের ধারণাটি পছন্দ করি। তবে আক্রমণকারী পাসওয়ার্ড পরিবর্তন করতে পারলে তিনি অবশ্যই আইডি পরিবর্তন করতে পারবেন।
জর্জি স্কলি

আইডিটি কী তা নির্ভর করে: আমি টেবিলের প্রাথমিক কী ব্যবহার করি, যা আপনি ইচ্ছামত সত্যিই পরিবর্তন করতে পারবেন না। টিবিএইচ, যদি হ্যাকারটি আপনার ডাটাবেসে লিখেছে, আপনি ইতিমধ্যে কিছু বড় সমস্যায়
পড়েছেন

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

4
ভাল যুক্তি. আমরা দেখতে পাচ্ছি যে প্রথম ব্যবহারকারীকে নতুন ডাটাবেসে যুক্ত করা ক্রমশ কঠিন হয়ে পড়েছে: আমরা কার্যকরভাবে আমাদের অ্যাপ্লিকেশনগুলিকে এত সুরক্ষিত করে তুলেছি যে আমরা সেগুলি কেবল নিজেরাই হ্যাক করতে পারি। [এছাড়াও, একটি অ্যাপ্লিকেশন-নির্দিষ্ট লবণ ব্যবহার করুন যাতে আপনি একটি ডাটাবেস থেকে অন্য ডেটাবেসগুলিতে শংসাপত্রগুলি অনুলিপি করতে পারবেন না]]
teedyay

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

3

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

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

অনন্য, ক্রিপ্টোগ্রাফিক শক্তিশালী লবণের মানটি আদর্শ হবে।


4
রংধনু টেবিলের পুরো বিন্দুটি হ'ল মানগুলি প্রাক-উত্পন্ন হয় এবং আপনি যদি কোনও মান (যেমন পাসওয়ার্ড) এর জন্য টেবিল তৈরি করে থাকেন তবে প্রদত্ত ধ্রুবকটি প্লাস, এটি সম্পূর্ণ আলাদা টেবিল, এবং আপনি সম্ভবত ঠিক হ্যাশ ফলাফল সরাসরি চেষ্টা করুন। :)
ডেভিড গ্রান্ট

4
একটি ধ্রুব হ্যাশ মূল্যহীন। একটি একক রংধনু-টেবিল ব্যবহার করে সমস্ত পাসওয়ার্ড ক্র্যাক করা যায়। লবণের উদ্দেশ্য হ'ল একটি রংধনু-টেবিল তৈরি করা অসম্ভব।
জর্জি স্কলি

4
@gs - আমি দেখতে পাচ্ছি না আপনি কেন এমন একটি রংধনু টেবিল তৈরি করতে পারবেন না যাতে ধ্রুবক লবণের প্রভাবগুলি "অন্তর্ভুক্ত" করে। আক্রমণ স্থান (পাসওয়ার্ড) পরিবর্তন হবে না, তাই টেবিল বাড়ার প্রয়োজন হবে না, কেবল পুনরায় গণনা করা হবে।
হুগাগুঃ

@ পোটাটো - ট্রেড অফের উপর নির্ভর করে। যদি আপনার কোম্পানির 20k লগইনগুলি সমস্ত একই ধ্রুবক লবণের সাথে মিশ্রিত হয় তবে ডিকশনারির উপর পৃথকভাবে আক্রমণ করার চেয়ে একটি তাজা রেইনবো টেবিলটি গণনা করা সস্তা be সুতরাং আমার "বালক" এর জোর।
হুগাগুঃ

3

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

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


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

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

এটি আমার চিন্তাভাবনাও ছিল - তবে আমি "সম্ভবত ঠিক আছে" এ আটকে গেলাম। আমি এখনও এই তত্ত্বটি প্রমাণিত হতে দেখছি না - বা কমপক্ষে যাচাই করা হয়েছে যে কোনও ক্রিপ্ট্যানালাইসিসের প্রভাব নেই।
আভিডি

@ অণবোন: যদি লবণের সাথে ব্যবহারকারীর নাম + ধ্রুবক স্থানীয় মান থাকে (আমি প্রায়শই ':' ব্যবহার করি) তবে এটি এখনও মানকৃত আরটিগুলিকে নষ্ট করে দেয়, যদি না সেখানে সাধারণ ব্যবহারকারীর নাম এবং সাধারণ স্থির লবণের মান অন্তর্ভুক্ত থাকে। আমি বরং সন্দেহ করি যে ঘটনাটি নয়।
nsayer

এনসায়ারের সাথে। আপনি একটি সিস্টেম-প্রশস্ত ধ্রুব স্ট্রিং ব্যবহার করতে পারেন, যাতে # (D83d8) এর মতো লবণ হিসাবে ব্যবহারকারীর নামের পাশাপাশি প্রিজেনারেটেড আরটি থাকবে না এবং এটি কোনও রেইনবো টেবিলের আক্রমণকে প্রতিরোধ করবে।
কিব্বি

3

একটি হ্যাশ ফাংশনটির শক্তি এর ইনপুট দ্বারা নির্ধারিত হয় না!

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

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

প্রতিবার ব্যবহারকারীরা তাদের পাসওয়ার্ড পরিবর্তন করলে লবণ পরিবর্তন করা দীর্ঘায়িত আক্রমণগুলিকে পরাভূত করতে সহায়তা করতে পারে যেমন যুক্তিসঙ্গত পাসওয়ার্ড নীতি, যেমন মিশ্র কেস, বিরামচিহ্ন, ন্যূনতম দৈর্ঘ্য, এন সপ্তাহ পরে পরিবর্তন হবে ।

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


ফাংশনটির শক্তি পরিবর্তন হয় না, তবে আউটপুট অবশ্যই পরিবর্তন হয়। যদি ইনপুটটি প্রভাবিত বা পরিচিত হতে পারে, তবে সম্ভবত হ্যাশটির মান সম্পর্কে কিছু অনুমান করা যেতে পারে। এটাই ঝুঁকি।
মার্টিন কার্পেন্টার

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

লবণগুলি কোনও আক্রমণকারীকে রংধনু-টেবিল ব্যবহার করে জানা যায়।
জর্জি স্কলি

সার্ভারকে এনক্রিপ্ট করা লবণ (হ্যাশের বিপরীতে পাসওয়ার্ড পরীক্ষা করার জন্য) জানতে হবে, সুতরাং আক্রমণকারীর লবণের অ্যাক্সেস রয়েছে বা খুব সহজেই তা পাওয়া যায় granted
জর্জি স্কলি

ডান, ডান, একটি প্রদত্ত থাবা - আরও সুনির্দিষ্ট বলতে আমি বোঝাতে পারি সামগ্রিক ক্রিপ্টোসিস্টেমের শক্তি (বা -সুবসিস্টেম, আর্ট হ্যাশ)।
এভিডি

1

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

লবণে যতটা সম্ভব এনট্রপি সহ সর্বদা পরিবর্তনশীল লবণের মানগুলি ব্যবহার করা নিশ্চিত করবে যে হ্যাশিংয়ের সম্ভাবনা (বলে পাসওয়ার্ড + লবণের) সম্পূর্ণ ভিন্ন হ্যাশ মান তৈরি করবে produce

লবণের ক্ষেত্রে কম এনট্রপি, আপনার একই লবণের মান উৎপন্ন করার সম্ভাবনা তত বেশি, কারণ একই হ্যাশ মানটি তৈরি করার সম্ভাবনা তত বেশি।

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


আবার, আমি একটি একক ধ্রুব নুন ব্যবহার করার কথা উল্লেখ করছি না - বরং একটি এলোমেলো, তবে ব্যবহারকারী-অনন্য মান। যেমন ইউজারআইডি।
এভিডি

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

-1

এন্ট্রপি হল লবণের মূল্যের বিন্দু।

লবণের পেছনে যদি কিছু সাধারণ এবং পুনরুত্পাদনযোগ্য "গণিত" থাকে তবে তার চেয়ে লবণ সেখানে নেই। কেবলমাত্র সময় মূল্য যুক্ত করা ভাল be


আমি এই মন্তব্য বুঝতে পারি না। আপনি "এন্ট্রপি ব্যবহার করুন" এবং তারপরে বলেছেন: "সময় ব্যবহার করুন" ??
মার্টিন কার্পেন্টার

যদি ব্যবহারকারীর নাম লবণের জন্য ব্যবহার করা হয় তবে এটি পর্যাপ্ত পরিমাণে নয় ic তবে আপনি যদি ব্যবহারকারীর নাম + বর্তমান তারিখের সময় ব্যবহার করেন - এটি হ'ল যেহেতু ঠিক লবণ কখন তৈরি হয়েছিল gu
dmajkic

"এনট্রপিক পর্যাপ্ত" বিষয়গত; এটি আপনার মান এই মানটি সময়মতো বেঁধে দেওয়া পর্যাপ্ত নাও হতে পারে।
মার্টিন কার্পেন্টার

"পরম সত্যিকারের এলোমেলোতা" বলে কোনও জিনিস নেই। এটি "যথেষ্ট ভাল" কখন তা আমাদের বলার অপেক্ষা রাখে। আপনি যদি মনে করেন যে এই ক্ষেত্রে সময় যথেষ্ট ভাল না হয় তবে অন্য কিছু ব্যবহার করুন। stackoverflow.com/questions/84556/...
dmajkic

প্রকৃতপক্ষে, লবণের পয়েন্টটি প্রতিটি হ্যাশের ফলাফলকে অনন্য করে তোলে - (ক) রংধনু টেবিলের আক্রমণগুলি এবং (খ) অভিন্ন পাসওয়ার্ড সনাক্তকরণের জন্য। প্রশ্নটি হ'ল, এন্ট্রপির জন্য আর কি দরকার, যদি আদৌ হয়?
এভিডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.