Luận văn Nghiên cứu một số phương pháp bảo mật trong mạng không dây MESH

Trong tất cả các dạng mạng thì bảo mật là một trong những nhân tố chính cho sự an toàn và tin cậy của việc truyền dữ liệu. Do tính chất của truyền dẫn không dây và sự phụ thuộc vào các nút trung gian trong định tuyến lưu lượng người dùng làm cho mạng không dây mesh rất dễ bị tấn công dưới nhiều dạng khác nhau. Các tấn công có thể thực hiện từ bên ngoài cũng như từ bên trong mạng.

pdf90 trang | Chia sẻ: lylyngoc | Lượt xem: 2953 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu một số phương pháp bảo mật trong mạng không dây MESH, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hực hiện các thay đổi trên, ta dùng các lệnh make clean, make để biên dịch lại NS2. 3.2.2. Thử nghiệm blackholeAODV Để thử nghiệm việc thực hiện giao thức blackholeAODV trong NS-2. Hai kịch bản được sử dụng để mô phỏng. Kịch bản thứ nhất không sử dụng nút Black Hole (nút thực hiện tấn công lỗ đen). Kịch bản thứ hai thêm vào nút Black Hole. Chương trình mô phỏng NAM (Network Animator) được sử dụng để so sánh kết quả giữa hai kịch bản mô phỏng. 3.2.2.1. Thông số và các số đo mô phỏng: Mô phỏng sử dụng giao thức UDP. Nút nguồn duy trì gửi các gói tin UDP, thậm chí cả khi nút độc hại loại bỏ chúng (trong khi đó nút sẽ gửi sẽ ngừng gửi gói tin nếu sử dụng giao thức TCP). Do đó, ta có thể quan sát được dòng kết nối giữa nút gửi và nút nhận trong quá trình mô phỏng. Thêm vào đó ta có thể tính riêng các gói tin gửi và nhận trong kết nối UDP không bị mất trong quá trình mô phỏng. Nếu sử dụng giao thức TCP trong kịch bản mô phỏng, ta không thể tính toán gói tin gửi và nhận khi nút bắt đầu kết nối TCP sẽ kết thúc kết nối sau một thời gian không nhận được gói tin TCP ACK. Kịch bản tạo ra một mạng nhỏ gồm 7 nút di động (đánh số từ 2 đến 8), 1 nút có dây (Nút 0) và 1 nút Base Station (Nút 1), trong đó nút có dây kết nối với nút Base Station qua một kết nối có dây. Mô phỏng tạo ra kết nối UDP giữa nút Base Station và Nút 3, gắn vào nguồn CBR (Constant Bit Rate) để sinh ra các gói tin không đổi cho kết nối UDP. Kích thước gói tin CBR là 512, tốc độ dữ liệu là 512kb. Trong khoảng thời gian 20 giây, nguồn CBR bắt đầu truyền vào khoảng thời gian 1 giây và tiếp tục truyền đến hết thời gian mô phỏng. Trong một không gian phẳng 500x500m. Vị trí của các nút được đặt thích hợp để - 57 - hiển thị dòng dữ liệu và mô phỏng thể hiện sự di chuyển của Nút 6 để chỉ ra sự thay đổi dòng dữ liệu trong mạng. 3.2.2.2. Đánh giá mô phỏng Kịch bản đầu tiên không có nút Black Hole, kết nối giữa Base Station và Nút 3 sử dụng giao thức AODV. Hình 3.5: Dữ liệu truyền từ Base Station đến nút 3 bằng giao thức AODV khi nút 6 di chuyển Trong kịch bản mô phỏng thứ hai, ta thêm nút Black Hole là Nút 2 trong file Tcl bằng 3 dòng lệnh sau: $ns_ node-config -adhocRouting blackholeAODV set node_(2) [ $ns_ node [lindex $temp 1] ] $node_(2) set X_ 50.0 $node_(2) set Y_ 420.0 $node_(2) set Z_ 0.0 $ns_ node-config -adhocRouting $opt(adhocRouting) for {set j 3} {$j < [expr $val(nn)+ 2]} {incr j} { set node_($j) [ $ns_ node [lindex $temp [expr $j- 1]] ] } - Dòng lệnh “$ns node-config -adhocRouting blackholeAODV” nhằm thêm giao thức blackholeAODV để tạo nút. - Dòng lệnh thứ hai: định nghĩa Nút 2 là nút Black Hole - Dòng lệnh thứ ba: chuyển sang tạo các nút bằng giao thức AODV. Nút 2 là nút Black Hole hấp thụ tất cả các gói tin từ đường truyền từ nút Base Station đến nút 3. Hình dưới đây chỉ ra cách nút blackholeAODV hấp thụ lưu lượng truyền. - 58 - Hình 3.6: Nút 2 (nút Black Hole) hấp thụ kết nối từ Base Station đến nút 3 3.3. Giải pháp chống lại tấn công lỗ đen và hiệu quả của nó 3.3.1. Ý tưởng thực hiện Ở phần trước đã trình bày tấn công lỗ đen, thực hiện tấn công mô phỏng trên NS-2 và trình bày kết quả đạt được của tấn công. Khi kiểm tra tệp vết (trace file) của mô phỏng trong đó có 1 nút Black Hole ta nhận thấy một thời gian sau khi thông báo RREP thứ nhất (thông báo của nút Back Hole) đến nút nguồn thì thông báo RREP thứ hai đến nút nguồn là thông báo của nút đích thực sự. Qua phân tích tệp vết của kịch bản mô phỏng ở Hình 3.6, với Nút Base Station là nút gửi, Nút 3 là nút nhận và Nút 2 là nút Black Hole. Trong bảng dưới đây, ta dễ dàng nhận thấy có hai thông báo RREP. Thông báo thứ nhất gửi từ nút Blackhole (Nút 2) đến nút nguồn tại thời điểm 1.004809200s. Thông báo thứ hai gửi từ nút đích (Nút 3) đến nút nguồn tại thời điểm 1.080309923s. s -t 1.004809200 -Hs 2 -Hd 4194304 -Ni 2 -Nx 50.00 -Ny 420.00 -Nz 0.00 -Ne -1.000000 -Nl MAC -Nw --- -Ma 13a -Md 0 -Ms 1 -Mt 800 -Is 4194305.255 -Id 4194304.255 -It AODV -Il 102 -If 0 -Ii 0 -Iv 30 -P aodv -Pt 0x4 -Ph 1 -Pd 4194306 -Pds -1 -Pl 10.000000 -Pc REPLY ... s -t 1.080309923 -Hs 3 -Hd 4194311 -Ni 3 -Nx 480.00 -Ny 50.00 -Nz 0.00 -Ne -1.000000 -Nl MAC -Nw --- -Ma 13a -Md 7 -Ms 2 -Mt 800 -Is 4194306.255 -Id 4194304.255 -It AODV -Il 102 -If 0 -Ii 0 -Iv 30 -P aodv -Pt 0x4 -Ph 1 -Pd 4194306 -Pds 4 -Pl 10.000000 -Pc REPLY Khi nút Black Hole gửi thông báo RREP không cần kiểm tra bảng định tuyến, ta giả định rằng nhiều khả năng thông báo RREP đầu tiên sẽ đến từ nút Black Hole. Trong một số - 59 - trường hợp, ý tưởng này không thực hiện được. Ví dụ, thông báo RREP thứ hai có thể được tiếp nhận ở nút nguồn từ một nút trung gian nào đó mà thông tin không đủ mới (fresh) về nút đích hoặc thông báo RREP thứ hai có thể là thông báo đến từ nút Black Hole nếu nút đích thực sự của nó gần nút nguồn hơn nút Black Hole. Các ví dụ này có thể mở rộng với điều kiện cấu trúc nút mạng như trên. Do vậy, phương pháp này cố gắng tìm cách giảm thiểu hiệu ứng lỗ đen trong các mạng AODV nếu nó làm giảm hiệu suất mạng. 3.3.2. Cài đặt giao thức giải pháp trên NS-2 Hiệu quả của chống lại tấn công lỗ đen được đánh giá dựa trên bộ mô phỏng NS-2. Giao thức AODV được sao chép và đổi tên thành “idsaodv” giống như thực hiện giao thức “blackholeaodv” trước đó. Để thực hiện giao thức blackholeAODV, ta thay đổi hàm nhận RREQ (recvRequest) của file blackholeaodv.cc; nhưng để thực hiện giải pháp cho giao thức idsAODV ta thay đổi hàm nhận RREP (recvReply) và tạo ra cơ chế đệm cho RREP để đếm thông báo RREP thứ hai. Đoạn mã dưới đây thể hiện cơ chế đệm RREP. Hàm “rrep_insert” dùng để thêm thông báo RREP, hàm “rrep_lookup” dùng để tìm kiếm bất kỳ thông báo RREP nào nếu nó tồn tại, hàm “rrep_remove” dùng để gỡ bỏ bất kỳ thông báo RREP nào đến từ một nút xác định và hàm “rrep_purge” dùng để xoá định kỳ danh sách đã hết hạn (nếu có). Trong trường hợp này chọn thời gian “BCAST_ID_SAVE” là 6 (có nghĩa là 3 giây). void idsAODV::rrep_insert(nsaddr_t id) { idsBroadcastRREP *r = new idsBroadcastRREP(id); assert(r); r->expire = CURRENT_TIME + BCAST_ID_SAVE; r->count ++; LIST_INSERT_HEAD(&rrephead, r, link); } idsBroadcastRREP * idsAODV::rrep_lookup(nsaddr_t id) { idsBroadcastRREP *r = rrephead.lh_first; for( ; r; r = r->link.le_next) { if (r->dst == id) return r; } return NULL; } void idsAODV::rrep_remove(nsaddr_t id) { idsBroadcastRREP *r = rrephead.lh_first; for( ; r; r = r->link.le_next) { if (r->dst == id) LIST_REMOVE(r,link); delete r; break; } } void idsAODV::rrep_purge() { idsBroadcastRREP *r = rrephead.lh_first; - 60 - idsBroadcastRREP *rn; double now = CURRENT_TIME; for(; r; r = rn) { rn = r->link.le_next; if(r->expire <= now) { LIST_REMOVE(r,link); delete r; } } } Trong hàm “recvReply”, đầu tiên ta kiểm soát nếu thông báo RREP đến chính nó. Nếu đúng, hàm sẽ tìm kiếm thông báo RREP nếu nó tồn tại; nếu không, nó chèn thông báo thông báo RREP cho địa chỉ đích của nó và trả về hàm. Nếu thông báo RREP được lưu trữ trước đó có cùng địa chỉ đích, hàm RREP thông thường được thực hiện. Sau đó, nếu thông báo RREP không dành cho chính nó, nút sẽ chuyển tiếp thông báo đến nút lân cận thích hợp. Đoạn mã sau đây thể hiện cách hàm nhận thông báo RREP của giao thức idsAODV thực hiện: idsAODV::recvReply(Packet *p) { idsBroadcastRREP * r = rrep_lookup(rp->rp_dst); if(ih->daddr() == index) { if (r == NULL) { count = 0; rrep_insert(rp->rp_dst); } else { r->count ++; count = r->count; } CẬP NHẬT BẢNG ĐỊNH TUYẾN } else { Forward(p); } } 3.3.3. Thử nghiệm giao thức idsAODV Giao thức idsAODV được thực hiện trên bộ mô phỏng NS-2 với kịch bản 7 nút cố định và vị trí nút tương tự như kịch bản của hình 3.6. Trong mô phỏng này, giao thức idsAODV được sử dụng thay cho giao thức AODV áp dụng cho tất cả các nút không dây kể cả nút Base Station trừ nút Black Hole (Nút 2). Để chuyển giao thức AODV thành idsAODV ta chỉ cần thay đổi dòng lệnh “$ns node-config -adhocRouting idsAODV”. Khi mô phỏng được thực hiện, ta sẽ nhận thấy nút gửi gửi thông báo đến nút nhận đúng cách. Hình 3.7 dưới đây cho biết các gói tin CBR đã đến đích như mong đợi. - 61 - Hình 3.7: Kết quả thực hiện giao thức idsAODV khi có tấn công blackhole 3.4. Mô phỏng và phân tích kết quả. Qua phần thử nghiệm hai giao thức blackholeAODV và giao thức idsAODV ở phần trên cho thấy hai giao thức cài đặt thêm vào hoạt động đúng như mong đợi. Tuy nhiên, với việc thực hiện trên một mạng nhỏ với 7 nút và 1 Base Station cũng như các nút đặt ở những vị trí xác định trước sẽ không thể hiện rõ được ảnh hưởng của tấn công lỗ đen lên mạng không dây mesh cũng như hiệu quả của giao thức phòng ngừa tấn công lỗ đen trên các mạng này. Các kịch bản dưới đây được xây dựng mô phỏng một mạng không dây mesh với nhiều nút di động và nhiều trạm cơ sở hơn. Kịch bản cố gắng xây dựng một mạng “thật” nhất qua đó đánh giá hiệu quả của các giao thức được cài đặt qua tỉ lệ gửi và nhận gói tin đồng thời tính toán số lượng gói tin bị loại bỏ do tấn công lỗ đen. Từ đó đưa ra kết luận về ảnh hưởng của tấn công lỗ đen trên giao thức AODV sử dụng cho mạng không dây mesh và hiệu quả của giao thức ngăn chặn tấn công lỗ đen khi thay cho giao thức AODV trên các mạng này. 3.4.1. Các tham số mô phỏng Kịch bản mô phỏng được thiết kế trên một không gian phẳng diện tích 1000m × 1000m với 4 nút có dây nối với 4 nút không dây làm Base Station. Các nút này được đặt ở những vị trí xác định trong mạng. Ngoài ra, có 50 nút được tạo ra với vị trí đặt tại các toạ độ khác nhau và chuyển động khác nhau với mục đích mô phỏng các mesh router và mesh client trong mạng không dây mesh. - 62 - Các kết nối được thiết lập giữa các nút nhằm mô phỏng sự truyền dữ liệu giữa các nút trong mạng không dây mesh. Trong đó: - 4 kết nối từ 4 Base Station đến các nút tương ứng từ 0 đến 3: BS0 → N(0); BS1 → N(1); BS2 → N(2); BS3 → N(3). Các thực thể UDP được gắn vào các Base Station và các thực thể NULL được gắn vào các nút từ 0 đến 3. - 21 kết nối giữa các nút với nhau từ nút 4 đến nút 45 trong đó các nút chẵn gửi dữ liệu đến các nút lẻ có số ngay sau nó theo từng cặp tương ứng: N(4) → N(5); N(6) → N(7); N(8) → N(9); … ; N(44) → N(45). Các thực thể UDP được gắn vào các nút chẵn và các thực thể NULL được gắn vào các nút lẻ. - 4 nút N(46), N(47), N(48), N(49) không kết nối với nút nào trong mạng. Các nút này chỉ thực hiện chức năng chuyển tiếp dữ liệu khi mô phỏng mạng với các giao thức AODV và idsAODV hoặc được cài đặt giao thức blackholeAODV trong các tấn công lỗ đen. Nguồn CBR (Constant Bit Rate) được gắn vào các thực thể UDP để sinh ra các gói lưu lượng không đổi. Thời lượng kết nối là 500s và nguồn CBR bắt đầu từ giây thứ hai đến giây thứ 450. Thông số của nguồn CBR bao gồm: - Kích thước gói tin: 512 bytes. - Tốc độ truyền 10kb. - Không sử dụng gói tin ngẫu nhiên trong mô phỏng. Tất cả các kết nối UDP luôn giống nhau giữa các nút. Trong từng kịch bản, từng nút được đặt tại các toạ độ khác nhau và thực hiện các chuyển động khác nhau. Điều này giúp cho việc đưa ra các kết quả khác nhau với vị trí nút và chuyển động được sinh ra ngẫu nhiên bởi lệnh “./setdest” trong NS2. Có 5 file movement pattern được sinh ra bởi lệnh “./setdest” với 50 nút được đặt ngẫu nhiên trong không gian phẳng 1000m × 1000m, tốc độ di chuyển tối đa 10m/s trong khoảng thời gian 500s. Mỗi kịch bản mô phỏng sẽ sử dụng 5 file này làm thông số cho vị trí và sự chuyển động của 50 nút di động. Các lệnh sinh ra file movement pattern được thực hiện như sau: ./setdest -v 1 -n 50 -p 2.0 -M 10.0 -t 500 -x 1000 -y 1000 > meshnode_1 ./setdest -v 1 -n 50 -p 2.0 -M 10.0 -t 500 -x 1000 -y 1000 > meshnode_2 ./setdest -v 1 -n 50 -p 2.0 -M 10.0 -t 500 -x 1000 -y 1000 > meshnode_3 ./setdest -v 1 -n 50 -p 2.0 -M 10.0 -t 500 -x 1000 -y 1000 > meshnode_4 ./setdest -v 1 -n 50 -p 2.0 -M 10.0 -t 500 -x 1000 -y 1000 > meshnode_5 Các nút có dây được tạo ra bởi các lệnh sau: set W(0) [$ns_ node [lindex 0.0.0]] set W(1) [$ns_ node [lindex 0.0.1]] - 63 - set W(2) [$ns_ node [lindex 0.0.2]] set W(3) [$ns_ node [lindex 0.0.3]] Các nút Base Station và các nút di động trong mạng được cấu hình tương tự nhau. Tuy nhiên, do các nút Base Station kết nối với các nút có dây nên cấu hình wiredRouting là ON. Trường hợp cấu hình các nút di động, wiredRouting được chuyển sang OFF. set opt(chan) Channel/WirelessChannel ;# channel type set opt(prop) Propagation/TwoRayGround ;# radio-propagation model set opt(netif) Phy/WirelessPhy ;# network interface type set opt(mac) Mac/802_11 ;# MAC type set opt(ifq) Queue/DropTail/PriQueue ;# interface queue type set opt(ll) LL ;# link layer type set opt(ant) Antenna/OmniAntenna ;# antenna model set opt(ifqlen) 50 ;# max packet in ifq set opt(adhocRouting)AODV hoặc idsAODV ;# routing protocol Cấu hình nút mạng cho Base Station và nút di động $ns_ node-config -adhocRouting $opt(adhocRouting) \ -llType $opt(ll) \ -macType $opt(mac) \ -ifqType $opt(ifq) \ -ifqLen $opt(ifqlen) \ -antType $opt(ant) \ -propType $opt(prop) \ -phyType $opt(netif) \ -channelType $opt(chan) \ -topoInstance $topo \ -wiredRouting ON \ -agentTrace OFF \ -routerTrace OFF \ -macTrace ON # hierachical address to be used for wireless domain set temp {1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53} # Create Base-Station set BS(0) [$ns_ node [lindex $temp 0]] $BS(0) random-motion 0 ;# disable random motion set BS(1) [$ns_ node [lindex $temp 1]] $BS(1) random-motion 0 ;# disable random motion set BS(2) [$ns_ node [lindex $temp 2]] $BS(2) random-motion 0 ;# disable random motion set BS(3) [$ns_ node [lindex $temp 3]] $BS(3) random-motion 0 ;# disable random motion Tạo các nút Base Station Các nút di động trong mô phỏng được tạo ra bởi lệnh vòng lặp “for”. Trước khi thực hiện các lệnh này, câu lệnh “$ns_ node-config -wiredRouting OFF” được thực hiện để huỷ bỏ định tuyến có dây. Trong các kịch bản không có tấn công lỗ đen, tất cả 50 nút được tạo ra với giao thức được định trước là AODV hoặc idsAODV. Đoạn mã tạo ra các nút như sau: #configure for mobilenodes $ns_ node-config -wiredRouting OFF for {set j 0} {$j < $val(nn)} {incr j} { - 64 - set node_($j) [ $ns_ node [lindex $temp [expr $j + 4]] ] $node_($j) random-motion 0 } Tạo các nút di động Trong các kịch bản có tấn công lỗ đen, vòng lặp đầu tiên sinh ra 46 nút sử dụng đoạn code như hình dưới. Lệnh “$ns_ node-config -adhocRouting blackholeAODV” thay đổi giao thức định tuyến cấu hình nút thành nút blackholeAODV. Sau lệnh này, vòng lặp thứ hai tạo ra 4 nút cuối. f$ns_ node-config -wiredRouting OFF for {set j 0} {$j < 46} {incr j} { set node_($j) [ $ns_ node [lindex $temp [expr $j + 4]] ] $node_($j) random-motion 0 } #====Set blackhole nodes======================================= $ns_ node-config -adhocRouting blackholeAODV for {set i 46} {$i < $val(nn)} {incr i} { set node_($i) [$ns_ node [lindex $temp [expr $i + 4]] ] $node_($i) random-motion 0 ;#disable random motion $ns_ at 0.01 "$node_($i) label \"blackhole node\"" } Tạo các nút di động và nút blackhole Hình 3.8: Một kịch bản mô phỏng mạng - 65 - 3.4.2. Phân tích kết quả mô phỏng 3.4.2.1. Phân tích tệp vết Tệp vết của chương trình mô phỏng có phần mở rộng là tr. Tệp vết bao gồm tất cả các sự kiện trong chương trình mô phỏng như khi gửi gói tin, nút nào sinh ra chúng, nút nào nhận được, dạng gói tin gửi đi, tại sao nó bị loại bỏ (nếu bị loại bỏ). Kịch bản mô phỏng này sử dụng dạng file “new-trace” được đặc biệt sử dụng trong các mạng không dây và bao gồm thông tin chi tiết về các sự kiện. Để nhận được kết của quả tệp vết, ta cần loại sự kiện tại Field 0; node id (-Ni) và cấp độ vết (-Nl) ở Field 4; địa chỉ nguồn, địa chỉ đích và loại gói tin ở Field 5. Với tất cả các đầu ra, ta chỉ cần: - Giá trị “s” ở Field 0, đếm bao nhiêu gói tin CBR được gửi bởi nút gửi. - Giá trị “r” ở Field 0, đếm bao nhiêu gói tin CBR được nhận bởi nút nhận. - Giá trị “node id” của thông tin về id của nút ở Field 4, là id của nút gửi hoặc nút nhận. - Giá trị “MAC” của thông tin cấp độ vết ở Field 4, dùng để lọc địa chỉ MAC. - Giá trị “source address” và “destination address” của thông tin địa chỉ nút nguồn và nút đích ở Field 5, để đếm số gói tin đến từ nút gửi đến nút nhận. - Giá trị “cbr” của thông tin về loại gói tin ở Field 5, dùng để lọc gói tin CBR. s -t 50.171961661 -Hs 16 -Hd 4194355 -Ni 16 -Nx 731.22 -Ny 677.03 -Nz 0.00 -Ne -1.000000 -Nl MAC -Nw --- -Ma 13a -Md 33 -Ms c -Mt 800 -Is 4194316.0 -Id 4194317.0 -It cbr -Il 590 -If 0 -Ii 3006 -Iv 30 -Pn cbr -Pi 120 -Pf 0 -Po 0 r -t 50.176670144 -Hs 19 -Hd 4194319 -Ni 19 -Nx 349.85 -Ny 176.81 -Nz 0.00 -Ne -1.000000 -Nl MAC -Nw --- -Ma 13a -Md f -Ms 10 -Mt 800 -Is 4194320.0 -Id 4194321.0 -It cbr -Il 532 -If 0 -Ii 3008 -Iv 30 -Pn cbr -Pi 120 -Pf 1 -Po 0 Để lọc các thông tin này, ta sử dụng lệnh “grep” trong UNIX để đọc file được sinh ra bởi lệnh “cat” và cho đầu ra của nó làm đầu vào của lệnh “wc” (word count) để đếm thông tin được lọc và ghi vào file mới. Ví dụ: - Đếm số gói tin CBR được gửi bởi Nút i và nút nhận là Nút j ta sử dụng lệnh: s=`grep "s $l MAC --- ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` - Đếm số gói tin CBR được nhận bởi Nút j và nút gửi là Nút i ta sử dụng lệnh: r=`grep "r $m MAC --- ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` Từ số lượng gói tin gửi và số lượng gói tin nhận, ta tính được số gói tin bị mất dựa trên phép trừ số lượng gói tin. Tất cả các lệnh tính số gói tin này trên tất cả các nút được tính toán và tích hợp trên một file batch (.sh) được trình bày trong phần phụ lục. - 66 - 3.4.2.2. Phân tích kết quả: Qua 5 kịch bản mô phỏng với việc tính toán tỷ lệ gói tin bị mất khi sử dụng hai giao thức AODV và idsAODV có tấn công/không có tấn công lỗ đen, kết quả mô phỏng thể hiện như sau: - Khi thực hiện tấn công lỗ đen trên mạng sử dụng giao thức AODV ta nhận thấy tỉ lệ gói tin bị mất tăng lên rất nhiều so với khi không bị tấn công lỗ đen. Điều này cũng cho thấy ảnh hưởng của tấn công lỗ đen đến kết nối của toàn mạng và số lượng tấn công lỗ đen tăng thì tỉ lệ mất gói tin cũng tăng lên. - Khi sử dụng giao thức idsAODV thay cho giao thức AODV, trên các kịch bản tương tự, tỉ lệ mất gói tin khi có tấn công lỗ đen cũng giảm xuống. Tuy nhiên, trong trường hợp không có tấn công lỗ đen, tỉ lệ mất gói tin của idsAODV lại cao hơn của AODV. Bảng tổng kết dưới đây cho biết kết quả của việc áp dụng tấn công lỗ đen vào giao thức AODV và khi áp dụng giao thức idsAODV chống lại tấn công lỗ đen: BẢNG SO SÁNH TỈ LỆ MẤT GÓI TIN SỬ DỤNG GIAO THỨC AODV KHI KHÔNG CÓ VÀ CÓ TẤN CÔNG BLACK HOLE Kịch bản Giao thức AODV không có tấn công Blackhole Giao thức AODV có tấn công Blackhole Tăng lên Kịch bản 1 18.85% 94.97% 76.12% Kịch bản 2 26.01% 97.31% 71.30% Kịch bản 3 16.74% 98.50% 81.76% Kịch bản 4 22.90% 98.49% 75.59% Kịch bản 5 24.22% 98.59% 74.37% Trung bình 21.75% 97.57% 75.82% BẢNG SO SÁNH TỈ LỆ MẤT GÓI TIN SỬ DỤNG GIAO THỨC IDSAODV KHI KHÔNG CÓ VÀ CÓ TẤN CÔNG BLACK HOLE Kịch bản Giao thức idsAODV không có tấn công Blackhole Giao thức idsAODV có tấn công Blackhole Tăng lên Kịch bản 1 25.21% 92.96% 67.75% Kịch bản 2 35.15% 93.23% 58.08% Kịch bản 3 25.67% 91.40% 65.73% Kịch bản 4 29.08% 91.89% 62.81% Kịch bản 5 24.22% 93.09% 68.87% Trung bình 27.87% 92.51% 64.65% BẢNG SO SÁNH TỈ LỆ GÓI TIN BỊ LOẠI BỎ BỞI CÁC NÚT BLACKHOLE KHI SỬ DỤNG GIAO THỨC AODV VÀ IDSAODV - 67 - Kịch bản Sử dụng giao thức AODV Sử dụng giao thức idsAODV Giảm xuống Kịch bản 1 48.84% 23.27% 25.57% Kịch bản 2 58.03% 24.87% 33.16% Kịch bản 3 53.40% 25.48% 27.92% Kịch bản 4 50.75% 27.32% 23.43% Kịch bản 5 54.21% 22.49% 31.73% Trung bình 53.05% 24.69% 28.36% Từ bảng kết quả tính toán ở trên, ta dễ dàng nhận thấy khi không có tấn công lỗ đen, việc áp dụng giao thức AODV hiệu quả hơn so với việc áp dụng giao thức idsAODV. Điều này có được là do giao thức AODV áp dụng triệt để đường định tuyến ngắn nhất dựa trên việc sử dụng thông báo RREP đầu tiên trong khi giao thức idsAODV sử dụng thông báo RREP thứ hai nếu nó đến nằm trong khoảng thời gian định trước. Tuy nhiên, khi có tấn công lỗ đen thì việc sử dụng giao thức idsAODV thay cho giao thức AODV sẽ đem lại hiệu quả hơn nhiều do cơ chế sử dụng thông báo RREP thứ hai. Do vậy, việc cân nhắc sử dụng giao thức nào trong từng trường hợp cụ thể để đạt được hiệu quả cao nhất cho hiệu suất của mạng là vấn đề người dùng cần cân nhắc và quyết định. - 68 - KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI Mạng không dây mesh đang nổi lên như là một công nghệ đầy hứa hẹn cho các công nghệ mạng thế hệ tiếp theo với tính linh động, khả năng thích nghi cao và kiến trúc tự cấu hình lại trong khi đưa các giải pháp hiệu quả về chi phí cho người cung cấp dịch vụ. Mạng không dây mesh có nhiều thuận lợi so với các mạng không dây khác trong việc cài đặt đơn giản, năng lực của băng thông và khả năng kháng lỗi vốn có trong trường hợp mạng bị lỗi. Triển khai mạng không dây mesh cũng khá đơn giản. Chúng tự cấu hình và tự tổ chức một cách tự động với các nút có sẵn trong mạng bởi việc tự động thiết lập và duy trì kết nối mạng dựa trên các nút vì vậy mạng không dây mesh mang lại vùng dịch vụ tin cậy trong mạng. Trong tất cả các dạng mạng thì bảo mật là một trong những nhân tố chính cho sự an toàn và tin cậy của việc truyền dữ liệu. Do tính chất của truyền dẫn không dây và sự phụ thuộc vào các nút trung gian trong định tuyến lưu lượng người dùng làm cho mạng không dây mesh rất dễ bị tấn công dưới nhiều dạng khác nhau. Các tấn công có thể thực hiện từ bên ngoài cũng như từ bên trong mạng. Một số lỗ hổng tồn tại trong các giao thức dùng cho mạng không dây mesh có thể bị lợi dụng bởi những kẻ tấn công nhằm làm giảm hiệu suất của mạng trong đó tấn công lỗ đen (black hole) là một ví dụ điển hình. Đề tài "Nghiên cứu một số phương pháp bảo mật trong mạng không dây mesh" là một đề tài khá mới mẻ ở Việt Nam và chưa có nhiều khai thác, ứng dụng. Đề tài đã lần lượt tìm hiểu những kiến thức về mạng không dây mesh như: khái niệm, kiến trúc, đặc điểm và các ứng dụng,... nhằm làm rõ các đặc trưng của mạng không dây mesh so với các công nghệ mạng không dây hiện có. Phần hai của đề tài tập trung nghiên cứu các vấn đề liên quan đến bảo mật trong mạng không dây mesh bao gồm: Các dạng tấn công có thể thực hiện trên mạng không dây mesh và các phương pháp chống lại các dạng tấn công này. Phần này của luận văn cũng đánh giá một số giao thức bảo mật đã được đề xuất áp dụng cho mạng không dây mesh. Phần ba của đề tài trình bày chi tiết một dạng tấn công trong mạng không dây mesh là tấn công lỗ đen (black hole) trên giao thức định tuyến AODV. Trong phần này ngoài việc giải thích cơ chế hoạt động của giao thức AODV và phương thức tấn công lỗ đen trên giao thức AODV, phần thực nghiệm đã mô phỏng các tấn công này trên bộ mô phỏng NS- 2.34. Từ những đánh giá sự ảnh hưởng của tấn công lỗ đen trên giao thức, đề tài đã đề xuất một phương pháp chống lại tấn công lỗ đen trên giao thức AODV bằng cách tạo ra một giao thức mới dựa trên giao thức AODV gọi là giao thức idsAODV. Bằng việc áp dụng giao thức này thay cho giao thức AODV và thực hiện mô phỏng tấn công lỗ đen trên giao thức đã đề xuất, đề tài đã đánh giá được hiệu quả của giao thức idsAODV trong việc chống lại các tấn công lỗ đen. Tuy nhiên, giao thức đề xuất cũng không tránh khỏi một số hạn chế như việc áp dụng - 69 - giao thức idsAODV sẽ không hiệu quả hơn giao thức AODV trong trường hợp không có tấn công lỗ đen hoặc tấn công lỗ đen không ảnh hưởng đến các nút đang truyền dữ liệu. Do đó, việc áp dụng giao thức nào để đạt được hiệu quả tối ưu nhất cho hiệu năng hoạt động của mạng vẫn còn phụ thuộc vào người dùng. Từ những ưu điểm và hạn chế của giao thức đề xuất ở trên, hướng nghiên cứu tiếp theo của đề tài sẽ tập trung vào một số vấn đề sau đây: - Nghiên cứu hoàn thiện giao thức đã đề xuất nhằm nâng cao hiệu quả định tuyến chống lại tấn công black hole trên giao thức AODV và các giao thức khác . - Nghiên cứu đề xuất thêm giao thức chống lại tấn công greyhole trên giao thức AODV. - Nghiên cứu, xây dựng, triển khai và đánh giá hiệu quả của giao thức idsAODV trên các mạng thực. - 70 - TÀI LIỆU THAM KHẢO Tiếng Việt [1] Nguyễn Đại Thọ (2009), Bài giảng An toàn mạng, Trường Đại học Công nghệ - Đại học Quốc gia Hà Nội. [2] Nguyễn Đình Việt (2009), Bài giảng đánh giá hiệu năng mạng máy tính, Trường Đại học Công nghệ - Đại học quốc gia Hà Nội. Tiếng Anh [3] F. Akyildiz, X. Wang, and W. Wang (2005). “Wireless mesh networks: a survey”, Journal of Computer Networks, Vol 47, No 4, pp. 445 – 487. [4] M. Al-Shurman, S. Yoo, and S. Park (2004), “Black hole attack in mobile ad hoc networks”, Proceedings of the 42nd Annual Southeast Regional Conference, Huntsville, Alabama, April 2004. [5] Semih Dokurer, Y. M. Erten, Can Erkin Acar (2007), “Performance analysis of ad hoc networks under black hole attacks”, SoutheastCon, 2007. Proceedings. IEEE. [6] A.Gerkis (2006), “A Survey of Wireless Mesh Networking Security Technology and Threats”, SANS Institute InfoSec Reading Room. [7] Changhua He and John C. Mitchell (2004), “Analysis of the 802.11i 4-way hand- shake”, WiSEı04, Philadelphia. [8] Jaydip Sen (2011), “Secure Routing in Wireless Mesh Networks”, Cryptography andSecurity (cs.CR); Networking and Internet Architecture (cs.NI), Innovation Lab, Tata Consultancy Services Ltd, India. [9] Arunesh Mishra and A. William Arbaugh (2002), “An Initial Security Analysis of the IEEE 802.1X Standard”, Technical report CS-TR-4328, Department of Computer Science, University of Maryland, February 2002. [10] Anjum Naveed and Salil S. Kanhere (2006), “Security vulnerabilities in channel assignment of multi-radio multi-channel wireless mesh networks”, Proceedings of IEEE GLOBECOM, November 2006. [11] P. Nicopolitidis, M. S. Obaidat, G. I. Papadimitriou and A. S. Pomportsis (2003), Wireless NetWorks, John Wiley & Sons Ltd. [12] C. E. Perkins and E. M. Royer (1999), “Ad Hoc On-Demand Distance Vector Routing”, Proceedings of IEEE Workshop on Mobile Computing Systems and Applications. [13] Sanjay Ramaswamy, Huirong Fu, Manohar Sreekantaradhya, John Dixon and Kendall E. Nygard (2003), “Prevention of cooperative black hole attacks in wireless ad hoc networks”, International Conference on Wireless Networks. [14] Naouel Ben Salem, Jean-Pierre Hubaux (2010), “Securing Wireless Mesh Networks”, Laboratory of Computer Communications and Applications (LCA) EPFL – Lausanne, Switzerland. [15] Mihail L. Sichitiu (2006), “Wireless Mesh Networks Challenges and - 71 - Opportunities”, Electrical and Computer Eng. Dept.NC State University, Raleigh, NC, USA. [16] Muhammad Shoaib Siddiqui, Choong Seon Hong (2007), “Security Issues in Wireless Mesh Networks”, 2007 International Conference on Multimedia and Ubiquitous Engineering (MUE’07). [17] D. Whiting, R. Housley, and N. Ferguson (2003), “Counter with CBC-MAC (CCM)”, RFC 3610. [18] Yan Zhang, Jun Zheng, Honglin Hu (2008), "Auerbach Security in Wireless Mesh Networks, CRC Press, Auerbach Publications, Taylor & Francis Group 6000 Broken Sound Parkway NW, Suite 300 Boca Raton. [19] IEEE Std. 802.11i-2004, Wireless Medium Access Control (MAC) and Physical Layer (PHY) Specifications: Medium Access Control (MAC) Security Enhancements, July 2004, 2004.pdf. [20] Wireless Mesh Networks, [21] - 72 - PHỤ LỤC PHỤ LỤC 1: File Tcl mô phỏng cho mạng 7 nút (Hình 3.5, 3.6, 3.7) # Define options # ====================================================================== set opt(chan) Channel/WirelessChannel ;# channel type set opt(prop) Propagation/TwoRayGround ;# radio-propagation model set opt(netif) Phy/WirelessPhy ;# network interface type set opt(mac) Mac/802_11 ;# MAC type set opt(ifq) Queue/DropTail/PriQueue ;# interface queue type set opt(ll) LL ;# link layer type set opt(ant) Antenna/OmniAntenna ;# antenna model set opt(ifqlen) 50 ;# max packet in ifq set opt(nn) 7 ;# number of mobilenodes set opt(adhocRouting) AODV (hoặc idsAODV) ;# routing protocol set val(nn) 7 ;# total number of mobilenodes set val(nnaodv) 7 ;# number of AODV mobilenodes set opt(cp) "" ;# connection pattern file set opt(sc) "" ;# ncen-3-testode movement file. set opt(x) 500 ;# x coordinate of topology set opt(y) 500 ;# y coordinate of topology set opt(seed) 0.0 ;# seed for random number gen. set opt(stop) 20 ;# time to stop simulation set val(cstop) 19 #------------------------------------------------------------------------ # check for boundary parameters and random seed if { $opt(x) == 0 || $opt(y) == 0 } { puts "No X-Y boundary values given for wireless topology\n" } if {$opt(seed) > 0} { puts "Seeding Random number generator with $opt(seed)\n" ns-random $opt(seed) } #----------------------------------------------------------------------- # create simulator instance set ns_ [new Simulator] # set up for hierarchical routing $ns_ node-config -addressType hierarchical AddrParams set domain_num_ 2 ;# number of domains lappend cluster_num 1 1 ;# number of clusters in each domain AddrParams set cluster_num_ $cluster_num lappend eilastlevel 1 8 ;# number of nodes in each cluster AddrParams set nodes_num_ $eilastlevel ;# of each domain #----------------------------------------------------------------------- $ns_ use-newtrace set tracefd [open mtest.tr w] #$ns_ trace-all $tracefd $ns_ trace-all $tracefd #line defines the number of nodes in each of these clusters which is "1 1 8" set namtrace [open mtest.nam w] $ns_ namtrace-all-wireless $namtrace $opt(x) $opt(y) #----------------------------------------------------------------------- - 73 - # Create topography object set topo [new Topography] # define topology $topo load_flatgrid $opt(x) $opt(y) # create God create-god [expr $opt(nn) + 1] #----------------------------------------------------------------------- # Nut co day set W(0) [$ns_ node [lindex 0.0.0]] #----------------------------------------------------------------------- # configure for base-station node $ns_ node-config -adhocRouting $opt(adhocRouting) \ -llType $opt(ll) \ -macType $opt(mac) \ -ifqType $opt(ifq) \ -ifqLen $opt(ifqlen) \ -antType $opt(ant) \ -propType $opt(prop) \ -phyType $opt(netif) \ -channelType $opt(chan) \ -topoInstance $topo \ -wiredRouting ON \ -agentTrace OFF \ -routerTrace OFF \ -macTrace ON #create base-station node set temp {1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9} ;# hier address to be used for wireless domain # Basetation set BS(1) [$ns_ node [lindex $temp 0]] $BS(1) random-motion 0 ;# disable random motion $BS(1) set X_ 230.0 $BS(1) set Y_ 420.0 $BS(1) set Z_ 0.0 # Tao ket noi giua nut co day va Base Station $ns_ duplex-link $W(0) $BS(1) 5Mb 2ms DropTail $ns_ duplex-link-op $W(0) $BS(1) orient down #----------------------------------------------------------------------- #configure for mobilenodes $ns_ node-config -wiredRouting OFF for {set j 2} {$j < [expr $val(nn)+ 2]} {incr j} { set node_($j) [ $ns_ node [lindex $temp [expr $j- 1]] ] $node_($j) base-station [AddrParams addr2id [$BS(1) node-addr]] } $ns_ node-config -wiredRouting OFF $ns_ node-config -adhocRouting blackholeAODV set node_(2) [ $ns_ node [lindex $temp 1] ] $node_(2) set X_ 50.0 $node_(2) set Y_ 420.0 $node_(2) set Z_ 0.0 $ns_ node-config -adhocRouting $opt(adhocRouting) for {set j 3} {$j < [expr $val(nn)+ 2]} {incr j} { set node_($j) [ $ns_ node [lindex $temp [expr $j- 1]] ] $node_($j) base-station [AddrParams addr2id [$BS(1) node-addr]] } - 74 - $ns_ at 0.0 "$W(0) label \"Wired Node\"" $ns_ at 0.0 "$BS(1) label \"Base Station\"" $ns_ at 0.0 "$node_(3) label \"Receiving Node\"" $ns_ at 0.0 "$node_(6) label \"Moving Node\"" $node_(2) set X_ 50.0 $node_(2) set Y_ 420.0 $node_(2) set Z_ 0.0 $node_(3) set X_ 480.0 $node_(3) set Y_ 50.0 $node_(3) set Z_ 0.0 $node_(4) set X_ 50.0 $node_(4) set Y_ 100.0 $node_(4) set Z_ 0.0 $node_(5) set X_ 120.0 $node_(5) set Y_ 250.0 $node_(5) set Z_ 0.0 $node_(6) set X_ 280.0 $node_(6) set Y_ 320.0 $node_(6) set Z_ 0.0 $node_(7) set X_ 380.0 $node_(7) set Y_ 300.0 $node_(7) set Z_ 0.0 $node_(8) set X_ 430.0 $node_(8) set Y_ 180.0 $node_(8) set Z_ 0.0 # Generation of movements $ns_ at 2.0 "$node_(6) setdest 150.0 10.0 20.0" #------------------------------------------------------------------------ set udp_(1) [new Agent/UDP] $ns_ attach-agent $BS(1) $udp_(1) set null_(1) [new Agent/Null] $ns_ attach-agent $node_(3) $null_(1) #Attach CBR application; set cbr_(1) [new Application/Traffic/CBR] puts "cbr_(1) has been created over udp_(1)" $cbr_(1) set packet_size_ 512 $cbr_(1) set interval_ 1 $cbr_(1) set rate_ 512kb $cbr_(1) set random_ false $cbr_(1) attach-agent $udp_(1) $ns_ connect $udp_(1) $null_(1) puts "udp_(1) and null_(1) agents has been connected each other" $ns_ at 1.0 "$cbr_(1) start" #------------------------------------------------------------------------ $ns_ trace-all $tracefd # Define initial node position in nam for {set i 2} {$i < [expr $val(nn) + 2] } {incr i} { $ns_ initial_node_pos $node_($i) 30 } # CBR connections stops $ns_ at $val(cstop) "$cbr_(1) stop" - 75 - # Tell all nodes when the simulation ends for {set i 2} {$i < [expr $val(nn)+ 2] } {incr i} { $ns_ at $opt(stop).000000001 "$node_($i) reset"; } # Ending nam and simulation $ns_ at $opt(stop) "finish" $ns_ at $opt(stop).0 "$ns_ trace-annotate \"Simulation has ended\"" $ns_ at $opt(stop).00000001 "puts \"NS EXITING...\" ; $ns_ halt" proc finish {} { global ns_ tracefd namtrace $ns_ flush-trace close $tracefd close $namtrace exec nam mtest.nam & exit 0 } puts "Starting Simulation..." $ns_ run - 76 - PHỤ LỤC 2: File Tcl mô phỏng thực nghiệm mạng 50 nút không có tấn công Blackhole(4 nút có dây, 4 base station, 50 nút di động) # Define options # ====================================================================== set opt(chan) Channel/WirelessChannel ;# channel type set opt(prop) Propagation/TwoRayGround ;# radio-propagation model set opt(netif) Phy/WirelessPhy ;# network interface type set opt(mac) Mac/802_11 ;# MAC type set opt(ifq) Queue/DropTail/PriQueue ;# interface queue type set opt(ll) LL ;# link layer type set opt(ant) Antenna/OmniAntenna ;# antenna model set opt(ifqlen) 50 ;# max packet in ifq set opt(adhocRouting) AODV hoặc idsAODV ;# routing protocol set val(nn) 50 ;# total number of mobilenodes set val(cp) "meshnode_1" ;#Connection Pattern set opt(x) 1000 ;# x coordinate of topology set opt(y) 1000 ;# y coordinate of topology set opt(seed) 0.0 ;# seed for random number gen. set opt(stop) 500 ;# time to stop simulation set val(cstop) 451 #------------------------------------------------------------------------ # check for boundary parameters and random seed if { $opt(x) == 0 || $opt(y) == 0 } { puts "No X-Y boundary values given for wireless topology\n" } if {$opt(seed) > 0} { puts "Seeding Random number generator with $opt(seed)\n" ns-random $opt(seed) } #----------------------------------------------------------------------- # create simulator instance set ns_ [new Simulator] # set up for hierarchical routing $ns_ node-config -addressType hierarchical AddrParams set domain_num_ 2 ;# number of domains lappend cluster_num 1 1 ;# number of clusters in each domain AddrParams set cluster_num_ $cluster_num lappend eilastlevel 4 54 ;# number of nodes in each cluster AddrParams set nodes_num_ $eilastlevel ;# of each domainsegmentation fault #----------------------------------------------------------------------- $ns_ use-newtrace set tracefd [open mesh50_aodv_1.tr w] $ns_ trace-all $tracefd #line defines the number of nodes in each of these clusters which is "1 1 8" set namtrace [open mesh50_aodv_1.nam w] $ns_ namtrace-all-wireless $namtrace $opt(x) $opt(y) #----------------------------------------------------------------------- # Create topography object set topo [new Topography] # define topology $topo load_flatgrid $opt(x) $opt(y) # create God - 77 - create-god [expr $val(nn) + 4] #----------------------------------------------------------------------- # Nut co day set W(0) [$ns_ node [lindex 0.0.0]] set W(1) [$ns_ node [lindex 0.0.1]] set W(2) [$ns_ node [lindex 0.0.2]] set W(3) [$ns_ node [lindex 0.0.3]] $W(0) set X_ 250.0 $W(0) set Y_ 250.0 $W(0) set Z_ 0.0 $W(1) set X_ 750.0 $W(1) set Y_ 250.0 $W(1) set Z_ 0.0 $W(2) set X_ 750.0 $W(2) set Y_ 750.0 $W(2) set Z_ 0.0 $W(3) set X_ 250.0 $W(3) set Y_ 750.0 $W(3) set Z_ 0.0 #----------------------------------------------------------------------- # configure for base-station node $ns_ node-config -adhocRouting $opt(adhocRouting) \ -llType $opt(ll) \ -macType $opt(mac) \ -ifqType $opt(ifq) \ -ifqLen $opt(ifqlen) \ -antType $opt(ant) \ -propType $opt(prop) \ -phyType $opt(netif) \ -channelType $opt(chan) \ -topoInstance $topo \ -wiredRouting ON \ -agentTrace OFF \ -routerTrace OFF \ -macTrace ON #create base-station node set temp {1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53} ;# hier address to be used for wireless domain # Basetation set BS(0) [$ns_ node [lindex $temp 0]] $BS(0) random-motion 0 ;# disable random motion $BS(0) set X_ 300.0 $BS(0) set Y_ 300.0 $BS(0) set Z_ 0.0 set BS(1) [$ns_ node [lindex $temp 1]] $BS(1) random-motion 0 ;# disable random motion $BS(1) set X_ 700.0 $BS(1) set Y_ 300.0 $BS(1) set Z_ 0.0 set BS(2) [$ns_ node [lindex $temp 2]] $BS(2) random-motion 0 ;# disable random motion $BS(2) set X_ 700.0 $BS(2) set Y_ 700.0 - 78 - $BS(2) set Z_ 0.0 set BS(3) [$ns_ node [lindex $temp 3]] $BS(3) random-motion 0 ;# disable random motion $BS(3) set X_ 300.0 $BS(3) set Y_ 700.0 $BS(3) set Z_ 0.0 #----------------------------------------------------------- # Tao ket noi giua nut co day va Base Station $ns_ duplex-link $W(0) $BS(0) 5Mb 2ms DropTail $ns_ duplex-link-op $W(0) $BS(0) orient down $ns_ duplex-link $W(1) $BS(1) 5Mb 2ms DropTail $ns_ duplex-link-op $W(1) $BS(1) orient down $ns_ duplex-link $W(2) $BS(2) 5Mb 2ms DropTail $ns_ duplex-link-op $W(2) $BS(2) orient down $ns_ duplex-link $W(3) $BS(3) 5Mb 2ms DropTail $ns_ duplex-link-op $W(3) $BS(3) orient right-down #----------------------------------------------------------------------- #configure for mobilenodes $ns_ node-config -wiredRouting OFF for {set j 0} {$j < $val(nn)} {incr j} { set node_($j) [ $ns_ node [lindex $temp [expr $j + 4]] ] $node_($j) random-motion 0 } #configure for mobilenodes $ns_ node-config -wiredRouting OFF for {set j 0} {$j < 46} {incr j} { set node_($j) [ $ns_ node [lindex $temp [expr $j + 4]] ] $node_($j) random-motion 0 # $node_($j) base-station [AddrParams addr2id [$BS(1) node-addr]] } #====Set blackhole nodes================================ $ns_ node-config -adhocRouting blackholeAODV for {set i 46} {$i < $val(nn)} {incr i} { set node_($i) [$ns_ node [lindex $temp [expr $i + 4]] ] $node_($i) random-motion 0 ;#disable random motion $ns_ at 0.01 "$node_($i) label \"blackhole node\"" } puts "Loading random connection pattern..." set god_ [God instance] source $val(cp) #------------------------------------------------------------------------ $ns_ at 0.0 "$W(0) label \"Wired Node\"" $ns_ at 0.0 "$W(1) label \"Wired Node\"" $ns_ at 0.0 "$W(2) label \"Wired Node\"" $ns_ at 0.0 "$W(3) label \"Wired Node\"" $ns_ at 0.0 "$BS(0) label \"Base Station\"" $ns_ at 0.0 "$BS(1) label \"Base Station\"" $ns_ at 0.0 "$BS(2) label \"Base Station\"" $ns_ at 0.0 "$BS(3) label \"Base Station\"" #----------Tao ket noi giua cac Base station den cac nut tu 0 den 3-------------- for {set i 0} {$i < 4} {incr i} { set udp_($i) [new Agent/UDP] $ns_ attach-agent $BS($i) $udp_($i) set null_($i) [new Agent/Null] Không có tấn công Blackhole Có tấn công Blackhole - 79 - $ns_ attach-agent $node_($i) $null_($i) set cbr_($i) [new Application/Traffic/CBR] puts "cbr_($i) has been created over udp_($i)" $cbr_($i) set packet_size_ 512 $cbr_($i) set interval_ 1 $cbr_($i) set rate_ 10kb $cbr_($i) set random_ false $cbr_($i) attach-agent $udp_($i) $ns_ connect $udp_($i) $null_($i) puts "udp_($i) and null_($i) agents has been connected each other" $ns_ at 1.0 "$cbr_($i) start" } #-------------Tao ket noi giua nut le voi nut chan bat dau tu nut 4------------------- set j 4 for {set i 4} {$i < 45} {incr i} { #Create a UDP and NULL agents, then attach them to the appropriate nodes set udp_($j) [new Agent/UDP] $ns_ attach-agent $node_($i) $udp_($j) set null_($j) [new Agent/Null] $ns_ attach-agent $node_([expr $i + 1]) $null_($j) #Attach CBR application; set cbr_($j) [new Application/Traffic/CBR] puts "cbr_($j) has been created over udp_($j)" $cbr_($j) set packet_size_ 512 $cbr_($j) set interval_ 1 $cbr_($j) set rate_ 10kb $cbr_($j) set random_ false $cbr_($j) attach-agent $udp_($j) $ns_ connect $udp_($j) $null_($j) puts "udp_($j) and null_($j) agents has been connected each other" $ns_ at 1.0 "$cbr_($j) start" set j [expr $j + 1] set i [expr $i + 1] } #------------------------------------------------------------------------ $ns_ trace-all $tracefd # Define initial node position in nam for {set i 0} {$i < $val(nn) } {incr i} { $ns_ initial_node_pos $node_($i) 10 } # CBR connections stops for {set i 0} {$i < 24 } {incr i} { $ns_ at $val(cstop) "$cbr_($i) stop" } # Tell all nodes when the simulation ends for {set i 0} {$i < $val(nn)} {incr i} { $ns_ at $opt(stop).000000001 "$node_($i) reset"; } # Ending nam and simulation $ns_ at $opt(stop) "finish" $ns_ at $opt(stop).0 "$ns_ trace-annotate \"Simulation has ended\"" $ns_ at $opt(stop).00000001 "puts \"NS EXITING...\" ; $ns_ halt" proc finish {} { global ns_ tracefd namtrace $ns_ flush-trace - 80 - close $tracefd close $namtrace exec nam mesh50_aodv_1.nam & exit 0 } puts "Starting Simulation..." $ns_ run - 81 - PHỤ LỤC 3: Phân tích tệp vết .tr Trường 0: Loại sự kiện s: send r: receive d: drop f: forward Trường 1: Nhãn chung -t: time Trường 2: Thông tin về chặng tiếp theo -Hs: id for this node -Hd: id for next hop towards the destination Trường 3: Đặc tính của nút -Ni: node id -Nx –Ny -Nz: node’s x/y/z coordinate -Ne: node energy level -Nl: trace level, such as AGT, RTR, MAC (agent, route, mac) -Nw: reason for the event Trường 4: thông tin gói tin tại tầng MAC -Ma: duration -Md: dest’s ethernet address -Ms: src’s ethernet address -Mt: ethernet type Trường 5: thông tin gói tin tại tầng IP -Is: source address. Source port number -Id: dest address.Dest port number -It: packet type -Il: packet size Ghi chú: Trong các tệp vết ns2, một địa chỉ IP có thể được viết bằng nhiều dạng,trong khi luôn đề cập đến cùng một địa chỉ. Ví dụ: dạng có thứ bậc: "0.1.0"; Dạng Interger: 2048 (là 0.1.0 đại diện như là một số thập phân 32 bits)); hoặc dạng ID: 4 (địa chỉ thứ 4 được xây dựng bởi chương trình NS2). Cách đổi địa chỉ từ dạng thứ bậc sang dạng Integer như sau: “x.y.z” = x*4194304 + y*2048 + z Ví dụ: Hierarchical Address Integer Address TG Address note "0.0.0" 0 0 "1.0.0" 4194304 1 "1.0.1" 4194305 2 (eg, 4194304*1 + 1) "2.0.0" 8388608 3 (eg, 4194304*2 + 0) "3.0.0" 12582912 4 "4.0.0" 16777220 5 - 82 - PHỤ LỤC 4: Nội dung file batch tính toán số liệu từ file .tr for fn in mesh50_blackhole_ids_1 mesh50_blackhole_ids_2 mesh50_blackhole_ids_3 mesh50_blackhole_ids_4 mesh50_blackhole_ids_5; do rm ${fn}.tr -f rm ${fn}.nam -f rm ${fn}.txt -f done rm mesh50_blackhole_ids_ketqua.txt -f echo Files are deleted echo for fn in mesh50_blackhole_ids_1 mesh50_blackhole_ids_2 mesh50_blackhole_ids_3 mesh50_blackhole_ids_4 mesh50_blackhole_ids_5 ; do ns ${fn}.tcl echo ${fn}.tcl is interpreted echo ---------------------------------------------------------------------- done echo for fn in mesh50_blackhole_ids_1 mesh50_blackhole_ids_2 mesh50_blackhole_ids_3 mesh50_blackhole_ids_4 mesh50_blackhole_ids_5 ; do cat ${fn}.tr | awk '{print $1 " " $9 " " $19 " " $21 " " $31 " " $33 " " $35}' >> ${fn}.txt echo ${fn}.txt is created done echo for fn in mesh50_blackhole_ids_1 mesh50_blackhole_ids_2 mesh50_blackhole_ids_3 mesh50_blackhole_ids_4 mesh50_blackhole_ids_5; do # Simulation results for $fn echo Simulation_results_for_$fn >> mesh50_blackhole_ids_ketqua.txt echo >> mesh50_blackhole_ids_ketqua.txt ss=0; sr=0; lb=0; #-------------Tinh toan tu Base Station den nut 0 den 3------------------------------------------------------------------- for k in 0 1 2 3; do d=0; l=`expr $k + 4` m=`expr $k + 8` i=`expr $k + 4194304` j=`expr $i + 4` s=`grep "s $l MAC --- ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` r=`grep "r $m MAC --- ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` d1=`grep "d 54 RTR LOOP ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` d2=`grep "d 55 RTR LOOP ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` d3=`grep "d 56 RTR LOOP ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` d4=`grep "d 57 RTR LOOP ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` ss=`expr $ss + $s` sr=`expr $sr + $r` d=`expr $d1 + $d2 + $d3 + $d4` lb=`expr $lb + $d` echo "Base station $k --> node $k Gui: $s Nhan: $r Loai bo: $d" >> mesh50_blackhole_ids_ketqua.txt - 83 - done #-------------------------------------------------------------------------------- for k in 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52; do d=0; g=`expr $k - 8` n=`expr $g + 1` l=`expr $k + 1` i=`expr 4194300 + $k` j=`expr $i + 1` s=`grep "s $k MAC --- ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` r=`grep "r $l MAC --- ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` d1=`grep "d 54 RTR LOOP ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` d2=`grep "d 55 RTR LOOP ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` d3=`grep "d 56 RTR LOOP ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` d4=`grep "d 57 RTR LOOP ${i}.0 ${j}.0 cbr" ${fn}.txt | wc -l` ss=`expr $ss + $s` sr=`expr $sr + $r` d=`expr $d1 + $d2 + $d3 + $d4` lb=`expr $lb + $d` echo "Node $g --> Node $n Gui: $s Nhan: $r Loai bo: $d" >> mesh50_blackhole_ids_ketqua.txt done echo "So goi tin gui: $ss" >> mesh50_blackhole_ids_ketqua.txt echo "So goi tin nhan: $sr" >> mesh50_blackhole_ids_ketqua.txt echo "So goi loai bo: $lb" >> mesh50_blackhole_ids_ketqua.txt per=`expr \( $sr \* 100 \) / $ss` echo "Ti le goi tin gui thanh cong: $per" >> mesh50_blackhole_ids_ketqua.txt echo "----------------------------------------------------" >> mesh50_blackhole_ids_ketqua.txt done echo echo .........ALL DONE............. - 84 - PHỤ LỤC 5: Tổng hợp kết quả tính toán các kịch bản mô tả TỔNG HỢP KẾT QUẢ TÍNH TOÁN Kịch bản Số gói tin gửi Số gói tin nhận Số gói tin bị loại bỏ bởi nút blackhole Tỉ lệ gửi thành công Tỉ lệ gửi không thành công Tỉ lệ gói tin bị loại bỏ bởi nút black hole S1 25142 20403 - 81.15% 18.85% - S2 23249 17201 - 73.99% 26.01% - S3 24905 20735 - 83.26% 16.74% - S4 23511 18127 - 77.10% 22.90% - S5 24568 18617 - 75.78% 24.22% - AODV TB 24275 19017 - 78.25% 21.75% - S1 24538 18351 - 74.79% 25.21% - S2 23134 15002 - 64.85% 35.15% - S3 24843 18465 - 74.33% 25.67% - S4 23215 16465 - 70.92% 29.08% - S5 24568 18617 - 75.78% 24.22% - idsAODV TB 24060 17380 - 72.13% 27.87% - S1 27499 1382 13430 5.03% 94.97% 48.84% S2 27581 741 16005 2.69% 97.31% 58.03% S3 27541 412 14706 1.50% 98.50% 53.40% S4 27537 417 13975 1.51% 98.49% 50.75% S5 27592 389 14958 1.41% 98.59% 54.21% AODV with blackhole attack TB 27550 668 14615 2.43% 97.57% 53.05% S1 27375 1926 6370 7.04% 92.96% 23.27% S2 27407 1856 6817 6.77% 93.23% 24.87% S3 27169 2336 6923 8.60% 91.40% 25.48% S4 27321 2217 7463 8.11% 91.89% 27.32% S5 27440 1896 6170 6.91% 93.09% 22.49% idsAODV with blackhole attack TB 27342 2046 6749 7.49% 92.51% 24.69%

Các file đính kèm theo tài liệu này:

  • pdfLUẬN VĂN-NGHIÊN CỨU MỘT SỐ PHƯƠNG PHÁP BẢO MẬT TRONG MẠNG KHÔNG DÂY MESH.pdf