كيف تعمل مفاتيح API والمفاتيح السرية؟ هل سيكون ذلك آمنًا إذا اضطررت إلى تمرير واجهة برمجة التطبيقات والمفاتيح السرية إلى تطبيق آخر؟

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

سؤال

لقد بدأت للتو في التفكير في كيفية عمل مفاتيح API والمفاتيح السرية. قبل يومين فقط قمت بالتسجيل في Amazon S3 وقمت بتثبيت البرنامج المساعد S3fox. لقد طلبوا مني كل من مفتاح الوصول الخاص بي ومفتاح الوصول السري ، وكلاهما يتطلب مني تسجيل الدخول.

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

كيف من المفترض أن تعمل المفاتيح السرية ومفاتيح API؟ ما مدى سريةهم؟ هل هذه التطبيقات التي تستخدم المفاتيح السرية تخزينها بطريقة أو بأخرى؟

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

المحلول

توضيح بشكل أساسي ما تم تحديده هنا.

إليك الطريقة التي تعمل بها: دعنا نقول أن لدينا وظيفة تأخذ رقمًا من الصفر إلى تسعة ، وتضيف ثلاثة ، وإذا كانت النتيجة أكبر من عشرة ، تطرح عشرة. لذلك F (2) = 5 ، F (8) = 1 ، إلخ. الآن ، يمكننا عمل وظيفة أخرى ، نسميها f '، والتي تعود إلى الوراء ، عن طريق إضافة سبعة بدلاً من ثلاثة. f '(5) = 2 ، f' (1) = 8 ، إلخ.

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

يسمى أخذ المدخلات وتطبيق وظيفة أحادية الاتجاه "تجزئة" المدخلات ، وما تخزنه Amazon على نظامهم هو "تجزئة" للمفتاح السري. SHA1 هو مثال على هذا النوع من وظيفة "الاتجاه الواحد" ، كما أنه يصلب الهجمات.

ال وظيفة HMAC يبني على وظائف التجزئة المعمول بها لاستخدام مفتاح معروف لمصادقة سلسلة من النص. يعمل مثل هذا:

  • تأخذ نص طلبك ومفتاحك السري وتطبيق وظيفة HMAC.
  • يمكنك إضافة رأس المصادقة هذا إلى طلبك وإرساله إلى Amazon.
  • تبحث Amazon عن نسختها من المفتاح السري ، والنص الذي أرسلته للتو وتطبيق وظيفة HMAC.
  • إذا كانت النتيجة تتطابق ، فإنهم يعرفون أن لديك نفس المفتاح السري.

الفرق بين هذا و PKI هو أن هذه الطريقة هي مريح, ، السماح بحد أدنى لعدد التبادلات بين نظامك وخوادم Amazon.

أليس هذا نفس الشيء في الأساس مثل سؤالني عن أرقام بطاقات الائتمان أو كلمة المرور وتخزين ذلك في قاعدة البيانات الخاصة بهم؟

نعم ، على الرغم من أن الضرر الذي يمكن أن يحدثه شخص ما باستخدام S3 يقتصر على استنزاف حسابك.

ما مدى سريةهم؟ هل هذه التطبيقات التي تستخدم المفاتيح السرية تخزينها بطريقة أو بأخرى؟

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

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

نصائح أخرى

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

من الناحية المثالية ، إذا كانت قاعدة بيانات API الخاصة بـ Amazon حيث يتم اختراقها ، فسيحتوي المهاجم على قائمة بالمفاتيح العامة وسيكون قادرًا على الوصول إلى واجهة برمجة تطبيقات المستخدم باستخدام هذه المعلومات. ومع ذلك ، لا يتم وضع الأنظمة المثالية دائمًا ولا أعرف على وجه اليقين ما إذا كانت Amazon تحمي من ناقل الهجوم هذا ، لكن يجب أن تكون كذلك.

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

صممت AWS خوارزمية المصادقة المخصصة الخاصة بها. تم إصدار V4 في عام 2014. تم تحديد التفاصيل هنا: طلبات المصادقة (إصدار AWS Signature 4) . النقطة الرئيسية هي أن الطلب لا يتم توقيعه مع السر نفسه ، ولكن مع مفتاح التوقيع الذي يتم إنشاؤه باستخدام السر. كما أنه يستخدم HMAC-SHA256 للتوقيع.

Signature Generation

سيكون استخدام المفاتيح غير المتماثلة أكثر أمانًا لأن AWS لن يقوم بتخزين مفتاح عام بدلاً من السر ، والذي يتم تخزينه من قبل كل من المستخدم و AWS.

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