همه چیز درباره ی رمزنگاری و انواع الگوریتم های آن

رمزنگاری یکی از پرکاربردترین فناوری های دنیای امروز محسوب می شود که جزئیات فنی جالب توجهی دارد. در ادامه ی این مطلب با جنبه های گوناگون رمزنگاری آشنا می شوید.

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

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

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

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

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

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

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

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

رمز (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 انتخابی عالی خواهد بود.

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

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

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

  • الگوریتم های دارای کلیدهای متقارن (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، رمز ارزها و رمزنگاری ایمیل ها اشاره کرد.

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

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

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

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

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

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

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

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

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

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

منبع: زومیت.

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

نشانی ایمیل شما منتشر نخواهد شد.

4 × سه =

لطفا پاسخ عبارت امنیتی را در کادر بنویسید. *