کپچا چیست؟ تاریخچه، کاربردها و انواع کپچا
در این مقاله میخوانید
کپچا چیست؟ اگر شما هم با پیامهای اسپم در سایت خود مواجه شدهباشید، احتمالاً پاسخ این سؤال را بهصورت دقیق نمیدانید! کپچا یکی از راهکارهای متداول در وب، برای تشخیص ربات یا انسان بودن کاربر است. در این مطلب از بخش آموزش امنیت بلاگ پارسپک، علاوه بر کلیاتی در مورد کپچا (CAPTCHA)، تاریخچه، انواع، روشهای حل و همچنین تفاوت آن را با ریکپچا، توضیح دادهایم. اگر شما هم میخواهید از این روش برای جلوگیری از اسپم استفاده کنید، این مطلب را تا انتها دنبال کنید.
تاریخچه کپچا
ابتدای توسعهی کپچاهای نوین به سال ۱۹۹۷ برمیگردد؛ یعنی زمانی که مارک دی. لیلبریج (Mark D. Lillibridge) متخصص علوم کامپیوتر در دانشگاه کارنگی ملون (Carnegie Mellon) بهدنبال راهکاری برای مقابله با اسپمها (Spams) در انجمنهای آنلاین بود.
او به این نتیجه رسید که کپچاهای سنتی مثل نمونههایی که از تشخیص حروف استفاده میکردند، میتوانند به راحتی توسط ابزارهای تشخیص کاراکتر (OCR) دور زده شوند. لیلبریج سپس یک کپچای جدید مبتنی بر تصاویر حیوانات را توسعه داد که کاربران برای اثبات اینکه بات نیستند، باید آنها را انتخاب میکردند. این سیستم کپچا، «تشخیص تصویر گونههای حیوانات» (Animal Species Image Recognition) نامیده شد.
در سالهای بعد، کپچاهای متنی بهدلیل سادگی حل کردن و همچنین سادهتر بودن روند پیادهسازی، نسبت به دیگر انواع کپچا محبوبیت بیشتری پیدا کردند. این کپچاها که الان هم میتوانید نمونههایی از آنها را در وبسایتهای مختلف ببینید، از حروف و اعداد با ظاهر بههمریخته استفاده میکنند و کاربران برای حل کپچا باید آنها را بهصورت دستی وارد کنند. این روش بهدلیل اینکه کاربر باید با انجام دادن کاری که رباتها قادر به انجامش نیستند، ثابت کند که یک ربات نیست، «تست معکوس تورینگ» (Reverse Turing Test) هم نامیده میشد.
سؤالی که حالا مطرح میشود این است که در مسئلهی امنیت وبسایتها، راهحل کپچا چیست؟ یعنی CAPTCHA گوگل یا هر نوع دیگری از کپچا که روی وبسایت پیادهسازی میشود، چطور میتواند باعث شود تا امنیت وبسایت افزایش یابد؟
پاسخ این است که تیمهای امنیتی همیشه در حال بهروزرسانی الگوریتمهای مورد استفاده در کپچا هستند تا از این طریق بتوانند امنیت وبسایتها و اپلیکیشنها (applications را بهبود بدهند. اما اینکه کپچا چطور میتواند امنیت وبسایتها را بالاتر ببرد، موضوع مهمی است که در قسمت بعدی در مورد آن توضیح دادهایم.
کاربردهای کپچا در امنیت وبسایتها
با اطلاعاتی که تا این قسمت بهدست آوردهایم، میدانیم که اصلیترین وظیفهی کپچا این است که از فعالیت رباتها در سایت جلوگیری کند؛ فعالیتهایی که میتوانند در سایت حساب جعلی بسازند، هرزنامه (Spam) ارسال کنند و یا حتی با انجام کارهایی مثل حدس زدن رمز عبور، راهی برای نفوذ به وبسایت پیدا کنند. نمونههای زیر، از جمله راهکارهایی است که کپچا به ارتقای امنیت سایت کمک میکند:
۱- جلوگیری از هرزنامه (Spam)
هیچ کدام از ما دوست نداریم وقتی ایمیل خودمان را باز میکنیم، اینباکس (Inbox) ایمیلمان پر از پیامهایی باشد که بهخاطر نداشتن کپچا تولید شدهاند. الزام کاربران به حل کپچا قبل از ارسال نظر یا ثبت اطلاعات روی فرمهای تماس، میتواند میزان اسپم (spam) تولید شده در وبسایت را کاهش دهد.
۲- محافظت از اعتبارنامههای ورود (Login Credentials)
یکی از راهکارهایی که رباتها برای نفوذ غیرقانونی به وبسایتها از آن استفاده میکنند، حدس کلمهی عبور است. آنها آنقدر این کار را انجام میدهند تا بالاخره بتوانند رمز عبور سایت را پیدا کنند. به این نوع از حملات، «حملهی جستجوی فراگیر» (Brute Force Attack) گفته میشود. در صورتیکه روی صفحهی ورود (Login) وبسایت خود از کپچا استفاده کرده باشید، رباتها تا زمانی که کپچا را حل نکرده باشند، نمیتوانند دوباره رمز عبور را حدس بزنند. با این روش میتوانید از این حملات جلوگیری کنید.
۳- محدود کردن سوء استفاده از ایجاد حساب کاربری
بعضی از رباتها اینطور برنامهریزی شدهاند که روی وبسایتها، بهصورت اتوماتیک حساب کاربری ایجاد کنند و این کار را تا زمانیکه عملکرد وبسایت دچار اختلال شود، ادامه میدهند. در صورتیکه قبل از ثبتنام کاربر جدید، او را ملزم به حل کپچا کنید، این مشکل امنیتی هم حل میشود.
برای آشنایی با اسپم و نحوه کار آن مقاله زیر از سایت پارسپک را بخوانید:
انواع کپچا
کپچاها، انواع مختلفی دارند. شما هم مطمئناً انواع مختلفی از آنها را در وبسایتهای مختلف دیدهاید. در ادامه، برخی از مهمترین آنها معرفی شده است:
۱- کپچا متنی (Text-based CAPTCHA)
کپچا متنی اولین و متداولترین نوع کپچا است. در این روش، یک سری اعداد و حروف بههمریخته، کج و معوج یا با رنگها و فونتهای مختلف نشان داده میشود و کاربر باید آنها را در فرم مربوطه وارد کند. بعضی از این نوع کپچاها، حتی به بزرگ و کوچک بودن حروف هم حساس هستند.
۲- کپچا تصویری (Image-based CAPTCHA)
در این نوع از کپچا، تصویری که در آن اشیاء یا الگوهای خاصی قرار گرفتهاست، به کاربر نشان داده میشود و از او خواسته میشود تا اشیاء خاصی را شناسایی و انتخاب کند. کپچا گوگل اخیراً از همین روش استفاده میکند. مثلاً از کاربر خواسته میشود تا از بین عکسهای نشان داده شده، عکس چراغ راهنمایی یا پل و … را انتخاب کند.
۳- کپچا صوتی (Audio CAPTCHA)
در این نوع از کپچا برای جلوگیری از اسپم، چند عدد یا حرف یا ترکیبی از آنها بهصورت صوتی پخش میشود. سپس کاربر باید آنها را به ترتیب و بهصورت دستی در فرم وارد کند. استفاده از این روش بهخصوص برای افرادی که دارای اختلال بینایی هستند، بسیار کاربردی است.
۴- کپچا ریاضی (Math CAPTCHA)
در این نوع از تست CAPTCHA، یک معادلهی خیلی ساده نشان داده میشود و کاربر باید جواب این معادله را در فرم وارد کند. مثلاً ممکن است پاسخ معادله، جمع دو عدد تک رقمی باشد.
۵- کپچا نامرئی (Invisible CAPTCHA)
یکی دیگر از انواع CAPTCHA، کپچای نامرئی است. برای حل کپچا نامرئی، کاربر نیازی به انجام هیچ کاری ندارد. در واقع این الگوریتمهای خود کپچا است که رفتار کاربر مثل الگوی حرکت موس یا کلیک را تحلیل میکند و براساس آنها به این نتیجه میرسد که کاربر، ربات است یا خیر. CAPTCHA گوگل یا همان reCAPTCHA یک نمونه از کپچای نامرئی است که از آن به طور گسترده در وبسایتها استفاده میشود.
روشهای حل کپچا
حالا باید ببینیم حل کپچا با چه روشهایی امکانپذیر است. دو روش اصلی برای حل CAPTCHA وجود دارند:
روشهای دستی
روش دستی یعنی یک انسان و با استفاده از اطلاعات خود، کپچا را حل کند. هر کسی که قصد استفاده از رباتها برای حل کپچا را نداشته باشد، در واقع از همین روش استفاده میکند و مهمترین فلسفهی کپچا هم این است که رباتها نتوانند با حل آن، امنیت وبسایت را به خطر بیندازند.
روشهای خودکار
نرمافزارها و باتهای مختلفی طراحی شدهاند که تلاش میکنند تا کپچا را با روشی بهغیر از روش دستی حل کنند. بعضی از روشهایی که این رباتها از آن استفاده میکنند، عبارتاند از:
روش تشخیص الگو (Pattern Recognition)
استفاده از این روش بیشتر برای کپچاهای متنی کاربرد دارد. با استفاده از این روش، باتها طوری برنامهنویسی میشوند که با استفاده از الگوریتمهای تشخیص الگو، اعداد و حروف کپچا را شناسایی کرده و از آن برای حل کپچا استفاده کنند.
روش یادگیری ماشین (Machine Learning)
در این روش که بر اساس تلفیقی از هوش مصنوعی (Artificial intelligence) و یادگیری ماشین (Machine Learning) انجام میشود، ابتدا تعداد زیادی تصویر از کپچاهای مختلف جمعآوری میشود. در گام بعد، هر یک از تصاویر با پاسخ دقیق آن برچسبگذاری (Labeling) میشود. سپس تصاویر به فرمتی مثلِ آرایههای عددی تبدیل میشود که برای مدل یادگیری ماشین قابل فهم است. در نهایت هم با تقویت دادهها (Data Augmentation) و آموزش مدل، امکان حل CAPTCHA از این طریق فراهم میشود.
روش شبکهی عصبی مصنوعی (Artificial Neural Networks)
شبکههای عصبی مصنوعی و بهخصوص نوع کانولوشنی آن (Convolutional Neural Network) یکی دیگر از راههای قدرتمند برای حل خودکار کپچا هستند. این شبکهها با الهام گرفتن از مغز انسان، میتوانند الگوهای پیچیدهی موجود در تصاویر کپچا را با هر سطح از بههمریختگی، شناسایی کنند. بهصورت خیلی خلاصه، این فرایند مشابه با زمانی است که شما میخواهید حروف دستنویس را در یک نوشته تشخیص دهید.
تفاوت ریکپچا و کپچا چیست؟
یکی از اصطلاحاتی که زیاد شنیدهایم، ریکپچا (reCAPTCHA) است و ممکن است برایتان سؤال پیش آمده باشد که تفاوت ریکپچا و کپچا در چیست. قبل از بررسی تفاوتهای این دو، لازم است بدانید که هم کپچا و هم ریکپچا، پروتکلهای امنیتی هستند که هدفشان تشخیص تفاوت عملکرد انسان و ماشین در وبسایتها و اپلیکیشنها است. اما با هم تفاوتهایی هم دارند:
۱- نحوهی عملکرد
عملکرد کپچا بر اساس سختی درک الگوریتمی است. یعنی شکل یا متن نشان دادهشده در کپچا، آنقدر سخت و پیچیده است که رباتها قادر به شناسایی و تحلیل آن نیستند؛ مسئلهای که در بعضی مواقع، باعث میشود تا حتی انسانها هم قادر به حل کپچا نباشند. اما عملکرد در ریکپچا که نسخهی پیشرفتهتری از کپچا است و توسط گوگل توسعه داده شدهاست، بهگونهی دیگری است. در بسیاری موارد حتی بدون اینکه نیاز باشد تا کاربر کار خاصی را انجام دهد، عملکرد او توسط ریکپچا کنترل شده و کاربر نیاز به حل چالش ندارد.
۲- تکنولوژی مورداستفاده
کپچا از تکنولوژی سادهتر و استاتیک برای تشخیص ربات استفاده میکند اما در توسعهی ریکپچا از مدلها و الگوریتمهای پیچیدهی یادگیری ماشین استفاده شده است. این مسئله باعث شده است تا حل کپچا به مراتب سختتر از ریکپچا باشد و باعث شود تا ریکپچا، تجربهی کاربری بهتری را به کاربران ارائه دهد.
۳- موارد استفاده
ریکپچا معمولاً در پروژههای بزرگ و با تعداد کاربران فعال زیاد مورد استفاده قرار میگیرد. اما استفاده از کپچا همچنان در پروژههای کوچک و متوسط، کاربرد زیاد دارد.
۴- امنیت
اگر چه هم کپچا و هم ریکپچا بهصورت مداوم توسط تیمهای امنیتی توسعه داده میشوند و تلاش میکنند تا سطح امنیت قابل قبولی را برای کاربران به همراه داشته باشند، اما با این حال با توجه به اینکه ریکپچا از الگوریتمهای یادگیری ماشین استفاده میکند، میتواند ایمنی بالاتری نسبت به کپچا داشته باشد.
چالشهای پیشروی کپچا چیست؟
اگر چه تا همین حالا هم کپچا و ریکپچا در کنار هم توانستهاند سطح امنیت وبسایتها را به صورت قابل ملاحظهای ارتقا دهند، اما پیشرفت تکنولوژی و پیچیدهتر شدن روشهای حملات سایبری (Cyber attack)، مسئلهای است که میتواند آیندهی کپچا را با چالش روبرو کند. موارد زیر از جمله مهمترین چالشهایی است که کپچا باید راهحلی برای آنها پیدا کند:
۱- پیشرفت هوش مصنوعی و یادگیری ماشین
همانطور که هوش مصنوعی و یادگیری ماشین میتواند در توسعهی کپچا کمک کننده باشد، رباتها هم با استفاده از همین تکنولوژیها در تلاش هستند تا کپچاها را بهطریقی دور بزنند. الگوریتمهای پیشرفته مانند شبکهی عصبی هم به رباتها و نفوذگران کمک کرده است تا الگوهای بهکار رفته در کپچاها را بهسرعت شناسایی کنند. حالا این مصاف تکنولوژیک میان کپچا و رباتهای نفوذگر است که تعیین میکند چه کسی برندهی این بازی است.
۲- کاهش تجربهی کاربری
یکی از انتقادات همیشگی به کپچا، مشکل تجربهی کاربری (User experience) است. پیچیدگیهایی که در حل بعضی از انواع کپچا وجود دارد، کاربران را کلافه میکند. این موضوع بهخصوص در وبسایتهای فروشگاهی و تجاری که رقابت در آنها بسیار بالا است، میتواند باعث کاهش فروش شود.
۳- حملات سایبری پیشرفته
سیستمهای سنتی کپچا در مقابل بعضی از حملات پیشرفتهی سایبری مانند CAPTCHA Relay که کپچا در یک جای دیگر و برای یک انسان ارسال میشود، کارایی بالایی ندارند. بنابراین نیاز به راهکار خلاقانهتری وجود دارد که در مقابل این نوع از حملات هم مقاوم باشد.
۴- مشکلات دسترسپذیری (Accessibility)
یکی دیگر از چالشهای اساسی برای ربات CAPTCHA، مشکل دسترسپذیری آن است. مسئله این است که کپچا میتواند برای افرادی که دارای محدودیتهای جسمی مانند محدودیتهای حرکتی یا بینایی هستند، مشکلاتی را ایجاد کند. البته با معرفی CAPTCHA گوگل، این مشکل تا حد زیادی رفع شده است، اما وبسایتهایی که همچنان از کپچاهای سنتی استفاده میکنند، با این مسئله روبرو هستند.
برای مطالعه بیشتر درباره یادگیری ماشینی، مقاله زیر را بخوانید:
چه آیندهای در انتظار کپچا است؟
با توجه به آنچه تا این قسمت یاد گرفتیم، میتوانیم حدس بزنیم که اهمیت استفاده از کپچا چیست. حالا میخواهیم به آیندهای که در انتظار کپچا است بپردازیم؛ اگر چه با وجود تغییرات بسیار سریع در تکنولوژی، شاید این موارد در حد حدس و گمان باقی بمانند:
۱- استفاده از کپچاهای تعاملی
یکی از راهحلها برای مقابله با حل کپچا توسط رباتها، استفاده از کپچای تعاملی است. این نوع از کپچاها با ترکیب سؤالات منطقی و کارهایی مثل بازیهای ساده، نه تنها امنیت بیشتری را فراهم میکنند، بلکه حتی تجربهی کاربری را هم بهبود میدهند. مثلاً بعضی از این سیستمها ممکن است از شما بخواهند تا یک ماز (Maze) را حل کنید.
همین حالا که در حال خواندن این مطلب هستید، قدمهای ابتدایی برای استفاده از کپچاهای تعاملی برداشته شده است. اما به نظر میرسد که در آینده، نسل جدیدی از کپچاهای تعاملی را خواهیم دید.
۲- جایگزینی اطلاعات بیومتریک بهجای کپچا
یکی از شیوههایی که میتوان با اطمینان بالایی، انسان و ربات را از هم تفکیک کند، اطلاعات بیومتریک (Biometric) مثل تشخیص چهره، اثر انگشت و … است. استفاده از این روشها، هم امنیت بالاتری را تضمین میکنند و هم باعث بهبود تجربهی کاربر میشوند. با این حال چالشهایی مثل حفظ حریم خصوصی هم در پیش روی کپچاهای مبتنی بر اطلاعات بیومتریک وجود دارد که باید حل شوند.
۳- تغییر ماهیت کپچا برای اینترنت اشیاء (IoT)
در مواردی که شما میخواهید از دستگاههای خانگی استفاده کنید، میتوان از کپچاهای مبتنی بر اینترنت اشیاء (IoT) استفاده کرد. بدین ترتیب، بهجای اینکه شما مجبور باشید چالش کپچا را حل کنید، دستگاه خانگیتان بر اساس تشخیص صدای شما کار کند.
جمعبندی
کپچا چیست؟ این سؤال ممکن است برای بسیاری از افراد، پیشِ پا افتاده به نظر برسد. همهی ما میدانیم که مهمترین مسؤلیت کپچا، تشخیص ربات است. اما اینکه این فناوری چطور کار میکند، چه انواعی دارد و چه آیندهای برای آن وجود دارد، از جمله موضوعاتی است که کمتر کسی در مورد آن اطلاعات دقیقی دارد. ما در این مطلب از بلاگ پارس پک در مورد همهی این مسائل صحبت کردهایم.
سؤالات متداول
۱- کپچا چیست؟
کپچا یک فناوری است که وظیفهی آن، تشخیص ربات از انسان است. در واقع کپچا کنترل میکند که کاربر وبسایت، یک انسان واقعی است یا رباتی است که تلاش دارد به وبسایت نفوذ کند یا از آن استفادههای غیرقانونی کند.
۲- CAPTCHA مخفف چیست؟
کپچا مخفف عبارت Completely Automated Public Turing test to tell Computers and Humans Apart و به معنی «تست تورینگ عمومی کاملاً خودکار برای تشخیص رایانهها و انسانها» است.
۳- آیا استفاده از کپچا، امن است؟
امنیت CAPTCHA بهطور کلی به نوع الگوریتمی که از آن استفاده میکند و همچنین میزان آپدیت بودن آن بستگی دارد. بهعنوان مثال استفاده از کپچاهایی که از الگوریتمهای پیچیده که رباتها به سختی میتوانند آن را حل کنند، سطح ایمنی بالاتری را برای وبسایتها به همراه دارد.