سؤال

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

لا يبدو أن mcrypt لديه تطبيق لمثل هذا المخطط.هل يعرف أحد مكتبة (وحدة PHP أو PHP خالصة) يمكنها القيام بذلك؟

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

المحلول

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

وإذا كنت في حاجة إلى وظيفة فك سيد، هل سحب المفتاح المستخدم المشفرة، فك تشفيرها باستخدام المفتاح الخاص الماجستير ومن ثم فك تشفير البيانات الأصلية.

نصائح أخرى

وهناك امتداد PECL لذلك. http://us2.php.net/manual/en/book.gnupg. فب

ويمكنك أيضا استخدام gnupg أداة سطر الأوامر من فب، إذا لم يكن لديك لتكون سريعة جدا: <لأ href = "http://devzone.zend.com/article/1265" يختلط = "نوفولو noreferrer" > http://devzone.zend.com/article/1265

ولم أحاول إما الأسلوب.

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

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

ونضع في اعتبارنا mcrypt ليس تشفير المفتاح العام. مع التشفير بالمفتاح العمومي، قد تكون قادرة على أن تفعل ما تريد، وإن كان. على سبيل المثال، مع PGP / GPG، يمكنك تشفير ملف يمكن لمثل هذا أن ثلاثة مستخدمين مختلفين فك تشفير باستخدام المفاتيح الخاصة بهم، دون معرفة المفاتيح الخاصة لكل منهما. لذلك يمكن أن يكون أحد المستخدمين الظاهري مع كلمة السر الرئيسية التي يمكن فك تشفير كل شيء.

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

فقط للتأكد من الشرط الخاص بك من هذا كلمة السر الرئيسية,

  1. هل من المتوقع أن يتم استخدامه فقط كـ ""encrypt thisالأمر الذي من شأنه أن "يختم" شيئًا ما
    والتي لا يمكن فتحها إلا من قبل شخص يعرف المفتاح الخاص المعني؟أو،
    • هل تتوقع أن يتم فتح أي تشفير في المؤسسة؟
    • أريد فقط أن أتأكد من عدم تفسير صياغتك بهذه الطريقة الثانية
    • عبارتك 'decrypt any dataيبدو خطيرا
      (وغير ممكن/عملي مع تشفير المفاتيح غير المتماثل)

التحديث بناء على التعليق.

  • أنت تخطط ل نسختين من البيانات كل مشفرة بمفاتيح مختلفة
    • نسخة واحدة سيتم تشفيرها باستخدام سيد الجمهور مفتاح
      • يمكن فك تشفيرها مع أي شخص لديه سيد خاص مفتاح
        يجب بعد ذلك تأمين المفتاح الخاص الرئيسي (المفتاح العام ليس بالغ الأهمية)
    • ال النسخة الثانية سيتم تشفيرها باستخدام Rijndael 256 مفتاح
  • الغرض هو السماح للسيد بفك تشفير البيانات عند الحاجة
    وخاصة في غياب الشخص الذي قام بتشفيرها

سيعمل هذا النهج ، سهولة الوصول إلى البيانات من قبل الفرد مع مفتاح Rijndael ،
دون الحاجة إلى تدخل مالك المفتاح الخاص الرئيسي.
وعندما يتم الوثوق بمالك المفتاح الخاص الرئيسي بسرية البيانات.

سيحتاج نظامك إلى تحديث النسخة الرئيسية (حذف النسخة القديمة وإعادة تشفير نسخة جديدة) في كل مرة يقوم فيها المستخدم بتحديث نسخته.


ومع ذلك، إذا بيانات المستخدم موثوقة مع السيد (كما هو الحال بوضوح هنا)،

  • نهج أسهل سيكون إصدار مفتاح Rijndael من السيد
  • يمكن للسيد أن يبقيه مشفرًا باستخدام المفتاح العام الرئيسي نفسه
  • ويمكن بعد ذلك تشفير البيانات باستخدام مفتاح Rijndael الذي تم إصداره فقط
    • سيكون متاحًا دائمًا الوصول إليه باستخدام المفتاح الرئيسي الخاص
      والتي يمكنها فتح مفتاح Rijndael الخاص بالمستخدم

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


للتوقيع على البيانات, ، يمكن أن يكون لدى المستخدم زوج مفاتيح تم إنشاؤه بواسطته.

  • قبل تشفير البيانات باستخدام مفتاح Rijndael الخاص
  • ال المفتاح العام الرئيسي مشفرة مع مفتاح المستخدم الخاص يمكن إلحاقه به
  • ال المفتاح العام للمستخدم مشترك مع السيد (على الأقل)
    سيكون كافيًا للتحقق من أن المستخدم قد قدم البيانات
  • في أسوأ السيناريوهات، إذا كان المستخدم غير متاح وفشل تأكيد المفتاح،
    يمكن الوثوق بالسيد بشأن صحة البيانات - والتي لا يزال من الممكن فك تشفيرها
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top