آشنایی با رمزنگاری کلید عمومی و خصوصی

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

رمزنگاری با کلید عمومی و خصوصی
رمزنگاری با کلید عمومی و خصوصی

قبل از اینکه وارداین بحث شویم لازم است به توضیح مختصری پیرامون رمزنگاری بپردازیم.

رمزنگاری

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

آشنایی با تاریخچه رمزنگاری

کلید عمومی و کلید خصوصی

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

کلید عمومی (Public Key)

کلید عمومی رشته‌ای از اعداد و حروف مختلف می‌باشد. این کلید یک کد رمزنگاری شده است که از جمله کاربردهای آن دریافت ارزهای دیجیتال مثل بیت کوین و راستی‌آزمایی امضای دیجیتال می‌باشد. اساس کلید عمومی از کلید خصوصی است! این عبارت به چه معناست؟ معنای این عبارت این است که اگر کلید عمومی را به دلایلی فراموش کردیم می‌توانیم آن را طی محاسباتی به وسیله الگوریتم‌های مختلف از دل کلید خصوصی تولید کنیم.

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

کلید خصوصی (Private Key)

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

رمزنگاری متقارن و نامتقارن

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

رمزنگاری نامتقارن

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

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

رمزنگاری متقارن

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

تاریخچه رمزنگاری

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

تاریخچه رمزنگاری
تاریخچه رمزنگاری

انسان‎ها از اولین روزهایی که پا به عرصه زمین گذاشتند، به دنبال برقراری ارتباط با یکدیگر بودند. آنها با کمک آواها و اصوات با یکدیگر ارتباط برقرار می‎کردند. همچنین با کمک گرفتن از نمادها(Symbol) و ترسیم نقش و نگارها، پیام‎هایی را برای آیندگان ثبت می‎کردند.

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

رمزنگاری و زبان‎های باستانی

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

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

در بین‎النهرین نیز از رمز برای مخفی نگهداشتن فرمول ساخت ظروف سفالی استفاده می‎شده است. عبری‎ها هم در نوشتن کتاب مقدس ارمیای نبی از نوعی رمز خاص که به ATBASH معروف است استفاده می‎کرده‎اند. این شثیوه رمزنگاری شباهت بسیاری به رمز جانشینی دارد.

یونانیان، اولّین گروهی بودند که برای رمزنگاری از کلید رمز بهره می‎بردند. آنها پاپیروس‎های خود را بر دور نواری با طول مشخص می‎پیچیدند و سپس پیام خود را بصورت افقی برروی آن می‎نوشتند. فقط کسی می توانست این پیام را بخواند که نواری با طول مشخص در اختیار می‎داشت(کلید رمز).

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

علم رمز در اعصار جدید

در سال 1587 میلادی ملکه اسکاتلند یک نامه رمز شده را برای یک شورش عظیم در دربار ملکه الیزابت تهیه کرد. امّا این نامه توسط توماس فلیپس وزیر دربار بریتانا کشف و رمزشکنی شد و خیانت ملکه اسکاتلند برملا گردید. بلافاصله ملکه اسکاتلند به فرمان ملکه الیزابت گردن زده شد.

در سال 1626 لوئی چهاردهم از یک شیوه رمز به نام Great Cipher بهره می‎برد که حروف فرانسوی با اعداد جایگزین می‎شدند.

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

در سال 1937 ارتش آمریکا از یک سیستم کدینگ مرموزدر جنگ های خود بهره می‎برد. ژاپنی‎ها هرگز نتوانستند این سیستم کدینگ را رمزگشایی کنند. این در حالی بود که متفقین مدت‎ها بود که موفق به رمزشکنی، سیستم‎های رمزنگاری ژاپنی‎ها گردیده بودند.

رمزنگاری آکادمیک

در سال 1971 سیستم رمزنگاری متقارن توسط لوسیفر در IBM ابداع و تکمیل گردید.این شیوه رمزنگاری بعدها منجر به طراحی رمزنگاری DES گردید. از این دوران بود که تحقیقات گسترده‎ای در زمینه رمزنگاری به صورت آکادمیک در دانشگاه‎ها صورت پذیرفت. با پیشرفت کامپیوترها و شبکه جهانی اینترنت ، نیاز به رمزنگاری و حفاظت از اطلاعات بیش از پیش مورد توجه قرار گرفت.

آشنایی با توابع هش (درهم‎سازی )

درهم‎سازها یا توابع هش (Hash Function) ، نوعی از توابع نگاشت نامتناظر هستند که رشته‎ای طولانی از داده‎ها را از ورودی دریافت می‎کنند و در خروجی یک رشته با طول ثابت را تحویل می‎دهند. در واقع توابع هَش را می‎توان یک اثر انگشت منحصربفرد برای داده‎های دیجیتال یا یک متن بحساب آورد.

توابع هش
توابع هش

معمولا از توابع هش در امضاهای دیجیتال، احراز هویت، اسناد دیجیتال، اوراق بهادار دیجیتال و … استفاده می‎کنند. یکی از کاربردهای مهم توابع درهم‎ساز، بلاک‎چین یا همان زنجیره بلوکی (Block Chain) می‎باشد.

توابع هش و ساختار آنها

چکیده پیام
شکل 1 : چکیده پیام

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

باید توجه داشت که فرآیند درهم‎سازی، یک فرآیند یک طرفه است. بدین معنا که چکیده یک پیام را می‎توان با کمک یک Hash Function بدست آورد، امّا از روی یک چکیده پیام با فرض دانستن Hash Function مربوطه نمی‎توان، پیام اصلی را استخراج کرد.

درحقیقت توابع هَش، گونه‎ای از توابع رمزنگاری هستند که فرآیند رمزکردن را بصورت یک‎طرفه انجام می‎دهند. اینگونه توابع کاربردهای زیادی در رمزنگاری و امنیت داده‎ها دارند.

ویژگی‎های توابع درهم‎ساز

یک تابع درهم‎ساز برای اینکه بتواند قدرت لازم را داشته باشد و امنیت داده‎ها را تامین کند، بایستی دارای ویژگی‎های زیر باشد:

  1. باید محاسبه چکیده پیام از روی داده بسیار ساده و آسان باشد.
  2. محاسبه اصل پیام از روی چکیده بسیار سخت و زمانبر باشد(باید تابع درهم‎ساز یک طرفه باشد).
  3. کوچکترین تغییر در ورودی یک تابع درهم‎ساز، خروجی را به شکل غیرقابل باوری تغییر دهد.
  4. پیداکردن دو متن که با اعمال یک Hash Function ، چکیده یکسانی را تولید کنند، کاری سخت و دشوار باشد.
  5. طول پیام ورودی می تواند بسیار طولانی و بلند باشد، امّا طول چکیده پیام نباید زیاد بلند باشد.

بزرگترین مشکل توابع هش، برآورده کردن ویژگی شماره 4 می‎باشد. همین ویژگی شماره 4 بود که باعث شکست شیوه درهم‎سازی MD5 در سالیان گذشته گردید.

معرفی انواع توابع درهم‎ساز

در گذر زمان، شاهد انواع هَش فانکشن‎ها بوده ایم. دلیل کنار گذاشته‎شدن یک تابع هش، شکسته شدن آن می‎باشد. بدین معنا که ویژگی شماره 4 که در بالا درباره آن صحبت کردیم، نقض می‎شود.

در اینجا به معرفی چند دسته از معروفترین توابع می‎پردازیم:

الگوریتم های هش
ساختار الگوریتم های هش

1- الگوریتم MD5

این روش توسط آقای رونالد ری‎وست در سال 1991 عرضه گردید. این الگوریتم در سالیان اخیر کاربردهای بسیار در حوزه امنیت شبکه و امنیت داده پیدا کرده است. امّا در سال 2006 توسط یک لپ‎تاپ در عرض یک دقیقه جعل شد و یک چکیده برای دو پیام متفاوت ایجاد گردید.

این موضوع به معنای شکست این هش فانکشن بود.

2- الگوریتم SHA1

بعد از شکست MD5، اداره استاندارد و فناوری‎های مدرن آمریکا، الگوریتم SHA1 را معرفی کرد. امّا این الگوریتم هم دوام چندانی نیافت و مانند MD5 توسط کامپیوترهای قدرتمند و بوسیله یک تیم از هکرهای چینی به سرپرستی ژیایو ونگ درهم کوبیده شد.

3- الگوریتم SHA2

این الگوریتم که بعنوان جایگزینی برای SHA1 معرفی شد دارای نسخه‎هی مختلفی می‎باشد. SHA256، SHA512 و SHA224 معروفترین نسخه‎های این الگوریتم هستند. عدد انتهایی در این نسخه‎ها، طول چکیده ایجاده شده به بایت را نشان می‎دهد.

این تابع درهم‎ساز هنوز مقاومت خوبی دارد و تلاش هکرها برای درهم‎شکستن آن با شکست مواجه گردیده است.

4- الگوریتم SHA3

از آنجایی که با پیشرفت کامپیوترها و بحث ورود تکنولوژی کوانتومی به تجهیزات دیجیتال، احتمال شکست SHA2 به شدت قوّت گرفته است. بنابراین محققان به دنبال ارائه الگوریتم SHA3 هستند تا در صورت شکست SHA2 آن را جایگزین کنند.

کارشناسان امنیت تنها شش ماه بعد از شکست SHA2 فرصت دارند تا نسخه جدید یک تابع درهم‎ساز را ارائه کنند در غیر اینصورت شاهد جعل گسترده اطلاعات خواهیم بود.

و در پایان …

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