الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما هو Checksum

بدأه The Strrong في 30 أكتوبر 2009 · 5 رد · 8,929 مشاهدة · في قسم أمن المعلومات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاتة

ماهو checkSum??

مني متأكد أذا هذا هو إسمة المهم

المتحدث عنة في هذا الموضوع

/index.php?showtopic=105418

#2

وعليكــم السـلام ورحمة الله وبركاتـه..

لماذا تعتقد أخي أن هذا القسم هو الأنسب للسؤال؟ سأقوم بنقله إلى قسم الأمن والحماية باعتباره.. أقرب

سأقتبس لك هذا التوضيح البسيط:

اقتباس
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

post-7008-1256947155_thumb.png

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3

مافهمتة أن checkSum هو مجموع بياتات الملف التنفيذي

يعني أقوم بحساب بياتات الملف التنفيذي وكل مرة أشغل البرنامج أجعلة

يقارن بين القيمة الحقبقة وقيمتة الان .. هل مافهمتة صحيح؟؟

#4

نعم

لكن مع التأكيد على نقطة وهي عبارة "مجموع بيانات الملف الأصلي" .. هذه استبدلها لديك بـ "القيمة الناتجة عن بيانات الملف الأصلي بعد معالجتها بخوارزمية ما يتم تنفيذها في البداية والاحتفاظ بالقيمة للتدقيق لاحقاً"

ولنأخذ على سبيل المثال كلمة 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

#5

جزاك الله ألف خير وجعلة في ميزان حسناتك

بس باقي عندي سؤال وهو هل يؤدي إنتقال البرنامج من جهاز الى أخر

إلى تغير قيمة checkSum الخاصة به

#6

لا أبداً

باعتبار أنك ملزم باستخدام خوارزمية التدقيق ذاتها.

بالمناسبة باعتبار أن الموضوع يتعلق بالملفات التنفيذية والتي تريد أن تضمن عدم حصول خطأ فيها مقصود/غير مقصود (وأشدد على مقصود أكثر باعتبار أنها قد تسبب مشكلة أمنية في نظامك إن تم التلاعب بها بهذا الغرض) فالأفضل استخدام خوارزميات الـ 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

مواضيع مشابهة