سؤال

في العمل لدينا اثنين من النظريات المتنافسة على الأملاح.المنتجات أعمل على استخدام شيء مثل اسم المستخدم أو رقم الهاتف الملح التجزئة.أساسا ما هو مختلف لكل مستخدم ولكن متاحة لنا.غيرها من المنتجات عشوائيا الملح لكل مستخدم و يتغير في كل مرة يقوم المستخدم بتغيير كلمة المرور.الملح ثم يتم تشفيرها في قاعدة البيانات.

سؤالي هو: إذا كان النهج الثاني هو ضروري حقا ؟ أستطيع أن أفهم من نظرية بحتة منظور أنها أكثر أمانا من النهج الأول ، ولكن ماذا عن من التطبيق العملي وجهة نظر.الآن لمصادقة المستخدم الملح يجب أن تكون مشفرة و تطبيقها على معلومات تسجيل الدخول.

بعد التفكير في ذلك, أنا فقط لا أرى الأمن الحقيقي تستفيد من هذا النهج.تغيير الملح من حساب إلى حساب ، لا يزال يجعل من الصعب للغاية بالنسبة لشخص في محاولة القوة الغاشمة خوارزمية التجزئة حتى إذا كان المهاجم كان على بينة من كيفية بسرعة تحديد ما كان عليه لكل حساب.هذا هو الذهاب على افتراض أن كلمات المرور هي قوية بما فيه الكفاية.(من الواضح العثور على الصحيح تجزئة مجموعة من كلمات المرور حيث يتم كل رقمين هو أسهل بكثير من العثور على الصحيح تجزئة كلمات السر والتي هي 8 أرقام).أنا غير صحيحة في المنطق ، أو هل هناك شيء أن أنا في عداد المفقودين ؟

تحرير: حسنا حتى هنا هو السبب في أنني أعتقد أنه الصورية لتشفير الملح.(يمي أعرف إذا أنا على الطريق الصحيح).

عن التفسير التالي, سوف نفترض أن كلمات السر دائما 8 أحرف و الملح 5 و جميع كلمات السر التي تتكون من أحرف صغيرة (فإنه يجعل من مجرد الرياضيات أسهل).

وجود الملح مختلفة لكل إدخال يعني أنني لا أستطيع استخدام نفس الجدول قوس قزح (في الواقع من الناحية الفنية يمكن أن لو كان واحدا من حجم كاف ، ولكن دعونا نتجاهل هذه اللحظة).هذا هو المفتاح الحقيقي الملح من ما أفهم ، لأن الكراك كل حساب يجب أن اختراع العجلة إذا جاز التعبير لكل واحد.الآن إذا كنت تعرف كيفية تطبيق الصحيح الملح إلى كلمة المرور لإنشاء التجزئة ، أود أن تفعل ذلك لأن الملح حقا فقط يمتد على طول/تعقيد تجزئته العبارة.لذلك أود أن يكون قطع عدد من التوليفات الممكنة كنت بحاجة إلى توليد "معرفة" لدي كلمة المرور + الملح من 13^26 إلى 8^26 لأنني أعرف ما هو الملح.الآن أن يجعل من الأسهل, ولكن لا يزال من الصعب حقا.

لذا على تشفير الملح.لو كنت أعرف الملح مشفرة, لا تحاول فك تشفير (على افتراض أعرف أنه لديها مستوى كاف من التشفير) لأول مرة.أود تجاهله.بدلا من محاولة معرفة كيفية فك ذلك بالعودة إلى المثال السابق أود فقط توليد أكبر قوس قزح الجدول يحتوي على جميع مفاتيح 13^26.لا يعرفون الملح بالتأكيد بطيئة ، ولكن لا أعتقد أنه سيكون إضافة مهمة ضخمة في محاولة للقضاء الملح التشفير الأولى.هذا هو السبب في أنني لا أعتقد أنه يستحق ذلك.الأفكار ؟

هنا هو ارتباط يصف كيف كلمات السر طويلة سوف تصمد تحت هجوم القوة الغاشمة:http://www.lockdown.co.uk/?pg=combi

هل كانت مفيدة؟

المحلول

الجواب هنا هو أن تسأل نفسك ما إذا كنت حقا في محاولة لحماية من ؟ إذا كان شخص ما لديه حق الوصول إلى قاعدة البيانات الخاصة بك ، ثم تمكنوا من الوصول إلى المشفرة الأملاح, و ربما لديهم إمكانية الوصول إلى التعليمات البرمجية الخاصة بك كذلك.مع كل ذلك يمكن فك تشفير تشفير الأملاح?ثم إذا كان الأمر كذلك التشفير غير مجدية إلى حد كبير على أي حال.الملح هو حقا هناك أن تجعل من ذلك أنه ليس من الممكن أن تشكل قوس قزح الجدول إلى الكراك الخاص بك كامل كلمة مرور قاعدة البيانات دفعة واحدة إذا كان يحصل على اقتحام.من وجهة النظر طالما كل الملح هي فريدة من نوعها لا يوجد فرق من هجوم القوة الغاشمة سيكون المطلوب من الأملاح أو المشفرة الأملاح لكل كلمة على حدة.

نصائح أخرى

يختبئ الملح هو لا لزوم لها.

مختلفة الملح يجب أن تستخدم كل تجزئة.في الواقع, هذا هو السهل تحقيقه من خلال الحصول على 8 بايت أو أكثر من التشفير نوعية مولد رقم عشوائي.

من الإجابة السابقة لي:

الملح يساعد على إحباط ما قبل احتساب هجمات القاموس.

لنفترض مهاجم لديه قائمة من كلمات السر المرجح.وقال انه يمكن تجزئة كل ومقارنتها تجزئة له كلمة سر الضحية ، المباريات.إذا كانت القائمة كبيرة ، وهذا يمكن أن يستغرق وقتا طويلا.لا تريد أن تنفق الكثير من الوقت على هدفه التالي ، حتى انه يسجل النتيجة في "القاموس" حيث تجزئة نقاط المقابلة لها الإدخال.إذا قائمة كلمات المرور طويلة جدا, أنه يمكن استخدام تقنيات مثل قوس قزح الجدول إلى توفير بعض المساحة.

ولكن لنفترض أن هدفه المقبل المملح كلمة المرور الخاصة بهم.حتى لو كان المهاجم يعرف ما هو الملح ، precomputed الجدول لا قيمة لها—الملح التغييرات التجزئة الناتجة عن كل كلمة.كان أن إعادة تجزئة جميع كلمات السر في القائمة ، الالصاق الهدف الملح إلى المدخلات.كل الملح مختلفة يتطلب مختلفة القاموس ، و إذا كاف الأملاح تستخدم المهاجم لن يكون لديك غرفة تخزين القواميس عن كل منهم.الفضاء التجاري لتوفير الوقت هو لا يعد خيارا ؛ المهاجم يجب العودة إلى تجزئة كل كلمة في قائمة لكل هدف يريد الهجوم.

لذا فإنه ليس من الضروري للحفاظ على الملح السرية.ضمان المهاجم لا يملك قبل احتساب القاموس المقابلة التي خاصة الملح كافية.


بعد التفكير في هذا أكثر قليلا أدركت أن تخدع نفسك في التفكير الملح يمكن أن تكون مخفية أمر خطير.انه من الأفضل أن نفترض الملح لا يمكن أن تكون مخفية ، وتصميم النظام أن تكون آمنة على الرغم من ذلك.أنا تقديم شرح أكثر تفصيلا في جواب آخر.

فهمي "الملح" هو أن يجعل تكسير أكثر صعوبة, ولكن لا تحاول إخفاء بيانات إضافية.إذا كنت تحاول الحصول على المزيد من الأمن من خلال جعل الملح "سرية" ، ثم كنت حقا تريد فقط أكثر من بت في مفاتيح التشفير.

النهج الثاني هو فقط قليلا أكثر أمنا.الأملاح حماية المستخدمين من هجمات القاموس قوس قزح الجدول الهجمات.أنها تجعل من الصعب على طموح للمهاجمين بخرق النظام الخاص بك كامل, ولكن لا تزال عرضة للهجمات التي تركز على مستخدم واحد من النظام الخاص بك.إذا كنت تستخدم المعلومات المتاحة للجمهور ، مثل رقم الهاتف ، و المهاجم يصبح على بينة من هذا, ثم قمت بحفظها لهم خطوة في الهجوم.طبعا السؤال هو الصورية إذا كان المهاجم يحصل قاعدة البيانات بأكملها والأملاح كل شيء.

تحرير: بعد إعادة القراءة على هذا الجواب بعض التعليقات يظهر لي أن بعض الارتباك قد يكون راجعا إلى حقيقة أن أنا فقط المقارنة بين اثنين حالات محددة جدا المعروضة في السؤال:عشوائية الملح مقابلغير عشوائية الملح.السؤال باستخدام رقم هاتف مثل الملح moot إذا كان المهاجم يحصل قاعدة البيانات بأكملها ، لا السؤال من استخدام الملح في كل شيء.

خفية الملح لم يعد الملح.انها الفلفل.وقد استخدامه.انها مختلفة من الملح.

الفلفل هو المفتاح السري إضافة إلى كلمة المرور + الملح الذي يجعل تجزئة في HMAC (التجزئة على أساس رمز مصادقة الرسالة).هاكر من الوصول إلى تجزئة إخراج الملح يمكن نظريا القوة الغاشمة تخمين المدخلات التي سوف تولد التجزئة (وبالتالي تمرير التحقق من الصحة في مربع نص كلمة المرور).من خلال إضافة الفلفل زيادة مشكلة المساحة في مشفر بطريقة عشوائية ، مما يجعل المشكلة المستعصية دون خطورة الأجهزة.

لمزيد من المعلومات عن الفلفل الاختيار هنا.

انظر أيضا hmac.

هنا مثال بسيط يبين السبب في ذلك هو سوء لديهم نفس الملح لكل تجزئة

النظر في الجدول التالي

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

حالة 1 عندما ملح 1 هو نفس salt2 إذا Hash2 يتم استبدال Hash1 ثم المستخدم 2 يمكن تسجيل الدخول مع المستخدم 1 وكلمة المرور

الحالة 2 عندما ملح 1 لا نفس salt2 إذا Hash2 يتم استبدال Hash1 ثم user2 لا يمكن تسجيل الدخول مع المستخدمين 1 كلمة المرور.

...شيء مثل اسم المستخدم أو رقم الهاتف الملح التجزئة....

سؤالي هو: إذا كان النهج الثاني هو ضروري حقا ؟ أستطيع أن أفهم من نظرية بحتة منظور أنها أكثر أمانا من النهج الأول ، ولكن ماذا عن من التطبيق العملي وجهة نظر ؟

من وجهة النظر العملية ، الملح هو تنفيذ التفاصيل.إذا كنت من أي وقت مضى كيفية تغيير معلومات المستخدم التي يتم جمعها أو الحفاظ عليها و كل من أسماء المستخدمين وأرقام الهواتف تغيير في بعض الأحيان إلى استخدام الأمثلة الدقيق – ثم كنت قد للخطر الأمن الخاص بك.هل تريد مثل هذه الخارج تواجه التغيير أن يكون أعمق من ذلك بكثير الأمن المخاوف ؟

هل وقف شرط أن لكل حساب لديك رقم هاتف ضرورة إشراك كاملة المراجعة الأمنية للتأكد من أنك لم فتح تلك الحسابات إلى الأمن وسط ؟

هناك نوعان من التقنيات مع أهداف مختلفة:

  • "الملح" إلى غير متساوية تشفير كلمات المرور بشكل مختلف.هذه الطريقة ، متسلل لا يمكن بكفاءة استخدام القاموس الهجوم ضد كل قائمة من كلمات السر المشفرة.

  • فإن (مشترك) "سر" يتم إضافتها من قبل تجزئة رسالة ، بحيث دخيل لا يمكن إنشاء رسائله الخاصة و يكون لهم قبول.

أنا أميل إلى إخفاء الملح.يمكنني استخدام 10 بت من الملح قبل أن يتبع رقم عشوائي من 1 إلى 1024 إلى بداية كلمة مرور قبل التجزئة ذلك.عند مقارنة كلمة المرور للمستخدم دخلت مع تجزئة, انا حلقة من 1 إلى 1024 ومحاولة كل قيمة ممكنة من الملح حتى أجد المباراة.وهذا يستغرق أقل من 1/10 من الثانية.لدي فكرة أن تفعل ذلك بهذه الطريقة من PHP password_hash و password_verify.في بلدي على سبيل المثال ، "التكلفة" 10 على 10 قطع من الملح.أو من أي مستخدم آخر قال الخفية "الملح" ويسمى "الفلفل".الملح هو غير مشفرة في قاعدة البيانات.إنه الغاشمة اضطر للخروج.من شأنه أن يجعل قوس قزح الجدول اللازمة لعكس تجزئة 1000 مرات أكبر.يمكنني استخدام sha256 لأنه سريع, ولكن لا تزال تعتبر آمنة.

حقا, ذلك يعتمد على أي نوع من الهجوم تحاول حماية البيانات الخاصة بك.

الغرض فريدة من نوعها الملح لكل كلمة المرور لمنع القاموس الهجوم على كامل قاعدة بيانات كلمة السر.

تشفير فريدة من نوعها الملح لكل كلمة من شأنها أن تجعل الأمر أكثر صعوبة الكراك فرد كلمة المرور, نعم, ولكن يجب أن تزن ما إذا كان هناك حقا الكثير من المنافع.إذا كان المهاجم ، عن طريق القوة الغاشمة ، يجد أن هذه السلسلة:

Marianne2ae85fb5d

التجزئة إلى تجزئة المخزنة في قاعدة البيانات ، هل حقا أن من الصعب معرفة ما الذي هو تمرير أي جزء هو الملح ؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top