CHƯƠNG 2: AN NINH CHO CẤU TRÚC CHỈ MỤC PHÂN TÁN
2.4. Tấn công định tuyến và phương pháp phòng chống
Tìm kiếm và định tuyến trong cấu trúc chỉ mục tại mỗi nút phụ thuộc nhiều vào sự liên kết giữa các nút xung quanh vì vậy việc đảm bảo an toàn cho quá trình định tuyến là yếu tố quan trọng nhất, kẻ tấn công có thể điều khiển một lượng nhỏ các nút nhiễm độc nhưng có thể gây ảnh hướng lớn đến hệ thống, hình 3.3 dưới đây cho thấy chỉ tối đa 20% nút nhiễm độc đã gây ảnh hưởng đến 60% sự thành công của các truy vấn
Hình 2.3. Ảnh hưởng của nút nhiễm độc đến sự thành công truy vấn
Có 2 phương pháp định tuyến dựa vào bảng chỉ mục: phương pháp lặp và đệ quy. Đệ quy là phương pháp mà một yêu cầu tra cứu xuất phát từ 1 nút, theo
0 10 20 30 40 50 60 70 80 90 100
0 5 10 15 20
Tỷ lệ thành công của truy vấn tìm kiếm
Tỷ lệ % nút nhiễm độc
bảng chỉ mục nó gửi yêu cầu này tới nút hàng xóm, các nút này lại tiếp tục gửi đi yêu cầu tới các nút khác cho đến khi tìm được nút đích, nghĩa là truy vấn được chuyển tiếp từ nút này đến nút khác, nút đích theo đường định tuyến đã định sẽ gửi hồi đáp về nút nguồn, nút nguồn không điều khiển quá trình tìm đường đến nút đích. Ngược lại, định tuyến lặp cho phép nút nguồn điều khiển quá trình tìm đường đến đích, khi phát ra yêu cầu truy vấn gửi tới 1 nút, nó sẽ đợi câu trả lời của nút đó về nút đến tiếp theo của truy vấn sau đó sẽ quyết định chuyển tiếp truy vấn. Nhược điểm của phương pháp lặp là tiêu tốn gấp 2 lần thời gian so với định tuyến đệ quy.
Cả 2 phương pháp định tuyến trên đều rất dễ bị tổn thương khi gặp phải nút nhiễm độc trên tuyến đường định tuyến. Nút nhiễm độc có thể không hồi đáp truy vấn, hoặc chuyển tiếp truy vấn đến 1 đích sai hoặc đến 1 nút nhiễm độc khác, ...
Nút bị nhiễm độc theo 1 cách tự nhiên, không cần nhắm đến lỗ hổng cấp phát định danh vì ban đầu chúng là các nút sạch nhưng bị kẻ tấn công lợi dụng biến chúng trở thành nút nhiễm độc.
Hình 2.4. Mô tả một kiểu tấn công định tuyến nhắm vào bảng chỉ mục Giải pháp chống lại tấn công định tuyến của [8] và giải pháp cải tiến [12]
áp dụng trên mạng Chord đã chứng minh được sự hiệu quả khi sử dụng kết hợp các phương pháp theo mô hình:
- Định tuyến tương tác: giám sát quá trình định tuyến đến đích.
- Xác thực mỗi bước chuyển tiếp truy vấn.
- Quay lui khi xác thực thất bại.
Tìm(Hanoi) Hash
Fuction Hash(Hanoi)
Return 1665
130-295
296-203
504-667 668-800
801-111
122-195 110-255
Host 142.21.63.157
1665: Hanoi 11: Kline 99-150
Lookup(1665) Return 66.65.66.65 Host
66.65.66.65 1665: Hanoi
2.4.1. Định tuyến tương tác
Theo thiết kế định tuyến trong Chord, mỗi nút sẽ dựa vào bảng chỉ mục của mình để chuyển các yêu cầu tra cứu, một nút nào đó có định danh trong bảng chỉ mục sẽ nhận được yêu cầu tra cứu từ nút nguồn, chúng tiếp tục chuyển yêu cầu đó tới các nút tiếp theo, quá trình được lặp lại cho đến khi gặp nút đích là successor của khóa muốn tìm. Như vậy nút nguồn chỉ trao yêu cầu tra cứu cho nút hàng xóm của mình, sau đó chờ kết quả mà không có bất cứ trao đổi hoặc điểu khiển nào với các nút hàng xóm. Đây chính là lỗ hổng mà kẻ tấn công sẽ nhắm vào để thay đổi kết quả truy vấn.
Để điều khiển, giám sát quá trình định tuyến thay vì việc trao truy vấn tới mỗi nút tham chiếu thì sử dụng phương pháp định tuyến có sự tương tác. Nút nguồn sẽ chuyển yêu cầu định tuyến cho các nút hàng xóm của nó, sau đó nhận thông tin chuyển tiếp sang nút mới từ các nút này, nút nguồn sẽ tự quyết định chuyển tiếp hay không qua quá trình xác thực.
2.4.2. Giá trị khoảng cách trung bình
Quá trình xác thực nút sẽ dựa trên sự tính toán giá trị khoảng cách trung bình giữa các nút liên tiếp nhau. Để tính giá trị trung bình, bảng chỉ mục giờ đây lưu thêm các thông tin định danh của các nút successor, predecessor. Đồng thời sử dụng cơ chế xén-tỉa để loại bỏ các khoảng cách tới những nút bị nhiễm độc (những nút bị nhiễm độc có xu hướng tạo ra các “khoảng cách” lớn hoặc nhỏ hơn khoảng cách trung bình). Trong suốt quá trình định tuyến sẽ sử dụng giá trị này để xác thực nút đích của mỗi bước chuyển của tuyến đường định tuyến. Nếu nút tiếp theo của tuyến đường định tuyến thất bại trong việc xác thực (có tỷ lệ cao là nút nhiễm độc) thì nút này sẽ được thêm vào danh sách đen, đồng thời tiến trình định tuyến sẽ lùi lại 1 nút trước nút hiện tại và tiếp tục định tuyến theo hướng mới
Nút khởi tạo truy vấn
Khoảng cách giữa các nút liên tiếp Nút tham chiếu trong bảng chỉ mục
Hình 2.5. Mô tả khái niệm khoảng cách trung bình giữa các nút 2.4.3. Quá trình xác thực
Một tính chất quan trọng trong cấu trúc chỉ mục phân tán là: gọi p, q là 2 nút liên tiếp nhau trên vòng tròn định danh, f là đích của chỉ mục sẽ trỏ vào khoảng giữa p và q, nếu |p - q| là khoảng cách giữa p, q thì f phải thỏa mãn công thức sau:
|p - f| ≤ |p - q| (1) và |q - f| ≤ |p - q| (2)
Hình 2.6. Mô tả quá trình xác định chỉ mục trỏ đến f
Trong mạng Chord kép, bảng chỉ mục phân tán tại mỗi nút gồm 2m-1 mục, với mỗi mục i sẻ trỏ vào nút đầu tiên gần nhất với giá trị fi = (id + 2i) mod 2m, chỉ mục fi sẽ trỏ vào nút f là nút successor của fi, fi trỏ vào khoảng từ nút f và predecessor(f) trên vòng tròn định danh. Để đảm bảo bước chuyển tiếp là hợp lệ thì nút f thỏa mãn công thức:
| fi – f | ≤ E(id) + α×σ (3)
trong đó E(id) là giá trị trung bình giữa các nút liên tiếp
σ: độ lệch chuẩn khi tiến hành lấy mẫu khoảng cách giữa các nút liên tiếp α: trọng số cho độ lệch chuẩn
Ngược lại, f sẽ coi là thất bại khi xác thực và bị đưa vào danh sách đen.
Việc xác thực này đã khiến kẻ tấn công không thể dễ dàng đánh lừa các nút nguồn, cô lập những nút độc hại và không thể chuyển tiếp đến nút nào khác ngoài nút đúng trên tuyến đường định tuyến.
Dưới đây là thủ tục xác thực mỗi nút là đích đến của quá trình chuyển tiếp truy vấn. Các tham số vào:
firstNodeID – định danh của nút mà chỉ mục sẽ trỏ đến,
secondNodeID – định danh của nút cuối trên tuyến định tuyến, AVG_DIST giá trị trung bình của các nút liên tiếp nhau
p q
predecessor(p)
n.verify_hop(firstNodeID, secondNodeID, indexUsed)
fingerPointer=(firstNodeID+pow(2,indexUsed))mod 2m dist=secondNodeID-fingerPointer mod 2m
acceptDist=AVG_DIS+(SD_MOD*STD_DIS) if(dist > acceptDist) return false else return true
end
2.4.4. Thuật toán quay lui
Để tìm kiếm/ định tuyến, nút nguồn cần chuyển tiếp truy vấn của mình tới nút tham chiếu trong bảng chỉ mục để tìm nút có định danh gần nhất so với định danh của khóa muốn tìm (nút successor). Nếu nút successor của khóa muốn tìm là một trong các nút tham chiếu của bảng chỉ mục, định danh nút này sẽ được gửi lại nút đặt truy vấn và quá trình tìm kiếm kết thúc. Ngược lại, truy vấn tiếp tục được gửi đi.
Khi yêu cầu truy vấn xuất hiện tại một nút nào đó, nó sẽ tìm nút thích hợp để chuyển yêu cầu truy vấn, nút sẽ nhận yêu cầu truy vấn này phải trải qua quá trình xác thực, kiểm tra. Giả sử nút này không vượt qua quá trình xác thực (theo thuật toán tại mục 2.4.3), nút trao yêu cầu truy vấn sẽ tìm đến nút liền kề với nút này và có định danh gần với định danh của khóa muốn tìm nhất trong bảng chỉ mục của mình, quá trình này gọi là thuật toán quay lui. Nút không vượt qua quá trình xác thực sẽ được thêm vào danh sách “đen” (black list) để tranh sử dụng lại.
Hình 2.7 dưới đây minh họa thuật toán quay lui, nút nguồn đặt yêu cầu truy vấn tìm nút đích cho nút cuối cùng (nút này có định danh gần nhất so với định danh khóa muốn tìm) trong bảng chỉ mục của mình với bước chuyển 1 (BC1). Nút này vượt qua quá trình xác thực và chuyển tiếp yêu cầu truy vấn từ nút nguồn cho nút tiếp theo với BC2. Qua quá trình xác thực xác định nút nhận yêu cầu truy vấn cho BC2 là hợp lệ, nó chuyển tiếp yêu cầu truy vấn cho nút tiếp theo với BC3, tuy nhiên nút này cung cấp bước chuyển tiếp nữa lại không vượt qua quá trình xác thực, nút đặt yêu cầu truy vấn thực hiện thuật toán quay lui, lựa chọn nút gần nhất với khóa muốn tìm qua BC4. Nút nhận yêu cầu truy vấn qua BC4 cung cấp bước
chuyển tiếp không hợp lệ, tiến trình quay lại với nút nhận yêu cầu truy vấn qua BC5. Từ nút này qua tìm kiếm đã tìm được nút đích.
BC 1
BC 2
Nút nguồn Nút đích
Bước chuyển tiếp truy vấn (BC) Nút nhiễm độc
Hình 2.7. Mô tả thuật toán quay lui