کریپتوگرافی برای همه
وقتی ما از سرویسهای ایمیل معمولی مانند گوگل یا یاهو استفاده میکنیم، پیغامهای ما محرمانه است یا نه؟ آیا کسی در بین کانال ارتباطی ما با گیرنده پیام میتواند پیام را بخواند یا پیامی را جعل کند و به اسم ما برای گیرنده بفرستد؟ آیا راهی هست که به طور مطمئن بتوان پیغامی را رمزنگاری کرد؟ در این نوشته کوتاه سعی میشود به این پرسشها پاسخ داده شود.
نوشتن پیغامهای مطمئن یکی از مسائلی است که هرکسی در دنیای دیجیتال به آن فکر میکند. وقتی ما از سرویسهای ایمیل معمولی مانند گوگل یا یاهو استفاده میکنیم، پیغامهای ما محرمانه است یا نه؟ آیا کسی در بین کانال ارتباطی ما با گیرنده پیام میتواند پیام را بخواند یا پیامی را جعل کند و به اسم ما برای گیرنده بفرستد؟ آیا راهی هست که به طور مطمئن بتوان پیغامی را رمزنگاری کرد؟ آیا کریپتوگرافی(رمزنگاری) پیام سخت و زمانبر است، از همه برمیآید یا دانش امنیت کامیپوتر خاصی میخواهد؟ اینها پرسشهایی است که احتمالا شما هم از خود پرسیدهاید.
در این نوشته کوتاه سعی میشود به این پرسشها پاسخ داده شود و راه درست، بی دردسر و قابل دسترسی برای همگان توضیح داده شود. به علت ناتوانی من در ترجمه کلمات حوزه رمزنگاری و بخشی هم به علت تشویق خواننده به جستجوی انگلیسی این کلمات و آشنا شدن بیشتر با امنیت در شبکههای کامپیوتری، ترجمه تمام کلمات تخصصی این حوزه به فارسی در این نوشته رعایت نشده است. ضمنا تمامی مضامین توضیح داده شده بسیار سادهسازی شده است.
سناریویی را در نظر بگیرید که میخواهید یک پیغام بسیار خصوصی را برای گیرندهای بفرستید. شما روزنامهنگاری هستید که از فسادمالی در پاناما آگاه شدهاید و میخواهید این پیغام را به دبیر سرویس خبر بفرستید. شما میخواهید فقط شخص خانم دبیر سرویس پیام را ببیند و حتی آقای منشی ایشان که به ایمیل کاری دبیر دسترسی دارد، نتواند این ایمیل را بخواند. یا شما برای شرکت هواپیماسازی بویینگ کار می کنید، جایی که مجبورید تمام اطلاعات رد و بدل شده را به علت حفظ امنیت پروازهای هوایی، اینکریپت کنید. یا فرض کنید شما با سازمان سیاسی مطبوعتان علیه سیاستهای دولت مستقر مبارزه میکنید و میخواهید یک پیغام خصوصی را برای همگروهیهایتان بفرستید. در تمام این سناریوها یا حتی سناریوهای بسیار سادهتر، شما ابزاری احتیاج دارید که که بتوانید یک نوشته، عکس، فیلم، و … را اینکریپت کنید و آنرا بر کانال ارتباطی که در مثال ما ایمیل است بفرستید. در این حالت حتی اگر کسی در بین کانال ارتباطی پیغام شما را ببیند و بخواند متوجه نمی شود مطلب شما محتوی چه مطلبی ست. این مثال را در نظر بگیرید که پیام اصلی این است: «این یک ایمیل است». اگر ما این را به این فرم بنویسم پیام اصلی را اینترکریپت کرده ایم: «باو اگ بانام بشث». کار سادهای که ما اینجا کردیم این است که تمام حروف پیغام را در جدول الفبا یک حرف به جلو بردهایم. این در واقع یکی از اولین انواع رمزنگاری است که اولین بار تقریبا ۵۰ سال قبل از میلاد مسیح توسط جولیوس سزار برای فرستادن پیام استفاده میشد. مشخص است که این روش امروزه جوابگوی نیازهای ما نیست.
منظور از رمزنگاری نامتقارن یا اینکریپشن توسط کلیدهای نامتقارن این است که اینکریپشن (قفل کردن یک پیغام) با کلید «آ» (کلید عمومی) انجام میشود و دیکریپتشن (باز کردن قفل پیغام) توسط کلید «ب» (کلید خصوصی) انجام میشود.
روشهایی که ما امروزه استفاده میکنیم به طور کلی به دو گروه رمزنگاری متقارن و یا نامتقارن تقسیم میشوند. من در این نوشته به رمزنگاری متقارن نمیپردازم و در عوض با توضیح الگریتم رمزنگاری نامتقارن که بیشتر در رمزنگاری ایمیل استفاده میشود، سعی میکنم تصویر جامعتری از این نوع رمزنگاری بدهم.
منظور از رمزنگاری نامتقارن یا اینکریپشن توسط کلیدهای نامتقارن این است که اینکریپشن (قفل کردن یک پیغام) با کلید «آ» (کلید عمومی) انجام میشود و دیکریپتشن (باز کردن قفل پیغام) توسط کلید «ب» (کلید خصوصی) انجام میشود. پایه این نوع رمزنگاری بر همین جفت کلید استوار است که مکمل همدیگرند.
اینکه چطور دو کلید میتوانند مکمل هم باشند و الگریتمهای تولید جفت کلیدها نیاز به دانش ریاضی و رمزنگاری دارد. برای دانستن بیشتر در این مورد کتاب «رمزنگاری و امنیت شبکه» از ویلیام استالینگ پیشنهاد میشود.
نکته اصلی اما برای ما این است که وقتی «دانا» میخواهد پیغامی از «توانا» بگیرد، ابتدا باید کلید عمومی خود را چیزی شبیه «sfvdg564GGRDsdvxbtdffvdv» است را برای «توانا» بفرستد و «توانا» پیغام خود را توسط کلید عمومی «دانا» رمز کند و برایش بفرستد. وقتی «دانا» پیغام را گرفت، آن را توسط کلید خصوصی خود که چیزی شبیه «adfsdvfd€€%&€%434t34gerdf» است، باز می کند و از محتوای نامه باخبر می شود. پس خیلی مهم است که «دانا» کلید خصوصی خود را جایی امن نگه داری کند چون هر کسی کلید خصوصی دانا را داشته باشد میتواند پیغامهایش را رمزگشایی کند.
معمولا چون بهخاطرسپاری کلید خصوصی کار آسانی نیست، کلید خصوصی توسط یک رمز که «دانا» میداند و چیزی شبیه «Password123» است، رمز میشود و روی هارددیسک (جاکلیدی) گذاشته میشود. پس موقع باز کردن پیغام توسط «دانا» کامپیوتر از او رمز را میپرسد، توسط آن کلید خصوصی را از جاکلیدی در میآورد و توسط کلید خصوصی پیغام را رمزگشایی میکند.
ه تازگی یک وبسایت به نام «کیبیس» keybase.io تمام این پروسه را کاملا اتوماتیک و ساده کرده است. تمام کاری که باید انجام دهید این است که یک حساب کاربری در این وبسایت باز کنید.
مسئلهای که تا اینجا مطرح شد در واقع برای تضمین «محرمانه» بودن پیغام بود. مسئله دیگری که در کریپتوگرافی مطرح است، مسئله «راستی یا اعتماد» است. به این مفهوم که، «دانا» پیغام رمزشدهای را گرفته، از کجا مطمئن باشد که «توانا» آنرا برایش فرستاده؟ قطعا تنها اینکه پیغام از آدرس ایمیل «توانا» آمده نمی تواند دلیلی باشد که «توانا» آنرا فرستاده چون ممکن است آدرس ایمیل او هک شده باشد و یا ممکن است «هکر» آنرا در میانه کاناله ارتباطی شما تغییر داده باشد، و … . پس «دانا» از «توانا» میخواهد که پیغام قبل از فرستادن با کلید خصوصی «توانا» امضا شده باشد. این امضا توسط کلید عمومی «توانا» که در اختیار «دانا» است قابل راستیآزمایی است.
همانطور که مشاهده میکنید، مدیریت این کلیدها حتی در این مثال بسیار بسیار سادهسازی شده، کار آسانی نیست و به همین دلیل رمزنگاری کاری برای «کامپیوتربلدها» و «خورههای تکنولوژی» جلوه میکرده است. اما این پایان داستان نیست.
به تازگی یک وبسایت به نام «کیبیس» keybase.io تمام این پروسه را کاملا اتوماتیک و ساده کرده است. تمام کاری که باید انجام دهید این است که یک حساب کاربری در این وبسایت باز کنید. در مثال ما «دانا» و «توانا» هر کدام حساب کاربری این سایت باز میکند و هر کدام یک صفحه اینترنتی میگیرند، چیزی شبیه keybase.io/dana
من برای مثال صفحه «ماکس کروهن» یکی از بنیانگذاران کیبیس را اینجا میگذارم.
همانطور که می بینید ماکس با متصل کردن شبکههای اجتماعی متعددی به حساب کاربری خود، هویت خود را به اثبات میرساند. برای اینکه برای ماکس ایمیل رمزشده بفرستیم باید روی «پی جی پی اینکریپت» کلیک کنیم، و به این صفحه بیاییم:
و بعد از نوشتن پیغام، روی دکمه «اینکریپت» بزنیم و حتی قبل از زدن «ساین د مسیج» را ضربدر بزنیم که ماکس مطمئن باشد این توسط چه شخصی برایش فرستاده شده است. با کپی کردن پیغام رمزشده و ایمیلکردن آن میتوانیم مطمئن باشیم که تنها مکس میتواند پیغام ما را بخواند و ضمنا مطمئن باشد که من برایش پیغام را فرستادم. در همین صفحه اگر دیکریپت را بزنید به صفحهای میروید که میتوانید توسط کلید خصوصی خود پیغام رمزشدهای که برایتان فرستاده شده را رمزگشایی کنید.
سایت کیبیس ضمنا این امکان را میدهند که بتوانید یک اتاق خصوصی چت داشته باشید و مطمئن باشید که پیغامهای شما به جز اعضای گروه هیچ جا قابل خواندن و ردیابی نیست. این امکان فوقالعادهای ست که اولین بار است از طرف یک وبسایت به طور مجانی ارائه میشود. اضافه بر همه اینها، تمام پروژه اپن سورس است که عاملی حیاتی برای پروژههای حوزه امنیت کامپیوتری است چرا که هر علاقهمندی میتواند به پروژه کیبیس رفته، مطمئن شود که در پشت پرده این همه امکانات خوب، خبری از دزدی اطلاعات یا همکاری با سازمانهای امنیتی وجود ندارد. من همه کسانی که احساس میکنند باید ایمیل خصوصی را برای کسی بفرستند، تشویق میکنم از کریپتوگرافی استفاده کنند و آنرا به سادگی توسط کیبیس انجام دهند.