طرق الهجوم التشفيرية و كيفية كسر الشفرات :
ان الغاية من الهجوم الحصول على مفتاح للاشخاص غير المخولين Eve , وبالتالي الحصول على النص الواضح , ويوجد العديد من الطرق الخاصة بكسر التشفير منها :
- طريقة هجوم النص الواضح : معرفة النص الواضح فقط Known Plaintext Attack (KPA)
- طريقة هجوم النص المشفر فقط : Ciphertext Only Attacks (COA)
- طريقة هجوم اختيار النص الواضح : Chosen Plaintext Attack (CPA)
- طريقة هجوم اختيار النص المشفر : Chosen Ciphertext Attack (CCA)
- Dictionary Attack
- Man in Middle Attack (MIM)
- Side Channel Attack (SCA)
- Brute Force Attack (BFA)
- Birthday Attack
- Timing Attacks
كما عرفنا ان اغلب طرق التشفير تحتاج مفتاح في طريقة عملها , ويعتبر المفتاح اهم من طريقة الخوارزمية نفسها في التشفير , كما يقول " أوغست كيركهوف فون نيوفنهوف " وهو عالم لغويات هولندي و له مؤلف مهم جداً في التعمية العسكرية والذي كان يبحث فيه عن كيفية تشفير ارسالات التلغراف , و وضع كيركهوف عدة مبادئ اشهرها مبدئه الثاني الذي ينص على :
أن قوة نظام التشفير يجب أن لا تعتمد على إخفاء خوارزمية التشفير أو ميكانيكة التشفير و إنما يجب أن يعتمد على إخفاء المفتاح
انواع المهاجمين Types of attacker :
المهاجمون نوعان وهما :
- المهاجم النشط active attacker : وهو المهاجم الذي يقوم بكسر الشفرة والتعديل على البيانات وارسالها من جديد الى المستلم وبالتالي سوف يستلم معلومات خاطئة , تستخدم الجيوش هذه الطرق في المعارك بحيث تعطي احداثيات خاطئة لنصب الكمائن .
- المهاجم الخامل passive attacker : على عكس النوع الاول , يريد هذا المهاجم سرقة البيانات بدون التعديل عليها وبالتالي يقوم بأرسالها كما هي الى المستلم .
طريقة القوة الغاشمة Brute force method :
وتسمى ايضاً بطريقة القوة العمياء , ببساطة تقوم هذه الطريقة يتجربة كافة المفاتيح الممكنة (الاسم المتداول هو التخمين ) ولا تحتاج قيم ابتدائية في عملها .. (عملها نفس فكرة لعبة الشطرنج في الحاسوب) , حيث يقوم بحساب كافة تحركاتك الخصم وكافة الانتقالات المتوقعة .
من الامثلة العملية عليها , اداة الـ rever في نظام اللينكس وبرنامج هابيل وقابيل .. ادناه خوارزمية القوة الغاشمة تقوم بأختيار الحل وتقيمه اذا كان صحيح ام خاطئ (كمثال بسيط عن الطريقة اختيار عدد الملكات في الشطرنج (الوزير) )
طريقة القاموس Dictionary method :
تشبه الطريقة اعلاه الى حد كبير لانها تقوم بالتخمين ايضا وتجربة كافة الاحتمالات , ولكن هذه الطريقة تسحب البيانات من ملف خارجي يحتوي على كلمات كثيرة جداً , فاذا كان المفتاح موجود ضمن هذه الكلمات فأن الاختراق ينجح واذا لم يكن موجود فلا يمكن ان ينجح الاختراق .
طريقة تحليل التكرار Frequency Analysis method :
ان لكل لغة احصائيات معينة , فهناك حرف يتم استخدامها بكثرةوهناك حرف قليل الاستخدام وايضاً هناك احرف متوسطة الظهور , على سبيل المثال لو نظرنا الى احصائيات اللغة العربية لوجدنا ان الحرفين (ال) واسعات الاستخدام جداً , ثم الحرف (ن) اما في اللغة الانكليزية فسوف نجد ان الحرف (E) اكثر الحرف استخداماً ويليه حرف الـ (T) (اطلع على الاحصائيات ادناه )
فأن كاسر الشفرة عندما يقوم بتحليل الشفرة ويجد ان احد الاحرف المشفرة ظهر اكثر من بقية الاحرف , فسوف يفترض ان هذا الحرف هو (E) طبعا بالاعتماد على احصائيات اللغة فيقوم بأستبدال الحرف بالحرف (E) . لذلك ابتكروا طريقة التشفير الثنائي لانها يفشل طريقة تحليل التكرار , لان بهذا النوع من التشفير تظهر عدة اشكال للحرف الواحد , فيتم استبدال (A) مرة بالحرف (F) ومرة اخرى بالحرف (X) على سبيل المثال .
ادناه برنامج يقوم بتحليل تكرار كل حرف من حروف اللغة الانكليزية
والمخطط ادناه لاحصائيات اللغة العربية :
قمت بكتابة برنامج لتحليل التكرار باللغة الانكليزية وهذا هو الكود :
كود PHP:
Private Sub Cmd_Click()
Text2.Text = ""
Dim alpha As String ' ÇÚáÇä Úä ãÊÛíÑ íãËá ÇáÇÈÌÏíÉ
alpha = "abcdefghijklmnopqrstuvwxyz" ' ÇÓäÇÏ ÇáÇÈÌÏíÉ ááãÊÛíÑ
Dim i As Integer ' ÇáÇÚáÇä Úä ÇáÚÏÇÏ
Dim cut As String ' ÇáÇÚáÇä Úä ÇáßáãÉ ÇáÌÏíÏÉ ÈÚÏ ÊÞØíÚ ãÊÛíÑ ÇáÇÈÌÏíÉ ÇáÝÇ
For i = 1 To Len(alpha) ' ÍáÞÉ ÊßÑÇÑ ÍÓÈ Øæá ÇáßáãÉ alpha
cut = Mid(alpha, i, 1) ' ÈÏÁ ÚãáíÉ ÇáÊÞØíÚ æÇÓäÇÏ ÇáÌÒÁ ÇáãÞÊØÚ ááãÊÛíÑ word
Text2.Text = Text2.Text & cut & " = " & CStr(FCounter(Text1.Text, cut)) & vbCrLf
' ÇáÓØÑ ÇÚáÇå ÎÇÕ ÈÚãáíÉ ÚÑÖ ÇáÇÈÌÏíÉ ßÇãáÉ ãä Çæá ÍÑÝ áÇÎÑ ÍÑÝ ãÚ ÇÖÇÝÉ ÚÏÏ ÊßÑÇÑ ßá ÍÑÝ
' CSTr Úãá åÐå ÇáÏÇáÉ
' ÊÞæã ÈÊÍæíá ÊÚÈíÑ ÑíÇÖí Çæ ÈÑãÌí Çáì ÓáÓáÉ äÕíÉ ÊÍÊæí Úáì ÑÞã
Next i
End Sub
Function FCounter(ByVal strText As String, ByVal cut As String) As Long
Dim astrData() As String
astrData = Split(strText, cut) ' ÏÇáÉ áÊÞØíÚ ÇáÌãáÉ Çáì ßáãÇÊ
FCounter = UBound(astrData) ' ÏÇáÉ ÎÇÕÉ ÈÇáãÕÝæÝÇÊ ááÊÚÇãá ãÚ ÇáÇÈÚÇÏ
End Function
اتمنى لكم التوفيق
انتهى كورس التشفير