محرمانگی پیشرو

بندانگشتی|KDF chain
در رمزنگاری، محرمانگی پیشرو خاصیتی از روش های تبادل کلید است. این خاصیت تضمین میکند که اگر اطلاعات بلند مدت محرمانه مربوط به رمزنگاری لو برود نشست کاری همچنان امن خواهد بود.

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

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

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

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

## تاریخچه
اصطلاح محرمانگی پیشرو در سال 1990 توسط C. G. Günther مطرح شد  و بعدتر توسط Whitfield Diffie و Paul van Oorschot و Michael James Wiener برای ایده پروتکل Station to Station مورد استفاده قرار گرفت.

از محرمانگی پیشرو در تعریف مشابهی برای تبادل کلید تصدیق شده برای رمز عبور نیز استفاده میشود.

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

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

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

## منابع

رده:مقاله‌های ایجادشده توسط ایجادگر
رده:مدیریت کلید
رده:رمزنگاری کلید عمومی
رده:امنیت لایه انتقال