الگوریتمهای رمزنگاری در دنیای سایبر امروزی که همیشه خطر دسترسی غیرمجاز به همه نوع داده وجود دارد امری حیاتی محسوب میشوند. حساسترین و آسیبپذیرترین داده، دادههای سیستم مالی و پرداختی است که میتواند اطلاعات شناسایی شخصی یا مشخصات کارت پرداخت مشتریان و سایر اطلاعات شخصی را در معرض خطر قرار دهد. الگوریتمهای رمزنگاری برای محافظت از این اطلاعات و کاهش خطراتی که مشاغل در انجام معاملات پرداخت با آن روبرو هستند، بسیار مهم است.
رمزگذاری (رمزنگاری) چیست؟
رمزگذاری (رمزنگاری) روشی برای ویرایش اطلاعات به گونهای است که فقط اشخاص مجاز میتوانند اطلاعات را درک کنند. از نظر فنی، این فرآیند تبدیل متن ساده به متن رمز شده است. به عبارت سادهتر رمزگذاری دادههای قابل خواندن را میگیرد و آن را تغییر میدهد تا غیر قابل فهم و تصادفی به نظر برسد. رمزگذاری برای انجام این عمل به استفاده از کلید رمزنگاری نیاز دارد. این کلید مجموعهای از مقادیر ریاضی است که هم فرستنده و هم گیرنده پیام رمزگذاری شده آن را میشناسند.
به نقل از ویکیپدیا، رمزنگاری، دانشی است که به بررسی و شناختِ اصول و روشهای انتقال یا ذخیرهٔ اطلاعات به صورت امن (حتی اگر مسیر انتقال اطلاعات و کانالهای ارتباطی یا محل ذخیره اطلاعات ناامن باشند) میپردازد.
اگرچه دادههای رمزگذاری شده تصادفی به نظر میرسند، اما رمزگذاری به روشی منطقی و قابل پیش بینی انجام میشود، به گونهای که طرفی که دادههای رمزگذاری شده را در اختیار دارد و با اختیار داشتن کلید مورد استفاده برای رمزگذاری دادهها میتواند دادهها را رمزگشایی کند و آن را به متن ساده تبدیل کند. اما یک رمزگذاری امن میبایست بهاندازه کافی پیچیده باشد تا شخص ثالث نتواند آن را حدس بزند و یا با استفاده از ابزارهای مختلف متن رمز شده را تبدیل به متن ساده کند.
تاریخچه رمزنگاری
رمزنگاری و استفاده از کدها و رمزها برای محافظت از اسرار در واقع هزاران سال پیش آغاز شد. این نوع از رمزنگاری را میتوان رمزنگاری کلاسیک نامید، یعنی روشهای رمزنگاری که در آنها از قلم و کاغذ و یا شاید کمکهای مکانیکی ساده استفاده میکنند. در اوایل قرن بیستم، اختراع ماشینهای پیچیده مکانیکی و الکترومکانیکی، مانند دستگاه روتور Enigma، ابزارهای پیچیدهتر و کارآمدتری را برای رمزگذاری فراهم آورد که طرحهای مختلف و پیچیدهای داشتند و هنوز هم برخی از آنها بسیار پیچیده میباشند اما بزرگترین مشکل این نوع از رمزگذاریها استفاده از کاغذ و قلم بود.
این نوع از رمزنگاریها در جنگ جهانی اول مورد استفاده قرار میگرفت اما با تمام پیچیدگیها معایبی را نیز به همراه داشت که سبب شکسته شدن آن میشد. تا اینکه الگوریتمهای رمزنگاری جدید و امنی در این جنگها مورد استفاده قرار گرفت. تا دهه 1960 روشهای این رمزنگاری امن در اختیار دولتها بود و دولتها قادر به رمزگشایی هر اطلاعاتی بودند. اما طولی نکشید تا با ارائه دو استاندارد رمزگذاری عمومی (DES) و اختراع رمزنگاری کلیدی عمومی الگوریتمهای رمزنگاری عمومی شوند.
در این استانداردها هیچکس به جز افرادی که مجاز به دریافت پیام هستند قادر به شکستن اطلاعات کد شده نیستند. شاید از خودتان بپرسید که عمومی شدن الگوریتمهای رمزنگاری چطور باعث شد تا دستیابی به اطلاعات برای اشخاص غیرمجاز غیرممکن شود، در صورتی که با دانستن الگوریتم دیگر هر شخصی میتواند به دادههای اصلی دست یابد. اگر با یک الگوریتم کاملا شفاف و ساده روبرو بودیم عملا وجود این الگوریتمها هیچ تاثیری نداشت اما مشخص نبودن بخشهای حیاتی الگوریتم و همچنین پیچیدگی این الگوریتمها آنقدر بالاست که عملا بدون داشتن اطلاعات مورد نیاز شکست آن غیر ممکن است.
الگوریتمهای رمزنگاری متقارن
رمزگذاری متقارن یک روش رمزگذاری است که از یک کلید واحد برای encryption (رمزگذاری) و decryption (رمزگشایی) دادهها استفاده میکند. این قدیمیترین و شناخته شدهترین تکنیک رمزگذاری است. کلید مخفی میتواند یک کلمه، یک شماره یا یک رشته از کارکترها یا اعداد باشد که توسط یک تولید کننده عدد تصادفی ایمن (Random Number Generator یا RNG) تولید شده است. پیام طبق قوانین الگوریتم رمزگذاری در کلید تغییر میکند. اشخاصی که از طریق رمزگذاری متقارن در حال برقراری ارتباط هستند باید کلید را مبادله کنند تا بتوانند اطلاعات را رمزگذاری و رمزگشایی کنند.
با استفاده از الگوریتمهای رمزگذاری متقارن، دادهها به شکلی تبدیل میشوند که توسط کسی که کلید مخفی برای رمزگشایی را ندارد قابل درک نیست. هنگامی که گیرنده در نظر گرفته شده کلید مخفی پیام را داشته باشد، عکس عمل رمزگذاری جهت رمزگشایی انجام میدهد تا پیام به شکل اصلی و قابل فهم برگردد. برای رمزگذاری در سطح بانکی، کلیدهای متقارن باید با استفاده از RNG ایجاد شوند که مطابق با استانداردهای صنعت، مانند FIPS 140-2 تأیید شود. پنج مؤلفه اصلی در سیستم رمزنگاری متقارن وجود دارد که شامل موارد زیر میشوند:
متن ساده (PlainText)
واژه plaintext به پیام اصلی قابل فهم که نیاز به رمزگذاری دارد گفته میشود. متن ساده معمولا حاوی دادههای حساس است که نباید توسط اشخاص غیرمجاز دیده شوند.
کلید (key)
کلید به عنوان روش رمزگشایی شناسایی میشوند. بدون کلید متن رمزگذاری شده قابل رمزگشایی و خواندن نیست. کلید اطلاعات مربوط به همه سوئیچها و تعویضهای ایجاد شده در متن ساده را در اختیار شما قرار میدهد. در رمزگذاری متقارن که نوعی از رمزگذاری است، کلید نیز میبایست بین طرفین به اشتراک گذاشته شود و روش رمزگشایی جهانی نیست. امکان رمزگشایی به کلید بستگی دارد، زیرا در نهایت فرستنده و گیرنده کلید را به اشتراک میگذارند.
متن رمزنگاری شده (CipherText)
متن رمزنگاری متنی است که رمزگذاری شده و آماده ارسال است. این متن ممکن است مانند یک حاوی مقادیر تصادفی از دادهها باشد و غیرقابل خواندن است.
الگوریتمهای رمزنگاری
یک الگوریتم رمزگذاری در حقیقت فرمولهای ریاضی هستند که برای تبدیل داده (متن ساده) به متن رمزگذاری شده استفاده میشود. در برخی از رمزگذاریها یک الگوریتم برای تغییر داده به روشی قابل پیش بینی از کلید استفاده میکند، به طوری که حتی اگر دادههای رمزگذاری شده تصادفی به نظر برسند، اما میتوان آن را با استفاده دوباره از کلید دوباره به متن ساده تبدیل کرد.
یک مثال ساده از الگوریتم رمزگذاری میتوان در یک متن ساده همه حروف N را به عدد 3 و یا تمام حروف Z را به 1 تغییر دهد. این روال ممکن است چندین تغییر (یا جایگشت) را با متن ساده انجام دهد.
الگوریتم رمزگشایی
در الگوریتم رمزگشایی، کلید مخفی (روش رمزگشایی) بر متن رمزنگاری اعمال شده و آن را به متن ساده تبدیل میکند. رمزگشایی معمولا رمزگذاری را به صورت معکوس انجام میدهد.
انواع الگوریتمهای رمزنگاری متقارن
در الگوریتم رمزگذاری متقارن دو نوع رمزگذاری وجود دارد که با حفظ ماهیت کلی رمزنگاری متقارن اقدام به رمزگذاری داده میکنند.
الگوریتمهای رمزنگاری متقارن قالبی یا قطعهای (Cipher Block)
در این روش اطلاعات به بلاکهای کوچکتر متنی تبدیل شده و با استفاده از یک کلید مخفی خاص رمزگذاری میشوند. اندازه متعارف مورد استفاده برای قطعات در این روش رمزگذاری 64، 128یا 256 بیت است. AES، DES، IDEA، Blowfish، RC5 و RC6 از این نوع از رمزنگاری هستند.
الگوریتمهای رمزنگاری متقارن جریانی (Stream Cipher)
در این روش به جای بلاک بندی اطلاعات هر کاراکتر به تنهایی رمزگذاری میشود. یکی از محبوبترین الگوریتم از این نوع RC4 است که در رمزنگاری WEP در استاندارد 802.11 در شبکه های بیسیم (WIFI) استفاده میشود.
برخی از نمونههای الگوریتمهای رمزنگاری متقارن
رمزنگاری متقارن کاربردهای زیادی در تکنولوژی امروزه دارد. برخی از کارشناسان امنیت تنها الگوریتمهای نامتقارن را پیشنهاد میکنند در صورتی که در بسیاری از موارد کاربردهای این الگوریتم با الگوریتمهای نامتقارن متفاوت است. برخی از پرکاربردترین و محبوبترین الگوریتمهای رمزنگاری متقارن عبارتند از:
- AES
- DES
- IDEA
- Blowfish
- RC4
- RC5
- RC6
مزایا و کاربرد الگوریتمهای رمزنگاری متقارن
با این وجود که رمزگذاری متقارن روشی قدیمی برای رمزگذاری است، اما بسیار سریعتر و کارآمدتر از رمزگذاری نامتقارن است. رمزنگاری نامتقارن به دلیل مشکلات عملکردی و اندازه دادهها و استفاده از پردازندههای سنگین، شبکهها را متضرر میکند. با توجه به عملکرد بهتر و سرعت سریعتر رمزگذاری متقارن (در مقایسه با نامتقارن)، رمزنگاری متقارن معمولاً در رمزگذاری فله (رمزگذاری مقادیر زیادی از دادهها) استفاده میشود.
به عنوان مثال برای رمزگذاری پایگاه داده، کلید مخفی فقط برای رمزگذاری یا رمزگشایی در دسترس پایگاه داده است. برخی از نمونههایی که در آن از رمزنگاری متقارن استفاده میشود عبارتند از:
- برنامههای پرداخت، مانند معاملات کارت که در آن باید از اطلاعات شخصی و مالی محافظت شود تا از سرقت هویت یا اتهامات کلاهبرداری جلوگیری شود.
- استفاده برای تأیید اعتبار برای اینکه ثابت شود فرستنده پیام چه کسی است.
- RNG یا تولید کننده شماره به صورت رندم یا هشینگ
معایب الگوریتمهای رمزنگاری متقارن
متأسفانه رمزگذاری متقارن با مشکلات خاص خود همراه است. یکی از مهمترین نقطه ضعفهای آن جنبههای مدیریت کلید در آن است که مشکلات زیر را در پی دارد:
فرسودگی کلید
یکی از مشکلات بزرگ در رمزگذاری متقارن این است که در آن با هر بار استفاده از کلید، اطلاعاتی را فاش میکند که میتواند توسط مهاجمی برای بازسازی کلید استفاده شود. روش دفاعی در برابر این مشکل نیز استفاده از یک سلسله مراتب کلیدی برای اطمینان از عدم استفاده بیش از حد از کلیدهای رمزگذاری اصلی برای حجم بزرگی از رمزگذاری دادهها است.
تخصیص داده
بر خلاف رمزگذاریهای نامتقارن یا کلید عمومی، کلیدهای متقارن دارای فوق دادههای جاسازی شده برای ثبت اطلاعاتی مانند تاریخ انقضا یا لیست کنترل دسترسی در استفاده از کلید ممکن نیستند.
مدیریت کلید در مقیاس بزرگ
مدیریت چند کلید در یک طرح کوچک تا متوسط که زیر چندصد نقش دارند میتوان از طریق دستی و از طریق فعالیتهای انسانی انجام شود. اما در مقیاسهای بزرگ، ردیابی انقضا و تنظیم چرخش کلیدها غیر عملی میشود. به عنوان مثال در کارتهای پرداخت بانکی را در نظر بگیرید که میلیونها کارت چاپ شده وجود دارد که به چندین کلید در هر کارت، و به یک سیستم اختصاصی و سیستم مدیریت کلید جامع نیاز دارند.