Sequoia Stagg في ألدر كريك ، كاليفورنيا
في عام 2018 ، بدأ ثلاثة من مطوري GnuPG السابقين العمل في مشروع Sequoia ، وهو تنفيذ OpenPGP في Rust. كما تعلم ، فإن OpenPGP هو معيار تشفير بيانات مفتوح يستخدم غالبًا للبريد الإلكتروني الآمن ؛ و GnuPG هو التطبيق المرجعي لهذا المعيار.
المطورين أنفسهم ذكر الدافع لإنشاء مكتبة جديدة بينبغب:
- يصعب تعديل GnuPG. لقد تراكمت الشفرة وواجهة برمجة التطبيقات على مدار 21 عامًا. لا توجد اختبارات وحدة. المكونات ترتبط ارتباطًا وثيقًا ببعضها البعض. تترك الهندسة المعمارية الكثير مما هو مرغوب فيه ، ولن تساعد إعادة البناء البسيطة.
- العديد من المطورين غير راضين عن واجهات برمجة تطبيقات GnuPG. أداة سطر أوامر GnuPG ومكتبات البرمجة المقابلة لها وظائف مختلفة ، مع بعض الأوامر المتاحة فقط من سطر الأوامر.
- Rust هي لغة آمنة للذاكرة تقضي تلقائيًا على فئة كاملة من الأخطاء.
- لا يمكن استخدام GnuPG على iOS بسبب قيود GPL.
مكتبة Sequoia المرخصة من GPLv2 تقترب الآن من الإصدار 1.0 ، على الرغم من أنه لا تزال هناك العديد من المشكلات التي يجب معالجتها .
انتقادات GnuPG
يجب أن تكون المكتبة الجديدة خالية من عيوب GnuPG. على الرغم من أنه يجب ملاحظة أنه بالإضافة إلى التطبيق "المرجعي" لـ OpenPGP ، هناك تطبيقات أخرى ، بما في ذلك OpenKeychain و OpenPGP.js و RNP .
تعرض GnuPG لانتقادات لسنوات . لقد تم انتقاده بسبب تعقيده السخيف ، وتصميم سكين سويسري عالمي: GnuPG يفعل كل شيء ولكن يفعل بشكل سيء ، بما في ذلك التوقيع الرقمي ، وحماية كلمة المرور ، وتشفير المفتاح العام ، ونقل الملفات الآمن ، وتوقيع الحزمة ، وحماية النسخ الاحتياطي ، ورسائل الدردشة ، إلخ. .د. يُعتقد أنه في العصر الحديث ، هناك حاجة إلى أدوات متخصصة: مكتبة منفصلة للرسائل الآمنة ، ومكتبة منفصلة لتوقيع الحزم ، ومكتبة منفصلة لتشفير الملفات (كأداة مساعدةغضب مكتوب في Rust) وهلم جرا. ولا تحتاج كل هذه الأدوات إلى أن تكون متوافقة تمامًا مع PGP.
تم انتقاد سعي OpenPGP من أجل التوافق مع الإصدارات السابقة مع الأصفار من التسعينيات ، مما يعني أن الإعدادات الافتراضية لا تتوافق مع أفضل الممارسات الحديثة للتشفير القوي والأمان ممكن دائمًا من خلال بروتوكولات التفاوض. تكمن المشكلة في أنه من المستحيل الحفاظ في نفس الوقت على التوافق مع الإصدارات السابقة والامتثال للتشفير الآمن الحديث.
لقد ذكرنا بالفعل رمز القمامة: "تطبيق PGP القياسي الفعلي هو GnuPG. لم يتم كتابة هذا البرنامج بدقة. هناك قاعدة رموز C واسعة النطاق - لغة ذات وظائف مكررة (على سبيل المثال ، يشير هجوم رفض الخدمة الأخير على تحليل SKS إلى أنه يحتوي على عدة موزعي مفاتيح) مع سجل تتبع طويل من التطرف العنيف من تلف الذاكرة إلى هجوم التشفير عبر القنوات الجانبية. في بعض الأحيان كان من الممكن إزالة المصادقة من الرسائل دون أن يلاحظها GnuPG. كان من الممكن أن تغذيه بالمفاتيح بدون البصمة الصحيحة. في عام 2018 ، كانت ثغرة Efail ناتجة عن تقديم GnuPG لنص عادي غير مصدق عند الطلب " ، كتب لاتاكورا.
مشكلة أخرى هي (في) سهولة الاستخدام.
منذ عدة سنوات ، تم إجراء دراسة قابلية استخدام PGP ، حيث تم وضع مجموعة من الفنيين في غرفة بها كمبيوتر وطُلب منهم تكوين PGP. بعد ساعتين ، لم يخرج أي منهم بعد. - مطور Ted Unangst و OpenBSD و LibreSSL
الشكاوى الأخرى هي عدم الأمان في التخزين طويل المدى لنفس المفتاح ، ونظام مصادقة النص المشفر MDC الضعيف تمامًا ، والافتقار إلى السرية الأمامية ، والمفاتيح العملاقة الخرقاء.
مشروع سيكويا
سيكويا هي مجموعة أدوات OpenPGP حديثة تحل العديد من هذه المشاكل ، كما كتب LWN. تم اعتماد Sequoia بالفعل من قبل العديد من المشاريع الأخرى ، بما في ذلك keys.openpgp.org و OpenPGP CA و koverto و Pijul و KIPA .
يتم تمويل المشروع من قبل مؤسستي p≡p (pep) و Wau Holland ، ويتم تنفيذ جميع عمليات التطوير في الوضع المفتوح.
تركز المكتبة الجديدة على الأمان والصحة ، مع استخدام التشفير الحديث الأكثر موثوقية. يعد المطورون بأدوات قوية ، بما في ذلك برنامج سطر الأوامر والأوامر الفرعية بأسلوب Git.
$ echo hi | sq encrypt --recipient neal
-----BEGIN PGP MESSAGE-----
wcBMA8K4GQVsZSWYAQgAllrQ+9490eoFdB/jLrVvGl+IVtGJWPFDg9uhcl0D8k05
AWz8ZU2sd6GzoCH1nRpwASJWHxloNbPgvxhNRRVReg3GgfFwMkcoNJ2Xb4zocvx+
niH7ZlP9Py6kseuqtjhQZEyvtIfWc58TK9DRdPp5suzS3Y9Zbew9vC2N2u+8YsKL
BbbminTZqLYbt/00ZT/ZuDbtHhoDUxlnCK2Y2R6NZvuvwS1ujI0EOfdOagZO0z5k
hs8U9Xgk1/BWpQtKn3ygMDO0401nBBbwNgialcu/8yFS+wXoifRaj60Cbxhjv2/G
aTcl9loYpN93BL0a7EbKmcwDl14HwosKdkMj4Px25dI0AZjLxI7TBX18e+hBu5vr
q83G7aEwllpiDU3z+rFXBjsWDOwP2UBf05D/Bl05eSYx4x7UnQ==
=qAvC
-----END PGP MESSAGE-----
تم تنفيذ واجهة واضحة للمحلل وفحص الحزمة ، بالإضافة إلى عمليات تفريغ سداسية ، والتي يمكن عرضها الآن في العرض التوضيحي عبر الإنترنت .
$ sq packet dump --hex message.pgp
New CTB, 13 bytes: One-Pass Signature Packet
Version: 3
Type: Binary
Pk algo: EdDSA Edwards-curve Digital Signature Algorithm
Hash algo: SHA512
Issuer: 83F8 2E4F E9A5 E098
Last: true
00000000 c4 0d frame
00000002 03 version
00000003 00 sigtype
00000004 0a hash_algo
00000005 16 pk_algo
00000006 83 f8 2e 4f e9 a5 e0 98 issuer
0000000e 01 last
على عكس GnuPG ، حيث تكون أداة سطر أوامر gpg أقوى من المكتبة ، فإن Sequoia هي في الأساس مكتبة ؛ جميع وظائفه متاحة من خلال واجهات برمجة التطبيقات المفتوحة. يخطط المشروع لتوفير "طبقتين" من API: تنفيذ منخفض المستوى لمواصفات OpenPGP وواجهة برمجة تطبيقات عالية المستوى ذات إعدادات افتراضية معقولة لتسهيل قيام المستخدمين بمهام شائعة مثل حزم التوقيع والتحقق من التوقيعات:
$ sqv --trace --keyring tails-signing.key \
tails-amd64-3.11.iso.sig tails-amd64-3.11.iso
Will check signature allegedly issued by A8B0 F4E4 5B1B 50E2.
Found key A8B0 F4E4 5B1B 50E2.
Checking signature allegedly issued by A8B0 F4E4 5B1B 50E2.
Signature by A8B0 F4E4 5B1B 50E2 is good.
A490 D0F4 D311 A415 3E2B B7CA DBB8 02B2 58AC D84F
1 of 1 signatures are valid (threshold is: 1).
$ echo "Just check the exit status: $?"
Just check the exit status: 0
على الرغم من التنفيذ المنخفض المستوى لمواصفات OpenPGP ، فقد تخلص المطورون من بعض المعايير القديمة والخطيرة مثل تجزئة MD5.
حتى قبل بدء المبادرة ، التقى مؤسسو المشروع بأعضاء بارزين من مجتمع OpenPGP والمستخدمين النهائيين لمناقشة خطط المشروع والتأكد من أن نهجهم مبرر بالفعل. التنمية النشطة جارية الآن. اذا حكمنا من خلال الإدخالات في مستودع و تعقب ، وهناك حوالي 30 مشاركا، وبذلت ثلاثة إصدارات منذ الإعلان في أبريل 2020 من إعداد الإصدار 1.0. تم إصدار الإصدار الأخير 0.19.0 في أغسطس 2020 - وكان التحسين الأبرز فيه هو تكامل Windows Cryptography API: Next Generation كخلفية(CNG) بدلاً من نبات القراص ، الذي يعاني من مشاكل في بيئات غير POSIX.
لمزيد من الأمان ، تخطط Sequoia لاستخدام فصل العملية بين خدمات المفاتيح العامة والخاصة (كما في gpg-agent). هنا ، للتواصل بين العمليات ، يتم تقديم بروتوكول تسلسل Cap'n Proto - وهذا شيء مشابه لمخازن البروتوكول ، فقط أسرع.
في العرض التقديمي ، أشار المطورون إلى أن فصل العملية ليس ممكنًا دائمًا ، على سبيل المثال ، في بيئات iOS. عندما لا تكون متاحة ، تخطط Sequoia لاستخدام قاعدة بيانات SQLite مشتركة للتواصل بين الخدمات في هذه العملية ، كنوع من الموقع المشترك.
تتخذ Sequoia نهجًا مختلفًا من الناحية المفاهيمية تجاه سلاسل المفاتيح العامة: فهي مصممة لتكون "أشبه بدفتر عناوين من سلسلة مفاتيح PGP". يتم تخزين المفاتيح بواسطة معرّفات المستخدم (اسم العائلة ) ، مع القدرة على ربط البيانات المنظمة التعسفية المفيدة في تنفيذ نماذج الثقة. يقول المطورون إن هذا النهج يتماشى أكثر مع كيفية تمثيل المستخدمين للمفاتيح فعليًا: فهي مرتبطة بالأسماء ، بدلاً من مجموعة من المعرفات المجردة. هذا هو أحد المجالات التي يختلف فيها Sequoia عن تطبيقات OpenPGP الأخرى.
بالإضافة إلى ذلك ، يتم تخصيص "مجال" لجميع المفاتيح يشير إلى الغرض المقصود من المفتاح. يتم دعم مجالين حاليًا: "جهات الاتصال" و "مفتاح تحديث البرنامج".
يتم تحديث سلسلة المفاتيح تلقائيًا من الخوادم البعيدة (على غرار parcimonie ) لتتبع التغييرات والمفاتيح الفرعية الجديدة وعمليات إبطال المفاتيح في الوقت المناسب. تشير الوثائق إلى أنه يمكن القيام بذلك باستخدام خدمات مجهولة المصدر مثل Tor ، بالإضافة إلى طرق تشفير TLS الأكثر شيوعًا.
سوف يدعم تنفيذ سلسلة المفاتيح الخاصة من Sequoia السرية إلى الأماممن خلال مواصفات OpenPGP التي لم يتم تطبيقها في العديد من المكتبات الأخرى. هذه المواصفات تجعل من الممكن التمييز بين البيانات "الساكنة" (التخزين المشفر) والبيانات "المتحركة" (النقل المشفر). من وجهة نظر أمنية ، من الجيد تغيير مفاتيح البيانات "قيد الحركة" بشكل دوري ، لكن مع الاحتفاظ بالقدرة على فك تشفير البيانات "في حالة السكون". و العرض الذي قدمه واحد من المطورين، يسطس الشتاء، يقارن ميزات السرية إلى الأمام سيكويا لتطبيقات بينبغب أخرى.
مزايا الصدأ
تستفيد سيكويا من جميع مزايا أمان الذاكرة التي يوفرها الصدأ.
تم شرح سلامة الذاكرة بشكل شائع في مقال بقلم مايكل هيكس. بعبارات بسيطة ، هذا يعني أنه لا يمكن لأي برنامج في أي حالة الوصول إلى ذاكرة غير صالحة. هذه هي الأخطاء التالية:
- تجاوز سعة المخزن المؤقت؛
- إلغاء الإشارة إلى مؤشر فارغ ؛
- حفظ المؤشر بعد تحرير الذاكرة (الاستخدام بعد الاستخدام) ؛
- استخدام ذاكرة غير مهيأة ؛
- محاولة من قبل برنامج لتحرير نفس الخلية مرتين (مزدوجة مجانية).
تؤدي انتهاكات أمان الذاكرة إلى نقاط ضعف مثل تسرب البيانات وتنفيذ التعليمات البرمجية عن بُعد. بينما استسلمت بعض اللغات لتدهور الأداء باسم سلامة الذاكرة ، يضمن مفهوم Rust للملكية السلامة ويقلل من النفقات العامة.
استنادًا إلى التطوير الحالي لـ Sequoia ، يتم بذل جهد كبير لكتابة اختبارات الوحدة لمنع الانحدار وتحسين جودة الكود.
تستهدف Sequoia "الأنظمة الأساسية الحديثة" بما في ذلك Linux و Windows و macOS و Android و iOS ، مما يحقق أقصى استفادة من أدوات التشفير الحالية الهدف من المشروع هو التكامل الوثيق مع خدمات التشفير لمنصة معينة. على سبيل المثال ، على أجهزة iOS ، من المخطط استخدام معالج Secure Enclave المشتركعندما تكون متاحة. يوفر Sequoia أيضًا واجهة وظيفة خارجية (FFI) لدمج مشروع مع برامج مكتوبة بلغات أخرى. يتم تقديم عمليات الربط (الارتباطات) مع Python و C حاليًا. ومع ذلك ، تجدر الإشارة إلى أن البرامج التي تحتوي على هذه الارتباطات محرومة من أمان الذاكرة المضمنة في Rust ، لذلك تم نشر قواعد خاصة للتعامل الصحيح مع استخدام الذاكرة .
مكونات سيكويا
خطط للمستقبل
قد يتم إطلاق الإصدار 1.0 قريبًا ، على الرغم من أنه في البداية سيتم إصدار واجهة برمجة التطبيقات ذات المستوى المنخفض فقط ، أي صندوق Sequoia-openpgp وتوابعه. هذا يعني أن Sequoia ليست بعد بديلاً لأدوات مثل GnuPG لجميع المستخدمين: سيركز الإصدار الرئيسي الأول على مكتبة المطورين. يحتاج مطورو سيكويا إلى إكمال أداة سطر الأوامر
sqالتي لن يتم تضمينها في الإصدار 1.0. بالإضافة إلى ذلك ، لا تزال خدمة تخزين المفاتيح قيد التطوير - إلى جانب أداة سطر الأوامر ، يعد هذا أحد أولويات المشروع الرئيسية بعد إصدار الإصدار 1.0.
بشكل عام ، من الجيد أن ترى مشروعًا يحاول جعل OpenPGP أسهل في الاستخدام وأكثر سهولة في الوصول إليه. يمكن ملاحظة أنه على مدى ثلاث سنوات ، حقق المطورون تقدمًا كبيرًا. تسمح لك الوثائق باستخدام هذه المكتبة في التطبيقات. ومع ذلك ، لا يزال أمام سيكويا طريق طويل قبل أن تصبح أداة تشفير موثوقة. الأهم من ذلك ، يجب تدقيق الكود. تشير صفحة المشروع إلى أنه لم يتم تدقيقها بعد ، ولكن "بمجرد إصدارنا لصندوق سيكويا الرئيسي ، سيتم تدقيقه من قِبل طرف ثالث". لم يتم الإعلان عن تاريخ إصدار الإصدار 1.0 ، ولكن يبدو أنه سيأتي قريبًا.
إعلان
VDS للمبرمجين بأحدث الأجهزة والحماية من الهجمات ومجموعة كبيرة من أنظمة التشغيل. الحد الأقصى للتهيئة هو 128 نواة وحدة المعالجة المركزية ، وذاكرة وصول عشوائي 512 جيجابايت ، و 4000 جيجابايت من ذاكرة الوصول العشوائي NVMe.
