ECIES-P256

Proposal 145
مفتوح
Author orignal
Created 2019-01-23
Last Updated 2019-01-24

الدافع

ECIES-P256 أسرع بكثير من ElGamal. هناك عدد قليل من مواقع i2pd التي تستخدم نوع التشفير ECIES-P256 بالفعل ويجب أن يكون Java قادرًا على التواصل معها وبالعكس. يدعمه i2pd منذ الإصدار 2.16.0 (0.9.32 Java).

نظرة عامة

تقدم هذه الاقتراح نوع تشفير جديد ECIES-P256 يمكن أن يظهر في جزء الشهادة من الهوية، أو كنمط مفتاح تشفير منفصل في LeaseSet2. يمكن استخدامه في RouterInfo، LeaseSet1 و LeaseSet2.

مواقع مفاتيح ElGamal

كمراجعة، يمكن العثور على مفاتيح ElGamal العامة بحجم 256 بايت في هياكل البيانات التالية. الرجوع إلى مواصفات الهياكل المشتركة.

  • في هوية جهاز التوجيه هذا هو مفتاح تشفير جهاز التوجيه.

  • في وجهة تم استخدام المفتاح العام للوجهة للتشفير i2cp-to-i2cp القديم والذي تم تعطيله في الإصدار 0.6، وهو غير مستخدم حالياً باستثناء IV لتشفير LeaseSet، والذي تم إهماله. بدلاً من ذلك، يتم استخدام المفتاح العام في LeaseSet.

  • في LeaseSet هذا هو مفتاح تشفير الوجهة.

في النقطتين أعلاه، لا يزال المفتاح العام ECIES يأخذ 256 بايت، على الرغم من أن الطول الفعلي هو 64 بايت. يجب ملء الباقي ببادئة عشوائية.

  • في LS2 هذا هو مفتاح تشفير الوجهة. حجم المفتاح هو 64 بايت.

أنواع التشفير في شهادات المفتاح

يستخدم ECIES-P256 نوع التشفير 1. يجب حجز أنواع التشفير 2 و3 لـ ECIES-P284 وECIES-P521

استخدامات التشفير غير المتناظر

يصف هذا الاقتراح استبدال استخدام ElGamal لـ:

  1. رسائل بناء النفق (المفتاح في RouterIdentity). كتلة ElGamal حجمها 512 بايت

  2. تشفير من نهاية إلى نهاية للعميل باستخدام ElGamal+AES/SessionTag (المفتاح في LeaseSet، مفتاح الوجهة غير مستخدم). كتلة ElGamal حجمها 514

  3. تشفير من جهاز توجيه إلى جهاز توجيه لـ netdb ورسائل I2NP الأخرى. كتلة ElGamal حجمها 514 بايت

الأهداف

  • متوافق مع الإصدارات السابقة
  • لا تغييرات في هيكل البيانات الحالي
  • أكثر كفاءة بكثير في استخدام وحدة المعالجة المركزية من ElGamal

الأهداف غير المرجوة

  • لا يمكن لـ RouterInfo وLeaseSet1 نشر ElGamal وECIES-P256 معاً

التبرير

محرك ElGamal/AES+SessionTag دائمًا ما يعلق عند نقص العلامات، مما يؤدي إلى تدهور كبير في الأداء في اتصالات I2P. بناء النفق هو العملية الأكثر ثقلاً لأن المصدر يجب أن ينفذ تشفير ElGamal ثلاث مرات لكل طلب بناء نفق.

المتطلبات البدائية للتشفير

  1. إنشاء مفتاح منحنى EC P256 و DH

  2. AES-CBC-256

  3. SHA256

الاقتراح المفصل

تنشر الوجهة باستخدام ECIES-P256 نفسها بنوع التشفير 1 في الشهادة. يجب تفسير أول 64 بايت من 256 في الهوية كمفتاح عام لـ ECIES والباقي يجب تجاهله. مفتاح التشفير المنفصل لـ LeaseSet يعتمد على نوع المفتاح من الهوية.

كتلة ECIES لـ ElGamal/AES+SessionTags

كتلة ECIES تحل محل كتلة ElGamal لـ ElGamal/AES+SessionTags. الطول 514 بايت. تتكون من جزئين كل جزء 257 بايت. الجزء الأول يبدأ بصفر ثم مفتاح مؤقت ل P256 بحجم 64 بايت، والباقي 192 بايت هو بادئة عشوائية. الجزء الثاني يبدأ بصفر ثم AES-CBC-256 مشفر بـ 256 بايت بنفس المحتوى كما في ElGamal.

كتلة ECIES لسجل بناء النفق

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

مفتاح AES-CBC-256

هذا هو حساب مفاتيح ECDH المشتركة حيث KDF هو SHA256 على الإحداثيات x. دع Alice كمشفرة وBob كمفك شيفرة. افترض أن k هو المفتاح الخاص المؤقت P256 الذي اختارته Alice عشوائيًا و P هو المفتاح العام لـ Bob. S هو السر المشترك S(Sx, Sy) تقوم Alice بحساب S عن طريق “الاتفاق” على k مع P، أي S = k*P.

افترض أن K هو المفتاح العام المؤقت لـ Alice و p هو المفتاح الخاص لـ Bob. يأخذ Bob K من الكتلة الأولى في الرسالة المستلمة ويحسب S = p*K

مفتاح تشفير AES هو SHA256(Sx) و iv هو Sy.