Cryptology Academy · درس

تصميم Salsa20 وChaCha20

تتبّع عملية quarter-round في ChaCha20 وسرعته على عتاد الأجهزة المحمولة

الدرس 3 من 413 خطوة

تصميم Salsa20 وChaCha20 درس مجاني في Cryptology Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cryptology Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cryptology Academy 4 دروس في المجموع.

مرحبًا

تُعد ChaCha20 شفرة التدفق المهيمنة في الأنظمة الحديثة، إذ تُستخدم في TLS 1.3 وWireGuard وSignal وغيرها الكثير. سنفكك تصميمها الأنيق.

أصول ChaCha20

صمّم Daniel J. Bernstein‏ Salsa20 عام 2005، ثم حسّنها إلى ChaCha20 عام 2008. وتشير السابقة 'Cha' إلى 8 تحسينات إضافية في الانتشار. وقد وُحّدت في RFC 7539‏ (2015) وRFC 8439‏ (2018).

حالة ChaCha20

تعمل ChaCha20 على مصفوفة 4×4 من الكلمات ذات 32 بت، بإجمالي 512 بت: - الكلمات 0-3: الثوابت ('expa' و'nd 3' و'2-by' و'te k') - الكلمات 4-11: مفتاح بحجم 256 بت، أي 8 كلمات - الكلمة 12: عدّاد كتلة بحجم 32 بت - الكلمات 13-15: nonce بحجم 96 بت

الجولة الربعية

العملية الأساسية في ChaCha20، وهي الجولة الربعية على (a,b,c,d): a+=b; d^=a; d<<<= 16 c+=d; b^=c; b<<<= 12 a+=b; d^=a; d<<<= 8 c+=d; b^=c; b<<<= 7 الجمع والتدوير وXOR‏ (ARX). ولا حاجة إلى S-boxes، مما يجعلها سريعة على جميع أنواع العتاد.

20 جولة

تطبّق ChaCha20‏ 20 جولة، بالتناوب بين جولات الأعمدة والجولات القطرية، مع 4 جولات ربعية في كل منها. و8 جولات تعني ChaCha8، وهي سريعة، و12 جولة تعني ChaCha12، وهي متوازنة. أما ChaCha20 فهي الخيار الآمن الافتراضي.

إنشاء تدفق المفاتيح

1. تهيئة الحالة من المفتاح وnonce والعدّاد 2. تطبيق 20 جولة من الجولات الربعية 3. إضافة الحالة الأولية إلى الحالة المدورة، لمنع عكس العملية 4. إخراج كتلة من تدفق المفاتيح بحجم 64 بايت 5. زيادة العدّاد للكتلة التالية

فوائد أمان ARX

تعمل شفرات ARX‏ (الجمع والتدوير وXOR) بزمن ثابت طبيعيًا على معظم وحدات المعالجة المركزية. ولا تتضمن عمليات بحث في الجداول، لذلك لا تتعرض لقنوات جانبية تعتمد على توقيت ذاكرة التخزين المؤقت. وهذا أمر بالغ الأهمية للتطبيقات الآمنة.

أداء ChaCha20

من دون AES-NI، تكون ChaCha20 أسرع بنحو 3 مرات من AES-CBC. وعلى الهواتف، مثل ARM Cortex-A، تكون ChaCha20 الخيار الأسرع. ومع AES-NI، على x86 الحديثة، يكون AES-GCM أسرع. ويتضمن TLS 1.3 كليهما.

Salsa20 مقابل ChaCha20

تحسّن ChaCha20‏ Salsa20 بفضل انتشار أفضل في الجولات الأولى، مما يوفر مقاومة أكبر للتحليل التفاضلي. كما يختلف تهيئة الحالة بينهما. وكلتاهما آمنتان، لكن ChaCha20 هي المعيار الحالي.

ChaCha20 في Python

from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305 import os key = ChaCha20Poly1305.generate_key() nonce = os.urandom(12) ct = ChaCha20Poly1305(key).encrypt(nonce, b'hello', None)

XChaCha20: قيمة nonce ممتدة

يستخدم ChaCha20 قيمة nonce بطول 96 بت. ويمدّد XChaCha20 هذا الطول إلى 192 بت باستخدام الدالة HChaCha20. تسمح قيم nonce الأكبر بالتوليد العشوائي من دون القلق بشأن التصادمات. تستخدم libsodium‏ XChaCha20-Poly1305.

تحقق سريع

لماذا يلغي تصميم ARX في ChaCha20 القنوات الجانبية المعتمدة على توقيت ذاكرة التخزين المؤقت؟

مراجعة

يتميز ChaCha20 بالبساطة والأمان. بعد ذلك سنرى كيفية استخدامه في TLS 1.3 ضمن AEAD‏ ChaCha20-Poly1305.
البدء مجانًا

تعلم Cryptology Academy مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
67
الدروس
261

الأسئلة الشائعة

هل درس «تصميم Salsa20 وChaCha20» مجاني؟

نعم — نص درس «تصميم Salsa20 وChaCha20» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cryptology Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cryptology Academy 4 دروس في المجموع.

ماذا ستتعلم في «تصميم Salsa20 وChaCha20»؟

تتبّع عملية quarter-round في ChaCha20 وسرعته على عتاد الأجهزة المحمولة تتمرن على Cryptology Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cryptology Academy؟

لا تُشترط خبرة سابقة. Cryptology Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «تصميم Salsa20 وChaCha20»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cryptology Academy هذا؟

نعم. كل درس في Cryptology Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. مفاهيم تشفير التدفق وPRNG
  2. RC4: التصميم ونقاط الضعف وهجمات WEP
  3. تصميم Salsa20 وChaCha20
  4. ChaCha20-Poly1305 AEAD في TLS 1.3
← العودة إلى Cryptology Academy