OpenSSH پشتیبانی از احراز هویت دو مرحله ای جهانی را اضافه می کند

به پایگاه کد OpenSSH اضافه پشتیبانی آزمایشی برای احراز هویت دو مرحله ای با استفاده از دستگاه هایی که از پروتکل پشتیبانی می کنند U2F، توسعه یافته توسط اتحاد فیدو. U2F به شما امکان می دهد تا توکن های سخت افزاری کم هزینه ای را برای تأیید حضور فیزیکی کاربر ایجاد کنید، که تعامل با آنها از طریق USB، بلوتوث یا NFC انجام می شود. این دستگاه‌ها به‌عنوان ابزاری برای احراز هویت دو مرحله‌ای در وب‌سایت‌ها تبلیغ می‌شوند، قبلاً توسط مرورگرهای اصلی پشتیبانی می‌شوند و از تولیدکنندگان مختلف از جمله Yubico، Feitian، Thetis و Kensington در دسترس هستند.

برای تعامل با دستگاه هایی که حضور کاربر را تایید می کنند، نوع جدیدی از کلیدها به OpenSSH اضافه شده است.[ایمیل محافظت شده]" ("ecdsa-sk")، که از الگوریتم امضای دیجیتال ECDSA (الگوریتم امضای دیجیتال منحنی بیضوی) با منحنی بیضوی NIST P-256 و هش SHA-256 استفاده می کند. رویه‌های تعامل با توکن‌ها در یک کتابخانه میانی قرار می‌گیرند، که به روشی مشابه کتابخانه برای پشتیبانی PKCS#11 بارگذاری می‌شود و یک پوشش در بالای کتابخانه است. libfido2، که ابزاری برای برقراری ارتباط با توکن ها از طریق USB فراهم می کند (پشتیبانی از پروتکل های FIDO U2F/CTAP 1 و FIDO 2.0/CTAP 2). تهیه شده توسط توسعه دهندگان OpenSSH، کتابخانه میانی libsk-libfido2 مشمول به ترکیب اصلی libfido2، مانند درایور HID برای OpenBSD

برای فعال کردن U2F، می‌توانید از یک تکه تازه از پایگاه کد استفاده کنید مخزن OpenSSH و شاخه HEAD کتابخانه libfido2، که قبلاً شامل لایه لازم برای OpenSSH است.
Libfido2 از OpenBSD، Linux، macOS و Windows پشتیبانی می کند.

برای احراز هویت و تولید یک کلید، باید متغیر محیطی SSH_SK_PROVIDER را تنظیم کنید و مسیر libsk-libfido2.so را در آن مشخص کنید (صادرات SSH_SK_PROVIDER=/path/to/libsk-libfido2.so)، یا کتابخانه را از طریق SecurityKeyProvider تعریف کنید. تنظیم کنید، و سپس “ssh-keygen -t ecdsa-sk” را اجرا کنید یا اگر کلیدها قبلا ایجاد و پیکربندی شده اند، با استفاده از “ssh” به سرور متصل شوید. هنگامی که ssh-keygen را اجرا می کنید، جفت کلید تولید شده در "~/.ssh/id_ecdsa_sk" ذخیره می شود و می تواند به طور مشابه با کلیدهای دیگر استفاده شود.

کلید عمومی (id_ecdsa_sk.pub) باید در فایل authorized_keys در سرور کپی شود. در سمت سرور، فقط امضای دیجیتال تأیید می‌شود و تعامل با توکن‌ها در سمت کلاینت انجام می‌شود (نیازی به نصب libsk-libfido2 روی سرور ندارید، اما سرور باید از نوع کلید «ecdsa-sk» پشتیبانی کند) . کلید خصوصی تولید شده (id_ecdsa_sk) اساساً یک دسته کلید است که یک کلید واقعی را فقط در ترکیب با دنباله مخفی ذخیره شده در سمت توکن U2F تشکیل می دهد.

اگر کلید id_ecdsa_sk به دست یک مهاجم بیفتد، برای عبور از احراز هویت، او باید به توکن سخت افزاری نیز دسترسی داشته باشد، بدون آن کلید خصوصی ذخیره شده در فایل id_ecdsa_sk بی فایده است. علاوه بر این، به‌طور پیش‌فرض، هنگام انجام هرگونه عملیات با کلیدها (هم در طول تولید و هم در حین احراز هویت)، تأیید محلی حضور فیزیکی کاربر مورد نیاز است، به عنوان مثال، پیشنهاد می‌شود حسگر روی نشانه را لمس کنید، که کار را دشوار می‌کند. انجام حملات از راه دور به سیستم ها با یک توکن متصل. به عنوان خط دفاعی دیگر، یک رمز عبور نیز می تواند در مرحله راه اندازی ssh-keygen برای دسترسی به فایل کلید مشخص شود.

کلید U2F را می توان از طریق "ssh-add ~/.ssh/id_ecdsa_sk" به ssh-agent اضافه کرد، اما ssh-agent باید با پشتیبانی از کلیدهای "ecdsa-sk" ساخته شود، لایه libsk-libfido2 باید وجود داشته باشد و عامل باید روی سیستمی که توکن به آن متصل است در حال اجرا باشد.
یک نوع کلید جدید "ecdsa-sk" اضافه شده است زیرا فرمت کلیدهای OpenSSH ecdsa با فرمت U2F برای امضای دیجیتال ECDSA در حضور فیلدهای اضافی متفاوت است.

منبع: opennet.ru

اضافه کردن نظر