کپچا چیست و چگونه کار می‌کند؟

کپچا ابزاری امنیتی برای شناسایی کاربر انسانی از ربات‌های مخرب در اینترنت است که برای افزایش امنیت وب‌سایت‌ها و سرویس‌های آنلاین کاربرد دارد.

قطعا تاکنون در زمان ثبت‌نام یا ورود به برخی از وب‌سایت‌های اینترنتی با بخشی به‌‌نام کپچا یا CAPTCHA روبه‌رو شده‌اید. فرم‌هایی که فعالیت‌های گوناگون از نوشتن اعداد و حروف یک تصویر یا انتخاب تصاویر با سوژه‌های خاص یا حتی یک کلیک ساده روی یک باکس را از شما درخواست می‌کنند. احتمالا تاکنون از خود پرسیده‌اید که کپچا چیست و چگونه باعث افزایش امنیت وب‌سایت می‌شود. به بیان دیگر یک فرم با ظاهری بسیار ساده چگونه انسان و ربات را از هم تشخیص می‌دهد؟

در ادامه‌ی این مطلب زومیت ابتدا مفاهیم پایه‌های کپچا و ساختار آن را شرح می‌دهیم. سپس انواع گوناگون را بررسی می‌کنیم و در نهایت هم به این سؤال پاسخ می‌دهیم که کدهای کپچا چه کاربردی در توسعه‌ی هوش مصنوعی دارند؟

کپچا یا CAPTCHA چه معنایی دارد؟

عبارت CAPTCHA مخفف Completely Automated Public Turing test to tell Computers and Humans Apart است. به‌بیان دیگر، کپچا یک آزمایش تورینگ کاملا خودکار محسوب می‌شود که انسان را از کامپیوتر تشخیص می‌دهد. اگر با آزمایش تورینگ، آشنا نیستید، پیشنهاد می‌کنیم مطلب مرتبط با آن را با نام آزمون تورینگ و چالش ارزیابی هوش مصنوعی مطالعه کنید. درنهایت صرف‌نظر از نام‌گذاری و تعریف‌ها، کپچا تشخیص می‌دهد که کاربر وب‌سایت انسان یا ربات اسپم است. کدهای کپچا عموما از ترکیبی از اعداد و حروف استفاده می‌کنند و وابسته به توانایی انسان در تشخیص آن‌ها هستند.

آزمون کپچا / Captcha

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

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

کپچا چگونه کار می‌کند؟

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

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

کپچا

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

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

reCAPTCHA چیست؟

ری‌کپچا سرویس رایگان گوگل است که با هدف جایگزین کردن کپچا سنتی توسعه یافت. فناوری این نوع از کپچا نیز توسط دانشمندان دانشگاه کارنگی ملون توسعه یافت، اما گوگل آن را در سال ۲۰۰۹ خرید. reCAPTCHA آزمایش‌های پیچیده‌تری را نسبت به کپچا معمولی اجرا می‌کند.

recaptcha

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

گوگل با گذشت زمان چند نوع گوناگون از reCHAPTCHA را توسعه داد تا به‌مرور وابستگی به شناسایی حروف و اعداد از بین برود. چرا که کامپیوترها روز‌به‌روز پیشرفته‌تر می‌شوند و امکان توسعه‌ی توانایی برای شناسایی حروف و اعداد از میان تصاویر در آن‌ها وجود دارد. اکنون reCHAPTCHA در سه‌نوع در وب‌سایت‌ها استفاده می‌شود:

  • تشخیص تصویر
  • کادر انتخاب (Checkbox)
  • ارزیابی رفتار کاربر عمومی (که نیازی به تعامل با کاربر ندارد)

reCHAPTCHA تشخیص تصویر چگونه کار می‌کند؟

آزمایش reCHAPTCHA در حالت شناسایی تصویر، عموما ۹ یا ۱۶ تصویر مربعی را در کنار یکدیگر به کاربر نمایش می‌دهد. تصاویر در انواع گوناگونی هستند. به‌عنوان مثال ممکن است ۹ تصویر کوچک‌شده از یک عکس بزرگ ببینید یا هر عکس مربعی با دیگری تفاوت داشته باشد. کاربر باید تصاویری که شامل یک سوژه‌ی مشخص و موردنظر آزمایش می‌شود، شناسایی کند. به‌عنوان مثال باید عکس‌هایی که شامل حیوان، درخت، علامت راهنمایی و رانندگی، خودرو یا هر سوژه‌ی دیگری باشد، انتخاب کنید. اگر پاسخ کاربر، با پاسخ اکثریت کاربران دیگری که آزمایش یکسان را گذرانده‌اند، یکسان باشد، آزمایش را با موفقیت پشت سر می‌گذارد.

recaptcha تشخیص تصویر

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

reCHAPTCHA کادر انتخابی چگونه کار می‌کند؟

قطعا تاکنون با ساده‌ترین نوع کپچا یعنی کلیک کردن روی کادر «من ربات نیستم (I’m not a robot)» روبه‌رو شده‌اید. در نگاه اول این آزمایش‌ها ساده هستند و از خود می‌پرسیم چگونه کلیک کردن روی یک کادر، انسان و ربات را از هم متمایز می‌کند؟ آزمایش کپچا از نوع کلیک کردن در یک کادر مشخص، تنها محدود به فرایند کلیک کردن نیست، بلکه تمامی رفتارهایی که به کلیک کردن می‌انجامد را بررسی می‌کند.

reCAPTCHA کادر انتخابی، حرکت ماوس و کوکی‌های کاربر را در تمایز به‌کار می‌گیرد

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

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

reCHAPTCHA بدون تعامل با کاربر چگونه کار می‌کند؟

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

نقاط ضعف CAPTCHA و reCHAPTCHA

کدهای کپچا و ری‌کپچا باوجود تمام مزایای امنیتی که به‌همراه دارند، موانعی بر سر راه کاربر محسوب می‌شوند و شاید تجربه‌ی کاربری آن‌‌ها خدشه‌دار کنند. به‌هرحال کاربر برای انجام دادن کاری در وب، مجبور به گذراندن آزمایشی می‌شود که شاید همیشه هم آسان نباشد.

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

captcha

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

ارتباط CAPTCHA و reCHAPTCHA با توسعه‌ی هوش مصنوعی

آزمون‌های کپچا علاوه بر کاربرد امنیتی، به توسعه‌ی آسان‌تر هوش مصنوعی نیز کمک می‌کنند. روزانه میلیون‌ها کاربر، متون موجود در تصاویر تیره و مبهم را شناسایی می‌کنند که داده‌ی خروجی از شناسایی آن‌ها، به هوش مصنوعی تزریق می‌شود. با این روند، عملکرد هوش مصنوعی در انجام وظایف مشابه بهبود می‌یابد.

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

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