سؤال

أنا بحاجة إلى قاعدة بيانات مخزن كلمات المرور في ملف التكوين.لأسباب واضحة ، أريد أن تشفير لهم (ويفضل مع AES).لا أحد يعرف دلفي التنفيذ التي من السهل أن أعرض في المشاريع القائمة مع > 10 ، 000 الخطوط تاريخيا نمت (الصنف!) شفرة المصدر ؟

التوضيح:سهلة يعني إضافة وحدة المشروع ، مضيفا ماكس.5 أسطر من التعليمات البرمجية حيث config هو قراءة وينبغي القيام به معها.لا ينبغي أن تأخذ أكثر من 15 دقيقة.

توضيح آخر:كلمة المرور المطلوبة من أجل إنشاء اتصال db, عدم دعم إدارة المستخدم مخطط للتطبيق.وذلك باستخدام التجزئة لا يساعد.Db محرك الشيكات إذا كانت كلمة المرور صحيحة ، وليس التطبيق.

هل كانت مفيدة؟

المحلول

لقد الثانية التوصية ديفيد بارتون DCPCrypt المكتبة.لقد استخدمت بنجاح في العديد من المشاريع و لن تستغرق أكثر من 15 دقيقة بعد قراءة أمثلة الاستخدام.فإنه يستخدم رخصة MIT, لذلك يمكنك استخدامه بحرية في المشاريع التجارية وغير ذلك.DCPCrypt بتنفيذ عدد من الخوارزميات ، بما في ذلك ريجنديل ، وهو AES.

هناك العديد من googlable بذاتها (وحدة واحدة) تطبيقات جدا - السؤال هو أي واحد تثق به, إلا إذا كنت على استعداد للتحقق من correctedness معين مكتبة نفسك.

نصائح أخرى

نموذجي المصادقة الأغراض, أنت لا تحتاج إلى تخزين كلمات المرور ، تحتاج فقط إلى التحقق من إذا كانت كلمة المرور التي تم إدخالها من قبل المستخدم هو الصحيح.إذا كان هذا هو الحال ثم يمكنك فقط متجر تجزئة التوقيع (على سبيل المثالMD5) بدلا ومقارنتها مع توقيع دخلت كلمة المرور.إذا كان توقيعين تتطابق مع إدخال كلمة المرور الصحيحة.

تخزين كلمات السر المشفرة قد تكون خطيرة لأنه إذا كان شخص ما يحصل "سيد" كلمة السر يمكن استرداد كلمات السر لجميع المستخدمين.

إذا كنت ترغب في استخدام MD5 يمكنك استخدام MessageDigest_5.با الذي يأتي مع دلفي (على الأقل يتم تضمينه مع نسخة دلفي 2007).هناك أيضا تطبيقات أخرى مع دلفي البرمجية المصدر يمكنك الاختيار من بينها.

أعتقد Turbopower الامانات ممتازة مكتبة criptography:

http://sourceforge.net/projects/tplockbox/

أنا لا أعرف إذا كان مما يستخدم ولكن من السهل جدا للاستخدام ويمكنك تشفير سلسلة مع 5 أسطر من التعليمات البرمجية.كل ذلك هو في الأمثلة.

TOndrej وقد النهج الصحيح.يجب أن لا تخزن كلمة المرور باستخدام عكسها سايفر.كما أشار بشكل صحيح ، إذا كان "سيد" مفتاح أي خطر ، فإن النظام بأكمله للخطر.استخدام غير عكسها التجزئة ، مثل MD5, أكثر أمنا و يمكنك تخزين تجزئته القيمة كما نص واضح.ببساطة تجزئة كلمة المرور المدخلة ومن ثم مقارنة ذلك مع تخزين التجزئة.

لطالما المستخدم Turbopower الامانات.أنه يعمل بشكل جيد, و من السهل جدا للاستخدام.أنا فعلا استخدام هذا بالضبط نفس الشيء, تخزين كلمة المرور في ملف config ملف نصي.

http://sourceforge.net/projects/tplockbox/

TurboPower الامانات 3 (http://lockbox.seanbdurkin.id.au/) يستخدم التلقائي التمليح.أوصي ضد بارتون DCPCrypt لأن الرابع هو غير المملحة.في بعض الحالات هذا خطير جدا sercurity عيب.

على عكس سابق commment, LB3 تنفيذ AES هو متوافقة تماما مع معيار.

لقد استعملت هذا مكتبة, حقا سريعة لإضافة.ولكن ويكي يظهر بعض الحلول.

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

ما تريده هو واحد-طريقة تجزئة.

مجرد تذكير.

إذا كنت لا تحتاج إلى التعامل مع الآخرين سرداب يبس ، ثم DCP أو الامانات أن القيام بهذه المهمة.

ولكن

إذا كنت بحاجة إلى أن تكون متوافقة تماما مع rinjdael المواصفات ننسى مجانا مكونات انهم نوعا ما "رديء" في معظم الوقت.

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

ما يجب عليك القيام به هو متجر التجزئة من قبل المختار (السري) قيمة الملح + كلمة المرور.I. e., سلسل الملح و كلمة المرور ، تجزئة النتيجة ، وتخزين هذه التجزئة.عند مصادقة هل نفس - سلسل الملح قيمة الموفر من قبل المستخدم كلمة المرور, تجزئة, ثم تحقق المساواة.وهذا يجعل قوس قزح الجدول هجمات غير مجدية.

بالطبع, إذا كان المستخدم إرسال كلمات المرور عبر الشبكة (على سبيل المثال ، إذا كنت تعمل على ويب أو ملقم-عميل التطبيق), ثم يجب أن لا ترسل كلمة المرور في نص واضح عبر لذا بدلا من تخزين التجزئة(الملح + كلمة السر) يجب تخزين وتحقق ضد تجزئة(الملح + تجزئة(كلمة السر)) و يكون العميل الخاص بك قبل تجزئة الموفر من قبل المستخدم وكلمة المرور لإرسال هذا واحد عبر الشبكة.هذا يحمي المستخدم الخاص بك وكلمة المرور وكذلك ، ينبغي على المستخدم (كما تفعل الكثير) إعادة استخدام نفس كلمة المرور لأغراض متعددة.

أنا أوصي باستخدام نوع من الملح.لا مخزن سرداب(كلمة السر) في ملف التكوين, ولكن بدلا من هذا المتجر crypt(الملح + كلمة المرور).مثل "الملح" يمكنك استخدام ما هو المطلوب لفتح قاعدة البيانات ، على سبيل المثال.db_name+user_name.عن سرداب وظيفة يمكنك استخدام بعض معروف algortithm كما AES, فكرة, DES, أو شيء بسيط مثل xoring كل بايت مع بايت من السلسلة, هذه السلسلة سوف يكون المفتاح الخاص بك.لجعله أكثر مختلفة لحل يمكنك استخدام بعض بايت عشوائي ، وتخزينها.

حتى أن المتجر:

  1. init_str := 5 بايت عشوائي
  2. new_password := ملح + كلمة المرور // الملح := db_name + user_name
  3. crypted_password = xor_bytes(init_str + new_password ، keyphrase')
  4. crypted_password := init_str + crypted_password
  5. متجر crypted_password في التكوين ، كما أن هذا سوف يكون بايت يمكنك hexify أو base64 ذلك

و الاتصال:

  1. تقسيم قراءة البيانات من التكوين في init_str و crypted_password
  2. new_password = xor_bytes(init_str + crypted_password ، keyphrase')
  3. كلمة المرور := إزالة (db_name + user_name) من new_password

نيك بالطبع صحيح - أفترض أنك تعرف ما تقومون به عندما تقول أنك تريد أن تنفق كل 15 دقيقة على تنفيذ الحل الأمني.على DCPCrypt المكتبة أيضا بتنفيذ عدد من خوارزميات التجزئة إذا قررت أن تذهب إلى أن (أفضل) الطريق.

اثنين من الحلول:

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

تحتاج إلى تخزينها في مكان المستخدم الحالي فقط وقد acccess أيضا.

وهناك أساسا طريقتان للقيام بذلك:

  1. تخزينه في EFS تشفير الملف.
  2. تخزينه في تأمين التخزين المحلي.

يستخدم Internet Explorer 2.ولكن إذا كان يمكنك الحصول على الوصول المحلي, يمكنك فك تشفير كل من 1.و 2.إذا كان لديك الحق في سيد مفتاح الخوارزمية (على سبيل المثال ، iepv يمكن الحصول على Internet Explorer كلمات السر).

لذلك:
إذا كان يمكنك تجنب تخزين كلمات السر.
البحث عن بدائل (مثل مصادقة Windows, دليل الخدمات, الخ) الأولى.

--يروين

بسيطة ولكن بالنسبة لمعظم التطبيقات قوية بما فيه الكفاية نظام قدمها هذا Embarcadero التجريبي:https://edn.embarcadero.com/article/28325

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top