احراز هویت وب فرآیند امنیتی است که به کاربران امکان می دهد هویت خود را برای دسترسی به حساب های شخصی از طریق وب تأیید کنند.

این استاندارد که WebAuthn یا FIDO2.0 نیز نامیده می شود، یک استاندارد احراز هویت است که می تواند رمزهای عبور را منسوخ کند. به جای استفاده از حروف و اعداد برای اثبات هویت، کاربران می توانند یک کلید بیومتریک (مانند اثر انگشت) یا سخت افزار (مانند کلیدQiperKi  و YubiKey) ارائه دهند.

احراز هویت وب یک API را تعریف می کند که ایجاد و استفاده از اعتبارنامه های قوی، تأیید شده، دارای دامنه و مبتنی بر کلید عمومی توسط برنامه های کاربردی وب را امکان پذیر می کند. از رمزنگاری کلید عمومی برای محافظت از کاربران در برابر حملات فیشینگ پیشرفته استفاده می کند. احراز هویت وب را می‌توان به روش‌های مختلفی پیاده‌سازی کرد، از جمله صرفاً در نرم‌افزار، با استفاده از یک محیط اجرایی قابل اعتماد پردازنده یا یک ماژول پلتفرم مورد اعتماد. عملیات رمزنگاری حساس را می‌توان در یک دستگاه احراز هویت سخت‌افزاری رومینگ بارگذاری کرد که از طریق USB، بلوتوث کم انرژی یا ارتباطات میدان نزدیک قابل دسترسی است.

احراز هویت وب (WebAuthn) چیست و چه معنایی برای رمزهای عبور دارد؟

از اواسط سال 2016، گروهی از متخصصان و محققان امنیتی از سراسر صنعت بر روی روشی جدید برای مدیریت احراز هویت و اثبات هویت خود در اینترنت بدون کمک گذرواژه کار می‌کنند.

WebAuthn و UAF

استاندارد جدید معروف به Web Authentication یا به اختصار WebAuthn، یک API مدیریت اعتبار است که مستقیماً در مرورگرهای وب محبوب ساخته خواهد شد. این مکانیزم به کاربران اجازه می دهد تا با استفاده از یک احراز هویت مانند تلفن، کلیدهای امنیتی سخت افزاری یا دستگاه های TPM (ماژول پلتفرم مورد اعتماد) ثبت نام و احراز هویت را در برنامه های تحت وب انجام دهند.

این بدان معناست که با دستگاه‌هایی مانند تلفن یا TPM، که در آن کاربر می‌تواند تأیید بیومتریک را در اختیار ما قرار دهد، می‌توانیم از WebAuthn برای جایگزینی رمزهای عبور سنتی استفاده کنیم. جدا از تأیید کاربر، ما همچنین می‌توانیم «حضور کاربر» را تأیید کنیم. بنابراین اگر کاربران یک توکن U2F مانند QiperKi دارند، می‌توانیم فاکتور دوم احراز هویت را از طریق WebAuthn API نیز مدیریت کنیم.

در حالی که WebAuthn یک تکنولوژی نسبتاً جدید است، اما به شدت مبتنی بر یک تکنولوژی نسبتا قدیمی است، حداقل در «سال‌های اینترنت». اتحاد FIDO در سال 2014 کار بر روی یک استاندارد API مشابه به نام UAF، Universal Authentication Factor را آغاز کرد. مشخصات UAF از برخی جهات کوتاه بود، به نظر می‌رسد که هرگز فشار واقعی برای افزودن قابلیت‌های لازم به مرورگرهای اصلی وجود نداشته است، بنابراین توسعه‌دهندگانی که می‌خواستند آن را پیاده‌سازی کنند، موظف شدند که کمبود پشتیبانی بومی را برطرف کنند. علاوه بر این، مرجع کمی برای نحوه اجرای مراحل برای عملکرد صحیح UAF در دستگاه‌های Android و iOS وجود داشت. در زمان انتشار، بهترین مرجع عملی UAF، eBay بود.

در زمان نوشتن این مطلب، کروم و فایرفاکس انواع داده‌های لازم برای WebAuthn را دارند و Firefox’s Nightly Build قادر به ایجاد و درخواست اعتبار است. کمی بعد در مورد اینکه این استاندارد جدید چه معنایی برای آینده گذرواژه‌ها می‌تواند داشته باشد صحبت خواهیم کرد اما ابتدا، کمی بیشتر به اجزای اصلی WebAuthn API بپردازیم.

ثبت نام و احراز هویت (Registration and Authentication)

در حالی که WebAuthn به عنوان یک API ایجاد و مدیریت اعتبارنامه (Credential) با پایان باز طراحی شده است که می تواند انواع مختلفی از اعتبارنامه ها را ایجاد کند، در حال حاضر، برای مدیریت ثبت و احراز هویت در یک برنامه وب نوشته شده است. اعتبار ایجاد شده از طریق WebAuthn API بر اصول رمزنگاری قوی و رمزگذاری نامتقارن متکی است. بنابراین وقتی در مورد ثبت اعتبار و احراز هویت صحبت می کنیم، بدانید که اعتبارنامه هایی که استفاده می کنیم در واقع جفت کلید عمومی و خصوصی هستند.

ثبت نام:

در طول ثبت نام، کاربر در حال ایجاد اعتبار با یک احراز هویت است و سپس به مالک برنامه تحت وب، به نام طرف متکی، ثابت می کند که اعتبار و احراز هویت استفاده شده برای ایجاد آن قابل اعتماد هستند. اثبات این امر به طرف متکی اجازه می دهد تا در مواردی که تأیید کاربر وجود دارد، از اعتبار ایجاد شده به جای رمز عبور متعارف و در مواردی که فقط می توانیم حضور کاربر را اثبات کنیم، به عنوان جایگزینی برای U2F معمولی استفاده کند.

بیش از چند مورد مختلف برای نحوه عملکرد WebAuthn در عمل وجود دارد، اما رایج‌ترین مثال این است: کاربر از یک وب‌سایت، مثلاً qiper.ir، در لپ‌تاپ خود بازدید می‌کند و برای ثبت حساب اقدام می­کند. پس از فشار دادن یک دکمه برای شروع ثبت نام در سایت، آنها پیامی را روی تلفن خود دریافت می کنند که می گوید “ثبت نام با qiper.ir”.

هنگامی که آنها درخواست را پذیرفتند، از کاربر خواسته می شود تا یک “نوع مجوز” را انجام دهد، مانند تایپ یک پین یا عملکرد بیومتریک که با حسابی که ایجاد می کند مرتبط است. پس از ارائه آن، وب‌سایت روی لپ‌تاپ چیزی را به‌عنوان «ثبت‌نام کامل شد» نمایش می‌دهد.

کاربر اکنون می تواند با استفاده از همان تلفن و مجوز وارد qiper.ir شود.

احراز هویت (Authentication):

احراز هویت، که به عنوان ادعا نیز شناخته می شود، از آنجایی که ما مالکیت یک اعتبار را تایید می کنیم، پس از ثبت اعتبار در یک وب سایت انجام می شود. از آنجایی که اعتبار فقط یک جفت کلید است، طرف متکی می‌تواند برخی از داده‌ها را برای تأیید هویت کاربر از طریق احراز هویت کاربر ارسال کند. اگر همان چیزی باشند که می‌گویند، داده‌ها با امضای کلید خصوصی اعتبارنامه بازمی‌گردند. این عمل، تا حدی، کاربر را به طرف متکی احراز هویت می کند.

بیایید یک سناریوی متفاوت برای نحوه استفاده از WebAuthn برای مدیریت احراز هویت پس از ثبت نام کاربر در سایت example.com در نظر بگیریم. بیایید فرض کنیم که آنها حساب دومی را نیز ثبت کرده‌اند و برای جالب‌تر کردن موارد، در حال مرور در تلفن خود هستند. کاربر در گوشی خود به example.com رفته و گزینه ورود را انتخاب می کند. لیستی از دو حساب به آنها نشان داده می شود، یکی را برای ورود به سیستم انتخاب می کنند و سپس از آنها خواسته می شود که یک پین یا بیومتریک مرتبط با حساب را وارد کنند. پس از ارائه این مورد، example.com کاربر را وارد حساب انتخابی می کند.

نگرانی های امنیتی

بیشتر مسائل امنیتی مربوط به اجرای مشخصات WebAuthn توسط توسعه دهندگان است. اگر یک توسعه‌دهنده بررسی مواردی مانند حملات مجدد یا اطمینان از اینکه احراز هویت به نحوی در معرض خطر قرار نگرفته است را در نظر نگیرد، امکان حملات افزایش می یابد.