• 0
ahmed.o.mohamed

قريبا سيتم إطلاق الإصدار الأول من JProtector

سؤال

السلام عليكم

 

أعمل الآن على وضع اللمسات الأخيرة لبرنامج صغير (Password Manager) يسمح بتسيير و حفظ كلمات المرور بشكل آمن مع ضمان الـ portability.

 

وظائف البرنامج :

  1. إنشاء قاعدة بيانات جديدة (قاعدة البيانات محمية بالـ master password)
  2. (إضافة، تغيير، حذف، بحث [عن] ) حساب
  3. نسخ المعرف أو كلمة المرور
  4. تنضيف الـ cliboard
  5. فتح الـ URL تبع الحساب (إن وُجد)
  6. توليد كلمات مرور قوية
  7. تقييم صلابة كلمات المرور
  8. إظهار تفاصيل التقييم
  9. حفظ قاعدة البيانات باسم (save as) - امتداد الملف الذي استخدمته هو psm
  10. تغيير كلمة المرور الرئيسية
  11. تسجيل الخروج بشكل يدوي
  12. تسجيل الخروج بشكل تلقائي (بعد مدة مُحددة)
  13. فتح ملف الـ psm
  14. توليد كلمة المرور انطلاقا من تحريك الـ mouse على random picture لمدة 10 ثواني
  15. إظهار الحسابات المنتهية الصلاحية
  16. حماية ملف الـ psm ضد التعديل .

 

المكتبات المُستخدمة :

  • Boucny Caslte
  • SQLite JDBC
  • SwingX
  • JTattoo

 

الـ design patterns المُستخدمة :

  • Model–View–Controller
  • Observer Pattern

 

الـ IDE المُستخدم : Netbeans.

لم أستخدم Drag and Drop لرسم الواجهات، كتبتها جميعاً عن طريق الكود :

post-219439-0-34437400-1415462762_thumb.

 

صور من البرنامج :

 

post-219439-0-31792800-1415463689_thumb.post-219439-0-23455900-1415463728_thumb.post-219439-0-46235200-1415463764_thumb.post-219439-0-87984800-1415463802_thumb.post-219439-0-26414500-1415463838_thumb.post-219439-0-97597300-1415463871_thumb.post-219439-0-05954200-1415463907_thumb.post-219439-0-20898200-1415463942_thumb.post-219439-0-26679800-1415463980_thumb.post-219439-0-56877400-1415464014_thumb.

 

إن كان هناك من يرغب في الحصول على السورس كود لتطوير البرنامج فليراسلني على الخاص. (للجادين فقط :) )

 

 

تحياتي.

تم تعديل بواسطه Snack3r
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

20 إجابة على هذا السؤال .

  • 0

 

إنشاء قاعدة بيانات جديدة (قاعدة البيانات محمية بالـ master password)

يبدو برنامجا رائعا مفيدا ولكن هل لك أن تخبرني كيف ستحمي قاعدة البيانات من العبث

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

صور أخرى :)

 

post-219439-0-37591500-1415465127_thumb.post-219439-0-33907200-1415465164_thumb.post-219439-0-34068300-1415465202_thumb.post-219439-0-03810600-1415465239_thumb.post-219439-0-02364600-1415465285_thumb.post-219439-0-03580600-1415465330_thumb.post-219439-0-56994400-1415465374_thumb.post-219439-0-79065700-1415465411_thumb.

 

 

كيف ستحمي قاعدة البيانات من العبث

 

هذه هي الـ fonctionnalité الوحيدة المتبقية، أعمل الآن عليها :rolleyes:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

إنما سألتك لأنها مسالة سبق ونوقشت في هذا الموضوع

يمكنك الاطلاع عليه فلعله يفيدك أو تفيد

http://arabteam2000-forum.com/index.php/topic/292601-%D9%86%D9%82%D8%A7%D8%B4-%D8%AD%D9%88%D9%84-%D8%A3%D9%81%D8%B6%D9%84-%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D9%84%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%A7%D9%84%D9%80-encryption-key/

تم تعديل بواسطه أحمد أبو عبد البر
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

والله شيء رائع وجميل

هل فكرت ان توسع عمل البرنامج ليكون enterprise

اي عن طريق الويب يكون لكل مستخدم حساب يستطيع فيه حفظ كلمات السر واستخدامها في اي جهاز وفي كل مكان

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

@أحمد أبو عبد البر

حفظ قاعدة البيانات من العبث صعيب جداً إن كان التطبيق portable لكن لو كان التطبيق مُثبتا على الجهاز فيُمكن تخزين الـ hash في أحد ملفات الـ installation التابعة للتطبيق.

الفكرة التي أعمل عليها حالياً لضمان الـ integrity تكمن في حساب hash الملف و تخزينه مُشفراً في قاعدة البيانات، عند محاولة فتح الملف أقوم بحساب الهاش الجديد للملف ثم أقارنه بالهاش المُخزن بعد فك تشفيره.

ما رأيك ؟ :)

 

@vector_ever

في الحقيقة لم أفكر في هذا، البرنامج كتبته بالأساس للإستعمال الشخصي، لكن ربما أغير فكرتي إن وجدتُ عرضاً من شركة ما، من يدري ؟ :D

الإصدار القادم سيدعم :

  • العمل على عدة work session في نفس الوقت
  • تحسين عملية البحث عن الحسابات باستخدام الـ regex
  • جعل التطبيق على شكل plugin (سأبدأ  بـ firefox و بعدها سأفكر في chrome و البقية تأتي ..)
  • برمجة نسخة للهواتف الذكية (سأبدأ بالعمل على نسخة الـ Android و بعدها Windows Phone)

 

تحياتي.

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

الفكرة التي أعمل عليها حالياً لضمان الـ integrity تكمن في حساب hash الملف و تخزينه مُشفراً في قاعدة البيانات، عند محاولة فتح الملف أقوم بحساب الهاش الجديد للملف ثم أقارنه بالهاش المُخزن بعد فك تشفيره.

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

 

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

 

شيء آخر  في قولك

 

 

بعد فك تشفيره.

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

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

لعلك لم تفهم ما قصدتُه :)

عند حفظ قاعدة البيانات أقوم بحساب هاش الملف و أخزنه داخل الـ database بعد تشفيره.

عند محاولة فتح ملف الـ psm أقوم بحساب هاش الملف من جديد و أقارنه مع الهاش المُخزن في قاعدة البيانات.

 

 

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

بلا اقتحام بلا بطيخ :P :D

حسب فكرتي، الهاش يتم توليده بـ SHA-256 و يتم تشفيره بـ AES-CBC-256 و مفتاح التشفير هو نفسه المفتاح الذي أشفر به بيانات الحسابات.

تم تعديل بواسطه Snack3r
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

@vector_ever

في الحقيقة لم أفكر في هذا، البرنامج كتبته بالأساس للإستعمال الشخصي، لكن ربما أغير فكرتي إن وجدتُ عرضاً من شركة ما، من يدري ؟ :D

الإصدار القادم سيدعم :

  • العمل على عدة work session في نفس الوقت
  • تحسين عملية البحث عن الحسابات باستخدام الـ regex
  • جعل التطبيق على شكل plugin (سأبدأ  بـ firefox و بعدها سأفكر في chrome و البقية تأتي ..)
  • برمجة نسخة للهواتف الذكية (سأبدأ بالعمل على نسخة الـ Android و بعدها Windows Phone)

 

تحياتي.

 

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أهلا vector ever :)

 

هل تقصد بالـ entreprise وجود التطبيق على server و إمكانية الوصول إلى قاعدة بيانات المستخدم عن بعد ؟ (للعلم، مع تعديلات خفيفة، يُمكن للبرنامج الآن أن يعمل هكذا)

أم تقصد وجود shared database تحوي مجموعة كلمات سر لمجموعة مستخدمين مع تسيير الـ privileges لكل مسستخدم ؟ (هذا يتطلب إعادة النظر في الـ architecture تبع التطبيق)

 

الـ architecture الحالية هكذا :

post-219439-0-08816700-1415525653_thumb.

 

 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أهلا vector ever :)

 

هل تقصد بالـ entreprise وجود التطبيق على server و إمكانية الوصول إلى قاعدة بيانات المستخدم عن بعد ؟ (للعلم، مع تعديلات خفيفة، يُمكن للبرنامج الآن أن يعمل هكذا)

أم تقصد وجود shared database تحوي مجموعة كلمات سر لمجموعة مستخدمين مع تسيير الـ privileges لكل مسستخدم ؟ (هذا يتطلب إعادة النظر في الـ architecture تبع التطبيق)

 

الـ architecture الحالية هكذا :

attachicon.gifArch.jpg

ما أقصده اخي هو الحالة الأولى طبعا

لكن للتوضيح ان ما أقصده هو ليس ان يكون البرنامج  مكتبي Desktop مع امكانية الاتصال بالانترنت للولوج لقاعدة البيانات

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

الهدف من ذلك تمكين المستخدم من الولوج لحساباته المختلفة من أي جهاز كمبيوتر في أي مكان كل ما عليه هو الولوج لصفحة الويب التي تحوي كلمات السر الخاصة به

الهدف 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أوكي.

هل أنت مستعد للمشاركة ؟

و بأي لغة برمجة تود كتابة نسخة الويب ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لعلي لم أفهم قصدك فحسبت أنك ستستعمل ملفا واحدا هو ملف قاعدة البيانات

 

 

ولكن إلى الآن لا يمكنك حماية الملف من العبث وإنما يمكنك معرفة هل حدث عبث أم لا

 

تقنيا  embedded data base  غير آمنة لحفظ بيانات حساسة لا سيما إذا أردت استقلالية عن أنظمة التشغيل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اهلا اخي

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

 

الامر الاخر هو انني استخدم JSF في برمجة الويب

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

إلى الآن لا يمكنك حماية الملف من العبث وإنما يمكنك معرفة هل حدث عبث أم لا

 

 

في الحقيقة، أعتقد أن المشكلة الرئيسية في الـ password manager هي مشكلة الـ confidentiality و ليست الـ integrity :)

حماية الملف من العبث مسؤولية المستخدم فقط و ليست مسؤوليتي كمبرمج خصوصاً و أن ملف الـ psm لا يقع في حيز أسيطر عليه برمجيا (كالسيرفر مثلا) و بالتالي المُستخدم هو من يتحمل مسؤولية الحفاظ على الملف (هذا أقل ما يُمكن للمستخدم تقديمه !).

إن كان التطبيق يسمح بالتأكد من الـ master password و الـ integrity عند فتح الملف، فهذا هو أقصى شيء يُمكنني تقديمه -كمبرمج- للمستخدم.

 

 

تقنيا  embedded data base  غير آمنة لحفظ بيانات حساسة لا سيما إذا أردت استقلالية عن أنظمة التشغيل

 

غير آمنة ! متأكد من ذلك ؟

 

@vector_ever

راسلني على الخاص، إن تمت أمورك بشكل كامل.

تم تعديل بواسطه Snack3r
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

@vector_ever

راسلني على الخاص، إن تمت أمورك بشكل كامل.

ان شاء الله في القريب العاجل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

في الحقيقة، أعتقد أن المشكلة الرئيسية في الـ password manager هي مشكلة الـ confidentiality

هذه مشكلة رئيسة  وحسب علمي ليس لها إلا حلان

 

الأول sécurité par l'obscurité

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

 

 

غير آمنة ! متأكد من ذلك ؟

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الأول sécurité par l'obscurité

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

 

لو كنت سأحمي معلومات فائقة الحساسية مثل كلمات سر تابعة لموظفين في إدارة الأمن مثلا، سأستخدم بالتأكيد الطريقة الثانية لكن -كما تعلم- الحماية تكون على حسب نوعية و حساسية الاستخدام.

الإجراءات الأمنية المُتخذة لتأمين البيض الأبيض مثلا أكثر منها بكثير تلك المتخذة لتأمين المنشآت المحصنة ضد الطائرات و هكذا، تزداد درجة الحماية بارتفاع درجة حساسية الموضوع :)

 

 

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

سُعدت بهذا النقاش جداً أخي أحمد و سأكون سعيداً أكثر لو أعطيتني ملاحظات عن كيفية كسر الـ database من خلال وجود ثغرات في الـ architecture التي أرفقتها في مشاركة سابقة.

 

 

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

 

من سييتخدم مجموعة supercomputer لكسر ملف psm لشخص عادي جداً ؟

لا أتوقع مثلا أن يتم استخدام botnet روسي لعمل brute-force لملف الـ psm، لأن كسره لن يعني لهم الكثير :)

تم تعديل بواسطه Snack3r
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تعرف يا أخي أني أريد مساعدتك لبناء برنامج على وجه أكمل والكمال لله تعالى

 

لذلك لا تعتبر مراجعاتي هذي كما تقولون "يشقر عليه"

 

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

 

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

لا تعتبر مراجعاتي هذي كما تقولون "يشقر عليه"

أبداً أخي أحمد، إنما قلت لك :

 

سأكون سعيداً أكثر لو أعطيتني ملاحظات عن كيفية كسر الـ database من خلال وجود ثغرات في الـ architecture التي أرفقتها في مشاركة سابقة.

فقط من باب الموضوعية، حتى يعتمد النقاش على الجانب التقني أكثر من التنظير :)

 

 

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

صحيح، لذا تكلمتُ عن مستوى درجة الحماية التي يُقدمها البرنامج في فقرة النصائح في الـ menubar.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يبدو برنامج رائع ، سأحاول أن أكتبه كتمرين حالما أنهي تعلم اللغة ، ولكن عندي إستفسار ما هي ال design patterns


  • Model–View–Controller
  • Observer Pattern

وأتمنى تجيبو على مواضيعي اللي بالقسم لعل و عسى ألحق بالمشاركة في التطوير :P


0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .