پنجشنبه, ۱۳ اردیبهشت, ۱۴۰۳ / 2 May, 2024
مجله ویستا

راهنمای استفاده از Gnu Privacy Guard


راهنمای استفاده از Gnu Privacy Guard
●راهنمای استفاده از Gnu Privacy Guard
این راهنما نحوه استفاده از GnuPG که یک سیستم رمزنگاری بازمتن سازگار با OpenPGP می‌باشد را شرح می‌دهد. به دلیل آزاد نگه داشتن کامل این نرم‌افزار، در آن از الگوریتم‌های Patent شده‌ای مانند RSA استفاده نشده‌است.
●مفاهیم
روش‌های سنتی رمزنگاری فایل‌ها تنها از یک کلید برای رمزنگاری داده‌ها استفاده می‌کنند. ارسال کننده، پیام خود را با استفاده از این کلید رمزنگاری می‌کند. برای اینکه گیرنده قادر به رمزگشایی پیام باشد، باید همان کلید را داشته باشد. این کلید باید به وسیله‌ای در اختیار گیرنده قرار داده شود، به طوری که سایرین نتوانند به آن دسترسی داشته باشند. در صورتی که این کلید در اختیار شخص دیگری قرار گیرد، این شیوه رمزنگاری کاملا بلا استفاده خواهد بود.
استفاده از کلیدهای عمومی یا Public Keys راه حل این مشکل به شمار می‌روند. مفهوم کلید عمومی زمانی مطرح می‌شود که موضوع استفاده از دو کلید در میان باشد. کلید اول یک کلید عمومی است که می‌تواند تکثیر شده و در اختیار همگان قرار گیرد. کلید دوم، کلید خصوصی یا Private Key است. این کلید سری بوده و نمی‌توان آنرا تکثیر نمود. این کلید تنها در اختیار مالک آن قرار دارد. در صورتی که سیستم رمزنگاری درست پیاده سازی شده باشد، امکان بیرون کشیدن کلید خصوصی از میان کلید عمومی وجود نخواهد داشت. اکنون فرستنده پیام را با استفاده از کلید عمومی گیرنده رمزنگاری خواهد کرد. سپس، رمزگشایی توسط کلید خصوصی گیرنده انجام خواهد شد.
مهمترین موضوع در این روش، این است که کلید خصوصی تنها در اختیار مالک آن قرار دارد و نیازی نیست و نباید در اختیار شخص دیگری قرار گیرد. بنابراین این کلید را نباید از طریق اینترنت جابجا نمایید و آنرا تحت اتصالات رمزنگاری نشده‌ای مانند تلنت بکار بگیرید.
●امضا‌های دیجیتال
به منظور ثابت کردن اینکه یک پیام واقعا توسط همان ارسال کننده واقعی ارسال شده‌است، مفهوم امضا‌های دیجیتال اختراع شد. همانطور که از نام آن پیداست، پیام بصورت دیجیتال توسط ارسال کننده امضا می‌شود. با استفاده از همین امضا گیرنده می‌تواند از اصل بودن پیام اطمینان حاصل نماید.
●تاری از اعتماد
یک نقطه ضعف الگوریتم کلید عمومی، پخش کردن کلیدهای عمومی است. ممکن است یک کاربر مزاحم یک کلید عمومی نامعتبر را در چرخه وارد نماید. در صورتی که با استفاده از این کلید نامعتبر، پیام‌ها رمزنگاری شوند، آن کاربر مزاحم قادر خواهد بود تا آنها را رمزگشایی کند. البته در آن صورت باید قبل ار رسیدن پیام به گیرنده اصلی، کاربر مزاحم مجددا پیام رمزگشایی شده را مجددا با کلید عمومی معتبر رمزنگاری کرده و برای کاربر صاحب کلید عمومی ارسال کند. به همین دلیل، امکان انجام چنین حمله‌ای بسیار کم بوده و مهم نیست.
سیستم رمزنگاری PGP و همینطور GnuPG، بر پایه امضای کدها بنا شده‌است. یک کلید عمومی می‌تواند توسط کاربران دیگری نیز امضا شود. این امضا تصدیق می‌کند که کلید استفاده شده توسط یک کاربر، واقعا به کاربری تعلق دارد که قرار است داشته باشد. در نهایت این کاربر GnuPG است که میزان اعتماد به امضا را تعیین می‌کند. در صورتی که ارسال کننده یک کلید را می‌شناسید و اطمینان دارید که کلید به خود وی تعلق دارد، می‌توانید آن کلید را به عنوان قابل اطمینان تعیین کنید. برای اینکه کاملا مطمئن باشید که چنین است، باید صحت اثر انگشت (Finger Print) آنرا قبل از تعیین آن به عنوان قابل اطمینان بررسی نمایید.
مرزهای امنیت
در صورتی که شما داده‌ای دارید که باید به صورت محرمانه باقی بماند، موارد خیلی بیشتر از الگوریتم رمزنگاری وجود دارد که باید به آنها فکر کنید. نخستین مورد امنیت عمومی سیستم‌تان است. ما فرض می‌کنیم که الگوریتم PGP امن است، همچنانکه تا کنون هیچ Crack ای برای آن شناسایی نشده‌است. حتی اگر PGP کاملا هم در مقابل کرک مقاوم باشد، معنی آن این نیست که نتوان از آن برای حمله به امنیت سیستم استفاده کرد. در اوایل فوریه ۱۹۹۹ اسب تروایی (Trojan Horse) کشف شد که در دیسک سخت سیستم به دنبال کلیدهای خصوصی PGP گشته و آنها را از طریق FTP ارسال می‌کرد. در صورتی که کلمه عبور انتخابی شما مناسب نباشد می‌توان کلیدهای خصوصی را به راحتی کرک کرد.
مورد دشوارتر – ولی ممکن از نظر فنی – دیگر این است که اسب تروایی باشد که کلیه ورودی‌های صفحه کلید را ثبت می‌کند. همچنین ممکن است اسب تروایی بتواند محتویات صفحع نمایش را ارسال کند – هر چند از نظر فنی بسیار دشوار است. به این صورت اصلا نیازی نیست که نفوذگر محتویات رمزنگاری شده پیام شما را رمزگشایی کند! برای جلوگیری از تمامی خطرات بالا، باید یک طرح امنیتی جامع پیاده سازی و اجرا شود.
هدف ما این نیست که سوء ذن ایجاد کنیم، ولی نکته مهم این است که برای امنیت کامل، کارهای زیادی باید انجام شود. رمزنگاری تنها بخشی از امنیت است و نه تمام آن. اسب‌های تروایی که در سال ۱۹۹۹ در ویروس ملیسا (Melissa) کار گذاشته شدند ثابت کردند که بسیاری از شرکت‌ها در این گونه موارد آمادگی‌های لازم را دارا نیستند.
●نصب GnuPG
کد منبع GnuPG را می‌توانید از صفحه دریافت وب سایت رسمی آن واقع در آدرس http://www.gnupg.org/download.html تهیه نمایید. با توجه به محدودیت‌های قانونی، امکان دریافت GnuPG از سرویس‌دهنده‌های مستقر در ایالات متحده وجود ندارد. دلیل آن محدودیت‌های قانونی ایالات متحده در مورد صادرات نرم‌افزارهای رمزنگاری است. دلیل اینکه PGP نیز همیشه بصورت یک نسخه بین‌المللی و یک نسخه داخلی ارائه می‌شود نیز همین است. در نسخه بین المللی، کد منبع بصورت چاپ شده و بصورت کتاب منتشر شده‌است. این کتاب را در اروپا (اسلو در نروژ) مجددا اسکن کرده‌اند. اطلاعات دقیق‌تر در این مورد را می‌توانید در وب سایت PGP بین‌المللی واقع در آدرس http://www.pgpi.com بیابید. نسخه بین‌المللی PGP را می‌توان به ایالات متحده وارد کرد، ولی اجازه صدور مجدد آن از ایالات متحده وجود ندارد.
●پیکربندی GnuPG
شما می‌توانید GnuPG را بصورت یک بسته دبیان، RPM یا کد منبع دریافت کنید. GnuPG بصورت پیش‌گزیده در بسیاری از توزیع‌های لینوکس وجود دارد. برای اینکه اطمینان حاصل کنید که در حال حاضر GnuPG در سیستم‌تان نصب شده‌است، می‌توانید از دستوراتی مانند rpm -q gnupg و یا dpkg-query -l | grep gnupg در سیستم‌های مبتنی بر RPM یا دبیان استفاده کنید. علاوه بری لینوکس، GnuPG در سایر سیستم‌های عامل نیز قابل استفاده می‌باشد. می‌توانید لیستی از سیستم‌های عامل قابل پشتیبانی را در صفحه خانگی GnuPG در آدرس http://www.gnupg.org مشاهده نمایید. برای نصب و پیکربندی GnuPG بصورت کد منبع، پس از دریافت بسته آن، آنرا با استفاده از دستور tar -zxf (در مورد بسته‌های gz) یا tar -zjf (در مورد بسته‌های bz۲) از حالت فشرده خارج نموده و با استفاده از دستور configure/. آنرا پیکربندی و با استفاده از دستور make کامپایل نمایید. دستور make install نیز آنرا نصب خواهد کرد.پس از اینکه GnuPG با موفقیت در سیستم‌تان نصب شد، باید آنرا برای استفاده تنظیم کنید. نخستین قدم ایجاد یک کلید رمزنگاری است.
●ایجاد کلید‌های رمزنگاری
برای این منظور از دستور gpg --gen-key استفاده نمایید. نخستین سوالی که از شما پرسیده خواهد شد در مورد نوع الگوریتم مورد استفاده است. در مورد الگوریتم‌ها می‌توانید در PGP DH vs. RSA FAQ و یا Applied Cryptography در اطلاعات بیشتری کسب کنید. شما می‌توانید به راحتی گزینه پیش‌گزیده، یعنی DSA /ElGamal را انتخاب کنید که patent شده هم نیست.
سوال بعدی در مورد طول کلید است. این گزینه‌ای است که تا حد زیادی به کاربر بستگی دارد. شما انتخابی بین مدت پردازش و امنیت دارید. در صورتی که کلید بلندتر باشد، احتمال کرک شدن پیام در میان راه کمتر است. با بکارگیری کلید بلندتر، زمان پردازش بیشتر خواهد شد. در صورتی که این برای شما مهم است، می‌توانید گاهی از کلید‌های بلندتر استفاده کنید. البته قدرت سخت‌افزارها دایما در حال افزایش است. حداقل اندازه قابل استفاده در GnuPG مقدار ۷۶۸ بیت می‌باشد و حداکثر آن ۲۰۴۸. اندازه پیش‌گزیده نیز بر روی ۱۰۲۴ تنظیم شده‌است. در موارد بسیار مهم از نظر امنیتی می‌توانید از طول ۲۰۴۸ استفاده کنید.
در مرحله بعدی از شما درخواست خواهد شد تا نام، آدرس پست الکترونیکی و یک توضیح (comment) وارد نمایید. بر اساس این مقادیر، کد کلید شما ایجاد خواهد شد. البته بعدا می‌توانید در صورت نیاز این کد را تغییر دهید.
در مرحله پایانی نیز باید کلمه عبور مورد نیاز را وارد کنید. این کلمه عبور برای استفاده از کلید خصوصی شما لازم است. توجه داشته باشید که کلمه عبور شما:
۱) به اندازه کافی طولانی باشد.
۲) در آن از کاراکترهای غیر حرفی استفاده شده باشد.
۳) مخصوص باشد و چیزی عمومی مانند یک نام نباشد.
۴) حدس زدن آن بسیار سخت باشد.
توجه داشته باشید که آنرا فراموش نکنید! سپس سیستم شروع به ایجاد کلیدهای شما می‌کند. در ایجاد این کلیدها اطلاعات تصادفی استفاده می‌شود به نحوی که هر کلیدی که با همین اطلاعات ایجاد کنید، از هم متفاوت خواهند بود.
●صدور کلیدهای رمزنگاری
برای صدور کلیدها برای یک کاربر، از دستور زیر استفاده کنید:
$ gpg -a --export [UID] > mykey
سپس می‌توانید با استفاده از این کلید افق‌های خود را گسترده‌تر کنید. درگران می‌توانند با شما در امنیت کامل ارتباط برقرار نمایند. این کلید را می‌توانید بر روی صفحه خانگی خود و یا یکی از سرویس‌دهنده‌های کلیدهای عمومی قرار دهید. روش‌های دیگری نیز برای در اختیار قرار دادن این کلید برای دیگران وجود دارد.
●وارد کردن کلید‌های رمزنگاری
هنگامی که کلید عمومی شخصی را دریافت می‌کنید، باید آنرا به بانک اطلاعاتی کلید‌های خود اضافه کنید تا بتوانید از آن استفاده کنید. برای این منظور باید از دستور زیر استفاده کنید:
$ gpg --import [filename
●باطل کردن یک کلید رمزنگاری
به دلایل مختلفی ممکن است مایل باشید تا یک کلید موجود را باطل نمایید. برای مثال هنگامی که کلید خصوصی شما به سرقت رفته و یا اشتباها به اشخاص دیگری ارسال شده‌است، کلید به اندازه کافی بزرگ نیست و غیره. در چنین مواردی باید از دستور زیر استفاده کنید:
$ gpg --gen-revoke
این کار یک مجوز ابطال برای شما ایجاد می‌کند. برای انجام این کار، به کلید خصوصی نیاز خواهید داشت. اگر اینگونه نباشد، هرکس می‌تواند کلیدهای شما را باطل کند. این یک بدی دارد. در صورتی که شما کلمه عبور را ندانید، کلید غیر قابل استفاده خواهد شد. بنابراین نخواهید توانست کلید را باطل نمایید. بنابراین برای جلوگیری از چنین رخدادهایی، معقولانه است که هنگام ایجاد کلیدها، یک مجوز ابطال نیز برای آنها ایجاد کنیم. فقط باید دقت شود تا این مجوز به دست اشخاص دیگری نیافتد. در غیر اینصورت اشخاص دیگر خواهند توانست کلید شما را ابطال کرده و آنرا غیر قابل استفاده کنند.
●مدیریت کلیدهای رمزنگاری
به همراه GnuPG یک فایل ارائه می‌شود که بنوعی به صورت یک بانک اطلاعاتی عمل می‌کند. در این فایل تمامی اطلاعات مانند کلیدها و اطلاعات مربوط به آنها ذخیره می‌شوند. با استفاده از دستور زیر خواهید توانست تا لیستی از کلیدهای موجود را نمایش دهید:
$ gpg --list-keys
برای نمایش امضاها هم می‌توانید از دستور زیر استفاده کنید:
$ gpg --list-sigs
برای نمایش اثر انگشت کلیدها (key fingerprint) نیز از دستور زیر استفاده کنید:
$ gpg --fingerprint
می‌توانید از اثر انگشت کلیدها برای حصول اطمینان از اصل بودن شخص فرستنده استفاده کنید. برای لیست کردن کلیدهای خصوصی نیز می‌توانید از دستور زیر استفاده کنید:
$ gpg --list-secret-keys
نکته اینکه معمولا اثر انگشت کلیدهای خصوصی لیست نمی‌شوند! برای پاک کردن یک کلید عمومی، از دستور زیر می‌توانید استفاده کنید:
$ gpg --delete-key UID
دستور مهم دیگری نیز وجود دارد که برای کار کردن با کلیدها بکار می‌رود:
$ gpg --edit-key UID
با استفاده از این دستور قادر خواهید بود تا تاریخ انقضای کلید را ویرایش کرده و یا اثر انگشت یا امضا به کلید اضافه کنید. به این منظور به کلمه عبور خود نیاز خواهید داشت.
●امضای کلیدهای رمزنگاری
همانطور که قبلا نیز ذکر شد، سیستم GnuPG یک نقطه پاشنه آشیل دارد. این اصل بودن کلیدها است. در صورتی که شما یک کلید عمومی اشتباه داشته باشید، باید با رمزنگاری خود خداحافظی کنید. برای جلوگیری از این امر، باید از امضای کلیدها استفاده کنید. شما می‌توانید امضای خود را در کلید قرار دهید و این کار باعث اطمینان از اصل بودن کلید شما خواهد شد. برای امضای کلید مورد نظرتان کافی است که دستور gpg --edit-key UID را وارد کرده و سپس دستور sign را تایپ کنید. تنها هنگامی کلیدی را امضا کنید که حتما از اصل بودن آن اطمینان داشته باشید.
با توجه به امضاهای موجود و درجه ownertrust، برنامه GnuPG می‌تواند درجه اعتبار کلیدها را تعیین کنید. Ownertrust مقداری است که مالک کلید برای تعیین سطح اعتبار یک کلید خاص تعیین می‌کند. این مقادیر عبارتند از:
۰) پاسخ نمی‌دهم!
۱) آنرا بررسی نکرده‌ام!
۲) یک بررسی اجمالی انجام داده‌ام!
۳) آنرا به دقت بررسی کرده‌ام!
اطلاعات مربوط به اعتبار کلیدها در یک فایل جداگانه ذخیره می‌شودپس از اینکه نصب و تنظیمات تمامی بخش‌ها به اتمام رسید، شما می‌توانید رمزنگاری و رمزگشایی را آغاز نمایید. این امکان وجود دارد تا از چندین کلید خصوصی استفاده کنید. برای استفاده از یک کلید خاص باید گزینه u- را به همراه user-id کلید مربوطه بکار ببرید.
●رمزنگاری
برای رمزنگاری می‌توانید از دستورات زیر استفاده کنید. برای اینکه شخص دبگری نتواند خود را بجای شما جا بزند، توصیه می‌شود هر چه را که رمزنگاری می‌کنید، حتما امضا هم بکنید.
$ gpg -e Recipient [Data] or $ gpg --encrypt Recipient [Data]
●رمزگشایی
برای رمزگشایی از دستور زیر استفاده کنید. هنگام رمزگشایی خروجی به خروجی استاندارد ارسال خواهد شد، ولی شما می‌توانید با استفاده از گزینه o- خروجی را به یک فایل ارسال کنید:
$ gpg [-d] [Data] or $ gpg [--decrypt] [Data]
●امضاء کردن
برای امضای اطلاعات با استفاده از کلید خودتان، از دستور زیر استفاده کنید:
$ gpg --sign [Data] or $ gpg -s [Data]
در این حالت اطلاعات فشرد شده و بصورت خوانا قابل دیدن نخواهد بود. برای امضای اطلاعات بصورتی خوانا، کافی است که از دستور زیر استفاده کنید:
$ gpg --clearsign [Data]
شما می‌توانید امضای خود را در یک فایل جداکانه بنویسید. این در مواردی استفاده می‌شود که فایل‌هایی مانند فایل‌های اجرایی یا آرشیوهای فشرده شده را امضاء می‌کنید. گزینه armor-- در چنین مواردی قابل استفاده می‌شود. ساختار کلی دستور به صورت زیر خواهد بود:
$ gpg [ -u Sender] [-r Recipient] [--armor] --sign --encrypt [Data]
هنگامی که اطلاعات رمزنگاری شده امضاء می‌شود، هنگام رمزگشایی، امضاء نیز بررسی می‌شود. شما می‌توانید امضای داده‌های امضاء شده را با استفاده از دستور زیر بررسی کنید:
$ gpg [--verify] [Data]
توجه داشته باشید که این گزینه در صورتی کار خواهد کرد که شما نسخه‌ای از کلید عمومی ارسال کننده را در اختیار داشته باشید.
●ابزارهای Front End برای GnuPG
برای اینکه استفاده از GnuPG برای کاربران آسان‌تر گردد، تعدادی برنامه نوشته شده‌است که وظایف GnuPG را برای شما انجام می‌دهد. تعدادی از این ابزارها گرافیکی بوده و کاربری می‌تواند با چند کلیک عملیات مدیریت کلیدها، امضا، رمزنگاری و رمزگشایی را انجام دهد.
الف) ابزارها گرافیکی
۱) GPA: یکی از ابزارهای گرافیکی برای GNU Privacy Guard، ابزار GPA است. این رابط، رابط استانداردی است که توسط پروژه GnuPG ارائه می‌گردد. این ابزار و اطلاعات دقیق‌تر در مورد آنرا می‌توانید از آدرس http://www.gnupg.org/gpa.html دریافت نمایید.
۲) Seahorse: این ابزار یکی از ابزارهای محیط Gnome برای GnuPG می‌باشد. این ابزار را می‌توانید برای امضا، رمزنگاری، بررسی و رمزگشایی متن و فایل‌ها استفاده کنید. متن می‌تواند از Clipboard خوانده شده و یا مستقیما در محیط ویرایشگر کوچک آن نوشته شود. برای اطلاعات دقیق‌تر می‌توانید به آدرس پروژه آن در http://seahorse.sourceforge.net مراجعه نمایید.
۳) KGPG: یکی دیگر از ابزارهای گرافیکی GnuPG، ابزار KGPG است که به همراه میزکار KDE ارائه می‌شود. این ابزار بصورت توکار با ابزارهای محیط KDE مانند Konqueror قابل استفاده می‌باشد. برای اطلاعات دقیق‌تر در مورد این ابزار می‌توانید به آدرس http://devel-home.kde.org/~kgpg/index.html مراجعه نمایید.
ب) سرویس‌گیرنده‌های پست الکترونیکی
بسیاری از نرم‌افزارهای پست الکترونیکی از GnuPG پشتیبانی می‌کنند. تعدادی از مهمترین آنها عبارتند از:
۱- Mozilla and Mozilla Thunderbird
۲- Evolution
۳- Pine
۴- Kmail
۵- Eudora
۶- Mutt
۷- exmh
این برنامه‌ها به شما امکان ارسال و دریافت نامه‌های الکترونیکی رمزنگاری و امضاء شده و همچنین رمزگشایی نامه‌های الکترونیکی دریافت شده را می‌دهند.
●موزیلا و Enigmail
موزیلا بطور توکار فاقد پشتیبانی از GnuPG است. برای استفاده از این قابلیت، باید پلاگین یا Extension ای به نام Enigmail را که در آدرس http://enigmail.mozdev.org در دسترس می‌باشد، بر روی آن نصب نمایید. این ابزار دارای قابلیت استفاده بسیار آسان می‌باشد.
●Evolution
این نرم‌افزار Group Ware قدرتمند دارای قابلیت پشتیبانی از GnuPG بصورت توکار می‌باشد. تنظیمات GnuPG را می‌توانید از بخش Account Preferences هر حساب پست الکترونیکی تعریف شده در آن انجام دهید.
●Kmail
این برنامه که برنامه پست الکترونیکی استاندارد محیط KDE می‌باشد، دارای پشتیبانی داخلی از GnuPG است. تنظیمات GnuPG را می‌توانید در بخش Identity هر حساب کاربری انجام دهید.
ترجمه: آلن باغومیان
Gnu Privacy Guard Mini HowTo
منبع : نشریه لینوکس ایران