- 18 -
XÂY DỰNG THÀNH PHẦN SINH ẢNH
CHỐNG ĐĂNG NHẬP TỰ ĐỘNG
Họ và tên: Phan Chí Hiếu
MSV: 0220116
Email:
Người hướng dẫn: Ths. Từ Trung Hiếu
1. Giới thiệu
Trong những năm gần đây, rất nhiều hệ
thống các trang web, hệ thống các máy chủ
phục vụ thư thường bị các chương trình
đăng nhập tự động tấn công. Tác hại của
đăng nhập tự động là chúng thường xuyên
dò mật khẩu tự động của người dùng dẫn
đến nhiều người dùng thực bị mất tài
khoản, chúng có thể đăng nhập vào hệ
thống và tạo nhiều tài khoản giả làm cho cơ
sở dữ liệu của hệ thống đầy lên nhanh
chóng, sau đó chúng có thể tự động gửi một
lượng lớn thư quảng cáo làm cho hòm thư
của người dùng luôn luôn bị đầy.
Giải pháp hiện nay các hệ thống lớn
như yahoo, hotmail, gmail thường dùng để
ngăn các chương trình đăng nhập tự động là
sử dụng ảnh xác nhận mỗi khi đăng ký hoặc
đăng nhập vào hệ thống. Việc xây dựng ảnh
xác nhận là một vấn đề còn mới và có tính
thực tiễn cao, hiện nay có rất nhiều hệ
thống khác muốn sử dụng thành phần này
để chống đăng nhập tự động. Vì vậy khoá
luận của chúng tôi thực hiện việc xây dựng
thành phần sinh ảnh tự động có khả năng
kết nối vào các hệ thố
ng để ngăn chặn đăng
nhập tự động
2. Cơ sơ lý thuyết
Quá trình xây dựng thành phần sinh ảnh
tự động là sự kết hợp của nhiều thuật toán.
Đó là quá trình sinh chuỗi ngẫu nhiên, biến
chuỗi ngẫu nhiên thành ảnh, sinh nền, ghép
chuỗi ảnh vào nền, thực hiện biến đổi chuỗi
ảnh theo các hình khác nhau, sử dụng các
kỹ thuật để gây nhiều bề mặt ảnh.
2.1. Thuật toán sinh chuỗi ngẫu nhiên
Mô tả thuật toán
Đầu vào: Rỗng
Đầu ra: Chuỗi gồm từ 6 đến 12 ký tự ngẫu
nhiên
Các bước thực hiện:
- Bước1: Khởi tạo một từ điển gồm các chữ
cái trong bảng mã alphabel và các chữ số từ
0 đến 9
- Bước 2: Xác định ngẫu nhiên số các ký
tự sẽ được sinh ra
- Bước 3: Để sinh từng ký tự, lấy ngẫu
nhiên môt ký tự trong từ điển.
- Bước 4: Lặp lại việc lấy ngẫu nhiên đó
đến khi nào sinh đủ số ký tự thì dừng lại
2.2. Thuật toán sinh nền
Với những ảnh đơn giản, chương trình
nhận dạng dễ dàng thực hiện việc tách
chuỗi ảnh ra khỏi nền để sau đó có thể thực
hiện việc dò chuỗi ảnh ngẫu nhiên được
sinh ra. Vì vậy để làm cho các thuật toán
tách cạnh, tìm biên không hiệu quả chúng
tôi sẽ cho sinh ra những nền có cấu trúc
phức tạp hơn.
+ Nền dạng thác nước
Để tạo ra thác nước cần duyệt theo chiều
ngang ảnh trước. Tại mỗi vị trí chiều ngang
ta sẽ xây dựng giọt nước từ trên đỉnh ảnh
xuống đáy ảnh. Thuậtb toán:
void waterfall(left, right, top, bottom) {
for(x=left; x<=right; x++) {
s = (rand()%256)<<10;
r = 256+rand()%128<<3;
for(y=top; y<=bottom; y++, r+=s);
SetPixel(x, y, RGB(r + y, r + y, r + y));
}
}
- 19 -
+ Nền dạng bàn cờ(Checkboard)
Để sinh ra bàn cờ caro chúng ta cần
duyệt tất cả các điểm x, y theo chiều ngang
và chiều dọc của ảnh sau đó xác định vị trí
của những ô mầu đỏ và đen để tô mầu
tương ứng. Công thức:
)()(y)f(x, kyfloorkxfloor ×+×=
(
11 ≤≤− k
)
2.3. Thuật toán biến đổi chuỗi ảnh
Biến đổi chuỗi ảnh cũng là một trong
những biện pháp ngăn các hệ nhận dạng
nhận được chuỗi ảnh. Có rất nhiều cách
biến đổi chuỗi ảnh như biến đổi theo hình
sin, hình bình hành hay hình thang…
+ Biến đổi hình sin:Tư tưởng của thuật toán
rất đơn giản, từ chuỗi ảnh ban đầu, copy
chuỗi ảnh đến vị trí đã được làm cong theo
dang hinh sin. Với các toạ độ
được xác
đinh: x
‘
= x
y
’
= y + a*sin(x/b)
(x, y) là toạ độ ban đầu
(x
‘
,y
’
) là toạ độ sau khi được biến đổi
2.4. Thuật toán gây nhiễu bề mặt
Gây nhiễu bề mặt tức là sinh ra các
đường thẳng, đường cong hay đường tròn
ngẫu nhiên lên trên ảnh xác nhận nhằm làm
tăng tính an toàn cho chuỗi ảnh. Để sinh
đường thẳng có thể sử dụng thuật toán
DDA hoặc công thức của Bresenham. Đối
với đường cong có thể sử dụng công thức
Bezier-Bernstain:
10 ≤≤ u
p(u) =
∑
=
n
i 0
B
i, n
(u)p
i
Trong đó: B
i, n
(u) = C(n, i)*u
i*
(i-u)
n-i
C(n,i) =
)!(!
!
ini
n
−
3. Triển khai thành phần
Thành phần sinh ảnh xác nhận chúng
tôi xây dựng dựa trên cấu trúc của ảnh
bitmap và các thủ tục hỗ trợ để tạo ra thành
phần phục vụ
+ Cấu trúc ảnh bmp: struct image
{
long width; //Chiều rộng của ảnh
long height; //Chiều cao của ảnh
unsigned char **pix; //Dữ liệu ảnh
long pal[256]; //Bảng màu
}
+ Các thủ tục hỗ trợ
Thủ tục tạo ra thành phần phục vụ
Sử dụng thành phần phục v
ụ trong trang tin
3. Thực nghiệm
Chúng tôi đã xây dựng trang đăng nhập
đơn giản có sử dụng ảnh xác nhận
Mỗi lần đăng nhập, đều có một chuỗi
ảnh ngẫu nhiên xuất hiện. Nếu nhập đúng
tên mã xác nhận, hệ thống sẽ cho đăng
nhập. Nếu nhập sai, một chuỗi ảnh xác
nhận mới sẽ sinh ra và người dùng phải
nhập lại mã số xác nhận này.
4. Kết luận
Trong khoá luận này, chúng tôi đã xây
dựng thành công thành phần sinh ảnh
chống đăng nhập tự động và thành phần
này có khả năng gắn vào các hệ thống để hệ
thống ngăn chặn các chương trình đăng
nhập tự động
5. Tài liệu tham khảo
[1] Lương Mạnh Bá, “Nhập môn xử lý
ảnh số”, NXB khoa học và kỹ thuật
năm 2003
[2] Lê Tấn Hùng, Huỳnh Quyết Thắng,
“Kỹ thuật đồ hoạ”, NXB khoa học
và kỹ thuật
[3] Dwayne Phillips, Image Processing
in C
[4] Image Verification and
Identification Application
Programming Interface
[5] User Authentication With Image
Verification