السلام عليكم،

سابقا طرح موضوع بعنوان "فكرة - كلمة مرور ديناميكية من خلال النموذج هل تراها فكرة جيدة ؟"

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

تلك كانت الطريقة لتخزين كلمة المرور بأمان أكثر...

ما الذي تزيده هذه الطريقة أو ما الجديد فيها؟

سوف يتحكم المستخدم في كيف ستشفر كلمة مروره و ليس الخادم من يفعل، فطريقة التشفير ستختلف من مستخدم لآخر.

هل هناك عيوب كبيرة؟

نعم، في المستخدم، أو فينا نحن كبشر:

  • ستأخذ وقت طويل لكي تدخل للموقع، أو على الأقل لتستخرج القالب من ملف على جهازك...

  • يمكن أن يختار المستخدم قالب سيء يضعف من التشفير. ربما على الموقع/البرنامج أن يقترح قالب على المستخدم إن لم يعرف ماذا يفعل.

  • موجهة للمستخدم المتقدم.