مقاله ها
عمومی سیستم
رمزنگاری وامضای فایل ها بااستفاده ازgpg
رمزنگاری وامضای فایل ها بااستفاده ازgpg
معرفی
دوروش امنیتی برای محافظت ازفایل هاوجوددارد:امضاکردن فایل هاورمزنگاری فایل ها.امضاکردن فایل یعنی ایجادیک امضای دیجیتالی ویژه برای فایل.شمامی توانیدبااستفاده ازاین امضاهادرستی فایل هاراوارسی کنیدولی رمزنگاری فایل طوری است که فقط کسی که فایل برای آن ساخته شده است می تواندآن رابخواند.
این سیستم برپایه ۲ کلیداست : کلیدعمومی وخصوصی.ازکلیدعمومی برای رمزکردن فایل هااستفاده می شودواین فایل هافقط با کلیدخصوصی ازحالت رمزدرمی آیند.این یعنی اینکه یک نفرمی تواندکلیدعمومی خودرابرای دیگران بفرستدودیگران بااستفاده از این کلیدمی توانندفایل هایی رابه حالت رمزدربیاورندکه فقط آن شخص می تواندازحالت رمزخارج کند.البته این یعنی اینکه امنیت این سیستم بستگی به طریقه نگهداری کلیدخصوصی دارد.
'گنو/لینوکس اسلکویرابزارعالی رابرای رمزنگاری وامضاکردن فایل هافراهم کرده است که نام آن GnuPG می باشد.این ابزاررا می توانیدازسری n بسته های اسلکویرنصب کنید.
تولیدکردن کلیدهای عمومی وخصوصی
تولیدکردن کلیدهای عمومی وخصوصی به علت استفاده GnuPG ازکلیدهای DSA به طورپیش فرض کمی پیچیده است.DSA یک الگوریتم رمزنگاری است ومشکل اینجاست که طول کلید DSA درحالت بیشینه ۱۰۲۴ بیت است و این برای مدت طولانی خیلی کوتاه درنظرگرفته می شد.پس بهتراست ازکلیدهای RSA باطول ۲۰۴۸ بیت استفاده کنیم.
نکته
*کلیدهای ۱۰۲۴ بیت برای مدت زمان زیادی امن تصورمی شدند.اما مقاله Berstein's این تصورراموردتردیدقرارداد.بعد ازارائه این مقاله آژانس های امنیت ملی شروع به تولیدسخت افزارهایی کردندکه این کلیدهارادرزمان کمی می شکستند.
مامی توانیم بااجرای دستورزیرکلیدی تولیدکنیم:
ariarat@slack-world:~$ gpg --gen-key
سوال اول این است که: شماکدام نوع ازکلیدهارادوست داریداستفاده کنید؟ماگزینه ۴ RSA-sign only راانتخاب می کنیم:

درمرحله بعدازمادرباره ی اندازه کلیدتولیدی سوال می شودکه شماعدد ۲۰۴۸ رابرای تولیدکلید۲۰۴۸ بیت واردکنیدو اینترکنید:
What keysize do you want? (1024) 2048
سوال بعدی خیلی ساده است وهرچی که دوست داریدومی دانیدبه دردتان می خوردراواردکنید.(مربوط به زمان اعتبار کلیداست) شمامی توانیدکلیدرابرای زمان زیادی(نامحدود)معتبرنگه دارید.همیشه می توانیدکلیدرابااستفاده ازگواهینامه باطل سازی ویژه غیرفعال کنید.

برنامه پس ازآن برای تاییدازشماسوال می کند.بعدازتاییدازشمادرباره ی نام وآدرس پست الکترونیکی سوال می کندو همچنین درباره ی توضیحات که می توانیداین قسمت راخالی بگذاریدویااگرمی خواهیدتوضیحی کوتاه واردکنیدکه نوع کلیدرامشخص کندمثلا "work" یا "private".

سپس برنامه ازشمابرای تایید ID کاربری سوال می کندپس ازتاییدازشمادرخواست می کندکه کلمه عبورخودراواردکنید دراین قسمت مطمپن شویدکه کلمه عبورقوی استفاده می کنید.

بعدازواردکردن کلمه عبوربرنامه شروع به تولیدکلیدهامی کند.ولی کارماهنوزتمام نشده وبرنامه فقط کلیدی برای امضا کردن فایل هاساخته ونه برای رمزنگاری اطلاعات.
برای ادامه یک نگاهی به خروجی برنامه داشته باشیدودنبال ID کلیدبگردید.دراطلاعات مربوط به کلیدشماعبارتی مثل pub 2048R/ رامی بینیدID کلیدبعدازاین عبارت نوشته شده است.
مثال:

کلیدID دراین مثال 8D080768 می باشد.اگراین خروجی راگم کردیدمی توانیدبااستفاده ازدستورزیر این اطلاعات را بازیابی کنید:
ariarat@slack-world:~$ gpg --list-keys
بااستفاده از ID به برنامه GnuPG بگوییدکه می خواهیدکلیدراویرایش کنید:
ariarat@slack-world:~$ gpg --edit-key <Key ID>
باتوجه به مثال بالاوID دستور قبل ماننددستوزیرمی شود:
ariarat@slack-world:~$ gpg --edit-key 8D080768
بعدازاینترکردن برنامه یک اعلان واردکردن دستوربه شمانشان می دهد.دستور addkey رادراین اعلان واردواینترکنید:
Command> addkey
برنامه بعدازآن ازشمادرخواست می کندکه کلمه عبورکلیدی که درحال ویرایش آن هستیدراواردکنید (همان کلمه عبوری که درقسمت تولیدکلیدواردکردید)

بعدازواردکردن کلمه عبوربرنامه ازشمادرباره ی نوع کلیدی که می خواهیدبسازیدسوال می کند.RSA-encrypt only راانتخاب کنیدواطلاعات رامانندقسمت قبل واردکنید(مطمئن شویدکه ازکلید۲۰۴۸ استفاده می کنید)برای مثال :

وتاییدکنیدکه اطلاعات درست است.بعدازتولیدکلیدشمامی توانیداعلان دستورراباواردکردن دستور save برای ذخیره شدن کلیدجدیدترک کنید:
Command> save
تبریک!شماالان کلیدهای مهم برای رمزنگاری ورمزگشایی فایل هاوایمیل هاراتولیدکردید.شماالان می توانیدکلاینت پست الکترونیک خودرابرای استفاده ازGnuPG پیکربندی کنید.این فکرخوبی است که محتویات پوشه gnupg. رادر جای مطمئنی ذخیره کنید(پشتیبان تهیه کنید)اگرکلیدخصوصی شماگم شودشمادیگرنمی توانیدفایل هاوپیام های رمزنگاری شده توسط کلیدعمومی خودرارمزگشایی کنید.اگرکلیدخصوصی شماوکلمه عبورگم شودامنیت این سیستم کامل به خطرمی افتد.
خارج کردن کلیدعمومی
برای مفیدبودن ابزار GnuPG شمامجبوریدکه کلیدعمومی خودتان رابه کسانیکه برای شمافایل وپیام می فرستند بدهید.آنهاازاین کلیدبرای رمزنگاری کردن فایل هاویابررسی درست بودن امضای فایل های ساخته شده توسط شما استفاده می کنند.شمامی توانیدبااستفاده ازپارامتر export-- کلیدراخارج کنید.استفاده ازپارامتر output-- هم ایده خوبی است.می توانیدبااستفاده ازآن کلیدخودرادرفایل ذخیره کنید.دستورزیرکلیدعمومی Mehdi Esmaeelpour رادرفایل key.gpg ذخیره می کند.
ariarat@slack-world:~$ gpg --output key.gpg --export ariarat@gamil.com
دستوربالاکلیدرادرقالب باینری ذخیره می کند.اغلب استفاده ازقالب "ASCII armored output" معمول تراست که برای اضافه کردن به پیام هاووبسایت هابهتراست.شمامی توانیدنسخه ASCII armored رابااستفاده ازپارامتر armor-- خارج کنید.
ariarat@slack-world:~$ gpg --armor --output key.gpg --export ariarat@gamil.com
اگرشمابه key.gpg نگاه کنیدمتوجه می شویدکه این قالب راحت تراست.
امضاها
باgpg شمامی توانیدبرای فایل خودامضابسازید.این امضامنحصربه فرداست زیرااین امضاباستفاده ازکلیدخصوصی شما ساخته می شود.این یعنی اینکه دیگران می توانندفایل رابازبینی کنندکه آیااین فایل توسط شماارسال شده ویااینکه این فایل به نحوی دستکاری شده یانه.امضای فایل هابااستفاده ازپارامترdetach-sign-- چک می شود.اجازه بدیدبایک مثال قضیه راروشن کنیم.این دستوربرای فایل memo.txt یک امضامی سازد.امضادرmemo.txt.sig ذخیره می شود.

همانطورکه شمامی بینیدGnuPG ازشمادرخواست کلمه عبورکلیدخصوصی رامی کند.بعدازاینکه شماواردکردیدفایل امضا (memo.txt.sig) به وجودمی آید.
شمامی توانیدفایل اصلی رابااستفاده ازامضای آن واستفاده ازپارامتر verify-- بازبینی کنید.فایل امضارابه عنوان پارامتربه پارامتر verify-- بدهیدوفایلی که می خواهدبازبینی شودرابعنوان پارامتر آخرقراردهید.

این خروجی تاییدمی کندکه این فایل واقعاتوسط:
Mehdi Esmaeelpour (Work) <ariarat@gmail.com>
وبااستفاده ازکلید 8D080768 امضاشده واینکه فایل دستکاری نشده .اگرفایل تغییریافته باشد GnuPG اینگونه به شمامی گوید:

رمزنگاری
یکی ازویژگی های اصلی GnuPG رمزنگاری است.به علت استفاده ازرمزنگاری نامتقارن نیازی نیست کسی که فایل رابه رمزدرمی آوردوکسی که آن راازحالت رمزخارج می کندکلیدی رابه اشتراک بگذارند.شمامی توانیدفایلی بااستفاده ازکلید عمومی شخصی به رمزدربیاوریدوشخص دیگری بااستفاده ازکلیدخصوصی آن فایل راازحالت رمزخارج کند.شمامی توانید با استفاده از encrypt-- فایل رابه حالت رمزدربیاورید.اگرشما ID کاربررامشخص نکنید GnuPG اعلانی رابرای وارد کردن ID کاربربه شمانشان می دهد.شمامی توانید ID کاربررابااستفاده از r- مشخص کنید.درمثال زیرفایل secret.txt برای شخصی به نام Mehdi Esmaeelpour رمزنگاری می شود.
ariarat@slack-world:~$ gpg --encrypt -r "Mehdi Esmaeelpour" secret.txt
بعدازاینکه رمزنگاری کامل شدنسخه رمزنگاری شده فایل بانام secret.txt.gpg به وجودمی آید.
کاربری که این فایل رادریافت می کندمی تواندبااستفاده ازپارامتر decrypt-- دردستور gpg فایل راازحالت رمزدربیاورد.(البته بادادن کلمه عبورمناسب)

دراین مثال پارامتر output-- برای ذخیره کردن متن ازرمز خارج شده درsecret.txt استفاده می شود.
ارجاعات
/usr/doc directory!
man pages!
اصطلاحات به کاربرده شده:
رمزنگاری : encryption,cryptography
رمزگشایی : decryption
امضاکردن : signing
کلیدعمومی : private key
کلیدخصوصی : public key
RSA : الگوریتم رمزنگاری
DSA : الگوریتم رمزنگاری
رمزنگاری نامتقارن : asymmetric cryptography
نویسنده : مهدی اسمعیل پور ariarat [at] gmail [dot] com
دانلود pdf
آخرین بروزرسانی (دوشنبه, 22 فروردين 1390 ساعت 17:53)




