🤝 چطور میشه روی یه راز مشترک توافق کرد، وقتی همه دارن گوش میدن؟
تا حالا شده فکر کنی وقتی با یه سایت ارتباط امن برقرار میکنی، چطور طرفین روی یه key مشترک توافق میکنن بدون اینکه اون key رو مستقیم روی شبکه بفرستن؟ اینجاست که Diffie-Hellman key exchange وارد میشه؛ روشی که به دو نفر اجازه میده روی یه راز مشترک توافق کنن، حتی اگه یه نفر وسط راه تمام پیامهاشون رو شنود کنه.
داستانش اینه که از ریاضیات ماژولار استفاده میشه. هر دو طرف روی یه عدد اول بزرگ و یه base عمومی توافق میکنن و بعد هر کدوم یه private key برای خودشون انتخاب میکنه. اونا خروجی یه توانرسانی خاص رو برای هم میفرستن که برای یه شنودکننده، پیدا کردن private key از روی اون خروجی (به دلیل سخت بودن Discrete Logarithm Problem) از نظر محاسباتی غیرممکنه. اما هر دو طرف میتونن با ترکیب اون مقدار دریافتی و private key خودشون، به یه مقدار نهایی یکسان برسن که همون shared secret میشه.
این مکانیزم پایه و اساس مفهومی به اسم Perfect Forward Secrecy هست. یعنی حتی اگه long-term keyهای سرور در آینده لو بره، sessionهای قبلی باز هم امن میمونن چون برای هر ارتباط یه key exchange موقت و جدید اتفاق افتاده. امروزه این روش توی پروتکلهایی مثل TLS و SSH برای امن کردن کانال ارتباطی استفاده میشه.
❓ نظرتون راجب این پست چیه ؟ برامون تو کامنتا بنویسین :)@things_to_know_channel