القائمة الرئيسية

الصفحات

مولد الأرقام العشوائية


مولد الأرقام العشوائية



لماذا نحتاج لتوليد الأرقام العشوائية ؟
يمكنك إستخدامها فى السحب على شىء أو عمل قرعة و تُستخدم الأعداد العشوائية ايضا في الكثير من الأمور .. نذكر منها على سبيل المثال لا الحصر:
a- علم الإحتمالات.
b- برمجة الألعاب.
c- الهندسة العكسية.
d- بروتوكولات الإتصال (مثل TCP)

a- علم الإحتمالات
سأعطي مثالا بسيطا لكي تتضح الفكرة, لدينا مجموعة من الكرات في صندوق و نريد سحب إحدى هذه الكرات بشكل عشوائي. كلما ما علينا فعله هو ترقيم هذه الكرات و أخذ عدد عشوائي من بين الأعداد المتاحة.
b- برمجة الألعاب
في الحقيقة. فإن الألعاب مجال خصب للبحث عن خوارزمية تولد أرقام عشوائية. فمثلا, لكي لا يُصر اللاعب على أن يبرمج شكل واحد للعبة معينة فيمكنه أن يعيد نفس اللعبة بعدة أشكال. لنأخذ مثال :
حين نلعب مثلا لعبة “Tick-Tack” فالنجمة تظهر كل مرة في مكان عشوائي وهذا مما يجعل اللعبة أكثر واقعية.
نفس الفكرة يمكننا تطبيقها في الكثير من الألعاب الأخرى ..
c- الهندسة العكسية
أما في مجال الهندسة العكسية فنحن نحتاجها مثلا من أجل برمجة “الكيجن”.
للذين لا يعرفون ما هو “الكيجين”:
هناك طرق كثيرة لحماية البرامج و من أسهلها استخدام أرقام سرية معينة يتم تحديدها من قبل الشركة المنتجة للبرنامج .. وهذه الأرقام قد تعتمد في تحديدها على اسم المستخدم أو بريده الالكتروني أو الرقم التسلسلي للجهاز أو أي معلومة أخرى أو مجموعة من هذه المعلومات معا!! و عادة تحصل على هذا الرقم عند شراء المنتج من الشركة و تعطيهم بياناتك فيعطونك الرقم السري (السيريال) الذي يتيح لك استخدام البرنامج بشكل كامل.
نأتي حاليا لكيفية كسر هذه الحماية .. وأشهر طريقة هي استخدام “الكيجين”.
ما هو “الكيجين” ؟
الكيجين (keygen):هو اختصار لـ key generator أي مولد المفاتيح و هو عبارة عن برنامج صغير يطلب منك نفس المعلومة التي تعتمد عليها الشركة في إعطاء الرقم السري !! و يولد لك الرقم الذي تستطيع فتح البرنامج به .. عادة ما يستطيع بعض المبرمجين معرفة الخوارزميات التي تعتمد عليها هذه الشركات في توليد الأرقام السرية و ينشئون برنامج ليستخدمه الناس!! و طريقته سهلة (نسبيا) فهي مثلا تطلب منك الاسم الموجود في جهازك و من ثم تعطيك الرقم الذي تنسخه في البرنامج فيعمل معك بشكل كامل.
نعود مرة أخرى لموضوعنا السابق و هو فائدة الأعداد العشوائية من أجل برمجة الكيجين .. تخيل أن خوارزمية التحقق من سيريال برنامج ما ..  
تخضع للشروط التالية:
الشرط الأول : السيريال يجب أن يتكون من 10 حروف.
الشرط الثاني : يقارن الحرف الأول مع A والحرف الثامن مع S والحرف العاشر مع D.
إذا لحل هذه الخوارزمية يكفي أن نأخذ سيريال عشوائي من 10 حروف بحيث يحقق الشروط .. ليكن هذا السيريال مثلا: AFGMRTWSOD
هذا السيريال يحقق الخوارزمية ولكن يبقى السؤال هو:
لماذا لا نكتفي بنشر سيريال واحد يحقق الخوارزمية .
السبب هو : مثلا .. أنت تعبت حتى استنتجت الخوارزمية ثم نشرت السيريال و من ثم قام شخص آخر بسرقة هذا السيريال وقال بأنه ملك له !
من نصدق ؟؟؟ طبعا سنصدق من فهم الخوارزمية.
لذلك وجب علينا برمجة “الكيجن” الذي سيولد عدة سيريالات تحقق خوارزمية التحقق.
الكلام السابق يكون صحيحا إذا كان الشخص لا يعرف الخوارزمية أما إذا كان يعرفها فأنتم إذا سواء !
بالمناسبة فإن الأعداد العشوائية تستخدم بشكل كبير في خوارزميات التشفير لأن أغلب هذه الخوارزميات تحتاج إلى تزويدها بأرقام عشوائية لتبدأ عملها بحيث لا يمكن التكهن بنتائج الخوارزمية و لا مُدخلاتها الأصلية حتى لمن يعرف جيدا طريقة عملها.
d- بروتوكولات الإتصال,مثل بروتوكول TCP
الحصول على أرقام عشوائية أمر مهم جدا في علوم الحاسوب خاصة في مجال بروتوكولات الإتصالات .. مثلا في بروتوكول TCP هناك رقم تسلسلي لكل حزمة يسمح لطرف الإتصال الآخر بترتيب الحزم عند وصولها و بمعرفة ما ضاع منها و إعادة إرساله .. و هناك هجوم كلاسيكي يتمكن خلاله طرف ثالث من الدخول في الإتصال و تحويله إذا كان بإمكانه التكهن بالرقم التسلسلي المستعمل. باختصار إذا كنت تعرف نوع الخوارزمية و كانت الدالة العشوائية التي تزودها ضعيفة بحيث يمكن التكهن بالأرقام العشوائية التي تنتجها فيمكنك نظريا كسر هذه الخوارزمية.
الحصول على أرقام حقيقة عشوائية صعب جدا في الحواسيب ! لأن هذه الأخيرة صممت كي تكون محددة في عملها (deterministic) و بالتالي أي دالة رياضية تستخدم لتوليد أرقام عشوائية سيتم كسرها و لو طالت دورتها .. لذلك عندما يحتاج برنامج ما إلى أرقام عشوائية تصلح في عمليات التشفير ( crypto grade random numbers) فيجب تزويد الحاسوب ببطاقة خاصة تقوم بإنتاج هذه الأعداد انطلاقا من “ظاهرة فيزيائية عشوائية” و ليس “دوال رياضية” و نظام FreeBSD يدعم هذا النوع من العتاد.
هل اعجبك الموضوع :

تعليقات

close
نعتذر عن بعض الروابط الغير موجودة