نظرة عامة
يصف هذا المستند القضايا المهمة التي يجب أخذها بعين الاعتبار عند اقتراح بديل أو إضافة إلى تشفير ElGamal غير المتماثل المستخدم لدينا.
هذا مستند إعلامي.
الدوافع
تُعد خوارزمية ElGamal قديمة وبطيئة، ووجود بدائل أفضل.
مع ذلك، هناك عدة قضايا يجب معالجتها قبل أن نتمكن من إضافة أو التحول إلى أي خوارزمية جديدة.
يسلط هذا المستند الضوء على هذه القضايا غير المحلولة.
البحث الخلفي
على أي شخص يقترح تشفيرًا جديدًا أن يكون على دراية أولًا بالمستندات التالية:
- الاقتراح 111 NTCP2
- الاقتراح 123 LS2
- الاقتراح 136 أنواع التوقيع التجريبي
- الاقتراح 137 أنواع التوقيع الاختيارية
- سلاسل المناقشة ذات الصلة لكل اقتراح من الاقتراحات أعلاه، والموجودة ضمن الروابط
- أولويات اقتراحات 2018
- اقتراح ECIES
- نظرة عامة على التشفير غير المتماثل الجديد
- نظرة عامة على التشفير منخفض المستوى
استخدامات التشفير غير المتماثل
مراجعةً، نستخدم ElGamal في:
رسائل بناء النفق (المفتاح موجود في RouterIdentity)
تشفير الرسائل بين الموجهات (netdb ورسائل I2NP الأخرى) (المفتاح موجود في RouterIdentity)
تشفير ElGamal+AES/SessionTag من العميل إلى العميل (المفتاح موجود في LeaseSet، بينما لا يستخدم مفتاح الوجهة)
تبادل مفاتيح ديفي-هيلمان المؤقت (Ephemeral DH) لبروتوكولي NTCP وSSU
التصميم
يجب أن يوفر أي اقتراح لاستبدال ElGamal بشيء آخر التفاصيل التالية.
المواصفات
يجب أن يحدد أي اقتراح لتشفير غير متماثل جديد تمامًا الأمور التالية.
1. عام
أجب على الأسئلة التالية في اقتراحك. لاحظ أن هذا قد يحتاج إلى أن يكون اقتراحًا منفصلًا عن التفاصيل في النقطة 2) أدناه، لأنه قد يتعارض مع الاقتراحات الحالية 111 و123 و136 و137 أو غيرها.
- في أي من الحالات من 1 إلى 4 المذكورة أعلاه تقترح استخدام التشفير الجديد؟
- إذا كان للحالة 1) أو 2) (الموجه)، أين سيوضع المفتاح العام، في RouterIdentity أم في خصائص RouterInfo؟ هل تنوي استخدام نوع التشفير في شهادة المفتاح؟ حدد تمامًا. ودافع عن قرارك بغض النظر عن الخيار.
- إذا كان للحالة 3) (العميل)، هل تنوي تخزين المفتاح العام في الوجهة واستخدام نوع التشفير في شهادة المفتاح (كما في اقتراح ECIES)، أم تخزينه في LS2 (كما في الاقتراح 123)، أم شيء آخر؟ حدد تمامًا، ودافع عن قرارك.
- بالنسبة لجميع الاستخدامات، كيف سيتم الإعلان عن الدعم؟ إذا كان للحالة 3)، هل سيوضع في LS2 أم في مكان آخر؟ إذا كان للحالتين 1) و2)، هل سيكون مشابهًا للإقتراحين 136 و/أو 137؟ حدد تمامًا، ودافع عن قراراتك. سيتطلب ذلك على الأرجح اقتراحًا منفصلًا.
- حدد تمامًا كيف ولماذا يكون هذا متوافقًا مع الإصدارات السابقة، وحدد خطة انتقال كاملة.
- ما هي الاقتراحات غير المُنفَّذة التي تُعد شروطًا مسبقة لاقتراحك؟
2. نوع التشفير المحدد
أجب على الأسئلة التالية في اقتراحك:
- معلومات عامة عن التشفير، المنحنيات/المعاملات المحددة، ودافع تمامًا عن اختيارك. وفر روابط للمواصفات ومعلومات أخرى.
- نتائج اختبارات السرعة مقارنةً بـ ElG وبديله الأخرى إن وُجدت. شمل التشفير، فك التشفير، وتوليد المفتاح.
- توفر المكتبات بلغتي C++ وJava (بما في ذلك OpenJDK وBouncyCastle والطرف الثالث)
بالنسبة للطرف الثالث أو غير Java، وفر الروابط وترخيص الاستخدام - أرقام نوع التشفير المقترحة (في نطاق تجريبي أم لا)