Chương 1 Giới thiệu về captcha Trong thời đại công nghệ hiện nay đa số người dùng sử dụng máy tính đều quen với việc sử dụng captcha. Captcha có thể được gặp ở bất cứ đâu trên môi trường internet với mục đích chính là phân biệt máy tính với con người để chống lại các hình thức spam. Captcha có nhiều loại: âm thanh, đánh tích, sắp xếp hình ảnh và hình ảnh ký tự bị làm nhiễu. Chương này sẽ tập trung giới thiệu một số vấn đề về captcha dạng hình ảnh ký tự bị làm nhiễu.1 Định nghĩa captcha Định nghĩa 1.
Một captcha [5] là một loại kiểm thử dạng hỏi đáp được dùng trong máy tính để xác định xem người dùng có phải là con người hay không. "captcha" là chữ viết tắt của "Completely Automated Public Turing test to tell Computers and Humans Apart" (Phép thử Turing công cộng hoàn toàn tự động để phân biệt máy tính với người). Đây là một quá trình một máy tính (máy chủ) yêu cầu một người dùng hoàn tất một kiểm tra đơn giản mà máy tính có thể dễ dàng tạo ra và đánh giá, nhưng không thể tự giải nó được. Vì máy tính khó có thể giải quyết captcha, bất kỳ người dùng nào nhập vào lời giải đúng sẽ được xem là con người.
Một hệ thống captcha là một dạng kiểm thử được tạo ra tự động thỏa mãn các điều kiện sau: 1 Các máy tính hiện nay không thể giải được một cách chính xác 2 Đa số con người có thể giải được 3 Người tấn công có thể biết trước các kiểu captcha 1 TIEU LUAN MOI download : skknchat@gmail.com Luận văn thạc sĩ Phân loại và nhận dạng tự động các ký tự trong ảnh captcha Hình 1.1: Một số mẫu captcha Hình 1.1 (a) mô tả một mẫu captcha được chương trình EZ-Gimpy tạo ra [13], đã được Yahoo sử dụng vào những năm 2000. Tuy nhiên, đã có những công nghệ nhận dạng tự động được loại captcha này.1 (b) làm cho nội dung khó nhận ra hơn bằng cách thêm vào đường gạch ngang và bố trí ký tự không thẳng hàng.2 Lịch sử và ứng dụng 1.1 Lịch sử Từ những năm 1950, khi Alan Turing giới thiệu về phép kiểm thử dạng hỏi đáp của mình thì vấn đề phân biệt giữa người và máy càng được quan tâm. Cụ thể vào năm 1997, nhằm ngăn chặn những chương trình máy tính có thể tự động thêm đường dẫn vào hệ thống tìm kiếm, Andrei Broder và đồng nghiệp tại viện AltaVista đã sáng tạo ra hệ thống captcha có thể coi là đầu tiên. Với mục đích chống lại hệ thống nhận dạng ký tự quang học (OCR).
Vào năm 2000 Von Ahn và Blum đã phát triển nhiều mẫu captcha được sử dụng rộng rãi và công khai khái niệm captcha để định danh những chương trình có thể phân biệt được máy tính và con người.2 Ứng dụng Nhìn chung captcha thường được ứng dụng trong lĩnh vực bảo mật an ninh an toàn thông tin, với những ứng dụng chính bao gồm: a. Ngăn chặn Spam comment trong Blog: Một số trang web muốn nâng cao thứ hạng tìm kiếm bằng cách sử dụng các chương trình tự động đưa ra nhiều bình luận giả , vô nghĩa trong blog. Thông qua captcha chỉ có người thật mới có thể nhập bình luận đảm bảo chất lượng nội dung cho blog. Bảo vệ đăng ký Email, Website: Hiện nay có không ít công ty cung cấp dịch vụ tạo email miễn phí, đi kèm với đó là sự xuất hiện của những chương trình tự động đăng ký email tràn lan.
Đặc biệt các website ngày nay đa số đều cho phép đăng ký tài khoản miễn phí thông qua email. Sự liên kết giữa email và website này là đối tượng rất dễ bị spam nên luôn cần được bảo vệ bởi captcha nhằm chống lại sự lạm dụng các chương trình tự động. Nguyễn Duy Anh 2 Cơ sở toán cho tin học TIEU LUAN MOI download : skknchat@gmail.com Luận văn thạc sĩ Phân loại và nhận dạng tự động các ký tự trong ảnh captcha c. Bảo vệ các cuộc thăm dò trực tuyến: Vào tháng 11 năm 1999, một trang web đã tổ chức cuộc thăm dò trực tuyến bình chọn trường đại học có ngành khoa học máy tính tốt nhất.
Và rất nhanh chóng nó trở thành cuộc đua bỏ phiếu bằng các chương trình tự động giữa hai đại học lớn là CMU và MIT [5]. Từ đó tính chính xác của các cuộc thăm dò trực tuyến đã bị đặt những dấu hỏi lớn. Để giải quyết vấn đề này captcha chính là câu trả lời với ứng dụng phân biệt giữa máy tính với con người sẽ giúp đảm bảo sự chính xác của các kết quả thăm dò trực tuyến không còn bị làm sai lệch bởi các công cụ đánh giá tự động nữa.3 Quá trình sinh captcha Captcha được hình thành bởi 2 thành phần chính là nội dung captcha và nhiễu captcha. Tùy vào yêu cầu về độ phức tạp của captcha mà 2 thành phần này được xây dựng theo nhiều phương pháp khác nhau nhưng vẫn xoay quanh một định hướng nhất định.
Tạo nội dung captcha Nội dung captcha thường được tạo bởi các ký tự chữ, số cả dạng viết hoa và viết thường sử dụng ngẫu nhiên tùy theo mỗi loại. Các loại captcha phổ biến thường bao gồm cả chữ và số để đảm bảo độ khó nhất định. Tuy nhiên trong thời điểm hiện tại vẫn còn không ít trang web sử dụng các loại captcha toàn chữ hoặc toàn số, những captcha có nội dung đơn giản như vậy rất dễ bị tấn công và nhận dạng tự động. Do đó nội dung là một trong số các yếu tố quan trọng để đánh giá độ an toàn của captcha.
Tạo nhiễu captcha Một thành phần không thể thiếu để tạo nên độ khó của captcha là nhiễu captcha. Hiện nay cách tạo nhiễu của captcha rất phong phú và đa dạng như : a Làm méo, bẻ cong ký tự theo nhiều hình dạng b Phủ các thành phần làm nhiễu lên captcha như chấm hạt, các đoạn gạch ngang, các mảng màu khác biệt v. phủ lên ký tự c Đổi màu ngẫu nhiên các thành phần nhiễu và cả ký tự trên captcha d Biến đổi độ đậm nhạt ngẫu nhiên các thành phần nhiễu và cả ký tự trên captcha e Phối hợp ngẫu nhiên một hoặc nhiều các phương pháp trên Nguyễn Duy Anh 3 Cơ sở toán cho tin học TIEU LUAN MOI download : skknchat@gmail.com Luận văn thạc sĩ Phân loại và nhận dạng tự động các ký tự trong ảnh captcha Hình 1.2 giới thiệu một số mẫu captcha phổ biến hiện nay được tạo nhiễu bởi phương pháp phối hợp nhiều kiểu nhiễu (e). Các kiểu nhiễu của captcha được tùy biến rất phong phú và đa dạng nhưng không phối hợp quá nhiều kỹ thuật làm nhiễu vì sẽ gây khó khăn cả cho con người khi nhận dạng.2: Một số mẫu captcha được tạo nhiễu bởi phương pháp phối hợp ngẫu nhiên một hoặc nhiều loại nhiễu khác nhau Trong mỗi công cụ sinh captcha nhất định sau khi sinh captcha luôn tạo kèm một bộ giải captcha tự dộng.
Bộ giải này luôn đi kèm với bộ sinh captcha khi dùng trong các hệ thống thực tế và cũng trở thành mục tiêu tấn công chính của các hacker hiện nay.4 Các phương pháp nhận dạng captcha tự động Ngày nay captcha được sử dụng rất phổ biến như một thành phần quan trọng trong quy trình bảo mật an ninh an toàn thông tin. Song hành với điều này các nỗ lưc trong việc tự động hóa các cuộc tấn công nhằm vào các website như: quảng cáo quy mô lớn, can thiệp vào các hệ thống bình chọn trực tuyến, tấn công từ chối dịch vụ các website; Tạo ra các liên kết giả để nâng hạng của website trong các máy tìm kiếm; Truy cập thông tin bí mật hoặc lây lan mã độc v. Từ đó nhu cầu đánh giá và kiểm định và nâng cấp độ an toàn của mỗi loại captcha trước khi đưa vào sử dụng trong thực tế là rất cần thiết. Phương pháp cụ thể và phổ biến nhất là nghiên cứu và tìm ra cách tấn công giả định vào các mẫu captcha, hay chính là thực hiện nhận dạng captcha tự động bằng máy không phải con người để phủ định mục đích chính mà captcha được tạo ra.
Nhận dạng tự động captcha được chia thành 2 kỹ thuật chính là nhận dạng cứng và nhận dạng mềm. Nhận dạng cứng Nhận dạng cứng là một phương pháp nhận dạng tự động mang tính kỹ thuật Nguyễn Duy Anh 4 Cơ sở toán cho tin học TIEU LUAN MOI download : skknchat@gmail.com Luận văn thạc sĩ Phân loại và nhận dạng tự động các ký tự trong ảnh captcha cao. Phương pháp này tập trung vào các điểm yếu trong quá trình sinh và kiểm tra thông qua bộ giải captcha. Các phương pháp này sử dụng nhiều cách khác nhau để vượt qua bước kiểm tra captcha, trong đó có hai hướng phổ biến nhất là tấn công vào máy khách và tấn công vào máy chủ [2].
Một số dạng tấn công máy khách: - Tấn công vào các trường ẩn và vùng lưu trữ trên máy khách: bằng nhiều thủ thuật khác nhau, người tấn công có thể khai thác được bộ giải captcha nằm trong các trường ẩn và vùng lưu trữ của máy khách do đặc điểm kém an toàn của nó. - Tấn công lựa chọn giá trị chuỗi CAPTCHA: trong trường hợp bộ sinh captcha đặt ở máy khách và bộ giải captcha ở máy chủ thì người tấn công vẫn có thể lấy được một số thông tin chuỗi captcha nhất định trong bộ giải đặt ở máy chủ và sử dụng nó để tấn công captcha. Một số dạng tấn công máy chủ: - Tấn công bằng bảng Rainbow cho CAPTCHA: dựa vào việc có thể tải về một lượng lớn captcha mã định danh tĩnh của website. Những captcha này có thể được nhận dạng sẵn vào 1 bảng Rainbow và sẽ có lời giải tự động ngay khi một captcha có sự trùng lặp.
- Tấn công CAPTCHA tích lũy: khai thác điểm yếu các lời giải captcha tích lũy trong phiên HTTP và sự chuyển tiếp giữa captcha cũ mới chưa hoàn toàn để dùng lời giải giả mạo nhưng vẫn được chấp nhận bởi bộ kiểm tra của captcha. - Tấn công bằng cách sử dụng con người để nhận dạng: dạng tấn công lợi dụng lao động giá rẻ ở một số quốc gia để thực hiện nhận dạng hỗ trợ cho các phương pháp tấn công khác. Nhận dạng mềm Nhận dạng mềm là một phương pháp nhận dạng tự động mang tính học thuật cao. Với mục đích chính là nghiên cứu và xây dựng các phương pháp sử dụng những kiến thức trong các lĩnh vực về trí tuệ nhân tạo cụ thể là thị giác máy tính, học máy thống kê để xây dựng các công cụ tự động nhận dạng và xử lý các loại captcha mà không cần quan tâm tới quy trình sinh và kiểm tra captcha như phương pháp nhận dạng cứng.