- 18 - XÂY DỰNGTHÀNHPHẦNSINHẢNHCHỐNGĐĂNGNHẬPTỰĐỘNG Họ và tên: Phan Chí Hiếu MSV: 0220116 Email: phanchihieu@gmail.com 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 đăngnhậptựđộng tấn công. Tác hại của đăngnhậptựđộ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ể đăngnhậ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 đăngnhậptựđộng là sử dụngảnh xác nhận mỗi khi đăng ký hoặc đăngnhậ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ụngthànhphần này để chống đăng nhậptự động. Vì vậy khoá luận của chúng tôi thực hiện việc xây dựngthànhphầnsinhảnhtựđộng có khả năng kết nối vào các hệ thố ng để ngăn chặn đăng nhậptựđộng 2. Cơ sơ lý thuyết Quá trình xây dựngthànhphầnsinhảnhtựđộ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ầnThànhphầnsinh ả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ànhphầ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ànhphần phục vụ Sử dụngthànhphần phục v ụ trong trang tin 3. Thực nghiệm Chúng tôi đã xây dựng trang đăngnhậ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ựngthành công thànhphầnsinhảnhchống đăng nhậptựđộng và thànhphầ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ậptựđộ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 . 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. 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