ماهو التشفير التماثلي Homomorphic Encryption؟

التشفير التماثلي (Homomorphic Encryption) هو تشفير يسمح لك بالقيام بعمليات حسابية على النص المشفر (Ciphertext) مثل الجمع والضرب، بحيث يكون ناتج هذه العمليات نص مشفر اخر يحمل نتيجة العملية الحسابية.

عند ذكر مصطلح “نص مشفر” فإننا نعني هنا ارقام وليس احرف. أي أن الـ Homomorphic Encryption يسمح لك بالقيام بعمليات حسابية الارقام وهي مشفرة والحصول على نتيجة مشفرة ايضاً دون الحاجة إلى معرفة هذه الارقام!

لم نحتاج؟

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

١. تشفير جميع البيانات على مزود الخدمة السحابية وفك التشفير فقط عند الرغبة بالقيام بعمليات حسابية

في هذه الحالة، سيقوم أحمد بتشفير البيانات باستخدام أي طريقة تشفير يرغب بها وحفظ البيانات المشفرة لدى مزود الخدمة السحابية. وبالتالي، عند رغبة أحمد بالقيام بعمليات حسابية على البيانات المشفرة فسيقوم بالخطوات التالية:

  • تحميل البيانات المشفرة من قرص التخزين (سواء تم حفظها في قاعدة بيانات او على شكل ملف نصي) إلى الذاكرة العشوائية (RAM)
  • فك التشفير عن البيانات المشفرة في الذاكرة العشوائية (RAM) باستخدام مفتاح التشفير الخاص (Private Key)
  • القيام بالعمليات الحسابية على الارقام وهي غير مشفرة (Plaintext)
  • تشفير نتيجة العمليات الحسابية
  • حذف النص الغير مشفر (Plaintext) من الذاكرة العشوائية
  • ارسال الناتج إلى كمبيوتره الشخصي
  • فك التشفير عن نتيجة العمليات الحسابية باستخدام مفتاح التشفير الخاص (Private Key)
رسم توضيحي يبين عملية اجراء العمليات الحسابية على البيانات بعد فك التشفير عنها لدى مزود الخدمة السحابية

أي أن أحمد سيقوم بفك تشفير البيانات مؤقتًا وهي لدى مزود الخدمة السحابية والقيام بالعمليات الحسابية عليها ومن ثم حذف البيانات الغير مشفرة (Plaintext) من الذاكرة العشوائية والحصول على النتائج، وبهذه الطريقة، سيضمن أحمد خصوصية وسلامة بياناته. ولكن… ماذا لو تمكن مزود الخدمة السحابية أو اي مخترق من الوصول إلى البيانات الغير مشفره (Plaintext) أثناء معالحجتها في الذاكرة العشوائية (RAM)؟ وماذا إذا تمكن مزود الخدمة السحابية أو المخترق من الوصول إلى مفتاح التشفير الخاص (Private Key) أثناء عملية فك التشفير لمعالجة البيانات؟!

رسم توضيحي يبين امكانية الوصول للبيانات الغير مشفرة (Plaintext) اثناء معالجتها في الذاكرة العشوائية (RAM) ، بالاضافة الى مفتاح التشفير الخاص (Private Key) من قبل اي شخص غير مصرح له.

٢. تشفير جميع البيانات على مزود الخدمة السحابية والقيام بالعمليات الحسابية على البيانات وهي مشفرة لدى مزود الخدمة السحابية

في هذه الحالة، سيقوم أحمد بتشفير بياناته باستخدام احد خوارزميات الـ Homomorphic Encryption وحفظها وهي مشفرة على مزود الخدمة السحابية. عند رغبة أحمد في القيام بعمليات حسابية، سيقوم بالتالي:

  • تحميل البيانات المشفرة من قرص التخزين (سواء تم حفظها في قاعدة بيانات او على شكل ملف نصي) إلى الذاكرة العشوائية (RAM)
  • القيام بالعمليات الحسابية على البيانات المشفرة (دون الحاجة لفك التشفير) باستخدام مفتاح التشفير العام (Public Key)
  • الحصول على نتيجة العمليات الحسابية وهي مشفرة (Ciphertext)
  • ارسال نتائج العمليات الحسابية المشفرة الى كمبيوتره الشخصي
  • فك التشفير عن نتيجة العمليات الحسابية باستخدام مفتاح التشفير الخاص (Private Key)

أي أن أحمد لن يضطر إلى فك تشفير البيانات لاجراء العمليات الحسابية لدى مزود الخدمة السحابية. وبالتالي، لن يتمكن مزود الخدمة السحابية المتطفل، او المخترق من معرفة البيانات التي يتم معالجتها. فكل ما يمكنهم رؤيته هي بيانات مشفرة وعمليات حسابية على هذه البيانات المشفرة، ونتائج مشفرة! والطريقة الوحيدة لمعرفة البيانات او النتائج هي بفك التشفير عنها باستخدام مفتاح التشفير الخاص (والذي لا يملكه سوى أحمد)، أو القيام بعمليات تخمين لمفتاح التشفير! تمنياتي لك بالتوفيق في ذلك 🙂

انواع الـ Homomorphic Encryption

قد يخطر ببالك الان ان كل شيئ واضح بخصوص الـ HE وامكانياته، فلم لا يتم استخدامه دائمًا في جميع العمليات الحسابية؟! حسنا، في الحقيقة أن العمليات الحسابية التي يدعمها الـ HE محدودة و تستغرق وقت ومساحة عالية، وتختلف من نوع الى اخر. هنالك ثلاث انواع للتشفير التماثلي وهي:

  • Semi-Homomorphic Encryption
  • Partial Homomorphic Encryption
  • Fully Homomorphic Encryption

في الختام، هذه المقالة هي مقدمة بسيطة جدًا للتشفير التماثلي Homomorphic Encryption وارجو ان اكون قد وفقت في ايصال المعلومة بشكل مبسط وصحيح!