nonce در VPN چیست و چرا استفاده مجدد آن تونل را میشکند
nonce مقداری برای هر پیام است که هرگز نباید زیر یک کلید تکرار شود، و معمولاً بهصورت آشکار منتقل میشود. ویرایش دستی آن اشتباهی است که باید از آن پرهیز کرد.
بیشتر مردم واژه nonce را در یک پروفایل VPN میبینند و گمان میکنند راز مشترک دیگری است که باید میان همتاها کپی شود. اینطور نیست. nonce مقداری است که هرگز نباید زیر همان کلید تکرار شود، و در بیشتر رمزنگاریهای مبتنی بر nonce بهصورت آشکار منتقل میشود. این سردرگمی بیضرر میماند تا وقتی کسی آن را دستی ویرایش کند، و خرابی واقعی از همانجا آغاز میشود.
nonce در واقع از کجا میآید
رمزنگاری احراز هویتشده برای هر پیام رمز شده زیر یک کلید به nonce متفاوتی نیاز دارد. پروتکلها این نیاز را به روشهای گوناگون برآورده میکنند: شمارندهای که یکنواخت افزایش مییابد، نمکی که با شناسه بسته ترکیب میشود، یا مقدار تصادفی بهقدر کافی طولانی. IKEv2 در تبادل اولیه nonceها را مبادله میکند، و آنها ورودیهای عمومی برای استخراج کلید هستند نه راز.
یکتایی میتواند ساختاری یا احتمالی باشد. شمارنده تا زمانی که سرریز نکند نمیتواند تکرار شود، و به همین دلیل پروتکل نقطه تجدید کلید را بسیار پیشتر تعریف میکند. مقدار تصادفی به بیتهای کافی تکیه میکند تا برخورد در محدوده پیامها نامحتمل باشد، که استدلالی متفاوت با حالت شکست متفاوت است. مستندات پروتکل مشخص میکند کدام روش اعمال میشود، و هر دو تنها تا زمانی ایمناند که حد اعلامشده رعایت شود.
| Design | Where uniqueness comes from | Exhaustion is handled by |
|---|---|---|
| AES-GCM records | An IV, typically a counter | Rekey before the counter wraps |
| ChaCha20-Poly1305 | A 96-bit nonce from a counter or generator | A message limit per key |
| WireGuard | A per-key 64-bit counter | Rekey at a message cap |
| OpenVPN AEAD | Packet identifier plus implicit key material | Rekey on the packet-id limit |
| IKEv2 | Fresh nonces per exchange | A new security association |
استفاده مجدد واقعاً چه هزینهای دارد
استفاده مجدد از nonce زیر یک کلید مسئله کوچک کارایی نیست. با GCM، دو پیامی که یک IV را به اشتراک میگذارند به ناظر اجازه میدهند کلید احراز هویت را بازیابی کند و یا انحصاری دو متن ساده را محاسبه کند. ساختارهای مبتنی بر جریان نیز به همین شکل از جریان کلید استفاده مجدد میکنند، که متن رمز را به جای یک راز به یک معما تبدیل میکند.
به همین دلیل پیادهسازیها پیش از سرریز شدن شمارنده کلید را تجدید میکنند، و به همین دلیل وقتی وضعیتشان نامطمئن است به جای ادامه دادن متوقف میشوند. راهاندازی مجددی که شمارنده را بازنشانی میکند در حالی که همتا هنوز کلید قدیمی را دارد، یا ماشین مجازیای که از یک عکس فوری گرفتهشده در میانه نشست بازیابی میشود، دقیقاً همان وضعیتی است که حدها برای جلوگیری از آن وجود دارند. هیچ مهاجمی لازم نیست؛ عملیات عادی کافی است.
چرا ویرایش دستی راهحل اشتباه است
شمارندهها، نمکها و شناسههای بسته ماشینهای حالت مشترک میان دو سر هستند. تغییر یک طرف، طرف دیگر را از همگامسازی خارج میکند، و تونل به شکلی شکست میخورد که شبیه مشکل مسیریابی به نظر میرسد. اهرم پشتیبانیشده یک تبادل کلید تازه است که وضعیت هر دو سر را همزمان بازنشانی میکند.
گذرواژهها و nonceها نیز نقشهای متفاوتی دارند. گذرواژه ورودی محرمانه برای استخراج کلید است؛ nonce ورودی عمومی برای هر پیام است. فیلدی در پروفایل با برچسب nonce که راز طولانی میخواهد معمولاً یک کلید ایستا یا راز از پیش مشترک زیر نامی دیگر است، پس مستندات آن فیلد را بخوانید نه اینکه فرض کنید.
وقتی یک هشدار درباره مدیریت nonce باشد، اصلاح، نسخه اصلاحشده نگهدارنده است، نه رمزنگاری دیگر یا کلید کوتاهتر. تغییر رمزنگاری برای پرهیز از واژه nonce مشکل را جابهجا میکند نه حل.
خواندن هشدار بدون حدس زدن
یک خط گزارش درباره شمارندهها یا nonceها معمولاً وضعیت ازدسترفته را توصیف میکند نه حمله. بررسی کنید آیا یک همتا راهاندازی مجدد شده، آیا ماشین مجازی کلونشده همان هویت را بازاستفاده کرده، و آیا دو سر درباره تنظیمات تجدید کلید توافق دارند. سپس نشست تازهای برقرار کنید و ببینید آیا پیام بازمیگردد.
تشخیص را از شکستهای نامرتبط جدا نگه دارید. صفحهای که بارگذاری نمیشود، یا پرسش اعتباری که در حلقه میماند، مدرکی بر استفاده مجدد از nonce نیست، و برخورد با آن بهعنوان چنین چیزی شما را به لایه رمزنگاری میفرستد در حالی که مشکل بالاتر از آن است.
برای استفاده معمول، قاعده ایمن کوتاه است: بگذارید پیادهسازی nonce را مدیریت کند، هر دو سر را روی نسخههای پشتیبانیشده نگه دارید، و هر بازنشانی وضعیت را دلیلی برای تجدید کلید بدانید نه ویرایش یک مقدار. اگر فیلدی در پروفایل در مستندات فروشنده نیست، برایش مقداری از خود نسازید. اصلاح تونل با دانستن این آغاز میشود که به کدام لایه نگاه میکنید.