راهنمای جامع پروتکل های رمزنگاری
«نسخه کامل و جامع این مقاله به همراه جزئیات بیشتر، درImaniNova.ir منتشر شده است. در ادامه قطعه ای از این مقاله را مشاهده می کنید.»
به زبان خیلی ساده، رمزنگاری (Cryptography) علم و هنر پنهان کردن اطلاعات است؛ به طوری که فقط و فقط افراد مجاز (کسانی که کلید را دارند) بتوانند به محتوای اصلی آن دسترسی داشته باشند. کلمه ی Cryptography از دو واژه ی یونانی Kryptos (به معنی پنهان) و Graphein (به معنی نوشتن) گرفته شده است.
در دنیای آی تی، هر فرآیند رمزنگاری از ۴ رکن اصلی تشکیل می شود:
- متن آشکار (Plaintext): دیتای اولیه و خام شما که برای همه قابل خواندن است (مثلا پسورد شما: 1
23456). - متن رمزنگاری شده (Ciphertext): دیتایی که تغییر شکل یافته و به یک کلاف سردرگم از حروف و اعداد بی معنی تبدیل شده است (مثلا پسورد بالا بعد از رمزنگاری: 8
f4v9!mQx). - مکانیزم یا تابع رمزنگاری: فرآیند ریاضیاتی که متن آشکار را به متن رمز تبدیل می کند.
- کلید (Key): یک رشته متنی یا عددی منحصربه فرد که به تابع داده می شود تا قفل اطلاعات را باز یا بسته کند.
یک مثال ملموس: فرض کنید می خواهید یک نامه محرمانه را پست کنید. اگر آن را روی کارت پستال بنویسید، همه بین راه آن را می خوانند (Plaintext). اما اگر نامه را داخل یک صندوقچه فلزی بگذارید و آن را قفل کنید، دیگر کسی نمی تواند محتوای آن را ببیند (Ciphertext). در این سناریو، خود صندوقچه مکانیزم دفاعی و آن شیء فلزی کوچک که دست شماست، کلید است.الگوریتم چیست؟ موتور محرک پروتکل های امنیتی
بدون وجود الگوریتم ها، هیچ قفل دیجیتالی وجود نداشت. اما الگوریتم (Algorithm) چیست؟ به زبان ساده، الگوریتم یک دستورالعمل گام به گام، منطقی و دقیق برای حل یک مسئله یا انجام یک محاسبه است. همان طور که دستور پخت یک کیک، مراحل پخت آن را قدم به قدم (۱. آرد را الک کنید، ۲. تخم مرغ را اضافه کنید و...) توضیح می دهد، الگوریتم هم به کامپیوتر می گوید که برای رسیدن به یک هدف مشخص، دقیقا چه کارهایی را به چه ترتیبی انجام دهد.
در حوزه امنیت شبکه، الگوریتم رمزنگاری (Encryption Algorithm) یک فرمول یا تابع ریاضی بسیار پیچیده است که متن آشکار و کلید را به عنوان ورودی (Input) می گیرد، آن ها را طبق یک پروتکل و دستورالعمل کاملا مشخص ریاضی در هم ضرب، جابه جا و ترکیب می کند و در نهایت متن رمزنگاری شده را به عنوان خروجی (Output) تحویل می دهد.
انواع الگوریتم ها و پروتکل های رمزنگاری جهان
در یک نگاه کلی، تمام سیستم های رمزنگاری و امنیتی مدرن در دنیای IT به ۴ دسته اصلی تقسیم می شوند:
- الگوریتم های رمزنگاری متقارن (Symmetric Algorithms)
AES (Advanced Encryption Standard)
ChaCha20
DES (منسوخ شده)
3DES (منسوخ شده)
RC4 (منسوخ شده) - الگوریتم های رمزنگاری نامتقارن (Asymmetric Algorithms)
RSA (Rivest–Shamir–Adleman)
ECC (Elliptic-Curve Cryptography)
Diffie-Hellman (پروتکل تبادل کلید) - توابع درهم سازی یا هش (Hashing Functions)
SHA-2 (به ویژه SHA-256)
SHA-3
MD5 (منسوخ شده)
SHA-1 (منسوخ شده) - پروتکل های ترکیبی و کاربردی شبکه (Hybrid Protocols)
SSL/TLS (امنیت لایه انتقال وب - HTTPS)
SSH (اتصال امن به سرورها)
Signal Protocol (رمزنگاری سرتاسری چت ها)
بخش اول: کالبدشکافی عمیق الگوریتم های متقارن (Symmetric ciphers)
۱. الگوریتم AES (Advanced Encryption Standard)؛ دژ نفوذناپذیر دنیای دیجیتال
اگر در دنیای فناوری امروز چیزی به نام «امنیت مطلق» وجود داشته باشد، نام آن AES است. این پروتکل، سوخت اصلی موتورهای امنیتی جهان را تامین می کند و استاندارد طلایی رمزنگاری متقارن محسوب می شود. اما این الگوریتم چطور به وجود آمد، معماری داخلی آن چگونه بیت ها را شخم می زند و چرا هنوز هیچ کامپیوتری در جهان نتوانسته آن را بشکند؟
قصه هک شدن DES و تولد یک پادشاه
در اواخر دهه ۱۹۹۰ میلادی، با افزایش قدرت پردازنده ها، الگوریتم استاندارد قبلی دولت آمریکا یعنی DES که از کلیدهای کوتاه ۵۶ بیتی استفاده می کرد، عملا در برابر حملات Brute Force (تست تمام کلیدهای ممکن) زانو زد و در کمتر از یک روز شکسته شد. این یک بحران ملی برای امنیت داده ها بود.
سازمان استاندارد ملی آمریکا (NIST) یک فراخوان بین المللی صادر کرد و از تمام دانشمندان و ریاضی دانان بزرگ جهان خواست تا طرح های خود را برای جایگزینی DES ارسال کنند. پس از ۵ سال ارزیابی فرساینده و تلاش صدها هکر و آژانس امنیتی برای نفوذ به طرح های پیشنهادی، سرانجام در سال ۲۰۰۱، الگوریتمی به نام Rijndael که توسط دو رمزنگار نابغه بلژیکی به نام های وینسنت ریمن و جوآن دیمن طراحی شده بود، به عنوان برنده معرفی شد و نام آن را AES گذاشتند.
کالبدشکافی معماری فنی و ساختار Rounds در AES
AES یک الگوریتم رمزنگاری بلوکی (Block Cipher) است. این یعنی داده های ورودی شما (مثلا یک فایل متنی یا یک عکس) هر چقدر هم که بزرگ باشند، ابتدا به بلوک های ثابت ۱۲۸ بیتی (معادل ۱۶ بایت) تقسیم می شوند. اگر بلوک آخر کمتر از ۱۲۸ بیت باشد، الگوریتم با استفاده از استانداردهای Padding بیت های تصادفی به آن اضافه می کند تا اندازه آن دقیقا ۱۲۸ بیت شود.
امنیت و قدرت تکاملی AES به طول کلیدهای آن بستگی دارد که در سه سطح استاندارد پیاده سازی می شود:
- AES-128: از کلید ۱۲۸ بیتی استفاده می کند و دیتای ورودی را ۱۰ دور شخم می زند.
- AES-192: از کلید ۱۹۲ بیتی استفاده می کند و دیتای ورودی را ۱۲ دور شخم می زند.
- AES-256: از کلید ۲۵۶ بیتی استفاده می کند و دیتای ورودی را ۱۴ دور شخم می زند (استاندارد نظامی).
اما در هر کدام از این دورها (Rounds) چه جادویی رخ می دهد؟ برخلاف الگوریتم های قدیمی، AES از ساختار شبکه فایستل استفاده نمی کند، بلکه کل بلوک ۱۶ بایتی داده را در قالب یک ماتریس $4 \times 4$ به نام State قرار می دهد و در هر دور، ۴ مرحله ریاضی بسیار سنگین را روی این ماتریس پیاده می کند:
- SubBytes (جانشینی بایت ها): در این مرحله، هر بایت از داده درون ماتریس، بر اساس یک جدول ریاضی ثابت و غیرخطی به نام S-Box با یک بایت دیگر تعویض می شود. این کار باعث ایجاد پدیده ای به نام Confusion (سردرگمی) در داده ها می شود تا هکر نتواند هیچ رابطه منطقی بین متن اصلی و متن رمز شده پیدا کند.
- ShiftRows (تغییر سطرها): سطر اول ماتریس دست نخورده می ماند، سطر دوم یک بایت به سمت چپ شیفت داده می شود، سطر سوم دو بایت و سطر چهارم سه بایت به چپ منتقل می شوند. این کار جایگاه فیزیکی اطلاعات را کاملا تغییر می دهد.
- MixColumns (ترکیب ستون ها): ستون های ماتریس با استفاده از معادلات سخت ریاضی در میدان های گالوا ($GF(2^8)$) در هم ضرب می شوند. این جادویی ترین بخش AES است؛ زیرا باعث می شود که اگر شما حتی یک بیت از متن اصلی را تغییر دهید، در دورهای بعدی کل ستون ها دگرگون شوند (پدیده Diffusion یا پخش شدگی).
- AddRoundKey (اضافه کردن کلید دور): در نهایت، دیتای به دست آمده با یک نسخه مشتق شده از کلید اصلی که مخصوص همان دور تولید شده است، با استفاده از عملیات منطقی XOR ترکیب می شود.
این چرخه بسته به طول کلید، ۱۰ تا ۱۴ بار تکرار می شود تا در نهایت داده خروجی به یک کلاف کاملا غیرقابل فهم تبدیل شود.
نقاط قوت مطلق (Advantages)
- هک ناپذیری ریاضی: تعداد حالت های ممکن برای کلید در AES-256 برابر با $2^{256}$ است. این عدد به قدری غول پیکر است که اگر تمام ابرکامپیوترهای فعلی جهان را به خط کنیم و آن ها بتوانند در هر ثانیه میلیاردها میلیارد کلید را تست کنند، باز هم بیشتر از عمر کل جهان هستی طول می کشد تا بتوانند این پروتکل را با روش حمله ترتیبی (Brute Force) بشکنند.
- پشتیبانی سخت افزاری (AES-NI): شرکت های بزرگی مثل اینتل و AMD، شتاب دهنده های سخت افزاری اختصاصی را مستقیما درون هسته پردازنده ها تعبیه کرده اند. این یعنی عملیات رمزنگاری AES با سرعت نور و بدون اشغال کردن ظرفیت اصلی CPU انجام می شود.
- انعطاف پذیری فوق العاده: این الگوریتم هم روی سخت افزارهای ضعیف (مثل میکروکنترلرها و کارت های هوشمند) و هم روی ابرسرورهای شبکه با بالاترین راندمان اجرا می شود.
نقاط ضعف و چالش ها (Disadvantages)
- حملات کانال جانبی (Side-Channel Attacks): خود ریاضیات AES هک ناپذیر است، اما فیزیک پیاده سازی آن چالش دارد. هکرهای پیشرفته با اندازه گیری دقیق میزان مصرف برق پردازنده، نشت امواج الکترومغناطیسی یا مدت زمانی که طول می کشد تا CPU عملیات ریاضی را انجام دهد (Timing Attacks)، می توانند کلید رمزنگاری را حدس بزنند.
- چالش انتقال کلید: به عنوان یک سیستم متقارن، فرستنده و گیرنده باید ابتدا روی یک کلید مشترک توافق کنند. اگر این کلید لو برود، تمام قفل های AES بی ارزش می شوند.
برای مشاهده کامل مقاله بروی لینک زیر کلیک نمایید:
https://imaninova.ir/ArticleView?cryptographic-protocols-network-security-privacy-guide