Bài báo này sẽ nghiên cứu về các giải thuật chính được sử dụng để phát hiện sự thay đổi về nội dung của website, từ đó đưa ra đánh giá và đề xuất phương pháp cải tiến thuật toán Rabin Fingerprint giúp tăng cường khả năng giám sát, phát hiện và cảnh báo, nhằm hỗ trợ cho người quản trị có thể phản ứng nhanh hơn trong các trường hợp website của mình bị tấn công.
Tạp chí Khoa học cơng nghệ Thực phẩm 12 (1) (2017) 125-131 PHƯƠNG PHÁP PHÁT HIỆN VÀ CẢNH BÁO SỰ THAY ĐỔI CỦA WEBSITE Vũ Đức Thịnh*, Trần Đắc Tốt, Vũ Văn Vinh Trường Đại học Công nghiệp Thực phẩm TP.HCM *Email: thinhvd@cntp.edu.vn Ngày nhận bài: 10/8/2017; Ngày chấp nhận đăng: 20/9/2017 TĨM TẮT Lỗ hổng website ln mục tiêu tiềm tàng cơng mục đích khác Tấn cơng thay đổi nội dung website hình thức cơng phổ biến Bài báo nghiên cứu giải thuật sử dụng để phát thay đổi nội dung website, từ đưa đánh giá đề xuất phương pháp cải tiến thuật toán Rabin Fingerprint giúp tăng cường khả giám sát, phát cảnh báo, nhằm hỗ trợ cho người quản trị phản ứng nhanh trường hợp website bị cơng Từ khóa: Cảnh báo, cơng, thay đổi website, thuật toán Rabin fingerprint, phát thay đổi MỞ ĐẦU Những công thay đổi website thực để xâm phạm tính tồn vẹn web hình thức sau [1]: - Thay đổi nội dung trang web - Thay đổi phần nội dung trang web - Thay toàn trang web - Chuyển hướng trang web - Phá hủy xóa bỏ trang web Các hệ thống kiểm soát an ninh mạng Firewall, VPN, PKI (Public Key Infrastructure)…, công cụ quan trọng để giữ cho web an toàn hơn, nhiên chúng không đủ để đảm bảo an ninh website, cần chế an ninh tốt [2] Việc kiểm soát thay đổi nội dung cảnh báo tới người quản trị giải pháp để giải vấn để an ninh website Có nhiều nghiên cứu để đánh giá, so sánh trang web đề xuất DaisyDiff dự án Google công bố vào năm 2007, dự án phát triển dựa việc so sánh định dạng HTML, phát nội dung thay đổi Thêm vào DaisyDiff so sánh hai văn để tìm điểm khác biệt chúng cách nhanh chóng HTML Match công cụ mạnh thương mại hóa vào năm 2005 Salty Brine so sánh trang HTML, chí so sánh tài liệu có định dạng MS Word Một số lượng lớn báo công bố nghiên cứu tìm cách cách xử lý, đưa thuật toán hiệu để phát thay đổi trang web Trong [2], [3] [4], thuật toán khác đề xuất để phát thay đổi tài liệu XML Trong [4], thuật tốn dựa việc tìm kiếm rút sư thay đổi dựa việc so sánh cấu trúc Việc so khớp node dựa chữ ký (là hàm node xét chúng) 125 Vũ Đức Thịnh, Trần Đắc Tốt, Vũ Văn Vinh thứ tự xuất node chuỗi node Từ node không khớp nhau, thay đổi tài liệu phát Thuật toán GNU diffutility AT & Ts HTMLDiff [5, 7, 8] thuật tốn phát thay đổi dựa vào việc tính tốn khác thông số phẳng tập tin Những thuật toán áp dụng thuật toán chuỗi chung dài để so sánh hai hay nhiều tập tin phẳng (tập tin không phân cấp nội dung XML) trang HTML Những chuỗi chung dài thực hiệu tập tin phẳng lại gặp thiếu sót tập tin có cấu trúc phân cấp XML [6] Trong báo này, phần giới thiệu khái niệm dấu vân tay tài liệu, thuật toán Rabin Fingerprint đề xuất thuật toán Rabin Fingerprint cải tiến áp dụng xây dựng hệ thống giám sát website nhằm phát kịp thời công để đảm bảo tính tồn vẹn trang web đồng thời tạo thơng điệp cảnh báo có ý nghĩa trang web bị cơng Phần trình bày kết thực nghiệm đạt Phần kết luận hướng nghiên cứu GIẢI PHÁP PHÁT HIỆN VÀ CẢNH BÁO SỰ THAY ĐỔI WEBSITE 2.1 Dấu vân tay tài liệu Trong khoa học máy tính, dấu vân tay nhận dạng liệu gốc cho tất mục đích thực tiễn giống việc nhận dạng dấu vân tay người thực tế Dấu vân tay tài liệu tập hợp số nguyên đại diện cho số khóa nội dung tài liệu Mỗi số nguyên gọi giá trị băm Thông thường, dấu vân tay tài liệu tạo cách chọn chuỗi từ văn áp dụng hàm toán học cho chuỗi chọn Hàm này, giống hàm băm, tạo giá trị băm Giá trị băm sau lưu trữ mục (index) để truy cập nhanh truy vấn Khi tài liệu truy vấn (query document) so sánh với tập hợp số nguyên lưu trữ đó, dấu vân tay tài liệu cho phép truy vấn tạo Đối với giá trị băm dấu vân tay tài liệu, mục truy vấn danh sách dấu vân tay đối sánh lấy Số lượng giá trị băm chung dấu vân tay truy vấn dấu vân tay tập hợp lưu trữ xác định tài liệu tương ứng Có vài phương pháp để lấy dấu vân tay tài liệu dựa biến đổi thông số thiết kết sau: - Chiến lược lựa chọn (được sử dụng để chọn chuỗi từ tài liệu cho) - Kích thước chuỗi (được trích từ tài liệu) - Số lượng giá trị băm (được sử dụng để xây dựng tài liệu dấu vân tay) - Hàm Fingerprint (được sử dụng để tạo giá trị băm từ chuỗi tài liệu, checksum, hàm băm, hàm băm mật mã, chữ kí số) 2.2 Thuật toán Rabin Fingerprint Thuật toán Rabin Fingerprint nhiều thuật tốn Fingerprint thực khóa cơng khai sử dụng đa thức trường giới hạn Thuật tốn Rabin Fingerprint điển hình tạo giá trị băm từ chuỗi trang web (web pages), thuật tốn nhanh, dễ dàng thực thi, kèm với phân tích xác tốn học xác suất đụng độ (hai tập tin có dấu vân tay giống nhau) Thuật toán sử dụng hệ thống sau: 126 Phương pháp phát cảnh báo thay đổi website Đầu vào: Tài liệu (trang web công khai) Đầu ra: Dấu vân tay tài liệu (các giá trị băm tài liệu đó) Bước 1: Bắt đầu Bước 2: Xử lý văn bản, xoá hết tất khoảng trắng kí tự đặc biệt (như: , %, !, …) từ mã HTML (mã trang web) để thu khối văn túy (pure text block) Bước 3: Chia khối văn xử lý thành chuỗi có độ dài K // Số lượng chuỗi có độ dài K số lượng giá trị băm (mã băm) (m-K+1),với m kích thước tài liệu Bước 4: Tính tốn giá trị băm chuỗi cách tính H(P) sau: // H(P) tuyến tính n (n độ dài P) Khởi tạo: Count=K Tr = T[r r+n-1] H(S) = S(n) + 2*S(n-1) + 4*S(n-2) + … + 2n-1*S (1) Do while Count > Sử dụng Hp(P) = H(P) mod p giá trị băm (fingerprint) P Hp(Tr) = [2*Hp(Tr-1) - (2n mod p) * T(r-1) + T(r+n-1)] mod p //Tính giá trị băm cho chuỗi Until Count = Bước 5: Lưu lại tất giá trị băm văn Bước 6: Kết thúc 2.3 Thuật toán Rabin Fingerprint cải tiến Thuật toán cải tiến đề xuất hệ thống sau: Đầu vào: Tài liệu (trang web công khai) Đầu ra: Dấu vân tay tài liệu (các giá trị băm tài liệu đó) Bước 1: Bắt đầu Bước 2: Xử lý văn bản, xoá hết tất khoảng trắng kí tự đặc biệt (như: , %, !, …) từ mã HTML (mã trang web) để thu khối văn túy (pure text block) Bước 3: Chia văn M thành K khối con, khối có kích thước n K=m/n với m kích thước văn M, n số nguyên dương cho trước kích thước chuỗi Bước 4: Tính mã băm H(P) cho chuỗi sau: Khởi tạo: Tr = T[r r+n-1]; K=0; H(S) = S(n) + 2*S(n-1) + 4*S(n-2) + … + 2n-1*S(1); While (K