Tổng quan về Captcha
Captcha là gì?
Captcha phiờn õm, viết tắt của Completely Automated Public Turing test to tell Computer and Human Apart, là một phương pháp kiểm tra nhằm phân biệt người dùng là máy tính hay con người Quá trình này yêu cầu người dùng hoàn thành một bài kiểm tra mà chỉ có con người mới có khả năng giải quyết Những ai không thể vượt qua bài kiểm tra sẽ không được công nhận là con người Thuật ngữ CAPTCHA được đề xuất vào năm 2000 bởi các giáo sư Luis von Ahn, Nicholas J Hopper, Manuel Blum từ Đại học Carnegie Mellon và John Langford từ IBM.
CAPTCHA phổ biến nhất hiện nay là loại hình ảnh chứa các chữ cái méo mó và dị dạng, yêu cầu người dùng nhập chính xác các ký tự đó.
Đặc điểm của Captcha
- Hệ thống CAPTCHA yêu cầu thử thách phải được tạo ra tự động và phải có những đặc điểm nhất định
- Hệ thống CAPTCHA phải đặt ra những thử thách mà thông thường thì mọi người đều có thể hiểu và giải được nó
- Phải khiến máy tính không thể giải được chính xác
Tuy hộp kiểm tra "Tôi không phải là robot" có khả năng phân biệt giữa con người và máy móc, nhưng nó không được coi là CAPTCHA thực sự, vì những kẻ tấn công không cần tốn quá nhiều công sức để vượt qua nó.
Nguồn gốc của Captcha
Vào năm 1950, Alan Turing, người sáng lập ngành khoa học máy tính, đã giới thiệu phép thử Turing nổi tiếng, nêu ra thách thức trong việc phân biệt giữa con người và máy tính giả danh Điều này đã mở ra các cuộc thảo luận và thử nghiệm nhằm phân định rạch ròi giữa người và máy.
Vào năm 1996, Moni Naor từ Viện khoa học Weizmann đã đề cập đến việc kiểm soát dịch vụ truy cập web thông qua bản thảo mang tên “Verification of a human in the loop or Identification via the Turing Test” Đến năm 1997, Andrei Broder cùng nhóm tại AltaVista đã phát triển những CAPTCHA nguyên thủy nhằm ngăn chặn bot máy tính thêm URL vào công cụ tìm kiếm của họ.
Nhóm Andrei Broder đã phát triển CAPTCHA bằng cách mô phỏng các tình huống mà OCR (Nhận dạng ký tự quang học) có thể cho kết quả sai, đánh dấu bước khởi đầu cho CAPTCHA hiện đại Năm 2000, Luis von Ahn và Manuel Blum đã giới thiệu khái niệm CAPTCHA, giúp phân biệt giữa con người và máy tính, cùng với việc bổ sung nhiều mẫu CAPTCHA mới Yahoo! cũng đã áp dụng các loại CAPTCHA này trong hệ thống của mình.
Nguyên tắc hoạt động của Captcha
Hình 1 Nguyên tắc hoạt động của Captcha
Nguyên tắc hoạt động của CAPTCHA dựa trên khả năng phân biệt những quy tắc ngôn ngữ và tiếng lóng mà con người hiểu nhưng máy tính không thể nhận diện được.
Từ đó CAPTCHA có thể phân biệt chính xác người và máy tính Tránh những virus, worm hay trojan dùng để tấn công vào hệ thống
Các xâm nhập trái phép cũng bị chặn lại ở bước xác minh CAPTCHA Đảm bảo tính an toàn của hệ thống.
Ứng dụng của Captcha
- Các ứng dụng CAPTCHA thường thấy trên website bao gồm:
✔ Xác nhận tài khoản người dùng khi đăng ký
✔ Chặn các cuộc tấn công Từ chối dịch vụ như DDOS và DOS
✔ Đảm bảo an toàn của thông tin và dữ liệu
- CAPTCHA cũng giúp hạn chế quá tải khi một dịch vụ được sử dụng bắt đầu vượt quá giới hạn
Hình 2 Ứng dụng của Captcha
Tổng quan về Deep Learning và CNN
Deep Learning là gì?
Deep Learning, hay còn gọi là Học Sâu, là một lĩnh vực con của Machine Learning, được phát triển dựa trên mạng nơ-ron nhân tạo và phương pháp Học Biểu Diễn Quá trình xử lý trong Deep Learning có thể diễn ra dưới các hình thức giám sát, bán giám sát hoặc không giám sát.
Các kiến trúc của Deep Learning bao gồm Deep Neural Networks, Deep Belief Networks, Graph Neural Networks, Recurrent Neural Networks và Convolutional Neural Networks Những kiến trúc này đã được ứng dụng rộng rãi trong các lĩnh vực như thị giác máy tính, nhận dạng giọng nói, xử lý ngôn ngữ tự nhiên, dịch máy, tin sinh học, thiết kế thuốc, y tế phân tích hình ảnh, kiểm tra vật liệu và trò chơi dạng Board-game Chúng đã đạt được những kết quả ấn tượng, có thể so sánh với khả năng của con người và thậm chí vượt trội hơn trong một số trường hợp.
Từ "Deep" trong Deep Learning chỉ việc sử dụng nhiều lớp mạng, cho phép xây dựng các mô hình phức tạp hơn Nghiên cứu ban đầu cho thấy perceptron tuyến tính không thể hoạt động như một bộ phân loại phổ quát, nhưng mạng với hàm kích hoạt phi tuyến và một lớp ẩn có chiều rộng không giới hạn có khả năng này Deep Learning là một biến thể hiện đại của Machine Learning, liên quan đến số lượng lớp không giới hạn, tối ưu hóa ứng dụng thực tế và triển khai, đồng thời vẫn duy trì tính phổ quát lý thuyết trong điều kiện nhẹ Các lớp trong Deep Learning có thể không đồng nhất và sai lệch so với các mô hình sinh học, nhằm nâng cao hiệu quả, khả năng đào tạo và dễ hiểu của mô hình.
Các thuật toán Deep Learning dựa vào các đại diện phân phối, với giả định rằng dữ liệu quan sát được hình thành từ sự tương tác của các yếu tố tổ chức theo lớp Deep Learning bổ sung thêm rằng các lớp này tương ứng với các mức độ trừu tượng khác nhau Sự đa dạng về số lượng và kích thước của các lớp có thể được sử dụng để xác định các mức độ trừu tượng khác nhau.
Lịch sử ra đời của Deep Learning
Frank Rosenblatt được cho là người đã phát triển và khám phá tất cả các thành phần cơ bản của hệ thống học sâu hiện đại Ông đã trình bày những khái niệm này trong cuốn sách của mình.
Nguyên lý động lực học thần kinh, bao gồm perceptron và lý thuyết cơ chế hoạt động của não, đã được nghiên cứu và phát triển bởi Phòng thí nghiệm hàng không Cornell, Inc thuộc Đại học Cornell Nghiên cứu này cung cấp cái nhìn sâu sắc về cách mà các mạng nơ-ron hoạt động trong não bộ, từ đó mở ra những ứng dụng mới trong lĩnh vực trí tuệ nhân tạo và học máy.
Thuật toán học tập tổng quát đầu tiên cho perceptron giám sát, sâu, chuyển tiếp, nhiều lớp được công bố bởi Alexey Ivakhnenko và Lapa vào năm 1967 Vào năm 1971, một bài báo đã mô tả mạng sâu với tám lớp được đào tạo thông qua phương pháp xử lý dữ liệu theo nhóm Các kiến trúc học sâu khác, đặc biệt là cho thị giác máy tính, bắt đầu với Neocognitron do Kunihiko Fukushima giới thiệu vào năm 1980.
Thuật ngữ Deep Learning được giới thiệu lần đầu bởi Rina Dechter vào năm 1986 trong lĩnh vực học máy Đến năm 2000, Igor Aizenberg cùng các đồng nghiệp đã phát triển khái niệm này liên quan đến các mạng neural nhân tạo trong bối cảnh các neural ngưỡng Boolean.
Năm 1989, Yann LeCun và các cộng sự đã áp dụng thuật toán lan truyền ngược cho mạng neural sâu nhằm nhận dạng mã ZIP viết tay, với quá trình đào tạo kéo dài 3 ngày Đến năm 1991, các hệ thống này đã có khả năng nhận dạng chữ số viết tay 2D, trong khi nhận dạng đối tượng 3D được thực hiện bằng cách kết hợp hình ảnh 2D với mô hình 3D thủ công Weng và cộng sự cho rằng não người không sử dụng mô hình 3D nguyên khối, dẫn đến việc công bố Cresceptron vào năm 1992, một phương pháp nhận dạng vật thể 3D trong cảnh lộn xộn Cresceptron học từ hình ảnh tự nhiên, phát triển khả năng học trực quan cho thế giới 3D, và sử dụng các lớp tương tự như Neocognitron nhưng không cần giám sát Nó có khả năng phân đoạn các đối tượng đã học từ cảnh lộn xộn thông qua phân tích ngược.
Kỹ thuật tổng hợp tối đa, thường được áp dụng trong các mạng thần kinh sâu như thử nghiệm ImageNet, lần đầu tiên xuất hiện trong Cresceptron Phương pháp này giúp giảm độ phân giải vị trí theo hệ số 2x2 xuống còn 1, nhằm cải thiện khả năng tổng quát hóa của mô hình.
Năm 1994, André de Carvalho, Mike Fairhurst và David Bisset đã công bố kết quả thử nghiệm về mạng neural boolean nhiều lớp, hay còn gọi là mạng neural không trọng số, với sự tích hợp của module mạng neural khai thác tính năng tự tổ chức.
Ba lớp tiếp theo trong module mạng neural phân loại nhiều lớp (GSN - Generative Stochastic Networks) được đào tạo độc lập, với mỗi lớp đảm nhận việc trích xuất các tính năng ngày càng phức tạp dựa trên lớp trước đó.
Năm 1995, Brendan Frey đã chứng minh khả năng đào tạo một mạng nơ-ron chứa 6 lớp kết nối đầy đủ và hàng trăm đơn vị ẩn chỉ trong hai ngày, nhờ vào thuật toán thức-ngủ mà ông đồng phát triển cùng Peter Dayan và Geoffrey Hinton Tốc độ đào tạo chậm của mạng nơ-ron này do nhiều yếu tố, trong đó có vấn đề độ dốc biến mất, đã được phân tích kỹ lưỡng.
Kể từ năm 1997, Sven Behnke đã phát triển phương pháp tiếp cận tích hợp phân cấp nguồn cấp dữ liệu trong Kim tự tháp trừu tượng thần kinh, sử dụng các kết nối bên và phía sau để linh hoạt kết hợp ngữ cảnh vào quyết định và xử lý những mơ hồ cục bộ một cách lặp đi lặp lại.
Trong những năm 1990 và 2000, các mô hình đơn giản hơn như bộ lọc Gabor và máy vector hỗ trợ (SVM) đã trở thành lựa chọn phổ biến cho các nhiệm vụ cụ thể Điều này chủ yếu do chi phí tính toán cao của mạng neural nhân tạo (ANN) và sự thiếu hiểu biết về cách hoạt động của các dây dẫn trong bộ não sinh học.
Trong nhiều năm qua, cả học tập nông và sâu về mạng nơ-ron nhân tạo (ANN) đã được nghiên cứu, nhưng vẫn chưa vượt qua được công nghệ hỗn hợp Gaussian thủ công không đồng nhất Mô hình Markov ẩn Generalized Method of Moments - Hidden Markov Model (GMM-HMM) dựa trên các mô hình giọng nói được huấn luyện phân biệt Các thách thức chính, như sự giảm dần độ dốc và cấu trúc tương quan thời gian yếu trong các mô hình, đã được phân tích kỹ lưỡng.
14 tiên đoán thần kinh Những khó khăn khác là thiếu dữ liệu đào tạo và khả năng tính toán hạn chế
Hầu hết các nhà nghiên cứu nhận dạng giọng nói đã chuyển sang mô hình tổng hợp, nhưng SRI International vào cuối những năm 1990, dưới sự tài trợ của NSA và DARPA, đã nghiên cứu mạng thần kinh sâu trong lĩnh vực này Nhóm do Larry Heck dẫn dắt đã đạt được thành công đáng kể trong đánh giá Nhận dạng người nói của Viện Tiêu chuẩn và Công nghệ Quốc gia năm 1998 Mạng neural sâu của SRI sau đó được ứng dụng trong Nuance Verifier, đánh dấu bước tiến lớn trong việc áp dụng học sâu trong công nghiệp.
Nguyên tắc nâng cao các tính năng "thô" đã được khám phá thành công trong kiến trúc của bộ mã tự động sâu, cho phép tối ưu hóa các tính năng này so với phương pháp tối ưu hóa thủ công trước đây Việc áp dụng các tính năng của ngân hàng bộ lọc tuyến tính vào biểu đồ quang phổ "thô" đã mở ra những cơ hội mới trong nghiên cứu và phát triển công nghệ.
Vào năm 1990, nghiên cứu đã chỉ ra sự ưu việt của Cepstral so với Mel Cepstral sử dụng các giai đoạn biến đổi cố định từ quang phổ, cho phép khai thác các tính năng thô của giọng nói và dạng sóng, từ đó mang lại kết quả ấn tượng hơn khi áp dụng ở quy mô lớn.
CNN là gì?
Mạng Neural Tích Phức Hợp (CNN) là một trong những mô hình Deep Learning tiên tiến, cho phép xây dựng hệ thống thông minh với độ chính xác cao CNN thường được áp dụng trong các bài toán nhận dạng đối tượng trong hình ảnh.
Convolution refers to a sliding window technique applied to a matrix Convolutional layers possess learned parameters (kernels) that autonomously adjust to extract the most relevant information without the need for manual feature selection.
Tích chập (Convolution) là quá trình nhân từng phần tử trong ma trận 3, trong khi Sliding Window, hay còn gọi là kernel, filter hoặc feature detect, là một ma trận nhỏ Cấu trúc mạng CNN bao gồm nhiều lớp Convolution chồng lên nhau, sử dụng các hàm kích hoạt phi tuyến như ReLU và tanh để kích hoạt trọng số trong các node Mỗi lớp sau khi áp dụng hàm kích hoạt sẽ tạo ra thông tin trừu tượng hơn cho các lớp tiếp theo.
Mỗi lớp trong mạng nơ-ron sau khi áp dụng các hàm kích hoạt sẽ tạo ra thông tin trừu tượng cho các lớp tiếp theo Trong mô hình mạng nơ-ron truyền tiếp (feedforward neural network), mỗi nơ-ron đầu vào kết nối trực tiếp với các nơ-ron đầu ra ở các lớp tiếp theo.
Mạng kết nối đầy đủ, hay còn gọi là mạng toàn vẹn, là một thành phần quan trọng trong các mô hình học sâu Ngược lại, trong mô hình CNNs, các lớp được liên kết với nhau thông qua cơ chế convolution, cho phép xử lý dữ liệu hình ảnh hiệu quả hơn.
Kết quả của lớp tiếp theo là từ quá trình convolution của lớp trước, tạo ra các kết nối cục bộ Mỗi neuron ở lớp sau được hình thành từ kết quả của filter áp dụng lên một vùng ảnh cục bộ của neuron ở lớp trước đó.
Hình 3 Mô hình Mạng Neural tích phức hợp
Mỗi lớp trong mạng nơ-ron sử dụng hàng trăm đến hàng nghìn bộ lọc khác nhau để kết hợp và tối ưu hóa kết quả Bên cạnh đó, các lớp pooling hoặc subsampling được sử dụng để chắt lọc thông tin hữu ích, loại bỏ những dữ liệu nhiễu không cần thiết.
Trong quá trình huấn luyện mạng nơ-ron tích chập (CNN), mạng tự động học các giá trị qua các lớp filter dựa trên cách thức thực hiện của người dùng Đặc biệt, trong tác vụ phân loại ảnh, CNN sẽ tìm kiếm các thông số tối ưu cho các filter theo thứ tự từ pixel thô, cạnh, hình dạng, đặc điểm khuôn mặt đến các đặc trưng cao cấp Layer cuối cùng được sử dụng để phân loại ảnh.
Trong mô hình CNN, hai khía cạnh quan trọng cần chú ý là tính bất biến (Location Invariance) và tính kết hợp (Compositionality) Đối với cùng một đối tượng, sự thay đổi về góc độ như dịch chuyển, xoay và tỉ lệ có thể ảnh hưởng đáng kể đến độ chính xác của thuật toán.
Tầng pooling cung cấp tính bất biến cho phép dịch chuyển, quay và co giãn, trong khi tính kết hợp cục bộ giúp biểu diễn thông tin từ mức độ thấp đến cao và trừu tượng hơn thông qua convolution với các filter Điều này giải thích tại sao CNNs đạt được độ chính xác cao trong mô hình, tương tự như cách con người nhận diện các vật thể trong tự nhiên.
CNN sử dụng 3 ý tưởng cơ bản: các trường tiếp nhận cục bộ (local receptive field), trọng số chia sẻ (shared weights), tổng hợp (pooling)
Trường tiếp nhận cục bộ trong mạng CNN là một khái niệm quan trọng, trong đó đầu vào của mạng là một ảnh, ví dụ như ảnh có kích thước 28×28 sẽ được biểu diễn dưới dạng ma trận 28×28 Mỗi giá trị điểm ảnh tương ứng với một ô trong ma trận này Khác với mô hình mạng ANN truyền thống, nơi các neuron đầu vào được kết nối trực tiếp vào tầng ảnh, CNN sử dụng trường tiếp nhận cục bộ để xử lý thông tin hiệu quả hơn.
Trong CNN, chúng ta chỉ kết nối một vùng nhỏ của các neuron đầu vào thông qua bộ lọc kích thước 5×5, tạo ra 24 điểm ảnh đầu vào từ kích thước 28 Mỗi kết nối sẽ học một trọng số và mỗi neuron ẩn sẽ học một bias Vùng 5×5 này được gọi là trường tiếp nhận cục bộ Tóm lại, quy trình tạo ra một lớp ẩn trong CNN có thể được tóm tắt qua các bước cụ thể.
- Tạo ra neuron ẩn đầu tiên trong lớp ẩn 1
Dịch filter qua bên phải một cột tạo ra neuron ẩn thứ hai, trong nhận dạng ảnh, ma trận lớp đầu vào được gọi là feature map, với trọng số xác định các đặc trưng là shared weight và độ lệch là shared bias Mặc dù qua các bước trên chỉ có một feature map, nhưng trong nhận dạng ảnh, cần nhiều hơn một feature map để cải thiện hiệu quả Local receptive field giúp phân tách dữ liệu ảnh, chọn ra những vùng ảnh có giá trị nhất cho việc đánh giá phân lớp.
Trọng số chia sẻ trong mạng nơ-ron (shared weight and bias) yêu cầu các trọng số của mỗi bộ lọc (kernel) phải đồng nhất Điều này cho phép tất cả các nơ-ron trong lớp ẩn đầu tiên phát hiện các đặc trưng tương tự ở những vị trí khác nhau trong hình ảnh đầu vào.
Tóm lại, một lớp tích chập (convolutional layer) bao gồm nhiều bản đồ đặc trưng (feature map) khác nhau, mỗi bản đồ giúp phát hiện các đặc điểm riêng trong hình ảnh Lợi ích lớn nhất của việc chia sẻ trọng số là giảm thiểu số lượng tham số trong mạng nơ-ron tích chập (CNN).
Ứng dụng của Deep Learning
Hình 4 Ứng dụng của Deep Learning
- Nhận dạng tiếng nói tự động với các bài toán “Nhận dạng giọng nói”
- Xử lý ngôn ngữ tự nhiên với bài toán “Nhận dạng chữ viết”
- Khám phá dược phẩm và độc chất học với việc sử dụng neural sâu đa tác vụ để dự đoán mục tiêu sinh học của một hợp chất
- Quản lý quan hệ khách hàng (CRM) với việc dùng Deep Learning để ước tính giá trị của các hành động
- Tin sinh học ứng dụng Deep Learning để dự đoán các mối quan hệ chức năng gen và các chú thích Bản thể gen
- Phân tích hình ảnh y tế dựa trên các công trình về nhận diện ảnh kết hợp với phân tích Tin sinh học
- Quảng cáo trên điện thoại di động thông qua việc học sâu các hành vi của khách hàng để đưa ra gợi ý mặt hàng thích hợp nhất
- Phục hồi hình ảnh thông qua bản dịch không gian tiềm ẩn sâu
- Phát hiện gian lận tài chính sử dụng cơ sở dữ liệu xuyên thời gian để thực hiện phân tích gian lận thời gian thực
- Quân sự áp dụng nhiều thành tựu của Deep Learning để thúc đẩy sức mạnh
Tổng quan về bài toán phá mã Captcha
Dữ liệu đầu vào
- Gồm 10000 bức ảnh được lấy nguồn từ bài viết Simple a Captcha trên WordPress + 6000 ảnh dùng để train
Sơ lược mô hình
3.2.1 Mục tiêu của bài toán
Mục tiêu của bài toán là áp dụng Deep Learning với mô hình CNN để nhận dạng Captcha 4 ký tự, từ đó đánh giá tỷ lệ và xác suất thành công của công cụ Điều này giúp chỉ ra những lỗ hổng trong hệ thống Captcha hiện tại Hơn nữa, phương pháp này có thể được mở rộng để giải mã Captcha với 8 ký tự hoặc hơn 10 ký tự, càng khẳng định sự lạc hậu của Captcha trong việc bảo vệ thông tin.
Dữ liệu đầu vào bao gồm 10.000 bức ảnh Captcha 4 ký tự với độ phân giải 72x24 pixels Chúng ta sẽ sử dụng 60% - 70% số ảnh để huấn luyện mô hình, trong khi khoảng 30% - 40% còn lại sẽ được dùng để kiểm tra độ chính xác của thực nghiệm sắp tới.
3.2.3 Bộ công cụ được sử dụng a) Python:
Python là một ngôn ngữ lập trình hướng đối tượng mạnh mẽ, dễ học, được phát triển bởi Guido van Rossum, và được xem là một trong những ngôn ngữ lập trình lý tưởng cho người mới bắt đầu Với kiểu dữ liệu động và cơ chế quản lý bộ nhớ tự động, Python cung cấp một cấu trúc dữ liệu cao cấp và phương pháp lập trình đơn giản, hiệu quả Cú pháp rõ ràng và dễ hiểu của Python làm cho nó trở thành lựa chọn hàng đầu cho việc viết script và phát triển ứng dụng trên nhiều nền tảng khác nhau.
Python là một ngôn ngữ lập trình thú vị với các thư viện tuyệt vời cho máy học và thị giác máy tính
OpenCV là thư viện mã nguồn mở hàng đầu cho thị giác máy tính và học máy, với khả năng tăng tốc GPU cho các tác vụ theo thời gian thực Đây là một khuôn khổ phổ biến để xử lý hình ảnh, và chúng ta sẽ áp dụng OpenCV để xử lý hình ảnh CAPTCHA Thư viện này cung cấp API Python, cho phép người dùng dễ dàng sử dụng trực tiếp từ ngôn ngữ lập trình Python.
Keras là thư viện mã nguồn mở cung cấp giao diện Python cho mạng neural nhân tạo, hoạt động như một lớp trung gian cho TensorFlow Được viết bằng Python, Keras cho phép người dùng dễ dàng xác định, đào tạo và triển khai mạng neural sâu với mã hóa tối thiểu.
TensorFlow là một thư viện phần mềm mã nguồn mở dành cho máy học trong nhiều loại hình tác vụ nhận thức và hiểu ngôn ngữ
TensorFlow là thư viện máy học do Google phát triển, trong khi Keras là một API giúp viết mã cho các mô hình học sâu Mặc dù Keras cung cấp giao diện dễ sử dụng, nó không tự triển khai logic mạng nơ-ron mà dựa vào TensorFlow để thực hiện các tác vụ tính toán phức tạp.
NumPy là thư viện cốt lõi cho khoa học máy tính trong Python, giúp tính toán các mảng nhiều chiều lớn với các hàm tối ưu Thư viện này rất hữu ích cho các phép toán liên quan đến Đại Số Tuyến Tính NumPy có nguồn gốc từ Numeric, được phát triển bởi Jim Hugunin và nhiều nhà phát triển khác.
Imutils cung cấp một bộ chức năng hữu ích cho việc xử lý hình ảnh cơ bản, bao gồm các thao tác như dịch chuyển, xoay, thay đổi kích thước, tạo khung và hiển thị hình ảnh Thư viện này giúp việc sử dụng Matplotlib trở nên dễ dàng hơn khi làm việc với OpenCV, đồng thời hỗ trợ cả Python 2.7 và Python 3.
Scikit-learn (Sklearn) là một thư viện mạnh mẽ cho các thuật toán học máy, được phát triển bằng ngôn ngữ Python Thư viện này cung cấp nhiều công cụ hữu ích cho việc xử lý và phân tích dữ liệu, giúp người dùng dễ dàng áp dụng các kỹ thuật học máy trong các dự án của mình.
24 bài toán machine learning và statistical modeling gồm: classification, regression, clustering, và dimensionality reduction
Thư viện được cấp phép bản quyền chuẩn FreeBSD và chạy được trên nhiều nền tảng Linux Scikit-learn được sử dụng như một tài liệu để học tập
3.2.4 Xây dựng mô hình CNN
Ảnh Captcha đầu vào có 4 ký tự với kích thước 72x24 pixels Sau khi được xử lý ban đầu, các ký tự sẽ được cắt vào chương trình với kích thước Input_shape (20,20,1), tức là trong không gian 3 chiều Khi đi qua lớp đầu tiên, ảnh sẽ được điều chỉnh kích thước thành 20 pixels chiều rộng, 20 pixels chiều cao và 1 pixel chiều sâu.
Để đào tạo một hệ thống học máy hiệu quả, việc tạo ra một dataset chất lượng là điều cần thiết Đặc biệt, khi mục tiêu là phá vỡ hệ thống CAPTCHA, dữ liệu đào tạo cần phải được thiết kế phù hợp để đạt được kết quả tốt nhất.
Hình 5 Sơ đồ khởi tạo Dataset
Chúng tôi sử dụng hình ảnh từ nguồn WordPress, với bộ dữ liệu gồm 10.000 hình ảnh CAPTCHA và câu trả lời dự kiến cho từng hình ảnh.
25 Đây là một số CAPTCHA mà chúng ta sẽ sử dụng:
Hình 7 Sơ đồ đơn giản hóa
Với đủ dữ liệu đào tạo, phương pháp này có thể hoạt động hiệu quả, nhưng chúng ta có thể đơn giản hóa vấn đề để dễ dàng giải quyết hơn Khi vấn đề trở nên đơn giản, nhu cầu về dữ liệu đào tạo và sức mạnh tính toán cũng giảm đi.
Hình ảnh CAPTCHA thường chỉ gồm bốn chữ cái, vì vậy nếu chúng ta tách riêng từng chữ cái thành hình ảnh độc lập, việc huấn luyện mạng neural sẽ trở nên đơn giản hơn, khi chỉ cần nhận diện một chữ cái tại một thời điểm.
Hình 6 Dữ liệu đầu vào
Hình 8 Sơ đồ đơn giản hóa học sâu 1 ký tự
Xây dựng và đào tạo mạng lưới thần kinh cho việc nhận dạng hình ảnh chữ cái và số đơn lẻ không yêu cầu kiến trúc quá phức tạp Việc nhận diện chữ cái đơn giản hơn nhiều so với việc phân loại các hình ảnh phức tạp như mèo và chó.
Chúng ta sẽ sử dụng kiến trúc mạng neural phức hợp đơn giản với hai lớp chập và hai lớp được kết nối đầy đủ:
Hình 9 Mô hình CNN chi tiết
- Ban đầu ký tự đã được xử lý input 20x20 pixel qua Conv2D với filter size 5x5 thu được 20 feature map với mỗi feature map có thông số là ma trận 20x20
- Tiếp theo được xử lý qua MaxPooling2D với pooling size: 2x2 để giảm neural xuống một nửa với thông số output: 10x10x20
- Tiếp tục được xử lý qua lớp Conv2D với filter size 5x5 thu được 50 feature map với mỗi feature map có thông số là ma trận 10x10
- Tiếp theo được xử lý qua MaxPooling2D với pooling size: 2x2 để giảm neural xuống một nửa với thông số output: 5x5x50
- Sau đó được xử lý bằng 2 lớp ẩn gồm Flatten và dense:
+ Đầu tiên qua Flatten để lát phẳng layer thu 1250 nodes
+ Tiếp theo qua Dense với (activation=”relu”) để giảm chi phí tính toán xuống còn 500 nodes
Số lần duyệt qua hết số lượng mẫu trong tập huấn luyện
Bảng 1 Số lần duyệt và tỉ lệ
Kết quả từ bảng cho thấy độ chính xác tỉ lệ thuận với số Epoch thực hiện; càng nhiều Epoch, tỷ lệ càng cao Tuy nhiên, độ chính xác bắt đầu bảo hòa ở Epoch 9 và 10 Điều này cho thấy, ở các giá trị Epoch thấp, sự gia tăng độ chính xác diễn ra mạnh mẽ hơn, trong khi ở các giá trị cao hơn, sự gia tăng này giảm dần Tóm lại, độ chính xác sẽ bảo hòa khi đạt đến Epoch 9.
Khi Epoch đạt giá trị 9, kết quả thu được sẽ tối ưu nhất, dựa trên độ chính xác và thời gian thực hiện thí nghiệm, với thời gian thực hiện tỉ lệ thuận với giá trị Epoch.
Vì thế ta chọn Epoch = 9 làm giá trị tính toán các kết quả tiếp theo.
Thống kê tỷ lệ sai sót cho mỗi lần thực nghiệm
Lần thực nghiệm Tổng số ảnh Số ảnh đúng Số ảnh sai Tỷ lệ đầu ra
Tỉ lệ sai trung bình của bộ dữ liệu: 4.616 % Bảng 2 Thống kê tỷ lệ sai sót
1 2 3 4 5 6 7 8 9 10 Đồ thị thể hiện sự tương quan giữa Epoch và độ chính xác
Số lượng ảnh thực nghiệm không cố định do trong quá trình chọn ngẫu nhiên, một số ảnh bị lỗi với kích thước 0 đã bị loại bỏ Kết quả là bộ dữ liệu chỉ còn khoảng 9900 ảnh, giảm so với 10000 ảnh ban đầu.
Trong nhiều trường hợp sai số, các ký tự thường dính liền nhau hoặc gặp lỗi khi tải ảnh vào chương trình Điều này dẫn đến việc chương trình gặp khó khăn trong việc nhận dạng, cắt và xử lý dữ liệu ban đầu.
Một số dự đoán về captcha của chương trình
4.3.1 Một số hình ảnh chương trình dự đoán đúng:
Hình 11 Ảnh dự đoán đúng
32 Hình 12 Một số hình ảnh dự đoán đúng
33 4.3.2 Một số hình ảnh chương trình dự đoán sai:
Hình 13 Một số hình ảnh dự đoán sai
34 4.3.3 Một số ảnh bị lỗi font khi load vẫn cho kết quả đúng:
Hình 14 Một số ảnh captcha lỗi font khi load cho dự doán đúng
Chương 5: Những lỗ hỏng của Captcha hiện nay
Thực nghiệm cho thấy những lỗ hổng mà các Captcha hiện đang đối mặt do sự phát triển của máy học và học sâu, bao gồm các vấn đề liên quan đến khả năng bảo mật và hiệu quả trong việc phân biệt người dùng thật và bot.
Nghiên cứu cho thấy rằng không phải tất cả các giải pháp CAPTCHA đều có khả năng ngăn chặn hiệu quả các phần mềm nhận diện ký tự quang học (OCR).
● Giải pháp CAPTCHA có thể bị qua mặt bởi những phần mềm nhận dạng tiên tiến
Tin tặc có thể tận dụng nhiều phần mềm OCR khác nhau để tấn công, bằng cách sao chép hình ảnh CAPTCHA và cho phép các cơ chế nhận dạng xử lý đồng thời.
Nếu triển khai CAPTCHA có lỗ hổng cho phép tấn công vét cạn trong cùng một phiên làm việc, việc sử dụng nhiều loại phần mềm CAPTCHA khác nhau có thể giảm đáng kể số lần thử cần thiết để tìm ra lời giải đúng cho một phiên HTTP.
Nghiên cứu về việc phá vỡ CAPTCHA ngày càng gia tăng, với các tin tặc chủ yếu tập trung vào việc khai thác lỗ hổng trong logic ứng dụng thay vì nhận dạng tự động Điều này làm giảm hy vọng rằng việc sử dụng CAPTCHA sẽ nâng cao tính khó khăn trong công nghệ nhận dạng.
Bài báo cáo đã giúp người đọc hiểu rõ về captcha, khả năng bảo mật và tính xác thực của nó, đồng thời chỉ ra nhược điểm khi captcha dễ dàng bị phá vỡ bởi công nghệ Deep Learning Do đó, nhóm em khuyên những người đang sử dụng captcha nên chuyển sang các phương thức xác thực khác, vì captcha không còn an toàn nữa Các phương thức thay thế như Re-Captcha và No-Captcha sẽ đảm bảo an toàn hơn cho trang web.
Captcha đang dần trở nên lạc hậu trong bối cảnh công nghệ học sâu phát triển nhanh chóng Các loại Captcha phổ biến hiện nay dễ dàng bị phá vỡ, điều này được chứng minh khi ngay cả Google cũng phải liên tục khắc phục các lỗ hổng bảo mật của hệ thống Captcha của mình Điển hình là Audio Captcha và reCaptcha, được xem là những giải pháp có tính bảo mật tốt nhất hiện nay.
Việc phát triển Captcha dựa trên việc phức tạp hóa khả năng nhận biết đang đi ngược lại tiêu chí ban đầu của nó, đó là “có thể dễ dàng thực hiện bởi con người” Nhiều người hiện nay cho rằng Captcha đã trở nên quá khó so với trước đây, và điều này đặc biệt gây khó khăn cho những người có vấn đề về thị lực, như người bị cận thị và người mắc chứng khó đọc (Dyslexia).
Captcha không phải lúc nào cũng là lựa chọn tốt, do một số quy định pháp lý về việc sử dụng nó Dự án mở về bảo mật ứng dụng web (OWASP) khuyến cáo cần thận trọng khi áp dụng Captcha Hơn nữa, các giải pháp âm thanh như Audio Captcha cũng không hiệu quả hơn, khi phần mềm DeCAPTCHA của các nhà nghiên cứu tại đại học Stanford có khả năng nhận diện thành công 75% Audio Captcha của eBay.
Việc tìm kiếm các giải pháp CAPTCHA tiện lợi cho người dùng đã gặp nhiều thất bại, điều này đòi hỏi chúng ta cần xem xét lại việc sử dụng CAPTCHA và tìm kiếm những hướng đi mới Mặc dù trí tuệ nhân tạo đã có nhiều tiến bộ, nhưng các cơ chế chống spam vẫn còn khá thô sơ Nghiên cứu về việc phá vỡ CAPTCHA ngày càng gia tăng, trong khi tin tặc chủ yếu tập trung vào việc khai thác lỗ hổng trong logic ứng dụng thay vì nhận dạng tự động Điều này khiến cho việc sử dụng CAPTCHA không còn hiệu quả trong việc thúc đẩy công nghệ nhận dạng.