السلام عليكم،
سابقا طرح موضوع بعنوان "فكرة - كلمة مرور ديناميكية من خلال النموذج هل تراها فكرة جيدة ؟"
https://arabia.io/go/10789ما رأيكم بمحاولة تطبيق فكرة مشابهة، حيث المستخدم يدخل قالب + كلمة المرور:
عناصر:
كلمة المرور - يدخلها المستخدم و يختارها
القالب - يدخله المستخدم و يختاره (يشبه الكود البرمجي)
هاش كلمة المرور النهائي - يتم عمله داخل الخادم - يخزن في قاعدة البيانات
سلسلة قصيرة من بايتات عشوائية (تستعمل كـ salt) - تولد من PRNG في الخادم - يخزن في قاعدة البيانات
لنعتبر أن المستخدم اختار كقالب:
loop(len(password) times){hash=sha256(password+hash}
final_output=salt+hash
و ذلك يطلب منه مع كلمة المرور لما يريد الدخول. و في خانة أخرى من الصفحة يكتب كلمة المرور.
salt=make_random_bytes(len=32)
original_final_hash و salt يتم حسابهما/توليدهما داخل الخادم لما يسجل المستخدم أو يغير كلمة المرور ثم يحفظان داخل قاعدة البيانات بدون تغيير.
و يتم برمجة دالة تعالج القالب لتنفذه و تعوض المتغيرات و عناصر القالب محددة مسبقا مثل عنصر loop و دالة حساب طول كلمة و دالة الهاش...إلخ من عناصر أساسية. ثم ما يخرج من بيانات من القالب (final_output) سيتم حساب الهاش الخاص به:
new_final_hash=sha256(final_output)
ثم يقارن new_final_hash مع original_final_hash
تلك كانت الطريقة لتخزين كلمة المرور بأمان أكثر...
ما الذي تزيده هذه الطريقة أو ما الجديد فيها؟
سوف يتحكم المستخدم في كيف ستشفر كلمة مروره و ليس الخادم من يفعل، فطريقة التشفير ستختلف من مستخدم لآخر.
هل هناك عيوب كبيرة؟
نعم، في المستخدم، أو فينا نحن كبشر:
ستأخذ وقت طويل لكي تدخل للموقع، أو على الأقل لتستخرج القالب من ملف على جهازك...
يمكن أن يختار المستخدم قالب سيء يضعف من التشفير. ربما على الموقع/البرنامج أن يقترح قالب على المستخدم إن لم يعرف ماذا يفعل.
موجهة للمستخدم المتقدم.
التعليقات