زمان مطالعه تقریبی: ۳ دقیقه

معرفی KDF

یک تابع استخراج کلید (KDF) یک جزء اساسی و ضروری در یک سیستم رمزنگاری است که هدف آن ایجاد یک کلید از منابع مختلف می باشد و معمولا از مقادیر تصادفی به خوبی در آن استفاده می شود تا یک مهاجم نتواند با استفاده از توزیع های یکنواخت به اطلاعات حساسی برسد . معمولا از KDF ها برای ایجاد یک یا چند کلید مخفی قوی با استفاده از مقادیر مختلفی نظیر کلیدهای اصلی ، رمزهای عبور ، یا عبارت های عبور استفاده می شود .
در واقع KDF ها توابع یا الگوهایی برای استخراج کلید از سایر اطلاعات مخفی هستند . این اطلاعات مخفی ممکن است یک کلید مخفی دیگر یا رمزهای عبور در کنار اطلاعاتی کاملا تصادفی باشند به گونه ای که مهاجم به راحتی نمی تواند از اطلاعات موجود برای انجام حملات مختلف استفاده کند .
KDF ها می توانند با استفاده از بسط کلیدها به کلیدهای بلندتری برسند یا به بازتولید کلیدها با فرمت های گوناگون دست یابند .شکل های مختلفی از KDF ها وجود دارد که به تمامی آن ها در اصطلاح کلی KDF یاTLS و یا PRF (توابع شبه تصادفی) گفته می شود .
معمولا اکثر KDF ها دارای محدودیت های بسیاری در ورودی اطلاعات خود می باشند و بزرگترین مشکلی که آن ها با آن مواجه هستند این است که باید دارای پارامترهای مشابه ای برای پیکربندی باشند .
یک ایده جذاب و نو برای KDF ها این است که از آن ها به صوت یک طرفه (one way) استفاده شود تا بدین شکل خروجی به راحتی قابل تشخیص نباشد . در چنین طرحی مواد مصرفی (اطلاعات محرمانه) در ورودی حاوی مقادیر مشخصی هستند که در کنار اطلاعات کاملا تصادفی قرار می گیرند و فرآیندی مشابه MAC (Message Authentication Code) بر روی آن ها اعمالمی شود .
در ادامه به چندین کاربرد مهم KDF ها می پردازیم :
  • تقویت کلید و بسط دادن کلید
  • بدست آوردن کلیدهای با طول های مختلف
  • بدست آوردن کلیدهای از رمزهای عبور مخفی یا عبارت های عبور
  • ایجاد کلیدهایی یا چندین مولفه از پروتکل های مختلف
  • استفاده از آن در تولید پارامترهای غیر مخفی نظیر نمک ها (Salt)
  • استخراج یک یا چند کلید از یک مقدار مخفی مشترک که به این خاصیت تنوع کلید یا (Key Diversification) گفته می شود . چنین امکانی می تواند جلوی یادگیری اطلاعات و مقادیر مخفی را توسط مهاجمان بگیرد و جلوی تولید کلیدهای ضعیف را می گیرد .

گردآورنده : مسعود معاونی

https://telegram.me/moaveni_ir