CAPTCHA یک نوع سیستم چالش-پاسخ است که به منظور تشخیص انسانها از برنامههای کامپیوتری رباتیک طراحی شده است. CAPTCHAها به عنوان چکهای امنیتی استفاده میشوند تا از اسپمرها و هکرها جلوگیری کنند که از فرمها در صفحات وب برای وارد کردن کدهای خبیث یا بیمعنی استفاده کنند.
CAPTCHA چگونه کار میکند؟
به طور ساده، CAPTCHA با درخواست انجام کاری از کاربران نهایی کار میکند که یک بات نرمافزاری نمیتواند آن را انجام دهد. اگر کاربر بتواند وظیفه را به درستی انجام دهد، این تأیید میکند که کاربر یک انسان است و نه یک spambot و به کاربر اجازه میدهد که ادامه دهد.
آزمونها اغلب شامل تصاویر JPEG یا GIF هستند زیرا در حالی که باتها میتوانند وجود یک تصویر را با خواندن کد منبع شناسایی کنند، نمیتوانند بفهمند که تصویر چه چیزی را نشان میدهد.
به دلیل اینکه برخی از تصاویر CAPTCHA سخت تفسیر هستند، معمولاً به کاربران انسانی اجازه داده میشود که یک آزمون CAPTCHA جدید درخواست کنند.
تاریخچه CAPTCHA
نیاز به CAPTCHAها از سال 1997 شروع شد. در آن زمان، موتور جستجوی اینترنتی AltaVista به دنبال یک راه برای مسدود کردن ارسالهای خودکار URL به پلتفرم بود که الگوریتمهای رتبهبندی موتور جستجو را مختل میکرد.
برای حل این مشکل، اندری برودر، که پیش از آن علمیترین متخصص AltaVista بود، یک الگوریتم طراحی کرد که به طور تصادفی یک تصویر از متن چاپ شده تولید میکرد.
اگرچه کامپیوترها نمیتوانستند تصویر را شناسایی کنند، انسانها میتوانستند پیام موجود در تصویر را بخوانند و به طور مناسب پاسخ دهند. برودر و تیم او در آوریل 2001 یک اختراع برای این فناوری دریافت کردند.
در سال 2003، نیکلاس هوپر، مانوئل بلوم، لوئیس فون آهن از دانشگاه کارنگی ملون و جان لانگفورد از IBM الگوریتم را کامل کردند و واژه CAPTCHA را برای "آزمون تورینگ کاملاً خودکار عمومی برای تشخیص کامپیوترها از انسانها" ابداع کردند.
یک آزمون تورینگ از هوش مصنوعی (AI) استفاده میکند تا تعیین کند که آیا یک کامپیوتر قادر به فکر کردن مانند یک انسان است یا خیر. این آزمون به نام بنیانگذار خود، آلن تورینگ، یک دانشمند کامپیوتر، کریپتوانالیست، ریاضیدان و زیستشناس نظری نامگذاری شده است.
جیسون پولاکیس، یک استاد علوم کامپیوتر، در سال 2016 مسئولیت افزایش سختی CAPTCHA را به عهده گرفت زمانی که یک مقاله منتشر کرد که در آن از ابزارهای شناسایی تصویر برای حل CAPTCHAهای تصویری گوگل با دقت 70% استفاده کرد.
پولاکیس باور دارد که ما در نقطهای هستیم که سخت کردن CAPTCHAها برای نرمافزارها به طور همزمان باعث میشود که برای انسانها نیز سختتر شود.
انواع مختلف CAPTCHAها
- **CAPTCHA متنی**: معمولترین نوع CAPTCHA، CAPTCHA متنی است که از کاربر میخواهد تا حروف یا متنی معوج را مشاهده کند، معمولاً شامل یک رشته از کاراکترهای الفبایی-عددی در یک تصویر، و کاراکترها را در یک فرم مرتبط وارد کند. این کار باعث میشود باتهایی که معمولاً در تشخیص الگو آموزش داده شدهاند، سادهواره نتوانند به طور مستقل و مانند یک انسان عکسالعمل نشان دهند.
- **CAPTCHA صوتی**: CAPTCHAهای متنی نیز به صورت CAPTCHAهای صوتی MP3 ارائه میشوند تا نیازهای افراد نابینا را برآورده کنند. همانطور که با تصاویر است، باتها میتوانند حضور یک فایل صوتی را تشخیص دهند، اما فقط یک انسان میتواند گوش دهد و بداند که این فایل چه اطلاعاتی دارد.
- **CAPTCHA تشخیص تصویر**: یکی دیگر از CAPTCHAهای رایج، از تشخیص تصویر استفاده میکند و از کاربران میخواهد که یک زیرمجموعه از تصاویر را در میان یک مجموعه بزرگتر از تصاویر شناسایی کنند. به عنوان مثال، ممکن است به کاربر مجموعهای از تصاویر داده شود و از او خواسته شود که روی تمام تصاویری که دارای ماشینها، اتوبوسها یا علائم خیابان در آنها هستند، کلیک کند.
سایر انواع CAPTCHA شامل:
- CAPTCHA ریاضی: از کاربر میخواهد که یک مسئله ریاضی ساده را حل کند، مانند جمع یا تفریق دو عدد.
- CAPTCHA سهبعدی: از کاربر میخواهد که یک تصویر رندر شده در سه بعد را شناسایی کند.
- CAPTCHA "من ربات نیستم": از کاربر میخواهد که یک جعبه را علامت بزند.
- CAPTCHA بازاریابی: از کاربر میخواهد که یک کلمه یا عبارت خاص مرتبط با برند حامی را تایپ کند.
این انواع مختلف CAPTCHA به طور موثری به وبسایتها و سرویسهای آنلاین کمک میکنند تا از حملات خودکار و نرمافزارهای بداندیش جلوگیری کنند، در حالی که همچنان به کاربران انسانی اجازه دسترسی میدهند.
مزایا و معایب CAPTCHAها
**مزایا**:
1. از اسپمهای تولید شده توسط برنامههای خودکار جلوگیری میکنند که میتوانند ایمیلها، نظرات یا تبلیغات را ارسال کنند.
2. از ثبتنامها یا ورودهای جعلی برای وبسایتها جلوگیری میکنند.
3. CAPTCHAها آشنا هستند، بنابراین بازدیدکنندگان وبسایت به طور خودکار متوجه میشوند که چه کاری باید انجام دهند.
4. CAPTCHAها همچنین آسان برای پیادهسازی در ساخت یک وبسایت هستند.
**معایب**:
1. CAPTCHAها ضد خطا نیستند و فقط میتوانند اسپم را محدود کنند.
2. ممکن است برای کاربران نهایی وقتگیر یا آزاردهنده باشند.
3. برخی از افراد ممکن است CAPTCHAها را دشوار برای خواندن پیدا کنند.
4. وبسایتهایی که از CAPTCHAها استفاده میکنند ممکن است کاهش ترافیک مشاهده کنند زیرا کاربران وظایف را دشوار مییابند.
چگونه مهاجمان CAPTCHAها را شکست میدهند
مهاجمان چندین روش برای دور زدن CAPTCHAها دارند، مانند استفاده از الگوریتمهای یادگیری ماشین (ML)، که یک روش سریع و دقیق برای شکستن یک CAPTCHA فراهم میکند.
مهاجمان میتوانند یا از یک مدل یادگیری عمیق استفاده کنند، که یک مجموعه بزرگ از نمونههای CAPTCHA را دانلود میکند که مدل چگونگی حل آن را یاد میگیرد، یا از یک شبکه مخاصمهای تولیدی (GAN) برای ایجاد CAPTCHAها استفاده کنند تا سپس چگونگی حل آنها را یاد بگیرند.
علاوه بر این، CAPTCHAهایی که از هشهای MD5 استفاده میکنند، به حملات نیروی زیاد (brute-force) حساس هستند.
برای مقابله با این موضوع، بسیاری از سازمانها سیستمهای CAPTCHA پیشرفتهتری را توسعه دادهاند، مانند Google reCAPTCHA که از تجزیه و تحلیل ریسک پیشرفته و چالشهای تطبیقی استفاده میکند تا از ورود نرمافزارهای خبیث به سیستم اطلاعاتی کاربر جلوگیری کند.
**دور زدن CAPTCHA**
کاربرانی که دوست ندارند CAPTCHAها را حل کنند، میتوانند از چندین افزونه مرورگر استفاده کنند که به کاربران اجازه میدهد CAPTCHAها را دور بزنند. افزونههای مرورگر محبوب شامل AntiCaptcha و Rumola است.
برنامه افزونه حلکننده خودکار CAPTCHA به نام AntiCaptcha برای Chrome و Firefox به طور خودکار یک CAPTCHA را در یک صفحه وب پیدا میکند و آن را برای کاربر حل میکند. این افزونه با ویژگی کمک به کاربران با مشکلات بینایی، و همچنین برای کاربرانی که ترجیح میدهند کدهای CAPTCHA را دور بزنند، تبلیغ میشود.
افزونه Rumola برای Firefox، Chrome و Safari به طور خودکار به دنبال CAPTCHAها در صفحات وبی است که یک کاربر مشاهده میکند. برای کسانی که نمیخواهند یک افزونه را نصب کنند، Rumola یک bookmarklet ارائه میدهد.
با توجه به اینکه اشخاص ثالث افزونههای دور زدن CAPTCHA را ایجاد میکنند، کاربران نهایی باید آگاه باشند که افزونههای مرورگر ممکن است فعالیت مرور آنها را به منابع نااعتماد نشان دهد.
دلیل دیگر برای استفاده نکردن از دور زدنهای CAPTCHA این است که عملکرد افزونهها ناپایدار است. این بیشتر به این دلیل است که همانطور که باتها هوشمندتر میشوند، CAPTCHAها نیز در حال تکامل هستند و ممکن است برای برنامههای افزونه دشوار باشد تا با آنها همگام شوند.