تشفير 101 › الكلمة التمهيدية 1 / 18 التالي

الكلمة التمهيدية

الكلمة التمهيدية

عن هذا الكتاب

كثيرون ممّن يعملون في التشفير (cryptography) لا يعنيهم كثيرًا القضايا العملية الواقعية. إنهم يحاولون اكتشاف أشياء ذكية بما يكفي لكتابة أبحاث عنها.

  * whitfield ديفي*

هذا الكتاب مقصود ليكون مقدّمة إلى التشفير للمبرمجين مهما كان مستواهم. وهو امتداد لمحاضرة بالعنوان نفسه، ألقاها المؤلف في PyCon 2013.

بنية هذا الكتاب مشابهة إلى حدٍّ كبير: فهو يبدأ لبناءات (primitives) بسيطة جدًا، ثم يقدّم بناءات جديدة تدريجيًا، مع بيان سبب الحاجة إليها. وفي النهاية، يجتمع كلّ ذلك معًا في أنظمة تشفير (cryptosystems) كاملة وعملية، مثل TLS وGPG وOTR.

هدف هذا الكتاب ليس أن يجعل أحدًا خبيرًا في التشفير (cryptographer) أو باحثًا في الأمن (security researcher). هدف هذا الكتاب هو أن يفهم القارئ كيف تعمل الأنظمة التشفيرية الكاملة من منظورٍ علويّ شامل (bird's eye view)، وكيف تُطبَّق في برمجيات حقيقية.

التمارين المرافقة لهذا الكتاب تركّز على تعليم التشفير عبر كسر الأنظمة الرديئة. وبهذه الطريقة لن تكتفي بأنّك «تعرف» فقط أنّ شيئًا بعينه مكسور؛ بل ستعرف بالضبط كيف كان مكسورًا، وستعرف أنّك أنت نفسك، بما لا يتجاوز بعض وقت الفراغ ولغة البرمجة المفضّلة لديك، تستطيع كسره. وبما ترى كيف تُكسَر هذه الأنظمة التي تبدو آمنة فعليًا بكسرٍ تامّ، فأنت تفهم لماذا كلّ هذه البناءات والتركيبات ضرورية من أجل أنظمة تشفير كاملة. ونأمل كذلك أن تتركك هذه التمارين شكًّا صحيًّا في التشفير المنزلي (DIY cryptography) بكلّ أشكاله.

ظلّ التشفير مدّة طويلة يُعدّ حكرًا على الخبراء وحدهم. ومن تسرّبات داخلية كثيرة رأيناها على مدى السنين في دخائل الشركات الكبرى والصغيرة على السواء، صار واضحًا أنّ هذا النهج يؤذي أكثر ممّا ينفع. لم يعد بوسعنا أن نُبقي بين العالمين فصلًا تامًّا. يجب أن نجمعهما في عالم واحد يُدرَّب فيه كلّ مبرمج على الأسس الأساسية لأمن المعلومات، بحيث يمكنه أن يعمل جنبًا إلى جنب مع المحترفين في أمن المعلومات لإنتاج أنظمة برمجية أكثر أمانًا للجميع. وهذا لا يجعل أشخاصًا مثل مختبري الاختراق (penetration testers) والباحثين في الأمن عتيقين أو أقلّ قيمة؛ بل العكس تمامًا. فبتنشير المبرمجين كلّهم للمخاوف الأمنية، ست الحاجة إلى تدقيقات أمنية محترفة أكثر وضوحًا لا أقلّ.

يأمل هذا الكتاب أن يكون جسرًا: أن يعلّم المبرمجين العاديين من أيّ مجال أو تخصّص فهم ما يكفي من التشفير لأداء أعمالهم، أو ربّما لمجرّد إشباع شهيتهم.

الأقسام المتقدّمة

هذا الكتاب مقصود ليكون دليلًا عمليًا للتشفير للمبرمجين. بعض الأقسام تتعمّق أكثر ممّا يلزم لتحقيق ذلك الهدف. وهي موجودة في الكتاب على أيّ حال، تحسّبًا لفضولك؛ لكنّي أوصي عمومًا بتخطّي هذه الأقسام. وستكون موسومة بهذا الشكل:

متقدّم تنبيه

.. figure:: ./Illustrations/Propeller/Propeller.svg 80 left

هذا قسم اختياري ومتعمّق. لن يساعدك على الأرجح في كتابة برمجية أفضل، فلا تتردّد في تخطّيه. إنّه موجود هنا فقط لإرضاء شغف العالِم في داخلك.

متقدّم

التطوير

يُطوَّر مشروع Crypto 101 بالكامل بصفة علنية على GitHub تحت منظمة crypto101، بما في ذلك هذا الكتاب <https://www.github.com/crypto101/book/>_.

هذه نسخة مبكّرة ما قبل الإصدار (pre-release) من هذا الكتاب. كلّ أسئلتك وملاحظاتك وتقاريرك عن الأخطاء مرحَّب بها جدًّا. إن لم تفهم شيئًا بعد قراءته، أو إن كانت إحدى الجمل مصاغة بصياغة متكلّفة إلى حدّ ما، فهذا خطأ (bug) وأودّ كثيرًا إصلاحه! وبالطبع، إن لم أسمع عن مشكلتك أبدًا فسيكون من الصعب عليّ معالجتها…

نسخة هذا الكتاب التي تقرؤها الآن مبنيّة على التزام (commit) git ذي البصمة |version|، المعروف أيضًا بـ|release|.

شكر وتقدير

ما كان هذا الكتاب ليصبح ممكنًا لولا دعم وإسهامات كثيرين، حتى قبل أول إصدار عامّ. راجع بعضهم النصّ، وأجرى بعضهم مراجعة تقنية، وساعد بعضهم في المحاضرة الأصلية. وبدون ترتيب معيّن:

  • زوجتي، إيوا
  • Brian Warner
  • Oskar Żabik
  • Ian Cordasco
  • Zooko Wilcox-O'Hearn
  • Nathan Nguyen (@nathanhere)

بعد الإصدار العامّ، أسهم كثيرون آخرون في تغييرات. وأودّ أن أشكر الأشخاص التاليين على وجهة خاصّة (مرةً أخرى، وبدون ترتيب معيّن):

  • coh2، من أجل العمل على الرسوم التوضيحية
  • TinnedTuna، من أجل عمل المراجعة على قسم XOR (وأقسام أخرى)
  • dfc، من أجل العمل على الطباعة والصيغ البديلة
  • jvasile، من أجل العمل على الخطوط والبناء الآلي
  • hmmueller، من أجل كثيرٍ جدًّا من الملاحظات والاقتراحات
  • postboy (Ivan Zuboff)، من أجل كثرة المسائل المبلَّغ عنها
  • EdOverflow، من أجل إسامات كثيرة
  • gliptak (Gábor Lipták) من أجل العمل على أتمتة البناء،

إضافةً إلى العدد الهائل من الأشخاص الذين أسهموا في تحسينات الإملاء والقواعد والمحتوى. شكرًا لكم!