التوقيع الرقمي Digital Signature] 1]
في المقال السابق كنا قد توقفنا عند إجابة السؤال ما هو التوقيع الرقمي؟ وهذا المقال للإجابة على هذا التساؤل.
إن علم أمن البيانات Data Security يحتوي على علم كبير يسمى علم التشفير Cryptography . التشفير ليس حديثا وإنما سجل أول طرق التشفير في التاريخ عند يوليوس قيصر وسميت بطريقة القيصر، وسواء علم أمن البيانات أو التشفير فكلٌّ منهما مرتبط ارتباطا وثيقا بعضهما البعض وبهم الكثير الذي يمكن الكتابة عنه مقالات عدة ولن يتسنى هنا إلا أن أذكر، أن الجذور الأساسية للتوقيع الرقمي هي علم التشفير.
وقد تقدم علم التشفير تقدما كبيراً في عصر الحاسبات الآلية أو العالم الرقمي ويوجد مثال له يكاد يعلمه كل الناس وهو تشفير القنوات التليفزيونية.
كل أنظمة التشفير تخضع لأسلوب أساسي واحد مُكون للنظام الخارجي أما التفاصيل فتختلف. والأسلوب العام هو أننا لدينا رسالة Message (الرسالة هنا هي المراد تشفيرها، ربما تكون نص أو صوت أو قناة تليفزيونية أو صورة..) وهي قبل التشفير تسمى Plaintext ولتشفيرها يجب وجود "مشفر" الذي به طريقة التشفير Encryption Algorithm ويحتاج إلى مفتاح الشفرة أو المفتاح السري Secret Key . باستخدام هذا المفتاح تتم تشفير الرسالة لتنتج عنها رسالة مشفرة Cipher .
مفتاح التشفير
الرسالة الرسالة مشفرة
وعملية فك تشفير الرسالة عند الجهة المستقبلة هي العملية العكسية للتشفير ولذلك يجب أن يملك مستقبل الرسالة المفتاح السري الصالح لفك شفرة الرسالة واسترجاع الأصل.
مفتاح التشفير
الرسالة مشفرة الرسالة الأصلية
هذه الطريقة التقليدية Conventional لفكرة التشفير ومن أقوى وأشهر الطرق في عصرنا الحديث هو (DES Data Encryption Standard ) و (AES Advanced Encryption Standard ).
طرق التشفير Encryption Algorithms ليست سرية وقوة التشفير تكمن في مدى طول وسرية المفتاح السري فكلما كبر طول المفتاح، صعب تحليله وكسره Cryptanalysis وسريته تكمن في الحفاظ عليه بين الطرفين ولهذا ظهرت مشكلة، ألا وهي كيف يمكن إرسال المفتاح السري بطريقه سرية وآمنة أو بما تسمى Key Management .
الطريقة التقليدية تستخدم مفتاح سري واحد مشترك بين الجانبين وعند تغييره من طرف لا بد أن يعلم الطرف الآخر بنفس المفتاح الجديد مما يعرضه للفضح إذا لم تكن الطريقة آمنة.
قام العالمان ديفي وهيلمان بإيجاد حل لمشكلة تبادل المفاتيح وذلك عن طريق وجود علاقة رياضية خاصة في الأعداد الأولية – على أي حال تم حل المشكلة بإيجاد طريقة وذلك بإنشاء مفتاحين لهم علاقة مرتبطة بأن ما يشفره الأول يفك تشفيره الثاني ولا يصلح أن يفك تشفير ما شفر بمفتاح بنفس المفتاح كما لا يوجد علاقة تمكن استخراج أي من المفتاحين بدلالة الآخر. أي أنه لابد من هذا الزوج Pair of Keys من المفاتيح وسمي المفتاح الأول بالمفتاح الخاص Private Key والآخر بالمفتاح العام Public Key وبهذا الحل نشأت منظومة جديدة وأساسات سميت بالبنية التحتيه للمفتاح العام (PKI Public Key Infrastructure) .
كل ما سبق لأصل بكم لهذه الكلمات البسيطة، أنه يوجد طرق تشفير حديثة تعتمد على PKI وهو نظام ذو مفتاحي تشفير أحدهم خاص وسري ولا داعي لإرساله أي مكان والآخر عام وعلني ويمكن نشره في أي مكان دون الاحتياج لقنوات اتصال آمنة.
التوقيع الرقمي Digital Signature هو أهم تطبيق عملي على استخدام هذه الطريقة PKI .
مرة أخرى أذكر القارئ العزيز بأن الموضوع به من التفاصيل التقنية الكثير والتي ليس لها مجال كبير هنا، فيمكنه الرجوع إلى أحد المراجع في ذلك للاستزادة من التفاصيل.
دعونا نستكمل الحديث حتى نجني ثمار كل ما سبق.
يوجد خدمات أساسية لنظم أمن البيانات (ذكرتها في الجزء الأول من الموضوع) ولكي يصبح التوقيع الإلكتروني متوافق مع تلكم الخدمات وفعال في الحفاظ على أمن البيانات. قام العالم "فيل زيمرمان" بعمل تجميع لأهم ما يحتاجه فرد أو جهة ما، لإنشاء نظام توقيع رقمي ناجح وكان هذا (PGP Pretty Good Privacy) وهو من أنجح الأنظمة للتوقيع الرقمي الخاص بالبريد الإلكتروني وهذا النظام كامل به ما يحتاجه المرء في تأمين مرسلاته، مثل التوثيق (التوقيع) Authentication، التشفير Encryption ، مع الحفاظ على خاتم التوقيت Timestamp وكذلك الحفاظ على صحة البيانات المرسلة Data Integrity وكذلك ضغط البيانات Compression وتوافقها مع كل أنظمة البريد الإلكتروني في الإرسال أو الاستقبال.
الهدف الأساسي من PGP هو استخدام التوقيع الرقمي لتأمين وتوثيق المراسلات باستخدام البريد الإلكتروني Emails وهو حتى يتسنى لنا فهم واستخدام النظام PGP علينا أن نتصور الآتي:
- لدينا كل من "أحمد" و "هبة " و "محمود "
- أحمد صديق هبة.
- محمود صديق هبة.
- أحمد لا يعرف محمود بصفة مباشرة وإنما لديهم صديق مشترك "هبة"
- كل فرد منهم لديه زوج من المفاتيح الخاصة به (أحدهم الخاص والآخر العام) (تذكر جيدا أن المفتاح الخاص، هو مفتاح سري لا يرسل لأحد البتة وإنما هو خاص بصاحبه ومحفوظ على نظامه في جهاز الحاسب الآلي)
- تبادلت "هبة" المفاتيح العامة مع أصدقائها وبالتالي أصبح لديها مفتاحي كل من "أحمد" و "محمود"، ولدى "أحمد" مفتاح "هبة" ولدى "محمود" مفتاح "هبة".
- إذا أرادت "هبة" إرسال رسالة موقعة منها لأي من أصدقائها، كل ما عليها هو استخدام مفتاحها "الخاص" للتوقيع Sign على الرسالة وهذا يعني أن الرسالة سوف تكون مقرؤة ولكن مضاف إليها جزئ يسمى التوقيع Signature ، قد يكون منفصل في ملف إضافي عادة يأخد امتداد .asc وهو ملف نصي به التوقيع.
- كل من أراد أن يتأكد أن هذه الرسالة مكتوبة بواسطة "هبة"، ما عليه إلا عمل Verify باستخدام مفتاح هبة "العام" الذي لديه. وسيخبره النظام بأن الرسالة مرسلة من فلان وموقعة بتاريخ وساعة كذا، وإذا تغير حرف واحد في الرسالة الأصلية، أصبحت لا تمت لكاتبها بصلة وبالتالي سوف يخبره النظام بأنها غير صالحة للتوافق مع التوقيع المصاحب لها.
- وبالتالي نرى أنه أمكن التأكد من الراسل Authentic وكذلك التاريخ والوقت Non-Repudiations ، وكذلك صحة البيانات والرسالة الواردة Data Integrity .
- ماذا لو أرادت "هبة" إرسال رسالة خاصة لا تريد لأحد الاطلاع عليها سوى "محمود"؟.
- في هذه الحالة عليها استخدام مفتاح "محمود" العام في تشفير Encrypt الرسالة وفي هذه الحالة لن يستطيع أحد الاطلاع عليها كونها مشفرة ولن يستطيع فك تشفيرها إلا من معه المفتاح الخاص المقابل للمفتاح العام التي شفرت به ألا وهو مفتاح "محمود" وفي هذه الحالة خدم PGP الخصوصية Confidentiality .
- باختصار شديد إلا إذا أراد شخص عمل توقيع على رسالة أو ملف عليه استخدام مفتاحه الخاص وسوف يستطيع جميع من لديهم مفتاحه العام أن يتوثقو من أنه هو كاتب الرسالة. وإذا أراد شخص عمل تشفير للرسالة لإرسالها بسرية عليه استخدام مفتاح المرسل إليه العام ولن يستطيع فك أو قراءة محتوى الرسالة سوى صاحب هذا المفتاح بعد فكها بمفتاحه الخاص.
- يعتمد PGP على الثقة المتبادلة في الأصل بين عدد من الأشخاص والذين يعرفون بعضهم ويريدون استخدام البريد الإلكتروني وسيلة اتصال بينهم وأيضا نشر هذه الثقة من خلال البعض لأطراف أخرى (صديق صديقي يصبح صديق) بالطبع مع وجود نظام تدريج لدرجات الثقة.
- "هبة" و"أحمد" أصدقاء (أي أن كل منهم يعلم أن البريد الإلكتروني لصديقه حقيقي وبريده فعلاً).
- "هبة" و"محمود" أصدقاء.
- ماذا لو هناك مصلحة ما اقتضت أن يتراسل "أحمد" و "محمود"، كيف لكل منهم أن يثق في أن المرسل من طرف فعلا مرسل منه شخصيا ولا يوجد من يتلاعب بهما وإن بريده الإلكتروني صحيح وهو بريدهما فعلا؟
- هنا يأتي دور "هبة" مع نظام PGP حيث أنها تستطيع التوقيع على التوقيع العام لكل منهم وإعطائه درجة من الموثوقية Trust وبالتالي يعلم النظام لدى كل من الطرفين "أحمد" و"محمود" أنه موثوق به من قبل "هبة" بدرجة كذا والتي هي نفسها موثوق بها بدرجة كذا لدى هذا الطرف. وهذه الفكرة هي التي بني عليها نظام شهادات الأمان Security Certificates والمستخدم بشكل رئيسي على الصفحات والمواقع التجارية على الإنترنت حيث توجد مؤسسة متخصصة بضمان أن هذه الشركة مصرحة ومعلومة لديهم وهذه الهيئة تسمى علميا (Certificate Authority CA).
- تحفظ المفاتيح في النظام الخاص بك فيما يسمى بحلقة المفاتيح Keys ring وبه يقوم النظام تلقائيا بالتعرف على صاحب المفتاح المرسل منه رسالة موقعة أو إخبارك بالمفاتيح الموجودة لديك لتختار منها من تريد إرسال رسالة مشفرة له.
- المفتاح العام يكون على سبيل المثال على هذا الشكل:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.7 (MingW32)
mQGhBEXr8/sRBAD37JY8P6zpQVXbXPyf+LzSY+ZECucsdr37zNaaSmbY7zyLU1SY
rdNWaSQqrUblQy5SpPPOxCKGxwM5gdg4k9pVg7DREzRQJqQFyem0mTw44t8Y/eJg
vjp+h1xhY86esQVc2cK4CUBq8s3zAAMFA/9r9ffubsTQnXap+2bYaa0f5fG4+U8F
E38gG6iUv0P4cWg3O8hxgWFTg3XahZPQiAU0R/RYUHUkyWPzTq08sw67H2PX8hOJ
TXW5f34FNZRuOrS5yuYQzsoGm04emvgD6S003Qn8NdTTeCl1pGCpAOQ3YTHVUO5p
X0DUDYzhOtT8YIhGBBgRAgAGBQJF6/QBAAoJEHMQD5X36+/bFbcAn3pA+SmuXtCX
DOW/wL2tEEKbev7tAJ9zUTIDNwKi4kMW+8/77fGcmWtMqw==
=hPR7
-----END PGP PUBLIC KEY BLOCK-----
- لو افترضت أنني كتبت رسالة تحتوي على كلمة "مرحبا" وقمت بتوقيع هذه الرسالة سيكون شكل التوقيع كما الآتي (على سبيل المثال):
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (MingW32)
iD8DBQBHAApAcxAPlffr79sRAjShAJ9YV6dyB7GITtQsszfLc3aKwBrVmQCdHiwj
I13ybYs9krw0j+2U45ec+W4=
=i5ty
-----END PGP SIGNATURE-----
التوقيع الرقمي لا يعتمد على طول الرسالة الأصلية فمهما كانت طويلة أو قصيرة سوف يأخذ نفس الطول الخاص به هو وطبعا مع اختلاف مكوناته الرقمية (ما ترى هو المقابل الحرفي للأرقام باستخدام نظام تكويد الآسكيASCII).
عند تشفير الرسالة سوف يكون طول الناتج متناسب مع طول الرسالة أي أنه يساويها في معظم الحالات.
عند عمل اختبار لتوقيع سوف يخبرك النظام بأن التوقيع "جيد" من "فلان" وفي يوم "كذا" وقت "كذا".
مثل الآتي:
Good SHA1-hashed signature made by Mohamed Ali Hashish (DSA/0xF7EBEFDB) on 9/30/2007 10:42:40 AM.
في ختام هذا الموضوع أقترح أن يقوم القارئ بزيارة أحد المواقع التي تتيح له الحصول على نظام PGP مجاني وتجربته بنفسه ومع أصدقائه وأقترح أحد الموقعين:
www.gnupg.org
www.gpg4win.org
تذكر جيدا أن المفتاح العام يمكن نشره في أي مكان أما الخاص فلا يعطي لأحد ويستخدم للتوقيع على رسائلك وملفاتك.
ملاحظات:
(1) جميع حقوق الملكية والملكية الفكرية للعلامات التجارية والمسجلة التي ذكرت في المقال ملك لأصحابها.
(2) الحقوق الفكرية للمقالة لكاتبها وتحت ترخيص GPL General Public License. يمكن استخدامها للأغراض الغير تجارية مع ذكر اسم كاتبها والموقع www.magnin.com .
واقرأ أيضا:
الديكتاتورية الرقمية والحرية.. / الجندي المجهول... ضغط البيانات1