روابط عمومی شرکت ایدکو (توزیعکنندهی محصولات کسپرسکی در ایران)؛ بسیاری از سرویسهای آنلاین اجازه میدهند (و برخی اوقات حتی شما را ملزم میدارند) که احراز هویت دوعاملی (2FA) را با کدهای یکبار مصرف راهاندازی کنید. Google Authenticator یکی از شناختهشدهترین و پرکاربردترین اپهای احرازگر است که چنین کدهایی را تولید میکند. تقریباً همه سرویسها با آن سازگاری دارند و برخی حتی وقتی 2FA را راهاندازی میکنید لینکی برای اپ ارائه میدهند. اما آیا Google Authenticator تنها گزینه است یا باید دنبال جایگزین برای آن بود؟ (چیزی مانند Microsoft Authenticator یا Twilio Authy). از آنجایی که این جایگزینها وجود دارند و واضحاً پایگاه کاربری دارند شاید فرض کنید میتوانند جایگزینهای تمام عیاری برای Google Authenticator باشند. اما مشکل کار کجاست؟ برای آن دسته از کسانی که وقت ندارند مقاله را تا انتها دنبال کنند (پیشنهاد میکنیم این مقاله را از دست ندهید!) جواب سرراست این خواهد بود؟ نگران نباشید، Google Authenticator آنقدری قوی هست که هیچ جایگزینی نخواهد. اما در ادامه با ما همراه شوید تا دلیل بیبدیل بودن این اپ را خدمتتان توضیح دهیم.
احرازگرها چطور کار میکنند؟
بیایید با این شروع کنیم که چطور اپهای احرازگر به طور کلی کار میکنند. چندین استاندارد باز برای احراز قوی تحت لوای اقدامی موسوم به Open Authentication (OATH) ساخته شده است. اپهای احرازگر مبتنی بر چنین استانداردهایی هستند (در کنار برخی چیزهای دیگر که البته در این مقاله محل بحث ندارند).
OATH HOTP
استاندارد احراز OATH HOTP (پسورد یکبار مصرف مبتنی بر هش) سال 2005 ظاهر شد. این اصول احراز را با استفاده از کدهای یکبار مصرف که همزمان از سمت کلاینت و سرور تولید میشدند تعیین کرد. ایده این بود که هم اپ و هم سرویسی که از آن استفاده میکنید کلید رمز واحدی را یاد داشته باشد. سپس الگوریتم رمزنگاری برای تولید کدی منحصر به فرد مبتنی بر این کلید و ارزشی شمارنده به کار میرود. شمارنده در اصل عددی است که هر بار کد یکبار مصرف جدیدی تولید می شود افزایش مییابد. داده برای محاسبه این کد در هر دو طرف یکسان است. پس اگر همهچیز طبق برنامه پیش رود هر دو کد همسان خواهند بود. آنچه میماند مقایسه آن دو است: درصورتیکه کد واردشده با آنی که سرور تولیدکرده هماهنگی داشته باشد احراز، موفقیتآمیز خواهد بود. بعد از هر درخواست برای سشن تولید، ارزش شمارنده تغییر میکند تا کد یکبارمصرف و منحصر به فرد باشد. از الگوریتمی استفاده میشود که انجام محاسبات معکوس و استخراج کلید رمز را از این کد رد کند. پس حتی اگر کسی کد یکبارمصرف را رهگیری هم کرد باز نخواهد توانست کلید رمز را محاسبه کند، احرازگر را بازتولید و کدهای جدید خودش را تولید نماید. اما دو مسئله در مورد HOTP وجود دارد. اول اینکه ارزشهای شمارشگر براحتی از حالت همخوانی در میآیند. برای مثال اگر از احرازگر بخواهید کدی را تولید کند اما از آن استفاده نکنید، احرازگر سمت کلاینت ارزش شمارشگر را عوض میکند و این درحالیست که از سمت سرور هنوز ارزش شمارشگر آن قبلی است. در نتیجه کدهای تولیدشده دیگر با یکدیگر همخوانی ندارند. دوم اینکه کدهای تولیدشده معتبر میمانند تا وقتی که ارزش شمارنده تغییر کند- این بالقوه به مهاجم زمان میدهد تا اگر قصد پرت کردن حواس کاربر را دارد از کد رهگیری استفاده کند.
OATH TOTP
در سال 2011 از استاندارد جدیدی به نام OATH TOTP رونمایی شد (پسورد یکبار مصرف مبتنی بر زمان) که از زمان فعلی بعنوان شمارنده استفاده میکند. اصل همان است: کلید رمز از سوی هر دو طرف شناختهشده است و برای محاسبه کد یکبارمصرف استفاده میشود (آن هم با یک الگوریتم واحد رمزنگاری). و چون شمارنده بر اساس زمان یونیکس است، کد به طور خودکار در فواصل زمانی منظمی تغییر مییابد (صرفنظر از اینکه استفاده شده یا نه). هر دستگاه متصل به اینترنتی اکنون میداند زمان دقیق چند است پس نیازی نیست نگران ناهمخوانی کدهای یکبار مصرف باشیم. و از آنجایی که فاصله زمانی که بعدش کد تغییر میکند کوتاه است (به طور پیشفرض 30 ثانیه). اگر کد یکبار مصرف رهگیری شود، مهاجم زمان زیادی برای استفاده از آن نخواهد داشت.
اصول اولیه احرازگرها
این دو استاندارد توسط برنامههای احراز هویت استفاده میشوند. البته TOTP رایجتر است، صرفاً به این دلیل که از هر نظر بهتر است، اما HOTP هنوز در برخی از پیادهسازیهای ماقبل تاریخ یافت میشود. هنگام ایجاد یک احراز هویت، سرویس گیرنده و سرور باید یک استاندارد مشترک تنظیم کنند و کلید را به اشتراک بگذارند - این حداقل مطلق مورد نیاز برای عملکرد برنامه احراز هویت است. پارامترهای اضافی را نیز میتوان برای ایجاد توکن تنظیم کرد. برنامه و سرویس چگونه با هم هماهنگ میشوند؟ در بیشتر موارد، با استفاده از یک کد QR. و این ما را به سؤال بعدی هدایت میکند: این کدها چگونه کار میکنند؟
محتوای کد کیو آر احرازگر
تا آنجا که میدانیم این یکی از استانداردهای توسعه یافته توسط OATH نیست، بلکه پیروی داوطلبانه از قالب تعیین شده توسط Google Authenticator است. اما در هر صورت، سیستمهای احراز هویت مبتنی بر برنامه تمایل دارند از کدهای QR استفاده کنند، که در آن یک لینک(به بیان دقیق، یک شناسه منبع یکسان یا URI)حاوی تمام اطلاعات لازم رمزگذاری میشود. در اینجا نمونهای از ظاهر آن آمده است:
otpauth://totp/Google:alanna@gmail.com?secret=IN2XE2LPOVZSYIDBOJSW4J3UEB4W65J7&issuer=Google&algorithm=SHA1&digits=6&period=30
همانطور که مستحضر هستید،کلی پارامتر در کد کیو آر منتقل می شود که نشاندهنده موارد زیر است:
- هدف یو آر آی- ایجاد توکن احراز هویت (از ابتدا otpauth برای همین ساخته شده است).
- استاندارد احزارگر: HOTP or TOTP که در اینجا منظور TOTP است.
- برچسب نشانهای که در داخل برنامه نمایش داده میشود - در مثال ما، Google.
- نام کاربری که اینجا alanna@gmail.com است.
- کلید رمز که از آن، کدها تولید میشوند (در فرمت Base32)؛ مهمترین بخش رشته بلند کاراکترهای رندوم است.
- نام سرویسی که یوآرآی ساخته است- در مثال ما باری دیگر گوگل.
- الگوریتم استفادهشده برای تولید کدها- در مثال ما SHA1.
- طول کدهای تولیدشده- معمولاً شش کاراکتری که اینجا نشان داده شده است اما سایر متغیرها هم قابلقبولند.
- مدت زمانی که بعدش کد منقضی میشود- معمولاً 30 ثانیه اما فواصل زمانی دیگر هم میتوان تنظیم کرد.
در واقع، همانطور که در بالا ذکر کردیم، بسیاری از این پارامترها را میتوان حذف کرد. برچسب توکن و نام کاربری ممکن است دلخواه باشند، در حالی که نام سرویس اصلاً مورد نیاز نیست - این اطلاعات تأثیری بر تولید کد ندارد و عمدتاً برای راحتی در آنجا وجود دارد. برخی از پارامترهای دیگر نیز اجباری نیستند. احراز هویت از الگوریتم تولید کد پیشفرض (SHA1) استفاده میکند و یک کد شش رقمی با دوره بهروزرسانی 30 ثانیه تولید میکند، مگر اینکه در URI کدگذاری شده باشد.اساساً، سرویس و تأیید کننده فقط باید استاندارد (HOTP یا TOTP)را تنظیم کرده و کلید مخفی را به اشتراک بگذارند. بنابراین، URI و کد QR زیر دقیقاً همان توکن تأیید اعتبار را از نظر عملکردی با جفت قبلی ارائه میدهند:
otpauth://totp/Whenever:Wherever?secret=IN2XE2LPOVZSYIDBOJSW4J3UEB4W65J7
نکته اصلی این است که اکثر سرویسهایی که از کدهای ایجاد شده توسط برنامه برای احراز هویت استفاده میکنند با چنین کدهای QR کار میکنند. هر برنامه احراز هویت، به نوبه خود، از خواندن چنین کدهای QR و تبدیل آنها به توکن های احراز هویت پشتیبانی میکند، که به نوبه خود، کدهای یکبار مصرف را تولید میکنند. بنابراین، به جای Google Authenticator، میتوانید یکی از دهها گزینهای را که علاقهتان را به خود جلب میکند، انتخاب کنید.
چند استثنا: سرویسهای که با احرازگرها معمول سازگاری ندارند
بنا به دلایلی، همه افراد در صنعت فناوری اطلاعات از استانداردهای بالا پیروی نمیکنند: برخی ترجیح میدهند استانداردهای خود را ارائه دهند. در اینجا چند شرکت وجود دارد که خدمات و برنامههایشان با برنامههای احراز هویت شخص ثالث (از جمله Google Authenticator)سازگار نیست.
- اپل: بچههای کوپرتینو سیستم احراز هویت دو عاملی خود را دارند که به هیچوجه از اپهای طرفسوم استفاده نمیکند. در عوض کدهای یکبار مصرف توسط سیستم عامل به طور همزمان در تمام دستگاههای متصل به Apple ID تولید میشوند. این هم یک مدلش است!
- ولو ای بلیزارد: برای امنیت روی استیم و بتل.نت، توسعهدهندگان 2FA مخصوص به خود را پیشنهاد میدهند: به ترتیب Steam Guard (درونسازهای در اپهای استیم هم روی اندروید و هم آیاواس) و Battle.net Authenticator. تا آنجا که مشخص شده است، تنها یک اپ احرازگر طرفسوم هست که از این سیستمها پشتیبانی میکند: WinAuth.
- مایکروسافت: برای احراز هویت حساب مایکروسافت، باید Microsoft Authenticator را نصب کنید. از طرف دیگر، نیازی به وارد کردن کد نیست: فقط با ضربه زدن روی یک دکمه در برنامه، ورود را تأیید کنید. به عنوان یک امتیاز، Microsoft Authenticator همچنین توکنهای احراز هویت استاندارد را تولید میکند که آن را به یک جایگزین قوی برای Google Authenticator تبدیل میکند. اتفاقاً برای استفاده از آن نیازی به حساب مایکروسافت ندارید.
- ادوبی: توسعهدهنده نرمافزار گرافیکی برنامه خود را برای 2FA ارائه میدهد - Adobe Account Access - که با منطق مشابه Microsoft Authenticator کار میکند: ورود به حساب Adobe شما با ضربه زدن روی یک دکمه، نه ارسال کد، احراز هویت میشود. در تئوری، این برنامه همچنین از ایجاد نشانههایی برای احراز هویت در خدمات طرفسوم پشتیبانی میکند. با این حال، برای فعال کردن دسترسی به حساب Adobe، ابتدا باید برنامه را به حساب Adobe خود لینک دهید، که بر اساس بررسیهای App Store و Google Play، توصیه نمیشود.
پس مجبورم از Google Authenticator استفاده کنم؟
نه لزوماً. همه سرویسهایی که با Google Authenticator کار میکنند به شما اجازه میدهند تا با استفاده از هر اپ جایگزینی احراز هویت دوعاملی را راهاندازی کنید. علاوه بر این، بسیاری از آنها از گوگل مزیتهای بیشتری دارند.
منبع: کسپرسکی آنلاین (ایدکو)
کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز میشناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.