بسم الله الرحمن الرحيم
هل تريد حمايه ملفاتك وبياناتك من المتطفلين ؟
هل تريد الحفاظ على اسرارك وملفاتك من ايدي العابثين ؟
هل تريد ارسال رسائل غير مقروءه من الجميع باستثناء الشخص الذي تريد ؟
هل تريد تشفير ملفاتك من ايادي ابناء اختك الصغار ؟
اذا هذه الدروس موجهه لك ، انت
في البدايه احب ان انوه هنا ، الى ان الموضوع كبير جدا جدا ، وسوف يقسم الى عده اجزاء حتى يسهل متابعته وقرائته ..
الجزء الاول ، موجه للجميع ، مستخدمين ، مبرمجين ، مطورين ، وحتى زبائن تريد ان تشتري احد برامج التشفير ... فهنا سوف يكون الموضوع بشكل عام دون الدخول في التفاصيل الرياضيه والخوارزميات ، وبدون كتابه برامج باحد لغات البرمجه ، فقط الغرض هو توضيح المفهوم العام لهذا العلم الواسع General Concept ، بالطبع سنتناول الطرق الحديثه والمستخدمه حاليا ولن نتطرق الى الطرق القديمه والتي عفا عليها الدهر ..
الجزء الثاني ، موجه للطلبه و للباحثين في هذا المجال ، والمهتمين بدراسه تاريخ التشفير ، والطرق القديمه التى استخدمت في ذلك الوقت ، وطرق كسرها وما الى ذلك Classical Methods .. وايضا سنطبق برامج على هذه الطرق القديمه بشكل سريع ،
الجزء الثالث ، موجه للمبرمجين والمطورين ، الذين يريدون استخدام هذه التقنيات في برامجهم ، واستخدام خوارزميات (مثلا DES,AES,RSA,etc ) مع الشرح التفصيلي لهذه الخوارزميات ، وايضا الى استخدام المكتبات الجاهزه التي تخفي الكثير من التعقيد وتسهل الامر كثيرا ...
بالطبع ، انا لست خبيرا في هذا المجال ، ولكني احاول باذن الله تقديم ما استطيع ، واذا كان لدى احدكم اي معلومات او اي اضافات يريد ان يضيفها ، فبمرحب به بكل تأكيد .. : :
احب ان اضيف ايضا ، انه هناك اسس يجب اتباعها في حال اردت اتباع الطريق الصحيح لان تصبح احد مكتشفين هذه الخوارزميات (او مكتشف الثغرات بها) ان يكون لديك معلومات في المجالات التاليه ، نظريه الاعداد Numbers Theory ، نظريه المعلومات Information Theory ، والتى تتطلب كتاب خاص لكل واحده
.. على العموم نحن بالطبع على قد حالنا و نمد ارجلنا على قد لحافنا : ...
وهذه الكتب والمراجع التي باذن الله تؤهلك لدخول هذا العلم من اوسع ابوابه :
Handbook of Applied Cryptography by :Alfred J. Menezes
Cryptography: Theory and Practice by Douglas Stinson
Applied Cryptography, by Bruce Schneier
RSA Security's Official Guide to Cryptography by : Steve Burnett and Stephen Paine (المرجع الاساسي للجزء الاول ) .
نبدا حاليا الجزء الاول ، وعسى ان نتنهي منه في اسرع وقت ، وقد يأخذ حوالى 4 الى 6 جلسات (او مواضيع) .. حتى نكون انتهينا من اغلب النقاط الموجهه للجميع ...
نبدأ على بركه الله ،،،
لماذا بالتشفير ؟
********
قد تتسأل اخي الكريم وتقول " انا لا احتاج للهذه الدروس ، ببساطه ، لانه ليس لدى اي شيء لاخفيه ، ولا داعي لهذه الحمايه" ؟
حسنا اخي ، لكن دعنا نشاهد ملفاتك الطبيه ، او كشف حساباتك في احد البنوك ، او حافظه نقودك ، او دعني استخدم رقم(الهويه) الجواز الخاص بك ، او على اقل تقدير دعني استخدم الباسورد الخاص بدخول المنتدى ، او البريد الخاص بك ..
المقصد هنا ، اننا جميعا لدينا معلومات بحاجه الى ان تبقى سريه عن الجميع ، بالتأكيد ستشعر بعدم الارتياح مثلا في حاله عرفنا كلنا بمواعيد زياراتك للطبيب ، ما هي الادويه والعلاجات التي تستخدمها ، ما هى الامراض المصاب بها (عافانا الله واياكم) .. سبب اخر نحن نريد الحفاظ على تلك المعلومات من المخترقين ، تخيل احدهم سرق الباسورد الخاص بك في المنتدى ودخل بحسابك وبدا يسب ويعلن في الاعضاء ماذا سيكون موقفك ، بالتأكيد اهون من الذي تم استخدام بطاقته الائتمانيه وسرقه مبلغ 1000$ .
الشركات ايضا لديها العديد من الاسرار (الاستراتيجيات ، تفاصيل المنتجات ، معلومات الموظفين ، نتائج ابحاث سريه ) ، وحتى الشركات النصابه "وهم كثر" تريد الحفاظ على هذه النشاطات الدنيئه بعيدا عن الاعين ، كل هذه الشركات (بغض النظر عن شرعيتها) تريد ان تحفظ معلوماتها بعيدا الناس (قد يكونوا منافسين ، مخترقين "هاكر ام كراكر") .
ملاحظه :
بعض الناس يعتقد اعتقاد خاطئ وهو ان الهاكر Hacker هو الشخص المضر ، الحقيقه هي انه هذا الهاكر هو الشخص المحترف وذا خبره طويله في جميع المجالات المختصه بالحاسب ، وهناك من يستخدم هذه الخبره فيما يضر (ولديه اسبابه) ، وهناك من يستخدمها فيما ينفع !!
كلمه لديه اسبابه ، مثلا (وقد حصل) هناك مبرمج عمل فترات طويله في احد الشركات وقد ساهم في ارتفاع مستوى الشركه بشكل كبير ، بعدها ولقرار اداري يتم فصل هذا المبرمج الخبير من الشركه وبدون اسباب ، هنا يتحول هذا المبرمج الى مسخ ويبدأ في تدمير وقتل و.. (اصبح فلم ) .
نعود الى التشفير ، ونترك صاحبنا الهكر ريثما ينتهي من عمليات التدمير:
الان وقبل الدخول في اعماق التشفير ، علينا معرفه بعض الامور بشكل سريع ،،
الحمايه المقدمه من قبل نظام التشغيل :
*********
في الماضي كانت عمليه الحمايه بسيطه جدا ، فقط كل ما عليك هو ان تضع ملفاتك في الدرج ثم اغلاق باب المكتب بالمفتاح !! واذا كنت تريد حمايه اكثر يمكنك الاستعانه "بطبله كبيره" والسلام .. لكن حاليا الامر اختلف بشكل كبير ، فالملفات اصبحت تحفظ في الجهاز والهارديسك والسي دي CD وغيرها ، السؤال هو كيف يمكن حمايه الهادريسك ؟
وهنا يأتي دور نظام التشغيل ، اغلب نظم التشغيل تقدم نوع من الحمايه وتسمى الصلاحيات permissions والتى تسمح لمستخدمين معينين الدخول الى النظام ، وذلك عن طريق اجراء الدخول (نافذه login) ، وفي حاله ادخال اسم المستخدم والباسورد الصحيحين يتم الدخول الى النظام ، وحتى بعد الدخول في حاله حذفت ملف معين فانه نظام التشغيل ينظر اولا هل انت من لك الصلاحيه لحذف هذا الملف وفي حاله النفي فانك لن تستطيع حذف الملف ابدا .
(طبعا مستخدمين انظمه Unix-Like يعرفوا هذه التفاصيل بشكل كبير) ..
والشخص الذي يكون لديه الصلاحيه لفعل شيء هو المدير administrator او root ، وهو الذي يعطى الصلاحيات لباقي المستخدمين ، هو الذي يعطل الحسابات ، هو الذي يعطي الباسورد في حال فقد احدهم الباسورد الخاص به ، هو المدير بمعنى الكلمه ، ولكن root بعيده المعنى ..
كيف يعرف نظام التشغيل ان الشخص الموجود هو المدير الفعلي ؟ عن طريق اسم المستخدم و الباسورد بالطبع ، لكن وبكل اسف الطرق لمراوغه النظام وكسر حمايه باسورد المدير اصبحت منتشره وبكثره ، في ويندوز xp home يكفي ان تدخل عن طريق الوضع الامن للدخول الى النظام !! وهناك الكثير من البرامج لكسر وتغيير الباسورد للاغلب الانظمه ..
كمخترق اريد ان ادخل الى النظام اول ما افكر فيه هو اسم المستخدم الذي يأتي مع النظام preset account ، بالاضافه الى ان اغلب الانظمه (مثلا ويندوز) يكون فيها اسم المستخدم الخاص بالمدير هو administator وبدون باسورد (وللاسف الكثير من المستخدمين يتركون هذ الحساب بدون تغيير) ، وفي هذه الحاله الدخول الى النظام امر في منتهى البساطه وسوف اشكر الشركه المنتجه على هذه الصنيعه التي لا تنسى:
للاسف المستخدم طلع عامل حسابه ومغير الباسورد ، اذا سأبحث عن طريق اخر وهو البحث عن اسم المستخدم والباسورد يعني تخمينه ، في الافلام والمسلسلات الامر سهل للغايه ، دقيقه ويتم الكشف عن هذا الباسورد ويتم الدخول الى النظام ، لكن الحقيقه تختلف كثيرا ، ربما اذا بحثت في المكتب تجد بعض الاوراق مكتوب عليها الباسورد (ايضا هذه في الافلام فقط )
على العموم هناك طريقه تستخدمها الكثير من الجامعات والمؤسسات وهي اسم المستخدم هو نفسه اسم الباسورد ، وقد حصل هذا الامر معي في الجامعه ودخلت الى النظام
، كان اسم المستخدم والباسورد عباره عن اسم الشركه المصنعه للشاشه (مكونه من ثلاث حروف) ، اظن الشركه اسمها DTK ، (طبعا بعد العديد من المحاولات البائت بالفشل ، ولم انتبه الى انه الباسورد مكتوب في اسفل الشاشه ) .. المهم انكسر وخلاص .ايضا حاليا في الجامعه لدينا اغلب الاجهزه في المعمل يوجد بها باسورد على البيوس BIOS بالطبع لا استطيع فتح الجهاز بمفك ونزع البطاريه (فصل عطلول لو شافوني) ، لذلك قمت بالبحث عن طرق واخيرا توصلت الى برنامج مكتوب بالسي لمسح الباسورد ، وفي حال اشتغل بشكل صحيح سأضعه هنا في المنتدى ، متى يبدأ الفصل الدراسي الثاني حتى ابدأ في العمليات الارهابيه ...
حسنا ، في حال اسم المستخدم لم يكن هو الباسورد ، ماذا افعل ؟ (مع الاخذ بالاعتبار اني اعرف اسم المستخدم) لا توجد طريقه الا بالتخمين حول الباسورد ، اسم الزوجه ، رقم الهاتف ، تاريخ الميلاد ، اسم الحبيبه ، ممممم مشكله اليس كذلك ! بالطبع لا ، فهناك الكثير من البرامج تقوم بعمليات التخمين نيابه عنك password cracker ، وفي حاله الباسورد ضعيف ، سوف تدخل الى النظام في خلال دقائق ...
هناك برنامج اسمه l0phtCrack يستخدم من قبل مدراء الانظمه ، وظيفته تغيير الباسودرات المستخدمه في الشبكه ، (بالطبع في حال المدير يستطيع ذلك ، الكراكر يفعلها ايضا p) ..
(يمكنك البحث عن معلومات حول هذا البرنامج ، ودراسته في حال كان برنامج مفيد ، فانا بصراحه لم اتعامل معه من قبل ، اتمنى من الاخوه اذا لديهم اي معلومات حول هذا البرنامج مشاركتنا بها ) .
نوع اخر من انواع الهجوم هو تجاوز نظام التشغيل ، وهو يتطلب بعض الخبره في هذا المجال ، مثلا Data Recovery Attack ، وهنا سوف يقوم بقراءه الهارديسك بت بت وتجميعها لبناء الملف الاصلي ، وهذه البرامج الغرض منها ليس للهجوم ولكن الكراكرز هم الذين استفادوا منها فاغلب برامج استعاده البيانات يتم استخدامها من قبل المختصين في استرجاع البيانات ، مثلا خرب عليك النظام System Crash او حدث Bad Sector في الهادريسك الخاص بك ، كل ما عليك (في حال انك مستخدم) الذهاب الى خبراء استرجاع البيانات ، وهو سوف يستخدموا هذه البرامج لاستعاده بياناتك . نفس الامر سوف يقوم المخترق باستخدام هذه البرامج لتجاوز نظام التشغيل ..
بالمناسبه ، سمعت ايضا عن اجهزه معينه تسترجع البيانات حتى في حاله هناك اضرار بالغه في الهارديسك (حرائق ، سوائل) ، اتمنى في حال لدى احدكم اي معلومات عن هذا الامر او حتى عن البرامج المستخدمه ان يضعها لكي نستفيد منها ،،
نوع اخر من الهجوم وهو الهجوم على الذاكره Memory Reconstruction Attack ، في البدايه عندما نتعامل مع برنامج ما بالطبع سوف تكون جميع التعلميات موجوده في الذاكره ، وسوف تكون هناك اشاره في الموقع المحفوظ فيها تعليمات البرنامج ، وعندما نتنهى من البرنامج ونقوم باغلاقه ، فسوف يقوم مدير الذاكره في النظام بحذف هذه الاشاره دون حذف المحتوى الحقيقي لها ، بالطبع من الممكن ان يأتي اي برنامج اخر ويحل في نفس الموقع ويحذف تلك البيانات ، ومن الممكن ان تكون موجوده .. هجوم الذاكره يقوم بعمل مسح للذاكره وكتابه تلك البيانات التى لا توجد عليها اشاره ، (لا اعلم كم يتم تطبيق هذا الهجوم على ارض الواقع) ..
مشكله اخرى ، وهي الذاكره الظاهريه ، اغلب انظمه التشغيل تحتوي على Virtual Memory وهنا يتم استخدام الهادريسك كذاكره ، ومبدأ عملها في حاله امتلئت الذاكره يتم افراغ بعض من محتوياتها التى لم تستخدم من وقت طويل الى الهادريسك في مكان معين ، بعدها في حال طلبت تلك المواقع (التى اصبحت موجوده في الهارديسك) سوف يقوم نظام الذاكره بعمل تبديل Swap بين المحتويات ،، على العموم في عام 1999 قام احدهم بكتابه برنامج لمسح هذا المكان التي تحفظ فيه الذاكره وتمكن من ايجاد الباسورد الخاص به في احد البرامج .
اضافه الحمايه بواسطه التشفير
***************
لجعل اسرارك اكثر امانا ، يجب عليك عدم الاعتماد على تلك الحمايه المقدمه من نظام التشغيل والافتراض بأن المخترق يعرف اساليب التراوغ والاختراق ، والاعتماد على التشفير ، وهو ببساطه تحويل النصوص المفهومه الى كلام غير مفهوم gibberish ،
مثل :
my name is wajdy , im a member in 3asfh fourm
تصبح :
kjdkp isjeu epdmp owdkl kldkl kqklq ds
وحتى لو استطاع المخترق بالوصول الى نظامك وكسره ، سوف يشاهد ملفك بالصوره السابقه وياكل المقلب ولن يحصل على شيء ..
يعني بالتشفير سوف تحصل على :
* الخصوصيه او السريه Privacy :
لن يستطيع احد قرائه ملفاتك السريه (وملفاتك الطبيه) ، الا من تريده انت فقط !
* تكامل البيانات Data Integrity :
ويعني التأكد من ان رسالتك لم تتغير (قام احدهم بتغيير شيء ما) اثناء ارسالك للرساله
* التحقق Authentication :
التحقق من الشخص الفلاني هو الشخص الذي تريده لقرائه الرساله ،
* عدم الانكار nonrepudiation :
مصطلح غريب قليلا ، ولكن الفائده هنا جعل الشخص المرسل للرساله الالتزام وعدم انكار انه هو الشخص المرسل للرساله ،
بالطبع قد تكون الصوره مشوشه لديك قليلا الان ، لكن لا تخف ، باذن الله سوف تذهب خلال الجلسات والمواضيع القادمه .
انتهت المقدمه .........
المره القادمه باذن الله ، سوف نتناول اول واهم الامور وهي Symmetric key Cryptography (التشفير بالمفتاح المنتاظر) ـ
يتبع
التشفير بالمفتاح المتناظر | Symmetric Key Cryptography
التشفير بالمفتاح المتناظر | Symmetric Key Cryptography
*************************
وصلنا في الجلسه السابقه الى ان التشفير هو عباره عن تحويل المعلومات المفهومه الى معلومات غير مفهومه Gibbrish ، والعمليه العكسيه فك التشفير ، هي عمليه تحويل المعلومات الغير مفهومه الى معلومات مفهومه ، جميل ، جميل ...
النوع الاول من انواع التشفير هو: التشفير بالمفتاح المنتاظر ، وهنا سوف نستخدم مفتاح مع خوارزميه (هناك الكثير) لتشفير المعلومات ، وسوف نستخدم نفس المفتاح ونفس الخوارزميه لفك التشفير ،
ولنضرب مثال بسيط يوضح العمليه ،،
الاخ محمد هو مندوب مبيعات في احد الشركات الكبرى ، وقد وصلته رساله من مدير قسم المبيعات الاخ علي ، هذه الرساله تحتوي على معلومات سريه جدا خاصه بالاسعار الجديده للمنتجات وبعض الامور الخاصه في الشركه ،
الان اخونا محمد هو والمدير علي يريدان الحفاظ على هذه الرساله السريه لديهما فقط ، فما هو السبيل لذلك ؟ قد يستطيع الاخ محمد حفظ الرساله لديه في المكتب في الدرج ، او ربما يحفظ تلك الرساله في رأسه ، لكن للاسف الرساله طويله جدا ، وهو يحتاج اليها في عمليه البيع لان بها اسعار المنتجات ... (لذلك يجب ان يحملها معه).
قد يقوم الاخ محمد بحفظ هذه الرساله في جهازه المحمول والقيام بوضع باسورد على النظام وبعض الصلاحيات ، لكن رأينا في الجلسه الاولى ان هذه الطريقه غير كافيه ، قد يضيع الجهاز المحمول او قد يسرق منه وبعدها تنكشف كل المعلومات وتضيع الشركه ...
اخيرا قرر اخونا محمد تشفير تلك الرساله ، وبما انه لا يعرف اي شيئا في البرمجه قام بشراء برنامج من الاخ romansy يقوم بتشفير الرساله ، هذا البرنامج بسيط في عمله User- friendly ويحتوي على ثلاثه ازرار واحد للتشفير، و واحد لفك التشفير ، و واحد لتحميل الملف من الجهاز .. وبكل بساطه لكي يعمل يقوم محمد بتحميل الملف (الرساله) ، والضغط على زر التشفير Encryption وبعدها تتحول الرساله الى كلام غير مفهوم (مشفر) ... وفي حال حصل المخترق على تلك الرساله الناتجه فبالتأكيد لن يفهم شيء ..

الان اذا اراد اخونا محمد فك الشتفير (العمليه العكسيه) كل ما عليه هو تحميل الرساله المشفره وبعدها الضغط على زر فك الشتفير ، وترجع الرساله الى حالتها الاصليه ..
المشكله الحقيقه هنا ، في حال حصل المخترق على برنامج التشفير هذا (بتاع romansy) هنا كل ما على المخترق تحميل الملف المشفر وضغط زر فك الشتفير وبعدها يحصل على الرساله !! من الممكن ان تقول "كيف يستطيع الحصول على برنامج التشفير
" ، الجواب بالتأكيد هو سيحصل عليه ، اذا كنت تستطيع اخفاء هذا البرنامج فلماذا لا تخفى الرساله من الاصل ، ولا تحتاج لبرنامج romansy ولا بطيخ ..
بالتأكيد اخونا محمد لا يستطيع اخفاء هذا الملف ، اذا ما العمل اذا ؟؟ مممم بالتأكيد هو يحتاج الى شيء اضافي ، الا وهو المفتاح السري Secret Key ..
قام الاخ محمد بابلاغ romansy وقد تم اضافه خاصيه ادخال المفتاح ، اممم الان البرنامج لكي يعمل يجب ان يقوم الاخ محمد بتحميل الملف (الرساله) الى البرنامج ، ويدخل المفتاح سري (اي رقم يحفظه تماما) بعدها يضغط على زر التشفير ، والناتج هو الملف المشفر (الغير مفهوم) ..
في حال اراد الاخ محمد بالقيام بالعمليه العكسيه ، كل ما عليه تحميل الملف المشفر الى البرنامج ، وادخال الرقم السري الذي استخدمه للتشفير ، والضغط على زر فك التشفير ، والناتج هو الملف الاصلي (او الرساله) ..

الان في حال اخونا المخترق حصل على البرنامج والرساله المشفره واراد القيام بالعمليه العكسيه ، هو للاسف لا يملك المفتاح السري ، وسوف يكتب ويخمن ووو وفي كل مره يكتب مفتاح سري خاطئ سوف يكون هناك ناتج غير مفهوم (مسكين ) ..

وهكذا ، اي احد لن يستطيع الحصول على الرساله الاصليه الا بعد كتابه المفتاح السري ، واذا ادخل المفتاح الخاطئ سوف يكون الناتج غير مفهوم ابدا ،وحتى لو كان هذا المفتاح الخاطئ اقل من المفتاح السري برقم واحد او حتى بنص رقم ..
بعض الفلسفه والمصطلحات
*************
طريقه التشفير السابقه التي استخدمناها تسمى (التشفير بالمفتاح المنتاظر او المتماثل Symmetric key Cryptography ) والبعض يسميها Secret key Cryptography ، ايضا اسم (التشفير التقليدي Conventional Encryption ) ، لكن نحن ناخذ المصطلح الاول فقط ..
(بالنسبه الى علم التشفير هناك الكثير من المصطلحات لها نفس المعنى وتؤدي بك في النهايه الى ان يتشفر عقلك ايضا من كثرها ، على العموم سأحاول وضع الاغلب والاشهر هنا ، لكي اذا اراد احدكم فتح احد الكتب او المراجع تكون تلك المصطلحات مفهومه وغير مشفره ) ..
في حال اردت ان تحول المعلومات المفهومه الى غير مفهومه تسمى العمليه تشفير Encryption
في حال اردت ان تحول المعلومات الغير مفهومه الى مفهومه تسمى العمليه فك التشفير Decryption
للتشفير او فك التشفير ، يجب ان تتبع خوارزميه Algorithm معينه ، الخوارزميه هي مجموعه خطوات مرتبه بطريقه معنيه تؤدي هدف معين ، بالطبع مفهوم الخوارزميه مفهوم لدى اغلب المبرمجين ، وتستطيع تطبيق الخوارزميه باي لغه برمجه ، المهم في التشفير الخوارزميه ممكن ان تكون علميه رياضيه معقده للغايه وممكن ان تكون عمليه جمع بتات او عمليه XOR ،، (في اغلب الخوارزميات التعامل بيكون على حسب البت bit ، لذلك سوف تستخدم عمليات الـ Bitwise operation وهي موجوده في سي و سي++ وجافا واسمبلي (طبعا) ، وسوف نتطرق لها باذن الله بالتفصيل عندما يحين وقتها ) .. - بالمناسبه ممكن ان تستخدم تعليمات الاسمبلي داخل السي او السي++ في حال اردنا التعامل بطريقه low level زي المحترفين ، سنضيف مثال لذلك باذن الله- .
البيانات (او الرساله) التى نريد اجراء عمليه التشفير عليها تسمى (النص الواضح plaintext او النص الاصلي cleartext) ..
البيانات بعد التشفير تسمى (النص المشفر ciphertext) ...
الخوارزميه هي التي تقوم بالتشفير ، وتحتاج الى مفتاح ، قد يكون رقم او مكون من عده ارقام .
لدينا ايضا صديقنا المخترق attacker ، وهو الذي نخاف منه ، ونشفر حتى لا يطلع عليها ، وهدفه هو التخريب او السرقه او التلاعب بمشاعرنا ..
العلم الذي يستخدم لكسر الخوارزميات وايجاد نقط الضعف بها يسمى Cryptoanalysis والشخص الذي يقوم بهذا العلم يسمى cryptanalyst ، ( لا توجد لدى ترجمه موثوقه لهذا المصطلح ، لذلك سأتحفظ عنه وسأذكره باللغه الانجليزيه) .
كل الخوارزميات يمكن ان تكسر وتخترق ، لكن الشيء الجيد هو انه اذا كانت الخوارزميه قويه ، قد يأخذ وقت الكسر وقتا طويلا جدا ، عندها تكون النتيجه too late . لذلك الـ cryptanalyst يقوموا يايجاد نقاط الضعف التي تساعد اي شخص باختراق تلك الخوارزميات في اسرع وقت !! والمخترق بالتأكيد يقوم باستخدام النتائج الخاصه بالـ cryptanalyst وايضا لديه العديد من الطرق والادوات الخاصه .
اذا النتيجه هي ان الـ cryptographer هو الذي يطور انظمه التشفير ، الـ cryptanalyst يقوم بايجاد نقاط الضعف فيها وهي خدمه عظيمه للمشفرين ، حيث انهم يكتشفوا الثغرات وينشورها للجميع ، بعكس المخترق الذي يكشف الثغره ويحتفظ بها لنفسه لاجل الاختراق .
ما هو المفتاح ، وما هي اهميته
************
في التشفير بالمفتاح المتناظر Symmetric المفتاح الذي يستخدم للتشفير هو نفسه الذي يستخدم لفك التشفير ، ومن هنا جائت كلمه المتناظر(أو المتماثل) ، يعني هو نفسه من الطرفين ، الصوره التاليه توضح العمليه :

لاحظ انه في حاله شفرت الرساله بخوارزميه معينه (مثلا DES) ومفتاح معين (مثلا 10) ، الان في حاله فك التشفير يجب ان استخدم نفس الخوارزميه ونفس المفتاح والا فلن احصل على النص الاصلي .
ما هي اهميه المفتاح ؟؟؟
لقد رأينا في المثال السابق (محمد وعلي ، عندما لم يستخدموا مفتاح سري) انه في حاله حصول المخترق على البرنامج (او معرفه الخوارزميه المستخدمه في التشفير) فانه بكل بساطه يستطيع ارجاع النص المشفر الى النص الاصلي ..
قد يسأل احدكم سؤال "حسنا ، لماذا لا اخترع خوارزميه وابقيها سريه عن الجميع وبهذا لا يعرفها المخترق وبالتالي لا احتاج الى مفتاح" ؟؟
سؤال جيد ، ولكن له عده مشاكل ، اولا لان المخترقين دائما يكسروا ويخترقوا الخوارزميه (سنشاهد بعد قليل بعضا من الامثله الواقعيه) ، ثانيا ، في حال انك لم تكن خبير في التشفير ولا تستطيع تطوير خوارزميه خاصه بك (مثل اخونا محمد) يجب في تلك الحاله ان تثق بالشركه المنتجه للبرنامج (الخوارزميه) الذي تستخدمه (في هذه الحاله يجب ان تثق ب romansy) ؟ هل يستطيع احدكم ان يمنح شركه ما كل هذه الثقه (حتى لو كانت ملك ل romansy ) ؟ بالطبع لا وألف لا...
وهنا يأتي السؤال الحقيقي ، من تثق بحفط اسرارك ، خوازرميه يجب ان تكون سريه من الجميع، ام الخوارزميه التي تؤدي عملها بشكل جيد وحتى لو عرفها الجميع .. وهنا يأتي المفتاح .
المفتاح يجعلك تشعر بالارتياح التام ، لانك اذا شفرت الخوارزميه باستخدام المفتاح ، سوف تكون مهتمك الحفاظ على المفتاح فقط ، بالتأكيد هو اسهل بكثير من الحفاظ على الخوارزميه التي اخترعتها .
ايضا في حال استخدمت مفتاح تشفيرلكل رساله ، في حال تم كسر احد المفاتيح ، فان باقي الرسائل تكون سريه وغير مكشوفه ، على العكس اذا استخدمت خوارزميه من تطويرك وتم كشفها فان كل الرسائل سوف تنكشف ايضا .
نظره تاريخيه ، المخترقين وراك وراك ، والزمن طويل
**********
السؤال السابق نطرحه مره اخرى ، "في حال شفرت الرساله بخوارزميه لا يعرفها احد ، واذا استخدمت مفتاح فلن ابلغ احد بطول المفتاح " هل تكون الرساله امنه ؟...
وهناك ثلاثه اجوبه ،،
الجواب الاول : هم دائما يعرفون الخوارزميه :
المخترقين سوف يعرفوا الخوارزميه مهما فعلت ، ولا اي واحد في تاريخ التشفير تمكن من ابقاء خوارزميته سريه ، لطالما تمكن الجواسيس في الحرب كشف الخوارزميات سواء باستخدام عمليات رياضيه او اجهزه لكسر الشفرات ، او حتى يوظفوا جواسيس لدى العدو ، او يسرقوا الخوارزميه ، او يسرقوا الجهاز المستخدم للتشفير (هناك العديد من الاجهزه الخاصه للتشفير) ،
في الحرب العالميه الثانيه ، تمكن الجنود البولنديين من سرقه الجهاز الالماني الذي كان الالمان يستخدموه للتشفير (اسمه Engima) وتم بيعه للبرطانيين (الحلفاء) وبعدها تمكن هؤلاء الحلفاء من كسر اغلب الرسائل الالمانيه !!
وبدون اي سرقه ، فان الـ cryptanalysts يستطيعوا ببساطه كسر الشفرات ، ففي الحرب العالميه الثانيه تمكن كاسري الشفرات الامريكيين (اسمهم Codebreaker) من معرفه طريقه عمل الجهاز المستخدم في التشفير لدى اليابانيين (بدون الحاجه الى سرقه الجهاز) .
مثال اخر ، هناك خوارزميه اسمها RC4 اخترعت من قبل شركه RSA في عام 1987 لكن لم تنشر ، كل الـ cryptanalysts والمشفرين اجمعوا في ذلك الوقت ان هذه الخوارزميه امنه جدا وتجعل البيانات سريه للغايه ، ولم تنشر تلك الخوارزميه لاغراض بيع برامج للتشفير (وليس لاغراض عسكريه) ، المهم في 1994 قام احد الهكرز بوضع الخوارزميه مشروحه بالتفصيل في الانترنت ! كيف عرف هذا الهكرز الخوارزميه ؟؟ بالتأكيد من خلال برامج الديبغر Dubbeger (وهي برامج تستخدم لفتح الملفات التنفيذيه وتتبعها سطر بسطر وتغيير الاكواد والكثير من الاومور التي يعرفها الهاكرز) . حاليا خوارزميه RC4 تستخدم كجزء من بروتوكول الـ SSL وهي من احد الخوارزميات التي تستخدم المفتاح المنتاظر للتشفير .
بعض الاحيان ممكن ان تبقى الخوارزميه سريه لبعض الوقت ، مثلا في الحرب العالميه الثانيه استخدم الامريكان لغه Navajo وطبعا اليابانيين لم يكونوا على علم بهذه اللغه ، لذلك الرسائل الامريكيه كانت مشفره . لكن حاليا اغلب الجيوش تحتوي على فريق كامل من العلماء باستطاعتهم تعلم اي لغه مهما كانت ،،،
الجواب الثاني : لا تستطيع جنى المال من الخوارزميه السريه :
لانك في حال عملت برنامج وقمت بيبيعه فبالتأكيد سوف يقوم احد الهاكر باستخدام طرق الهندسه العكسيه والوصول الى خوارزميتك (كما حصل في الـ RC4) .
لذلك الخوارزميه التي طورتها سوف تستخدمها لنفسك انت وحبيبتك فقط ..
الجواب الثالث : الخوارزميات المعروفه هي اكثر امنا :
لانها تكون مثبته انها امنه من قبل جميع الـ cryptanalysts والمشفرين ، من الممكن ان هؤلاء cryptanalysts قد اقروا بعدم وجود ثغرات بخوارزميه معينه ، بعدها بفتره قمت انت بكشف ثغره فيها ، نعم ممكن ولكن احتمال ضعيف جدا جدا ...
في حال اقر الجميع بان الخوارزميه امنه ولا توجد ثغرات بها ، فان فرصه ايجاد ثغره ضيئله للغايه ..
توليد المفتاح
**************
في التشفير المنتاظر ، المفتاح عباره عن رقم وطوله على حسب نوع الخوارزميه (64 بت مثلا) ، ويمكن توليده بصوره عشوائيه ، السؤال هنا كيف يتم توليد الارقام العشوائيه ؟
يتبع
حسنا ، الارقام العشوائيه هي بكل بساطه ارقام (1،3،100،5) يتم اختيارها بشكل عشوائي .. اغلب المبرمجين يعرفون قيمه هذه الاعداد فهي تستخدم بكثر في عده نواحي مثل الالعاب Game ، نمذجه ومحاكاه الحاسب Simulation And Moduling والتشفير Cryptography وغيرها من المجالات ..
في التشفير ، اهم ما يجب ان يتوفر في هذه الاعداد هو ان لا تتكرر ابدا ، ايضا ان تتجاوز الاختبارات الاحصائيه ، الاختبارات الاحصائيه هي مجموعه اختبارات يتم تطبيقها على الاعداد (او العدد) لكي تعرف هل هي عشوائيه ام لا ..
لنفترض لدينا مجموعه من الاعداد (الف عدد مثلا) ، وقمنا بسؤال احد الذين يقومون بهذه الاختبارات "هل هذه الاعداد عشوائيه ام لا" ، كل ما يقومه هذا الشخص (الاحصائي) بالقيام بتحويل الاعداد اولا الى الترميز الثنائي Binary Format اي يقوم بتحويل الاعداد الى 0 و1 ، بعدها يقوم باجراء عده اختبارات على هذه الاعداد ، الاختبارات تكون عباره عن عده اسئله :
هل العدد 1 يظهر بنفس تكرار 0 ؟ ام اكثر ام اقل ؟
هل العددين 1و 0 يظهران بشكل محدد كل مره ؟ (مثلا تأتي 1 اولا بعدها 0) ؟
وغيرها من الاسئله ....

المهم ، بعدها في حال نجح الاختبار ، تكون الاعداد العشوائيه التي اعطيتها للاحصائي محتمله ان تكون عشوائيه !! لا نستطيع ان نقول هي عشوائيه بصوره مؤكده 100% .. لماذا ، سنعرف لاحقا ..
مولدات الارقام العشوائيه A Random Number Generator (اختصارا RNG ) :
*******************
عرفنا ان الاعداد العشوائيه هي اعداد تكون بصوره عشوائيه وغير مرتبه ، حسنا السؤال الذي يطرح نفسه : من اين يمكن الحصول على هذه الاعداد العشوائيه ؟؟
هناك مصدرين :
الاول هو لتوليد اعداد عشوائيه حقيقه او كامله RNG او True RNG ... وهنا في هذه الحاله سوف نستخدم اجهزه خاصه لتوليد الاعداد (تأخذ مدخل يتغير باستمرار) مثل قياس الظروف الجويه ، حساب سريان التيار الكهربائي وغيرها وهذه الاعداد بالطبع سوف تجتاز الاختبار الاحصائي ..
واذا طلبنا من هذه الاجهزه اعداد عشوائيه اخرى ، فلن نحصل على نفس الناتج ابدا ، ولذلك لان المخرج (الاعداد) تعتمد على مدخل غير ثابت (يتغير باستمرار) ، لذلك فإن الاعداد العشوائيه الناتجه من هذه الاعداد لا تتكرر ابدا ، ولهذه تسمى بالاعداد العشوائيه الصحيحه او الكامله ..
قرأت عن ان شركه Intel تقوم باستخدام RNG يوضع داخل النظام ويقوم بحساب الحراره او شيء مشابه ، وهو مصدر يتغير باستمرار ، ايضا هذا الجهاز لا يأتي مع اي معالج بنتيوم (الا مع الطلب) ، لكن يحتمل ذلك في السنوات المقبله . شركات اخرى مثل : nCipher, Chrysalis تبيع اجهزه تسمى cryptographic accelerators هذه الاجهزه تأتي بـ RNG .... (في الجلسه المقبله باذن الله ،سوف نتناول بعض من هذه الاجهزه) .
المصدر الاخر لتوليد الارقام العشوائيه هو Pseudo-Random Number Generator ...
الاعداد العشوائيه المزيفه A Pseudo-Random Number Generator (اختصارا PRNG)
**********************
من اين يمكننا الحصول على اعداد عشوائيه اذا كنا لا نملك هذه الاجهزه ، الجواب باستخدام مولد الاعداد المزيفه ، وهو عباره عن خوارزميه لتوليد هذه الاعداد "المزيفه" ، بالتأكيد كلمه "مزيفه" يسبب لك بعضا من الحيره ، واليك تفسيره ،
هنا اذا استخدمنا الخوارزميه وولدنا الاعداد (مثلا الف عدد) ، بعدها ذهبنا الى صديقنا الاحصائي وقمنا باختبار هذه الاعداد ، الناتج هو ان هذه الاعداد سوف تنجح ايضا في الاختبار !!
اعلم ان الحيره زادت ضعفين ، لا تقلق ..
الذي يجعل هذه الاعداد مزيفه هو انها تتكرر (والف خط تحتها) ... اذا شغلت مولد الاعداد المزيفه في جهازين مختلفين سوف يطلع بنفس الناتج ، اذا شغلت البرنامج بعد سنه سوف يطلع بنفس الناتج !!
لذلك قبل قليل قلنا (هل انت متذكر) ان النتيجه التي يخرج بها الاحصائي هي محتمله ان تكون عشوائيه وليس عشوائيه 100% ، (لأنها ممكن ان تتكرر -هذا في حاله اسخدمنا PRNG-) .
اذا الاحصائي يعطينا اجابه على انه الاعداد عشوائيه فقط ، ولكن هو لا يعرف هل هي تتكرر ام لا ... يعطينا فقط نصف الاجابه .
حسنا ، اذا كانت الاعداد في PRNG تتكرر ، اذا ما هو الشيئ الجيد فيها ؟؟
لانه بكل بساطه يمكنك ان تغير التانج عن طريق ما يعرف بالـ Seed (البعض يترجموها بالبذره) ، كما هو الحال مع RNG تأخذ المدخل من (قياس الظروف الجويه، التيار) فإن PRNG تأخذ المدخل (البذره Seed) . اذا غيرت المدخل Seed سوف تتغير المخرجات ، في الـ RNG المدخلات تتغيربنفسها بدون الحاجه اليك ، في PRNG يجب عليك ان تغير المدخل Seed في كل مره ادرت الحصول على عدد عشوائي ..
ما هي البذره او الـ Seed ؟؟
هذه البذره ممكن ان تكون مثلا الوقت (كل جزء من الالف من الثانيه millisecond ) ، او مثلا مدخل من الكيبورد ، او حركه من الماوس ، او موقع الماوس في الشاشه (عدد البكسلات من الجهه الافقيه والعاموديه) ، باختصار يعني لا يمكن توقع القيمه هنا ...

قد يأتي سؤال طاير الان في رأسك وتسأل "لماذا لا استخدم الـ Seed فقط بدون الـ PRNG" ؟؟؟
لسببين ، الاول هو الحاجه السرعه ، فجمع الـ Seed يأخذ وقت طويل نوعا ما ..
مثلا انت بحاجه الى عده الالاف عدد ، اذا استخدمنا الـ Seed فانه يأخذ قتا حتى يجمع الاعداد المطلوبه !! تخيل مثلا جمع الSeed كان عباره عن حركه للماوس (واخذ الموقع) ، هنا لكي نولد 1000 عدد فاننا بحاجه الى 1000 حركه ، مشوار طويل ...
ولكننا اذا استخدمنا الـ PRNG كل ما علينا هو ادخال Seed واحد (بطول 160 بت تقريبا) وبعدها نبدأ بتوليد الاعداد باستخدام هذا الSeed ، وسوف تخرج لنا الالاف من الاعداد في غضون ثواني ...
السبب الاخر هو الـ (الفوضى مصطلح بايخ ولكن الى الان لم اجد اي ترجمه له ، وهذه من رأسي) ) المصطلح بالانجليزي هو entropy ،
على العموم كلما زادت الفوضي entropy كلما كانت النتيجه اكثر عشوائيه ، والـ PRNG تقوم بأخذ الSeed وتبعد منه بعض البتات (بطريقه معينه لا اعلم تفاصيلها) وبعدها تصبح النتيجه فوضويه اكثر ..
ايضا اغلب الـ PRNG تستخدم مفهوم يسمى message digests (سنتحدث عنه بالفصيل ان شاء الله الجلسه البعد القادمه) على العموم فكرته بسيطه مثل الخلاط blenders ، الخلاط العادي الذي يستخدم في المطابخ يأخذ العديد من الاطمعه ويخلطها ويخرج الناتج خليط من الاطعمه التى دخلت ، و الـmessage digests تأخذ البتات ووتدخلهم هذا الخلاط ويخرج الناتج خليط بشكل عشوائي ..
سوف نأخذ بعضا من خوارزميات توليد الاعداد العشوائيه (في الجزء الثاني او الثالث )، ونقوم بتطبيقها ، بالمناسبه الدوال rand , random تولد اعداد مزيفه ، و على حسب ما قرأت انه random تولد اعداد اكثر عشوائيه ، لا ادري لماذا لكن سأبحث عنها باذن الله ..
الهجوم على البيانات المشفره Attacks on Encrypted Data
*****************
عرفنا في الجلسه السابقه انه المخترق هو الشخص الذي يريد سرقه المعلومات ، ولكي يحصل على المعلومات يجب ان يفك تشفير البيانات المشفره ، ولفك التشفير فإن لديه طريقتان ، معرفه المفتاح ، او كسر الخوارزميه ..
Attacks on Keys الهجوم على المفتاح :
هنا يقوم المخترق بتطيق هجوم يسمى القوه العنيفه brute-force attack وطريقته هو ان يجرب مفتاح مفتاح الى ان يصل الى المفتاح المطلوب ..
لنفرض ان المفتاح يقع في النطاق من 0 الى 100,000,000,000 (مائه بليون) ، اولا يقوم المخترق بادخال الرقم 0 الى خوارزميه فك التشفير ويقوم بادخال الرساله المشفره ايضا ، بعدها ينظر الى النتيجه هل هي معقوله او مفهومه ، اذا كانت الاجابه نعم فاذا المفتاح هو 0 ، اما اذا كانت الاجابه بـ لا ، فيقوم بتجربه المفتاح 1 و بعدها 2 و100 و ... 100,000,000,000.

(تذكر ان الخوارزميه تقوم بعملها بغض النظر هل المفتاح صحيح ام خاطئ ، وفي كل مفتاح خاطئ النتيجه تكون غير مفهومه ، لذلك يجب على المخترق النظر الى النتيجه في كل مره يجرب فيها مفتاح ، المخترق الذكي يكتب برنامج يقوم بفحص الرساله هل هي مفهومه (ضمن نضاق الاعداد الابجديه) ؟ نعم اذا ارسل هذا هو المفتاح ، اذا لأ جرب الرقم التالي ...
في حاله 100 بليون رقم ، قد يحصل المخترق على المفتاح من اول تجربه ، ويمكن من التجربه الاخيره ، على العموم في المتوسط قد يحصل عليه في 50 بليون محاوله ..
كم من الوقت تأخذ عمليه تجربه 50 بليون مفتاح ؟ 3 سنوات؟3 شهور؟3 ايام ؟
لنفرض انك تريد الحفاظ على الرساله لمده 3 سنوات ، وان المخترق يستطيع محاوله 50 بليون مفتاح في 3 دقائق اذا عليك تكبير المفتاح وجعل المدى من 0 الى 100 بليون بليون بليون بليون بليون بليون (يالهي ) .. وهكذا يأخذ المخترق وقتا اطول حتى يجد المفتاح الصحيح ..
هذا المفهوم يعرف بـ حجم المفتاح Key Size ، النقود تقاس بقيمتها ، الذهب بالوزن ، المفتاح في التشفير يقاس بعدد البتات bits ، والمفاتيح تكون عاده بطول 40 bit او 56 bit او 128 bit وهكذا ..
مدى الـ 40 بت هو من 0 الى 1 ترليون
مدى الـ 56 بت هو من 0 الى 72 كروليون quadrillion
مدى الـ 128 بت هو من 0 الى اااااااااااه احسن نقول 128 بت فقط
باختصار ، اذا كنت تريد ان تجعل عمل المخترق اكثر صعوبه ، قم بتكبير حجم المفتاح ، المفتاح الكبير يضمن لك حمايه اكبر ،،،
في عام 1997 ، تم كسر الـ 40 بت في ثلاث ساعات ، و تم كسر 48 بت في 280 ساعه ..
(كل بت زياده يأخذ ضعف المده السابقه ، مثلا 40 بت تأخذ 3 ساعات ، 41 بت تأخذ 6 ساعات ،وهكذا ) ..
في 1999 ، تم كسر 56 بت في 24 ساعه ( تم كسره من قبل Electronic Frontier Foundation وتم استخدام جهاز خاص فقط لكسر خوارزميه DES ).
بالطبع المخترق لن تكون لديه هذه الامكانيات وبالتالي سوف يأخذ وقتا اطول بكثير من الشركه السابقه ، ولكن نحن هنا نفترض ان المخترق عباره عن حكومه او الـ FPI ) .
حاليا 128 بت هو افضل حجم للمفتاح ،ربما في حال كسره سوف ننتقل الى 512 بت (وهو اكبر حجم للمفتاح ونظريا لا يمكن كسره بهذه الطريقه (brute-force attack) ابدا ).
ومن الممكن ان يقوم المخترق بالهجوم على المفتاح ولكن بطريقه اخرى ، وهي محاوله توليد PRNG بنفس البذره Seed التي قمت بادخالها في الـ PRNG . اذا استخدمت Seed صغير ، قد يقوم المخترق بتجربه رقم رقم الى ان يجد الSeed الصحيح (قد حصل هذا لشركه نت سكيب ، سأذكره بعد قليل) ، لذلك عليك عندما تختار Seed ان تختار واحد ممتاز ولا يمكن تخمينه ...
نظره تاريخيه : Netscape's Seed
************
ان التشفير بالمفتاح المنتاظر هو احد مكونات SSL الذي اخترع من قبل العلماء في شركه نت سكيب (احد العلماء بل رئيس العلماء في فتره التسعينات هو العالم العربي المصري طاهر الجمل ، والذي اخترع الخوارزميه التي تعرف بـ ELGAMAL نسبه الى اسمه ، ساتكلم عنه فيما بعد) ، وفي وقت توليد الاتصال في SSL يجب ان يولد رقم عشوائي ، وقد استخدمت الشركه PRNG يجمع المعلومات (الوقت + رقم العمليه process ID ) واستخدم كبذره Seed للمولد PRNG .
بالنسبه الى process ID فيمكن الحصول عليه من خلال الدخول الى نفس الجهاز الذي ولده ، او يمكن تطبيق هجوم brute-force attack حيث طوله فقط 15 بت ..
اما بالنسبه الى الوقت ، استخدمت الشركه الثواني (وليس جزء من الالف من الثواني) ولذلك هناك 60 ثانيه فقط ،
على العموم في 1995 قام Goldberg and Wagner بايجاد الSeed وبالتالي ايجاد المفتاح في اقل من دقيقه ، سواء كان المفتاح 40 بت او 128 بت ، سوف يأخذ اقل من دقيقه !!
وقد قامت نت سكيب بعدها باضافه Seed جديد يعتمد على عده عوامل :
. mouse position, memory status, last key pressed, audio volume, and many others
وهكذا يصعب ايجاد الSeed ..
كسر الخوارزميه Breaking the Algorithm :
وهنا يعتمد على قوه ملاحظه وذكاء المخترق ، مثلا لاحظ ان رقم معين يظهر في مكان معين ، هنا يستطيع تخمين هذا العدد بعد تجربه العديد من المحاولات حتى يحصل على النص الاصلي ..

مثل تلك الخوارزميات الضعيفه يمكن ان تخترق وحتى لو كان حجم المفتاح كبير ،
اتوقف هنا ،، وسأعود قريبا باذن الله لتكمله باقي الجلسه ...
تبقى مفهومين مهمين جدا جدا وهما Block Cipher , Stream Cipher ..
وبعض النقاط حول DES,3DES,AES
الدرس ملطوش من:محمد احمد توفيق
