Mojtaba Montakhabi 502 روز پیش EEL
بازدید 647 بدون دیدگاه

روش های رمزنگاری اطلاعات

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

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

 

روش های رمزنگاری اطلاعات

 

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

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

رمزنگاری امپراتور سزار

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

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

 

روش های رمزنگاری اطلاعات

 

فهرست مطالب

  1. روش های رمزنگاری اطلاعات
    1. رمز نگاری چگونه کار می کند؟
      1. کلیدهای دیجیتال
      2. Kerckhoffs
      3. گسترش کلید
      4. مشکل توزیع کلید
    2. روش های رمزنگاری
    3. رمزگذاری متقارن
      1. DES
      2. AES
    4. روش های رمزنگاری نامتقارن
      1. RSA
      2. ID-Based

 

 

رمز نگاری چگونه کار می کند؟

یک روش رمزنگاری از دو جزء اساسی تشکیل می شود: یک الگوریتم رمزنگاری و یک کلید. در حالی که الگوریتم روش رمزگذاری را توصیف می نماید (به عنوان مثال، “هر حرف را به ترتیب حروف الفبا حرکت دهد”)، کلید پارامترها را ارائه می دهد (“C = سه مرحله”). بنابراین رمزگذاری را می توان به عنوان روشی توصیف نمود که توسط آن متن ساده و یک کلید از طریق یک الگوریتم رمزنگاری عبور داده می شود و یک متن مخفی تولید می شود.

 

کلیدهای دیجیتال

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

جهت توضیح حملات brute force، از رمز سزار به عنوان مثال استفاده می نماییم. فضای کلید آن 25 می باشد – که درنتیجه طول کلید آن کمتر از 5 بیت است. یک کد شکن برای رمزگشایی متن ساده فقط بایستی 25 ترکیب را امتحان نماید، بنابراین رمزگذاری با استفاده از رمز سزار مانعی جدی ایجاد نمی کند. از سوی دیگر، روش‌های رمزگذاری مدرن، از کلیدهایی استفاده می‌کنند که می‌توانند به طور قابل توجهی دفاع بیشتری را ارائه دهند. برای مثال، استاندارد رمزگذاری پیشرفته (AES مخفف Advanced Encryption Standard)، امکان انتخاب طول کلیدهای 128، 192 یا 256 بیتی را ارائه می دهد. در نتیجه طول کلید این روش بر این اساس بسیار زیاد است.

حتی با رمزگذاری 128 بیتی AES، برای آن 2128 شرایط را می توان اینگونه ترسیم نمود که با بیش از 240×1021 ترکیب کلیدی ممکن مطابقت دارد. اگر AES با 256 بیت فعالیت نماید، تعداد کلیدهای ممکن بیش از 115×1075 خواهد بود. حتی با تجهیزات فنی مناسب و سیستم های رایانه ای فوق پیشرفته، آزمایش همه ترکیب‌های ممکن ابد و یک روز به طول خواهد کشید. با فناوری امروزی، حملات brute force نبست به طول کلید AES عملیاتی نیستند. بر اساس گزارش EE Times، جهت شکستن یک کلید AES 128 بیتی، یک ابر رایانه 1 میلیارد میلیارد سال طول می کشد تا شاید موفق شود که بیشتر از سن کیهان است.

اصل کرکهف Kerckhoffs’ principle

به دلیل طول کلید طولانی، حملات brute force علیه روش‌های رمزنگاری مدرن دیگر تهدیدی به شمار نمی آیند. در عوض، کد شکن ها به دنبال نقاط ضعفی در الگوریتم هستند که کاهش زمان محاسبات جهت رمزگشایی داده های رمزنگاری شده را ممکن می سازد. رویکرد دیگر بر حملات به اصطلاح کانال جانبی به لاتین side channel attacks متمرکز است که اجرای یک سیستم رمزنگاری در یک دستگاه یا نرم افزار را هدف قرار می دهد. محرمانه بودن یک فرآیند رمزگذاری برای امنیت آن بسیار مفید است.

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

گسترش کلید: از رمز عبور به کلید

کاربرانی که می‌خواهند فایل‌ها را رمزنگاری یا رمزگشایی نمایند، معمولاً با کلیدها در تماس نیستند، اما در عوض از یک دنباله قابل مدیریت تر استفاده می نمایند: “رمز عبور”. رمزهای عبور ایمن بین 8 تا 12 کاراکتر را دارا می باشند، از ترکیبی از حروف، اعداد و کاراکترهای خاص استفاده می نمایند و مزیت قاطعی نسبت به توالی بیت دارند: افراد می توانند رمزهای عبور را بدون نیاز به تلاش زیاد به خاطر بسپارند.

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

یک روش محبوب برای ایجاد کلید از رمزهای عبور، PBKDF2 مخفف (Password- Based Key Derivation Function 2) می باشد. در این روش، رمزهای عبور با یک رشته تصادفی شبه(ساختگی) به نام مقدار نمک salt تکمیل می شوند و سپس با استفاده از توابع هش رمزنگاری و به دنباله بیتی از طول مورد نظر نگاشت می شوند.

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

در فریم ورک PBKDF2، محاسبه ریاضی در چندین تکرار (تجدید) انجام می شود تا از کلید تولید شده در برابر حملات brute force محافظت شود. مقدار نمک تلاش بازسازی رمز عبور را بر اساس جداول رنگین کمان افزایش می دهد. جدول رنگین کمان یک الگوی حمله است که توسط کد شکن ها جهت بسته شدن مقادیر هش ذخیره شده به یک رمز عبور ناشناخته استفاده می شود.

سایر روش‌های هش رمز عبور عبارتند از scrypt، bcrypt، و LM-Hash، اما روش بعدی قدیمی و ناامن در نظر گرفته می‌شود.

مشکل توزیع کلید

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

همین سوال امروزه رمزنگاران را در تلاش جهت انتقال داده های رمزگذاری شده از طریق اینترنت مشغول نگه می دارد. راه حل های پیشنهادی در توسعه سیستم های رمزنگاری مختلف و پروتکل های تبادل کلید گنجانده شده است. مشکل توزیع کلیدی سیستم های رمزنگاری متقارن “symmetric” را می توان به عنوان انگیزه اصلی برای توسعه روش های رمزگذاری نامتقارن “asymmetric” در نظر گرفت.

طبقه بندی روش های رمزگذاری

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

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

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

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

  1. رمزهای جریانی: هر کاراکتر یا بیت از متن ساده به یک کاراکتر یا بیتی از جریان کلید مرتبط است که به یک کاراکتر خروجی رمزگذاری شده ترجمه می شود.
  2. رمزهای بلوکی: کاراکترها یا بیت هایی که باید رمزگذاری شوند در بلوک های با طول ثابت ترکیب شده و به یک رمز با طول ثابت نگاشت می شوند.

روش‌های رمزگذاری رایج برای سیستم‌های رمزنگاری متقارن، عملیات نسبتاً ساده‌ای مانند جانشانی و جابه‌جایی هستند که در روش‌های مدرن ترکیب می‌شوند و در چندین دور متوالی (تکرار) روی متن ساده اعمال می‌شوند. عمل جمع، ضرب، محاسبات ماژولار، و عملیات XOR نیز در الگوریتم های رمزگذاری متقارن مدرن گنجانده شده است.

روش‌های معروف رمزگذاری متقارن شامل استاندارد رمزگذاری داده (DES مخفف Data Encryption Standard) امروزه منسوخ شده است و جایگزین آن، استاندارد رمزگذاری پیشرفته (AES مخفف Advanced Encryption Standard) می باشد.

 

DES یا Data Encryption Standard

DES یا استاندارد رمزگذاری داده یک روش رمزگذاری متقارن است که توسط IBM در دهه 1970 توسعه یافت و در سال 1977 توسط موسسه ملی استاندارد و فناوری ایالات متحده (NIST) استاندارد شد. بر اساس استانداردهای آن زمان، DES یک روش رمزگذاری ایمن و با کمک کامپیوتر بود و اساس رمزنگاری مدرن را تشکیل داد. این استاندارد ثبت اختراع نشده است، اما به دلیل طول کلید نسبتا کم 64 بیت (در عمل فقط 56 بیت)، اساساً جهت استفاده امروزی منسوخ شده است. در اوایل سال 1994، این سیستم رمزنگاری تنها با 12 ایستگاه کاری HP-9735 و یک تلاش محاسباتی 50 روزه شکسته شد. با فناوری امروزی، یک کلید DES را می توان تنها در چند ساعت با استفاده از حملات brute force شکست.

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

الگوریتم رمزگذاری DES یک شبکه به اصطلاح Feistel است و بر اساس ترکیبی از جایگزینی ها و جابجایی های انجام شده در 16 تکرار (دوره) است. این فرآیند که به نام هورست فیستل کارمند IBM نامگذاری شده است، در چهار مرحله قابل توصیف است:

  1. جایگشت اولیه: بلوک متن ساده 64 بیتی شامل یک جایگشت ورودی است که ترتیب بیت ها را تغییر می دهد. نتیجه این جایگشت در دو ثبات 32 بیتی نوشته می شود. این فرایند منجر به یک نیمه بلوک چپ (L) و یک نیمه بلوک راست (R) می شود.
  2. جایگشت کلید: 56 بیت کلید که مربوط به رمزگذاری هستند نیز تحت یک جایگشت قرار می گیرند و سپس به دو بلوک 28 بیتی (C و D) تقسیم می شوند. برای هر 16 تکرار، یک کلید دوره ای از هر دو بلوک کلید C و D تولید می شود. برای این کار، بیت های هر دو نیمه بلوک به ترتیب 1 یا 2 بیت به صورت چرخه ای به سمت چپ منتقل می شوند. فرایند بایستی تضمین نماید که در هر دور رمزگذاری، یک کلید دوره ای متفاوت گنجانده شده است. پس از آن، دو نیم بلوک C و D بر روی یک کلید دوره ای 48 بیتی نگاشت می شوند.
  3. دور رمزگذاری: هر دوره رمزگذاری شامل مراحل 1 تا 4. برای هر حلقه، نیم بلوک R و یک کلید چرخه در رمزگذاری وارد می شود. نیم بلوک L ابتدا در خارج باقی می ماند.
    1. بسط: نیم بلوک R با استفاده از بسط به یک بلوک 48 بیتی گسترش می یابد. برای این کار، 32 بیت از نیم بلوک به عنوان بخشی از بسط به گروه های 4 بیتی تقسیم می شوند، و سپس تا حدی کپی شده و طبق طرح زیر تغییر می کنند:

     

    بسط DES گسترش DES، ویکی پدیا: https://de.wikipedia.org/wiki/Datei:Des_expansion.svg

     

    1. لینک XOR بلوک داده و چرخه کلید: در هر دور رمزگذاری، یک بلوک گسترش یافته 48 بیتی R با یک چرخه کلید 48 بیتی با استفاده از عملیات XOR لینک داده می شود. نتیجه پیوند XOR به نوبه خود یک بلوک 48 بیتی است.
    2. جعبه های S (جعبه های جایگزین): پس از عملیات XOR، بلوک 48 بیتی به هشت بلوک 6 بیتی تقسیم می شود و با استفاده از جعبه های S با هشت بلوک 4 بیتی جایگزین می شود و سپس به یک بلوک 32 بیتی ترکیب می شود. نتیجه جعبه‌های جایگزین دوباره در معرض تغییر قرار می‌گیرد.
    3.  لینک XOR بلوک R و بلوک L: پس از هر دور رمزگذاری، نتیجه جعبه‌های S با بلوک‌های L هنوز استفاده نشده از طریق XOR مرتبط می‌شود. نتیجه یک بلوک 32 بیتی است که سپس به عنوان یک بلوک R جدید وارد فاز رمزگذاری دوم می شود. بلوک R دور اول به عنوان بلوک L دور دوم عمل می کند.

     

  4. جایگشت نهایی: چنانچه تمامی 16 چرخه رمزگذاری تکمیل شده باشد، بلوک های L و R در یک بلوک 64 بیتی ترکیب می شوند و در معرض یک جایگشت خروجی معکوس برای جایگشت نهایی قرار می گیرند. اکنون متن ساده رمزگذاری شده است.

نمودار زیر یک نمایش شماتیک از الگوریتم DES را نشان می دهد. اتصال های XOR به صورت دایره های قرمز با عمل جمع (صلیب) سفید مشخص شده اند.

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

رمزگشایی متون و یا داده های مخفی رمزگذاری شده DES از همین طرح پیروی می نماید، البته به ترتیب معکوس. انتقاد عمده از DES این است که طول کلید کوچک 56 بیتی باعث فضای نسبتاً کوچک کلید می شود. این طول دیگر نمی تواند در برابر حملات brute force که با قدرت محاسباتی امروزی موجود است مقاومت نماید. روش جایگشت کلید، که 16 کلید چرخه ای تقریباً یکسان تولید می نماید، بسیار ضعیف در نظر گرفته می شود.

پس از ارائه DES طرح دیگری از DES به شکل Triple-DES (3DES) توسعه داده شد، که در آن روش رمزگذاری در سه دور متوالی اجرا می‌شود. اما طول کلید موثر 3DES نیز فقط 112 بیت است که کمتر از حداقل استاندارد امروزی 128 بیتی می باشد. علاوه بر این، 3DES نسبت به DES در کامپیوتر منابع و عملکرد بیشتری را تقاضا می نماید.
بنابراین استاندارد رمزگذاری داده تا حد زیادی جایگزین شده است. الگوریتم Advanced Encryption Standard جایگزین آن گردیده و البته AES هم یک رمزگذاری متقارن می باشد.

استاندارد رمزگذاری پیشرفته (AES)

در دهه 1990، آشکار شد که DES، رایج ترین استاندارد رمزگذاری مورد استفاده، دیگر از نظر فناوری به روز نیست. یک استاندارد رمزگذاری جدید مورد نیاز بود. به عنوان جایگزین آن، توسعه دهندگان Vincent Rijmen و Joan Daemen الگوریتم Rijndael (تلفظ “Rain-dahl”) را ایجاد نمودند – روشی که به دلیل امنیت، انعطاف پذیری و عملکرد آن، به عنوان یک مناقصه عمومی اجرا شد و توسط NIST با عنوان Advanced Encryption Standard یا استاندارد رمزنگاری پیشرفته (AES) در پایان سال 2000 تایید شد.

AES همچنان مانند DES متن ساده رمزگذاری شده را به بلوک‌ها تقسیم می نماید، بنابراین سیستم دقیقاً مانند DES مبتنی بر رمزگذاری بلوک است. این استاندارد از کلیدهای 128، 192 و 256 بیتی پشتیبانی می نماید. البته به جای بلوک های 64 بیتی، AES از بلوک های 128 بیتی بسیار بزرگتر استفاده می نماید که با استفاده از یک شبکه جایگزینی جایگشتی (SPN) در چندین چرخه متوالی رمزگذاری می شوند. جایگزین DES همچنین از یک کلید دوره ای جدید برای هر دور رمزگذاری استفاده می نماید که به صورت بازگشتی از کلید خروجی مشتق می شود و با بلوک داده پیوند داده می شود تا با استفاده از XOR رمزگذاری شود. فرآیند رمزگذاری تقریباً به چهار مرحله تقسیم می گردد:

  1. گسترش کلید: AES مانند DES از یک کلید چرخه ای جدید برای هر حلقه رمزگذاری استفاده می نماید که در واقع از مشتق کلید خروجی از طریق بازگشت به دست می‌آید. در این فرآیند، طول کلید خروجی نیز افزایش می‌یابد تا بتوان تعداد مورد نیاز کلیدهای چرخه 128 بیتی را ترسیم نمود. هر کلید دوره ای بر اساس بخش جزئی کلید خروجی گسترش یافته است. تعداد کلیدهای چرخه مورد نیاز برابر است با تعداد دور (R)، از جمله دور کلید، به اضافه یک کلید چرخه برای دور مقدماتی (تعداد کلید = R + 1).
  2. دور مقدماتی: در دور مقدماتی، بلوک ورودی 128 بیتی به یک جدول دو بعدی (Array) منتقل شده و با استفاده از XOR (KeyAddition) به کلید دور اول پیوند داده می شود. جدول از چهار سطر و چهار ستون تشکیل شده است. هر سلول حاوی یک بایت (8 بیت) از بلوک است که باید رمزگذاری شود.
  3. دورهای رمزگذاری: تعداد دورهای رمزگذاری به طول کلید مورد استفاده بستگی دارد: 10 دور برای AES128، 12 دور برای AES192، و 14 دور برای AES256. هر دور رمزگذاری از عملیات زیر بهره می برد:
    1.  SubBytes: ساب بایت ها یک جایگزین تک کاراکتر یا الفبایی است. هر بایت در بلوکی که باید رمزگذاری شود با یک معادل با استفاده از S-box جایگزین می شود.
    2. ShiftRows: در تبدیل ShiftRow، بایت ها در سلول های آرایه به طور مداوم با توجه به نام آن از ردیف ها سمت چپ جابه جا می شوند.
    3. MixColumns: با MixColumns یا در واقع ادقام ستونی، الگوریتم AES از تبدیلی استفاده می نماید که به موجب آن داده ها در ستون های آرایه مخلوط می شوند. این مرحله بر اساس محاسبه مجدد هر سلول جداگانه است. برای انجام این کار، ستون های آرایه تحت یک ضرب ماتریس قرار می گیرند و نتایج با استفاده از XOR پیوند داده می شوند.
    4. KeyAddition یا اضافه کردن کلید: در پایان هر دور رمزگذاری، KeyAddition دیگری انجام می شود. که در واقع، درست مانند دور مقدماتی، مبتنی بر پیوند XOR از بلوک داده با کلید دور فعلی است.
  4. دور کلید: دور کلید آخرین دور رمزگذاری AES می باشد. برخلاف دورهای قبلی، تبدیل‌های MixColumn را شامل نمی‌شود، و بنابراین فقط شامل عملیات SubBytes، ShiftRows و KeyAddition می‌شود. نتیجه دور نهایی متن رمزنگاری شده است.

رمزنگاری داده های رمزگذاری شده با AES بر اساس سرمایه الگوریتم رمزنگاری می باشد که نه تنها به دنباله مراحل، بلکه به عملیات ShiftRow، MixColumns و SubBytes نیز اشاره دارد که جهت آنها نیز معکوس است. AES به جهت ارائه سطح بالایی از امنیت در نتیجه الگوریتم خود دارای گواهینامه می باشد و حتی تا به امروز نیز، هیچ حمله مرتبط عملی شناخته شده ای وجود نداشته است. حملات Brute force در برابر طول کلید حداقل 128 بیتی آن ناکارآمد هستند. عملیات‌هایی مانند ShiftRows و MixColumns نیز ترکیب بهینه بیت‌ها را تضمین می نمایند: در نتیجه، هر بیت به یک کلید وابسته است. سیستم رمزنگاری نه تنها به دلیل این اقدامات، بلکه به دلیل اجرای ساده و سطح بالای محرمانه بودن آن، اطمینان بخش است. AES، در میان الگوریتم های دیگر، به عنوان یک استاندارد رمزگذاری برای انواع پروتکل های شبکه شامل WPA2، SSH و IPSec استفاده می شود. این الگوریتم همچنین برای رمزگذاری آرشیو فایل های فشرده مانند 7-Zip یا RAR استفاده می گردد.

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

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

جایگزین‌ های موجود برای AES، سیستم‌های رمزنگاری متقارن MARS، RC6، Serpent و Twofish هستند که بر اساس رمزنگاری بلوکی می باشند و در کنار Rjindael جزو فینالیست‌های مناقصه AES بودند. Blowfish، سلف Twofish، نیز هنوز در حال استفاده است. Salsa20 که توسط Daniel J. Bernstein در سال 2005 توسعه یافت، یکی از فینالیست های پروژه eSTREAM اروپا است.

 

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

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

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

مثال: کاربر Alice می خواهد برای کاربر BOB یک پیام رمزگذاری شده ارسال نماید. برای این کار، A به کلید عمومی B نیاز دارد. کلید عمومی B به A اجازه می دهد پیامی را رمزگذاری نماید که فقط کلید خصوصی B قادر به رمزگشایی است. به جز B، هیچ کس قادر به خواندن پیام نیست. حتی A هم راهی برای رمزگشایی ندارد.

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

عیب این روش رمزگذاری این است که B نمی تواند صد در صد مطمئن باشد که پیام رمزگذاری شده واقعاً از A می آید. از لحاظ نظری، کاربر سوم (C) می تواند از کلید عمومی B برای رمزگذاری یک پیام استفاده نماید – به عنوان مثال، برای انتشار بدافزار. علاوه بر این، A نمی تواند مطمئن باشد که کلید عمومی واقعاً متعلق به B است. یک کلید عمومی می تواند توسط C ایجاد شده باشد و به عنوان کلید B برای رهگیری پیام از A به B داده شود. برای رمزگذاری نامتقارن، مکانیزمی لازم است. تا کاربران بتوانند احراز هویت شرکای ارتباطی خود را آزمایش نمایند و در غیر اینصورت حمله Man in The Midle  یا MitM امکان پذیر می گردد.

گواهینامه ها Digital certificates و امضاهای دیجیتال Digital signatures راه حل این مشکل می باشند.

  1. گواهی‌های دیجیتال: جهت ایمن ساختن روش‌های رمزگذاری نامتقارن، شرکای ارتباطی می‌توانند اصالت کلیدهای عمومی خود را توسط یک نهاد رسمی صدور گواهی تایید نمایند. یک استاندارد محبوب برای صدور گواهینامه کلید عمومی X.509 می باشد. برای مثال، در انتقال داده های رمزگذاری شده TLS/SSL از طریق HTTPS یا به عنوان بخشی از رمزگذاری ایمیل از طریق S/MIME استفاده می شود.
  2. امضای دیجیتال: در حالی که گواهی های دیجیتال را می توان برای تأیید کلیدهای عمومی استفاده نمود، امضای دیجیتال برای شناسایی فرستنده پیام رمزگذاری شده بدون تردید استفاده می شود. برای تولید امضا از کلید خصوصی استفاده می شود. سپس گیرنده این امضا را با استفاده از کلید عمومی فرستنده تأیید می نماید. اصالت امضای دیجیتال از طریق یک زیرساخت کلید عمومی با ساختار سلسله مراتبی (PKI) ایمن می شود. یک جایگزین غیرمتمرکز برای PKI سلسله مراتبی، به اصطلاح Web of Trust (WoT) است، شبکه ای که در آن کاربران می توانند به طور مستقیم و غیرمستقیم یکدیگر را تأیید نمایند. اولین انتشار علمی روش های رمزگذاری نامتقارن در سال 1977 توسط ریاضیدانان Rivest، Shamir و Adleman انجام شد. روش RSA که به نام مخترعان نامگذاری شده است، مبتنی بر توابع یک طرفه با یک درب تله trapdoor می باشد و می تواند برای رمزگذاری داده ها و همچنین به عنوان یک روش امضا استفاده شود.

 

Rivest, Shamir, Adleman (RSA)
RSA یکی از ایمن ترین و بهترین روش های توصیف شده کلید عمومی است. ایده رمزگذاری با استفاده از یک کلید رمزگذاری عمومی و یک کلید رمزگشایی مخفی را می توان در تحقیقات رمزنگاران مشهوری چون Whitfield Diffie و Martin Hellman جستجو نمود. این روش در سال 1976 به عنوان تبادل کلید Diffie-Hellman دیفی-هلمن منتشر شد که دو مشترک ارتباطی را قادر می‌سازد تا روی یک کلید مخفی از طریق یک کانال ناامن توافق نمایند. محققان بر روی پازل های مرکل که توسط رالف مرکل ساخته شده است، تمرکز نمودند، بنابراین گاهی اوقات به آن تبادل کلید دیفی-هلمن-مرکل (DHM) نیز می گویند.
رمزنگاران از توابع ریاضی یک طرفه استفاده نمودند که پیاده سازی آنها آسان است، اما تنها با تلاش محاسباتی قابل توجه قابل برگشت هستند. حتی امروزه، کلید رد و بدل شده به نام آنها در مبادله کلیدهای مخفی در سیستم های رمزنگاری متقارن استفاده می شود. یکی دیگر از محاسن تحقیق این دو، مفهوم درب تله است.(trapdoor) در انتشارات تبادل کلید Diffie-Hellman، اختصارات پنهان پیشتر مورد اشاره قرار گرفته اند که به این جهت در نظر گرفته شده اند تا سرعت وارونگی یک تابع یک طرفه را افزایش دهند. دیفی و هلمن دلیل مشخصی ارائه نکردند، اما نظریه آنها در مورد درب تله، رمزنگاران مختلف را تشویق می نماید تا تحقیقات خود را انجام دهند.

Rivest، Shamir و Adleman نیز با توابع یک طرفه جستجو خود را آغاز نمودند – البته در اصل به قصد رد نظریه trapdoor. اما تحقیقات آنها در نهایت مسیر دیگری را در پیش گرفت و در عوض منجر به فرآیند رمزگذاری به نام آنها شد. امروزه، RSA اولین الگوریتم علمی منتشر شده است که امکان انتقال داده های رمزگذاری شده را بدون استفاده از کلید مخفی ارائه می دهد.
RSA از الگوریتمی استفاده می کند که بر اساس ضرب اعداد اول بزرگ می باشد. در حالی که معمولاً هیچ مشکلی برای ضرب دو عدد اول در 100، 200 یا 300 رقم وجود ندارد، هنوز هیچ الگوریتم کارآمدی وجود ندارد که بتواند نتیجه چنین محاسباتی را به فاکتورهای اول آن معکوس نماید. فاکتورسازی اولیه را می توان با این مثال توضیح داد:
اگر عدد اول 14629 و 30491 را ضرب نمایید حاصل ضرب عدد 446052839 می شود. این فقط چهار مقسوم‌ علیه ممکن دارد: یکی خودش است و دوتای دیگر اعداد اول اصلی هستند که ضرب شده‌اند. اگر دو مقسوم‌ علیه اول را تقسیم نمایید، مقادیر اولیه 14629 و 30491 به دست می‌آید، چراکه هر عدد بر 1 و بر خودش بخش‌پذیر است. این نکته اساس تولید کلید RSA است. هر دو کلید عمومی و خصوصی دو زوج عدد را نشان می دهند:

  1. کلید عمومی: (e، N)
  2. کلید خصوصی: (d، N)

N به اصطلاح ماژول RSA می باشد که در هر دو کلید وجود دارد و از حاصل ضرب دو عدد اول بسیار بزرگ p و q به طور تصادفی انتخاب شده است (N = p x q).

برای تولید کلید عمومی، به e نیاز دارید، عددی که به طور تصادفی با توجه به محدودیت‌های خاصی انتخاب می‌شود. جهت دریافت کلید عمومی که به صورت متنی به هر مشترک ارتباطی داده می شود، بایستی N و e را بیایید. برای تولید کلید خصوصی، به N و همچنین d نیاز دارید چراکه حاوی مقدار حاصل از اعداد اول تصادفی p و q و همچنین عدد تصادفی e هستند که بر اساس تابع فی اویلر (φ) محاسبه می‌شود.

اینکه کدام اعداد اول وارد محاسبات کلید خصوصی می شوند باید مخفی بماند تا امنیت رمزگذاری RSA تضمین شود. با این حال، حاصل ضرب هر دو عدد اول را می توان در کلید عمومی به صورت متن ساده استفاده نمود، چراکه فرض بر این است که امروزه هیچ الگوریتم کارآمدی وجود ندارد که بتواند حاصل را به اعداد عامل اول آن در مدت زمان مناسب معکوس نماید. همچنین نمی توان p و q را از N محاسبه نمود، مگر اینکه محاسبه را بتوان به اختصار انجام داد که در واقع trapdoor مقدار d را نشان می دهد که فقط برای صاحب کلید خصوصی شناخته شده است.

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

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

روش کلید عمومی مبتنی بر شناسه

مشکل اصلی با روش های رمزگذاری نامتقارن، احراز هویت کاربر است. در روش های کلاسیک کلید عمومی، کلید عمومی به هیچ وجه با هویت کاربر خود مرتبط نیست. اگر شخص ثالثی بتواند با تظاهر به اینکه یکی از طرفین درگیر در انتقال داده های رمزگذاری شده است، از کلید عمومی استفاده نماید، می تواند کل سیستم رمزنگاری را بدون نیاز به حمله مستقیم به الگوریتم یا کلید رمزگشایی خصوصی غیرفعال نماید. در سال 1984، Adi Shamir، یکی از توسعه دهندگان RSA، سیستم رمزنگاری مبتنی بر ID یا روش ID-based public key method را پیشنهاد نمود که مبتنی بر رویکرد نامتقارن است اما تلاش می کند بر ضعف آن غلبه نماید.
در رمزگذاری مبتنی بر هویت (IBE)، کلید عمومی یک طرف ارتباطی بدون وابستگی به کلید خصوصی تولید نمی گردد، بلکه از یک شناسه منحصر به فرد تولید می شود. بسته به محتوا، به عنوان مثال، یک آدرس ایمیل یا دامنه می تواند استفاده شود. این امر نیاز به احراز هویت کلید عمومی از طریق مراجع رسمی صدور گواهی را از میان می برد. در عوض، مولد کلید خصوصی (PKG) جای آن را می گیرد. در واقع یک الگوریتم مرکزی است که با آن گیرنده پیام رمزگذاری شده می تواند یک کلید رمزگشایی متعلق به هویت خود را صادر نماید.

تئوری رمزگذاری مبتنی بر شناسه یک مشکل اساسی سیستم رمزنگاری نامتقارن را حل می‌کند و به جای آن دو شکاف امنیتی دیگر را معرفی می نماید: یک نقطه اصلی انتقاد این است که چگونه کلید رمزگشایی خصوصی از PKG به گیرنده پیام رمزگذاری شده منتقل می‌شود. در اینجا مشکل کلیدی آشنا دوباره به وجود می آید.
یکی دیگر از نقاط ضعف روش مبتنی بر ID شرایطی است که موجودیت دیگری در کنار گیرنده یک پیام رمزگذاری شده وجود دارد که سپس کلید رمزگشایی را از PKG پیدا می نماید. بنابراین، کلید، بنا به تعریف، دیگر خصوصی نیست و می توان از آن سوء استفاده نمود. از نظر تئوری، PKG قادر به رمزگشایی تمام پیام‌های غیرمجاز است. این را می توان با تولید زوج کلید با استفاده از نرم افزار منبع باز در رایانه شخصی خود انجام داد.
محبوب ترین روش مبتنی بر شناسه را می توان در تحقیقات Dan Boneh و Matthew K. Franklin جستجو نمود.

 

آموزش شبکه

link

 

 

نظرات کاربران

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

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
Click outside to hide the comparison bar
مقایسه