چرا رمزنگاری بهتنهایی یک بستهٔ بازپخششده را متوقف نمیکند
یک بستهٔ قدیمی برچسب احراز هویت معتبر را نگه میدارد، بنابراین یکپارچگی هرگز تازگی را اثبات نمیکند. وضعیت ترتیب و پنجرهٔ گیرنده این کار را انجام میدهند.
بستههای محافظتشده از نظر رمزنگاری منقضی نمیشوند، بنابراین بستهای که پنج دقیقه پیش معتبر بود اکنون هم معتبر است، زیرا رمزنگاری و حفاظت یکپارچگی چیزی دربارهٔ زمان تولید بایتها نمیگویند. مهاجمی که میتواند ترافیک را ضبط و دوباره ارسال کند نیازی به شکستن رمز ندارد. به همین دلیل هر پروتکل تونل جدی وضعیت ترتیب را همراه با کلیدهایش حمل میکند.
سازوکار کوچک است و حالتهای خرابی آن بهراحتی با گمشدن بسته اشتباه میشود.
متن رمزشدهٔ معتبر متن رمزشدهٔ تازه نیست
احراز هویت به یک پرسش پاسخ میدهد: آیا این بایتها بدون تغییر از دارندهٔ کلید آمدهاند. پاسخ نمیدهد که آیا گیرنده نخستین بار است آنها را میبیند. یک بستهٔ بازپخششده آزمون اول را بینقص میگذراند، و دقیقاً به همین دلیل بررسی یکپارچگی بهتنهایی نمیتواند بازپخش را متوقف کند و پروتکل به قاعدهٔ دومی دربارهٔ پذیرش نیاز دارد. گیرندهای که فقط احراز هویت میکند هیچ دفاعی در برابر مهاجمی که یک ضبط دارد ندارد.
این قاعده ارزان پیادهسازی و ارزان بیان میشود: یک بستهٔ محافظتشدهٔ معین را یک بار و زیر یک کلید معین بپذیر. هر چیز دیگری در این حوزه از نحوهٔ ردیابی همان یک بار توسط پیادهسازی ناشی میشود.
خواندن کنارگذاری بازپخش بهعنوان شکست رمزگشایی شما را به زیرسیستم کاملاً اشتباه میفرستد.
شمارهٔ ترتیب و یک پنجره
IPsec ESP یک شمارهٔ ترتیب حمل میکند و گیرنده پنجرهای لغزان از مقادیر تازه پذیرفتهشده نگه میدارد، و مشخصات ESP اندازهٔ پیشفرض پنجره و گزینهٔ گسترش آن را توصیف میکند. WireGuard مسیر دیگری با شمارندهای برای هر کلید و بررسی صریح در برابر آن انتخاب میکند. هیچیک از این دو طراحی فرض نمیکند بستهها به ترتیب برسند، چون شبکههای واقعی آنها را بازآرایی میکنند. هر دو بازآرایی را تحمل میکنند و هیچکدام تکرار را تحمل نمیکند.
پنجره همان چیزی است که این تحمل را ممکن میکند. بستهای کمی عقبتر از بالاترین مقدار دیدهشده اگر قبلاً پذیرفته نشده باشد هنوز پذیرفته میشود؛ بستهای بسیار عقبتر یا بستهای که جای آن از پیش نشانهگذاری شده کنار گذاشته میشود. پنجره را بزرگ کنید تا بازآرایی بیشتری را به بهای وضعیت بیشتر برای هر انجمن تحمل کنید.
شمارندههای عیبیابی نشان میدهند در کدام حالت هستید. کنارگذاریهای بازپخش یک شمارندهٔ مشخص را افزایش میدهند نه یک خطای عمومی، و خواندن همان شمارنده نخستین مشاهدهٔ سودمند است.
nstat -az | grep -i XfrmIn
ip -s xfrm state | head -n 30
wg show wg0 transfer
وضعیت به کلید تعلق دارد، نه به میزبان
وضعیت شمارنده به یک انجمن امنیتی یا به یک دورهٔ کلید وابسته است، بنابراین تغییر کلید بافت تازهای و فضای ترتیب خودش را میسازد. پاککردن یک شمارنده بدون جایگزینی کلید، یا استفادهٔ دوباره از یک انجمن پس از بازنشانی دستی، فرضی را که پنجرهٔ گیرنده بر آن تکیه دارد میشکند. به همین دلیل تغییر کلید با هدایت پروتکل وجود دارد و نه دکمهٔ بازنشانی قابل مشاهده برای بهرهبردار.
وقتی یک تونل پس از مداخلهٔ دستی بدرفتاری میکند، بپرسید آیا مداخله به وضعیت ترتیب دست زده است. پیکربندیای که یکسان به نظر میرسد میتواند متفاوت رفتار کند، چون وضعیتی که به ارث برده همان وضعیتی نیست که انتظار دارد.
پیش از غیرفعالکردن هر چیزی علت را تشخیص دهید
گمشدن، بازآرایی، ترافیک تکراری و یک نقص پیادهسازی همه بهصورت ارسال دوباره ظاهر میشوند و تنها یکی از آنها مسئلهٔ بازپخش است. غیرفعالکردن بررسی برای خاموشکردن نویز، ویژگیای را که بر آن تکیه داشتید حذف میکند و یافتن علت اصلی را سختتر میکند، چون اکنون ارسالهای دوباره هیچ توضیحی ندارند.
شواهد محدود جمع کنید: شناسههای انجمن، شمارههای ترتیب و شمارندهها، بدون بار داده. این برای تمایز یک نسخهٔ تکراری از یک ورود بازآراییشده کافی است و فایل عیبیابی شما را به نسخهای از ترافیک کاربر تبدیل نمیکند.
آنچه بررسی تضمین نمیکند
محافظت در برابر بازپخش ویژگی پردازش بسته درون یک پروتکل است. به این معنا نیست که بهرهبردار هیچ گزارشی نگه نمیدارد، که یک وبگاه نمیتواند حسابی را بشناسد یا که یک نشست ناشناس است. اینها پرسشهای جداگانهای دربارهٔ سامانههای جداگانهاند، و یک طراحی قوی ضد بازپخش به هیچیک از آنها پاسخ نمیدهد.
نرمافزار نگهداریشده با تنظیمات پشتیبانیشده همان کنترل عملی است که یک کاربر در اختیار دارد. پروتکل بسته را اداره میکند؛ هر چیز دیگری یک تصمیم عملیاتی میماند.