Menu

آشنایی با PGP و کدگذاری کلید عمومی

PGP مخفف Pretty Good Privacy است. این به معنای امنیت بسیار خوب است. اگر PGP درست مورد استفاده قرار گیرد، می تواند محتوای پیامهای شما، متنها و حتی فایلهایتان را از برنامه های پایشی قوی دولتها محافظت کند. وقتی ادوارد اسنودن می گوید که کدگذاری به خوبی کار می کند، منظورش PGP و نرم افزارهای مربوط به آن است. باید در نظر داشت که دزدیدن کلیدهای عمومی افراد خاص از روی کامپیوترهایشان توسط دولتها(از طریق دزدیدن کامپیوترها یا ارسال بدافزارها برای آنها یا حمله های فیزیکی به کامپیوترها) بی سابقه نیست. این کار، محافظت سیستم را از بین برده و حتی امکان خواندن ایمیلهای قدیمی را نیز فراهم می آورد. این کار را می توان با این مثال مقایسه کرد که شما یک قفل ضد سرقت روی در خانه تان نصب کنید، اما یک نفر در خیابان کلید شما را از جیبتان بدزدد، از روی آن کپی کرده و دزدکی آن را به جیبتان بازگرداند. بنابراین این سارق می تواند بدون اینکه قفل را بشکند، وارد خانه تان شود.

متاسفانه PGP در عین حال بسیار بد است چرا که در صورت استفاده،بسیار راحت شناسایی می شود. سیستم کدگذاری قدرتمندی که PGP از آن استفاده می کند-کدگذاری کلید عمومی– بسیار استادانه بوده و در هم شکستن آن نیز دشوار است. خود نرم افزار PGP از سال ۱۹۹۱ شکل گرفته است، بنابراین از نظر زمانی تقریبا همزمان با نخستین نسخه های Microsoft بوده و از آن زمان از نظر ظاهری نیز تغییر چندانی نکرده است.

خبر خوب آن است که در حال حاضر برنامه هایی در دسترس هستند که می توانند ظاهر قدیمی و طراحی از مد افتادۀ PGP را پنهان ساخته و استفاده از آن را ساده تر کنند، بویژه زمانی که برای کدگذاری و یا تصدیق یک ایمیل-که اصلی ترین کاربرد PGP است- به کار می رود. ما نیز راهنماهایی برای نصب و استفاده از این نرم افزار را در یکی دیگر از بخشهای این راهنما آورده ایم.

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

شرح استفاده از دو کلید

هنگامی که برای مبارزه با پایش از کدگذاری استفاده می کنیم، در واقع تلاش می کنیم تا این کار را انجام دهیم:

یک پیام واضح و قابل خواندن، نظیر “سلام مامان” را به پیامی کدگذاری شده تبدیل میکنیم که برای همه کسانی که آن را ببینند، غیر قابل خواندن و درک خواهد بود.( OhsieW5ge+osh1aehah6) این پیام کدگذاری شده را از طریق اینترنت- جایی که افراد بسیاری می توانند آن را بخوانند- ارسال می کنیم اما امید داریم که هیچ یک نتوانند آن را بفهمند. سپس، وقتی پیام به مقصد رسید، فقط و فقط مخاطب مورد نظر ما می تواند آن را به شکل پیام اصلی کدگشایی کند.

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

مخاطب چگونه از این کلید باخبر است؟ در اغلب مواقع، فرستنده پیش از ارسال پیام، کلید را به او داده است، با دستورالعملهایی از این قبیل: “حروف را آینه وار معکوس کنید” یا ” هر حرف را در نظر گرفته و حرف بعدی آن در ترتیب حروف الفبا انتخاب کنید”. با این وجود، در این استراتژی یک مشکل وجود دارد. اگر نگران این هستید که کسی در پیامهای کدگذاری شدۀ شما جاسوسی کند، چگونه مطمئن خواهید بود مکالمه ای که برای دادن کلید به مخاطبتان انجام می دهید، پایش نمی شود؟ اگر مهاجمتان کلید شما را برای کدگشایی پیام داشته باشد، دیگر فرستادن پیامی که به شکل استادانه کدگذاری شده باشد، محلی از اعراب نخواهد داشت. اگر راه محرمانه ای برای ارسال کلید کدگشایی خود دارید، چرا از همین راه برای ارسال پیامهای خود استفاده نمی کنید؟

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

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

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

نشانه های زمانی

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

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

چرا این مسئله سودمند است؟ در نگاه اول، بنظر نمی رسد ارسال پیام محرمانه با استفاده از کلید خصوصی ای که توسط همه ( یا دست کم هر کس که کلید عمومی شما را می داند) قابل شکستن است، فایده ای داشته باشد. اما فرض کنید من پیامی با این مضمون می نویسم: “قول میدهم ۱۰۰ دلار به آزول بدهم”، سپس با استفاده از کلید خصوصی خود، آن را به شکل پیامی محرمانه در می آورم. همه می توانند آن را کدگشایی کنند اما تنها یک نفر می تواند آن را نوشته باشد: کسی که کلید خصوصی مرا داشته باشد. اگر تمام تلاش خود را برای امن نگه داشتن کلید خصوصی ام کرده باشم، این بدان معناست که نویسنده و فرستندۀ پیام، فقط و فقط خود من هستم! در واقع با کدگذاری پیام با کلید خصوصی خودم، این اطمینان را ایجاد کرده ام که این پیام از جانب من ارسال شده است. بعبارت دیگر، این کار شبیه همان کاری است که ضمن امضا کردن یک نامه در دنیای واقعی انجام می دهیم.

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

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

PGP چگونه کار می کند؟

PGP بر مبنای ایجاد و استفاده از کلیدهای عمومی و خصوصی کار می کند. می توانید یک جفت کلید عمومی/خصوصی بسازید، کلید خصوصی خود را با ایجاد یک رمز، امن نگه دارید و از کلید عمومی و خصوصی تان برای کدگذاری و امضای پیامهایتان استفاده کنید. همچنین PGP این امکان را به شما می دهد که کلید عمومی دیگران را دانلود کرده و کلید عمومی خودتان را روی یک سرور کلید( که مخزنی برای نگهداری کلیدهاست و دیگران می توانند کلیدتان را از آنجا دانلود کنند) بارگذاری کنید. راهنمای ما برای نصب PGP را که نرم افزارهای متناسب با برنامه ایمیل شما را ارائه می دهد، بخوانید.

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

PGP پیشرفته: وب بر مبنای اعتماد

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

یک تهاجم موذیانۀ دیگر آن است که مهاجم بین دو نفری که بصورت آنلاین در حال مکالمه هستند قرار گرفته، کل مکالمه آنها را استراق سمع کرده و گاهاً پیامهای گمراه کنندۀ خود را وارد مکالمه می کند. به لطف طراحی اینترنت بعنوان سیستمی که پیامها را از کامپیوترها و بخشهای محرمانۀ زیادی عبور می دهد، این نوع از حمله کاملا امکان پذیر است. تحت چنین شرایطی( که حمله مرد میانی خوانده می شود)، مبادلۀ کلیدها بدون هیچ توافق قبلی بسیار خطرناک خواهد بود. “این کلید من است” درست مثل همان کسی است که ادعا می کند باراک اوباماست و فایل کلید عمومی خود را برای شما می فرستد. اما در مورد کسی که تا لحظۀ دادن کلید توسط شما صبر نکرده و مانع از رسیدن کلید باراک اوباما به شما می شود و کلید خودش را به جای آن به شما می دهد، چه می توان گفت؟

از کجا می توان ثابت کرد که یک کلید خاص، واقعا مربوط به یک شخص خاص است؟ یک راه این است که کلید را مستقیماً از خود آنها بگیرید. اما دغدغه این کار هم کمتر از دغدغه این نیست که کسی در حال مشاهدۀ کلید محرمانه تان باشد. بنابراین مردم معمولا وقتی کلیدهایشان را با هم مبادله می کنند که همدیگر را مستقیم ملاقات می کنند و این کار را بصورت محرمانه انجام می دهند.

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

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

وب بر مبنای اعتماد نیز چالشهای خود را دارد و سازمانهایی نظیر EFF در حال حاضر راه حلهای بهتری دارند. اما در حال حاضر، اگر به دنبال راهکار جایگزینی برای انتقال کلیدها به دیگران هستید، استفاده از وب بر مبنای اعتماد و سرور کلید عمومی بهترین گزینه ها هستند.

فراداده: آنچه که PGP نمی تواند انجام دهد.

هدف PGP، اطمینان از این امر است که محتوای یک پیام، محرمانه و واقعی است و کسی امکان مداخله در آن را ندارد. اما این تنها دغدغۀ امنیتی شما نیست. همانگونه که اشاره کردیم، اطلاعات مربوط به پیام شما نیز می تواند به اندازۀ محتوای آن افشا کننده باشد. اگر در حال تبادل پیامهای PGP با مخالفان شناخته شده در کشور خود هستید، ممکن است صرفاً بخاطر ارتباط با آنها در خطر باشید، حتی اگر پیامهایتان رمز گشایی نشده باشند. در واقع در برخی کشورها، صرفاً خودداری از کدگشایی پیامهای کدگذاری شده می تواند شما را راهی زندان کند.

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

لازم نیست چنین کاری بکنید. می توانید کلید عمومی PGP خود را در سکوت نگه داری کرده و آن را به کسانی بدهید که به آنها مطمئن هستید و از آنها بخواهید آن را روی سرور کلیدها بارگذاری نکنند. لازم نیست نام خود را پیوست کلیدتان کنید.

پنهان کردن اینکه با شخص خاصی ارتباط برقرار می کنید، دشوارتر است. یک راه این است که طرفین یک ارتباط از ایمیل آدرسهای گمنام و برای دسترسی به ایمیلهای خود از Tor استفاده کنند. در صورتی که هر دو طرف ایمیلهای خود را محرمانه نگه دارید و به هم ثابت کنید که در پیامهایتان جاسوسی انجام نمی گیرد، PGP مفید خواهد بود.