ما هي أفضل طريقة للحفاظ على كلمات السر شكلي ، دون الحاجة لهم أيضا متاحة بسهولة إلى عارضة الإنسان القارئ ؟

StackOverflow https://stackoverflow.com/questions/258299

  •  06-07-2019
  •  | 
  •  

سؤال

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

سؤالي ثم ما هي أفضل طريقة للحفاظ على كلمات السر شكلي دون ذلك أيضا متاحة بسهولة إلى عارضة الإنسان القارئ ؟

تحرير فقط للتوضيح DB server Windows Server 2003, تشغيل MSSQL 2005.

PS:أنا لا أرى أي أسئلة هذه التكرارات ، ولكن إذا كان هناك من فضلك لا تتردد في إغلاق هذا واحد.

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

المحلول

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

تذكر أنك لا تحتاج إلى استخدام نفس الحماية لكل عميل آخر.بضع خطوات:-

  1. إنشاء قاعدة بيانات مختلفة لحسابات مختلفة أنظمة الوصول إلى قاعدة البيانات الخاصة بك
  2. تحد من إمكانية الحصول على قاعدة البيانات فقط ما تحتاج إلى استخدام الخاص بك يحمل في ثناياه عوامل قاعدة بيانات المنح
  3. متجر الثلاثي DES (أو أيا كان) مفتاح داخل كلمة مدير فئة على قاعدة البيانات الخاصة بك.استخدم هذا لفك تشفير مشفر قيمة في خصائص الملف.

لدينا أيضا يعتبر وجود التطبيق الفوري من أجل تمرير العبارة على بدء التشغيل ولكن لم تنفذ هذه كما يبدو الألم و موظفي العمليات ثم تحتاج إلى معرفة كلمة المرور.ربما أقل أمنا.

نصائح أخرى

دعونا نفترض المشتركة التالية السيناريو:

  • يمكنك استخدام نفس رمز قاعدة لجميع بيئات قاعدة التعليمات البرمجية لديها قاعدة بيانات كلمات السر لكل بيئة.

  • الموظفين (سيسادمينس ، تكوين المديرين) أن الوصول إلى الإنتاج الخاص بك ملقم التطبيق يسمح أعرف إنتاج قاعدة بيانات كلمات السر و لا أحد آخر.

  • كنت لا تريد أي شخص من الوصول إلى شفرة المصدر أن تعرف ما هي إنتاج كلمات المرور.

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

إذا كنت تستخدم جافا نلقي نظرة على هذا أكثر الأمثلة الملموسة.على سبيل المثال يستخدم الربيع Jasypt.وأنا على ثقة من أن شيئا مثل هذا يمكن أن يكون استقراء بيئات أخرى مثل .صافي

في مكان العمل لدينا نظاما جميع كلمات السر المشفرة (باستخدام DES الثلاثي أو ما كنا نستخدم في ذلك الوقت).كلمات السر غالبا ما يتم تخزينها في خصائص الملفات (هذا كان في نظام جافا).

عندما تكون كلمة السر في حاجة إلى تغيير ، يمكننا ببساطة استخدام "!عادي" كقيمة ثم لدينا كود تحميل عنه ، تشفيرها وتخزينها المشفرة القيمة في خصائص الملف.

هذا يعني أنه من الممكن تغيير كلمة السر من دون معرفة ما القيمة الأصلية كان - لست متأكدا إذا كان هذا هو نوع من الشيء الذي كنت تسأل عن!

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

إذا كان الأمر كذلك, وهنا ما يمكنك القيام به:

1) تغيير أي جانب العميل التطبيقات التي تربط مباشرة إلى DB أن تذهب من خلال الخدمة.(إذا كانت لديك للاتصال مباشرة, ثم على الأقل نعطيهم الخطوة الأولى "الحصول على كلمة السر" من الخدمة ، ثم يمكنهم الاتصال مباشرة).

2) تخزين كلمات المرور في شبكة الإنترنت.ملف التكوين (إذا اخترت القيام به .صافي خدمات ويب) ثم تشفير "سلاسل اتصال" قسم من الملف.

لا تستخدم كلمات السر خادم إلى خادم المصادقة عادة ما يمكن أن يؤديها باستخدام ملف مفتاح أو شهادة العميل أو بطريقة أخرى غير كلمة المرور.

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

بروس شنير صفحة على السمكة المنتفخة

مقالة ويكيبيديا على السمكة المنتفخة

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

مصادقة NTLM أو LDAP القائم (Active Directory) المصادقة يجب أن تكون متاحة لك مع القليل من الجهد.هذا سوف يسمح لك لاستخدام "مصادقة windows" عبر التطبيقات.

فإنه قد يعني قليلا من الهجرة الخاص بك موظفي العمليات ، ولكن SSO عن مجموعة من التطبيقات هو لطيف.

نعم أنا أتفق مع خيار تخزين (المملحة) التجزئات.أنصح (المملحة) SHA256 تجزئة كلمة المرور المخزنة في قاعدة البيانات.لا تنسى أيضا فرض تأمين قواعد كلمة المرور.

باستخدام التشفير ليست فكرة جيدة.إذا كان شخص ما compromize مفتاح يستطيع فك تشفيرها.استخدام تجزئة algorith مع الملح لتخزين paswords.خوارزميات التجزئة هي طريقة واحدة لذلك لا يمكن عكسها.ولكن هم عرضة هجمات القاموس حتى استخدام الملح (concatane نص عادي مع شيء طويل ومطول من تجزئة ذلك).بل أيضا حماية قاعدة البيانات من الهجمات الداخلية.

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