سؤال

هذا السؤال لديه بالفعل إجابة هنا:

هل هناك طريقة جيدة لشحن مفاتيح AES مع التطبيق ، ولكن لا تزال تجعلها آمنة بما فيه الكفاية؟

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

أعلم أن Java يوفر آلية تسمى Key Store ، ولكن AFAIK ، إذا تم إلغاء تنظيم الكود ، يمكن فتح هذا المتجر الرئيسي أيضًا؟

اي فكرة؟

شكرا لك مقدما!

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

المحلول

لا يمكنك الوثوق بتطبيقك للحفاظ على سلامة المفتاح. لا يمكنك الوثوق بأن التطبيق لك حقًا.

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

إذا كان التطبيق "يحتاج" مفتاحًا ، فسيتم إغراء أن يكون كل مستخدم (أو ترخيص) ببساطة مفتاحًا خاصًا وشهادة.

يمكنك بعد ذلك استخدام فحص التوقيع وتبادل المفاتيح Diffie-Hellman لإعطاء "كل مثيل مرخص لتطبيقك مفتاحًا من خادم متصل بالشبكة في وقت التشغيل. هذا من شأنه أن يتيح لك التأكد من تشغيل مثيل واحد فقط من الترخيص مرة واحدة.

نصائح أخرى

يجب عليك وصف التطبيق بشكل أفضل.

إذا كنت تحاول الحفاظ على المفتاح آمنًا تمامًا من مالك الكمبيوتر الذي يتم تثبيت البرنامج عليه ... لا يمكنك ذلك. ويجب ألا تحاول. إنه جهازهم ولهم الحق في معرفة كل شيء عليه.

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

إذا كان التطبيق يستخدم المفتاح ، فسيكون المفتاح في الذاكرة في مرحلة ما. يمكن للمستخدم/المهاجم المتطور بما يكفي رؤيته بعد ذلك. تصحيح الأخطاء ونقطة التوقف في اللحظة المناسبة هو كل ما يحتاجون إليه.

لا ، يعد نقل مفاتيح التشفير الخاصة فكرة سيئة.

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

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

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

لا ينبغي أن تكون السلامة من المستخدم هي الهدف.

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