علم التشفير: المقالة الرابعة
* مقدّمة
في المقالة السابقة استخدمنا هذا المفتاح:
MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgG4dLx/vQC85SJMaBnFk9LhABdT4
9AAfugBqPv4ugIeQ2+C2/49p8Y3egrGlL/Ei0XKiLGnNirsashUkYraqaIztrvYt
lQKbB1iH8Z6NEzdVAr4wJ6qr8o1LN/YI0AV4Alh4hkQQZHXrb0vkCyXlZfpd9HIe
TKEVcXUSQ3Cd+ohFAgMBAAE=
لتشفير رسالة (السلام عليكم، قابلني في المسجد بعد صلاة العصر)، وقُلنا أنّ الرسالة المشفّرة هي ناتج خلط محارف المفتاح مع محارف الرسالة الأصلية، وقُلنا أن مفتاح التشفير (فك التشفير) يكونُ أقوى كلّما كان عشوائيّاً أكثر, وقلنا أنّنا إذا استخدمنا نفس خوارزمية التشفير لتشفير نفس الرسالة فإنّ الرسالة المشفّرة لن تكون نفسها إلّا إذا استخدمنا نفس مفتاح التشفير. وفي هذه المقالة سنتحدّث عن كيفيّة توليد المفاتيح رياضيًّا.
* توليد المفاتيح (RNGs)
تُستخدم خوارزميات pseudo random number generators (pseudo RNGs) لتوليد الأرقام العشوائيّة وفكرتها كما يلي: انطلاقًا من محارف بسيطة يُدخلها المستخدم (أرقام 123 أو أسماء) يُطلق عليها اسم بذرة (seed) يتم تمرير البذرة إلى تابع رياضي، يقوم هذا التّابع بخلق محارف جديدة وتوسيع البذرة، ويتم استخدام عدّة توابع بشكل متتالي. على سبيل المثال:
التّابع X[n+1] = (aX[n] + b) mod(m)
حيث mod هو تابع باقي قسمة الرقم الموجود على يمينه على الرقم الموجود أمامه (فمثلًا 114mod يساوي 3, حيث 11 تقسيم 4 يساوي 2 والباقي 3).
وحيث a و b و m هي ثوابت.
أي: إذا أدخلنا X[0] سنحصل على X[1] و إذا أعدنا إدخال X[1] سنحصل على X[2] وهكذا حتى نصل إلى طول محدد مسبقًا للمفتاح.
فلو اخترنا a = 16807 و b = 0 و m = 2147483648 قيماً للثوابت، فسيصبح تابع توليد الأرقام العشوائيّة هو
(32767)X[n+1] = (16807 X[n])mod.
وبإدخال X[0] = 4 فإن X[1] تكون 1694.
* طول المفتاح
تستخدم خوارزميات التششفير مفاتيح بأطوال مختلفة تتراوح بين 128-1024 بت (bit). فخوارزمية 3DES مثلًا تستخدم مفتاح طوله 168بت. ولا يمكن القول بأنّه كلّما كان المفتاح أطول فإنّ الأمان أكبر بغضّ النظر عن خوارزمية التشفير نفسها. وينبغي التنبّه إلى أنّ تجريب كل المفاتيح brute force attack يُصبح أكثر صعوبة كلما كان المفتاح أطول، وفي الحقيقة يتضاعف عدد المفاتيح الممكن ترميزها مع كل 1 بت زيادةً على طول المفتاح.
* تُسمى خوارزمية توليد المحارف العشوائية التي يستخدمها نظام ويندوز ب Microsoft CryptoAPI. وتُسمى تلك التي يستخدمها نظام الماك ب Yarrow.
* نتحدّث في المقالة التالية -إن شاء الله- عن أشهر خوارزميتي تشفير (DES وAES).
Rijswijk R. V, Oostdijk M. Applications of Modern Cryptography, SURFnet, 2010 [pdf] Using the Pseudo-Random Number generato [pdf] وهذه روابط مباشرة لتحميل المراجع:
https://www.cpp.edu/~pbsiegel/phy409/compnotes/rannums.pdf
https://www.surf.nl/…/2010/rapport_201009_SNcryptoWEB.pdf