رمزنگاری چیست و چگونه کار می‌کند؟ با انواع الگورتیم رمزنگاری آشنا شوید

یک‌شنبه ۱۹ مرداد ۱۳۹۹ - ۱۸:۰۰
مطالعه 18 دقیقه
رمزنگاری یکی از پرکاربردترین فناوری‌های دنیای امروز محسوب می‌شود که جزئیات فنی جالب‌توجهی دارد. در ادامه‌ی این مطلب با جنبه‌های گوناگون رمزنگاری آشنا می‌شوید.
تبلیغات

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

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

رمزنگاری چیست؟

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

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

عبارت‌های مرسوم در رمزنگاری

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

کلید (Key): رشته‌ای تصادفی از بیت‌ها که برای به هم ریختن و مرتبط کردن داده (رمزنگاری و رمزگشایی) استفاده می‌شود. کلیدها منحصربه‌فرد هستند و به‌صورت کاملا تصادفی ساخته می‌شوند تا به‌راحتی قابل پیش‌بینی نباشند. هرچه کلیدها بلندتر باشند، شکستن آن‌ها دشوارتر خواهد بود. طول مرسوم کلیدها در رمزنگاری متقارن، ۱۲۸ بیت و در رمزنگاری نامتقارن، ۲۰۴۸ بیت است (در بخش‌های بعدی، انواع رمزنگاری را توضیح می‌دهیم). 

رمزنگاری / Encryption

رمز (Cipher): الگوریتمی که برای رمزنگاری و رمزگشایی داده‌ها استفاده می‌شود. درواقع الگوریتم تعدادی مرحله و فرایند است که پشت سر هم انجام می‌شود. دو نوع الگوریتم بلوکی و دنباله‌ای وجود دارند (Block و Stream).

الگوریتم (Algorithm): همان سلسله مراتب و مراحلی است که در فرایند رمزنگاری انجام می‌شود. امروزه انواع الگوریتم‌های رمزنگاری وجود دارند که بسته به سطح امنیت و موضوع و حوزه‌ی فعالیت، دسته‌بندی می‌شوند.

رمزگشایی (Decryption): فرایدی که طی آن یک متن دارای رمز یا داده‌ی نامفهوم با استفاده از کلید رمزگشایی به داده‌ی مفهوم تبدیل می‌شود.

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

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

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

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

مربع پولیبیوس

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

ماشین انیگما

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

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

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

ایالات متحده، در استاندارد کردن روش‌های رمزنگاری پیش‌گام بود. آن‌ها در سال ۱۹۷۶ ابتدا استاندارد رمزنگاری داده یا DES را به‌صورت یک رمزنگار قالبی تصویب کردند. سازمان ملی استاندارد آمریکا، در آن سال DES را به‌عنوان استاندارد فدرال پردازش اطلاعات، پذیرفت. در سال‌ها و دهه‌های بعد، کشورهای دیگر به‌مرور استاندارد DES را به‌کار گرفتند.

استاندارد اولیه‌ی DES بازدهی لازم را برای متخصصان امنیت نداشت. نگرانی‌های امنیتی و سرعت پایین عملکرد، محققان را وادار کرد تا روش‌های مدرن و با بازدهی بالاتری را توسعه دهند. رمزنگارهای قالبی متعددی در دهه‌های ۱۹۸۰ و ۱۹۹۰ توسعه یافتند که از مهم‌‌ترین آن‌ها می‌توان به RC5, Blowfish, IDEA, NewDES, SAFER, CAST5 و FEAL اشاره کرد.

انواع الگوریتم‌های رمزنگاری با اهداف و موارد استفاده‌ی گوناگون، سرعت و عملکرد متفاوتی نسبت به هم دارند

با ورود به قرن جدید، لزوم پیاده‌سازی و استفاده از روش‌های رمزنگاری پیشرفته‌تر بیش از همیشه احساس می‌شد. DES در رخدادهای گوناگون رمزگشایی شکست خورده بود و دیگر امنیت آن به‌عنوان یک استاندارد جامع، قابل تضمین نبود. وینسنت ریجمن و جان دامن، متخصصان رمزنگاری بودند که روش جدیدی را با امنیت بالاتر توسعه دادند. آن‌ها از ترکیب نام‌های خود برای نام‌گذاری روش جدید استفاده کردند و درنهایت، Rijndael متولد شد. دولت ایالات متحده پس از مدتی این روش را به‌عنوان استاندارد پیشرفته‌تر و جدید رمزنگاری تصویب کرد و نام AES یا Advanced Encryption Standard برای آن انتخاب شد. در جریان تصویب روش جدید، ۱۵ الگوریتم دیگر هم حضار بودند تا اینکه درنهایت Rijndael در سال ۲۰۰۱ به‌عنوان روش استاندارد انتخاب شد.

تفاوت الگوریتم‌های رمزنگاری

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

برای مقایسه‌ی سرعت الگوریتم‌های رمزنگاری گوناگون، می‌توان از ابزار بنچمارکی استفاده کرد که در TrueCrypt عرضه می‌شود. بررسی‌‌های بنچمارک نشان می‌دهد که AES هنوز بالاترین سرعت را در رمزنگاری دارد. به‌هرحال الگوریتم‌های دیگر ازلحاظ قدرت یا سرعت، مزایا و معایبی نسبت به روش استاندارد دارند و انتخاب از میان آن‌ها، به نیاز و کارایی کاربر وابستگی زیادی دارد. به‌عنوان مثال یک کاربر می‌تواند برای رمزنگاری مرسوم داده‌های خود از الگوریتم‌های سریع‌تر استفاده کرده یا داده را، دو بار با یک الگوریتم رمزنگاری کند. درنهایت، اگر تنها به‌دنبال سرعت هستید، AES انتخابی عالی خواهد بود.

بنچمارک TrueCrypt

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

انواع رمزنگاری

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

  • الگوریتم‌های دارای کلیدهای متقارن (Symmetric) که از کلیدهای رمزگشایی مرتبط با مشابه برای رمزنگاری و رمزگشایی استفاده می‌کنند.
  • الگوریتم‌های دارای کلیدهای نامتقارن (Asymmetric) که از کلیدهای متفاوت برای رمزنگاری و رمزگشایی استفاده می‌کنند. این نوع رمزنگاری به‌نام Public-Key هم شناخته می‌شود.

الگوریتم رمزنگاری با کلید متقارن

برای درک الگوریتم‌های رمزنگاری، مثال‌های ملموس بهترین ابزارها هستند. مثال پیام‌رسانی با پست، اغلب برای توضیح دادن الگوریتم‌ها استفاده می‌شود که ما هم در این بخش از همان استفاده می‌کنیم.

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

الگوریتم‌های رمزنگاری متقارن، به دو دسته‌ی رمزنگاری دنباله‌ای و رمزنگاری بلوکی تقسیم می‌شوند. در رمزنگاری دنباله‌ای، تمامی بیت‌های پیام به‌یک‌باره رمزنگاری می‌شوند. در رمزنگاری بلوکی یا قالبی، یک بلوک شامل تعداد مشخصی بیت (اغلب ۶۴ بیت) رمزنگاری می‌شود. انواع گوناگونی از الگوریتم‌های رمزنگاری متقارن وجود دارند که ازمیان مشهورترین‌ها می‌توان به موارد زیر اشاره کرد:

  • Twofish
  • Serpent
  • AES
  • Blowfish
  • CAST5
  • RC4
  • TDES
  • IDEA

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

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

  • سربیع‌تر از رمزنگاری نامتقارن است.
  • نیاز به قدرت پردازشی کمتری دارد.
  • باعث کاهش سرعت نمی‌شود.

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

الگوریتم رمزنگاری با کلید متقارن

روش کار مشهورترین الگوریتم‌های متقارن

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

در الگوریتم DES، داده‌های شامل متن ساده با طول ۶۴ بیتی در یک بلوک رمزنگاری می‌شوند. ابتدا داده به دو بخش ۳۲ بیتی تقسیم شده و سپس فرایند رمزنگاری روی هریک از آن‌ها به‌صورت مجزا اجرا می‌شود. فرایند مذکور شامل ۱۶ مرحله است که در آن‌ها، انواع عملیات ریاضی روی داده صورت می‌گیرد. درنهایت داده‌های ۶۴ بیتی رمزنگاری‌شده به‌عنوان خروجی از الگوریتم به دست می‌آیند. از نقط ضعف اصلی DES که منجر به منسوخ شدن آن شد، می‌توان به کوتاه بودن کلید رمزنگاری اشاره کرد. بسیاری از متخصصان امنیت موفق به شکستن رمز DES شدند که درنهایت منسوخ شدن آن را در سال ۲۰۰۵ به‌همراه داشت.

نسخه‌ی بهبودیافته‌ی DES به‌نام 3DES معرفی شد. این الگوریتم از دهه‌ی ۱۹۹۰ به شهرت رسید و به‌نوعی برخی از ساختارهای DES را بهینه می‌کرد. همان‌طور که از نام الگوریتم 3DES بر می‌آید، در فرایندهای رمزنگاری آن، سه بار الگوریتم DES را در هر بلوک داده اجرا می‌کنند. درنتیجه شکستن رمز، دشوارتر خواهد بود. الگوریتم 3DES پس از مدتی به‌عنوان استاندارد محبوب در سیستم‌‌های پرداخت و استانداردها و فناوری‌های حوزه‌ی مالی استفاده شد. از همین الگوریتم در بسیاری از پروتکل‌های رمزنگاری همچون TLS, SSH, IPsec و OpenVPN استفاده شد.

DES و 3DES پس از شکسته شدن رمزها توسط متخصصان امنیت، منسوخ شدند

تمامی الگوریتم‌های رمزنگاری پس از مدتی با بحران نفوذ روبه‌رو می‌شوند. 3DES هم بالاخره به همین چالش دچار شد و متخصصان امنیت با پیدا کردن آسیب‌پذیری موسوم به Sweet32 امکان نفوذ به آن را پیدا کردند. درنتیجه متخصصان دیگر به‌دنبال راه‌های بهینه برای رمزنگاری رفتند و در سال ۲۰۱۹، الگوریتم 3DES هم منسوخ شد. طبق اعلامیه‌ی جدید سازمان‌های استاندارد، اپلیکیشن‌هایی که از سال ۲۰۲۳ توسعه پیدا می‌کنند، حق استفاده از 3DES را ندارند. پروتکل استاندارد TLS 1.3 نیز دیگر از 3DES استفاده نمی‌کند.

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

الگوریتم AES براساس اصول جابه‌جایی و تعویض کار می‌کند. ابتدا داده به‌صورت متن ساده به بلوک‌های متعدد تقسیم می‌شود. سپس با استفاده از کلید رمزنگاری، فرایند رمزنگاری روی بلوک‌ها اعمال می‌شود. خود فرایند رمزنگاری دارای چندین زیر فرایند است که فعالیت‌های گوناگونی را روی داده‌ها انجام می‌دهند. بسته به طول کلید رمزنگاری، ۱۰ یا ۱۲ یا ۱۴ مرحله از زیرفرایندها روی داده اعمال می‌شود.

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

  • امنیت ارتباط‌های بی‌سیم
  • امنیت پردازنده و رمزنگاری فایل‌ها
  • پروتکل‌های امنیت وب‌سایت SSL و TLS
  • امنیت وای‌فای
  • رمزنگاری اپلیکیشن‌های موبایل
  • ابزارهای VPN

بسیاری از سازمان‌های امنیتی و دولتی در سرتاسر جهان ازجمله آژانس امنیت ملی ایالات متحده (NSA) از رمزنگاری AES استفاده می‌کنند.

الگوریتم رمزنگاری با کلید نامتقارن

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

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

الگوریتم رمزنگاری با کلید نامتقارن

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

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

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

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

روش کار الگوریتم‌های مشهور رمزنگاری نامتقارن

از روش‌های مرسوم و مشهور رمزنگاری نامتقارن می‌توان به RSA و ECC اشاره کرد که در ادامه هرکدام را بررسی می‌کنیم.

الگوریتم RSA حاصل همکاری سه متخصص به‌نام‌های Ron Rivest, Adi Shami و Leonard Adleman بود که از ابتدای نام خانوادگی خود برای نام الگوریتم استفاده کرده و آن را در سال ۱۹۷۷ معرفی کردند. امروزه  RSA به‌عنوان پرکاربردترین الگوریتم رمزنگاری نامتقارن شناخته می‌شود. قدرت اصلی الگوریتم مذکور را می‌توان در روش موسوم به Prime Factorization دید که به‌عنوان پایه‌های آن استفاده می‌شود. در این روش، از دو عدد بسیار بزرگ تصادفی استفاده می‌شود که برای ساختن یک عدد عظیم تصادفی، در هم ضرب می‌شوند. برای شکستن رمزهای RSA باید دو عددی که کلید نهایی و عظیم را ساخته‌اند، شناسایی کنید.

الگوریتم‌های نامتقارن، قابلیت‌های هویت‌سنجی را هم به فرایند اضافه می‌کنند

با نگاهی به کلیت مسئله به این نتیجه می‌رسیم که حل کردن آن و پیدا کردن دو عدد اصلی، غیرممکن خواهد بود. البته محققان در سال ۲۰۱۰ توانستند با ۱،۵۰۰ سال زمانی پردازشی (که بین صدها کامپیوتر توزیع شده بود)، رمز RSA-768 را بشکنند. فراموش نکنید که امروزه از RSA با کلیدهای ۲۰۴۸ بیتی استفاده می‌شود و درواقع می‌توان شکستن آن‌ها را غیرممکن دانست.

از مزیت‌های الگوریتم RSA می‌توان به مقیاس‌پذیری عالی آن اشاره کرد. الگوریتم مذکور را می‌توان با کلیدهایی با طول متنوع از ۷۶۸ و ۱۰۲۴ تا ۲۰۴۸ و ۴۰۹۶ استفاده کرد. درنتیجه زمانی‌که کلیدهای کوچک‌تر شکسته شوند، می‌توان با افزایش قابل‌توجه طول کلید، فرایند رمزنگاری را پیچیده‌تر کرد.

الگوریتم RSA از یک عملیات ریاضی ساده استفاده می‌کند. درنتیجه پیاده‌سازی آن در روش‌های نامتقارن ساده خواهد بود. همین سادگی و پیاده‌سازی سریع باعث شده است که امروزه RSA بیش از همه‌ی الگوریتم‌ها در رمزنگاری نامتقارن مورد استفاده قرار بگیرد. از حوزه‌های استفاده‌ی RSA می‌توان به مجوزهای اینترنتی SSL و TLS، رمزارزها و رمزنگاری ایمیل‌ها اشاره کرد.

Elliptic Curve

الگوریتم مشهور دیگر در دسته‌ی نامنقارن، ECC نام دارد که در سال ۱۹۸۵ توسعه یافت. Neal Koblitz و Victor S. Miller، توسعه‌دهنده‌های الگوریتم بودند که استفاده از منحنی‌های بیضوی را در رمزنگاری پیشنهاد دادند. ایده‌ی آن‌ها حدود دو دهه بعد و در سال ۲۰۰۴ به‌نام ECC یا Elliptic Curve Cryptography وارد فاز اجرایی شد. در فرایند رمزنگاری ECC، یک منحنی بیضوی تعدادی از نقاط را نشان می‌دهد که در یک معادله‌ی ریاضیاتی، صادق هستند (y= x+ ax + b). الگوریتم ECC هم مانند RSA بر مبنای اصول بازگشت‌ناپذیری عمل می‌کند. به بیان ساده، انجام محاسبات در یک سمت برای رسیدن به جواب، ساده است؛ اما برعکس کردن معادله و رسیدن به داده‌های ورودی اولیه، بسیار دشوار خواهد بود.

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

از مزایای ECC در مقایسه با RSA می‌توان به امنیت بسیار بالاتر اشاره کرد که با استفاده از کلیدهای بسیار کوتاه‌تر، سطح امنیتی برابری را ارائه می‌کند. درنتیجه با استفاده از کلیدهای بلند در ECC، شکستن رمزها تقریبا غیرممکن می‌شود. مزیت کوتاه‌تر بودن کلیدهای ECC در افزایش سرعت و بهره‌وری فرایندهای رمزنگاری دیده می‌شود. کلیدهای کوتاه‌تر، به قدرت پردازشی و فشار شبکه‌ای کمتری نیاز دارند. در موقعیت‌هایی که از ECC در پروتکل‌های SSL/TLS در وب‌سایت‌ها استفاده می‌شود، شاهد بارگذاری سریع‌تر خواهیم بود. از کاربردهای ECC می‌توان به رمزنگاری اپلیکیشن‌ها، امضاهای دیجیتال و کاربردهای مشابه اشاره کرد. البته درحال‌حاضر تعداد زیادی از سرورها از ECC پشتیبانی نمی‌کنند و باید منتظر توسعه‌ی اپلیکیشن‌های مناسب و هماهنگ باشیم.

رمزنگاری ترکیبی: رمزنگاری متقارن درکنار نامتقارن

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

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

حفظ امنیت ارتباط‌های وب با رمزنگاری

از سال‌ها پیش، پروتکل SLL یا Secure Sockets Layer، تبادل‌های تحت وب بین مرورگر کاربر و سرورها را رمزنگاری می‌کند. با این کار، اگر فردی در میانه‌ی ارتباط‌ها نفوذ کند، امکان رمزگشایی داده‌ها را نخواهد داشت. روش کار SSL که از الگوریتم نامتقارن استفاده می‌کند، جذاب و ساده است.

حفظ امنیت ارتباط‌های وب با رمزنگاری

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

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

سوالات متداول زومیت

  • رمزنگاری چیست؟

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

  • رمزنگاری چه پیشینه‌ای در تاریخ بشر دارد؟

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

  • چند نوع الگوریتم رمزنگاری توسعه یافته است؟

    الگوریتم‌های رمزنگاری در حالت کلی دو نوع هستند: ۱. الگوریتم‌ها رمزنگاری با کلید متقارن یا Symmetric و ۲. الگوریتم‌های رمزنگاری با کلید نامتقارن یا Asymmetric. در روش متقارن، رمزنگاری با استفاده از یک کلید انجام می‌شود؛ از جمله‌ی شناخته‌شده‌ترین روش‌های رمزنگاری متقارن باید به AES اشاره کرد. در رمزنگاری نامتقارن، الگوریتم بر اساس کلید عمومی و خصوصی کار می‌کند. RSA مطرح‌ترین روش رمزنگاری نامتقارن است که در بیت کوین نیز مورد استفاده قرار می‌گیرد.

تبلیغات
داغ‌ترین مطالب روز

نظرات

تبلیغات