خوارزمية تشفير المعلومات في قاعدة البيانات

  • phpg

في السابق كانت md5 أسهل وأسرع طريقة لتشفير بعض الحقول في قاعدة البيانات لكنها أصبحت لاتفيد والبعض يحذر من sha ويقول أنها غير أمنة؟

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

16

لزيادة أمان md5 و shaعليك إستعمال تقنية salting

مثلا :

md5('admin') = 21232f297a57a5a743894a0e4a801fc3

إستعمال salt :

md5('admin' . 'كلمة عشوائية') = 7c1d599181ca624c4886adf323a73a1d

بهذه الطريقة حتى لو إستطاع أحد الوصول لكلمات المرور لن ينفعه إستخدام brute force في الحصول على كلمات السر

لكن يبقى مشكل المكان الأنسب لحفض "الكلمة العشوائية" التي يتم بها salt وهذا يحتاج نقاش اخر.

أعتقد ان المشكلة ليست في الية التشفير نفسها, المشكلة أصبحت في معرفة الطريقة التي تم من خلالها التشفير سواء اكان md5 او sha1

يمكنك استخدام ال salt مثل ما تكلم الاخوه وأيضا يمكنك دمج الاثنين مع بعض

md5(sha1('string'));

المثال في الاعلى هو مثال بسيط ولكن يمكنك زيادة الأمور تعقيدا إذا احتاج الأمر لذلك

او على سبيل المثال ولتفادي هجوم brute force

يمكنك استخدام ايميل المستخدم وأضف اليه كلمة المرور التي قام باستخدامها ومن ثم قم بتشفيرهما

أقوم بإستخدام md5 ولكنني أدمج المعلومة التي أشفرها بكلمة عشوائية وفي بعض الأحيان أشفرها أكثر من مرة (مع أن هذا الشيء قد يؤثر على الأداء).

salt :

md5('admin'.'random value') = bf1c0797894b0619ea324e9d7f835abd

أخي العزيز حاول التأكد قبل النشر لتجنب تكرار التعليقات وكي لاتحصل على تعليقات سلبية من قبل المستخدمين.

شكرا للتنبيه

لكنني لم أرى التداخل قبل النشر و إعادة كتابة التعليق كان لزيادة توضيح الفكرة

لماذا لا تلقي نظرة على BCrypt تعتمد على شيب Blowfish، اعني ان كنت تبحث عن حماية قوية. تستخدم عادة في انظمة حساسة مثل تشفير الباك اب وهكذا.

هنا نسخة بايثون https://code.google.com/p/p... .. بالتاكيد لها نسخة على PHP لكن لا اعلم عنها حقيقة.

ملاحظة: اذا كنت تريد عمل تشفير، فقم بعمل تشفير حقيقي، وليس اسرع واسهل تشفير، لانه سوف يكون كذلك الاسرع في الفك!

برايي افضل طريقة لتشفير باسوورد في قاعدة البيانات هي كالتالي:

اولا نقوم بتحديد secret_key للمشروع نفسه ونقوم بتشفيرها md5

ثانيا نقوم بانشاء تشفير خاص يعتمد على تبادل اماكن الاحرف cipher بناء على secret_key او كما وضح اصدقائنا هنا في الردود الاخرى ممكن تعمل salting

المرحلة الثالثة ان تقوم بالتشفير من خلال احدى دوال التشفير التي لا يمكن عكسها مثل md5,sha وما يشبهها للكلمة التي تنتج عن المرحلة الثانية

طبعا كما هو معروف في عالم الحماية لا يمكنك الوصول الى مستوى 100% في الحماية ولكن هنا نكون قد وصلنا الى 99% تقريبا ..

-1

بعض المواقع تدعي أنها تقوم بفك تشفير md5 وهذا غير صحيح

لان بطبيعة تشفير md5 يكون من المستحيل فك شفير اي نص مهما كان قصيرا

لكن الذي يحدث هو أن تلك المواقع تقوم بعمل هذا بطريقتين

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

  2. عن طريق دوال توليد الكلمات العشوائية وتشفيرها ومقارنتها مع التشفير المدخل وفي حالة التطابق يتم إرجاع النص المقابل

لذلك لتفنيد عمل مثل هذه المواقع يمكن اللجوء لعدة طرق

مثال أستخدم في برمجتي دالة خاصة بي للتشفير

function code($txt)
{
   return md5(md5(sha1($txt)."bulkyjh"));
}

وفي كل برمجية أغير النص العشوائي الذي اضيفة

قمت بتجربة الشفرة المرجعة من هذا الدالة في عدد لا بأس به من الموقع التي تدعي فك تشفير md5 وكلها عجزت عن إرجاع النص الأصلي حتى لو كان رقم واحدا

-1

آنا شخصياً أستخدم الطريقه التاليه :

md5(sha1('admin'));