لقد
كان مهندسو التشفير
يصرخون حول أوجه القصور في PGP منذ عقود . عندما يسمع المطورين العاديين هذا ، فإنهم مندهشون للغاية. كيف ، PGP ليست جيدة؟ لماذا ، إذن ، ينصح باستخدامه؟ الجواب هو ، PGP ليست في الحقيقة جيدة ، ويجب ألا يوصى بها أبدًا لأي شخص. يجب أن تختفي.
كما سترى قريبًا ، لدى PGP الكثير من المشكلات. إذا لم تدخل في التفاصيل ، فإن السبب الرئيسي هو أن البرنامج تم تطويره في التسعينيات ، قبل ظهور التشفير الحديث الخطير. لن يقوم أي مهندس تشفير مختص اليوم بتطوير نظام بهذا الشكل ولن يتسامح مع معظم عيوبه في أي نظام آخر. تخلى cryptographers الجادون عن PGP ولم يعد يقضون وقتًا فيه (مع بعض
الاستثناءات البارزة ). لذلك ، تظل المشكلات المعروفة في PGP دون حل لأكثر من عشر سنوات.
مذكرتان صغيرتان. أولاً ، كُتب المقال للمهندسين وليس للمحامين والناشطين. ثانياً ، يمكن أن تعني كلمة "PGP" الكثير من الأشياء ، من معيار OpenPGP إلى تنفيذ المرجع في GnuPG. نستخدم مصطلح "PGP" لكل هذا.
المشاكل
تعقيد سخيف
لأسباب لا أحد يفهمها الآن ، تعتمد PGP على الحزمة. رسالة PGP (في ملف .asc) هي أرشيف للحزم المكتوبة. توجد ثماني طرق مختلفة على الأقل لترميز طول الحزمة ، اعتمادًا على ما إذا كنت تستخدم حزم التنسيق "الجديدة" أو "القديمة". تحتوي حزم "التنسيق الجديد" مثل BER على طول متغير (حاول كتابة تطبيق PGP ، ويبدو أن معيار الترميز ASN.1 حلوٍ لك). قد تحتوي الحزم على حزم فرعية. تتداخل بعض خيارات الحزمة مع بعضها البعض. يرجع الهجوم الأخير على خادم المفاتيح إلى حقيقة أنه بسبب هذا التنسيق غير المسؤول ، فإن تحليل مفتاح GnuPG
يترك بطريق الخطأ في الوقت التربيعي .
وهذا مجرد ترميز. النظام الحقيقي هو أكثر تعقيدا بكثير. هناك مفاتيح والمكونات. معرفات المفاتيح وخوادم المفاتيح والتوقيعات الرئيسية. المفاتيح مخصصة للتوقيع وفقط للتشفير. العديد من سلاسل المفاتيح. إلغاء الشهادة. ثلاثة صيغ ضغط مختلفة. أننا لم نصل بعد إلى دعم البطاقات الذكية.
تصميم سكين الجيش السويسري
إذا كنت تضيع في الغابة و ... لا أعرف ، على سبيل المثال ، تحتاج إلى تقليم التلابيب على الجينز - نعم ، من المريح جدًا أن يكون لديك مقص على سكينتك. ولكن من أجل العمل الجاد ، لن يستخدم أحد هذه المقصات بانتظام.
سكين الجيش السويسري يفعل الكثير من الأشياء ، وكل شيء سيء. PGP هي أداة متواضعة للغاية لتوقيع المستندات ؛ فهي تشفر بشكل سيء نسبيًا بكلمات المرور وتعمل بشكل سيء للغاية مع المفاتيح العامة. PGP ليست جيدة بشكل خاص لنقل الملفات بشكل آمن. هذه طريقة خرقاء لتوقيع الحزم. انها ليست جيدة جدا لحماية النسخ الاحتياطية. هذه طريقة خطيرة للغاية لتبادل الرسائل الآمنة.
مرة أخرى في عصر MC Hammer ، عندما ظهر PGP ، كان "التشفير" شيئًا مميزًا بحد ذاته ؛ كانت هناك أداة واحدة لإرسال الملفات والنسخ الاحتياطية لتشفير الملفات وتوقيعها. التشفير الحديث لا يعمل هكذا ، نحن بحاجة إلى أدوات متخصصة. يختلف تشفير الرسائل الآمنة عن تشفير النسخ الاحتياطي أو توقيع الحزم.
مستنقع التوافق الخلفي
PGP تسبق التشفير الحديث وعفا عليها الزمن للغاية خلال هذا الوقت. إذا كنت محظوظًا ، فسيحتوي GnuPG افتراضيًا على مفتاح RSA 2048 بت ، و CAST5 64 بت في CFB ومجموع اختباري لـ OpenPGP MDC (حول هذا الأمر لاحقًا). إذا تم التشفير باستخدام كلمة مرور بدلاً من مفتاح عام ، فسيقوم بروتوكول OpenPGP بإنشاء خوارزمية إنشاء مفتاح S2K لـ PGP. بعبارة ملطفة ، هذه ليست هي البدائية التي سيختارها مهندس التشفير لنظام حديث.
لقد تعلمنا الكثير منذ أن قام
الطالب الذي يذاكر كثيرا ستيف أوركل بتزيين وقت العرض على قناة ABC. لقد تعلمنا أنه يجب مصادقة النصوص المشفرة (وتجنب وضع CFB) ، وأن الأصفار ذات الكتلة 64 بت سيئة ، وأن RSA غير مثالي ، وأن الجمع بين الضغط والتشفير أمر خطير ، ويجب إنشاء KDFs بشكل صارم في الوقت والذاكرة.
بغض النظر عن ما يقوله OpenPGP RFC ، من المحتمل أنك لا تفعل أي شيء من هذه القائمة إذا كنت تستخدم PGP ، ومن المستحيل معرفة متى سيتم تنفيذ التوصيات. خذ الأصفار AEAD: الافتراضي سيكويا PGP في الصدأ إلى وضع AES-EAX AEAD. هذا رائع لكن الآن لا أحد يستطيع قراءة رسائلهم ، لأن معظم إصدارات PGP لا تعرف وضع EAX ، وهذا ليس رائعًا. في كل نظام تشفير سيء ، تكون النتيجة النهائية هي امتداد RFC يدعم المنحنيات الإهليلجية أو AEAD ، حتى يتمكن مؤيدوها من الصراخ في المنتديات التي يدعمون التشفير الحديث. RFC لا يهم: الإعدادات الحقيقية فقط. اخترعنا تشفيرًا مصدقًا منذ 20 عامًا ، وسيتوقف PGP قريبًا ؛ أعذار كافية.
إما أن يكون لديك توافق قديم مع برنامج التسعينيات ، أو لديك تشفير جيد ؛
لا يمكنك الحصول على حد سواء .
UX سيئة
من الصعب صياغتها بشكل أفضل من Ted Unangst:
قبل بضع سنوات ، أجريت دراسة قابلية استخدام PGP ، حيث تم تعيين مجموعة من الخبراء التقنيين في غرفة بها كمبيوتر وطُلب منهم تكوين PGP. بعد ساعتين ، لم يستجب أحد منهم.
إذا كنت بحاجة إلى بياناتك التجريبية لتأكيد ذلك ، فإليك تجربة يمكنك القيام بها: العثور على محام بعيد عن أجهزة الكمبيوتر ومساعدته على تثبيت Signal عبر الهاتف. ربما سيتغلب على الهستيريا. الآن حاول القيام بذلك مع PGP.
أسرار طويلة الأجل
يطلب PGP من المستخدمين الحفاظ على مفتاح الجذر مرتبطًا بهويتهم إلى الأبد تقريبًا. يعد إنشاء المفاتيح وتبادلها أمرًا مرهقًا من خلال "أطراف التوقيع الرئيسية" و "شبكة الثقة" ، حيث تعتمد المفاتيح على المفاتيح الأخرى.
المفاتيح طويلة الأجل غير مريحة دائمًا تقريبًا . إذا تابعت استخدام المفتاح ، فسيصبح في النهاية عامًا. من وجهة نظر تصميم نظام كفء ، من الضروري التقليل إلى أدنى حد من الضرر والتأكد من أن المستخدم لا يتردد لمدة ثانية عند التفكير في إنشاء مفتاح جديد ، إذا كان هناك بعض المخاوف على الأقل بشأن أمان المفتاح الحالي.
سوف يجيب مشجعو PGP على الفور: "لهذا السبب عليك الاحتفاظ بالمفاتيح على Yubikey." ولكن وفقًا لتقدير تقريبي سريع ، لا يستخدم أي شخص تقريبًا Yubikeys باهظة الثمن ، ومن غير المرجح أن يتغير هذا في المستقبل (يمكننا بالكاد نشر U2F ، ويمكن استخدام هذه المفاتيح). لا يمكننا قبول أنظمة التشفير السيئة فقط لجعل Unex المهووسين أكثر راحة في اللعب بألعابهم.
مصادقة مكسورة
مزيد من المعلومات حول البدائية القديمة لـ PGP: في عام 2000 ، أدركت مجموعة عمل OpenPGP أنه من الضروري مصادقة النص المشفر وأن توقيعات PGP لم تفعل ذلك. لذلك ، اخترع OpenPGP
نظام MDC : تقوم رسائل PGP مع MDC بإرفاق النص العادي SHA-1 بالنص العادي نفسه ، والذي يتم تشفيره (كالمعتاد) في وضع CFB.
إذا كنت تتساءل عن كيفية تعامل PGP مع هذا عندما تستخدم الأنظمة الحديثة مخططات AEAD معقدة نسبيًا (نظرًا لأنها لا تستطيع إرفاق SHA-1 بالنص العادي فقط) ، فهذا سؤال جيد. كيف تصفون هذا الكارتون؟ يمكن محو PGP MDC من الرسائل - يتم تشفيرها بطريقة تجعل من السهل جدًا قطع البايتات الـ 22 الأخيرة من النص المشفر. للحفاظ على التوافق مع الرسائل القديمة غير الآمنة ، قدم PGP نوعًا جديدًا من الحزمة يشير إلى الحاجة إلى التحقق من MDC. إذا كنت تستخدم النوع الخطأ ، فلن يتم فحص MDC. حتى إذا قمت بذلك ، فإن تنسيق حزمة SEIP الجديد قريب إلى حد ما من تنسيق SE غير الآمن ، مما قد يؤدي إلى خداع المستلم في خفض التشفير ؛
تريفور بيرين قد خفضت SEIP إلى 16 بت فقط من الأمن .
أخيرًا ، حتى لو سارت الأمور على ما يرام ، فإن تطبيق مرجع PGP سينتج نصًا غير مصادق عليه عند الطلب ،
حتى إذا كانت MDC غير متطابقة .
هويات غير متناسقة
PGP هو تطبيق ومجموعة من عمليات التكامل مع التطبيقات الأخرى وتنسيق ملف وشبكة اجتماعية وثقافة فرعية.
PGP تطرح مفهوم هوية التشفير. يمكنك إنشاء مفتاح وحفظه في سلسلة مفاتيح وطباعة بصمة الإصبع على بطاقة عمل ونشره على خادم المفاتيح. قمت بتسجيل مفاتيح شخص آخر. وهي ، بدورها ، قد تعتمد أو لا تعتمد على توقيعاتك للتحقق من المفاتيح الأخرى. يحاول بعض الأشخاص الاجتماع مع مستخدمي PGP الآخرين شخصيًا لتبادل المفاتيح والتسجيل بأمان أكبر في "شبكة الثقة" هذه. يقوم البعض الآخر بتنظيم حفلات التوقيع الرئيسية. إذا كنت تتخيل كل هذا النشاط ، يصبح من الواضح مدى صعوبة تحويل مراوح PGP المخصصة إلى التقنيات الجديدة.
ولكن هذا النظام برمته لا يعمل في الممارسة. لا شبكة ثقة مع توقيعات رئيسية ، ولا خوادم رئيسية ، ولا أطراف. يثق الأشخاص العاديون في كل شيء يشبه مفتاح PGP ، بغض النظر عن مصدره - كيف لا يثقون فيه ، حتى لو كان من الصعب على الخبير صياغة كيفية تقييم المفتاح؟ لا يثق الخبراء بالمفاتيح التي لم يتلقوها شخصيًا. يعتمد الجميع على خدمات التوزيع الرئيسية المركزية. PGP آليات التوزيع الرئيسية هي السيرك.
تسرب البيانات الوصفية
لثانية واحدة ، ننسى مشكلة البريد الإلكتروني (سنعود إلى هذا لاحقًا). PGP نفسه يمكن أن تسرب البيانات الوصفية. في الاستخدام العادي ، ترتبط الرسائل بشكل مباشر مع معرّفات المفاتيح المرتبطة بمعرف المستخدم عبر شبكة ثقة PGP. بالإضافة إلى ذلك ، تستخدم نسبة كبيرة إلى حد ما من مستخدمي PGP خوادم رئيسية تصدرها بنفسها إلى الشبكة التي يتبادلها مستخدمو PGP مع الرسائل.
لا سرية مباشرة
مثال على ذلك: تشفير الرسائل الآمنة يتطلب سرية إلى الأمام. السرية المباشرة تعني أنه إذا تلقى أحد المهاجمين مفتاحك ، فسيظل غير قادر على قراءة الرسائل السابقة. في التشفير الحديث ، نفترض أن الخصم يكتب كل شيء لتخزين لانهائي. معارضو PGP تشمل حكومات العالم. بالطبع ، البعض منهم يفعل هذا. ضد المعارضين الجادين ، فإن اختراق التشفير دون سرية مباشرة ليس سوى مسألة وقت.
لضمان السرية المباشرة في الممارسة العملية ، عادةً ما تحتفظ بمفتاحين سريين: مفتاح جلسة قصيرة الأجل ومفتاح موثوق به طويل الأجل. مفتاح الجلسة سريع الزوال (عادةً ما يكون منتج تبادل DH) ، والمفتاح الموثوق به يوقع عليه ، بحيث لا يمكن للشخص في الوسط استخدام مفتاحه الخاص. من الناحية النظرية ، يمكن تحقيق السرية المباشرة باستخدام أدوات PGP. بالطبع ، لا أحد تقريبا يفعل هذا.
مفاتيح الفأس
يدل OpenBSD على أن المفتاح العمومي عبارة عن سلسلة Base64 قصيرة بما يكفي لتناسب منتصف الجملة في رسالة بريد إلكتروني ؛ مفتاح خاص ليس تنسيق تبادل هو مجرد سلسلة أو نحو ذلك. والمفتاح العمومي PGP هو مستند Base64 العملاق. إذا كنت تستخدمها كثيرًا ، فربما تكون معتادًا على لصقها في مرفق بدلاً من لصقها في الرسائل حتى لا تتلفها. يتم إنشاء مفتاح signify بواسطة خوارزمية Ed25519 المتقدمة و PGP بواسطة RSA الأضعف.
قد تعتقد أنه لا يهم ، لكن هذا مهم ؛ أوامر من حجم أكثر الناس استخدام SSH وإدارة مفاتيح SSH من PGP. مفاتيح SSH تافهة للتعامل معها ؛ PGP - لا.
اتفاقية
تدعم PGP المنحنيات ElGamal و RSA و NIST p و Brainpool و Curve25519 و SHA-1 و SHA-2 و RIPEMD160 و IDEA و 3DES و CAST5 و AES. هذه ليست قائمة كاملة لما يدعمه PGP.
إذا تعلمنا خلال العشرين سنة الماضية ثلاثة أشياء مهمة حول التشفير ، اثنان منها على الأقل ، فإن المصالحة والتوافق شران. وكقاعدة عامة ، تظهر أوجه القصور في أنظمة التشفير في التطبيقات ، بدلاً من البدائية ، ويزيد توافق التشفير الواسع من عدد التطبيقات. تسعى البروتوكولات الحديثة ، مثل TLS 1.3 ، إلى التخلص من التوافق مع العناصر القديمة مثل RSA ، بدلاً من إضافتها. تدعم الأنظمة الأحدث
مجموعة واحدة فقط من الأوليات ورقم إصدار بسيط. في حالة فشل أحد هذه العناصر الأولية ، يمكنك التخلص من هذا الإصدار وإسقاط البروتوكول القديم على الفور.
إذا لم نكن محظوظين وبعد 20 عامًا سيظل الأشخاص يستخدمون PGP ، فسيظل هذا هو السبب الوحيد لتطبيق معيار CAST5 على الأقل في مكان ما. لا يمكننا قول ذلك بشكل أكثر وضوحًا ، ونحتاج إلى تكراره عدة مرات: إما أن يكون لديك توافق مع الإصدارات السابقة مع برنامج التسعينات ، أو لديك تشفير جيد ؛ لا يمكنك الحصول على حد سواء.
رمز المهملات
التنفيذ الفعلي الفعلي لـ PGP هو GnuPG. هذا البرنامج غير مكتوب بدقة. هناك قاعدة تعليمات برمجية شاملة بلغة C مع ازدواجية للوظائف (على سبيل المثال ، في وصف هجوم رفض الخدمة الأخير على تحليل SKS يقال أنه يحتوي على عدة موزعين رئيسيين) مع سجل طويل في CVE ، يتراوح من تلف الذاكرة إلى هجمات التشفير من خلال قنوات الطرف الثالث. في بعض الأحيان كان من الممكن إزالة المصادقة من الرسائل ، لكن GnuPG لم يلاحظ ذلك. هل يمكن أن تطعمه المفاتيح دون بصمة صحيحة. في عام 2018 ، كانت ثغرة Efail ناتجة عن حقيقة أن GnuPG قدمت نصًا غير مصادق عليه عند الطلب. GnuPG ليست جيدة.
GnuPG هو كل من التطبيق المرجعي لـ PGP والأساس لمعظم أدوات تكامل تشفير PGP الأخرى. إنه لن يذهب إلى أي مكان. الاعتماد على PGP يعني الاعتماد على GPG.
الإجابات
لإقناع شخص ما بالتخلي عن PGP ، من المهم أن تشرح له أن PGP ليس لديه ما يحل محله ،
وهذا طبيعي . تعتمد أداة بديلة على المهمة.
مناقشات
استخدام إشارة. أو Wire أو WhatsApp أو بعض برامج المراسلة الآمنة الأخرى استنادًا إلى بروتوكول الإشارة.
رسل آمن الحديثة مصممة خصيصا للرسائل. يستخدمون مصادقة التوثيق السرية وإلغاء الرسائل
وأرقام التشفير التي تعطي مفتاحًا لكل تبادل للرسائل ، وبالطبع بدائل التشفير الحديثة. رسل سهلة الاستخدام ، لا ضجة مع المفاتيح والمفاتيح الفرعية. إذا كنت تستخدم Signal ، فستحصل على أكثر من ذلك: تحصل على نظام بجنون العظمة عن حفظ البيانات الوصفية الخاصة من الخوادم حتى أنه ينفق استعلامات بحث Giphy لتجنب هجمات تحليل حركة المرور ، وحتى وقت قريب لم يدعم ملفات تعريف المستخدمين.
تشفير البريد الإلكتروني
لا تفعل هذا.
البريد الإلكتروني غير آمن . حتى مع PGP ، يكون هذا نصًا افتراضيًا بشكل افتراضي ، أي أنه حتى إذا قمت بكل شيء بشكل صحيح ، فإن بعض المستلمين المعقولين للرسالة ، وهم يقومون بأشياء معقولة تمامًا ، سوف يقتبسون بالضرورة النص العادي لرسالتك المشفرة إلى شخص آخر في CC (لا نعرف مستخدم البريد الإلكتروني بريد PGP ، الذي لم يأت عبر هذا). لا توجد سرية مباشرة في بريد PGP الإلكتروني. يتم إرسال بيانات تعريف البريد الإلكتروني ، بما في ذلك الموضوع (الذي هو حرفيًا محتوى الرسالة) ، بنص واضح.
إذا كنت بحاجة إلى سبب آخر ،
فاقرأ مقالة ثغرة Efail . ينتقد مجتمع GnuPG ، الذي
فشل في الكشف عن معلومات حول Efail ، هذا المقال بعنف ، لكنه تم قبوله في Usenix Security (أحد المراكز الأكاديمية العليا لأمان البرمجيات) و Black Hat USA (المؤتمر الرائد لأمن البرمجيات). هذا هو واحد من أفضل هجمات التشفير في السنوات الخمس الماضية - وقنبلة مدمرة جدا ضد النظام البيئي PGP. كما سترون من المقال ، S / MIME ليست أفضل.
لن تكون ثابتة. لإنشاء بريد إلكتروني آمن بالفعل ، يجب عليك نقل بروتوكول آخر عبر البريد الإلكتروني (ستظل عرضة لهجوم باستخدام تحليل حركة المرور). هذه مجرد نقطة ، لماذا التظاهر؟
تشفير البريد الإلكتروني هو النقر المتاعب. إن تشجيع المستخدمين على تشفير البريد الإلكتروني إذا كان هناك شيء يهددهم هو إهمال استثنائي. أي شخص يخبرك عن أمان اتصال البريد الإلكتروني بتشفير PGP يضع تفضيلاته الغريبة فوق أمانك.
إرسال الملفات
استخدام
ماجيك wormhole . يستخدم عملاء Wormhole مصادقة المفتاح لمرة واحدة مع مصادقة كلمة المرور (PAKE) لتشفير الملفات. إنه أمر سهل (على الأقل بالنسبة للمهووسين) ، آمن وممتع: كل من أظهرنا له "ثقب الخلد" بدأ على الفور في تمرير جميع الملفات على التوالي ، كما نفعل نحن.
يقوم شخص ما على الفور بتشغيل برنامج التثبيت لنظام التشغيل Windows على Rust أو Go ، وهذا برنامج رائع للغاية لعدم استخدامه.
إذا تحدثت إلى محامين ، وليس مهندسين ، فإن Signal تقوم بعمل رائع لنقل الملفات. للإبلاغ عن الأخطاء ، قم بنشر رقم الإشارة ، وليس مفتاح PGP.
تشفير النسخ الاحتياطي
استخدام Tarsnap.
سيشرح Colin كيف تم تحسين Tarsnap لحماية النسخ الاحتياطية . أو في الواقع ، خذ أي أداة تشفير احتياطية أخرى ؛ لن تكون جيدة مثل Tarsnap ، لكنها ستظل أفضل من PGP.
تحتاج حاليا النسخ الاحتياطي؟ استخدام تشفير صورة القرص. تم تصميمه في الإصدارات الحديثة من Windows و Linux و macOS. تشفير القرص بالكامل ليس جيدًا للغاية ، ولكنه يقوم بعمل ممتاز لهذه المهمة ، وهو أبسط وأكثر أمانًا من PGP.
توقيع الحزمة
استخدم Signify / Minisign.
سوف تيد Unangst أقول لك كل شيء . يتم استخدام هذه الأداة لتوقيع الحزم في OpenBSD. انها بسيطة جدا وتطبق التوقيعات الحديثة. يقوم Frank Denis
Minisign (أحد مطوري libsodium) بتنفيذ نفس التصميم على نظامي التشغيل Windows و macOS ؛ له روابط إلى Go و Rust و Python و Javascript و .NET؛ Signify.
libsodium : , , .
. // , // , // // , / , , .
age , , .
, , . , ( , « PGP!»), PGP.