مقدمة عن أمنية المعلومات والبرمجيات وأسرار خاصة

في هذه المقالة سنتكلم بشكل تفصيلي عن الحماية وأمنية المعلومات، وما هي الأدوات التي يستخدمها محترفي الحماية، وما هي الاخطار التي تهدد أمن البرمجيات التي قد يقوم أحد منا ببرمجتها وكيف نهتم بذلك.

 أولاً سنتكلم عن الحماية وأمنية المعلومات

 ببساطة هي حماية مصادرنا الثمينة من أي أخطار تهددها قد تكون هذه المصادر عتاد أو برمجيات أو حتى بيانات.

 لن نطيل الكلام عن الحماية بل سنغوص في أعماقها أكثر ...... سبق وقلت بأن هناك أدوات يستخدمها محترفي الحماية.

 من وجهة نظركم ماهي هذه الأدوات؟!

 إنها ثلاث أدوات أساسيه وهي:

 أولاً التأكد من هوية المستخدم، هل هو حقاً هذا المستخدم أم أنه شخص مخادع!  في هذه الحالة يتم استخدام ثلاثة أشياء مرتبطة بالمستخدم للتأكد من هويته.  قد يقول أحدكم كلمه سر ورقم الهاتف الخاص به وما هي الثالثة?!  لا تقلق يا عزيزي، نعم أنت محق في تخمينك لكن لماذا لا تذكرها بشكل عام. كيف ذلك؟!

  •  الشيء الأول وهو: الأشياء التي يعرفها المستخدم مثل كلمات السر وأرقام بطائق الائتمان وغيرها من الأشياء التي يعرفها المستخدم.
  • الشيء الثاني وهو: الأشياء التي تمثل المستخدم مثل بصمة الإصبع.
  • الشيء الثالث: ما يمتلكه المستخدم مثل بطاقة الائتمان نفسها.

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

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

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

 الأداة الثانية وهي التحكم في الوصول إلى البيانات وتعديلها 

بمعنى اعطاء الصلاحيات التي يمكن ان تمنح لشخص معين لنفرض أنك قمت بعمل حساب لشخص على جهازك للدخول بهذا الحساب بكلمة سر حسابك في موقع تويتر الأفضل أن تكون كلمات السر هذه مختلفة ; أنت سوف تمنحه صلاحيات ضيف لأنه قد يكون لديك شيء مهم ولا تريد لأحد أن يعبث به

 الأداة الثالثة وهي التشفير او التعمية

 وهي أداه رائعة وتتمثل في خوارزميات التشفير التي تقوم بإخفاء الرسالة التي ترسل إلى المستلم مع ما يسمى بالمفتاح الذي عن طريقه يمكن للمستخدم أن يقوم بعملية فك تشفير هذه الرسالة

 ننتقل الآن إلى البرمجيات وحمايتها والأخطار التي قد تحصل فيها

 البرمجيات تمثل البنية التحتية الأساسية لعالمنا الإلكتروني ولابد أن تتوفر فيها سبل الحماية فأنظمه التشغيل التي يقوم عليها الحاسب تعتبر برمجيات أيضا انظمة إدارة قواعد البيانات والبنية التحتية للشبكات كل شيء قائم على البرمجيات , أغلب البرمجيات هذه الايام تكتب بإحدى اللغات عالية المستوى كلغة السي بلس بلس او لغة السي شارب أو الجافا أو البايثون في حماية البرمجيات يجب علينا أن نسأل أنفسنا سؤالين مهمين وهما

 كيف أجعل البرنامج الخاص بي خالياً من الأخطاء؟

 وأيضا

 كيف أحمي المصادر الحوسبية من البرامج التي تحتوي أخطاء او عيوب ما؟

 البرمجيات الخاصة بك كمبرمج معرضة لخطرين الأول وهو

 أنك كمبرمج قد تقع في خطأ برمجي يجعل برنامجك غير آمن مما يجعله يستهلك الكثير من المصادر الرام والمعالج

 حصول خطأ في الكود يسبب توقف البرنامج عن العمل فجأة وهكذا

 الخطر الثاني الهجوم الخارجي على البرنامج الخاص بك أو ما يسمى بعمليه الكراك , لذلك يجب عليك ان تكون حذرا كمبرمج وأن تقوم بعمليه اختبار البرنامج الخاص بك قبل بيعه أو نشره

 !قم بتنفيذ عمليه اختراق لبرنامجك ,نعم

 جرب ذلك قبل أن يقوم غيرك بتجريب ذلك

ان الأخطاء التي تواجه البرنامج الخاص بك قد تكون إما منك أنت كمبرمج ومطور لها أو تعرضت لهجوم من شخص ما قام بكسر حمايتها.

حسناً أولا ماهي الأخطاء التي تقع فيها أنت كمبرمج وتسبب ثغره في البرنامج الخاص بك وكيف تتجنبها؟

كما نعرف فإن الأخطاء في لغات البرمجة نوعين إما خطأ قبل إنهاء البرنامج أو خطأ بعد الانتهاء منه

الأخطاء التي قبل أنهاء البرنامج تظهر اثناء عمليه تشغيل البرنامج كاختبار له في مرحله معينه

المترجمات الخاصة باللغة البرمجية ستتولى الأمر وتكشف لك هذه الأخطاء لتقوم بإصلاحها

أما الأخطاء التي تحصل بعد الانتهاء من البرنامج فهي صعبه الاكتشاف وقد تظهر في وقت معين والبرنامج في حاله running على الجهاز

لنضرب على ذلك مثالاً لنفرض أنك قمت بعمل برنامج محاسبي البرنامج مكتمل تماماً وقمت ببيعه ,جاء أحد الزبائن الذين اشتروا البرنامج يشكوا إليك من خلل في البرنامج , ما هو الخلل؟ قلت هذا الشيء في نفسك!

لا تعرف ما هو الخلل!

حسناً سأعطيك نصحيه قبل بيع برنامجك قم بتجريبه لفتره على الأقل أسبوعاً كاملاً ,من أشهر الأخطاء التي تحصل ما يسمى بال buffer overflow ثغره شائعه في اغلب البرمجيات ماهي هذه الثغرة؟

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

من يدري ما قد يحدث! ؟ لكن الخلل سيكون حتمياً

كيف تحمي برنامج من هذه الثغرة الخطيرة؟

أولاً يجب عليك أن تكون حذراً اثناء كتابه الكود البرمجي بأنك لم تتجاوز الحد المسموح أو خرجت عن نطاق ال   buffer المخصص لك أثناء عمليه قراءه أو كتابه

ثانياً هناك ميزات في بعض لغات البرمجة تتيح لك التأكد من أنك ضمن النطاق مثال على ذلك

لغة البي اتش بي المخصصة لبرمجة المواقع أثناء عملية القراءة أو الكتابة فإنك تستطيع أن تضمن أنك ضمن النطاق باستخدام داله count التي تعطيك طول المصفوفة التي تمر على عناصرها

ثالثاً قم باستخدام ميزة ال debug حتى تتأكد من أنك لا تعاني من هذه المشكلة

لننهي حديثنا عن الثغرات التي انت كمبرمج تكون سبباً فيها وننتقل الى ما يسمى بالكراك

كيف يتم مهاجمه برنامجك المحمي؟ وكيف تجعله أكثر حماية؟

من البداية وكقاعدة ليس هناك برنامج محمي 100%

أنت كمبرمج إن استطعت ان تحمي برنامجك بعد عناء شديد ستكون حمايتك بنسبه 96% كيف نجعل البرنامج محمي أكثر من هذه النسبة وخصوصاً البرامج التجارية التي يتم بيعها مع ارقام سيريال خاصة؟

أولاً جمله if الشرطية الموجودة في برنامجك لمقارنه السيريال المدخل مع السيريال الصحيح من السهل جدا تجاوزها باستخدام الهندسة العكسية

قد تتسألون ماهي الهندسة العكسية!

إنها بكل بساطه أن أحصل على الكود الخاص بك من النظام الثنائي الخاص بالبرنامج

أذا حصلت على الكود الخاص ببرنامجك معناها أني أستطيع اختراقه الكشف عن اسراره الدفينة او حتى بناء برنامج مشابه تماماً

كيف ذلك؟

يستخدم الكراكر برامج تسمى بإعادة التجميع يقومون وقتها باستخدام هذه البرامج للحصول على الكود الخاص ببرنامجك لكن بلغه التجميع الأسمبلي من أشهر هذا البرامج برنامج ollydbg

أهم الأسباب التي ترتكبها وتتيح لأي كراكر ان يخترق البرنامج الخاص بك هي كالتالي:

  1. المقارنة المباشرة للتصريح أو السيريال مع السيريال الصحيح.
  2. استخدام خوارزميات تشفير غير قوية مثل xor فهو طريقه غير جيده وتشفير غير ناجح.
  3. عرض رسائل للمستخدم فيها نص واضح في هذه الحالة يتم البحث عن هذه الجملة وإيجادها وبالتالي يكون الكراكر وصل الى هدفه وهي جملة مقارنه السيريال الذي أدخله مع السيريال الصحيح.
  4. إذا كان البرنامج لا يحوي فحص تكاملي ضد عمليه patching .

الآن ننتقل الى الجزء الأخير وهو كيف تحمي برنامج وجعله أصعب وأقوى ضد عمليه الكراك

فصلتها لكم كنقاط في الآتي:

  1. يجب أن يكون الخاص بك يتأكد من السيريال بعد اتصاله بالخادم الخاص بك الذي يزوده بالسيريال الصحيح ويتم عمليه المقارنة عن طريق الاتصال بين الخادم والتطبيق.
  2. اجعل تطبيقك أرخص سعراً وسعره معقولاً حتى يشتريه الآخرون بقناعه بدلاً من محاوله اختراقه وكسر حمايته.
  3. وفكره خاصه بي هي أنك تستطيع جعل البرنامج الخاص بك يقدم وظائف معينه وبقيه الوظائف موضوعه على الخادم الخاص بك إذا تمت عمليه التحقق من السيريال بشكل صحيح يمكنك وقتها أن تقدم تلك الوظائف وكأنها عمليه update لكن تتم بعد أن تتأكد من أنه شخص مصرح به.
  4. وأخيراً قم بتشفير الكود الخاص بك عن طريق أحد برامج anti-cracking .