کلیدهای سختافزاری امنیتی یکی از بهترین اقدامات برای حسابهای آنلاین هستند، اما یک یوبیکی حقیقی هنوز بین ۲۵ تا ۷۰ دلار بسته به مدل قیمت دارد. من که ترجیح میدهم خودم قطعهای را لحیمکاری کنم تا از پرداخت قیمت خردهفروشی برای یک دانگل USB پرزرقوبرق بگذرم، به دنبال راه ارزانتری گشتم — و آن را در برد ESP32‑S3 یافتیم که هزینهاش کمتر از یک فنجان قهوه بزرگ است.
چرا ESP32 میتواند این کار را انجام دهد
بدون نیاز به محفظه امن، فقط ریاضی و USB





پروتکلهای FIDO2 و U2F که پایهدار کلیدهای سختافزاری هستند، بهصورت اساسی به سیلیکون امن خاصی نیازی ندارند. نیازی به TPM2.۰ مانند آنچه مایکروسافت بر پردازندههای قدیمی برای اجرای ویندوز اجباری میکند، نیست. تنها چه چیزی مورد نیاز است میکروکنترلی است که توان ارتباط USB HID و رمزنگاری منحنی بیضوی مانند ECDSA بر روی NIST P‑۲۵۶ را داشته باشد.
ESP32‑S2 و ESP32‑S3 هر دو پشتیبانی بومی USB‑OTG دارند، به این معنی که میتوانند دقیقاً همانند یک کلید امنیتی واقعی به کامپیوتر معرفی شوند بدون نیاز به چیپ USB‑to‑Serial اضافی. پروژههای میانافزار متنباز پیش از این کارهای رمزنگاری سخت را انجام دادهاند؛ بنابراین نیازی به نوشتن کل استک WebAuthn از صفر نیست؛ فقط یک باینری آماده را فلش میکنید.
انتخاب میانافزار
یکی همه کارها را انجام میدهد، دیگری فقط کافی است

دو گزینه را آزمایش کردم قبل از تصمیمگیری. گزینه اول Pico Fido است، پروژهای که ابتدا برای Raspberry Pi Pico ساخته شد و بعدها به خانواده ESP32‑S گسترش یافت. این گزینه یکی از کاملترین گزینههای موجود است و از CTAP ۲.۱، CTAP ۱، توابع کارتهوشمند OpenPGP و حتی شبیهسازی OTP به سبک یوبیکی پشتیبانی میکند.
گزینه دوم esp32_u2f است، پروژهای کمحجم که فقط بر دریافت U2F و FIDO2 از طریق رابط HID بدون درایور متمرکز است و بار کارتهوشمند اضافه را حذف کرده. اگر فقط میخواهید ورود با کلید عبور برای سایتهایی مثل Google یا GitHub داشته باشید، esp32_u2f گزینه مناسب برای مبتدی است. اگر به جایگزینی کامل یوبیکی با پشتیبانی OpenPGP و OATH TOTP نیاز دارید، Pico Fido انتخاب بلندمدت بهتری است.
سختافزارهایی که استفاده کردم
USB‑OTG بومی تنها مشخصهای است که واقعاً مهم است

چندین برد ESP32 در دسترس داشتم؛ برد توسعه ESP32‑S3 که دو پورت USB‑C دارد و یکی از آنها مستقیم به پرفریه USB‑OTG بومی S3 وصل است، دقیقاً همان چیزی بود که برای پروژه نیاز داشتم. بردهای بدون USB‑OTG بومی، مانند ESP32‑WROOM ساده، کار نمیکنند چون به چیپ USB‑Serial خارجی وابستهاند که نمیتواند دستگاه HID را همانند یک کلید امنیتی شبیهسازی کند.
این بدین معنا نیست که نمیتوانید از چنین بردی استفاده کنید؛ فقط مجبور میشوید مدار کوچکی همراه ESP32 و مبدل USB‑to‑Serial حمل کنید که هدف داشتن یک کلید سختافزاری لطیف و قابل حمل را ضد میکند. یک برد پایه ESP32‑S3 با USB‑C در AliExpress یا بازارهای مشابه بین ۶ تا ۸ دلار میباشد اگر به برند حساس نباشید.
فلش کردن میانافزار
فقط LED چشمکزن تأیید نهایی است





آسانترین روش برای فلش Pico Fido روی ESP32 استفاده از نصبکننده آنلاین آنها است. اگر میخواهید پروژه را از ابتدا بسازید، باید ESP‑IDF را نصب کنید و زنجیره ابزارها را تنظیم کنید پیش از شروع فلش، کاری که فقط شامل دانلود و نصب نصبکنندههای مربوطه میشود. پس از آماده شدن، ساخت Pico Fido برای هدف ESP32 شبیه هر پروژه دیگر ESP‑IDF است؛ هدف چیپ را تنظیم میکنید، ساخت را اجرا میکنید و باینریهای حاصل را با esptool به یک تصویر قابل فلش ترکیب میکنید.
سپس برد را با نگه داشتن دکمه Boot هنگام اتصال به حالت بوتلودر میبرید و یا از خط فرمان یا ابزار مرورگر‑محور فلش Espressif استفاده میکنید که نیاز به نصب درایور در ویندوز را حذف میکند. پس از اتمام فلش و فشار دادن Reset، LED چشمکزن میگوید میانافزار بهدرستی بوت شد و دستگاه آماده شناسایی به عنوان یک احرازکننده HID است.
در عمل استفاده از آن بهعنوان کلید عبور
بدون درایور، بدون برنامه، فقط یک لمسه
اکنون برد تازه فلششده را به هر رایانی متصل کنید و مرورگرهای مدرن آن را دقیقاً مانند یک کلید امنیتی تجاری شناسایی میکنند؛ بدون درایورهای سفارشی، بدون برنامهٔ همراه، چون هدف اصلی ساخت بر پایه CTAP و HID فراهمکردن سازگاری بدون درایور در ویندوز، macOS و لینوکس است.
آن را بر روی چند حساب آزمایشی که ورود FIDO2 را پشتیبانی میکردند ثبت کردم و دقیقاً همانطور که انتظار داشتم عمل کرد؛ درخواست لمس کرد و مراسم WebAuthn را بدون نقص بهپایان رساند. اگر مسیر پیکو فیدو را انتخاب کنید، حفاظت با PIN و پشتیبانی از کلید ساکن نیز بهدست میآید — ویژگیهایی که در سختافزار رسمی باید هزینه اضافه پرداخت کنید.
نقاط ضعف
نرمافزار آماتوری، نه ماژول امنیتی ممیزیشده

این دقیقاً جایگزینی کامل برای یوبیکی نیست. شما به پروژهای با نرمافزار آماتوری به جای یک ماژول امنیتی گواهیدار و ممیزیشده اعتماد میکنید و بر روی برد عمومی ESP32 هیچ عنصر امن مقاومدر برابر دستکاری وجود ندارد، در حالی که در سختافزار اصل یوبیکی چنین عنصری تعبیه شده است.
همچنین فاقد گواهینامه رسمی FIDO است که در صورتی که بخواهید سامانه هویت سازمانی را ایمن کنید، اهمیت پیدا میکند؛ نه ایمیل شخصی یا ورود به GitHub. برای پروژههای شخصی، آزمایش و درک عملکرد کلیدهای عبور، با این حال، راهی فوقالعاده برای دریافت تجربه عملی امنیت سختافزاری به قیمت یک وعده فستفود است.
یوبیکی بهقدر تصور شما نادر نیست
حفاظت واقعی، پیشینه غیررسمی
یک برد ESP32‑S3، نرمافزار متن باز و اندکی صبر میتواند شما را به مسیری نزدیک به داشتن کلید عبور FIDO2 کاری که حسابهای واقعی را محافظت میکند، برساند. اما این جایگزینی معتبر برای یوبیکی نیست و من همچنان برای هر کاری که حیاتی است، سختافزار تجاری را ترجیح میدهم.
اما برای آزمایش کلیدهای عبور، یادگیری نحوهٔ کار احراز هویت USB یا ساخت یک کلید پشتیبان کمهزینه، این پروژه کوچک بهطرز شگفتانگیزی توانمند است. بهترین بخش این است که برد توسعهٔ معمولی را به ابزاری واقعاً مفید تبدیل میکند.
منبع: این مطلب ترجمه و بومیسازی مقالهای از MakeUseOf به قلم Yadullah Abidi است. مشاهده مقاله اصلی