رمزگذاری و رمزگشایی فایل ها با gpg در لینوکس — از صفر تا صد

۸۹۷ بازدید
آخرین به‌روزرسانی: ۱۲ مهر ۱۴۰۲
زمان مطالعه: ۹ دقیقه
رمزگذاری و رمزگشایی فایل ها با gpg در لینوکس — از صفر تا صد

با استفاده از دستور gpg در لینوکس می‌توان از حریم خصوصی محافظت کرد. بدین ترتیب می‌توان از رمزنگاری پیشرفته‌ای در سطح جهانی برای ایمن نگه داشتن موارد مهم و خصوصی بهره گرفت. در این مقاله به بررسی روش استفاده از gpg برای کار با کلیدها و همچنین رمزگذاری و رمزگشایی فایل‌ها می‌پردازیم.

997696

GnuPrivacy Guard که به اختصار GPG نامیده می‌شو،د امکان رمزگذاری فایل‌ها را طوری در اختیار ما قرار داده است که تنها گیرنده مورد نظر ما بتواند آن‌ها را رمزگشایی بکند. GPG با استاندارد OpenPGP کامپایل می‌شود. این استاندارد روی برنامه‌ای به نام Pretty Good Privacy یا به اختصار PGP مدل‌سازی شده است. این برنامه در سال 1991 از سوی «فیل زیمرمان» (Phil Zimerman) ارائه شده است.

GPG از ایده دو کلید رمزنگاری برای هر فرد استفاده می‌کند. هر فرد یک کلید خصوصی و یک کلید عمومی دارد. کلید عمومی می‌تواند چیزی را که با استفاده از کلید خصوصی رمزنگاری شده، رمزگشایی کند.

برای ارسال امن فایل‌ها باید آن را با کلید خصوصی خودتان و کلید عمومی گیرنده رمزگذاری کنید. گیرنده برای رمزگشایی فایل به کلید خصوصی خودش و کلید عمومی شما نیاز دارد.

بدین ترتیب متوجه می‌شویم که کلید عمومی باید به اشتراک گذارده شود. در واقع شما برای رمزگذاری فایل به کلید عمومی گیرنده فایل نیاز دارید و گیرنده نیز برای رمزگشایی به کلید عمومی شما نیاز دارد. این اشتراک کلید عمومی خطری ندارد، چون چنان که از نامش برمی‌آید، این کلید، عمومی است. در واقع به همین منظور برخی سرورهای کلید عمومی راه‌اندازی شده‌اند که در این مقاله آن‌ها را معرفی خواهیم کرد. کلیدهای خصوصی باید در جای امنی نگهداری شوند. اگر کلید عمومی شما در یک دامنه عمومی باشد، در این صورت کلید خصوصی باید در جای مخفی و امنی حفظ شود.

مراحلی که برای راه‌اندازی GPG مورد نیاز هستند، بسیار بیشتر از مراحل مورد نیاز جهت استفاده از آن هستند، اما خوشبختانه این مراحل راه‌اندازی تنها یک بار اجرا می شوند.

تولید کلیدها

دستور gpg روی همه توزیع‌های لینوکسی که ما در این راهنما بررسی کردیم، شامل اوبونتو، فدورا و منجارو نصب شده است.

برای استفاده از GPG نیازی به آدرس ایمیل نیست. شما می‌توانید فایل‌ها را رمزنگاری کرده و امکان دانلود آن‌ها را توسط سایرین فراهم آورید یا اینکه به صورت کلی فایل‌های رمزنگاری شده را به شکل فیزیکی در اختیار مخاطب خود قرار دهید. البته نباید از خاطر برد به کلیدهایی که ایجاد می‌کنید باید یک آدرس ایمیل اختصاص دهید و به این منظور لازم است تا آدرس ایمیلی را در نظر بگیرید و در مواقع لازم از آن استفاده کنید.

در ادامه دستور مورد نیاز برای تولید کلیدها را مشاهده می‌کنید. گزینه full-generate-key-- کلیدهای شما را در یک «نشست تعاملی» (interactive session) با پنجره ترمینال تولید می‌کند. همچنین از شما یک «عبارت عبور» (passphrase) پرسیده می‌شود. شما باید اطمینان پیدا کنید که این عبارت عبور را که معرفی می‌کنید به خاطر سپرده‌اید. به این منظور استفاده از سه یا چهار کلمه که با استفاده از علائم نگارشی به هم اتصال یافته‌اند، مناسب خواهد بود.

gpg --full-generate-key

gpg

از شما خواسته می‌شود که یک نوع رمزگذاری را از منو انتخاب کنید. به طور کلی بهتر است type 1 را انتخاب کرده و اینتر را بزنید. همچنین باید «طول بیت» (bit-length) را نیز برای کلیدهای رمزگذاری انتخاب کنید. با زدن کلید اینتر مقدار پیش‌فرض پذیرفته می‌شود.

gpg

در ادامه طول عمر کلید را نیز ذکر می‌کنید. اگر می‌خواهید این سیستم را تست کنید، بهتر است طول مدت کوتاهی، برای نمونه 5 روز را قید کنید. اگر قصد دارید این کلید را حفظ کنید، باید مدت طولانی‌تری مثلاً یک سال (1y) را برای آن وارد نمایید. بدین ترتیب این کلید به مدت 12 ماه حفظ می‌شود و از این رو باید پس از یک سال آن را تجدید بکنید. انتخاب خود را با زدن کاراکتر y تأیید کنید.

شما باید نام و نشانی ایمیل را وارد کنید. در صورت تمایل، می‌توانید توضیحی نیز درج کنید.

gpg

در ادامه تقاضا می‌شود که «عبارت عبور» (Passphrase) خود را وارد کنید. شما هر زمان که با کلیدها کار می‌کنید به این عبارت عبور نیاز خواهید داشت، بنابراین چیزی انتخاب کنید که مطمئن باشید در ذهنتان می‌ماند.

رمزگذاری فایل

پس از وارد کردن عبارت عبور، دکمه OK را بزنید. هر زمان که با gpg کار می‌کنید، این پنجره را خواهید دید، پس مطمئن شوید که عبارت عبور را به خاطر می‌سپارید.

در این زمان تولید کلید انجام می‌یابد و شما به اعلان فرمان بازمی‌گردید.

gpg در لینوکس

تولید یک گواهی ابطال

اگر کلید خصوصی‌تان برای افراد دیگر افشا شده است، باید کلیدهای قدیمی را از هویت خود جدا کنید تا بتوانید کلیدهای جدیدی بسازید. به این منظور به یک گواهی ابطال نیاز دارید. ما در ادامه این کار را انجام می‌دهیم و آن را در جای امنی نگه‌داری می‌کنیم.

برای ساخت گواهی ابطال باید گزینه output-- به همراه نام فایل گواهی که می‌خواهید ایجاد کنید را وارد نمایید. گزینه gen-revoke-- موجب می‌شود که gpg گواهی ابطال را بسازد. در این زمان باید نشانی ایمیلی را که در زمان تولید کلیدها وارد کرده بودید نیز ارائه نمایید.

gpg --output ~/revocation.crt --gen-revoke dave-geek@protonmail.com

gpg در لینوکس

از شما خواسته می‌شود که تمایل به تولید گواهی را تأیید کنید. کاراکتر y را وارد کرده و اینتر کنید. در ادامه دلیل تولید این گواهی از شما پرسیده می‌شود. از آنجا که این کار را قبل از زمان انقضای کلید اجرا می‌کنیم و دلیل خاصی نداریم، کلید 1 را برای رد کردن این مرحله وارد کرده و در ادامه کلید اینتر را می‌زنیم. در صورت تمایل می‌توانید یک توضیح نیز وارد کنید. دو بار دیگر اینتر را بزنید تا توضیح به پایان برسد. سپس از شما خواسته می‌شود که تنظیمات را تأیید کنید و باید کاراکتر y را وارد کرده و کلید اینتر را فشار دهید.

gpg در لینوکس

بدین ترتیب گواهی تولید می‌شود. پیامی را مشاهده می‌کنید که ضرورت امن نگاه داشتن این گواهی را به شما یادآوری می‌کند.

در این پیام از شخصی به نام Mallory یاد شده است. از سالیان قبل در مباحث رمزنگاری از نام دو فرد به نام «باب» و «آلیس» که با هم ارتباط دارند استفاده می‌شود. شخصیت‌های دیگری نیز مانند Eve که شنود می‌کند و Mallory که مهاجم خرابکار است وجود دارند.

اینک تنها چیزی که لازم داریم این است که گواهی را در جای امن و مطمئنی نگهداری کنیم. بدین منظور دست‌کم باید همه مجوزهای دسترسی را به جز آن‌ها که متعلق به خودمان است از گواهی حذف کنیم:

chmod 600 ~/revocation.crt

gpg در لینوکس

با دستور ls مجوزهای دسترسی را بررسی می‌کنیم:

ls –l

gpg در لینوکس

اینک هیچ کس جز مالک فایل یعنی ما نمی‌تواند هیچ کاری با فایل انجام دهد.

ایمپورت کردن کلید عمومی فرد دیگر

برای رمزنگاری پیام به صورتی که فرد دیگری بتواند آن را رمزگشایی کند، باید کلید عمومی او را داشته باشیم. اگر در فایلی یک کلید عمومی به شما داده شده باشد، می‌توانید آن را با دستور زیر ایمپورت کنید. در این مثال فایل کلید به نام mary-geek.key است:

gpg --import mary-geek.key

gpg در لینوکس

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

gpg در لینوکس

همچنین این احتمال وجود دارد که فردی که به کلیدش نیاز دارید، آن را روی یک سرور عمومی آپلود کرده باشد. این سرورها کلیدهای عمومی افراد سراسر دنیا را نگهداری می‌کنند. سرورهای کلید به صورت دوره‌ای با یکدیگر همگام‌سازی می‌شوند تا کلیدها به صورت سراسری در اختیار همه قرار داشته باشند.

سرور کلید عمومی MIT یک سرور کلید محبوب است که به صورت منظم به‌روزرسانی می‌شود، بنابراین جستجو در آنجا می‌تواند مفید باشد. اگر فردی اخیراً کلید خود را آپلود کرده باشد، ممکن است چند روز طول بکشد که بتوانید آن را مشاهده کنید.

گزینه keyserver-- باید به همراه نام سرور کلیدی که می‌خواهید جستجو کنید استفاده شود. گزینه search-keys-- به همراه نام فردی که به دنبال کلیدش هستید یا نشانی ایمیل وی ارائه شود. ما از این نشانی ایمیل استفاده می‌کنیم:

gpg --keyserver pgp.mit.edu --search-keys mary-geek@protonmail.com

gpg در لینوکس

موارد تطبیق یافته به صورت شماره بندی شده نمایش پیدا می‌کنند. برای ایمپورت کردن یک کلید باید شماره مربوطه را وارد کرده و اینتر را بزنید. در این مثال، یک مورد تطبیق وجود دارد و از این رو شماره 1 را زده و اینتر را می‌زنیم.

gpg

بدین ترتیب کلید ایمپورت می‌شود و نام و نشانی ایمیل مرتبط با کلید برای ما نمایش می‌یابد.

تأیید و امضا کردن یک کلید

اگر یک فایل کلید عمومی از سوی فردی که می‌شناسید در اختیار شما قرار گرفته است، می‌توانید مطمئن باشید که کلید متعلق به خود اوست. اما اگر آن را از یک سرور کلید عمومی دریافت کرده باشید، ممکن است لازم باشد آن را مورد بررسی قرار دهید تا مطمئن شوید که متعلق به فرد مورد نظر شما است.

گزینه fingerprint-- موجب می‌شود که gpg دنباله کوتاهی از ده مجموعه از چهار کاراکتر هگزادسیمال تولید کند. می‌توانید از فرد مزبور بخواهید که «اثر انگشت» (fingerprint) کلیدش را برای شما ارسال کند. سپس می‌توانید از گزینه fingerprint-- برای تولید همین دنباله اثر انگشت کاراکترهای هگزادسیمال و مقایسه آن‌ها بهره بگیرید. اگر این دو مطابقت داشتند، می‌توانید مطمئن باشید که کلید متعلق به آن فرد است.

gpg --fingerprint mary-geek@protonmail.com

gpg در لینوکس

چنان که می‌بینید اثر انگشت تولید شده است.

gpg در لینوکس

زمانی که مطمئن شدید کلید صحیح و متعلق به فردی است که باید باشد می‌توانید آن را امضا کنید. اگر این کار را نکنید همچنان خواهید توانست پیام‌های دریافتی آن فرد را رمزگشایی و پیام‌های ارسالی به او را رمزگذاری کنید، اما gpg هر بار از شما در مورد اطمینانتان برای انجام کار سؤال می‌پرسد، چون کلید امضا نشده است. ما از گزینه sign-key-- استفاده می‌کنیم و نشانی ایمیل فردی که کلید متعلق به اوست را ارائه می‌کنیم تا gpg بداند که کلید امضا شده است.

gpg --sign-key mary-geek@protonmail.com

gpg در لینوکس

بدین ترتیب اطلاعاتی در مورد کلید و آن فرد مشاهده می‌کنید و از شما خواسته می‌شود که تأیید کنید واقعاً می‌خواهید کلید را امضا کنید. با زدن کلید y و اینتر کردن کلید را امضا کنید.

gpg در لینوکس

اشتراک کلید عمومی

برای به اشتراک گذاردن کلیدتان در قالب یک فایل باید آن را از key store محلی gpg اکسپورت کنیم. به این منظور از گزینه export-- استفاده می‌کنیم که باید به همراه نشانی ایمیل که برای تولید کلید استفاده شده ارائه شود. گزینه output-- را باید به همراه نام فایلی که می‌خواهید کلید به آن اکسپورت شود وارد کنید. گزینه armor-- به gpg اعلام می‌کند که خروجی ASCII را به جای فایل باینری تولید کند.

gpg --output ~/dave-geek.key --armor --export dave-geek@protonmail.com

gpg

ما با استفاده از less می‌توانیم به درون فایل کلید نگاه کنیم.

less dave-geek.key

gpg در لینوکس

کلید به صورت زیر است:

gpg در لینوکس

شما می‌توانید کلید عمومی خود را روی یک سرور کلید عمومی نیز به اشتراک بگذارید. گزینه send-keys-- کلید را به keyserver ارسال می‌کند. گزینه keyserver-- باید قبل از آدرس وب سرور کلید عمومی بیاید. برای شناسایی کلیدی که می‌خواهید ارسال کنید، باید اثر انگشت کلید در خط فرمان ارائه شود. توجه کنید که بین مجموعه‌های چهار کاراکتری هیچ فاصله‌ای وجود ندارد.

نکته: با استفاده از گزینه fingerprint-- می‌توانید اثر انگشت کلید خود را ببینید.

gpg --send-keys --keyserver pgp.mit.edu 31A4E3BE6C022830A804DA0EE9E4D6D0F64EEED4

gpg در لینوکس

در ادامه اطلاعاتی در مورد ارسال کلید مشاهده می‌کنید.

gpg در لینوکس

رمزگذاری فایل‌ها

در نهایت اکنون ما آماده رمزگذاری فایل و ارسال آن به Mary هستیم. این فایل Raven.txt نام دارد. گزینه encrypt-- به gpg اعلام می‌کند که باید فایل را رمزگذاری کند و گزینه sign-- نیز بیان می‌کند که فایل را با جزییات شما امضا کند. گزینه armor-- به gpg اعلام می‌کند که یک فایل ASCII تولید کند. گزینه r- باید به همراه نشانی ایمیل فردی که فایل به وی ارسال می‌شود ارائه شود:

gpg --encrypt --sign --armor -r mary-geek@protonmail.com

gpg

فایل با همان نام اصلی ایجاد شده است، اما پسوند asc. به نام فایل اضافه شده است. در ادامه نگاهی به داخل آن می‌اندازیم.

less Raven.txt.asc

gpg در لینوکس

فایل کاملاً ناخوانا است و تنها از سوی فردی که کلید عمومی شما و کلید خصوصی Mary را دارد، می‌تواند رمزگشایی شود. قاعدتاً تنها فردی که هر دو کلید را دارد باید Mary باشد.

gpg در لینوکس

اینک می‌توانیم فایل را به Mary ارسال کنیم و مطمئن باشیم که هیچ کس دیگری نمی‌تواند آن را رمزگشایی کند.

رمزگشایی فایل‌ها

اینک فرض کنید Mary یک پاسخ ارسال کرده است. این پاسخ یک فایل رمزگذاری شده است که پسوند asc. دارد. ما می‌توانیم به سادگی با استفاده از گزینه decrypt-- آن را رمزگشایی کنیم. همچنین خروجی آن را در فایل دیگری به نام plain.txt ذخیره می‌کنیم. توجه داشته باشید که ما به gpg اعلام نکرده‌ایم که فایل از چه کسی رسیده است. gpg می‌تواند این مسئله را از روی محتوای فایل رمزگذاری شده تشخیص دهد.

gpg --decrypt coded.asc > plain.txt

gpg

در ادامه نگاهی به فال plain.txt داریم:

less plain.txt

رمزگذاری فایل

فایل با موفقیت رمزگشایی شده است.

gpg

رفرش کردن کلیدها

شما می‌توانید به صورت دوره‌ای از gpg بخواهید که کلیدهای خود را با کلیدهای سرور کلید عمومی مطابقت دهد و هر کدام که تغییر یافته‌اند را رفرش کند. این کار بهتر است هر چند ماه یک بار و یا زمانی که کلید را از یک مخاطب جدید دریافت می‌کنید صورت بگیرد.

گزینه refresh-keys-- موجب می‌شود که gpg این بررسی را اجرا کند. گزینه keyserver-- باید به همراه سرور کلید انتخابی مورد استفاده قرار گیرد. با توجه به این که کلیدها بین سرورهای کلید عمومی مبادله می‌شوند، دیگر مهم نیست که از کدام سرور استفاده می‌کنید.

gpg --keyserver pgp.mit.edu --refresh-keys

رمزگذاری فایل

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

gpg

اهمیت امنیت حریم خصوصی

در عصر حاضر روزی نیست که شاهد انتشار خبری در خصوص حریم خصوصی نباشیم. فرقی ندارد که چه دلیلی برای امن و خصوصی نگه داشتن اطلاعات خود دارید، چون در هر حال gpg ابزار ساده‌ای برای اعمال رمزگذاری قدرتمند روی فایل‌ها و پیام‌های ارتباطی شما محسوب می‌شود.

روش‌های دیگری نیز برای استفاده از gpg وجود دارند. شما می‌توانید یکی از افزونه‌های Thunderbird به نام Enigmail را نصب کنید. این افزونه روی پیکربندی gpg سوار می‌شود و امکان رمزگذاری پیام‌های ایمیل را درون تاندربرد فراهم می‌سازد.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۴ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
howtogeek
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *