Tải bản đầy đủ (.pdf) (61 trang)

Phân loại và nhận dạng tự động các ký tự trên ảnh captcha

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.2 MB, 61 trang )

TRƯỜNG ĐẠI QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA TOÁN-TIN
———————o0o——————–

LUẬN VĂN THẠC SĨ

PHÂN LOẠI VÀ NHẬN DẠNG TỰ ĐỘNG
CÁC KÝ TỰ TRÊN ẢNH CAPCHA
Chuyên ngành: Cơ sở toán cho tin học

Người hướng dẫn: TS. Đỗ Thanh Hà
Học viên:

Nguyễn Duy Anh

HÀ NỘI, 5/2019


Mục lục
Một số kí hiệu viết tắt

iii

Bảng chú giải thuật ngữ

iv

Danh sách hình vẽ

iv



Danh sách bảng

vi

Lời nói đầu

viii

1 Giới thiệu về captcha

1

1.1

Định nghĩa captcha . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

1.2

Lịch sử và ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

1.2.1
1.2.2

Lịch sử . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


2
2

1.3

Quá trình sinh captcha . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

1.4

Các phương pháp nhận dạng captcha tự động . . . . . . . . . . . . . .

4

2 Nhận dạng tự động captcha sử dụng CNN
2.1

2.2

2.3

2.4

8

Phép tốn hình thái . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1 Phép toán giãn nở . . . . . . . . . . . . . . . . . . . . . . . . .


8
11

2.1.2

Phép toán co . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

Lọc ảnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

2.2.1
2.2.2

Nguyên tắc chung của lọc ảnh . . . . . . . . . . . . . . . . . . .
Phép lọc Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . .

13
14

2.2.3

Phép lọc trung vị ảnh xám . . . . . . . . . . . . . . . . . . . .

15

Lý thuyết tích chập và mạng tích chập (CNN) . . . . . . . . . . . . . .


16

2.3.1
2.3.2

Tích chập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mạng tích chập (CNN) . . . . . . . . . . . . . . . . . . . . . . .

16
20

Nhận dạng captcha sử dụng CNN . . . . . . . . . . . . . . . . . . . . .

27

2.4.1

27

Phương pháp tách và nhận dạng từng ký tự . . . . . . . . . . .
i


Luận văn thạc sĩ
2.4.2

Phân loại và nhận dạng tự động các ký tự trong ảnh captcha

Phương pháp nhận dạng toàn bộ ký tự . . . . . . . . . . . . . .


3 Kết quả thực nghiệm
3.1
3.2

3.3

29
30

Bộ dữ liệu sử dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mơ hình sử dụng và các tham số . . . . . . . . . . . . . . . . . . . . .

30
34

3.2.1

Tham số mơ hình . . . . . . . . . . . . . . . . . . . . . . . . . .

34

3.2.2

Độ đo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35

Kết quả thực nghiệm . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1 Ngơn ngữ lập trình, thư viện . . . . . . . . . . . . . . . . . . . .


35
35

3.3.2

Kết quả đạt được với các mẫu dữ liệu . . . . . . . . . . . . . . .

37

3.3.3

Mơ tả q trình thực nghiệm . . . . . . . . . . . . . . . . . . .

39

3.3.4

So sánh kết quả thực nghiệm . . . . . . . . . . . . . . . . . . .

46

Kết luận

48

Tài liệu tham khảo

49

Nguyễn Duy Anh


ii

Cơ sở toán cho tin học


Một số kí hiệu viết tắt
AF

Activation function.
Hàm kích hoạt

BG

Background của ảnh nhị phân

CAPTCHA

Completely Automated Public Turing
test to tell Computers and Humans Apart

CMU

Carnegie Mellon University
Đại học Carnegie Mellon

FC

Fully connected
Lớp kết nối đầy đủ


FG

Foreground của ảnh nhị phân

MIT

Massachusetts Institute of Technology
Viện công nghệ Massachusetts

KQT

Kết quả của phương pháp tách
và nhận dạng từng ký tự

KQTB

Kết quả của phương pháp nhận dạng toàn bộ
ký tự nhưng không thực hiện bước tiền xử lý.

KQTB + TXL Kết quả của phương pháp nhận dạng toàn bộ
ký tự và có thực hiện bước tiền xử lý.
OCR

Optical Character Recognition
Nhận dạng ký tự quang học

PIL

Python Imaging Library


ReLU

Rectified Linear Unit
Tinh chỉnh đơn vị tuyến tính

iii


Bảng chú giải thuật ngữ
Convolution

Lớp tích chập

Dilation

Phép giãn nở

Erosion

Phép co

Grayscale image

Ảnh xám

Kernel

Ma trận lọc (cửa sổ chập)


Mathematic morphology

Phép tốn hình thái

Pool

Lớp tổng hợp đơn giản hóa thơng tin đầu ra

Structuring element

Phần tử cấu trúc

iv


Danh sách hình vẽ
1.1

Một số mẫu captcha . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

1.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 . . . . . . . . . . . . . . . .

4

1.3


Một số kết quả tấn công captcha 2003-2008 tổng hợp trong tài liệu [10]

6

1.4

Một số kết quả tấn công captcha 2009-2016 tổng hợp trong tài liệu [10]

6

2.1

Biểu diễn một ảnh số, mỗi ô vuông là một điểm ảnh

. . . . . . . . . .

9

2.2

Một số dạng SE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

2.3

Ví dụ về SE phản chiếu

. . . . . . . . . . . . . . . . . . . . . . . . . .


10

2.4
2.5

Ví dụ phép giãn nở với ảnh I và phần tử cấu trúc Z . . . . . . . . . . .
Ví dụ phép co với ảnh I và thành phần cấu trúc Z . . . . . . . . . . . .

11
12

2.6

Minh họa lọc ảnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

2.7

Định nghĩa ảnh xám I và Kernel K . . . . . . . . . . . . . . . . . . . .

13

2.8
2.9

Kết quả tính phép lọc trung bình trên ảnh I được ảnh D . . . . . . .
Minh họa kernel Gausian blur . . . . . . . . . . . . . . . . . . . . . . .


14
15

2.10 Kết quả tính phép lọc trung vị tại một vùng cục bộ . . . . . . . . . . .

16

2.11 Kết quả lọc ảnh bằng lọc Gauss và lọc trung vị . . . . . . . . . . . . .

16

2.12 Ảnh xám I, ảnh I mở rộng biên 0 xung quanh I và kernel K . . . . .
2.13 Nhân tích chập tại điểm I11 với K theo công thức (2.13) cho ra điểm r11

17
17

2.14 Lấy ma trận hàng xóm điểm I22 nhân tích chập với K cho ra điểm r22

18

2.15 2 ảnh gốc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

2.16 Nhân tích chập với kernel K1 hiện rõ các cạnh theo chiều ngang . . . .
2.17 Nhân tích chập với kernel K2 hiện rõ các cạnh theo chiều dọc . . . . .

19
19


2.18 Minh họa mơ hình CNN để nhận dạng 1 ký tự [26] . . . . . . . . . . .

21

2.19 Minh họa về bước tính tích chập [6] . . . . . . . . . . . . . . . . . . . .

22

2.20 Minh họa max pooling . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.21 Minh họa Average pooling . . . . . . . . . . . . . . . . . . . . . . . . .

25
26

2.22 Hai cách tiếp cận để nhận dạng captcha bằng CNN . . . . . . . . . . .

27

2.23 Một số ví dụ tách từng ký tự khỏi ảnh . . . . . . . . . . . . . . . . . .

28

2.24 Ví dụ tập các ảnh kí tự đã được cắt và xếp theo thư mục . . . . . . . .

28

v



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

2.25 Minh họa bước lấy đặc trưng của 1 ký tự trong captcha qua từng lớp
tích chập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.26 Ví dụ một số kết quả tiền xử lý . . . . . . . . . . . . . . . . . . . . . .

28
29

2.27 Minh họa các bước lấy đặc trưng của ảnh captcha qua từng lớp tích chập 29
3.1
3.2

Một số mẫu dữ liệu trong bộ dữ liệu Dataset-1 . . . . . . . . . . . . .
Kí tự W và Q bị dính với nhau . . . . . . . . . . . . . . . . . . . . . .

30
31

3.3

Một số mẫu dữ liệu trong bộ Dataset-2 . . . . . . . . . . . . . . . . . .

31

3.4

Hai loại nhiễu nền captcha dùng trong Dataset-2


. . . . . . . . . . . .

31

3.5
3.6

Một số mẫu captcha trong bộ dữ liệu Dataset-3 . . . . . . . . . . . . .
Một số mẫu captcha của bộ dữ liệu Dataset-4 . . . . . . . . . . . . . .

32
32

3.7

Một số mẫu captcha của bộ dữ liệu Dataset-5 . . . . . . . . . . . . . .

33

3.8

Giãn nở ký tự trong captcha để dễ phát hiện vùng liên thông . . . . . .

39

3.9 Phát hiện thành phần liên thông . . . . . . . . . . . . . . . . . . . . .
3.10 Một mẫu captcha có 2 ký tự dính liền nhau . . . . . . . . . . . . . . .

39

40

3.11 Vùng nhận dạng liên tục nhận 2 ký tự vào 1 ảnh cắt, chưa tốt . . . . .

40

3.12 Kết quả sau khi dùng thủ thuật cắt đôi vùng nhận các ký tự liền nhau

40

3.13 2 kiểu dữ liệu trong bộ dữ liệu Dataset-2 . . . . . . . . . . . . . . . . .
3.14 Kết quả lọc ảnh với 2 loại dữ liệu 1 và 2 . . . . . . . . . . . . . . . . .

41
41

3.15 Kết quả tách ngưỡng nhị phân với 2 loại dữ liệu 1 và 2 . . . . . . . . .

41

3.16 Kết quả lọc thành phần kết nối với 2 loại dữ liệu 1 và 2

. . . . . . . .

42

3.17 Kết quả tách ký tự với 2 loại dữ liệu 1 và 2 . . . . . . . . . . . . . . .
3.18 Minh họa quy trình tách từng ký tự . . . . . . . . . . . . . . . . . . . .

42

43

3.19 Một mẫu tách chưa tốt

. . . . . . . . . . . . . . . . . . . . . . . . . .

43

3.20 Kết quả xử lý ảnh bị cắt lệch . . . . . . . . . . . . . . . . . . . . . . .

43

3.21 Mẫu dữ liệu minh họa Dataset-3 và Dataset-4 . . . . . . . . . . . . . .
3.22 Kết quả tiền xử lý mẫu dữ liệu Dataset-3 và Dataset-4 . . . . . . . . .

44
44

3.23 2 mẫu captcha minh họa quy trình thực nghiệm . . . . . . . . . . . . .

45

3.24 Captcha được chuyển sang ảnh xám . . . . . . . . . . . . . . . . . . . .

45

3.25 Captcha được chuyển sang ảnh xám . . . . . . . . . . . . . . . . . . . .
3.26 Captcha sau bước xử lý cuối cùng . . . . . . . . . . . . . . . . . . . .

45

45

Nguyễn Duy Anh

vi

Cơ sở toán cho tin học


Danh sách bảng
3.1

Các tham số mạng CNN dùng trong thực nghiệm . . . . . . . . . . . .

34

3.2
3.3

Bảng so sánh kết quả thực nghiệm dữ liệu Dataset-1 với Dataset-2 . . .
Bảng so sánh kết quả thực nghiệm dữ liệu Dataset-3, Dataset-4 và

46

Dataset-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

Bảng so sánh kết quả thực nghiệm tổng quan các bộ dữ liệu . . . . . .


47

3.4

vii


Lời nói đầu
Để hồn thành luận văn thạc sĩ là cả một q trình đầy khó khăn và thử thách trong
học tập và nghiên cứu tại trường Đại học Khoa học Tự nhiên. Để có được những thành
quả như ngày hơm nay, ngồi những nỗ lực của bản thân, khơng thể không nhắc tới
là sự động viên, giúp đỡ của các thầy, cô giáo, bạn bè và người thân trong gia đình.
Em xin chân thành cảm ơn TS. Đỗ Thanh Hà là cán bộ giảng viên của Trường
Đại học Khoa học Tự nhiên - Đại học Quốc gia Hà Nội đã tận tình giúp đỡ em về cả
chun mơn, nghiên cứu và định hướng phát triển trong suốt quá trình làm luận văn
lẫn phát triển trong tương lai.
Em cũng xin chân thành cảm ơn các thầy cô giáo trong nhà trường, đặc biệt là
các thầy cơ trong khoa Tốn - Cơ - Tin học đã nhiệt tình giảng dạy và giúp em trang
bị những kiến thức nền tảng cần thiết nhất để phát triển bản thân trong con đường
tương lai.
Tuy nhiên vì kiến thức chun mơn cịn hạn chế và bản thân còn thiếu nhiều kinh
nghiệm thực tiễn nên nội dung của luận văn khơng tránh khỏi những thiếu sót, em rất
mong nhận sự góp ý và chỉ bảo của q thầy cơ để hồn thiện hơn luận văn cũng như
kiến thức của bản thân.
Em xin chân thành cảm ơn!

Hà Nội,ngày 19 tháng 5 năm 2019
Học viên cao học

Nguyễn Duy Anh


viii


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.1

Định nghĩa captcha

Định nghĩa 1.1.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 hồn tồ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ủ) u cầu một người dùng
hồ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


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. Captcha hình 1.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.

1.2

Lịch sử và ứng dụng

1.2.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.


1.2.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 tồ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. 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


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.

1.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.
1. 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 tồ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.

2. 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.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


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.

Hình 1.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.

1.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 tồ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.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.
1. 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ở tốn cho tin học


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].
a. 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 tồ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.

b. 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.
2. 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.

Năm 2017 trong bản báo cáo nghiên cứu về hiệu quả kỹ thuật nhận dạng tự động
captcha dựa trên nhận dạng văn bản [10] của Xiangyang Luo, và cộng sự có tổng
hợp sự phát triển của kỹ thuật nhận dạng tự động captcha theo các năm minh
Nguyễn Duy Anh

5

Cơ sở toán cho tin học


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ọa trong hình 1.3 và 1.4.
Thời kì đầu những năm từ 2003 tới 2008 các phương pháp tấn công thường sử
dụng bao gồm đánh giá độ méo, và sử dụng mơ hình CNN với hiệu quả biến động
tùy vào từng bộ dữ liệu và phương pháp sử dụng ( [25], [7], [28], [9], [29]).

Hình 1.3: Một số kết quả tấn công captcha 2003-2008 tổng hợp trong tài liệu [10]
Từ những năm 2009 tới 2016 việc ứng dụng các mơ hình học máy vào nhận dạng
tự động captcha ngày một phổ biến và linh hoạt, một số mơ hình có thể kể đến
bao gồm SVN, KNN, CNN, v.v. Có thể thấy mơ hình CNN vẫn được sử dụng
phổ biến do tính năng ưu việt và tiềm năng phát triển phong phú của nó đối với
bài tốn nhận dạng ( [22], [19], [3], [4], [15] [17], [18], [16], [21]).

Hình 1.4: Một số kết quả tấn cơng captcha 2009-2016 tổng hợp trong tài liệu [10]

Nguyễn Duy Anh


6

Cơ sở toán cho tin học


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

Nội dung luận văn này sẽ tập trung tìm hiểu và thực nghiệm với phương pháp
nhận dạng mềm sử dụng mơ hình nhận dạng là CNN.
Chương này đã trình bày các vấn đề xung quanh captcha gồm 4 nội dung chính là:
Định nghĩa, lịch sử và ứng dụng, quá trình sinh, các kĩ thuật tấn cơng captcha. Với
mục đích tìm hiểu các kỹ thuật tấn công captcha tập trung xây dựng các công cụ thực
nghiệm để kiểm thử và đánh giá độ an toàn của một số bộ captcha. Trong chương tiếp
theo luận văn sẽ giới thiệu chi tiết các lý thuyết tiền xử lý và áp dụng mơ hình CNN
để nhận dạng tự động các ký tự trong ảnh captcha.

Nguyễn Duy Anh

7

Cơ sở toán cho tin học


Chương 2
Nhận dạng tự động captcha sử
dụng CNN
Chương 2 giới thiệu một số vấn đề lý thuyết phục vụ quá trình nhận dạng tự động
captcha. Bao gồm các lý thuyết về phép tốn hình thái và các bộ lọc sử dụng trong

luận văn. Phần tiếp theo tập trung vào phép tốn tích chập, mơ hình CNN và hướng
áp dụng mơ hình CNN để nhận dạng tự động captcha.

2.1

Phép tốn hình thái

Định nghĩa 2.1.1. Hình thái tốn học (Mathematical morphology) [24] là một
lý thuyết và kỹ thuật để phân tích và xử lý cấu trúc hình học, dựa trên lý thuyết tập
hợp, lý thuyết lưới và hàm ngẫu nhiên.
Hình thái tốn học là phương pháp khá phổ biến trong xử lý ảnh số, đây là một
trong những kỹ thuật quan trọng được áp dụng trong giai đoạn tiền xử lý hình ảnh để
có được ảnh đầu vào tốt cho hệ thống nhận dạng.
Định nghĩa 2.1.2. Một ảnh I là một ánh xạ từ tập Sp gồm các tọa độ điểm ảnh
p = (r, c) ( tập không gian ảnh) vào tập các giá trị G thỏa mãn: với mỗi tọa độ điểm
ảnh p tồn tại một giá trị I(p) ∈ G.
Định nghĩa 2.1.3. Một ảnh nhị phân có 2 giá trị G = {Vf g , Vbg } trong đó Vf g được
gọi là giá trị foreground và Vbg được gọi là giá trị background .
Thông thường Vf g = 0 và Vbg = −∞. Ngoài ra Vf g và Vbg có thể nhận các giá trị
khác bao gồm {Vf g , Vbg } = {0, ∞}, {0, 1}, {1, 0}, {0, 255}, {255, 0} trong nội dung luận
văn này đặt {Vf g , Vbg } = {255, 0}
Định nghĩa 2.1.4. Foreground của một ảnh nhị phân I được định nghĩa như sau.
F G{I} = {I(p), p = (r, c) ∈ Sp |I(p) = Vf g }
8

(2.1)


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

Định nghĩa 2.1.5. Background của một ảnh nhị phân I được định nghĩa như sau.
BG{I} = {I(p), p = (r, c) ∈ Sp |I(p) = Vbg }

(2.2)

Như vậy F G{I} ∪ BG{I} = I và F G{I} ∩ BG{I} = ∅
Bên cạnh đó có thể thấy background là phần bù của foreground và ngược lại
BG{I} = {F G{I}C }, F G{I} = {BG{I}C }

(2.3)

Hình 2.1 minh họa về khái niệm foregrounf và background của một ảnh nhị phân
I với c = 255

Hình 2.1: Biểu diễn một ảnh số, mỗi ô vuông là một điểm ảnh

Định nghĩa 2.1.6. Support của một ảnh I là tập vị các điểm ảnh foreground trong
không gian ảnh.
supp(I) = {p = (r, c) ∈ Sp |I(p) = Vf g }

(2.4)

Định nghĩa 2.1.7. Phần bù của support là tập vị trí các điểm ảnh background trong
không gian ảnh
supp(I)C = {p = (r, c) ∈ Sp |I(p) = Vbg }

(2.5)


Định nghĩa 2.1.8. Thành phần cấu trúc (Structuring Element (SE) ) [12] là
một ảnh nhỏ, được sử dụng như một của sổ dịch chuyển nhằm hỗ trợ phác họa hàng
xóm của một điểm ảnh trong khơng gian ảnh.
Hình 2.2 minh họa về các SE được sử dụng trong luận văn trong đó FG là màu
xám BG là màu trắng.

Nguyễn Duy Anh

9

Cơ sở toán cho tin học


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 2.2: Một số dạng SE
SE có thể có bất kì hình dáng kích thước nào với tâm tùy ý như trong hình 2.2
điểm trịn trắng là tâm của thành phần cấu trúc. Ngoài ra một số hình dạng phổ biến
của SE thường được sử dụng hiện nay như dạng hình thoi, hình chữ thập thẳng hoặc
chéo và dạng đường theo chiều ngang, dọc.
Các thành phần với một SE gồm có
1 Kích thước của ma trận phần tử cấu trúc.
2 Hình dáng của phần tử cấu trúc.
3 Tâm của phần tử (Ogirin). Thơng thường thì gốc của phần tử mang giá trị 1
nhưng trong một số trường hợp thì gốc phần tử mang giá trị 0 (phần tử cấu trúc
khơng có gốc).
Định nghĩa 2.1.9. Cho ảnh I và Z là SE, Z + p được hiểu là Z được di chuyển sao
cho tâm của nó trùng với vị trí p ∈ Sp khi đó tập các vị trí trong ảnh được phác họa

bởi Z + p gọi là Z-hàng xóm của p kí hiệu N {i, Z}(p).
Định nghĩa 2.1.10. Cho Z là SE, ζ là hình vng gồm vị trí các điểm ảnh mà chứa
¯ b) = Z(a, b)∀(a, b) ∈ ζ là thành
tập {(r, c), (−r, −c)|(r, c) ∈ supp(Z)}. Khi đó Z(a,
phần cấu trúc phản chiếu của Z.
Có thể hiểu về mặt kĩ thuật Z¯ là Z quay 180 độ quanh tâm của nó như hình 2.3
dưới đây

Hình 2.3: Ví dụ về SE phản chiếu

Nguyễn Duy Anh

10

Cơ sở toán cho tin học


Luận văn thạc sĩ

2.1.1

Phân loại và nhận dạng tự động các ký tự trong ảnh captcha

Phép tốn giãn nở

Có rất nhiều định nghĩa về phép toán giãn nở (Dilation) [12]. Ba trong số các định
nghĩa có thể áp dụng cho ảnh nhị phân là:
1. Tập tất cả các vị trí điểm ảnh p trong không gian ảnh mà thỏa mãn giao của
Z¯ + p với ảnh I là khác rỗng.
I ⊕ Z = {p ∈ Sp |[(Z¯ + p) ∪ I] = ∅}


(2.6)

2. Hợp các bản sao của SE, mỗi bản sao được dịch chuyển đến mỗi vị trí điểm ảnh
trong support của ảnh.
I ⊕Z =

(Z + p)

(2.7)

p∈supp(I)

3. Hợp các bản sao của ảnh, mỗi bản sao được dịch chuyển tới vị trí điểm ảnh trong
support của SE.
I ⊕Z =

(I + p)

(2.8)

p∈supp(Z)

Trong nội dung luận văn này phép giãn nở được áp dụng với định nghĩa thứ 3. Với
ví dụ minh họa trong hình 2.4 ta áp dụng cơng thức (2.8) để thực hiện phép giãn nở
ảnh I với SE là ảnh Z.

Hình 2.4: Ví dụ phép giãn nở với ảnh I và phần tử cấu trúc Z

Nguyễn Duy Anh


11

Cơ sở toán cho tin học


Luận văn thạc sĩ

2.1.2

Phân loại và nhận dạng tự động các ký tự trong ảnh captcha

Phép toán co

Tương tự như phép giãn nở phép co (Erosion) [12] cũng có nhiều cách định nghĩa và
ba trong số các định nghĩa có thể áp dụng cho ảnh nhị phân là:
1. Tập tất cả các vị trí điểm ảnh p trong khơng gian ảnh mà thỏa Z + p là tập con
của I.
I

Z = {p ∈ Sp |[(Z + p) ⊂ I]}

(2.9)

2. Giao các bản sao của SE phản chiếu, mỗi bản sao được dịch chuyển đến mỗi vị
trí điểm ảnh trong support của ảnh.
I

(Z¯ + p)


Z=

(2.10)

p∈supp(I)

3. Hợp các bản sao của ảnh, mỗi bản sao được dịch chuyển tới vị trí điểm ảnh trong
support của SE.
I

Z=

(I + p)

(2.11)

¯
p∈supp(Z)

Để đảm bảo sự nhất quán trong nội dung thực nghiệm, phép co trong luận văn
được sử dụng với định nghĩa thứ 3. Thông qua ví dụ minh họa trong hình 2.5 minh
họa q trình áp dụng công thức (2.11) để thực hiện phép co ảnh I với SE là ảnh Z.

Hình 2.5: Ví dụ phép co với ảnh I và thành phần cấu trúc Z

Nguyễn Duy Anh

12

Cơ sở toán cho tin học



Luận văn thạc sĩ

2.2

Phân loại và nhận dạng tự động các ký tự trong ảnh captcha

Lọc ảnh

Lọc ảnh (Image Filtering) là một bước rất quan trọng trong quá trình tiền xử lý hình
ảnh với các mục đích khá đa dạng như lọc nhiễu, làm nét hình ảnh v.v. Phần này sẽ
giới thiệu nguyên tắc chung của lọc ảnh và một số phép lọc ảnh cơ bản.

2.2.1

Nguyên tắc chung của lọc ảnh

Nguyên tắc chung của các phương pháp lọc là cho ma trận ảnh tích chập với một ma
trận lọc (Kernel). Ma trận lọc lọc cịn có thể được gọi là cửa sổ chập (trong phép nhân
tich chập), cửa sổ lọc, mặt nạ v.v. Trong luận văn sử dụng thuật ngữ kernel.
Việc tính tích chập ảnh với kernel thực hiện bằng cách trượt kernel lần lượt trên
từng điểm ảnh của ảnh theo hàng và thực hiện phép tích chập với từng vùng chiếu của
kernel trên ảnh với tâm của kernel trùng với điểm ảnh đang xét. Phép tính tích chập
sẽ được giới thiệu chi tiết tại mục 2.3.1. Hình 2.6 minh họa nguyên tắc lọc ảnh trên
ảnh I với kenel kích thước 3 × 3 (vùng màu xám trên ảnh I) và ảnh kết quả O với các
điểm ảnh đầu ra được biết đổi màu xám.

Hình 2.6: Minh họa lọc ảnh
Ví dụ : Phép lọc trung bình được minh họa cụ thể khi thực hiện trên ảnh xám I

với kernel K được định nghĩa trong hình 2.7 dưới đây

Hình 2.7: Định nghĩa ảnh xám I và Kernel K
Sau đó thực hiện phép lọc trung bình ví dụ với điểm ảnh I(3, 3) = 2, lấy ma trận
cục bộ tương ứng với kernel được khoanh đỏ trong hình 2.8 và thực hiện phép tính
Nguyễn Duy Anh

13

Cơ sở tốn cho tin học


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

trung bình cho ra tọa độ tương ứng trong ảnh kết quả D.
D(3, 3) = (7 + 2 + 1 + 6 + 2 + 8 + 6 + 7 + 7)/9 =

1
× 46
9

Hình 2.8: Kết quả tính phép lọc trung bình trên ảnh I được ảnh D
Thực hiện tương tự với các điểm khác trong I ta sẽ có kết quả là ảnh D như trong
hình 2.8

2.2.2

Phép lọc Gauss


Phép lọc Gauss là cách làm mờ hình ảnh bằng cách tính tích chập hình đó với kernel là
Gausian Blur. Nó có thể giúp làm giảm nhiễu và mức độ chi tiết (khơng mong muốn)
của hình ảnh. Về mặt trực quan, đây được xem như là phương pháp làm mờ mịn cũng
giống như hiệu ứng hình ảnh được đặt dưới một lớp màn trong suốt bị mờ.
Gaussian blur là một loại kernel làm mờ ảnh, sử dụng lý thuyết hàm Gaussian
để tính tốn việc chuyển đổi mỗi điểm ảnh của hình. Dưới đây là phương trình hàm
Gaussian dùng trong không gian ảnh hai chiều.
G(x, y) =

1
x2 + y 2
exp(−
)
2πσ 2
2σ 2

(2.12)

Trong đó x và y là tọa độ theo hai trục đứng và ngang còn σ là phương sai chuẩn
của phân tán Gaussian hay là giá trị quyết định độ lệch giữa các điểm trên bề mặt
Gaussian. Trong không gian hai chiều, công thức này sản sinh ra những đường viền là
những đường tròn đồng tâm, tuân theo logic phân tán Gaussian từ điểm trung tâm.
Giá trị từ hệ thống phân tán này sẽ được sử dụng để xây dựng một loại kernel được
minh họa trong hình 2.9. Các phương pháp tính tích chập khi biết kernel và ma trận
ảnh được giới thiệu chi tiết tại mục 2.3.1.

Nguyễn Duy Anh

14


Cơ sở toán cho tin học


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 2.9: Minh họa kernel Gausian blur
Giá trị mới của mỗi điểm ảnh sau khi tính tích chập với kernel đại diện cho hàm
Gaussian có thể coi là trung bình lượng giá của các điểm ảnh xung quanh nó. Giá trị
lượng giá của phần tử trung tâm kernel tương ứng với điểm ảnh đang xét là lớn nhất,
giá trị này sẽ nhỏ hơn đối với các phần tử tương ứng với những điểm ảnh kế cận một
cách đối xứng và tỉ lệ thuận với khoảng cách của phần tử này với trung tâm. Tính chất
này giúp giữ lại đường viền và biên cũng như làm mờ một cách đồng bộ hơn so với các
phương pháp khác.

2.2.3

Phép lọc trung vị ảnh xám

Trong phép lọc ảnh có một trường hợp đặc biệt đó là phép lọc trung vị. Phép lọc trung
vị thực hiện bằng cách sắp sếp các giá trị mức xám tăng dần trong vùng cục bộ rồi lấy
giá trị trung vị mức xám thay thế mức xám ở tâm vùng cục bộ.
Với phép lọc trung bình ở trên, giá trị điểm trung tâm được tính mới (có thể bằng
hoặc khác với giá trị một điểm trong vùng ma trận lọc), còn với phép lọc trung vị, giá
trị điểm trung tâm luôn được thay bằng một giá trị điểm ảnh trong ảnh đầu vào. Do
vậy, phương pháp lọc này phù hợp dùng để loại bỏ nhiễu hạt, nhiễu muối tiêu khá tốt.
Ví dụ : Hình 2.10 minh họa phép lọc trung vị với một điểm ảnh trong ảnh gốc thực
hiện trên vùng cục bộ bao quanh điểm ảnh đó.


Nguyễn Duy Anh

15

Cơ sở tốn cho tin học


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 2.10: Kết quả tính phép lọc trung vị tại một vùng cục bộ
Ví dụ trong hình 2.11 thể hiện kết quả lọc ảnh bằng bộ lọc Gauss và bộ lọc trung
vị với một ảnh xám nhiễu.

Hình 2.11: Kết quả lọc ảnh bằng lọc Gauss và lọc trung vị

2.3

Lý thuyết tích chập và mạng tích chập (CNN)

2.3.1

Tích chập

Tích chập là phép tốn tuyến tính giữa ảnh I kích thước bất kì và kernel K ∈ Rm×n
được tính theo cơng thức sau :
m/2


n/2

I(x, y) ∗ K(x, y) =

K(u, v)I(x − u, y − v)

(2.13)

u=−m/2 v=−n/2

Trong phép tính tích chập gồm có 2 tham số chính:
1. Bộ lọc (kernel) là các ma trận số dùng để lọc ảnh (hay trích xuất thơng tin trong
ảnh). Bộ lọc có nhiều hình dạng nhưng phổ biến nhất là hình vng các cỡ 3 × 3
hay 5 × 5.
Nguyễn Duy Anh

16

Cơ sở toán cho tin học


×