به پایگاه کد OpenSSH
برای تعامل با دستگاه هایی که حضور کاربر را تایید می کنند، نوع جدیدی از کلیدها به OpenSSH اضافه شده است.[ایمیل محافظت شده]" ("ecdsa-sk")، که از الگوریتم امضای دیجیتال ECDSA (الگوریتم امضای دیجیتال منحنی بیضوی) با منحنی بیضوی NIST P-256 و هش SHA-256 استفاده می کند. رویههای تعامل با توکنها در یک کتابخانه میانی قرار میگیرند، که به روشی مشابه کتابخانه برای پشتیبانی PKCS#11 بارگذاری میشود و یک پوشش در بالای کتابخانه است.
برای فعال کردن U2F، میتوانید از یک تکه تازه از پایگاه کد استفاده کنید
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