السلام عليكم ورحمة الله وبركاتة
ماهو checkSum??
مني متأكد أذا هذا هو إسمة المهم
المتحدث عنة في هذا الموضوع
السلام عليكم ورحمة الله وبركاتة
ماهو checkSum??
مني متأكد أذا هذا هو إسمة المهم
المتحدث عنة في هذا الموضوع
وعليكــم السـلام ورحمة الله وبركاتـه..
لماذا تعتقد أخي أن هذا القسم هو الأنسب للسؤال؟ سأقوم بنقله إلى قسم الأمن والحماية باعتباره.. أقرب
سأقتبس لك هذا التوضيح البسيط:
اقتباسThe goal of checksum algorithms is to detect accidental modification such as corruption to stored data or errors in a communication channel. They are not designed to detect intentional corruption by a malicious agent. Indeed, many checksum algorithms can be easily inverted, in the sense that one can easily modify the data so as to preserve its checksum. To guard against malicious changes one should use a cryptographic hash function.
* ترجمة *
الهدف من خوارزميات تدقيق المجموع هو كشف التغيرات غير المقصودة على البيانات المخزنة أو الأخطاء في قنوات الاتصال. هذه الخوارزميات ليست مصممة لاكتشاف التعديل المقصود من قبل طرف مشبوه. العديد من خوارزميات تدقيق المجموع يمكن تعديلها بسهولة، بحيث يتم تحوير البيانات بشكل تحافظ فيه على قيمة checksum الخاصة الأصلية. من أجل الحماية ضد هذه التغييرات المشبوهة يجب أن يتم الاستعاضة عنها بخوارزميات التعمية والبعثرة.
لعل الصورة تكون أبلغ في التعبير. لاحظ كيف أن تغيير حرف واحد يغير من قيمة checksum
Do as I say, not as I do
We are Anonymous. We are Legion. We don't forgive. We don't forget
مافهمتة أن checkSum هو مجموع بياتات الملف التنفيذي
يعني أقوم بحساب بياتات الملف التنفيذي وكل مرة أشغل البرنامج أجعلة
يقارن بين القيمة الحقبقة وقيمتة الان .. هل مافهمتة صحيح؟؟
نعم
لكن مع التأكيد على نقطة وهي عبارة "مجموع بيانات الملف الأصلي" .. هذه استبدلها لديك بـ "القيمة الناتجة عن بيانات الملف الأصلي بعد معالجتها بخوارزمية ما يتم تنفيذها في البداية والاحتفاظ بالقيمة للتدقيق لاحقاً"
ولنأخذ على سبيل المثال كلمة ArabTeam2000
لنقل كنوع من أنواع خوارزميات تدقيق المجموع أني أريد حساب قيمة checksum لها وسأكتب خوارزمية بالشكل التالي
String str [color= #000000;]= [color= #A31515;]"ArabTeam2000"; [color= #0000ff;]int checksum [color= #000000;]= [color= #ff0000;]0; [color= #0000ff;]for [color= #000000;]([color= #0000ff;]int i [color= #000000;]= [color= #ff0000;]0; i [color= #000000;]< str.[color= #808000;]length[color= #000000;]([color= #000000;]); i[color= #000000;]++[color= #000000;]) checksum [color= #000000;]+[color= #000000;]= [color= #000000;](i[color= #ff0000;]+1[color= #000000;]) [color= #000000;]* str.[color= #808000;]at[color= #000000;](i[color= #000000;]); System.[color= #808000;]out.[color= #808000;]print[color= #000000;]([color= #A31515;]"Checksum of '" [color= #000000;]+ str [color= #000000;]+ [color= #A31515;]"' is: " [color= #000000;]+ checksum[color= #000000;]);
فسينتج لدي قيمة في النهاية أقوم بالاحتفاظ بها. عندما أود لاحقاً الاطمئنان أن القيمة لم يحصل فيها تعديل بالخطأ أكرر استخدام الخوارزمية وأقوم بمقارنة القيمتين الناتجتين.
لاحظ أنه بالإمكان ابتكار وكتابة خوارزميات تدقيق مجموع بالشكل الذي أريد، طالما أنها تحقق بعض الشروط:
1. تنفيذ الخوارزمية عدة مرات على نفس البيانات يجب أن تعطي القيمة نفسها دائماً.
2. تنفيذ الخوارزمية على بيانات مختلفة يجب أن تعطي قيم مختلفة لكل نوع من البيانات (مع الأخذ بعين الاعتبار أن التعديل يتم بشكل غير مقصود أي أنه لا يتم تحوير النص الأساسي بحيث يعطي القيمة الأصلية للـ checksum بغرض الاحتيال والتلاعب)
3. أقل تعديل على البيانات الأصلية يجب أن يقوم بتغيير قيمة checksum (لاحظ في المثال في الأعلى أني لم أكتف فقط بجمع القيم الصحيحة للمحارف لكن تبديل مواضعها كان سيعطي نفس النتيجة، لكن أضفت إليها الضرب بقيمة موضع المحرف ضمن السلسلة (مضافاً إليه 1 حتى لا تكون القيمة البدائية تساوي الصفر)).
هذا بشكل عام، ولمزيد من المعلومات عليك بمحركات البحث.
Do as I say, not as I do
We are Anonymous. We are Legion. We don't forgive. We don't forget
جزاك الله ألف خير وجعلة في ميزان حسناتك
بس باقي عندي سؤال وهو هل يؤدي إنتقال البرنامج من جهاز الى أخر
إلى تغير قيمة checkSum الخاصة به
لا أبداً
باعتبار أنك ملزم باستخدام خوارزمية التدقيق ذاتها.
بالمناسبة باعتبار أن الموضوع يتعلق بالملفات التنفيذية والتي تريد أن تضمن عدم حصول خطأ فيها مقصود/غير مقصود (وأشدد على مقصود أكثر باعتبار أنها قد تسبب مشكلة أمنية في نظامك إن تم التلاعب بها بهذا الغرض) فالأفضل استخدام خوارزميات الـ hash algorithms كـ CRC32 أو MD5 أو ...
To guard against malicious changes one should use a cryptographic hash function
Do as I say, not as I do
We are Anonymous. We are Legion. We don't forgive. We don't forget