Cryptology Academy · درس

Google Tink: تشفير آمن عالي المستوى

استخدموا واجهة API المعتمدة على keyset في Tink لتنفيذ العمليات التشفيرية الشائعة دون خبرة متخصصة في التشفير.

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

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

نظرة عامة على Tink ودوافعها

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

التجريد القائم على مجموعات المفاتيح

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

واجهة AEAD

توفر واجهة AEAD (التشفير الموثّق مع البيانات المرتبطة) في Tink عمليتي التشفير وفك التشفير. تُعيد AeadFactory.getPrimitive(keyset) كائن Aead؛ ويؤدي استدعاء aead.encrypt(plaintext, associatedData) إلى إعادة النص المشفّر. تختار Tink خوارزمية التشفير تلقائيًا استنادًا إلى مجموعة المفاتيح، مثل AES-256-GCM، وتولّد nonce عشوائيًا. وتخفي الواجهة جميع تفاصيل الخوارزمية وإدارة nonce وترميز التنسيق.

واجهة MAC

توفر واجهة MAC في Tink عمليات حساب رموز مصادقة الرسائل والتحقق منها. تُرجع ‎MacFactory.getPrimitive(keyset)‎ كائنًا من النوع Mac. تُرجع ‎mac.computeMac(data)‎ وسم المصادقة، بينما تتحقق ‎mac.verifyMac(tag, data)‎ منه، وتطرح استثناءً أمنيًا إذا فشل التحقق. الخوارزمية الافتراضية هي HMAC-SHA256. تمنع الواجهة الأخطاء الشائعة، مثل مقارنة رموز MAC باستخدام مساواة السلاسل النصية العادية بدلًا من المقارنة بزمن ثابت.

واجهة التوقيع الرقمي

يوفر Tink واجهتي PublicKeySign وPublicKeyVerify منفصلتين للتوقيعات الرقمية. تُشتق كائنات التوقيع والتحقق من مقبضَي مجموعتي مفاتيح مختلفين، الخاص والعام على التوالي، مما يمنع استخدام مفتاح خاص للتحقق عن طريق الخطأ أو العكس. وتُعد تطبيقات Tink للخوارزميتين Ed25519 وECDSA P-256 هي الافتراضية، مع توفر ECDSA الحتمي لتجنب الثغرات المرتبطة بالعشوائية.

واجهة التشفير الهجين

تطبق واجهتا HybridEncrypt وHybridDecrypt في Tink نظام ECIES (مخطط التشفير المتكامل بالمنحنيات الإهليلجية). يجمع التشفير الهجين بين تبادل المفاتيح غير المتماثل والتشفير المتماثل: ينشئ المرسل مفتاحًا مؤقتًا، وينفذ ECDH باستخدام المفتاح العام للمستلم، ويشتق مفتاحًا متماثلًا، ثم يشفر باستخدام AEAD. يتيح ذلك تشفير الرسائل الكبيرة باستخدام مفاتيح غير متماثلة، من دون التكلفة الإضافية للتشفير غير المتماثل الخالص.

عملية تدوير مجموعة المفاتيح

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

تسلسل مجموعة المفاتيح

تُسلسَل مجموعات مفاتيح Tink بتنسيق JSON أو بتنسيق Protocol Buffer الثنائي. تنسيق JSON مقروء للبشر ومفيد لأغراض تصحيح الأخطاء. أما التنسيق الثنائي فهو أكثر إحكامًا في بيئات الإنتاج. يجب تشفير مجموعات المفاتيح المتسلسلة التي تحتوي على مفاتيح خاصة قبل تخزينها. ويدعم Tink تخزين مجموعات المفاتيح المشفرة باستخدام تشفير AEAD متماثل قياسي، أو تفويض التخزين إلى KMS.

تكامل KMS لتشفير مجموعة المفاتيح

يتكامل Tink مع موفري KMS الرئيسيين: AWS KMS وGoogle Cloud KMS وHashiCorp Vault. بدلًا من تشفير مجموعات المفاتيح باستخدام مفتاح AEAD محلي، يغلف Tink مفتاح تشفير مجموعة المفاتيح باستخدام KMS. ويُستخدم مفتاح تشفير بيانات (DEK) يُنشأ محليًا لتشفير مجموعة المفاتيح نفسها، ثم يُشفَّر DEK بواسطة مفتاح تشفير المفاتيح (KEK) في KMS. يتبع ذلك نمط التشفير المغلف الذي يستخدمه موفرو الخدمات السحابية.

AEAD التدفقية للملفات الكبيرة

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

دعم اللغات والمنظومة

يتوفر Tink للغات Java وPython وGo وC++، مع واجهات برمجية ملائمة لأسلوب كل لغة. ويضمن التوافق بين اللغات إمكانية فك تشفير ملف شُفِّر باستخدام Tink في Python بواسطة Tink في Java. وهذا يجعل Tink مناسبًا للأنظمة التي تضم خدمات متعددة مكتوبة بلغات مختلفة وتحتاج إلى تبادل البيانات المشفرة. كما يتكامل Tink مع Protocol Buffers لتكوين مجموعات المفاتيح بطريقة آمنة من ناحية الأنواع.

تدوير مجموعة مفاتيح Tink

أثناء تدوير مفاتيح Tink، ماذا يحدث للنصوص المشفرة بالمفتاح القديم غير الأساسي؟

مراجعة Google Tink

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

البدء مجانًا

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

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

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

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

هل درس «Google Tink: تشفير آمن عالي المستوى» مجاني؟

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

ماذا ستتعلم في «Google Tink: تشفير آمن عالي المستوى»؟

استخدموا واجهة API المعتمدة على keyset في Tink لتنفيذ العمليات التشفيرية الشائعة دون خبرة متخصصة في التشفير. تتمرن على Cryptology Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

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

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

كم من الوقت يستغرق درس «Google Tink: تشفير آمن عالي المستوى»؟

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

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

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

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

  1. libsodium: مكتبة تشفير مقاومة لسوء الاستخدام
  2. واجهة OpenSSL API: البنى الأساسية ومواطن الخلل
  3. Google Tink: تشفير آمن عالي المستوى
  4. تدقيق تبعيات التشفير واختيارها
← العودة إلى Cryptology Academy