CHƯƠNG 2 PHÁT HIỆN VÀ PHÒNG CHỐNG TẤN CÔNG TCP SYNFLOOD
2.5. Phát hiện và loại bỏ các gói tin giả mạo trong tấn cơng DDoS TCP SynFlood
2.5.4.3. Tăng tốc độ xử lý của giải pháp PIDAD2 với thuật toán Bloom Filter
Thuật toán Bloom filter (BF) được đề xuất bởi Bloom [2] vào năm 1970. BF gồm một vector v với m bit được thiết lập giá trị khởi tạo là 0. Mỡi BF có k hàm băm độc lập h1, h2 ,.., hk , trong đó 0 ≤ k ≤ m - 1. Vector v thể hiện sự tồn tại của một phần tử trong một tập giá trị A. Cho một giá trị a ∈ A, bit i tại vị trí hi (a), 1 ≤ i ≤ k, v trong được thiết lập là 1. Giá trị a được cho là nằm trong BF khi tìm được vị trí i duy nhất mà giá trị hi (a) được thiết lập là 1. Trường hợp khơng tìm được vị trí i nào để hi (a) có giá trị 1 thì có nghĩa là giá trị a khơng nằm trong BF. Hình dưới đây mơ tả việc sử dụng BF có giá trị m = 50 và hàm băm duy nhất đưa ra giá trị hash có độ dài là 3 cho mỡi IP đưa vào BF.
Hình 2.12 Hình minh họa thuật toán Bloom filter
Trong phần này, chúng tôi sẽ tập trung vào việc tăng tốc độ xử lý của PIDAD2 sử dụng Bloom Filter để lưu trữ và tìm kiếm nhanh các giá trị PID và IP nguồn.
Mỡi gói tin gửi đến hệ thống sẽ có một trong ba trạng thái (S0, S1 và S2). Trong đó, trạng thái S0 là trạng thái của gói tin có giá trị PID mà ta khơng tìm được giá trị PID+1 hoặc PID- 1 của gói tin nào gửi đến máy chủ trước đó. Giá trị PID của những gói tin có trạng thái S0 sẽ được lưu vào BF0-PID.
Những gói tin ở trạng thái S1 là những gói tin tìm được giá trị PID-1 ở trong BF0-PID. Giá trị PID của những gói tin có trạng thái S1 sẽ được lưu vào Bloom Filter BF1-PID. Những gói tin ở trạng thái S2 là những gói tin có giá trị PID-1 nằm trong Bloom Filter BF1-PID. Giá trị PID của những gói tin có trạng thái S2 sẽ được lưu vào Bloom Filter BF2-PID. Một gói tin sẽ chuyển trạng thái khi tìm được giá trị PID-1 của gói tin đó trong BF0-PID và BF1- PID. Những gói tin ở trạng thái S2 được coi là gói tin giả mạo và tất cả các gói tin có giá trị tăng lên một đơn vị từ giá trị PID của gói tin có trạng thái S2 cuối cùng gửi đến hệ thống cũng sẽ là gói tin giả mạo.
Gọi Tc là khoảng thời gian tối đa để hệ thống nhận được gói tin tiếp theo. Do đó, mỡi gói tin gửi đến máy chủ sẽ giữ một trong ba trạng thái trong khoảng thời gian là Tto = 3*Tc. Nếu
trong khoảng thời gian Tto những gói tin ở trạng thái S0, S1 không đủ điều kiện chuyển sang trạng thại S2 thì những gói tin này được coi là gói tin thực.
Để xác định các tham số đầu vào cho thuật tốn Bloom Filter, chúng tơi thực hiện như sau: Trong nghiên cứu này, chúng tơi giả thuyết hệ thống có thể xử lý luồng tấn cơng DDoS có băng thông lên tới 10Gbps. Theo nghiên cứu của hãng SPIRENT, với băng thơng 10Gbps ta có thể nhận được khoảng 15 triệu packets/s. Để có thể xác định một gói tin là thực hay không, giải pháp cần thu thập ít nhất 03 đợt gói tin gửi đến hệ thống. Do đó, số lượng bit sử dụng trong mỡi Bloom Filter cần phải lưu trữ thông tin của 45 triệu giá trị.
Theo [2] chúng ta có thể xác định giá trị m (số lượng bit của Bloom Filter) theo công thức sau: 2 ln (ln 2) n p m (1)
Lựa chọn xác suất gây ra lỡi của thuật tốn Bloom Filter p = 0.05, số lượng giá trị lưu trong Bloom Filter n = 45.000.000, ta xác định được giá trị m = theo công thức (1) trên.
Số bit sử dụng cho hàm hash được xác định theo công thức sau:
ln 2
m k
n
(2)
Từ đó ta xác định được số bít sử dụng cho hàm băm là k theo công tức (2) ở trên.