في السابق كانت md5 أسهل وأسرع طريقة لتشفير بعض الحقول في قاعدة البيانات لكنها أصبحت لاتفيد والبعض يحذر من sha ويقول أنها غير أمنة؟
خوارزمية تشفير المعلومات في قاعدة البيانات
لزيادة أمان md5 و shaعليك إستعمال تقنية salting
مثلا :
md5('admin') = 21232f297a57a5a743894a0e4a801fc3
إستعمال salt :
md5('admin' . 'كلمة عشوائية') = 7c1d599181ca624c4886adf323a73a1d
بهذه الطريقة حتى لو إستطاع أحد الوصول لكلمات المرور لن ينفعه إستخدام brute force في الحصول على كلمات السر
لكن يبقى مشكل المكان الأنسب لحفض "الكلمة العشوائية" التي يتم بها salt وهذا يحتاج نقاش اخر.
أعتقد ان المشكلة ليست في الية التشفير نفسها, المشكلة أصبحت في معرفة الطريقة التي تم من خلالها التشفير سواء اكان md5 او sha1
يمكنك استخدام ال salt مثل ما تكلم الاخوه وأيضا يمكنك دمج الاثنين مع بعض
md5(sha1('string'));
المثال في الاعلى هو مثال بسيط ولكن يمكنك زيادة الأمور تعقيدا إذا احتاج الأمر لذلك
او على سبيل المثال ولتفادي هجوم brute force
يمكنك استخدام ايميل المستخدم وأضف اليه كلمة المرور التي قام باستخدامها ومن ثم قم بتشفيرهما
لماذا لا تلقي نظرة على BCrypt تعتمد على شيب Blowfish، اعني ان كنت تبحث عن حماية قوية. تستخدم عادة في انظمة حساسة مثل تشفير الباك اب وهكذا.
هنا نسخة بايثون https://code.google.com/p/p... .. بالتاكيد لها نسخة على PHP لكن لا اعلم عنها حقيقة.
ملاحظة: اذا كنت تريد عمل تشفير، فقم بعمل تشفير حقيقي، وليس اسرع واسهل تشفير، لانه سوف يكون كذلك الاسرع في الفك!
برايي افضل طريقة لتشفير باسوورد في قاعدة البيانات هي كالتالي:
اولا نقوم بتحديد secret_key للمشروع نفسه ونقوم بتشفيرها md5
ثانيا نقوم بانشاء تشفير خاص يعتمد على تبادل اماكن الاحرف cipher بناء على secret_key او كما وضح اصدقائنا هنا في الردود الاخرى ممكن تعمل salting
المرحلة الثالثة ان تقوم بالتشفير من خلال احدى دوال التشفير التي لا يمكن عكسها مثل md5,sha وما يشبهها للكلمة التي تنتج عن المرحلة الثانية
طبعا كما هو معروف في عالم الحماية لا يمكنك الوصول الى مستوى 100% في الحماية ولكن هنا نكون قد وصلنا الى 99% تقريبا ..
بعض المواقع تدعي أنها تقوم بفك تشفير md5 وهذا غير صحيح
لان بطبيعة تشفير md5 يكون من المستحيل فك شفير اي نص مهما كان قصيرا
لكن الذي يحدث هو أن تلك المواقع تقوم بعمل هذا بطريقتين
تكون لها قاعدة بيانات ضخمة من الكلمات والأسماء المعروفة مخزنة ومعها شفيرها فعند تمرير نص مشفر يتم مقارنته بالنصوص المشفرة والمحفوظة في قاعدة البيانات فاذا وجد يتم إرجاع النص العادي المقابل له
عن طريق دوال توليد الكلمات العشوائية وتشفيرها ومقارنتها مع التشفير المدخل وفي حالة التطابق يتم إرجاع النص المقابل
لذلك لتفنيد عمل مثل هذه المواقع يمكن اللجوء لعدة طرق
مثال أستخدم في برمجتي دالة خاصة بي للتشفير
function code($txt)
{
return md5(md5(sha1($txt)."bulkyjh"));
}
وفي كل برمجية أغير النص العشوائي الذي اضيفة
قمت بتجربة الشفرة المرجعة من هذا الدالة في عدد لا بأس به من الموقع التي تدعي فك تشفير md5 وكلها عجزت عن إرجاع النص الأصلي حتى لو كان رقم واحدا
التعليقات