الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حماية بيانات المستخدمين

بدأه Delphawi في 10 سبتمبر 2008 · 8 رد · 1,349 مشاهدة · في قسم أمن المعلومات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

أحببت طرح سؤال , وهو :

أقوم بعمل برنامج , وأريد إتاحة إمكانية دخول اكثر من مستخدم عليه ولكل مستخدم كلمة سر وصلاحيات طبعاً

فما هي أفضل طرق حفظ كلمة السر وصلاحيات المستخدم ؟

فأرجو ممن لديه خبرة في الحماية , أو لديه فكرة او اقتراح

أو تجربة ... أن يفيدنا بها

وجزاكم الله خيراً

اقتباس
If A is success in life, then A equals x plus y plus z. Work is x; y is play; and z is keeping your mouth shut

Albert Einstein

مدخل إلى برمجة وتصميم الألعاب : كيف أبدأ ؟

#2

السلام عليكم

توجد هناك دوال تقوم بعملية التشفير ، وبالتالي تأخذ encrypted text وتخزنها في ملف ، وفي كل مرة يريد المستخدم الدخول إلى البرنامج يكتب كلمة المرور ، ثم تأخذ أنت هذا المدخل وتقوم باستخدام نفس الدالة لتشفر ما أدخله المستخدم ، ثم تقارن ما أدخله وبين ما هو مخزن.

بالنسبة لأنظمة يونكس فأشهر هذه الدوال هي crypt() ،

http://www.gnu.org/software/libtool/manual/libc/crypt.html

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#3

هل سيكون الطلب على الشبكة

أم أن الملف سيكون متداول بين الأعضاء

بمعنى أنك تريد معرفة التاريخ الخاص بالتعديل على الملف

وضح أكثر أخ علاء

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#4

تقريباً ما ذكر برق لكن بالعكس، أن تقوم بتشفير كتلة فارغة من البيانات فيها معلومات عن المستخدم وحسابه مثلاً، التشفير يتم باستخدام كلمة السر التي يختارها المستخدم لأول مرة.

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

هذه مجرد فكرة.

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

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#5
اقتباس
السلام عليكم

توجد هناك دوال تقوم بعملية التشفير ، وبالتالي تأخذ encrypted text وتخزنها في ملف ، وفي كل مرة يريد المستخدم الدخول إلى البرنامج يكتب كلمة المرور ، ثم تأخذ أنت هذا المدخل وتقوم باستخدام نفس الدالة لتشفر ما أدخله المستخدم ، ثم تقارن ما أدخله وبين ما هو مخزن.

طريقة الاكثر شيوعاً فعلاً

وللأمان اكثر اضف ثابت للمتغير المشفر

بمعني

ادخل المستخدم كلمة المرور 1234 فيقوم البرنامج بإضافة عددة حروف انت اضافتها كمثال /w

الناتج سيكون

1234/w

فنقوم بعملية التشفير للناتج السابق

اخيراً حاول استخدم الهاش اكثر من دوال التشفير وافضل الهاش الموجودة MD5

Xacker

لم افهم الفكرة بشكل دقيق ممكن توضح اكتر

تم تعديل هذه المشاركة بواسطة kindy_ibrahim في 10 سبتمبر 2008 في 19:55

سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

#6

فكرتي بسيطة،

السيناريو الأول الذي طرحه برق:

1. المستخدم يفتح البرنامج ويقوم بادخال اسم المستخدم وكلمة السر للدخول إلى حسابه وصلاحياته.

- من الممكن استخدام hash function لحماية كلمات السر الـ Plain text.

- عند محاولة الدخول يتم حساب hash value لكلمة السر مع اسم المستخدم لو أردت مثلاً ويتم مطابقتها مع الـ Hash الموجودة في قاعدة البيانات على سبيل المثال. تمنح الصلاحيات عند التطابق.

2. يقوم بادخال بيانات ما Plain text.

3. بحفظ البيانات يتم تشفيرها باستخدام نفس كلمة سر تسجيل الدخول أو كلمة سر خاصة يقوم بتحديدها من حسابه (مثلاً).

الضعف؟

كلمة السر واسم المستخدم بيانات يجب حفظها في مكان ما بالتالي هي exposed - من الممكن استخدام hash function لتغيير خصائصها واخفاء كلمة السر الحقيقية، هذا أفضل، لكن يبقى الـ Hash exposed أيضا وهناك بعض انواعه مع كلمات سر ضعيفة يكون الـ hash ضعيفا مثل MD5. أمر مثبت.

السيناريو الآخر:

- نفرض وجود كتلة معطيات تحوي فيها values تحدد صلاحيات المستخدم وبعض المعلومات عن الحساب كاسم صاحب الحساب الحقيقي او معلومات اتصال او الخ الخ الخ.. حسب ما يحتاجه البرنامج. كتلة المعطيات هذه موجودة فارغة قبل انشاء الحساب.

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

2. يتم تشفير كتلة المعطيات باستخدام كلمة السر المدخلة من قبل المستخدم ولأول مرة فقط دون أن يتم حفظ كلمة السر في أي مكان. من الممكن استخدام خوارزمية RSA بطول مفتاح 1024 لنسبة أمان عالية (الأمر يتبع لسرعة المعالج المستخدم .. ان كنت ستستخدم أعلى أو أقل لطول المفتاح).

3. المستخدم يأتي ليقوم بتسجيل الدخول، يقوم بادخال اسم المستخدم وكلمة المرور، اسم المستخدم غير مهم لذلك يمكن تركه plain text وهو لمجرد الربط مع كتلة المعطيات المحفوظة في مكان ما، يقوم المستخدم بادخال كلمة المرور، يتم استخدام كلمة المرور فقط لفك تشفير كتلة المعطيات المحفوظة سابقاً.

4. يتم التحقق من القيم الخاصة التي تكلمنا عنها سابقاً والموجودة ضمن كتلة المعطيات والتي تحدد أن فك التشفير وأن كلمة السر المستخدمة صحيحة. بالاعتماد على القليل من الخوارزميات الرياضية المنتقاة بشكل جيد يصبح من الصعب التحايل على هذا الأمر.

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

6. طالما تم منح الصلاحيات فالبيانات حاليا تمام والمستخدم يستطيع ادخال او تعديل ما يريد، عند الحفظ يتم استخدام نفس كلمة السر الموجودة فقط في الذاكرة، ممكن طلبها مرة اخرى من المستخدم لو أردت والتحقق من دقتها بالشكل الذي تريده، (اعادة فك تشفير الكتلة مرة اخرى ومقارنتها مع ما هو موجود في الذاكرة، فقط للتقليل من فرص سحبها من الذاكرة بشكل أو بآخر - هناك برامج قادرة على عمل dump لكامل محتوى الذاكرة .. WinHex)

- ان كنت تريد نسبة أمان عادية فقط لحماية اسماء المستخدمين وكلمات السر استخدم الطريقة الاولى.

- ان كنت تريد نسبة أمان أعلى استخدم الطريقة الثانية.

- ان كان برنامجك يسمح لمنقحي البرامج بتنقيحه بشكل يسير فهناك احتمال في ان يصبح كل ما ورد أمر تافه. لن اجلس الآن لأفكر كيف افتراضياً :lol:

تم تعديل هذه المشاركة بواسطة Xacker في 10 سبتمبر 2008 في 21:13

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#7

اها جميلة الفكرة ولكن في بعض الاحيان نحتاج الي البساطة و البعض يجب علينا اللجوء الي امان اعلي مما يتخيله المطور

اقتباس
- ان كان برنامجك يسمح لمنقحي البرامج بتنقيحه بشكل يسير فهناك احتمال في ان يصبح كل ما ورد أمر تافه. لن اجلس الآن لأفكر كيف افتراضياً

مبدئياً يمكننا تشويه الكود لتقليل سهولة قراءة الكود

سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

#8

ما أوضحته هي الطريقة التي يستخدمها أنظمة UNIX في عملية تخزين password الخاص بالمستخدم ، حيث أن النظام يخزنها في shadow ، طبعا ، يجب أن تأخذ حذرك في أن هذا الملف تتم قراءته من خلال root فقط ، ولا يمكن الكتابة عليه إلا عن طريق برنامج passwd .

طبعا مع دخول selinux أصبحت عملية القراءة أو الكتابة في الملفات من خلال compromised program شبه مستحيل.

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

مواضيع مشابهة