الگوریتم‌های رمزنگاری مدرن (متقارن و نامتقارن)

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

الگوریتم‌های رمزنگاری به دو دسته‌ی اصلی تقسیم می‌شن:

  1. الگوریتم‌های رمزنگاری متقارن
  2. الگوریتم‌های رمزنگاری نامتقارن

حالا اینا یعنی چی؟
با من همراه باشید. 🙂

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

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

خب می‌دونیم که “قرینه”، هم‌خانواده “متقارن” هست.
حالا باید ببینیم چی قرینه هست که بعد بفهمیم غیرقرینه چیه!
منظور از متقارن این هست که برای رمزنگاری و رمزگشایی، از یک کلید واحد استفاده می‌شه!
یعنی وقتی با یک کلید اقدام به رمزنگاری می‌کنی، بعدا با همون کلید می‌تونی رمزگشایی هم کنی.
یه چیزی مثل همون رمز سزار یا ویژنر تصورش کنید (هرچند رمزنگاری کلاسیک محسوب می‌شن اما اینطور هستن) که کلیدی واحد برای رمزنگاری و رمزگشایی استفاده می‌شه.
حالا در نامتقارن، کلیدی که برای رمزنگاری استفاده می‌شه، با کلیدی که برای رمزگشایی استفاده می‌شه، متفاوت هست و یکی نیستن!
یعنی یه کلید برای رمزگشایی هست و یه کلید دیگه برای رمزنگاری!

به کلیدی که برای رمزنگاری استفاده می‌شه، می‌گن کلید عمومی (Public Key)؛ و به کلیدی که برای رمزگشایی استفاده می‌شه، می‌گن کلید خصوصی (Private Key)!

مثال:
شما می‌تونید کلید عمومی خودتون رو بدید بقیه، تا پیام‌هایی که می‌خوان برای شما بفرستن رو رمزگذاری کنن.
و کلید خصوصی رو پیش خودتون نگه می‌دارید؛ و می‌تونید با اون پیام‌ها رو رمزگشایی کنید. 🎇

یک قدم جلوتر: چرا متقارن یا نامتقارن؟

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

سوال: چرا اصلاً دو نوع رمزنگاری داریم؟
با من بیاید… 🙂

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

رمزنگاری متقارن خیلی سریع‌تره! چون از الگوریتم‌های ساده‌تری استفاده می‌کنه.
وقتی سرعت و کارایی برامون مهمه (مثلاً توی رمزنگاری حجم بالای داده)، از روش‌های متقارن استفاده می‌کنیم. 👌🏻
اما کلید مشترک می‌تونه امنیت رو تضعیف کنه.
چون اگه یکی بتونه به این کلید دسترسی پیدا کنه، عملاً بازی تمومه!
ساده‌تر بگم؛ شما باید به شکل ایمن، کلید مشترک رو به دست شخص دومی که قراره پیام رو رمزگشایی کنه برسونید.
کمی جلوتر یه راه‌حل میگم!

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

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

ماست‌ها میرن تو قیمه‎‌ها…

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

امروزه همه پیاده‌سازی‌های عملی رمزنگاری کلید عمومی (رمزنگاری نامتقارن منظورش هست) از سیستم ترکیبی (Hybrid) استفاده می‌کنند. به عنوان مثال، پروتکل TLS (و SSL)و پروتکل SSH از مکانیزم کلید عمومی (همون نامتقارن) برای تبادل کلید (مانند Diffie-Hellman) و مکانیزم کلید متقارن برای رمزنگاری داده‌ها (مانند AES) استفاده می‌کنند.
فرمت فایل‌های OpenPGP و PKCS#7 نیز نمونه‌های دیگری از این رویکرد هستند.
(ترجمه شده از ویکی‌پدیای انگلیسی)

همون‌طور که ویکی‌پدیا میگه، پروتکل TLS و SSL (که برای امنیت داده‌های اینترنت استفاده میشن و شما دارید الان برای خوندن این مطلب ازش استفاده می‌کنید) و پروتکل SSH (که برای کنترل سرور‌ها از راه دور استفاده میشه) هم از روش هیبرید و ترکیبی بهره می‌برن.

الگوریتم‌های متقارن و نامتقارن هر کدوم برای یه کار خاص ساخته شدن.
سرعت بالا برای رمزنگاری داده‌ها؟ متقارن!
امنیت بالا برای تبادل کلید؟ نامتقارن!
و در نهایت، وقتی می‌خوایم بهترین استفاده رو داشته باشیم، از روش ترکیبی (Hybrid) استفاده می‌کنیم تا هم سرعت داشته باشیم و هم امنیت! ✔

خب؛ اینم داستان رمزنگاری متقارن و نامتقارن.
اگه سوالی داشتید یا چیزی به ذهنتون رسید، بپرسید.
منتظر نظراتتون هستم! ⭐

دیدگاهتان را بنویسید