المكونات الأساسية للتشفير
من المفترض معرفة أن الوصول للسرية (confidentiality) يكون عن طريق التشفير (encryption) ولضمان سلامة البيانات من أي تعديل (integrity) يكون عن طريق الـ (hashing) وللتحقق من الهوية هناك عدة طرق لذلك.
تناقش هذه الورقة المكونات الأساسية للتشفير بما في ذلك خوارزميات الـ (hashing) والتشفير وإدارة المفاتيح والتي يمكن أن تستخدمها الشبكات الافتراضية الخاصة (VPN).
يعد فهم المصطلحات جزء مهم لفهم أي تقنية لذا فلنبدأ ببعض الأساسيات.
cipher
الشفرة هي مجموعة من القواعد والتي يمكن أن تسمى أيضاً خوارزمية هدفها والغاية منها تدور حول كيفية إجراء التشفير أو فك التشفير وهناك المئات من خوارزميات التشفير المتاحة ومن المرجح أن يكون هناك العديد أيضاً من الخوارزميات الأخرى الغير متاحة والتي تعتبر ملكية خاصة وتستخدم لأغراض خاصة للحكومات والأمن القومي.
تتضمن الطرق الشائعة التي تستخدم في التشفير:
■ الاستبدال (Substitution): هذا النوع من التشفير يستبدل حرف بآخر. ولجعل الأمر أكثر صعوبة يمكن تغيير أكثر من حرف واحد واختيار أحرف معينة فقط لاستبدالها ويمكن الإشارة إلى الطريقة المستخدمة في الاستبدال بالمفتاح (key). إذا عرف الطرفان المشتركان المفتاح فيمكنهما تشفير البيانات وفك تشفيرها.
■ متعدد الأبجدية (Polyalphabetic): وهو مشابه للاستبدال ولكن بدلاً من استخدام حرف واحد يمكن استخدام عدة أحرف والتبديل بينها.
■ التحويل (Transposition): في هذه الطريقة العديد من الخيارات المختلفة بما في ذلك إعادة ترتيب الحروف. على سبيل المثال الرسالة “This is secret” يمكنن كتابتها من أعلى إلى أسفل ومن اليسار إلى اليمين كما هو موضح في المثال
ثم نقوم بتشفيرها كـ RETCSIHTSSEI والتي تبدأ من أعلى اليمين وتدور مع عقارب الساعة وتتصاعد إلى الداخل. لمعرفة كيفية التشفير وفك التشفير في هذا المثال نحتاج إلى معرفة المفتاح الصحيح.
key
يشير المفتاح في المثال السابق إلى التعليمات الخاصة بكيفية إعادة تجميع الأحرف. والتي بدأت من الزاوية العلوية اليمنى وتحركت في اتجاه عقارب الساعة وبشكل لولبي إلى الداخل.
تعد لوحة المرة الواحدة (OTP) مثالاً على المفتاح الذي يتم استخدامه مرة واحدة فقط. وباستخدام هذه الطريقة إذا أردنا تشفير رسالة 32 بت فإننا نستخدم مفتاح 32 بت والذي يستخدم مرة واحدة فقط. بحيث يتم حساب كل جزء من اللوحة رياضياً مع جزء مطابق من الرسالة والنتائج هي النص المشفر. المفتاح في هذه الحالة هو لوحة الاستخدام لمرة واحدة. يجب أن يعرف الطرفين هذه اللوحة حتى يتم فك تشفير الرسالة.
Block and Stream Ciphers
يمكن أن تعمل خوارزميات التشفير على مجموعات من البيانات في وقت واحد أو على وحدات بت و بايت من البيانات وذلك بناءً على نوع التشفير.
Block Ciphers
تشفير الكتلة هو مفتاح متماثل (symmetric) أي أن نفس مفتاح التشفير هو مفتاح فك التشفير ويعمل على مجموعة من البتات تسمى الكتلة. قد تأخذ هذه الخوارزمية كتلة 64 بت من النص العادي وتولد كتلة 64 بت من النص المشفر. تتضمن أمثلة خوارزميات التشفير الكتلي المتماثلة ما يلي:
■ معيار التشفير المتقدم (AES) Advanced Encryption Standard
■ معيار التشفير الرقمي الثلاثي (3DES) Triple Digital Encryption Standard
■ Blowfish
■ معيار التشفير الرقمي (DES) Digital Encryption Standard
■ خوارزمية تشفير البيانات الدولية (IDEA) International Data Encryption Algorithm
قد تضاف الأصفار في الحالات التي لا توجد فيها بيانات كافية للتشفير وذلك لتحقيق حجم الكتلة الكامل وقد ينتج عن هذا مقدار ضئيل جدًا هدر الطاقة لأن الاضافة الصغيرة ستتم معالجتها وتشفيرها جنبًا إلى جنب مع البيانات الحقيقية.
Stream Ciphers
تشفير التدفق هو تشفير مفتاح متماثل (symmetric) أي أن نفس مفتاح التشفير هو مفتاح فك التشفير ويعمل على كل بت من بيانات النص العادي المراد تشفيرها بت واحد في كل مرة مقابل بتات تدفق المفاتيح والتي تسمى أيضًا (cipher digit stream). والمخرج النهائي هو تدفق لنص مشفر وذلك لأن (Stream Ciphers) لا يجب أن يتناسب مع حجم كتلة معين فقد يكون هناك حمل أقل بقليل من Block Ciphers الذي يتطلب حشوًا لإكمال حجم الكتلة.
Symmetric and Asymmetric Algorithms
أثناء بناء المفردات الخاصة بك تعتبر الكلمات المتماثلة (Symmetric) وغير المتماثلة (Asymmetric) من الكلمات المهمة والتي يجب التمييز بينهما. سنلقي نظرة على كل منها لمعرفة أي منها يتطلب أكبر قدر من الحمل على وحدة المعالجة المركزية CPU وأيها يستخدم لتشفير البيانات الكبيرة.
Symmetric
تستخدم خوارزمية التشفير المتماثل نفس المفتاح لتشفير البيانات ولفك تشفير البيانات. يحتاج كل من الجهازين المتصلين عبر VPN مثلاً إلى المفتاح لتشفير وفك تشفير البيانات المحمية بنجاح باستخدام خوارزمية تشفير متماثل وتتضمن الأمثلة الشائعة لخوارزميات التشفير المتماثل ما يلي:
■ DES
■ 3DES
■ AES
■ IDEA
■ RC2 ، RC4 ، RC5 ، RC6
■ Blowfish
تُستخدم خوارزميات التشفير المتماثل لمعظم البيانات التي نحميها في شبكات VPN اليوم والسبب في استخدامنا لها في تشفير الجزء الأكبر من بياناتنا هو أنها الأسرع وبشكل كبير من غيرها وتأخذ جهد أقل من وحدة المعالجة المركزية مقارنة بخوارزمية غير متماثلة.
وكما هو الحال مع جميع عمليات التشفير كلما زادت صعوبة المفتاح زادت صعوبة فك التشفير في حال الاعتراض للرسالة. عادة ما تتم الاشارة إلى المفاتيح مع شبكات VPN بطولها فالمفتاح الأطول يعني الأمان الأفضل. يبلغ طول المفتاح النموذجي من 112 بت إلى 256 بت ويجب أن يكون الحد الأدنى لطول المفتاح 128 بت على الأقل حتى يتم اعتبار خوارزميات التشفير المتماثل آمنة إلى حد ما.
Asymmetric
من الأمثلة على الخوارزمية غير المتماثلة خوارزميات المفتاح العام (public key). فبدلاً من استخدام نفس المفتاح للتشفير ولفك التشفير فإننا نستخدم مفتاحين مختلفين يعملان بشكل حسابي معاً كزوج وتم الاتفاق على تسميتهما أي المفتاحين بالمفتاح العام والمفتاح الخاص فهما معاً يصنعون زوجاً من المفاتيح.
تخيل حاوية شحن ضخمة بها قفل خاص به فتحتان للمفاتيح ثقب خاص بمفتاح كبير وآخر خاص بمفتاح صغير. فإذا استخدمنا ثقب المفتاح الصغير مع المفتاح الخاص به لقفل الحاوية فإن الطريقة الوحيدة لفتحها هي استخدام المفتاح الكبير في ثقبه الخاص به. وهناك خيار آخر وهو قفل الحاوية ابتداءً باستخدام المفتاح الكبير في ثقبه الخاص ومن ثم فإن الطريقة الوحيدة لإلغاء القفل هي استخدام المفتاح الصغير في ثقبه الخاص.
يشرح هذا المثال العلاقة المتبادلة بين المفتاح العام والمفتاح الخاص وهناك جهد كبير جداً على وحدة المعالجة المركزية CPU عند استخدام أزواج المفاتيح لتشفير البيانات وفك تشفيرها. ولهذا السبب نستخدم الخوارزميات غير المتماثلة بشكل أقل فبدلاً من استخدامها لتشفير بيانات كبيرة نستخدمها لأشياء أخرى مثل التحقق من هوية النظير على VPN أو إنشاء المفاتيح وتبادلها عند استخدام الخوارزميات المتماثلة.
أحد أسباب تسمية ذلك بتشفير المفتاح العام هو أننا نسمح لأحد هذه المفاتيح أن يتم نشره وإتاحته لأي شخص يريد استخدامها وهو المفتاح العام وأما المفتاح الآخر في زوج المفاتيح وهو المفتاح الخاص فيكون فقط معروف للجهاز الذي يمتلك زوج المفاتيح العام والخاص. ومن الأمثلة على استخدام زوج من المفاتيح العامة والخاصة هو زيارة موقع ويب آمن ففي الخلفية يتم استخدام زوج المفاتيح العامة والخاصة للخادم لضمان أمان الجلسة ويمكن لجهاز الكمبيوتر الخاص بنا الوصول إلى المفتاح العام والخادم هو الوحيد الذي يعرف مفتاحه الخاص.
تتضمن أمثلة الخوارزميات غير المتماثلة ما يلي:
■ RSA: سميت على اسم كل من Rivest و Shamir و Adleman وهم الذين أنشأوا الخوارزمية. الاستخدام الأساسي لهذه الخوارزمية اليوم هو التحقق من الهوية. قد يكون طول المفتاح من 512 إلى 2048 والحجم الأدنى للأمان الجيد هو 1024 على الأقل.
■ DH: بروتوكول Diffie-Hellman لتبادل مفاتيح يمثل خوارزمية غير متناظرة تسمح لجهازين بالتفاوض وإنشاء (مفاتيح) سرية مشتركة عبر شبكة غير موثوق بها والشيء المثير للاهتمام حول DH هو أنه على الرغم من أن الخوارزمية نفسها غير متماثلة إلا أن المفاتيح التي تم إنشاؤها بواسطة التبادل هي مفاتيح متناظرة يمكن استخدامها بعد ذلك مع خوارزميات متماثلة مثل معيار التشفير الرقمي الثلاثي (3DES) ومعيار التشفير المتقدم (AES).
■ ElGamal: سميت بهذا الاسم نسبة إلى مؤسسها ومبتكرها الدكتور المصري طاهر الجمل وذلك عام ١٩٨٥م ويعتمد نظام التشفير غير المتماثل هذا على تبادل DH.
■ DSA: تم تطوير خوارزمية التوقيع الرقمي هذه بواسطة وكالة الأمن القومي الأمريكية.
■ ECC: تشفير المنحنى الإهليجي.
تتطلب الخوارزميات غير المتماثلة قدر أكبر من طاقة معالجة وحدة المعالجة المركزية مقارنةً بالخوارزمية المتماثلة. إلا أن الخوارزميات غير المتماثلة تعد أكثر أمانًا ويمكن أن يتراوح طول المفتاح النموذجي المستخدم في الخوارزميات غير المتماثلة بين 2048 و 4096. ويعتبر طول المفتاح الأدنى من 2048 غير موثوق به أو غير آمن.
الخوارزمية غير المتماثلة شائعة الاستخدام لأغراض التحقق من الهوية هي RSA والتي تستخدم غالباً في التوقيعات الرقمية RSA.
Hashing
هي طريقة تستخدم للتحقق من سلامة البيانات وطريقة عملها تكمن في أخذ كتلة من البيانات وانتاج قيمة hash صغيرة وثابتة الحجم وهي عملية أحادية الاتجاه مما يعني أنه إذا أخذ جهازي كمبيوتر مختلفين نفس البيانات وقاموا بعمل الـ Hashing فيجب أن يحصلوا على نفس قيمة الـhash ذات الحجم الثابت كما أنه ليس من الممكن إنشاء نفس الـ hash من كتلة مختلفة من البيانات ويشار إلى هذا الأمر بمقاومة الاصطدام (collision resistance). تكون نتيجة الـ Hashing عبارة عن سلسلة صغيرة من البيانات ذات طول ثابت ويشار إليها أحياناً باسم (digest) أو (message digest) أو مجرد hash.
مثال على استخدام الـ Hashing للتحقق من سلامة الرسالة (integrity) هو قيام المرسل بتشغيل خوارزمية الـ Hashing على كل حزمة وإرفاق هذه الـ hash بالحزمة ثم يقوم الجهاز المستقبل بتشغيل نفس خوارزمية الـ Hashing على الحزمة ويقارن نتائجه مع النتائج التي حصل عليها المرسل والتي تم إرفاقها بالحزمة أيضاً. إذا كانت الـ hash التي تم إنشاؤها تتطابق مع الـ hash التي تم إرسالها فهذا يعني أن الحزمة بأكملها سليمة. إذا تم تعديل بت واحد من الحزمة فلن تتطابق الـ hash المحسوبة بواسطة جهاز المستقبل وسيعرف أن الحزمة لديها مشكلة خاصة فيما يتعلق بسلامتها من التعديل.
الأنواع الثلاثة الأكثر شيوعًا للتجزئة هي كما يلي:
■ (MD5): يؤدي هذا إلى إنشاء digest بطول 128 بت.
■ (SHA-1): يؤدي هذا إلى إنشاء digest بطول 160 بت.
■ (SHA-2): تشتمل الخيارات على digest بطول ما بين 224 بت و 512 بت.
Digital Signatures
عندما نوقع على شيء ما غالبًا ما يعني هذا التزاماً بشيء ما أو على الأقل إثبات أنك تقر به وفي عالم التشفير يوفر التوقيع الرقمي ثلاث مزايا أساسية:
■ المصادقة (Authentication)
■ سلامة البيانات (Data integrity)
■ عدم الإنكار (Nonrepudiation)
التوقيعات الرقمية عملياً
من أفضل الطرق لفهم كيفية عمل التوقيع الرقمي هو تذكر ما تعرفه وذكر في هذه الورقة حول أزواج المفاتيح العامة والخاصة والـ Hashing والتشفير وذلك لأن التوقيعات الرقمية تتضمن كل عنصر من هذه العناصر.
حمزة و علي لهما جهازان ويرغبان في إنشاء اتصال VPN مع بعضهما البعض وللقيام بذلك يريدون استخدام التوقيعات الرقمية للتحقق من بعضهم البعض وللتأكد من أنهم يتواصلون مع الجهاز الصحيح. يريد كل منهما التحقق من الآخر ولغرض التبسيط سيتم التركيز على جهاز واحد جهاز حمزة يريد حمزة إثبات هويته للجهاز الآخر المملوك لعلي. كإعداد بسيط مسبق يجب أن تعلم أن كل من حمزة و علي قد أنشأوا أزواج مفاتيح عامة وخاصة وكلاهما مُنح شهادات رقمية من مرجع تصديق مشترك (CA). المرجع المصدق (CA) هذا هو كيان موثوق به يوزع الشهادات الرقمية.
يأخذ حمزة حزمة ويقوم بإنشاء الـ hash لها ثم يأخذ حمزة هذه الـ hash الصغيرة ويقوم بتشفيرها باستخدام مفتاحه الخاص. نرفق هذه الـ hash المشفرة بالحزمة ونرسلها إلى علي والاسم الجميل لهذه الـ hash المشفرة هو التوقيع الرقمي. فعندما يتلقى علي هذه الحزمة يقوم بالنظر إلى الـ hash المشفرة التي تم إرسالها له ويقوم بفك تشفيرها باستخدام مفتاح حمزة العام. ثم يقوم بوضع الـ hash الغير المشفرة على الجانب للحظة ويقوم بتشغيل نفس خوارزمية الـ Hashing على الحزمة التي استلمها للتو. إذا كانت الـ hash التي حسبها للتو تتطابق مع الـ hash التي استلمها بعد أن قام بفك تشفيرها باستخدام المفتاح العام للمرسل وهو حمزة في مثالنا هذا فإنه يتأكد من شيئين. الأول إنه يعرف أن الشخص الوحيد الذي كان بإمكانه التشفير هو حمزة باستخدام المفتاح الخاص به وكذلك أن البيانات على الحزمة لم تتعرض لأي تعديل لأنه لو تم تغيير 1 بت فلن تتطابق الـ hash. تسمى هذه العملية التحقق من الهوية باستخدام التوقيعات الرقمية وتحدث عادةً في كلا الاتجاهين باستخدام نفق IPsec VPN إذا كان الأقران يستخدمون التوقيعات الرقمية للتحقق من الهوية.
قد يتساءل القارئ طيب .. كيف حصل علي على مفتاح حمزة العام؟ والجواب هو أن حمزة وعلي تبادلا الشهادات الرقمية والتي تحتوي على المفاتيح العامة لبعضهما البعض. لا يثق حمزة ولا علي في أي شهادات لكنهما يثقان في الشهادات الموقعة رقميًا بواسطة مرجع مصدق يثقان فيه. وهذا يعني أيضاً أنه للتحقق من صحة التوقيعات الرقمية من المرجع المصدق سيحتاج كل من حمزة وعلي أيضاً إلى المفتاح العام للمرجع المصدق.
Key Management
إدارة المفاتيح موضوع مهم وكبير في عالم التشفير فلدينا مفاتيح متماثلة يمكن استخدامها مع الخوارزميات المتماثلة مثل الـ Hashing والتشفير ولدينا مفاتيح غير متماثلة مثل أزواج المفاتيح العامة والخاصة التي يمكن استخدامها مع الخوارزميات غير المتماثلة مثل التوقيعات الرقمية ومن المنطقي أن يكون صمام الأمان مع كل هذه الخوارزميات التي ألقينا نظرة عليها هو (المفاتيح) نفسها.
تركز إدارة المفاتيح على إنشاء المفاتيح والتحقق من المفاتيح وتبادل المفاتيح وتخزين المفاتيح وفي نهاية عمر المفاتيح الافتراضي ومن ثم تدمير المفاتيح.
يشير المصطلح Keyspace إلى جميع قيم المفاتيح الممكنة لمفتاح ما. وكلما كان المفتاح أكبر كانت الخوارزمية أكثر أماناً وعيبها الوحيد هو أنه كلما زاد طول المفتاح زاد جهد وحدة المعالجة المركزية لفك تشفير البيانات أو تشفيرها.