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





پروتکلهای FIDO2 و U2F که پایهٔ کلیدهای سختافزاریاند، ذاتاً به سیلیکون امن ویژهای نیاز ندارند. به TPM ۲.۰، از آن نوعی که مایکروسافت برای اجرای ویندوز بر پردازندههای قدیمی تحمیل میکند، نیازی نیست. تنها نیاز شما میکروکنترلی است که بتواند از طریق 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‑to‑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 را بینقص به پایان رساند. اگر مسیر Pico Fido را انتخاب کنید، حفاظت با PIN و پشتیبانی از کلیدهای ساکن را نیز دریافت میکنید — قابلیتهایی که برای داشتنشان در سختافزار رسمی باید هزینهٔ بیشتری بپردازید.
نقاط ضعف
نرمافزار آماتوری، نه ماژول امنیتی ممیزیشده

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