منتدى استراحات زايد

منتدى استراحات زايد (http://vb.ma7room.com/index.php)
-   منتدى أخبار المواقع والمنتديات العربية والأجنبية (http://vb.ma7room.com/forumdisplay.php?f=183)
-   -   التشفير باستخدام برنامج GnuPG (http://vb.ma7room.com/showthread.php?t=110340)

محروم.كوم 05-16-2009 04:30 AM

التشفير باستخدام برنامج GnuPG
 
يعتبر أمن المعلومات وحمايتها من أكثر الأمور حساسية التي يجب علينا الاهتمام بها والتعامل معها بجدّية خصوصا عندما يتعلق الأمر بالانترنت. سأشرح في هذا المقال كيفية استخدام برنامج GNU Privacy Guard في صناعة زوج مفاتيح تشفير خاصة بك, طرق التعامل معها وكيفية تشفير/فك تشفير الملفات وتوقيعها باستخدام هذا البرنامج.

http://www.isecur1ty.org/images/stories/gnupg.png

تعريف بالبرنامج وطريقة عمله:

يعرف برنامج GNU Privacy Guard باسم GnuPG أو GPG اختصاراً وهو موجود بشكل أساسي في أغلب توزيعات نظام جنو/لينوكس ويوجد منه اصدارات خاصة بأنظمة Unix-like مثل FreeBSD, OpenBSD , Mac OS X, OpenSolaris... كما يوجد منه اصدار خاص بنظام Windows. يعتمد GnuPG على مبدأ التشفير باستخدام المفتاح الغير متناظر تطبيقاً لمعيار OpenPGP في تشفير وفك تشفير الملفات وهو بديل حر لبرنامج PGP التجاري. ماذا يعني الكلام السابق؟ كما نعلم يوجد عدة أنواع من التشفير منها التشفير باستخدام المفتاح المتناظر أي أن المفتاح الذي يشفّر الملف هو نفسه الذي يفك تشفيره لكن بهذه الحالة لنفرض أننا نريد ارسال ملفات هامة لشخص ما عن طريق الانترنت كيف سنتمكن من اعطائه المفتاح الذي شفّرنا به هذه الملفات بطريقة آمنة؟ كيف سنتأكد أن هذا الشخص هو الوحيد القادر على فك تشفير الملفات والاطلاع عليها؟ بهذه الحالة سنختار التشفير باستخدام المفتاح الغير متناظر الذي يتألف من مفتاحين الأول المفتاح العلني Public Key يستخدم في تشفير الملفات التي نريد ارسالها أما المفتاح الثاني هو المفتاح الخاص (أو السري) Private Key ويستخدم في فك تشفير الملفات المشفّر بالمفتاح العلني. بهذه الحالة الملفات المشفّرة باستخدام المفتاح العلني لا يمكن فك تشفيرها الا باستخدام المفتاح الخاص.

ملاحظة: اعتمدت بالشرح على سطر الأوامر بشكل أساسي لأنها الطريقة الأفضل "برأيي" ولأهمية البرنامج بالنسبة لمدراء السيرفرات فغالبا التحكم بالسيرفر يكون عن طريق SSH وليس الواجهة الرسومية, تم التطبيق على نظام GNU/Linux توزيعة Fedora والاصدار 1.4.9 من برنامج GnuPG.

صناعة زوج مفاتيح تشفير:

مافهمناه حتى الآن كل شخص يجب أن يملك مفتاحين الأول علني يتم نشره وارساله للجميع يستخدمه الطرف الآخر في تشفير الملفات والمعلومات التي يريد ارسالها أما الثاني مفتاح خاص يتم الاحتفاظ به في مكان آمن ويستخدم في فك تشفير الملفات المشفرة. لصنع زوج مفاتيح تشفير جديدة نفتح سطر الأوامر وننفذ الأمر:
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ gpg --gen-key



بعد تنفيذ الأمر السابق سيعمل البرنامج ويطلب منا تحديد نوع المفتاح الذي نريد صنعه, نحدد الخيار الأول (DSA and Elgamal) ثم نضغط Enter ليطلب منا البرنامج تحديد حجم المفتاح, شخصيا أرى الاعدادت الافتراضية مناسبة لذلك سأكتفي بالضغط على Enter مرة أخرى ليظهر لنا كما في الصورة التالية:
يطلب البرنامج تحديد فترة صلاحية المفتاح وهذا طبعا يعود لمدة حاجتنا له وبماذا سنستخدمه, من الممكن عدم تحديد فترة صلاحية وذلك بابقاء القيمة 0 والضغط على زر Enter أو جعل المفتاح صالح ليوم واحد مثلا! نكتب 1 ثم نضغط Enter أما اذا أردنا جعله صالح لأسبوع فقط نكتب 1w , شهر 1m , سنة 1y وهكذا... بالنسبة لي سأبقي الخيار الافتراضي 0 لكي لايتم تحديد فترة صلاحية للمفتاح, سيظهر بعد ذلك رسالة تأكيدية نضغط y لتظهر لنا رسالة تطلب منا ادخال الاسم, الايميل وتعليق عن المفتاح:
أدخل المعلومات بما يناسبك وعندما تنتهي ستظهر رسالة تأكيدية, نضغط حرف O للاكمال بعد ذلك سيطلب منا البرنامج ادخال كلمة سر للمفتاح (تستخدم عند فك التشفير). اكتب كلمة السر التي تريدها وتأكد من تذكرها جيدا فاذا فقدتها لن تتمكن من فك تشفير الملفات وسيصبح مفتاحك عديم الفائدة بعد ذلك سيبدأ البرنامج بصناعة زوج مفاتيح تشفير جديدة وعندما ينتهي سيظهر لك مثل الصورة التالية:
الـ KEY-ID الخاص بهذا المفتاح: 4D3F8269 (هذا المفتاح للتجربة واستخدم بغرض الشرح فقط!)

التعامل مع المفاتيح:

لاستعراض المفاتيح الموجودة في البرنامج نستخدام الأمر:
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ gpg --list-keys




الأمر السابق سيعرض لنا المفاتيح العلنية فقط المضافة لبرنامج GPG لعرض المفاتيح الخاصة فقط ننفذ الأمر:
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ gpg --list-secret-keys



الأن في حال أردنا تصدير المفتاح العلني الخاص بنا لارساله لشخص أو وضعه في الموقع/المدونة الخاصة بنا مثلا, ننفذ الأمر:
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ gpg --export -a XXXXXXXX > Public.asc



مع استبدال XXXXXXXX بالـ KEY-ID الخاص بالمفتاح الذي نريد لينشأ ملف باسم Public.asc هو المفتاح العلني, أما اذا أردنا تصدير المفتاح الخاص Private Key لحفظه في مكان آمن كنسخة احتياطية أو نقله لجهاز آخر, ننفذ الأمر:
كود PHP:
[LEFT][Br4v3-H34r7@iSecur1ty ~]$ gpg --export-secret-key -a XXXXXXXX > Private.asc
[/LEFT]


أيضا مع استبدال XXXXXXXX بالـ KEY-ID الخاص بالمفتاح الذي نريد. اذا أردنا اضافة مفتاح جديد لبرنامج GPG لنفرض المفتاح العلني الخاص بموقع iSecur1ty, في البداية نقوم بتحميل المفتاح:
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ wget http://www.isecur1ty.org/iS-Public.asc



ثم نقوم باضافة المفتاح الى برنامج GnuPG باستخدام الأمر:
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ gpg --import iS-Public.asc



لحذف مفتاح علني من البرنامج ننفذ الأمر:
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ gpg --delete-key XXXXXXXX



مع استبدال XXXXXXXX بالـ KEY-ID الخاص بالمفتاح الذي نريد. ولحذف مفتاح سري, نستخدم الأمر:
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ gpg --delete-secret-key XXXXXXXX



من ميزات برنامج GnuPG هي امكانية ارسال المفاتيح العلنية لحفظها على سيرفر خاص بحفظ المفاتيح تمكن الجميع من الوصول اليها, نستطيع القيام بذلك بتنفيذ الأمر:
[ كود PHP:
Br4v3-H34r7@iSecur1ty ~]$ gpg --send-keys --keyserver keys.gnupg.net XXXXXXXX



مع اسبدال XXXXXXXX بالـ KEY-ID الخاص بالمفتاح الذي نريد ارساله وبهذه الحالة يكفي الحصول على الـ KEY-ID الخاص بمفتاح الشخص الذي نريد ارسال المعلومات اليه بعد التأكد من أنه قام بارساله مسبقا للسيرفر ثم نقوم بتحميله واضافته بشكل تلقائي للبرنامج بتنفيذ الأمر:
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ gpg --recv-key XXXXXXXX





كذلك نستطيع البحث عن المفتاح العلني الخاص بهذا الشخص في السيرفر باستخدام الأمر:
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ gpg --search-keys "USER/EMAIL"



مع استبدال USER/EMAIL باسم أو ايميل هذا الشخص, على سبيل المثال:
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ gpg --search-keys Br4v3-H34r7




لاضافة المفتاح, نكتب الرقم الخاص به وبهذه الحالة 1 ثم Enter أو نضغط N للانتقال للصفحة التالية في حال ظهر عدد كبير من المفاتيح أو Q للخروج.
تشفير/فك تشفير الملفات:

بعد صناعة زوج مفاتيح تشفير جديدة ومعرفة كيفية التعامل معها علينا معرفة طريقة تشفير/فك تشفير الملفات باستخدام برنامج GnuPG. لنفرض مثلا أننا نريد تشفير ملف passwords.txt وارساله لشخص ما, كل ماعلينا هو اضافة مفتاحه العلني للبرنامج وتنفيذ الأمر:
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ gpg -r XXXXXXXX -e passwords.txt



مع استبدال XXXXXXXX بالـ KEY-ID الخاص بالمفتاح العلني للشخص الذي نريد ارسال الملف المشفّر اليه لينتج في النهاية ملف جديد مشفّر باسم passwords.txt.gpg لا يمكن فك تشفيره الا باستخدم المفتاح السري الخاص بالشخص الذي أرسلنا الملف اليه مع العلم أننا نستطيع تكرار -r عدة مرات اذا أردنا ارسال الملف لأكثر من شخص وجعل الجميع قادرين على فك تشفير الملف بنفس الوقت:
[ كود PHP:
Br4v3-H34r7@iSecur1ty ~]$ gpg -r XXXXXXXX -r XXXXXXXX -e passwords.txt



في حال لم نحدد KEY-ID سيظهر البرنامج رسالة تطلب منك ادخال الـ KEY-ID أو اسم/ايميل الشخص الذي نريد ارسال الملف اليه, كل ماعلينا هو ادخال الـ KEY-ID الذي نريد والضغط على Enter واذا أردنا ارسال الملف لأكثر من شخص ندخل الـ KEY-ID الخاص بجميع الأشخاص واحدا تلو الآخر وعندما تنتهي نضغط زر Enter مرتين ليتم تشفير الملف:


لو لاحظنا الناتج passwords.txt.gpg سيكون ملف مشفّر بصيغة binary غير مقروء ماذا لو احتجنا لأن يكون الملف بصيغة ASCII عبارة عن نص يمكن ارساله عن طريق الايميل مثلا؟ ببساطة نضيف الخيار -a للأمر السابق لينتج ملف باسم passwords.txt.asc:
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ gpg -a -r XXXXXXXX -e passwords.txt



الآن نستطيع قراءة الملف بشكل عادي جدا وارساله كنص عن طريق الايميل:
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ cat passwords.txt.asc





أما اذا أردنا فك تشفير ملف مشفّر تم ارساله الينا نستطيع ببساطة تنفيذ الأمر:
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ gpg -d passwords.txt.gpg



بعد التأكد من وجود المفتاح السري الخاص بنا في برنامج GnuPG, الأمر السابق سيظهر الناتج على شاشة الـ Terminal لذلك اذا أردنا فك تشفير الملف وارسال الناتج الى ملف جديد نستخدم الأمر:
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ gpg -d passwords.txt.gpg > passwords.txt




التواقيع الرقمية:

لنفرض مثلا أننا سنرسل ملف مشفّر لشخص ما.. في البداية سنقوم بالحصول على المفتاح العلني الخاص بهذا الشخص, اضافته للبرنامج, تشفير الملف الذي نريد ارساله ثم ارسال الملف اليه. السؤال الذي يطرح نفسه كيف سيتأكد هذا الشخص أن الملف الذي استلمه هو نفسه الملف الذي قمنا نحن بارسله؟ هنا يأتي دور التواقيع الرقمية حيث قبل أن نرسل الملف سنقوم بتوقيعه باستخدام المفتاح السري الخاص بنا. وبهذه الحالة عندما يقوم الشخص بفك تشفير الملف ستظهر رسالة تؤكد أننا نحن من أرسلنا الملف وليس شخص آخر, لنقوم بذلك كل ماعلينا هو تنفيذ الأمر:
[ كود PHP:
Br4v3-H34r7@iSecur1ty ~]$ gpg -s -u YYYYYYYY -r XXXXXXXX -e passwords.txt



مع استبدال YYYYYYYY بالـ KEY-ID الخاص بالمفتاح السري الذي سنستخدمه في توقيع الملف و XXXXXXXX بالـ KEY-ID الخاص بالمفتاح العلني للشخص الذي نريد ارسال الملف المشفّر اليه. الآن عندما يقوم هذا الشخص بفك تشفير الملف passwords.txt.gpg ستظهر له رسالة تخبره من الشخص الذي قام بتشفير هذا الملف.
كود PHP:
[Br4v3-H34r7@iSecur1ty ~]$ gpg -d passwords.txt.pgp





الواجهات الرسومية:

اذا أردنا استخدام البرنامج لسطح مكتب قد يكون استخدام الواجهة الرسومية أسهل علينا, يوجد للبرنامج العديد من الواجهات الرسومية يمكن استخدامها مع البرنامج وهي متوفرة لأكثر من نظام تشغيل وأكثر من سطح مكتب مثل برنامج Gpg4win لنظام ويندوز, Kgpg برنامج خاص بسطح مكتب KDE و Seahorse الواجهة الرسومية الخاصة بسطح مكتب GNOME:


يمكنكم الاطلاع على هذه الصفحة لمزيد من المعلومات عن الواجهات الرسومية المتوفرة كما يوجد اضافات للعديد من البرامج تسهّل علينا التعامل مع GunPG مثل اضافة Enigmail لبرنامج Thunderbird الخاص بادرة الايميل.

موقع برنامج GnuPG | صفحة التحميل | لمزيد من المعلومات


الساعة الآن 03:59 AM

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.5.2 TranZ By Almuhajir


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227