0x یا 0s؟ رمزگشایی قالب PSK در ipsec.secrets
همان راز مشترک را میتوان بهصورت متن تحتاللفظی در گیومه، بهصورت هگزادسیمال بعد از 0x یا بهصورت Base64 بعد از 0s نوشت. پیشوند اشتباه احراز هویت را شکست میدهد، نه مذاکره را.
یک کلاینت با کلید مشترک احراز هویت میشود و دیگری آن را رد میکند، در حالی که نویسههایی که چسباندهاید در هر دو طرف یکسان به نظر میرسند. احتمالاً همان نویسهها هستند؛ تفاوت در این است که فایل کدام قاعده رمزگشایی را روی آنها اعمال میکند. رشتهای که در گیومه است تحتاللفظی گرفته میشود، توکنی که با 0x شروع میشود هگزادسیمال خوانده میشود، و توکنی که با 0s شروع میشود Base64 خوانده میشود. فقط یکی از این سه نوشتار همان چیزی است که منظورتان بوده، پس اصلاح معمولاً یک تبدیل است نه رمز عبور بهتر.
نشانه به رمزگذاری اشاره دارد، نه به رمزها
وقتی دو سر بایتهای متفاوتی نگه میدارند، مذاکره همچنان موفق میشود و اثبات بعد از آن شکست میخورد. آنگاه گزارش، شکست یکپارچگی یا HMAC را ثبت میکند نه ناسازگاری الگوریتم را، چون پیشنهادی انتخاب شده و مرحله احراز هویت مطابقت نداشته است. آن خط هرگز به شکل راز اشاره نمیکند.
مرحله سرنخ است. شکستی که بعد از پیشنهاد انتخابشده میرسد یعنی دو طرف در همه چیز جز مواد کلید توافق کردهاند، در حالی که «هیچ پیشنهادی انتخاب نشد» به سیاست یا مجموعههای رمز مربوط است. بررسی یکپارچگیای که شکست میخورد در حالی که رمز عبور درست به نظر میرسد، چهره آشکار ناسازگاری رمزگذاری است.
یک راز، سه شیوهای که فایل میتواند آن را بخواند
برای مقدار چهاربایتی key1، هگزادسیمال و Base64 دو بازرمزگذاری از همان بایتها هستند و فقط نویسههای آغازین به تحلیلگر میگویند کدامیک را در دست دارد. اعتبارنامههای swanctl از همان قرارداد پیروی میکنند، پس مقداری که بین دو رابط جابهجا میشود تنها وقتی معنای خود را نگه میدارد که پیشوندش همراه آن سفر کند.
10.20.0.5 %any : PSK "key1"
10.20.0.5 %any : PSK 0x6b657931
10.20.0.5 %any : PSK 0sa2V5MQ==
دو جزئیات در آن قطعه بیشترین وقت را میگیرند. ارقام هگزادسیمال هر دو حالت حروف را میپذیرند، پس 0x6b657931 و 0x6B657931 یک مقدار هستند، اما تعداد فرد نویسه بیصدا اشتباه خوانده میشود نه رد، و این هر بایت پس از محل برش را جابهجا میکند. حاشیهگذاری Base64 بخشی از مقدار است، پس رشتهای که بدون نشانههای = پایانیاش چسبانده شود به بایتهای متفاوتی رمزگشایی میشود، نه اینکه با صدای بلند شکست بخورد.
پروفایلی که مقدار را یک بار رمزگشایی کرده آن را تبدیل کرده است، پس رمزگشایی دوباره بایتهای متفاوت و شکست احراز هویتی تولید میکند که مثل رمز عبور اشتباه خوانده میشود. گیومه برای هر چیز مبهم جهت ایمن است، چون محتوا حتی وقتی با نشانگر رمزگذاری شروع شود تحتاللفظی است.
متن Base64 از کجا میآید
خروجی پروفایل و پورتالهای فروشنده اغلب کلید را از پیش رمزگذاریشده تحویل میدهند، معمولاً در فیلد دادهای که هرگز برای تایپ دستی در نظر گرفته نشده بود. یا آن مقدار را باز کنید و متن رمزگشاییشده را در گیومه ذخیره کنید، یا آن را با نشانگر در جلو رمزگذاریشده رها کنید. انجام نصف از هر کدام همان چیزی است که خرابش میکند. هر دو مسیر فقط وقتی کار میکنند که تمام مقدار از کپی جان سالم به در ببرد.
هر دو جهت هر کدام یک فرمان هستند و ارزش دارد در تیکت بهعنوان همان عملیات دقیقی که مقدار ذخیرهشده را ساخته نگه داشته شوند. آنها را به این ترتیب اجرا کنید:
printf '%s' 'a2V5MQ==' | base64 -d
printf '%s' 'key1' | base64
چسباندن متن رمزگذاریشده بهعنوان متن ساده اشتباه گران است. فایل نویسهها را دقیقاً همانطور که نوشته شده درهمسازی میکند، کلید مشتقشده تقریباً یکسوم بلندتر از چیزی است که همتا محاسبه کرده، و هر تلاش بدون هشدار به همان شکل شکست میخورد، چون تحلیلگر از قاعدهای که به آن داده شده پیروی کرده است.
تأیید کنید هر همتا واقعاً از کدام بایتها استفاده میکند
اول دید دیمن نسبت به اتصال را بخوانید و بعد نتیجه احراز هویت را، بهجای حدس زدن علت از رشته خطا. مقایسه طول ذخیرهشده یک بررسی سریع معقولیت است، چون متن رمزگذاریشده از بایتهایی که نمایش میدهد بلندتر است. سپس تأیید کنید کدام ردیف هویت مطابقت داشته، چون راز درستی که زیر همتای اشتباه بایگانی شده دقیقاً مثل یک راز اشتباه شکست میخورد. ترتیب ردیفها این را تعیین میکند: اولین تطابق برنده است، پس یک ردیف %any گسترده نزدیک بالا بیصدا جای ردیف مشخصی را میگیرد که همین حالا ویرایش کردید.
وقتی فایل درست شد، بهجای راهاندازی مجدد آن را دوباره بارگذاری کنید. ipsec rereadsecrets نسخه دیمن IKE را تازه میکند و یک راهاندازی swanctl اعتبارنامهها را با فرمان خودش بارگذاری میکند. راهاندازی مجدد هر ارتباط برقرارشده را میاندازد و مقایسهای را که میخواستید انجام دهید نابود میکند.
هیچیک از این بررسیها افشای راز را لازم ندارد. یک طول، یک انتخابگر هویت و یک موقعیت ردیف بیشتر این شکستها را توضیح میدهند پیش از آنکه کسی به دامپ هگزادسیمال نیاز پیدا کند.
فایل را بدون پنهان کردن نتیجه تغییر دهید
دسترسی فایل را به حساب دیمن محدود کنید و رازهای زنده را از تیکتها، گفتگو و تصاویر صفحه دور نگه دارید، چون کلید چسباندهشده یک نشت است نه یک تشخیص. همچنین از حادثهای که آن را ساخته بیشتر عمر میکند.
از کلاینتی آزمایش کنید که پیکربندیاش در کنترل شماست، تأیید کنید احراز هویت موفق میشود و سپس تأیید کنید تونل ترافیک را حمل میکند. بارگذاری مجددی که دستدادن را درست میکند در حالی که مسیریابی شکسته میماند مشکل دیگری است و بهمحض اینکه راز از حرکت بایستد آشکار میشود.