سرویس Google Authenticator و نحوه عملکرد آن

مکانیزمهای احراز هویت چندعاملی (MFA) نقشی حیاتی در مسدودسازی حملات سایبری و حفاظت از دسترسیهای حساس لایه زیرساخت دارند. در لایه مدیریت سرور و پلتفرمهای میزبانی، تکیه بر رمزهای عبور سنتی به معنای گشودن درها به روی حملات بروتفورس (Brute-force) است. از سوی دیگر، سیستمهای تایید دو مرحلهای مبتنی بر پیامک نیز به دلیل آسیبپذیری در برابر حملات تعویض سیمکارت (SIM Swapping) و شنود در خطوط مخابراتی، دیگر یک استاندارد امنیتی مطمئن به شمار نمیروند.
شرکت گوگل با ارائه سرویس Google Authenticator، به بهترین نحو راه حلی برای این نقص امنیتی یافته است. در این مقاله، به کالبدشکافی ساختار امنیتی این پروتکل، تفاوت الگوریتمهای ریاضی آن و تحلیل چگونگی تولید کدهای یکبار مصرف بدون نیاز به شبکه خواهیم پرداخت.
سیستم درستی سنجی گوگل چیست و چگونه کار میکند؟
در پاسخ به این سوال که مکانیزم درستی سنجی گوگل چیست باید گفت که این سیستم یک ساختار نرمافزاری برای پیادهسازی هویت سنجی گوگل در لایه کاربرد است. این برنامه به عنوان یک لایه دفاعی ثانویه، از ورود غیرمجاز به حسابهای کاربری، کنترلپنلهای هاستینگ و سرورها جلوگیری میکند؛ حتی اگر رمز عبور اصلی کلاینت لو رفته باشد.
در فرآیند تایید دو مرحلهای سنتی، یک کد تصادفی معمولا با تاریخ انقضای کوتاه در مرحله ورود توسط سرور تولید و برای کاربر پیامک میشود. در این روش هر هکر نسبتا ماهری با ابزارهای فیشینگ پیشرفته امکان سرقت کد ساخته شده را خواهد داشت. اما برنامه اصالت سنجی گوگل به جای دسترسی به شبکههای مخابراتی، کدها را به صورت کاملا محلی بر روی دستگاه خود کاربر تولید میکند تا ریسک متولیان میانی و شنود در مسیر ارتباطی به صفر برسد.
کالبدشکافی معماری فنی و الگوریتمهای TOTP و HOTP
بزرگترین مزیت این سرویس این است که در زمان تولید کد، دستگاه کاربر (تلفن همراه، کامپیوتر شخصی و…) نیاز به هیچگونه ارتباطی با دنیای بیرون از جمله اینترنت یا آنتن موبایل ندارد. این فرآیند بر پایه رمزنگاری متقارن و یک کلید مخفی (Secret Key) استوار است که در زمان راهاندازی اولیه بین سرور و اپلیکیشن تبادل میشود.
در این سیستم احراز هویت، از دو الگوریتم تولید رمز منحصر به فرد با بازه زمانی مشخص استفاده میگردد:
الگوریتم HOTP (HMAC-based One-Time Password)
در این متد، کدهای تولید شده بر اساس یک شمارنده (Counter) کار میکنند. در طول مراحل اولیه راهاندازی، یک کد مخفی یا همان Secret Key به صورت انحصاری برای کاربر تولید و در قالب ۱۶ یا ۳۲ کاراکتر به اپلیکیشن فرستاده میشود. هر بار که کاربر درخواست کد جدید میدهد، شمارنده یک واحد صعود میکند. کد ایجاد شده در این حالت تا زمانی که کاربر از آن استفاده نکند یا درخواست جدیدی ثبت نشود، معتبر باقی خواهد ماند.
الگوریتم TOTP (Time-based One-Time Password)
این الگوریتم که پایه اصلی نرمافزار گوگل است، به جای شمارنده از زمان جاری سیستم (Unix Time) استفاده میکند. در این فرآیند، سیستم و برنامه کاربر در یک چرخه همسان اقدام به تولید کدهای اعتبار سنجی یکسان با استفاده از کلید مخفی مشترک میکنند. کدهای تولیدی در این حالت دارای یک طول عمر کوتاه (معمولا ۳۰ الی ۶۰ ثانیه) هستند و پس از انقضای زمان، کاملا بیاعتبار میشوند. از آنجا که هر دو سمت سرور و کلاینت فرمول ریاضی و کلید مخفی یکسانی دارند، بدون نیاز به ارتباط متقابل، یک عدد مشترک را تولید و تایید میکنند.
هماهنگی زمانی و رفع خطای عدم تطبیق کدها
از آنجا که الگوریتم پیشفرض این نرمافزار بر پایه زمان (TOTP) کار میکند، ساعت و محدوده زمانی دستگاه کاربر اهمیت حیاتی دارد. چنانچه ساعت دستگاه به درستی تنظیم نشده باشد یا حتی چند ثانیه با ساعت سرور تفاوت داشته باشد، کد ایجاد شده متفاوت از کد تولیدی در سمت سیستم اعتبار سنجی خواهد بود و عملکرد مختل خواهد شد.
کاربران در زمان مواجهه با خطای کدهای نامعتبر، باید همگامسازی زمانی (Time Synchronization) را بررسی کنند. در نسخه اندروید این برنامه، گزینهای تخصصی به نام Time correction for codes وجود دارد که با انتخاب آن، زمان داخلی برنامه با سرورهای اتمی گوگل همسان شده و مشکل عدم تطبیق کدها بدون نیاز به تغییر در کلید مخفی برطرف میشود.
امنیت Secret Key در فرآیند انتقال و اسکن QR Code
یکی از مراحل کلیدی در راهاندازی این سرویس، نحوه انتقال کلید مخفی از سرور به اپلیکیشن گوشی کاربر است. این انتقال معمولا از طریق یک کد QR انجام میشود. این کد گرافیکی حاوی یک URL اختصاصی است که پارامترهایی چون نام صادرکننده (Issuer)، نام کاربری و از همه مهمتر، رشته متنی کلید مخفی را در خود جای داده است.
امنیت این مرحله بسیار حساس است؛ زیرا اسکن این کد باید صرفا در محیطی امن و بدون حضور ابزارهای مانیتورینگ شخص ثالث انجام شود. پروتکل استاندارد به کار رفته در این فرآیند (key-uri format) تضمین میکند که دادهها به محض اسکن شدن، به لایه ذخیرهسازی امن و رمزنگاریشده سیستمعامل (Keystore در اندروید و Keychain در مک و iOS) منتقل میشوند تا دسترسی سایر اپلیکیشنها به این کلید غیرممکن شود.
چالشهای مهاجرت به دستگاه جدید و مکانیزم Cloud Sync
یکی از چالشهای سنتی کاربران در استفاده از Google Authenticator، فرآیند تعویض یا مفقود شدن تلفن همراه بود. از آنجا که کدهای مخفی به صورت محلی روی سختافزار ذخیره میشدند، از دست رفتن گوشی به معنای قطع دسترسی کامل به حسابها بود. گوگل برای حل این مشکل، قابلیت همگامسازی ابری (Cloud Synchronization) را به این سرویس اضافه کرد.
با فعالسازی این ویژگی، کدهای مخفی به صورت رمزنگاریشده با حساب گوگل کاربر (Google Account) سینک میشوند. به این ترتیب، با ورود به دستگاه جدید، تمام توکنها به صورت خودکار بازیابی خواهند شد. با این حال، برای مدیران شبکه و دیتاسنترها که نیاز به بالاترین سطح جداسازی امنیتی دارند، پیشنهاد میشود این قابلیت را غیرفعال نگه داشته و برای انتقال توکنها، از روش سنتی استخراج دستی کدهای QR از منوی Transfer Accounts استفاده کنند تا احتمال نفوذ به حساب ابری، امنیت سرورها را به خطر نیندازد.
نحوه پیادهسازی Google Authenticator روی لینوکس و دسترسی SSH
استفاده از این سرویس تنها محدود به وبسایتها یا اکانتهای عمومی نیست؛ مدیران سیستم میتوانند این لایه امنیتی را مستقیما روی دسترسی ریموت به سرورهای لینوکسی (SSH) پیادهسازی کنند. این کار از طریق ماژول امنیتی پیشرفته پام (Pluggable Authentication Modules) انجام میشود.
برای این کار، با نصب پکیج مربوطه (Google PAM Module) روی سیستمعامل سرور و اجرای دستور پیکربندی، یک کلید مخفی اختصاصی برای ابزار SSH تولید میشود. پس از فعالسازی این لایه، هر بار که مدیری قصد ورود به سرور را از طریق ترمینال داشته باشد، سیستم علاوه بر درخواست رمز عبور اصلی یا کلید SSH (Public Key)، کادر جدیدی برای ورود کد ۶ رقمی زمانمحور برنامه گوگل نشان میدهد؛ این راهکار عملا احتمال نفوذ به سرور از طریق سرقت کلاینت و Private Key را منتفی میکند.
مدیریت کلیدهای پشتیبان و امنیت نشستها
در ساختار این سرویس، امنیت کل پروتکل به حفاظت از همان کلید مخفی اولیه بستگی دارد. اگر فردی به سورس یا رشته متنی آن کلید دسترسی پیدا کند، میتواند کدهای رمز را روی دستگاه دیگری شبیهسازی کند. به همین دلیل، در زمان راهاندازی اولیه، یک کلید پشتیبان در اختیار کاربر قرار میگیرد تا در صورت مفقود شدن، سرقت یا سوختن تلفن همراه، امکان بازیابی و بازسازی توکنهای امنیتی روی دستگاه جدید فراهم باشد. این کدهای پشتیبان باید در محلی کاملا امن و به صورت آفلاین نگهداری شوند.
سخن پایانی: Google Auth، راه حل جهانی برای احراز هویت
سرویس Google Authenticator با حذف واسطههای مخابراتی و تکیه بر الگوریتمهای ریاضی زمانمحور، استانداردهای احراز هویت را یک گام بزرگ رو به جلو برده است. پیادهسازی این سیستم روی لایههای دسترسی سرورهای اختصاصی و مجازی، یکی از محکمترین روشها برای بالا بردن ضریب امنیت زیرساخت و بستن راههای نفوذ فیشینگ است. با این راهکار، سرور بدون مصرف پهنای باند اضافی یا نیاز به اتصال دائمی به کلاینت، از هویت واقعی کاربران خود اطمینان حاصل میکند. ابزاری پایدار و مستقل که امنیت را بدون وابستگی به شبکه، در بالاترین سطح ممکن تعریف کرده است.
سوالات متداول
خیر این برنامه برای تولید کدهای ۶ رقمی به هیچ نوع اتصال اینترنت یا شبکه مخابراتی نیاز ندارد. کدهای امنیتی به صورت کاملا محلی و بر اساس فرمولهای ریاضی و تطبیق زمان داخلی دستگاه با کلید مخفی (Secret Key) تولید میشوند.
از آنجا که الگوریتم پیشفرض برنامه زمانمحور (TOTP) است، در صورت تداخل یا عدم هماهنگی زمانی حتی در حد چند ثانیه، کدهای تولید شده توسط اپلیکیشن با کدهای مورد انتظار سرور متفاوت خواهند بود و با خطای کد نامعتببر مواجه میشوید. برای حل این مشکل باید از بخش تنظیمات برنامه، گزینه Time correction را بزنید.
در الگوریتم TOTP کدهای امنیتی بر پایه زمان تولید میشوند و طول عمر بسیار کوتاهی (معمولا ۳۰ ثانیه) دارند و پس از آن منقضی میشوند. اما در الگوریتم HOTP کدهای تولید شده بر پایه یک شمارنده ریاضی کار میکنند و تا زمانی که کاربر از کد استفاده نکند یا درخواست جدیدی ندهد، آن کد معتبر باقی میماند.
اگر قابلیت Cloud Sync را فعال کرده باشید، با ورود به اکانت گوگل خود در دستگاه جدید کدهای شما بازیابی میشوند. در غیر این صورت، تنها راه بازگردانی حسابها، استفاده از کلیدهای پشتیبان (Backup Keys) است که در زمان راهاندازی اولیه به شما نمایش داده شده است.
خیر کدهای این نرمافزار هر ۳۰ ثانیه تغییر میکنند و منقضی میشوند. بنابراین حتی اگر هکری رمز عبور شما را سرقت کند، بدون دسترسی فیزیکی یا سختافزاری به دستگاهی که برنامه روی آن نصب است، نمیتواند وارد حساب شما شود.
شما میتوانید در تنظیمات خود اپلیکیشن، قابلیت App Lock را فعال کنید. با این کار، برنامه برای هر بار باز شدن از شما تاییدیه اثر انگشت، تشخیص چهره یا رمز عبور گوشی را درخواست میکند تا در صورت قفل نبودن گوشی، افراد ناشناس نتوانند کدهای شما را مشاهده کنند.































شما میتوانید دیدگاه خود را در مورد این مطلب با ما با اشتراک بگذارید.