بیشتر بحث‌ها درباره digestهای OpenVPN از بسته اشتباه شروع می‌شود. خواندن auth SHA256 به‌عنوان «فقط همتایانی را بپذیر که SHA256 ارائه می‌دهند» نخستین چیزی است که باید از ذهن کنار گذاشت. این گزینه یک digest را برای بسته‌های مشخص نام می‌برد و اینکه آن بسته‌ها کدام‌اند به کانال و به AEAD بودن آن کانال بستگی دارد. چهار پرسش زیر را به ترتیب بررسی کنید؛ هر یک روشن می‌کند این تنظیم در استقرار شما چه معنایی می‌تواند داشته باشد.

کانالی را که این تنظیم باید محافظت کند نام ببرید

OpenVPN یک کانال کنترل دارد که ترافیک مصافحه TLS را حمل می‌کند و یک کانال داده که بار تونل را حمل می‌کند. digest مربوط به auth در هر دو نقش دارد، اما نه نقش یکسان، و پروفایل به‌ندرت این تفاوت را آشکار می‌کند. پیش از دست‌زدن به فایل پیکربندی بنویسید کدام یک از این دو را می‌خواهید محدود کنید.

جدول زیر نسخه کوتاه اینکه همان گزینه در هر بافت چگونه می‌نشیند است.

ContextWhat the auth digest does
Data channel without AEADSelects the HMAC digest that authenticates each data packet
Data channel with AEAD, such as GCMUnused for the data channel; the cipher authenticates its own packets
Control channel protected by tls-authSelects the HMAC digest for that protection, even when data is AEAD

پیش از تکیه بر کانال داده بررسی کنید که آیا AEAD است

اگر رمزنگار داده توافق‌شده AES-GCM یا CHACHA20-POLY1305 باشد، کانال داده خود را احراز هویت می‌کند و digest جداگانه کاری را که ممکن است تصور کنید انجام نمی‌دهد. هر دو ساختار AEAD هستند، بنابراین یکپارچگی با همان عملیاتی تولید می‌شود که بار را رمز می‌کند. این کاهش سطح نیست، اما به این معناست که سیاستی با توجیه «هر بسته داده HMAC-SHA256 است» در آن تونل واقعاً نادرست است. پیش از بازنویسی سیاست، مقدار توافق‌شده را در گزارش سرور یا خروجی وضعیت کارخواه تأیید کنید.

رمزار را که واقعاً توافق شده بررسی کنید نه فهرست پروفایل را، زیرا مذاکره ممکن است روی عضو دیگری از مجموعه بنشیند. data-ciphers AES-256-GCM:AES-128-GCM یک فهرست مذاکره است و هر دو ورودی AEAD هستند، بنابراین هیچ‌کدام digest مربوط به auth را برای حفاظت از بار مصرف نمی‌کند.

حفاظت کانال کنترل را تصمیمی مستقل بدانید

tls-auth یک HMAC به بسته‌های کانال کنترل می‌افزاید و digest خود را از تنظیم auth می‌گیرد، از این رو یک تونل AEAD می‌تواند هنوز digest معناداری پیکربندی‌شده داشته باشد. tls-crypt آرایش متفاوتی با حفاظت ثابت خودش است، پس فرض نکنید که هر ویژگی tls-auth را به ارث می‌برد. مستندات مکانیزمی را که برگزیده‌اید بخوانید نه اینکه فرض‌ها را میان آن‌ها منتقل کنید.

دو همتا باید بر آرایش و بر جهت کلید نیز توافق کنند. digestی که می‌خواند اما فایل کلیدی که در جهت اشتباه به کار رفته، مصافحه‌ای می‌سازد که به دلایلی شکست می‌خورد که تنظیم digest نمی‌تواند توضیح دهد.

auth را از مذاکره رمزنگار و گواهی‌ها جدا نگه دارید

سه تنظیم پیوسته با هم اشتباه می‌شوند: digest مربوط به auth، فهرست رمزنگارهای داده و الگوریتم امضای گواهی. تغییر اولی گواهی را دوباره صادر نمی‌کند، digest امضای آن را انتخاب نمی‌کند و روش کاربر-گذرواژه نمی‌سازد. تعریف‌های گزینه‌های پروتکل در منابع OpenVPN 2.6 هر یک را در بخش خودش توصیف می‌کنند، که یادآوری سودمندی است بر اینکه آن‌ها کلیدهای تنظیم مستقل‌اند.

وقتی همتایی پس از تغییر digest از اتصال خودداری می‌کند، علت معمولاً ناسازگاری در یکی از دو تنظیم دیگر است. پیش از تغییر هر یک، هر دو سو را بخوانید.

سیاست را بنویسید و آن را با پیکربندی‌های در حال اجرا مقایسه کنید

یک بیانیه در سطح ناوگان باید حالت‌های مجاز کانال داده و حفاظت انتخاب‌شده کانال کنترل را صریحاً در همان جمله نام ببرد. آن جمله آزمون‌پذیر است؛ «ما از SHA256 استفاده می‌کنیم» نیست. سپس آن را با پروفایل‌های مؤثر سرور و کارخواه مقایسه کنید نه با الگویی در یک مخزن.

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

مقالات مرتبط