التشفير من جانب العميل لقوائم الانتظار

تدعم مكتبات عميل Azure Queue Storage لـ .NET وPython تشفير البيانات داخل تطبيقات العميل قبل التحميل إلى Azure Storage، وفك تشفير البيانات أثناء التنزيل إلى العميل. تدعم مكتبات العملاء أيضًا التكامل مع Azure Key Vault لإدارة مفاتيح حساب التخزين.

هام

يدعم Azure Storage كلاً من التشفير من جانب الخدمة والعميل. بالنسبة لمعظم السيناريوهات، توصي Microsoft باستخدام ميزات التشفير من جانب الخدمة لسهولة الاستخدام في حماية بياناتك. لمعرفة المزيد حول التشفير من جانب الخدمة، راجع تشفير تخزين Azure للبيانات الثابتة.

التشفير من جانب العميل

تستخدم مكتبة عميل Queue Storage AES لتشفير بيانات المستخدم. هناك إصداران من التشفير من جانب العميل متوفران في مكتبة العميل:

تحذير

لم يعد استخدام الإصدار 1 من التشفير من جانب العميل مستحسنًا بسبب ثغرة أمنية في تنفيذ مكتبة العميل لوضع CBC. لمزيد من المعلومات حول هذه الثغرة الأمنية، راجع Azure Storage تحديث التشفير من جانب العميل في SDK لمعالجة الثغرة الأمنية. إذا كنت تستخدم حاليا الإصدار 1، نوصي بتحديث التطبيق الخاص بك لاستخدام الإصدار 2 وترحيل بياناتك. راجع القسم التالي، التخفيف من الثغرة الأمنية في تطبيقاتك، لمزيد من الإرشادات.

التخفيف من الثغرة الأمنية في تطبيقاتك

نظرا لثغرة أمنية تم اكتشافها في تنفيذ مكتبة عميل Queue Storage لوضع CBC، توصي Microsoft باتخاذ إجراء واحد أو أكثر من الإجراءات التالية على الفور:

  • ضع في اعتبارك استخدام ميزات التشفير من جانب الخدمة بدلاً من التشفير من جانب العميل. لمزيد من المعلومات حول ميزات التشفير من جانب الخدمة، راجع تشفير Azure Storage للبيانات غير النشطة.

  • إذا كنت بحاجة إلى استخدام التشفير من جانب العميل، فرحل تطبيقاتك من التشفير من جانب العميل للإصدار 1 إلى التشفير من جانب العميل للإصدار 2.

يلخص الجدول التالي الخطوات التي تحتاج إلى اتخاذها إذا اخترت ترحيل تطبيقاتك إلى التشفير من جانب العميل v2:

حالة التشفير من جانب العميل الإجراءات المستحسنة
يستخدم التطبيق تشفيرًا من جانب العميل إصدارًا من مكتبة العميل يدعم فقط التشفير من جانب العميل للإصدار 1. تحديث التطبيق الخاص بك لاستخدام إصدار من مكتبة العميل التي تدعم التشفير من جانب العميل للإصدار 2. راجع مصفوفة دعم SDK للتشفير من جانب العميل للحصول على قائمة بالإصدارات المدعومة.

تحديث التعليمات البرمجية لاستخدام التشفير من جانب العميل للإصدار 2.
يستخدم التطبيق تشفيرًا من جانب العميل إصدارًا من مكتبة العميل يدعم التشفير من جانب العميل للإصدار 2. تحديث التعليمات البرمجية لاستخدام التشفير من جانب العميل للإصدار 2.

بالإضافة إلى ذلك، توصي Microsoft باتخاذ الخطوات التالية للمساعدة في تأمين بياناتك:

  • تكوين حسابات التخزين الخاصة بك لاستخدام نقاط النهاية الخاصة لتأمين جميع نسبة استخدام الشبكة بين الشبكة الظاهرية (VNet) وحساب التخزين الخاص بك عبر ارتباط خاص. لمزيد من المعلومات، راجع استخدام نقاط النهاية الخاصة ل Azure Storage.
  • التقييد المتعلق بالوصول إلى شبكة الاتصال بشبكات محددة فقط.

مصفوفة دعم SDK للتشفير من جانب العميل

يوضح الجدول التالي إصدارات مكتبات العميل ل .NET وPython التي تدعم إصدارات التشفير من جانب العميل:

.NET Python
التشفير من جانب العميل v2 وv1 الإصدارات 12.11.0 والإصدارات الأحدث الإصدارات 12.4.0 والإصدارات الأحدث
تشفير من جانب العميل الإصدار 1 فقط الإصدارات 12.10.0 والإصدارات السابقة الإصدارات 12.3.0 والإصدارات السابقة

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

كيف يعمل التشفير من جانب العميل

تستخدم مكتبات عملاء Azure Queue Storage تشفير المغلفات لتشفير بياناتك وفك تشفيرها من جانب العميل. يقوم تشفير المغلفات بتشفير مفتاح بمفتاح إضافي واحد أو أكثر.

تعتمد مكتبات عميل Queue Storage على Azure Key Vault لحماية المفاتيح المستخدمة للتشفير من جانب العميل. لمزيدٍ من المعلومات حول Azure Key Vault، راجع ما هو Azure Key Vault؟

التشفير وفك التشفير عبر تقنية المغلف

يعمل التشفير عبر تقنية المغلف على النحو التالي:

  1. تُنشئ مكتبة عميل تخزين Azure مفتاح تشفير محتوى (CEK)، وهو مفتاح متماثل يُستخدم مرة واحدة.

  2. تُشفر بيانات المستخدم باستخدام CEK.

  3. ثم يتم التفاف CEK (مشفرة) باستخدام مفتاح تشفير المفتاح (KEK). يُحدد معرّف مفتاح KEK، ويمكن أن يكون زوج مفاتيح غير متماثل أو مفتاحًا متماثلًا. يمكنك إدارة KEK محليًا أو تخزينه في Key Vault Azure.

    مكتبة عميل Azure Storage نفسها ليس لديها حق الوصول إلى KEK. تستدعي المكتبة خوارزمية تضمين المفاتيح التي يوفرها Key Vault. يمكن للمستخدمين اختيار استخدام موفرين مخصصين لتضمين/إلغاء تضمين المفتاح إذا رغبوا في ذلك.

  4. ثم يتم تحميل البيانات المشفرة إلى Azure Queue Storage. يتم استيفاء المفتاح المغلف مع بعض بيانات تعريف التشفير الإضافية مع البيانات المشفرة.

يعمل فك التشفير عبر تقنية المغلف على النحو التالي:

  1. تفترض مكتبة عميل Azure Storage أن المستخدم يدير KEK إما محليًا أو في Azure Key Vault. لا يحتاج المستخدم إلى معرفة المفتاح المحدد الذي تم استخدامه للتشفير. بدلاً من ذلك، يمكن إعداد محلل المفاتيح، الذي يحل معرفات المفاتيح المختلفة للمفاتيح، واستخدامه.
  2. تُنزل مكتبة العميل البيانات المشفرة إلى جانب أي مواد تشفير مُخزنة على Azure Storage.
  3. ثم يتم فك تشفير CEK الملتفة (فك تشفيرها) باستخدام KEK. لا تتمتع مكتبة العميل بإمكانية الوصول إلى KEK أثناء هذه العملية، ولكنها تستدعي فقط خوارزمية إلغاء التحويل البرمجي ل Azure Key Vault أو مخزن المفاتيح الآخر.
  4. تستخدم مكتبة العميل CEK لفك تشفير بيانات المستخدم المشفرة.

تشفير/فك تشفير الرسائل

نظرًا لأن رسائل قائمة الانتظار يمكن أن تكون من أي تنسيق، تحدد مكتبة العميل تنسيقًا مخصصًا يتضمن متجه تهيئة (IV) ومفتاح تشفير المحتوى المُشفر (CEK) في نص الرسالة.

أثناء التشفير، ستُنشئ مكتبة العميل IV عشوائيًا من 16 بايت بجانب CEK من 32 بايت، وتُنفذ تشفير المغلف لنص رسالة قائمة الانتظار باستخدام هذه المعلومات. ثم يُضاف CEK المُضمن وبعض بيانات تعريف التشفير الإضافية إلى رسالة قائمة الانتظار المُشفرة. يتم تخزين هذه الرسالة المعدلة على الخدمة.

<MessageText>{"EncryptedMessageContents":"6kOu8Rq1C3+M1QO4alKLmWthWXSmHV3mEfxBAgP9QGTU++MKn2uPq3t2UjF1DO6w","EncryptionData":{…}}</MessageText>

أثناء فك التشفير، يُستخرج المفتاح المُضمن من رسالة قائمة الانتظار ويُلغى تضمينه. يُستخرج IV أيضًا من رسالة قائمة الانتظار ويُستخدم مع المفتاح غير المُضمن لفك تشفير بيانات رسالة قائمة الانتظار. بيانات تعريف التشفير صغيرة (أقل من 500 بايت)، لذلك في حين أنها تحسب نحو حد 64 كيلوبايت لرسالة قائمة انتظار، يجب أن يكون التأثير قابلا للإدارة. الرسالة المشفرة مرمزة ب Base64، كما هو موضح في القصاصة البرمجية أعلاه، والتي توسع حجم الرسالة التي يتم إرسالها.

نظرا للطبيعة قصيرة الأجل للرسائل في قائمة الانتظار، لا يجب أن يكون فك تشفير رسائل قائمة الانتظار وإعادة تشفيرها بعد التحديث إلى التشفير من جانب العميل v2 ضروريا. يتم تدوير أي رسائل أقل أمانا أثناء استهلاك قائمة الانتظار العادية.

التشفير والأداء من جانب العميل

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

الخطوات التالية