تولید کلید

از ویکی‌پدیا، دانشنامهٔ آزاد

تولید کلید (رمزنگاری) تولید کلید، فرایندی جهت تولید کلیدهای رمزنگار است. یک کلید برای رمزنگاری و رمزگشایی داده‌هایی که چه رمزشده/رمزگشایی‌شده هستند، استفاده می‌شود. نظام‌های رمزنگاری مدرن شامل الگوریتم‌های کلید متقارن (مانند ِِDEA و AES) و الگوریتم‌های رمزنگاری کلید عمومی (مانند RSA) می‌شود. الگوریتم کلید متقارن از یک کلید مشترک استفاده می‌کند و برای حفظ امنیت داده‌ها باید کلید به عنوان راز محفوظ بماند و تنها دارنده کلید می‌تواند اینگونه داده‌ها را رمزگشایی کند.

از آنجایی که الگوریتم‌های کلید عمومی کندتر از الگوریتم‌های متقارن هستند، سیستم‌های مدرن مانند TLS و SSH از ترکیب این دو بهره می‌برند. یک طرف کلید عمومی طرف مقابل را دریافت کرده و داده‌های کوچکی را رمزنگاری می‌کند (که می‌تواند کلید متقارن یا بخشی از داده‌ها جهت تولید باشد). باقی‌مانده مبادله از یک الگوریتم (معمولاً سریع‌تر) کلید متقارن برای رمزنگاری استفاده می‌کند. رمزنگاری رایانه‌ای از اعداد برای کلیدها استفاده می‌کند. در برخی از موارد کلیدها به صورت تصادفی توسط یکی از روش‌های تولید اعداد تصادفی (RNG) یا ساخت اعداد شبه تصادفی (PRNG)، تولید می‌شود. ساخت اعداد شبه تصادفی یک الگوریتم کامپیوتری است که داده‌هایی را تولید می‌کند که در تحلیل‌ها، تصادفی به نظر می‌آیند. PRNGهایی که از آنتروپی سیستم برای تغذیه داده‌ها استفاده می‌کنند به صورت کلی نتایج بهتری را ایجاد می‌کنند، چرا که حدس شرایط اولیه برای مهاجمان در PRNGها بسیار دشوارتر است. در شرایط دیگر، کلید براساس یک کلمه‌عبور ایجاد می‌شود و یک الگوریتم تولید کلید معمولاً شامل تابعی درهم‌ساز رمزنگاری مانند SHA-۱ می‌شود.

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

امروزه معمولاً کلیدهایی با این طول‌ها استفاده می‌شود:

  • ۱۲۸ بیتی برای الگوریتم‌های متقارن
  • ۱۰۲۴ بیتی برای الگوریتم‌های کلید عمومی