اعرف الفرق بين التهشير Hashing و التشفير Encryption ...

6 197 5 5

هندسة الحاسبات

من أهم المواضيع
في التهشير يتم إستخدام ما يسمى بدالة التهشير Hash Function ، و هي دالة تقوم بعملية مقابلة ما بين بيانات ذات حجم عشوائي و تحويلها إلى بيانات ذات حجم ثابت، لنأخذ خوارزمية MD5 على سبيل المثال.
تقوم خوارزمية MD5 بالحصول على رسالة من أي حجم كان و تقوم بتحويلها لما يسمى ب "مختصر الرسالة" و طوله 32 حرف في حالة هذه الخوارزمية، أي أنك سواء أدخلت لهذه الخوارزمية رسالة تحتوي 767 حرف أو 10 أحرف فإنها ستعطيك مستخلص طوله 32 حرف، فمثلا إن العبارة Hello World لها المستخلص B10A8DB164E0754105B7A99BE72E3FE5 ، بينما العبارة
I don't know what is going on here and i don't care
لها المستخلص F106B8FA2B0FD6FA7630EBA7D4C59A81

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

التشفير هو عملية ترميز لرسالة معينة أو معلومات بحيث لا يمكن إلا للجهات المصرح بها أن تعرف معنى هذا الترميز، و يستخدم التشفير ما يدعى بخوارزمية التشفير لتوليد نص مشفر لا يمكن قراءته إلا إذا تم فك تشفيره.
من أبسط الأمثلة على خوارزميات التشفير طريقة يوليوس قيصر التي تقوم على إستبدال كل حرف بحرف يليه بعدد معين، فمثلا إذا كانت لدينا الأبجدية الإنكليزية:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
لنقم بتبديل كل حرف بالحرف الذي يليه ب 4 مواضع، أي أن ال A ستصبح E و B ستصبح F ، ستكون لدينا هذه الأبجدية:
EFGHIJKLMNOPQRSTUVWXYZABCD

إذا أخذنا الجملة HELLO WORLD و أردنا تشفيرها بإستخدام الخوارزمية السابقة سيصبح لدينا:
LIPPS ZSVPH
و عملية فك التشفير تجري بالعكس، ننظر إلى الترتيب المستخدم في خوارزمية يوليوس قيصر و نقارن كل حرف بمقابله من الأبجدية الإنكليزية، و لذلك نقول أن عملية التشفير هي عملية ثنائية الإتجاه، فالعملية المعاكسة للتشفير Encryption هي فك التشفير Decryption، أما التهشير فهو عملية أحادية الإتجاه، أي أنه يوجد تهشير Hashing و لكن لا يوجد فك تهشير Dehashing.

في الواقع، لا يوجد فك تهشير، و لكن يوجد ما يسمى بهجمات التضارب Collision Attack ، فما هي هجمات التضارب ؟

لتوضيح هذا الأمر سنقوم ببناء خوارزمية تهشير بسيطة ﻷسماء الناس، سيكون مستخلص الرسالة الناتجة عن هذا الخوارزمية هو مجموع الأرقام المقابلة لكل حرف من أحرف الاسم، حيث أن:
A = 1
B = 2
C = 3
D = 4
E = 5
F = 6
G = 7
H = 8
I = 9
J = 10
K = 11
L = 12
M = 13
N = 14
O = 15
P = 16
Q = 17
R = 18
S = 19
T = 20
U = 21
V = 22
W = 23
X = 24
Y = 25
Z = 26

فمثلا مستخلص اسم Abdullah سيكون:
1 + 2 + 4 + 21 + 12 + 12 + 1 + 8 = 61
و مستخلص اسم Zyead سيكون:
26 + 25 + 5 + 1 + 4 = 61
أي أن دالة التهشير التي تستخدم هذه الخوارزمية ستعطي نفس المستخلص ل Abdullah و Zyead، و هذا ما يدعى بالتضارب، و كل خوارزميات التهشير تعاني من هذه المشكلة، إلا أن الفرق هو أن بعضها أكثر مقاومة لهذا النوع من الهجمات من بعضها الآخر.

برأيكم، ما هي الطريقة الصحيحة لتخزين كلمات السر ؟، هل يجب تهشيرها أم تشفيرها ؟
ملحق #1
القعقاععلى الرحب و السعة

يحتوي موقع إجابة على قاعدة بيانات فيها معلومات عن الأعضاء، منها كلمات سر حساباتهم .
في الواقع، إذا قمنا بتشفير كلمات السر و تخزينها فهذا يعني أننا يجب أن نخزن مفتاح فك التشفير في مكان ما، و بالتالي إذا استطاع أحد المخترقين إيجاد ثغرة تمكنهم من سرقة قاعدة البيانات و مفتاح فك التشفير، عندئذ يمكنه إعادة النص المشفر "أي كلمات السر المشفرة" إلى صيغتها الأصلية ، أما إذا قمنا بتهشير كلمات السر فسيكون من أشباه المستحيلات معرفة كلمات السر الأصلية، سأوضح السبب و لكن في البداية دعني أقدم لكم خوارزمية SHA-512.
تعتبر خوارزمية SHA-512 من أشهر خوارزميات التهشير، و يرمز الإختصار SHA إلى Secure Hashing Algorithm أو خوارزمية التهشير الآمنة، و تقوم هذه الخوارزمية بتوليد مستخلص طوله 128 محرف.
إذا افترضنا أن موقع إجابة يستخدم هذه الخوارزمية و افترضنا أنه قام أحد ما بسرقة قاعدة بيانات الأعضاء، عندئذ من أجل كل عضو من الأعضاء يجب على المخترق أن يجرب عدد هائل من الإحتمالات، قد يحتاج الأمر أن يجرب "2 مرفوعة للقوة 512" إحتمال ، أي 134078079299425970995740249982058461274793658205923933777235
614437217640300735469768018742981669034276900318581864860508
53753882811946569946433649006084096 إحتمال قبل أن يستطيع إيجاد كلمة سر مرادفة تعطي نفس المستخلص، كم سيستغرق تجربة كل هذه الإحتمالات ؟!!
أما لو كانت كلمات السر مشفرة لكانت العملية واضحة و بسيطة، على المخترق أن يحصل على مفتاح التشفير و ينتهي الأمر.
ملحق #2
سليم محمدمعك حق، المصطلح غريب و ثقيل على الإذن و اللفظ، و لكنه مصطلح عربي و يمكنك أن تجده في بعض القواميس ...
ملحق #3
حور الجنةاستعنت ببعض المراجع الأجنبية، فقمت بنقل تعريف التهشير و التشفير من مراجع أجنبية مع بعض التعديلات، أما الشرح و الأمثلة فقمت بكتابتها من عندي ...
ملحق #4
حور الجنةالعفو ... يسعدني أن هناك من استفاد من هذه المعلومات
شكرا على هذه المعلومات والمفاهيم المهمة ..
في رأيي ومن خلال نتيجة هذه المعطيات من الأحسن تشفير كلمات السر ..
سوري و شايف حالينعم معك حق أحسنت ؛ الآن فهمت جيدا .
اش هذه الكلمة الغريبة التهشير ذكرتني البعض عندما يقول saving التسييف كم أمتعض من سماع مثل هذه الكلمات
هل انت من كتب هذه المعلومات القيمة او منقول
هذا رائع شكرا لك
شكرا جزيت خيرا