ما هو Tink؟

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

يساعد Tink المستخدمين الذين ليس لديهم خلفية تشفير في تنفيذ مهام التشفير الشائعة بشكل آمن. في Google، تم نشر Tink في مئات المنتجات والأنظمة.

لماذا عليّ استخدام Tink؟

أهم الأسباب لاستخدام Tink هي:

  • سهولة الاستخدام

    من الصعب فهم التشفير بشكل صحيح. باستخدام Tink، يمكنك تشفير البيانات أو توقيعها بضمانات أمان مضمَّنة باستخدام بضعة أسطر من الرموز. يمكن أن يساعدك Tink أيضًا في تدوير المفاتيح أو تأمينها باستخدام أنظمة إدارة المفاتيح الخارجية (KMSs).

  • طريقة آمنة

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

  • التوافق

    تتوافق النصوص المشفرّة من نوع Tink مع مكتبات التشفير الحالية. يتيح Tink أيضًا إمكانية تشفير المفاتيح أو تخزينها في Amazon KMS وGoogle Cloud KMS وAndroid Keystore و"سلسلة مفاتيح iOS".

مَن يستخدم Tink؟

وتستخدم العديد من الشركات تطبيق Tink على نطاق واسع، ومنها Google وSquare وCitadel، بالإضافة إلى المئات من عملاء Google Cloud وشركاء Google Pay. يدعم Tink أيضًا مكتبة Jetpack Security التي تؤمّن العديد من تطبيقات Android الرائجة، مثل Slack وAdidas وAirBnb وNextdoor.

مرامي ضرب الكرة

ما هي الأهداف الرئيسية لـ Tink مقارنة بمكتبات التشفير الأخرى، وما هي الآليات الرئيسية التي يستخدمها Tink لتحقيق هذه الأهداف؟

باختصار، لدى Tink هدفان:

  1. تعزيز مرونة التشفير: يجب أن يكون المستخدمون قادرين على تغيير المفاتيح والخوارزميات بطريقة بسيطة.
  2. تفعيل مراجعات الأمان: يهدف Tink إلى السماح للمستخدمين بكتابة التعليمات البرمجية التي يمكن مراجعة أمانها محليًا، من خلال توفير واجهات تقدّم ضمانات أمان واضحة.

الآليات الرئيسية التي يستخدمها Tink لتحقيق هذه الأهداف هي كما يلي:

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

تشرح الأقسام التالية هذه المفاهيم بمزيد من التفصيل.

رشاقة الرموز

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

مراجعات حول الأمان والعقارات المحلية

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

لمعرفة كيفية استخدام ذلك، افترض أن أحد المهندسين يريد تخزين بعض المعرفات الحساسة في ملف تعريف ارتباط المستخدم. قد يوفرون فئة مثل ما يلي:

class IdEncrypter {
  public static IdEncrypter createFromAead(Aead aead);

  public String encrypt(long id) throws GeneralSecurityException;
  public long decrypt(String encrypted) throws GeneralSecurityException;
};

يؤدي اجتياز Aead إلى الحصول على السمات التالية:

  1. يشير الرمز إلى أنّ أداء IdEncrypter يتطلّب نظام تشفير يتضمّن خصائص الأمان التي يوفّرها Aead. في المقابل، لن يكفي استخدام الترميز DeterministicAead لأنّه يتطلّب استخدام IdEncrypter تشفيرًا للتشفير نفسه. من ناحية أخرى، قد يكون استخدام نسخة افتراضية من برنامج تشفير AES GCM (أحد نماذج Aead) معقدًا للغاية، إذ يكفي استخدام أي Aead لـ IdEncrypter لأداء مهمته، ولا يلزم أن يكون خوارزمية واحدة محدّدة.
  2. يمكن لمراجعة الأمان أن تأخذ هذه النقطة في الاعتبار. ولا يحتاج مراجع الأمان إلى مراجعة مستودع الرموز بالكامل للتحقّق مما إذا أنشأ شخص ما فئة فرعية من Aead غير آمنة للاستخدام مع IdEncrypter. بدلاً من ذلك، يوفر Tink خصائص أمان تمتلكها جميع كائنات Aead، ويمكن للمراجع التحقق من أنها كافية.

وعلى وجه الخصوص، تتطلب النقطة الثانية الكثير من العناية. غالبًا ما يطلب المستخدمون إضافة خوارزميات "ليست بالضبط" Aead. توضح النقطة السابقة سبب خطورة هذا الأمر: إذا كان هناك أي تنفيذ لـ Aead لا يوفر ضمانات الأمان المطلوبة، يمكن أن يصبح IdEncrypter غير آمن، ويحتاج المهندس الذي يجري مراجعة أمان إلى فحص رمز إضافي للتأكد من إنشاء مثيل الكائن بشكل صحيح.