OpenPGP وGPG
OpenPGP وGPG
الوصف
OpenPGP معيار مفتوح يصف طريقةً لتشفير الرسائل وتوقيعها. أمّا GnuPG (GPG) فهو أشهر تطبيق لذلك المعيار [1]، وهو متاح برخصة برمجيات حرّة.
وخلافًا لـ TLS الذي يركّز على البيانات أثناء حركتها، فإنّ OpenPGP يركّز على البيانات الساكنة. فجلسة TLS نشطة: تنتقل البايتات ذهابًا وإيابًا بينما ينشئ الطرفان القناة الآمنة. أمّا تفاعل OpenPGP فهو ساكن: فالمُرسِل يحسب الرسالة كاملةً مقدّمًا باستعمال معلومات متشارَك بها مسبقًا. وفي الواقع لا يشترط OpenPGP أن يُرسَل أيّ شيء على الإطلاق: فمثلًا يمكن استعماله لتوقيع إصدارات البرمجيّات.
ومثل TLS، فإنّ OpenPGP نظام تشفير هجين. ف للمستخدمين أزواج مفاتيح مكوَّنة من مفتاح
عامّ ومفتاح خاص. وتُستعمل خوارزميات المفتاح العامّ في التوقيع وفي التشفير على
السواء. وتُستعمل خوارزميات المفتاح المتماثل لتشفير متن الرسالة؛ وأمّا المفتاح
المتماثل نفسه فيُحمى باستعمال التشفير بالمفتاح العام (public-key encryption).
وهذا يجعل تشفير رسالة لمستقبلَين متعدّدَين سهلًا أيضًا: فليس إلّا تشفير المفتاح
المتماثل عدّة مرّات.
شبكة الثقة
ولاحِظ أنّ TLS يستعمل عادةً شهادات جذر موثوقة لإثبات أنّ طرفًا بعينه هو من يدّعي أنّه يكون. ولا يعمل OpenPGP بمثل تلك الجذور الموثوقة. بل يعتمد بدلًا من ذلك على نظام يُسمّى شبكة الثقة (Web of Trust): نظام شرف من نوع «صديق الصديق» يعتمد على اللقاءات الماديّة التي يتحقّق فيها الناس من هويّاتهم.
وأبسط الحالات هو مفتاح موثوق مباشرةً. فإذا التقينا شخصًا، أمكننا التحقّق من هويّ كلٍّ منّا للآخر. ربّما نعرف بعضنا بعضًا، أو ربّما نفحص بعض أشكال الهويّة. وعندئذٍ نوقّع كلٌّ منّا مفتاح الآخر.
ولأنّني أعرف أنّ المفتاح لك، فإنّني أعرف أنّك تستطيع قراءة الرسائل المشفَّرة به، وبالمثل في الاتجاه المعاكس. شريطة ألّا تشارك مفتاحك، فإنّني أعرف أنّه أنت وحدك تستطيع قراءة تلك الرسائل. ولا يستطيع أحد أن يستبدل نسختي من مفتاحك، لأنّه لن يستطيع أن يزوّر توقيعي عليه.
وثمّة رابط ثقة مباشر بيننا، وبإمكاننا التحدّث بأمان.
وتكون الحالة أعقد قليلًا عندما يريد صديق لك أن يرسل إليّ رسالة. فنحن لم نلتقِ قطّ: هو لم يوقّع مفتاحي يومًا، وأنا لم أوقّع مفتاحه. لكنّني وقّعت مفتاحك، وأنت وقّعت مفتاحي. وقد وقّعت أنت مفتاح صديقك، ووقّع صديقك مفتاحك. وبإمكان صديقك أن يختار أن يستند إلى إقرارك بأنّني أنا بالتّحديد الشخص الحائز على ذلك المفتاح الذي وقّعته، ثمّ يستعمل ذلك ليتواصل معي بأمان.
ولعلّك تتساءل كيف يمكن لصديقك أن يرى التوقيعات التي وضعتها على مفتاحي. والجواب أنّ المفاتيح والتوقيعات تُرفع عادةً إلى شبكة من خوادم المفاتيح، فتصبح متاحة للعالم بحرّية.
ويمكن توسيع النظام أعلاه إلى طبقات متعدّدة من الأصدقاء. فهو يعتمد إلى حدٍّ بعيد على وجود مجتمعات موصولة بتوقيعات، ولهذا تضمّ كثيرٌ من فعاليات المجتمعات حفلات توقيع مفاتيح، حيث يوقّع الناس مفاتيح بعضهم بعض. وفي الفعاليات الكبيرة، مثل مؤتمرات البرمجة الدولية، يكون هذا النظام فعّالًا إلى حدٍّ كبير. أمّا الضعف الرئيس في هذا النظام فهو «جزر» الثقة: أفراد أو مجموعات صغيرة لا تصلهم بأيّ صلة ببقية الشبكة.
وبالطبع، فإنّ هذه ليست سوى الطريقة الافتراضية لاستعمال OpenPGP. فلا شيء يمنعك من شحن مفتاح عامّ معيّن كجزء من حزمة برمجيّة، واستعمال ذلك لتوقيع الرسائل أو للتحقّق منها. وهذا يماثل ما قد ترغب في شحن مفتاح مع شهادة عميل، أو مع شهادة جذر موثوقة مخصّصة، مع TLS.
ينفّذ GPG 2 أيضًا S/MIME، وهو أمر لا علاقة له بمعيار OpenPGP. وهذا الفصل لا يتناول سوى OpenPGP. ↩︎