خدمات التشفير
الشبكات العامة مثل الإنترنت لا توفر وسيلة للاتصال الآمن بين الهيئات المختلفة. الاتصال عبر شبكات مثل تلك يكون عُرضة للقراءة أو حتى التعديل بواسطة جهات خارجية غير مصرّح بها. التشفير يساعد على حماية البيانات من عرضها، و يوفر طرق للكشف عن ما إذا كان قد تم تعديل البيانات و يساعد على توفير وسيلة اتصال آمنة عبر قنوات غير آمنة بخلاف ذلك. على سبيل المثال، يمكن تشفير البيانات باستخدام خوارزمية تشفير، ثم إرسالها في حالة مشفّرة، و فك تشفيرها فيما بعد بواسطة الجهة المقصودة. إذا تم اعتراض البيانات المشفرة بواسطة جهة خارجية، فسيكون من الصعب فك التشفير.
في .NET Framework الفئات في مساحة الاسم System.Security.Cryptography تقوم بإدارة العديد من تفاصيل التشفير نيابةً عنك. بعضها يُعد برامج تضمين لواجهة Microsoft Cryptography API (CryptoAPI) الغير مُدارة، بينما البعض الآخر يُعد تطبيقات مُدارة تماماً. ليس من الضروري أن تكون خبيراً في عمليات التشفير لاستخدام هذه الفئات. عندما تقوم بإنشاء مثيل جديد من أحد فئات خوارزميات التشفير، يتم إنشاء المفاتيح تلقائياً لتسهيل الاستخدام، و تكون الخصائص الافتراضية آمنة قدر الإمكان.
و هذه النظرة العامة توضح ملخص لأساليب التشفير و الممارسات المعتمدة من قِبل .NET Framework، بما في ذلك ملفات البيان ClickOnce، و Suite B، و دعم الجيل التالي من التشفير (CNG) و التي تم تقديمها في NET Framework. الإصدار 3.5.
تشتمل هذه النظرة العامة على الأقسام التالية:
خوارزميات التشفير الأولية
التشفير بواسطة مفتاح سري
التشفير بواسطة المفتاح العام
التوقيعات الرقمية
قيم التجزئة
إنشاء الأرقام العشوائية
ملفات البيان ClickOnce
دعم Suite B
فئات الجيل التالي من التشفير (CNG)
مواضيع ذات صلة
و للحصول على معلومات إضافية حول التشفير و حول خدمات و مكونات و أدوات Microsoft، التي تمكنك من إضافة الأمان بالتشفير إلى التطبيقات الخاصة بك راجع قسم تطوير Win32 و COM، الأمان في هذه الوثائق.
خوارزميات التشفير الأولية
و الحالة النموذجية التي يتم فيها استخدام التشفير، هو حين يقوم طرفين (Alice و Bob) بالاتصال عبر قناة غير آمنة. يريد كلاً من Alice و Bob التأكد من أن الاتصال الخاص بهم يظل غير مفهوماً لأي شخص قد يقوم بالاستماع للاتصال. و علاوة على ذلك، بسبب تواجد Alice و Bob في مواقع بعيدة، فيجب على Alice التأكد من أن المعلومات التي تستقبلها من Bob لم يتم تعديلها بواسطة أي شخص أثناء الإرسال. و بالإضافة إلى ذلك، يجب عليها التأكد من أن المعلومات تنشأ بالفعل من Bob و ليست من شخص ينتحل شخصية Bob.
و يُستخدم التشفير لتحقيق الأهداف التالية:
السرّية: للمساعدة في حماية هوية المستخدم أو البيانات لكي لا يتم قراءتها.
تكامل البيانات: للمساعدة في حماية البيانات من التغيير.
المصادقة: للتأكد من أن البيانات تنشأ من جهة محددة.
عدم القدرة على الإنكار: لمنع جهة ما من إنكار أنها هي التي قامت بإرسال رسالة ما.
و لتحقيق هذه الأهداف، يمكنك استخدام تركيبة من الخوارزميات و الممارسات تسمى خوارزميات التشفير الأولية لإنشاء نظام لمخطط التشفير. يسرد الجدول التالي خوارزميات التشفير الأولية والاستخدامات الخاصة بهم.
خوارزمية التشفير الأولية |
استخدم الأمرين |
---|---|
التشفير بواسطة مفتاح سري (التشفير المتماثل) |
يقوم بتنفيذ عمليات تحويل على البيانات لمنع قراءتها بواسطة جهات خارجية. يستخدم هذا النوع من التشفير مفتاح سرّي واحد مشترك، لتشفير و فك تشفير البيانات. |
التشفير بواسطة المفتاح العام (التشفير غير المتماثل) |
يقوم بتنفيذ عمليات تحويل على البيانات لمنع قراءتها بواسطة جهات خارجية. يستخدم هذا النوع من التشفير زوج مفاتيح عام/خاص لتشفير و فك تشفير البيانات. |
التوقيع التشفيري |
يساعد على التحقق من أن البيانات تنشأ من جهة معينة عن طريق إنشاء توقيع رقمي فريد لهذه الجهة. تستخدم هذه العملية أيضاً دوال التجزئة. |
تجزئات التشفير |
لتحويل البيانات التي لها أي طول إلى تسلسل بايت بطول ثابت. قيم التجزئة فريدة من نوعها إحصائياً; فعلى سبيل المثال تجزئة تسلسلين حجمهم 2 بايت لن يكون لهم نفس القيمة. |
العودة إلى الأعلى
التشفير بواسطة مفتاح سري
خوارزميات التشفير بواسطة مفتاح سرّي تستخدم مفتاح سرّي واحد مشترك، لتشفير و فك تشفير البيانات. يجب عليك تأمين المفتاح من الوصول بواسطة وكلاء غير مصرّح لهم، و ذلك لأن أي طرف لديه المفتاح يمكنه استخدامه لفك تشفير البيانات الخاصة بك أو تشفير بيانات خاصة بهم مع إدعاء أنه قد تم إنشاؤها بواسطتك.
يُشار أيضاً للتشفير بواسطة مفتاح سرّي باسم التشفير المتماثل و ذلك لأنه يتم استخدام نفس المفتاح للتشفير وفك التشفير. و تُعد خوارزميات التشفير بواسطة مفتاح سرّي سريعة جدًا (مقارنة بخوارزميات المفتاح العام) وتُعد أيضاً مناسبة لتنفيذ تحويلات التشفير على تدفقات كبيرة من البيانات. خوارزميات التشفير غير المتماثل مثل RSA تُعد محدودة حسابياً في مقدار البيانات التي يمكنها تشفيرها. خوارزميات التشفير المتماثل بشكل عام ليست لديها تلك المشاكل.
يتم استخدام نوع من خوارزميات التشفير بواسطة المفتاح السرّي تسمى تشفير الكتلة و التي تشفّر كتلة واحد في المرة الواحدة. خوارزميات التشفير بالكتلة مثل مقياس تشفير البيانات (DES)، TripleDES، و مقاييس التشفير المتقدمة (AES) تقوم بالتحويل التشفيري لكتلة إدخال حجمها n بايت إلى كتلة خارجة من وحدات البايت المشفّرة. و إذا كنت تريد تشفير أو فك تشفير تسلسل من البايت، يجب عليم فعل ذلك كتلة بكتلة. و لأن nيُعد رقماً صغيراً (8 بايت لـ DES و 16 بايت لـ TripleDES [الافتراضي]، 24 بايت أو 32 بايت لـ AES)، فإن قيم البيانات الأكبر من nيجب تشفيرها كتلة واحد في كل مرة. قيم البيانات التي تكون أصغر من n يجب توسيعها إلى n ليتم التعامل معها.
و أحد النماذج البسيطة للتشفير بالكتلة يسمى وضع كتاب الشفرة الإلكتروني (ECB). و لا يُعتبر وضع ECB آمناً، و ذلك لأنه لا يستخدم متجه تهيئة لتهيئة الكتلة الأولى من النص العادي. و بالنسبة للمفتاح السرّي المُعطى k، ستقوم خوارزمية التشفير بالكتلة التي لا تستخدم متجه تهيئة بتشفير نفس الكتلة المُدخلة من النص العادي إلى نفس كتلة النص المشفر. و لذلك، إذا كانت لديك كتل مُكررة في تدفق إدخال النص العادي، فسيكون لديك كُتل مكررة في تدفق النص المشفّر الخارج. و هذه الكتل المتكررة تُنبه المستخدمين غير المصرّح بهم للتشفير الضعيف المُستخدم، و الخوارزميات التي من الممكن أن يكون قد تم استخدامها، وأوضاع الهجوم المحتملة. و لذلك فإن وضع التشفير ECB عُرضة تماماً للتحليل، و في النهاية، اكتشاف المفتاح.
فئات التشفير بالكتلة التي يتم توفيرها في مكتبة الفئات الأساسية تستخدم وضع تسلسل يُسمى تسلسل كتلة التشفير (CBC)، و بالرغم من ذلك يمكنك تغيير هذا الوضع الافتراضي إذا أردت.
تتغلب خوارزميات تشفير CBC على المشاكل المرتبطة بخوارزميات تشفير ECB باستخدام متجه تهيئة (IV) لتشفير الكتلة الأولى من النص العادي. كل كتلة تالية من النص العادي تتعرض لعملية OR حصرية (XOR) لكل بت (XOR) مع كتلة النص المشفّر السابقة قبل أن يتم تشفير هذه الكتلة. و بذلك، كل كتلة من النص المشفّر تعتمد على كافة الكتل السابقة. و عند استخدام هذا النظام، فإن رؤوس الرسائل الشائعة المستخدمة، و التي قد تكون معروفةً للمستخدم الغير مصرّح له، لا يمكن هندستها عكسياً للحصول على المفتاح.
و أحد طرق اختراق البيانات التي يتم تشفيرها بتشفير CBC هي إجراء بحث شامل لكل مفتاح مُحتمل. و بناءاً على حجم المفتاح الذي يتم استخدامه لتنفيذ التشفير، هذا النوع من البحث يستهلك وقتًا كبيرًا للغاية حتى باستخدام أسرع أجهزة الكمبيوتر وهو لذلك غير عملي. و أحجام المفاتيح الأكبر تكون أكثر صعوبة في فك تشفيرها. و على الرغم من أن التشفير لا يجعل استرداد البيانات المشفّرة مستحيلاً نظرياً بالنسبة للمتطفل، إلا أنه يرفع تكلفة هذا الإجراء. إذا كان إجراء البحث الشامل يستغرق ثلاثة أشهر لاسترداد بيانات ذات معنى فقط لأيام قليلة، فإن أسلوب البحث الشامل غير عملي.
و من عيوب التشفير بواسطة المفتاح السرّي أنه يفترض إتفاق الطرفين على المفتاح و متجه IV و معرفتهم بقيمهم. لا يُعتبر متجه التهيئة IV سرّياً و يمكن إرساله بتنسيق النص العادي مع الرسالة. ومع ذلك، يجب أن يتم الاحتفاظ بالمفتاح سرّياً من المستخدمين الغير مصرّح بهم. وبسبب هذه المشكلات، عادةً ما يُستخدم التشفير بواسطة مفتاح سرّي مع التشفير بالمفتاح العام للتواصل ومعرفة قيم المفتاح و IV بشكل سري.
و بفرض أن Alice و Bob هما جهتان يريدان الاتصال عبر قناة غير آمنة، فيمكنهم استخدام التشفير بواسطة المفتاح السرّي كما يلي: يتفق كل من Alice و Bob على استخدام خوارزمية واحدة (AES، على سبيل المثال) باستخدام مفتاح و متجه IV محددين. تقوم Alice بإنشاء الرسالة وإنشاء تدفق الشبكة (ربما ممر بيانات مسمى أو بريد إلكتروني عبر الشبكة) لإرسال الرسالة عليه. و بعد ذلك، تقوم بتشفير النص باستخدام المفتاح و متجه IV ثم ترسل الرسالة المشفرة و متجه IV إلى Bob عبر الإنترانت. Bob يتلقى النص المشفر و يفك تشفيره باستخدام متجه IV و المتفق عليه مُسبقاً. إذا تم اعتراض الإرسال، لا يمكن لمن قام بذلك باسترداد الرسالة الأصلية لأنه لا يعرف المفتاح. و في هذا السيناريو، يجب أن يظل المفتاح فقط سرياً. في سيناريو أكثر واقعية، إما Alice أو Bob يقوم بإنشاء مفتاح سري ويستخدم التشفير بالمفتاح العام (غير متماثل) لنقل المفتاح السري (المتماثل) إلى الجهة الأخرى. للحصول على مزيد من المعلومات حول التشفير بالمفتاح العام، راجع القسم التالي.
يوفر .NET Framework الفئات التالية التي تطبق خوارزميات التشفير بواسطة مفتاح سرّي:
AesManaged (المُقدمة في NET Framework. الإصدار 3.5).
HMACSHA1 (هذه خوارزمية تشفير بالمفتاح السرّي تقنيًا لأنها تمثّل رمز مصادقة الرسالة الذي يتم حسابه باستخدام دالة تجزئة تشفير مع مفتاح سرّي. راجع قيم التجزئة، لاحقًا في هذا الموضوع.)
العودة إلى الأعلى
التشفير بواسطة المفتاح العام
التشفير بالمفتاح العام يستخدم مفتاحاً خاصاً و هو الذي يجب أن يتم حفظه سرياً من المستخدمين غير المصرّح بهم و مفتاحاً عاماً و هو الذي يمكن أن يكون عاماً و يعرفه أي شخص. و يكون المفتاح الخاص والمفتاح العام مرتبطان رياضياً; بمعنى أن البيانات التي يتم تشفيرها بالمفتاح العام يمكن فك تشفيرها فقط بالمفتاح الخاص، و البيانات التي يتم توقيعها بالمفتاح الخاص يمكن التحقق منها بالمفتاح العام فقط. يمكن إعطاء المفتاح العام لأي أحد; و يتم استخدامه لتشفير البيانات المراد إرسالها إلى من يحتفظ بالمفتاح الخاص. خوارزميات التشفير بالمفتاح العام تُعرف أيضاً بالخوارزميات غير المتماثلة و ذلك لأنها تتطلب مفتاحاً لتشفير البيانات و مفتاحاً آخر لفك تشفير البيانات. و هناك قاعدة تشفير أساسية تمنع إعادة استخدام المفتاح، و يجب أن يكون كلا المفتاحين فريدين من نوعهما لكل جلسة عمل في الاتصال. و على الرغم من ذلك، عملياً، تكون المفاتيح الغير متماثلة عموماً طويلة الأمد.
قد يستخدم طرفين (Alice و Bob) التشفير بالمفتاح العام كما يلي: أولاً، تُنشئ Alice زوج مفاتيح عام/خاص. إذا أراد Bob إرسال رسالة مشفرة إلى Alice، فسيطلب منها المفتاح العام الخاص بها. تُرسل Alice المفتاح العام الخاص بها عبر الشبكة الغير آمنة، ويستخدم Bob هذا المفتاح لتشفير الرسالة. يرسل Bob الرسالة المشفرة إلى Alice، ثم تفك Alice التشفير باستخدام المفتاح الخاص التابع لها. إذا استقبل Bob مفتاح Alice عبر قناة غير آمنة مثل شبكة عامة، فسيكون Bob عرضة لهجوم الرجل في الوسط (الدخيل). و لذلك، يجب على Bob التحقق مع Alice من أن لديه النسخة الصحيحة من المفتاح العام التابع لها.
أثناء إرسال Alice للمفتاح العام الخاص بها، قد يعترض شخص غير مصرح به المفتاح. و علاوة على ذلك، فإن نفس الشخص قد يعترض الرسائل المشفرة من Bob. ومع ذلك، فإن هذا الشخص لا يمكنه فك تشفير الرسالة باستخدام المفتاح العام. لأنه يمكن فك تشفير الرسالة فقط بواسطة المفتاح الخاص التابع لـ Alice، و هو الذي لم يتم إرساله. Alice لا تستخدم المفتاح الخاص التابع لها لتشفير رسالة الرد إلى Bob وذلك لأن أي شخص معه المفتاح العام قد يفك تشفير الرسالة. إذا أرادت Alice إرسال رسالة رد إلى Bob فستطلب من Bob المفتاح العام الخاص به ثم تقوم بتشفير الرسالة الخاصة بها باستخدام هذا المفتاح العام. يقوم Bob بعد ذلك بفك تشفير الرسالة باستخدام المفتاح الخاص التابع له و المقترن بالمفتاح العام.
في هذا السيناريو، يستخدم Alice و Bob التشفير بالمفتاح العام (الغير متماثل) لنقل مفتاح سر (متماثل) و استخدام التشفير بواسطة مفتاح سرّي واستخدامها لبقية جلسة العمل الخاصة بهم.
تقدم القائمة التالية مقارنات بين خوارزميات التشفير بالمفتاح العام و التشفير بمفتاح سرّي:
تستخدم خوارزميات التشفير بالمفتاح العام مخزن مؤقت بحجم ثابت، بينما تستخدم خوارزميات التشفير بالمفتاح السرّي مخزن مؤقت بحجم متغير.
لا يمكن استخدام خوارزميات التشفير بالمفتاح العام لعمل تسلسل للبيانات معاً في تدفقات مثلما تفعل خوارزميات التشفير بالمفتاح السرّي، وذلك لأنه يمكن تشفير كميات صغيرة فقط من البيانات. و لذلك، لا تستخدم العمليات الغير متماثلة نفس نموذج التدفق مثل العمليات المتماثلة.
التشفير بالمفتاح العام يتضمن مساحة مفتاح أكبر (أي نطاق القيم المحتملة للمفتاح) من التشفير بواسطة مفتاح سريّ. و لذلك، يُعد التشفير بالمفتاح العام أقل عرضة للهجمات الشاملة و التي تجرب كل مفتاح مُحتمل.
المفاتيح العامة سهلة التوزيع لأنه لا يجب تأمينها، بشرط أن يوجد طريقة للتحقق من صحة هوية المُرسِل.
يمكن استخدام بعض خوارزميات المفتاح العام (مثل RSA و DSA ولكن ليس Diffie-Hellman) لإنشاء توقيعات رقمية للتحقق من هوية مُرسِل البيانات.
خوارزميات المفتاح العام بطيئة جداً مقارنة بخوارزميات التشفير بواسطة مفتاح سرّي، وهي غير مصممة لتشفير كميات كبيرة من البيانات. خوارزميات المفتاح العام مفيدة فقط في نقل كميات صغيرة جداً من البيانات. و بشكل عام، يُستخدم التشفير بالمفتاح العام لتشفير مفتاح و متجه IV ليتم استخدامهم من قِبل خوارزمية تشفير بواسطة مفتاح سرّي. و بعد نقل المفتاح و متجه IV، يتم استخدام التشفير بواسطة المفتاح السرّي للفترة المتبقية من جلسة العمل.
و يوفر .NET Framework الفئات التالية التي تطبق خوارزميات التشفير بالمفتاح العام:
ECDiffieHellman (الفئة الأساسية)
ECDiffieHellmanCngPublicKey (الفئة الأساسية)
ECDiffieHellmanKeyDerivationFunction (الفئة الأساسية)
تسمح RSA بالتشفير والتوقيع، ولكن يمكن استخدام DSA فقط للتوقيع و Diffie-Hellman يمكن استخدامها فقط لإنشاء المفاتيح. و بشكل عام، فإن خوارزميات التشفير بالمفتاح العام محدودة في استتخداماتها أكثر من خوارزميات التشفير بمفتاح خاص.
العودة إلى الأعلى
التوقيعات الرقمية
يمكن أيضاً استخدام خوارزميات المفتاح العام لعمل توقيعات رقمية. تقوم التوقيعات الرقمية بمصادقة هوية المُرسِل (إذا كنت تثق بالمفتاح العام للمُرسِل) و تساعد على حماية تكامل البيانات. باستخدام المفتاح العام المُنشأ بواسطة Alice، فإن مُستلِم بيانات Alice يمكنه التحقق من أن Alice قامت بإرسالها عن طريق مقارنة التوقيع الرقمي على بيانات Alice و المفتاح العام الخاص بها.
و لاستخدام التشفير بالمفتاح العام لتوقيع رسالة رقمياً، تقوم Alice أولاً بتطبيق خوارزمية تجزئة على الرسالة لإنشاء ملخّص الرسالة. و ملخّص الرسالة هو تمثيل مضغوط و فريد للبيانات. تشفّر Alice ملخّص الرسالة بعد ذلك باستخدام المفتاح الخاص التابع لها لإنشاء التوقيع الشخصي الخاص بها. و عند استلام الرسالة والتوقيع، يقوم Bob بفك تشفير التوقيع باستخدام مفتاح Alice العام لاسترداد ملخّص الرسالة و يقوم بتجزئة الرسالة باستخدام نفس خوارزمية التجزئة المُستخدمة بواسطة Alice. إذا كان ملخّص الرسالة الذي يحسبه Bob متطابق تماماً مع ملخّص الرسالة المستلمة من Alice، فسيتأكد Bob من أن الرسالة تأتي من مالك المفتاح الخاص و أنه لم يتم تعديل البيانات. إذا وثق Bob من أن Alice هي مالكة المفتاح الخاص، فإنه يعرف أن الرسالة أتت من Alice.
ملاحظة |
---|
يمكن التحقق من التوقيع بواسطة أي شخص لأن المفتاح العام تمت مشاركته مع الجميع و عادةً ما يتم تضمينه في تنسيق التوقيع الرقمي.هذا الأسلوب لا يحافظ على سريّة الرسالة; لتكون الرسالة سريّة، فإنه يجب أيضاً أن تكون مشفرة أيضاً. |
يوفر .NET Framework الفئات التالية التي تطبق خوارزميات التوقيع الرقمي:
ECDsa (الفئة الأساسية)
العودة إلى الأعلى
قيم التجزئة
خوارزميات التجزئة تقوم بعمل مخطط لتحويل القيم الثنائية التي لها أي طول إلى قيم ثنائية أصغر بطول ثابت، تُعرف بقيم التجزئة. و تُعد قيم التجزئة تمثيلاً رقمياً لجزء من البيانات. في حال قمت بتجزئة فقرة من نص عادي و قمت بتغيير و لو حرفاً واحداً من الفقرة فسوف تُنتج دالة التجزئة لاحقاً قيمة مختلفة. و إذا كانت دالة التجزئة قوية تشفيرياً، فإن القيمة الخاصة بها سوف تتغير بشكل كبير. على سبيل المثال، إذا تغيرت وحدة بت واحدة من الرسالة، فستغير دالة التجزئة القوية القيمة الناتجة بنسبة 50 بالمائة. قد تؤدي قيم مُدخلة عديدة إلى قيم تجزئة لها نفس القيمة. ومع ذلك، فإنه من غير العملي حسابياً إيجاد إدخالين مميزين لهما نفس قيمة التجزئة.
قد يستخدم طرفين (Alice و Bob) دالة تجزئة للتأكد من تكامل الرسالة. و سيختاروا خوارزمية تجزئة لتوقيع الرسائل الخاصة بهم. ستكتب Alice رسالة ثم تقوم بإنشاء تجزئة من هذه الرسالة باستخدام الخوارزمية المحددة. ثم سيتبعوا إحدى الطرق التالية:
ترسل Alice رسالة نص عادي و الرسالة المطبق عليها التجزئة (التوقيع الرقمي) إلى Bob. Bob يتلقى الرسالة و يقوم بتجزئتها و مقارنة قيمة التجزئة الخاصة به بقيمة التجزئة المستقبلة من Alice. إذا كانت قيم التجزئة متماثلة، فيعني ذلك أنه لم يتم تغيير الرسالة. إذا لم تكن القيم مطابقة، فيعني ذلك أنه تم تغيير الرسالة بعدما كتبتها Alice.
و لسوء الحظ، لا تؤدي هذه الطريقة إلى التحقق من و مصادقة المُرسِل. يمكن لأي شخص انتحال صفة Alice ثم إرسال رسالة إلى Bob. و يمكنهم استخدام نفس خوارزمية التجزئة لتوقيع الرسالة الخاصة بهم و كل ما يمكن لـ Bob تحديده هو أن الرسالة تُطابق التوقيع. و هذا نموذج واحد من هجوم الرجل-في-الوسط. لمزيد من المعلومات، راجع مثال الاتصال الآمن للجيل التالي من التشفير (CNG).
تُرسل Alice رسالة بتنسيق النص العادي إلى Bob عبر قناة عامة غير آمنة. و ترسل الرسالة التي تم تجزئتها إلى Bob عبر قناة آمنة خاصة. Bob يستقبل الرسالة بتنسيق النص العادي، و يقوم بالتجزئة، و يقارن قيمة التجزئة بقيمة التجزئة التي تم تبادلها سرًا. في حالة تطابق التجزئات يعرف Bob شيئين:
لم يتم تغيير الرسالة.
مُرسل الرسالة (Alice) موثوق به و مصدّق.
و ليعمل هذا النظام، يجب أن تُخفي Alice قيمة التجزئة الأصلية الخاصة بها من كافة الأطراف باستثناء Bob.
و تقوم Alice بإرسال رسالة بتنسيق النص العادي إلى Bob عبر قناة عامة غير آمنة مع وضع الرسالة التي تمت تجزئتها على موقع الويب الخاص بها و الذي يمكن عرضه بشكل عام.
يمنع هذا الأسلوب التلاعب بالرسالة عن طريق منع أي شخص من تعديل قيمة التجزئة. و على الرغم من أنه يمكن قراءة الرسالة و قيمة التجزئة الخاصة بها من قِبل أي شخص إلا أنه يمكن تغيير قيمة التجزئة بواسطة Alice فقط. و سيحتاج المهاجم الذي يريد انتحال صفة Alice إلى القدرة على الوصول إلى موقع الويب الخاص بـ Alice.
لا يمنع أي أسلوب من الأساليب السابقة أي شخص من قراءة رسائل Alice وذلك لأنه يتم نقلها بتنسيق النص العادي. و عادةً يتطلب الأمان التام التوقيعات الرقمية (توقيع الرسالة) مع التشفير.
يوفر .NET Framework الفئات التالية التي تطبق خوارزميات التجزئة:
كافة نوعيات HMAC لخوارزمية التجزئة الآمنة (SHA)، و ملخص الرسالة Message Digest (MD5)، و خوارزميات RIPEMD-160.
تطبيقات CryptoServiceProvider (برامج تضمين التعليمات البرمجية المُدارة) لكافة خوارزميات SHA.
تطبيقات الجيل التالي من التشفير (CNG) لكافة خوارزميات MD5 و SHA.
ملاحظة |
---|
تم اكتشاف أخطاء التصميم في MD5 في 1996 ، و تم التوصية بـ SHA-1 بدلاً من ذلك.في 2004، تم اكتشاف أخطاء إضافية و أصبحت خوارزمية MD5 غير آمنة بعدها.و وُجد أن خوارزمية SHA-1 أيضاً غير آمنة، و يوصى الآن بـ SHA-2 بدلاً من ذلك. |
العودة إلى الأعلى
إنشاء الأرقام العشوائية
تُعد عملية إنشاء الرقم العشوائي أساسية للعديد من عمليات التشفير. على سبيل المثال، يجب أن تكون مفاتيح التشفير عشوائية بقدر الإمكان بحيث يكون من غير العملي حسابياً إعادة إنتاجها. مولدات الأرقام العشوائية التي تعتمد على التشفير يجب أن تقوم بإنشاء أرقام بحيث يكون من غير العملي التنبؤ بها حسابياً مع احتمالية أفضل من نصف واحد. و لذلك، فإن أي أسلوب لتوقع البت المُنشأ القادم يجب ألا تكون أفضل من التخمين العشوائي. الفئات في .NET Framework تستخدم مولدات أرقام عشوائية لإنشاء مفاتيح التشفير.
الفئة RNGCryptoServiceProvider هي تطبيق لخوارزمية إنشاء أرقام عشوائية.
العودة إلى الأعلى
ملفات البيان ClickOnce
في .NET Framework 3.5، تسمح لك الفئات التالية بالحصول على المعلومات و التحقق منها حول توقيعات ملفات البيان للتطبيقات التي يتم توزيعها باستخدام تقنية ClickOnce:
الفئة ManifestSignatureInformation تحصل على المعلومات حول توقيع ملفات البيان عند استخدام التحميلات الزائدة للأسلوبVerifySignature.
يمكنك استخدام قائمة التعداد ManifestKinds لتحديد أي ملفات البيان يتم التحقق منها. و تكون نتيجة التحقق هي أحد قيم قائمة التعداد SignatureVerificationResult.
الفئة ManifestSignatureInformationCollection توفر مجموعة للقراءة فقط من كائنات ManifestSignatureInformationللتوقيعات التي تم التحقق منها.
و بالإضافة إلى ذلك، توفر الفئات التالية معلومات محددة عن التوقيع:
تحتفظ StrongNameSignatureInformation بمعلومات توقيع الاسم القوي لملف البيان.
تمثّل AuthenticodeSignatureInformation معلومات توقيع رموز المصادقة لملف البيان.
تحتوي TimestampInformation على معلومات حول الطابع الزمني لتوقيع رموز المصادقة.
توفر TrustStatus طريقة بسيطة للتحقق مما إذا كان توقيع رموز المصادقة موثوقاً به أم لا.
العودة إلى الأعلى
دعم Suite B
تدعم .NET Framework 3.5 مجموعة خوارزميات تشفير Suite B التي تم نشرها عن طريق وكالة الأمن القومي (NSA). للمزيد من المعلومات حول Suite B، راجع ورقة المعلومات الخاصة بتشفير NSA Suite B.
لا يتم تضمين الخوارزميات التالية:
خوارزمية مقاييس التشفير المتقدمة (AES) بمفاتيح ذات أحجام 128، و 192، و 256 بت للتشفير.
خوارزميات التجزئة الآمنة SHA-1، و SHA-256، و SHA-384، و SHA-512 للتجزئة. (و بشكل عام يتم تجميع آخر ثلاثة و يُشار إليها باسم SHA-2.)
خوارزمية التوقيع الرقمي للقطع الناقص (ECDSA) باستخدام منحنيات بواقي القسمة للأرقام الأساسية ذات 256 بت و 384 بت أو 521 بت للتوقيع. الوثائق NSA خصيصا يعرف هذه المنحنيات، واستدعاء P-256، P-384، و P-521. يتم توفير هذه الخوارزمية بواسطة الفئة ECDsaCng. و هي تمكّنك من التوقيع بالمفتاح الخاص والتحقق من صحة التوقيع بالمفتاح العام.
خوارزمية Elliptic Curve Diffie-Hellman (ECDH)، باستخدام منحنيات بواقي القسمة للأرقام الأساسية ذات 256 بت و 384 بت أو 521 بت لتبادل المفاتيح و الاتفاق على كلمة السر المشتركة. يتم توفير هذه الخوارزمية بواسطة الفئة ECDiffieHellmanCng.
برامج تضمين التعليمات البرمجية المُدارة للتطبيقات المعتمدة من Federal Information Processing Standard (FIPS) لتطبيقات AES، و SHA-256، و SHA-384، و SHA-512، متوفرة في الفئات الجديدة AesCryptoServiceProvider، SHA256CryptoServiceProvider، و SHA384CryptoServiceProvider، و SHA512CryptoServiceProvider.
العودة إلى الأعلى
فئات الجيل التالي من التشفير (CNG)
توفر فئات الجيل التالي من التشفير (CNG) برامج تضمين مُدارة حول دوال CNG الأصلية. (CNG هو البديل لواجهة CryptoAPI.) تتضمن هذه الفئات "Cng" كجزء من اسمها. و تُعد فئة حاوية المفاتيح CngKey أساسية لفئات برامج تضمين CNG و التي تقوم بتجريد تخزين واستخدام مفاتيح CNG. تمكنك هذه الفئة من تخزين زوج مفاتيح أو مفتاح عام بشكل آمن ثم الإشارة إليه باستخدام اسم سلسلة نصية بسيط. فئة التوقيع المستندة إلى منحنى القطع الناقص ECDsaCng و فئة التشفير ECDiffieHellmanCng يمكنهما استخدام الكائنات CngKey.
يتم استخدام الفئة CngKey للعديد من العمليات الإضافية، بما في ذلك فتح و إنشاء و حذف و تصدير المفاتيح. كما توفر أيضاً الوصول إلى مؤشر المفتاح الأساسي للاستخدام عند استدعاء دوال أصلية بشكل مباشر.
كما يتضمن .NET Framework 3.5 أيضاً مجموعة متنوعة من فئات CNG الداعمة، مثل الفئات التالية:
تحتفظ CngProvider بمزود تخزين المفاتيح.
تحتفظ CngAlgorithm بخوارزمية CNG.
تحتفظ CngProperty بخواص المفتاح المُستخدمة بشكل متكرر.
العودة إلى الأعلى
مواضيع ذات صلة
Title |
الوصف |
---|---|
يوضح هذا الموضوع كيف يتم تطبيق التشفير في مكتبة الفئة الأساسية. |
|
يوضح هذا الموضوع كيفية إجراء مهام التشفير المحددة باستخدام مكتبة الفئة الأساسية. |
|
يوضح مهام التشفير وفك التشفير الأساسية. |
|
نموذج لحلول التشفير مع هجوم الرجل-في-الوسط باستخدام فئات الجيل التالي من التشفير (CNG)، ممرات نقل البيانات المسماة، و نوافذ وحدة التحكم التفاعلية. |
|
يصف كيفية عمل مخطط لمطابقة أسماء الخوارزمية مع فئات التشفير و مطابقة مُعرّفات الكائن إلى خوارزمية تشفير. |
العودة إلى الأعلى