Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 37 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
37
Dung lượng
1,99 MB
Nội dung
BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP.HCM KHOA CƠNG NGHỆ THƠNG TIN CHUN NGÀNH: AN TỒN THÔNG TIN -��� - BÁO CÁO ĐỒ ÁN CHUYÊN NGÀNH ĐỀ TÀI: TÌM HIỂU CAPTCHA VÀ NHẬN DIỆN CAPTCHA SỬ DỤNG DEEP LEARNING ĐỂ CHỈ RA CÁC LỖ HỔNG TRONG CAPTCHA Giảng viên hướng dẫn: Th.S Đinh Nguyễn Trọng Nghĩa Sinh viên thực hiện: Đặng Hoàng Nhu - 2033180162 Nguyễn Phạm Hồi Thanh - 2033181067 Tp Hồ Chí Minh, Ngày… Tháng… Năm LỜI MỞ ĐẦU Công nghệ thông tin phát triển có bước tiến vượt bậc hầu hết doanh nghiệp cá nhân dần đưa công nghệ thông tin vào phục vụ cho công việc với phần mềm hệ thống ứng dụng phù hợp, doanh nghiệp cá nhân khơng có đủ điều kiện kinh tế việc lựa chọn cơng cụ, phần mềm thương mại khơng khả thi phần mềm mã nguồn mở lựa chọn đắn cho doanh nghiệp cá nhân An ninh thông tin nói chung an ninh mạng nói riêng vấn đề quan tâm không Việt Nam mà toàn giới Cùng với phát triển nhanh chóng mạng Internet, việc đảm bảo an ninh cho hệ thống thông tin trở nên cấp thiết hết Trong lĩnh vực an ninh mạng, xác thực để giảm công DDoS, chống spam cho mạng máy tính đề tài hay, thu hút ý nhiều nhà nghiên cứu với nhiều hướng nghiên cứu khác Vì nhóm em lựa chọn đề tài “Tìm hiểu CAPTCHA nhận diện CAPTCHA sử dụng Deep learning để lỗ hỏng CAPTCHA” Với mong muốn tìm hiểu triển khai deep learning để phá vỡ captcha qua cho thấy tầm quan trọng hệ thống xác thực captcha lỗi thời an toàn captcha truyền thống LỜI CẢM ƠN Trong lời báo cáo đồ án: “Tìm hiểu CAPTCHA nhận diện CAPTCHA sử dụng Deep learning để lỗ hỏng CAPTCHA” này, nhóm em muốn gửi lời cảm ơn biết ơn chân thành tới tất người hỗ trợ, giúp đỡ em kiến thức tinh thần trình thực đồ án Trước hết, em xin chân thành cảm ơn thầy giáo Ths Đinh Nguyễn Trọng Nghĩa, giảng viên Khoa Công Nghệ Thông Tin, Trường Đại Học Công Nghiệp Thực Phẩm TPHCM, người trực tiếp hướng dẫn, nhận xét, giúp đỡ em suốt trình thực đồ án Xin chân thành cảm ơn ban giám hiệu nhà trường, thầy cô Khoa Công Nghệ Thông Tin phòng ban nhà trường tạo điều kiện tốt cho nhóm em bạn khác suốt thời gian học tập Cuối nhóm em xin gửi lời cảm ơn đến gia đình, bạn bè, người thân giúp đỡ động viên chúng em nhiều trình học tập Mặc dù chúng em cố gắng để hoàn thiện báo cáo đồ án song khả hạn chế nên báo cáo cịn thiếu nhiều sai sót Vì chúng em mong đóng góp chân tình thầy cô bạn bè TPHCM, ngày 15 tháng năm 2021 Sinh viên Đặng Hoàng Nhu Nguyễn Phạm Hoài Thanh MỤC LỤC MỤC LỤC BẢNG MỤC LỤC HÌNH Chương Tổng quan Captcha 1.1 Captcha gì? Captcha phiên âm ˈkỉptʃə, viết tắc từ Completely Automated Public Turing test to tell Computer and Human Apart (Phép kiểm tra Turing công khai tự động để nhận diện Người Máy tính) Là dạng phép kiểm thử hỏi đáp để xác định người dùng máy hay người Đây trình mà máy chủ yêu cầu người dùng phải hoàn tất kiểm tra mà có người hồn tất u cầu Vì giải không xem người ngược lại Thuật ngữ CAPTCHA giáo sư thuộc Đại học Carnegie Mellon Luis von Ahn, Nicholas J.Hopper Manuel Blum John Langford thuộc IBM đề xuất tên vào năm 2000 Loại CAPTCHA mà hình ảnh bao gồm chữ méo mó, dị dạng loại CAPTCHA sử dụng phổ biến Yêu cầu cho người dùng phải nhập ý nghĩa với chữ 1.2 Đặc điểm Captcha - Hệ thống CAPTCHA yêu cầu thử thách phải tạo tự động phải có đặc điểm định - Hệ thống CAPTCHA phải đặt thử thách mà thơng thường người hiểu giải - Phải khiến máy tính khơng thể giải xác - Tuy hộp kiểm tra dạng “Tơi khơng robot” phân biệt người máy không xem CAPTCHA khơng phải q cơng q kẻ cơng để phá 1.3 Nguồn gốc Captcha Vào năm 1950, Alan Turing, cha đẻ ngành khoa học máy tính mơ tả lại phép thử Turing tiếng ơng Sự khó khăn tiềm tàng việc phân biệt người máy tính giả danh ông đề Đây bước đệm để dẫn đến bàn luận thử nghiệm việc phân biệt người máy Trong thảo Moni Naor từ Viện khoa học Weizmann vào năm 1996, ông đề cập vấn đề với mục đích kiểm sốt dịch vụ truy cập web, mang tên “Verification of a human in the loop or Identification via the Turing Test” (Lĩnh vực xác minh người, hay Sự định danh thông qua Phép thử Turing) Người ta cho vào năm 1997, Andrei Broder đồng nghiệp AltaVista phát triển CAPTCHA nguyên thủy nhằm ngăn ngừa việc bot máy tình thêm URL vào cơng cụ tìm kiếm họ Nhóm Andrei Broder phát triển CAPTCHA mơ tình mà OCR-Optical Character Recognition (Nhận dạng ký tự quang học) cho kết sai nhằm chống lại chúng Đây coi bước khởi đầu cho CAPTCHA Năm 2000, Luis von Ahn Manuel Blum phát triển công khai khái niệm CAPTCHA, chương trình giúp phân biệt người máy tính Đã có thêm mẫu CAPTCHA khác thêm vào Yahoo! sử dụng loại CAPTCHA 1.4 Nguyên tắc hoạt động Captcha Nguyên tắc hoạt động CAPTCHA CAPTCHA người dựa quy tắc mà máy tính khơng thể hiểu tiếng lóng ngơn ngữ Từ CAPTCHA phân biệt xác người máy tính Tránh virus, worm hay trojan dùng để công vào hệ thống Hình Nguyên tắc hoạt động Captcha Các xâm nhập trái phép bị chặn lại bước xác minh CAPTCHA Đảm bảo tính an toàn hệ thống 1.5 Ứng dụng Captcha Hình Ứng dụng Captcha - Các ứng dụng CAPTCHA thường thấy website bao gồm: ✔ Chống spam ✔ Xác nhận tài khoản người dùng đăng ký ✔ Chặn công Từ chối dịch vụ DDOS DOS ✔ Đảm bảo an toàn thông tin liệu - CAPTCHA giúp hạn chế tải dịch vụ sử dụng bắt đầu vượt giới hạn Chương 2: Tổng quan Deep Learning CNN 2.1 Deep Learning gì? Deep Learning (hay cịn gọi Deep Structured Learning) nhánh Machine Learning, mở rộng dựa mạng nhân tạo với phương pháp Representation Learning Q trình xử lý Deep Learning giám sát, bán giám sát khơng có giám sát Các kiến trúc Deep Learning bao gồm: Deep Neural Networks, Deep Belief Networks, Graph Neural Networks, Recurrent Neural Networks Convolutional Neural Networks Chúng áp dụng cho lĩnh vực bao gồm 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 chương trình trị chơi dạng Board - game, chúng có kết so sánh với người, chí số trường hợp vượt qua Từ "Deep" Deep Learning đề cập đến việc sử dụng nhiều lớp mạng Nghiên cứu ban đầu cho thấy perceptron tuyến tính phân loại phổ quát, mạng có chức kích hoạt phi đơn thức với lớp ẩn có chiều rộng khơng giới hạn Deep Learning biến thể đại Machine Learning có liên quan đến số lượng lớp có kích thước khơng giới hạn, cho phép ứng dụng thực tế triển khai tối ưu hóa, giữ tính phổ quát lý thuyết điều kiện nhẹ Trong Deep Learning, lớp phép không đồng sai lệch nhiều so với mơ hình kết nối thơng báo mặt sinh học, lợi ích hiệu quả, khả đào tạo dễ hiểu, kể từ phần "có cấu trúc" Các thuật toán Deep Learning dựa đại diện phân phối Giả định tiềm ẩn đằng sau đại diện phân phối liệu quan sát tạo tương tác yếu tố tổ chức theo lớp Deep Learning thêm giả định lớp yếu tố tương ứng với mức độ trừu tượng hay theo thành phần Các số khác lớp kích thước lớp sử dụng để quy định lượng trừu tượng khác 2.2 Lịch sử đời Deep Learning Một số nguồn Frank Rosenblatt phát triển khám phá tất thành phần hệ thống học sâu ngày Ơng mơ tả sách "Nguyên lý động lực học thần kinh: Perceptron lý thuyết chế não", 10 b) OpenCV: OpenCV thư viện nguồn mở hàng đầu cho Computer Vision Machine Learning, có thêm tính tăng tốc GPU cho hoạt động theo realtime OpenCV khuôn khổ phổ biến để xử lý hình ảnh thị giác máy tính Chúng ta sử dụng OpenCV để xử lý hình ảnh CAPTCHA Nó có API Python để sử dụng trực tiếp từ Python c) Keras Keras thư viện phần mềm mã nguồn mở cung cấp giao diện Python cho mạng neural nhân tạo Keras hoạt động giao diện cho thư viện TensorFlow Keras khung học sâu viết Python Nó giúp dễ dàng xác định, đào tạo sử dụng mạng neural sâu với mã hóa tối thiểu d) TensorFlow TensorFlow thư viện phần mềm mã nguồn mở dành cho máy học nhiều loại hình tác vụ nhận thức hiểu ngơn ngữ TensorFlow thư viện Google dành cho máy học Chúng ta viết mã Keras, Keras không thực triển khai thân logic mạng neural Thay vào đó, sử dụng thư viện TensorFlow Google đằng sau để thực công việc nặng nhọc e) Numpy Numpy thư viện lõi phục vụ cho khoa học máy tính Python, hỗ trợ cho việc tính tốn mảng nhiều chiều, có kích thước lớn với hàm tối ưu áp dụng lên mảng nhiều chiều Numpy đặc biệt hữu ích thực hàm liên quan tới Đại Số Tuyến Tính Tổ tiên NumPy, Numeric, ban đầu tạo Jim Hugunin với đóng góp từ số nhà phát triển khác f) Imutils Imutils loạt chức tiện lợi để thực chức xử lý hình ảnh dịch, xoay, thay đổi kích thước, tạo khung hiển thị hình ảnh Matplotlib dễ dàng với OpenCV Python 2.7 Python g) Scikit-learn 23 Scikit-learn (Sklearn) thư viện mạnh mẽ dành cho thuật tốn học máy viết ngơn ngữ Python Thư viện cung cấp tập công cụ xử lý toán machine learning statistical modeling gồm: classification, regression, clustering, dimensionality reduction Thư viện cấp phép quyền chuẩn FreeBSD chạy nhiều tảng Linux Scikit-learn sử dụng tài liệu để học tập 3.2.4 Xây dựng mơ hình CNN Input đầu vào: Ảnh Captcha có ký tự có kích thước 72x24 pixels Được xử lý ban đầu cho ký tự cắt vào chương trình Input_shape (20,20,1) Tức không gian chiều qua layer đầu tiền, ảnh xử lý với kích thước gồm: Chiều rộng 20 pixels, chiều cao 20 pixels chiều sâu pixels Tạo Dataset: Để đào tạo hệ thống học máy nào, cần liệu đào tạo Để phá vỡ hệ thống CAPTCHA, muốn liệu đào tạo giống sau: Hình Sơ đồ khởi tạo Dataset Vì sử dụng hình ảnh từ nguồn WordPress Bộ liệu tải xuống gồm 10.000 hình ảnh CAPTCHA với câu trả lời dự kiến cho hình ảnh 24 Đây số CAPTCHA mà sử dụng: Hình Dữ liệu đầu vào Hình Sơ đồ đơn giản hóa Với đủ liệu đào tạo, cách tiếp cận chí hoạt động - làm cho vấn đề trở nên đơn giản nhiều để giải Vấn đề 25 đơn giản, cần liệu đào tạo sức mạnh tính tốn để giải May mắn thay, hình ảnh CAPTCHA gồm bốn chữ Nếu cách tách hình ảnh để chữ hình ảnh riêng biệt, phải huấn luyện mạng neural để nhận chữ thời điểm: Hình Sơ đồ đơn giản hóa học sâu ký tự Xây dựng đào tạo mạng lưới thần kinh: Vì cần nhận dạng hình ảnh chữ số đơn lẻ, không cần kiến trúc mạng thần kinh phức tạp Nhận dạng chữ vấn đề dễ dàng nhiều so với nhận dạng hình ảnh phức tạp tranh ảnh mèo chó 26 Chúng ta sử dụng kiến trúc mạng neural phức hợp đơn giản với hai lớp chập hai lớp kết nối đầy đủ: Conv2D_1: Conv2D Input Output (20,20,1) (20,20,20) Max_pooling2D_1: MaxPooling2D Input Output (20,20,20) (10,10,20) Conv2D_2: Conv2D Input Output (10,10,20) (10,10,50) Max_pooling2D_2: MaxPooling2D Input Output (10,10,50) (5,5,50) Flatten_1: Flatten Input Output (5,5,50) (1250) Dense_1: Dense Input Output (1250) (500) Dense_2: Dense Input Output (500) (32) Hình Mơ hình CNN chi tiết - Ban đầu ký tự xử lý input 20x20 pixel qua Conv2D với filter size 5x5 thu 20 feature map với feature map có thơng số ma trận 20x20 - Tiếp theo xử lý qua MaxPooling2D với pooling size: 2x2 để giảm neural xuống nửa với thông số output: 10x10x20 - Tiếp tục xử lý qua lớp Conv2D với filter size 5x5 thu 50 feature map với feature map có thơng số ma trận 10x10 - Tiếp theo xử lý qua MaxPooling2D với pooling size: 2x2 để giảm neural xuống nửa với thơng số output: 5x5x50 27 - Sau xử lý lớp ẩn gồm Flatten 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 tốn xuống cịn 500 nodes - Cuối với output layer ta thu 32 nodes xử lý dense với (activation=”softmax”) sau chương trình lấy kết dự đốn có xác suất cao từ 32 node tương ứng với node chữ số 28 Chương 4: Kết tốn Hình 10 Kết chạy chương trình 4.1 Số lần duyệt qua hết số lượng mẫu tập huấn luyện Epoch Độ xác 60% 68% 75% 80% 85% 89% 93% 94% 95% 10 95% Bảng Số lần duyệt tỉ lệ 29 Từ kết bảng cho thấy độ xác tỉ lệ thuận số Epoch mà ta thực Càng nhiều Epoch tỷ lệ cao Tuy nhiên giá trị độ xác trở nên bảo hòa mức Epoch 10 Thấy giá trị Epoch nhỏ, gia tăng độ xác lớn ngược lại Giá trị độ xác bảo hịa mức Epoch Từ giá trị trên, Epoch cho kết tốt dựa giá trị độ xác thời gian thực thực nghiệm (tỉ lệ thuận với giá trị Epoch) Vì ta chọn Epoch = làm giá trị tính tốn kết 4.2 Thống kê tỷ lệ sai sót cho lần thực nghiệm Lần thực nghiệm Tổng số ảnh Số ảnh Số ảnh sai Tỷ lệ đầu Lần 197 188 4.57% Lần 193 186 3.63% Lần 197 189 4.06% Lần 195 188 3.59% Lần 194 179 15 7.73% Lần 199 191 4.02% Lần 192 180 12 6.25% Lần 198 190 4.04% Lần 193 185 4.15% Lần 10 194 186 4.12% Tỉ lệ sai trung bình liệu: 4.616 % Bảng Thống kê tỷ lệ sai sót Nguyên nhân số ảnh thực nghiệm khơng cố định q trình random có size=200 số ảnh chọn bị lỗi nên chương trình bỏ qua ảnh Một số ảnh chọn bị lỗi loại bỏ nên liệu khoảng 9900 ảnh so với ban đầu 10000 ảnh Với trường hợp sai số đa phần ký tự dính liền lỗi ký tự load ảnh vào chương trình Gây việc nhầm lẫn chương trình nhận dạng, cắt xử lý ban đầu 30 4.3 Một số dự đoán captcha chương trình: 4.3.1 Một số hình ảnh chương trình dự đốn đúng: Hình 11 Ảnh dự đốn 31 Hình 12 Một số hình ảnh dự đốn 32 4.3.2 Một số hình ảnh chương trình dự đốn sai: Hình 13 Một số hình ảnh dự đốn sai 33 4.3.3 Một số ảnh bị lỗi font load cho kết đúng: Hình 14 Một số ảnh captcha lỗi font load cho dự doán 34 Chương 5: Những lỗ hỏng Captcha Thông qua thực nghiệm trên, cho ta thấy sơ lược lỗ hổng mà Captcha gặp phát triển máy học học sâu ngày Chúng bao gồm: ● Cho thấy giải pháp CAPTCHA xử lý đủ tốt để ngăn chặn phần mềm nhận dạng ký tự quang học (tiếng Anh: Optical Character Recognition, viết tắt OCR) ● Giải pháp CAPTCHA bị qua mặt phần mềm nhận dạng tiên tiến ● Tin tặc sử dụng đồng thời nhiều phần mềm OCR khác để cơng: hình ảnh CAPTCHA chép chế nhận dạng khác xử lý đồng thời ● Nếu cách triển khai CAPTCHA có lỗ hổng để cơng vét cạn khai thác phiên làm việc, việc sử dụng nhiều phần mềm CAPTCHA khác giảm đáng kể số lần cần thử, để tìm lời giải cho phiên HTTP ● Trong đó, nghiên cứu phá vỡ CAPTCHA xuất ngày nhiều tin tặc chủ yếu tập trung khai thác lỗ hổng logic ứng dụng thay cố gắng nhận dạng tự động, điều khiến hy vọng việc sử dụng CAPTCHA thúc đẩy công nghệ nhận dạng trở nên khó khăn 35 LỜI KẾT Qua báo cáo người đọc hiểu rõ phần captcha, khả bảo mật, tính xác thực qua thấy nhược điểm captcha dễ dàng bị phá vỡ Deep learning Từ nhóm em muốn nhắn nhủ với người sử dụng captcha sử dụng phương thức xác thực khác khơng cịn an toàn phương thức xác thực thay Captcha như: Re-Captcha hay No-Captcha để đảm bảo tính an toàn cho trang web Cho thấy Captcha trở nên lạc hậu lỗi thời thời điểm mà công nghệ học sâu ngày phát triển với tốc độ chóng mặt Đơn cử với loại Captcha phổ thơng bị phá cách hay cách Bằng chứng đến Google phải liên tục sửa chữa lỗ hổng Captcha họ Đơn cử Audio Captcha reCaptch, loại Captcha coi có tính bảo mật tốt Tuy nhiên, ta tiếp tục phát triển Captcha dựa việc phức tạp hóa khả nhận biết lại tiêu chí đặt ban đầu Captcha “có thể dễ dàng thực người” Dẫn chứng người cho Captcha khó để thực so với lúc trước, đồng thời trở nên dần bất khả thi với người có vấn đề thị lực – người bị cận thị người bị chứng khó đọc (Dyslexia) Vì thế, đơi Captcha khơng phải lựa chọn tốt để sử dụng Đã có số nơi có quy định pháp lý việc sử dụng Captcha Trong Dự án mở bảo mật ứng dụng web (OWASP) khuyên nên cẩn thận sử dụng Captcha Bên cạnh đó, giải pháp liên quan đến âm Audio Captcha xem hiệu so với thông thường phần mềm DeCAPTCHA nhà nghiên cứu đại học Stanford có khả nhận dạng thành công 75% audio captcha eBay Những thất bại việc tìm kiếm giải pháp CAPTCHA tiện lợi cho người dùng, khiến cần xem xét cách nghiêm túc việc sử dụng CAPTCHA tìm kiếm hướng Dù hệ thống trí tuệ nhân tạo có nhiều tiến phần lớn chế chống spam thô sơ Trong đó, nghiên cứu phá vỡ CAPTCHA xuất ngày nhiều tin tặc chủ yếu tập trung khai thác lỗ hổng lôgic ứng dụng thay cố gắng nhận dạng tự động, điều khiến hy vọng việc sử dụng CAPTCHA thúc đẩy cơng nghệ nhận dạng trở nên khó khăn 36 Tài liệu tham khảo: [1] Santanu Pattanayak, (2019), Intelligent Projects Using Python, Nhà xuất bản: Packt Publishing Ltd, Nơi xuất bản: Birmingham-United Kingdom [2] https://vi.wikipedia.org/wiki/CAPTCHA [3] https://en.wikipedia.org/wiki/Deep_learning [4] https://medium.com/@ageitgey/how-to-break-a-captcha-system-in-15-minuteswith-machine-learning-dbebb035a710 [5] https://topdev.vn/blog/thuat-toan-cnn-convolutional-neuralnetwork/#convolutional-neural-network-la-gi [6] https://codelearn.io/sharing/scikit-learn-trong-python-la-gi [7] https://pypi.org/project/imutils/ [8] https://viblo.asia/p/gioi-thieu-ve-numpy-mot-thu-vien-chu-yeu-phuc-vu-cho-khoahoc-may-tinh-cua-python-maGK7kz9Kj2 [9] https://trituenhantao.github.io/2020/08/21/keras-la-gi-gioi-thieu-ve-keras/ [10] https://topdev.vn/blog/opencv-la-gi-hoc-computer-vision-khong-kho/ 37 ... ? ?Tìm hiểu CAPTCHA nhận diện CAPTCHA sử dụng Deep learning để lỗ hỏng CAPTCHA? ?? Với mong muốn tìm hiểu triển khai deep learning để phá vỡ captcha qua cho thấy tầm quan trọng hệ thống xác thực captcha. .. hệ thống xác thực captcha lỗi thời an toàn captcha truyền thống LỜI CẢM ƠN Trong lời báo cáo đồ án: ? ?Tìm hiểu CAPTCHA nhận diện CAPTCHA sử dụng Deep learning để lỗ hỏng CAPTCHA? ?? này, nhóm em muốn... Vì thế, đơi Captcha khơng phải lựa chọn tốt để sử dụng Đã có số nơi có quy định pháp lý việc sử dụng Captcha Trong Dự án mở bảo mật ứng dụng web (OWASP) khuyên nên cẩn thận sử dụng Captcha Bên