همین اول بگم که اینجا قصد دارم فقط یه مقدمه و بطور خلاصه درمورد GPG بگم و در ادامه سعی میکنم که دستوراتی رو که در پایین میگم توضیح بدم، یکم صبور باشین، این پست تا چند روز آینده تکمیل میشه 🙂 خب بریم سراغ اصل مطلب: GPG یک الگوریتم رمز گذاری شخصی حساب میشه، در حقیقت PGP اون الگوریتمه، و ما از برنامه آزاد GPG برای مدیریتش استفاده میکنیم. GnuPrivacy Guard که به اختصار GPG نامیده میشه امکان رمزگذاری فایلها را طوری در اختیار ما قرار میده که تنها گیرنده مورد نظر ما بتونه اونها رو رمزگشایی بکنه. GPG با استاندارد OpenPGP کامپایل میشه، این استاندارد روی برنامهای به نام Pretty Good Privacy یا به اختصار PGP مدلسازی شده. این برنامه در سال ۱۹۹۱ از سوی «فیل زیمرمان» (Phil Zimerman) ارائه شده.
خب GPG از ایده دو کلید رمزنگاری برای هر فرد استفاده میکنه، هر فرد یک کلید خصوصی و یک کلید عمومی داره، کلید عمومی میتونه چیزی رو که با استفاده از کلید خصوصی رمزنگاری شده، رمزگشایی کنه
برای ارسال امن فایلها باید آن را با کلید خصوصی خودتون و کلید عمومی گیرنده رمزگذاری کنید. گیرنده برای رمزگشایی فایل به کلید خصوصی خودش و کلید عمومی شما نیاز داره. بدین ترتیب متوجه میشیم که کلید عمومی باید اشتراک به گذاشته بشه، در واقع شما برای رمزگذاری فایل به کلید عمومی گیرنده فایل نیاز دارید و گیرنده نیز برای رمزگشایی به کلید عمومی شما نیاز داره، این اشتراک کلید عمومی خطری نداره، چون چنان که از اسمش مشخصه این کلید، عمومیه. در واقع به همین منظور برخی سرورهای کلید عمومی راهاندازی شدهاند. نکتهی مهم اینجاست کلیدهای خصوصی باید در جای امنی نگهداری بشن، اگر کلید عمومی شما در یک دامنه عمومی باشه، در این صورت کلید خصوصی باید در جای مخفی و امنی حفظ بشه، خب بریم سراغ بحث اصلی، فقط توجه داشته باشید که gpg بصورت پیش فرض روی تمام توزیع های گنولینوکسی نصبه
۱- ساخت کلید
در قدم اول باید کلید رو بسازیم، برای این کار دستور زیر رو بزنید و می بینین که اول باید الگوریتم رو انتخاب کنید که همون RSA پیش فرض رو انتخاب کنید(البته انتخاب با شماست!) بعد از اون اندازه کلید RSA رو باید مشخص کنین که پیش فرض ۲۰۴۸ است اما شما ۴۰۹۸ رو انتخاب کنید چون هرچی بلندتر باشه، شکستن اون سخت تره 🙂 بعد از شما می پرسه که این کلید تا کی اعتبار داشته باشه که با نوشتن عدد ۰ بهش می گیم که تا همیشه معتبر باشه و هیچوقت اکسپایر نشه، و مرحله بعد اسم و ایمیل خودتون رو وارد کنید (دقت کنید که این ایمیل و اسم رو همه می بینن و مهمه که درست وارد کنید) و آخرسر هم ازتون رمز می خواد که اونم وارد می کنید، به همین سادگی
1 |
gpg --full-gen-key |
۲- ساخت Revoking Key
گاهی ممکنه کلید خصوصیتون رو کسی بدست بیاره یا هر اتفاق دیگه ای، پس نیازه که از Revocation certification استفاده کنید، پس با دستور زیر و دادن اسم فایل و ایمیلتون این کار رو انجام میدین و فایل رو داخل بالشت میذارید شب ها زیر سرتون که کسی بهش دست نزنه
1 |
gpg --gen-revoke --armor --output=revocation_certificate.asc arman@linpa.net |
۳- دیدن کلید عمومی
برای دیدن لیست کلیدهای عمومی از دستور زیر استفاده کنید:
1 |
gpg --list-keys |
۴- دیدن کلید خصوصی
همینطور برای دیدن لیست کلید خصوصی:
1 |
gpg --list-secret-keys |
۵- خروجی گرفتن از کلید عمومی(Public Key)
می تونید کلید عمومیتون رو داخل یک فایل داشته باشید، برای اینکار از آپشن output استفاده می کنید و بعد اون اسم یه فایل رو برای ذخیره کلید عمومیتون میدید ( مثلن public.key)
1 |
gpg --output public.key --armor --export arman@linpa.net |
۶- خروجی گرفتن از کلید خصوصی(Private Key)
برای کلید خصوصی هم مثل کلید عمومی که در بالا گفتم می تونید با دستور زیر اون رو در فایل private.key داشته باشید:
1 |
gpg --output private.key --armor --export-secret-key arman@linpa.net |
۷- وارد کردن(import) کلید عمومی در سیستم
برای اینکه کلید عمومی که ساختید رو وارد سیستمتون کنید باید از گزینه import و بعد اون اسم فایلی که کلید عمومیتون در اون قرار داره استفاده کنید:
1 |
gpg --import public.key |
۸- وارد کردن(import) کلید خصوصی به سیستم
مثل مرحله قبل همون کار رو برای کلید خصوصی انجام بدید:
1 |
gpg --allow-secret-key-import --import private.key |
۹- ارسال کلید عمومی به keyserver
معمولن سرورهایی هستند که کلیدهای عمومی رو نگه داری می کنند که بهشون keyserver میگن مثلن سرور miit که شما می تونید کلید عمومی خودتون رو برای این سرورها ارسال کنید:
1 |
gpg --send-keys arman@linpa.net |
۱۰- دیدن جزئیات یک کلید در keyserver بدون import کردن آن
برای اینکه بتونید تمام جزئیات یک کلید عمومی رو ببینید اما لازم ندونید اون رو وارد سیستم کنید، میتونید از دستور زیر استفاده کنید:
1 |
gpg --search-keys arman@linpa.net |
۱۱- وارد کردن(import) یک کلید از keyserver در سیستم
اینم که دیگه مشخصه، فقط بدونید که بعد از سوئیچ –rcv-keys میتونید ایمیل یا کلید عمومی که دارید رو وارد کنید:
1 |
gpg --recv-keys arman@linpa.net |
۱۲- رمزنگاری یک فایل
حالا ما اینهمه کلید عمومی و خصوصی ساختیم که چی بشه! اینجا شما می تونید هر دیتایی که دارید رو رمزنگاری کنید مثلن برای نمونه من یک فایل متنی به اسم test.txt دارم که اون رو انکریپت می کنم(توجه کنید که شما باید در دستور زیر ایمیلی که در قسمت ۱ برای ساخت کلید دادید رو وارد کنید):
1 |
gpg --recipient arman@linpa.net --encrypt test.txt |
۱۳- رمزگشایی یک فایل
و برای دیکریپت کردن یک فایل هم می تونید از دستور زیر استفاده کنید، دقت کنید که اگر کسی فایل انکریپت شده براتون فرستاد شما باید کلید عمومی شخص مقابل رو ازش بگیرید و import کنید تا بتونید اون رو دیکریپت کنید:
1 |
gpg --output baz.txt --decrypt test.txt.gpg |
۱۴- حذف کلید عمومی
برای حذف کردن کلید عمومیتون می تونید از دستور زیر استفاده کنید:
1 |
gpg --delete-key "Real Name" |
۱۵- حذف کلید خصوصی
همینطور برای حذف کلید خصوصی دستور زیر استفاده میشه:
1 |
gpg --delete-secret-key "Real Name" |
۱۶- جنریت کردن Fingerprint
گاهی مواقع هم نیاز میشه که شما Fingerprint رو لازم داشته باشید که برای بدست آوردنش:
1 |
gpg --fingerprint |
در نهایت هر قسمتی اگر مشکل داشت و یا هر سوال، پیشنهاد یا انتقادی درمورد این موضوع داشتید، همینجا با من درمیون بذارید 🙂
لید عمومی میتونه چیزی رو که با استفاده از کلید خصوصی رمزنگاری شده، رمزگشایی کنه
سلام ممنونم بابت مطالب خوبتون
به نظر میرسه مورد ۱۳ نیاز باشه که اصلاح بشه. وقتی ی نفر برای ما ی فایل رمز شده میفرسته، با کلید عمومی ما رمزش کرده و ما با کلید خصوصی خودمون بازش میکنیم و بلعکس.
عالی بود هرچند بعضی از دستورات طولانی شده و سخته میشه به خاطر سپرد. ؛)
مدتی بود مشکل داشتم با ساخت کلید خصوص برای گیت هاب انجام میدادم ولی خوب نمیدونستم داستان چیه.
تشکر
عالی بود،ممنون از نوشتن این متن.
سلام
بازهم یک متن زیبا ومفید و پر مغز دست درد نکنه ولی اون C و Kernel رو هم ادامه بده که از خوندنشون حقیقتا استفاده کردم کم نظیر بودن برای اینکه خودت هم استفاده کنی دونات بذار اگر اونها رو مثل قبل خوب و با موشکافی ادامه بدی عده ای هستن برای فرستادن دونات