كيف تحمي توقيعات البرمجيات أمان التطبيقات والكود

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

كيف تحمي توقيعات البرمجيات أمان التطبيقات والكود - %categories

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

ما هو توقيع البرنامج؟

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

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

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

كيفية إخفاء رسالة سرية في العلن

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

الطريقة الذكية هي استخدام “مفتاح” لقفل وفتح هذا السر المشترك. اسمح لي أن أشرح.

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

اقرأ أيضا:  كيف تعمل العملات المعدنية على TikTok

ثم تأخذ رسالتك وتستبدل كل حرف فيها وفقًا للمفتاح. لذا تصبح الرسالة “SECRET” “TFDSFU”. تكتب “TFDSFU” على ملاحظة وتتركها في مكان عام. يمكن لصديقك فك شفرتها لأنه لديه المفتاح الذي تبادلتماه سابقًا. لذا كل ما عليه فعله هو نقل كل حرف إلى مكان واحد في “TFDSFU” وسيحصل على الرسالة الأصلية “SECRET”. أي شخص يتنصت سيرى الهراء فقط لأنه يحتاج إلى المفتاح أولاً لفهم الرسالة.

ما وصفناه للتو هنا هو تقنية تشفير بسيطة للغاية والمفتاح الذي تستخدمه هو شفرة قيصر الأساسية.

كيف ترسل أجهزة الكمبيوتر رسائل سرية عبر الإنترنت

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

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

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

كيف تحمي توقيعات البرمجيات أمان التطبيقات والكود - %categories

ملاحظة
إنني أبسط الكثير هنا، وإلا فسنظل هنا طوال اليوم. إذا كنت تريد التعمق أكثر في كيفية عمل هذا، فانظر إلى تبادل المفاتيح Diffie-Hellman.

هذا هو السيناريو: يوجد كمبيوتر A وكمبيوتر B ومساحة عامة. يبدأ الأمر بمفتاح تم إرساله إلى المساحة العامة (دعنا نسميه المفتاح العام). ينشئ الكمبيوتر A مفتاحًا آخر ويحافظ عليه خاصًا (دعنا نسميه المفتاح الخاص A). يفعل الكمبيوتر B الشيء نفسه.

المفتاح العام متاح للجميع، ولكن يتم الاحتفاظ بالمفتاح الخاص A والخاص B بأمان على أجهزة الكمبيوتر الخاصة بهما.

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

اقرأ أيضا:  أفضل 20 تطبيق Android لمشاهدة البث المباشر للرياضة مجانًا

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

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

الآن يمتلك كلا الحاسوبين نفس المفتاح الذي يمكنهما استخدامه لتشفير وفك تشفير جميع الاتصالات المستقبلية. وإليك الإجابة المبسطة: “يصنع” الحاسوبان نسخة خاصة بهما من المفتاح دون مشاركة المفتاح نفسه.

تسمى هذه العملية برمتها تشفير المفتاح العام. هذا النوع من تشفير المفتاح العام هو الأساس للتوقيعات الرقمية مثل توقيعات البرامج.

كيف يخفي المطورون توقيعًا سريًا في أكوادهم

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

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

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

تجعل التجزئة العمل أسهل

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

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

اقرأ أيضا:  أفضل 5 تطبيقات لتوقيع المستندات على iOS و Android

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

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

من يراقب المراقبين؟

إذا كنت منتبهًا، فقد تكون لاحظت وجود خلل واحد في هذا النظام لم نعالجه بعد.

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

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

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

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

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

قد يعجبك ايضا