اذهب إلى المحتوى

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

افترض على سبيل المثال وجود بعض التهديدات لأمان استخدام الويب، وافترض أنك عميلٌ يستخدم بطاقة ائتمان لطلب عنصرٍ من موقع ويب. هنا سيكون التهديد الواضح هو أن الخصم قد يتنصت على اتصالات شبكتك، ويقرأ رسائلك للحصول على معلومات بطاقتك الائتمانية، لكن كيف يمكن تحقيق هذا التنصت؟ إنه أمرٌ بسيط على شبكة بثٍ عام مثل شبكة إيثرنت Ethernet أو شبكة Wi-Fi، حيث يمكن ضبط أي عقدةٍ لتلقي كل حركة مرور الرسائل على تلك الشبكة. تتضمن الأساليب الأخرى الأكثر توسعًا التنصت على المكالمات الهاتفية وزرع برمجيات تجسس على أية سلسلةٍ من العقد.

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

لكن لا تزال هناك تهديدات لعميل الموقع حتى مع وجود تلك الخصوصية، فقد يظل الخصم الذي لا يستطيع قراءة محتويات رسالتك المشفرة قادرًا على تغيير بعض البتات فيها، مما يؤدي إلى طلبٍ صالحٍ لعنصرٍ مختلف تمامًا على سبيل المثال، أو ربما طلب 1000 وحدةٍ من ذلك العنصر. هناك تقنيات لاكتشاف مثل هذا العبث على الأقل إذا لم تكن قادرةً على منعه، حيث يُقال عن البروتوكول الذي يكتشف هذا العبث في الرسائل بأنه يوفِّرسلامةَ البيانات integrity.

هناك تهديدٌ آخر للعميل هو توجيهه دون معرفته إلى موقع ويب مزيف، حيث يمكن أن ينتج هذا عن هجوم نظام أسماء النطاقات Domain Name System أو اختصارًا DNS، حيث تُدخَل معلوماتٌ خاطئة في خادم DNS أو ذاكرة خدمة الأسماء المخبئية لحاسوب العميل، ويؤدي هذا إلى ترجمة عنوان URL الصحيح إلى عنوان IP غير صحيح (أي عنوان موقع ويب مزيف). يُقال عن البروتوكول الذي يضمن أنك تتحدث حقًا مع مَن تعتقد أنك تتحدث إليه بأنه يوفر الاستيثاق authentication، ويستلزم الاستيثاقُ سلامةَ البيانات، لأنه لا فائدة من رسالةٍ ما جاءت من مشاركٍ معين إن لم تكن هذه الرسالة هي نفسها.

من الممكن مهاجمة مالك الموقع أيضًا، فقد شُوِّهت بعض المواقع الإلكترونية أكثر، خاصةً لما جرى الوصول عن بُعد إلى الملفات التي يتكوّن منها محتوى موقع الويب وتعديلها دون إذن، وهذه هي مشكلة التحكم في الوصول access control، أي فرض القواعد المتعلقة بمن يُسمَح له بفعل شيءٍ وبماذا يُسمَح له. لقد تعرّضت مواقع الويب أيضًا لهجمات حجب الخدمة denial of service أو اختصارًا DoS، والتي يتعذر خلالها على العملاء المحتملين الوصول إلى موقع الويب بسبب غمره بالطلبات الوهمية، أو ما يُسمى ضمان درجةٍ من الوصول بالتوافرية availability.

لقد اُستخدِمت شبكة الإنترنت بصورةٍ ملحوظة مثل وسيلةٍ لنشر الشيفرات الضارة المُسماة البرامج الضارة malware، والتي تستغل الثغرات الأمنية في الأنظمة النهائية، كما عُرفت أيضًا الديدان Worms وهي أجزاءٌ من شيفرةٍ ذاتية النسخ تنتشر عبر الشبكات منذ عدة عقود وما زالت تسبب مشاكلًا، مثلها مثل الفيروسات viruses التي تنتشر عن طريق نقل الملفات المصابة. يمكن بعد ذلك ترتيب الأجهزة المصابة في شبكات الروبوتات المقرصنة botnets، والتي يمكن استخدامها لإلحاق المزيد من الضرر مثل شن هجمات حجب الخدمة DoS.

الثقة والتهديدات

يجب التأكيد على حقيقةٍ بسيطة واحدة قبل تناول كيفية وسبب بناء شبكاتٍ آمنة تمامًا، وهي أننا سنفشل حتمًا في تحقيق ذلك، لأن الأمن هو في نهاية المطاف ممارسةٌ لوضع افتراضاتٍ حول الثقة وتقييم التهديدات وتخفيف المخاطر، فلا يوجد شيء اسمه أمنٌ تام.

الثقة والتهديد وجهان لعملةٍ واحدة، والتهديد هو سيناريو لفشلٍ محتمل تصمِّم نظامك لتجنبه؛ أما الثقة فهي افتراضٌ نضعه حول كيفية تصرّف الجهات الخارجية الفاعلة والمكونات الداخلية التي تبني عليها نظامك. فإذا أرسلت رسالةً عبر شبكة WiFi في حرمٍ جامعي مفتوح على سبيل المثال، فمن المحتمل أن تحدد متنصتًا يمكنه اعتراض الرسالة على أنه تهديد واعتماد بعض الأساليب المُناقَشة في هذا المقال مثل إجراءٍ مضاد، ولكن إذا كنت في خِضم إرسال رسالة خلال ليفٍ ضوئي fiber بين جهازين في مركز بيانات مغلق، فقد تثق بأن القناة آمنة ولا تتخذ أي خطواتٍ إضافية.

بما أنك تملك فعليًا طريقةً لحماية الاتصالات القائمة على شبكة WiFi، فأنت تستخدم هذه الطريقة أيضًا لحماية القناة القائمة على الألياف، ولكن يجب تحليل نتيجة التكلفة مع الفائدة. على فرض أن حماية أية رسالةٍ سواءً كانت مُرسلةً عبر شبكة WiFi أو عبر الألياف تؤدي إلى إبطاء الاتصال بنسبة 10% بسبب حِمل التشفير الزائد، فإن احتمال اقتحام شخصٍ ما لمركز البيانات هي واحدٌ في المليون (وحتى لو فعل ذلك فإن البيانات المُرسَلة لها قيمة قليلة)؛ عندئذٍ سيكون لديك مبررٌ جيد لعدم تأمين قناة اتصال الألياف.

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

لقد أصبح التهديد في هذا المثال بالذات المتمثّل في مساومة compromising أحد الخصوم على الخادم أمرًا حقيقيًا تمامًا مع انتقال المزيد من حساباتنا من الخوادم المحلية إلى السحابة، ولذا فإن البحث الجاري الآن على بناء قاعدة حوسبة موثوقة Trusted Computing Base أو اختصارًا TCB هو موضوعٌ مهم ولكنه موجود ضمن مجال معمارية الحواسيب وليس ضمن مجال الشبكات الحاسوبية. نوصيك بالانتباه إلى مصطلحات الثقة trust والتهديد threat أو الخصم adversary، لأنها مفتاحٌ لفهم السياق الذي يجري فيه تقديم المطالب الأمنية.

موّلت وزارةُ الدفاع الأمريكية شبكةَ الإنترنت وشبكةَ أربانت ARPANET قبلها، وهي منظمةٌ تتفهّم بالتأكيد تحليل التهديدات. وقد سيطرت على التقييم الأصلي مخاوفٌ بشأن صمود الشبكة في مواجهة فشل الموجّهات والشبكات، وهو ما يفسر سبب كون خوارزميات التوجيه لا مركزية، أي بِلا نقطة فشلٍ مركزية. افترضَ التصميم الأولي أن جميع الفاعلين داخل الشبكة موثوقٌ بهم، ولم يولِ اهتمامًا يذكر بما نسميه اليوم الأمن السيبراني cybersecurity، الذي يمثّل هجماتٍ من فاعلين سيئين قادرين على الاتصال بالشبكة. يعني ذلك أن العديد من الأدوات الموضّحة في هذا المقال يمكن عدها رقعًا patches؛ فالرقعة هي برنامجٌ مصمَّم لإصلاح المشاكل أو لتحديث برنامج حاسوبي أو البيانات الداعمة له، وهذا يشمل تحديد نقاط الضعف الأمنية والأخطاء الأخرى وتحسين قابليتها للاستخدام أو أدائها، فهذه الأدوات متأصلةٌ بقوة في علم التشفير، ولكنها تُعَد "إضافات add-ons". إذا أُجريت إعادة تصميمٍ شاملة للإنترنت، فمن المحتمل أن يكون دمج الأمن في شبكة الإنترنت هو الدافع الرئيسي لإعادة التصميم.

كتل بناء التشفير Cryptographic Building Blocks

نقدم مفاهيم الأمن المعتمد على التشفير خطوةً بخطوة، حيث تتتمثل الخطوة الأولى في خوارزميات التشفير أي الشيفرات ciphers والقيم المُعمَّاة المشفَّرة cryptographic hashes التي سنوضحها في هذا القسم، وهي ليست حلًا في حد ذاتها، بل هي لبِنات بناءٍ يمكن من خلالها بناء حل. تحدّد المفاتيح keys معاملات خوارزميات التشفير، وسنتكلم لاحقًا عن مشكلة توزيع المفاتيح. سنشرح كيفية دمج كتل بناء التشفير في البروتوكولات التي توفّر اتصالًا آمنًا بين المشاركين الذين يمتلكون المفاتيح الصحيحة، ثم نختبر عدة بروتوكولات وأنظمة أمنية كاملة قيد الاستخدام حاليًا.

مبادئ الشيفرات

يحوّل التشفير Encryption الرسائل بطريقةٍ تجعلها غير مفهومة لأي طرفٍ ليس لديه السر لكيفية عكس هذا التحويل، حيث يطبّق المرسل عملية تشفير على رسالة نص البيانات الصرفة plaintext الأصلية، مما ينتج عنه رسالة نصٍ مشفَّر ciphertext تُرسَل عبر الشبكة كما هو موضحٌ في الشكل الآتي. يطبّق المستلم عملية فك تشفير decryption سرية، وهي معاكسة لعملية التشفير لاستعادة نص البيانات الصرفة الأصلي. لن يكون النص المشفَّر المُرسَل عبر الشبكة مفهومًا لأي متصنت إذا افترضنا أن المتنصت لا يعرف عملية فك التشفير، وسيُطلق على التحويل الذي تمثله عملية التشفير وعملية فك التشفير المقابلة لها اسم شيفرة cipher.

Secret-keyEncryptionAndDecryption.png

لقد توجّه مصممو التشفير إلى المبدأ الذي ذُكِر لأول مرة في عام 1883، وهو أن عمليات التشفير وفك التشفير يجب أن يحددها مفتاح key، كما يجب عدُّ هذه العمليات عامةً وأن يكون المفتاح سريًا فقط، وبالتالي فإن النص المشفَّر الناتج عن رسالة نص بيانات صرفةٍ معين يعتمد على كلٍ من عملية التشفير والمفتاح. أحد أسباب الكامنة وراء هذا المبدأ هو أنك إذا اعتمدت على إبقاء الشيفرات سريةً، فعليك إبعاد الشيفرة وليس المفاتيح فقط عندما تعتقد أنها لم تَعُد سرية، وهذا يعني حدوث تغييراتٍ متكررة في الشيفرات، وهو أمرٌ يمثل مشكلةً نظرًا لأن الأمر يتطلب الكثير من العمل لتطوير شيفرةٍ جديدة.

من أفضل الطرق لمعرفة أن الشيفرة آمنة هي استخدامها لفترة طويلة، فإذا لم يخترقها أحد من الممكن أن تكون آمنة. هناك الكثير من الأشخاص الذين سيحاولون كسر الشيفرات، وبذلك تصبح معروفةً على نطاقٍ واسع عندما ينجحون، وبالتالي هناك تكلفةٌ ومخاطرةٌ كبيرة في نشر شيفرات جديدة. أخيرًا، يوفر لنا تحديد معاملات الشيفرة بالمفاتيح مجموعةً كبيرة جدًا من الشيفرات؛ حيث نبدّل الشيفرات من خلال تبديل المفاتيح، وبالتالي نحدّ من كمية البيانات التي يمكن لمحلّل التشفير cryptanalyst أو مخترق الشيفرة استخدامها لمحاولة كسر المفتاح أو الشيفرة ونحدّ من المقدار الممكن قراءته إذا نجح.

يتمثل المطلب الأساسي لخوارزمية التعمية encryption في تحويل نص البيانات/ الصرف إلى نص مشفّر، بحيث لا يتمكن سوى المستلم المقصود (صاحب مفتاح فك التشفير) من استرداد النص الأصلي. ويعني ذلك أن الرسائل المشفّرة أو المُعمَّاة لا يمكن أن يقرأها الأشخاص الذين ليس لديهم المفتاح.

يجب أن ندرك أنه عندما يتلقى المهاجم المحتمل جزءًا من النص المشفر، فقد تكون لديه معلومات تحت تصرفه أكثر من مجرد النص المشفر نفسه، فربما يعلم أن النص الأصلي مكتوبٌ باللغة الإنجليزية مثلًا، مما يعني أن الحرف e يظهر في كثير من الأحيان في النص موازنةً بأي حرفٍ آخر، وبالتالي من الممكن أيضًا توقُّع تكرار العديد من الحروف الأخرى ومجموعات الحروف الشائعة. يمكن لهذه المعلومات تبسيط مهمة العثور على المفتاح كثيرًا، فقد يعرف المهاجم شيئًا عن المحتويات المحتملة للرسالة، مثل ظهور كلمة "تسجيل الدخول login" في بداية جلسة تسجيل الدخول عن بُعد، وربما يؤدي ذلك إلى تفعيل هجوم النص الأصلي المعروف known plaintext attack، والذي يكون له فرصة نجاحٍ أكبر بكثير من هجوم النص المشفر فقط ciphertext only attack؛ والأفضل من ذلك هو هجوم النص الأصلي المُختار chosen plaintext attack، والذي يمكن تفعيله من خلال تقديم بعض المعلومات إلى المرسل التي تعرف أنه يمكن أن يرسلها، حيث حدثت مثل هذه الأشياء في زمن الحرب على سبيل المثال.

لذلك يمكن أن تمنع أفضلُ خوارزميات التشفير المهاجمَ من استنتاج المفتاح حتى عند معرفته بكلٍ من النص الأصلي والنص المشفَّر، وهذا لا يترك للمهاجم أي خيارٍ سوى تجربة جميع المفاتيح الممكنة، أي استخدام البحث الشامل exhaustive search بالقوة الغاشمة brute force. إذا احتوت المفاتيح على n بت، فهناك 2n قيمةً محتملة للمفتاح، حيث يمكن أن يكون كل بتٍ منها إما صفرًا أو واحدًا. وقد يكون المهاجم محظوظًا جدًا عندما يحاول تجربة القيمة الصحيحة على الفور، أو سيئ الحظ لتجربة كل قيمةٍ غير صحيحةٍ قبل تجربة قيمة المفتاح الصحيحة أخيرًا. بعد تجريب جميع قيم 2n الممكنة، يكون متوسط عدد التخمينات لاكتشاف القيمة الصحيحة هو 2n/2. قد يكون ذلك غير عمليٍ من الناحية الحسابية عن طريق اختيار حيز مفاتيحٍ كبير بما فيه الكفاية، وعن طريق جعل عملية التحقق من مفتاح مكلفةً بطريقةٍ معقولة.

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

معظم الشيفرات ciphers هي شيفرات كتلية block ciphers، أي تُعرَّف على أن تأخذ بالدخل كتلة نصٍ أصلي بحجمٍ ثابت معيّن يكون في العادة 64 إلى 128 بتًا. يُعاني استخدام شيفرةٍ كتلية لتعمية كل كتلةٍ بصورةٍ مستقلة، والمعروف باسم وضع تعمية كتاب الشيفرة الإلكتروني electronic codebook أو اختصارًا ECB، من ضعفٍ يتمثل في أن قيمة كتلة النص الأصلي ستؤدي دائمًا إلى نفس كتلة النص المشفَّر، وبالتالي يمكن التعرف على قيم الكتل المُكررة في النص الأصلي على نفس النحو في النص المشفر، مما يسهل كثيرًا على محلل التشفير فكَّ الشيفرة.

لمنع ذلك ستُزاد دائمًا الشيفرات الكتلية لجعل نص الكتلة المشفر يختلف وفقًا للسياق، حيث يُطلق على الطرق التي يمكن بها زيادة الشيفرة الكتلية اسم أنماط التشغيل modes of operation. ونمط التشغيل الشائع هو تسلسل الشيفرات الكتلية cipher block chaining أو اختصارًا CBC، حيث تُطبَّق عملية XOR على كل كتلة نصٍ أصلي قبل تشفيرها مع نص الكتلة المُشفرة السابقة، والنتيجة هي أن النص المشفر لكل كتلة يعتمد جزئيًا على الكتل السابقة، أي يعتمد على سياقها. لا تحتوي أول كتلة نصٍ أصلي على كتلةٍ سابقة، لذلك تُطبَّق عليها عملية XOR مع رقمٍ عشوائي يُدعى متجه التهيئة initialization vector أو اختصارًا IV، وهو مُضمّنٌ في سلسلة كتل النص المشفر، بحيث يمكن فك تعمية أول كتلة نصٍ مشفر، وهذا الأسلوب موضحٌ في الشكل الآتي. هناك نمط تشغيلٍ آخر هو نمط العدّاد counter mode، حيث تُدمج قيم العدّاد المتتالية (مثل 1، 2، 3، …) في تعمية الكتل المتتالية من النص الأصلي.

CipherBlockChaining.png

الشيفرات ذات المفتاح السري Secret-Key Ciphers

يتشارك كلا المشاركَين participants في الاتصال في نفس المفتاح في الشيفرات ذات المفتاح السري، أي إذا شُفِّرت رسالةٌ باستخدام مفتاحٍ معين، فإن المفتاح نفسه مطلوبٌ لفك تشفير الرسالة. تُعرَف شيفرات المفاتيح السرية أيضًا باسم شيفرات المفاتيح المتناظرة symmetric-key ciphers، حيث تجري مشاركة هذا المفتاح السري مع كلا المشاركين، وسنلقي نظرةً على شيفرات المفاتيح العامة public-key ciphers البديلة قريبًا. تُعرف شيفرات المفاتيح العامة أيضًا باسم الشيفرات ذات المفاتيح غير المتماثلة asymmetric-key ciphers، حيث يستخدم المشتركان مفاتيحًا مختلفة، وسنستخدم مصطلح "مشارك participant" للإشارة إلى الأطراف المشاركة في اتصالٍ آمن نظرًا لأنه المصطلح الذي استخدمناه في جميع أنحاء هذه السلسلة لتحديد نقطتي نهاية القناة، ويُطلق عليهم عادةً في عالم الأمن المسؤولون principals.

أصدر المعهد الوطني الأمريكي للمعايير والتقنية U.S. National Institute of Standards and Technology أو اختصارًا NIST معاييرًا لسلسلةٍ من الشيفرات ذات المفاتيح السرية، وكان معيار تشفير البيانات Data Encryption Standard أو اختصارًا DES هو المعيار الأول، وقد صمد أمام اختبار الزمن، حيث لم يُكتشَف أي هجوم تشفيرٍ تحليلي cryptanalytic attack أفضل من البحث بالقوة الغاشمة brute force search الذي أصبح أسرع مما هو عليه.

لقد أصبحت مفاتيح DES المؤلفة من 56 بتٍ مستقل الآن صغيرة جدًا نظرًا لسرعات المعالج الحالية، حيث تحتوي مفاتيح DES على 56 بتًا مستقلًا، على الرغم من أنها تحتوي على 64 بت إجماليًا، حيث أن الجزء الأخير من كل بايت هو بت تماثل أو تكافؤ parity bit. يجب عليك البحث وسطيًا عن نصف حيز 256 مفتاحًا محتملًا للعثور على المفتاح الصحيح، مما يعطي 255 = 3.6 × 1010 مفتاحًا. قد يبدو هذا كثيرًا، لكن مثل هذا البحث قابل للتطبيق على التوازي بدرجةٍ كبيرة، لذلك من الممكن أن تضع أكبر عددٍ ممكنٍ من الحواسيب في هذه المهمة، حيث أصبح الحصول على آلاف الحواسيب هذه الأيام أمرًا سهلًا، إذ من الممكن أن يؤجرك أمازون حواسيبًا مقابل بضعة سنتات في الساعة.

أصبحت استعادة مفتاح DES بعد بضع ساعاتٍ أمرًا ممكنًا بحلول أواخر التسعينات، وبالتالي حدّث معهد NIST معيار DES في عام 1999 للإشارة إلى أنه يجب استخدام هذا المعيار مع الأنظمة القديمة فقط. وقد وحّد معهد NIST أيضًا معيار تشفير DES الثلاثي Triple DES أو اختصارًا 3DES، الذي يعزّز مقاومة تحليل التشفير لمعيار DES مع زيادة حجم المفتاح. يحتوي مفتاح 3DES على (168 = 3 × 56) بتًا مستقلًا، ويستخدم ثلاثة مفاتيح DES هي DES-key1 وDES-key2 وDES-key3، حيث يُطبَّق تشفير 3DES على الكتلة عن طريق إجراء تشفير DES أولًا على الكتلة باستخدام المفتاح DES-key1، ثم فك تشفير النتيجة باستخدام المفتاح DES-key2، وأخيرًا إجراء تشفير DES لتلك النتيجة باستخدام المفتاح DES-key3. تتضمن عمليةُ فك التشفير إجراءَ فك تشفير باستخدام المفتاح DES-key3، ثم إجراء تشفير باستخدام المفتاح DES-key2، ثم فك تشفيرٍ باستخدام المفتاح DES-key1.

يعود السبب وراء استخدام تشفير 3DES لفك تشفير DES مع مفتاح DES إلى التعامل مع أنظمة DES القديمة؛ فإذا استخدم نظام DES القديم مفتاحًا واحدًا، فيمكن لنظام 3DES أداء نفس عملية التشفير باستخدام هذا المفتاح لكلٍ من المفاتيح DES-key1 وDES-key2 وDES-key3، حيث نشفّر ثم نفك التشفير بنفس المفتاح في الخطوتين الأوليتين لإنتاج النص الأصلي، والذي نشفّره بعد ذلك مرةً أخرى.

يحل معيار 3DES مشكلة طول مفتاح معيار DES، إلا أنه يرث منه بعض أوجه القصور الأخرى. تطبيقات برمجيات معيار DES / 3DES بطيئةٌ لأن شركة IBM صمّمتها في الأصل لتطبيقها على العتاد. يستخدم معيار DES / 3DES حجم كتلة قدره 64 بتًا، حيث أن حجم الكتلة الأكبر هو أكثر كفاءةً وأكثر أمانًا.

يُستبدَل الآن معيار 3DES بمعيار التشفير المتقدم Advanced Encryption Standard أو اختصارًا AES، الصادر عن معهد NIST، وقد سُمِّيت شيفرة AES الأساسية مع بعض التعديلات الطفيفة في الأصل باسم Rijndael، وهي تُنطق تقريبًا مثل راين دال، تيمنًا بأسماء مخترعَيها دايمن Daemen وريجمين Rijmen.

يدعم معيار AES أطوال المفاتيح 128 أو 192 أو 256 بت، ويبلغ طول الكتلة 128 بتًا، كما أنه يسمح بالتطبيق السريع في كلٍ من البرمجيات والعتاد ولا يتطلب ذاكرةً كبيرة، مما يجعله مناسبًا للأجهزة المحمولة الصغيرة. يمتلك معيار AES بعض خصائص الأمان المثبتة رياضيًا، ولم يتعرض لأي هجماتٍ ناجحة كبيرة حتى وقت كتابة السلسلة بنسختها الأصلية.

الشيفرات ذات المفتاح العام Public-Key Ciphers

بديل شيفرات المفاتيح السرية هو شيفرات المفتاح العام، حيث يستخدم تشفير المفتاح العام مفتاحَين مرتبطَين ببعضهما بدلًا من مفتاحٍ واحد مشترك بين مشاركَين، بحيث يكون أحد المفاتيح للتشفير والآخر لفك التشفير، ولكن مشاركًا واحدًا فقط هو الذي يملك هذين المفتاحَين. يحتفظ المالك بسريةٍ بمفتاح فك التشفير، بحيث يمكن للمالك فقط فك تشفير الرسائل، ويُسمى هذا المفتاح مفتاحًا خاصًا private key. يجعل المالك مفتاحَ التشفير عامًا بحيث يمكن لأي شخصٍ تشفير رسائل المالك، ويُسمى هذا المفتاح مفتاحًا عامًا public key. يجب ألا يكون ممكنًا استنتاج المفتاح الخاص من المفتاح العام، وبالتالي يمكن لأي مشاركٍ الحصول على المفتاح العام وإرسال رسالةٍ مشفرة إلى مالك المفاتيح، والمالك وحده لديه المفتاح الخاص الضروري لفك التشفير. هذا السيناريو مبينٌ في الشكل التالي.

Public-keyEncryption.png

نؤكد أن مفتاح التشفير العام لا فائدة منه لفك تشفير رسالة، فلا يمكنك حتى فك تشفير رسالة شفّرتها بنفسك إلا إذا كان لديك مفتاح فك التشفير الخاص. إذا فكرنا في المفاتيح على أنها تحدد قناة اتصالٍ بين المشاركين، فإن الفرق الآخر بين شيفرات المفتاح العام وشيفرات المفتاح السري هو مخطط هذه القنوات.

يوفر مفتاح شيفرات المفتاح السري قناةً ذات اتجاهين بين مشاركَين، حيث يحمل كل مشاركٍ نفس المفتاح المتماثل symmetric، والذي يمكن لأي شخص استخدامه من أجل تشفير أو فك تشفير الرسائل في أيٍ من الاتجاهين. يوفر زوج المفاتيح العام / الخاص قناةً ذات اتجاهٍ واحد وهي من نوع متعدد إلى واحد many-to-one أي من كل شخصٍ لديه المفتاح العام إلى مالك المفتاح الخاص، كما هو موضحٌ في الشكل السابق.

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

يوضح الشكل الآتي ذلك، حيث يجب أن يكون واضحًا من الشكل أن أي شخصٍ لديه مفتاحٌ عام يمكنه فك تشفير الرسالة المشفَّرة، ويمكن استنتاج أن المفتاح الخاص يجب استخدامه لإجراء التشفير على فرض أن نتيجة فك التشفير تطابق النتيجة المتوقعة، ولكن كيفية استخدام هذه العملية بالضبط لتوفير الاستيثاق هي موضوع قسمٍ لاحق. تُستخدم شيفرات المفتاح العام بصورةٍ أساسية للاستيثاق وتوزيع المفاتيح السرية (المتماثلة) سريًا، وتُترَك بقية الخصوصية لشيفرات المفاتيح السرية.

AuthenticationUsingPublicKeys.png

نشر ديفي Diffie وهيلمان Hellman قديمًا مفهوم شيفرات المفتاح العام لأول مرة في عام 1976، لكن ظهرت في وقتٍ لاحق وثائقٌ تثبت اكتشاف مجموعة أمن الاتصالات والإلكترونيات البريطانية شيفرات مفاتيحٍ عامة بحلول عام 1970، وتدّعي وكالة الأمن القومي الأمريكية NSA أنها اكتشفتها في منتصف الستينات.

أكثر شيفرة مفتاحٍ عام شهرةً هي RSA، والتي سُميت تيمنًا بمخترعِيها ريفست Rivest وشامير Shamir وأدليمان Adleman. تعتمد RSA على التكلفة الحسابية العالية لتحليل الأعداد الكبيرة، فمشكلة إيجاد طريقةٍ فعالة لحساب الأرقام هي المشكلة التي عمل عليها علماء الرياضيات دون جدوى منذ فترةٍ طويلةٍ قبل ظهور خوارزمية RSA في عام 1978، وقد عزّزت مقاومةُ خوارزمية RSA لتحليل التشفير الثقةَ في أمنها. تحتاج خوارزمية RSA إلى مفاتيح كبيرة نسبيًا (على الأقل 1024 بت) لتكون آمنة، وهذا أكبر من مفاتيح شيفرات المفتاح السري، لأن كسر مفتاح RSA الخاص عن طريق حساب العدد الكبير الذي يعتمد عليه زوج المفاتيح أسرع من البحث الشامل في حيز المفاتيح.

تعتمد شيفرةُ المفتاح العام الأخرى المُسماة باسم الجمل ElGamal على مشكلةٍ رياضية هي مشكلة اللوغاريتم المتقطع discrete logarithm problem، والتي لم يُعثَر على حلٍ فعّال لها، وتتطلب مفاتيحًا حجمها لا يقل عن 1024 بتًا. ينشأ تباينٌ في مشكلة اللوغاريتم المتقطع عندما يكون الدخل منحنىً بيضاويًا، ويُعتقد أنه أصعب في الحساب؛ حيث يُشار إلى مخططات التشفير القائمة على هذه المشكلة باسم تشفير المنحنى البيضاوي elliptic curve cryptography.

لسوء الحظ، شيفرات المفاتيح العامة أبطأ من شيفرات المفاتيح السرية، وبالتالي يستخدم التشفير شيفرات المفاتيح السرية في الغالبية العظمى، بينما تُحجَز شيفرات المفتاح العام للاستخدام في الاستيثاق وإنشاء مفتاح جلسة.

المستوثقات Authenticators

لا يوفر التشفير لوحده سلامة البيانات integrity، حيث يمكن أن يؤدي التعديل العشوائي لرسالة نصٍ مشفر إلى تحويلها إلى شيء يُفك تشفيره إلى نصٍ صالحٍ ظاهريًا، وبالتالي لن يكتشف المستقبل التلاعب الحاصل في الرسالة؛ كما لا يوفر التشفير وحده الاستيثاق authentication، فالقول أن رسالةً ما جاءت من مشاركٍ معين أمرٌ غير مجدٍ إذا عُدِّلت محتويات الرسالة بعد أن ينشئها ذلك المشارك، أي لا يمكن فصل سلامة البيانات عن الاستيثاق.

المستوثق authenticator هو قيمةٌ مُضمَّنة في رسالةٍ مرسلة يمكن استخدامها للتحقق في نفس الوقت من استيثاق وسلامة بيانات الرسالة. سنرى كيفية استخدام المستوثقات في البروتوكولات، لكن سنركز على الخوارزميات التي تنتج المستوثقات.

لابد من أن تنذكر أن المجموع الاختباري checksum وفحص التكرار الدوري cyclic redundancy check أو اختصارًا CRC هي أجزاءٌ من المعلومات تضاف إلى الرسالة حتى يكتشف المستقبل متى عدَّلت أخطاءُ البت الرسالةَ عن غير قصد. ينطبق مفهومٌ مماثل على المستوثقات مع تحدٍ إضافي متمثلٍ في أنه من المحتمل أن يفسد شخصٌ الرسالة عن عمدٍ مع عدم رغبته بأن يُكتشَف. ويتضمن المستوثق بعض الأدلة لدعم الاستيثاق على أن يعرف كل مَن أنشأ المستوثق سرًا معروفًا فقط لدى المرسل المزعوم للرسالة؛ حيث يمكن أن يكون السر مفتاحًا على سبيل المثال، كما قد يكون الدليل قيمةٌ مشفّرةٌ باستخدام هذا المفتاح، فهناك اعتماديةٌ متبادلة بين شكل المعلومات الزائدة وشكل إثبات المعرفة السرية.

سنفترض أن الرسالة الأصلية لا يجب أن تكون خصوصية، وأن الرسالة المُرسَلة ستتألف من نص الرسالة الأصلي، بالإضافة إلى المستوثق. سنشرح لاحقًا الحالة التي تكون الخصوصية مطلوبةً فيها.

يجمع نوعٌ من المستوثقات بين التشفير ودالة القيمة المعمَّاة المُشفّرة cryptographic hash function، حيث تُعالَج خوارزميات القيم المشفَّرة على أنها معرفةٌ عامة كما هو الحال مع خوارزميات التشفير، وتنتج دالة القيم المُعمَّاة المشفَّرة المعروفة باسم المجموع الاختباري المُشفَّر cryptographic checksum معلوماتٍ زائدة حول رسالةٍ لفضح أي تلاعب.

لقد صُمِّم المجموع الاختباري المُشفَّر لكشف الفساد المتعمَّد للرسائل من قِبل الخصم، مثل كشف المجموع الاختباري أو آلية CRC عن أخطاء بتاتٍ ناتجة عن روابط مشوَّشة، وتسمى القيمة الناتجة بقيمة الرسالة المُعمَّاة المختصرة message digest، كما تُلحَق بالرسالة مثل المجموع الاختباري العادي. يكون لجميع قيم الرسائل المعمَّاة المختصرة التي تنتجها قيمةٌ معمَّاة hash معينة نفس عدد البتات، وذلك بغض النظر عن طول الرسالة الأصلية، كما يكون حيز رسائل الدخل المحتملة أكبر من حيز قيم الرسائل المعمَّاة المختصرة المحتملة، لذلك ستكون هناك رسائل دخلٍ مختلفة تنتج نفس قيمة الرسالة المعمَّاة المختصرة، مما يؤدي إلى حدوث تصادماتٍ في جدول القيم المُعمَّاة.

يمكن إنشاء المستوثق من خلال تشفير قيمة الرسالة المعمَّاة المختصرة. يحسب المستقبل قيمةً مُعمَّاةً مختصرة لجزء النص الأصلي من الرسالة ويوازنه مع القيمة المعمَّاة المختصرة للرسالة التي فُك تشفيرها، فإذا كانتا متساويتين، فسيستنتج المستقبل أن الرسالة أتت فعلًا من مرسلها المزعوم، لأنها شُفِّرت بالمفتاح الصحيح ولم يعبث أحدٌ بها.

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

يجب توزيع مخرجات دالة القيم المعمَّاة عشوائيًا إلى حدٍ ما لكي تفي بهذا المطلب، فإذا كان طول القيم المُعمَّاة المختصرة 128 بتًا وكانت هذه القيم المُعمَّاة المختصرة موزعةٌ عشوائيًا؛ فستحتاج إلى تجربة 2127 رسالة وسطيًا قبل العثور على رسالةٍ ثانية تتطابق قيمتها المُعمَّاة المختصرة مع رسالةٍ معينة. إذا لم تُوزَّع المخرجات عشوائيًا، أي إذا كان بعضها أكثر احتمالًا من غيرها، فيمكنك العثور على رسالةٍ أخرى بالنسبة لبعض الرسائل بنفس القيمة المُعمَّاة المختصرة بسهولةٍ أكبر من ذلك، مما قد يقلل من أمن الخوارزمية؛ أما إذا حاولت بدلًا من ذلك العثور فقط على أي تصادم collision (رسالتان تنتجان نفس القيمة المُعمَّاة المختصرة)، فستحتاج إلى حساب قيم مُعمَّاة مختصرة من أجل 264 رسالةٍ فقط وسطيًا. هذه الحقيقة هي أساس "هجوم عيد الميلاد birthday attack".

لقد كانت هناك العديد من خوارزميات قيم التشفير المُعمَّاة الشائعة على مر السنين، بما في ذلك قيمة الرسائل المعمَّاة المختصرة Message Digest 5 أو اختصارًا MD5، وعائلة خوارزمية القيم المعمَّاة الآمنة Secure Hash Algorithm أو اختصارًا SHA، وقد عُرفت نقاط الضعف في خوارزمية MD5 والإصدارات السابقة من خوارزمية SHA لبعض الوقت، مما دفع معهد NIST إلى التوصية باستخدام خوارزمية SHA-3 في عام 2015.

يمكن أن يَستخدِم تشفير القيم المُعمَّاة المختصرة إما تشفير المفتاح السري، أو تشفير المفتاح العام لإنشاء قيمةٍ مُعمَّاةٍ مختصرة لرسالةٍ مشفرة؛ فإذا اُستخدِم تشفير المفتاح العام، فستُشفَّر القيمة المعمَّاة المختصرة باستخدام مفتاح المرسل الخاص (المفتاح الذي نعتقد أنه يُستخدم لفك التشفير)، ويمكن للمستقبل أو لأي شخصٍ آخر فك تشفير القيمة المعمَّاة المختصرة باستخدام مفتاح المرسل العام.

يُطلق على القيمة المعمَّاة المختصرة المشفَّرة بخوارزمية المفتاح العام، ولكن باستخدام المفتاح الخاص اسم التوقيع الرقمي digital signature لأنه يوفّر عدم الإنكار nonrepudiation مثل التوقيع المكتوب، كما يمكن لمستقبل الرسالة ذو التوقيع الرقمي أن يثبت لأي طرفٍ ثالث أن المرسل أرسل بالفعل تلك الرسالة، إذ يمكن للطرف الثالث استخدام مفتاح المرسل العام للتحقق بنفسه.

لا يحتوي تشفير مفتاح القيمة المعمَّاة المختصرة السري على هذه الخاصية لأن المشتركَين فقط يعرفان المفتاح. من ناحيةٍ أخرى، من الممكن أن يُنشِئ المستقبل المزعوم الرسالة بنفسه، نظرًا لأن كلا المشاركَين يعرفان المفتاح. يمكن استخدام أي تشفير مفتاحٍ عام للتوقيعات الرقمية، مثل معيار التوقيع الرقمي Digital Signature Standard أو اختصارًا DSS وهو صيغة توقيعٍ رقمي وحّده معهد NIST. قد تستخدم توقيعات DSS أي شيفرةٍ من شيفرات المفتاح العام الثلاث، حيث يعتمد أحد هذه التوقيعات على خوارزمية RSA؛ والآخر على تشفير الجمل؛ ويُسمى الثالث خوارزمية التوقيع الرقمي باستخدام المنحنى البيضاوي Elliptic Curve Digital Signature Algorithm.

هناك نوعٌ آخر من المستوثقات المشابهة، ولكنها تستخدم دالةً تشبه القيمة المُعمَّاة، حيث تأخذ قيمةً سريةً (معروفة فقط للمرسل والمستقبل) مثل معاملٍ عوضًا عن تشفير القيمة المعمَّاة، كما هو موضحٌ في الشكل الآتي. تنتج مثلُ هذه الدالة مستوثقًا يُسمى شيفرة استيثاق الرسالة message authentication code أو اختصارًا MAC، حيث يُلحق المرسل شيفرة MAC برسالة النص الأصلي، ويعيد المستقبل حساب شيفرة MAC باستخدام النص الأصلي والقيمة السرية ويوازن شيفرة MAC المعاد حسابها مع شيفرة MAC المُستلمة.

ComputingAMACVersusComputingAnHMAC.png

من الاختلافات الشائعة في شيفرات MAC هو تطبيقُ قيم معمَّاة مُشفّرَة مثل MD5 أو SHA-1 على سلسلة رسالة النص الأصلي والقيمة السرية، كما هو موضحٌ في الشكل السابق. وتسمى القيمة المعمَّاة المختصرة الناتجة شيفرة استيثاق الرسالة ذات القيمة المعمَّاة hashed message authentication code أو اختصارًا HMAC، لأنها في الأساس شيفرة MAC. تُلحَق شيفرة HMAC بالنص الأصلي وليس بالقيمة السرية، ويمكن للمستقبل الذي يعرف القيمة السرية فقط حساب شيفرة HMAC الصحيحة للموازنة مع شيفرة HMAC المستلمة.

لو لم يتعلق الأمر بخاصية أحادية الاتجاه التي تمتلكها القيمة المعمَّاة، لكان قد تمكن الخصم من العثور على المدخلات التي أدت إلى إنشاء شيفرة HMAC وموازنتها مع رسالة النص الأصلي لتحديد القيمة السرية.

لقد افترضنا حتى هذه اللحظة أن الرسالة لا تملك خصوصية، لذلك يمكن نقل الرسالة الأصلية على أنها نص بياناتٍ صرف. يكفي تشفير سلسلة الرسالة بأكملها، بما في ذلك المستوثق باستخدام شيفرة MAC أو شيفرة HMAC أو القيمة المعمَّاة المختصرة المشفَّرة، وذلك لإضافة الخصوصية إلى رسالةٍ مع مستوثق.

تُطبَّق الخصوصية باستخدام شيفرات المفاتيح السرية عمليًا لأنها أسرع بكثيرٍ من شيفرات المفاتيح العامة، كما أن تضمين المستوثق في التشفير يزيد الأمن وتكلفته قليلة. يُعَد التبسيط الشائع هو تشفير الرسالة مع قيمتها المعمَّاة المختصرة (الخام)، حيث تُشفَّر القيمة المعمَّاة المختصرة مرةً واحدةً فقط، وتُعَد رسالة النص المشفر بأكملها بمثابة مستوثقٍ في هذه الحالة.

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

ترجمة -وبتصرّف- للقسمين Trust and Threats وCryptographic Building Blocks من فصل Network Security من كتاب Computer Networks: A Systems Approach.

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...