সরল পাঠ্যে সংরক্ষণ করা যায় না এমন পাসওয়ার্ডের মতো কোনও কিছুর জন্য একটি হ্যাশ মানের সাথে লবণের মান যুক্ত করার সময়, লবণের মানগুলি আসার সর্বোত্তম জায়গা কোনটি? প্রসঙ্গে, ধরা যাক এটি কোনও ওয়েবপৃষ্ঠায় লগইনে থাকা পাসওয়ার্ডের জন্য।
সরল পাঠ্যে সংরক্ষণ করা যায় না এমন পাসওয়ার্ডের মতো কোনও কিছুর জন্য একটি হ্যাশ মানের সাথে লবণের মান যুক্ত করার সময়, লবণের মানগুলি আসার সর্বোত্তম জায়গা কোনটি? প্রসঙ্গে, ধরা যাক এটি কোনও ওয়েবপৃষ্ঠায় লগইনে থাকা পাসওয়ার্ডের জন্য।
উত্তর:
আমি সাধারণত created TIMESTAMP
একটি ব্যবহারকারীর টেবিলে একটি কলাম থাকি যাতে ব্যবহারকারী কখন নিবন্ধিত হয় তা আমি দেখতে পারি। আমি সল্টের জন্য অতিরিক্ত কলাম যুক্ত করতে পছন্দ করি না, তাই আমি টাইমস্ট্যাম্প কলামটি লবণের হিসাবে ব্যবহার করি:
SHA1(password + created)
এটা কোন ব্যাপার?
লবণের দুটি উদ্দেশ্য রয়েছে। প্রিশেড পাসওয়ার্ডের বড় টেবিল ("রেইনবো টেবিল") ব্যবহার করা এটি অযৌক্তিক করে তোলে এবং এটি হ্যাশগুলির তালিকায় অভিন্ন পাসওয়ার্ডকে আলাদা দেখায়। অভিন্ন পাসওয়ার্ডগুলি আলাদা দেখানো এমন সমস্যা এড়াতে সহায়তা করে যেখানে বেশিরভাগ লোক একটি নির্দিষ্ট পাসওয়ার্ড ব্যবহার করে যা সম্ভবত একটি সাধারণ দুর্বল।
সুতরাং, প্রতিটি অ্যাকাউন্টের নিজস্ব স্বতন্ত্র লবণ থাকা উচিত, এবং লবণের পরিমাণ অত্যধিক অনুমানযোগ্য হওয়া উচিত নয়, এই অর্থে যে লবণের একটি গ্রুপ সম্ভবত হওয়ার সম্ভাবনা নেই। (যদি অনেকগুলি সাইট 1 থেকে শুরু হয় এবং এটি গণনা করা হয় তবে খারাপ ছেলেরা কম সংখ্যক সল্ট সহ রেইনবো টেবিলগুলি তৈরি করতে পারে, উদাহরণস্বরূপ)) তারা সাধারণত অপ্রত্যাশিত ছাড়া অন্য কোনও উপায়ে এলোমেলো হতে হবে না। এগুলি হ্যাশ ছাড়া আর কোনও গোপন বিষয় নয়, সুতরাং তাদের বিশেষভাবে অবর্ণনীয় হওয়ার দরকার নেই।
লবণ উত্পন্ন করতে যে কোনও সুবিধাজনক পদ্ধতি ব্যবহার করুন। অ্যাকাউন্টের সংখ্যার তুলনায় প্রচুর সম্ভাব্য লবণের মান (শুরুর ইউনিক্স সিস্টেমগুলি সম্ভবত দুটি বাইট ব্যবহার করা হয়, 65536 এর একটি সম্ভাব্য সংখ্যার জন্য), আধা-এলোমেলোভাবে অ্যাসাইনমেন্ট প্রায় কোনও সদৃশ লবণ দিতে পারে না।
প্রতিবার আপনি নতুন পাসওয়ার্ড (নিবন্ধকরণ, পাসওয়ার্ড-রিসেট, পাসওয়ার্ড-আপডেট) সঞ্চয় করতে চান, একটি ভাল কৌশল হ'ল
for i in (0...65536) { password = hmac(password) }
কাঠামোটি উত্তোলন করুন। .NET এ আপনি আরএনজিক্রিপ্টো সার্ভিসপ্রোভাইডার ব্যবহার করতে পারেন ...
// If salt is not specified, generate it on the fly.
if (saltBytes == null)
{
// Define min and max salt sizes.
int minSaltSize = 4;
int maxSaltSize = 8;
// Generate a random number for the size of the salt.
Random random = new Random();
int saltSize = random.Next(minSaltSize, maxSaltSize);
// Allocate a byte array, which will hold the salt.
saltBytes = new byte[saltSize];
// Initialize a random number generator.
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
// Fill the salt with cryptographically strong byte values.
rng.GetNonZeroBytes(saltBytes);
}
অন্যান্য ফ্রেমওয়ার্কগুলিতে সমান ক্লাস থাকা উচিত যা আপনি লাভ করতে পারেন। র্যান্ডমনেস সফ্টওয়্যার অর্জন করতে প্রায়শই বার Random
উল্লিখিত হিসাবে ব্যবহারকারীকে বনাম নিয়োগ করে । এলোমেলোভাবে একটি সংজ্ঞায়িত স্থানে লবণের জন্য মাউসকে ঘুরিয়ে তোলা ট্রুক্রিপ্ট দ্বারা নিযুক্ত একটি বিকল্প। এটি আপনার নির্দিষ্ট প্রয়োজনীয়তা এবং সুরক্ষার স্তরে ফোটে; যেহেতু আপনার লবণ সহজভাবে হতে পারে !@#$%
।
আপনি একটি লবণ সার্ভার-সাইড তৈরি করেন এবং এটি তৈরির পরে এটি কোনও অ্যাকাউন্টে নির্ধারণ করুন। আপনার কাঠামোর সাথে উপলব্ধ কিছু ক্রিপ্টো-প্রজন্মের এপিআই ব্যবহার করা ভাল তবে নীতিগতভাবে কোনও ক্রম হবে।
সাধারণত জিনিসগুলি এইভাবে সংরক্ষণ করা হয়:
User
-------------------
ID
Username
PasswordHashWithSalt
উদাহরণ:
পাসওয়ার্ডহ্যাশওথসাল্ট =
A15CD9652D4F4A3FB61A2A422AEAFDF0DEA4E703 j5d58k4b56s8744q
ব্রেক্রিপ্ট ব্যবহার করুন এবং একমাত্র স্বাভাবিক হ্যাশ হিসাবে এই নিবন্ধটি পড়ুন এই দিন এবং যুগে গুরুতর সুরক্ষা নয়।
এসডিআর শূন্য জ্ঞান পাসওয়ার্ড প্রোটোকল ব্যবহার করার বিষয়ে বিবেচনা করুন যার প্রচুর পরিমাণে ওপেনসোর্স লাইব্রেরি রয়েছে এবং পেটেন্ট মুক্ত।
এসডিআর এর জন্য লবণের প্রয়োজন এবং সেই ক্লায়েন্টটি হবার জন্য সর্বোত্তম জায়গা; আপনার সার্ভার থেকে অপ্রত্যাশিত উপায়ে তাদের শেষ দিকে লবণের জন্য তাদের কী-স্ট্রোক, মাউস নড়াচড়া, হ্যাশ পরিবেশের পরিবর্তনশীলগুলি, এলোমেলো সংখ্যাগুলি, তাদের টেম্প ফোল্ডারে ফাইল তৈরির সময় time এসডিআর লবণ, একটি বৃহত প্রধান, ব্যবহারকারী পাসওয়ার্ড নেয় এবং একটি যাচাইকারী কী উত্পন্ন করে। আপনি কোনও পাসওয়ার্ড সংরক্ষণ করেন না এটি তাদের মেশিনটি কখনও ছাড়বে না তবে আপনি যাচাইকরণ কী এবং লবণের সাথে যাচ্ছেন এমন পাসওয়ার্ড যাচাই করতে পারবেন। এটি মধ্য ও অভিধানের আক্রমণগুলিতে মানুষের থেকে প্রতিরোধক। ডাটাবেস কলামে কীগুলি এবং লবণের এনক্রিপ্ট করুন নিশ্চিত হওয়ার জন্য।