التشفير المختلط

تجمع المجموعة الأولية للتشفير المختلط بين كفاءة التشفير المتماثل وسهولة استخدام التشفير بالمفتاح العام (غير المتماثل). ويمكن لأي شخص تشفير البيانات باستخدام المفتاح العام، ولكن يمكن فقط للمستخدمين الذين لديهم المفتاح الخاص فك تشفير البيانات.

بالنسبة إلى التشفير المختلط، ينشئ المرسِل مفتاحًا متماثلاً جديدًا لتشفير النص العادي لكل رسالة لإنتاج نص مُشفر. وتتم تضمين هذا المفتاح المتماثل مع المفتاح العام للمستلم. بالنسبة إلى فك التشفير المختلط، يتم فك تشفير المفتاح المتماثل من قِبل المستلم ثم استخدامه لفك تشفير النص المشفّر لاسترداد النص العادي الأصلي. يُرجى الاطّلاع على تنسيق سلك التشفير المختلط في Tink لمعرفة تفاصيل عن كيفية تخزين أو إرسال النص المشفر مع تغليف المفاتيح.

يتسم التشفير المختلط بالخصائص التالية:

  • السرية: لا يمكن لأحد الحصول على أي معلومات عن النص العادي المشفّر (باستثناء طوله)، ما لم يكن لديه إذن الوصول إلى المفتاح الخاص.
  • عدم التماثل: يمكن تشفير النص المشفر باستخدام المفتاح العام، ولكن لفك التشفير، يكون المفتاح الخاص مطلوبًا.
  • الترتيب العشوائي: يكون التشفير عشوائيًا. لن تعرض رسالتان لهما نفس النص العادي نفس النص المشفر. وهذا يمنع المهاجمين من معرفة أي النص المُشفر الذي يتوافق مع نص عادي معين.

يتم تمثيل التشفير المختلط في Tink كزوج من العناصر الأولية:

  • HybridEncrypt للتشفير
  • HybridDecrypt لفك التشفير

معلمة معلومات السياق

بالإضافة إلى النص العادي، يقبل التشفير المختلط معلَمة إضافية، context_info، والتي عادةً ما تكون بيانات عامة ضمنية من السياق، ولكن يجب أن تكون مرتبطة بالنص المشفر الناتج. وهذا يعني أن النص المُشفر يسمح لك بالتأكد من سلامة معلومات السياق ولكن لا توجد ضمانات لسريتها أو أصالتها. يمكن أن تكون معلومات السياق الفعلية فارغة أو خالية، ولكن لضمان فك التشفير الصحيح للنص المشفر الناتج، يجب تقديم قيمة معلومات السياق نفسها لفك التشفير.

يمكن أن يربط التطبيق الفعلي للتشفير المختلط معلومات السياق بالنص المشفر بطرق مختلفة، على سبيل المثال:

  • استخدِم context_info كإدخال بيانات مرتبط للتشفير المتماثل AEAD (cf. RFC 5116).
  • استخدِم context_info كإدخال "CtxInfo" لـ HKDF (إذا كان التنفيذ يستخدم HKDF كدالة اشتقاقية رئيسية، راجع RFC 5869).

اختيار نوع المفتاح

نقترح عليك استخدام نوع المفتاح DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_AES_256_GCM في معظم حالات الاستخدام. يطبّق هذا النوع من المفاتيح معيار تشفير المفتاح العام المختلط (HPKE) على النحو المحدّد في RFC 9180. ويتكون بروتوكول HPKE من آلية تغليف المفاتيح (KEM)، ووظيفة اشتقاق المفتاح (KDF)، وخوارزمية التشفير المصادق عليها باستخدام خوارزمية AEAD.

يستعين DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_AES_256_GCM تحديدًا بما يلي:

  • كيم: "ديفي-هيلمان" فوق Curve25519 باستخدام خوارزمية HKDF-SHA-256 لاستنتاج السر المشترك.
  • KDF: HKDF-SHA-256 لاستنتاج سياق المرسل والمستلم.
  • AEAD: AES-256-GCM مع أرقام خاصة بحجم 12 بايت تم إنشاؤها وفقًا لمعيار HPKE.

تشمل أنواع مفاتيح HPKE المتوافقة الأخرى، على سبيل المثال لا الحصر، ما يلي:

  • DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_AES_128_GCM
  • DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_CHACHA20_POLY1305
  • DHKEM_P256_HKDF_SHA256_HKDF_SHA256_AES_128_GCM
  • DHKEM_P521_HKDF_SHA512_HKDF_SHA512_AES_256_GCM

راجِع RFC 9180 للحصول على مزيد من التفاصيل حول خيارات الخوارزمية لخوارزمية KEM وKDF وAEAD.

على الرغم من أنّه لن يُنصح بذلك بعد الآن، يتيح تطبيق Tink أيضًا استخدام بعض صيغ ECIES كما هو موضّح في معيار Victor Shoup 18033-2. في ما يلي بعض أنواع مفاتيح ECIES المتاحة:

  • ECIES_P256_HKDF_HMAC_SHA256_AES128_GCM
  • ECIES_P256_COMPRESSED_HKDF_HMAC_SHA256_AES128_GCM
  • ECIES_P256_HKDF_HMAC_SHA256_AES128_CTR_HMAC_SHA256
  • ECIES_P256_COMPRESSED_HKDF_HMAC_SHA256_AES128_CTR_HMAC_SHA256

السمات البسيطة

  • يمكن أن يكون طول النص العادي ومعلومات السياق عشوائية (في نطاق 0..232 بايت)
  • الحماية من هجمات النص المُشفر التكيُّفية
  • أمان 128 بت للمخططات المستندة إلى المنحنى الإهليلجي

أمثلة لحالات الاستخدام

نرى أنني أريد تبادل البيانات.